{"version":3,"file":"index-1f77f9c8.js","sources":["../../node_modules/react/cjs/react.production.min.js","../../node_modules/react/index.js","../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../node_modules/react/jsx-runtime.js","../../node_modules/react-dom/node_modules/scheduler/cjs/scheduler.production.min.js","../../node_modules/react-dom/node_modules/scheduler/index.js","../../node_modules/react-dom/cjs/react-dom.production.min.js","../../node_modules/react-dom/index.js","../../node_modules/react-dom/client.js","../../node_modules/three/build/three.module.js","../../node_modules/react-reconciler/cjs/react-reconciler-constants.production.min.js","../../node_modules/react-reconciler/constants.js","../../node_modules/zustand/esm/index.js","../../node_modules/scheduler/cjs/scheduler.production.min.js","../../node_modules/scheduler/index.js","../../node_modules/react-reconciler/cjs/react-reconciler.production.min.js","../../node_modules/react-reconciler/index.js","../../node_modules/suspend-react/index.js","../../node_modules/@react-three/fiber/dist/index-dc6125bc.esm.js","../../node_modules/@babel/runtime/helpers/esm/extends.js","../../node_modules/debounce/index.js","../../node_modules/react-use-measure/dist/web.js","../../node_modules/its-fine/dist/index.js","../../node_modules/@react-three/fiber/dist/react-three-fiber.esm.js","../../node_modules/r3f-perf/node_modules/zustand/esm/vanilla.mjs","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../../node_modules/use-sync-external-store/shim/index.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../../node_modules/use-sync-external-store/shim/with-selector.js","../../node_modules/r3f-perf/node_modules/zustand/esm/index.mjs","../../node_modules/r3f-perf/node_modules/zustand/esm/shallow.mjs","../../node_modules/r3f-perf/dist/store.mjs","../../node_modules/r3f-perf/dist/internal.mjs","../../node_modules/r3f-perf/dist/helpers/countGeoDrawCalls.mjs","../../node_modules/eventemitter3/index.js","../../node_modules/@utsubo/events/dist/vanilla.mjs","../../node_modules/@utsubo/events/dist/react.mjs","../../node_modules/r3f-perf/dist/components/PerfHeadless.mjs","../../node_modules/@stitches/react/dist/index.mjs","../../node_modules/r3f-perf/dist/styles.mjs","../../node_modules/@radix-ui/react-icons/dist/react-icons.esm.js","../../node_modules/react-merge-refs/dist/react-merge-refs.esm.js","../../node_modules/mmd-parser/build/mmdparser.module.js","../../node_modules/three-stdlib/index.js","../../node_modules/troika-worker-utils/dist/troika-worker-utils.esm.js","../../node_modules/webgl-sdf-generator/dist/webgl-sdf-generator.mjs","../../node_modules/bidi-js/dist/bidi.mjs","../../node_modules/troika-three-utils/dist/troika-three-utils.esm.js","../../node_modules/troika-three-text/dist/troika-three-text.esm.js","../../node_modules/@react-three/drei/core/Text.js","../../node_modules/lodash.pick/index.js","../../node_modules/@react-three/drei/core/Clone.js","../../node_modules/@react-three/drei/core/useGLTF.js","../../node_modules/@react-three/drei/core/OrbitControls.js","../../node_modules/@react-three/drei/core/Float.js","../../node_modules/r3f-perf/dist/components/TextsHighHZ.mjs","../../node_modules/r3f-perf/dist/components/Graph.mjs","../../node_modules/r3f-perf/dist/components/HtmlMinimal.mjs","../../node_modules/r3f-perf/dist/helpers/estimateBytesUsed.mjs","../../node_modules/r3f-perf/dist/components/Program.mjs","../../node_modules/r3f-perf/dist/components/Perf.mjs","../../node_modules/postprocessing/build/index.js","../../node_modules/maath/dist/objectSpread2-284232a6.esm.js","../../node_modules/maath/dist/triangle-b62b9067.esm.js","../../node_modules/maath/dist/misc-7d870b3c.esm.js","../../node_modules/maath/dist/classCallCheck-9098b006.esm.js","../../node_modules/maath/dist/index-43782085.esm.js","../../node_modules/maath/dist/easing-3be59c6d.esm.js","../../node_modules/@react-three/postprocessing/dist/index.js","../../src/chair.jsx","../../src/index.jsx"],"sourcesContent":["/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t// .toLowerCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toLowerCase();\n\n}\n\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n// compute euclidean modulo of m % n\n// https://en.wikipedia.org/wiki/Modulo_operation\nfunction euclideanModulo( n, m ) {\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n// Linear mapping from range to range \nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\nfunction inverseLerp( x, y, value ) {\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n// https://en.wikipedia.org/wiki/Linear_interpolation\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n// https://www.desmos.com/calculator/vcsjnyz7x4\nfunction pingpong( x, length = 1 ) {\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n// http://en.wikipedia.org/wiki/Smoothstep\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n// Random integer from interval\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n// Random float from interval\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n// Random float from <-range/2, range/2> interval\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n// Deterministic pseudo-random float in the interval [ 0, 1 ]\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s;\n\n\t// Mulberry32 generator\n\n\tlet t = _seed += 0x6D2B79F5;\n\n\tt = Math.imul( t ^ t >>> 15, t | 1 );\n\n\tt ^= t + Math.imul( t ^ t >>> 7, t | 61 );\n\n\treturn ( ( t ^ t >>> 14 ) >>> 0 ) / 4294967296;\n\n}\n\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t// rotations are applied to the axes in the order specified by 'order'\n\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t// angles are in radians\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\nfunction denormalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn value / 4294967295.0;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn value / 65535.0;\n\n\t\tcase Uint8Array:\n\n\t\t\treturn value / 255.0;\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.max( value / 2147483647.0, - 1.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.max( value / 32767.0, - 1.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.max( value / 127.0, - 1.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nfunction normalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn Math.round( value * 4294967295.0 );\n\n\t\tcase Uint16Array:\n\n\t\t\treturn Math.round( value * 65535.0 );\n\n\t\tcase Uint8Array:\n\n\t\t\treturn Math.round( value * 255.0 );\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.round( value * 2147483647.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.round( value * 32767.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.round( value * 127.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nconst MathUtils = {\n\tDEG2RAD: DEG2RAD,\n\tRAD2DEG: RAD2DEG,\n\tgenerateUUID: generateUUID,\n\tclamp: clamp,\n\teuclideanModulo: euclideanModulo,\n\tmapLinear: mapLinear,\n\tinverseLerp: inverseLerp,\n\tlerp: lerp,\n\tdamp: damp,\n\tpingpong: pingpong,\n\tsmoothstep: smoothstep,\n\tsmootherstep: smootherstep,\n\trandInt: randInt,\n\trandFloat: randFloat,\n\trandFloatSpread: randFloatSpread,\n\tseededRandom: seededRandom,\n\tdegToRad: degToRad,\n\tradToDeg: radToDeg,\n\tisPowerOfTwo: isPowerOfTwo,\n\tceilPowerOfTwo: ceilPowerOfTwo,\n\tfloorPowerOfTwo: floorPowerOfTwo,\n\tsetQuaternionFromProperEuler: setQuaternionFromProperEuler,\n\tnormalize: normalize,\n\tdenormalize: denormalize\n};\n\nclass Vector2 {\n\n\tconstructor( x = 0, y = 0 ) {\n\n\t\tVector2.prototype.isVector2 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( 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( 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() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\n\tcopy( 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( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( 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( 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( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( 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( 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( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tdivide( 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( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst 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( 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( 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( 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( 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( min, max ) {\n\n\t\tconst 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() {\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() {\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() {\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() {\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() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tangle() {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( 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( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\tfromArray( array, 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( array = [], 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( attribute, index ) {\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( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst 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\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\n\t}\n\n}\n\nclass Matrix3 {\n\n\tconstructor( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tMatrix3.prototype.isMatrix3 = true;\n\n\t\tthis.elements = [\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\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n21, n22, n23, n31, n32, n33 );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst 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() {\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\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst 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\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix4( m ) {\n\n\t\tconst 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\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst 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( s ) {\n\n\t\tconst 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() {\n\n\t\tconst te = this.elements;\n\n\t\tconst 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\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 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 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst 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() {\n\n\t\tlet tmp;\n\t\tconst 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( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).invert().transpose();\n\n\t}\n\n\ttransposeIntoArray( r ) {\n\n\t\tconst 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( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst 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\treturn this;\n\n\t}\n\n\t//\n\n\tscale( sx, sy ) {\n\n\t\tthis.premultiply( _m3.makeScale( sx, sy ) );\n\n\t\treturn this;\n\n\t}\n\n\trotate( theta ) {\n\n\t\tthis.premultiply( _m3.makeRotation( - theta ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( tx, ty ) {\n\n\t\tthis.premultiply( _m3.makeTranslation( tx, ty ) );\n\n\t\treturn this;\n\n\t}\n\n\t// for 2D Transforms\n\n\tmakeTranslation( x, y ) {\n\n\t\tif ( x.isVector2 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x.x,\n\t\t\t\t0, 1, x.y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x,\n\t\t\t\t0, 1, y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotation( theta ) {\n\n\t\t// counterclockwise\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0,\n\t\t\ts, c, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0,\n\t\t\t0, y, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t//\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let 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( array, offset = 0 ) {\n\n\t\tfor ( let 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( array = [], offset = 0 ) {\n\n\t\tconst 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\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n}\n\nconst _m3 = /*@__PURE__*/ new Matrix3();\n\nfunction arrayNeedsUint32( array ) {\n\n\t// assumes larger values usually on last\n\n\tfor ( let i = array.length - 1; i >= 0; -- i ) {\n\n\t\tif ( array[ i ] >= 65535 ) return true; // account for PRIMITIVE_RESTART_FIXED_INDEX, #24565\n\n\t}\n\n\treturn false;\n\n}\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\tUint8ClampedArray: Uint8ClampedArray,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction getTypedArray( type, buffer ) {\n\n\treturn new TYPED_ARRAYS[ type ]( buffer );\n\n}\n\nfunction createElementNS( name ) {\n\n\treturn document.createElementNS( 'http://www.w3.org/1999/xhtml', name );\n\n}\n\nconst _cache = {};\n\nfunction warnOnce( message ) {\n\n\tif ( message in _cache ) return;\n\n\t_cache[ message ] = true;\n\n\tconsole.warn( message );\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\n/**\n * Matrices converting P3 <-> Rec. 709 primaries, without gamut mapping\n * or clipping. Based on W3C specifications for sRGB and Display P3,\n * and ICC specifications for the D50 connection space. Values in/out\n * are _linear_ sRGB and _linear_ Display P3.\n *\n * Note that both sRGB and Display P3 use the sRGB transfer functions.\n *\n * Reference:\n * - http://www.russellcottrell.com/photo/matrixCalculator.htm\n */\n\nconst LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = /*@__PURE__*/ new Matrix3().fromArray( [\n\t0.8224621, 0.0331941, 0.0170827,\n\t0.1775380, 0.9668058, 0.0723974,\n\t- 0.0000001, 0.0000001, 0.9105199\n] );\n\nconst LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = /*@__PURE__*/ new Matrix3().fromArray( [\n\t1.2249401, - 0.0420569, - 0.0196376,\n\t- 0.2249404, 1.0420571, - 0.0786361,\n\t0.0000001, 0.0000000, 1.0982735\n] );\n\nfunction DisplayP3ToLinearSRGB( color ) {\n\n\t// Display P3 uses the sRGB transfer functions\n\treturn color.convertSRGBToLinear().applyMatrix3( LINEAR_DISPLAY_P3_TO_LINEAR_SRGB );\n\n}\n\nfunction LinearSRGBToDisplayP3( color ) {\n\n\t// Display P3 uses the sRGB transfer functions\n\treturn color.applyMatrix3( LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 ).convertLinearToSRGB();\n\n}\n\n// Conversions from to Linear-sRGB reference space.\nconst TO_LINEAR = {\n\t[ LinearSRGBColorSpace ]: ( color ) => color,\n\t[ SRGBColorSpace ]: ( color ) => color.convertSRGBToLinear(),\n\t[ DisplayP3ColorSpace ]: DisplayP3ToLinearSRGB,\n};\n\n// Conversions to from Linear-sRGB reference space.\nconst FROM_LINEAR = {\n\t[ LinearSRGBColorSpace ]: ( color ) => color,\n\t[ SRGBColorSpace ]: ( color ) => color.convertLinearToSRGB(),\n\t[ DisplayP3ColorSpace ]: LinearSRGBToDisplayP3,\n};\n\nconst ColorManagement = {\n\n\tenabled: true,\n\n\tget legacyMode() {\n\n\t\tconsole.warn( 'THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150.' );\n\n\t\treturn ! this.enabled;\n\n\t},\n\n\tset legacyMode( legacyMode ) {\n\n\t\tconsole.warn( 'THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150.' );\n\n\t\tthis.enabled = ! legacyMode;\n\n\t},\n\n\tget workingColorSpace() {\n\n\t\treturn LinearSRGBColorSpace;\n\n\t},\n\n\tset workingColorSpace( colorSpace ) {\n\n\t\tconsole.warn( 'THREE.ColorManagement: .workingColorSpace is readonly.' );\n\n\t},\n\n\tconvert: function ( color, sourceColorSpace, targetColorSpace ) {\n\n\t\tif ( this.enabled === false || sourceColorSpace === targetColorSpace || ! sourceColorSpace || ! targetColorSpace ) {\n\n\t\t\treturn color;\n\n\t\t}\n\n\t\tconst sourceToLinear = TO_LINEAR[ sourceColorSpace ];\n\t\tconst targetFromLinear = FROM_LINEAR[ targetColorSpace ];\n\n\t\tif ( sourceToLinear === undefined || targetFromLinear === undefined ) {\n\n\t\t\tthrow new Error( `Unsupported color space conversion, \"${ sourceColorSpace }\" to \"${ targetColorSpace }\".` );\n\n\t\t}\n\n\t\treturn targetFromLinear( sourceToLinear( color ) );\n\n\t},\n\n\tfromWorkingColorSpace: function ( color, targetColorSpace ) {\n\n\t\treturn this.convert( color, this.workingColorSpace, targetColorSpace );\n\n\t},\n\n\ttoWorkingColorSpace: function ( color, sourceColorSpace ) {\n\n\t\treturn this.convert( color, sourceColorSpace, this.workingColorSpace );\n\n\t},\n\n};\n\nlet _canvas;\n\nclass ImageUtils {\n\n\tstatic getDataURL( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement === 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = createElementNS( 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst 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\tconsole.warn( 'THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons', image );\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\tstatic sRGBToLinear( image ) {\n\n\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\tconst canvas = createElementNS( 'canvas' );\n\n\t\t\tcanvas.width = image.width;\n\t\t\tcanvas.height = image.height;\n\n\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\tconst imageData = context.getImageData( 0, 0, image.width, image.height );\n\t\t\tconst data = imageData.data;\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] / 255 ) * 255;\n\n\t\t\t}\n\n\t\t\tcontext.putImageData( imageData, 0, 0 );\n\n\t\t\treturn canvas;\n\n\t\t} else if ( image.data ) {\n\n\t\t\tconst data = image.data.slice( 0 );\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tif ( data instanceof Uint8Array || data instanceof Uint8ClampedArray ) {\n\n\t\t\t\t\tdata[ i ] = Math.floor( SRGBToLinear( data[ i ] / 255 ) * 255 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// assuming float\n\n\t\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdata: data,\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.' );\n\t\t\treturn image;\n\n\t\t}\n\n\t}\n\n}\n\nlet sourceId = 0;\n\nclass Source {\n\n\tconstructor( data = null ) {\n\n\t\tthis.isSource = true;\n\n\t\tObject.defineProperty( this, 'id', { value: sourceId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.data = data;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.images[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.images[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\t\t\tuuid: this.uuid,\n\t\t\turl: ''\n\t\t};\n\n\t\tconst data = this.data;\n\n\t\tif ( data !== null ) {\n\n\t\t\tlet url;\n\n\t\t\tif ( Array.isArray( data ) ) {\n\n\t\t\t\t// cube texture\n\n\t\t\t\turl = [];\n\n\t\t\t\tfor ( let i = 0, l = data.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( data[ i ].isDataTexture ) {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ].image ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ 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\t// texture\n\n\t\t\t\turl = serializeImage( data );\n\n\t\t\t}\n\n\t\t\toutput.url = url;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.images[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n}\n\nfunction serializeImage( image ) {\n\n\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t// default images\n\n\t\treturn ImageUtils.getDataURL( image );\n\n\t} else {\n\n\t\tif ( image.data ) {\n\n\t\t\t// images of DataTexture\n\n\t\t\treturn {\n\t\t\t\tdata: Array.from( image.data ),\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height,\n\t\t\t\ttype: image.data.constructor.name\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Texture: Unable to serialize Texture.' );\n\t\t\treturn {};\n\n\t\t}\n\n\t}\n\n}\n\nlet textureId = 0;\n\nclass Texture extends EventDispatcher {\n\n\tconstructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = Texture.DEFAULT_ANISOTROPY, colorSpace = NoColorSpace ) {\n\n\t\tsuper();\n\n\t\tthis.isTexture = true;\n\n\t\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\n\t\tthis.source = new Source( image );\n\t\tthis.mipmaps = [];\n\n\t\tthis.mapping = mapping;\n\t\tthis.channel = 0;\n\n\t\tthis.wrapS = wrapS;\n\t\tthis.wrapT = wrapT;\n\n\t\tthis.magFilter = magFilter;\n\t\tthis.minFilter = minFilter;\n\n\t\tthis.anisotropy = anisotropy;\n\n\t\tthis.format = format;\n\t\tthis.internalFormat = null;\n\t\tthis.type = type;\n\n\t\tthis.offset = new Vector2( 0, 0 );\n\t\tthis.repeat = new Vector2( 1, 1 );\n\t\tthis.center = new Vector2( 0, 0 );\n\t\tthis.rotation = 0;\n\n\t\tthis.matrixAutoUpdate = true;\n\t\tthis.matrix = new Matrix3();\n\n\t\tthis.generateMipmaps = true;\n\t\tthis.premultiplyAlpha = false;\n\t\tthis.flipY = true;\n\t\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\tif ( typeof colorSpace === 'string' ) {\n\n\t\t\tthis.colorSpace = colorSpace;\n\n\t\t} else { // @deprecated, r152\n\n\t\t\twarnOnce( 'THREE.Texture: Property .encoding has been replaced by .colorSpace.' );\n\t\t\tthis.colorSpace = colorSpace === sRGBEncoding ? SRGBColorSpace : NoColorSpace;\n\n\t\t}\n\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\t\tthis.onUpdate = null;\n\n\t\tthis.isRenderTargetTexture = false; // indicates whether a texture belongs to a render target or not\n\t\tthis.needsPMREMUpdate = false; // indicates whether this texture should be processed by PMREMGenerator or not (only relevant for render target textures)\n\n\t}\n\n\tget image() {\n\n\t\treturn this.source.data;\n\n\t}\n\n\tset image( value = null ) {\n\n\t\tthis.source.data = value;\n\n\t}\n\n\tupdateMatrix() {\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() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.source = source.source;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\t\tthis.channel = source.channel;\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.internalFormat = source.internalFormat;\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.colorSpace = source.colorSpace;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tthis.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst 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\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\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\timage: this.source.toJSON( meta ).uuid,\n\n\t\t\tmapping: this.mapping,\n\t\t\tchannel: this.channel,\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\tinternalFormat: this.internalFormat,\n\t\t\ttype: this.type,\n\t\t\tcolorSpace: this.colorSpace,\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\tgenerateMipmaps: this.generateMipmaps,\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) output.userData = this.userData;\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() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\ttransformUv( 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\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\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\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.version ++;\n\t\t\tthis.source.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tget encoding() { // @deprecated, r152\n\n\t\twarnOnce( 'THREE.Texture: Property .encoding has been replaced by .colorSpace.' );\n\t\treturn this.colorSpace === SRGBColorSpace ? sRGBEncoding : LinearEncoding;\n\n\t}\n\n\tset encoding( encoding ) { // @deprecated, r152\n\n\t\twarnOnce( 'THREE.Texture: Property .encoding has been replaced by .colorSpace.' );\n\t\tthis.colorSpace = encoding === sRGBEncoding ? SRGBColorSpace : NoColorSpace;\n\n\t}\n\n}\n\nTexture.DEFAULT_IMAGE = null;\nTexture.DEFAULT_MAPPING = UVMapping;\nTexture.DEFAULT_ANISOTROPY = 1;\n\nclass Vector4 {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tVector4.prototype.isVector4 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\tset( 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( 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( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( 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( 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() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\tcopy( 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( 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;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( 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( 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( 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( 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;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( 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( 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\tmultiply( 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;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( 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( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst 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( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tsetAxisAngleFromQuaternion( 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\tconst 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( 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\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 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\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst 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\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\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( 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( 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( 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( 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\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst 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() {\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() {\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() {\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() {\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() {\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( 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() {\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() {\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() {\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() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( 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( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( 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( array, 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( array = [], 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( attribute, index ) {\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\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\t\tyield this.w;\n\n\t}\n\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*/\nclass WebGLRenderTarget extends EventDispatcher {\n\n\tconstructor( width = 1, height = 1, options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.isWebGLRenderTarget = true;\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = 1;\n\n\t\tthis.scissor = new Vector4( 0, 0, width, height );\n\t\tthis.scissorTest = false;\n\n\t\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\t\tconst image = { width: width, height: height, depth: 1 };\n\n\t\tif ( options.encoding !== undefined ) {\n\n\t\t\t// @deprecated, r152\n\t\t\twarnOnce( 'THREE.WebGLRenderTarget: option.encoding has been replaced by option.colorSpace.' );\n\t\t\toptions.colorSpace = options.encoding === sRGBEncoding ? SRGBColorSpace : NoColorSpace;\n\n\t\t}\n\n\t\tthis.texture = new Texture( image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace );\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.flipY = false;\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.internalFormat = options.internalFormat !== undefined ? options.internalFormat : null;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\t\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : false;\n\n\t\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n\t\tthis.samples = options.samples !== undefined ? options.samples : 0;\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\t\t\tthis.texture.image.depth = depth;\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() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.scissor.copy( source.scissor );\n\t\tthis.scissorTest = source.scissorTest;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\t// ensure image object is not shared, see #20328\n\n\t\tconst image = Object.assign( {}, source.texture.image );\n\t\tthis.texture.source = new Source( image );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nclass DataArrayTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\tsuper( null );\n\n\t\tthis.isDataArrayTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nclass WebGLArrayRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, depth = 1 ) {\n\n\t\tsuper( width, height );\n\n\t\tthis.isWebGLArrayRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new DataArrayTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass Data3DTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\t// We're going to add .setXXX() methods for setting properties later.\n\t\t// Users can still set in DataTexture3D directly.\n\t\t//\n\t\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t\t// \ttexture.anisotropy = 16;\n\t\t//\n\t\t// See #14839\n\n\t\tsuper( null );\n\n\t\tthis.isData3DTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nclass WebGL3DRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, depth = 1 ) {\n\n\t\tsuper( width, height );\n\n\t\tthis.isWebGL3DRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new Data3DTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass WebGLMultipleRenderTargets extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, count = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLMultipleRenderTargets = true;\n\n\t\tconst texture = this.texture;\n\n\t\tthis.texture = [];\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.texture[ i ] = texture.clone();\n\t\t\tthis.texture[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tfor ( let i = 0, il = this.texture.length; i < il; i ++ ) {\n\n\t\t\t\tthis.texture[ i ].image.width = width;\n\t\t\t\tthis.texture[ i ].image.height = height;\n\t\t\t\tthis.texture[ i ].image.depth = depth;\n\n\t\t\t}\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\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.dispose();\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.scissor.copy( source.scissor );\n\t\tthis.scissorTest = source.scissorTest;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.texture.length = 0;\n\n\t\tfor ( let i = 0, il = source.texture.length; i < il; i ++ ) {\n\n\t\t\tthis.texture[ i ] = source.texture[ i ].clone();\n\t\t\tthis.texture[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis.isQuaternion = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet 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\tconst x1 = 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 ( t === 0 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( t === 1 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x1;\n\t\t\tdst[ dstOffset + 1 ] = y1;\n\t\t\tdst[ dstOffset + 2 ] = z1;\n\t\t\tdst[ dstOffset + 3 ] = w1;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\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\tconst 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\tconst 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\tconst 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\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( 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() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\tcopy( 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( euler, update ) {\n\n\t\tconst 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\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAxisAngle( 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\tconst 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( 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\tconst 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\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 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\tconst s = 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\tconst s = 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\tconst s = 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( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < Number.EPSILON ) {\n\n\t\t\t// vFrom and vTo point in opposite directions\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( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t}\n\n\trotateTowards( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\tinvert() {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t}\n\n\tconjugate() {\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( 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() {\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() {\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() {\n\n\t\tlet 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( q ) {\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t}\n\n\tpremultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\tmultiplyQuaternions( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst 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( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst 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\tlet 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\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst 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\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst 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\tslerpQuaternions( qa, qb, t ) {\n\n\t\treturn this.copy( qa ).slerp( qb, t );\n\n\t}\n\n\trandom() {\n\n\t\t// Derived from http://planning.cs.uiuc.edu/node198.html\n\t\t// Note, this source uses w, x, y, z ordering,\n\t\t// so we swap the order below.\n\n\t\tconst u1 = Math.random();\n\t\tconst sqrt1u1 = Math.sqrt( 1 - u1 );\n\t\tconst sqrtu1 = Math.sqrt( u1 );\n\n\t\tconst u2 = 2 * Math.PI * Math.random();\n\n\t\tconst u3 = 2 * Math.PI * Math.random();\n\n\t\treturn this.set(\n\t\t\tsqrt1u1 * Math.cos( u2 ),\n\t\t\tsqrtu1 * Math.sin( u3 ),\n\t\t\tsqrtu1 * Math.cos( u3 ),\n\t\t\tsqrt1u1 * Math.sin( u2 ),\n\t\t);\n\n\t}\n\n\tequals( 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( array, 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( array = [], 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( attribute, index ) {\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\ttoJSON() {\n\n\t\treturn this.toArray();\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._w;\n\n\t}\n\n}\n\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tVector3.prototype.isVector3 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t}\n\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\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( 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( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( 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( 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() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\tcopy( 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( 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\taddScalar( 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( 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( 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( 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\tsubScalar( 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( 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( 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\tmultiplyScalar( 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( 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( euler ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromEuler( euler ) );\n\n\t}\n\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst 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\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst 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( q ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tconst ix = qw * x + qy * z - qz * y;\n\t\tconst iy = qw * y + qz * x - qx * z;\n\t\tconst iz = qw * z + qx * y - qy * x;\n\t\tconst 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( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst 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( 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( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tmin( 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( 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( 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( 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( min, max ) {\n\n\t\tconst 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() {\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() {\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() {\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() {\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() {\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( 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() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( 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( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.crossVectors( this, v );\n\n\t}\n\n\tcrossVectors( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst 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( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t}\n\n\tprojectOnPlane( planeNormal ) {\n\n\t\t_vector$b.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector$b );\n\n\t}\n\n\treflect( normal ) {\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\treturn this.sub( _vector$b.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst 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( 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( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\tsetFromSphericalCoords( radius, phi, theta ) {\n\n\t\tconst 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( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\tsetFromCylindricalCoords( 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( m ) {\n\n\t\tconst 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( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst 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( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\tsetFromEuler( e ) {\n\n\t\tthis.x = e._x;\n\t\tthis.y = e._y;\n\t\tthis.z = e._z;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromColor( c ) {\n\n\t\tthis.x = c.r;\n\t\tthis.y = c.g;\n\t\tthis.z = c.b;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\tfromArray( array, 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( array = [], 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( attribute, index ) {\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\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\trandomDirection() {\n\n\t\t// Derived from https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst u = ( Math.random() - 0.5 ) * 2;\n\t\tconst t = Math.random() * Math.PI * 2;\n\t\tconst f = Math.sqrt( 1 - u ** 2 );\n\n\t\tthis.x = f * Math.cos( t );\n\t\tthis.y = f * Math.sin( t );\n\t\tthis.z = u;\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\n\t}\n\n}\n\nconst _vector$b = /*@__PURE__*/ new Vector3();\nconst _quaternion$4 = /*@__PURE__*/ new Quaternion();\n\nclass Box3 {\n\n\tconstructor( min = new Vector3( + Infinity, + Infinity, + Infinity ), max = new Vector3( - Infinity, - Infinity, - Infinity ) ) {\n\n\t\tthis.isBox3 = true;\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( 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( array ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = array.length; i < il; i += 3 ) {\n\n\t\t\tthis.expandByPoint( _vector$a.fromArray( array, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = attribute.count; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( _vector$a.fromBufferAttribute( attribute, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let 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( center, size ) {\n\n\t\tconst halfSize = _vector$a.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromObject( object, precise = false ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object, precise );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( 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() {\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() {\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( target ) {\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( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( 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( 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( 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( object, precise = false ) {\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\tobject.updateWorldMatrix( false, false );\n\n\t\tif ( object.boundingBox !== undefined ) {\n\n\t\t\tif ( object.boundingBox === null ) {\n\n\t\t\t\tobject.computeBoundingBox();\n\n\t\t\t}\n\n\t\t\t_box$3.copy( object.boundingBox );\n\t\t\t_box$3.applyMatrix4( object.matrixWorld );\n\n\t\t\tthis.union( _box$3 );\n\n\t\t} else {\n\n\t\t\tconst geometry = object.geometry;\n\n\t\t\tif ( geometry !== undefined ) {\n\n\t\t\t\tif ( precise && geometry.attributes !== undefined && geometry.attributes.position !== undefined ) {\n\n\t\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\t\tfor ( let i = 0, l = position.count; i < l; i ++ ) {\n\n\t\t\t\t\t\t_vector$a.fromBufferAttribute( position, i ).applyMatrix4( object.matrixWorld );\n\t\t\t\t\t\tthis.expandByPoint( _vector$a );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box$3.copy( geometry.boundingBox );\n\t\t\t\t\t_box$3.applyMatrix4( object.matrixWorld );\n\n\t\t\t\t\tthis.union( _box$3 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ], precise );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( 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( 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( 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\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( 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( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$a );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$a.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tintersectsPlane( 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\tlet 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( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0$2.subVectors( triangle.a, _center );\n\t\t_v1$7.subVectors( triangle.b, _center );\n\t\t_v2$4.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$7, _v0$2 );\n\t\t_f1.subVectors( _v2$4, _v1$7 );\n\t\t_f2.subVectors( _v0$2, _v2$4 );\n\n\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// 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// 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\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents );\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.clampPoint( point, _vector$a ).distanceTo( point );\n\n\t}\n\n\tgetBoundingSphere( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\ttarget.makeEmpty();\n\n\t\t} else {\n\n\t\t\tthis.getCenter( target.center );\n\n\t\t\ttarget.radius = this.getSize( _vector$a ).length() * 0.5;\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tintersect( 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( 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( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( 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( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _points = [\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3()\n];\n\nconst _vector$a = /*@__PURE__*/ new Vector3();\n\nconst _box$3 = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0$2 = /*@__PURE__*/ new Vector3();\nconst _v1$7 = /*@__PURE__*/ new Vector3();\nconst _v2$4 = /*@__PURE__*/ new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = /*@__PURE__*/ new Vector3();\nconst _f1 = /*@__PURE__*/ new Vector3();\nconst _f2 = /*@__PURE__*/ new Vector3();\n\nconst _center = /*@__PURE__*/ new Vector3();\nconst _extents = /*@__PURE__*/ new Vector3();\nconst _triangleNormal = /*@__PURE__*/ new Vector3();\nconst _testAxis = /*@__PURE__*/ new Vector3();\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the separating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the separating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is separating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$2 = /*@__PURE__*/ new Box3();\nconst _v1$6 = /*@__PURE__*/ new Vector3();\nconst _v2$3 = /*@__PURE__*/ new Vector3();\n\nclass Sphere {\n\n\tconstructor( center = new Vector3(), radius = - 1 ) {\n\n\t\tthis.center = center;\n\t\tthis.radius = radius;\n\n\t}\n\n\tset( 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( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$2.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( 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\tisEmpty() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\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( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\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( 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( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.center.copy( point );\n\n\t\t\tthis.radius = 0;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t_v1$6.subVectors( point, this.center );\n\n\t\tconst lengthSq = _v1$6.lengthSq();\n\n\t\tif ( lengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\t// calculate the minimal sphere\n\n\t\t\tconst length = Math.sqrt( lengthSq );\n\n\t\t\tconst delta = ( length - this.radius ) * 0.5;\n\n\t\t\tthis.center.addScaledVector( _v1$6, delta / length );\n\n\t\t\tthis.radius += delta;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunion( sphere ) {\n\n\t\tif ( sphere.isEmpty() ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.copy( sphere );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.center.equals( sphere.center ) === true ) {\n\n\t\t\t this.radius = Math.max( this.radius, sphere.radius );\n\n\t\t} else {\n\n\t\t\t_v2$3.subVectors( sphere.center, this.center ).setLength( sphere.radius );\n\n\t\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).add( _v2$3 ) );\n\n\t\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).sub( _v2$3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$9 = /*@__PURE__*/ new Vector3();\nconst _segCenter = /*@__PURE__*/ new Vector3();\nconst _segDir = /*@__PURE__*/ new Vector3();\nconst _diff = /*@__PURE__*/ new Vector3();\n\nconst _edge1 = /*@__PURE__*/ new Vector3();\nconst _edge2 = /*@__PURE__*/ new Vector3();\nconst _normal$1 = /*@__PURE__*/ new Vector3();\n\nclass Ray {\n\n\tconstructor( origin = new Vector3(), direction = new Vector3( 0, 0, - 1 ) ) {\n\n\t\tthis.origin = origin;\n\t\tthis.direction = direction;\n\n\t}\n\n\tset( 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\tcopy( 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( t, target ) {\n\n\t\treturn target.copy( this.origin ).addScaledVector( this.direction, t );\n\n\t}\n\n\tlookAt( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$9 ) );\n\n\t\treturn this;\n\n\t}\n\n\tclosestPointToPoint( point, target ) {\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst 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.origin ).addScaledVector( this.direction, directionDistance );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\n\tdistanceSqToPoint( point ) {\n\n\t\tconst directionDistance = _vector$9.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$9.copy( this.origin ).addScaledVector( this.direction, directionDistance );\n\n\t\treturn _vector$9.distanceToSquared( point );\n\n\t}\n\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\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} else {\n\n\t\t\t\t\t\t// region 1\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\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.origin ).addScaledVector( this.direction, s0 );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segCenter ).addScaledVector( _segDir, s1 );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t}\n\n\tintersectSphere( sphere, target ) {\n\n\t\t_vector$9.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$9.dot( this.direction );\n\t\tconst d2 = _vector$9.dot( _vector$9 ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if t1 is behind the ray - if so, return null\n\t\tif ( t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tdistanceToPlane( plane ) {\n\n\t\tconst 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\tconst 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( plane, target ) {\n\n\t\tconst 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( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst 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( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst 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\tif ( tymin > tmin || isNaN( tmin ) ) tmin = tymin;\n\n\t\tif ( tymax < tmax || isNaN( 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( box ) {\n\n\t\treturn this.intersectBox( box, _vector$9 ) !== null;\n\n\t}\n\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal$1.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal$1 );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal$1 );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t}\n\n\tapplyMatrix4( 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( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass Matrix4 {\n\n\tconstructor( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tMatrix4.prototype.isMatrix4 = true;\n\n\t\tthis.elements = [\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\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst 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() {\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() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst 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( m ) {\n\n\t\tconst 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\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( 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( 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( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1$5.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1$5.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1$5.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\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\tmakeRotationFromEuler( euler ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst 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\tconst 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\tconst 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\tconst 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\tconst 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\tconst 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( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\tlookAt( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst 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( s ) {\n\n\t\tconst 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\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst 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() {\n\n\t\tconst te = this.elements;\n\t\tlet 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( x, y, z ) {\n\n\t\tconst 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\tinvert() {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 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\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst 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( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst 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() {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst 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( x, y, z ) {\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x.x,\n\t\t\t\t0, 1, 0, x.y,\n\t\t\t\t0, 0, 1, x.z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x,\n\t\t\t\t0, 1, 0, y,\n\t\t\t\t0, 0, 1, z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationX( theta ) {\n\n\t\tconst 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( theta ) {\n\n\t\tconst 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( theta ) {\n\n\t\tconst 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( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst 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\treturn this;\n\n\t}\n\n\tmakeScale( 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( xy, xz, yx, yz, zx, zy ) {\n\n\t\tthis.set(\n\n\t\t\t1, yx, zx, 0,\n\t\t\txy, 1, zy, 0,\n\t\t\txz, yz, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst 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( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1$5.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1$5.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1$5.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1$2.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1$2.elements[ 0 ] *= invSX;\n\t\t_m1$2.elements[ 1 ] *= invSX;\n\t\t_m1$2.elements[ 2 ] *= invSX;\n\n\t\t_m1$2.elements[ 4 ] *= invSY;\n\t\t_m1$2.elements[ 5 ] *= invSY;\n\t\t_m1$2.elements[ 6 ] *= invSY;\n\n\t\t_m1$2.elements[ 8 ] *= invSZ;\n\t\t_m1$2.elements[ 9 ] *= invSZ;\n\t\t_m1$2.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1$2 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tmakePerspective( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\n\t\tlet c, d;\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tc = - ( far + near ) / ( far - near );\n\t\t\td = ( - 2 * far * near ) / ( far - near );\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tc = - far / ( far - near );\n\t\t\td = ( - far * near ) / ( far - near );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Matrix4.makePerspective(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\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( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\n\t\tlet z, zInv;\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tz = ( far + near ) * p;\n\t\t\tzInv = - 2 * p;\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tz = near * p;\n\t\t\tzInv = - 1 * p;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Matrix4.makeOrthographic(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\t\tte[ 8 ] = 0; \t\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0; \t\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0; \t\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0; \t\tte[ 6 ] = 0;\t\tte[ 10 ] = zInv;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0; \t\tte[ 7 ] = 0;\t\tte[ 11 ] = 0;\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let 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( array, offset = 0 ) {\n\n\t\tfor ( let 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( array = [], offset = 0 ) {\n\n\t\tconst 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\nconst _v1$5 = /*@__PURE__*/ new Vector3();\nconst _m1$2 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nconst _matrix = /*@__PURE__*/ new Matrix4();\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\n\nclass Euler {\n\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DEFAULT_ORDER ) {\n\n\t\tthis.isEuler = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, order = this._order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\tcopy( 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( m, order = this._order, update = true ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromQuaternion( q, order, update ) {\n\n\t\t_matrix.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix, order, update );\n\n\t}\n\n\tsetFromVector3( v, order = this._order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order );\n\n\t}\n\n\treorder( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$3.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$3, newOrder );\n\n\t}\n\n\tequals( 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( 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( array = [], 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\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._order;\n\n\t}\n\n}\n\nEuler.DEFAULT_ORDER = 'XYZ';\n\nclass Layers {\n\n\tconstructor() {\n\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\tset( channel ) {\n\n\t\tthis.mask = ( 1 << channel | 0 ) >>> 0;\n\n\t}\n\n\tenable( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t}\n\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\ttoggle( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t}\n\n\tdisable( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t}\n\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n\tisEnabled( channel ) {\n\n\t\treturn ( this.mask & ( 1 << channel | 0 ) ) !== 0;\n\n\t}\n\n}\n\nlet _object3DId = 0;\n\nconst _v1$4 = /*@__PURE__*/ new Vector3();\nconst _q1 = /*@__PURE__*/ new Quaternion();\nconst _m1$1 = /*@__PURE__*/ new Matrix4();\nconst _target = /*@__PURE__*/ new Vector3();\n\nconst _position$3 = /*@__PURE__*/ new Vector3();\nconst _scale$2 = /*@__PURE__*/ new Vector3();\nconst _quaternion$2 = /*@__PURE__*/ new Quaternion();\n\nconst _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );\nconst _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nconst _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nclass Object3D extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isObject3D = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Object3D';\n\n\t\tthis.parent = null;\n\t\tthis.children = [];\n\n\t\tthis.up = Object3D.DEFAULT_UP.clone();\n\n\t\tconst position = new Vector3();\n\t\tconst rotation = new Euler();\n\t\tconst quaternion = new Quaternion();\n\t\tconst scale = new Vector3( 1, 1, 1 );\n\n\t\tfunction onRotationChange() {\n\n\t\t\tquaternion.setFromEuler( rotation, false );\n\n\t\t}\n\n\t\tfunction onQuaternionChange() {\n\n\t\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t\t}\n\n\t\trotation._onChange( onRotationChange );\n\t\tquaternion._onChange( onQuaternionChange );\n\n\t\tObject.defineProperties( this, {\n\t\t\tposition: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: position\n\t\t\t},\n\t\t\trotation: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: rotation\n\t\t\t},\n\t\t\tquaternion: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: quaternion\n\t\t\t},\n\t\t\tscale: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: scale\n\t\t\t},\n\t\t\tmodelViewMatrix: {\n\t\t\t\tvalue: new Matrix4()\n\t\t\t},\n\t\t\tnormalMatrix: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t}\n\t\t} );\n\n\t\tthis.matrix = new Matrix4();\n\t\tthis.matrixWorld = new Matrix4();\n\n\t\tthis.matrixAutoUpdate = Object3D.DEFAULT_MATRIX_AUTO_UPDATE;\n\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\tthis.matrixWorldAutoUpdate = Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE; // checked by the renderer\n\n\t\tthis.layers = new Layers();\n\t\tthis.visible = true;\n\n\t\tthis.castShadow = false;\n\t\tthis.receiveShadow = false;\n\n\t\tthis.frustumCulled = true;\n\t\tthis.renderOrder = 0;\n\n\t\tthis.animations = [];\n\n\t\tthis.userData = {};\n\n\t}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tonAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tapplyMatrix4( 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( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t}\n\n\tsetRotationFromAxisAngle( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t}\n\n\tsetRotationFromEuler( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t}\n\n\tsetRotationFromMatrix( 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( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t}\n\n\trotateOnAxis( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateOnWorldAxis( axis, angle ) {\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\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t}\n\n\trotateY( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t}\n\n\ttranslateOnAxis( axis, distance ) {\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\t_v1$4.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$4.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslateX( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t}\n\n\ttranslateY( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t}\n\n\ttranslateZ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t}\n\n\tlocalToWorld( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t}\n\n\tworldToLocal( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( _m1$1.copy( this.matrixWorld ).invert() );\n\n\t}\n\n\tlookAt( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position$3.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position$3, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position$3, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.invert() );\n\n\t\t}\n\n\t}\n\n\tadd( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let 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( _addedEvent );\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( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let 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\tconst 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( _removedEvent );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremoveFromParent() {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tparent.remove( this );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclear() {\n\n\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\tconst object = this.children[ i ];\n\n\t\t\tobject.parent = null;\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\tthis.children.length = 0;\n\n\t\treturn this;\n\n\n\t}\n\n\tattach( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\t// Note: This method does not support scene graphs having non-uniformly-scaled nodes(s)\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.copy( this.matrixWorld ).invert();\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tthis.add( object );\n\n\t\tobject.updateWorldMatrix( false, true );\n\n\t\treturn this;\n\n\t}\n\n\tgetObjectById( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t}\n\n\tgetObjectByName( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t}\n\n\tgetObjectByProperty( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst 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\tgetObjectsByProperty( name, value ) {\n\n\t\tlet result = [];\n\n\t\tif ( this[ name ] === value ) result.push( this );\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst childResult = this.children[ i ].getObjectsByProperty( name, value );\n\n\t\t\tif ( childResult.length > 0 ) {\n\n\t\t\t\tresult = result.concat( childResult );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tgetWorldPosition( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t}\n\n\tgetWorldQuaternion( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, target, _scale$2 );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldScale( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$2, target );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t}\n\n\traycast( /* raycaster, intersects */ ) {}\n\n\ttraverse( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let 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( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let 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( callback ) {\n\n\t\tconst 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() {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\tupdateMatrixWorld( 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\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tconst child = children[ i ];\n\n\t\t\tif ( child.matrixWorldAutoUpdate === true || force === true ) {\n\n\t\t\t\tchild.updateMatrixWorld( force );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null && parent.matrixWorldAutoUpdate === true ) {\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\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = children[ i ];\n\n\t\t\t\tif ( child.matrixWorldAutoUpdate === true ) {\n\n\t\t\t\t\tchild.updateWorldMatrix( false, true );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst 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\tskeletons: {},\n\t\t\t\tanimations: {},\n\t\t\t\tnodes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.6,\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\tconst 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 ( Object.keys( this.userData ).length > 0 ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\t\tobject.up = this.up.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\t\t\tif ( this.instanceColor !== null ) object.instanceColor = this.instanceColor.toJSON();\n\n\t\t}\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.isScene ) {\n\n\t\t\tif ( this.background ) {\n\n\t\t\t\tif ( this.background.isColor ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON();\n\n\t\t\t\t} else if ( this.background.isTexture ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON( meta ).uuid;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== true ) {\n\n\t\t\t\tobject.environment = this.environment.toJSON( meta ).uuid;\n\n\t\t\t}\n\n\t\t} else if ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst 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.isSkinnedMesh ) {\n\n\t\t\tobject.bindMode = this.bindMode;\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\tif ( this.skeleton !== undefined ) {\n\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\n\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\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\tconst uuids = [];\n\n\t\t\t\tfor ( let 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 ( let 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\t//\n\n\t\tif ( this.animations.length > 0 ) {\n\n\t\t\tobject.animations = [];\n\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\n\n\t\t\t\tconst animation = this.animations[ i ];\n\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\t\t\tconst skeletons = extractFromCache( meta.skeletons );\n\t\t\tconst animations = extractFromCache( meta.animations );\n\t\t\tconst nodes = extractFromCache( meta.nodes );\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\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\n\t\t\tif ( nodes.length > 0 ) output.nodes = nodes;\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\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst 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}\n\n\tclone( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t}\n\n\tcopy( source, 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.rotation.order = source.rotation.order;\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.matrixWorldAutoUpdate = source.matrixWorldAutoUpdate;\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.animations = source.animations;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst 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\nObject3D.DEFAULT_UP = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nObject3D.DEFAULT_MATRIX_AUTO_UPDATE = true;\nObject3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true;\n\nconst _v0$1 = /*@__PURE__*/ new Vector3();\nconst _v1$3 = /*@__PURE__*/ new Vector3();\nconst _v2$2 = /*@__PURE__*/ new Vector3();\nconst _v3$1 = /*@__PURE__*/ new Vector3();\n\nconst _vab = /*@__PURE__*/ new Vector3();\nconst _vac = /*@__PURE__*/ new Vector3();\nconst _vbc = /*@__PURE__*/ new Vector3();\nconst _vap = /*@__PURE__*/ new Vector3();\nconst _vbp = /*@__PURE__*/ new Vector3();\nconst _vcp = /*@__PURE__*/ new Vector3();\n\nlet warnedGetUV = false;\n\nclass Triangle {\n\n\tconstructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t}\n\n\tstatic getNormal( a, b, c, target ) {\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\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\tstatic getBarycoord( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$2.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$2 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$2 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\t// arbitrary location outside of triangle?\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\treturn target.set( - 2, - 1, - 1 );\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t}\n\n\tstatic containsPoint( point, a, b, c ) {\n\n\t\tthis.getBarycoord( point, a, b, c, _v3$1 );\n\n\t\treturn ( _v3$1.x >= 0 ) && ( _v3$1.y >= 0 ) && ( ( _v3$1.x + _v3$1.y ) <= 1 );\n\n\t}\n\n\tstatic getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) { // @deprecated, r151\n\n\t\tif ( warnedGetUV === false ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation().' );\n\n\t\t\twarnedGetUV = true;\n\n\t\t}\n\n\t\treturn this.getInterpolation( point, p1, p2, p3, uv1, uv2, uv3, target );\n\n\t}\n\n\tstatic getInterpolation( point, p1, p2, p3, v1, v2, v3, target ) {\n\n\t\tthis.getBarycoord( point, p1, p2, p3, _v3$1 );\n\n\t\ttarget.setScalar( 0 );\n\t\ttarget.addScaledVector( v1, _v3$1.x );\n\t\ttarget.addScaledVector( v2, _v3$1.y );\n\t\ttarget.addScaledVector( v3, _v3$1.z );\n\n\t\treturn target;\n\n\t}\n\n\tstatic isFrontFacing( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n\tset( 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( 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\tsetFromAttributeAndIndices( attribute, i0, i1, i2 ) {\n\n\t\tthis.a.fromBufferAttribute( attribute, i0 );\n\t\tthis.b.fromBufferAttribute( attribute, i1 );\n\t\tthis.c.fromBufferAttribute( attribute, i2 );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( 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() {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t}\n\n\tgetMidpoint( target ) {\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t}\n\n\tgetNormal( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t}\n\n\tgetPlane( target ) {\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t}\n\n\tgetBarycoord( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t}\n\n\tgetUV( point, uv1, uv2, uv3, target ) { // @deprecated, r151\n\n\t\tif ( warnedGetUV === false ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation().' );\n\n\t\t\twarnedGetUV = true;\n\n\t\t}\n\n\t\treturn Triangle.getInterpolation( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t}\n\n\tgetInterpolation( point, v1, v2, v3, target ) {\n\n\t\treturn Triangle.getInterpolation( point, this.a, this.b, this.c, v1, v2, v3, target );\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t}\n\n\tisFrontFacing( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t}\n\n\tclosestPointToPoint( p, target ) {\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t}\n\n\tequals( 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\nlet materialId = 0;\n\nclass Material extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isMaterial = true;\n\n\t\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Material';\n\n\t\tthis.blending = NormalBlending;\n\t\tthis.side = FrontSide;\n\t\tthis.vertexColors = false;\n\n\t\tthis.opacity = 1;\n\t\tthis.transparent = false;\n\n\t\tthis.blendSrc = SrcAlphaFactor;\n\t\tthis.blendDst = OneMinusSrcAlphaFactor;\n\t\tthis.blendEquation = AddEquation;\n\t\tthis.blendSrcAlpha = null;\n\t\tthis.blendDstAlpha = null;\n\t\tthis.blendEquationAlpha = null;\n\n\t\tthis.depthFunc = LessEqualDepth;\n\t\tthis.depthTest = true;\n\t\tthis.depthWrite = true;\n\n\t\tthis.stencilWriteMask = 0xff;\n\t\tthis.stencilFunc = AlwaysStencilFunc;\n\t\tthis.stencilRef = 0;\n\t\tthis.stencilFuncMask = 0xff;\n\t\tthis.stencilFail = KeepStencilOp;\n\t\tthis.stencilZFail = KeepStencilOp;\n\t\tthis.stencilZPass = KeepStencilOp;\n\t\tthis.stencilWrite = false;\n\n\t\tthis.clippingPlanes = null;\n\t\tthis.clipIntersection = false;\n\t\tthis.clipShadows = false;\n\n\t\tthis.shadowSide = null;\n\n\t\tthis.colorWrite = true;\n\n\t\tthis.precision = null; // override the renderer's default precision for this material\n\n\t\tthis.polygonOffset = false;\n\t\tthis.polygonOffsetFactor = 0;\n\t\tthis.polygonOffsetUnits = 0;\n\n\t\tthis.dithering = false;\n\n\t\tthis.alphaToCoverage = false;\n\t\tthis.premultipliedAlpha = false;\n\t\tthis.forceSinglePass = false;\n\n\t\tthis.visible = true;\n\n\t\tthis.toneMapped = true;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\n\t\tthis._alphaTest = 0;\n\n\t}\n\n\tget alphaTest() {\n\n\t\treturn this._alphaTest;\n\n\t}\n\n\tset alphaTest( value ) {\n\n\t\tif ( this._alphaTest > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._alphaTest = value;\n\n\t}\n\n\tonBuild( /* shaderobject, renderer */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {}\n\n\tonBeforeCompile( /* shaderobject, renderer */ ) {}\n\n\tcustomProgramCacheKey() {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t}\n\n\tsetValues( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Material: parameter '${ key }' has value of undefined.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Material: '${ key }' is not a property of THREE.${ this.type }.` );\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( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRootObject ) {\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\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\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.sheen !== undefined ) data.sheen = this.sheen;\n\t\tif ( this.sheenColor && this.sheenColor.isColor ) data.sheenColor = this.sheenColor.getHex();\n\t\tif ( this.sheenRoughness !== undefined ) data.sheenRoughness = this.sheenRoughness;\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.specularIntensity !== undefined ) data.specularIntensity = this.specularIntensity;\n\t\tif ( this.specularColor && this.specularColor.isColor ) data.specularColor = this.specularColor.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.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.iridescence !== undefined ) data.iridescence = this.iridescence;\n\t\tif ( this.iridescenceIOR !== undefined ) data.iridescenceIOR = this.iridescenceIOR;\n\t\tif ( this.iridescenceThicknessRange !== undefined ) data.iridescenceThicknessRange = this.iridescenceThicknessRange;\n\n\t\tif ( this.iridescenceMap && this.iridescenceMap.isTexture ) {\n\n\t\t\tdata.iridescenceMap = this.iridescenceMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture ) {\n\n\t\t\tdata.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.anisotropy !== undefined ) data.anisotropy = this.anisotropy;\n\t\tif ( this.anisotropyRotation !== undefined ) data.anisotropyRotation = this.anisotropyRotation;\n\n\t\tif ( this.anisotropyMap && this.anisotropyMap.isTexture ) {\n\n\t\t\tdata.anisotropyMap = this.anisotropyMap.toJSON( meta ).uuid;\n\n\t\t}\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\n\t\tif ( this.lightMap && this.lightMap.isTexture ) {\n\n\t\t\tdata.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\t\tdata.lightMapIntensity = this.lightMapIntensity;\n\n\t\t}\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\t\tif ( this.specularIntensityMap && this.specularIntensityMap.isTexture ) data.specularIntensityMap = this.specularIntensityMap.toJSON( meta ).uuid;\n\t\tif ( this.specularColorMap && this.specularColorMap.isTexture ) data.specularColorMap = this.specularColorMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\n\t\t}\n\n\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\t\tif ( this.reflectivity !== undefined ) data.reflectivity = this.reflectivity;\n\t\tif ( this.refractionRatio !== undefined ) data.refractionRatio = this.refractionRatio;\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.transmission !== undefined ) data.transmission = this.transmission;\n\t\tif ( this.transmissionMap && this.transmissionMap.isTexture ) data.transmissionMap = this.transmissionMap.toJSON( meta ).uuid;\n\t\tif ( this.thickness !== undefined ) data.thickness = this.thickness;\n\t\tif ( this.thicknessMap && this.thicknessMap.isTexture ) data.thicknessMap = this.thicknessMap.toJSON( meta ).uuid;\n\t\tif ( this.attenuationDistance !== undefined && this.attenuationDistance !== Infinity ) data.attenuationDistance = this.attenuationDistance;\n\t\tif ( this.attenuationColor !== undefined ) data.attenuationColor = this.attenuationColor.getHex();\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.shadowSide !== null ) data.shadowSide = this.shadowSide;\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.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors ) data.vertexColors = true;\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\t\tdata.colorWrite = this.colorWrite;\n\n\t\tdata.stencilWrite = this.stencilWrite;\n\t\tdata.stencilWriteMask = this.stencilWriteMask;\n\t\tdata.stencilFunc = this.stencilFunc;\n\t\tdata.stencilRef = this.stencilRef;\n\t\tdata.stencilFuncMask = this.stencilFuncMask;\n\t\tdata.stencilFail = this.stencilFail;\n\t\tdata.stencilZFail = this.stencilZFail;\n\t\tdata.stencilZPass = this.stencilZPass;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation !== undefined && 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 !== undefined && 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.alphaToCoverage === true ) data.alphaToCoverage = this.alphaToCoverage;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\t\tif ( this.forceSinglePass === true ) data.forceSinglePass = this.forceSinglePass;\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.flatShading === true ) data.flatShading = this.flatShading;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( this.fog === false ) data.fog = false;\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst 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 ( isRootObject ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst 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() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\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.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\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.alphaToCoverage = source.alphaToCoverage;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\t\tthis.forceSinglePass = source.forceSinglePass;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n}\n\nconst _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\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\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\nclass Color {\n\n\tconstructor( r, g, b ) {\n\n\t\tthis.isColor = true;\n\n\t\tthis.r = 1;\n\t\tthis.g = 1;\n\t\tthis.b = 1;\n\n\t\treturn this.set( r, g, b );\n\n\t}\n\n\tset( r, g, b ) {\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\n\t\t\tconst value = r;\n\n\t\t\tif ( value && value.isColor ) {\n\n\t\t\t\tthis.copy( value );\n\n\t\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\t\tthis.setHex( value );\n\n\t\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\t\tthis.setStyle( value );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.setRGB( r, g, b );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( 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( hex, colorSpace = SRGBColorSpace ) {\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\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetRGB( r, g, b, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetHSL( h, s, l, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = euclideanModulo( h, 1 );\n\t\ts = clamp( s, 0, 1 );\n\t\tl = 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\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst 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\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetStyle( style, colorSpace = SRGBColorSpace ) {\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\tlet m;\n\n\t\tif ( m = /^(\\w+)\\(([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst 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 = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 1 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 2 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 3 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 1 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 2 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 3 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tcolorSpace\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\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL(\n\t\t\t\t\t\t\tparseFloat( color[ 1 ] ) / 360,\n\t\t\t\t\t\t\tparseFloat( color[ 2 ] ) / 100,\n\t\t\t\t\t\t\tparseFloat( color[ 3 ] ) / 100,\n\t\t\t\t\t\t\tcolorSpace\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\tconsole.warn( 'THREE.Color: Unknown color model ' + style );\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f\\d]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\treturn this.setRGB(\n\t\t\t\t\tparseInt( hex.charAt( 0 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 1 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 2 ), 16 ) / 15,\n\t\t\t\t\tcolorSpace\n\t\t\t\t);\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\treturn this.setHex( parseInt( hex, 16 ), colorSpace );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Invalid hex color ' + style );\n\n\t\t\t}\n\n\t\t} else if ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style, colorSpace );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetColorName( style, colorSpace = SRGBColorSpace ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style.toLowerCase() ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex, colorSpace );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\tcopy( 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\tcopySRGBToLinear( 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( 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() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\tgetHex( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\treturn Math.round( clamp( _color.r * 255, 0, 255 ) ) * 65536 + Math.round( clamp( _color.g * 255, 0, 255 ) ) * 256 + Math.round( clamp( _color.b * 255, 0, 255 ) );\n\n\t}\n\n\tgetHexString( colorSpace = SRGBColorSpace ) {\n\n\t\treturn ( '000000' + this.getHex( colorSpace ).toString( 16 ) ).slice( - 6 );\n\n\t}\n\n\tgetHSL( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst 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\tconst 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\tgetRGB( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\ttarget.r = _color.r;\n\t\ttarget.g = _color.g;\n\t\ttarget.b = _color.b;\n\n\t\treturn target;\n\n\t}\n\n\tgetStyle( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tif ( colorSpace !== SRGBColorSpace ) {\n\n\t\t\t// Requires CSS Color Module Level 4 (https://www.w3.org/TR/css-color-4/).\n\t\t\treturn `color(${ colorSpace } ${ r.toFixed( 3 ) } ${ g.toFixed( 3 ) } ${ b.toFixed( 3 ) })`;\n\n\t\t}\n\n\t\treturn `rgb(${ Math.round( r * 255 ) },${ Math.round( g * 255 ) },${ Math.round( b * 255 ) })`;\n\n\t}\n\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\t_hslA.h += h; _hslA.s += s; _hslA.l += l;\n\n\t\tthis.setHSL( _hslA.h, _hslA.s, _hslA.l );\n\n\t\treturn this;\n\n\t}\n\n\tadd( 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( 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( 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( 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( 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( 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( 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\tlerpColors( color1, color2, alpha ) {\n\n\t\tthis.r = color1.r + ( color2.r - color1.r ) * alpha;\n\t\tthis.g = color1.g + ( color2.g - color1.g ) * alpha;\n\t\tthis.b = color1.b + ( color2.b - color1.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\tthis.r = v.x;\n\t\tthis.g = v.y;\n\t\tthis.b = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\t\tconst e = m.elements;\n\n\t\tthis.r = e[ 0 ] * r + e[ 3 ] * g + e[ 6 ] * b;\n\t\tthis.g = e[ 1 ] * r + e[ 4 ] * g + e[ 7 ] * b;\n\t\tthis.b = e[ 2 ] * r + e[ 5 ] * g + e[ 8 ] * b;\n\n\t\treturn this;\n\n\t}\n\n\tequals( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\tfromArray( array, 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( array = [], 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\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.getHex();\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.r;\n\t\tyield this.g;\n\t\tyield this.b;\n\n\t}\n\n}\n\nconst _color = /*@__PURE__*/ new Color();\n\nColor.NAMES = _colorKeywords;\n\nclass MeshBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshBasicMaterial = true;\n\n\t\tthis.type = 'MeshBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // emissive\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// Fast Half Float Conversions, http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf\n\nconst _tables = /*@__PURE__*/ _generateTables();\n\nfunction _generateTables() {\n\n\t// float32 to float16 helpers\n\n\tconst buffer = new ArrayBuffer( 4 );\n\tconst floatView = new Float32Array( buffer );\n\tconst uint32View = new Uint32Array( buffer );\n\n\tconst baseTable = new Uint32Array( 512 );\n\tconst shiftTable = new Uint32Array( 512 );\n\n\tfor ( let i = 0; i < 256; ++ i ) {\n\n\t\tconst e = i - 127;\n\n\t\t// very small number (0, -0)\n\n\t\tif ( e < - 27 ) {\n\n\t\t\tbaseTable[ i ] = 0x0000;\n\t\t\tbaseTable[ i | 0x100 ] = 0x8000;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// small number (denorm)\n\n\t\t} else if ( e < - 14 ) {\n\n\t\t\tbaseTable[ i ] = 0x0400 >> ( - e - 14 );\n\t\t\tbaseTable[ i | 0x100 ] = ( 0x0400 >> ( - e - 14 ) ) | 0x8000;\n\t\t\tshiftTable[ i ] = - e - 1;\n\t\t\tshiftTable[ i | 0x100 ] = - e - 1;\n\n\t\t\t// normal number\n\n\t\t} else if ( e <= 15 ) {\n\n\t\t\tbaseTable[ i ] = ( e + 15 ) << 10;\n\t\t\tbaseTable[ i | 0x100 ] = ( ( e + 15 ) << 10 ) | 0x8000;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t\t// large number (Infinity, -Infinity)\n\n\t\t} else if ( e < 128 ) {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// stay (NaN, Infinity, -Infinity)\n\n\t\t} else {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t}\n\n\t}\n\n\t// float16 to float32 helpers\n\n\tconst mantissaTable = new Uint32Array( 2048 );\n\tconst exponentTable = new Uint32Array( 64 );\n\tconst offsetTable = new Uint32Array( 64 );\n\n\tfor ( let i = 1; i < 1024; ++ i ) {\n\n\t\tlet m = i << 13; // zero pad mantissa bits\n\t\tlet e = 0; // zero exponent\n\n\t\t// normalized\n\t\twhile ( ( m & 0x00800000 ) === 0 ) {\n\n\t\t\tm <<= 1;\n\t\t\te -= 0x00800000; // decrement exponent\n\n\t\t}\n\n\t\tm &= ~ 0x00800000; // clear leading 1 bit\n\t\te += 0x38800000; // adjust bias\n\n\t\tmantissaTable[ i ] = m | e;\n\n\t}\n\n\tfor ( let i = 1024; i < 2048; ++ i ) {\n\n\t\tmantissaTable[ i ] = 0x38000000 + ( ( i - 1024 ) << 13 );\n\n\t}\n\n\tfor ( let i = 1; i < 31; ++ i ) {\n\n\t\texponentTable[ i ] = i << 23;\n\n\t}\n\n\texponentTable[ 31 ] = 0x47800000;\n\texponentTable[ 32 ] = 0x80000000;\n\n\tfor ( let i = 33; i < 63; ++ i ) {\n\n\t\texponentTable[ i ] = 0x80000000 + ( ( i - 32 ) << 23 );\n\n\t}\n\n\texponentTable[ 63 ] = 0xc7800000;\n\n\tfor ( let i = 1; i < 64; ++ i ) {\n\n\t\tif ( i !== 32 ) {\n\n\t\t\toffsetTable[ i ] = 1024;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tfloatView: floatView,\n\t\tuint32View: uint32View,\n\t\tbaseTable: baseTable,\n\t\tshiftTable: shiftTable,\n\t\tmantissaTable: mantissaTable,\n\t\texponentTable: exponentTable,\n\t\toffsetTable: offsetTable\n\t};\n\n}\n\n// float32 to float16\n\nfunction toHalfFloat( val ) {\n\n\tif ( Math.abs( val ) > 65504 ) console.warn( 'THREE.DataUtils.toHalfFloat(): Value out of range.' );\n\n\tval = clamp( val, - 65504, 65504 );\n\n\t_tables.floatView[ 0 ] = val;\n\tconst f = _tables.uint32View[ 0 ];\n\tconst e = ( f >> 23 ) & 0x1ff;\n\treturn _tables.baseTable[ e ] + ( ( f & 0x007fffff ) >> _tables.shiftTable[ e ] );\n\n}\n\n// float16 to float32\n\nfunction fromHalfFloat( val ) {\n\n\tconst m = val >> 10;\n\t_tables.uint32View[ 0 ] = _tables.mantissaTable[ _tables.offsetTable[ m ] + ( val & 0x3ff ) ] + _tables.exponentTable[ m ];\n\treturn _tables.floatView[ 0 ];\n\n}\n\nconst DataUtils = {\n\ttoHalfFloat: toHalfFloat,\n\tfromHalfFloat: fromHalfFloat,\n};\n\nconst _vector$8 = /*@__PURE__*/ new Vector3();\nconst _vector2$1 = /*@__PURE__*/ new Vector2();\n\nclass BufferAttribute {\n\n\tconstructor( array, itemSize, normalized = false ) {\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.isBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.array = array;\n\t\tthis.itemSize = itemSize;\n\t\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\t\tthis.normalized = normalized;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRange = { offset: 0, count: - 1 };\n\t\tthis.gpuType = FloatType;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( 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.usage = source.usage;\n\t\tthis.gpuType = source.gpuType;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let 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( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$8.fromBufferAttribute( this, i );\n\t\t\t\t_vector$8.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$8.x, _vector$8.y, _vector$8.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$8.fromBufferAttribute( this, i );\n\n\t\t\t_vector$8.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$8.x, _vector$8.y, _vector$8.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$8.fromBufferAttribute( this, i );\n\n\t\t\t_vector$8.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$8.x, _vector$8.y, _vector$8.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$8.fromBufferAttribute( this, i );\n\n\t\t\t_vector$8.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$8.x, _vector$8.y, _vector$8.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\t// Matching BufferAttribute constructor, do not normalize the array.\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = this.array[ index * this.itemSize ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = this.array[ index * this.itemSize + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = this.array[ index * this.itemSize + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = this.array[ index * this.itemSize + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\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( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\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( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\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( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.from( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( this.usage !== StaticDrawUsage ) data.usage = this.usage;\n\t\tif ( this.updateRange.offset !== 0 || this.updateRange.count !== - 1 ) data.updateRange = this.updateRange;\n\n\t\treturn data;\n\n\t}\n\n\tcopyColorsArray() { // @deprecated, r144\n\n\t\tconsole.error( 'THREE.BufferAttribute: copyColorsArray() was removed in r144.' );\n\n\t}\n\n\tcopyVector2sArray() { // @deprecated, r144\n\n\t\tconsole.error( 'THREE.BufferAttribute: copyVector2sArray() was removed in r144.' );\n\n\t}\n\n\tcopyVector3sArray() { // @deprecated, r144\n\n\t\tconsole.error( 'THREE.BufferAttribute: copyVector3sArray() was removed in r144.' );\n\n\t}\n\n\tcopyVector4sArray() { // @deprecated, r144\n\n\t\tconsole.error( 'THREE.BufferAttribute: copyVector4sArray() was removed in r144.' );\n\n\t}\n\n}\n\n//\n\nclass Int8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8ClampedArray( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t\tthis.isFloat16BufferAttribute = true;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = fromHalfFloat( this.array[ index * this.itemSize ] );\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = toHalfFloat( x );\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = fromHalfFloat( this.array[ index * this.itemSize + 1 ] );\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = fromHalfFloat( this.array[ index * this.itemSize + 2 ] );\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = fromHalfFloat( this.array[ index * this.itemSize + 3 ] );\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\t\tthis.array[ index + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n}\n\n\nclass Float32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float64BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float64Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nlet _id$1 = 0;\n\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _obj = /*@__PURE__*/ new Object3D();\nconst _offset = /*@__PURE__*/ new Vector3();\nconst _box$1 = /*@__PURE__*/ new Box3();\nconst _boxMorphTargets = /*@__PURE__*/ new Box3();\nconst _vector$7 = /*@__PURE__*/ new Vector3();\n\nclass BufferGeometry extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBufferGeometry = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id$1 ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'BufferGeometry';\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\n\t\tthis.morphAttributes = {};\n\t\tthis.morphTargetsRelative = false;\n\n\t\tthis.groups = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tthis.drawRange = { start: 0, count: Infinity };\n\n\t\tthis.userData = {};\n\n\t}\n\n\tgetIndex() {\n\n\t\treturn this.index;\n\n\t}\n\n\tsetIndex( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayNeedsUint32( index ) ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetAttribute( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t}\n\n\tsetAttribute( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t}\n\n\tdeleteAttribute( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t}\n\n\thasAttribute( name ) {\n\n\t\treturn this.attributes[ name ] !== undefined;\n\n\t}\n\n\taddGroup( start, count, materialIndex = 0 ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex\n\n\t\t} );\n\n\t}\n\n\tclearGroups() {\n\n\t\tthis.groups = [];\n\n\t}\n\n\tsetDrawRange( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\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\tapplyQuaternion( q ) {\n\n\t\t_m1.makeRotationFromQuaternion( q );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateY( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tscale( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tlookAt( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t}\n\n\tcenter() {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tconst position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingBox.set(\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$1.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$7.addVectors( this.boundingBox.min, _box$1.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$7 );\n\n\t\t\t\t\t\t_vector$7.addVectors( this.boundingBox.max, _box$1.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$7 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$1.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$1.max );\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\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\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}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$1.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$7.addVectors( _box$1.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$1.expandByPoint( _vector$7 );\n\n\t\t\t\t\t\t_vector$7.addVectors( _box$1.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$1.expandByPoint( _vector$7 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$1.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$1.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$1.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$7.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$7 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$7.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$7.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$7 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\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}\n\n\t\t}\n\n\t}\n\n\tcomputeTangents() {\n\n\t\tconst index = this.index;\n\t\tconst attributes = this.attributes;\n\n\t\t// based on http://www.terathon.com/code/tangent.html\n\t\t// (per vertex tangents)\n\n\t\tif ( index === null ||\n\t\t\t attributes.position === undefined ||\n\t\t\t attributes.normal === undefined ||\n\t\t\t attributes.uv === undefined ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst indices = index.array;\n\t\tconst positions = attributes.position.array;\n\t\tconst normals = attributes.normal.array;\n\t\tconst uvs = attributes.uv.array;\n\n\t\tconst nVertices = positions.length / 3;\n\n\t\tif ( this.hasAttribute( 'tangent' ) === false ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * nVertices ), 4 ) );\n\n\t\t}\n\n\t\tconst tangents = this.getAttribute( 'tangent' ).array;\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < nVertices; i ++ ) {\n\n\t\t\ttan1[ i ] = new Vector3();\n\t\t\ttan2[ i ] = new Vector3();\n\n\t\t}\n\n\t\tconst vA = new Vector3(),\n\t\t\tvB = new Vector3(),\n\t\t\tvC = new Vector3(),\n\n\t\t\tuvA = new Vector2(),\n\t\t\tuvB = new Vector2(),\n\t\t\tuvC = new Vector2(),\n\n\t\t\tsdir = new Vector3(),\n\t\t\ttdir = new Vector3();\n\n\t\tfunction handleTriangle( a, b, c ) {\n\n\t\t\tvA.fromArray( positions, a * 3 );\n\t\t\tvB.fromArray( positions, b * 3 );\n\t\t\tvC.fromArray( positions, c * 3 );\n\n\t\t\tuvA.fromArray( uvs, a * 2 );\n\t\t\tuvB.fromArray( uvs, b * 2 );\n\t\t\tuvC.fromArray( uvs, c * 2 );\n\n\t\t\tvB.sub( vA );\n\t\t\tvC.sub( vA );\n\n\t\t\tuvB.sub( uvA );\n\t\t\tuvC.sub( uvA );\n\n\t\t\tconst r = 1.0 / ( uvB.x * uvC.y - uvC.x * uvB.y );\n\n\t\t\t// silently ignore degenerate uv triangles having coincident or colinear vertices\n\n\t\t\tif ( ! isFinite( r ) ) return;\n\n\t\t\tsdir.copy( vB ).multiplyScalar( uvC.y ).addScaledVector( vC, - uvB.y ).multiplyScalar( r );\n\t\t\ttdir.copy( vC ).multiplyScalar( uvB.x ).addScaledVector( vB, - uvC.x ).multiplyScalar( r );\n\n\t\t\ttan1[ a ].add( sdir );\n\t\t\ttan1[ b ].add( sdir );\n\t\t\ttan1[ c ].add( sdir );\n\n\t\t\ttan2[ a ].add( tdir );\n\t\t\ttan2[ b ].add( tdir );\n\t\t\ttan2[ c ].add( tdir );\n\n\t\t}\n\n\t\tlet groups = this.groups;\n\n\t\tif ( groups.length === 0 ) {\n\n\t\t\tgroups = [ {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: indices.length\n\t\t\t} ];\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleTriangle(\n\t\t\t\t\tindices[ j + 0 ],\n\t\t\t\t\tindices[ j + 1 ],\n\t\t\t\t\tindices[ j + 2 ]\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst tmp = new Vector3(), tmp2 = new Vector3();\n\t\tconst n = new Vector3(), n2 = new Vector3();\n\n\t\tfunction handleVertex( v ) {\n\n\t\t\tn.fromArray( normals, v * 3 );\n\t\t\tn2.copy( n );\n\n\t\t\tconst t = tan1[ v ];\n\n\t\t\t// Gram-Schmidt orthogonalize\n\n\t\t\ttmp.copy( t );\n\t\t\ttmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize();\n\n\t\t\t// Calculate handedness\n\n\t\t\ttmp2.crossVectors( n2, t );\n\t\t\tconst test = tmp2.dot( tan2[ v ] );\n\t\t\tconst w = ( test < 0.0 ) ? - 1.0 : 1.0;\n\n\t\t\ttangents[ v * 4 ] = tmp.x;\n\t\t\ttangents[ v * 4 + 1 ] = tmp.y;\n\t\t\ttangents[ v * 4 + 2 ] = tmp.z;\n\t\t\ttangents[ v * 4 + 3 ] = w;\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleVertex( indices[ j + 0 ] );\n\t\t\t\thandleVertex( indices[ j + 1 ] );\n\t\t\t\thandleVertex( indices[ j + 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeVertexNormals() {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, 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\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.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 ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\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\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tmerge() { // @deprecated, r144\n\n\t\tconsole.error( 'THREE.BufferGeometry.merge() has been removed. Use THREE.BufferGeometryUtils.mergeGeometries() instead.' );\n\t\treturn this;\n\n\t}\n\n\tnormalizeNormals() {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$7.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$7.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$7.x, _vector$7.y, _vector$7.z );\n\n\t\t}\n\n\t}\n\n\ttoNonIndexed() {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\tindex = indices[ i ] * attribute.data.stride + attribute.offset;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let 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, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst 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\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst 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() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\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\tconst parameters = this.parameters;\n\n\t\t\tfor ( const 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\t// for simplicity the code assumes attributes are not shared across geometries, see #15811\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst 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\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tdata.data.attributes[ key ] = attribute.toJSON( data.data );\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tarray.push( attribute.toJSON( data.data ) );\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 ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst 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\tconst 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() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\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// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst 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\tconst 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\tconst 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() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nconst _inverseMatrix$3 = /*@__PURE__*/ new Matrix4();\nconst _ray$3 = /*@__PURE__*/ new Ray();\nconst _sphere$5 = /*@__PURE__*/ new Sphere();\nconst _sphereHitAt = /*@__PURE__*/ new Vector3();\n\nconst _vA$1 = /*@__PURE__*/ new Vector3();\nconst _vB$1 = /*@__PURE__*/ new Vector3();\nconst _vC$1 = /*@__PURE__*/ new Vector3();\n\nconst _tempA = /*@__PURE__*/ new Vector3();\nconst _morphA = /*@__PURE__*/ new Vector3();\n\nconst _uvA$1 = /*@__PURE__*/ new Vector2();\nconst _uvB$1 = /*@__PURE__*/ new Vector2();\nconst _uvC$1 = /*@__PURE__*/ new Vector2();\n\nconst _normalA = /*@__PURE__*/ new Vector3();\nconst _normalB = /*@__PURE__*/ new Vector3();\nconst _normalC = /*@__PURE__*/ new Vector3();\n\nconst _intersectionPoint = /*@__PURE__*/ new Vector3();\nconst _intersectionPointWorld = /*@__PURE__*/ new Vector3();\n\nclass Mesh extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isMesh = true;\n\n\t\tthis.type = 'Mesh';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\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\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst 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 ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = 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\tgetVertexPosition( index, target ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.attributes.position;\n\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\n\t\ttarget.fromBufferAttribute( position, index );\n\n\t\tconst morphInfluences = this.morphTargetInfluences;\n\n\t\tif ( morphPosition && morphInfluences ) {\n\n\t\t\t_morphA.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\t\tconst influence = morphInfluences[ i ];\n\t\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t_tempA.fromBufferAttribute( morphAttribute, index );\n\n\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA.sub( target ), influence );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttarget.add( _morphA );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// test with bounding sphere in world space\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$5.copy( geometry.boundingSphere );\n\t\t_sphere$5.applyMatrix4( matrixWorld );\n\n\t\t// check distance from ray origin to bounding sphere\n\n\t\t_ray$3.copy( raycaster.ray ).recast( raycaster.near );\n\n\t\tif ( _sphere$5.containsPoint( _ray$3.origin ) === false ) {\n\n\t\t\tif ( _ray$3.intersectSphere( _sphere$5, _sphereHitAt ) === null ) return;\n\n\t\t\tif ( _ray$3.origin.distanceToSquared( _sphereHitAt ) > ( raycaster.far - raycaster.near ) ** 2 ) return;\n\n\t\t}\n\n\t\t// convert ray to local space of mesh\n\n\t\t_inverseMatrix$3.copy( matrixWorld ).invert();\n\t\t_ray$3.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$3 );\n\n\t\t// test with bounding box in local space\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray$3.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\t// test for intersections with geometry\n\n\t\tthis._computeIntersections( raycaster, intersects, _ray$3 );\n\n\t}\n\n\t_computeIntersections( raycaster, intersects, rayLocalSpace ) {\n\n\t\tlet intersection;\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\n\t\tconst index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\t\tconst uv = geometry.attributes.uv;\n\t\tconst uv1 = geometry.attributes.uv1;\n\t\tconst normal = geometry.attributes.normal;\n\t\tconst groups = geometry.groups;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\tif ( index !== null ) {\n\n\t\t\t// indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\tintersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\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\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\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 {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\tintersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\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} else if ( position !== undefined ) {\n\n\t\t\t// non-indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\tintersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\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\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\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 {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = i;\n\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\tintersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\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}\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, ( material.side === FrontSide ), point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkGeometryIntersection( object, material, raycaster, ray, uv, uv1, normal, a, b, c ) {\n\n\tobject.getVertexPosition( a, _vA$1 );\n\tobject.getVertexPosition( b, _vB$1 );\n\tobject.getVertexPosition( c, _vC$1 );\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv1 ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv1, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv1, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv1, c );\n\n\t\t\tintersection.uv1 = Triangle.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\t\t\tintersection.uv2 = intersection.uv1; // @deprecated, r152\n\n\t\t}\n\n\t\tif ( normal ) {\n\n\t\t\t_normalA.fromBufferAttribute( normal, a );\n\t\t\t_normalB.fromBufferAttribute( normal, b );\n\t\t\t_normalC.fromBufferAttribute( normal, c );\n\n\t\t\tintersection.normal = Triangle.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _normalA, _normalB, _normalC, new Vector3() );\n\n\t\t\tif ( intersection.normal.dot( ray.direction ) > 0 ) {\n\n\t\t\t\tintersection.normal.multiplyScalar( - 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst face = {\n\t\t\ta: a,\n\t\t\tb: b,\n\t\t\tc: c,\n\t\t\tnormal: new Vector3(),\n\t\t\tmaterialIndex: 0\n\t\t};\n\n\t\tTriangle.getNormal( _vA$1, _vB$1, _vC$1, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\nclass BoxGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new BoxGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments );\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst 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 || property.isQuaternion ) ) {\n\n\t\t\t\tif ( property.isRenderTargetTexture ) {\n\n\t\t\t\t\tconsole.warn( 'UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms().' );\n\t\t\t\t\tdst[ u ][ p ] = null;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t\t}\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\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const 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\nfunction cloneUniformsGroups( src ) {\n\n\tconst dst = [];\n\n\tfor ( let u = 0; u < src.length; u ++ ) {\n\n\t\tdst.push( src[ u ].clone() );\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction getUnlitUniformColorSpace( renderer ) {\n\n\tif ( renderer.getRenderTarget() === null ) {\n\n\t\t// https://github.com/mrdoob/three.js/pull/23937#issuecomment-1111067398\n\t\treturn renderer.outputColorSpace;\n\n\t}\n\n\treturn LinearSRGBColorSpace;\n\n}\n\n// Legacy\n\nconst 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\nclass ShaderMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShaderMaterial = true;\n\n\t\tthis.type = 'ShaderMaterial';\n\n\t\tthis.defines = {};\n\t\tthis.uniforms = {};\n\t\tthis.uniformsGroups = [];\n\n\t\tthis.vertexShader = default_vertex;\n\t\tthis.fragmentShader = default_fragment;\n\n\t\tthis.linewidth = 1;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false; // set to use scene fog\n\t\tthis.lights = false; // set to use scene lights\n\t\tthis.clipping = false; // set to use user-defined clipping planes\n\n\t\tthis.forceSinglePass = true;\n\n\t\tthis.extensions = {\n\t\t\tderivatives: false, // set to use derivatives\n\t\t\tfragDepth: false, // set to use fragment depth values\n\t\t\tdrawBuffers: false, // set to use draw buffers\n\t\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t\t};\n\n\t\t// When rendered geometry doesn't include these attributes but the material does,\n\t\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\t\tthis.defaultAttributeValues = {\n\t\t\t'color': [ 1, 1, 1 ],\n\t\t\t'uv': [ 0, 0 ],\n\t\t\t'uv1': [ 0, 0 ]\n\t\t};\n\n\t\tthis.index0AttributeName = undefined;\n\t\tthis.uniformsNeedUpdate = false;\n\n\t\tthis.glslVersion = null;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tthis.setValues( parameters );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.fragmentShader = source.fragmentShader;\n\t\tthis.vertexShader = source.vertexShader;\n\n\t\tthis.uniforms = cloneUniforms( source.uniforms );\n\t\tthis.uniformsGroups = cloneUniformsGroups( source.uniformsGroups );\n\n\t\tthis.defines = Object.assign( {}, source.defines );\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\t\tthis.clipping = source.clipping;\n\n\t\tthis.extensions = Object.assign( {}, source.extensions );\n\n\t\tthis.glslVersion = source.glslVersion;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.glslVersion = this.glslVersion;\n\t\tdata.uniforms = {};\n\n\t\tfor ( const name in this.uniforms ) {\n\n\t\t\tconst uniform = this.uniforms[ name ];\n\t\t\tconst value = uniform.value;\n\n\t\t\tif ( value && value.isTexture ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 't',\n\t\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isColor ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'c',\n\t\t\t\t\tvalue: value.getHex()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v2',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\n\t\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\t\tdata.vertexShader = this.vertexShader;\n\t\tdata.fragmentShader = this.fragmentShader;\n\n\t\tdata.lights = this.lights;\n\t\tdata.clipping = this.clipping;\n\n\t\tconst extensions = {};\n\n\t\tfor ( const key in this.extensions ) {\n\n\t\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t\t}\n\n\t\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass Camera extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isCamera = true;\n\n\t\tthis.type = 'Camera';\n\n\t\tthis.matrixWorldInverse = new Matrix4();\n\n\t\tthis.projectionMatrix = new Matrix4();\n\t\tthis.projectionMatrixInverse = new Matrix4();\n\n\t\tthis.coordinateSystem = WebGLCoordinateSystem;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( 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\tthis.coordinateSystem = source.coordinateSystem;\n\n\t\treturn this;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tsuper.updateWorldMatrix( updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass PerspectiveCamera extends Camera {\n\n\tconstructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isPerspectiveCamera = true;\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\tthis.fov = fov;\n\t\tthis.zoom = 1;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.focus = 10;\n\n\t\tthis.aspect = aspect;\n\t\tthis.view = null;\n\n\t\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\t\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( 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( focalLength ) {\n\n\t\t/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = 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() {\n\n\t\tconst vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t}\n\n\tgetEffectiveFOV() {\n\n\t\treturn RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t}\n\n\tgetFilmWidth() {\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() {\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 * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const 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( 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() {\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() {\n\n\t\tconst near = this.near;\n\t\tlet top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = - 0.5 * width;\n\t\tconst view = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst 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\tconst 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, this.coordinateSystem );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( 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\nconst fov = - 90; // negative fov is not an error\nconst aspect = 1;\n\nclass CubeCamera extends Object3D {\n\n\tconstructor( near, far, renderTarget ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubeCamera';\n\n\t\tthis.renderTarget = renderTarget;\n\t\tthis.coordinateSystem = null;\n\n\t\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPX.layers = this.layers;\n\t\tthis.add( cameraPX );\n\n\t\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNX.layers = this.layers;\n\t\tthis.add( cameraNX );\n\n\t\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPY.layers = this.layers;\n\t\tthis.add( cameraPY );\n\n\t\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNY.layers = this.layers;\n\t\tthis.add( cameraNY );\n\n\t\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPZ.layers = this.layers;\n\t\tthis.add( cameraPZ );\n\n\t\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNZ.layers = this.layers;\n\t\tthis.add( cameraNZ );\n\n\t}\n\n\tupdateCoordinateSystem() {\n\n\t\tconst coordinateSystem = this.coordinateSystem;\n\n\t\tconst cameras = this.children.concat();\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = cameras;\n\n\t\tfor ( const camera of cameras ) this.remove( camera );\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tcameraPX.up.set( 0, 1, 0 );\n\t\t\tcameraPX.lookAt( 1, 0, 0 );\n\n\t\t\tcameraNX.up.set( 0, 1, 0 );\n\t\t\tcameraNX.lookAt( - 1, 0, 0 );\n\n\t\t\tcameraPY.up.set( 0, 0, - 1 );\n\t\t\tcameraPY.lookAt( 0, 1, 0 );\n\n\t\t\tcameraNY.up.set( 0, 0, 1 );\n\t\t\tcameraNY.lookAt( 0, - 1, 0 );\n\n\t\t\tcameraPZ.up.set( 0, 1, 0 );\n\t\t\tcameraPZ.lookAt( 0, 0, 1 );\n\n\t\t\tcameraNZ.up.set( 0, 1, 0 );\n\t\t\tcameraNZ.lookAt( 0, 0, - 1 );\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tcameraPX.up.set( 0, - 1, 0 );\n\t\t\tcameraPX.lookAt( - 1, 0, 0 );\n\n\t\t\tcameraNX.up.set( 0, - 1, 0 );\n\t\t\tcameraNX.lookAt( 1, 0, 0 );\n\n\t\t\tcameraPY.up.set( 0, 0, 1 );\n\t\t\tcameraPY.lookAt( 0, 1, 0 );\n\n\t\t\tcameraNY.up.set( 0, 0, - 1 );\n\t\t\tcameraNY.lookAt( 0, - 1, 0 );\n\n\t\t\tcameraPZ.up.set( 0, - 1, 0 );\n\t\t\tcameraPZ.lookAt( 0, 0, 1 );\n\n\t\t\tcameraNZ.up.set( 0, - 1, 0 );\n\t\t\tcameraNZ.lookAt( 0, 0, - 1 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tfor ( const camera of cameras ) {\n\n\t\t\tthis.add( camera );\n\n\t\t\tcamera.updateMatrixWorld();\n\n\t\t}\n\n\t}\n\n\tupdate( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst renderTarget = this.renderTarget;\n\n\t\tif ( this.coordinateSystem !== renderer.coordinateSystem ) {\n\n\t\t\tthis.coordinateSystem = renderer.coordinateSystem;\n\n\t\t\tthis.updateCoordinateSystem();\n\n\t\t}\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst currentToneMapping = renderer.toneMapping;\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.xr.enabled = false;\n\n\t\tconst 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\trenderer.toneMapping = currentToneMapping;\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t\trenderTarget.texture.needsPMREMUpdate = true;\n\n\t}\n\n}\n\nclass CubeTexture extends Texture {\n\n\tconstructor( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace ) {\n\n\t\timages = images !== undefined ? images : [];\n\t\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\n\t\tsuper( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isCubeTexture = true;\n\n\t\tthis.flipY = false;\n\n\t}\n\n\tget images() {\n\n\t\treturn this.image;\n\n\t}\n\n\tset images( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n}\n\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( size = 1, options = {} ) {\n\n\t\tsuper( size, size, options );\n\n\t\tthis.isWebGLCubeRenderTarget = true;\n\n\t\tconst image = { width: size, height: size, depth: 1 };\n\t\tconst images = [ image, image, image, image, image, image ];\n\n\t\tif ( options.encoding !== undefined ) {\n\n\t\t\t// @deprecated, r152\n\t\t\twarnOnce( 'THREE.WebGLCubeRenderTarget: option.encoding has been replaced by option.colorSpace.' );\n\t\t\toptions.colorSpace = options.encoding === sRGBEncoding ? SRGBColorSpace : NoColorSpace;\n\n\t\t}\n\n\t\tthis.texture = new CubeTexture( images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace );\n\n\t\t// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)\n\t\t// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,\n\t\t// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.\n\n\t\t// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped\n\t\t// and the flag isRenderTargetTexture controls this conversion. The flip is not required when using WebGLCubeRenderTarget.texture\n\t\t// as a cube texture (this is detected when isRenderTargetTexture is set to true for cube textures).\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t}\n\n\tfromEquirectangularTexture( renderer, texture ) {\n\n\t\tthis.texture.type = texture.type;\n\t\tthis.texture.colorSpace = texture.colorSpace;\n\n\t\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\t\tthis.texture.minFilter = texture.minFilter;\n\t\tthis.texture.magFilter = texture.magFilter;\n\n\t\tconst shader = {\n\n\t\t\tuniforms: {\n\t\t\t\ttEquirect: { value: null },\n\t\t\t},\n\n\t\t\tvertexShader: /* glsl */`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,\n\n\t\t\tfragmentShader: /* glsl */`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n\t\t};\n\n\t\tconst geometry = new BoxGeometry( 5, 5, 5 );\n\n\t\tconst material = new ShaderMaterial( {\n\n\t\t\tname: 'CubemapFromEquirect',\n\n\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tblending: NoBlending\n\n\t\t} );\n\n\t\tmaterial.uniforms.tEquirect.value = texture;\n\n\t\tconst mesh = new Mesh( geometry, material );\n\n\t\tconst currentMinFilter = texture.minFilter;\n\n\t\t// Avoid blurred poles\n\t\tif ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;\n\n\t\tconst camera = new CubeCamera( 1, 10, this );\n\t\tcamera.update( renderer, mesh );\n\n\t\ttexture.minFilter = currentMinFilter;\n\n\t\tmesh.geometry.dispose();\n\t\tmesh.material.dispose();\n\n\t\treturn this;\n\n\t}\n\n\tclear( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( this, 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\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\nclass Plane {\n\n\tconstructor( normal = new Vector3( 1, 0, 0 ), constant = 0 ) {\n\n\t\tthis.isPlane = true;\n\n\t\t// normal is assumed to be normalized\n\n\t\tthis.normal = normal;\n\t\tthis.constant = constant;\n\n\t}\n\n\tset( 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( 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( 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( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( 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() {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst 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() {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\tprojectPoint( point, target ) {\n\n\t\treturn target.copy( point ).addScaledVector( this.normal, - this.distanceToPoint( point ) );\n\n\t}\n\n\tintersectLine( line, target ) {\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn target.copy( line.start ).addScaledVector( direction, t );\n\n\t}\n\n\tintersectsLine( 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\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\tcoplanarPoint( target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\n\tapplyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _sphere$4 = /*@__PURE__*/ new Sphere();\nconst _vector$6 = /*@__PURE__*/ new Vector3();\n\nclass Frustum {\n\n\tconstructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) {\n\n\t\tthis.planes = [ p0, p1, p2, p3, p4, p5 ];\n\n\t}\n\n\tset( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst 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\tcopy( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let 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\tsetFromProjectionMatrix( m, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst 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\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tplanes[ 5 ].setComponents( me2, me6, me10, me14 ).normalize();\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tintersectsObject( object ) {\n\n\t\tif ( object.boundingSphere !== undefined ) {\n\n\t\t\tif ( object.boundingSphere === null ) object.computeBoundingSphere();\n\n\t\t\t_sphere$4.copy( object.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t} else {\n\n\t\t\tconst geometry = object.geometry;\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\t_sphere$4.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t}\n\n\t\treturn this.intersectsSphere( _sphere$4 );\n\n\t}\n\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere$4.center.set( 0, 0, 0 );\n\t\t_sphere$4.radius = 0.7071067811865476;\n\t\t_sphere$4.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$4 );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst 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( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$6.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$6.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$6.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$6 ) < 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\tcontainsPoint( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let 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\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.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\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\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\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\n\t\tconst 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\tlet type;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = gl.FLOAT;\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\tif ( attribute.isFloat16BufferAttribute ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\ttype = gl.HALF_FLOAT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\ttype = gl.UNSIGNED_SHORT;\n\n\t\t\t}\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = gl.SHORT;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = gl.UNSIGNED_INT;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = gl.INT;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = gl.BYTE;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = gl.UNSIGNED_BYTE;\n\n\t\t} else if ( array instanceof Uint8ClampedArray ) {\n\n\t\t\ttype = gl.UNSIGNED_BYTE;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.WebGLAttributes: Unsupported buffer data format: ' + array );\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\tconst array = attribute.array;\n\t\tconst updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( 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 {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t\tattribute.onUploadCallback();\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\tconst 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.isGLBufferAttribute ) {\n\n\t\t\tconst cached = buffers.get( attribute );\n\n\t\t\tif ( ! cached || cached.version < attribute.version ) {\n\n\t\t\t\tbuffers.set( attribute, {\n\t\t\t\t\tbuffer: attribute.buffer,\n\t\t\t\t\ttype: attribute.type,\n\t\t\t\t\tbytesPerElement: attribute.elementSize,\n\t\t\t\t\tversion: attribute.version\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst 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\nclass PlaneGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PlaneGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tconst width_half = width / 2;\n\t\tconst height_half = height / 2;\n\n\t\tconst gridX = Math.floor( widthSegments );\n\t\tconst gridY = Math.floor( heightSegments );\n\n\t\tconst gridX1 = gridX + 1;\n\t\tconst gridY1 = gridY + 1;\n\n\t\tconst segment_width = width / gridX;\n\t\tconst segment_height = height / gridY;\n\n\t\t//\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tconst y = iy * segment_height - height_half;\n\n\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tconst a = ix + gridX1 * iy;\n\t\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\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\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );\n\n\t}\n\n}\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef USE_ALPHATEST\\n\\tif ( diffuseColor.a < alphaTest ) discard;\\n#endif\";\n\nvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\\tuniform float alphaTest;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\\t#endif\\n#endif\";\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 = \"float G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n} // validated\";\n\nvar iridescence_fragment = \"#ifdef USE_IRIDESCENCE\\n\\tconst mat3 XYZ_TO_REC709 = mat3(\\n\\t\\t 3.2404542, -0.9692660, 0.0556434,\\n\\t\\t-1.5371385, 1.8760108, -0.2040259,\\n\\t\\t-0.4985314, 0.0415560, 1.0572252\\n\\t);\\n\\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\\n\\t\\tvec3 sqrtF0 = sqrt( fresnel0 );\\n\\t\\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\\n\\t}\\n\\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\\n\\t}\\n\\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\\n\\t}\\n\\tvec3 evalSensitivity( float OPD, vec3 shift ) {\\n\\t\\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\\n\\t\\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\\n\\t\\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\\n\\t\\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\\n\\t\\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\\n\\t\\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\\n\\t\\txyz /= 1.0685e-7;\\n\\t\\tvec3 rgb = XYZ_TO_REC709 * xyz;\\n\\t\\treturn rgb;\\n\\t}\\n\\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\\n\\t\\tvec3 I;\\n\\t\\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\\n\\t\\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\\n\\t\\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\\n\\t\\tif ( cosTheta2Sq < 0.0 ) {\\n\\t\\t\\t return vec3( 1.0 );\\n\\t\\t}\\n\\t\\tfloat cosTheta2 = sqrt( cosTheta2Sq );\\n\\t\\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\\n\\t\\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\\n\\t\\tfloat R21 = R12;\\n\\t\\tfloat T121 = 1.0 - R12;\\n\\t\\tfloat phi12 = 0.0;\\n\\t\\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\\n\\t\\tfloat phi21 = PI - phi12;\\n\\t\\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\\t\\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\\n\\t\\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\\n\\t\\tvec3 phi23 = vec3( 0.0 );\\n\\t\\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\\n\\t\\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\\n\\t\\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\\n\\t\\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\\n\\t\\tvec3 phi = vec3( phi21 ) + phi23;\\n\\t\\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\\n\\t\\tvec3 r123 = sqrt( R123 );\\n\\t\\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\\n\\t\\tvec3 C0 = R12 + Rs;\\n\\t\\tI = C0;\\n\\t\\tvec3 Cm = Rs - T121;\\n\\t\\tfor ( int m = 1; m <= 2; ++ m ) {\\n\\t\\t\\tCm *= r123;\\n\\t\\t\\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\\n\\t\\t\\tI += Cm * Sm;\\n\\t\\t}\\n\\t\\treturn max( I, vec3( 0.0 ) );\\n\\t}\\n#endif\";\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( vBumpMapUv );\\n\\t\\tvec2 dSTdy = dFdy( vBumpMapUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\\n\\t\\tvec3 vSigmaX = dFdx( surf_pos.xyz );\\n\\t\\tvec3 vSigmaY = dFdy( surf_pos.xyz );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\\tvColor *= color;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\\tvColor.xyz *= instanceColor.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nvec3 pow2( const in vec3 x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract( sin( sn ) * c );\\n}\\n#ifdef HIGH_PRECISION\\n\\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\\tfloat precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\\tvec3 position;\\n\\tvec3 normal;\\n\\tvec3 viewDir;\\n#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal;\\n#endif\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat luminance( const in vec3 rgb ) {\\n\\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\\n\\treturn dot( weights, rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n} // validated\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t#define cubeUV_minMipLevel 4.0\\n\\t#define cubeUV_minTileSize 16.0\\n\\tfloat getFace( vec3 direction ) {\\n\\t\\tvec3 absDirection = abs( direction );\\n\\t\\tfloat face = - 1.0;\\n\\t\\tif ( absDirection.x > absDirection.z ) {\\n\\t\\t\\tif ( absDirection.x > absDirection.y )\\n\\t\\t\\t\\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t} else {\\n\\t\\t\\tif ( absDirection.z > absDirection.y )\\n\\t\\t\\t\\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t}\\n\\t\\treturn face;\\n\\t}\\n\\tvec2 getUV( vec3 direction, float face ) {\\n\\t\\tvec2 uv;\\n\\t\\tif ( face == 0.0 ) {\\n\\t\\t\\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 1.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\\t\\t} else if ( face == 2.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\\t\\t} else if ( face == 3.0 ) {\\n\\t\\t\\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 4.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\\t\\t} else {\\n\\t\\t\\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\\t\\t}\\n\\t\\treturn 0.5 * ( uv + 1.0 );\\n\\t}\\n\\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\\t\\tfloat face = getFace( direction );\\n\\t\\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\\t\\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\\t\\tfloat faceSize = exp2( mipInt );\\n\\t\\thighp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\\n\\t\\tif ( face > 2.0 ) {\\n\\t\\t\\tuv.y += faceSize;\\n\\t\\t\\tface -= 3.0;\\n\\t\\t}\\n\\t\\tuv.x += face * faceSize;\\n\\t\\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\\n\\t\\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\\n\\t\\tuv.x *= CUBEUV_TEXEL_WIDTH;\\n\\t\\tuv.y *= CUBEUV_TEXEL_HEIGHT;\\n\\t\\t#ifdef texture2DGradEXT\\n\\t\\t\\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( envMap, uv ).rgb;\\n\\t\\t#endif\\n\\t}\\n\\t#define cubeUV_r0 1.0\\n\\t#define cubeUV_v0 0.339\\n\\t#define cubeUV_m0 - 2.0\\n\\t#define cubeUV_r1 0.8\\n\\t#define cubeUV_v1 0.276\\n\\t#define cubeUV_m1 - 1.0\\n\\t#define cubeUV_r4 0.4\\n\\t#define cubeUV_v4 0.046\\n\\t#define cubeUV_m4 2.0\\n\\t#define cubeUV_r5 0.305\\n\\t#define cubeUV_v5 0.016\\n\\t#define cubeUV_m5 3.0\\n\\t#define cubeUV_r6 0.21\\n\\t#define cubeUV_v6 0.0038\\n\\t#define cubeUV_m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= cubeUV_r1 ) {\\n\\t\\t\\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\\n\\t\\t} else if ( roughness >= cubeUV_r4 ) {\\n\\t\\t\\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\\n\\t\\t} else if ( roughness >= cubeUV_r5 ) {\\n\\t\\t\\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\\n\\t\\t} else if ( roughness >= cubeUV_r6 ) {\\n\\t\\t\\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\\n\\t\\t} else {\\n\\t\\t\\tmip = - 2.0 * log2( 1.16 * roughness );\\t\\t}\\n\\t\\treturn mip;\\n\\t}\\n\\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\\t\\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\\n\\t\\tfloat mipF = fract( mip );\\n\\t\\tfloat mipInt = floor( mip );\\n\\t\\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\\t\\tif ( mipF == 0.0 ) {\\n\\t\\t\\treturn vec4( color0, 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\\t\\t\\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\\t\\t}\\n\\t}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\\tmat3 m = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\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, vDisplacementMapUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\\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 = \"vec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\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}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\n\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\t\\n#endif\";\n\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float reflectivity;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\n\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\t\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\";\n\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tvFogDepth = - mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float vFogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float vFogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn vec3( texture2D( gradientMap, coord ).r );\\n\\t#else\\n\\t\\tvec2 fw = fwidth( coord ) * 0.5;\\n\\t\\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\\n\\t#endif\\n}\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\treflectedLight.indirectDiffuse += lightMapIrradiance;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_fragment = \"LambertMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_lambert_pars_fragment = \"varying vec3 vViewPosition;\\nstruct LambertMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Lambert\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Lambert\";\n\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\nuniform vec3 lightProbe[ 9 ];\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\\n\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\\t#if defined ( LEGACY_LIGHTS )\\n\\t\\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\t\\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t\\t}\\n\\t\\treturn 1.0;\\n\\t#else\\n\\t\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\t\\tif ( cutoffDistance > 0.0 ) {\\n\\t\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t\\t}\\n\\t\\treturn distanceFalloff;\\n\\t#endif\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tlight.color = directionalLight.color;\\n\\t\\tlight.direction = directionalLight.direction;\\n\\t\\tlight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tlight.color = pointLight.color;\\n\\t\\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\\t\\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\tif ( spotAttenuation > 0.0 ) {\\n\\t\\t\\tfloat lightDistance = length( lVector );\\n\\t\\t\\tlight.color = spotLight.color * spotAttenuation;\\n\\t\\t\\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t\\t} else {\\n\\t\\t\\tlight.color = vec3( 0.0 );\\n\\t\\t\\tlight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\\n\\t\\tfloat dotNL = dot( normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\tvec3 reflectVec = reflect( - viewDir, normal );\\n\\t\\t\\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tvec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\\n\\t\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\t\\tvec3 bentNormal = cross( bitangent, viewDir );\\n\\t\\t\\t\\tbentNormal = normalize( cross( bentNormal, bitangent ) );\\n\\t\\t\\t\\tbentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\\n\\t\\t\\t\\treturn getIBLRadiance( viewDir, bentNormal, roughness );\\n\\t\\t\\t#else\\n\\t\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t\\t#endif\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\";\n\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;\\nstruct BlinnPhongMaterial {\\n\\tvec3 diffuseColor;\\n\\tvec3 specularColor;\\n\\tfloat specularShininess;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, 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_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\\tmaterial.ior = ior;\\n\\t#ifdef USE_SPECULAR\\n\\t\\tfloat specularIntensityFactor = specularIntensity;\\n\\t\\tvec3 specularColorFactor = specularColor;\\n\\t\\t#ifdef USE_SPECULAR_COLORMAP\\n\\t\\t\\tspecularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\\n\\t\\t#endif\\n\\t\\t#ifdef USE_SPECULAR_INTENSITYMAP\\n\\t\\t\\tspecularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\\n\\t\\t#endif\\n\\t\\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\\t#else\\n\\t\\tfloat specularIntensityFactor = 1.0;\\n\\t\\tvec3 specularColorFactor = vec3( 1.0 );\\n\\t\\tmaterial.specularF90 = 1.0;\\n\\t#endif\\n\\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\\tmaterial.clearcoatF90 = 1.0;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tmaterial.iridescence = iridescence;\\n\\tmaterial.iridescenceIOR = iridescenceIOR;\\n\\t#ifdef USE_IRIDESCENCEMAP\\n\\t\\tmaterial.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\t\\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\\n\\t#else\\n\\t\\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\\n\\t#endif\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheenColor;\\n\\t#ifdef USE_SHEEN_COLORMAP\\n\\t\\tmaterial.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\\n\\t#endif\\n\\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\\t#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\t\\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\\n\\t#endif\\n#endif\\n#ifdef USE_ANISOTROPY\\n\\t#ifdef USE_ANISOTROPYMAP\\n\\t\\tmat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\\n\\t\\tvec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\\n\\t\\tvec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\\n\\t#else\\n\\t\\tvec2 anisotropyV = anisotropyVector;\\n\\t#endif\\n\\tmaterial.anisotropy = length( anisotropyV );\\n\\tanisotropyV /= material.anisotropy;\\n\\tmaterial.anisotropy = saturate( material.anisotropy );\\n\\tmaterial.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\\n\\tmaterial.anisotropyT = tbn[ 0 ] * anisotropyV.x - tbn[ 1 ] * anisotropyV.y;\\n\\tmaterial.anisotropyB = tbn[ 1 ] * anisotropyV.x + tbn[ 0 ] * anisotropyV.y;\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat roughness;\\n\\tvec3 specularColor;\\n\\tfloat specularF90;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat clearcoat;\\n\\t\\tfloat clearcoatRoughness;\\n\\t\\tvec3 clearcoatF0;\\n\\t\\tfloat clearcoatF90;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tfloat iridescence;\\n\\t\\tfloat iridescenceIOR;\\n\\t\\tfloat iridescenceThickness;\\n\\t\\tvec3 iridescenceFresnel;\\n\\t\\tvec3 iridescenceF0;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tvec3 sheenColor;\\n\\t\\tfloat sheenRoughness;\\n\\t#endif\\n\\t#ifdef IOR\\n\\t\\tfloat ior;\\n\\t#endif\\n\\t#ifdef USE_TRANSMISSION\\n\\t\\tfloat transmission;\\n\\t\\tfloat transmissionAlpha;\\n\\t\\tfloat thickness;\\n\\t\\tfloat attenuationDistance;\\n\\t\\tvec3 attenuationColor;\\n\\t#endif\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tfloat anisotropy;\\n\\t\\tfloat alphaT;\\n\\t\\tvec3 anisotropyT;\\n\\t\\tvec3 anisotropyB;\\n\\t#endif\\n};\\nvec3 clearcoatSpecular = vec3( 0.0 );\\nvec3 sheenSpecular = vec3( 0.0 );\\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\\n float x2 = x * x;\\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\\n}\\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\n#ifdef USE_ANISOTROPY\\n\\tfloat V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\\n\\t\\tfloat gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\\n\\t\\tfloat gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\\n\\t\\tfloat v = 0.5 / ( gv + gl );\\n\\t\\treturn saturate(v);\\n\\t}\\n\\tfloat D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\\n\\t\\tfloat a2 = alphaT * alphaB;\\n\\t\\thighp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\\n\\t\\thighp float v2 = dot( v, v );\\n\\t\\tfloat w2 = a2 / v2;\\n\\t\\treturn RECIPROCAL_PI * a2 * pow2 ( w2 );\\n\\t}\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tvec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\\n\\t\\tvec3 f0 = material.clearcoatF0;\\n\\t\\tfloat f90 = material.clearcoatF90;\\n\\t\\tfloat roughness = material.clearcoatRoughness;\\n\\t\\tfloat alpha = pow2( roughness );\\n\\t\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\t\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\t\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\t\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\t\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\t\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\t\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\t\\tfloat D = D_GGX( alpha, dotNH );\\n\\t\\treturn F * ( V * D );\\n\\t}\\n#endif\\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\\n\\tvec3 f0 = material.specularColor;\\n\\tfloat f90 = material.specularF90;\\n\\tfloat roughness = material.roughness;\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tF = mix( F, material.iridescenceFresnel, material.iridescence );\\n\\t#endif\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tfloat dotTL = dot( material.anisotropyT, lightDir );\\n\\t\\tfloat dotTV = dot( material.anisotropyT, viewDir );\\n\\t\\tfloat dotTH = dot( material.anisotropyT, halfDir );\\n\\t\\tfloat dotBL = dot( material.anisotropyB, lightDir );\\n\\t\\tfloat dotBV = dot( material.anisotropyB, viewDir );\\n\\t\\tfloat dotBH = dot( material.anisotropyB, halfDir );\\n\\t\\tfloat V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\\n\\t\\tfloat D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\\n\\t#else\\n\\t\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\t\\tfloat D = D_GGX( alpha, dotNH );\\n\\t#endif\\n\\treturn F * ( V * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float dotNH ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tfloat invAlpha = 1.0 / alpha;\\n\\tfloat cos2h = dotNH * dotNH;\\n\\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float dotNV, float dotNL ) {\\n\\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\\n}\\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat D = D_Charlie( sheenRoughness, dotNH );\\n\\tfloat V = V_Neubelt( dotNV, dotNL );\\n\\treturn sheenColor * ( D * V );\\n}\\n#endif\\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat r2 = roughness * roughness;\\n\\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\\n\\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\\n\\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\\n\\treturn saturate( DG * RECIPROCAL_PI );\\n}\\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\\n\\treturn fab;\\n}\\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\treturn specularColor * fab.x + specularF90 * fab.y;\\n}\\n#ifdef USE_IRIDESCENCE\\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#else\\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#endif\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\\n\\t#else\\n\\t\\tvec3 Fr = specularColor;\\n\\t#endif\\n\\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\\n\\tfloat Ess = fab.x + fab.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.roughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\\t\\tclearcoatSpecular += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\\n\\t#endif\\n\\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material );\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );\\n\\t#endif\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tcomputeMultiscatteringIridescence( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\\n\\t#else\\n\\t\\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\\t#endif\\n\\tvec3 totalScattering = singleScattering + multiScattering;\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\\n\\treflectedLight.indirectSpecular += radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\n#ifdef USE_CLEARCOAT\\n\\tgeometry.clearcoatNormal = clearcoatNormal;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tfloat dotNVi = saturate( dot( normal, geometry.viewDir ) );\\n\\tif ( material.iridescenceThickness == 0.0 ) {\\n\\t\\tmaterial.iridescence = 0.0;\\n\\t} else {\\n\\t\\tmaterial.iridescence = saturate( material.iridescence );\\n\\t}\\n\\tif ( material.iridescence > 0.0 ) {\\n\\t\\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\\n\\t\\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\\n\\t}\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointLightInfo( pointLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\tvec4 spotColor;\\n\\tvec3 spotLightCoord;\\n\\tbool inSpotLightMap;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotLightInfo( spotLight, geometry, directLight );\\n\\t\\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\\n\\t\\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\\n\\t\\t#else\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\\t\\t#endif\\n\\t\\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\\n\\t\\t\\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\\n\\t\\t\\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\\n\\t\\t\\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\\n\\t\\t\\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\\n\\t\\t#endif\\n\\t\\t#undef SPOT_LIGHT_MAP_INDEX\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getIBLIrradiance( geometry.normal );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tradiance += getIBLAnisotropyRadiance( geometry.viewDir, geometry.normal, material.roughness, material.anisotropyB, material.anisotropy );\\n\\t#else\\n\\t\\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\\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, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t\\tvarying float vIsPerspective;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\\t#else\\n\\t\\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\\t\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\t\\tgl_Position.z *= gl_Position.w;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tdiffuseColor *= texture2D( map, vMapUv );\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\t#if defined( USE_POINTS_UV )\\n\\t\\tvec2 uv = vUv;\\n\\t#else\\n\\t\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n\\t#endif\\n#endif\\n#ifdef USE_MAP\\n\\tdiffuseColor *= texture2D( map, uv );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\n\nvar map_particle_pars_fragment = \"#if defined( USE_POINTS_UV )\\n\\tvarying vec2 vUv;\\n#else\\n\\t#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\t\\tuniform mat3 uvTransform;\\n\\t#endif\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphcolor_vertex = \"#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\\n\\tvColor *= morphTargetBaseInfluence;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t#if defined( USE_COLOR_ALPHA )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\\n\\t\\t#elif defined( USE_COLOR )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\t\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\t\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\t\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\\t\\tuniform sampler2DArray morphTargetsTexture;\\n\\t\\tuniform ivec2 morphTargetsTextureSize;\\n\\t\\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\\n\\t\\t\\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\\n\\t\\t\\tint y = texelIndex / morphTargetsTextureSize.x;\\n\\t\\t\\tint x = texelIndex - y * morphTargetsTextureSize.x;\\n\\t\\t\\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\\n\\t\\t\\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\\n\\t\\t}\\n\\t#else\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\tuniform float morphTargetInfluences[ 8 ];\\n\\t\\t#else\\n\\t\\t\\tuniform float morphTargetInfluences[ 4 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\t\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\t\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\t\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\t\\t\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\t\\t\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\t\\t\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#ifdef FLAT_SHADED\\n\\tvec3 fdx = dFdx( vViewPosition );\\n\\tvec3 fdy = dFdy( vViewPosition );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal *= faceDirection;\\n\\t#endif\\n#endif\\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\\n\\t#ifdef USE_TANGENT\\n\\t\\tmat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\\n\\t#else\\n\\t\\tmat3 tbn = getTangentFrame( - vViewPosition, normal, vNormalMapUv );\\n\\t#endif\\n\\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\\n\\t\\ttbn[0] *= faceDirection;\\n\\t\\ttbn[1] *= faceDirection;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\t#ifdef USE_TANGENT\\n\\t\\tmat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\\n\\t#else\\n\\t\\tmat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\\n\\t#endif\\n\\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\\n\\t\\ttbn2[0] *= faceDirection;\\n\\t\\ttbn2[1] *= faceDirection;\\n\\t#endif\\n#endif\\nvec3 geometryNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef USE_NORMALMAP_OBJECTSPACE\\n\\tnormal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\tnormal = normalize( tbn * mapN );\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\n\nvar normal_pars_fragment = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_pars_vertex = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_vertex = \"#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef USE_NORMALMAP_OBJECTSPACE\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\\n\\tmat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\\n\\t\\tvec3 q0 = dFdx( eye_pos.xyz );\\n\\t\\tvec3 q1 = dFdy( eye_pos.xyz );\\n\\t\\tvec2 st0 = dFdx( uv.st );\\n\\t\\tvec2 st1 = dFdy( uv.st );\\n\\t\\tvec3 N = surf_norm;\\n\\t\\tvec3 q1perp = cross( q1, N );\\n\\t\\tvec3 q0perp = cross( N, q0 );\\n\\t\\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\\t\\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\\t\\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\\t\\tfloat scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\\n\\t\\treturn mat3( T * scale, B * scale, N );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\tclearcoatNormal = normalize( tbn2 * clearcoatMapN );\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\";\n\nvar iridescence_pars_fragment = \"#ifdef USE_IRIDESCENCEMAP\\n\\tuniform sampler2D iridescenceMap;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform sampler2D iridescenceThicknessMap;\\n#endif\";\n\nvar output_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= material.transmissionAlpha;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\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}\\nvec2 packDepthToRG( in highp float v ) {\\n\\treturn packDepthToRGBA( v ).yx;\\n}\\nfloat unpackRGToDepth( const in highp vec2 v ) {\\n\\treturn unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {\\n\\treturn depth * ( 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 depth, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * depth - 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 = vec4( transformed, 1.0 );\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );\\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 = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n\\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#if NUM_SPOT_LIGHT_MAPS > 0\\n\\tuniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\\t\\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\\t}\\n\\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\\t\\tfloat occlusion = 1.0;\\n\\t\\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\\t\\tfloat hard_shadow = step( compare , distribution.x );\\n\\t\\tif (hard_shadow != 1.0 ) {\\n\\t\\t\\tfloat distance = compare - distribution.x ;\\n\\t\\t\\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\\t\\t\\tfloat softness_probability = variance / (variance + distance * distance );\\t\\t\\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\\t\\t\\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\\t\\t}\\n\\t\\treturn occlusion;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\\n\\t\\tbool frustumTest = inFrustum && shadowCoord.z <= 1.0;\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t f.y )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar shadowmap_pars_vertex = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n\\tuniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\\n\\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\\n\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\tvec4 shadowWorldPosition;\\n#endif\\n#if defined( USE_SHADOWMAP )\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if NUM_SPOT_LIGHT_COORDS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition;\\n\\t\\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\t\\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\\n\\t\\t#endif\\n\\t\\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\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\\tuniform highp sampler2D boneTexture;\\n\\tuniform int boneTextureSize;\\n\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\tfloat j = i * 4.0;\\n\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\ty = dy * ( y + 0.5 );\\n\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\treturn bone;\\n\\t}\\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, vSpecularMapUv );\\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#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn saturate( toneMappingExposure * color );\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3( 1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108, 1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605, 1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\nvar transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\\tmaterial.transmission = transmission;\\n\\tmaterial.transmissionAlpha = 1.0;\\n\\tmaterial.thickness = thickness;\\n\\tmaterial.attenuationDistance = attenuationDistance;\\n\\tmaterial.attenuationColor = attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tmaterial.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tmaterial.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\\n\\t#endif\\n\\tvec3 pos = vWorldPosition;\\n\\tvec3 v = normalize( cameraPosition - pos );\\n\\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\\tvec4 transmitted = getIBLVolumeRefraction(\\n\\t\\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\\n\\t\\tpos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,\\n\\t\\tmaterial.attenuationColor, material.attenuationDistance );\\n\\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\\n\\ttotalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\\n#endif\";\n\nvar transmission_pars_fragment = \"#ifdef USE_TRANSMISSION\\n\\tuniform float transmission;\\n\\tuniform float thickness;\\n\\tuniform float attenuationDistance;\\n\\tuniform vec3 attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tuniform sampler2D transmissionMap;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tuniform sampler2D thicknessMap;\\n\\t#endif\\n\\tuniform vec2 transmissionSamplerSize;\\n\\tuniform sampler2D transmissionSamplerMap;\\n\\tuniform mat4 modelMatrix;\\n\\tuniform mat4 projectionMatrix;\\n\\tvarying vec3 vWorldPosition;\\n\\tfloat w0( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\\n\\t}\\n\\tfloat w1( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\\n\\t}\\n\\tfloat w2( float a ){\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\\n\\t}\\n\\tfloat w3( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * a * a );\\n\\t}\\n\\tfloat g0( float a ) {\\n\\t\\treturn w0( a ) + w1( a );\\n\\t}\\n\\tfloat g1( float a ) {\\n\\t\\treturn w2( a ) + w3( a );\\n\\t}\\n\\tfloat h0( float a ) {\\n\\t\\treturn - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\\n\\t}\\n\\tfloat h1( float a ) {\\n\\t\\treturn 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\\n\\t}\\n\\tvec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\\n\\t\\tuv = uv * texelSize.zw + 0.5;\\n\\t\\tvec2 iuv = floor( uv );\\n\\t\\tvec2 fuv = fract( uv );\\n\\t\\tfloat g0x = g0( fuv.x );\\n\\t\\tfloat g1x = g1( fuv.x );\\n\\t\\tfloat h0x = h0( fuv.x );\\n\\t\\tfloat h1x = h1( fuv.x );\\n\\t\\tfloat h0y = h0( fuv.y );\\n\\t\\tfloat h1y = h1( fuv.y );\\n\\t\\tvec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\\n\\t\\treturn g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\\n\\t\\t\\tg1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\\n\\t}\\n\\tvec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\\n\\t\\tvec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\\n\\t\\tvec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\\n\\t\\tvec2 fLodSizeInv = 1.0 / fLodSize;\\n\\t\\tvec2 cLodSizeInv = 1.0 / cLodSize;\\n\\t\\tvec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\\n\\t\\tvec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\\n\\t\\treturn mix( fSample, cSample, fract( lod ) );\\n\\t}\\n\\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\\n\\t\\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\\n\\t\\tvec3 modelScale;\\n\\t\\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\\n\\t\\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\\n\\t\\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\\n\\t\\treturn normalize( refractionVector ) * thickness * modelScale;\\n\\t}\\n\\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\\n\\t\\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\\t}\\n\\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\\n\\t\\tfloat lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\\t\\treturn textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\\n\\t}\\n\\tvec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tif ( isinf( attenuationDistance ) ) {\\n\\t\\t\\treturn vec3( 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\\t\\t\\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\\t\\t\\treturn transmittance;\\n\\t\\t}\\n\\t}\\n\\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\\n\\t\\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\\n\\t\\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\\n\\t\\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\trefractionCoords += 1.0;\\n\\t\\trefractionCoords /= 2.0;\\n\\t\\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\\t\\tvec3 transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\\n\\t\\tvec3 attenuatedColor = transmittance * transmittedLight.rgb;\\n\\t\\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\\t\\tfloat transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\\n\\t\\treturn vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\\n\\t}\\n#endif\";\n\nvar uv_pars_fragment = \"#ifdef USE_UV\\n\\tvarying vec2 vUv;\\n#endif\\n#ifdef USE_MAP\\n\\tvarying vec2 vMapUv;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tvarying vec2 vAlphaMapUv;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tvarying vec2 vLightMapUv;\\n#endif\\n#ifdef USE_AOMAP\\n\\tvarying vec2 vAoMapUv;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tvarying vec2 vBumpMapUv;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tvarying vec2 vNormalMapUv;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tvarying vec2 vEmissiveMapUv;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tvarying vec2 vMetalnessMapUv;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tvarying vec2 vRoughnessMapUv;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tvarying vec2 vAnisotropyMapUv;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tvarying vec2 vClearcoatMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvarying vec2 vClearcoatNormalMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tvarying vec2 vClearcoatRoughnessMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tvarying vec2 vIridescenceMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tvarying vec2 vIridescenceThicknessMapUv;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tvarying vec2 vSheenColorMapUv;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tvarying vec2 vSheenRoughnessMapUv;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tvarying vec2 vSpecularMapUv;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tvarying vec2 vSpecularColorMapUv;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tvarying vec2 vSpecularIntensityMapUv;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tuniform mat3 transmissionMapTransform;\\n\\tvarying vec2 vTransmissionMapUv;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tuniform mat3 thicknessMapTransform;\\n\\tvarying vec2 vThicknessMapUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#ifdef USE_UV\\n\\tvarying vec2 vUv;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform mat3 mapTransform;\\n\\tvarying vec2 vMapUv;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform mat3 alphaMapTransform;\\n\\tvarying vec2 vAlphaMapUv;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tuniform mat3 lightMapTransform;\\n\\tvarying vec2 vLightMapUv;\\n#endif\\n#ifdef USE_AOMAP\\n\\tuniform mat3 aoMapTransform;\\n\\tvarying vec2 vAoMapUv;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tuniform mat3 bumpMapTransform;\\n\\tvarying vec2 vBumpMapUv;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tuniform mat3 normalMapTransform;\\n\\tvarying vec2 vNormalMapUv;\\n#endif\\n#ifdef USE_DISPLACEMENTMAP\\n\\tuniform mat3 displacementMapTransform;\\n\\tvarying vec2 vDisplacementMapUv;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tuniform mat3 emissiveMapTransform;\\n\\tvarying vec2 vEmissiveMapUv;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tuniform mat3 metalnessMapTransform;\\n\\tvarying vec2 vMetalnessMapUv;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tuniform mat3 roughnessMapTransform;\\n\\tvarying vec2 vRoughnessMapUv;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tuniform mat3 anisotropyMapTransform;\\n\\tvarying vec2 vAnisotropyMapUv;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tuniform mat3 clearcoatMapTransform;\\n\\tvarying vec2 vClearcoatMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform mat3 clearcoatNormalMapTransform;\\n\\tvarying vec2 vClearcoatNormalMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform mat3 clearcoatRoughnessMapTransform;\\n\\tvarying vec2 vClearcoatRoughnessMapUv;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tuniform mat3 sheenColorMapTransform;\\n\\tvarying vec2 vSheenColorMapUv;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tuniform mat3 sheenRoughnessMapTransform;\\n\\tvarying vec2 vSheenRoughnessMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tuniform mat3 iridescenceMapTransform;\\n\\tvarying vec2 vIridescenceMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform mat3 iridescenceThicknessMapTransform;\\n\\tvarying vec2 vIridescenceThicknessMapUv;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tuniform mat3 specularMapTransform;\\n\\tvarying vec2 vSpecularMapUv;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tuniform mat3 specularColorMapTransform;\\n\\tvarying vec2 vSpecularColorMapUv;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tuniform mat3 specularIntensityMapTransform;\\n\\tvarying vec2 vSpecularIntensityMapUv;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tuniform mat3 transmissionMapTransform;\\n\\tvarying vec2 vTransmissionMapUv;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tuniform mat3 thicknessMapTransform;\\n\\tvarying vec2 vThicknessMapUv;\\n#endif\";\n\nvar uv_vertex = \"#ifdef USE_UV\\n\\tvUv = vec3( uv, 1 ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tvMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tvAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tvLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_AOMAP\\n\\tvAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tvBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tvNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_DISPLACEMENTMAP\\n\\tvDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tvEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tvMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tvRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tvAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tvClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tvClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tvIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tvIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tvSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tvSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tvSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tvSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tvSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tvTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tvThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\nconst vertex$h = \"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\nconst fragment$h = \"uniform sampler2D t2D;\\nuniform float backgroundIntensity;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tvec4 texColor = texture2D( t2D, vUv );\\n\\ttexColor.rgb *= backgroundIntensity;\\n\\tgl_FragColor = texColor;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$g = \"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\nconst fragment$g = \"#ifdef ENVMAP_TYPE_CUBE\\n\\tuniform samplerCube envMap;\\n#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\tuniform sampler2D envMap;\\n#endif\\nuniform float flipEnvMap;\\nuniform float backgroundBlurriness;\\nuniform float backgroundIntensity;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness );\\n\\t#else\\n\\t\\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\t#endif\\n\\ttexColor.rgb *= backgroundIntensity;\\n\\tgl_FragColor = texColor;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$f = \"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\nconst fragment$f = \"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 = texColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$e = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvHighPrecisionZW = gl_Position.zw;\\n}\";\n\nconst fragment$e = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\\t#endif\\n}\";\n\nconst vertex$d = \"#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\nconst fragment$d = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main () {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nconst vertex$c = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$c = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tgl_FragColor = texture2D( tEquirect, sampleUV );\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$b = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$b = \"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 \\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\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$a = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$a = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$9 = \"#define LAMBERT\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$9 = \"#define LAMBERT\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\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 + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$8 = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nconst fragment$8 = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$7 = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$7 = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n\\t#ifdef OPAQUE\\n\\t\\tgl_FragColor.a = 1.0;\\n\\t#endif\\n}\";\n\nconst vertex$6 = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$6 = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$5 = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\\tvarying vec3 vWorldPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n#ifdef USE_TRANSMISSION\\n\\tvWorldPosition = worldPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$5 = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define IOR\\n\\t#define USE_SPECULAR\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef IOR\\n\\tuniform float ior;\\n#endif\\n#ifdef USE_SPECULAR\\n\\tuniform float specularIntensity;\\n\\tuniform vec3 specularColor;\\n\\t#ifdef USE_SPECULAR_COLORMAP\\n\\t\\tuniform sampler2D specularColorMap;\\n\\t#endif\\n\\t#ifdef USE_SPECULAR_INTENSITYMAP\\n\\t\\tuniform sampler2D specularIntensityMap;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tuniform float iridescence;\\n\\tuniform float iridescenceIOR;\\n\\tuniform float iridescenceThicknessMinimum;\\n\\tuniform float iridescenceThicknessMaximum;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheenColor;\\n\\tuniform float sheenRoughness;\\n\\t#ifdef USE_SHEEN_COLORMAP\\n\\t\\tuniform sampler2D sheenColorMap;\\n\\t#endif\\n\\t#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\t\\tuniform sampler2D sheenRoughnessMap;\\n\\t#endif\\n#endif\\n#ifdef USE_ANISOTROPY\\n\\tuniform vec2 anisotropyVector;\\n\\t#ifdef USE_ANISOTROPYMAP\\n\\t\\tuniform sampler2D anisotropyMap;\\n\\t#endif\\n#endif\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\\n\\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n\\t#include \\n\\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\\n\\t#ifdef USE_SHEEN\\n\\t\\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\\n\\t\\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\\n\\t\\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\\t\\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$4 = \"#define TOON\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$4 = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$3 = \"uniform float size;\\nuniform float scale;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#ifdef USE_POINTS_UV\\n\\tvarying vec2 vUv;\\n\\tuniform mat3 uvTransform;\\n#endif\\nvoid main() {\\n\\t#ifdef USE_POINTS_UV\\n\\t\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$3 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$2 = \"#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}\";\n\nconst fragment$2 = \"uniform vec3 color;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$1 = \"uniform float rotation;\\nuniform vec2 center;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$1 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\talphatest_pars_fragment: alphatest_pars_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\tiridescence_fragment: iridescence_fragment,\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_common_pars_fragment: envmap_common_pars_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_fragment: lights_lambert_fragment,\n\tlights_lambert_pars_fragment: lights_lambert_pars_fragment,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\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\tmorphcolor_vertex: morphcolor_vertex,\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\tnormal_pars_fragment: normal_pars_fragment,\n\tnormal_pars_vertex: normal_pars_vertex,\n\tnormal_vertex: normal_vertex,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\tiridescence_pars_fragment: iridescence_pars_fragment,\n\toutput_fragment: output_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\ttransmission_fragment: transmission_fragment,\n\ttransmission_pars_fragment: transmission_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_vert: vertex$h,\n\tbackground_frag: fragment$h,\n\tbackgroundCube_vert: vertex$g,\n\tbackgroundCube_frag: fragment$g,\n\tcube_vert: vertex$f,\n\tcube_frag: fragment$f,\n\tdepth_vert: vertex$e,\n\tdepth_frag: fragment$e,\n\tdistanceRGBA_vert: vertex$d,\n\tdistanceRGBA_frag: fragment$d,\n\tequirect_vert: vertex$c,\n\tequirect_frag: fragment$c,\n\tlinedashed_vert: vertex$b,\n\tlinedashed_frag: fragment$b,\n\tmeshbasic_vert: vertex$a,\n\tmeshbasic_frag: fragment$a,\n\tmeshlambert_vert: vertex$9,\n\tmeshlambert_frag: fragment$9,\n\tmeshmatcap_vert: vertex$8,\n\tmeshmatcap_frag: fragment$8,\n\tmeshnormal_vert: vertex$7,\n\tmeshnormal_frag: fragment$7,\n\tmeshphong_vert: vertex$6,\n\tmeshphong_frag: fragment$6,\n\tmeshphysical_vert: vertex$5,\n\tmeshphysical_frag: fragment$5,\n\tmeshtoon_vert: vertex$4,\n\tmeshtoon_frag: fragment$4,\n\tpoints_vert: vertex$3,\n\tpoints_frag: fragment$3,\n\tshadow_vert: vertex$2,\n\tshadow_frag: fragment$2,\n\tsprite_vert: vertex$1,\n\tsprite_frag: fragment$1\n};\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tmapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\n\t\talphaTest: { value: 0 }\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\t\tspecularMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 }, // basic, lambert, phong\n\t\tior: { value: 1.5 }, // physical\n\t\trefractionRatio: { value: 0.98 }, // basic, lambert, phong\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 },\n\t\taoMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 },\n\t\tlightMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tnormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null },\n\t\temissiveMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null },\n\t\tmetalnessMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null },\n\t\troughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() }\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: /*@__PURE__*/ 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\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\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\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotLightMap: { value: [] },\n\t\tspotShadowMap: { value: [] },\n\t\tspotLightMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\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\tltc_1: { value: null },\n\t\tltc_2: { value: null }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\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\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaTest: { value: 0 },\n\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: /*@__PURE__*/ new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\tmapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaTest: { value: 0 }\n\n\t}\n\n};\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: /*@__PURE__*/ 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: /*@__PURE__*/ 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.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ 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: /*@__PURE__*/ 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.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: /*@__PURE__*/ 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: /*@__PURE__*/ 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: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\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\ttoon: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\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: /*@__PURE__*/ new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: /*@__PURE__*/ 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: /*@__PURE__*/ 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: /*@__PURE__*/ 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: /*@__PURE__*/ 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: /*@__PURE__*/ 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.meshnormal_vert,\n\t\tfragmentShader: ShaderChunk.meshnormal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: /*@__PURE__*/ 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: /*@__PURE__*/ new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t\tbackgroundIntensity: { value: 1 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\n\tbackgroundCube: {\n\n\t\tuniforms: {\n\t\t\tenvMap: { value: null },\n\t\t\tflipEnvMap: { value: - 1 },\n\t\t\tbackgroundBlurriness: { value: 0 },\n\t\t\tbackgroundIntensity: { value: 1 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.backgroundCube_vert,\n\t\tfragmentShader: ShaderChunk.backgroundCube_frag\n\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: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: /*@__PURE__*/ 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: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: /*@__PURE__*/ 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: /*@__PURE__*/ mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tclearcoatNormalMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tclearcoatNormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tiridescence: { value: 0 },\n\t\t\tiridescenceMap: { value: null },\n\t\t\tiridescenceMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tiridescenceIOR: { value: 1.3 },\n\t\t\tiridescenceThicknessMinimum: { value: 100 },\n\t\t\tiridescenceThicknessMaximum: { value: 400 },\n\t\t\tiridescenceThicknessMap: { value: null },\n\t\t\tiridescenceThicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tsheen: { value: 0 },\n\t\t\tsheenColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\tsheenColorMap: { value: null },\n\t\t\tsheenColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tsheenRoughness: { value: 1 },\n\t\t\tsheenRoughnessMap: { value: null },\n\t\t\tsheenRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t\ttransmissionMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\ttransmissionSamplerSize: { value: /*@__PURE__*/ new Vector2() },\n\t\t\ttransmissionSamplerMap: { value: null },\n\t\t\tthickness: { value: 0 },\n\t\t\tthicknessMap: { value: null },\n\t\t\tthicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tattenuationDistance: { value: 0 },\n\t\t\tattenuationColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\tspecularColor: { value: /*@__PURE__*/ new Color( 1, 1, 1 ) },\n\t\t\tspecularColorMap: { value: null },\n\t\t\tspecularColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tspecularIntensity: { value: 1 },\n\t\t\tspecularIntensityMap: { value: null },\n\t\t\tspecularIntensityMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tanisotropyVector: { value: /*@__PURE__*/ new Vector2() },\n\t\t\tanisotropyMap: { value: null },\n\t\t\tanisotropyMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nconst _rgb = { r: 0, b: 0, g: 0 };\n\nfunction WebGLBackground( renderer, cubemaps, cubeuvmaps, state, objects, alpha, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = alpha === true ? 0 : 1;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction render( renderList, scene ) {\n\n\t\tlet forceClear = false;\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\tif ( background && background.isTexture ) {\n\n\t\t\tconst usePMREM = scene.backgroundBlurriness > 0; // use PMREM if the user wants to blur the background\n\t\t\tbackground = ( usePMREM ? cubeuvmaps : cubemaps ).get( background );\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tconst xr = renderer.xr;\n\t\tconst environmentBlendMode = xr.getEnvironmentBlendMode();\n\n\t\tswitch ( environmentBlendMode ) {\n\n\t\t\tcase 'opaque':\n\t\t\t\tforceClear = true;\n\t\t\t\tbreak;\n\n\t\t\tcase 'additive':\n\t\t\t\tstate.buffers.color.setClear( 0, 0, 0, 1, premultipliedAlpha );\n\t\t\t\tforceClear = true;\n\t\t\t\tbreak;\n\n\t\t\tcase 'alpha-blend':\n\t\t\t\tstate.buffers.color.setClear( 0, 0, 0, 0, premultipliedAlpha );\n\t\t\t\tforceClear = true;\n\t\t\t\tbreak;\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.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.backgroundCube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.backgroundCube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.backgroundCube.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.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( '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// add \"envMap\" material property so the renderer can evaluate it like for built-in materials\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.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\tboxMesh.material.uniforms.envMap.value = background;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background.isRenderTargetTexture === false ) ? - 1 : 1;\n\t\t\tboxMesh.material.uniforms.backgroundBlurriness.value = scene.backgroundBlurriness;\n\t\t\tboxMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;\n\t\t\tboxMesh.material.toneMapped = ( background.colorSpace === SRGBColorSpace ) ? false : true;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tboxMesh.layers.enableAll();\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 PlaneGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: '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.deleteAttribute( 'normal' );\n\n\t\t\t\t// add \"map\" material property so the renderer can evaluate it like for built-in materials\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\t\t\tplaneMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;\n\t\t\tplaneMesh.material.toneMapped = ( background.colorSpace === SRGBColorSpace ) ? false : true;\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\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tplaneMesh.layers.enableAll();\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\tcolor.getRGB( _rgb, getUnlitUniformColorSpace( renderer ) );\n\n\t\tstate.buffers.color.setClear( _rgb.r, _rgb.g, _rgb.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 = 1 ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha;\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\nfunction WebGLBindingStates( gl, extensions, attributes, capabilities ) {\n\n\tconst maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\n\tconst extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );\n\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\tlet forceUpdate = false;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tif ( vaoAvailable ) {\n\n\t\t\tconst state = getBindingState( geometry, program, material );\n\n\t\t\tif ( currentState !== state ) {\n\n\t\t\t\tcurrentState = state;\n\t\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t\t}\n\n\t\t\tupdateBuffers = needsUpdate( object, geometry, program, index );\n\n\t\t\tif ( updateBuffers ) saveCache( object, geometry, program, index );\n\n\t\t} else {\n\n\t\t\tconst wireframe = ( material.wireframe === true );\n\n\t\t\tif ( currentState.geometry !== geometry.id ||\n\t\t\t\tcurrentState.program !== program.id ||\n\t\t\t\tcurrentState.wireframe !== wireframe ) {\n\n\t\t\t\tcurrentState.geometry = geometry.id;\n\t\t\t\tcurrentState.program = program.id;\n\t\t\t\tcurrentState.wireframe = wireframe;\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\t}\n\n\t\tif ( updateBuffers || forceUpdate ) {\n\n\t\t\tforceUpdate = false;\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.createVertexArray();\n\n\t\treturn extension.createVertexArrayOES();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );\n\n\t\treturn extension.bindVertexArrayOES( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );\n\n\t\treturn extension.deleteVertexArrayOES( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {},\n\t\t\tindex: null\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( object, geometry, program, index ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tconst cachedAttribute = cachedAttributes[ name ];\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( cachedAttribute === undefined ) return true;\n\n\t\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\t\tif ( geometryAttribute && cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( currentState.attributesNum !== attributesNum ) return true;\n\n\t\tif ( currentState.index !== index ) return true;\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( object, geometry, program, index ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet attribute = attributes[ name ];\n\n\t\t\t\tif ( attribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) attribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) attribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tconst data = {};\n\t\t\t\tdata.attribute = attribute;\n\n\t\t\t\tif ( attribute && attribute.data ) {\n\n\t\t\t\t\tdata.data = attribute.data;\n\n\t\t\t\t}\n\n\t\t\t\tcache[ name ] = data;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\t\tcurrentState.attributesNum = attributesNum;\n\n\t\tcurrentState.index = index;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; 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\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\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\tconst 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\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; 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 vertexAttribPointer( index, size, type, normalized, stride, offset, integer ) {\n\n\t\tif ( integer === true ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\n\n\t\t}\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst 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\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\t// check for integer attributes (WebGL 2 only)\n\n\t\t\t\t\tconst integer = ( capabilities.isWebGL2 === true && ( type === gl.INT || type === gl.UNSIGNED_INT || geometryAttribute.gpuType === IntType ) );\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, data.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = 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\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tstride * bytesPerElement,\n\t\t\t\t\t\t\t\t( offset + ( size / programAttribute.locationSize ) * i ) * bytesPerElement,\n\t\t\t\t\t\t\t\tinteger\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\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = 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\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tsize * bytesPerElement,\n\t\t\t\t\t\t\t\t( size / programAttribute.locationSize ) * i * bytesPerElement,\n\t\t\t\t\t\t\t\tinteger\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 ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst 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\tgl.vertexAttrib2fv( programAttribute.location, 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\tgl.vertexAttrib3fv( programAttribute.location, 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\tgl.vertexAttrib4fv( programAttribute.location, 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\tgl.vertexAttrib1fv( programAttribute.location, 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\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\t\tforceUpdate = true;\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatibility\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet 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, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\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[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\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( gl.VERTEX_SHADER, gl.HIGH_FLOAT ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ).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( gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ).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\tconst isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl.constructor.name === 'WebGL2RenderingContext';\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst 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\tconst drawBuffers = isWebGL2 || extensions.has( 'WEBGL_draw_buffers' );\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );\n\tconst maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS );\n\tconst maxTextureSize = gl.getParameter( gl.MAX_TEXTURE_SIZE );\n\tconst maxCubemapSize = gl.getParameter( gl.MAX_CUBE_MAP_TEXTURE_SIZE );\n\n\tconst maxAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\tconst maxVertexUniforms = gl.getParameter( gl.MAX_VERTEX_UNIFORM_VECTORS );\n\tconst maxVaryings = gl.getParameter( gl.MAX_VARYING_VECTORS );\n\tconst maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\tconst floatFragmentTextures = isWebGL2 || extensions.has( 'OES_texture_float' );\n\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tconst maxSamples = isWebGL2 ? gl.getParameter( gl.MAX_SAMPLES ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tdrawBuffers: drawBuffers,\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\nfunction WebGLClipping( properties ) {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = 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 ) {\n\n\t\tconst 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\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\n\t};\n\n\tthis.setGlobalState = function ( planes, camera ) {\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\n\t};\n\n\tthis.setState = function ( material, camera, useCache ) {\n\n\t\tconst planes = material.clippingPlanes,\n\t\t\tclipIntersection = material.clipIntersection,\n\t\t\tclipShadows = material.clipShadows;\n\n\t\tconst materialProperties = properties.get( material );\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\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = materialProperties.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, useCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tmaterialProperties.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\tconst nPlanes = planes !== null ? planes.length : 0;\n\t\tlet dstArray = 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\tconst 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 ( let 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\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\nfunction WebGLCubeMaps( renderer ) {\n\n\tlet cubemaps = new WeakMap();\n\n\tfunction mapTextureMapping( texture, mapping ) {\n\n\t\tif ( mapping === EquirectangularReflectionMapping ) {\n\n\t\t\ttexture.mapping = CubeReflectionMapping;\n\n\t\t} else if ( mapping === EquirectangularRefractionMapping ) {\n\n\t\t\ttexture.mapping = CubeRefractionMapping;\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture && texture.isRenderTargetTexture === false ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tif ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ) {\n\n\t\t\t\tif ( cubemaps.has( texture ) ) {\n\n\t\t\t\t\tconst cubemap = cubemaps.get( texture ).texture;\n\t\t\t\t\treturn mapTextureMapping( cubemap, texture.mapping );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\tif ( image && image.height > 0 ) {\n\n\t\t\t\t\t\tconst renderTarget = new WebGLCubeRenderTarget( image.height / 2 );\n\t\t\t\t\t\trenderTarget.fromEquirectangularTexture( renderer, texture );\n\t\t\t\t\t\tcubemaps.set( texture, renderTarget );\n\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\treturn mapTextureMapping( renderTarget.texture, texture.mapping );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\treturn 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\treturn texture;\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemap = cubemaps.get( texture );\n\n\t\tif ( cubemap !== undefined ) {\n\n\t\t\tcubemaps.delete( texture );\n\t\t\tcubemap.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubemaps = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass OrthographicCamera extends Camera {\n\n\tconstructor( left = - 1, right = 1, top = 1, bottom = - 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isOrthographicCamera = true;\n\n\t\tthis.type = 'OrthographicCamera';\n\n\t\tthis.zoom = 1;\n\t\tthis.view = null;\n\n\t\tthis.left = left;\n\t\tthis.right = right;\n\t\tthis.top = top;\n\t\tthis.bottom = bottom;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( 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( 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() {\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() {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far, this.coordinateSystem );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( 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\nconst LOD_MIN = 4;\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst _flatCamera = /*@__PURE__*/ new OrthographicCamera();\nconst _clearColor = /*@__PURE__*/ new Color();\nlet _oldTarget = null;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\t/*@__PURE__*/ new Vector3( 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, INV_PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, - INV_PHI ),\n\t/*@__PURE__*/ new Vector3( INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( - INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( - PHI, INV_PHI, 0 ) ];\n\n/**\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n *\n * Paper: Fast, Accurate Image-Based Lighting\n * https://drive.google.com/file/d/15y8r_UpKlU9SvV4ILb0C3qCPecS8pvLz/view\n*/\n\nclass PMREMGenerator {\n\n\tconstructor( renderer ) {\n\n\t\tthis._renderer = renderer;\n\t\tthis._pingPongRenderTarget = null;\n\n\t\tthis._lodMax = 0;\n\t\tthis._cubeSize = 0;\n\t\tthis._lodPlanes = [];\n\t\tthis._sizeLods = [];\n\t\tthis._sigmas = [];\n\n\t\tthis._blurMaterial = null;\n\t\tthis._cubemapMaterial = null;\n\t\tthis._equirectMaterial = null;\n\n\t\tthis._compileMaterial( this._blurMaterial );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\n\t\tthis._setSize( 256 );\n\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\t\tcubeUVRenderTarget.depthBuffer = true;\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * or HDR. The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromEquirectangular( equirectangular, renderTarget = null ) {\n\n\t\treturn this._fromTexture( equirectangular, renderTarget );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * or HDR. The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap( cubemap, renderTarget = null ) {\n\n\t\treturn this._fromTexture( cubemap, renderTarget );\n\n\t}\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader() {\n\n\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\t\t\tthis._compileMaterial( this._cubemapMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader() {\n\n\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\t\t\tthis._compileMaterial( this._equirectMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose() {\n\n\t\tthis._dispose();\n\n\t\tif ( this._cubemapMaterial !== null ) this._cubemapMaterial.dispose();\n\t\tif ( this._equirectMaterial !== null ) this._equirectMaterial.dispose();\n\n\t}\n\n\t// private interface\n\n\t_setSize( cubeSize ) {\n\n\t\tthis._lodMax = Math.floor( Math.log2( cubeSize ) );\n\t\tthis._cubeSize = Math.pow( 2, this._lodMax );\n\n\t}\n\n\t_dispose() {\n\n\t\tif ( this._blurMaterial !== null ) this._blurMaterial.dispose();\n\n\t\tif ( this._pingPongRenderTarget !== null ) this._pingPongRenderTarget.dispose();\n\n\t\tfor ( let i = 0; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tthis._lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t}\n\n\t_cleanup( outputTarget ) {\n\n\t\tthis._renderer.setRenderTarget( _oldTarget );\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t}\n\n\t_fromTexture( texture, renderTarget ) {\n\n\t\tif ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping ) {\n\n\t\t\tthis._setSize( texture.image.length === 0 ? 16 : ( texture.image[ 0 ].width || texture.image[ 0 ].image.width ) );\n\n\t\t} else { // Equirectangular\n\n\t\t\tthis._setSize( texture.image.width / 4 );\n\n\t\t}\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\n\t\tconst cubeUVRenderTarget = renderTarget || this._allocateTargets();\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_allocateTargets() {\n\n\t\tconst width = 3 * Math.max( this._cubeSize, 16 * 7 );\n\t\tconst height = 4 * this._cubeSize;\n\n\t\tconst params = {\n\t\t\tmagFilter: LinearFilter,\n\t\t\tminFilter: LinearFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: HalfFloatType,\n\t\t\tformat: RGBAFormat,\n\t\t\tcolorSpace: LinearSRGBColorSpace,\n\t\t\tdepthBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( width, height, params );\n\n\t\tif ( this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== width || this._pingPongRenderTarget.height !== height ) {\n\n\t\t\tif ( this._pingPongRenderTarget !== null ) {\n\n\t\t\t\tthis._dispose();\n\n\t\t\t}\n\n\t\t\tthis._pingPongRenderTarget = _createRenderTarget( width, height, params );\n\n\t\t\tconst { _lodMax } = this;\n\t\t\t( { sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = _createPlanes( _lodMax ) );\n\n\t\t\tthis._blurMaterial = _getBlurShader( _lodMax, width, height );\n\n\t\t}\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_compileMaterial( material ) {\n\n\t\tconst tmpMesh = new Mesh( this._lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t}\n\n\t_sceneToCubeUV( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst originalAutoClear = renderer.autoClear;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\trenderer.getClearColor( _clearColor );\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.autoClear = false;\n\n\t\tconst backgroundMaterial = new MeshBasicMaterial( {\n\t\t\tname: 'PMREM.Background',\n\t\t\tside: BackSide,\n\t\t\tdepthWrite: false,\n\t\t\tdepthTest: false,\n\t\t} );\n\n\t\tconst backgroundBox = new Mesh( new BoxGeometry(), backgroundMaterial );\n\n\t\tlet useSolidColor = false;\n\t\tconst background = scene.background;\n\n\t\tif ( background ) {\n\n\t\t\tif ( background.isColor ) {\n\n\t\t\t\tbackgroundMaterial.color.copy( background );\n\t\t\t\tscene.background = null;\n\t\t\t\tuseSolidColor = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tbackgroundMaterial.color.copy( _clearColor );\n\t\t\tuseSolidColor = true;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\n\t\t\tif ( col === 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col === 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\tconst size = this._cubeSize;\n\n\t\t\t_setViewport( cubeUVRenderTarget, col * size, i > 2 ? size : 0, size, size );\n\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\n\t\t\tif ( useSolidColor ) {\n\n\t\t\t\trenderer.render( backgroundBox, cubeCamera );\n\n\t\t\t}\n\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\tbackgroundBox.geometry.dispose();\n\t\tbackgroundBox.material.dispose();\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.autoClear = originalAutoClear;\n\t\tscene.background = background;\n\n\t}\n\n\t_textureToCubeUV( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tconst isCubeTexture = ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping );\n\n\t\tif ( isCubeTexture ) {\n\n\t\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\n\t\t\t}\n\n\t\t\tthis._cubemapMaterial.uniforms.flipEnvMap.value = ( texture.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t} else {\n\n\t\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = isCubeTexture ? this._cubemapMaterial : this._equirectMaterial;\n\t\tconst mesh = new Mesh( this._lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tconst size = this._cubeSize;\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * size, 2 * size );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t}\n\n\t_applyPMREM( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tfor ( let i = 1; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( this._sigmas[ i ] * this._sigmas[ i ] - this._sigmas[ i - 1 ] * this._sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t}\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t}\n\n\t_halfBlur( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( this._lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = this._sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i === 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tconst { _lodMax } = this;\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = _lodMax - lodIn;\n\n\t\tconst outputSize = this._sizeLods[ lodOut ];\n\t\tconst x = 3 * outputSize * ( lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0 );\n\t\tconst y = 4 * ( this._cubeSize - outputSize );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n}\n\n\n\nfunction _createPlanes( lodMax ) {\n\n\tconst lodPlanes = [];\n\tconst sizeLods = [];\n\tconst sigmas = [];\n\n\tlet lod = lodMax;\n\n\tconst totalLods = lodMax - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n\tfor ( let i = 0; i < totalLods; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\tsizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > lodMax - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - lodMax + LOD_MIN - 1 ];\n\n\t\t} else if ( i === 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\tsigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 2 );\n\t\tconst min = - texelSize;\n\t\tconst max = 1 + texelSize;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\tlodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { lodPlanes, sizeLods, sigmas };\n\n}\n\nfunction _createRenderTarget( width, height, params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( width, height, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( lodMax, width, height ) {\n\n\tconst weights = new Float32Array( MAX_SAMPLES );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new ShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: {\n\t\t\t'n': MAX_SAMPLES,\n\t\t\t'CUBEUV_TEXEL_WIDTH': 1.0 / width,\n\t\t\t'CUBEUV_TEXEL_HEIGHT': 1.0 / height,\n\t\t\t'CUBEUV_MAX_MIP': `${lodMax}.0`,\n\t\t},\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCubemapMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'flipEnvMap': { value: - 1 }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn /* glsl */`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n\n}\n\nfunction WebGLCubeUVMaps( renderer ) {\n\n\tlet cubeUVmaps = new WeakMap();\n\n\tlet pmremGenerator = null;\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tconst isEquirectMap = ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping );\n\t\t\tconst isCubeMap = ( mapping === CubeReflectionMapping || mapping === CubeRefractionMapping );\n\n\t\t\t// equirect/cube map to cubeUV conversion\n\n\t\t\tif ( isEquirectMap || isCubeMap ) {\n\n\t\t\t\tif ( texture.isRenderTargetTexture && texture.needsPMREMUpdate === true ) {\n\n\t\t\t\t\ttexture.needsPMREMUpdate = false;\n\n\t\t\t\t\tlet renderTarget = cubeUVmaps.get( texture );\n\n\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\trenderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture, renderTarget ) : pmremGenerator.fromCubemap( texture, renderTarget );\n\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cubeUVmaps.has( texture ) ) {\n\n\t\t\t\t\t\treturn cubeUVmaps.get( texture ).texture;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\t\tif ( ( isEquirectMap && image && image.height > 0 ) || ( isCubeMap && image && isCubeTextureComplete( image ) ) ) {\n\n\t\t\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\t\t\tconst renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture );\n\t\t\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\t\treturn null;\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 texture;\n\n\t}\n\n\tfunction isCubeTextureComplete( image ) {\n\n\t\tlet count = 0;\n\t\tconst length = 6;\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tif ( image[ i ] !== undefined ) count ++;\n\n\t\t}\n\n\t\treturn count === length;\n\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemapUV = cubeUVmaps.get( texture );\n\n\t\tif ( cubemapUV !== undefined ) {\n\n\t\t\tcubeUVmaps.delete( texture );\n\t\t\tcubemapUV.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubeUVmaps = new WeakMap();\n\n\t\tif ( pmremGenerator !== null ) {\n\n\t\t\tpmremGenerator.dispose();\n\t\t\tpmremGenerator = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\tfunction getExtension( name ) {\n\n\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\treturn extensions[ name ];\n\n\t\t}\n\n\t\tlet extension;\n\n\t\tswitch ( name ) {\n\n\t\t\tcase 'WEBGL_depth_texture':\n\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\tbreak;\n\n\t\t\tcase 'EXT_texture_filter_anisotropic':\n\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\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\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\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\textension = gl.getExtension( name );\n\n\t\t}\n\n\t\textensions[ name ] = extension;\n\n\t\treturn extension;\n\n\t}\n\n\treturn {\n\n\t\thas: function ( name ) {\n\n\t\t\treturn getExtension( name ) !== null;\n\n\t\t},\n\n\t\tinit: function ( capabilities ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgetExtension( 'EXT_color_buffer_float' );\n\n\t\t\t} else {\n\n\t\t\t\tgetExtension( 'WEBGL_depth_texture' );\n\t\t\t\tgetExtension( 'OES_texture_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float_linear' );\n\t\t\t\tgetExtension( 'OES_standard_derivatives' );\n\t\t\t\tgetExtension( 'OES_element_index_uint' );\n\t\t\t\tgetExtension( 'OES_vertex_array_object' );\n\t\t\t\tgetExtension( 'ANGLE_instanced_arrays' );\n\n\t\t\t}\n\n\t\t\tgetExtension( 'OES_texture_float_linear' );\n\t\t\tgetExtension( 'EXT_color_buffer_half_float' );\n\t\t\tgetExtension( 'WEBGL_multisampled_render_to_texture' );\n\n\t\t},\n\n\t\tget: function ( name ) {\n\n\t\t\tconst extension = getExtension( name );\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\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = {};\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\tattributes.remove( geometry.index );\n\n\t\t}\n\n\t\tfor ( const name in geometry.attributes ) {\n\n\t\t\tattributes.remove( geometry.attributes[ name ] );\n\n\t\t}\n\n\t\tfor ( const name in geometry.morphAttributes ) {\n\n\t\t\tconst array = geometry.morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.remove( array[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\tconst attribute = wireframeAttributes.get( geometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( geometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\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\tif ( geometries[ geometry.id ] === true ) return geometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries[ geometry.id ] = true;\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], gl.ARRAY_BUFFER );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], gl.ARRAY_BUFFER );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst 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\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst 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\tconst attribute = new ( arrayNeedsUint32( indices ) ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\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\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet 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, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\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[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\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\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst 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\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase gl.TRIANGLES:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINES:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINE_STRIP:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINE_LOOP:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase gl.POINTS:\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.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\nfunction numericalSort( a, b ) {\n\n\treturn a[ 0 ] - b[ 0 ];\n\n}\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction WebGLMorphtargets( gl, capabilities, textures ) {\n\n\tconst influencesList = {};\n\tconst morphInfluences = new Float32Array( 8 );\n\tconst morphTextures = new WeakMap();\n\tconst morph = new Vector4();\n\n\tconst workInfluences = [];\n\n\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\tworkInfluences[ i ] = [ i, 0 ];\n\n\t}\n\n\tfunction update( object, geometry, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tif ( capabilities.isWebGL2 === true ) {\n\n\t\t\t// instead of using attributes, the WebGL 2 code path encodes morph targets\n\t\t\t// into an array of data textures. Each layer represents a single morph target.\n\n\t\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\t\tlet entry = morphTextures.get( geometry );\n\n\t\t\tif ( entry === undefined || entry.count !== morphTargetsCount ) {\n\n\t\t\t\tif ( entry !== undefined ) entry.texture.dispose();\n\n\t\t\t\tconst hasMorphPosition = geometry.morphAttributes.position !== undefined;\n\t\t\t\tconst hasMorphNormals = geometry.morphAttributes.normal !== undefined;\n\t\t\t\tconst hasMorphColors = geometry.morphAttributes.color !== undefined;\n\n\t\t\t\tconst morphTargets = geometry.morphAttributes.position || [];\n\t\t\t\tconst morphNormals = geometry.morphAttributes.normal || [];\n\t\t\t\tconst morphColors = geometry.morphAttributes.color || [];\n\n\t\t\t\tlet vertexDataCount = 0;\n\n\t\t\t\tif ( hasMorphPosition === true ) vertexDataCount = 1;\n\t\t\t\tif ( hasMorphNormals === true ) vertexDataCount = 2;\n\t\t\t\tif ( hasMorphColors === true ) vertexDataCount = 3;\n\n\t\t\t\tlet width = geometry.attributes.position.count * vertexDataCount;\n\t\t\t\tlet height = 1;\n\n\t\t\t\tif ( width > capabilities.maxTextureSize ) {\n\n\t\t\t\t\theight = Math.ceil( width / capabilities.maxTextureSize );\n\t\t\t\t\twidth = capabilities.maxTextureSize;\n\n\t\t\t\t}\n\n\t\t\t\tconst buffer = new Float32Array( width * height * 4 * morphTargetsCount );\n\n\t\t\t\tconst texture = new DataArrayTexture( buffer, width, height, morphTargetsCount );\n\t\t\t\ttexture.type = FloatType;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t// fill buffer\n\n\t\t\t\tconst vertexDataStride = vertexDataCount * 4;\n\n\t\t\t\tfor ( let i = 0; i < morphTargetsCount; i ++ ) {\n\n\t\t\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\t\t\tconst morphNormal = morphNormals[ i ];\n\t\t\t\t\tconst morphColor = morphColors[ i ];\n\n\t\t\t\t\tconst offset = width * height * 4 * i;\n\n\t\t\t\t\tfor ( let j = 0; j < morphTarget.count; j ++ ) {\n\n\t\t\t\t\t\tconst stride = j * vertexDataStride;\n\n\t\t\t\t\t\tif ( hasMorphPosition === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphTarget, j );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 0 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 1 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 2 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 3 ] = 0;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasMorphNormals === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphNormal, j );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 4 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 5 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 6 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 7 ] = 0;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasMorphColors === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphColor, j );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 8 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 9 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 10 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 11 ] = ( morphColor.itemSize === 4 ) ? morph.w : 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\tentry = {\n\t\t\t\t\tcount: morphTargetsCount,\n\t\t\t\t\ttexture: texture,\n\t\t\t\t\tsize: new Vector2( width, height )\n\t\t\t\t};\n\n\t\t\t\tmorphTextures.set( geometry, entry );\n\n\t\t\t\tfunction disposeTexture() {\n\n\t\t\t\t\ttexture.dispose();\n\n\t\t\t\t\tmorphTextures.delete( geometry );\n\n\t\t\t\t\tgeometry.removeEventListener( 'dispose', disposeTexture );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.addEventListener( 'dispose', disposeTexture );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\t\tmorphInfluencesSum += objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', objectInfluences );\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTexture', entry.texture, textures );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTextureSize', entry.size );\n\n\n\t\t} else {\n\n\t\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\t\tlet influences = influencesList[ geometry.id ];\n\n\t\t\tif ( influences === undefined || influences.length !== length ) {\n\n\t\t\t\t// initialise list\n\n\t\t\t\tinfluences = [];\n\n\t\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t\t}\n\n\t\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t\t}\n\n\t\t\t// Collect influences\n\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\tconst influence = influences[ i ];\n\n\t\t\t\tinfluence[ 0 ] = i;\n\t\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tinfluences.sort( absNumericalSort );\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tworkInfluences.sort( numericalSort );\n\n\t\t\tconst morphTargets = geometry.morphAttributes.position;\n\t\t\tconst morphNormals = geometry.morphAttributes.normal;\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tconst influence = workInfluences[ i ];\n\t\t\t\tconst index = influence[ 0 ];\n\t\t\t\tconst value = influence[ 1 ];\n\n\t\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\n\n\t\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\t\tmorphInfluencesSum += value;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( morphTargets && geometry.hasAttribute( 'morphTarget' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.hasAttribute( 'morphNormal' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tif ( object.hasEventListener( 'dispose', onInstancedMeshDispose ) === false ) {\n\n\t\t\t\tobject.addEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\t\t}\n\n\t\t\tattributes.update( object.instanceMatrix, gl.ARRAY_BUFFER );\n\n\t\t\tif ( object.instanceColor !== null ) {\n\n\t\t\t\tattributes.update( object.instanceColor, gl.ARRAY_BUFFER );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\tfunction onInstancedMeshDispose( event ) {\n\n\t\tconst instancedMesh = event.target;\n\n\t\tinstancedMesh.removeEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\tattributes.remove( instancedMesh.instanceMatrix );\n\n\t\tif ( instancedMesh.instanceColor !== null ) attributes.remove( instancedMesh.instanceColor );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\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\n\nconst emptyTexture = /*@__PURE__*/ new Texture();\nconst emptyArrayTexture = /*@__PURE__*/ new DataArrayTexture();\nconst empty3dTexture = /*@__PURE__*/ new Data3DTexture();\nconst emptyCubeTexture = /*@__PURE__*/ new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst 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\tconst n = nBlocks * blockSize;\n\tlet r = 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 ( let 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 ( let 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 ( let 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\tlet 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 ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\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\tconst 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\tconst 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\tconst 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\tconst 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 THREE.MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst 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\tconst cache = this.cache;\n\tconst 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\tconst cache = this.cache;\n\tconst 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 integer / boolean\n\nfunction setValueV1i( gl, v ) {\n\n\tconst 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\n// Single integer / boolean vector (from flat array or THREE.VectorN)\n\nfunction setValueV2i( gl, v ) {\n\n\tconst 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.uniform2i( 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.uniform2iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst 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.uniform3i( 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 {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst 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.uniform4i( 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.uniform4iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single unsigned integer\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single unsigned integer vector (from flat array or THREE.VectorN)\n\nfunction setValueV2ui( gl, v ) {\n\n\tconst 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.uniform2ui( 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.uniform2uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3ui( gl, v ) {\n\n\tconst 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.uniform3ui( 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 {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4ui( gl, v ) {\n\n\tconst 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.uniform4ui( 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.uniform4uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst 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.setTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst 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 || empty3dTexture, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst 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.setTextureCube( v || emptyCubeTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst 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 || emptyArrayTexture, unit );\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 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\tcase 0x1405: return setValueV1ui; // UINT\n\t\tcase 0x8dc6: return setValueV2ui; // _VEC2\n\t\tcase 0x8dc7: return setValueV3ui; // _VEC3\n\t\tcase 0x8dc8: return setValueV4ui; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n\n// Array of scalars\n\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Array of vectors (from flat array or array of THREE.VectorN)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (from flat array or array of THREE.MatrixN)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of integer / boolean\n\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\n// Array of integer / boolean vectors (from flat array)\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// Array of unsigned integer\n\nfunction setValueV1uiArray( gl, v ) {\n\n\tgl.uniform1uiv( this.addr, v );\n\n}\n\n// Array of unsigned integer vectors (from flat array)\n\nfunction setValueV2uiArray( gl, v ) {\n\n\tgl.uniform2uiv( this.addr, v );\n\n}\n\nfunction setValueV3uiArray( gl, v ) {\n\n\tgl.uniform3uiv( this.addr, v );\n\n}\n\nfunction setValueV4uiArray( gl, v ) {\n\n\tgl.uniform4uiv( this.addr, v );\n\n}\n\n\n// Array of textures (2D / 3D / Cube / 2DArray)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT3DArray( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture3D( v[ i ] || empty3dTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT2DArrayArray( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2DArray( v[ i ] || emptyArrayTexture, units[ i ] );\n\n\t}\n\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 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\tcase 0x1405: return setValueV1uiArray; // UINT\n\t\tcase 0x8dc6: return setValueV2uiArray; // _VEC2\n\t\tcase 0x8dc7: return setValueV3uiArray; // _VEC3\n\t\tcase 0x8dc8: return setValueV4uiArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3DArray;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArrayArray;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nclass SingleUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass PureArrayUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.size = activeInfo.size;\n\t\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass StructuredUniform {\n\n\tconstructor( id ) {\n\n\t\tthis.id = id;\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t}\n\n\tsetValue( gl, value, textures ) {\n\n\t\tconst seq = this.seq;\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t\t}\n\n\t}\n\n}\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /(\\w+)(\\])?(\\[|\\.)?/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\tconst 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\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ];\n\t\tconst idIsIndex = 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\tconst map = container.map;\n\t\t\tlet 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\nclass WebGLUniforms {\n\n\tconstructor( gl, program ) {\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t\tconst n = gl.getProgramParameter( program, gl.ACTIVE_UNIFORMS );\n\n\t\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\t\tparseUniform( info, addr, this );\n\n\t\t}\n\n\t}\n\n\tsetValue( gl, name, value, textures ) {\n\n\t\tconst u = this.map[ name ];\n\n\t\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n\t}\n\n\tsetOptional( gl, object, name ) {\n\n\t\tconst v = object[ name ];\n\n\t\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n\t}\n\n\tstatic upload( gl, seq, values, textures ) {\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ],\n\t\t\t\tv = values[ u.id ];\n\n\t\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tstatic seqWithValue( seq, values ) {\n\n\t\tconst r = [];\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tif ( u.id in values ) r.push( u );\n\n\t\t}\n\n\t\treturn r;\n\n\t}\n\n}\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\nlet programIdCount = 0;\n\nfunction handleSource( string, errorLine ) {\n\n\tconst lines = string.split( '\\n' );\n\tconst lines2 = [];\n\n\tconst from = Math.max( errorLine - 6, 0 );\n\tconst to = Math.min( errorLine + 6, lines.length );\n\n\tfor ( let i = from; i < to; i ++ ) {\n\n\t\tconst line = i + 1;\n\t\tlines2.push( `${line === errorLine ? '>' : ' '} ${line}: ${lines[ i ]}` );\n\n\t}\n\n\treturn lines2.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( colorSpace ) {\n\n\tswitch ( colorSpace ) {\n\n\t\tcase LinearSRGBColorSpace:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase SRGBColorSpace:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported color space:', colorSpace );\n\t\t\treturn [ 'Linear', '( value )' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, gl.COMPILE_STATUS );\n\tconst errors = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && errors === '' ) return '';\n\n\tconst errorMatches = /ERROR: 0:(\\d+)/.exec( errors );\n\tif ( errorMatches ) {\n\n\t\t// --enable-privileged-webgl-extension\n\t\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\t\tconst errorLine = parseInt( errorMatches[ 1 ] );\n\t\treturn type.toUpperCase() + '\\n\\n' + errors + '\\n\\n' + handleSource( gl.getShaderSource( shader ), errorLine );\n\n\t} else {\n\n\t\treturn errors;\n\n\t}\n\n}\n\nfunction getTexelEncodingFunction( functionName, colorSpace ) {\n\n\tconst components = getEncodingComponents( colorSpace );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet 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 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\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( parameters ) {\n\n\tconst chunks = [\n\t\t( parameters.extensionDerivatives || !! parameters.envMapCubeUVHeight || parameters.bumpMap || parameters.normalMapTangentSpace || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap || parameters.transmission ) && parameters.rendererExtensionShaderTextureLod ? '#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\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst 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\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, gl.ACTIVE_ATTRIBUTES );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\tlet locationSize = 1;\n\t\tif ( info.type === gl.FLOAT_MAT2 ) locationSize = 2;\n\t\tif ( info.type === gl.FLOAT_MAT3 ) locationSize = 3;\n\t\tif ( info.type === gl.FLOAT_MAT4 ) locationSize = 4;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = {\n\t\t\ttype: info.type,\n\t\t\tlocation: gl.getAttribLocation( program, name ),\n\t\t\tlocationSize: locationSize\n\t\t};\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\tconst numSpotLightCoords = parameters.numSpotLightShadows + parameters.numSpotLightMaps - parameters.numSpotLightShadowsWithMaps;\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_SPOT_LIGHT_MAPS/g, parameters.numSpotLightMaps )\n\t\t.replace( /NUM_SPOT_LIGHT_COORDS/g, numSpotLightCoords )\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\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g, parameters.numSpotLightShadowsWithMaps )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\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\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nfunction includeReplacer( match, include ) {\n\n\tconst string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst unrollLoopPattern = /#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string.replace( unrollLoopPattern, loopReplacer );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[\\s*i\\s*\\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = 'precision ' + parameters.precision + ' float;\\nprecision ' + parameters.precision + ' int;';\n\n\tif ( parameters.precision === 'highp' ) {\n\n\t\tprecisionstring += '\\n#define HIGH_PRECISION';\n\n\t} else if ( parameters.precision === 'mediump' ) {\n\n\t\tprecisionstring += '\\n#define MEDIUM_PRECISION';\n\n\t} else if ( parameters.precision === 'lowp' ) {\n\n\t\tprecisionstring += '\\n#define LOW_PRECISION';\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet 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} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\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\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.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\treturn envMapBlendingDefine;\n\n}\n\nfunction generateCubeUVSize( parameters ) {\n\n\tconst imageHeight = parameters.envMapCubeUVHeight;\n\n\tif ( imageHeight === null ) return null;\n\n\tconst maxMip = Math.log2( imageHeight ) - 2;\n\n\tconst texelHeight = 1.0 / imageHeight;\n\n\tconst texelWidth = 1.0 / ( 3 * Math.max( Math.pow( 2, maxMip ), 7 * 16 ) );\n\n\treturn { texelWidth, texelHeight, maxMip };\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\t// TODO Send this event to Three.js DevTools\n\t// console.log( 'WebGLProgram', cacheKey );\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\tconst envMapCubeUVSize = generateCubeUVSize( parameters );\n\n\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\tlet versionString = parameters.glslVersion ? '#version ' + parameters.glslVersion + '\\n' : '';\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\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\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\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\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',\n\n\t\t\tparameters.useFog && parameters.fog ? '#define USE_FOG' : '',\n\t\t\tparameters.useFog && parameters.fogExp2 ? '#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.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '',\n\t\t\tparameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',\n\t\t\tparameters.displacementMap ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\n\t\t\tparameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULAR_COLORMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULAR_INTENSITYMAP' : '',\n\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.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEEN_COLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEEN_ROUGHNESSMAP' : '',\n\n\t\t\t//\n\n\t\t\tparameters.mapUv ? '#define MAP_UV ' + parameters.mapUv : '',\n\t\t\tparameters.alphaMapUv ? '#define ALPHAMAP_UV ' + parameters.alphaMapUv : '',\n\t\t\tparameters.lightMapUv ? '#define LIGHTMAP_UV ' + parameters.lightMapUv : '',\n\t\t\tparameters.aoMapUv ? '#define AOMAP_UV ' + parameters.aoMapUv : '',\n\t\t\tparameters.emissiveMapUv ? '#define EMISSIVEMAP_UV ' + parameters.emissiveMapUv : '',\n\t\t\tparameters.bumpMapUv ? '#define BUMPMAP_UV ' + parameters.bumpMapUv : '',\n\t\t\tparameters.normalMapUv ? '#define NORMALMAP_UV ' + parameters.normalMapUv : '',\n\t\t\tparameters.displacementMapUv ? '#define DISPLACEMENTMAP_UV ' + parameters.displacementMapUv : '',\n\n\t\t\tparameters.metalnessMapUv ? '#define METALNESSMAP_UV ' + parameters.metalnessMapUv : '',\n\t\t\tparameters.roughnessMapUv ? '#define ROUGHNESSMAP_UV ' + parameters.roughnessMapUv : '',\n\n\t\t\tparameters.anisotropyMapUv ? '#define ANISOTROPYMAP_UV ' + parameters.anisotropyMapUv : '',\n\n\t\t\tparameters.clearcoatMapUv ? '#define CLEARCOATMAP_UV ' + parameters.clearcoatMapUv : '',\n\t\t\tparameters.clearcoatNormalMapUv ? '#define CLEARCOAT_NORMALMAP_UV ' + parameters.clearcoatNormalMapUv : '',\n\t\t\tparameters.clearcoatRoughnessMapUv ? '#define CLEARCOAT_ROUGHNESSMAP_UV ' + parameters.clearcoatRoughnessMapUv : '',\n\n\t\t\tparameters.iridescenceMapUv ? '#define IRIDESCENCEMAP_UV ' + parameters.iridescenceMapUv : '',\n\t\t\tparameters.iridescenceThicknessMapUv ? '#define IRIDESCENCE_THICKNESSMAP_UV ' + parameters.iridescenceThicknessMapUv : '',\n\n\t\t\tparameters.sheenColorMapUv ? '#define SHEEN_COLORMAP_UV ' + parameters.sheenColorMapUv : '',\n\t\t\tparameters.sheenRoughnessMapUv ? '#define SHEEN_ROUGHNESSMAP_UV ' + parameters.sheenRoughnessMapUv : '',\n\n\t\t\tparameters.specularMapUv ? '#define SPECULARMAP_UV ' + parameters.specularMapUv : '',\n\t\t\tparameters.specularColorMapUv ? '#define SPECULAR_COLORMAP_UV ' + parameters.specularColorMapUv : '',\n\t\t\tparameters.specularIntensityMapUv ? '#define SPECULAR_INTENSITYMAP_UV ' + parameters.specularIntensityMapUv : '',\n\n\t\t\tparameters.transmissionMapUv ? '#define TRANSMISSIONMAP_UV ' + parameters.transmissionMapUv : '',\n\t\t\tparameters.thicknessMapUv ? '#define THICKNESSMAP_UV ' + parameters.thicknessMapUv : '',\n\n\t\t\t//\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUv1s ? '#define USE_UV1' : '',\n\t\t\tparameters.vertexUv2s ? '#define USE_UV2' : '',\n\t\t\tparameters.vertexUv3s ? '#define USE_UV3' : '',\n\n\t\t\tparameters.pointsUvs ? '#define USE_POINTS_UV' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\t( parameters.morphColors && parameters.isWebGL2 ) ? '#define USE_MORPHCOLORS' : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE' : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE_STRIDE ' + parameters.morphTextureStride : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_COUNT ' + parameters.morphTargetsCount : '',\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.useLegacyLights ? '#define LEGACY_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#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\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t'\tattribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_INSTANCING_COLOR',\n\n\t\t\t'\tattribute vec3 instanceColor;',\n\n\t\t\t'#endif',\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_UV1',\n\n\t\t\t'\tattribute vec2 uv1;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_UV2',\n\n\t\t\t'\tattribute vec2 uv2;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_UV3',\n\n\t\t\t'\tattribute vec2 uv3;',\n\n\t\t\t'#endif',\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'#if defined( USE_COLOR_ALPHA )',\n\n\t\t\t'\tattribute vec4 color;',\n\n\t\t\t'#elif defined( USE_COLOR )',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )',\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\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.useFog && parameters.fog ? '#define USE_FOG' : '',\n\t\t\tparameters.useFog && parameters.fogExp2 ? '#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\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_WIDTH ' + envMapCubeUVSize.texelWidth : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_HEIGHT ' + envMapCubeUVSize.texelHeight : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_MAX_MIP ' + envMapCubeUVSize.maxMip + '.0' : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '',\n\t\t\tparameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\n\t\t\tparameters.anisotropy ? '#define USE_ANISOTROPY' : '',\n\t\t\tparameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',\n\n\t\t\tparameters.clearcoat ? '#define USE_CLEARCOAT' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.iridescence ? '#define USE_IRIDESCENCE' : '',\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULAR_COLORMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULAR_INTENSITYMAP' : '',\n\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaTest ? '#define USE_ALPHATEST' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEEN_COLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEEN_ROUGHNESSMAP' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUv1s ? '#define USE_UV1' : '',\n\t\t\tparameters.vertexUv2s ? '#define USE_UV2' : '',\n\t\t\tparameters.vertexUv3s ? '#define USE_UV3' : '',\n\n\t\t\tparameters.pointsUvs ? '#define USE_POINTS_UV' : '',\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.useLegacyLights ? '#define LEGACY_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\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\t\t\tparameters.opaque ? '#define OPAQUE' : '',\n\n\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\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputColorSpace ),\n\n\t\t\tparameters.useDepthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isWebGL2 && parameters.isRawShaderMaterial !== true ) {\n\n\t\t// GLSL 3.0 conversion for built-in materials and ShaderMaterial\n\n\t\tversionString = '#version 300 es\\n';\n\n\t\tprefixVertex = [\n\t\t\t'precision mediump sampler2DArray;',\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'#define varying in',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : 'layout(location = 0) out highp vec4 pc_fragColor;',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : '#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\tconst vertexGlsl = versionString + prefixVertex + vertexShader;\n\tconst fragmentGlsl = versionString + prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, gl.VERTEX_SHADER, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, gl.FRAGMENT_SHADER, 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 ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.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\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\tlet runnable = true;\n\t\tlet haveDiagnostics = true;\n\n\t\tif ( gl.getProgramParameter( program, gl.LINK_STATUS ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tif ( typeof renderer.debug.onShaderError === 'function' ) {\n\n\t\t\t\trenderer.debug.onShaderError( gl, program, glVertexShader, glFragmentShader );\n\n\t\t\t} else {\n\n\t\t\t\t// default error reporting\n\n\t\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\t\tconsole.error(\n\t\t\t\t\t'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +\n\t\t\t\t\t'VALIDATE_STATUS ' + gl.getProgramParameter( program, gl.VALIDATE_STATUS ) + '\\n\\n' +\n\t\t\t\t\t'Program Info Log: ' + programLog + '\\n' +\n\t\t\t\t\tvertexErrors + '\\n' +\n\t\t\t\t\tfragmentErrors\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Program Info Log:', 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\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\t// Crashes in iOS9 and iOS10. #18402\n\t// gl.detachShader( program, glVertexShader );\n\t// gl.detachShader( program, glFragmentShader );\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tlet 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\tlet 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\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.type = parameters.shaderType;\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nlet _id = 0;\n\nclass WebGLShaderCache {\n\n\tconstructor() {\n\n\t\tthis.shaderCache = new Map();\n\t\tthis.materialCache = new Map();\n\n\t}\n\n\tupdate( material ) {\n\n\t\tconst vertexShader = material.vertexShader;\n\t\tconst fragmentShader = material.fragmentShader;\n\n\t\tconst vertexShaderStage = this._getShaderStage( vertexShader );\n\t\tconst fragmentShaderStage = this._getShaderStage( fragmentShader );\n\n\t\tconst materialShaders = this._getShaderCacheForMaterial( material );\n\n\t\tif ( materialShaders.has( vertexShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( vertexShaderStage );\n\t\t\tvertexShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\tif ( materialShaders.has( fragmentShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( fragmentShaderStage );\n\t\t\tfragmentShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( material ) {\n\n\t\tconst materialShaders = this.materialCache.get( material );\n\n\t\tfor ( const shaderStage of materialShaders ) {\n\n\t\t\tshaderStage.usedTimes --;\n\n\t\t\tif ( shaderStage.usedTimes === 0 ) this.shaderCache.delete( shaderStage.code );\n\n\t\t}\n\n\t\tthis.materialCache.delete( material );\n\n\t\treturn this;\n\n\t}\n\n\tgetVertexShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.vertexShader ).id;\n\n\t}\n\n\tgetFragmentShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.fragmentShader ).id;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shaderCache.clear();\n\t\tthis.materialCache.clear();\n\n\t}\n\n\t_getShaderCacheForMaterial( material ) {\n\n\t\tconst cache = this.materialCache;\n\t\tlet set = cache.get( material );\n\n\t\tif ( set === undefined ) {\n\n\t\t\tset = new Set();\n\t\t\tcache.set( material, set );\n\n\t\t}\n\n\t\treturn set;\n\n\t}\n\n\t_getShaderStage( code ) {\n\n\t\tconst cache = this.shaderCache;\n\t\tlet stage = cache.get( code );\n\n\t\tif ( stage === undefined ) {\n\n\t\t\tstage = new WebGLShaderStage( code );\n\t\t\tcache.set( code, stage );\n\n\t\t}\n\n\t\treturn stage;\n\n\t}\n\n}\n\nclass WebGLShaderStage {\n\n\tconstructor( code ) {\n\n\t\tthis.id = _id ++;\n\n\t\tthis.code = code;\n\t\tthis.usedTimes = 0;\n\n\t}\n\n}\n\nfunction WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping ) {\n\n\tconst _programLayers = new Layers();\n\tconst _customShaders = new WebGLShaderCache();\n\tconst programs = [];\n\n\tconst IS_WEBGL2 = capabilities.isWebGL2;\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst SUPPORTS_VERTEX_TEXTURES = capabilities.vertexTextures;\n\n\tlet precision = capabilities.precision;\n\n\tconst 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: 'toon',\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\tfunction getChannel( value ) {\n\n\t\tif ( value === 0 ) return 'uv';\n\n\t\treturn `uv${ value }`;\n\n\t}\n\n\tfunction getParameters( material, lights, shadows, scene, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst geometry = object.geometry;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\tconst envMapCubeUVHeight = ( !! envMap ) && ( envMap.mapping === CubeUVReflectionMapping ) ? envMap.image.height : null;\n\n\t\tconst 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\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\t//\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\tlet morphTextureStride = 0;\n\n\t\tif ( geometry.morphAttributes.position !== undefined ) morphTextureStride = 1;\n\t\tif ( geometry.morphAttributes.normal !== undefined ) morphTextureStride = 2;\n\t\tif ( geometry.morphAttributes.color !== undefined ) morphTextureStride = 3;\n\n\t\t//\n\n\t\tlet vertexShader, fragmentShader;\n\t\tlet customVertexShaderID, customFragmentShaderID;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tvertexShader = shader.vertexShader;\n\t\t\tfragmentShader = shader.fragmentShader;\n\n\t\t} else {\n\n\t\t\tvertexShader = material.vertexShader;\n\t\t\tfragmentShader = material.fragmentShader;\n\n\t\t\t_customShaders.update( material );\n\n\t\t\tcustomVertexShaderID = _customShaders.getVertexShaderID( material );\n\t\t\tcustomFragmentShaderID = _customShaders.getFragmentShaderID( material );\n\n\t\t}\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst IS_INSTANCEDMESH = object.isInstancedMesh === true;\n\n\t\tconst HAS_MAP = !! material.map;\n\t\tconst HAS_MATCAP = !! material.matcap;\n\t\tconst HAS_ENVMAP = !! envMap;\n\t\tconst HAS_AOMAP = !! material.aoMap;\n\t\tconst HAS_LIGHTMAP = !! material.lightMap;\n\t\tconst HAS_BUMPMAP = !! material.bumpMap;\n\t\tconst HAS_NORMALMAP = !! material.normalMap;\n\t\tconst HAS_DISPLACEMENTMAP = !! material.displacementMap;\n\t\tconst HAS_EMISSIVEMAP = !! material.emissiveMap;\n\n\t\tconst HAS_METALNESSMAP = !! material.metalnessMap;\n\t\tconst HAS_ROUGHNESSMAP = !! material.roughnessMap;\n\n\t\tconst HAS_ANISOTROPY = material.anisotropy > 0;\n\t\tconst HAS_CLEARCOAT = material.clearcoat > 0;\n\t\tconst HAS_IRIDESCENCE = material.iridescence > 0;\n\t\tconst HAS_SHEEN = material.sheen > 0;\n\t\tconst HAS_TRANSMISSION = material.transmission > 0;\n\n\t\tconst HAS_ANISOTROPYMAP = HAS_ANISOTROPY && !! material.anisotropyMap;\n\n\t\tconst HAS_CLEARCOATMAP = HAS_CLEARCOAT && !! material.clearcoatMap;\n\t\tconst HAS_CLEARCOAT_NORMALMAP = HAS_CLEARCOAT && !! material.clearcoatNormalMap;\n\t\tconst HAS_CLEARCOAT_ROUGHNESSMAP = HAS_CLEARCOAT && !! material.clearcoatRoughnessMap;\n\n\t\tconst HAS_IRIDESCENCEMAP = HAS_IRIDESCENCE && !! material.iridescenceMap;\n\t\tconst HAS_IRIDESCENCE_THICKNESSMAP = HAS_IRIDESCENCE && !! material.iridescenceThicknessMap;\n\n\t\tconst HAS_SHEEN_COLORMAP = HAS_SHEEN && !! material.sheenColorMap;\n\t\tconst HAS_SHEEN_ROUGHNESSMAP = HAS_SHEEN && !! material.sheenRoughnessMap;\n\n\t\tconst HAS_SPECULARMAP = !! material.specularMap;\n\t\tconst HAS_SPECULAR_COLORMAP = !! material.specularColorMap;\n\t\tconst HAS_SPECULAR_INTENSITYMAP = !! material.specularIntensityMap;\n\n\t\tconst HAS_TRANSMISSIONMAP = HAS_TRANSMISSION && !! material.transmissionMap;\n\t\tconst HAS_THICKNESSMAP = HAS_TRANSMISSION && !! material.thicknessMap;\n\n\t\tconst HAS_GRADIENTMAP = !! material.gradientMap;\n\n\t\tconst HAS_ALPHAMAP = !! material.alphaMap;\n\n\t\tconst HAS_ALPHATEST = material.alphaTest > 0;\n\n\t\tconst HAS_EXTENSIONS = !! material.extensions;\n\n\t\tconst HAS_ATTRIBUTE_UV1 = !! geometry.attributes.uv1;\n\t\tconst HAS_ATTRIBUTE_UV2 = !! geometry.attributes.uv2;\n\t\tconst HAS_ATTRIBUTE_UV3 = !! geometry.attributes.uv3;\n\n\t\tconst parameters = {\n\n\t\t\tisWebGL2: IS_WEBGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderType: material.type,\n\t\t\tshaderName: material.name,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tcustomVertexShaderID: customVertexShaderID,\n\t\t\tcustomFragmentShaderID: customFragmentShaderID,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial === true,\n\t\t\tglslVersion: material.glslVersion,\n\n\t\t\tprecision: precision,\n\n\t\t\tinstancing: IS_INSTANCEDMESH,\n\t\t\tinstancingColor: IS_INSTANCEDMESH && object.instanceColor !== null,\n\n\t\t\tsupportsVertexTextures: SUPPORTS_VERTEX_TEXTURES,\n\t\t\toutputColorSpace: ( currentRenderTarget === null ) ? renderer.outputColorSpace : ( currentRenderTarget.isXRRenderTarget === true ? currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace ),\n\n\t\t\tmap: HAS_MAP,\n\t\t\tmatcap: HAS_MATCAP,\n\t\t\tenvMap: HAS_ENVMAP,\n\t\t\tenvMapMode: HAS_ENVMAP && envMap.mapping,\n\t\t\tenvMapCubeUVHeight: envMapCubeUVHeight,\n\t\t\taoMap: HAS_AOMAP,\n\t\t\tlightMap: HAS_LIGHTMAP,\n\t\t\tbumpMap: HAS_BUMPMAP,\n\t\t\tnormalMap: HAS_NORMALMAP,\n\t\t\tdisplacementMap: SUPPORTS_VERTEX_TEXTURES && HAS_DISPLACEMENTMAP,\n\t\t\temissiveMap: HAS_EMISSIVEMAP,\n\n\t\t\tnormalMapObjectSpace: HAS_NORMALMAP && material.normalMapType === ObjectSpaceNormalMap,\n\t\t\tnormalMapTangentSpace: HAS_NORMALMAP && material.normalMapType === TangentSpaceNormalMap,\n\n\t\t\tmetalnessMap: HAS_METALNESSMAP,\n\t\t\troughnessMap: HAS_ROUGHNESSMAP,\n\n\t\t\tanisotropy: HAS_ANISOTROPY,\n\t\t\tanisotropyMap: HAS_ANISOTROPYMAP,\n\n\t\t\tclearcoat: HAS_CLEARCOAT,\n\t\t\tclearcoatMap: HAS_CLEARCOATMAP,\n\t\t\tclearcoatNormalMap: HAS_CLEARCOAT_NORMALMAP,\n\t\t\tclearcoatRoughnessMap: HAS_CLEARCOAT_ROUGHNESSMAP,\n\n\t\t\tiridescence: HAS_IRIDESCENCE,\n\t\t\tiridescenceMap: HAS_IRIDESCENCEMAP,\n\t\t\tiridescenceThicknessMap: HAS_IRIDESCENCE_THICKNESSMAP,\n\n\t\t\tsheen: HAS_SHEEN,\n\t\t\tsheenColorMap: HAS_SHEEN_COLORMAP,\n\t\t\tsheenRoughnessMap: HAS_SHEEN_ROUGHNESSMAP,\n\n\t\t\tspecularMap: HAS_SPECULARMAP,\n\t\t\tspecularColorMap: HAS_SPECULAR_COLORMAP,\n\t\t\tspecularIntensityMap: HAS_SPECULAR_INTENSITYMAP,\n\n\t\t\ttransmission: HAS_TRANSMISSION,\n\t\t\ttransmissionMap: HAS_TRANSMISSIONMAP,\n\t\t\tthicknessMap: HAS_THICKNESSMAP,\n\n\t\t\tgradientMap: HAS_GRADIENTMAP,\n\n\t\t\topaque: material.transparent === false && material.blending === NormalBlending,\n\n\t\t\talphaMap: HAS_ALPHAMAP,\n\t\t\talphaTest: HAS_ALPHATEST,\n\n\t\t\tcombine: material.combine,\n\n\t\t\t//\n\n\t\t\tmapUv: HAS_MAP && getChannel( material.map.channel ),\n\t\t\taoMapUv: HAS_AOMAP && getChannel( material.aoMap.channel ),\n\t\t\tlightMapUv: HAS_LIGHTMAP && getChannel( material.lightMap.channel ),\n\t\t\tbumpMapUv: HAS_BUMPMAP && getChannel( material.bumpMap.channel ),\n\t\t\tnormalMapUv: HAS_NORMALMAP && getChannel( material.normalMap.channel ),\n\t\t\tdisplacementMapUv: HAS_DISPLACEMENTMAP && getChannel( material.displacementMap.channel ),\n\t\t\temissiveMapUv: HAS_EMISSIVEMAP && getChannel( material.emissiveMap.channel ),\n\n\t\t\tmetalnessMapUv: HAS_METALNESSMAP && getChannel( material.metalnessMap.channel ),\n\t\t\troughnessMapUv: HAS_ROUGHNESSMAP && getChannel( material.roughnessMap.channel ),\n\n\t\t\tanisotropyMapUv: HAS_ANISOTROPYMAP && getChannel( material.anisotropyMap.channel ),\n\n\t\t\tclearcoatMapUv: HAS_CLEARCOATMAP && getChannel( material.clearcoatMap.channel ),\n\t\t\tclearcoatNormalMapUv: HAS_CLEARCOAT_NORMALMAP && getChannel( material.clearcoatNormalMap.channel ),\n\t\t\tclearcoatRoughnessMapUv: HAS_CLEARCOAT_ROUGHNESSMAP && getChannel( material.clearcoatRoughnessMap.channel ),\n\n\t\t\tiridescenceMapUv: HAS_IRIDESCENCEMAP && getChannel( material.iridescenceMap.channel ),\n\t\t\tiridescenceThicknessMapUv: HAS_IRIDESCENCE_THICKNESSMAP && getChannel( material.iridescenceThicknessMap.channel ),\n\n\t\t\tsheenColorMapUv: HAS_SHEEN_COLORMAP && getChannel( material.sheenColorMap.channel ),\n\t\t\tsheenRoughnessMapUv: HAS_SHEEN_ROUGHNESSMAP && getChannel( material.sheenRoughnessMap.channel ),\n\n\t\t\tspecularMapUv: HAS_SPECULARMAP && getChannel( material.specularMap.channel ),\n\t\t\tspecularColorMapUv: HAS_SPECULAR_COLORMAP && getChannel( material.specularColorMap.channel ),\n\t\t\tspecularIntensityMapUv: HAS_SPECULAR_INTENSITYMAP && getChannel( material.specularIntensityMap.channel ),\n\n\t\t\ttransmissionMapUv: HAS_TRANSMISSIONMAP && getChannel( material.transmissionMap.channel ),\n\t\t\tthicknessMapUv: HAS_THICKNESSMAP && getChannel( material.thicknessMap.channel ),\n\n\t\t\talphaMapUv: HAS_ALPHAMAP && getChannel( material.alphaMap.channel ),\n\n\t\t\t//\n\n\t\t\tvertexTangents: !! geometry.attributes.tangent && ( HAS_NORMALMAP || HAS_ANISOTROPY ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexAlphas: material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4,\n\t\t\tvertexUv1s: HAS_ATTRIBUTE_UV1,\n\t\t\tvertexUv2s: HAS_ATTRIBUTE_UV2,\n\t\t\tvertexUv3s: HAS_ATTRIBUTE_UV3,\n\n\t\t\tpointsUvs: object.isPoints === true && !! geometry.attributes.uv && ( HAS_MAP || HAS_ALPHAMAP ),\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog === true,\n\t\t\tfogExp2: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading === true,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation === true,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: object.isSkinnedMesh === true,\n\n\t\t\tmorphTargets: geometry.morphAttributes.position !== undefined,\n\t\t\tmorphNormals: geometry.morphAttributes.normal !== undefined,\n\t\t\tmorphColors: geometry.morphAttributes.color !== undefined,\n\t\t\tmorphTargetsCount: morphTargetsCount,\n\t\t\tmorphTextureStride: morphTextureStride,\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\tnumSpotLightMaps: lights.spotLightMap.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\t\t\tnumSpotLightShadowsWithMaps: lights.numSpotLightShadowsWithMaps,\n\n\t\t\tnumClippingPlanes: clipping.numPlanes,\n\t\t\tnumClipIntersection: clipping.numIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,\n\t\t\tuseLegacyLights: renderer.useLegacyLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tuseDepthPacking: material.depthPacking >= 0,\n\t\t\tdepthPacking: material.depthPacking || 0,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: HAS_EXTENSIONS && material.extensions.derivatives === true,\n\t\t\textensionFragDepth: HAS_EXTENSIONS && material.extensions.fragDepth === true,\n\t\t\textensionDrawBuffers: HAS_EXTENSIONS && material.extensions.drawBuffers === true,\n\t\t\textensionShaderTextureLOD: HAS_EXTENSIONS && material.extensions.shaderTextureLOD === true,\n\n\t\t\trendererExtensionFragDepth: IS_WEBGL2 || extensions.has( 'EXT_frag_depth' ),\n\t\t\trendererExtensionDrawBuffers: IS_WEBGL2 || extensions.has( 'WEBGL_draw_buffers' ),\n\t\t\trendererExtensionShaderTextureLod: IS_WEBGL2 || extensions.has( 'EXT_shader_texture_lod' ),\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst 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( parameters.customVertexShaderID );\n\t\t\tarray.push( parameters.customFragmentShaderID );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === false ) {\n\n\t\t\tgetProgramCacheKeyParameters( array, parameters );\n\t\t\tgetProgramCacheKeyBooleans( array, parameters );\n\t\t\tarray.push( renderer.outputColorSpace );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction getProgramCacheKeyParameters( array, parameters ) {\n\n\t\tarray.push( parameters.precision );\n\t\tarray.push( parameters.outputColorSpace );\n\t\tarray.push( parameters.envMapMode );\n\t\tarray.push( parameters.envMapCubeUVHeight );\n\t\tarray.push( parameters.mapUv );\n\t\tarray.push( parameters.alphaMapUv );\n\t\tarray.push( parameters.lightMapUv );\n\t\tarray.push( parameters.aoMapUv );\n\t\tarray.push( parameters.bumpMapUv );\n\t\tarray.push( parameters.normalMapUv );\n\t\tarray.push( parameters.displacementMapUv );\n\t\tarray.push( parameters.emissiveMapUv );\n\t\tarray.push( parameters.metalnessMapUv );\n\t\tarray.push( parameters.roughnessMapUv );\n\t\tarray.push( parameters.anisotropyMapUv );\n\t\tarray.push( parameters.clearcoatMapUv );\n\t\tarray.push( parameters.clearcoatNormalMapUv );\n\t\tarray.push( parameters.clearcoatRoughnessMapUv );\n\t\tarray.push( parameters.iridescenceMapUv );\n\t\tarray.push( parameters.iridescenceThicknessMapUv );\n\t\tarray.push( parameters.sheenColorMapUv );\n\t\tarray.push( parameters.sheenRoughnessMapUv );\n\t\tarray.push( parameters.specularMapUv );\n\t\tarray.push( parameters.specularColorMapUv );\n\t\tarray.push( parameters.specularIntensityMapUv );\n\t\tarray.push( parameters.transmissionMapUv );\n\t\tarray.push( parameters.thicknessMapUv );\n\t\tarray.push( parameters.combine );\n\t\tarray.push( parameters.fogExp2 );\n\t\tarray.push( parameters.sizeAttenuation );\n\t\tarray.push( parameters.morphTargetsCount );\n\t\tarray.push( parameters.morphAttributeCount );\n\t\tarray.push( parameters.numDirLights );\n\t\tarray.push( parameters.numPointLights );\n\t\tarray.push( parameters.numSpotLights );\n\t\tarray.push( parameters.numSpotLightMaps );\n\t\tarray.push( parameters.numHemiLights );\n\t\tarray.push( parameters.numRectAreaLights );\n\t\tarray.push( parameters.numDirLightShadows );\n\t\tarray.push( parameters.numPointLightShadows );\n\t\tarray.push( parameters.numSpotLightShadows );\n\t\tarray.push( parameters.numSpotLightShadowsWithMaps );\n\t\tarray.push( parameters.shadowMapType );\n\t\tarray.push( parameters.toneMapping );\n\t\tarray.push( parameters.numClippingPlanes );\n\t\tarray.push( parameters.numClipIntersection );\n\t\tarray.push( parameters.depthPacking );\n\n\t}\n\n\tfunction getProgramCacheKeyBooleans( array, parameters ) {\n\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.isWebGL2 )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.supportsVertexTextures )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.instancing )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.instancingColor )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.matcap )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.envMap )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.normalMapObjectSpace )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.normalMapTangentSpace )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.clearcoat )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.iridescence )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.alphaTest )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.vertexColors )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.vertexAlphas )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.vertexUv1s )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.vertexUv2s )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.vertexUv3s )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.vertexTangents )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.anisotropy )\n\t\t\t_programLayers.enable( 17 );\n\n\t\tarray.push( _programLayers.mask );\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.fog )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.useFog )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.flatShading )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.logarithmicDepthBuffer )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.skinning )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.morphTargets )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.morphNormals )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.morphColors )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.premultipliedAlpha )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.shadowMapEnabled )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.useLegacyLights )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.doubleSided )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.flipSided )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.useDepthPacking )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.dithering )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.transmission )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.sheen )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.opaque )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.pointsUvs )\n\t\t\t_programLayers.enable( 18 );\n\n\t\tarray.push( _programLayers.mask );\n\n\t}\n\n\tfunction getUniforms( material ) {\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\t\tlet uniforms;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t} else {\n\n\t\t\tuniforms = material.uniforms;\n\n\t\t}\n\n\t\treturn uniforms;\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\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, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst 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\tfunction releaseShaderCache( material ) {\n\n\t\t_customShaders.remove( material );\n\n\t}\n\n\tfunction dispose() {\n\n\t\t_customShaders.dispose();\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tgetUniforms: getUniforms,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\treleaseShaderCache: releaseShaderCache,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tlet 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\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.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\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transmissive = [];\n\tconst transparent = [];\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransmissive.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet 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\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.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\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.push( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.push( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.push( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.unshift( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.unshift( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.unshift( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transmissive.length > 1 ) transmissive.sort( customTransparentSort || reversePainterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\topaque: opaque,\n\t\ttransmissive: transmissive,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tlet lists = new WeakMap();\n\n\tfunction get( scene, renderCallDepth ) {\n\n\t\tconst listArray = lists.get( scene );\n\t\tlet list;\n\n\t\tif ( listArray === undefined ) {\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists.set( scene, [ list ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= listArray.length ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tlistArray.push( list );\n\n\t\t\t} else {\n\n\t\t\t\tlist = listArray[ renderCallDepth ];\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 = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction UniformsCache() {\n\n\tconst 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\tlet 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\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\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\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};\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\nfunction ShadowUniformsCache() {\n\n\tconst 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\tlet 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\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 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\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 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\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 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\t// TODO (abelnation): set RectAreaLight shadow uniforms\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\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingAndTexturingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 2 : 0 ) - ( lightA.castShadow ? 2 : 0 ) + ( lightB.map ? 1 : 0 ) - ( lightA.map ? 1 : 0 );\n\n}\n\nfunction WebGLLights( extensions, capabilities ) {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst 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\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1,\n\t\t\tnumSpotMaps: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotLightMap: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotLightMatrix: [],\n\t\trectArea: [],\n\t\trectAreaLTC1: null,\n\t\trectAreaLTC2: null,\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: [],\n\t\tnumSpotLightShadowsWithMaps: 0\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights, useLegacyLights ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\t\tlet numSpotMaps = 0;\n\t\tlet numSpotShadowsWithMaps = 0;\n\n\t\t// ordering : [shadow casting + map texturing, map texturing, shadow casting, none ]\n\t\tlights.sort( shadowCastingAndTexturingLightsFirst );\n\n\t\t// artist-friendly light intensity scaling factor\n\t\tconst scaleFactor = ( useLegacyLights === true ) ? Math.PI : 1;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst 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 * scaleFactor;\n\t\t\t\tg += color.g * intensity * scaleFactor;\n\t\t\t\tb += color.b * intensity * scaleFactor;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let 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\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\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\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.distance = distance;\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\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\tif ( light.map ) {\n\n\t\t\t\t\tstate.spotLightMap[ numSpotMaps ] = light.map;\n\t\t\t\t\tnumSpotMaps ++;\n\n\t\t\t\t\t// make sure the lightMatrix is up to date\n\t\t\t\t\t// TODO : do it if required only\n\t\t\t\t\tshadow.updateMatrices( light );\n\n\t\t\t\t\tif ( light.castShadow ) numSpotShadowsWithMaps ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spotLightMatrix[ spotLength ] = shadow.matrix;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\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\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\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\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity * scaleFactor );\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\tif ( rectAreaLength > 0 ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t// WebGL 2\n\n\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t} else {\n\n\t\t\t\t// WebGL 1\n\n\t\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t\t} else if ( extensions.has( 'OES_texture_half_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.' );\n\n\t\t\t\t}\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\tconst 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.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ||\n\t\t\thash.numSpotMaps !== numSpotMaps ) {\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\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotLightMatrix.length = numSpotShadows + numSpotMaps - numSpotShadowsWithMaps;\n\t\t\tstate.spotLightMap.length = numSpotMaps;\n\t\t\tstate.numSpotLightShadowsWithMaps = numSpotShadowsWithMaps;\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\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\t\t\thash.numSpotMaps = numSpotMaps;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\tfunction setupView( lights, camera ) {\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tif ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = state.directional[ directionalLength ];\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\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = state.spot[ spotLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\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\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = state.rectArea[ rectAreaLength ];\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\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = state.point[ pointLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = state.hemi[ hemiLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tsetupView: setupView,\n\t\tstate: state\n\t};\n\n}\n\nfunction WebGLRenderState( extensions, capabilities ) {\n\n\tconst lights = new WebGLLights( extensions, capabilities );\n\n\tconst lightsArray = [];\n\tconst 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( useLegacyLights ) {\n\n\t\tlights.setup( lightsArray, useLegacyLights );\n\n\t}\n\n\tfunction setupLightsView( camera ) {\n\n\t\tlights.setupView( lightsArray, camera );\n\n\t}\n\n\tconst 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\t\tsetupLightsView: setupLightsView,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates( extensions, capabilities ) {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction get( scene, renderCallDepth = 0 ) {\n\n\t\tconst renderStateArray = renderStates.get( scene );\n\t\tlet renderState;\n\n\t\tif ( renderStateArray === undefined ) {\n\n\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\trenderStates.set( scene, [ renderState ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= renderStateArray.length ) {\n\n\t\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\t\trenderStateArray.push( renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStateArray[ renderCallDepth ];\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 = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass MeshDepthMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDepthMaterial = true;\n\n\t\tthis.type = 'MeshDepthMaterial';\n\n\t\tthis.depthPacking = BasicDepthPacking;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.depthPacking = source.depthPacking;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshDistanceMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDistanceMaterial = true;\n\n\t\tthis.type = 'MeshDistanceMaterial';\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst vertex = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\nconst fragment = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n\\tconst float samples = float( VSM_SAMPLES );\\n\\tfloat mean = 0.0;\\n\\tfloat squared_mean = 0.0;\\n\\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\\n\\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\\n\\tfor ( float i = 0.0; i < samples; i ++ ) {\\n\\t\\tfloat uvOffset = uvStart + i * uvStride;\\n\\t\\t#ifdef HORIZONTAL_PASS\\n\\t\\t\\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\\n\\t\\t\\tmean += distribution.x;\\n\\t\\t\\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\\t\\t#else\\n\\t\\t\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\\n\\t\\t\\tmean += depth;\\n\\t\\t\\tsquared_mean += depth * depth;\\n\\t\\t#endif\\n\\t}\\n\\tmean = mean / samples;\\n\\tsquared_mean = squared_mean / samples;\\n\\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nfunction WebGLShadowMap( _renderer, _objects, _capabilities ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterial = new MeshDepthMaterial( { depthPacking: RGBADepthPacking } ),\n\t\t_distanceMaterial = new MeshDistanceMaterial(),\n\n\t\t_materialCache = {},\n\n\t\t_maxTextureSize = _capabilities.maxTextureSize;\n\n\tconst shadowSide = { [ FrontSide ]: BackSide, [ BackSide ]: FrontSide, [ DoubleSide ]: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\t\tdefines: {\n\t\t\tVSM_SAMPLES: 8\n\t\t},\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vertex,\n\t\tfragmentShader: fragment\n\n\t} );\n\n\tconst shadowMaterialHorizontal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t'position',\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\tlet _previousType = this.type;\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\tconst currentRenderTarget = _renderer.getRenderTarget();\n\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tconst _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// check for shadow map type changes\n\n\t\tconst toVSM = ( _previousType !== VSMShadowMap && this.type === VSMShadowMap );\n\t\tconst fromVSM = ( _previousType === VSMShadowMap && this.type !== VSMShadowMap );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\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\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( _maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( _maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null || toVSM === true || fromVSM === true ) {\n\n\t\t\t\tconst pars = ( this.type !== VSMShadowMap ) ? { minFilter: NearestFilter, magFilter: NearestFilter } : {};\n\n\t\t\t\tif ( shadow.map !== null ) {\n\n\t\t\t\t\tshadow.map.dispose();\n\n\t\t\t\t}\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\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( shadow.isPointLightShadow !== true && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\t_previousType = this.type;\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = _objects.update( fullScreenMesh );\n\n\t\tif ( shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples ) {\n\n\t\t\tshadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples;\n\t\t\tshadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples;\n\n\t\t\tshadowMaterialVertical.needsUpdate = true;\n\t\t\tshadowMaterialHorizontal.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( shadow.mapPass === null ) {\n\n\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y );\n\n\t\t}\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizontal pass\n\n\t\tshadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterial( object, material, light, type ) {\n\n\t\tlet result = null;\n\n\t\tconst customMaterial = ( light.isPointLight === true ) ? object.customDistanceMaterial : object.customDepthMaterial;\n\n\t\tif ( customMaterial !== undefined ) {\n\n\t\t\tresult = customMaterial;\n\n\t\t} else {\n\n\t\t\tresult = ( light.isPointLight === true ) ? _distanceMaterial : _depthMaterial;\n\n\t\t\tif ( ( _renderer.localClippingEnabled && material.clipShadows === true && Array.isArray( material.clippingPlanes ) && material.clippingPlanes.length !== 0 ) ||\n\t\t\t\t( material.displacementMap && material.displacementScale !== 0 ) ||\n\t\t\t\t( material.alphaMap && material.alphaTest > 0 ) ||\n\t\t\t\t( material.map && material.alphaTest > 0 ) ) {\n\n\t\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t\t// appropriate state\n\n\t\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t\t}\n\n\t\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t\t}\n\n\t\t\t\tresult = cachedMaterial;\n\n\t\t\t}\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.alphaMap = material.alphaMap;\n\t\tresult.alphaTest = material.alphaTest;\n\t\tresult.map = material.map;\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.displacementMap = material.displacementMap;\n\t\tresult.displacementScale = material.displacementScale;\n\t\tresult.displacementBias = material.displacementBias;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tconst materialProperties = _renderer.properties.get( result );\n\t\t\tmaterialProperties.light = light;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst 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.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = _objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, groupMaterial, light, type );\n\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\tconst depthMaterial = getDepthMaterial( object, material, light, type );\n\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\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n}\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst 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\tlet locked = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet 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( gl.DEPTH_TEST );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( gl.DEPTH_TEST );\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\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.NEVER );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.ALWAYS );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LESS );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.EQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.GEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.GREATER );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.NOTEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\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\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( gl.STENCIL_TEST );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( gl.STENCIL_TEST );\n\n\t\t\t\t\t}\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 !== stencilRef ||\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 !== stencilFail ||\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\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tconst uboBindings = new WeakMap();\n\tconst uboProgramMap = new WeakMap();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentBoundFramebuffers = {};\n\tlet currentDrawbuffers = new WeakMap();\n\tlet defaultDrawbuffers = [];\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = false;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( gl.VERSION );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL (\\d)/.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 (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst scissorParam = gl.getParameter( gl.SCISSOR_BOX );\n\tconst viewportParam = gl.getParameter( gl.VIEWPORT );\n\n\tconst currentScissor = new Vector4().fromArray( scissorParam );\n\tconst currentViewport = new Vector4().fromArray( viewportParam );\n\n\tfunction createTexture( type, target, count, dimensions ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\t\tgl.texParameteri( type, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tif ( isWebGL2 && ( type === gl.TEXTURE_3D || type === gl.TEXTURE_2D_ARRAY ) ) {\n\n\t\t\t\tgl.texImage3D( target, 0, gl.RGBA, 1, 1, dimensions, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t\t} else {\n\n\t\t\t\tgl.texImage2D( target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ gl.TEXTURE_2D ] = createTexture( gl.TEXTURE_2D, gl.TEXTURE_2D, 1 );\n\temptyTextures[ gl.TEXTURE_CUBE_MAP ] = createTexture( gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6 );\n\n\tif ( isWebGL2 ) {\n\n\t\temptyTextures[ gl.TEXTURE_2D_ARRAY ] = createTexture( gl.TEXTURE_2D_ARRAY, gl.TEXTURE_2D_ARRAY, 1, 1 );\n\t\temptyTextures[ gl.TEXTURE_3D ] = createTexture( gl.TEXTURE_3D, gl.TEXTURE_3D, 1, 1 );\n\n\t}\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( gl.DEPTH_TEST );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( gl.CULL_FACE );\n\n\tsetBlending( NoBlending );\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 bindFramebuffer( target, framebuffer ) {\n\n\t\tif ( currentBoundFramebuffers[ target ] !== framebuffer ) {\n\n\t\t\tgl.bindFramebuffer( target, framebuffer );\n\n\t\t\tcurrentBoundFramebuffers[ target ] = framebuffer;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t// gl.DRAW_FRAMEBUFFER is equivalent to gl.FRAMEBUFFER\n\n\t\t\t\tif ( target === gl.DRAW_FRAMEBUFFER ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ gl.FRAMEBUFFER ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t\tif ( target === gl.FRAMEBUFFER ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ gl.DRAW_FRAMEBUFFER ] = framebuffer;\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 false;\n\n\t}\n\n\tfunction drawBuffers( renderTarget, framebuffer ) {\n\n\t\tlet drawBuffers = defaultDrawbuffers;\n\n\t\tlet needsUpdate = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tdrawBuffers = currentDrawbuffers.get( framebuffer );\n\n\t\t\tif ( drawBuffers === undefined ) {\n\n\t\t\t\tdrawBuffers = [];\n\t\t\t\tcurrentDrawbuffers.set( framebuffer, drawBuffers );\n\n\t\t\t}\n\n\t\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\tif ( drawBuffers.length !== textures.length || drawBuffers[ 0 ] !== gl.COLOR_ATTACHMENT0 ) {\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tdrawBuffers[ i ] = gl.COLOR_ATTACHMENT0 + i;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tdrawBuffers.length = textures.length;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( drawBuffers[ 0 ] !== gl.COLOR_ATTACHMENT0 ) {\n\n\t\t\t\t\tdrawBuffers[ 0 ] = gl.COLOR_ATTACHMENT0;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( drawBuffers[ 0 ] !== gl.BACK ) {\n\n\t\t\t\tdrawBuffers[ 0 ] = gl.BACK;\n\n\t\t\t\tneedsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgl.drawBuffers( drawBuffers );\n\n\t\t\t} else {\n\n\t\t\t\textensions.get( 'WEBGL_draw_buffers' ).drawBuffersWEBGL( drawBuffers );\n\n\t\t\t}\n\n\t\t}\n\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\tconst equationToGL = {\n\t\t[ AddEquation ]: gl.FUNC_ADD,\n\t\t[ SubtractEquation ]: gl.FUNC_SUBTRACT,\n\t\t[ ReverseSubtractEquation ]: gl.FUNC_REVERSE_SUBTRACT\n\t};\n\n\tif ( isWebGL2 ) {\n\n\t\tequationToGL[ MinEquation ] = gl.MIN;\n\t\tequationToGL[ MaxEquation ] = gl.MAX;\n\n\t} else {\n\n\t\tconst extension = extensions.get( 'EXT_blend_minmax' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: gl.ZERO,\n\t\t[ OneFactor ]: gl.ONE,\n\t\t[ SrcColorFactor ]: gl.SRC_COLOR,\n\t\t[ SrcAlphaFactor ]: gl.SRC_ALPHA,\n\t\t[ SrcAlphaSaturateFactor ]: gl.SRC_ALPHA_SATURATE,\n\t\t[ DstColorFactor ]: gl.DST_COLOR,\n\t\t[ DstAlphaFactor ]: gl.DST_ALPHA,\n\t\t[ OneMinusSrcColorFactor ]: gl.ONE_MINUS_SRC_COLOR,\n\t\t[ OneMinusSrcAlphaFactor ]: gl.ONE_MINUS_SRC_ALPHA,\n\t\t[ OneMinusDstColorFactor ]: gl.ONE_MINUS_DST_COLOR,\n\t\t[ OneMinusDstAlphaFactor ]: gl.ONE_MINUS_DST_ALPHA\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 === true ) {\n\n\t\t\t\tdisable( gl.BLEND );\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 === false ) {\n\n\t\t\tenable( gl.BLEND );\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( gl.FUNC_ADD );\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( gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\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( gl.ONE, gl.ONE );\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( gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE );\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( gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA );\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( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\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( gl.SRC_ALPHA, gl.ONE );\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( gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE );\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( gl.ZERO, gl.SRC_COLOR );\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( equationToGL[ blendEquation ], equationToGL[ 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( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ 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 = false;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( gl.CULL_FACE )\n\t\t\t: enable( gl.CULL_FACE );\n\n\t\tlet 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\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t\tmaterial.alphaToCoverage === true\n\t\t\t? enable( gl.SAMPLE_ALPHA_TO_COVERAGE )\n\t\t\t: disable( gl.SAMPLE_ALPHA_TO_COVERAGE );\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( gl.CW );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( gl.CCW );\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( gl.CULL_FACE );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( gl.BACK );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT_AND_BACK );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.CULL_FACE );\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( gl.POLYGON_OFFSET_FILL );\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( gl.POLYGON_OFFSET_FILL );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( gl.SCISSOR_TEST );\n\n\t\t} else {\n\n\t\t\tdisable( gl.SCISSOR_TEST );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = gl.TEXTURE0 + 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, webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) {\n\n\t\t\tif ( currentTextureSlot === null ) {\n\n\t\t\t\twebglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\t\t} else {\n\n\t\t\t\twebglSlot = currentTextureSlot;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ webglSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ webglSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\t\tgl.activeTexture( webglSlot );\n\t\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t\t}\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 unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\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 compressedTexImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage3D.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 texSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage2D.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 texSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage3D.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 compressedTexSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage2D.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 compressedTexSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage3D.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 texStorage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage2D.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 texStorage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage3D.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\tfunction updateUBOMapping( uniformsGroup, program ) {\n\n\t\tlet mapping = uboProgramMap.get( program );\n\n\t\tif ( mapping === undefined ) {\n\n\t\t\tmapping = new WeakMap();\n\n\t\t\tuboProgramMap.set( program, mapping );\n\n\t\t}\n\n\t\tlet blockIndex = mapping.get( uniformsGroup );\n\n\t\tif ( blockIndex === undefined ) {\n\n\t\t\tblockIndex = gl.getUniformBlockIndex( program, uniformsGroup.name );\n\n\t\t\tmapping.set( uniformsGroup, blockIndex );\n\n\t\t}\n\n\t}\n\n\tfunction uniformBlockBinding( uniformsGroup, program ) {\n\n\t\tconst mapping = uboProgramMap.get( program );\n\t\tconst blockIndex = mapping.get( uniformsGroup );\n\n\t\tif ( uboBindings.get( program ) !== blockIndex ) {\n\n\t\t\t// bind shader specific block index to global block point\n\t\t\tgl.uniformBlockBinding( program, blockIndex, uniformsGroup.__bindingPointIndex );\n\n\t\t\tuboBindings.set( program, blockIndex );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\t// reset state\n\n\t\tgl.disable( gl.BLEND );\n\t\tgl.disable( gl.CULL_FACE );\n\t\tgl.disable( gl.DEPTH_TEST );\n\t\tgl.disable( gl.POLYGON_OFFSET_FILL );\n\t\tgl.disable( gl.SCISSOR_TEST );\n\t\tgl.disable( gl.STENCIL_TEST );\n\t\tgl.disable( gl.SAMPLE_ALPHA_TO_COVERAGE );\n\n\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\tgl.blendFunc( gl.ONE, gl.ZERO );\n\t\tgl.blendFuncSeparate( gl.ONE, gl.ZERO, gl.ONE, gl.ZERO );\n\n\t\tgl.colorMask( true, true, true, true );\n\t\tgl.clearColor( 0, 0, 0, 0 );\n\n\t\tgl.depthMask( true );\n\t\tgl.depthFunc( gl.LESS );\n\t\tgl.clearDepth( 1 );\n\n\t\tgl.stencilMask( 0xffffffff );\n\t\tgl.stencilFunc( gl.ALWAYS, 0, 0xffffffff );\n\t\tgl.stencilOp( gl.KEEP, gl.KEEP, gl.KEEP );\n\t\tgl.clearStencil( 0 );\n\n\t\tgl.cullFace( gl.BACK );\n\t\tgl.frontFace( gl.CCW );\n\n\t\tgl.polygonOffset( 0, 0 );\n\n\t\tgl.activeTexture( gl.TEXTURE0 );\n\n\t\tgl.bindFramebuffer( gl.FRAMEBUFFER, null );\n\n\t\tif ( isWebGL2 === true ) {\n\n\t\t\tgl.bindFramebuffer( gl.DRAW_FRAMEBUFFER, null );\n\t\t\tgl.bindFramebuffer( gl.READ_FRAMEBUFFER, null );\n\n\t\t}\n\n\t\tgl.useProgram( null );\n\n\t\tgl.lineWidth( 1 );\n\n\t\tgl.scissor( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tgl.viewport( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\t// reset internals\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentBoundFramebuffers = {};\n\t\tcurrentDrawbuffers = new WeakMap();\n\t\tdefaultDrawbuffers = [];\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlendingEnabled = false;\n\t\tcurrentBlending = null;\n\t\tcurrentBlendEquation = null;\n\t\tcurrentBlendSrc = null;\n\t\tcurrentBlendDst = null;\n\t\tcurrentBlendEquationAlpha = null;\n\t\tcurrentBlendSrcAlpha = null;\n\t\tcurrentBlendDstAlpha = null;\n\t\tcurrentPremultipledAlpha = false;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcurrentLineWidth = null;\n\n\t\tcurrentPolygonOffsetFactor = null;\n\t\tcurrentPolygonOffsetUnits = null;\n\n\t\tcurrentScissor.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tcurrentViewport.set( 0, 0, gl.canvas.width, gl.canvas.height );\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\tenable: enable,\n\t\tdisable: disable,\n\n\t\tbindFramebuffer: bindFramebuffer,\n\t\tdrawBuffers: drawBuffers,\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\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\tcompressedTexImage3D: compressedTexImage3D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tupdateUBOMapping: updateUBOMapping,\n\t\tuniformBlockBinding: uniformBlockBinding,\n\n\t\ttexStorage2D: texStorage2D,\n\t\ttexStorage3D: texStorage3D,\n\t\ttexSubImage2D: texSubImage2D,\n\t\ttexSubImage3D: texSubImage3D,\n\t\tcompressedTexSubImage2D: compressedTexSubImage2D,\n\t\tcompressedTexSubImage3D: compressedTexSubImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst maxTextures = capabilities.maxTextures;\n\tconst maxCubemapSize = capabilities.maxCubemapSize;\n\tconst maxTextureSize = capabilities.maxTextureSize;\n\tconst maxSamples = capabilities.maxSamples;\n\tconst multisampledRTTExt = extensions.has( 'WEBGL_multisampled_render_to_texture' ) ? extensions.get( 'WEBGL_multisampled_render_to_texture' ) : null;\n\tconst supportsInvalidateFramebuffer = typeof navigator === 'undefined' ? false : /OculusBrowser/g.test( navigator.userAgent );\n\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\tconst _sources = new WeakMap(); // maps WebglTexture objects to instances of Source\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( '2d' ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\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\t// eslint-disable-next-line compat/compat\n\t\t\tnew OffscreenCanvas( width, height ) : createElementNS( 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tlet 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\tconst floor = needsPowerOfTwo ? floorPowerOfTwo : Math.floor;\n\n\t\t\t\tconst width = floor( scale * image.width );\n\t\t\t\tconst 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\tconst 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\tconst 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$1( image ) {\n\n\t\treturn isPowerOfTwo( image.width ) && isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( 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 ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType, colorSpace, forceLinearTransfer = false ) {\n\n\t\tif ( isWebGL2 === false ) return glFormat;\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === _gl.RED ) {\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.R32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.R16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.R8;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RG ) {\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.RG32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RG16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RG8;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RGBA ) {\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.RGBA32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RGBA16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = ( colorSpace === SRGBColorSpace && forceLinearTransfer === false ) ? _gl.SRGB8_ALPHA8 : _gl.RGBA8;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT_4_4_4_4 ) internalFormat = _gl.RGBA4;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT_5_5_5_1 ) internalFormat = _gl.RGB5_A1;\n\n\t\t}\n\n\t\tif ( internalFormat === _gl.R16F || internalFormat === _gl.R32F ||\n\t\t\tinternalFormat === _gl.RG16F || internalFormat === _gl.RG32F ||\n\t\t\tinternalFormat === _gl.RGBA16F || internalFormat === _gl.RGBA32F ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\tfunction getMipLevels( texture, image, supportsMips ) {\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) === true || ( texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) ) {\n\n\t\t\treturn Math.log2( Math.max( image.width, image.height ) ) + 1;\n\n\t\t} else if ( texture.mipmaps !== undefined && texture.mipmaps.length > 0 ) {\n\n\t\t\t// user-defined mipmaps\n\n\t\t\treturn texture.mipmaps.length;\n\n\t\t} else if ( texture.isCompressedTexture && Array.isArray( texture.image ) ) {\n\n\t\t\treturn image.mipmaps.length;\n\n\t\t} else {\n\n\t\t\t// texture without mipmaps (only base level)\n\n\t\t\treturn 1;\n\n\t\t}\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 _gl.NEAREST;\n\n\t\t}\n\n\t\treturn _gl.LINEAR;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst 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\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t// check if it's necessary to remove the WebGLTexture object\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures ) {\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\t\t\twebglTexture.usedTimes --;\n\n\t\t\t// the WebGLTexture object is not used anymore, remove it\n\n\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\tdeleteTexture( texture );\n\n\t\t\t}\n\n\t\t\t// remove the weak map entry if no WebGLTexture uses the source anymore\n\n\t\t\tif ( Object.keys( webglTextures ).length === 0 ) {\n\n\t\t\t\t_sources.delete( source );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deleteTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\t\tdelete webglTextures[ textureProperties.__cacheKey ];\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t\tinfo.memory.textures --;\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.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let 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\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) {\n\n\t\t\t\tfor ( let i = 0; i < renderTargetProperties.__webglColorRenderbuffer.length; i ++ ) {\n\n\t\t\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer[ i ] ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\tfor ( let i = 0, il = texture.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachmentProperties = properties.get( texture[ i ] );\n\n\t\t\t\tif ( attachmentProperties.__webglTexture ) {\n\n\t\t\t\t\t_gl.deleteTexture( attachmentProperties.__webglTexture );\n\n\t\t\t\t\tinfo.memory.textures --;\n\n\t\t\t\t}\n\n\t\t\t\tproperties.remove( texture[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\tfunction getTextureCacheKey( texture ) {\n\n\t\tconst array = [];\n\n\t\tarray.push( texture.wrapS );\n\t\tarray.push( texture.wrapT );\n\t\tarray.push( texture.wrapR || 0 );\n\t\tarray.push( texture.magFilter );\n\t\tarray.push( texture.minFilter );\n\t\tarray.push( texture.anisotropy );\n\t\tarray.push( texture.internalFormat );\n\t\tarray.push( texture.format );\n\t\tarray.push( texture.type );\n\t\tarray.push( texture.generateMipmaps );\n\t\tarray.push( texture.premultiplyAlpha );\n\t\tarray.push( texture.flipY );\n\t\tarray.push( texture.unpackAlignment );\n\t\tarray.push( texture.colorSpace );\n\n\t\treturn array.join();\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but no image data found.' );\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.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst 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.bindTexture( _gl.TEXTURE_2D_ARRAY, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst 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.bindTexture( _gl.TEXTURE_3D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadCubeTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: _gl.REPEAT,\n\t\t[ ClampToEdgeWrapping ]: _gl.CLAMP_TO_EDGE,\n\t\t[ MirroredRepeatWrapping ]: _gl.MIRRORED_REPEAT\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: _gl.NEAREST,\n\t\t[ NearestMipmapNearestFilter ]: _gl.NEAREST_MIPMAP_NEAREST,\n\t\t[ NearestMipmapLinearFilter ]: _gl.NEAREST_MIPMAP_LINEAR,\n\n\t\t[ LinearFilter ]: _gl.LINEAR,\n\t\t[ LinearMipmapNearestFilter ]: _gl.LINEAR_MIPMAP_NEAREST,\n\t\t[ LinearMipmapLinearFilter ]: _gl.LINEAR_MIPMAP_LINEAR\n\t};\n\n\tconst compareToGL = {\n\t\t[ NeverCompare ]: _gl.NEVER,\n\t\t[ AlwaysCompare ]: _gl.ALWAYS,\n\t\t[ LessCompare ]: _gl.LESS,\n\t\t[ LessEqualCompare ]: _gl.LEQUAL,\n\t\t[ EqualCompare ]: _gl.EQUAL,\n\t\t[ GreaterEqualCompare ]: _gl.GEQUAL,\n\t\t[ GreaterCompare ]: _gl.GREATER,\n\t\t[ NotEqualCompare ]: _gl.NOTEQUAL\n\t};\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, wrappingToGL[ texture.wrapS ] );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, wrappingToGL[ texture.wrapT ] );\n\n\t\t\tif ( textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_R, wrappingToGL[ texture.wrapR ] );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterToGL[ texture.magFilter ] );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterToGL[ texture.minFilter ] );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE );\n\n\t\t\tif ( textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_R, _gl.CLAMP_TO_EDGE );\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, _gl.TEXTURE_MAG_FILTER, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, 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\tif ( texture.compareFunction ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_MODE, _gl.COMPARE_REF_TO_TEXTURE );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_FUNC, compareToGL[ texture.compareFunction ] );\n\n\t\t}\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tif ( texture.magFilter === NearestFilter ) return;\n\t\t\tif ( texture.minFilter !== NearestMipmapLinearFilter && texture.minFilter !== LinearMipmapLinearFilter ) return;\n\t\t\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false ) return; // verify extension for WebGL 1 and WebGL 2\n\t\t\tif ( isWebGL2 === false && ( texture.type === HalfFloatType && extensions.has( 'OES_texture_half_float_linear' ) === false ) ) return; // verify extension for WebGL 1 only\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\tlet forceUpload = false;\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}\n\n\t\t// create Source <-> WebGLTextures mapping if necessary\n\n\t\tconst source = texture.source;\n\t\tlet webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures === undefined ) {\n\n\t\t\twebglTextures = {};\n\t\t\t_sources.set( source, webglTextures );\n\n\t\t}\n\n\t\t// check if there is already a WebGLTexture object for the given texture parameters\n\n\t\tconst textureCacheKey = getTextureCacheKey( texture );\n\n\t\tif ( textureCacheKey !== textureProperties.__cacheKey ) {\n\n\t\t\t// if not, create a new instance of WebGLTexture\n\n\t\t\tif ( webglTextures[ textureCacheKey ] === undefined ) {\n\n\t\t\t\t// create new entry\n\n\t\t\t\twebglTextures[ textureCacheKey ] = {\n\t\t\t\t\ttexture: _gl.createTexture(),\n\t\t\t\t\tusedTimes: 0\n\t\t\t\t};\n\n\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t// when a new instance of WebGLTexture was created, a texture upload is required\n\t\t\t\t// even if the image contents are identical\n\n\t\t\t\tforceUpload = true;\n\n\t\t\t}\n\n\t\t\twebglTextures[ textureCacheKey ].usedTimes ++;\n\n\t\t\t// every time the texture cache key changes, it's necessary to check if an instance of\n\t\t\t// WebGLTexture can be deleted in order to avoid a memory leak.\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\n\t\t\tif ( webglTexture !== undefined ) {\n\n\t\t\t\twebglTextures[ textureProperties.__cacheKey ].usedTimes --;\n\n\t\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\t\tdeleteTexture( texture );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// store references to cache key and WebGLTexture object\n\n\t\t\ttextureProperties.__cacheKey = textureCacheKey;\n\t\t\ttextureProperties.__webglTexture = webglTextures[ textureCacheKey ].texture;\n\n\t\t}\n\n\t\treturn forceUpload;\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = _gl.TEXTURE_2D;\n\n\t\tif ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) textureType = _gl.TEXTURE_2D_ARRAY;\n\t\tif ( texture.isData3DTexture ) textureType = _gl.TEXTURE_3D;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t\tconst sourceProperties = properties.get( source );\n\n\t\tif ( source.version !== sourceProperties.__version || forceUpload === true ) {\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, _gl.NONE );\n\n\t\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo$1( texture.image ) === false;\n\t\t\tlet image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );\n\t\t\timage = verifyColorSpace( texture, image );\n\n\t\t\tconst supportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format, texture.colorSpace );\n\n\t\t\tlet glType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\n\t\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\t\tlet mipmap;\n\t\t\tconst mipmaps = texture.mipmaps;\n\n\t\t\tconst useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );\n\t\t\tconst levels = getMipLevels( texture, image, supportsMips );\n\n\t\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t\t// populate depth texture with dummy data\n\n\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT;\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT24;\n\n\t\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH24_STENCIL8;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT16; // WebGL2 requires sized internalformat for glTexImage2D\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// validation checks for WebGL 1\n\n\t\t\t\tif ( texture.format === DepthFormat && glInternalFormat === _gl.DEPTH_COMPONENT ) {\n\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\t\ttexture.type = UnsignedIntType;\n\t\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === _gl.DEPTH_COMPONENT ) {\n\n\t\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tglInternalFormat = _gl.DEPTH_STENCIL;\n\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t//\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, 1, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, image.width, image.height, glFormat, glType, image.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\t\tif ( texture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, mipmap.data, 0, 0 );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage3D( _gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, mipmap.data, 0, 0 );\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\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\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\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 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} else {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\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\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\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\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, 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} else if ( texture.isDataArrayTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_2D_ARRAY, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_2D_ARRAY, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_3D, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_3D, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_3D, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isFramebufferTexture ) {\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tlet width = image.width, height = image.height;\n\n\t\t\t\t\t\tfor ( let i = 0; i < levels; i ++ ) {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, width, height, 0, glFormat, glType, null );\n\n\t\t\t\t\t\t\twidth >>= 1;\n\t\t\t\t\t\t\theight >>= 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} else {\n\n\t\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, glFormat, glType, image );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, glFormat, glType, image );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( textureType );\n\n\t\t\t}\n\n\t\t\tsourceProperties.__version = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\tfunction uploadCubeTexture( textureProperties, texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t\tconst sourceProperties = properties.get( source );\n\n\t\tif ( source.version !== sourceProperties.__version || forceUpload === true ) {\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, _gl.NONE );\n\n\t\t\tconst isCompressed = ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture );\n\t\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tconst cubeImage = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t\tcubeImage[ i ] = verifyColorSpace( texture, cubeImage[ i ] );\n\n\t\t\t}\n\n\t\t\tconst image = cubeImage[ 0 ],\n\t\t\t\tsupportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format, texture.colorSpace ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\n\t\t\tconst useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );\n\t\t\tlet levels = getMipLevels( texture, image, supportsMips );\n\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, supportsMips );\n\n\t\t\tlet mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\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\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\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\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + 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} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t// TODO: Uniformly handle mipmap definitions\n\t\t\t\t\t// Normal textures and compressed cube textures define base level + mips with their mipmap array\n\t\t\t\t\t// Uncompressed cube textures use their mipmap array only for mips (no base level)\n\n\t\t\t\t\tif ( mipmaps.length > 0 ) levels ++;\n\n\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, cubeImage[ 0 ].width, cubeImage[ 0 ].height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, cubeImage[ i ].width, cubeImage[ i ].height, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.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} else {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\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}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t}\n\n\t\t\tsourceProperties.__version = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\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, texture, attachment, textureTarget ) {\n\n\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\tconst glType = utils.convert( texture.type );\n\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( ! renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\tif ( textureTarget === _gl.TEXTURE_3D || textureTarget === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\tstate.texImage3D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, renderTarget.depth, 0, glFormat, glType, null );\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, 0, getRenderTargetSamples( renderTarget ) );\n\n\t\t} else if ( textureTarget === _gl.TEXTURE_2D || ( textureTarget >= _gl.TEXTURE_CUBE_MAP_POSITIVE_X && textureTarget <= _gl.TEXTURE_CUBE_MAP_NEGATIVE_Z ) ) { // see #24753\n\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, 0 );\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\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( _gl.RENDERBUFFER, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = _gl.DEPTH_COMPONENT16;\n\n\t\t\tif ( isMultisample || useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT24;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, _gl.DEPTH24_STENCIL8, renderTarget.width, renderTarget.height );\n\n\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, _gl.DEPTH24_STENCIL8, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_STENCIL, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else {\n\n\t\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [ renderTarget.texture ];\n\n\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\tconst texture = textures[ i ];\n\n\t\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, 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\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, 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\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t\t}\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\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture && ! renderTargetProperties.__autoAllocateDepthBuffer ) {\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 ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\t// rebind framebuffer with external textures\n\tfunction rebindTextures( renderTarget, colorTexture, depthTexture ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( colorTexture !== undefined ) {\n\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D );\n\n\t\t}\n\n\t\tif ( depthTexture !== undefined ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets !== true ) {\n\n\t\t\tif ( textureProperties.__webglTexture === undefined ) {\n\n\t\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultipleRenderTargets = ( renderTarget.isWebGLMultipleRenderTargets === true );\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let 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 ( isMultipleRenderTargets ) {\n\n\t\t\t\tif ( capabilities.drawBuffers ) {\n\n\t\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst attachmentProperties = properties.get( textures[ i ] );\n\n\t\t\t\t\t\tif ( attachmentProperties.__webglTexture === undefined ) {\n\n\t\t\t\t\t\t\tattachmentProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t\t\t\t\tinfo.memory.textures ++;\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\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( ( isWebGL2 && renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\tconst textures = isMultipleRenderTargets ? texture : [ texture ];\n\n\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = [];\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tconst texture = textures[ i ];\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer[ i ] = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace, renderTarget.isXRRenderTarget === true );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\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( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, supportsMips );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else if ( isMultipleRenderTargets ) {\n\n\t\t\tconst textures = renderTarget.texture;\n\n\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachment = textures[ i ];\n\t\t\t\tconst attachmentProperties = properties.get( attachment );\n\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_2D, attachmentProperties.__webglTexture );\n\t\t\t\tsetTextureParameters( _gl.TEXTURE_2D, attachment, supportsMips );\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D );\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( attachment, supportsMips ) ) {\n\n\t\t\t\t\tgenerateMipmap( _gl.TEXTURE_2D );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else {\n\n\t\t\tlet glTextureType = _gl.TEXTURE_2D;\n\n\t\t\tif ( renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tglTextureType = renderTarget.isWebGL3DRenderTarget ? _gl.TEXTURE_3D : _gl.TEXTURE_2D_ARRAY;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( glTextureType, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( glTextureType, texture, supportsMips );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( glTextureType );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\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\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [ renderTarget.texture ];\n\n\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\tconst texture = textures[ i ];\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;\n\t\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\t\tgenerateMipmap( target );\n\t\t\t\tstate.unbindTexture();\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( ( isWebGL2 && renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets ? renderTarget.texture : [ renderTarget.texture ];\n\t\t\tconst width = renderTarget.width;\n\t\t\tconst height = renderTarget.height;\n\t\t\tlet mask = _gl.COLOR_BUFFER_BIT;\n\t\t\tconst invalidationArray = [];\n\t\t\tconst depthStyle = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\tconst isMultipleRenderTargets = ( renderTarget.isWebGLMultipleRenderTargets === true );\n\n\t\t\t// If MRT we need to remove FBO attachments\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, null );\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, null, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\n\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\tinvalidationArray.push( _gl.COLOR_ATTACHMENT0 + i );\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\tinvalidationArray.push( depthStyle );\n\n\t\t\t\t}\n\n\t\t\t\tconst ignoreDepthValues = ( renderTargetProperties.__ignoreDepthValues !== undefined ) ? renderTargetProperties.__ignoreDepthValues : false;\n\n\t\t\t\tif ( ignoreDepthValues === false ) {\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) mask |= _gl.DEPTH_BUFFER_BIT;\n\t\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= _gl.STENCIL_BUFFER_BIT;\n\n\t\t\t\t}\n\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( ignoreDepthValues === true ) {\n\n\t\t\t\t\t_gl.invalidateFramebuffer( _gl.READ_FRAMEBUFFER, [ depthStyle ] );\n\t\t\t\t\t_gl.invalidateFramebuffer( _gl.DRAW_FRAMEBUFFER, [ depthStyle ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, webglTexture, 0 );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, _gl.NEAREST );\n\n\t\t\t\tif ( supportsInvalidateFramebuffer ) {\n\n\t\t\t\t\t_gl.invalidateFramebuffer( _gl.READ_FRAMEBUFFER, invalidationArray );\n\n\t\t\t\t}\n\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, null );\n\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, null );\n\n\t\t\t// If MRT since pre-blit we removed the FBO we need to reconstruct the attachments\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, webglTexture, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn Math.min( maxSamples, renderTarget.samples );\n\n\t}\n\n\tfunction useMultisampledRTT( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\treturn isWebGL2 && renderTarget.samples > 0 && extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true && renderTargetProperties.__useRenderToTexture !== false;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\tfunction verifyColorSpace( texture, image ) {\n\n\t\tconst colorSpace = texture.colorSpace;\n\t\tconst format = texture.format;\n\t\tconst type = texture.type;\n\n\t\tif ( texture.isCompressedTexture === true || texture.format === _SRGBAFormat ) return image;\n\n\t\tif ( colorSpace !== LinearSRGBColorSpace && colorSpace !== NoColorSpace ) {\n\n\t\t\t// sRGB\n\n\t\t\tif ( colorSpace === SRGBColorSpace ) {\n\n\t\t\t\tif ( isWebGL2 === false ) {\n\n\t\t\t\t\t// in WebGL 1, try to use EXT_sRGB extension and unsized formats\n\n\t\t\t\t\tif ( extensions.has( 'EXT_sRGB' ) === true && format === RGBAFormat ) {\n\n\t\t\t\t\t\ttexture.format = _SRGBAFormat;\n\n\t\t\t\t\t\t// it's not possible to generate mips in WebGL 1 with this extension\n\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\t\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// slow fallback (CPU decode)\n\n\t\t\t\t\t\timage = ImageUtils.sRGBToLinear( image );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// in WebGL 2 uncompressed textures can only be sRGB encoded if they have the RGBA8 format\n\n\t\t\t\t\tif ( format !== RGBAFormat || type !== UnsignedByteType ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.WebGLTextures: Unsupported texture color space:', colorSpace );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\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.rebindTextures = rebindTextures;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\tthis.setupDepthRenderbuffer = setupDepthRenderbuffer;\n\tthis.setupFrameBufferTexture = setupFrameBufferTexture;\n\tthis.useMultisampledRTT = useMultisampledRTT;\n\n}\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p, colorSpace = NoColorSpace ) {\n\n\t\tlet extension;\n\n\t\tif ( p === UnsignedByteType ) return gl.UNSIGNED_BYTE;\n\t\tif ( p === UnsignedShort4444Type ) return gl.UNSIGNED_SHORT_4_4_4_4;\n\t\tif ( p === UnsignedShort5551Type ) return gl.UNSIGNED_SHORT_5_5_5_1;\n\n\t\tif ( p === ByteType ) return gl.BYTE;\n\t\tif ( p === ShortType ) return gl.SHORT;\n\t\tif ( p === UnsignedShortType ) return gl.UNSIGNED_SHORT;\n\t\tif ( p === IntType ) return gl.INT;\n\t\tif ( p === UnsignedIntType ) return gl.UNSIGNED_INT;\n\t\tif ( p === FloatType ) return gl.FLOAT;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return gl.HALF_FLOAT;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return gl.ALPHA;\n\t\tif ( p === RGBAFormat ) return gl.RGBA;\n\t\tif ( p === LuminanceFormat ) return gl.LUMINANCE;\n\t\tif ( p === LuminanceAlphaFormat ) return gl.LUMINANCE_ALPHA;\n\t\tif ( p === DepthFormat ) return gl.DEPTH_COMPONENT;\n\t\tif ( p === DepthStencilFormat ) return gl.DEPTH_STENCIL;\n\n\t\t// WebGL 1 sRGB fallback\n\n\t\tif ( p === _SRGBAFormat ) {\n\n\t\t\textension = extensions.get( 'EXT_sRGB' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.SRGB_ALPHA_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedFormat ) return gl.RED;\n\t\tif ( p === RedIntegerFormat ) return gl.RED_INTEGER;\n\t\tif ( p === RGFormat ) return gl.RG;\n\t\tif ( p === RGIntegerFormat ) return gl.RG_INTEGER;\n\t\tif ( p === RGBAIntegerFormat ) return gl.RGBA_INTEGER;\n\n\t\t// S3TC\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\tif ( colorSpace === SRGBColorSpace ) {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc_srgb' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// PVRTC\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === 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} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC1\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 ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC2\n\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC2_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ASTC\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\tif ( p === RGBA_ASTC_4x4_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x4_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x5_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x5_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x6_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x5_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x6_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x8_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x5_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x6_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x8_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x10_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x10_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x12_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : extension.COMPRESSED_RGBA_ASTC_12x12_KHR;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// BPTC\n\n\t\tif ( p === RGBA_BPTC_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_BPTC_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// RGTC\n\n\t\tif ( p === RED_RGTC1_Format || p === SIGNED_RED_RGTC1_Format || p === RED_GREEN_RGTC2_Format || p === SIGNED_RED_GREEN_RGTC2_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_rgtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_BPTC_Format ) return extension.COMPRESSED_RED_RGTC1_EXT;\n\t\t\t\tif ( p === SIGNED_RED_RGTC1_Format ) return extension.COMPRESSED_SIGNED_RED_RGTC1_EXT;\n\t\t\t\tif ( p === RED_GREEN_RGTC2_Format ) return extension.COMPRESSED_RED_GREEN_RGTC2_EXT;\n\t\t\t\tif ( p === SIGNED_RED_GREEN_RGTC2_Format ) return extension.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return gl.UNSIGNED_INT_24_8;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// if \"p\" can't be resolved, assume the user defines a WebGL constant as a string (fallback/workaround for packed RGB formats)\n\n\t\treturn ( gl[ p ] !== undefined ) ? gl[ p ] : null;\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\nclass ArrayCamera extends PerspectiveCamera {\n\n\tconstructor( array = [] ) {\n\n\t\tsuper();\n\n\t\tthis.isArrayCamera = true;\n\n\t\tthis.cameras = array;\n\n\t}\n\n}\n\nclass Group extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isGroup = true;\n\n\t\tthis.type = 'Group';\n\n\t}\n\n}\n\nconst _moveEvent = { type: 'move' };\n\nclass WebXRController {\n\n\tconstructor() {\n\n\t\tthis._targetRay = null;\n\t\tthis._grip = null;\n\t\tthis._hand = null;\n\n\t}\n\n\tgetHandSpace() {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = {};\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t}\n\n\tgetTargetRaySpace() {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\t\t\tthis._targetRay.hasLinearVelocity = false;\n\t\t\tthis._targetRay.linearVelocity = new Vector3();\n\t\t\tthis._targetRay.hasAngularVelocity = false;\n\t\t\tthis._targetRay.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t}\n\n\tgetGripSpace() {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\t\t\tthis._grip.hasLinearVelocity = false;\n\t\t\tthis._grip.linearVelocity = new Vector3();\n\t\t\tthis._grip.hasAngularVelocity = false;\n\t\t\tthis._grip.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tconnect( inputSource ) {\n\n\t\tif ( inputSource && inputSource.hand ) {\n\n\t\t\tconst hand = this._hand;\n\n\t\t\tif ( hand ) {\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Initialize hand with joints when connected\n\t\t\t\t\tthis._getHandJoint( hand, inputjoint );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tupdate( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource && frame.session.visibilityState !== 'visible-blurred' ) {\n\n\t\t\tif ( hand && inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\tconst jointPose = frame.getJointPose( inputjoint, referenceSpace );\n\n\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\tconst joint = this._getHandJoint( hand, inputjoint );\n\n\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\tjoint.matrixWorldNeedsUpdate = true;\n\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t}\n\n\t\t\t\t// Custom events\n\n\t\t\t\t// Check pinchz\n\t\t\t\tconst indexTip = hand.joints[ 'index-finger-tip' ];\n\t\t\t\tconst thumbTip = hand.joints[ 'thumb-tip' ];\n\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchend',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchstart',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\t\t\t\t\t\tgrip.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t\t\tif ( gripPose.linearVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = true;\n\t\t\t\t\t\t\tgrip.linearVelocity.copy( gripPose.linearVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( gripPose.angularVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = true;\n\t\t\t\t\t\t\tgrip.angularVelocity.copy( gripPose.angularVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = false;\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\tif ( targetRay !== null ) {\n\n\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\t// Some runtimes (namely Vive Cosmos with Vive OpenXR Runtime) have only grip space and ray space is equal to it\n\t\t\t\tif ( inputPose === null && gripPose !== null ) {\n\n\t\t\t\t\tinputPose = gripPose;\n\n\t\t\t\t}\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\t\t\t\t\ttargetRay.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t\tif ( inputPose.linearVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = true;\n\t\t\t\t\t\ttargetRay.linearVelocity.copy( inputPose.linearVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( inputPose.angularVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = true;\n\t\t\t\t\t\ttargetRay.angularVelocity.copy( inputPose.angularVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchEvent( _moveEvent );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// private method\n\n\t_getHandJoint( hand, inputjoint ) {\n\n\t\tif ( hand.joints[ inputjoint.jointName ] === undefined ) {\n\n\t\t\tconst joint = new Group();\n\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\tjoint.visible = false;\n\t\t\thand.joints[ inputjoint.jointName ] = joint;\n\n\t\t\thand.add( joint );\n\n\t\t}\n\n\t\treturn hand.joints[ inputjoint.jointName ];\n\n\t}\n\n}\n\nclass DepthTexture extends Texture {\n\n\tconstructor( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\t\tformat = format !== undefined ? format : DepthFormat;\n\n\t\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t\t}\n\n\t\tif ( type === undefined && format === DepthFormat ) type = UnsignedIntType;\n\t\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isDepthTexture = true;\n\n\t\tthis.image = { width: width, height: height };\n\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\t\tthis.flipY = false;\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.compareFunction = null;\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.compareFunction = source.compareFunction;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.compareFunction !== null ) data.compareFunction = this.compareFunction;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass WebXRManager extends EventDispatcher {\n\n\tconstructor( renderer, gl ) {\n\n\t\tsuper();\n\n\t\tconst scope = this;\n\n\t\tlet session = null;\n\n\t\tlet framebufferScaleFactor = 1.0;\n\n\t\tlet referenceSpace = null;\n\t\tlet referenceSpaceType = 'local-floor';\n\t\t// Set default foveation to maximum.\n\t\tlet foveation = 1.0;\n\t\tlet customReferenceSpace = null;\n\n\t\tlet pose = null;\n\t\tlet glBinding = null;\n\t\tlet glProjLayer = null;\n\t\tlet glBaseLayer = null;\n\t\tlet xrFrame = null;\n\t\tconst attributes = gl.getContextAttributes();\n\t\tlet initialRenderTarget = null;\n\t\tlet newRenderTarget = null;\n\n\t\tconst controllers = [];\n\t\tconst controllerInputSources = [];\n\n\t\t//\n\n\t\tlet userCamera = null;\n\n\t\tconst cameraL = new PerspectiveCamera();\n\t\tcameraL.layers.enable( 1 );\n\t\tcameraL.viewport = new Vector4();\n\n\t\tconst cameraR = new PerspectiveCamera();\n\t\tcameraR.layers.enable( 2 );\n\t\tcameraR.viewport = new Vector4();\n\n\t\tconst cameras = [ cameraL, cameraR ];\n\n\t\tconst cameraXR = new ArrayCamera();\n\t\tcameraXR.layers.enable( 1 );\n\t\tcameraXR.layers.enable( 2 );\n\n\t\tlet _currentDepthNear = null;\n\t\tlet _currentDepthFar = null;\n\n\t\t//\n\n\t\tthis.cameraAutoUpdate = true; // @deprecated, r153\n\t\tthis.enabled = false;\n\n\t\tthis.isPresenting = false;\n\n\t\tthis.getCamera = function () {}; // @deprecated, r153\n\n\t\tthis.setUserCamera = function ( value ) {\n\n\t\t\tuserCamera = value;\n\n\t\t};\n\n\t\tthis.getController = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getTargetRaySpace();\n\n\t\t};\n\n\t\tthis.getControllerGrip = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getGripSpace();\n\n\t\t};\n\n\t\tthis.getHand = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getHandSpace();\n\n\t\t};\n\n\t\t//\n\n\t\tfunction onSessionEvent( event ) {\n\n\t\t\tconst controllerIndex = controllerInputSources.indexOf( event.inputSource );\n\n\t\t\tif ( controllerIndex === - 1 ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst controller = controllers[ controllerIndex ];\n\n\t\t\tif ( controller !== undefined ) {\n\n\t\t\t\tcontroller.update( event.inputSource, event.frame, customReferenceSpace || referenceSpace );\n\t\t\t\tcontroller.dispatchEvent( { type: event.type, data: event.inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onSessionEnd() {\n\n\t\t\tsession.removeEventListener( 'select', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'end', onSessionEnd );\n\t\t\tsession.removeEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = controllerInputSources[ i ];\n\n\t\t\t\tif ( inputSource === null ) continue;\n\n\t\t\t\tcontrollerInputSources[ i ] = null;\n\n\t\t\t\tcontrollers[ i ].disconnect( inputSource );\n\n\t\t\t}\n\n\t\t\t_currentDepthNear = null;\n\t\t\t_currentDepthFar = null;\n\n\t\t\t// restore framebuffer/rendering state\n\n\t\t\trenderer.setRenderTarget( initialRenderTarget );\n\n\t\t\tglBaseLayer = null;\n\t\t\tglProjLayer = null;\n\t\t\tglBinding = null;\n\t\t\tsession = null;\n\t\t\tnewRenderTarget = null;\n\n\t\t\t//\n\n\t\t\tanimation.stop();\n\n\t\t\tscope.isPresenting = false;\n\n\t\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t\t}\n\n\t\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\t\tframebufferScaleFactor = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\t\treferenceSpaceType = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getReferenceSpace = function () {\n\n\t\t\treturn customReferenceSpace || referenceSpace;\n\n\t\t};\n\n\t\tthis.setReferenceSpace = function ( space ) {\n\n\t\t\tcustomReferenceSpace = space;\n\n\t\t};\n\n\t\tthis.getBaseLayer = function () {\n\n\t\t\treturn glProjLayer !== null ? glProjLayer : glBaseLayer;\n\n\t\t};\n\n\t\tthis.getBinding = function () {\n\n\t\t\treturn glBinding;\n\n\t\t};\n\n\t\tthis.getFrame = function () {\n\n\t\t\treturn xrFrame;\n\n\t\t};\n\n\t\tthis.getSession = function () {\n\n\t\t\treturn session;\n\n\t\t};\n\n\t\tthis.setSession = async function ( value ) {\n\n\t\t\tsession = value;\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\tinitialRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\t\t\t\tsession.addEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\t\tawait gl.makeXRCompatible();\n\n\t\t\t\t}\n\n\t\t\t\tif ( ( session.renderState.layers === undefined ) || ( renderer.capabilities.isWebGL2 === false ) ) {\n\n\t\t\t\t\tconst layerInit = {\n\t\t\t\t\t\tantialias: ( session.renderState.layers === undefined ) ? attributes.antialias : true,\n\t\t\t\t\t\talpha: true,\n\t\t\t\t\t\tdepth: attributes.depth,\n\t\t\t\t\t\tstencil: attributes.stencil,\n\t\t\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBaseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\t\t\tsession.updateRenderState( { baseLayer: glBaseLayer } );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglBaseLayer.framebufferWidth,\n\t\t\t\t\t\tglBaseLayer.framebufferHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tcolorSpace: renderer.outputColorSpace,\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tlet depthFormat = null;\n\t\t\t\t\tlet depthType = null;\n\t\t\t\t\tlet glDepthFormat = null;\n\n\t\t\t\t\tif ( attributes.depth ) {\n\n\t\t\t\t\t\tglDepthFormat = attributes.stencil ? gl.DEPTH24_STENCIL8 : gl.DEPTH_COMPONENT24;\n\t\t\t\t\t\tdepthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat;\n\t\t\t\t\t\tdepthType = attributes.stencil ? UnsignedInt248Type : UnsignedIntType;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst projectionlayerInit = {\n\t\t\t\t\t\tcolorFormat: gl.RGBA8,\n\t\t\t\t\t\tdepthFormat: glDepthFormat,\n\t\t\t\t\t\tscaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBinding = new XRWebGLBinding( session, gl );\n\n\t\t\t\t\tglProjLayer = glBinding.createProjectionLayer( projectionlayerInit );\n\n\t\t\t\t\tsession.updateRenderState( { layers: [ glProjLayer ] } );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglProjLayer.textureWidth,\n\t\t\t\t\t\tglProjLayer.textureHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tdepthTexture: new DepthTexture( glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, undefined, undefined, undefined, undefined, undefined, undefined, depthFormat ),\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil,\n\t\t\t\t\t\t\tcolorSpace: renderer.outputColorSpace,\n\t\t\t\t\t\t\tsamples: attributes.antialias ? 4 : 0\n\t\t\t\t\t\t} );\n\n\t\t\t\t\tconst renderTargetProperties = renderer.properties.get( newRenderTarget );\n\t\t\t\t\trenderTargetProperties.__ignoreDepthValues = glProjLayer.ignoreDepthValues;\n\n\t\t\t\t}\n\n\t\t\t\tnewRenderTarget.isXRRenderTarget = true; // TODO Remove this when possible, see #23278\n\n\t\t\t\tthis.setFoveation( foveation );\n\n\t\t\t\tcustomReferenceSpace = null;\n\t\t\t\treferenceSpace = await session.requestReferenceSpace( referenceSpaceType );\n\n\t\t\t\tanimation.setContext( session );\n\t\t\t\tanimation.start();\n\n\t\t\t\tscope.isPresenting = true;\n\n\t\t\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getEnvironmentBlendMode = function () {\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\treturn session.environmentBlendMode;\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction onInputSourcesChange( event ) {\n\n\t\t\t// Notify disconnected\n\n\t\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.removed[ i ];\n\t\t\t\tconst index = controllerInputSources.indexOf( inputSource );\n\n\t\t\t\tif ( index >= 0 ) {\n\n\t\t\t\t\tcontrollerInputSources[ index ] = null;\n\t\t\t\t\tcontrollers[ index ].disconnect( inputSource );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Notify connected\n\n\t\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.added[ i ];\n\n\t\t\t\tlet controllerIndex = controllerInputSources.indexOf( inputSource );\n\n\t\t\t\tif ( controllerIndex === - 1 ) {\n\n\t\t\t\t\t// Assign input source a controller that currently has no input source\n\n\t\t\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\t\t\tif ( i >= controllerInputSources.length ) {\n\n\t\t\t\t\t\t\tcontrollerInputSources.push( inputSource );\n\t\t\t\t\t\t\tcontrollerIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t} else if ( controllerInputSources[ i ] === null ) {\n\n\t\t\t\t\t\t\tcontrollerInputSources[ i ] = inputSource;\n\t\t\t\t\t\t\tcontrollerIndex = 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\t// If all controllers do currently receive input we ignore new ones\n\n\t\t\t\t\tif ( controllerIndex === - 1 ) break;\n\n\t\t\t\t}\n\n\t\t\t\tconst controller = controllers[ controllerIndex ];\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.connect( inputSource );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst cameraLPos = new Vector3();\n\t\tconst cameraRPos = new Vector3();\n\n\t\t/**\n\t\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t\t * the cameras' projection and world matrices have already been set.\n\t\t * And that near and far planes are identical for both cameras.\n\t\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t\t */\n\t\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t\t// VR systems will have identical far and near planes, and\n\t\t\t// most likely identical top and bottom frustum extents.\n\t\t\t// Use the left camera for these values.\n\t\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\t\tconst left = near * leftFov;\n\t\t\tconst right = near * rightFov;\n\n\t\t\t// Calculate the new camera's position offset from the\n\t\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t\t// TODO: Better way to apply this offset?\n\t\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.translateX( xOffset );\n\t\t\tcamera.translateZ( zOffset );\n\t\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t\t// Find the union of the frustum values of the cameras and scale\n\t\t\t// the values so that the near plane's position does not change in world space,\n\t\t\t// although must now be relative to the new union camera.\n\t\t\tconst near2 = near + zOffset;\n\t\t\tconst far2 = far + zOffset;\n\t\t\tconst left2 = left - xOffset;\n\t\t\tconst right2 = right + ( ipd - xOffset );\n\t\t\tconst top2 = topFov * far / far2 * near2;\n\t\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\t\t\tcamera.projectionMatrixInverse.copy( camera.projectionMatrix ).invert();\n\n\t\t}\n\n\t\tfunction updateCamera( camera, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t\t}\n\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t}\n\n\t\tthis.updateCameraXR = function ( camera ) {\n\n\t\t\tif ( session === null ) return camera;\n\n\t\t\tif ( userCamera ) {\n\n\t\t\t\tcamera = userCamera;\n\n\t\t\t}\n\n\t\t\tcameraXR.near = cameraR.near = cameraL.near = camera.near;\n\t\t\tcameraXR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\t\tif ( _currentDepthNear !== cameraXR.near || _currentDepthFar !== cameraXR.far ) {\n\n\t\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\t\tsession.updateRenderState( {\n\t\t\t\t\tdepthNear: cameraXR.near,\n\t\t\t\t\tdepthFar: cameraXR.far\n\t\t\t\t} );\n\n\t\t\t\t_currentDepthNear = cameraXR.near;\n\t\t\t\t_currentDepthFar = cameraXR.far;\n\n\t\t\t}\n\n\t\t\tconst parent = camera.parent;\n\t\t\tconst cameras = cameraXR.cameras;\n\n\t\t\tupdateCamera( cameraXR, parent );\n\n\t\t\tfor ( let 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 projection matrix for proper view frustum culling\n\n\t\t\tif ( cameras.length === 2 ) {\n\n\t\t\t\tsetProjectionFromUnion( cameraXR, cameraL, cameraR );\n\n\t\t\t} else {\n\n\t\t\t\t// assume single camera setup (AR)\n\n\t\t\t\tcameraXR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t\t}\n\n\t\t\t// update user camera and its children\n\n\t\t\tif ( userCamera ) {\n\n\t\t\t\tupdateUserCamera( cameraXR, parent );\n\n\t\t\t}\n\n\t\t\treturn cameraXR;\n\n\t\t};\n\n\t\tfunction updateUserCamera( cameraXR, parent ) {\n\n\t\t\tconst camera = userCamera;\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrix.copy( cameraXR.matrixWorld );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrix.copy( parent.matrixWorld );\n\t\t\t\tcamera.matrix.invert();\n\t\t\t\tcamera.matrix.multiply( cameraXR.matrixWorld );\n\n\t\t\t}\n\n\t\t\tcamera.matrix.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.updateMatrixWorld( true );\n\n\t\t\tconst children = camera.children;\n\n\t\t\tfor ( let 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\tcamera.projectionMatrix.copy( cameraXR.projectionMatrix );\n\t\t\tcamera.projectionMatrixInverse.copy( cameraXR.projectionMatrixInverse );\n\n\t\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\t\tcamera.fov = RAD2DEG * 2 * Math.atan( 1 / camera.projectionMatrix.elements[ 5 ] );\n\t\t\t\tcamera.zoom = 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.getFoveation = function () {\n\n\t\t\tif ( glProjLayer === null && glBaseLayer === null ) {\n\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\treturn foveation;\n\n\t\t};\n\n\t\tthis.setFoveation = function ( value ) {\n\n\t\t\t// 0 = no foveation = full resolution\n\t\t\t// 1 = maximum foveation = the edges render at lower resolution\n\n\t\t\tfoveation = value;\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\tglProjLayer.fixedFoveation = value;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null && glBaseLayer.fixedFoveation !== undefined ) {\n\n\t\t\t\tglBaseLayer.fixedFoveation = value;\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time, frame ) {\n\n\t\t\tpose = frame.getViewerPose( customReferenceSpace || referenceSpace );\n\t\t\txrFrame = frame;\n\n\t\t\tif ( pose !== null ) {\n\n\t\t\t\tconst views = pose.views;\n\n\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\trenderer.setRenderTargetFramebuffer( newRenderTarget, glBaseLayer.framebuffer );\n\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t}\n\n\t\t\t\tlet cameraXRNeedsUpdate = false;\n\n\t\t\t\t// check if it's necessary to rebuild cameraXR's camera list\n\n\t\t\t\tif ( views.length !== cameraXR.cameras.length ) {\n\n\t\t\t\t\tcameraXR.cameras.length = 0;\n\t\t\t\t\tcameraXRNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\t\tconst view = views[ i ];\n\n\t\t\t\t\tlet viewport = null;\n\n\t\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\t\tviewport = glBaseLayer.getViewport( view );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst glSubImage = glBinding.getViewSubImage( glProjLayer, view );\n\t\t\t\t\t\tviewport = glSubImage.viewport;\n\n\t\t\t\t\t\t// For side-by-side projection, we only produce a single texture for both eyes.\n\t\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\t\trenderer.setRenderTargetTextures(\n\t\t\t\t\t\t\t\tnewRenderTarget,\n\t\t\t\t\t\t\t\tglSubImage.colorTexture,\n\t\t\t\t\t\t\t\tglProjLayer.ignoreDepthValues ? undefined : glSubImage.depthStencilTexture );\n\n\t\t\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlet camera = cameras[ i ];\n\n\t\t\t\t\tif ( camera === undefined ) {\n\n\t\t\t\t\t\tcamera = new PerspectiveCamera();\n\t\t\t\t\t\tcamera.layers.enable( i );\n\t\t\t\t\t\tcamera.viewport = new Vector4();\n\t\t\t\t\t\tcameras[ i ] = camera;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\t\tcamera.matrix.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\t\tcamera.projectionMatrixInverse.copy( camera.projectionMatrix ).invert();\n\t\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\tcameraXR.matrix.copy( camera.matrix );\n\t\t\t\t\t\tcameraXR.matrix.decompose( cameraXR.position, cameraXR.quaternion, cameraXR.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( cameraXRNeedsUpdate === true ) {\n\n\t\t\t\t\t\tcameraXR.cameras.push( camera );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = controllerInputSources[ i ];\n\t\t\t\tconst controller = controllers[ i ];\n\n\t\t\t\tif ( inputSource !== null && controller !== undefined ) {\n\n\t\t\t\t\tcontroller.update( inputSource, frame, customReferenceSpace || referenceSpace );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t\t\tif ( frame.detectedPlanes ) {\n\n\t\t\t\tscope.dispatchEvent( { type: 'planesdetected', data: frame } );\n\n\t\t\t}\n\n\t\t\txrFrame = null;\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\n\t\t};\n\n\t\tthis.dispose = function () {};\n\n\t}\n\n}\n\nfunction WebGLMaterials( renderer, properties ) {\n\n\tfunction refreshTransformUniform( map, uniform ) {\n\n\t\tif ( map.matrixAutoUpdate === true ) {\n\n\t\t\tmap.updateMatrix();\n\n\t\t}\n\n\t\tuniform.value.copy( map.matrix );\n\n\t}\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tfog.color.getRGB( uniforms.fogColor.value, getUnlitUniformColorSpace( renderer ) );\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 refreshMaterialUniforms( uniforms, material, pixelRatio, height, transmissionRenderTarget ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsStandard( uniforms, material );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, transmissionRenderTarget );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\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\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\n\t\t\trefreshTransformUniform( material.bumpMap, uniforms.bumpMapTransform );\n\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.bumpScale.value *= - 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\n\t\t\trefreshTransformUniform( material.normalMap, uniforms.normalMapTransform );\n\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.normalScale.value.negate();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\n\t\t\trefreshTransformUniform( material.displacementMap, uniforms.displacementMapTransform );\n\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.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t\trefreshTransformUniform( material.emissiveMap, uniforms.emissiveMapTransform );\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t\trefreshTransformUniform( material.specularMap, uniforms.specularMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.ior.value = material.ior;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\n\t\t\t// artist-friendly light intensity scaling factor\n\t\t\tconst scaleFactor = ( renderer.useLegacyLights === true ) ? Math.PI : 1;\n\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity * scaleFactor;\n\n\t\t\trefreshTransformUniform( material.lightMap, uniforms.lightMapTransform );\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\trefreshTransformUniform( material.aoMap, uniforms.aoMapTransform );\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\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\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, pixelRatio, height ) {\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\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.uvTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\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\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\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}\n\n\tfunction refreshUniformsToon( 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.metalness.value = material.metalness;\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t\trefreshTransformUniform( material.metalnessMap, uniforms.metalnessMapTransform );\n\n\t\t}\n\n\t\tuniforms.roughness.value = material.roughness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t\trefreshTransformUniform( material.roughnessMap, uniforms.roughnessMapTransform );\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( 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, transmissionRenderTarget ) {\n\n\t\tuniforms.ior.value = material.ior; // also part of uniforms common\n\n\t\tif ( material.sheen > 0 ) {\n\n\t\t\tuniforms.sheenColor.value.copy( material.sheenColor ).multiplyScalar( material.sheen );\n\n\t\t\tuniforms.sheenRoughness.value = material.sheenRoughness;\n\n\t\t\tif ( material.sheenColorMap ) {\n\n\t\t\t\tuniforms.sheenColorMap.value = material.sheenColorMap;\n\n\t\t\t\trefreshTransformUniform( material.sheenColorMap, uniforms.sheenColorMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.sheenRoughnessMap ) {\n\n\t\t\t\tuniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;\n\n\t\t\t\trefreshTransformUniform( material.sheenRoughnessMap, uniforms.sheenRoughnessMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.clearcoat > 0 ) {\n\n\t\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\n\t\t\tif ( material.clearcoatMap ) {\n\n\t\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatMap, uniforms.clearcoatMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatRoughnessMap, uniforms.clearcoatRoughnessMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatNormalMap, uniforms.clearcoatNormalMapTransform );\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\n\t\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.iridescence > 0 ) {\n\n\t\t\tuniforms.iridescence.value = material.iridescence;\n\t\t\tuniforms.iridescenceIOR.value = material.iridescenceIOR;\n\t\t\tuniforms.iridescenceThicknessMinimum.value = material.iridescenceThicknessRange[ 0 ];\n\t\t\tuniforms.iridescenceThicknessMaximum.value = material.iridescenceThicknessRange[ 1 ];\n\n\t\t\tif ( material.iridescenceMap ) {\n\n\t\t\t\tuniforms.iridescenceMap.value = material.iridescenceMap;\n\n\t\t\t\trefreshTransformUniform( material.iridescenceMap, uniforms.iridescenceMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.iridescenceThicknessMap ) {\n\n\t\t\t\tuniforms.iridescenceThicknessMap.value = material.iridescenceThicknessMap;\n\n\t\t\t\trefreshTransformUniform( material.iridescenceThicknessMap, uniforms.iridescenceThicknessMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.transmission > 0 ) {\n\n\t\t\tuniforms.transmission.value = material.transmission;\n\t\t\tuniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture;\n\t\t\tuniforms.transmissionSamplerSize.value.set( transmissionRenderTarget.width, transmissionRenderTarget.height );\n\n\t\t\tif ( material.transmissionMap ) {\n\n\t\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\n\t\t\t\trefreshTransformUniform( material.transmissionMap, uniforms.transmissionMapTransform );\n\n\t\t\t}\n\n\t\t\tuniforms.thickness.value = material.thickness;\n\n\t\t\tif ( material.thicknessMap ) {\n\n\t\t\t\tuniforms.thicknessMap.value = material.thicknessMap;\n\n\t\t\t\trefreshTransformUniform( material.thicknessMap, uniforms.thicknessMapTransform );\n\n\t\t\t}\n\n\t\t\tuniforms.attenuationDistance.value = material.attenuationDistance;\n\t\t\tuniforms.attenuationColor.value.copy( material.attenuationColor );\n\n\t\t}\n\n\t\tif ( material.anisotropy > 0 ) {\n\n\t\t\tuniforms.anisotropyVector.value.set( material.anisotropy * Math.cos( material.anisotropyRotation ), material.anisotropy * Math.sin( material.anisotropyRotation ) );\n\n\t\t\tif ( material.anisotropyMap ) {\n\n\t\t\t\tuniforms.anisotropyMap.value = material.anisotropyMap;\n\n\t\t\t\trefreshTransformUniform( material.anisotropyMap, uniforms.anisotropyMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tuniforms.specularIntensity.value = material.specularIntensity;\n\t\tuniforms.specularColor.value.copy( material.specularColor );\n\n\t\tif ( material.specularColorMap ) {\n\n\t\t\tuniforms.specularColorMap.value = material.specularColorMap;\n\n\t\t\trefreshTransformUniform( material.specularColorMap, uniforms.specularColorMapTransform );\n\n\t\t}\n\n\t\tif ( material.specularIntensityMap ) {\n\n\t\t\tuniforms.specularIntensityMap.value = material.specularIntensityMap;\n\n\t\t\trefreshTransformUniform( material.specularIntensityMap, uniforms.specularIntensityMapTransform );\n\n\t\t}\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}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tconst light = properties.get( material ).light;\n\n\t\tuniforms.referencePosition.value.setFromMatrixPosition( light.matrixWorld );\n\t\tuniforms.nearDistance.value = light.shadow.camera.near;\n\t\tuniforms.farDistance.value = light.shadow.camera.far;\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction WebGLUniformsGroups( gl, info, capabilities, state ) {\n\n\tlet buffers = {};\n\tlet updateList = {};\n\tlet allocatedBindingPoints = [];\n\n\tconst maxBindingPoints = ( capabilities.isWebGL2 ) ? gl.getParameter( gl.MAX_UNIFORM_BUFFER_BINDINGS ) : 0; // binding points are global whereas block indices are per shader program\n\n\tfunction bind( uniformsGroup, program ) {\n\n\t\tconst webglProgram = program.program;\n\t\tstate.uniformBlockBinding( uniformsGroup, webglProgram );\n\n\t}\n\n\tfunction update( uniformsGroup, program ) {\n\n\t\tlet buffer = buffers[ uniformsGroup.id ];\n\n\t\tif ( buffer === undefined ) {\n\n\t\t\tprepareUniformsGroup( uniformsGroup );\n\n\t\t\tbuffer = createBuffer( uniformsGroup );\n\t\t\tbuffers[ uniformsGroup.id ] = buffer;\n\n\t\t\tuniformsGroup.addEventListener( 'dispose', onUniformsGroupsDispose );\n\n\t\t}\n\n\t\t// ensure to update the binding points/block indices mapping for this program\n\n\t\tconst webglProgram = program.program;\n\t\tstate.updateUBOMapping( uniformsGroup, webglProgram );\n\n\t\t// update UBO once per frame\n\n\t\tconst frame = info.render.frame;\n\n\t\tif ( updateList[ uniformsGroup.id ] !== frame ) {\n\n\t\t\tupdateBufferData( uniformsGroup );\n\n\t\t\tupdateList[ uniformsGroup.id ] = frame;\n\n\t\t}\n\n\t}\n\n\tfunction createBuffer( uniformsGroup ) {\n\n\t\t// the setup of an UBO is independent of a particular shader program but global\n\n\t\tconst bindingPointIndex = allocateBindingPointIndex();\n\t\tuniformsGroup.__bindingPointIndex = bindingPointIndex;\n\n\t\tconst buffer = gl.createBuffer();\n\t\tconst size = uniformsGroup.__size;\n\t\tconst usage = uniformsGroup.usage;\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, buffer );\n\t\tgl.bufferData( gl.UNIFORM_BUFFER, size, usage );\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, null );\n\t\tgl.bindBufferBase( gl.UNIFORM_BUFFER, bindingPointIndex, buffer );\n\n\t\treturn buffer;\n\n\t}\n\n\tfunction allocateBindingPointIndex() {\n\n\t\tfor ( let i = 0; i < maxBindingPoints; i ++ ) {\n\n\t\t\tif ( allocatedBindingPoints.indexOf( i ) === - 1 ) {\n\n\t\t\t\tallocatedBindingPoints.push( i );\n\t\t\t\treturn i;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconsole.error( 'THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.' );\n\n\t\treturn 0;\n\n\t}\n\n\tfunction updateBufferData( uniformsGroup ) {\n\n\t\tconst buffer = buffers[ uniformsGroup.id ];\n\t\tconst uniforms = uniformsGroup.uniforms;\n\t\tconst cache = uniformsGroup.__cache;\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, buffer );\n\n\t\tfor ( let i = 0, il = uniforms.length; i < il; i ++ ) {\n\n\t\t\tconst uniform = uniforms[ i ];\n\n\t\t\t// partly update the buffer if necessary\n\n\t\t\tif ( hasUniformChanged( uniform, i, cache ) === true ) {\n\n\t\t\t\tconst offset = uniform.__offset;\n\n\t\t\t\tconst values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ];\n\n\t\t\t\tlet arrayOffset = 0;\n\n\t\t\t\tfor ( let i = 0; i < values.length; i ++ ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tconst info = getUniformSize( value );\n\n\t\t\t\t\tif ( typeof value === 'number' ) {\n\n\t\t\t\t\t\tuniform.__data[ 0 ] = value;\n\t\t\t\t\t\tgl.bufferSubData( gl.UNIFORM_BUFFER, offset + arrayOffset, uniform.__data );\n\n\t\t\t\t\t} else if ( value.isMatrix3 ) {\n\n\t\t\t\t\t\t// manually converting 3x3 to 3x4\n\n\t\t\t\t\t\tuniform.__data[ 0 ] = value.elements[ 0 ];\n\t\t\t\t\t\tuniform.__data[ 1 ] = value.elements[ 1 ];\n\t\t\t\t\t\tuniform.__data[ 2 ] = value.elements[ 2 ];\n\t\t\t\t\t\tuniform.__data[ 3 ] = value.elements[ 0 ];\n\t\t\t\t\t\tuniform.__data[ 4 ] = value.elements[ 3 ];\n\t\t\t\t\t\tuniform.__data[ 5 ] = value.elements[ 4 ];\n\t\t\t\t\t\tuniform.__data[ 6 ] = value.elements[ 5 ];\n\t\t\t\t\t\tuniform.__data[ 7 ] = value.elements[ 0 ];\n\t\t\t\t\t\tuniform.__data[ 8 ] = value.elements[ 6 ];\n\t\t\t\t\t\tuniform.__data[ 9 ] = value.elements[ 7 ];\n\t\t\t\t\t\tuniform.__data[ 10 ] = value.elements[ 8 ];\n\t\t\t\t\t\tuniform.__data[ 11 ] = value.elements[ 0 ];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvalue.toArray( uniform.__data, arrayOffset );\n\n\t\t\t\t\t\tarrayOffset += info.storage / Float32Array.BYTES_PER_ELEMENT;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tgl.bufferSubData( gl.UNIFORM_BUFFER, offset, uniform.__data );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, null );\n\n\t}\n\n\tfunction hasUniformChanged( uniform, index, cache ) {\n\n\t\tconst value = uniform.value;\n\n\t\tif ( cache[ index ] === undefined ) {\n\n\t\t\t// cache entry does not exist so far\n\n\t\t\tif ( typeof value === 'number' ) {\n\n\t\t\t\tcache[ index ] = value;\n\n\t\t\t} else {\n\n\t\t\t\tconst values = Array.isArray( value ) ? value : [ value ];\n\n\t\t\t\tconst tempValues = [];\n\n\t\t\t\tfor ( let i = 0; i < values.length; i ++ ) {\n\n\t\t\t\t\ttempValues.push( values[ i ].clone() );\n\n\t\t\t\t}\n\n\t\t\t\tcache[ index ] = tempValues;\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t} else {\n\n\t\t\t// compare current value with cached entry\n\n\t\t\tif ( typeof value === 'number' ) {\n\n\t\t\t\tif ( cache[ index ] !== value ) {\n\n\t\t\t\t\tcache[ index ] = value;\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst cachedObjects = Array.isArray( cache[ index ] ) ? cache[ index ] : [ cache[ index ] ];\n\t\t\t\tconst values = Array.isArray( value ) ? value : [ value ];\n\n\t\t\t\tfor ( let i = 0; i < cachedObjects.length; i ++ ) {\n\n\t\t\t\t\tconst cachedObject = cachedObjects[ i ];\n\n\t\t\t\t\tif ( cachedObject.equals( values[ i ] ) === false ) {\n\n\t\t\t\t\t\tcachedObject.copy( values[ i ] );\n\t\t\t\t\t\treturn true;\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 false;\n\n\t}\n\n\tfunction prepareUniformsGroup( uniformsGroup ) {\n\n\t\t// determine total buffer size according to the STD140 layout\n\t\t// Hint: STD140 is the only supported layout in WebGL 2\n\n\t\tconst uniforms = uniformsGroup.uniforms;\n\n\t\tlet offset = 0; // global buffer offset in bytes\n\t\tconst chunkSize = 16; // size of a chunk in bytes\n\t\tlet chunkOffset = 0; // offset within a single chunk in bytes\n\n\t\tfor ( let i = 0, l = uniforms.length; i < l; i ++ ) {\n\n\t\t\tconst uniform = uniforms[ i ];\n\n\t\t\tconst infos = {\n\t\t\t\tboundary: 0, // bytes\n\t\t\t\tstorage: 0 // bytes\n\t\t\t};\n\n\t\t\tconst values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ];\n\n\t\t\tfor ( let j = 0, jl = values.length; j < jl; j ++ ) {\n\n\t\t\t\tconst value = values[ j ];\n\n\t\t\t\tconst info = getUniformSize( value );\n\n\t\t\t\tinfos.boundary += info.boundary;\n\t\t\t\tinfos.storage += info.storage;\n\n\t\t\t}\n\n\t\t\t// the following two properties will be used for partial buffer updates\n\n\t\t\tuniform.__data = new Float32Array( infos.storage / Float32Array.BYTES_PER_ELEMENT );\n\t\t\tuniform.__offset = offset;\n\n\t\t\t//\n\n\t\t\tif ( i > 0 ) {\n\n\t\t\t\tchunkOffset = offset % chunkSize;\n\n\t\t\t\tconst remainingSizeInChunk = chunkSize - chunkOffset;\n\n\t\t\t\t// check for chunk overflow\n\n\t\t\t\tif ( chunkOffset !== 0 && ( remainingSizeInChunk - infos.boundary ) < 0 ) {\n\n\t\t\t\t\t// add padding and adjust offset\n\n\t\t\t\t\toffset += ( chunkSize - chunkOffset );\n\t\t\t\t\tuniform.__offset = offset;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\toffset += infos.storage;\n\n\t\t}\n\n\t\t// ensure correct final padding\n\n\t\tchunkOffset = offset % chunkSize;\n\n\t\tif ( chunkOffset > 0 ) offset += ( chunkSize - chunkOffset );\n\n\t\t//\n\n\t\tuniformsGroup.__size = offset;\n\t\tuniformsGroup.__cache = {};\n\n\t\treturn this;\n\n\t}\n\n\tfunction getUniformSize( value ) {\n\n\t\tconst info = {\n\t\t\tboundary: 0, // bytes\n\t\t\tstorage: 0 // bytes\n\t\t};\n\n\t\t// determine sizes according to STD140\n\n\t\tif ( typeof value === 'number' ) {\n\n\t\t\t// float/int\n\n\t\t\tinfo.boundary = 4;\n\t\t\tinfo.storage = 4;\n\n\t\t} else if ( value.isVector2 ) {\n\n\t\t\t// vec2\n\n\t\t\tinfo.boundary = 8;\n\t\t\tinfo.storage = 8;\n\n\t\t} else if ( value.isVector3 || value.isColor ) {\n\n\t\t\t// vec3\n\n\t\t\tinfo.boundary = 16;\n\t\t\tinfo.storage = 12; // evil: vec3 must start on a 16-byte boundary but it only consumes 12 bytes\n\n\t\t} else if ( value.isVector4 ) {\n\n\t\t\t// vec4\n\n\t\t\tinfo.boundary = 16;\n\t\t\tinfo.storage = 16;\n\n\t\t} else if ( value.isMatrix3 ) {\n\n\t\t\t// mat3 (in STD140 a 3x3 matrix is represented as 3x4)\n\n\t\t\tinfo.boundary = 48;\n\t\t\tinfo.storage = 48;\n\n\t\t} else if ( value.isMatrix4 ) {\n\n\t\t\t// mat4\n\n\t\t\tinfo.boundary = 64;\n\t\t\tinfo.storage = 64;\n\n\t\t} else if ( value.isTexture ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.' );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Unsupported uniform value type.', value );\n\n\t\t}\n\n\t\treturn info;\n\n\t}\n\n\tfunction onUniformsGroupsDispose( event ) {\n\n\t\tconst uniformsGroup = event.target;\n\n\t\tuniformsGroup.removeEventListener( 'dispose', onUniformsGroupsDispose );\n\n\t\tconst index = allocatedBindingPoints.indexOf( uniformsGroup.__bindingPointIndex );\n\t\tallocatedBindingPoints.splice( index, 1 );\n\n\t\tgl.deleteBuffer( buffers[ uniformsGroup.id ] );\n\n\t\tdelete buffers[ uniformsGroup.id ];\n\t\tdelete updateList[ uniformsGroup.id ];\n\n\t}\n\n\tfunction dispose() {\n\n\t\tfor ( const id in buffers ) {\n\n\t\t\tgl.deleteBuffer( buffers[ id ] );\n\n\t\t}\n\n\t\tallocatedBindingPoints = [];\n\t\tbuffers = {};\n\t\tupdateList = {};\n\n\t}\n\n\treturn {\n\n\t\tbind: bind,\n\t\tupdate: update,\n\n\t\tdispose: dispose\n\n\t};\n\n}\n\nfunction createCanvasElement() {\n\n\tconst canvas = createElementNS( 'canvas' );\n\tcanvas.style.display = 'block';\n\treturn canvas;\n\n}\n\nclass WebGLRenderer {\n\n\tconstructor( parameters = {} ) {\n\n\t\tconst {\n\t\t\tcanvas = createCanvasElement(),\n\t\t\tcontext = null,\n\t\t\tdepth = true,\n\t\t\tstencil = true,\n\t\t\talpha = false,\n\t\t\tantialias = false,\n\t\t\tpremultipliedAlpha = true,\n\t\t\tpreserveDrawingBuffer = false,\n\t\t\tpowerPreference = 'default',\n\t\t\tfailIfMajorPerformanceCaveat = false,\n\t\t} = parameters;\n\n\t\tthis.isWebGLRenderer = true;\n\n\t\tlet _alpha;\n\n\t\tif ( context !== null ) {\n\n\t\t\t_alpha = context.getContextAttributes().alpha;\n\n\t\t} else {\n\n\t\t\t_alpha = alpha;\n\n\t\t}\n\n\t\tconst uintClearColor = new Uint32Array( 4 );\n\t\tconst intClearColor = new Int32Array( 4 );\n\n\t\tlet currentRenderList = null;\n\t\tlet currentRenderState = null;\n\n\t\t// render() can be called from within a callback triggered by another render.\n\t\t// We track this so that the nested render call gets its list and state isolated from the parent render call.\n\n\t\tconst renderListStack = [];\n\t\tconst renderStateStack = [];\n\n\t\t// public properties\n\n\t\tthis.domElement = canvas;\n\n\t\t// Debug configuration container\n\t\tthis.debug = {\n\n\t\t\t/**\n\t\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tcheckShaderErrors: true,\n\t\t\t/**\n\t\t\t * Callback for custom error reporting.\n\t\t\t * @type {?Function}\n\t\t\t */\n\t\t\tonShaderError: null\n\t\t};\n\n\t\t// clearing\n\n\t\tthis.autoClear = true;\n\t\tthis.autoClearColor = true;\n\t\tthis.autoClearDepth = true;\n\t\tthis.autoClearStencil = true;\n\n\t\t// scene graph\n\n\t\tthis.sortObjects = true;\n\n\t\t// user-defined clipping\n\n\t\tthis.clippingPlanes = [];\n\t\tthis.localClippingEnabled = false;\n\n\t\t// physically based shading\n\n\t\tthis.outputColorSpace = SRGBColorSpace;\n\n\t\t// physical lights\n\n\t\tthis.useLegacyLights = true;\n\n\t\t// tone mapping\n\n\t\tthis.toneMapping = NoToneMapping;\n\t\tthis.toneMappingExposure = 1.0;\n\n\t\t// internal properties\n\n\t\tconst _this = this;\n\n\t\tlet _isContextLost = false;\n\n\t\t// internal state cache\n\n\t\tlet _currentActiveCubeFace = 0;\n\t\tlet _currentActiveMipmapLevel = 0;\n\t\tlet _currentRenderTarget = null;\n\t\tlet _currentMaterialId = - 1;\n\n\t\tlet _currentCamera = null;\n\n\t\tconst _currentViewport = new Vector4();\n\t\tconst _currentScissor = new Vector4();\n\t\tlet _currentScissorTest = null;\n\n\t\tconst _currentClearColor = new Color( 0x000000 );\n\t\tlet _currentClearAlpha = 0;\n\n\t\t//\n\n\t\tlet _width = canvas.width;\n\t\tlet _height = canvas.height;\n\n\t\tlet _pixelRatio = 1;\n\t\tlet _opaqueSort = null;\n\t\tlet _transparentSort = null;\n\n\t\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\t\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\t\tlet _scissorTest = false;\n\n\t\t// frustum\n\n\t\tconst _frustum = new Frustum();\n\n\t\t// clipping\n\n\t\tlet _clippingEnabled = false;\n\t\tlet _localClippingEnabled = false;\n\n\t\t// transmission\n\n\t\tlet _transmissionRenderTarget = null;\n\n\t\t// camera matrices cache\n\n\t\tconst _projScreenMatrix = new Matrix4();\n\n\t\tconst _vector2 = new Vector2();\n\t\tconst _vector3 = new Vector3();\n\n\t\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\t\tfunction getTargetPixelRatio() {\n\n\t\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t\t}\n\n\t\t// initialize\n\n\t\tlet _gl = context;\n\n\t\tfunction getContext( contextNames, contextAttributes ) {\n\n\t\t\tfor ( let i = 0; i < contextNames.length; i ++ ) {\n\n\t\t\t\tconst contextName = contextNames[ i ];\n\t\t\t\tconst context = canvas.getContext( contextName, contextAttributes );\n\t\t\t\tif ( context !== null ) return context;\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\ttry {\n\n\t\t\tconst contextAttributes = {\n\t\t\t\talpha: true,\n\t\t\t\tdepth,\n\t\t\t\tstencil,\n\t\t\t\tantialias,\n\t\t\t\tpremultipliedAlpha,\n\t\t\t\tpreserveDrawingBuffer,\n\t\t\t\tpowerPreference,\n\t\t\t\tfailIfMajorPerformanceCaveat,\n\t\t\t};\n\n\t\t\t// OffscreenCanvas does not have setAttribute, see #22811\n\t\t\tif ( 'setAttribute' in canvas ) canvas.setAttribute( 'data-engine', `three.js r${REVISION}` );\n\n\t\t\t// event listeners must be registered before WebGL context is created, see #12753\n\t\t\tcanvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t\tcanvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t\tcanvas.addEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tconst contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];\n\n\t\t\t\tif ( _this.isWebGL1Renderer === true ) {\n\n\t\t\t\t\tcontextNames.shift();\n\n\t\t\t\t}\n\n\t\t\t\t_gl = getContext( contextNames, contextAttributes );\n\n\t\t\t\tif ( _gl === null ) {\n\n\t\t\t\t\tif ( getContext( contextNames ) ) {\n\n\t\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( _gl instanceof WebGLRenderingContext ) { // @deprecated, r153\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGL 1 support was deprecated in r153 and will be removed in r163.' );\n\n\t\t\t}\n\n\t\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\t\tthrow error;\n\n\t\t}\n\n\t\tlet extensions, capabilities, state, info;\n\t\tlet properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n\t\tlet programCache, materials, renderLists, renderStates, clipping, shadowMap;\n\n\t\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\t\tlet utils, bindingStates, uniformsGroups;\n\n\t\tfunction initGLContext() {\n\n\t\t\textensions = new WebGLExtensions( _gl );\n\n\t\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\t\textensions.init( capabilities );\n\n\t\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\n\t\t\tinfo = new WebGLInfo( _gl );\n\t\t\tproperties = new WebGLProperties();\n\t\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\t\tcubemaps = new WebGLCubeMaps( _this );\n\t\t\tcubeuvmaps = new WebGLCubeUVMaps( _this );\n\t\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\t\tbindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );\n\t\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\t\tmorphtargets = new WebGLMorphtargets( _gl, capabilities, textures );\n\t\t\tclipping = new WebGLClipping( properties );\n\t\t\tprogramCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );\n\t\t\tmaterials = new WebGLMaterials( _this, properties );\n\t\t\trenderLists = new WebGLRenderLists();\n\t\t\trenderStates = new WebGLRenderStates( extensions, capabilities );\n\t\t\tbackground = new WebGLBackground( _this, cubemaps, cubeuvmaps, state, objects, _alpha, premultipliedAlpha );\n\t\t\tshadowMap = new WebGLShadowMap( _this, objects, capabilities );\n\t\t\tuniformsGroups = new WebGLUniformsGroups( _gl, info, capabilities, state );\n\n\t\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\t\tinfo.programs = programCache.programs;\n\n\t\t\t_this.capabilities = capabilities;\n\t\t\t_this.extensions = extensions;\n\t\t\t_this.properties = properties;\n\t\t\t_this.renderLists = renderLists;\n\t\t\t_this.shadowMap = shadowMap;\n\t\t\t_this.state = state;\n\t\t\t_this.info = info;\n\n\t\t}\n\n\t\tinitGLContext();\n\n\t\t// xr\n\n\t\tconst xr = new WebXRManager( _this, _gl );\n\n\t\tthis.xr = xr;\n\n\t\t// API\n\n\t\tthis.getContext = function () {\n\n\t\t\treturn _gl;\n\n\t\t};\n\n\t\tthis.getContextAttributes = function () {\n\n\t\t\treturn _gl.getContextAttributes();\n\n\t\t};\n\n\t\tthis.forceContextLoss = function () {\n\n\t\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\t\tif ( extension ) extension.loseContext();\n\n\t\t};\n\n\t\tthis.forceContextRestore = function () {\n\n\t\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\t\tif ( extension ) extension.restoreContext();\n\n\t\t};\n\n\t\tthis.getPixelRatio = function () {\n\n\t\t\treturn _pixelRatio;\n\n\t\t};\n\n\t\tthis.setPixelRatio = function ( value ) {\n\n\t\t\tif ( value === undefined ) return;\n\n\t\t\t_pixelRatio = value;\n\n\t\t\tthis.setSize( _width, _height, false );\n\n\t\t};\n\n\t\tthis.getSize = function ( target ) {\n\n\t\t\treturn target.set( _width, _height );\n\n\t\t};\n\n\t\tthis.setSize = function ( width, height, updateStyle = true ) {\n\n\t\t\tif ( xr.isPresenting ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\tcanvas.width = Math.floor( width * _pixelRatio );\n\t\t\tcanvas.height = Math.floor( height * _pixelRatio );\n\n\t\t\tif ( updateStyle === true ) {\n\n\t\t\t\tcanvas.style.width = width + 'px';\n\t\t\t\tcanvas.style.height = height + 'px';\n\n\t\t\t}\n\n\t\t\tthis.setViewport( 0, 0, width, height );\n\n\t\t};\n\n\t\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t\t};\n\n\t\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\t_pixelRatio = pixelRatio;\n\n\t\t\tcanvas.width = Math.floor( width * pixelRatio );\n\t\t\tcanvas.height = Math.floor( height * pixelRatio );\n\n\t\t\tthis.setViewport( 0, 0, width, height );\n\n\t\t};\n\n\t\tthis.getCurrentViewport = function ( target ) {\n\n\t\t\treturn target.copy( _currentViewport );\n\n\t\t};\n\n\t\tthis.getViewport = function ( target ) {\n\n\t\t\treturn target.copy( _viewport );\n\n\t\t};\n\n\t\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\t\tif ( x.isVector4 ) {\n\n\t\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t\t} else {\n\n\t\t\t\t_viewport.set( x, y, width, height );\n\n\t\t\t}\n\n\t\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t\t};\n\n\t\tthis.getScissor = function ( target ) {\n\n\t\t\treturn target.copy( _scissor );\n\n\t\t};\n\n\t\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\t\tif ( x.isVector4 ) {\n\n\t\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t\t} else {\n\n\t\t\t\t_scissor.set( x, y, width, height );\n\n\t\t\t}\n\n\t\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t\t};\n\n\t\tthis.getScissorTest = function () {\n\n\t\t\treturn _scissorTest;\n\n\t\t};\n\n\t\tthis.setScissorTest = function ( boolean ) {\n\n\t\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t\t};\n\n\t\tthis.setOpaqueSort = function ( method ) {\n\n\t\t\t_opaqueSort = method;\n\n\t\t};\n\n\t\tthis.setTransparentSort = function ( method ) {\n\n\t\t\t_transparentSort = method;\n\n\t\t};\n\n\t\t// Clearing\n\n\t\tthis.getClearColor = function ( target ) {\n\n\t\t\treturn target.copy( background.getClearColor() );\n\n\t\t};\n\n\t\tthis.setClearColor = function () {\n\n\t\t\tbackground.setClearColor.apply( background, arguments );\n\n\t\t};\n\n\t\tthis.getClearAlpha = function () {\n\n\t\t\treturn background.getClearAlpha();\n\n\t\t};\n\n\t\tthis.setClearAlpha = function () {\n\n\t\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t\t};\n\n\t\tthis.clear = function ( color = true, depth = true, stencil = true ) {\n\n\t\t\tlet bits = 0;\n\n\t\t\tif ( color ) {\n\n\t\t\t\t// check if we're trying to clear an integer target\n\t\t\t\tlet isIntegerFormat = false;\n\t\t\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t\t\tconst targetFormat = _currentRenderTarget.texture.format;\n\t\t\t\t\tisIntegerFormat = targetFormat === RGBAIntegerFormat ||\n\t\t\t\t\t\ttargetFormat === RGIntegerFormat ||\n\t\t\t\t\t\ttargetFormat === RedIntegerFormat;\n\n\t\t\t\t}\n\n\t\t\t\t// use the appropriate clear functions to clear the target if it's a signed\n\t\t\t\t// or unsigned integer target\n\t\t\t\tif ( isIntegerFormat ) {\n\n\t\t\t\t\tconst targetType = _currentRenderTarget.texture.type;\n\t\t\t\t\tconst isUnsignedType = targetType === UnsignedByteType ||\n\t\t\t\t\t\ttargetType === UnsignedIntType ||\n\t\t\t\t\t\ttargetType === UnsignedShortType ||\n\t\t\t\t\t\ttargetType === UnsignedInt248Type ||\n\t\t\t\t\t\ttargetType === UnsignedShort4444Type ||\n\t\t\t\t\t\ttargetType === UnsignedShort5551Type;\n\n\t\t\t\t\tconst clearColor = background.getClearColor();\n\t\t\t\t\tconst a = background.getClearAlpha();\n\t\t\t\t\tconst r = clearColor.r;\n\t\t\t\t\tconst g = clearColor.g;\n\t\t\t\t\tconst b = clearColor.b;\n\n\t\t\t\t\tconst __webglFramebuffer = properties.get( _currentRenderTarget ).__webglFramebuffer;\n\n\t\t\t\t\tif ( isUnsignedType ) {\n\n\t\t\t\t\t\tuintClearColor[ 0 ] = r;\n\t\t\t\t\t\tuintClearColor[ 1 ] = g;\n\t\t\t\t\t\tuintClearColor[ 2 ] = b;\n\t\t\t\t\t\tuintClearColor[ 3 ] = a;\n\t\t\t\t\t\t_gl.clearBufferuiv( _gl.COLOR, __webglFramebuffer, uintClearColor );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tintClearColor[ 0 ] = r;\n\t\t\t\t\t\tintClearColor[ 1 ] = g;\n\t\t\t\t\t\tintClearColor[ 2 ] = b;\n\t\t\t\t\t\tintClearColor[ 3 ] = a;\n\t\t\t\t\t\t_gl.clearBufferiv( _gl.COLOR, __webglFramebuffer, intClearColor );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbits |= _gl.COLOR_BUFFER_BIT;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( depth ) bits |= _gl.DEPTH_BUFFER_BIT;\n\t\t\tif ( stencil ) bits |= _gl.STENCIL_BUFFER_BIT;\n\n\t\t\t_gl.clear( bits );\n\n\t\t};\n\n\t\tthis.clearColor = function () {\n\n\t\t\tthis.clear( true, false, false );\n\n\t\t};\n\n\t\tthis.clearDepth = function () {\n\n\t\t\tthis.clear( false, true, false );\n\n\t\t};\n\n\t\tthis.clearStencil = function () {\n\n\t\t\tthis.clear( false, false, true );\n\n\t\t};\n\n\t\t//\n\n\t\tthis.dispose = function () {\n\n\t\t\tcanvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t\tcanvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t\tcanvas.removeEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\t\trenderLists.dispose();\n\t\t\trenderStates.dispose();\n\t\t\tproperties.dispose();\n\t\t\tcubemaps.dispose();\n\t\t\tcubeuvmaps.dispose();\n\t\t\tobjects.dispose();\n\t\t\tbindingStates.dispose();\n\t\t\tuniformsGroups.dispose();\n\t\t\tprogramCache.dispose();\n\n\t\t\txr.dispose();\n\n\t\t\txr.removeEventListener( 'sessionstart', onXRSessionStart );\n\t\t\txr.removeEventListener( 'sessionend', onXRSessionEnd );\n\n\t\t\tif ( _transmissionRenderTarget ) {\n\n\t\t\t\t_transmissionRenderTarget.dispose();\n\t\t\t\t_transmissionRenderTarget = null;\n\n\t\t\t}\n\n\t\t\tanimation.stop();\n\n\t\t};\n\n\t\t// Events\n\n\t\tfunction onContextLost( event ) {\n\n\t\t\tevent.preventDefault();\n\n\t\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t\t_isContextLost = true;\n\n\t\t}\n\n\t\tfunction onContextRestore( /* event */ ) {\n\n\t\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t\t_isContextLost = false;\n\n\t\t\tconst infoAutoReset = info.autoReset;\n\t\t\tconst shadowMapEnabled = shadowMap.enabled;\n\t\t\tconst shadowMapAutoUpdate = shadowMap.autoUpdate;\n\t\t\tconst shadowMapNeedsUpdate = shadowMap.needsUpdate;\n\t\t\tconst shadowMapType = shadowMap.type;\n\n\t\t\tinitGLContext();\n\n\t\t\tinfo.autoReset = infoAutoReset;\n\t\t\tshadowMap.enabled = shadowMapEnabled;\n\t\t\tshadowMap.autoUpdate = shadowMapAutoUpdate;\n\t\t\tshadowMap.needsUpdate = shadowMapNeedsUpdate;\n\t\t\tshadowMap.type = shadowMapType;\n\n\t\t}\n\n\t\tfunction onContextCreationError( event ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: A WebGL context could not be created. Reason: ', event.statusMessage );\n\n\t\t}\n\n\t\tfunction onMaterialDispose( event ) {\n\n\t\t\tconst material = event.target;\n\n\t\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\t\tdeallocateMaterial( material );\n\n\t\t}\n\n\t\t// Buffer deallocation\n\n\t\tfunction deallocateMaterial( material ) {\n\n\t\t\treleaseMaterialProgramReferences( material );\n\n\t\t\tproperties.remove( material );\n\n\t\t}\n\n\n\t\tfunction releaseMaterialProgramReferences( material ) {\n\n\t\t\tconst programs = properties.get( material ).programs;\n\n\t\t\tif ( programs !== undefined ) {\n\n\t\t\t\tprograms.forEach( function ( program ) {\n\n\t\t\t\t\tprogramCache.releaseProgram( program );\n\n\t\t\t\t} );\n\n\t\t\t\tif ( material.isShaderMaterial ) {\n\n\t\t\t\t\tprogramCache.releaseShaderCache( material );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Buffer rendering\n\n\t\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\t\tconst program = setProgram( camera, scene, geometry, material, object );\n\n\t\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t\t//\n\n\t\t\tlet index = geometry.index;\n\t\t\tlet rangeFactor = 1;\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\t\trangeFactor = 2;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tconst drawRange = geometry.drawRange;\n\t\t\tconst position = geometry.attributes.position;\n\n\t\t\tlet drawStart = drawRange.start * rangeFactor;\n\t\t\tlet drawEnd = ( drawRange.start + drawRange.count ) * rangeFactor;\n\n\t\t\tif ( group !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, group.start * rangeFactor );\n\t\t\t\tdrawEnd = Math.min( drawEnd, ( group.start + group.count ) * rangeFactor );\n\n\t\t\t}\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, 0 );\n\t\t\t\tdrawEnd = Math.min( drawEnd, index.count );\n\n\t\t\t} else if ( position !== undefined && position !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, 0 );\n\t\t\t\tdrawEnd = Math.min( drawEnd, position.count );\n\n\t\t\t}\n\n\t\t\tconst drawCount = drawEnd - drawStart;\n\n\t\t\tif ( drawCount < 0 || drawCount === Infinity ) return;\n\n\t\t\t//\n\n\t\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\t\tlet attribute;\n\t\t\tlet renderer = bufferRenderer;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tattribute = attributes.get( index );\n\n\t\t\t\trenderer = indexedBufferRenderer;\n\t\t\t\trenderer.setIndex( attribute );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( object.isMesh ) {\n\n\t\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isLine ) {\n\n\t\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\t\trenderer.setMode( _gl.LINE_LOOP );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderer.setMode( _gl.LINE_STRIP );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isPoints ) {\n\n\t\t\t\trenderer.setMode( _gl.POINTS );\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\n\t\t\t}\n\n\t\t\tif ( object.isInstancedMesh ) {\n\n\t\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\n\n\t\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\t\tconst maxInstanceCount = geometry._maxInstanceCount !== undefined ? geometry._maxInstanceCount : Infinity;\n\t\t\t\tconst instanceCount = Math.min( geometry.instanceCount, maxInstanceCount );\n\n\t\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Compile\n\n\t\tthis.compile = function ( scene, camera ) {\n\n\t\t\tfunction prepare( material, scene, object ) {\n\n\t\t\t\tif ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {\n\n\t\t\t\t\tmaterial.side = BackSide;\n\t\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\t\tmaterial.side = FrontSide;\n\t\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tcurrentRenderState = renderStates.get( scene );\n\t\t\tcurrentRenderState.init();\n\n\t\t\trenderStateStack.push( currentRenderState );\n\n\t\t\tscene.traverseVisible( function ( object ) {\n\n\t\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\tcurrentRenderState.setupLights( _this.useLegacyLights );\n\n\t\t\tscene.traverse( function ( object ) {\n\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( material ) {\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\t\tconst material2 = material[ i ];\n\n\t\t\t\t\t\t\tprepare( material2, scene, object );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tprepare( material, scene, object );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\trenderStateStack.pop();\n\t\t\tcurrentRenderState = null;\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time ) {\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t\t}\n\n\t\tfunction onXRSessionStart() {\n\n\t\t\tanimation.stop();\n\n\t\t}\n\n\t\tfunction onXRSessionEnd() {\n\n\t\t\tanimation.start();\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tif ( typeof self !== 'undefined' ) animation.setContext( self );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\t\t\txr.setAnimationLoop( callback );\n\n\t\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t\t};\n\n\t\txr.addEventListener( 'sessionstart', onXRSessionStart );\n\t\txr.addEventListener( 'sessionend', onXRSessionEnd );\n\n\t\t// Rendering\n\n\t\tthis.render = function ( scene, camera ) {\n\n\t\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( _isContextLost === true ) return;\n\n\t\t\t// update scene graph\n\n\t\t\tif ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t\t// update camera matrices and frustum\n\n\t\t\tif ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();\n\n\t\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\t\tcamera = xr.updateCameraXR( camera ); // use XR camera for rendering\n\n\t\t\t}\n\n\t\t\t//\n\t\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, _currentRenderTarget );\n\n\t\t\tcurrentRenderState = renderStates.get( scene, renderStateStack.length );\n\t\t\tcurrentRenderState.init();\n\n\t\t\trenderStateStack.push( currentRenderState );\n\n\t\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t\t_clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled );\n\n\t\t\tcurrentRenderList = renderLists.get( scene, renderListStack.length );\n\t\t\tcurrentRenderList.init();\n\n\t\t\trenderListStack.push( currentRenderList );\n\n\t\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\t\tcurrentRenderList.finish();\n\n\t\t\tif ( _this.sortObjects === true ) {\n\n\t\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( _clippingEnabled === true ) clipping.beginShadows();\n\n\t\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\t\tif ( _clippingEnabled === true ) clipping.endShadows();\n\n\t\t\t//\n\n\t\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\t\t\tthis.info.render.frame ++;\n\n\t\t\t//\n\n\t\t\tbackground.render( currentRenderList, scene );\n\n\t\t\t// render scene\n\n\t\t\tcurrentRenderState.setupLights( _this.useLegacyLights );\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\tconst cameras = camera.cameras;\n\n\t\t\t\tfor ( let i = 0, l = cameras.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst camera2 = cameras[ i ];\n\n\t\t\t\t\trenderScene( currentRenderList, scene, camera2, camera2.viewport );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\trenderScene( currentRenderList, scene, camera );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t\t// _gl.finish();\n\n\t\t\tbindingStates.resetDefaultState();\n\t\t\t_currentMaterialId = - 1;\n\t\t\t_currentCamera = null;\n\n\t\t\trenderStateStack.pop();\n\n\t\t\tif ( renderStateStack.length > 0 ) {\n\n\t\t\t\tcurrentRenderState = renderStateStack[ renderStateStack.length - 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tcurrentRenderState = null;\n\n\t\t\t}\n\n\t\t\trenderListStack.pop();\n\n\t\t\tif ( renderListStack.length > 0 ) {\n\n\t\t\t\tcurrentRenderList = renderListStack[ renderListStack.length - 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tcurrentRenderList = null;\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\t\tif ( object.visible === false ) return;\n\n\t\t\tconst visible = object.layers.test( camera.layers );\n\n\t\t\tif ( visible ) {\n\n\t\t\t\tif ( object.isGroup ) {\n\n\t\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t\t\t// update skeleton only once in a frame\n\n\t\t\t\t\t\t\tif ( object.skeleton.frame !== info.render.frame ) {\n\n\t\t\t\t\t\t\t\tobject.skeleton.update();\n\t\t\t\t\t\t\t\tobject.skeleton.frame = info.render.frame;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t\tif ( object.boundingSphere !== undefined ) {\n\n\t\t\t\t\t\t\t\tif ( object.boundingSphere === null ) object.computeBoundingSphere();\n\t\t\t\t\t\t\t\t_vector3.copy( object.boundingSphere.center );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\t\t\t\t\t\t\t\t_vector3.copy( geometry.boundingSphere.center );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_vector3\n\t\t\t\t\t\t\t\t.applyMatrix4( object.matrixWorld )\n\t\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\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\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\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\tconst children = object.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderScene( currentRenderList, scene, camera, viewport ) {\n\n\t\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\t\tconst transmissiveObjects = currentRenderList.transmissive;\n\t\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\t\tcurrentRenderState.setupLightsView( camera );\n\n\t\t\tif ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, camera );\n\n\t\t\tif ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera );\n\n\t\t\tif ( viewport ) state.viewport( _currentViewport.copy( viewport ) );\n\n\t\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\t\tif ( transmissiveObjects.length > 0 ) renderObjects( transmissiveObjects, scene, camera );\n\t\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\t\tstate.buffers.depth.setTest( true );\n\t\t\tstate.buffers.depth.setMask( true );\n\t\t\tstate.buffers.color.setMask( true );\n\n\t\t\tstate.setPolygonOffset( false );\n\n\t\t}\n\n\t\tfunction renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera ) {\n\n\t\t\tconst isWebGL2 = capabilities.isWebGL2;\n\n\t\t\tif ( _transmissionRenderTarget === null ) {\n\n\t\t\t\t_transmissionRenderTarget = new WebGLRenderTarget( 1, 1, {\n\t\t\t\t\tgenerateMipmaps: true,\n\t\t\t\t\ttype: extensions.has( 'EXT_color_buffer_half_float' ) ? HalfFloatType : UnsignedByteType,\n\t\t\t\t\tminFilter: LinearMipmapLinearFilter,\n\t\t\t\t\tsamples: ( isWebGL2 && antialias === true ) ? 4 : 0\n\t\t\t\t} );\n\n\t\t\t\t// debug\n\n\t\t\t\t/*\n\t\t\t\tconst geometry = new PlaneGeometry();\n\t\t\t\tconst material = new MeshBasicMaterial( { map: _transmissionRenderTarget.texture } );\n\n\t\t\t\tconst mesh = new Mesh( geometry, material );\n\t\t\t\tscene.add( mesh );\n\t\t\t\t*/\n\n\t\t\t}\n\n\t\t\t_this.getDrawingBufferSize( _vector2 );\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t_transmissionRenderTarget.setSize( _vector2.x, _vector2.y );\n\n\t\t\t} else {\n\n\t\t\t\t_transmissionRenderTarget.setSize( floorPowerOfTwo( _vector2.x ), floorPowerOfTwo( _vector2.y ) );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tconst currentRenderTarget = _this.getRenderTarget();\n\t\t\t_this.setRenderTarget( _transmissionRenderTarget );\n\n\t\t\t_this.getClearColor( _currentClearColor );\n\t\t\t_currentClearAlpha = _this.getClearAlpha();\n\t\t\tif ( _currentClearAlpha < 1 ) _this.setClearColor( 0xffffff, 0.5 );\n\n\t\t\t_this.clear();\n\n\t\t\t// Turn off the features which can affect the frag color for opaque objects pass.\n\t\t\t// Otherwise they are applied twice in opaque objects pass and transmission objects pass.\n\t\t\tconst currentToneMapping = _this.toneMapping;\n\t\t\t_this.toneMapping = NoToneMapping;\n\n\t\t\trenderObjects( opaqueObjects, scene, camera );\n\n\t\t\ttextures.updateMultisampleRenderTarget( _transmissionRenderTarget );\n\t\t\ttextures.updateRenderTargetMipmap( _transmissionRenderTarget );\n\n\t\t\tlet renderTargetNeedsUpdate = false;\n\n\t\t\tfor ( let i = 0, l = transmissiveObjects.length; i < l; i ++ ) {\n\n\t\t\t\tconst renderItem = transmissiveObjects[ i ];\n\n\t\t\t\tconst object = renderItem.object;\n\t\t\t\tconst geometry = renderItem.geometry;\n\t\t\t\tconst material = renderItem.material;\n\t\t\t\tconst group = renderItem.group;\n\n\t\t\t\tif ( material.side === DoubleSide && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\tconst currentSide = material.side;\n\n\t\t\t\t\tmaterial.side = BackSide;\n\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t\t\tmaterial.side = currentSide;\n\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t\trenderTargetNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( renderTargetNeedsUpdate === true ) {\n\n\t\t\t\ttextures.updateMultisampleRenderTarget( _transmissionRenderTarget );\n\t\t\t\ttextures.updateRenderTargetMipmap( _transmissionRenderTarget );\n\n\t\t\t}\n\n\t\t\t_this.setRenderTarget( currentRenderTarget );\n\n\t\t\t_this.setClearColor( _currentClearColor, _currentClearAlpha );\n\n\t\t\t_this.toneMapping = currentToneMapping;\n\n\t\t}\n\n\t\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\t\tconst object = renderItem.object;\n\t\t\t\tconst geometry = renderItem.geometry;\n\t\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\t\tconst group = renderItem.group;\n\n\t\t\t\tif ( object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\n\t\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\t\tmaterial.onBeforeRender( _this, scene, camera, geometry, object, group );\n\n\t\t\tif ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {\n\n\t\t\t\tmaterial.side = BackSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t\tmaterial.side = FrontSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t} else {\n\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t}\n\n\t\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\n\t\t}\n\n\t\tfunction getProgram( material, scene, object ) {\n\n\t\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\t\tconst materialProperties = properties.get( material );\n\n\t\t\tconst lights = currentRenderState.state.lights;\n\t\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\t\tconst lightsStateVersion = lights.state.version;\n\n\t\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object );\n\t\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\t\tlet programs = materialProperties.programs;\n\n\t\t\t// always update environment and fog - changing these trigger an getProgram call, but it's possible that the program doesn't change\n\n\t\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tmaterialProperties.fog = scene.fog;\n\t\t\tmaterialProperties.envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || materialProperties.environment );\n\n\t\t\tif ( programs === undefined ) {\n\n\t\t\t\t// new material\n\n\t\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\t\tprograms = new Map();\n\t\t\t\tmaterialProperties.programs = programs;\n\n\t\t\t}\n\n\t\t\tlet program = programs.get( programCacheKey );\n\n\t\t\tif ( program !== undefined ) {\n\n\t\t\t\t// early out if program and light state is identical\n\n\t\t\t\tif ( materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion ) {\n\n\t\t\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t\t\treturn program;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tparameters.uniforms = programCache.getUniforms( material );\n\n\t\t\t\tmaterial.onBuild( object, parameters, _this );\n\n\t\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\t\t\t\tprograms.set( programCacheKey, program );\n\n\t\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\n\t\t\t}\n\n\t\t\tconst uniforms = materialProperties.uniforms;\n\n\t\t\tif ( ( ! material.isShaderMaterial && ! material.isRawShaderMaterial ) || material.clipping === true ) {\n\n\t\t\t\tuniforms.clippingPlanes = clipping.uniform;\n\n\t\t\t}\n\n\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t// store the light setup it was created for\n\n\t\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\t\tuniforms.ltc_1.value = lights.state.rectAreaLTC1;\n\t\t\t\tuniforms.ltc_2.value = lights.state.rectAreaLTC2;\n\t\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\t\tuniforms.spotLightMatrix.value = lights.state.spotLightMatrix;\n\t\t\t\tuniforms.spotLightMap.value = lights.state.spotLightMap;\n\t\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t\t}\n\n\t\t\tconst progUniforms = program.getUniforms();\n\t\t\tconst uniformsList = WebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\t\tmaterialProperties.currentProgram = program;\n\t\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t\t\treturn program;\n\n\t\t}\n\n\t\tfunction updateCommonMaterialProperties( material, parameters ) {\n\n\t\t\tconst materialProperties = properties.get( material );\n\n\t\t\tmaterialProperties.outputColorSpace = parameters.outputColorSpace;\n\t\t\tmaterialProperties.instancing = parameters.instancing;\n\t\t\tmaterialProperties.skinning = parameters.skinning;\n\t\t\tmaterialProperties.morphTargets = parameters.morphTargets;\n\t\t\tmaterialProperties.morphNormals = parameters.morphNormals;\n\t\t\tmaterialProperties.morphColors = parameters.morphColors;\n\t\t\tmaterialProperties.morphTargetsCount = parameters.morphTargetsCount;\n\t\t\tmaterialProperties.numClippingPlanes = parameters.numClippingPlanes;\n\t\t\tmaterialProperties.numIntersection = parameters.numClipIntersection;\n\t\t\tmaterialProperties.vertexAlphas = parameters.vertexAlphas;\n\t\t\tmaterialProperties.vertexTangents = parameters.vertexTangents;\n\t\t\tmaterialProperties.toneMapping = parameters.toneMapping;\n\n\t\t}\n\n\t\tfunction setProgram( camera, scene, geometry, material, object ) {\n\n\t\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\t\ttextures.resetTextureUnits();\n\n\t\t\tconst fog = scene.fog;\n\t\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tconst colorSpace = ( _currentRenderTarget === null ) ? _this.outputColorSpace : ( _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace );\n\t\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\t\tconst vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n\t\t\tconst vertexTangents = !! geometry.attributes.tangent && ( !! material.normalMap || material.anisotropy > 0 );\n\t\t\tconst morphTargets = !! geometry.morphAttributes.position;\n\t\t\tconst morphNormals = !! geometry.morphAttributes.normal;\n\t\t\tconst morphColors = !! geometry.morphAttributes.color;\n\t\t\tconst toneMapping = material.toneMapped ? _this.toneMapping : NoToneMapping;\n\n\t\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\t\tconst materialProperties = properties.get( material );\n\t\t\tconst lights = currentRenderState.state.lights;\n\n\t\t\tif ( _clippingEnabled === true ) {\n\n\t\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\t\tconst useCache =\n\t\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t\t// (#8465, #8379)\n\t\t\t\t\tclipping.setState( material, camera, useCache );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet needsProgramChange = false;\n\n\t\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\t\tif ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.outputColorSpace !== colorSpace ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancing === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isInstancedMesh && materialProperties.instancing === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isSkinnedMesh && materialProperties.skinning === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isSkinnedMesh && materialProperties.skinning === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.envMap !== envMap ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( material.fog === true && materialProperties.fog !== fog ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t\t( materialProperties.numClippingPlanes !== clipping.numPlanes ||\n\t\t\t\t\tmaterialProperties.numIntersection !== clipping.numIntersection ) ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.vertexAlphas !== vertexAlphas ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.vertexTangents !== vertexTangents ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphTargets !== morphTargets ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphNormals !== morphNormals ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphColors !== morphColors ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.toneMapping !== toneMapping ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( capabilities.isWebGL2 === true && materialProperties.morphTargetsCount !== morphTargetsCount ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tneedsProgramChange = true;\n\t\t\t\tmaterialProperties.__version = material.version;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet program = materialProperties.currentProgram;\n\n\t\t\tif ( needsProgramChange === true ) {\n\n\t\t\t\tprogram = getProgram( material, scene, object );\n\n\t\t\t}\n\n\t\t\tlet refreshProgram = false;\n\t\t\tlet refreshMaterial = false;\n\t\t\tlet refreshLights = false;\n\n\t\t\tconst p_uniforms = program.getUniforms(),\n\t\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\t\trefreshProgram = true;\n\t\t\t\trefreshMaterial = true;\n\t\t\t\trefreshLights = true;\n\n\t\t\t}\n\n\t\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t\t_currentMaterialId = material.id;\n\n\t\t\t\trefreshMaterial = true;\n\n\t\t\t}\n\n\t\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t\t}\n\n\t\t\t\t// load material specific uniforms\n\t\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t\t}\n\n\t\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\t\tmaterial.isShadowMaterial ||\n\t\t\t\t\tobject.isSkinnedMesh ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// skinning and morph target uniforms must be set even if material didn't change\n\t\t\t// auto-setting of texture unit for bone and morph texture must go before other textures\n\t\t\t// otherwise textures used for skinning and morphing can take over texture units reserved for other material textures\n\n\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\t\tconst skeleton = object.skeleton;\n\n\t\t\t\tif ( skeleton ) {\n\n\t\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\t\tif ( skeleton.boneTexture === null ) skeleton.computeBoneTexture();\n\n\t\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\t\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\t\tif ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined && capabilities.isWebGL2 === true ) ) {\n\n\t\t\t\tmorphtargets.update( object, geometry, program );\n\n\t\t\t}\n\n\t\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t\t}\n\n\t\t\t// https://github.com/mrdoob/three.js/pull/24467#issuecomment-1209031512\n\n\t\t\tif ( material.isMeshGouraudMaterial && material.envMap !== null ) {\n\n\t\t\t\tm_uniforms.envMap.value = envMap;\n\n\t\t\t\tm_uniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\t}\n\n\t\t\tif ( refreshMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t\t// values\n\t\t\t\t\t//\n\t\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t\t// the GL state when required\n\n\t\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t\t}\n\n\t\t\t\t// refresh uniforms common to several materials\n\n\t\t\t\tif ( fog && material.fog === true ) {\n\n\t\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t\t}\n\n\t\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, _transmissionRenderTarget );\n\n\t\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\n\t\t\t}\n\n\t\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\t\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t\t}\n\n\t\t\t// common matrices\n\n\t\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\t\t// UBOs\n\n\t\t\tif ( material.isShaderMaterial || material.isRawShaderMaterial ) {\n\n\t\t\t\tconst groups = material.uniformsGroups;\n\n\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\t\t\tuniformsGroups.update( group, program );\n\t\t\t\t\t\tuniformsGroups.bind( group, program );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn program;\n\n\t\t}\n\n\t\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\t\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\t\tuniforms.directionalLights.needsUpdate = value;\n\t\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\t\tuniforms.pointLights.needsUpdate = value;\n\t\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\t\tuniforms.spotLights.needsUpdate = value;\n\t\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t\t}\n\n\t\tfunction materialNeedsLights( material ) {\n\n\t\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t\t}\n\n\t\tthis.getActiveCubeFace = function () {\n\n\t\t\treturn _currentActiveCubeFace;\n\n\t\t};\n\n\t\tthis.getActiveMipmapLevel = function () {\n\n\t\t\treturn _currentActiveMipmapLevel;\n\n\t\t};\n\n\t\tthis.getRenderTarget = function () {\n\n\t\t\treturn _currentRenderTarget;\n\n\t\t};\n\n\t\tthis.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) {\n\n\t\t\tproperties.get( renderTarget.texture ).__webglTexture = colorTexture;\n\t\t\tproperties.get( renderTarget.depthTexture ).__webglTexture = depthTexture;\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\trenderTargetProperties.__hasExternalTextures = true;\n\n\t\t\tif ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\t\trenderTargetProperties.__autoAllocateDepthBuffer = depthTexture === undefined;\n\n\t\t\t\tif ( ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\t\t\t// The multisample_render_to_texture extension doesn't work properly if there\n\t\t\t\t\t// are midframe flushes and an external depth buffer. Disable use of the extension.\n\t\t\t\t\tif ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided' );\n\t\t\t\t\t\trenderTargetProperties.__useRenderToTexture = 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.setRenderTargetFramebuffer = function ( renderTarget, defaultFramebuffer ) {\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\trenderTargetProperties.__webglFramebuffer = defaultFramebuffer;\n\t\t\trenderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === undefined;\n\n\t\t};\n\n\t\tthis.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {\n\n\t\t\t_currentRenderTarget = renderTarget;\n\t\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\t\tlet useDefaultFramebuffer = true;\n\t\t\tlet framebuffer = null;\n\t\t\tlet isCube = false;\n\t\t\tlet isRenderTarget3D = false;\n\n\t\t\tif ( renderTarget ) {\n\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\tif ( renderTargetProperties.__useDefaultFramebuffer !== undefined ) {\n\n\t\t\t\t\t// We need to make sure to rebind the framebuffer.\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\t\t\t\t\tuseDefaultFramebuffer = false;\n\n\t\t\t\t} else if ( renderTargetProperties.__webglFramebuffer === undefined ) {\n\n\t\t\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t\t\t} else if ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\t\t\t// Color and depth texture must be rebound in order for the swapchain to update.\n\t\t\t\t\ttextures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture );\n\n\t\t\t\t}\n\n\t\t\t\tconst texture = renderTarget.texture;\n\n\t\t\t\tif ( texture.isData3DTexture || texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tisRenderTarget3D = true;\n\n\t\t\t\t}\n\n\t\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ];\n\t\t\t\t\tisCube = true;\n\n\t\t\t\t} else if ( ( capabilities.isWebGL2 && renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t\t}\n\n\t\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t\t} else {\n\n\t\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t\t}\n\n\t\t\tconst framebufferBound = state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\tif ( framebufferBound && capabilities.drawBuffers && useDefaultFramebuffer ) {\n\n\t\t\t\tstate.drawBuffers( renderTarget, framebuffer );\n\n\t\t\t}\n\n\t\t\tstate.viewport( _currentViewport );\n\t\t\tstate.scissor( _currentScissor );\n\t\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel );\n\n\t\t\t} else if ( isRenderTarget3D ) {\n\n\t\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t\tconst layer = activeCubeFace || 0;\n\t\t\t\t_gl.framebufferTextureLayer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, textureProperties.__webglTexture, activeMipmapLevel || 0, layer );\n\n\t\t\t}\n\n\t\t\t_currentMaterialId = - 1; // reset current material to ensure correct uniform bindings\n\n\t\t};\n\n\t\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t\t}\n\n\t\t\tif ( framebuffer ) {\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\ttry {\n\n\t\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_FORMAT ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) || ( capabilities.isWebGL2 && extensions.has( 'EXT_color_buffer_float' ) ) );\n\n\t\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_TYPE ) && // Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.has( 'OES_texture_float' ) || extensions.has( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t\t! halfFloatSupportedByExt ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\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} finally {\n\n\t\t\t\t\t// restore framebuffer of current render target if necessary\n\n\t\t\t\t\tconst framebuffer = ( _currentRenderTarget !== null ) ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.copyFramebufferToTexture = function ( position, texture, level = 0 ) {\n\n\t\t\tconst levelScale = Math.pow( 2, - level );\n\t\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\t\tconst height = Math.floor( texture.image.height * levelScale );\n\n\t\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t\t_gl.copyTexSubImage2D( _gl.TEXTURE_2D, level, 0, 0, position.x, position.y, width, height );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level = 0 ) {\n\n\t\t\tconst width = srcTexture.image.width;\n\t\t\tconst height = srcTexture.image.height;\n\t\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t\t// As another texture upload may have changed pixelStorei\n\t\t\t// parameters, make sure they are correct for the dstTexture\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment );\n\n\t\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t\t_gl.texSubImage2D( _gl.TEXTURE_2D, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t\t} else {\n\n\t\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t\t_gl.compressedTexSubImage2D( _gl.TEXTURE_2D, level, position.x, position.y, srcTexture.mipmaps[ 0 ].width, srcTexture.mipmaps[ 0 ].height, glFormat, srcTexture.mipmaps[ 0 ].data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.texSubImage2D( _gl.TEXTURE_2D, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Generate mipmaps only when copying level 0\n\t\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( _gl.TEXTURE_2D );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.copyTextureToTexture3D = function ( sourceBox, position, srcTexture, dstTexture, level = 0 ) {\n\n\t\t\tif ( _this.isWebGL1Renderer ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst width = sourceBox.max.x - sourceBox.min.x + 1;\n\t\t\tconst height = sourceBox.max.y - sourceBox.min.y + 1;\n\t\t\tconst depth = sourceBox.max.z - sourceBox.min.z + 1;\n\t\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\t\tconst glType = utils.convert( dstTexture.type );\n\t\t\tlet glTarget;\n\n\t\t\tif ( dstTexture.isData3DTexture ) {\n\n\t\t\t\ttextures.setTexture3D( dstTexture, 0 );\n\t\t\t\tglTarget = _gl.TEXTURE_3D;\n\n\t\t\t} else if ( dstTexture.isDataArrayTexture ) {\n\n\t\t\t\ttextures.setTexture2DArray( dstTexture, 0 );\n\t\t\t\tglTarget = _gl.TEXTURE_2D_ARRAY;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment );\n\n\t\t\tconst unpackRowLen = _gl.getParameter( _gl.UNPACK_ROW_LENGTH );\n\t\t\tconst unpackImageHeight = _gl.getParameter( _gl.UNPACK_IMAGE_HEIGHT );\n\t\t\tconst unpackSkipPixels = _gl.getParameter( _gl.UNPACK_SKIP_PIXELS );\n\t\t\tconst unpackSkipRows = _gl.getParameter( _gl.UNPACK_SKIP_ROWS );\n\t\t\tconst unpackSkipImages = _gl.getParameter( _gl.UNPACK_SKIP_IMAGES );\n\n\t\t\tconst image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ 0 ] : srcTexture.image;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, image.width );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, image.height );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, sourceBox.min.x );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, sourceBox.min.y );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, sourceBox.min.z );\n\n\t\t\tif ( srcTexture.isDataTexture || srcTexture.isData3DTexture ) {\n\n\t\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data );\n\n\t\t\t} else {\n\n\t\t\t\tif ( srcTexture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.' );\n\t\t\t\t\t_gl.compressedTexSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, unpackRowLen );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, unpackImageHeight );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, unpackSkipPixels );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, unpackSkipRows );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, unpackSkipImages );\n\n\t\t\t// Generate mipmaps only when copying level 0\n\t\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( glTarget );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.initTexture = function ( texture ) {\n\n\t\t\tif ( texture.isCubeTexture ) {\n\n\t\t\t\ttextures.setTextureCube( texture, 0 );\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\ttextures.setTexture3D( texture, 0 );\n\n\t\t\t} else if ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {\n\n\t\t\t\ttextures.setTexture2DArray( texture, 0 );\n\n\t\t\t} else {\n\n\t\t\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.resetState = function () {\n\n\t\t\t_currentActiveCubeFace = 0;\n\t\t\t_currentActiveMipmapLevel = 0;\n\t\t\t_currentRenderTarget = null;\n\n\t\t\tstate.reset();\n\t\t\tbindingStates.reset();\n\n\t\t};\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tget coordinateSystem() {\n\n\t\treturn WebGLCoordinateSystem;\n\n\t}\n\n\tget physicallyCorrectLights() { // @deprecated, r150\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: the property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead.' );\n\t\treturn ! this.useLegacyLights;\n\n\t}\n\n\tset physicallyCorrectLights( value ) { // @deprecated, r150\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: the property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead.' );\n\t\tthis.useLegacyLights = ! value;\n\n\t}\n\n\tget outputEncoding() { // @deprecated, r152\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead.' );\n\t\treturn this.outputColorSpace === SRGBColorSpace ? sRGBEncoding : LinearEncoding;\n\n\t}\n\n\tset outputEncoding( encoding ) { // @deprecated, r152\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead.' );\n\t\tthis.outputColorSpace = encoding === sRGBEncoding ? SRGBColorSpace : LinearSRGBColorSpace;\n\n\t}\n\n}\n\nclass WebGL1Renderer extends WebGLRenderer {}\n\nWebGL1Renderer.prototype.isWebGL1Renderer = true;\n\nclass FogExp2 {\n\n\tconstructor( color, density = 0.00025 ) {\n\n\t\tthis.isFogExp2 = true;\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\t\tthis.density = density;\n\n\t}\n\n\tclone() {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t}\n\n\ttoJSON( /* 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\nclass Fog {\n\n\tconstructor( color, near = 1, far = 1000 ) {\n\n\t\tthis.isFog = true;\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t}\n\n\ttoJSON( /* 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\nclass Scene extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isScene = true;\n\n\t\tthis.type = 'Scene';\n\n\t\tthis.background = null;\n\t\tthis.environment = null;\n\t\tthis.fog = null;\n\n\t\tthis.backgroundBlurriness = 0;\n\t\tthis.backgroundIntensity = 1;\n\n\t\tthis.overrideMaterial = null;\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tthis.backgroundBlurriness = source.backgroundBlurriness;\n\t\tthis.backgroundIntensity = source.backgroundIntensity;\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\t\tif ( this.backgroundBlurriness > 0 ) data.object.backgroundBlurriness = this.backgroundBlurriness;\n\t\tif ( this.backgroundIntensity !== 1 ) data.object.backgroundIntensity = this.backgroundIntensity;\n\n\t\treturn data;\n\n\t}\n\n\tget autoUpdate() { // @deprecated, r144\n\n\t\tconsole.warn( 'THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144.' );\n\t\treturn this.matrixWorldAutoUpdate;\n\n\t}\n\n\tset autoUpdate( value ) { // @deprecated, r144\n\n\t\tconsole.warn( 'THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144.' );\n\t\tthis.matrixWorldAutoUpdate = value;\n\n\t}\n\n}\n\nclass InterleavedBuffer {\n\n\tconstructor( array, stride ) {\n\n\t\tthis.isInterleavedBuffer = true;\n\n\t\tthis.array = array;\n\t\tthis.stride = stride;\n\t\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRange = { offset: 0, count: - 1 };\n\n\t\tthis.version = 0;\n\n\t\tthis.uuid = generateUUID();\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( 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.usage = source.usage;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let 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( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new this.constructor( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.from( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n}\n\nconst _vector$5 = /*@__PURE__*/ new Vector3();\n\nclass InterleavedBufferAttribute {\n\n\tconstructor( interleavedBuffer, itemSize, offset, normalized = false ) {\n\n\t\tthis.isInterleavedBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.data = interleavedBuffer;\n\t\tthis.itemSize = itemSize;\n\t\tthis.offset = offset;\n\n\t\tthis.normalized = normalized;\n\n\t}\n\n\tget count() {\n\n\t\treturn this.data.count;\n\n\t}\n\n\tget array() {\n\n\t\treturn this.data.array;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tthis.data.needsUpdate = value;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$5.fromBufferAttribute( this, i );\n\n\t\t\t_vector$5.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$5.x, _vector$5.y, _vector$5.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$5.fromBufferAttribute( this, i );\n\n\t\t\t_vector$5.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$5.x, _vector$5.y, _vector$5.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$5.fromBufferAttribute( this, i );\n\n\t\t\t_vector$5.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$5.x, _vector$5.y, _vector$5.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\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( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\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( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\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( index ) {\n\n\t\tlet x = this.data.array[ index * this.data.stride + this.offset ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\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( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\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( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\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\tclone( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// de-interleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interleaved attribute\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n}\n\nclass SpriteMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isSpriteMaterial = true;\n\n\t\tthis.type = 'SpriteMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.rotation = 0;\n\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nlet _geometry;\n\nconst _intersectPoint = /*@__PURE__*/ new Vector3();\nconst _worldScale = /*@__PURE__*/ new Vector3();\nconst _mvPosition = /*@__PURE__*/ new Vector3();\n\nconst _alignedPosition = /*@__PURE__*/ new Vector2();\nconst _rotatedPosition = /*@__PURE__*/ new Vector2();\nconst _viewWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _vA = /*@__PURE__*/ new Vector3();\nconst _vB = /*@__PURE__*/ new Vector3();\nconst _vC = /*@__PURE__*/ new Vector3();\n\nconst _uvA = /*@__PURE__*/ new Vector2();\nconst _uvB = /*@__PURE__*/ new Vector2();\nconst _uvC = /*@__PURE__*/ new Vector2();\n\nclass Sprite extends Object3D {\n\n\tconstructor( material ) {\n\n\t\tsuper();\n\n\t\tthis.isSprite = true;\n\n\t\tthis.type = 'Sprite';\n\n\t\tif ( _geometry === undefined ) {\n\n\t\t\t_geometry = new BufferGeometry();\n\n\t\t\tconst float32Array = new Float32Array( [\n\t\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t\t] );\n\n\t\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t\t}\n\n\t\tthis.geometry = _geometry;\n\t\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\t\tthis.center = new Vector2( 0.5, 0.5 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA.set( 0, 0 );\n\t\t_uvB.set( 1, 0 );\n\t\t_uvC.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA, _vB, _vC, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA, _vC, _vB, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getInterpolation( _intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\nconst _v1$2 = /*@__PURE__*/ new Vector3();\nconst _v2$1 = /*@__PURE__*/ new Vector3();\n\nclass LOD extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis._currentLevel = 0;\n\n\t\tthis.type = 'LOD';\n\n\t\tObject.defineProperties( this, {\n\t\t\tlevels: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\tisLOD: {\n\t\t\t\tvalue: true,\n\t\t\t}\n\t\t} );\n\n\t\tthis.autoUpdate = true;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance, level.hysteresis );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\taddLevel( object, distance = 0, hysteresis = 0 ) {\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( 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, hysteresis: hysteresis, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t}\n\n\tgetCurrentLevel() {\n\n\t\treturn this._currentLevel;\n\n\t}\n\n\n\n\tgetObjectForDistance( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tlet levelDistance = levels[ i ].distance;\n\n\t\t\t\tif ( levels[ i ].object.visible ) {\n\n\t\t\t\t\tlevelDistance -= levelDistance * levels[ i ].hysteresis;\n\n\t\t\t\t}\n\n\t\t\t\tif ( distance < levelDistance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$2 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$1.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$2.distanceTo( _v2$1 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tlet levelDistance = levels[ i ].distance;\n\n\t\t\t\tif ( levels[ i ].object.visible ) {\n\n\t\t\t\t\tlevelDistance -= levelDistance * levels[ i ].hysteresis;\n\n\t\t\t\t}\n\n\t\t\t\tif ( distance >= levelDistance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst 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\thysteresis: level.hysteresis\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _basePosition = /*@__PURE__*/ new Vector3();\n\nconst _skinIndex = /*@__PURE__*/ new Vector4();\nconst _skinWeight = /*@__PURE__*/ new Vector4();\n\nconst _vector3 = /*@__PURE__*/ new Vector3();\nconst _matrix4 = /*@__PURE__*/ new Matrix4();\nconst _vertex = /*@__PURE__*/ new Vector3();\n\nconst _sphere$3 = /*@__PURE__*/ new Sphere();\nconst _inverseMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _ray$2 = /*@__PURE__*/ new Ray();\n\nclass SkinnedMesh extends Mesh {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isSkinnedMesh = true;\n\n\t\tthis.type = 'SkinnedMesh';\n\n\t\tthis.bindMode = 'attached';\n\t\tthis.bindMatrix = new Matrix4();\n\t\tthis.bindMatrixInverse = new Matrix4();\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.makeEmpty();\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\t_vertex.fromBufferAttribute( positionAttribute, i );\n\t\t\tthis.applyBoneTransform( i, _vertex );\n\t\t\tthis.boundingBox.expandByPoint( _vertex );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.makeEmpty();\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\t_vertex.fromBufferAttribute( positionAttribute, i );\n\t\t\tthis.applyBoneTransform( i, _vertex );\n\t\t\tthis.boundingSphere.expandByPoint( _vertex );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\tif ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone();\n\t\tif ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone();\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// test with bounding sphere in world space\n\n\t\tif ( this.boundingSphere === null ) this.computeBoundingSphere();\n\n\t\t_sphere$3.copy( this.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t// convert ray to local space of skinned mesh\n\n\t\t_inverseMatrix$2.copy( matrixWorld ).invert();\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\t// test with bounding box in local space\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tif ( _ray$2.intersectsBox( this.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\t// test for intersections with geometry\n\n\t\tthis._computeIntersections( raycaster, intersects, _ray$2 );\n\n\t}\n\n\tgetVertexPosition( index, target ) {\n\n\t\tsuper.getVertexPosition( index, target );\n\n\t\tthis.applyBoneTransform( index, target );\n\n\t\treturn target;\n\n\t}\n\n\tbind( 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.copy( bindMatrix ).invert();\n\n\t}\n\n\tpose() {\n\n\t\tthis.skeleton.pose();\n\n\t}\n\n\tnormalizeSkinWeights() {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.fromBufferAttribute( skinWeight, i );\n\n\t\t\tconst 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( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.matrixWorld ).invert();\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.bindMatrix ).invert();\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\tapplyBoneTransform( index, vector ) {\n\n\t\tconst skeleton = this.skeleton;\n\t\tconst geometry = this.geometry;\n\n\t\t_skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t_skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t_basePosition.copy( vector ).applyMatrix4( this.bindMatrix );\n\n\t\tvector.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tconst weight = _skinWeight.getComponent( i );\n\n\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\tconst boneIndex = _skinIndex.getComponent( i );\n\n\t\t\t\t_matrix4.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\tvector.addScaledVector( _vector3.copy( _basePosition ).applyMatrix4( _matrix4 ), weight );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn vector.applyMatrix4( this.bindMatrixInverse );\n\n\t}\n\n\tboneTransform( index, vector ) { // @deprecated, r151\n\n\t\tconsole.warn( 'THREE.SkinnedMesh: .boneTransform() was renamed to .applyBoneTransform() in r151.' );\n\t\treturn this.applyBoneTransform( index, vector );\n\n\t}\n\n\n}\n\nclass Bone extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBone = true;\n\n\t\tthis.type = 'Bone';\n\n\t}\n\n}\n\nclass DataTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, colorSpace ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isDataTexture = true;\n\n\t\tthis.image = { data: data, width: width, height: height };\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nconst _offsetMatrix = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix = /*@__PURE__*/ new Matrix4();\n\nclass Skeleton {\n\n\tconstructor( bones = [], boneInverses = [] ) {\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.bones = bones.slice( 0 );\n\t\tthis.boneInverses = boneInverses;\n\t\tthis.boneMatrices = null;\n\n\t\tthis.boneTexture = null;\n\t\tthis.boneTextureSize = 0;\n\n\t\tthis.frame = - 1;\n\n\t\tthis.init();\n\n\t}\n\n\tinit() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tthis.boneMatrices = new Float32Array( bones.length * 16 );\n\n\t\t// calculate inverse bone matrices if necessary\n\n\t\tif ( boneInverses.length === 0 ) {\n\n\t\t\tthis.calculateInverses();\n\n\t\t} else {\n\n\t\t\t// handle special case\n\n\t\t\tif ( bones.length !== boneInverses.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' );\n\n\t\t\t\tthis.boneInverses = [];\n\n\t\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcalculateInverses() {\n\n\t\tthis.boneInverses.length = 0;\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.copy( this.bones[ i ].matrixWorld ).invert();\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t}\n\n\tpose() {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.copy( this.boneInverses[ i ] ).invert();\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 ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = 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.copy( bone.parent.matrixWorld ).invert();\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() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== null ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t}\n\n\tcomputeBoneTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = ceilPowerOfTwo( size );\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tboneMatrices.set( this.boneMatrices ); // copy current values\n\n\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\t\tboneTexture.needsUpdate = true;\n\n\t\tthis.boneMatrices = boneMatrices;\n\t\tthis.boneTexture = boneTexture;\n\t\tthis.boneTextureSize = size;\n\n\t\treturn this;\n\n\t}\n\n\tgetBoneByName( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst 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\tdispose( ) {\n\n\t\tif ( this.boneTexture !== null ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = null;\n\n\t\t}\n\n\t}\n\n\tfromJSON( json, bones ) {\n\n\t\tthis.uuid = json.uuid;\n\n\t\tfor ( let i = 0, l = json.bones.length; i < l; i ++ ) {\n\n\t\t\tconst uuid = json.bones[ i ];\n\t\t\tlet bone = bones[ uuid ];\n\n\t\t\tif ( bone === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: No bone found with UUID:', uuid );\n\t\t\t\tbone = new Bone();\n\n\t\t\t}\n\n\t\t\tthis.bones.push( bone );\n\t\t\tthis.boneInverses.push( new Matrix4().fromArray( json.boneInverses[ i ] ) );\n\n\t\t}\n\n\t\tthis.init();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Skeleton',\n\t\t\t\tgenerator: 'Skeleton.toJSON'\n\t\t\t},\n\t\t\tbones: [],\n\t\t\tboneInverses: []\n\t\t};\n\n\t\tdata.uuid = this.uuid;\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tfor ( let i = 0, l = bones.length; i < l; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\t\t\tdata.bones.push( bone.uuid );\n\n\t\t\tconst boneInverse = boneInverses[ i ];\n\t\t\tdata.boneInverses.push( boneInverse.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InstancedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, itemSize, normalized );\n\n\t\tthis.isInstancedBufferAttribute = true;\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _instanceLocalMatrix = /*@__PURE__*/ new Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _box3 = /*@__PURE__*/ new Box3();\nconst _identity = /*@__PURE__*/ new Matrix4();\nconst _mesh = /*@__PURE__*/ new Mesh();\nconst _sphere$2 = /*@__PURE__*/ new Sphere();\n\nclass InstancedMesh extends Mesh {\n\n\tconstructor( geometry, material, count ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isInstancedMesh = true;\n\n\t\tthis.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 );\n\t\tthis.instanceColor = null;\n\n\t\tthis.count = count;\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.setMatrixAt( i, _identity );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst count = this.count;\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\tgeometry.computeBoundingBox();\n\n\t\t}\n\n\t\tthis.boundingBox.makeEmpty();\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.getMatrixAt( i, _instanceLocalMatrix );\n\n\t\t\t_box3.copy( geometry.boundingBox ).applyMatrix4( _instanceLocalMatrix );\n\n\t\t\tthis.boundingBox.union( _box3 );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst count = this.count;\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere === null ) {\n\n\t\t\tgeometry.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.makeEmpty();\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.getMatrixAt( i, _instanceLocalMatrix );\n\n\t\t\t_sphere$2.copy( geometry.boundingSphere ).applyMatrix4( _instanceLocalMatrix );\n\n\t\t\tthis.boundingSphere.union( _sphere$2 );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\n\t\tif ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();\n\n\t\tthis.count = source.count;\n\n\t\tif ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone();\n\t\tif ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone();\n\n\t\treturn this;\n\n\t}\n\n\tgetColorAt( index, color ) {\n\n\t\tcolor.fromArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tgetMatrixAt( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh.geometry = this.geometry;\n\t\t_mesh.material = this.material;\n\n\t\tif ( _mesh.material === undefined ) return;\n\n\t\t// test with bounding sphere first\n\n\t\tif ( this.boundingSphere === null ) this.computeBoundingSphere();\n\n\t\t_sphere$2.copy( this.boundingSphere );\n\t\t_sphere$2.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$2 ) === false ) return;\n\n\t\t// now test each instance\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t}\n\n\tsetColorAt( index, color ) {\n\n\t\tif ( this.instanceColor === null ) {\n\n\t\t\tthis.instanceColor = new InstancedBufferAttribute( new Float32Array( this.instanceMatrix.count * 3 ), 3 );\n\n\t\t}\n\n\t\tcolor.toArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tsetMatrixAt( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nclass LineBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineBasicMaterial = true;\n\n\t\tthis.type = 'LineBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.linewidth = 1;\n\t\tthis.linecap = 'round';\n\t\tthis.linejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.linewidth = source.linewidth;\n\t\tthis.linecap = source.linecap;\n\t\tthis.linejoin = source.linejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _start$1 = /*@__PURE__*/ new Vector3();\nconst _end$1 = /*@__PURE__*/ new Vector3();\nconst _inverseMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _ray$1 = /*@__PURE__*/ new Ray();\nconst _sphere$1 = /*@__PURE__*/ new Sphere();\n\nclass Line extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isLine = true;\n\n\t\tthis.type = 'Line';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += _start$1.distanceTo( _end$1 );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere );\n\t\t_sphere$1.applyMatrix4( matrixWorld );\n\t\t_sphere$1.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$1 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.copy( matrixWorld ).invert();\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst vStart = new Vector3();\n\t\tconst vEnd = new Vector3();\n\t\tconst interSegment = new Vector3();\n\t\tconst interRay = new Vector3();\n\t\tconst step = this.isLineSegments ? 2 : 1;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tconst a = index.getX( i );\n\t\t\t\tconst b = index.getX( i + 1 );\n\n\t\t\t\tvStart.fromBufferAttribute( positionAttribute, a );\n\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, b );\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tvStart.fromBufferAttribute( positionAttribute, i );\n\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst 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 ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = 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}\n\nconst _start = /*@__PURE__*/ new Vector3();\nconst _end = /*@__PURE__*/ new Vector3();\n\nclass LineSegments extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isLineSegments = true;\n\n\t\tthis.type = 'LineSegments';\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [];\n\n\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t_start.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t_end.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start.distanceTo( _end );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineLoop extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isLineLoop = true;\n\n\t\tthis.type = 'LineLoop';\n\n\t}\n\n}\n\nclass PointsMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isPointsMaterial = true;\n\n\t\tthis.type = 'PointsMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.size = 1;\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.size = source.size;\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _inverseMatrix = /*@__PURE__*/ new Matrix4();\nconst _ray = /*@__PURE__*/ new Ray();\nconst _sphere = /*@__PURE__*/ new Sphere();\nconst _position$2 = /*@__PURE__*/ new Vector3();\n\nclass Points extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new PointsMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isPoints = true;\n\n\t\tthis.type = 'Points';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\t\t_sphere.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.copy( matrixWorld ).invert();\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, il = end; i < il; i ++ ) {\n\n\t\t\t\tconst a = index.getX( i );\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, a );\n\n\t\t\t\ttestPoint( _position$2, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end; i < l; i ++ ) {\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\ttestPoint( _position$2, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst 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 ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = 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}\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\nclass VideoTexture extends Texture {\n\n\tconstructor( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isVideoTexture = true;\n\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tconst scope = this;\n\n\t\tfunction updateVideo() {\n\n\t\t\tscope.needsUpdate = true;\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.image ).copy( this );\n\n\t}\n\n\tupdate() {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nclass FramebufferTexture extends Texture {\n\n\tconstructor( width, height ) {\n\n\t\tsuper( { width, height } );\n\n\t\tthis.isFramebufferTexture = true;\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nclass CompressedTexture extends Texture {\n\n\tconstructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, colorSpace ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isCompressedTexture = true;\n\n\t\tthis.image = { width: width, height: height };\n\t\tthis.mipmaps = mipmaps;\n\n\t\t// no flipping for cube textures\n\t\t// (also flipping doesn't work for compressed textures )\n\n\t\tthis.flipY = false;\n\n\t\t// can't generate mipmaps for compressed textures\n\t\t// mips must be embedded in DDS files\n\n\t\tthis.generateMipmaps = false;\n\n\t}\n\n}\n\nclass CompressedArrayTexture extends CompressedTexture {\n\n\tconstructor( mipmaps, width, height, depth, format, type ) {\n\n\t\tsuper( mipmaps, width, height, format, type );\n\n\t\tthis.isCompressedArrayTexture = true;\n\t\tthis.image.depth = depth;\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t}\n\n}\n\nclass CanvasTexture extends Texture {\n\n\tconstructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isCanvasTexture = true;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\n/**\n * Extensible curve object.\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\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\nclass Curve {\n\n\tconstructor() {\n\n\t\tthis.type = 'Curve';\n\n\t\tthis.arcLengthDivisions = 200;\n\n\t}\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint( /* 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( u, optionalTarget ) {\n\n\t\tconst 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( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let 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( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let 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() {\n\n\t\tconst 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( 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\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let 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() {\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( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0;\n\t\tconst il = arcLengths.length;\n\n\t\tlet 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\tlet 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\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst 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( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet 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\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t}\n\n\tcomputeFrenetFrames( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\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\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst 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 ( let 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\tconst theta = Math.acos( 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\tlet theta = Math.acos( 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 ( let 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() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\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( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass EllipseCurve extends Curve {\n\n\tconstructor( aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.isEllipseCurve = true;\n\n\t\tthis.type = 'EllipseCurve';\n\n\t\tthis.aX = aX;\n\t\tthis.aY = aY;\n\n\t\tthis.xRadius = xRadius;\n\t\tthis.yRadius = yRadius;\n\n\t\tthis.aStartAngle = aStartAngle;\n\t\tthis.aEndAngle = aEndAngle;\n\n\t\tthis.aClockwise = aClockwise;\n\n\t\tthis.aRotation = aRotation;\n\n\t}\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst point = optionalTarget || new Vector2();\n\n\t\tconst twoPi = Math.PI * 2;\n\t\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\t\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t\t// ensures that deltaAngle is 0 .. 2 PI\n\t\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\t\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\t\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\t\tif ( samePoints ) {\n\n\t\t\t\tdeltaAngle = 0;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\t\tdeltaAngle = - twoPi;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst angle = this.aStartAngle + t * deltaAngle;\n\t\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\t\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\t\tif ( this.aRotation !== 0 ) {\n\n\t\t\tconst cos = Math.cos( this.aRotation );\n\t\t\tconst sin = Math.sin( this.aRotation );\n\n\t\t\tconst tx = x - this.aX;\n\t\t\tconst ty = y - this.aY;\n\n\t\t\t// Rotate the point about the center of the ellipse.\n\t\t\tx = tx * cos - ty * sin + this.aX;\n\t\t\ty = tx * sin + ty * cos + this.aY;\n\n\t\t}\n\n\t\treturn point.set( x, y );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.aX = source.aX;\n\t\tthis.aY = source.aY;\n\n\t\tthis.xRadius = source.xRadius;\n\t\tthis.yRadius = source.yRadius;\n\n\t\tthis.aStartAngle = source.aStartAngle;\n\t\tthis.aEndAngle = source.aEndAngle;\n\n\t\tthis.aClockwise = source.aClockwise;\n\n\t\tthis.aRotation = source.aRotation;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.aX = this.aX;\n\t\tdata.aY = this.aY;\n\n\t\tdata.xRadius = this.xRadius;\n\t\tdata.yRadius = this.yRadius;\n\n\t\tdata.aStartAngle = this.aStartAngle;\n\t\tdata.aEndAngle = this.aEndAngle;\n\n\t\tdata.aClockwise = this.aClockwise;\n\n\t\tdata.aRotation = this.aRotation;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.aX = json.aX;\n\t\tthis.aY = json.aY;\n\n\t\tthis.xRadius = json.xRadius;\n\t\tthis.yRadius = json.yRadius;\n\n\t\tthis.aStartAngle = json.aStartAngle;\n\t\tthis.aEndAngle = json.aEndAngle;\n\n\t\tthis.aClockwise = json.aClockwise;\n\n\t\tthis.aRotation = json.aRotation;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass ArcCurve extends EllipseCurve {\n\n\tconstructor( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tsuper( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\tthis.isArcCurve = true;\n\n\t\tthis.type = 'ArcCurve';\n\n\t}\n\n}\n\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\tlet 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\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet 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\tconst t2 = t * t;\n\t\t\tconst 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\nconst tmp = /*@__PURE__*/ new Vector3();\nconst px = /*@__PURE__*/ new CubicPoly();\nconst py = /*@__PURE__*/ new CubicPoly();\nconst pz = /*@__PURE__*/ new CubicPoly();\n\nclass CatmullRomCurve3 extends Curve {\n\n\tconstructor( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) {\n\n\t\tsuper();\n\n\t\tthis.isCatmullRomCurve3 = true;\n\n\t\tthis.type = 'CatmullRomCurve3';\n\n\t\tthis.points = points;\n\t\tthis.closed = closed;\n\t\tthis.curveType = curveType;\n\t\tthis.tension = tension;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst l = points.length;\n\n\t\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\tlet intPoint = Math.floor( p );\n\t\tlet weight = p - intPoint;\n\n\t\tif ( this.closed ) {\n\n\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\tintPoint = l - 2;\n\t\t\tweight = 1;\n\n\t\t}\n\n\t\tlet p0, p3; // 4 points (p1 & p2 defined below)\n\n\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate first point\n\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\tp0 = tmp;\n\n\t\t}\n\n\t\tconst p1 = points[ intPoint % l ];\n\t\tconst p2 = points[ ( intPoint + 1 ) % l ];\n\n\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate last point\n\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\tp3 = tmp;\n\n\t\t}\n\n\t\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t// safety check for repeated points\n\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t\t}\n\n\t\tpoint.set(\n\t\t\tpx.calc( weight ),\n\t\t\tpy.calc( weight ),\n\t\t\tpz.calc( weight )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\tthis.closed = source.closed;\n\t\tthis.curveType = source.curveType;\n\t\tthis.tension = source.tension;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\tdata.closed = this.closed;\n\t\tdata.curveType = this.curveType;\n\t\tdata.tension = this.tension;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t\t}\n\n\t\tthis.closed = json.closed;\n\t\tthis.curveType = json.curveType;\n\t\tthis.tension = json.tension;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Bezier Curves formulas obtained from\n * https://en.wikipedia.org/wiki/B%C3%A9zier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst 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\tconst 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\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst 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\nclass CubicBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isCubicBezierCurve = true;\n\n\t\tthis.type = 'CubicBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass CubicBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isCubicBezierCurve3 = true;\n\n\t\tthis.type = 'CubicBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineCurve extends Curve {\n\n\tconstructor( v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve = true;\n\n\t\tthis.type = 'LineCurve';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector2() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineCurve3 extends Curve {\n\n\tconstructor( v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve3 = true;\n\n\t\tthis.type = 'LineCurve3';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector3() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve = true;\n\n\t\tthis.type = 'QuadraticBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve3 = true;\n\n\t\tthis.type = 'QuadraticBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass SplineCurve extends Curve {\n\n\tconstructor( points = [] ) {\n\n\t\tsuper();\n\n\t\tthis.isSplineCurve = true;\n\n\t\tthis.type = 'SplineCurve';\n\n\t\tthis.points = points;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst p = ( points.length - 1 ) * t;\n\n\t\tconst intPoint = Math.floor( p );\n\t\tconst weight = p - intPoint;\n\n\t\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\t\tconst p1 = points[ intPoint ];\n\t\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tpoint.set(\n\t\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\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 *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nclass CurvePath extends Curve {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'CurvePath';\n\n\t\tthis.curves = [];\n\t\tthis.autoClose = false; // Automatically closes the path\n\n\t}\n\n\tadd( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t}\n\n\tclosePath() {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst 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( t, optionalTarget ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet 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\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u, optionalTarget );\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( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst 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() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst 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( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst 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\nclass Path extends CurvePath {\n\n\tconstructor( points ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Path';\n\n\t\tthis.currentPoint = new Vector2();\n\n\t\tif ( points ) {\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t}\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let 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\treturn this;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tconst 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\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tconst 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\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst 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\treturn this;\n\n\t}\n\n\tsplineThru( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t}\n\n\tarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tabsarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t}\n\n\tabsellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst 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\tconst 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\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LatheGeometry extends BufferGeometry {\n\n\tconstructor( points = [ new Vector2( 0, - 0.5 ), new Vector2( 0.5, 0 ), new Vector2( 0, 0.5 ) ], segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LatheGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tsegments = Math.floor( segments );\n\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\t\tphiLength = clamp( phiLength, 0, Math.PI * 2 );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst uvs = [];\n\t\tconst initNormals = [];\n\t\tconst normals = [];\n\n\t\t// helper variables\n\n\t\tconst inverseSegments = 1.0 / segments;\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tconst normal = new Vector3();\n\t\tconst curNormal = new Vector3();\n\t\tconst prevNormal = new Vector3();\n\t\tlet dx = 0;\n\t\tlet dy = 0;\n\n\t\t// pre-compute normals for initial \"meridian\"\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\tswitch ( j ) {\n\n\t\t\t\tcase 0:\t\t\t\t// special handling for 1st vertex on path\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tprevNormal.copy( normal );\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ( points.length - 1 ):\t// special handling for last Vertex on path\n\n\t\t\t\t\tinitNormals.push( prevNormal.x, prevNormal.y, prevNormal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\t\t\t// default handling for all vertices in between\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tcurNormal.copy( normal );\n\n\t\t\t\t\tnormal.x += prevNormal.x;\n\t\t\t\t\tnormal.y += prevNormal.y;\n\t\t\t\t\tnormal.z += prevNormal.z;\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tprevNormal.copy( curNormal );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices, uvs and normals\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\t\tconst sin = Math.sin( phi );\n\t\t\tconst cos = Math.cos( phi );\n\n\t\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\t\tvertex.y = points[ j ].y;\n\t\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = i / segments;\n\t\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// normal\n\n\t\t\t\tconst x = initNormals[ 3 * j + 0 ] * sin;\n\t\t\t\tconst y = initNormals[ 3 * j + 1 ];\n\t\t\t\tconst z = initNormals[ 3 * j + 0 ] * cos;\n\n\t\t\t\tnormals.push( x, y, z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\t\tconst base = j + i * points.length;\n\n\t\t\t\tconst a = base;\n\t\t\t\tconst b = base + points.length;\n\t\t\t\tconst c = base + points.length + 1;\n\t\t\t\tconst d = base + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( c, d, b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );\n\n\t}\n\n}\n\nclass CapsuleGeometry extends LatheGeometry {\n\n\tconstructor( radius = 1, length = 1, capSegments = 4, radialSegments = 8 ) {\n\n\t\tconst path = new Path();\n\t\tpath.absarc( 0, - length / 2, radius, Math.PI * 1.5, 0 );\n\t\tpath.absarc( 0, length / 2, radius, 0, Math.PI * 0.5 );\n\n\t\tsuper( path.getPoints( capSegments ), radialSegments );\n\n\t\tthis.type = 'CapsuleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: length,\n\t\t\tcapSegments: capSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CapsuleGeometry( data.radius, data.length, data.capSegments, data.radialSegments );\n\n\t}\n\n}\n\nclass CircleGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, segments = 32, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CircleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tsegments = Math.max( 3, segments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// center point\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tnormals.push( 0, 0, 1 );\n\t\tuvs.push( 0.5, 0.5 );\n\n\t\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\t\tconst segment = thetaStart + s / segments * 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// uvs\n\n\t\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tindices.push( i, i + 1, 0 );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass CylinderGeometry extends BufferGeometry {\n\n\tconstructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CylinderGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tconst scope = this;\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet index = 0;\n\t\tconst indexArray = [];\n\t\tconst halfHeight = height / 2;\n\t\tlet groupStart = 0;\n\n\t\t// generate geometry\n\n\t\tgenerateTorso();\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction generateTorso() {\n\n\t\t\tconst normal = new Vector3();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\t// this will be used to calculate the normal\n\t\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\t\tconst indexRow = [];\n\n\t\t\t\tconst v = y / heightSegments;\n\n\t\t\t\t// calculate the radius of the current row\n\n\t\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t\t// vertex\n\n\t\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t// normal\n\n\t\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\t// uv\n\n\t\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t\t}\n\n\t\t\t\t// now save vertices of the row in our index array\n\n\t\t\t\tindexArray.push( indexRow );\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// update group counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t\tfunction generateCap( top ) {\n\n\t\t\t// save the index of the first center vertex\n\t\t\tconst centerIndexStart = index;\n\n\t\t\tconst uv = new Vector2();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t\t// first we generate the center vertex data of the cap.\n\t\t\t// because the geometry needs one set of uvs per face,\n\t\t\t// we must generate a center vertex per face/segment\n\n\t\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// save the index of the last center vertex\n\t\t\tconst centerIndexEnd = index;\n\n\t\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = halfHeight * sign;\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\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tconst c = centerIndexStart + x;\n\t\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\t\tif ( top === true ) {\n\n\t\t\t\t\t// face top\n\n\t\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// face bottom\n\n\t\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t\t}\n\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CylinderGeometry( data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ConeGeometry extends CylinderGeometry {\n\n\tconstructor( radius = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t\tthis.type = 'ConeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new ConeGeometry( data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass PolyhedronGeometry extends BufferGeometry {\n\n\tconstructor( vertices = [], indices = [], radius = 1, detail = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PolyhedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tvertices: vertices,\n\t\t\tindices: indices,\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\t// default buffer data\n\n\t\tconst vertexBuffer = [];\n\t\tconst uvBuffer = [];\n\n\t\t// the subdivision creates the vertex buffer data\n\n\t\tsubdivide( detail );\n\n\t\t// all vertices should lie on a conceptual sphere with a given radius\n\n\t\tapplyRadius( radius );\n\n\t\t// finally, create the uv data\n\n\t\tgenerateUVs();\n\n\t\t// build non-indexed geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\t\tif ( detail === 0 ) {\n\n\t\t\tthis.computeVertexNormals(); // flat normals\n\n\t\t} else {\n\n\t\t\tthis.normalizeNormals(); // smooth normals\n\n\t\t}\n\n\t\t// helper functions\n\n\t\tfunction subdivide( detail ) {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\t// iterate over all faces and apply a subdivision with the given detail value\n\n\t\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t// get the vertices of the face\n\n\t\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t\t// perform subdivision\n\n\t\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\t\tconst cols = detail + 1;\n\n\t\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\t\tconst v = [];\n\n\t\t\t// construct all of the vertices for this subdivision\n\n\t\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\t\tv[ i ] = [];\n\n\t\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\t\tconst rows = cols - i;\n\n\t\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// construct all of the faces\n\n\t\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\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\tfunction applyRadius( radius ) {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t\t}\n\n\t\t\tcorrectUVs();\n\n\t\t\tcorrectSeam();\n\n\t\t}\n\n\t\tfunction correctSeam() {\n\n\t\t\t// handle case when face straddles the seam, see #3269\n\n\t\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t\t// uv data of a single face\n\n\t\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction pushVertex( vertex ) {\n\n\t\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tfunction getVertexByIndex( index, vertex ) {\n\n\t\t\tconst stride = index * 3;\n\n\t\t\tvertex.x = vertices[ stride + 0 ];\n\t\t\tvertex.y = vertices[ stride + 1 ];\n\t\t\tvertex.z = vertices[ stride + 2 ];\n\n\t\t}\n\n\t\tfunction correctUVs() {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\tconst centroid = new Vector3();\n\n\t\t\tconst uvA = new Vector2();\n\t\t\tconst uvB = new Vector2();\n\t\t\tconst uvC = new Vector2();\n\n\t\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\t\tconst azi = azimuth( centroid );\n\n\t\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t\t}\n\n\t\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\t\tfunction azimuth( vector ) {\n\n\t\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t\t}\n\n\n\t\t// Angle above the XZ plane.\n\n\t\tfunction inclination( vector ) {\n\n\t\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );\n\n\t}\n\n}\n\nclass DodecahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\t\tconst r = 1 / t;\n\n\t\tconst vertices = [\n\n\t\t\t// (±1, ±1, ±1)\n\t\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t\t// (0, ±1/φ, ±φ)\n\t\t\t0, - r, - t, 0, - r, t,\n\t\t\t0, r, - t, 0, r, t,\n\n\t\t\t// (±1/φ, ±φ, 0)\n\t\t\t- r, - t, 0, - r, t, 0,\n\t\t\tr, - t, 0, r, t, 0,\n\n\t\t\t// (±φ, 0, ±1/φ)\n\t\t\t- t, 0, - r, t, 0, - r,\n\t\t\t- t, 0, r, t, 0, r\n\t\t];\n\n\t\tconst indices = [\n\t\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'DodecahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new DodecahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nconst _v0 = /*@__PURE__*/ new Vector3();\nconst _v1$1 = /*@__PURE__*/ new Vector3();\nconst _normal = /*@__PURE__*/ new Vector3();\nconst _triangle = /*@__PURE__*/ new Triangle();\n\nclass EdgesGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null, thresholdAngle = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'EdgesGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry,\n\t\t\tthresholdAngle: thresholdAngle\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\tconst precisionPoints = 4;\n\t\t\tconst precision = Math.pow( 10, precisionPoints );\n\t\t\tconst thresholdDot = Math.cos( DEG2RAD * thresholdAngle );\n\n\t\t\tconst indexAttr = geometry.getIndex();\n\t\t\tconst positionAttr = geometry.getAttribute( 'position' );\n\t\t\tconst indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n\n\t\t\tconst indexArr = [ 0, 0, 0 ];\n\t\t\tconst vertKeys = [ 'a', 'b', 'c' ];\n\t\t\tconst hashes = new Array( 3 );\n\n\t\t\tconst edgeData = {};\n\t\t\tconst vertices = [];\n\t\t\tfor ( let i = 0; i < indexCount; i += 3 ) {\n\n\t\t\t\tif ( indexAttr ) {\n\n\t\t\t\t\tindexArr[ 0 ] = indexAttr.getX( i );\n\t\t\t\t\tindexArr[ 1 ] = indexAttr.getX( i + 1 );\n\t\t\t\t\tindexArr[ 2 ] = indexAttr.getX( i + 2 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindexArr[ 0 ] = i;\n\t\t\t\t\tindexArr[ 1 ] = i + 1;\n\t\t\t\t\tindexArr[ 2 ] = i + 2;\n\n\t\t\t\t}\n\n\t\t\t\tconst { a, b, c } = _triangle;\n\t\t\t\ta.fromBufferAttribute( positionAttr, indexArr[ 0 ] );\n\t\t\t\tb.fromBufferAttribute( positionAttr, indexArr[ 1 ] );\n\t\t\t\tc.fromBufferAttribute( positionAttr, indexArr[ 2 ] );\n\t\t\t\t_triangle.getNormal( _normal );\n\n\t\t\t\t// create hashes for the edge from the vertices\n\t\t\t\thashes[ 0 ] = `${ Math.round( a.x * precision ) },${ Math.round( a.y * precision ) },${ Math.round( a.z * precision ) }`;\n\t\t\t\thashes[ 1 ] = `${ Math.round( b.x * precision ) },${ Math.round( b.y * precision ) },${ Math.round( b.z * precision ) }`;\n\t\t\t\thashes[ 2 ] = `${ Math.round( c.x * precision ) },${ Math.round( c.y * precision ) },${ Math.round( c.z * precision ) }`;\n\n\t\t\t\t// skip degenerate triangles\n\t\t\t\tif ( hashes[ 0 ] === hashes[ 1 ] || hashes[ 1 ] === hashes[ 2 ] || hashes[ 2 ] === hashes[ 0 ] ) {\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\t// iterate over every edge\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// get the first and next vertex making up the edge\n\t\t\t\t\tconst jNext = ( j + 1 ) % 3;\n\t\t\t\t\tconst vecHash0 = hashes[ j ];\n\t\t\t\t\tconst vecHash1 = hashes[ jNext ];\n\t\t\t\t\tconst v0 = _triangle[ vertKeys[ j ] ];\n\t\t\t\t\tconst v1 = _triangle[ vertKeys[ jNext ] ];\n\n\t\t\t\t\tconst hash = `${ vecHash0 }_${ vecHash1 }`;\n\t\t\t\t\tconst reverseHash = `${ vecHash1 }_${ vecHash0 }`;\n\n\t\t\t\t\tif ( reverseHash in edgeData && edgeData[ reverseHash ] ) {\n\n\t\t\t\t\t\t// if we found a sibling edge add it into the vertex array if\n\t\t\t\t\t\t// it meets the angle threshold and delete the edge from the map.\n\t\t\t\t\t\tif ( _normal.dot( edgeData[ reverseHash ].normal ) <= thresholdDot ) {\n\n\t\t\t\t\t\t\tvertices.push( v0.x, v0.y, v0.z );\n\t\t\t\t\t\t\tvertices.push( v1.x, v1.y, v1.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tedgeData[ reverseHash ] = null;\n\n\t\t\t\t\t} else if ( ! ( hash in edgeData ) ) {\n\n\t\t\t\t\t\t// if we've already got an edge here then skip adding a new one\n\t\t\t\t\t\tedgeData[ hash ] = {\n\n\t\t\t\t\t\t\tindex0: indexArr[ j ],\n\t\t\t\t\t\t\tindex1: indexArr[ jNext ],\n\t\t\t\t\t\t\tnormal: _normal.clone(),\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// iterate over all remaining, unmatched edges and add them to the vertex array\n\t\t\tfor ( const key in edgeData ) {\n\n\t\t\t\tif ( edgeData[ key ] ) {\n\n\t\t\t\t\tconst { index0, index1 } = edgeData[ key ];\n\t\t\t\t\t_v0.fromBufferAttribute( positionAttr, index0 );\n\t\t\t\t\t_v1$1.fromBufferAttribute( positionAttr, index1 );\n\n\t\t\t\t\tvertices.push( _v0.x, _v0.y, _v0.z );\n\t\t\t\t\tvertices.push( _v1$1.x, _v1$1.y, _v1$1.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Shape extends Path {\n\n\tconstructor( points ) {\n\n\t\tsuper( points );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.type = 'Shape';\n\n\t\tthis.holes = [];\n\n\t}\n\n\tgetPointsHoles( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let 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( 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( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst 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() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst 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( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst 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 * Port from https://github.com/mapbox/earcut (v2.2.4)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim = 2 ) {\n\n\t\tconst hasHoles = holeIndices && holeIndices.length;\n\t\tconst outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length;\n\t\tlet outerNode = linkedList( data, 0, outerLen, dim, true );\n\t\tconst triangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet 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 ( let 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 ? 32767 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize, 0 );\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\tlet 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\tlet 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\tlet 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 | 0 );\n\t\t\ttriangles.push( ear.i / dim | 0 );\n\t\t\ttriangles.push( next.i / dim | 0 );\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( filterPoints( 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\tconst 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\tconst ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst x0 = ax < bx ? ( ax < cx ? ax : cx ) : ( bx < cx ? bx : cx ),\n\t\ty0 = ay < by ? ( ay < cy ? ay : cy ) : ( by < cy ? by : cy ),\n\t\tx1 = ax > bx ? ( ax > cx ? ax : cx ) : ( bx > cx ? bx : cx ),\n\t\ty1 = ay > by ? ( ay > cy ? ay : cy ) : ( by > cy ? by : cy );\n\n\tlet p = c.next;\n\twhile ( p !== a ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, 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\tconst 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\tconst ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst x0 = ax < bx ? ( ax < cx ? ax : cx ) : ( bx < cx ? bx : cx ),\n\t\ty0 = ay < by ? ( ay < cy ? ay : cy ) : ( by < cy ? by : cy ),\n\t\tx1 = ax > bx ? ( ax > cx ? ax : cx ) : ( bx > cx ? bx : cx ),\n\t\ty1 = ay > by ? ( ay > cy ? ay : cy ) : ( by > cy ? by : cy );\n\n\t// z-order range for the current triangle bbox;\n\tconst minZ = zOrder( x0, y0, minX, minY, invSize ),\n\t\tmaxZ = zOrder( x1, y1, minX, minY, invSize );\n\n\tlet 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.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, n.x, n.y ) && area( 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.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) && area( 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.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, n.x, n.y ) && area( 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\tlet p = start;\n\tdo {\n\n\t\tconst 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 | 0 );\n\t\t\ttriangles.push( p.i / dim | 0 );\n\t\t\ttriangles.push( b.i / dim | 0 );\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 filterPoints( 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\tlet a = start;\n\tdo {\n\n\t\tlet 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\tlet 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, 0 );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize, 0 );\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\tconst queue = [];\n\tlet i, 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\touterNode = eliminateHole( queue[ i ], outerNode );\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 link it\nfunction eliminateHole( hole, outerNode ) {\n\n\tconst bridge = findHoleBridge( hole, outerNode );\n\tif ( ! bridge ) {\n\n\t\treturn outerNode;\n\n\t}\n\n\tconst bridgeReverse = splitPolygon( bridge, hole );\n\n\t// filter collinear points around the cuts\n\tfilterPoints( bridgeReverse, bridgeReverse.next );\n\treturn filterPoints( bridge, bridge.next );\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode,\n\t\tqx = - Infinity,\n\t\tm;\n\n\tconst hx = hole.x, hy = hole.y;\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\tconst 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\tm = p.x < p.next.x ? p : p.next;\n\t\t\t\tif ( x === hx ) return m; // hole touches outer segment; pick leftmost endpoint\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\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\tconst stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y;\n\tlet tanMin = Infinity, tan;\n\n\tp = m;\n\n\tdo {\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 ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\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} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === 0 ) 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\tlet 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 = ( x - minX ) * invSize | 0;\n\ty = ( y - minY ) * invSize | 0;\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\tlet 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 ) &&\n ( ax - px ) * ( by - py ) >= ( bx - px ) * ( ay - py ) &&\n ( bx - px ) * ( cy - py ) >= ( cx - px ) * ( by - py );\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 ) && // dones't intersect other edges\n ( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n ( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n equals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\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\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\n\treturn q.x <= Math.max( p.x, r.x ) && q.x >= Math.min( p.x, r.x ) && q.y <= Math.max( p.y, r.y ) && q.y >= Math.min( p.y, r.y );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet 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\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\tlet p = a,\n\t\tinside = false;\n\tconst px = ( 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( 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\tconst 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\tconst 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 = 0;\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\tlet sum = 0;\n\tfor ( let 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\nclass ShapeUtils {\n\n\t// calculate area of the contour polygon\n\n\tstatic area( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let 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\tstatic isClockWise( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t}\n\n\tstatic triangulateShape( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst 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\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let 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\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let 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\tconst 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 ( let 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 * 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\nclass ExtrudeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( - 0.5, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ExtrudeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\toptions: options\n\t\t};\n\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\t\tconst scope = this;\n\n\t\tconst verticesArray = [];\n\t\tconst uvArray = [];\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\t\t\taddShape( shape );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\t\tthis.computeVertexNormals();\n\n\t\t// functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst placeholder = [];\n\n\t\t\t// options\n\n\t\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\t\tconst depth = options.depth !== undefined ? options.depth : 1;\n\n\t\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 0.2;\n\t\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 0.1;\n\t\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\t\tconst extrudePath = options.extrudePath;\n\n\t\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t\t//\n\n\t\t\tlet extrudePts, extrudeByPath = false;\n\t\t\tlet splineTube, binormal, normal, position2;\n\n\t\t\tif ( extrudePath ) {\n\n\t\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\t\textrudeByPath = true;\n\t\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t\t// SETUP TNB variables\n\n\t\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\t\tbinormal = new Vector3();\n\t\t\t\tnormal = new Vector3();\n\t\t\t\tposition2 = new Vector3();\n\n\t\t\t}\n\n\t\t\t// Safeguards if bevels are not enabled\n\n\t\t\tif ( ! bevelEnabled ) {\n\n\t\t\t\tbevelSegments = 0;\n\t\t\t\tbevelThickness = 0;\n\t\t\t\tbevelSize = 0;\n\t\t\t\tbevelOffset = 0;\n\n\t\t\t}\n\n\t\t\t// Variables initialization\n\n\t\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\t\tlet vertices = shapePoints.shape;\n\t\t\tconst holes = shapePoints.holes;\n\n\t\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\t\tif ( reverse ) {\n\n\t\t\t\tvertices = vertices.reverse();\n\n\t\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t\t/* Vertices */\n\n\t\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tvertices = vertices.concat( ahole );\n\n\t\t\t}\n\n\n\t\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\t\tif ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );\n\n\t\t\t\treturn pt.clone().addScaledVector( vec, size );\n\n\t\t\t}\n\n\t\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t\t// Find directions for point movement\n\n\n\t\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t\t//\n\t\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t\t// check for collinear edges\n\t\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not collinear\n\n\t\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t\t// but prevent crazy spikes\n\t\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\t\tlet direction_eq = false; // assumes: opposite\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 ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\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\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = 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\n\t\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t\t}\n\n\n\t\t\tconst contourMovements = [];\n\n\t\t\tfor ( let i = 0, il = contour.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\t// console.log('i,j,k', i, j , k)\n\n\t\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t\t}\n\n\t\t\tconst holesMovements = [];\n\t\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\toneHoleMovements = [];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t\t}\n\n\t\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t\t}\n\n\n\t\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ 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\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t\t// Back facing vertices\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = 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, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ 0 ] ).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\t// Add stepped vertices...\n\t\t\t// Including front facing vertices\n\n\t\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\t// Add bevel segments planes\n\n\t\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t\t} else {\n\n\t\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\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t/* Faces */\n\n\t\t\t// Top and bottom faces\n\n\t\t\tbuildLidFaces();\n\n\t\t\t// Sides faces\n\n\t\t\tbuildSideFaces();\n\n\n\t\t\t///// Internal functions\n\n\t\t\tfunction buildLidFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t\t}\n\n\t\t\t// Create faces for the z-sides of the shape\n\n\t\t\tfunction buildSideFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\t\t\t\tlet layeroffset = 0;\n\t\t\t\tsidewalls( contour, layeroffset );\n\t\t\t\tlayeroffset += contour.length;\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t\t//, true\n\t\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t\t}\n\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t\t}\n\n\t\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\t\tlet i = contour.length;\n\n\t\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\t\tconst j = i;\n\t\t\t\t\tlet k = i - 1;\n\t\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction v( x, y, z ) {\n\n\t\t\t\tplaceholder.push( x );\n\t\t\t\tplaceholder.push( y );\n\t\t\t\tplaceholder.push( z );\n\n\t\t\t}\n\n\n\t\t\tfunction f3( a, b, c ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\n\t\t\t}\n\n\t\t\tfunction f4( a, b, c, d ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( d );\n\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\t\t\t\taddVertex( d );\n\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t}\n\n\t\t\tfunction addVertex( index ) {\n\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t\t}\n\n\n\t\t\tfunction addUV( vector2 ) {\n\n\t\t\t\tuvArray.push( vector2.x );\n\t\t\t\tuvArray.push( vector2.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\t\tconst options = this.parameters.options;\n\n\t\treturn toJSON$1( shapes, options, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\tconst extrudePath = data.options.extrudePath;\n\n\t\tif ( extrudePath !== undefined ) {\n\n\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t}\n\n\t\treturn new ExtrudeGeometry( geometryShapes, data.options );\n\n\t}\n\n}\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst 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\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < Math.abs( a_x - b_x ) ) {\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};\n\nfunction toJSON$1( shapes, options, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst 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\tdata.options = Object.assign( {}, options );\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\nclass IcosahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\t\tconst vertices = [\n\t\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t\t0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t\tt, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t\t1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t\t3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t\t4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'IcosahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new IcosahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass OctahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t\t1, 3, 4,\t1, 4, 2\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'OctahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new OctahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass RingGeometry extends BufferGeometry {\n\n\tconstructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 32, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'RingGeometry';\n\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthetaSegments = Math.max( 3, thetaSegments );\n\t\tphiSegments = Math.max( 1, phiSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// some helper variables\n\n\t\tlet radius = innerRadius;\n\t\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t\t// increase the radius for next row of vertices\n\n\t\t\tradius += radiusStep;\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\t\tconst a = segment;\n\t\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\t\tconst d = segment + 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}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new RingGeometry( data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ShapeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), curveSegments = 12 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShapeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet groupStart = 0;\n\t\tlet groupCount = 0;\n\n\t\t// allow single and array values for \"shapes\" parameter\n\n\t\tif ( Array.isArray( shapes ) === false ) {\n\n\t\t\taddShape( shapes );\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\t\taddShape( shapes[ i ] );\n\n\t\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\t\tgroupStart += groupCount;\n\t\t\t\tgroupCount = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t\t// helper functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst indexOffset = vertices.length / 3;\n\t\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\t\tlet shapeVertices = points.shape;\n\t\t\tconst shapeHoles = points.holes;\n\n\t\t\t// check direction of vertices\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t\t// join vertices of inner and outer paths to a single array\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t\t}\n\n\t\t\t// vertices, normals, uvs\n\n\t\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\t\tnormals.push( 0, 0, 1 );\n\t\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tconst face = faces[ i ];\n\n\t\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\t\tindices.push( a, b, c );\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\n\t\treturn toJSON( shapes, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\treturn new ShapeGeometry( geometryShapes, data.curveSegments );\n\n\t}\n\n}\n\nfunction toJSON( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst 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\nclass SphereGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'SphereGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) );\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) );\n\n\t\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\t\tlet index = 0;\n\t\tconst grid = [];\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\t\tconst verticesRow = [];\n\n\t\t\tconst v = iy / heightSegments;\n\n\t\t\t// special case for the poles\n\n\t\t\tlet uOffset = 0;\n\n\t\t\tif ( iy === 0 && thetaStart === 0 ) {\n\n\t\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t\t} else if ( iy === heightSegments && thetaEnd === Math.PI ) {\n\n\t\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t\t}\n\n\t\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\t\tconst u = ix / widthSegments;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\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.copy( vertex ).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 + uOffset, 1 - v );\n\n\t\t\t\tverticesRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\tgrid.push( verticesRow );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new SphereGeometry( data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass TetrahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'TetrahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TetrahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass TorusGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, radialSegments = 12, tubularSegments = 48, arc = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\ttubularSegments = Math.floor( tubularSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst center = new Vector3();\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tconst u = i / tubularSegments * arc;\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\t\tnormal.subVectors( vertex, center ).normalize();\n\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( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\t\tconst d = ( tubularSegments + 1 ) * j + 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\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusGeometry( data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc );\n\n\t}\n\n}\n\nclass TorusKnotGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusKnotGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\ttubularSegments = Math.floor( tubularSegments );\n\t\tradialSegments = Math.floor( radialSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\tconst P1 = new Vector3();\n\t\tconst P2 = new Vector3();\n\n\t\tconst B = new Vector3();\n\t\tconst T = new Vector3();\n\t\tconst N = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segment\n\n\t\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t\t// calculate orthonormal basis\n\n\t\t\tT.subVectors( P2, P1 );\n\t\t\tN.addVectors( P2, P1 );\n\t\t\tB.crossVectors( T, N );\n\t\t\tN.crossVectors( B, T );\n\n\t\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\t\tB.normalize();\n\t\t\tN.normalize();\n\n\t\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\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\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t\t// now calculate the final vertex position.\n\t\t\t\t// first we orient the extrusion with our basis vectors, then we add it to the current position on the curve\n\n\t\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\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\t\tnormal.subVectors( vertex, P1 ).normalize();\n\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( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst 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\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// this function calculates the current position on the torus curve\n\n\t\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\t\tconst cu = Math.cos( u );\n\t\t\tconst su = Math.sin( u );\n\t\t\tconst quOverP = q / p * u;\n\t\t\tconst cs = Math.cos( quOverP );\n\n\t\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusKnotGeometry( data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q );\n\n\t}\n\n}\n\nclass TubeGeometry extends BufferGeometry {\n\n\tconstructor( path = new QuadraticBezierCurve3( new Vector3( - 1, - 1, 0 ), new Vector3( - 1, 1, 0 ), new Vector3( 1, 1, 0 ) ), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TubeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpath: path,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradius: radius,\n\t\t\tradialSegments: radialSegments,\n\t\t\tclosed: closed\n\t\t};\n\n\t\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t\t// expose internals\n\n\t\tthis.tangents = frames.tangents;\n\t\tthis.normals = frames.normals;\n\t\tthis.binormals = frames.binormals;\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tlet P = new Vector3();\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\n\t\t// create buffer data\n\n\t\tgenerateBufferData();\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// functions\n\n\t\tfunction generateBufferData() {\n\n\t\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\t\tgenerateSegment( i );\n\n\t\t\t}\n\n\t\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t\t// at the regular position on the given path\n\t\t\t//\n\t\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t\t// uvs are generated in a separate function.\n\t\t\t// this makes it easy compute correct values for closed geometries\n\n\t\t\tgenerateUVs();\n\n\t\t\t// finally create faces\n\n\t\t\tgenerateIndices();\n\n\t\t}\n\n\t\tfunction generateSegment( i ) {\n\n\t\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t\t// retrieve corresponding normal and binormal\n\n\t\t\tconst N = frames.normals[ i ];\n\t\t\tconst B = frames.binormals[ i ];\n\n\t\t\t// generate normals and vertices for the current segment\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\tconst sin = Math.sin( v );\n\t\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\t\tnormal.normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateIndices() {\n\n\t\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.path = this.parameters.path.toJSON();\n\n\t\treturn data;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\treturn new TubeGeometry(\n\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\tdata.tubularSegments,\n\t\t\tdata.radius,\n\t\t\tdata.radialSegments,\n\t\t\tdata.closed\n\t\t);\n\n\t}\n\n}\n\nclass WireframeGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'WireframeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\t// buffer\n\n\t\t\tconst vertices = [];\n\t\t\tconst edges = new Set();\n\n\t\t\t// helper variables\n\n\t\t\tconst start = new Vector3();\n\t\t\tconst end = new Vector3();\n\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\t// indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tconst indices = geometry.index;\n\t\t\t\tlet groups = geometry.groups;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t\t}\n\n\t\t\t\t// create a data structure that contains all edges without duplicates\n\n\t\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\t\tconst groupStart = group.start;\n\t\t\t\t\tconst groupCount = group.count;\n\n\t\t\t\t\tfor ( let i = groupStart, l = ( groupStart + groupCount ); i < l; i += 3 ) {\n\n\t\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\tconst index1 = indices.getX( i + j );\n\t\t\t\t\t\t\tconst index2 = indices.getX( i + ( j + 1 ) % 3 );\n\n\t\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\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 {\n\n\t\t\t\t// non-indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\n\t\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\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\t\tconst index1 = 3 * i + j;\n\t\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\n\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\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// build geometry\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction isUniqueEdge( start, end, edges ) {\n\n\tconst hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n\tconst hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`; // coincident edge\n\n\tif ( edges.has( hash1 ) === true || edges.has( hash2 ) === true ) {\n\n\t\treturn false;\n\n\t} else {\n\n\t\tedges.add( hash1 );\n\t\tedges.add( hash2 );\n\t\treturn true;\n\n\t}\n\n}\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBoxGeometry: BoxGeometry,\n\tCapsuleGeometry: CapsuleGeometry,\n\tCircleGeometry: CircleGeometry,\n\tConeGeometry: ConeGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tLatheGeometry: LatheGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tRingGeometry: RingGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tSphereGeometry: SphereGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTubeGeometry: TubeGeometry,\n\tWireframeGeometry: WireframeGeometry\n});\n\nclass ShadowMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShadowMaterial = true;\n\n\t\tthis.type = 'ShadowMaterial';\n\n\t\tthis.color = new Color( 0x000000 );\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass RawShaderMaterial extends ShaderMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper( parameters );\n\n\t\tthis.isRawShaderMaterial = true;\n\n\t\tthis.type = 'RawShaderMaterial';\n\n\t}\n\n}\n\nclass MeshStandardMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshStandardMaterial = true;\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.type = 'MeshStandardMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.roughness = 1.0;\n\t\tthis.metalness = 0.0;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.roughnessMap = null;\n\n\t\tthis.metalnessMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapIntensity = 1.0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.color.copy( source.color );\n\t\tthis.roughness = source.roughness;\n\t\tthis.metalness = source.metalness;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.roughnessMap = source.roughnessMap;\n\n\t\tthis.metalnessMap = source.metalnessMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapIntensity = source.envMapIntensity;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhysicalMaterial = true;\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.type = 'MeshPhysicalMaterial';\n\n\t\tthis.anisotropyRotation = 0;\n\t\tthis.anisotropyMap = null;\n\n\t\tthis.clearcoatMap = null;\n\t\tthis.clearcoatRoughness = 0.0;\n\t\tthis.clearcoatRoughnessMap = null;\n\t\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\t\tthis.clearcoatNormalMap = null;\n\n\t\tthis.ior = 1.5;\n\n\t\tObject.defineProperty( this, 'reflectivity', {\n\t\t\tget: function () {\n\n\t\t\t\treturn ( clamp( 2.5 * ( this.ior - 1 ) / ( this.ior + 1 ), 0, 1 ) );\n\n\t\t\t},\n\t\t\tset: function ( reflectivity ) {\n\n\t\t\t\tthis.ior = ( 1 + 0.4 * reflectivity ) / ( 1 - 0.4 * reflectivity );\n\n\t\t\t}\n\t\t} );\n\n\t\tthis.iridescenceMap = null;\n\t\tthis.iridescenceIOR = 1.3;\n\t\tthis.iridescenceThicknessRange = [ 100, 400 ];\n\t\tthis.iridescenceThicknessMap = null;\n\n\t\tthis.sheenColor = new Color( 0x000000 );\n\t\tthis.sheenColorMap = null;\n\t\tthis.sheenRoughness = 1.0;\n\t\tthis.sheenRoughnessMap = null;\n\n\t\tthis.transmissionMap = null;\n\n\t\tthis.thickness = 0;\n\t\tthis.thicknessMap = null;\n\t\tthis.attenuationDistance = Infinity;\n\t\tthis.attenuationColor = new Color( 1, 1, 1 );\n\n\t\tthis.specularIntensity = 1.0;\n\t\tthis.specularIntensityMap = null;\n\t\tthis.specularColor = new Color( 1, 1, 1 );\n\t\tthis.specularColorMap = null;\n\n\t\tthis._anisotropy = 0;\n\t\tthis._clearcoat = 0;\n\t\tthis._iridescence = 0;\n\t\tthis._sheen = 0.0;\n\t\tthis._transmission = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tget anisotropy() {\n\n\t\treturn this._anisotropy;\n\n\t}\n\n\tset anisotropy( value ) {\n\n\t\tif ( this._anisotropy > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._anisotropy = value;\n\n\t}\n\n\tget clearcoat() {\n\n\t\treturn this._clearcoat;\n\n\t}\n\n\tset clearcoat( value ) {\n\n\t\tif ( this._clearcoat > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._clearcoat = value;\n\n\t}\n\n\tget iridescence() {\n\n\t\treturn this._iridescence;\n\n\t}\n\n\tset iridescence( value ) {\n\n\t\tif ( this._iridescence > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._iridescence = value;\n\n\t}\n\n\tget sheen() {\n\n\t\treturn this._sheen;\n\n\t}\n\n\tset sheen( value ) {\n\n\t\tif ( this._sheen > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._sheen = value;\n\n\t}\n\n\tget transmission() {\n\n\t\treturn this._transmission;\n\n\t}\n\n\tset transmission( value ) {\n\n\t\tif ( this._transmission > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._transmission = value;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.anisotropy = source.anisotropy;\n\t\tthis.anisotropyRotation = source.anisotropyRotation;\n\t\tthis.anisotropyMap = source.anisotropyMap;\n\n\t\tthis.clearcoat = source.clearcoat;\n\t\tthis.clearcoatMap = source.clearcoatMap;\n\t\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\t\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\t\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\t\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\t\tthis.ior = source.ior;\n\n\t\tthis.iridescence = source.iridescence;\n\t\tthis.iridescenceMap = source.iridescenceMap;\n\t\tthis.iridescenceIOR = source.iridescenceIOR;\n\t\tthis.iridescenceThicknessRange = [ ...source.iridescenceThicknessRange ];\n\t\tthis.iridescenceThicknessMap = source.iridescenceThicknessMap;\n\n\t\tthis.sheen = source.sheen;\n\t\tthis.sheenColor.copy( source.sheenColor );\n\t\tthis.sheenColorMap = source.sheenColorMap;\n\t\tthis.sheenRoughness = source.sheenRoughness;\n\t\tthis.sheenRoughnessMap = source.sheenRoughnessMap;\n\n\t\tthis.transmission = source.transmission;\n\t\tthis.transmissionMap = source.transmissionMap;\n\n\t\tthis.thickness = source.thickness;\n\t\tthis.thicknessMap = source.thicknessMap;\n\t\tthis.attenuationDistance = source.attenuationDistance;\n\t\tthis.attenuationColor.copy( source.attenuationColor );\n\n\t\tthis.specularIntensity = source.specularIntensity;\n\t\tthis.specularIntensityMap = source.specularIntensityMap;\n\t\tthis.specularColor.copy( source.specularColor );\n\t\tthis.specularColorMap = source.specularColorMap;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshPhongMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhongMaterial = true;\n\n\t\tthis.type = 'MeshPhongMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.specular = new Color( 0x111111 );\n\t\tthis.shininess = 30;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.specular.copy( source.specular );\n\t\tthis.shininess = source.shininess;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshToonMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshToonMaterial = true;\n\n\t\tthis.defines = { 'TOON': '' };\n\n\t\tthis.type = 'MeshToonMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\t\tthis.gradientMap = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\t\tthis.gradientMap = source.gradientMap;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshNormalMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshNormalMaterial = true;\n\n\t\tthis.type = 'MeshNormalMaterial';\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshLambertMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshLambertMaterial = true;\n\n\t\tthis.type = 'MeshLambertMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshMatcapMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshMatcapMaterial = true;\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.type = 'MeshMatcapMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.matcap = null;\n\n\t\tthis.map = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.matcap = source.matcap;\n\n\t\tthis.map = source.map;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineDashedMaterial extends LineBasicMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineDashedMaterial = true;\n\n\t\tthis.type = 'LineDashedMaterial';\n\n\t\tthis.scale = 1;\n\t\tthis.dashSize = 3;\n\t\tthis.gapSize = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.scale = source.scale;\n\t\tthis.dashSize = source.dashSize;\n\t\tthis.gapSize = source.gapSize;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// same as Array.prototype.slice, but also works on typed arrays\nfunction arraySlice( array, from, to ) {\n\n\tif ( isTypedArray( array ) ) {\n\n\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t}\n\n\treturn array.slice( from, to );\n\n}\n\n// converts an array to a specific type\nfunction convertArray( array, type, forceClone ) {\n\n\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t! forceClone && array.constructor === type ) return array;\n\n\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\treturn new type( array ); // create typed array\n\n\t}\n\n\treturn Array.prototype.slice.call( array ); // create Array\n\n}\n\nfunction isTypedArray( object ) {\n\n\treturn ArrayBuffer.isView( object ) &&\n\t\t! ( object instanceof DataView );\n\n}\n\n// returns an array by which times and values can be sorted\nfunction getKeyframeOrder( times ) {\n\n\tfunction compareTime( i, j ) {\n\n\t\treturn times[ i ] - times[ j ];\n\n\t}\n\n\tconst n = times.length;\n\tconst result = new Array( n );\n\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\tresult.sort( compareTime );\n\n\treturn result;\n\n}\n\n// uses the array previously returned by 'getKeyframeOrder' to sort data\nfunction sortedArray( values, stride, order ) {\n\n\tconst nValues = values.length;\n\tconst result = new values.constructor( nValues );\n\n\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\tconst srcOffset = order[ i ] * stride;\n\n\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t}\n\n\t}\n\n\treturn result;\n\n}\n\n// function for parsing AOS keyframe formats\nfunction flattenJSON( jsonKeys, times, values, valuePropertyName ) {\n\n\tlet i = 1, key = jsonKeys[ 0 ];\n\n\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\tkey = jsonKeys[ i ++ ];\n\n\t}\n\n\tif ( key === undefined ) return; // no data\n\n\tlet value = key[ valuePropertyName ];\n\tif ( value === undefined ) return; // no data\n\n\tif ( Array.isArray( value ) ) {\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else if ( value.toArray !== undefined ) {\n\n\t\t// ...assume THREE.Math-ish\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else {\n\n\t\t// otherwise push as-is\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push( value );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t}\n\n}\n\nfunction subclip( sourceClip, name, startFrame, endFrame, fps = 30 ) {\n\n\tconst clip = sourceClip.clone();\n\n\tclip.name = name;\n\n\tconst tracks = [];\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tconst track = clip.tracks[ i ];\n\t\tconst valueSize = track.getValueSize();\n\n\t\tconst times = [];\n\t\tconst values = [];\n\n\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( times.length === 0 ) continue;\n\n\t\ttrack.times = convertArray( times, track.times.constructor );\n\t\ttrack.values = convertArray( values, track.values.constructor );\n\n\t\ttracks.push( track );\n\n\t}\n\n\tclip.tracks = tracks;\n\n\t// find minimum .times value across all tracks in the trimmed clip\n\n\tlet minStartTime = Infinity;\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t}\n\n\t}\n\n\t// shift all tracks such that clip begins at t=0\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t}\n\n\tclip.resetDuration();\n\n\treturn clip;\n\n}\n\nfunction makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {\n\n\tif ( fps <= 0 ) fps = 30;\n\n\tconst numTracks = referenceClip.tracks.length;\n\tconst referenceTime = referenceFrame / fps;\n\n\t// Make each track's values relative to the values at the reference frame\n\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t// Skip this track if it's non-numeric\n\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t} );\n\n\t\tif ( targetTrack === undefined ) continue;\n\n\t\tlet referenceOffset = 0;\n\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\treferenceOffset = referenceValueSize / 3;\n\n\t\t}\n\n\t\tlet targetOffset = 0;\n\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\ttargetOffset = targetValueSize / 3;\n\n\t\t}\n\n\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\tlet referenceValue;\n\n\t\t// Find the value to subtract out of the track\n\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\treferenceValue = arraySlice( referenceTrack.values, startIndex, endIndex );\n\n\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\tconst startIndex = lastIndex * referenceValueSize + referenceOffset;\n\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\treferenceValue = arraySlice( referenceTrack.values, startIndex, endIndex );\n\n\t\t} else {\n\n\t\t\t// Interpolate to the reference value\n\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\treferenceValue = arraySlice( interpolant.resultBuffer, startIndex, endIndex );\n\n\t\t}\n\n\t\t// Conjugate the quaternion\n\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\tconst referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();\n\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t}\n\n\t\t// Subtract the reference value from all of the track values\n\n\t\tconst numTimes = targetTrack.times.length;\n\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\tconst valueStart = j * targetValueSize + targetOffset;\n\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart,\n\t\t\t\t\treferenceValue,\n\t\t\t\t\t0,\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart\n\t\t\t\t);\n\n\t\t\t} else {\n\n\t\t\t\tconst valueEnd = targetValueSize - targetOffset * 2;\n\n\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\tfor ( let k = 0; k < valueEnd; ++ k ) {\n\n\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\treturn targetClip;\n\n}\n\nconst AnimationUtils = {\n\tarraySlice: arraySlice,\n\tconvertArray: convertArray,\n\tisTypedArray: isTypedArray,\n\tgetKeyframeOrder: getKeyframeOrder,\n\tsortedArray: sortedArray,\n\tflattenJSON: flattenJSON,\n\tsubclip: subclip,\n\tmakeClipAdditive: makeClipAdditive\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 */\n\nclass Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tthis.parameterPositions = parameterPositions;\n\t\tthis._cachedIndex = 0;\n\n\t\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\t\tthis.sampleValues = sampleValues;\n\t\tthis.valueSize = sampleSize;\n\n\t\tthis.settings = null;\n\t\tthis.DefaultSettings_ = {};\n\n\t}\n\n\tevaluate( t ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet i1 = this._cachedIndex,\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\tlet 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 ( let 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.copySampleValue_( i1 - 1 );\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\tconst 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 ( let 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.copySampleValue_( 0 );\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\tconst 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.copySampleValue_( 0 );\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.copySampleValue_( i1 - 1 );\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\tgetSettings_() {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t}\n\n\tcopySampleValue_( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst 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 ( let 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_( /* 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_( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\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\nclass CubicInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t\tthis._weightPrev = - 0;\n\t\tthis._offsetPrev = - 0;\n\t\tthis._weightNext = - 0;\n\t\tthis._offsetNext = - 0;\n\n\t\tthis.DefaultSettings_ = {\n\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\n\t\t};\n\n\t}\n\n\tintervalChanged_( i1, t0, t1 ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet iPrev = 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\tconst 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_( i1, t0, t, t1 ) {\n\n\t\tconst 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\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let 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\nclass LinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst 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 ( let 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 preceding\n * the parameter.\n */\n\nclass DiscreteInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n}\n\nclass KeyframeTrack {\n\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\t\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\t\tthis.name = name;\n\n\t\tthis.times = convertArray( times, this.TimeBufferType );\n\t\tthis.values = convertArray( values, this.ValueBufferType );\n\n\t\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\t}\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\tstatic toJSON( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== this.toJSON ) {\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': convertArray( track.times, Array ),\n\t\t\t\t'values': convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst 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\tInterpolantFactoryMethodDiscrete( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodSmooth( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tsetInterpolation( interpolation ) {\n\n\t\tlet 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\tconst 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() {\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() {\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( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let 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( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let 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( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 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 ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = arraySlice( times, from, to );\n\t\t\tthis.values = 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() {\n\n\t\tlet valid = true;\n\n\t\tconst 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\tconst 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\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst 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 ( isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst 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() {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = arraySlice( this.times ),\n\t\t\tvalues = arraySlice( this.values ),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst 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 !== times[ 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\tconst 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 ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst 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\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let 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 ( let 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 = arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = arraySlice( values, 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst times = arraySlice( this.times, 0 );\n\t\tconst values = arraySlice( this.values, 0 );\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst 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\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\n\n/**\n * A Track of Boolean keyframe values.\n */\nclass BooleanKeyframeTrack extends KeyframeTrack {}\n\nBooleanKeyframeTrack.prototype.ValueTypeName = 'bool';\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of keyframe values that represent color.\n */\nclass ColorKeyframeTrack extends KeyframeTrack {}\n\nColorKeyframeTrack.prototype.ValueTypeName = 'color';\n\n/**\n * A Track of numeric keyframe values.\n */\nclass NumberKeyframeTrack extends KeyframeTrack {}\n\nNumberKeyframeTrack.prototype.ValueTypeName = 'number';\n\n/**\n * Spherical linear unit quaternion interpolant.\n */\n\nclass QuaternionLinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let 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 * A Track of quaternion keyframe values.\n */\nclass QuaternionKeyframeTrack extends KeyframeTrack {\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n}\n\nQuaternionKeyframeTrack.prototype.ValueTypeName = 'quaternion';\n// ValueBufferType is inherited\nQuaternionKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track that interpolates Strings\n */\nclass StringKeyframeTrack extends KeyframeTrack {}\n\nStringKeyframeTrack.prototype.ValueTypeName = 'string';\nStringKeyframeTrack.prototype.ValueBufferType = Array;\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of vectored keyframe values.\n */\nclass VectorKeyframeTrack extends KeyframeTrack {}\n\nVectorKeyframeTrack.prototype.ValueTypeName = 'vector';\n\nclass AnimationClip {\n\n\tconstructor( name, duration = - 1, tracks, blendMode = NormalAnimationBlendMode ) {\n\n\t\tthis.name = name;\n\t\tthis.tracks = tracks;\n\t\tthis.duration = duration;\n\t\tthis.blendMode = blendMode;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// this means it should figure out its duration by scanning the tracks\n\t\tif ( this.duration < 0 ) {\n\n\t\t\tthis.resetDuration();\n\n\t\t}\n\n\t}\n\n\n\tstatic parse( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let 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\tconst clip = new this( json.name, json.duration, tracks, json.blendMode );\n\t\tclip.uuid = json.uuid;\n\n\t\treturn clip;\n\n\t}\n\n\tstatic toJSON( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst 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\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let 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\tstatic CreateFromMorphTargetSequence( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet 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\tconst order = getKeyframeOrder( times );\n\t\t\ttimes = sortedArray( times, 1, order );\n\t\t\tvalues = 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 this( name, - 1, tracks );\n\n\t}\n\n\tstatic findByName( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let 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\tstatic CreateClipsFromMorphTargetSequences( morphTargets, fps, noLoop ) {\n\n\t\tconst 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\tconst 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 ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\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\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( this.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\tstatic parseAnimation( 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\tconst 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\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tflattenJSON( 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\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst 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\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let 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 ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst 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;\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst 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\tconst clip = new this( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n\tresetDuration() {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst 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() {\n\n\t\tfor ( let 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() {\n\n\t\tlet valid = true;\n\n\t\tfor ( let 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() {\n\n\t\tfor ( let 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\tclone() {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let 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 this.constructor( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.constructor.toJSON( this );\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\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tflattenJSON( 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\nconst 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\nclass LoadingManager {\n\n\tconstructor( onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tlet isLoading = false;\n\t\tlet itemsLoaded = 0;\n\t\tlet itemsTotal = 0;\n\t\tlet urlModifier = undefined;\n\t\tconst handlers = [];\n\n\t\t// Refer to #5689 for the reason why we don't set .onStart\n\t\t// in the constructor\n\n\t\tthis.onStart = undefined;\n\t\tthis.onLoad = onLoad;\n\t\tthis.onProgress = onProgress;\n\t\tthis.onError = onError;\n\n\t\tthis.itemStart = function ( url ) {\n\n\t\t\titemsTotal ++;\n\n\t\t\tif ( isLoading === false ) {\n\n\t\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tisLoading = true;\n\n\t\t};\n\n\t\tthis.itemEnd = function ( url ) {\n\n\t\t\titemsLoaded ++;\n\n\t\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\t\tisLoading = false;\n\n\t\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\t\tscope.onLoad();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.itemError = function ( url ) {\n\n\t\t\tif ( scope.onError !== undefined ) {\n\n\t\t\t\tscope.onError( url );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.resolveURL = function ( url ) {\n\n\t\t\tif ( urlModifier ) {\n\n\t\t\t\treturn urlModifier( url );\n\n\t\t\t}\n\n\t\t\treturn url;\n\n\t\t};\n\n\t\tthis.setURLModifier = function ( transform ) {\n\n\t\t\turlModifier = transform;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.addHandler = function ( regex, loader ) {\n\n\t\t\thandlers.push( regex, loader );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.removeHandler = function ( regex ) {\n\n\t\t\tconst index = handlers.indexOf( regex );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\thandlers.splice( index, 2 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.getHandler = function ( file ) {\n\n\t\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\t\tconst regex = handlers[ i ];\n\t\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\t\treturn loader;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t}\n\n}\n\nconst DefaultLoadingManager = /*@__PURE__*/ new LoadingManager();\n\nclass Loader {\n\n\tconstructor( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t\tthis.crossOrigin = 'anonymous';\n\t\tthis.withCredentials = false;\n\t\tthis.path = '';\n\t\tthis.resourcePath = '';\n\t\tthis.requestHeader = {};\n\n\t}\n\n\tload( /* url, onLoad, onProgress, onError */ ) {}\n\n\tloadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t}\n\n\tparse( /* data */ ) {}\n\n\tsetCrossOrigin( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t}\n\n\tsetWithCredentials( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t}\n\n\tsetPath( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t}\n\n\tsetResourcePath( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t}\n\n\tsetRequestHeader( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n}\n\nconst loading = {};\n\nclass HttpError extends Error {\n\n\tconstructor( message, response ) {\n\n\t\tsuper( message );\n\t\tthis.response = response;\n\n\t}\n\n}\n\nclass FileLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( 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\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tthis.manager.itemStart( url );\n\n\t\t\tsetTimeout( () => {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tthis.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// Initialise array for duplicate requests\n\t\tloading[ url ] = [];\n\n\t\tloading[ url ].push( {\n\t\t\tonLoad: onLoad,\n\t\t\tonProgress: onProgress,\n\t\t\tonError: onError,\n\t\t} );\n\n\t\t// create request\n\t\tconst req = new Request( url, {\n\t\t\theaders: new Headers( this.requestHeader ),\n\t\t\tcredentials: this.withCredentials ? 'include' : 'same-origin',\n\t\t\t// An abort controller could be added within a future PR\n\t\t} );\n\n\t\t// record states ( avoid data race )\n\t\tconst mimeType = this.mimeType;\n\t\tconst responseType = this.responseType;\n\n\t\t// start the fetch\n\t\tfetch( req )\n\t\t\t.then( response => {\n\n\t\t\t\tif ( response.status === 200 || response.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 ( response.status === 0 ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Workaround: Checking if response.body === undefined for Alipay browser #23548\n\n\t\t\t\t\tif ( typeof ReadableStream === 'undefined' || response.body === undefined || response.body.getReader === undefined ) {\n\n\t\t\t\t\t\treturn response;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\t\tconst reader = response.body.getReader();\n\n\t\t\t\t\t// Nginx needs X-File-Size check\n\t\t\t\t\t// https://serverfault.com/questions/482875/why-does-nginx-remove-content-length-header-for-chunked-content\n\t\t\t\t\tconst contentLength = response.headers.get( 'Content-Length' ) || response.headers.get( 'X-File-Size' );\n\t\t\t\t\tconst total = contentLength ? parseInt( contentLength ) : 0;\n\t\t\t\t\tconst lengthComputable = total !== 0;\n\t\t\t\t\tlet loaded = 0;\n\n\t\t\t\t\t// periodically read data into the new stream tracking while download progress\n\t\t\t\t\tconst stream = new ReadableStream( {\n\t\t\t\t\t\tstart( controller ) {\n\n\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\tfunction readData() {\n\n\t\t\t\t\t\t\t\treader.read().then( ( { done, value } ) => {\n\n\t\t\t\t\t\t\t\t\tif ( done ) {\n\n\t\t\t\t\t\t\t\t\t\tcontroller.close();\n\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\tloaded += value.byteLength;\n\n\t\t\t\t\t\t\t\t\t\tconst event = new ProgressEvent( 'progress', { lengthComputable, loaded, total } );\n\t\t\t\t\t\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\t\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tcontroller.enqueue( value );\n\t\t\t\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\t\t\t}\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} );\n\n\t\t\t\t\treturn new Response( stream );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new HttpError( `fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}`, response );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( response => {\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\n\t\t\t\t\t\treturn response.arrayBuffer();\n\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\treturn response.blob();\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\treturn response.text()\n\t\t\t\t\t\t\t.then( text => {\n\n\t\t\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\t\t\treturn parser.parseFromString( text, mimeType );\n\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\treturn response.json();\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( mimeType === undefined ) {\n\n\t\t\t\t\t\t\treturn response.text();\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// sniff encoding\n\t\t\t\t\t\t\tconst re = /charset=\"?([^;\"\\s]*)\"?/i;\n\t\t\t\t\t\t\tconst exec = re.exec( mimeType );\n\t\t\t\t\t\t\tconst label = exec && exec[ 1 ] ? exec[ 1 ].toLowerCase() : undefined;\n\t\t\t\t\t\t\tconst decoder = new TextDecoder( label );\n\t\t\t\t\t\t\treturn response.arrayBuffer().then( ab => decoder.decode( ab ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( data => {\n\n\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\tCache.add( url, data );\n\n\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( data );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.catch( err => {\n\n\t\t\t\t// Abort errors and other errors are handled the same\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tif ( callbacks === undefined ) {\n\n\t\t\t\t\t// When onLoad was called and url was deleted in `loading`\n\t\t\t\t\tthis.manager.itemError( url );\n\t\t\t\t\tthrow err;\n\n\t\t\t\t}\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( err );\n\n\t\t\t\t}\n\n\t\t\t\tthis.manager.itemError( url );\n\n\t\t\t} )\n\t\t\t.finally( () => {\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\tthis.manager.itemStart( url );\n\n\t}\n\n\tsetResponseType( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t}\n\n\tsetMimeType( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n}\n\nclass AnimationLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst 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}\n\n/**\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass CompressedTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( 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 ) texture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.image = images;\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\tfor ( let 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\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let 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\ttexture.image = images;\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}\n\nclass ImageLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst 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\tconst image = createElementNS( 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\tremoveEventListeners();\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\tremoveEventListeners();\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\tfunction removeEventListeners() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.slice( 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}\n\nclass CubeTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\t\ttexture.colorSpace = SRGBColorSpace;\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet 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 ( let 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}\n\n/**\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass DataTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tconst texData = scope.parse( 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 : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.colorSpace !== undefined ) {\n\n\t\t\t\ttexture.colorSpace = texData.colorSpace;\n\n\t\t\t} else if ( texData.encoding !== undefined ) { // @deprecated, r152\n\n\t\t\t\ttexture.encoding = texData.encoding;\n\n\t\t\t}\n\n\t\t\tif ( texData.flipY !== undefined ) {\n\n\t\t\t\ttexture.flipY = texData.flipY;\n\n\t\t\t}\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\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\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\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\tif ( texData.generateMipmaps !== undefined ) {\n\n\t\t\t\ttexture.generateMipmaps = texData.generateMipmaps;\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}\n\nclass TextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst 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\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}\n\nclass Light extends Object3D {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.isLight = true;\n\n\t\tthis.type = 'Light';\n\n\t\tthis.color = new Color( color );\n\t\tthis.intensity = intensity;\n\n\t}\n\n\tdispose() {\n\n\t\t// Empty here in base class; some subclasses override.\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\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( meta ) {\n\n\t\tconst data = super.toJSON( 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\nclass HemisphereLight extends Light {\n\n\tconstructor( skyColor, groundColor, intensity ) {\n\n\t\tsuper( skyColor, intensity );\n\n\t\tthis.isHemisphereLight = true;\n\n\t\tthis.type = 'HemisphereLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.groundColor = new Color( groundColor );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld$1 = /*@__PURE__*/ new Vector3();\nconst _lookTarget$1 = /*@__PURE__*/ new Vector3();\n\nclass LightShadow {\n\n\tconstructor( camera ) {\n\n\t\tthis.camera = camera;\n\n\t\tthis.bias = 0;\n\t\tthis.normalBias = 0;\n\t\tthis.radius = 1;\n\t\tthis.blurSamples = 8;\n\n\t\tthis.mapSize = new Vector2( 512, 512 );\n\n\t\tthis.map = null;\n\t\tthis.mapPass = null;\n\t\tthis.matrix = new Matrix4();\n\n\t\tthis.autoUpdate = true;\n\t\tthis.needsUpdate = false;\n\n\t\tthis._frustum = new Frustum();\n\t\tthis._frameExtents = new Vector2( 1, 1 );\n\n\t\tthis._viewportCount = 1;\n\n\t\tthis._viewports = [\n\n\t\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t\t];\n\n\t}\n\n\tgetViewportCount() {\n\n\t\treturn this._viewportCount;\n\n\t}\n\n\tgetFrustum() {\n\n\t\treturn this._frustum;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst shadowCamera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\t_lightPositionWorld$1.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( _lightPositionWorld$1 );\n\n\t\t_lookTarget$1.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( _lookTarget$1 );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\t_projScreenMatrix$1.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix$1 );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( _projScreenMatrix$1 );\n\n\t}\n\n\tgetViewport( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t}\n\n\tgetFrameExtents() {\n\n\t\treturn this._frameExtents;\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this.map ) {\n\n\t\t\tthis.map.dispose();\n\n\t\t}\n\n\t\tif ( this.mapPass ) {\n\n\t\t\tthis.mapPass.dispose();\n\n\t\t}\n\n\t}\n\n\tcopy( 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() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\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\nclass SpotLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n\t\tthis.isSpotLightShadow = true;\n\n\t\tthis.focus = 1;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = RAD2DEG * 2 * light.angle * this.focus;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst 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\tsuper.updateMatrices( light );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.focus = source.focus;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass SpotLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 2 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isSpotLight = true;\n\n\t\tthis.type = 'SpotLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.distance = distance;\n\t\tthis.angle = angle;\n\t\tthis.penumbra = penumbra;\n\t\tthis.decay = decay;\n\n\t\tthis.map = null;\n\n\t\tthis.shadow = new SpotLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// by convention for a spotlight, luminous power (lm) = π * luminous intensity (cd)\n\t\treturn this.intensity * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / Math.PI;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\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\nconst _projScreenMatrix = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld = /*@__PURE__*/ new Vector3();\nconst _lookTarget = /*@__PURE__*/ new Vector3();\n\nclass PointLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\t\tthis.isPointLightShadow = true;\n\n\t\tthis._frameExtents = new Vector2( 4, 2 );\n\n\t\tthis._viewportCount = 6;\n\n\t\tthis._viewports = [\n\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t// following orientation:\n\t\t\t//\n\t\t\t// xzXZ\n\t\t\t// y Y\n\t\t\t//\n\t\t\t// X - Positive x direction\n\t\t\t// x - Negative x direction\n\t\t\t// Y - Positive y direction\n\t\t\t// y - Negative y direction\n\t\t\t// Z - Positive z direction\n\t\t\t// z - Negative z direction\n\n\t\t\t// positive X\n\t\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t\t// negative X\n\t\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t\t// positive Z\n\t\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t\t// negative Z\n\t\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t\t// positive Y\n\t\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t\t// negative Y\n\t\t\tnew Vector4( 1, 0, 1, 1 )\n\t\t];\n\n\t\tthis._cubeDirections = [\n\t\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t\t];\n\n\t\tthis._cubeUps = [\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t\t];\n\n\t}\n\n\tupdateMatrices( light, viewportIndex = 0 ) {\n\n\t\tconst camera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( far !== camera.far ) {\n\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( _lightPositionWorld );\n\n\t\t_lookTarget.copy( camera.position );\n\t\t_lookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( _lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t}\n\n}\n\nclass PointLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, decay = 2 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isPointLight = true;\n\n\t\tthis.type = 'PointLight';\n\n\t\tthis.distance = distance;\n\t\tthis.decay = decay;\n\n\t\tthis.shadow = new PointLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// for an isotropic light source, luminous power (lm) = 4 π luminous intensity (cd)\n\t\treturn this.intensity * 4 * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\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\nclass DirectionalLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n\t\tthis.isDirectionalLightShadow = true;\n\n\t}\n\n}\n\nclass DirectionalLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isDirectionalLight = true;\n\n\t\tthis.type = 'DirectionalLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.shadow = new DirectionalLightShadow();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.target = source.target.clone();\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AmbientLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isAmbientLight = true;\n\n\t\tthis.type = 'AmbientLight';\n\n\t}\n\n}\n\nclass RectAreaLight extends Light {\n\n\tconstructor( color, intensity, width = 10, height = 10 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isRectAreaLight = true;\n\n\t\tthis.type = 'RectAreaLight';\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in nits)\n\t\treturn this.intensity * this.width * this.height * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in nits) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( this.width * this.height * Math.PI );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( 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( meta ) {\n\n\t\tconst data = super.toJSON( 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 * 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\nclass SphericalHarmonics3 {\n\n\tconstructor() {\n\n\t\tthis.isSphericalHarmonics3 = true;\n\n\t\tthis.coefficients = [];\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients.push( new Vector3() );\n\n\t\t}\n\n\t}\n\n\tset( coefficients ) {\n\n\t\tfor ( let 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() {\n\n\t\tfor ( let 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( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst 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.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( 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( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst 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.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t}\n\n\tadd( sh ) {\n\n\t\tfor ( let 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\taddScaledSH( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tscale( s ) {\n\n\t\tfor ( let 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( sh, alpha ) {\n\n\t\tfor ( let 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( sh ) {\n\n\t\tfor ( let 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( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tstatic getBasisAt( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst 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\nclass LightProbe extends Light {\n\n\tconstructor( sh = new SphericalHarmonics3(), intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.isLightProbe = true;\n\n\t\tthis.sh = sh;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass MaterialLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\t\tthis.textures = {};\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst 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\tconst material = MaterialLoader.createMaterialFromType( 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 !== 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.sheen !== undefined ) material.sheen = json.sheen;\n\t\tif ( json.sheenColor !== undefined ) material.sheenColor = new Color().setHex( json.sheenColor );\n\t\tif ( json.sheenRoughness !== undefined ) material.sheenRoughness = json.sheenRoughness;\n\t\tif ( json.emissive !== undefined && material.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined && material.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.specularIntensity !== undefined ) material.specularIntensity = json.specularIntensity;\n\t\tif ( json.specularColor !== undefined && material.specularColor !== undefined ) material.specularColor.setHex( json.specularColor );\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.iridescence !== undefined ) material.iridescence = json.iridescence;\n\t\tif ( json.iridescenceIOR !== undefined ) material.iridescenceIOR = json.iridescenceIOR;\n\t\tif ( json.iridescenceThicknessRange !== undefined ) material.iridescenceThicknessRange = json.iridescenceThicknessRange;\n\t\tif ( json.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.thickness !== undefined ) material.thickness = json.thickness;\n\t\tif ( json.attenuationDistance !== undefined ) material.attenuationDistance = json.attenuationDistance;\n\t\tif ( json.attenuationColor !== undefined && material.attenuationColor !== undefined ) material.attenuationColor.setHex( json.attenuationColor );\n\t\tif ( json.anisotropy !== undefined ) material.anisotropy = json.anisotropy;\n\t\tif ( json.anisotropyRotation !== undefined ) material.anisotropyRotation = json.anisotropyRotation;\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.shadowSide !== undefined ) material.shadowSide = json.shadowSide;\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\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\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.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.alphaToCoverage !== undefined ) material.alphaToCoverage = json.alphaToCoverage;\n\t\tif ( json.premultipliedAlpha !== undefined ) material.premultipliedAlpha = json.premultipliedAlpha;\n\t\tif ( json.forceSinglePass !== undefined ) material.forceSinglePass = json.forceSinglePass;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst 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\t\t\t\t\t\tbreak;\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\t\tif ( json.glslVersion !== undefined ) material.glslVersion = json.glslVersion;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const 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\tif ( json.lights !== undefined ) material.lights = json.lights;\n\t\tif ( json.clipping !== undefined ) material.clipping = json.clipping;\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 ) material.alphaMap = getTexture( json.alphaMap );\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\tlet 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\t\tif ( json.specularIntensityMap !== undefined ) material.specularIntensityMap = getTexture( json.specularIntensityMap );\n\t\tif ( json.specularColorMap !== undefined ) material.specularColorMap = getTexture( json.specularColorMap );\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\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\tif ( json.iridescenceMap !== undefined ) material.iridescenceMap = getTexture( json.iridescenceMap );\n\t\tif ( json.iridescenceThicknessMap !== undefined ) material.iridescenceThicknessMap = getTexture( json.iridescenceThicknessMap );\n\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\t\tif ( json.thicknessMap !== undefined ) material.thicknessMap = getTexture( json.thicknessMap );\n\n\t\tif ( json.anisotropyMap !== undefined ) material.anisotropyMap = getTexture( json.anisotropyMap );\n\n\t\tif ( json.sheenColorMap !== undefined ) material.sheenColorMap = getTexture( json.sheenColorMap );\n\t\tif ( json.sheenRoughnessMap !== undefined ) material.sheenRoughnessMap = getTexture( json.sheenRoughnessMap );\n\n\t\treturn material;\n\n\t}\n\n\tsetTextures( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n\tstatic createMaterialFromType( type ) {\n\n\t\tconst materialLib = {\n\t\t\tShadowMaterial,\n\t\t\tSpriteMaterial,\n\t\t\tRawShaderMaterial,\n\t\t\tShaderMaterial,\n\t\t\tPointsMaterial,\n\t\t\tMeshPhysicalMaterial,\n\t\t\tMeshStandardMaterial,\n\t\t\tMeshPhongMaterial,\n\t\t\tMeshToonMaterial,\n\t\t\tMeshNormalMaterial,\n\t\t\tMeshLambertMaterial,\n\t\t\tMeshDepthMaterial,\n\t\t\tMeshDistanceMaterial,\n\t\t\tMeshBasicMaterial,\n\t\t\tMeshMatcapMaterial,\n\t\t\tLineDashedMaterial,\n\t\t\tLineBasicMaterial,\n\t\t\tMaterial\n\t\t};\n\n\t\treturn new materialLib[ type ]();\n\n\t}\n\n}\n\nclass LoaderUtils {\n\n\tstatic decodeText( 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\tlet s = '';\n\n\t\tfor ( let 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\tstatic extractUrlBase( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.slice( 0, index + 1 );\n\n\t}\n\n\tstatic resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n}\n\nclass InstancedBufferGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isInstancedBufferGeometry = true;\n\n\t\tthis.type = 'InstancedBufferGeometry';\n\t\tthis.instanceCount = Infinity;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass BufferGeometryLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = getTypedArray( interleavedBuffer.type, buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = getTypedArray( index.type, index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tif ( attribute.usage !== undefined ) bufferAttribute.setUsage( attribute.usage );\n\n\t\t\tif ( attribute.updateRange !== undefined ) {\n\n\t\t\t\tbufferAttribute.updateRange.offset = attribute.updateRange.offset;\n\t\t\t\tbufferAttribute.updateRange.count = attribute.updateRange.count;\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\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\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst 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\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst 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}\n\nclass ObjectLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet 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\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( new Error( 'THREE.ObjectLoader: Can\\'t load ' + url ) );\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\tasync loadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tconst text = await loader.loadAsync( url, onProgress );\n\n\t\tconst json = JSON.parse( text );\n\n\t\tconst metadata = json.metadata;\n\n\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\tthrow new Error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\n\t\t}\n\n\t\treturn await scope.parseAsync( json );\n\n\t}\n\n\tparse( json, onLoad ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\t//\n\n\t\tif ( onLoad !== undefined ) {\n\n\t\t\tlet hasImages = false;\n\n\t\t\tfor ( const uuid in images ) {\n\n\t\t\t\tif ( images[ uuid ].data instanceof HTMLImageElement ) {\n\n\t\t\t\t\thasImages = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasImages === false ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tasync parseAsync( json ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = await this.parseImagesAsync( json.images );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\treturn object;\n\n\t}\n\n\tparseShapes( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst 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\tparseSkeletons( json, object ) {\n\n\t\tconst skeletons = {};\n\t\tconst bones = {};\n\n\t\t// generate bone lookup table\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isBone ) bones[ child.uuid ] = child;\n\n\t\t} );\n\n\t\t// create skeletons\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst skeleton = new Skeleton().fromJSON( json[ i ], bones );\n\n\t\t\t\tskeletons[ skeleton.uuid ] = skeleton;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn skeletons;\n\n\t}\n\n\tparseGeometries( json, shapes ) {\n\n\t\tconst geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\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\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( data.type in Geometries ) {\n\n\t\t\t\t\t\t\tgeometry = Geometries[ data.type ].fromJSON( data, shapes );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( `THREE.ObjectLoader: Unsupported geometry type \"${ data.type }\"` );\n\n\t\t\t\t\t\t}\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 ( 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( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t}\n\n\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t}\n\n\tparseAnimations( json ) {\n\n\t\tconst animations = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\t\tanimations[ clip.uuid ] = clip;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n\tparseImages( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\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\tfunction deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn loadImage( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst 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\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\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\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\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\tasync parseImagesAsync( json ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tasync function deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn await loader.loadAsync( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tloader = new ImageLoader( this.manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst 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\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = await deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\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\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = await deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\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( 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\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst 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\tconst source = images[ data.image ];\n\t\t\t\tconst image = source.data;\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture();\n\n\t\t\t\t\tif ( image.length === 6 ) texture.needsUpdate = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( image && image.data ) {\n\n\t\t\t\t\t\ttexture = new DataTexture();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttexture = new Texture();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( image ) texture.needsUpdate = true; // textures can have undefined image data\n\n\t\t\t\t}\n\n\t\t\t\ttexture.source = source;\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\t\t\t\tif ( data.channel !== undefined ) texture.channel = data.channel;\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.internalFormat !== undefined ) texture.internalFormat = data.internalFormat;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.colorSpace !== undefined ) texture.colorSpace = data.colorSpace;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding; // @deprecated, r152\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.generateMipmaps !== undefined ) texture.generateMipmaps = data.generateMipmaps;\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\t\t\t\tif ( data.compareFunction !== undefined ) texture.compareFunction = data.compareFunction;\n\n\t\t\t\tif ( data.userData !== undefined ) texture.userData = data.userData;\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( data, geometries, materials, textures, animations ) {\n\n\t\tlet 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\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst 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\tfunction getTexture( uuid ) {\n\n\t\t\tif ( textures[ uuid ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined texture', uuid );\n\n\t\t\t}\n\n\t\t\treturn textures[ uuid ];\n\n\t\t}\n\n\t\tlet geometry, material;\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} else {\n\n\t\t\t\t\t\tobject.background = getTexture( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.environment !== undefined ) {\n\n\t\t\t\t\tobject.environment = getTexture( data.environment );\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\tif ( data.backgroundBlurriness !== undefined ) object.backgroundBlurriness = data.backgroundBlurriness;\n\t\t\t\tif ( data.backgroundIntensity !== undefined ) object.backgroundIntensity = data.backgroundIntensity;\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 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t \tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\tif ( data.bindMode !== undefined ) object.bindMode = data.bindMode;\n\t\t\t\tif ( data.bindMatrix !== undefined ) object.bindMatrix.fromArray( data.bindMatrix );\n\t\t\t\tif ( data.skeleton !== undefined ) object.skeleton = data.skeleton;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\t\t\t\tconst instanceColor = data.instanceColor;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new InstancedBufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\t\t\t\tif ( instanceColor !== undefined ) object.instanceColor = new InstancedBufferAttribute( new Float32Array( instanceColor.array ), instanceColor.itemSize );\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 ) );\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\tcase 'Bone':\n\n\t\t\t\tobject = new Bone();\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.up !== undefined ) object.up.fromArray( data.up );\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.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\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\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials, textures, animations ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.animations !== undefined ) {\n\n\t\t\tconst objectAnimations = data.animations;\n\n\t\t\tfor ( let i = 0; i < objectAnimations.length; i ++ ) {\n\n\t\t\t\tconst uuid = objectAnimations[ i ];\n\n\t\t\t\tobject.animations.push( animations[ uuid ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst 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, level.hysteresis );\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\tbindSkeletons( object, skeletons ) {\n\n\t\tif ( Object.keys( skeletons ).length === 0 ) return;\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isSkinnedMesh === true && child.skeleton !== undefined ) {\n\n\t\t\t\tconst skeleton = skeletons[ child.skeleton ];\n\n\t\t\t\tif ( skeleton === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.bind( skeleton, child.bindMatrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n}\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\nclass ImageBitmapLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.isImageBitmapLoader = true;\n\n\t\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t\t}\n\n\t\tif ( typeof fetch === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t\t}\n\n\t\tthis.options = { premultiplyAlpha: 'none' };\n\n\t}\n\n\tsetOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t}\n\n\tload( 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\tconst scope = this;\n\n\t\tconst 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\tconst fetchOptions = {};\n\t\tfetchOptions.credentials = ( this.crossOrigin === 'anonymous' ) ? 'same-origin' : 'include';\n\t\tfetchOptions.headers = this.requestHeader;\n\n\t\tfetch( url, fetchOptions ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, Object.assign( scope.options, { colorSpaceConversion: 'none' } ) );\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}\n\nlet _context;\n\nclass AudioContext {\n\n\tstatic getContext() {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t}\n\n\tstatic setContext( value ) {\n\n\t\t_context = value;\n\n\t}\n\n}\n\nclass AudioLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t}, handleError );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\thandleError( e );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\tfunction handleError( e ) {\n\n\t\t\tif ( onError ) {\n\n\t\t\t\tonError( e );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( e );\n\n\t\t\t}\n\n\t\t\tscope.manager.itemError( url );\n\n\t\t}\n\n\t}\n\n}\n\nclass HemisphereLightProbe extends LightProbe {\n\n\tconstructor( skyColor, groundColor, intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.isHemisphereLightProbe = true;\n\n\t\tconst color1 = new Color().set( skyColor );\n\t\tconst color2 = new Color().set( groundColor );\n\n\t\tconst sky = new Vector3( color1.r, color1.g, color1.b );\n\t\tconst ground = new Vector3( color2.r, color2.g, color2.b );\n\n\t\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\t\tconst c0 = Math.sqrt( Math.PI );\n\t\tconst c1 = c0 * Math.sqrt( 0.75 );\n\n\t\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\n\t\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\n\n\t}\n\n}\n\nclass AmbientLightProbe extends LightProbe {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.isAmbientLightProbe = true;\n\n\t\tconst color1 = new Color().set( color );\n\n\t\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\t\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\n\n\t}\n\n}\n\nconst _eyeRight = /*@__PURE__*/ new Matrix4();\nconst _eyeLeft = /*@__PURE__*/ new Matrix4();\nconst _projectionMatrix = /*@__PURE__*/ new Matrix4();\n\nclass StereoCamera {\n\n\tconstructor() {\n\n\t\tthis.type = 'StereoCamera';\n\n\t\tthis.aspect = 1;\n\n\t\tthis.eyeSep = 0.064;\n\n\t\tthis.cameraL = new PerspectiveCamera();\n\t\tthis.cameraL.layers.enable( 1 );\n\t\tthis.cameraL.matrixAutoUpdate = false;\n\n\t\tthis.cameraR = new PerspectiveCamera();\n\t\tthis.cameraR.layers.enable( 2 );\n\t\tthis.cameraR.matrixAutoUpdate = false;\n\n\t\tthis._cache = {\n\t\t\tfocus: null,\n\t\t\tfov: null,\n\t\t\taspect: null,\n\t\t\tnear: null,\n\t\t\tfar: null,\n\t\t\tzoom: null,\n\t\t\teyeSep: null\n\t\t};\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t_projectionMatrix.copy( camera.projectionMatrix );\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( _projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( _projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n}\n\nclass Clock {\n\n\tconstructor( autoStart = true ) {\n\n\t\tthis.autoStart = autoStart;\n\n\t\tthis.startTime = 0;\n\t\tthis.oldTime = 0;\n\t\tthis.elapsedTime = 0;\n\n\t\tthis.running = false;\n\n\t}\n\n\tstart() {\n\n\t\tthis.startTime = now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t}\n\n\tstop() {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t}\n\n\tgetElapsedTime() {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t}\n\n\tgetDelta() {\n\n\t\tlet 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\tconst newTime = 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\nfunction now() {\n\n\treturn ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n}\n\nconst _position$1 = /*@__PURE__*/ new Vector3();\nconst _quaternion$1 = /*@__PURE__*/ new Quaternion();\nconst _scale$1 = /*@__PURE__*/ new Vector3();\nconst _orientation$1 = /*@__PURE__*/ new Vector3();\n\nclass AudioListener extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'AudioListener';\n\n\t\tthis.context = AudioContext.getContext();\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( this.context.destination );\n\n\t\tthis.filter = null;\n\n\t\tthis.timeDelta = 0;\n\n\t\t// private\n\n\t\tthis._clock = new Clock();\n\n\t}\n\n\tgetInput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tremoveFilter() {\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() {\n\n\t\treturn this.filter;\n\n\t}\n\n\tsetFilter( 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() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetMasterVolume( 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( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$1, _quaternion$1, _scale$1 );\n\n\t\t_orientation$1.set( 0, 0, - 1 ).applyQuaternion( _quaternion$1 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$1.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$1.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$1.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$1.x, _position$1.y, _position$1.z );\n\t\t\tlistener.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass Audio extends Object3D {\n\n\tconstructor( listener ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Audio';\n\n\t\tthis.listener = listener;\n\t\tthis.context = listener.context;\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.getInput() );\n\n\t\tthis.autoplay = false;\n\n\t\tthis.buffer = null;\n\t\tthis.detune = 0;\n\t\tthis.loop = false;\n\t\tthis.loopStart = 0;\n\t\tthis.loopEnd = 0;\n\t\tthis.offset = 0;\n\t\tthis.duration = undefined;\n\t\tthis.playbackRate = 1;\n\t\tthis.isPlaying = false;\n\t\tthis.hasPlaybackControl = true;\n\t\tthis.source = null;\n\t\tthis.sourceType = 'empty';\n\n\t\tthis._startedAt = 0;\n\t\tthis._progress = 0;\n\t\tthis._connected = false;\n\n\t\tthis.filters = [];\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tsetNodeSource( 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( 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\tsetMediaStreamSource( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetBuffer( 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( delay = 0 ) {\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\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\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() {\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\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\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._progress = 0;\n\n\t\tif ( this.source !== null ) {\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t}\n\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t}\n\n\tconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let 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\tthis._connected = true;\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let 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\tthis._connected = false;\n\n\t\treturn this;\n\n\t}\n\n\tgetFilters() {\n\n\t\treturn this.filters;\n\n\t}\n\n\tsetFilters( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this._connected === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value.slice();\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetDetune( 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() {\n\n\t\treturn this.detune;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t}\n\n\tsetFilter( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t}\n\n\tsetPlaybackRate( 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() {\n\n\t\treturn this.playbackRate;\n\n\t}\n\n\tonEnded() {\n\n\t\tthis.isPlaying = false;\n\n\t}\n\n\tgetLoop() {\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( 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\tsetLoopStart( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopEnd( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetVolume( 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\nconst _position = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\nconst _scale = /*@__PURE__*/ new Vector3();\nconst _orientation = /*@__PURE__*/ new Vector3();\n\nclass PositionalAudio extends Audio {\n\n\tconstructor( listener ) {\n\n\t\tsuper( listener );\n\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.panningModel = 'HRTF';\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tconnect() {\n\n\t\tsuper.connect();\n\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tdisconnect() {\n\n\t\tsuper.disconnect();\n\n\t\tthis.panner.disconnect( this.gain );\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.panner;\n\n\t}\n\n\tgetRefDistance() {\n\n\t\treturn this.panner.refDistance;\n\n\t}\n\n\tsetRefDistance( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetRolloffFactor() {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t}\n\n\tsetRolloffFactor( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetDistanceModel() {\n\n\t\treturn this.panner.distanceModel;\n\n\t}\n\n\tsetDistanceModel( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxDistance() {\n\n\t\treturn this.panner.maxDistance;\n\n\t}\n\n\tsetMaxDistance( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetDirectionalCone( 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( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion, _scale );\n\n\t\t_orientation.set( 0, 0, 1 ).applyQuaternion( _quaternion );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position.x, _position.y, _position.z );\n\t\t\tpanner.setOrientation( _orientation.x, _orientation.y, _orientation.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass AudioAnalyser {\n\n\tconstructor( audio, fftSize = 2048 ) {\n\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize;\n\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t}\n\n\n\tgetFrequencyData() {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t}\n\n\tgetAverageFrequency() {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let 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\nclass PropertyMixer {\n\n\tconstructor( binding, typeName, valueSize ) {\n\n\t\tthis.binding = binding;\n\t\tthis.valueSize = valueSize;\n\n\t\tlet mixFunction,\n\t\t\tmixFunctionAdditive,\n\t\t\tsetIdentity;\n\n\t\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t\t//\n\t\t// interpolators can use .buffer as their .result\n\t\t// the data then goes to 'incoming'\n\t\t//\n\t\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t\t// the cumulative result and are compared to detect\n\t\t// changes\n\t\t//\n\t\t// 'orig' stores the original state of the property\n\t\t//\n\t\t// 'add' is used for additive cumulative results\n\t\t//\n\t\t// 'work' is optional and is only present for quaternion types. It is used\n\t\t// to store intermediate quaternion multiplication results\n\n\t\tswitch ( typeName ) {\n\n\t\t\tcase 'quaternion':\n\t\t\t\tmixFunction = this._slerp;\n\t\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\t\tthis._workIndex = 5;\n\t\t\t\tbreak;\n\n\t\t\tcase 'string':\n\t\t\tcase 'bool':\n\t\t\t\tmixFunction = this._select;\n\n\t\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t\t// additive is not relevant for non-numeric types\n\t\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tmixFunction = this._lerp;\n\t\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t\t}\n\n\t\tthis._mixBufferRegion = mixFunction;\n\t\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\t\tthis._setIdentity = setIdentity;\n\t\tthis._origIndex = 3;\n\t\tthis._addIndex = 4;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tthis.useCount = 0;\n\t\tthis.referenceCount = 0;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate( 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\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let 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\tconst 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// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t}\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let 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() {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t}\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState() {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t}\n\n\t_setAdditiveIdentityNumeric() {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\t_setAdditiveIdentityQuaternion() {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * this.valueSize + 3 ] = 1;\n\n\t}\n\n\t_setAdditiveIdentityOther() {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t}\n\n\n\t// mix functions\n\n\t_select( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let 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( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t}\n\n\t_slerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t}\n\n\t_lerp( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst 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\t_lerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n}\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /*@__PURE__*/ /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /*@__PURE__*/ /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /*@__PURE__*/ /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /*@__PURE__*/ /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones', 'map' ];\n\nclass Composite {\n\n\tconstructor( targetGroup, path, optionalParsedPath ) {\n\n\t\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis._targetGroup = targetGroup;\n\t\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n\t}\n\n\tgetValue( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst 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( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let 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() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let 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() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let 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// Note: This class uses a State pattern on a per-method basis:\n// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n// prototype version of these methods with one that represents\n// the bound state. When the property is not found, the methods\n// become no-ops.\nclass PropertyBinding {\n\n\tconstructor( rootNode, path, parsedPath ) {\n\n\t\tthis.path = path;\n\t\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName );\n\n\t\tthis.rootNode = rootNode;\n\n\t\t// initial state of these methods that calls 'bind'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n\n\tstatic create( 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\tstatic sanitizeNodeName( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t}\n\n\tstatic parseTrackName( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( matches === null ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t}\n\n\tstatic findNode( root, nodeName ) {\n\n\t\tif ( nodeName === undefined || nodeName === '' || 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\tconst 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\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst 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\tconst 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\tconst 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\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable() {}\n\t_setValue_unavailable() {}\n\n\t// Getters\n\n\t_getValue_direct( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.targetObject[ this.propertyName ];\n\n\t}\n\n\t_getValue_array( buffer, offset ) {\n\n\t\tconst source = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t}\n\n\t}\n\n\t_getValue_arrayElement( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t}\n\n\t_getValue_toArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t}\n\n\t// Direct\n\n\t_setValue_direct( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// EntireArray\n\n\t_setValue_array( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t}\n\n\t_setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// ArrayElement\n\n\t_setValue_arrayElement( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// HasToFromArray\n\n\t_setValue_fromArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t}\n\n\t_setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t_getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t}\n\n\t_setValue_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() {\n\n\t\tlet targetObject = this.node;\n\t\tconst parsedPath = this.parsedPath;\n\n\t\tconst objectName = parsedPath.objectName;\n\t\tconst propertyName = parsedPath.propertyName;\n\t\tlet propertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName );\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\tlet 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 ( let 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\tcase 'map':\n\n\t\t\t\t\tif ( 'map' in targetObject ) {\n\n\t\t\t\t\t\ttargetObject = targetObject.map;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\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.map ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.map;\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\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst 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\tlet 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\tlet 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.morphAttributes ) {\n\n\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\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\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() {\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\nPropertyBinding.Composite = Composite;\n\nPropertyBinding.prototype.BindingType = {\n\tDirect: 0,\n\tEntireArray: 1,\n\tArrayElement: 2,\n\tHasFromToArray: 3\n};\n\nPropertyBinding.prototype.Versioning = {\n\tNone: 0,\n\tNeedsUpdate: 1,\n\tMatrixWorldNeedsUpdate: 2\n};\n\nPropertyBinding.prototype.GetterByBindingType = [\n\n\tPropertyBinding.prototype._getValue_direct,\n\tPropertyBinding.prototype._getValue_array,\n\tPropertyBinding.prototype._getValue_arrayElement,\n\tPropertyBinding.prototype._getValue_toArray,\n\n];\n\nPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n\n\t[\n\t\t// Direct\n\t\tPropertyBinding.prototype._setValue_direct,\n\t\tPropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// EntireArray\n\n\t\tPropertyBinding.prototype._setValue_array,\n\t\tPropertyBinding.prototype._setValue_array_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// ArrayElement\n\t\tPropertyBinding.prototype._setValue_arrayElement,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// HasToFromArray\n\t\tPropertyBinding.prototype._setValue_fromArray,\n\t\tPropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate,\n\n\t]\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\nclass AnimationObjectGroup {\n\n\tconstructor() {\n\n\t\tthis.isAnimationObjectGroup = true;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// cached objects followed by the active ones\n\t\tthis._objects = Array.prototype.slice.call( arguments );\n\n\t\tthis.nCachedObjects_ = 0; // threshold\n\t\t// note: read by PropertyBinding.Composite\n\n\t\tconst indices = {};\n\t\tthis._indicesByUUID = indices; // for bookkeeping\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t\t}\n\n\t\tthis._paths = []; // inside: string\n\t\tthis._parsedPaths = []; // inside: { we don't care, here }\n\t\tthis._bindings = []; // inside: Array< PropertyBinding >\n\t\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tobjects: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._objects.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tget bindingsPerObject() {\n\n\t\t\t\treturn scope._bindings.length;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tadd() {\n\n\t\tconst objects = this._objects,\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\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = 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 ( let 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\tconst 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 ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = 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() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst 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\tconst 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 ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst 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() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst 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\tconst 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 ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst 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\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tif ( lastIndex > 0 ) {\n\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\n\t\t\t\t\t}\n\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 ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst 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_( 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\tconst indicesByPath = this._bindingsIndicesByPath;\n\t\tlet index = indicesByPath[ path ];\n\t\tconst bindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst 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 ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst 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_( 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\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst 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\nclass AnimationAction {\n\n\tconstructor( mixer, clip, localRoot = null, blendMode = clip.blendMode ) {\n\n\t\tthis._mixer = mixer;\n\t\tthis._clip = clip;\n\t\tthis._localRoot = localRoot;\n\t\tthis.blendMode = blendMode;\n\n\t\tconst tracks = clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tinterpolants = new Array( nTracks );\n\n\t\tconst interpolantSettings = {\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\t\t};\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\t\tinterpolants[ i ] = interpolant;\n\t\t\tinterpolant.settings = interpolantSettings;\n\n\t\t}\n\n\t\tthis._interpolantSettings = interpolantSettings;\n\n\t\tthis._interpolants = interpolants; // bound by the mixer\n\n\t\t// inside: PropertyMixer (managed by the mixer)\n\t\tthis._propertyBindings = new Array( nTracks );\n\n\t\tthis._cacheIndex = null; // for the memory manager\n\t\tthis._byClipCacheIndex = null; // for the memory manager\n\n\t\tthis._timeScaleInterpolant = null;\n\t\tthis._weightInterpolant = null;\n\n\t\tthis.loop = LoopRepeat;\n\t\tthis._loopCount = - 1;\n\n\t\t// global mixer time when the action is to be started\n\t\t// it's set back to 'null' upon start of the action\n\t\tthis._startTime = null;\n\n\t\t// scaled local time of the action\n\t\t// gets clamped or wrapped to 0..clip.duration according to loop\n\t\tthis.time = 0;\n\n\t\tthis.timeScale = 1;\n\t\tthis._effectiveTimeScale = 1;\n\n\t\tthis.weight = 1;\n\t\tthis._effectiveWeight = 1;\n\n\t\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\t\tthis.paused = false; // true -> zero effective time scale\n\t\tthis.enabled = true; // false -> zero effective weight\n\n\t\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\t\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\t\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n\t}\n\n\t// State & Scheduling\n\n\tplay() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t}\n\n\treset() {\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() {\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() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t}\n\n\tstartAt( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoop( 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( 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() {\n\n\t\treturn this._effectiveWeight;\n\n\t}\n\n\tfadeIn( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t}\n\n\tfadeOut( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t}\n\n\tcrossFadeFrom( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst 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( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t}\n\n\tstopFading() {\n\n\t\tconst 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( 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() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t}\n\n\tsetDuration( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\tsyncWith( 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( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t}\n\n\twarp( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\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\tconst 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() {\n\n\t\tconst 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() {\n\n\t\treturn this._mixer;\n\n\t}\n\n\tgetClip() {\n\n\t\treturn this._clip;\n\n\t}\n\n\tgetRoot() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t}\n\n\t// Interna\n\n\t_update( 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\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\tdeltaTime = 0;\n\n\t\t\t} else {\n\n\n\t\t\t\tthis._startTime = null; // unschedule\n\t\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst 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\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_updateWeight( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst 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( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst 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( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst 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\tconst 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\tconst 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\tconst 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( atStart, atEnd, pingPong ) {\n\n\t\tconst 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( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = 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\tconst 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\nconst _controlInterpolantsResultBuffer = new Float32Array( 1 );\n\n\nclass AnimationMixer extends EventDispatcher {\n\n\tconstructor( root ) {\n\n\t\tsuper();\n\n\t\tthis._root = root;\n\t\tthis._initMemoryManager();\n\t\tthis._accuIndex = 0;\n\t\tthis.time = 0;\n\t\tthis.timeScale = 1.0;\n\n\t}\n\n\t_bindAction( action, prototypeAction ) {\n\n\t\tconst 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\n\t\tlet bindingsByName = 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 ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t++ binding.referenceCount;\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\tconst 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( 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\tconst 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\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst 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( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst 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() {\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\tconst 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( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t}\n\n\t_addInactiveAction( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = 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\tconst 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( action ) {\n\n\t\tconst 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\tconst 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\tconst 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( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst 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( 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\tconst 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( 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\tconst 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( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\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( binding ) {\n\n\t\tconst 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( binding ) {\n\n\t\tconst 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( binding ) {\n\n\t\tconst 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() {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = 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, _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( interpolant ) {\n\n\t\tconst 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// 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( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tconst actionsForClip = this._actionsByClip[ clipUuid ];\n\t\tlet prototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\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\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\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( clip, optionalRoot ) {\n\n\t\tconst 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() {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\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( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst 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 ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst 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\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let 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// Allows you to seek to a specific time in an animation.\n\tsetTime( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t}\n\n\t// return this mixer's root target object\n\tgetRoot() {\n\n\t\treturn this._root;\n\n\t}\n\n\t// free all resources specific to a particular clip\n\tuncacheClip( clip ) {\n\n\t\tconst 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\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst 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( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst 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\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst 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( clip, optionalRoot ) {\n\n\t\tconst 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\nclass Uniform {\n\n\tconstructor( value ) {\n\n\t\tthis.value = value;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n\t}\n\n}\n\nlet id = 0;\n\nclass UniformsGroup extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isUniformsGroup = true;\n\n\t\tObject.defineProperty( this, 'id', { value: id ++ } );\n\n\t\tthis.name = '';\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.uniforms = [];\n\n\t}\n\n\tadd( uniform ) {\n\n\t\tthis.uniforms.push( uniform );\n\n\t\treturn this;\n\n\t}\n\n\tremove( uniform ) {\n\n\t\tconst index = this.uniforms.indexOf( uniform );\n\n\t\tif ( index !== - 1 ) this.uniforms.splice( index, 1 );\n\n\t\treturn this;\n\n\t}\n\n\tsetName( name ) {\n\n\t\tthis.name = name;\n\n\t\treturn this;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.usage = source.usage;\n\n\t\tconst uniformsSource = source.uniforms;\n\n\t\tthis.uniforms.length = 0;\n\n\t\tfor ( let i = 0, l = uniformsSource.length; i < l; i ++ ) {\n\n\t\t\tthis.uniforms.push( uniformsSource[ i ].clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n\n\tconstructor( array, stride, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, stride );\n\n\t\tthis.isInstancedInterleavedBuffer = true;\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tconst ib = super.clone( data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tconst json = super.toJSON( data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n}\n\nclass GLBufferAttribute {\n\n\tconstructor( buffer, type, itemSize, elementSize, count ) {\n\n\t\tthis.isGLBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.buffer = buffer;\n\t\tthis.type = type;\n\t\tthis.itemSize = itemSize;\n\t\tthis.elementSize = elementSize;\n\t\tthis.count = count;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetBuffer( buffer ) {\n\n\t\tthis.buffer = buffer;\n\n\t\treturn this;\n\n\t}\n\n\tsetType( type, elementSize ) {\n\n\t\tthis.type = type;\n\t\tthis.elementSize = elementSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetItemSize( itemSize ) {\n\n\t\tthis.itemSize = itemSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetCount( count ) {\n\n\t\tthis.count = count;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Raycaster {\n\n\tconstructor( origin, direction, near = 0, far = Infinity ) {\n\n\t\tthis.ray = new Ray( origin, direction );\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.camera = null;\n\t\tthis.layers = new Layers();\n\n\t\tthis.params = {\n\t\t\tMesh: {},\n\t\t\tLine: { threshold: 1 },\n\t\t\tLOD: {},\n\t\t\tPoints: { threshold: 1 },\n\t\t\tSprite: {}\n\t\t};\n\n\t}\n\n\tset( 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( coords, camera ) {\n\n\t\tif ( 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.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: ' + camera.type );\n\n\t\t}\n\n\t}\n\n\tintersectObject( object, recursive = true, intersects = [] ) {\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( objects, recursive = true, intersects = [] ) {\n\n\t\tfor ( let 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\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let 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\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-axis.\n */\n\n\nclass Spherical {\n\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi; // polar angle\n\t\tthis.theta = theta; // azimuthal angle\n\n\t\treturn this;\n\n\t}\n\n\tset( 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\tcopy( 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 between EPS and PI-EPS\n\tmakeSafe() {\n\n\t\tconst 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( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( 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( clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n */\n\nclass Cylindrical {\n\n\tconstructor( radius = 1, theta = 0, y = 0 ) {\n\n\t\tthis.radius = radius; // distance from the origin to a point in the x-z plane\n\t\tthis.theta = theta; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\t\tthis.y = y; // height above the x-z plane\n\n\t\treturn this;\n\n\t}\n\n\tset( 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\tcopy( 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( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( 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\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$4 = /*@__PURE__*/ new Vector2();\n\nclass Box2 {\n\n\tconstructor( min = new Vector2( + Infinity, + Infinity ), max = new Vector2( - Infinity, - Infinity ) ) {\n\n\t\tthis.isBox2 = true;\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( 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( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let 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( center, size ) {\n\n\t\tconst halfSize = _vector$4.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( 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() {\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() {\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( target ) {\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( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( 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( 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( 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( 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( 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( 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\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( 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( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.clampPoint( point, _vector$4 ).distanceTo( point );\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( 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( 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( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _startP = /*@__PURE__*/ new Vector3();\nconst _startEnd = /*@__PURE__*/ new Vector3();\n\nclass Line3 {\n\n\tconstructor( start = new Vector3(), end = new Vector3() ) {\n\n\t\tthis.start = start;\n\t\tthis.end = end;\n\n\t}\n\n\tset( 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\tcopy( 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( target ) {\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t}\n\n\tdelta( target ) {\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t}\n\n\tdistanceSq() {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t}\n\n\tdistance() {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tclosestPointToPointParameter( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t}\n\n\tclosestPointToPoint( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tapplyMatrix4( 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( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$3 = /*@__PURE__*/ new Vector3();\n\nclass SpotLightHelper extends Object3D {\n\n\tconstructor( light, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'SpotLightHelper';\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst positions = [\n\t\t\t0, 0, 0, \t0, 0, 1,\n\t\t\t0, 0, 0, \t1, 0, 1,\n\t\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t\t0, 0, 0, \t0, 1, 1,\n\t\t\t0, 0, 0, \t0, - 1, 1\n\t\t];\n\n\t\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\t\tpositions.push(\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t\t);\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.cone = new LineSegments( geometry, material );\n\t\tthis.add( this.cone );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\n\n\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t_vector$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( _vector$3 );\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\nconst _vector$2 = /*@__PURE__*/ new Vector3();\nconst _boneMatrix = /*@__PURE__*/ new Matrix4();\nconst _matrixWorldInv = /*@__PURE__*/ new Matrix4();\n\n\nclass SkeletonHelper extends LineSegments {\n\n\tconstructor( object ) {\n\n\t\tconst bones = getBoneList( object );\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst color1 = new Color( 0, 0, 1 );\n\t\tconst color2 = new Color( 0, 1, 0 );\n\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isSkeletonHelper = true;\n\n\t\tthis.type = 'SkeletonHelper';\n\n\t\tthis.root = object;\n\t\tthis.bones = bones;\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst bones = this.bones;\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t_matrixWorldInv.copy( this.root.matrixWorld ).invert();\n\n\t\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, _vector$2.x, _vector$2.y, _vector$2.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\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object.isBone === true ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let 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\nclass PointLightHelper extends Mesh {\n\n\tconstructor( light, sphereSize, color ) {\n\n\t\tconst geometry = new SphereGeometry( sphereSize, 4, 2 );\n\t\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.light = light;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'PointLightHelper';\n\n\t\tthis.matrix = this.light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\n\t\t/*\n\t// TODO: delete this comment?\n\tconst distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\n\tconst 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\tconst 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\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\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\tthis.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\t/*\n\t\tconst d = this.light.distance;\n\n\t\tif ( d === 0.0 ) {\n\n\t\t\tthis.lightDistance.visible = false;\n\n\t\t} else {\n\n\t\t\tthis.lightDistance.visible = true;\n\t\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t\t}\n\t\t*/\n\n\t}\n\n}\n\nconst _vector$1 = /*@__PURE__*/ new Vector3();\nconst _color1 = /*@__PURE__*/ new Color();\nconst _color2 = /*@__PURE__*/ new Color();\n\nclass HemisphereLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'HemisphereLightHelper';\n\n\t\tconst geometry = new OctahedronGeometry( size );\n\t\tgeometry.rotateY( Math.PI * 0.5 );\n\n\t\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\t\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\t\tconst colors = new Float32Array( position.count * 3 );\n\n\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\t\tthis.add( new Mesh( geometry, this.material ) );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tconst 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\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\t_color1.copy( this.light.color );\n\t\t\t_color2.copy( this.light.groundColor );\n\n\t\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tconst 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\tthis.light.updateWorldMatrix( true, false );\n\n\t\tmesh.lookAt( _vector$1.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t}\n\n}\n\nclass GridHelper extends LineSegments {\n\n\tconstructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst center = divisions / 2;\n\t\tconst step = size / divisions;\n\t\tconst halfSize = size / 2;\n\n\t\tconst vertices = [], colors = [];\n\n\t\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\t\tconst color = i === center ? color1 : color2;\n\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'GridHelper';\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass PolarGridHelper extends LineSegments {\n\n\tconstructor( radius = 10, sectors = 16, rings = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\t// create the sectors\n\n\t\tif ( sectors > 1 ) {\n\n\t\t\tfor ( let i = 0; i < sectors; i ++ ) {\n\n\t\t\t\tconst v = ( i / sectors ) * ( Math.PI * 2 );\n\n\t\t\t\tconst x = Math.sin( v ) * radius;\n\t\t\t\tconst z = Math.cos( v ) * radius;\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( x, 0, z );\n\n\t\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// create the rings\n\n\t\tfor ( let i = 0; i < rings; i ++ ) {\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tconst r = radius - ( radius / rings * i );\n\n\t\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t\t// first vertex\n\n\t\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tlet x = Math.sin( v ) * r;\n\t\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t\t// second vertex\n\n\t\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tx = Math.sin( v ) * r;\n\t\t\t\tz = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'PolarGridHelper';\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _v2 = /*@__PURE__*/ new Vector3();\nconst _v3 = /*@__PURE__*/ new Vector3();\n\nclass DirectionalLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'DirectionalLightHelper';\n\n\t\tif ( size === undefined ) size = 1;\n\n\t\tlet geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t\t- size, size, 0,\n\t\t\tsize, size, 0,\n\t\t\tsize, - size, 0,\n\t\t\t- size, - size, 0,\n\t\t\t- size, size, 0\n\t\t], 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.lightPlane = new Line( geometry, material );\n\t\tthis.add( this.lightPlane );\n\n\t\tgeometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\t\tthis.targetLine = new Line( geometry, material );\n\t\tthis.add( this.targetLine );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.lightPlane.geometry.dispose();\n\t\tthis.lightPlane.material.dispose();\n\t\tthis.targetLine.geometry.dispose();\n\t\tthis.targetLine.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\n\n\t\t_v1.setFromMatrixPosition( this.light.matrixWorld );\n\t\t_v2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\t_v3.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\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _camera = /*@__PURE__*/ new Camera();\n\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\thttps://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html\n */\n\nclass CameraHelper extends LineSegments {\n\n\tconstructor( camera ) {\n\n\t\tconst geometry = new BufferGeometry();\n\t\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst pointMap = {};\n\n\t\t// near\n\n\t\taddLine( 'n1', 'n2' );\n\t\taddLine( 'n2', 'n4' );\n\t\taddLine( 'n4', 'n3' );\n\t\taddLine( 'n3', 'n1' );\n\n\t\t// far\n\n\t\taddLine( 'f1', 'f2' );\n\t\taddLine( 'f2', 'f4' );\n\t\taddLine( 'f4', 'f3' );\n\t\taddLine( 'f3', 'f1' );\n\n\t\t// sides\n\n\t\taddLine( 'n1', 'f1' );\n\t\taddLine( 'n2', 'f2' );\n\t\taddLine( 'n3', 'f3' );\n\t\taddLine( 'n4', 'f4' );\n\n\t\t// cone\n\n\t\taddLine( 'p', 'n1' );\n\t\taddLine( 'p', 'n2' );\n\t\taddLine( 'p', 'n3' );\n\t\taddLine( 'p', 'n4' );\n\n\t\t// up\n\n\t\taddLine( 'u1', 'u2' );\n\t\taddLine( 'u2', 'u3' );\n\t\taddLine( 'u3', 'u1' );\n\n\t\t// target\n\n\t\taddLine( 'c', 't' );\n\t\taddLine( 'p', 'c' );\n\n\t\t// cross\n\n\t\taddLine( 'cn1', 'cn2' );\n\t\taddLine( 'cn3', 'cn4' );\n\n\t\taddLine( 'cf1', 'cf2' );\n\t\taddLine( 'cf3', 'cf4' );\n\n\t\tfunction addLine( a, b ) {\n\n\t\t\taddPoint( a );\n\t\t\taddPoint( b );\n\n\t\t}\n\n\t\tfunction addPoint( id ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( 0, 0, 0 );\n\n\t\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\t\tpointMap[ id ] = [];\n\n\t\t\t}\n\n\t\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'CameraHelper';\n\n\t\tthis.camera = camera;\n\t\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\t\tthis.matrix = camera.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.pointMap = pointMap;\n\n\t\tthis.update();\n\n\t\t// colors\n\n\t\tconst colorFrustum = new Color( 0xffaa00 );\n\t\tconst colorCone = new Color( 0xff0000 );\n\t\tconst colorUp = new Color( 0x00aaff );\n\t\tconst colorTarget = new Color( 0xffffff );\n\t\tconst colorCross = new Color( 0x333333 );\n\n\t\tthis.setColors( colorFrustum, colorCone, colorUp, colorTarget, colorCross );\n\n\t}\n\n\tsetColors( frustum, cone, up, target, cross ) {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst colorAttribute = geometry.getAttribute( 'color' );\n\n\t\t// near\n\n\t\tcolorAttribute.setXYZ( 0, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 1, frustum.r, frustum.g, frustum.b ); // n1, n2\n\t\tcolorAttribute.setXYZ( 2, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 3, frustum.r, frustum.g, frustum.b ); // n2, n4\n\t\tcolorAttribute.setXYZ( 4, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 5, frustum.r, frustum.g, frustum.b ); // n4, n3\n\t\tcolorAttribute.setXYZ( 6, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 7, frustum.r, frustum.g, frustum.b ); // n3, n1\n\n\t\t// far\n\n\t\tcolorAttribute.setXYZ( 8, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 9, frustum.r, frustum.g, frustum.b ); // f1, f2\n\t\tcolorAttribute.setXYZ( 10, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 11, frustum.r, frustum.g, frustum.b ); // f2, f4\n\t\tcolorAttribute.setXYZ( 12, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 13, frustum.r, frustum.g, frustum.b ); // f4, f3\n\t\tcolorAttribute.setXYZ( 14, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 15, frustum.r, frustum.g, frustum.b ); // f3, f1\n\n\t\t// sides\n\n\t\tcolorAttribute.setXYZ( 16, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 17, frustum.r, frustum.g, frustum.b ); // n1, f1\n\t\tcolorAttribute.setXYZ( 18, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 19, frustum.r, frustum.g, frustum.b ); // n2, f2\n\t\tcolorAttribute.setXYZ( 20, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 21, frustum.r, frustum.g, frustum.b ); // n3, f3\n\t\tcolorAttribute.setXYZ( 22, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 23, frustum.r, frustum.g, frustum.b ); // n4, f4\n\n\t\t// cone\n\n\t\tcolorAttribute.setXYZ( 24, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 25, cone.r, cone.g, cone.b ); // p, n1\n\t\tcolorAttribute.setXYZ( 26, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 27, cone.r, cone.g, cone.b ); // p, n2\n\t\tcolorAttribute.setXYZ( 28, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 29, cone.r, cone.g, cone.b ); // p, n3\n\t\tcolorAttribute.setXYZ( 30, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 31, cone.r, cone.g, cone.b ); // p, n4\n\n\t\t// up\n\n\t\tcolorAttribute.setXYZ( 32, up.r, up.g, up.b ); colorAttribute.setXYZ( 33, up.r, up.g, up.b ); // u1, u2\n\t\tcolorAttribute.setXYZ( 34, up.r, up.g, up.b ); colorAttribute.setXYZ( 35, up.r, up.g, up.b ); // u2, u3\n\t\tcolorAttribute.setXYZ( 36, up.r, up.g, up.b ); colorAttribute.setXYZ( 37, up.r, up.g, up.b ); // u3, u1\n\n\t\t// target\n\n\t\tcolorAttribute.setXYZ( 38, target.r, target.g, target.b ); colorAttribute.setXYZ( 39, target.r, target.g, target.b ); // c, t\n\t\tcolorAttribute.setXYZ( 40, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 41, cross.r, cross.g, cross.b ); // p, c\n\n\t\t// cross\n\n\t\tcolorAttribute.setXYZ( 42, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 43, cross.r, cross.g, cross.b ); // cn1, cn2\n\t\tcolorAttribute.setXYZ( 44, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 45, cross.r, cross.g, cross.b ); // cn3, cn4\n\n\t\tcolorAttribute.setXYZ( 46, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 47, cross.r, cross.g, cross.b ); // cf1, cf2\n\t\tcolorAttribute.setXYZ( 48, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 49, cross.r, cross.g, cross.b ); // cf3, cf4\n\n\t\tcolorAttribute.needsUpdate = true;\n\n\t}\n\n\tupdate() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst pointMap = this.pointMap;\n\n\t\tconst 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\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// center / target\n\n\t\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\t\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\t\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\t\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\t\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\t\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\t\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\t\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\t\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\t\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\t\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\t\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\t\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\t\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\t\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector.x, _vector.y, _vector.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box = /*@__PURE__*/ new Box3();\n\nclass BoxHelper extends LineSegments {\n\n\tconstructor( object, color = 0xffff00 ) {\n\n\t\tconst 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\t\tconst positions = new Float32Array( 8 * 3 );\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.object = object;\n\t\tthis.type = 'BoxHelper';\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate( 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\t_box.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( _box.isEmpty() ) return;\n\n\t\tconst min = _box.min;\n\t\tconst max = _box.max;\n\n\t\t/*\n\t\t\t5____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\tconst position = this.geometry.attributes.position;\n\t\tconst 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\tsetFromObject( object ) {\n\n\t\tthis.object = object;\n\t\tthis.update();\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.object = source.object;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass Box3Helper extends LineSegments {\n\n\tconstructor( box, color = 0xffff00 ) {\n\n\t\tconst 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\t\tconst 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\t\tconst geometry = new BufferGeometry();\n\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.box = box;\n\n\t\tthis.type = 'Box3Helper';\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst box = this.box;\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tbox.getCenter( this.position );\n\n\t\tbox.getSize( this.scale );\n\n\t\tthis.scale.multiplyScalar( 0.5 );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass PlaneHelper extends Line {\n\n\tconstructor( plane, size = 1, hex = 0xffff00 ) {\n\n\t\tconst color = hex;\n\n\t\tconst positions = [ 1, - 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, - 1, 0, 1, 1, 0 ];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\t\tgeometry.computeBoundingSphere();\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.type = 'PlaneHelper';\n\n\t\tthis.plane = plane;\n\n\t\tthis.size = size;\n\n\t\tconst positions2 = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ];\n\n\t\tconst geometry2 = new BufferGeometry();\n\t\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\t\tgeometry2.computeBoundingSphere();\n\n\t\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tthis.position.set( 0, 0, 0 );\n\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, 1 );\n\n\t\tthis.lookAt( this.plane.normal );\n\n\t\tthis.translateZ( - this.plane.constant );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n}\n\nconst _axis = /*@__PURE__*/ new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nclass ArrowHelper extends Object3D {\n\n\t// dir is assumed to be normalized\n\n\tconstructor( dir = new Vector3( 0, 0, 1 ), origin = new Vector3( 0, 0, 0 ), length = 1, color = 0xffff00, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ArrowHelper';\n\n\t\tif ( _lineGeometry === undefined ) {\n\n\t\t\t_lineGeometry = new BufferGeometry();\n\t\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t\t_coneGeometry = new CylinderGeometry( 0, 0.5, 1, 5, 1 );\n\t\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t\t}\n\n\t\tthis.position.copy( origin );\n\n\t\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.line.matrixAutoUpdate = false;\n\t\tthis.add( this.line );\n\n\t\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.cone.matrixAutoUpdate = false;\n\t\tthis.add( this.cone );\n\n\t\tthis.setDirection( dir );\n\t\tthis.setLength( length, headLength, headWidth );\n\n\t}\n\n\tsetDirection( 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\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tconst radians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t\t}\n\n\t}\n\n\tsetLength( length, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\t\tthis.line.updateMatrix();\n\n\t\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\t\tthis.cone.position.y = length;\n\t\tthis.cone.updateMatrix();\n\n\t}\n\n\tsetColor( color ) {\n\n\t\tthis.line.material.color.set( color );\n\t\tthis.cone.material.color.set( color );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tthis.line.copy( source.line );\n\t\tthis.cone.copy( source.cone );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.line.geometry.dispose();\n\t\tthis.line.material.dispose();\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n}\n\nclass AxesHelper extends LineSegments {\n\n\tconstructor( size = 1 ) {\n\n\t\tconst vertices = [\n\t\t\t0, 0, 0,\tsize, 0, 0,\n\t\t\t0, 0, 0,\t0, size, 0,\n\t\t\t0, 0, 0,\t0, 0, size\n\t\t];\n\n\t\tconst colors = [\n\t\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t\t0, 0, 1,\t0, 0.6, 1\n\t\t];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'AxesHelper';\n\n\t}\n\n\tsetColors( xAxisColor, yAxisColor, zAxisColor ) {\n\n\t\tconst color = new Color();\n\t\tconst array = this.geometry.attributes.color.array;\n\n\t\tcolor.set( xAxisColor );\n\t\tcolor.toArray( array, 0 );\n\t\tcolor.toArray( array, 3 );\n\n\t\tcolor.set( yAxisColor );\n\t\tcolor.toArray( array, 6 );\n\t\tcolor.toArray( array, 9 );\n\n\t\tcolor.set( zAxisColor );\n\t\tcolor.toArray( array, 12 );\n\t\tcolor.toArray( array, 15 );\n\n\t\tthis.geometry.attributes.color.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass ShapePath {\n\n\tconstructor() {\n\n\t\tthis.type = 'ShapePath';\n\n\t\tthis.color = new Color();\n\n\t\tthis.subPaths = [];\n\t\tthis.currentPath = null;\n\n\t}\n\n\tmoveTo( 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\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t}\n\n\ttoShapes( isCCW ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst 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\tconst 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\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet 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\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\tconst 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\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tlet solid, tmpPath, tmpShape;\n\t\tconst 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\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let 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\tlet ambiguous = false;\n\t\t\tlet toChange = 0;\n\n\t\t\tfor ( let 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 ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let 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 ++;\n\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\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\n\t\t\tif ( toChange > 0 && ambiguous === false ) {\n\n\t\t\t\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let 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 ( let 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\nclass BoxBufferGeometry extends BoxGeometry { // @deprecated, r144\n\n\tconstructor( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\t\tconsole.warn( 'THREE.BoxBufferGeometry has been renamed to THREE.BoxGeometry.' );\n\t\tsuper( width, height, depth, widthSegments, heightSegments, depthSegments );\n\n\n\t}\n\n}\n\nclass CapsuleBufferGeometry extends CapsuleGeometry { // @deprecated, r144\n\n\tconstructor( radius, length, capSegments, radialSegments ) {\n\n\t\tconsole.warn( 'THREE.CapsuleBufferGeometry has been renamed to THREE.CapsuleGeometry.' );\n\t\tsuper( radius, length, capSegments, radialSegments );\n\n\t}\n\n}\n\nclass CircleBufferGeometry extends CircleGeometry { // @deprecated, r144\n\n\tconstructor( radius, segments, thetaStart, thetaLength ) {\n\n\t\tconsole.warn( 'THREE.CircleBufferGeometry has been renamed to THREE.CircleGeometry.' );\n\t\tsuper( radius, segments, thetaStart, thetaLength );\n\n\t}\n\n}\n\nclass ConeBufferGeometry extends ConeGeometry { // @deprecated, r144\n\n\tconstructor( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\t\tconsole.warn( 'THREE.ConeBufferGeometry has been renamed to THREE.ConeGeometry.' );\n\t\tsuper( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t}\n\n}\n\nclass CylinderBufferGeometry extends CylinderGeometry { // @deprecated, r144\n\n\tconstructor( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\t\tconsole.warn( 'THREE.CylinderBufferGeometry has been renamed to THREE.CylinderGeometry.' );\n\t\tsuper( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t}\n\n}\n\nclass DodecahedronBufferGeometry extends DodecahedronGeometry { // @deprecated, r144\n\n\tconstructor( radius, detail ) {\n\n\t\tconsole.warn( 'THREE.DodecahedronBufferGeometry has been renamed to THREE.DodecahedronGeometry.' );\n\t\tsuper( radius, detail );\n\n\t}\n\n}\n\nclass ExtrudeBufferGeometry extends ExtrudeGeometry { // @deprecated, r144\n\n\tconstructor( shapes, options ) {\n\n\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry has been renamed to THREE.ExtrudeGeometry.' );\n\t\tsuper( shapes, options );\n\n\t}\n\n}\n\nclass IcosahedronBufferGeometry extends IcosahedronGeometry { // @deprecated, r144\n\n\tconstructor( radius, detail ) {\n\n\t\tconsole.warn( 'THREE.IcosahedronBufferGeometry has been renamed to THREE.IcosahedronGeometry.' );\n\t\tsuper( radius, detail );\n\n\t}\n\n}\n\nclass LatheBufferGeometry extends LatheGeometry { // @deprecated, r144\n\n\tconstructor( points, segments, phiStart, phiLength ) {\n\n\t\tconsole.warn( 'THREE.LatheBufferGeometry has been renamed to THREE.LatheGeometry.' );\n\t\tsuper( points, segments, phiStart, phiLength );\n\n\t}\n\n}\n\nclass OctahedronBufferGeometry extends OctahedronGeometry { // @deprecated, r144\n\n\tconstructor( radius, detail ) {\n\n\t\tconsole.warn( 'THREE.OctahedronBufferGeometry has been renamed to THREE.OctahedronGeometry.' );\n\t\tsuper( radius, detail );\n\n\t}\n\n}\n\nclass PlaneBufferGeometry extends PlaneGeometry { // @deprecated, r144\n\n\tconstructor( width, height, widthSegments, heightSegments ) {\n\n\t\tconsole.warn( 'THREE.PlaneBufferGeometry has been renamed to THREE.PlaneGeometry.' );\n\t\tsuper( width, height, widthSegments, heightSegments );\n\n\t}\n\n}\n\nclass PolyhedronBufferGeometry extends PolyhedronGeometry { // @deprecated, r144\n\n\tconstructor( vertices, indices, radius, detail ) {\n\n\t\tconsole.warn( 'THREE.PolyhedronBufferGeometry has been renamed to THREE.PolyhedronGeometry.' );\n\t\tsuper( vertices, indices, radius, detail );\n\n\t}\n\n}\n\nclass RingBufferGeometry extends RingGeometry { // @deprecated, r144\n\n\tconstructor( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\t\tconsole.warn( 'THREE.RingBufferGeometry has been renamed to THREE.RingGeometry.' );\n\t\tsuper( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength );\n\n\t}\n\n}\n\nclass ShapeBufferGeometry extends ShapeGeometry { // @deprecated, r144\n\n\tconstructor( shapes, curveSegments ) {\n\n\t\tconsole.warn( 'THREE.ShapeBufferGeometry has been renamed to THREE.ShapeGeometry.' );\n\t\tsuper( shapes, curveSegments );\n\n\t}\n\n}\n\nclass SphereBufferGeometry extends SphereGeometry { // @deprecated, r144\n\n\tconstructor( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\t\tconsole.warn( 'THREE.SphereBufferGeometry has been renamed to THREE.SphereGeometry.' );\n\t\tsuper( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength );\n\n\t}\n\n}\n\nclass TetrahedronBufferGeometry extends TetrahedronGeometry { // @deprecated, r144\n\n\tconstructor( radius, detail ) {\n\n\t\tconsole.warn( 'THREE.TetrahedronBufferGeometry has been renamed to THREE.TetrahedronGeometry.' );\n\t\tsuper( radius, detail );\n\n\t}\n\n}\n\nclass TorusBufferGeometry extends TorusGeometry { // @deprecated, r144\n\n\tconstructor( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\t\tconsole.warn( 'THREE.TorusBufferGeometry has been renamed to THREE.TorusGeometry.' );\n\t\tsuper( radius, tube, radialSegments, tubularSegments, arc );\n\n\t}\n\n}\n\nclass TorusKnotBufferGeometry extends TorusKnotGeometry { // @deprecated, r144\n\n\tconstructor( radius, tube, tubularSegments, radialSegments, p, q ) {\n\n\t\tconsole.warn( 'THREE.TorusKnotBufferGeometry has been renamed to THREE.TorusKnotGeometry.' );\n\t\tsuper( radius, tube, tubularSegments, radialSegments, p, q );\n\n\t}\n\n}\n\nclass TubeBufferGeometry extends TubeGeometry { // @deprecated, r144\n\n\tconstructor( path, tubularSegments, radius, radialSegments, closed ) {\n\n\t\tconsole.warn( 'THREE.TubeBufferGeometry has been renamed to THREE.TubeGeometry.' );\n\t\tsuper( path, tubularSegments, radius, radialSegments, closed );\n\n\t}\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\n}\n\nif ( typeof window !== 'undefined' ) {\n\n\tif ( window.__THREE__ ) {\n\n\t\tconsole.warn( 'WARNING: Multiple instances of Three.js being imported.' );\n\n\t} else {\n\n\t\twindow.__THREE__ = REVISION;\n\n\t}\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AlphaFormat, AlwaysCompare, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AmbientLightProbe, AnimationAction, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BackSide, BasicDepthPacking, BasicShadowMap, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasTexture, CapsuleBufferGeometry, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, CompressedArrayTexture, CompressedTexture, CompressedTextureLoader, ConeBufferGeometry, ConeGeometry, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderBufferGeometry, CylinderGeometry, Cylindrical, Data3DTexture, DataArrayTexture, DataTexture, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DisplayP3ColorSpace, DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualCompare, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeBufferGeometry, ExtrudeGeometry, FileLoader, Float16BufferAttribute, Float32BufferAttribute, Float64BufferAttribute, FloatType, Fog, FogExp2, FramebufferTexture, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GreaterCompare, GreaterDepth, GreaterEqualCompare, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronBufferGeometry, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheBufferGeometry, LatheGeometry, Layers, LessCompare, LessDepth, LessEqualCompare, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverCompare, NeverDepth, NeverStencilFunc, NoBlending, NoColorSpace, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualCompare, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, Path, PerspectiveCamera, Plane, PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronBufferGeometry, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, RED_GREEN_RGTC2_Format, RED_RGTC1_Format, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, 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_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingBufferGeometry, RingGeometry, SIGNED_RED_GREEN_RGTC2_Format, SIGNED_RED_RGTC1_Format, SRGBColorSpace, Scene, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, Source, Sphere, SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronBufferGeometry, TetrahedronGeometry, Texture, TextureLoader, TorusBufferGeometry, TorusGeometry, TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeBufferGeometry, TubeGeometry, TwoPassDoubleSide, UVMapping, Uint16BufferAttribute, Uint32BufferAttribute, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, VideoTexture, WebGL1Renderer, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCoordinateSystem, WebGLCubeRenderTarget, WebGLMultipleRenderTargets, WebGLRenderTarget, WebGLRenderer, WebGLUtils, WebGPUCoordinateSystem, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, _SRGBAFormat, sRGBEncoding };\n","/**\n * @license React\n * react-reconciler-constants.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';exports.ConcurrentRoot=1;exports.ContinuousEventPriority=4;exports.DefaultEventPriority=16;exports.DiscreteEventPriority=1;exports.IdleEventPriority=536870912;exports.LegacyRoot=0;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-reconciler-constants.production.min.js');\n} else {\n module.exports = require('./cjs/react-reconciler-constants.development.js');\n}\n","import { useReducer, useRef, useDebugValue, useEffect, useLayoutEffect } from 'react';\n\nfunction createStore(createState) {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (nextState !== state) {\n const previousState = state;\n state = replace ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const subscribeWithSelector = (listener, selector = getState, equalityFn = Object.is) => {\n console.warn(\"[DEPRECATED] Please use `subscribeWithSelector` middleware\");\n let currentSlice = selector(state);\n function listenerToAdd() {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n listener(currentSlice = nextSlice, previousSlice);\n }\n }\n listeners.add(listenerToAdd);\n return () => listeners.delete(listenerToAdd);\n };\n const subscribe = (listener, selector, equalityFn) => {\n if (selector || equalityFn) {\n return subscribeWithSelector(listener, selector, equalityFn);\n }\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => listeners.clear();\n const api = { setState, getState, subscribe, destroy };\n state = createState(setState, getState, api);\n return api;\n}\n\nconst isSSR = typeof window === \"undefined\" || !window.navigator || /ServerSideRendering|^Deno\\//.test(window.navigator.userAgent);\nconst useIsomorphicLayoutEffect = isSSR ? useEffect : useLayoutEffect;\nfunction create(createState) {\n const api = typeof createState === \"function\" ? createStore(createState) : createState;\n const useStore = (selector = api.getState, equalityFn = Object.is) => {\n const [, forceUpdate] = useReducer((c) => c + 1, 0);\n const state = api.getState();\n const stateRef = useRef(state);\n const selectorRef = useRef(selector);\n const equalityFnRef = useRef(equalityFn);\n const erroredRef = useRef(false);\n const currentSliceRef = useRef();\n if (currentSliceRef.current === void 0) {\n currentSliceRef.current = selector(state);\n }\n let newStateSlice;\n let hasNewStateSlice = false;\n if (stateRef.current !== state || selectorRef.current !== selector || equalityFnRef.current !== equalityFn || erroredRef.current) {\n newStateSlice = selector(state);\n hasNewStateSlice = !equalityFn(currentSliceRef.current, newStateSlice);\n }\n useIsomorphicLayoutEffect(() => {\n if (hasNewStateSlice) {\n currentSliceRef.current = newStateSlice;\n }\n stateRef.current = state;\n selectorRef.current = selector;\n equalityFnRef.current = equalityFn;\n erroredRef.current = false;\n });\n const stateBeforeSubscriptionRef = useRef(state);\n useIsomorphicLayoutEffect(() => {\n const listener = () => {\n try {\n const nextState = api.getState();\n const nextStateSlice = selectorRef.current(nextState);\n if (!equalityFnRef.current(currentSliceRef.current, nextStateSlice)) {\n stateRef.current = nextState;\n currentSliceRef.current = nextStateSlice;\n forceUpdate();\n }\n } catch (error) {\n erroredRef.current = true;\n forceUpdate();\n }\n };\n const unsubscribe = api.subscribe(listener);\n if (api.getState() !== stateBeforeSubscriptionRef.current) {\n listener();\n }\n return unsubscribe;\n }, []);\n const sliceToReturn = hasNewStateSlice ? newStateSlice : currentSliceRef.current;\n useDebugValue(sliceToReturn);\n return sliceToReturn;\n };\n Object.assign(useStore, api);\n useStore[Symbol.iterator] = function() {\n console.warn(\"[useStore, api] = create() is deprecated and will be removed in v4\");\n const items = [useStore, api];\n return {\n next() {\n const done = items.length <= 0;\n return { value: items.shift(), done };\n }\n };\n };\n return useStore;\n}\n\nexport { create as default };\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-reconciler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nmodule.exports = function $$$reconciler($$$hostConfig) {\n var exports = {};\n'use strict';var aa=require(\"react\"),ba=require(\"scheduler\"),ca=Object.assign;function n(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;ch||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{bc=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?ac(a):\"\"}var dc=Object.prototype.hasOwnProperty,ec=[],fc=-1;function gc(a){return{current:a}}\nfunction x(a){0>fc||(a.current=ec[fc],ec[fc]=null,fc--)}function y(a,b){fc++;ec[fc]=a.current;a.current=b}var hc={},A=gc(hc),B=gc(!1),ic=hc;function jc(a,b){var c=a.type.contextTypes;if(!c)return hc;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction C(a){a=a.childContextTypes;return null!==a&&void 0!==a}function kc(){x(B);x(A)}function lc(a,b,c){if(A.current!==hc)throw Error(n(168));y(A,b);y(B,c)}function mc(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(n(108,xa(a)||\"Unknown\",e));return ca({},c,d)}\nfunction nc(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||hc;ic=A.current;y(A,a);y(B,B.current);return!0}function oc(a,b,c){var d=a.stateNode;if(!d)throw Error(n(169));c?(a=mc(a,b,ic),d.__reactInternalMemoizedMergedChildContext=a,x(B),x(A),y(A,a)):x(B);y(B,c)}var qc=Math.clz32?Math.clz32:pc,rc=Math.log,sc=Math.LN2;function pc(a){a>>>=0;return 0===a?32:31-(rc(a)/sc|0)|0}var tc=64,uc=4194304;\nfunction vc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function wc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=vc(h):(f&=g,0!==f&&(d=vc(f)))}else g=c&~e,0!==g?d=vc(g):0!==f&&(d=vc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}function Bc(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-qc(b);a[b]=c}\nfunction Cc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0>=g;e-=g;Nd=1<<32-qc(b)+e|c<u?(t=w,w=null):t=w.sibling;var q=r(e,w,h[u],k);if(null===q){null===w&&(w=t);break}a&&w&&null===q.alternate&&b(e,w);g=f(q,g,u);null===m?l=q:m.sibling=q;m=q;w=t}if(u===h.length)return c(e,w),I&&Pd(e,u),l;if(null===w){for(;uu?(q=m,m=null):q=m.sibling;var V=r(e,m,t.value,k);if(null===V){null===m&&(m=q);break}a&&m&&null===V.alternate&&b(e,m);g=f(V,g,u);null===w?l=V:w.sibling=V;w=V;m=q}if(t.done)return c(e,\nm),I&&Pd(e,u),l;if(null===m){for(;!t.done;u++,t=h.next())t=v(e,t.value,k),null!==t&&(g=f(t,g,u),null===w?l=t:w.sibling=t,w=t);I&&Pd(e,u);return l}for(m=d(e,m);!t.done;u++,t=h.next())t=z(m,e,u,t.value,k),null!==t&&(a&&null!==t.alternate&&m.delete(null===t.key?u:t.key),g=f(t,g,u),null===w?l=t:w.sibling=t,w=t);a&&m.forEach(function(a){return b(e,a)});I&&Pd(e,u);return l}function da(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ia&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==\nf){switch(f.$$typeof){case fa:a:{for(var k=f.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ia){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===ra&&he(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=fe(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ia?(d=ne(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=le(f.type,f.key,f.props,null,a.mode,h),h.ref=fe(a,d,f),h.return=\na,a=h)}return g(a);case ha:a:{for(l=f.key;null!==d;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=me(f,a.mode,h);d.return=a;a=d}return g(a);case ra:return l=f._init,da(a,d,l(f._payload),h)}if(Ea(f))return q(a,d,f,h);if(ua(f))return N(a,d,f,h);ge(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&\n6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=ke(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return da}var oe=ie(!0),pe=ie(!1),qe={},re=gc(qe),se=gc(qe),te=gc(qe);function ue(a){if(a===qe)throw Error(n(174));return a}function ve(a,b){y(te,b);y(se,a);y(re,qe);a=Ga(b);x(re);y(re,a)}function we(){x(re);x(se);x(te)}function xe(a){var b=ue(te.current),c=ue(re.current);b=Ha(c,a.type,b);c!==b&&(y(se,a),y(re,b))}function ye(a){se.current===a&&(x(re),x(se))}var J=gc(0);\nfunction ze(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||Ib(c)||Jb(c)))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Ae=[];\nfunction Be(){for(var a=0;ac?c:4;a(!0);var d=De.transition;De.transition={};try{a(!1),b()}finally{D=c,De.transition=d}}function rf(){return Re().memoizedState}function sf(a,b,c){var d=zd(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};tf(a)?uf(b,c):(vf(a,b,c),c=H(),a=Ad(a,d,c),null!==a&&wf(a,b,d))}\nfunction df(a,b,c){var d=zd(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(tf(a))uf(b,e);else{vf(a,b,e);var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(Rc(h,g))return}catch(k){}finally{}c=H();a=Ad(a,d,c);null!==a&&wf(a,b,d)}}function tf(a){var b=a.alternate;return a===K||null!==b&&b===K}\nfunction uf(a,b){Ge=Fe=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function vf(a,b,c){null!==F&&0!==(a.mode&1)&&0===(G&2)?(a=b.interleaved,null===a?(c.next=c,null===md?md=[b]:md.push(b)):(c.next=a.next,a.next=c),b.interleaved=c):(a=b.pending,null===a?c.next=c:(c.next=a.next,a.next=c),b.pending=c)}function wf(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Dc(a,c)}}\nvar Oe={readContext:ld,useCallback:O,useContext:O,useEffect:O,useImperativeHandle:O,useInsertionEffect:O,useLayoutEffect:O,useMemo:O,useReducer:O,useRef:O,useState:O,useDebugValue:O,useDeferredValue:O,useTransition:O,useMutableSource:O,useSyncExternalStore:O,useId:O,unstable_isNewReconciler:!1},Le={readContext:ld,useCallback:function(a,b){Qe().memoizedState=[a,void 0===b?null:b];return a},useContext:ld,useEffect:hf,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ff(4194308,\n4,lf.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ff(4194308,4,a,b)},useInsertionEffect:function(a,b){return ff(4,2,a,b)},useMemo:function(a,b){var c=Qe();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Qe();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=sf.bind(null,K,a);return[d.memoizedState,a]},useRef:function(a){var b=\nQe();a={current:a};return b.memoizedState=a},useState:cf,useDebugValue:nf,useDeferredValue:function(a){var b=cf(a),c=b[0],d=b[1];hf(function(){var b=De.transition;De.transition={};try{d(a)}finally{De.transition=b}},[a]);return c},useTransition:function(){var a=cf(!1),b=a[0];a=qf.bind(null,a[1]);Qe().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=K,e=Qe();if(I){if(void 0===c)throw Error(n(407));c=c()}else{c=b();if(null===F)throw Error(n(349));\n0!==(Ee&30)||af(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;hf(Ye.bind(null,d,f,a),[a]);d.flags|=2048;Ze(9,$e.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Qe(),b=F.identifierPrefix;if(I){var c=Od;var d=Nd;c=(d&~(1<<32-qc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=He++;0Uf&&(b.flags|=128,d=!0,Qf(e,!1),b.lanes=4194304)}else{if(!d)if(a=ze(f),null!==a){if(b.flags|=128,d=!0,a=a.updateQueue,null!==a&&(b.updateQueue=a,b.flags|=4),Qf(e,!0),null===e.tail&&\"hidden\"===e.tailMode&&!f.alternate&&!I)return P(b),null}else 2*E()-e.renderingStartTime>Uf&&1073741824!==c&&(b.flags|=128,d=!0,Qf(e,!1),b.lanes=4194304);e.isBackwards?(f.sibling=b.child,b.child=f):(a=e.last,null!==a?a.sibling=f:b.child=f,e.last=f)}if(null!==\ne.tail)return b=e.tail,e.rendering=b,e.tail=b.sibling,e.renderingStartTime=E(),b.sibling=null,a=J.current,y(J,d?a&1|2:a&1),b;P(b);return null;case 22:case 23:return Vf(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(Wf&1073741824)&&(P(b),Ua&&b.subtreeFlags&6&&(b.flags|=8192)):P(b),null;case 24:return null;case 25:return null}throw Error(n(156,b.tag));}var Xf=ea.ReactCurrentOwner,kd=!1;\nfunction R(a,b,c,d){b.child=null===a?pe(b,null,c,d):oe(b,a.child,c,d)}function Yf(a,b,c,d,e){c=c.render;var f=b.ref;jd(b,e);d=Ke(a,b,c,d,f,e);c=Pe();if(null!==a&&!kd)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zf(a,b,e);I&&c&&Rd(b);b.flags|=1;R(a,b,d,e);return b.child}\nfunction $f(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!ag(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,bg(a,b,f,d,e);a=le(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Zc;if(c(g,d)&&a.ref===b.ref)return Zf(a,b,e)}b.flags|=1;a=je(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction bg(a,b,c,d,e){if(null!==a&&Zc(a.memoizedProps,d)&&a.ref===b.ref)if(kd=!1,0!==(a.lanes&e))0!==(a.flags&131072)&&(kd=!0);else return b.lanes=a.lanes,Zf(a,b,e);return cg(a,b,c,d,e)}\nfunction dg(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null},y(eg,Wf),Wf|=c;else if(0!==(c&1073741824))b.memoizedState={baseLanes:0,cachePool:null},d=null!==f?f.baseLanes:c,y(eg,Wf),Wf|=d;else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null},b.updateQueue=null,y(eg,Wf),Wf|=a,null;else null!==f?(d=f.baseLanes|c,b.memoizedState=null):\nd=c,y(eg,Wf),Wf|=d;R(a,b,e,c);return b.child}function fg(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function cg(a,b,c,d,e){var f=C(c)?ic:A.current;f=jc(b,f);jd(b,e);c=Ke(a,b,c,d,f,e);d=Pe();if(null!==a&&!kd)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zf(a,b,e);I&&d&&Rd(b);b.flags|=1;R(a,b,c,e);return b.child}\nfunction gg(a,b,c,d,e){if(C(c)){var f=!0;nc(b)}else f=!1;jd(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Dd(b,c,d),Fd(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=ld(l):(l=C(c)?ic:A.current,l=jc(b,l));var m=c.getDerivedStateFromProps,v=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;v||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==\ntypeof g.componentWillReceiveProps||(h!==d||k!==l)&&Ed(b,g,d,l);nd=!1;var r=b.memoizedState;g.state=r;ud(b,d,g,e);k=b.memoizedState;h!==d||r!==k||B.current||nd?(\"function\"===typeof m&&(yd(b,c,m,d),k=b.memoizedState),(h=nd||Cd(b,c,h,d,r,k,l))?(v||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&\n(b.flags|=4194308)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;pd(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:ad(b.type,h);g.props=l;v=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=ld(k):(k=C(c)?ic:A.current,k=jc(b,k));var z=c.getDerivedStateFromProps;(m=\"function\"===typeof z||\"function\"===\ntypeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==v||r!==k)&&Ed(b,g,d,k);nd=!1;r=b.memoizedState;g.state=r;ud(b,d,g,e);var q=b.memoizedState;h!==v||r!==q||B.current||nd?(\"function\"===typeof z&&(yd(b,c,z,d),q=b.memoizedState),(l=nd||Cd(b,c,l,d,r,q,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nq,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,q,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=q),g.props=d,g.state=q,g.context=k,d=l):(\"function\"!==\ntypeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return hg(a,b,c,d,f,e)}\nfunction hg(a,b,c,d,e,f){fg(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&oc(b,c,!1),Zf(a,b,f);d=b.stateNode;Xf.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=oe(b,a.child,null,f),b.child=oe(b,null,h,f)):R(a,b,h,f);b.memoizedState=d.state;e&&oc(b,c,!0);return b.child}function ig(a){var b=a.stateNode;b.pendingContext?lc(a,b.pendingContext,b.pendingContext!==b.context):b.context&&lc(a,b.context,!1);ve(a,b.containerInfo)}\nfunction jg(a,b,c,d,e){de();ee(e);b.flags|=256;R(a,b,c,d);return b.child}var kg={dehydrated:null,treeContext:null,retryLane:0};function lg(a){return{baseLanes:a,cachePool:null}}\nfunction mg(a,b,c){var d=b.pendingProps,e=J.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;y(J,e&1);if(null===a){ae(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:Jb(a)?b.lanes=8:b.lanes=1073741824,null;e=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,e={mode:\"hidden\",children:e},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=e):\nf=ng(e,d,0,null),a=ne(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=lg(c),b.memoizedState=kg,a):og(b,e)}e=a.memoizedState;if(null!==e){h=e.dehydrated;if(null!==h){if(g){if(b.flags&256)return b.flags&=-257,pg(a,b,c,Error(n(422)));if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=ng({mode:\"visible\",children:d.children},e,0,null);f=ne(f,e,c,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&oe(b,a.child,\nnull,c);b.child.memoizedState=lg(c);b.memoizedState=kg;return f}if(0===(b.mode&1))b=pg(a,b,c,null);else if(Jb(h))b=pg(a,b,c,Error(n(419)));else if(d=0!==(c&a.childLanes),kd||d){d=F;if(null!==d){switch(c&-c){case 4:f=2;break;case 16:f=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:f=32;break;case 536870912:f=\n268435456;break;default:f=0}d=0!==(f&(d.suspendedLanes|c))?0:f;0!==d&&d!==e.retryLane&&(e.retryLane=d,Ad(a,d,-1))}Tf();b=pg(a,b,c,Error(n(421)))}else Ib(h)?(b.flags|=128,b.child=a.child,b=qg.bind(null,a),Kb(h,b),b=null):(c=e.treeContext,p&&(Ud=Ob(h),Td=b,I=!0,Wd=null,Vd=!1,null!==c&&(Kd[Ld++]=Nd,Kd[Ld++]=Od,Kd[Ld++]=Md,Nd=c.id,Od=c.overflow,Md=b)),b=og(b,b.pendingProps.children),b.flags|=4096);return b}if(f)return d=rg(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=\nnull===e?lg(c):{baseLanes:e.baseLanes|c,cachePool:null},f.childLanes=a.childLanes&~c,b.memoizedState=kg,d;c=sg(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=rg(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?lg(c):{baseLanes:e.baseLanes|c,cachePool:null},f.childLanes=a.childLanes&~c,b.memoizedState=kg,d;c=sg(a,b,d.children,c);b.memoizedState=null;return c}\nfunction og(a,b){b=ng({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function sg(a,b,c,d){var e=a.child;a=e.sibling;c=je(e,{mode:\"visible\",children:c});0===(b.mode&1)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(d=b.deletions,null===d?(b.deletions=[a],b.flags|=16):d.push(a));return b.child=c}\nfunction rg(a,b,c,d,e){var f=b.mode;a=a.child;var g=a.sibling,h={mode:\"hidden\",children:c};0===(f&1)&&b.child!==a?(c=b.child,c.childLanes=0,c.pendingProps=h,b.deletions=null):(c=je(a,h),c.subtreeFlags=a.subtreeFlags&14680064);null!==g?d=je(g,d):(d=ne(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function pg(a,b,c,d){null!==d&&ee(d);oe(b,a.child,null,c);a=og(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction tg(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);id(a.return,b,c)}function ug(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction vg(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;R(a,b,d.children,c);d=J.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&tg(a,c,b);else if(19===a.tag)tg(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}y(J,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===ze(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);ug(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===ze(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}ug(b,!0,c,null,f);break;case \"together\":ug(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction Zf(a,b,c){null!==a&&(b.dependencies=a.dependencies);vd|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(n(153));if(null!==b.child){a=b.child;c=je(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=je(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction wg(a,b,c){switch(b.tag){case 3:ig(b);de();break;case 5:xe(b);break;case 1:C(b.type)&&nc(b);break;case 4:ve(b,b.stateNode.containerInfo);break;case 10:gd(b,b.type._context,b.memoizedProps.value);break;case 13:var d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return y(J,J.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return mg(a,b,c);y(J,J.current&1);a=Zf(a,b,c);return null!==a?a.sibling:null}y(J,J.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&128)){if(d)return vg(a,\nb,c);b.flags|=128}var e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);y(J,J.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,dg(a,b,c)}return Zf(a,b,c)}\nfunction xg(a,b){Sd(b);switch(b.tag){case 1:return C(b.type)&&kc(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return we(),x(B),x(A),Be(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return ye(b),null;case 13:x(J);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(n(340));de()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return x(J),null;case 4:return we(),null;case 10:return hd(b.type._context),null;case 22:case 23:return Vf(),\nnull;case 24:return null;default:return null}}var yg=!1,zg=!1,Ag=\"function\"===typeof WeakSet?WeakSet:Set,S=null;function Bg(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){T(a,b,d)}else c.current=null}function Cg(a,b,c){try{c()}catch(d){T(a,b,d)}}var Dg=!1;\nfunction Eg(a,b){Ia(a.containerInfo);for(S=b;null!==S;)if(a=S,b=a.child,0!==(a.subtreeFlags&1028)&&null!==b)b.return=a,S=b;else for(;null!==S;){a=S;try{var c=a.alternate;if(0!==(a.flags&1024))switch(a.tag){case 0:case 11:case 15:break;case 1:if(null!==c){var d=c.memoizedProps,e=c.memoizedState,f=a.stateNode,g=f.getSnapshotBeforeUpdate(a.elementType===a.type?d:ad(a.type,d),e);f.__reactInternalSnapshotBeforeUpdate=g}break;case 3:Ua&&xb(a.stateNode.containerInfo);break;case 5:case 6:case 4:case 17:break;\ndefault:throw Error(n(163));}}catch(h){T(a,a.return,h)}b=a.sibling;if(null!==b){b.return=a.return;S=b;break}S=a.return}c=Dg;Dg=!1;return c}function Fg(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Cg(b,c,f)}e=e.next}while(e!==d)}}function Gg(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}\nfunction Hg(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=Fa(c);break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Ig(a,b,c){if(Oc&&\"function\"===typeof Oc.onCommitFiberUnmount)try{Oc.onCommitFiberUnmount(Nc,b)}catch(g){}switch(b.tag){case 0:case 11:case 14:case 15:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var d=a=a.next;do{var e=d,f=e.destroy;e=e.tag;void 0!==f&&(0!==(e&2)?Cg(b,c,f):0!==(e&4)&&Cg(b,c,f));d=d.next}while(d!==a)}break;case 1:Bg(b,c);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(g){T(b,\nc,g)}break;case 5:Bg(b,c);break;case 4:Ua?Jg(a,b,c):Va&&Va&&(b=b.stateNode.containerInfo,c=zb(b),Cb(b,c))}}function Kg(a,b,c){for(var d=b;;)if(Ig(a,d,c),null===d.child||Ua&&4===d.tag){if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return}d.sibling.return=d.return;d=d.sibling}else d.child.return=d,d=d.child}\nfunction Lg(a){var b=a.alternate;null!==b&&(a.alternate=null,Lg(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&Za(b));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Mg(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Ng(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Mg(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Og(a){if(Ua){a:{for(var b=a.return;null!==b;){if(Mg(b))break a;b=b.return}throw Error(n(160));}var c=b;switch(c.tag){case 5:b=c.stateNode;c.flags&32&&(sb(b),c.flags&=-33);c=Ng(a);Pg(a,c,b);break;case 3:case 4:b=c.stateNode.containerInfo;c=Ng(a);Qg(a,c,b);break;default:throw Error(n(161));}}}function Qg(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?pb(c,a,b):kb(c,a);else if(4!==d&&(a=a.child,null!==a))for(Qg(a,b,c),a=a.sibling;null!==a;)Qg(a,b,c),a=a.sibling}\nfunction Pg(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?ob(c,a,b):jb(c,a);else if(4!==d&&(a=a.child,null!==a))for(Pg(a,b,c),a=a.sibling;null!==a;)Pg(a,b,c),a=a.sibling}\nfunction Jg(a,b,c){for(var d=b,e=!1,f,g;;){if(!e){e=d.return;a:for(;;){if(null===e)throw Error(n(160));f=e.stateNode;switch(e.tag){case 5:g=!1;break a;case 3:f=f.containerInfo;g=!0;break a;case 4:f=f.containerInfo;g=!0;break a}e=e.return}e=!0}if(5===d.tag||6===d.tag)Kg(a,d,c),g?rb(f,d.stateNode):qb(f,d.stateNode);else if(18===d.tag)g?Wb(f,d.stateNode):Vb(f,d.stateNode);else if(4===d.tag){if(null!==d.child){f=d.stateNode.containerInfo;g=!0;d.child.return=d;d=d.child;continue}}else if(Ig(a,d,c),null!==\nd.child){d.child.return=d;d=d.child;continue}if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return;4===d.tag&&(e=!1)}d.sibling.return=d.return;d=d.sibling}}\nfunction Rg(a,b){if(Ua){switch(b.tag){case 0:case 11:case 14:case 15:Fg(3,b,b.return);Gg(3,b);Fg(5,b,b.return);return;case 1:return;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps;a=null!==a?a.memoizedProps:d;var e=b.type,f=b.updateQueue;b.updateQueue=null;null!==f&&nb(c,f,e,a,d,b)}return;case 6:if(null===b.stateNode)throw Error(n(162));c=b.memoizedProps;lb(b.stateNode,null!==a?a.memoizedProps:c,c);return;case 3:p&&null!==a&&a.memoizedState.isDehydrated&&Tb(b.stateNode.containerInfo);return;\ncase 12:return;case 13:Sg(b);return;case 19:Sg(b);return;case 17:return}throw Error(n(163));}switch(b.tag){case 0:case 11:case 14:case 15:Fg(3,b,b.return);Gg(3,b);Fg(5,b,b.return);return;case 12:return;case 13:Sg(b);return;case 19:Sg(b);return;case 3:p&&null!==a&&a.memoizedState.isDehydrated&&Tb(b.stateNode.containerInfo);break;case 22:case 23:return}a:if(Va){switch(b.tag){case 1:case 5:case 6:break a;case 3:case 4:b=b.stateNode;Cb(b.containerInfo,b.pendingChildren);break a}throw Error(n(163));}}\nfunction Sg(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Ag);b.forEach(function(b){var d=Tg.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction Ug(a,b){for(S=b;null!==S;){b=S;var c=b.deletions;if(null!==c)for(var d=0;d\";case bh:return\":has(\"+(ih(a)||\"\")+\")\";case ch:return'[role=\"'+a.value+'\"]';case eh:return'\"'+a.value+'\"';case dh:return'[data-testname=\"'+a.value+'\"]';default:throw Error(n(365));}}\nfunction jh(a,b){var c=[];a=[a,0];for(var d=0;de&&(e=g);d&=~f}d=e;d=E()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lh(d/1960))-d;if(10a?16:a;if(null===uh)var d=!1;else{a=uh;uh=null;vh=0;if(0!==(G&6))throw Error(n(331));var e=G;G|=4;for(S=a.current;null!==S;){var f=S,g=f.child;if(0!==(S.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kE()-Vg?Ih(a,0):qh|=c);Z(a,b)}function Vh(a,b){0===b&&(0===(a.mode&1)?b=1:(b=uc,uc<<=1,0===(uc&130023424)&&(uc=4194304)));var c=H();a=Ah(a,b);null!==a&&(Bc(a,b,c),Z(a,c))}function qg(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Vh(a,c)}\nfunction Tg(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(n(314));}null!==d&&d.delete(b);Vh(a,c)}var Sh;\nSh=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||B.current)kd=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return kd=!1,wg(a,b,c);kd=0!==(a.flags&131072)?!0:!1}else kd=!1,I&&0!==(b.flags&1048576)&&Qd(b,Jd,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;var e=jc(b,A.current);jd(b,c);e=Ke(null,b,d,a,e,c);var f=Pe();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?\n(b.tag=1,b.memoizedState=null,b.updateQueue=null,C(d)?(f=!0,nc(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,od(b),e.updater=Bd,b.stateNode=e,e._reactInternals=b,Fd(b,d,a,c),b=hg(null,b,d,!0,f,c)):(b.tag=0,I&&f&&Rd(b),R(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Wh(d);a=ad(d,a);switch(e){case 0:b=cg(null,b,d,a,c);break a;case 1:b=gg(null,b,d,\na,c);break a;case 11:b=Yf(null,b,d,a,c);break a;case 14:b=$f(null,b,d,ad(d.type,a),c);break a}throw Error(n(306,d,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),cg(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),gg(a,b,d,e,c);case 3:a:{ig(b);if(null===a)throw Error(n(387));d=b.pendingProps;f=b.memoizedState;e=f.element;pd(a,b);ud(b,d,null,c);var g=b.memoizedState;d=g.element;if(p&&f.isDehydrated)if(f={element:d,isDehydrated:!1,\ncache:g.cache,transitions:g.transitions},b.updateQueue.baseState=f,b.memoizedState=f,b.flags&256){e=Error(n(423));b=jg(a,b,d,c,e);break a}else if(d!==e){e=Error(n(424));b=jg(a,b,d,c,e);break a}else for(p&&(Ud=Nb(b.stateNode.containerInfo),Td=b,I=!0,Wd=null,Vd=!1),c=pe(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{de();if(d===e){b=Zf(a,b,c);break a}R(a,b,d,c)}b=b.child}return b;case 5:return xe(b),null===a&&ae(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,\nOa(d,e)?g=null:null!==f&&Oa(d,f)&&(b.flags|=32),fg(a,b),R(a,b,g,c),b.child;case 6:return null===a&&ae(b),null;case 13:return mg(a,b,c);case 4:return ve(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=oe(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),Yf(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,b,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=\nb.type._context;e=b.pendingProps;f=b.memoizedProps;g=e.value;gd(b,d,g);if(null!==f)if(Rc(f.value,g)){if(f.children===e.children&&!B.current){b=Zf(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=qd(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=\nc);id(f.return,c,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(n(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);id(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}R(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,jd(b,c),e=ld(e),d=d(e),b.flags|=\n1,R(a,b,d,c),b.child;case 14:return d=b.type,e=ad(d,b.pendingProps),e=ad(d.type,e),$f(a,b,d,e,c);case 15:return bg(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,C(d)?(a=!0,nc(b)):a=!1,jd(b,c),Dd(b,d,e),Fd(b,d,e,c),hg(null,b,d,!0,a,c);case 19:return vg(a,b,c);case 22:return dg(a,b,c)}throw Error(n(156,b.tag));};function Dh(a,b){return Fc(a,b)}\nfunction Xh(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Yd(a,b,c,d){return new Xh(a,b,c,d)}function ag(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Wh(a){if(\"function\"===typeof a)return ag(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===na)return 11;if(a===qa)return 14}return 2}\nfunction je(a,b){var c=a.alternate;null===c?(c=Yd(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction le(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)ag(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ia:return ne(c.children,e,f,b);case ja:g=8;e|=8;break;case ka:return a=Yd(12,c,b,e|2),a.elementType=ka,a.lanes=f,a;case oa:return a=Yd(13,c,b,e),a.elementType=oa,a.lanes=f,a;case pa:return a=Yd(19,c,b,e),a.elementType=pa,a.lanes=f,a;case sa:return ng(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case la:g=10;break a;case ma:g=9;break a;case na:g=11;\nbreak a;case qa:g=14;break a;case ra:g=16;d=null;break a}throw Error(n(130,null==a?a:typeof a,\"\"));}b=Yd(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function ne(a,b,c,d){a=Yd(7,a,d,b);a.lanes=c;return a}function ng(a,b,c,d){a=Yd(22,a,d,b);a.elementType=sa;a.lanes=c;a.stateNode={};return a}function ke(a,b,c){a=Yd(6,a,null,b);a.lanes=c;return a}\nfunction me(a,b,c){b=Yd(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction Yh(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=Sa;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=Ac(0);this.expirationTimes=Ac(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=Ac(0);this.identifierPrefix=d;this.onRecoverableError=e;p&&(this.mutableSourceEagerHydrationData=\nnull)}function Zh(a,b,c,d,e,f,g,h,k){a=new Yh(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Yd(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null};od(f);return a}\nfunction $h(a){if(!a)return hc;a=a._reactInternals;a:{if(ya(a)!==a||1!==a.tag)throw Error(n(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(C(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(n(171));}if(1===a.tag){var c=a.type;if(C(c))return mc(a,c,b)}return b}\nfunction ai(a){var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(n(188));a=Object.keys(a).join(\",\");throw Error(n(268,a));}a=Ba(b);return null===a?null:a.stateNode}function bi(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c=l&&f>=v&&e<=m&&g<=r){a.splice(b,1);break}else if(!(d!==l||c.width!==k.width||rg)){v>f&&(k.height+=v-f,k.y=f);re)){l>d&&(k.width+=\nl-d,k.x=d);mc&&(c=g)),g \")+\"\\n\\nNo matching component was found for:\\n \")+a.join(\" > \")}return null};\nexports.getPublicRootInstance=function(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return Fa(a.child.stateNode);default:return a.child.stateNode}};\nexports.injectIntoDevTools=function(a){a={bundleType:a.bundleType,version:a.version,rendererPackageName:a.rendererPackageName,rendererConfig:a.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ea.ReactCurrentDispatcher,findHostInstanceByFiber:di,findFiberByHostInstance:a.findFiberByHostInstance||\nei,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.0.0-fc46dba67-20220329\"};if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)a=!1;else{var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)a=!0;else{try{Nc=b.inject(a),Oc=b}catch(c){}a=b.checkDCE?!0:!1}}return a};exports.isAlreadyRendering=function(){return!1};\nexports.observeVisibleRects=function(a,b,c,d){if(!bb)throw Error(n(363));a=kh(a,b);var e=ib(a,c,d).disconnect;return{disconnect:function(){e()}}};exports.registerMutableSourceForHydration=function(a,b){var c=b._getVersion;c=c(b._source);null==a.mutableSourceEagerHydrationData?a.mutableSourceEagerHydrationData=[b,c]:a.mutableSourceEagerHydrationData.push(b,c)};exports.runWithPriority=function(a,b){var c=D;try{return D=a,b()}finally{D=c}};exports.shouldError=function(){return null};\nexports.shouldSuspend=function(){return!1};exports.updateContainer=function(a,b,c,d){var e=b.current,f=H(),g=zd(e);c=$h(c);null===b.context?b.context=c:b.pendingContext=c;b=qd(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);rd(e,b);a=Ad(e,g,f);null!==a&&sd(a,e,g);return g};\n\n return exports;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-reconciler.production.min.js');\n} else {\n module.exports = require('./cjs/react-reconciler.development.js');\n}\n","const isPromise = promise => typeof promise === 'object' && typeof promise.then === 'function';\n\nconst globalCache = [];\n\nfunction shallowEqualArrays(arrA, arrB, equal = (a, b) => a === b) {\n if (arrA === arrB) return true;\n if (!arrA || !arrB) return false;\n const len = arrA.length;\n if (arrB.length !== len) return false;\n\n for (let i = 0; i < len; i++) if (!equal(arrA[i], arrB[i])) return false;\n\n return true;\n}\n\nfunction query(fn, keys = null, preload = false, config = {}) {\n // If no keys were given, the function is the key\n if (keys === null) keys = [fn];\n\n for (const entry of globalCache) {\n // Find a match\n if (shallowEqualArrays(keys, entry.keys, entry.equal)) {\n // If we're pre-loading and the element is present, just return\n if (preload) return undefined; // If an error occurred, throw\n\n if (Object.prototype.hasOwnProperty.call(entry, 'error')) throw entry.error; // If a response was successful, return\n\n if (Object.prototype.hasOwnProperty.call(entry, 'response')) {\n if (config.lifespan && config.lifespan > 0) {\n if (entry.timeout) clearTimeout(entry.timeout);\n entry.timeout = setTimeout(entry.remove, config.lifespan);\n }\n\n return entry.response;\n } // If the promise is still unresolved, throw\n\n\n if (!preload) throw entry.promise;\n }\n } // The request is new or has changed.\n\n\n const entry = {\n keys,\n equal: config.equal,\n remove: () => {\n const index = globalCache.indexOf(entry);\n if (index !== -1) globalCache.splice(index, 1);\n },\n promise: // Execute the promise\n (isPromise(fn) ? fn : fn(...keys) // When it resolves, store its value\n ).then(response => {\n entry.response = response; // Remove the entry in time if a lifespan was given\n\n if (config.lifespan && config.lifespan > 0) {\n entry.timeout = setTimeout(entry.remove, config.lifespan);\n }\n }) // Store caught errors, they will be thrown in the render-phase to bubble into an error-bound\n .catch(error => entry.error = error)\n }; // Register the entry\n\n globalCache.push(entry); // And throw the promise, this yields control back to React\n\n if (!preload) throw entry.promise;\n return undefined;\n}\n\nconst suspend = (fn, keys, config) => query(fn, keys, false, config);\n\nconst preload = (fn, keys, config) => void query(fn, keys, true, config);\n\nconst peek = keys => {\n var _globalCache$find;\n\n return (_globalCache$find = globalCache.find(entry => shallowEqualArrays(keys, entry.keys, entry.equal))) == null ? void 0 : _globalCache$find.response;\n};\n\nconst clear = keys => {\n if (keys === undefined || keys.length === 0) globalCache.splice(0, globalCache.length);else {\n const entry = globalCache.find(entry => shallowEqualArrays(keys, entry.keys, entry.equal));\n if (entry) entry.remove();\n }\n};\n\nexport { clear, peek, preload, suspend };\n","import * as THREE from 'three';\nimport * as React from 'react';\nimport { DefaultEventPriority, ContinuousEventPriority, DiscreteEventPriority, ConcurrentRoot } from 'react-reconciler/constants';\nimport create from 'zustand';\nimport Reconciler from 'react-reconciler';\nimport { unstable_scheduleCallback, unstable_IdlePriority } from 'scheduler';\nimport { suspend, preload, clear } from 'suspend-react';\n\nvar threeTypes = /*#__PURE__*/Object.freeze({\n __proto__: null\n});\n\nconst catalogue = {};\nconst extend = objects => void Object.assign(catalogue, objects);\nfunction createRenderer(_roots, _getEventPriority) {\n function createInstance(type, {\n args = [],\n attach,\n ...props\n }, root) {\n let name = `${type[0].toUpperCase()}${type.slice(1)}`;\n let instance;\n if (type === 'primitive') {\n if (props.object === undefined) throw new Error(\"R3F: Primitives without 'object' are invalid!\");\n const object = props.object;\n instance = prepare(object, {\n type,\n root,\n attach,\n primitive: true\n });\n } else {\n const target = catalogue[name];\n if (!target) {\n throw new Error(`R3F: ${name} is not part of the THREE namespace! Did you forget to extend? See: https://docs.pmnd.rs/react-three-fiber/api/objects#using-3rd-party-objects-declaratively`);\n }\n\n // Throw if an object or literal was passed for args\n if (!Array.isArray(args)) throw new Error('R3F: The args prop must be an array!');\n\n // Instanciate new object, link it to the root\n // Append memoized props with args so it's not forgotten\n instance = prepare(new target(...args), {\n type,\n root,\n attach,\n // Save args in case we need to reconstruct later for HMR\n memoizedProps: {\n args\n }\n });\n }\n\n // Auto-attach geometries and materials\n if (instance.__r3f.attach === undefined) {\n if (instance instanceof THREE.BufferGeometry) instance.__r3f.attach = 'geometry';else if (instance instanceof THREE.Material) instance.__r3f.attach = 'material';\n }\n\n // It should NOT call onUpdate on object instanciation, because it hasn't been added to the\n // view yet. If the callback relies on references for instance, they won't be ready yet, this is\n // why it passes \"true\" here\n // There is no reason to apply props to injects\n if (name !== 'inject') applyProps$1(instance, props);\n return instance;\n }\n function appendChild(parentInstance, child) {\n let added = false;\n if (child) {\n var _child$__r3f, _parentInstance$__r3f;\n // The attach attribute implies that the object attaches itself on the parent\n if ((_child$__r3f = child.__r3f) != null && _child$__r3f.attach) {\n attach(parentInstance, child, child.__r3f.attach);\n } else if (child.isObject3D && parentInstance.isObject3D) {\n // add in the usual parent-child way\n parentInstance.add(child);\n added = true;\n }\n // This is for anything that used attach, and for non-Object3Ds that don't get attached to props;\n // that is, anything that's a child in React but not a child in the scenegraph.\n if (!added) (_parentInstance$__r3f = parentInstance.__r3f) == null ? void 0 : _parentInstance$__r3f.objects.push(child);\n if (!child.__r3f) prepare(child, {});\n child.__r3f.parent = parentInstance;\n updateInstance(child);\n invalidateInstance(child);\n }\n }\n function insertBefore(parentInstance, child, beforeChild) {\n let added = false;\n if (child) {\n var _child$__r3f2, _parentInstance$__r3f2;\n if ((_child$__r3f2 = child.__r3f) != null && _child$__r3f2.attach) {\n attach(parentInstance, child, child.__r3f.attach);\n } else if (child.isObject3D && parentInstance.isObject3D) {\n child.parent = parentInstance;\n child.dispatchEvent({\n type: 'added'\n });\n const restSiblings = parentInstance.children.filter(sibling => sibling !== child);\n const index = restSiblings.indexOf(beforeChild);\n parentInstance.children = [...restSiblings.slice(0, index), child, ...restSiblings.slice(index)];\n added = true;\n }\n if (!added) (_parentInstance$__r3f2 = parentInstance.__r3f) == null ? void 0 : _parentInstance$__r3f2.objects.push(child);\n if (!child.__r3f) prepare(child, {});\n child.__r3f.parent = parentInstance;\n updateInstance(child);\n invalidateInstance(child);\n }\n }\n function removeRecursive(array, parent, dispose = false) {\n if (array) [...array].forEach(child => removeChild(parent, child, dispose));\n }\n function removeChild(parentInstance, child, dispose) {\n if (child) {\n var _parentInstance$__r3f3, _child$__r3f3, _child$__r3f5;\n // Clear the parent reference\n if (child.__r3f) child.__r3f.parent = null;\n // Remove child from the parents objects\n if ((_parentInstance$__r3f3 = parentInstance.__r3f) != null && _parentInstance$__r3f3.objects) parentInstance.__r3f.objects = parentInstance.__r3f.objects.filter(x => x !== child);\n // Remove attachment\n if ((_child$__r3f3 = child.__r3f) != null && _child$__r3f3.attach) {\n detach(parentInstance, child, child.__r3f.attach);\n } else if (child.isObject3D && parentInstance.isObject3D) {\n var _child$__r3f4;\n parentInstance.remove(child);\n // Remove interactivity\n if ((_child$__r3f4 = child.__r3f) != null && _child$__r3f4.root) {\n removeInteractivity(child.__r3f.root, child);\n }\n }\n\n // Allow objects to bail out of recursive dispose altogether by passing dispose={null}\n // Never dispose of primitives because their state may be kept outside of React!\n // In order for an object to be able to dispose it has to have\n // - a dispose method,\n // - it cannot be a \n // - it cannot be a THREE.Scene, because three has broken it's own api\n //\n // Since disposal is recursive, we can check the optional dispose arg, which will be undefined\n // when the reconciler calls it, but then carry our own check recursively\n const isPrimitive = (_child$__r3f5 = child.__r3f) == null ? void 0 : _child$__r3f5.primitive;\n const shouldDispose = dispose === undefined ? child.dispose !== null && !isPrimitive : dispose;\n\n // Remove nested child objects. Primitives should not have objects and children that are\n // attached to them declaratively ...\n if (!isPrimitive) {\n var _child$__r3f6;\n removeRecursive((_child$__r3f6 = child.__r3f) == null ? void 0 : _child$__r3f6.objects, child, shouldDispose);\n removeRecursive(child.children, child, shouldDispose);\n }\n\n // Remove references\n delete child.__r3f;\n\n // Dispose item whenever the reconciler feels like it\n if (shouldDispose && child.dispose && child.type !== 'Scene') {\n unstable_scheduleCallback(unstable_IdlePriority, () => {\n try {\n child.dispose();\n } catch (e) {\n /* ... */\n }\n });\n }\n invalidateInstance(parentInstance);\n }\n }\n function switchInstance(instance, type, newProps, fiber) {\n var _instance$__r3f;\n const parent = (_instance$__r3f = instance.__r3f) == null ? void 0 : _instance$__r3f.parent;\n if (!parent) return;\n const newInstance = createInstance(type, newProps, instance.__r3f.root);\n\n // https://github.com/pmndrs/react-three-fiber/issues/1348\n // When args change the instance has to be re-constructed, which then\n // forces r3f to re-parent the children and non-scene objects\n if (instance.children) {\n for (const child of instance.children) {\n if (child.__r3f) appendChild(newInstance, child);\n }\n instance.children = instance.children.filter(child => !child.__r3f);\n }\n instance.__r3f.objects.forEach(child => appendChild(newInstance, child));\n instance.__r3f.objects = [];\n if (!instance.__r3f.autoRemovedBeforeAppend) {\n removeChild(parent, instance);\n }\n if (newInstance.parent) {\n newInstance.__r3f.autoRemovedBeforeAppend = true;\n }\n appendChild(parent, newInstance);\n\n // Re-bind event handlers\n if (newInstance.raycast && newInstance.__r3f.eventCount) {\n const rootState = newInstance.__r3f.root.getState();\n rootState.internal.interaction.push(newInstance);\n }\n [fiber, fiber.alternate].forEach(fiber => {\n if (fiber !== null) {\n fiber.stateNode = newInstance;\n if (fiber.ref) {\n if (typeof fiber.ref === 'function') fiber.ref(newInstance);else fiber.ref.current = newInstance;\n }\n }\n });\n }\n\n // Don't handle text instances, warn on undefined behavior\n const handleTextInstance = () => console.warn('Text is not allowed in the R3F tree! This could be stray whitespace or characters.');\n const reconciler = Reconciler({\n createInstance,\n removeChild,\n appendChild,\n appendInitialChild: appendChild,\n insertBefore,\n supportsMutation: true,\n isPrimaryRenderer: false,\n supportsPersistence: false,\n supportsHydration: false,\n noTimeout: -1,\n appendChildToContainer: (container, child) => {\n if (!child) return;\n\n // Don't append to unmounted container\n const scene = container.getState().scene;\n if (!scene.__r3f) return;\n\n // Link current root to the default scene\n scene.__r3f.root = container;\n appendChild(scene, child);\n },\n removeChildFromContainer: (container, child) => {\n if (!child) return;\n removeChild(container.getState().scene, child);\n },\n insertInContainerBefore: (container, child, beforeChild) => {\n if (!child || !beforeChild) return;\n\n // Don't append to unmounted container\n const scene = container.getState().scene;\n if (!scene.__r3f) return;\n insertBefore(scene, child, beforeChild);\n },\n getRootHostContext: () => null,\n getChildHostContext: parentHostContext => parentHostContext,\n finalizeInitialChildren(instance) {\n var _instance$__r3f2;\n const localState = (_instance$__r3f2 = instance == null ? void 0 : instance.__r3f) != null ? _instance$__r3f2 : {};\n // https://github.com/facebook/react/issues/20271\n // Returning true will trigger commitMount\n return Boolean(localState.handlers);\n },\n prepareUpdate(instance, _type, oldProps, newProps) {\n var _instance$__r3f3;\n const localState = (_instance$__r3f3 = instance == null ? void 0 : instance.__r3f) != null ? _instance$__r3f3 : {};\n\n // Create diff-sets\n if (localState.primitive && newProps.object && newProps.object !== instance) {\n return [true];\n } else {\n // This is a data object, let's extract critical information about it\n const {\n args: argsNew = [],\n children: cN,\n ...restNew\n } = newProps;\n const {\n args: argsOld = [],\n children: cO,\n ...restOld\n } = oldProps;\n\n // Throw if an object or literal was passed for args\n if (!Array.isArray(argsNew)) throw new Error('R3F: the args prop must be an array!');\n\n // If it has new props or arguments, then it needs to be re-instantiated\n if (argsNew.some((value, index) => value !== argsOld[index])) return [true];\n // Create a diff-set, flag if there are any changes\n const diff = diffProps(instance, restNew, restOld, true);\n if (diff.changes.length) return [false, diff];\n\n // Otherwise do not touch the instance\n return null;\n }\n },\n commitUpdate(instance, [reconstruct, diff], type, _oldProps, newProps, fiber) {\n // Reconstruct when args or instance,\n prepareForCommit: () => null,\n preparePortalMount: container => prepare(container.getState().scene),\n resetAfterCommit: () => {},\n shouldSetTextContent: () => false,\n clearContainer: () => false,\n hideInstance(instance) {\n var _instance$__r3f5;\n // Detach while the instance is hidden\n const {\n attach: type,\n parent\n } = (_instance$__r3f5 = instance.__r3f) != null ? _instance$__r3f5 : {};\n if (type && parent) detach(parent, instance, type);\n if (instance.isObject3D) instance.visible = false;\n invalidateInstance(instance);\n },\n unhideInstance(instance, props) {\n var _instance$__r3f6;\n // Re-attach when the instance is unhidden\n const {\n attach: type,\n parent\n } = (_instance$__r3f6 = instance.__r3f) != null ? _instance$__r3f6 : {};\n if (type && parent) attach(parent, instance, type);\n if (instance.isObject3D && props.visible == null || props.visible) instance.visible = true;\n invalidateInstance(instance);\n },\n createTextInstance: handleTextInstance,\n hideTextInstance: handleTextInstance,\n unhideTextInstance: handleTextInstance,\n // https://github.com/pmndrs/react-three-fiber/pull/2360#discussion_r916356874\n // @ts-ignore\n getCurrentEventPriority: () => _getEventPriority ? _getEventPriority() : DefaultEventPriority,\n beforeActiveInstanceBlur: () => {},\n afterActiveInstanceBlur: () => {},\n detachDeletedInstance: () => {},\n now: typeof performance !== 'undefined' && is.fun(performance.now) ? performance.now : is.fun(Date.now) ? Date.now : () => 0,\n // https://github.com/pmndrs/react-three-fiber/pull/2360#discussion_r920883503\n scheduleTimeout: is.fun(setTimeout) ? setTimeout : undefined,\n cancelTimeout: is.fun(clearTimeout) ? clearTimeout : undefined\n });\n return {\n reconciler,\n applyProps: applyProps$1\n };\n}\n\nvar _window$document, _window$navigator;\n/**\n * Returns `true` with correct TS type inference if an object has a configurable color space (since r152).\n */\nconst hasColorSpace = object => 'colorSpace' in object || 'outputColorSpace' in object;\n/**\n * The current THREE.ColorManagement instance, if present.\n */\nconst getColorManagement = () => {\n var _ColorManagement;\n return (_ColorManagement = catalogue.ColorManagement) != null ? _ColorManagement : null;\n};\nconst isOrthographicCamera = def => def && def.isOrthographicCamera;\nconst isRef = obj => obj && obj.hasOwnProperty('current');\n\n/**\n * An SSR-friendly useLayoutEffect.\n *\n * React currently throws a warning when using useLayoutEffect on the server.\n * To get around it, we can conditionally useEffect on the server (no-op) and\n * useLayoutEffect elsewhere.\n *\n * @see https://github.com/facebook/react/issues/14927\n */\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' && ((_window$document = window.document) != null && _window$document.createElement || ((_window$navigator = window.navigator) == null ? void 0 : _window$navigator.product) === 'ReactNative') ? React.useLayoutEffect : React.useEffect;\nfunction useMutableCallback(fn) {\n const ref = React.useRef(fn);\n useIsomorphicLayoutEffect(() => void (ref.current = fn), [fn]);\n return ref;\n}\nfunction Block({\n set\n}) {\n useIsomorphicLayoutEffect(() => {\n set(new Promise(() => null));\n return () => set(false);\n }, [set]);\n return null;\n}\nclass ErrorBoundary extends React.Component {\n constructor(...args) {\n super(...args);\n this.state = {\n error: false\n };\n }\n componentDidCatch(err) {\n this.props.set(err);\n }\n render() {\n return this.state.error ? null : this.props.children;\n }\n}\nErrorBoundary.getDerivedStateFromError = () => ({\n error: true\n});\nconst DEFAULT = '__default';\nconst DEFAULTS = new Map();\nconst isDiffSet = def => def && !!def.memoized && !!def.changes;\nfunction calculateDpr(dpr) {\n var _window$devicePixelRa;\n // Err on the side of progress by assuming 2x dpr if we can't detect it\n // This will happen in workers where window is defined but dpr isn't.\n const target = typeof window !== 'undefined' ? (_window$devicePixelRa = window.devicePixelRatio) != null ? _window$devicePixelRa : 2 : 1;\n return Array.isArray(dpr) ? Math.min(Math.max(dpr[0], target), dpr[1]) : dpr;\n}\n\n/**\n * Returns instance root state\n */\nconst getRootState = obj => {\n var _r3f;\n return (_r3f = obj.__r3f) == null ? void 0 : _r3f.root.getState();\n};\n// A collection of compare functions\nconst is = {\n obj: a => a === Object(a) && !is.arr(a) && typeof a !== 'function',\n fun: a => typeof a === 'function',\n str: a => typeof a === 'string',\n num: a => typeof a === 'number',\n boo: a => typeof a === 'boolean',\n und: a => a === void 0,\n arr: a => Array.isArray(a),\n equ(a, b, {\n arrays = 'shallow',\n objects = 'reference',\n strict = true\n } = {}) {\n // Wrong type or one of the two undefined, doesn't match\n if (typeof a !== typeof b || !!a !== !!b) return false;\n // Atomic, just compare a against b\n if (is.str(a) || is.num(a)) return a === b;\n const isObj = is.obj(a);\n if (isObj && objects === 'reference') return a === b;\n const isArr = is.arr(a);\n if (isArr && arrays === 'reference') return a === b;\n // Array or Object, shallow compare first to see if it's a match\n if ((isArr || isObj) && a === b) return true;\n // Last resort, go through keys\n let i;\n // Check if a has all the keys of b\n for (i in a) if (!(i in b)) return false;\n // Check if values between keys match\n if (isObj && arrays === 'shallow' && objects === 'shallow') {\n for (i in strict ? b : a) if (!is.equ(a[i], b[i], {\n strict,\n objects: 'reference'\n })) return false;\n } else {\n for (i in strict ? b : a) if (a[i] !== b[i]) return false;\n }\n // If i is undefined\n if (is.und(i)) {\n // If both arrays are empty we consider them equal\n if (isArr && a.length === 0 && b.length === 0) return true;\n // If both objects are empty we consider them equal\n if (isObj && Object.keys(a).length === 0 && Object.keys(b).length === 0) return true;\n // Otherwise match them by value\n if (a !== b) return false;\n }\n return true;\n }\n};\n\n// Collects nodes and materials from a THREE.Object3D\nfunction buildGraph(object) {\n const data = {\n nodes: {},\n materials: {}\n };\n if (object) {\n object.traverse(obj => {\n if (obj.name) data.nodes[obj.name] = obj;\n if (obj.material && !data.materials[obj.material.name]) data.materials[obj.material.name] = obj.material;\n });\n }\n return data;\n}\n\n// Disposes an object and all its properties\nfunction dispose(obj) {\n if (obj.dispose && obj.type !== 'Scene') obj.dispose();\n for (const p in obj) {\n p.dispose == null ? void 0 : p.dispose();\n delete obj[p];\n }\n}\n\n// Each object in the scene carries a small LocalState descriptor\nfunction prepare(object, state) {\n const instance = object;\n instance.__r3f = {\n type: '',\n root: null,\n previousAttach: null,\n memoizedProps: {},\n eventCount: 0,\n handlers: {},\n objects: [],\n parent: null,\n ...state\n };\n return object;\n}\nfunction resolve(instance, key) {\n let target = instance;\n if (key.includes('-')) {\n const entries = key.split('-');\n const last = entries.pop();\n target = entries.reduce((acc, key) => acc[key], instance);\n return {\n target,\n key: last\n };\n } else return {\n target,\n key\n };\n}\n\n// Checks if a dash-cased string ends with an integer\nconst INDEX_REGEX = /-\\d+$/;\nfunction attach(parent, child, type) {\n if (is.str(type)) {\n // If attaching into an array (foo-0), create one\n if (INDEX_REGEX.test(type)) {\n const root = type.replace(INDEX_REGEX, '');\n const {\n target,\n key\n } = resolve(parent, root);\n if (!Array.isArray(target[key])) target[key] = [];\n }\n const {\n target,\n key\n } = resolve(parent, type);\n child.__r3f.previousAttach = target[key];\n target[key] = child;\n } else child.__r3f.previousAttach = type(parent, child);\n}\nfunction detach(parent, child, type) {\n var _child$__r3f, _child$__r3f2;\n if (is.str(type)) {\n const {\n target,\n key\n } = resolve(parent, type);\n const previous = child.__r3f.previousAttach;\n // When the previous value was undefined, it means the value was never set to begin with\n if (previous === undefined) delete target[key];\n // Otherwise set the previous value\n else target[key] = previous;\n } else (_child$__r3f = child.__r3f) == null ? void 0 : _child$__r3f.previousAttach == null ? void 0 : _child$__r3f.previousAttach(parent, child);\n (_child$__r3f2 = child.__r3f) == null ? true : delete _child$__r3f2.previousAttach;\n}\n\n// This function prepares a set of changes to be applied to the instance\nfunction diffProps(instance, {\n children: cN,\n key: kN,\n ref: rN,\n ...props\n}, {\n children: cP,\n key: kP,\n ref: rP,\n ...previous\n} = {}, remove = false) {\n var _instance$__r3f;\n const localState = (_instance$__r3f = instance == null ? void 0 : instance.__r3f) != null ? _instance$__r3f : {};\n const entries = Object.entries(props);\n const changes = [];\n\n // Catch removed props, prepend them so they can be reset or removed\n if (remove) {\n const previousKeys = Object.keys(previous);\n for (let i = 0; i < previousKeys.length; i++) {\n if (!props.hasOwnProperty(previousKeys[i])) entries.unshift([previousKeys[i], DEFAULT + 'remove']);\n }\n }\n entries.forEach(([key, value]) => {\n var _instance$__r3f2;\n // Bail out on primitive object\n if ((_instance$__r3f2 = instance.__r3f) != null && _instance$__r3f2.primitive && key === 'object') return;\n // When props match bail out\n if (is.equ(value, previous[key])) return;\n // Collect handlers and bail out\n if (/^on(Pointer|Click|DoubleClick|ContextMenu|Wheel)/.test(key)) return changes.push([key, value, true, []]);\n // Split dashed props\n let entries = [];\n if (key.includes('-')) entries = key.split('-');\n changes.push([key, value, false, entries]);\n\n // Reset pierced props\n for (const prop in props) {\n const value = props[prop];\n if (prop.startsWith(`${key}-`)) changes.push([prop, value, false, prop.split('-')]);\n }\n });\n const memoized = {\n ...props\n };\n if (localState.memoizedProps && localState.memoizedProps.args) memoized.args = localState.memoizedProps.args;\n if (localState.memoizedProps && localState.memoizedProps.attach) memoized.attach = localState.memoizedProps.attach;\n return {\n memoized,\n changes\n };\n}\n\n// This function applies a set of changes to the instance\nfunction applyProps$1(instance, data) {\n var _instance$__r3f3, _root$getState, _instance$__r3f4;\n // Filter equals, events and reserved props\n const localState = (_instance$__r3f3 = instance.__r3f) != null ? _instance$__r3f3 : {};\n const root = localState.root;\n const rootState = (_root$getState = root == null ? void 0 : root.getState == null ? void 0 : root.getState()) != null ? _root$getState : {};\n const {\n memoized,\n changes\n } = isDiffSet(data) ? data : diffProps(instance, data);\n const prevHandlers = localState.eventCount;\n\n // Prepare memoized props\n if (instance.__r3f) instance.__r3f.memoizedProps = memoized;\n for (let i = 0; i < changes.length; i++) {\n let [key, value, isEvent, keys] = changes[i];\n\n // Alias (output)encoding => (output)colorSpace (since r152)\n // https://github.com/pmndrs/react-three-fiber/pull/2829\n if (hasColorSpace(instance)) {\n const sRGBEncoding = 3001;\n const SRGBColorSpace = 'srgb';\n const LinearSRGBColorSpace = 'srgb-linear';\n if (key === 'encoding') {\n key = 'colorSpace';\n value = value === sRGBEncoding ? SRGBColorSpace : LinearSRGBColorSpace;\n } else if (key === 'outputEncoding') {\n key = 'outputColorSpace';\n value = value === sRGBEncoding ? SRGBColorSpace : LinearSRGBColorSpace;\n }\n }\n let currentInstance = instance;\n let targetProp = currentInstance[key];\n\n // Revolve dashed props\n if (keys.length) {\n targetProp = keys.reduce((acc, key) => acc[key], instance);\n // If the target is atomic, it forces us to switch the root\n if (!(targetProp && targetProp.set)) {\n const [name, ...reverseEntries] = keys.reverse();\n currentInstance = reverseEntries.reverse().reduce((acc, key) => acc[key], instance);\n key = name;\n }\n }\n\n // https://github.com/mrdoob/three.js/issues/21209\n // HMR/fast-refresh relies on the ability to cancel out props, but threejs\n // has no means to do this. Hence we curate a small collection of value-classes\n // with their respective constructor/set arguments\n // For removed props, try to set default values, if possible\n if (value === DEFAULT + 'remove') {\n if (currentInstance.constructor) {\n // create a blank slate of the instance and copy the particular parameter.\n let ctor = DEFAULTS.get(currentInstance.constructor);\n if (!ctor) {\n // @ts-ignore\n ctor = new currentInstance.constructor();\n DEFAULTS.set(currentInstance.constructor, ctor);\n }\n value = ctor[key];\n } else {\n // instance does not have constructor, just set it to 0\n value = 0;\n }\n }\n\n // Deal with pointer events ...\n if (isEvent) {\n if (value) localState.handlers[key] = value;else delete localState.handlers[key];\n localState.eventCount = Object.keys(localState.handlers).length;\n }\n // Special treatment for objects with support for set/copy, and layers\n else if (targetProp && targetProp.set && (targetProp.copy || targetProp instanceof THREE.Layers)) {\n // If value is an array\n if (Array.isArray(value)) {\n if (targetProp.fromArray) targetProp.fromArray(value);else targetProp.set(...value);\n }\n // Test again target.copy(class) next ...\n else if (targetProp.copy && value && value.constructor && targetProp.constructor === value.constructor) {\n targetProp.copy(value);\n }\n // If nothing else fits, just set the single value, ignore undefined\n // https://github.com/pmndrs/react-three-fiber/issues/274\n else if (value !== undefined) {\n const isColor = targetProp instanceof THREE.Color;\n // Allow setting array scalars\n if (!isColor && targetProp.setScalar) targetProp.setScalar(value);\n // Layers have no copy function, we must therefore copy the mask property\n else if (targetProp instanceof THREE.Layers && value instanceof THREE.Layers) targetProp.mask = value.mask;\n // Otherwise just set ...\n else targetProp.set(value);\n // For versions of three which don't support THREE.ColorManagement,\n // Auto-convert sRGB colors\n // https://github.com/pmndrs/react-three-fiber/issues/344\n if (!getColorManagement() && !rootState.linear && isColor) targetProp.convertSRGBToLinear();\n }\n // Else, just overwrite the value\n } else {\n currentInstance[key] = value;\n\n // Auto-convert sRGB textures, for now ...\n // https://github.com/pmndrs/react-three-fiber/issues/344\n if (currentInstance[key] instanceof THREE.Texture &&\n // sRGB textures must be RGBA8 since r137 https://github.com/mrdoob/three.js/pull/23129\n currentInstance[key].format === THREE.RGBAFormat && currentInstance[key].type === THREE.UnsignedByteType) {\n const texture = currentInstance[key];\n if (hasColorSpace(texture) && hasColorSpace(rootState.gl)) texture.colorSpace = rootState.gl.outputColorSpace;else texture.encoding = rootState.gl.outputEncoding;\n }\n }\n invalidateInstance(instance);\n }\n if (localState.parent && rootState.internal && instance.raycast && prevHandlers !== localState.eventCount) {\n // Pre-emptively remove the instance from the interaction manager\n const index = rootState.internal.interaction.indexOf(instance);\n if (index > -1) rootState.internal.interaction.splice(index, 1);\n // Add the instance to the interaction manager only when it has handlers\n if (localState.eventCount) rootState.internal.interaction.push(instance);\n }\n\n // Call the update lifecycle when it is being updated, but only when it is part of the scene.\n // Skip updates to the `onUpdate` prop itself\n const isCircular = changes.length === 1 && changes[0][0] === 'onUpdate';\n if (!isCircular && changes.length && (_instance$__r3f4 = instance.__r3f) != null && _instance$__r3f4.parent) updateInstance(instance);\n return instance;\n}\nfunction invalidateInstance(instance) {\n var _instance$__r3f5, _instance$__r3f5$root;\n const state = (_instance$__r3f5 = instance.__r3f) == null ? void 0 : (_instance$__r3f5$root = _instance$__r3f5.root) == null ? void 0 : _instance$__r3f5$root.getState == null ? void 0 : _instance$__r3f5$root.getState();\n if (state && state.internal.frames === 0) state.invalidate();\n}\nfunction updateInstance(instance) {\n instance.onUpdate == null ? void 0 : instance.onUpdate(instance);\n}\nfunction updateCamera(camera, size) {\n // https://github.com/pmndrs/react-three-fiber/issues/92\n // Do not mess with the camera if it belongs to the user\n if (!camera.manual) {\n if (isOrthographicCamera(camera)) {\n camera.left = size.width / -2;\n camera.right = size.width / 2;\n camera.top = size.height / 2;\n camera.bottom = size.height / -2;\n } else {\n camera.aspect = size.width / size.height;\n }\n camera.updateProjectionMatrix();\n // https://github.com/pmndrs/react-three-fiber/issues/178\n // Update matrix world since the renderer is a frame late\n camera.updateMatrixWorld();\n }\n}\n\nfunction makeId(event) {\n return (event.eventObject || event.object).uuid + '/' + event.index + event.instanceId;\n}\n\n// https://github.com/facebook/react/tree/main/packages/react-reconciler#getcurrenteventpriority\n// Gives React a clue as to how import the current interaction is\nfunction getEventPriority() {\n var _globalScope$event;\n // Get a handle to the current global scope in window and worker contexts if able\n // https://github.com/pmndrs/react-three-fiber/pull/2493\n const globalScope = typeof self !== 'undefined' && self || typeof window !== 'undefined' && window;\n if (!globalScope) return DefaultEventPriority;\n const name = (_globalScope$event = globalScope.event) == null ? void 0 : _globalScope$event.type;\n switch (name) {\n case 'click':\n case 'contextmenu':\n case 'dblclick':\n case 'pointercancel':\n case 'pointerdown':\n case 'pointerup':\n return DiscreteEventPriority;\n case 'pointermove':\n case 'pointerout':\n case 'pointerover':\n case 'pointerenter':\n case 'pointerleave':\n case 'wheel':\n return ContinuousEventPriority;\n default:\n return DefaultEventPriority;\n }\n}\n\n/**\n * Release pointer captures.\n * This is called by releasePointerCapture in the API, and when an object is removed.\n */\nfunction releaseInternalPointerCapture(capturedMap, obj, captures, pointerId) {\n const captureData = captures.get(obj);\n if (captureData) {\n captures.delete(obj);\n // If this was the last capturing object for this pointer\n if (captures.size === 0) {\n capturedMap.delete(pointerId);\n captureData.target.releasePointerCapture(pointerId);\n }\n }\n}\nfunction removeInteractivity(store, object) {\n const {\n internal\n } = store.getState();\n // Removes every trace of an object from the data store\n internal.interaction = internal.interaction.filter(o => o !== object);\n internal.initialHits = internal.initialHits.filter(o => o !== object);\n internal.hovered.forEach((value, key) => {\n if (value.eventObject === object || value.object === object) {\n // Clear out intersects, they are outdated by now\n internal.hovered.delete(key);\n }\n });\n internal.capturedMap.forEach((captures, pointerId) => {\n releaseInternalPointerCapture(internal.capturedMap, object, captures, pointerId);\n });\n}\nfunction createEvents(store) {\n /** Calculates delta */\n function calculateDistance(event) {\n const {\n internal\n } = store.getState();\n const dx = event.offsetX - internal.initialClick[0];\n const dy = event.offsetY - internal.initialClick[1];\n return Math.round(Math.sqrt(dx * dx + dy * dy));\n }\n\n /** Returns true if an instance has a valid pointer-event registered, this excludes scroll, clicks etc */\n function filterPointerEvents(objects) {\n return objects.filter(obj => ['Move', 'Over', 'Enter', 'Out', 'Leave'].some(name => {\n var _r3f;\n return (_r3f = obj.__r3f) == null ? void 0 : _r3f.handlers['onPointer' + name];\n }));\n }\n function intersect(event, filter) {\n const state = store.getState();\n const duplicates = new Set();\n const intersections = [];\n // Allow callers to eliminate event objects\n const eventsObjects = filter ? filter(state.internal.interaction) : state.internal.interaction;\n // Reset all raycaster cameras to undefined\n for (let i = 0; i < eventsObjects.length; i++) {\n const state = getRootState(eventsObjects[i]);\n if (state) {\n state.raycaster.camera = undefined;\n }\n }\n if (!state.previousRoot) {\n // Make sure root-level pointer and ray are set up\n state.events.compute == null ? void 0 : state.events.compute(event, state);\n }\n function handleRaycast(obj) {\n const state = getRootState(obj);\n // Skip event handling when noEvents is set, or when the raycasters camera is null\n if (!state || !state.events.enabled || state.raycaster.camera === null) return [];\n\n // When the camera is undefined we have to call the event layers update function\n if (state.raycaster.camera === undefined) {\n var _state$previousRoot;\n state.events.compute == null ? void 0 : state.events.compute(event, state, (_state$previousRoot = state.previousRoot) == null ? void 0 : _state$previousRoot.getState());\n // If the camera is still undefined we have to skip this layer entirely\n if (state.raycaster.camera === undefined) state.raycaster.camera = null;\n }\n\n // Intersect object by object\n return state.raycaster.camera ? state.raycaster.intersectObject(obj, true) : [];\n }\n\n // Collect events\n let hits = eventsObjects\n // Intersect objects\n .flatMap(handleRaycast)\n // Sort by event priority and distance\n .sort((a, b) => {\n const aState = getRootState(a.object);\n const bState = getRootState(b.object);\n if (!aState || !bState) return a.distance - b.distance;\n return bState.events.priority - aState.events.priority || a.distance - b.distance;\n })\n // Filter out duplicates\n .filter(item => {\n const id = makeId(item);\n if (duplicates.has(id)) return false;\n duplicates.add(id);\n return true;\n });\n\n // https://github.com/mrdoob/three.js/issues/16031\n // Allow custom userland intersect sort order, this likely only makes sense on the root filter\n if (state.events.filter) hits = state.events.filter(hits, state);\n\n // Bubble up the events, find the event source (eventObject)\n for (const hit of hits) {\n let eventObject = hit.object;\n // Bubble event up\n while (eventObject) {\n var _r3f2;\n if ((_r3f2 = eventObject.__r3f) != null && _r3f2.eventCount) intersections.push({\n ...hit,\n eventObject\n });\n eventObject = eventObject.parent;\n }\n }\n\n // If the interaction is captured, make all capturing targets part of the intersect.\n if ('pointerId' in event && state.internal.capturedMap.has(event.pointerId)) {\n for (let captureData of state.internal.capturedMap.get(event.pointerId).values()) {\n if (!duplicates.has(makeId(captureData.intersection))) intersections.push(captureData.intersection);\n }\n }\n return intersections;\n }\n\n /** Handles intersections by forwarding them to handlers */\n function handleIntersects(intersections, event, delta, callback) {\n const rootState = store.getState();\n\n // If anything has been found, forward it to the event listeners\n if (intersections.length) {\n const localState = {\n stopped: false\n };\n for (const hit of intersections) {\n const state = getRootState(hit.object) || rootState;\n const {\n raycaster,\n pointer,\n camera,\n internal\n } = state;\n const unprojectedPoint = new THREE.Vector3(pointer.x, pointer.y, 0).unproject(camera);\n const hasPointerCapture = id => {\n var _internal$capturedMap, _internal$capturedMap2;\n return (_internal$capturedMap = (_internal$capturedMap2 = internal.capturedMap.get(id)) == null ? void 0 : _internal$capturedMap2.has(hit.eventObject)) != null ? _internal$capturedMap : false;\n };\n const setPointerCapture = id => {\n const captureData = {\n intersection: hit,\n target: event.target\n };\n if (internal.capturedMap.has(id)) {\n // if the pointerId was previously captured, we add the hit to the\n // event capturedMap.\n internal.capturedMap.get(id).set(hit.eventObject, captureData);\n } else {\n // if the pointerId was not previously captured, we create a map\n // containing the hitObject, and the hit. hitObject is used for\n // faster access.\n internal.capturedMap.set(id, new Map([[hit.eventObject, captureData]]));\n }\n event.target.setPointerCapture(id);\n };\n const releasePointerCapture = id => {\n const captures = internal.capturedMap.get(id);\n if (captures) {\n releaseInternalPointerCapture(internal.capturedMap, hit.eventObject, captures, id);\n }\n };\n\n // Add native event props\n let extractEventProps = {};\n // This iterates over the event's properties including the inherited ones. Native PointerEvents have most of their props as getters which are inherited, but polyfilled PointerEvents have them all as their own properties (i.e. not inherited). We can't use Object.keys() or Object.entries() as they only return \"own\" properties; nor Object.getPrototypeOf(event) as that *doesn't* return \"own\" properties, only inherited ones.\n for (let prop in event) {\n let property = event[prop];\n // Only copy over atomics, leave functions alone as these should be\n // called as event.nativeEvent.fn()\n if (typeof property !== 'function') extractEventProps[prop] = property;\n }\n let raycastEvent = {\n ...hit,\n ...extractEventProps,\n pointer,\n intersections,\n stopped: localState.stopped,\n delta,\n unprojectedPoint,\n ray: raycaster.ray,\n camera: camera,\n // Hijack stopPropagation, which just sets a flag\n stopPropagation() {\n // https://github.com/pmndrs/react-three-fiber/issues/596\n // Events are not allowed to stop propagation if the pointer has been captured\n const capturesForPointer = 'pointerId' in event && internal.capturedMap.get(event.pointerId);\n\n // We only authorize stopPropagation...\n if (\n // ...if this pointer hasn't been captured\n !capturesForPointer ||\n // ... or if the hit object is capturing the pointer\n capturesForPointer.has(hit.eventObject)) {\n raycastEvent.stopped = localState.stopped = true;\n // Propagation is stopped, remove all other hover records\n // An event handler is only allowed to flush other handlers if it is hovered itself\n if (internal.hovered.size && Array.from(internal.hovered.values()).find(i => i.eventObject === hit.eventObject)) {\n // Objects cannot flush out higher up objects that have already caught the event\n const higher = intersections.slice(0, intersections.indexOf(hit));\n cancelPointer([...higher, hit]);\n }\n }\n },\n // there should be a distinction between target and currentTarget\n target: {\n hasPointerCapture,\n setPointerCapture,\n releasePointerCapture\n },\n currentTarget: {\n hasPointerCapture,\n setPointerCapture,\n releasePointerCapture\n },\n nativeEvent: event\n };\n\n // Call subscribers\n callback(raycastEvent);\n // Event bubbling may be interrupted by stopPropagation\n if (localState.stopped === true) break;\n }\n }\n return intersections;\n }\n function cancelPointer(intersections) {\n const {\n internal\n } = store.getState();\n for (const hoveredObj of internal.hovered.values()) {\n // When no objects were hit or the the hovered object wasn't found underneath the cursor\n // we call onPointerOut and delete the object from the hovered-elements map\n if (!intersections.length || !intersections.find(hit => hit.object === hoveredObj.object && hit.index === hoveredObj.index && hit.instanceId === hoveredObj.instanceId)) {\n const eventObject = hoveredObj.eventObject;\n const instance = eventObject.__r3f;\n const handlers = instance == null ? void 0 : instance.handlers;\n internal.hovered.delete(makeId(hoveredObj));\n if (instance != null && instance.eventCount) {\n // Clear out intersects, they are outdated by now\n const data = {\n ...hoveredObj,\n intersections\n };\n handlers.onPointerOut == null ? void 0 : handlers.onPointerOut(data);\n handlers.onPointerLeave == null ? void 0 : handlers.onPointerLeave(data);\n }\n }\n }\n }\n function pointerMissed(event, objects) {\n for (let i = 0; i < objects.length; i++) {\n const instance = objects[i].__r3f;\n instance == null ? void 0 : instance.handlers.onPointerMissed == null ? void 0 : instance.handlers.onPointerMissed(event);\n }\n }\n function handlePointer(name) {\n // Deal with cancelation\n switch (name) {\n case 'onPointerLeave':\n case 'onPointerCancel':\n return () => cancelPointer([]);\n case 'onLostPointerCapture':\n return event => {\n const {\n internal\n } = store.getState();\n if ('pointerId' in event && internal.capturedMap.has(event.pointerId)) {\n // If the object event interface had onLostPointerCapture, we'd call it here on every\n // object that's getting removed. We call it on the next frame because onLostPointerCapture\n // fires before onPointerUp. Otherwise pointerUp would never be called if the event didn't\n // happen in the object it originated from, leaving components in a in-between state.\n requestAnimationFrame(() => {\n // Only release if pointer-up didn't do it already\n if (internal.capturedMap.has(event.pointerId)) {\n internal.capturedMap.delete(event.pointerId);\n cancelPointer([]);\n }\n });\n }\n };\n }\n\n // Any other pointer goes here ...\n return function handleEvent(event) {\n const {\n onPointerMissed,\n internal\n } = store.getState();\n\n // prepareRay(event)\n internal.lastEvent.current = event;\n\n // Get fresh intersects\n const isPointerMove = name === 'onPointerMove';\n const isClickEvent = name === 'onClick' || name === 'onContextMenu' || name === 'onDoubleClick';\n const filter = isPointerMove ? filterPointerEvents : undefined;\n const hits = intersect(event, filter);\n const delta = isClickEvent ? calculateDistance(event) : 0;\n\n // Save initial coordinates on pointer-down\n if (name === 'onPointerDown') {\n internal.initialClick = [event.offsetX, event.offsetY];\n internal.initialHits = hits.map(hit => hit.eventObject);\n }\n\n // If a click yields no results, pass it back to the user as a miss\n // Missed events have to come first in order to establish user-land side-effect clean up\n if (isClickEvent && !hits.length) {\n if (delta <= 2) {\n pointerMissed(event, internal.interaction);\n if (onPointerMissed) onPointerMissed(event);\n }\n }\n // Take care of unhover\n if (isPointerMove) cancelPointer(hits);\n function onIntersect(data) {\n const eventObject = data.eventObject;\n const instance = eventObject.__r3f;\n const handlers = instance == null ? void 0 : instance.handlers;\n\n // Check presence of handlers\n if (!(instance != null && instance.eventCount)) return;\n\n /*\n MAYBE TODO, DELETE IF NOT: \n Check if the object is captured, captured events should not have intersects running in parallel\n But wouldn't it be better to just replace capturedMap with a single entry?\n Also, are we OK with straight up making picking up multiple objects impossible?\n \n const pointerId = (data as ThreeEvent).pointerId \n if (pointerId !== undefined) {\n const capturedMeshSet = internal.capturedMap.get(pointerId)\n if (capturedMeshSet) {\n const captured = capturedMeshSet.get(eventObject)\n if (captured && captured.localState.stopped) return\n }\n }*/\n\n if (isPointerMove) {\n // Move event ...\n if (handlers.onPointerOver || handlers.onPointerEnter || handlers.onPointerOut || handlers.onPointerLeave) {\n // When enter or out is present take care of hover-state\n const id = makeId(data);\n const hoveredItem = internal.hovered.get(id);\n if (!hoveredItem) {\n // If the object wasn't previously hovered, book it and call its handler\n internal.hovered.set(id, data);\n handlers.onPointerOver == null ? void 0 : handlers.onPointerOver(data);\n handlers.onPointerEnter == null ? void 0 : handlers.onPointerEnter(data);\n } else if (hoveredItem.stopped) {\n // If the object was previously hovered and stopped, we shouldn't allow other items to proceed\n data.stopPropagation();\n }\n }\n // Call mouse move\n handlers.onPointerMove == null ? void 0 : handlers.onPointerMove(data);\n } else {\n // All other events ...\n const handler = handlers[name];\n if (handler) {\n // Forward all events back to their respective handlers with the exception of click events,\n // which must use the initial target\n if (!isClickEvent || internal.initialHits.includes(eventObject)) {\n // Missed events have to come first\n pointerMissed(event, internal.interaction.filter(object => !internal.initialHits.includes(object)));\n // Now call the handler\n handler(data);\n }\n } else {\n // Trigger onPointerMissed on all elements that have pointer over/out handlers, but not click and weren't hit\n if (isClickEvent && internal.initialHits.includes(eventObject)) {\n pointerMissed(event, internal.interaction.filter(object => !internal.initialHits.includes(object)));\n }\n }\n }\n }\n handleIntersects(hits, event, delta, onIntersect);\n };\n }\n return {\n handlePointer\n };\n}\n\n// Keys that shouldn't be copied between R3F stores\nconst privateKeys = ['set', 'get', 'setSize', 'setFrameloop', 'setDpr', 'events', 'invalidate', 'advance', 'size', 'viewport'];\nconst isRenderer = def => !!(def != null && def.render);\nconst context = /*#__PURE__*/React.createContext(null);\nconst createStore = (invalidate, advance) => {\n const rootState = create((set, get) => {\n const position = new THREE.Vector3();\n const defaultTarget = new THREE.Vector3();\n const tempTarget = new THREE.Vector3();\n function getCurrentViewport(camera = get().camera, target = defaultTarget, size = get().size) {\n const {\n width,\n height,\n top,\n left\n } = size;\n const aspect = width / height;\n if (target instanceof THREE.Vector3) tempTarget.copy(target);else tempTarget.set(...target);\n const distance = camera.getWorldPosition(position).distanceTo(tempTarget);\n if (isOrthographicCamera(camera)) {\n return {\n width: width / camera.zoom,\n height: height / camera.zoom,\n top,\n left,\n factor: 1,\n distance,\n aspect\n };\n } else {\n const fov = camera.fov * Math.PI / 180; // convert vertical fov to radians\n const h = 2 * Math.tan(fov / 2) * distance; // visible height\n const w = h * (width / height);\n return {\n width: w,\n height: h,\n top,\n left,\n factor: width / w,\n distance,\n aspect\n };\n }\n }\n let performanceTimeout = undefined;\n const setPerformanceCurrent = current => set(state => ({\n performance: {\n ...state.performance,\n current\n }\n }));\n const pointer = new THREE.Vector2();\n const rootState = {\n set,\n get,\n // Mock objects that have to be configured\n gl: null,\n camera: null,\n raycaster: null,\n events: {\n priority: 1,\n enabled: true,\n connected: false\n },\n xr: null,\n scene: null,\n invalidate: (frames = 1) => invalidate(get(), frames),\n advance: (timestamp, runGlobalEffects) => advance(timestamp, runGlobalEffects, get()),\n legacy: false,\n linear: false,\n flat: false,\n controls: null,\n clock: new THREE.Clock(),\n pointer,\n mouse: pointer,\n frameloop: 'always',\n onPointerMissed: undefined,\n performance: {\n current: 1,\n min: 0.5,\n max: 1,\n debounce: 200,\n regress: () => {\n const state = get();\n // Clear timeout\n if (performanceTimeout) clearTimeout(performanceTimeout);\n // Set lower bound performance\n if (state.performance.current !== state.performance.min) setPerformanceCurrent(state.performance.min);\n // Go back to upper bound performance after a while unless something regresses meanwhile\n performanceTimeout = setTimeout(() => setPerformanceCurrent(get().performance.max), state.performance.debounce);\n }\n },\n size: {\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n updateStyle: false\n },\n viewport: {\n initialDpr: 0,\n dpr: 0,\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n aspect: 0,\n distance: 0,\n factor: 0,\n getCurrentViewport\n },\n setEvents: events => set(state => ({\n ...state,\n events: {\n ...state.events,\n ...events\n }\n })),\n setSize: (width, height, updateStyle, top, left) => {\n const camera = get().camera;\n const size = {\n width,\n height,\n top: top || 0,\n left: left || 0,\n updateStyle\n };\n set(state => ({\n size,\n viewport: {\n ...state.viewport,\n ...getCurrentViewport(camera, defaultTarget, size)\n }\n }));\n },\n setDpr: dpr => set(state => {\n const resolved = calculateDpr(dpr);\n return {\n viewport: {\n ...state.viewport,\n dpr: resolved,\n initialDpr: state.viewport.initialDpr || resolved\n }\n };\n }),\n setFrameloop: (frameloop = 'always') => {\n const clock = get().clock;\n\n // if frameloop === \"never\" clock.elapsedTime is updated using advance(timestamp)\n clock.stop();\n clock.elapsedTime = 0;\n if (frameloop !== 'never') {\n clock.start();\n clock.elapsedTime = 0;\n }\n set(() => ({\n frameloop\n }));\n },\n previousRoot: undefined,\n internal: {\n active: false,\n priority: 0,\n frames: 0,\n lastEvent: /*#__PURE__*/React.createRef(),\n interaction: [],\n hovered: new Map(),\n subscribers: [],\n initialClick: [0, 0],\n initialHits: [],\n capturedMap: new Map(),\n subscribe: (ref, priority, store) => {\n const internal = get().internal;\n // If this subscription was given a priority, it takes rendering into its own hands\n // For that reason we switch off automatic rendering and increase the manual flag\n // As long as this flag is positive there can be no internal rendering at all\n // because there could be multiple render subscriptions\n internal.priority = internal.priority + (priority > 0 ? 1 : 0);\n internal.subscribers.push({\n ref,\n priority,\n store\n });\n // Register subscriber and sort layers from lowest to highest, meaning,\n // highest priority renders last (on top of the other frames)\n internal.subscribers = internal.subscribers.sort((a, b) => a.priority - b.priority);\n return () => {\n const internal = get().internal;\n if (internal != null && internal.subscribers) {\n // Decrease manual flag if this subscription had a priority\n internal.priority = internal.priority - (priority > 0 ? 1 : 0);\n // Remove subscriber from list\n internal.subscribers = internal.subscribers.filter(s => s.ref !== ref);\n }\n };\n }\n }\n };\n return rootState;\n });\n const state = rootState.getState();\n let oldSize = state.size;\n let oldDpr = state.viewport.dpr;\n let oldCamera = state.camera;\n rootState.subscribe(() => {\n const {\n camera,\n size,\n viewport,\n gl,\n set\n } = rootState.getState();\n\n // Resize camera and renderer on changes to size and pixelratio\n if (size !== oldSize || viewport.dpr !== oldDpr) {\n var _size$updateStyle;\n oldSize = size;\n oldDpr = viewport.dpr;\n // Update camera & renderer\n updateCamera(camera, size);\n gl.setPixelRatio(viewport.dpr);\n const updateStyle = (_size$updateStyle = size.updateStyle) != null ? _size$updateStyle : typeof HTMLCanvasElement !== 'undefined' && gl.domElement instanceof HTMLCanvasElement;\n gl.setSize(size.width, size.height, updateStyle);\n }\n\n // Update viewport once the camera changes\n if (camera !== oldCamera) {\n oldCamera = camera;\n // Update viewport\n set(state => ({\n viewport: {\n ...state.viewport,\n ...state.viewport.getCurrentViewport(camera)\n }\n }));\n }\n });\n\n // Invalidate on any change\n rootState.subscribe(state => invalidate(state));\n\n // Return root state\n return rootState;\n};\n\nfunction createSubs(callback, subs) {\n const sub = {\n callback\n };\n subs.add(sub);\n return () => void subs.delete(sub);\n}\nlet i;\nlet globalEffects = new Set();\nlet globalAfterEffects = new Set();\nlet globalTailEffects = new Set();\n\n/**\n * Adds a global render callback which is called each frame.\n * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#addEffect\n */\nconst addEffect = callback => createSubs(callback, globalEffects);\n\n/**\n * Adds a global after-render callback which is called each frame.\n * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#addAfterEffect\n */\nconst addAfterEffect = callback => createSubs(callback, globalAfterEffects);\n\n/**\n * Adds a global callback which is called when rendering stops.\n * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#addTail\n */\nconst addTail = callback => createSubs(callback, globalTailEffects);\nfunction run(effects, timestamp) {\n if (!effects.size) return;\n for (const {\n callback\n } of effects.values()) {\n callback(timestamp);\n }\n}\nfunction flushGlobalEffects(type, timestamp) {\n switch (type) {\n case 'before':\n return run(globalEffects, timestamp);\n case 'after':\n return run(globalAfterEffects, timestamp);\n case 'tail':\n return run(globalTailEffects, timestamp);\n }\n}\nlet subscribers;\nlet subscription;\nfunction render$1(timestamp, state, frame) {\n // Run local effects\n let delta = state.clock.getDelta();\n // In frameloop='never' mode, clock times are updated using the provided timestamp\n if (state.frameloop === 'never' && typeof timestamp === 'number') {\n delta = timestamp - state.clock.elapsedTime;\n state.clock.oldTime = state.clock.elapsedTime;\n state.clock.elapsedTime = timestamp;\n }\n // Call subscribers (useFrame)\n subscribers = state.internal.subscribers;\n for (i = 0; i < subscribers.length; i++) {\n subscription = subscribers[i];\n subscription.ref.current(subscription.store.getState(), delta, frame);\n }\n // Render content\n if (!state.internal.priority && state.gl.render) state.gl.render(state.scene, state.camera);\n // Decrease frame count\n state.internal.frames = Math.max(0, state.internal.frames - 1);\n return state.frameloop === 'always' ? 1 : state.internal.frames;\n}\nfunction createLoop(roots) {\n let running = false;\n let repeat;\n let frame;\n let state;\n function loop(timestamp) {\n frame = requestAnimationFrame(loop);\n running = true;\n repeat = 0;\n\n // Run effects\n flushGlobalEffects('before', timestamp);\n\n // Render all roots\n for (const root of roots.values()) {\n var _state$gl$xr;\n state = root.store.getState();\n // If the frameloop is invalidated, do not run another frame\n if (state.internal.active && (state.frameloop === 'always' || state.internal.frames > 0) && !((_state$gl$xr = state.gl.xr) != null && _state$gl$xr.isPresenting)) {\n repeat += render$1(timestamp, state);\n }\n }\n\n // Run after-effects\n flushGlobalEffects('after', timestamp);\n\n // Stop the loop if nothing invalidates it\n if (repeat === 0) {\n // Tail call effects, they are called when rendering stops\n flushGlobalEffects('tail', timestamp);\n\n // Flag end of operation\n running = false;\n return cancelAnimationFrame(frame);\n }\n }\n function invalidate(state, frames = 1) {\n var _state$gl$xr2;\n if (!state) return roots.forEach(root => invalidate(root.store.getState()), frames);\n if ((_state$gl$xr2 = state.gl.xr) != null && _state$gl$xr2.isPresenting || !state.internal.active || state.frameloop === 'never') return;\n // Increase frames, do not go higher than 60\n state.internal.frames = Math.min(60, state.internal.frames + frames);\n // If the render-loop isn't active, start it\n if (!running) {\n running = true;\n requestAnimationFrame(loop);\n }\n }\n function advance(timestamp, runGlobalEffects = true, state, frame) {\n if (runGlobalEffects) flushGlobalEffects('before', timestamp);\n if (!state) for (const root of roots.values()) render$1(timestamp, root.store.getState());else render$1(timestamp, state, frame);\n if (runGlobalEffects) flushGlobalEffects('after', timestamp);\n }\n return {\n loop,\n /**\n * Invalidates the view, requesting a frame to be rendered. Will globally invalidate unless passed a root's state.\n * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#invalidate\n */\n invalidate,\n /**\n * Advances the frameloop and runs render effects, useful for when manually rendering via `frameloop=\"never\"`.\n * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#advance\n */\n advance\n };\n}\n\n/**\n * Exposes an object's {@link LocalState}.\n * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#useInstanceHandle\n *\n * **Note**: this is an escape hatch to react-internal fields. Expect this to change significantly between versions.\n */\nfunction useInstanceHandle(ref) {\n const instance = React.useRef(null);\n useIsomorphicLayoutEffect(() => void (instance.current = ref.current.__r3f), [ref]);\n return instance;\n}\nfunction useStore() {\n const store = React.useContext(context);\n if (!store) throw new Error('R3F: Hooks can only be used within the Canvas component!');\n return store;\n}\n\n/**\n * Accesses R3F's internal state, containing renderer, canvas, scene, etc.\n * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#usethree\n */\nfunction useThree(selector = state => state, equalityFn) {\n return useStore()(selector, equalityFn);\n}\n\n/**\n * Executes a callback before render in a shared frame loop.\n * Can order effects with render priority or manually render with a positive priority.\n * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#useframe\n */\nfunction useFrame(callback, renderPriority = 0) {\n const store = useStore();\n const subscribe = store.getState().internal.subscribe;\n // Memoize ref\n const ref = useMutableCallback(callback);\n // Subscribe on mount, unsubscribe on unmount\n useIsomorphicLayoutEffect(() => subscribe(ref, renderPriority, store), [renderPriority, subscribe, store]);\n return null;\n}\n\n/**\n * Returns a node graph of an object with named nodes & materials.\n * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#usegraph\n */\nfunction useGraph(object) {\n return React.useMemo(() => buildGraph(object), [object]);\n}\nconst memoizedLoaders = new WeakMap();\nfunction loadingFn(extensions, onProgress) {\n return function (Proto, ...input) {\n // Construct new loader and run extensions\n let loader = memoizedLoaders.get(Proto);\n if (!loader) {\n loader = new Proto();\n memoizedLoaders.set(Proto, loader);\n }\n if (extensions) extensions(loader);\n // Go through the urls and load them\n return Promise.all(input.map(input => new Promise((res, reject) => loader.load(input, data => {\n if (data.scene) Object.assign(data, buildGraph(data.scene));\n res(data);\n }, onProgress, error => reject(new Error(`Could not load ${input}: ${error == null ? void 0 : error.message}`)))))).finally(() => loader.dispose == null ? void 0 : loader.dispose());\n };\n}\n\n/**\n * Synchronously loads and caches assets with a three loader.\n *\n * Note: this hook's caller must be wrapped with `React.Suspense`\n * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#useloader\n */\nfunction useLoader(Proto, input, extensions, onProgress) {\n // Use suspense to load async assets\n const keys = Array.isArray(input) ? input : [input];\n const results = suspend(loadingFn(extensions, onProgress), [Proto, ...keys], {\n equal: is.equ\n });\n // Return the object/s\n return Array.isArray(input) ? results : results[0];\n}\n\n/**\n * Preloads an asset into cache as a side-effect.\n */\nuseLoader.preload = function (Proto, input, extensions) {\n const keys = Array.isArray(input) ? input : [input];\n return preload(loadingFn(extensions), [Proto, ...keys]);\n};\n\n/**\n * Removes a loaded asset from cache.\n */\nuseLoader.clear = function (Proto, input) {\n const keys = Array.isArray(input) ? input : [input];\n return clear([Proto, ...keys]);\n};\n\nconst roots = new Map();\nconst {\n invalidate,\n advance\n} = createLoop(roots);\nconst {\n reconciler,\n applyProps\n} = createRenderer(roots, getEventPriority);\nconst shallowLoose = {\n objects: 'shallow',\n strict: false\n};\nconst createRendererInstance = (gl, canvas) => {\n const customRenderer = typeof gl === 'function' ? gl(canvas) : gl;\n if (isRenderer(customRenderer)) return customRenderer;else return new THREE.WebGLRenderer({\n powerPreference: 'high-performance',\n canvas: canvas,\n antialias: true,\n alpha: true,\n ...gl\n });\n};\nfunction computeInitialSize(canvas, defaultSize) {\n if (defaultSize) return defaultSize;\n if (typeof HTMLCanvasElement !== 'undefined' && canvas instanceof HTMLCanvasElement && canvas.parentElement) {\n const {\n width,\n height,\n top,\n left\n } = canvas.parentElement.getBoundingClientRect();\n return {\n width,\n height,\n top,\n left\n };\n } else if (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas) {\n return {\n width: canvas.width,\n height: canvas.height,\n top: 0,\n left: 0\n };\n }\n return {\n width: 0,\n height: 0,\n top: 0,\n left: 0\n };\n}\nfunction createRoot(canvas) {\n // Check against mistaken use of createRoot\n const prevRoot = roots.get(canvas);\n const prevFiber = prevRoot == null ? void 0 : prevRoot.fiber;\n const prevStore = prevRoot == null ? void 0 : prevRoot.store;\n if (prevRoot) console.warn('R3F.createRoot should only be called once!');\n\n // Report when an error was detected in a previous render\n // https://github.com/pmndrs/react-three-fiber/pull/2261\n const logRecoverableError = typeof reportError === 'function' ?\n // In modern browsers, reportError will dispatch an error event,\n // emulating an uncaught JavaScript error.\n reportError :\n // In older browsers and test environments, fallback to console.error.\n console.error;\n\n // Create store\n const store = prevStore || createStore(invalidate, advance);\n // Create renderer\n const fiber = prevFiber || reconciler.createContainer(store, ConcurrentRoot, null, false, null, '', logRecoverableError, null);\n // Map it\n if (!prevRoot) roots.set(canvas, {\n fiber,\n store\n });\n\n // Locals\n let onCreated;\n let configured = false;\n let lastCamera;\n return {\n configure(props = {}) {\n let {\n gl: glConfig,\n size: propsSize,\n scene: sceneOptions,\n events,\n onCreated: onCreatedCallback,\n shadows = false,\n linear = false,\n flat = false,\n legacy = false,\n orthographic = false,\n frameloop = 'always',\n dpr = [1, 2],\n performance,\n raycaster: raycastOptions,\n camera: cameraOptions,\n onPointerMissed\n } = props;\n let state = store.getState();\n\n // Set up renderer (one time only!)\n let gl = state.gl;\n if (!state.gl) state.set({\n gl: gl = createRendererInstance(glConfig, canvas)\n });\n\n // Set up raycaster (one time only!)\n let raycaster = state.raycaster;\n if (!raycaster) state.set({\n raycaster: raycaster = new THREE.Raycaster()\n });\n\n // Set raycaster options\n const {\n params,\n ...options\n } = raycastOptions || {};\n if (!is.equ(options, raycaster, shallowLoose)) applyProps(raycaster, {\n ...options\n });\n if (!is.equ(params, raycaster.params, shallowLoose)) applyProps(raycaster, {\n params: {\n ...raycaster.params,\n ...params\n }\n });\n\n // Create default camera, don't overwrite any user-set state\n if (!state.camera || state.camera === lastCamera && !is.equ(lastCamera, cameraOptions, shallowLoose)) {\n lastCamera = cameraOptions;\n const isCamera = cameraOptions instanceof THREE.Camera;\n const camera = isCamera ? cameraOptions : orthographic ? new THREE.OrthographicCamera(0, 0, 0, 0, 0.1, 1000) : new THREE.PerspectiveCamera(75, 0, 0.1, 1000);\n if (!isCamera) {\n camera.position.z = 5;\n if (cameraOptions) applyProps(camera, cameraOptions);\n // Always look at center by default\n if (!state.camera && !(cameraOptions != null && cameraOptions.rotation)) camera.lookAt(0, 0, 0);\n }\n state.set({\n camera\n });\n }\n\n // Set up scene (one time only!)\n if (!state.scene) {\n let scene;\n if (sceneOptions instanceof THREE.Scene) {\n scene = sceneOptions;\n } else {\n scene = new THREE.Scene();\n if (sceneOptions) applyProps(scene, sceneOptions);\n }\n state.set({\n scene: prepare(scene)\n });\n }\n\n // Set up XR (one time only!)\n if (!state.xr) {\n var _gl$xr;\n // Handle frame behavior in WebXR\n const handleXRFrame = (timestamp, frame) => {\n const state = store.getState();\n if (state.frameloop === 'never') return;\n advance(timestamp, true, state, frame);\n };\n\n // Toggle render switching on session\n const handleSessionChange = () => {\n const state = store.getState();\n state.gl.xr.enabled = state.gl.xr.isPresenting;\n state.gl.xr.setAnimationLoop(state.gl.xr.isPresenting ? handleXRFrame : null);\n if (!state.gl.xr.isPresenting) invalidate(state);\n };\n\n // WebXR session manager\n const xr = {\n connect() {\n const gl = store.getState().gl;\n gl.xr.addEventListener('sessionstart', handleSessionChange);\n gl.xr.addEventListener('sessionend', handleSessionChange);\n },\n disconnect() {\n const gl = store.getState().gl;\n gl.xr.removeEventListener('sessionstart', handleSessionChange);\n gl.xr.removeEventListener('sessionend', handleSessionChange);\n }\n };\n\n // Subscribe to WebXR session events\n if (typeof ((_gl$xr = gl.xr) == null ? void 0 : _gl$xr.addEventListener) === 'function') xr.connect();\n state.set({\n xr\n });\n }\n\n // Set shadowmap\n if (gl.shadowMap) {\n const oldEnabled = gl.shadowMap.enabled;\n const oldType = gl.shadowMap.type;\n gl.shadowMap.enabled = !!shadows;\n if (is.boo(shadows)) {\n gl.shadowMap.type = THREE.PCFSoftShadowMap;\n } else if (is.str(shadows)) {\n var _types$shadows;\n const types = {\n basic: THREE.BasicShadowMap,\n percentage: THREE.PCFShadowMap,\n soft: THREE.PCFSoftShadowMap,\n variance: THREE.VSMShadowMap\n };\n gl.shadowMap.type = (_types$shadows = types[shadows]) != null ? _types$shadows : THREE.PCFSoftShadowMap;\n } else if (is.obj(shadows)) {\n Object.assign(gl.shadowMap, shadows);\n }\n if (oldEnabled !== gl.shadowMap.enabled || oldType !== gl.shadowMap.type) gl.shadowMap.needsUpdate = true;\n }\n\n // Safely set color management if available.\n // Avoid accessing THREE.ColorManagement to play nice with older versions\n const ColorManagement = getColorManagement();\n if (ColorManagement) {\n if ('enabled' in ColorManagement) ColorManagement.enabled = !legacy;else if ('legacyMode' in ColorManagement) ColorManagement.legacyMode = legacy;\n }\n\n // Set color space and tonemapping preferences\n const LinearEncoding = 3000;\n const sRGBEncoding = 3001;\n applyProps(gl, {\n outputEncoding: linear ? LinearEncoding : sRGBEncoding,\n toneMapping: flat ? THREE.NoToneMapping : THREE.ACESFilmicToneMapping\n });\n\n // Update color management state\n if (state.legacy !== legacy) state.set(() => ({\n legacy\n }));\n if (state.linear !== linear) state.set(() => ({\n linear\n }));\n if (state.flat !== flat) state.set(() => ({\n flat\n }));\n\n // Set gl props\n if (glConfig && !is.fun(glConfig) && !isRenderer(glConfig) && !is.equ(glConfig, gl, shallowLoose)) applyProps(gl, glConfig);\n // Store events internally\n if (events && !state.events.handlers) state.set({\n events: events(store)\n });\n // Check size, allow it to take on container bounds initially\n const size = computeInitialSize(canvas, propsSize);\n if (!is.equ(size, state.size, shallowLoose)) {\n state.setSize(size.width, size.height, size.updateStyle, size.top, size.left);\n }\n // Check pixelratio\n if (dpr && state.viewport.dpr !== calculateDpr(dpr)) state.setDpr(dpr);\n // Check frameloop\n if (state.frameloop !== frameloop) state.setFrameloop(frameloop);\n // Check pointer missed\n if (!state.onPointerMissed) state.set({\n onPointerMissed\n });\n // Check performance\n if (performance && !is.equ(performance, state.performance, shallowLoose)) state.set(state => ({\n performance: {\n ...state.performance,\n ...performance\n }\n }));\n\n // Set locals\n onCreated = onCreatedCallback;\n configured = true;\n return this;\n },\n render(children) {\n // The root has to be configured before it can be rendered\n if (!configured) this.configure();\n reconciler.updateContainer( /*#__PURE__*/React.createElement(Provider, {\n store: store,\n children: children,\n onCreated: onCreated,\n rootElement: canvas\n }), fiber, null, () => undefined);\n return store;\n },\n unmount() {\n unmountComponentAtNode(canvas);\n }\n };\n}\nfunction render(children, canvas, config) {\n console.warn('R3F.render is no longer supported in React 18. Use createRoot instead!');\n const root = createRoot(canvas);\n root.configure(config);\n return root.render(children);\n}\nfunction Provider({\n store,\n children,\n onCreated,\n rootElement\n}) {\n useIsomorphicLayoutEffect(() => {\n const state = store.getState();\n // Flag the canvas active, rendering will now begin\n state.set(state => ({\n internal: {\n ...state.internal,\n active: true\n }\n }));\n // Notifiy that init is completed, the scene graph exists, but nothing has yet rendered\n if (onCreated) onCreated(state);\n // Connect events to the targets parent, this is done to ensure events are registered on\n // a shared target, and not on the canvas itself\n if (!store.getState().events.connected) state.events.connect == null ? void 0 : state.events.connect(rootElement);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return /*#__PURE__*/React.createElement(context.Provider, {\n value: store\n }, children);\n}\nfunction unmountComponentAtNode(canvas, callback) {\n const root = roots.get(canvas);\n const fiber = root == null ? void 0 : root.fiber;\n if (fiber) {\n const state = root == null ? void 0 : root.store.getState();\n if (state) state.internal.active = false;\n reconciler.updateContainer(null, fiber, null, () => {\n if (state) {\n setTimeout(() => {\n try {\n var _state$gl, _state$gl$renderLists, _state$gl2, _state$gl3;\n state.events.disconnect == null ? void 0 : state.events.disconnect();\n (_state$gl = state.gl) == null ? void 0 : (_state$gl$renderLists = _state$gl.renderLists) == null ? void 0 : _state$gl$renderLists.dispose == null ? void 0 : _state$gl$renderLists.dispose();\n (_state$gl2 = state.gl) == null ? void 0 : _state$gl2.forceContextLoss == null ? void 0 : _state$gl2.forceContextLoss();\n if ((_state$gl3 = state.gl) != null && _state$gl3.xr) state.xr.disconnect();\n dispose(state);\n roots.delete(canvas);\n if (callback) callback(canvas);\n } catch (e) {\n /* ... */\n }\n }, 500);\n }\n });\n }\n}\nfunction createPortal(children, container, state) {\n return /*#__PURE__*/React.createElement(Portal, {\n key: container.uuid,\n children: children,\n container: container,\n state: state\n });\n}\nfunction Portal({\n state = {},\n children,\n container\n}) {\n /** This has to be a component because it would not be able to call useThree/useStore otherwise since\n * if this is our environment, then we are not in r3f's renderer but in react-dom, it would trigger\n * the \"R3F hooks can only be used within the Canvas component!\" warning:\n * \n * {createPortal(...)} */\n const {\n events,\n size,\n ...rest\n } = state;\n const previousRoot = useStore();\n const [raycaster] = React.useState(() => new THREE.Raycaster());\n const [pointer] = React.useState(() => new THREE.Vector2());\n const inject = React.useCallback((rootState, injectState) => {\n const intersect = {\n ...rootState\n }; // all prev state props\n\n // Only the fields of \"rootState\" that do not differ from injectState\n // Some props should be off-limits\n // Otherwise filter out the props that are different and let the inject layer take precedence\n Object.keys(rootState).forEach(key => {\n if (\n // Some props should be off-limits\n privateKeys.includes(key) ||\n // Otherwise filter out the props that are different and let the inject layer take precedence\n // Unless the inject layer props is undefined, then we keep the root layer\n rootState[key] !== injectState[key] && injectState[key]) {\n delete intersect[key];\n }\n });\n let viewport = undefined;\n if (injectState && size) {\n const camera = injectState.camera;\n // Calculate the override viewport, if present\n viewport = rootState.viewport.getCurrentViewport(camera, new THREE.Vector3(), size);\n // Update the portal camera, if it differs from the previous layer\n if (camera !== rootState.camera) updateCamera(camera, size);\n }\n return {\n // The intersect consists of the previous root state\n ...intersect,\n // Portals have their own scene, which forms the root, a raycaster and a pointer\n scene: container,\n raycaster,\n pointer,\n mouse: pointer,\n // Their previous root is the layer before it\n previousRoot,\n // Events, size and viewport can be overridden by the inject layer\n events: {\n ...rootState.events,\n ...(injectState == null ? void 0 : injectState.events),\n ...events\n },\n size: {\n ...rootState.size,\n ...size\n },\n viewport: {\n ...rootState.viewport,\n ...viewport\n },\n ...rest\n };\n }, [state]);\n const [usePortalStore] = React.useState(() => {\n // Create a mirrored store, based on the previous root with a few overrides ...\n const previousState = previousRoot.getState();\n const store = create((set, get) => ({\n ...previousState,\n scene: container,\n raycaster,\n pointer,\n mouse: pointer,\n previousRoot,\n events: {\n ...previousState.events,\n ...events\n },\n size: {\n ...previousState.size,\n ...size\n },\n ...rest,\n // Set and get refer to this root-state\n set,\n get,\n // Layers are allowed to override events\n setEvents: events => set(state => ({\n ...state,\n events: {\n ...state.events,\n ...events\n }\n }))\n }));\n return store;\n });\n React.useEffect(() => {\n // Subscribe to previous root-state and copy changes over to the mirrored portal-state\n const unsub = previousRoot.subscribe(prev => usePortalStore.setState(state => inject(prev, state)));\n return () => {\n unsub();\n usePortalStore.destroy();\n };\n }, []);\n React.useEffect(() => {\n usePortalStore.setState(injectState => inject(previousRoot.getState(), injectState));\n }, [inject]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, reconciler.createPortal( /*#__PURE__*/React.createElement(context.Provider, {\n value: usePortalStore\n }, children), usePortalStore, null));\n}\nreconciler.injectIntoDevTools({\n bundleType: process.env.NODE_ENV === 'production' ? 0 : 1,\n rendererPackageName: '@react-three/fiber',\n version: React.version\n});\nconst act = React.unstable_act;\n\nexport { useFrame as A, Block as B, useGraph as C, useLoader as D, ErrorBoundary as E, useIsomorphicLayoutEffect as a, createRoot as b, createEvents as c, unmountComponentAtNode as d, extend as e, context as f, createPortal as g, reconciler as h, isRef as i, applyProps as j, dispose as k, invalidate as l, advance as m, addEffect as n, addAfterEffect as o, addTail as p, flushGlobalEffects as q, render as r, getRootState as s, threeTypes as t, useMutableCallback as u, act as v, roots as w, useInstanceHandle as x, useStore as y, useThree as z };\n","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\nfunction debounce(func, wait, immediate){\n var timeout, args, context, timestamp, result;\n if (null == wait) wait = 100;\n\n function later() {\n var last = Date.now() - timestamp;\n\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n };\n\n var debounced = function(){\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n\n debounced.clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n \n debounced.flush = function() {\n if (timeout) {\n result = func.apply(context, args);\n context = args = null;\n \n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n return debounced;\n};\n\n// Adds compatibility for ES modules\ndebounce.debounce = debounce;\n\nmodule.exports = debounce;\n","import { useState, useRef, useEffect, useMemo } from 'react';\nimport createDebounce from 'debounce';\n\nfunction useMeasure(_temp) {\n let {\n debounce,\n scroll,\n polyfill,\n offsetSize\n } = _temp === void 0 ? {\n debounce: 0,\n scroll: false,\n offsetSize: false\n } : _temp;\n const ResizeObserver = polyfill || (typeof window === 'undefined' ? class ResizeObserver {} : window.ResizeObserver);\n\n if (!ResizeObserver) {\n throw new Error('This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills');\n }\n\n const [bounds, set] = useState({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n bottom: 0,\n right: 0,\n x: 0,\n y: 0\n }); // keep all state in a ref\n\n const state = useRef({\n element: null,\n scrollContainers: null,\n resizeObserver: null,\n lastBounds: bounds\n }); // set actual debounce values early, so effects know if they should react accordingly\n\n const scrollDebounce = debounce ? typeof debounce === 'number' ? debounce : debounce.scroll : null;\n const resizeDebounce = debounce ? typeof debounce === 'number' ? debounce : debounce.resize : null; // make sure to update state only as long as the component is truly mounted\n\n const mounted = useRef(false);\n useEffect(() => {\n mounted.current = true;\n return () => void (mounted.current = false);\n }); // memoize handlers, so event-listeners know when they should update\n\n const [forceRefresh, resizeChange, scrollChange] = useMemo(() => {\n const callback = () => {\n if (!state.current.element) return;\n const {\n left,\n top,\n width,\n height,\n bottom,\n right,\n x,\n y\n } = state.current.element.getBoundingClientRect();\n const size = {\n left,\n top,\n width,\n height,\n bottom,\n right,\n x,\n y\n };\n\n if (state.current.element instanceof HTMLElement && offsetSize) {\n size.height = state.current.element.offsetHeight;\n size.width = state.current.element.offsetWidth;\n }\n\n Object.freeze(size);\n if (mounted.current && !areBoundsEqual(state.current.lastBounds, size)) set(state.current.lastBounds = size);\n };\n\n return [callback, resizeDebounce ? createDebounce(callback, resizeDebounce) : callback, scrollDebounce ? createDebounce(callback, scrollDebounce) : callback];\n }, [set, offsetSize, scrollDebounce, resizeDebounce]); // cleanup current scroll-listeners / observers\n\n function removeListeners() {\n if (state.current.scrollContainers) {\n state.current.scrollContainers.forEach(element => element.removeEventListener('scroll', scrollChange, true));\n state.current.scrollContainers = null;\n }\n\n if (state.current.resizeObserver) {\n state.current.resizeObserver.disconnect();\n state.current.resizeObserver = null;\n }\n } // add scroll-listeners / observers\n\n\n function addListeners() {\n if (!state.current.element) return;\n state.current.resizeObserver = new ResizeObserver(scrollChange);\n state.current.resizeObserver.observe(state.current.element);\n\n if (scroll && state.current.scrollContainers) {\n state.current.scrollContainers.forEach(scrollContainer => scrollContainer.addEventListener('scroll', scrollChange, {\n capture: true,\n passive: true\n }));\n }\n } // the ref we expose to the user\n\n\n const ref = node => {\n if (!node || node === state.current.element) return;\n removeListeners();\n state.current.element = node;\n state.current.scrollContainers = findScrollContainers(node);\n addListeners();\n }; // add general event listeners\n\n\n useOnWindowScroll(scrollChange, Boolean(scroll));\n useOnWindowResize(resizeChange); // respond to changes that are relevant for the listeners\n\n useEffect(() => {\n removeListeners();\n addListeners();\n }, [scroll, scrollChange, resizeChange]); // remove all listeners when the components unmounts\n\n useEffect(() => removeListeners, []);\n return [ref, bounds, forceRefresh];\n} // Adds native resize listener to window\n\n\nfunction useOnWindowResize(onWindowResize) {\n useEffect(() => {\n const cb = onWindowResize;\n window.addEventListener('resize', cb);\n return () => void window.removeEventListener('resize', cb);\n }, [onWindowResize]);\n}\n\nfunction useOnWindowScroll(onScroll, enabled) {\n useEffect(() => {\n if (enabled) {\n const cb = onScroll;\n window.addEventListener('scroll', cb, {\n capture: true,\n passive: true\n });\n return () => void window.removeEventListener('scroll', cb, true);\n }\n }, [onScroll, enabled]);\n} // Returns a list of scroll offsets\n\n\nfunction findScrollContainers(element) {\n const result = [];\n if (!element || element === document.body) return result;\n const {\n overflow,\n overflowX,\n overflowY\n } = window.getComputedStyle(element);\n if ([overflow, overflowX, overflowY].some(prop => prop === 'auto' || prop === 'scroll')) result.push(element);\n return [...result, ...findScrollContainers(element.parentElement)];\n} // Checks if element boundaries are equal\n\n\nconst keys = ['x', 'y', 'top', 'bottom', 'left', 'right', 'width', 'height'];\n\nconst areBoundsEqual = (a, b) => keys.every(key => a[key] === b[key]);\n\nexport { useMeasure as default };\n","import * as React from \"react\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nfunction traverseFiber(fiber, ascending, selector) {\n if (!fiber)\n return;\n if (selector(fiber) === true)\n return fiber;\n let child = ascending ? fiber.return : fiber.child;\n while (child) {\n const match = traverseFiber(child, ascending, selector);\n if (match)\n return match;\n child = ascending ? null : child.sibling;\n }\n}\nfunction wrapContext(context) {\n try {\n return Object.defineProperties(context, {\n _currentRenderer: {\n get() {\n return null;\n },\n set() {\n }\n },\n _currentRenderer2: {\n get() {\n return null;\n },\n set() {\n }\n }\n });\n } catch (_) {\n return context;\n }\n}\nconst FiberContext = wrapContext(React.createContext(null));\nclass FiberProvider extends React.Component {\n render() {\n return /* @__PURE__ */ React.createElement(FiberContext.Provider, {\n value: this._reactInternals\n }, this.props.children);\n }\n}\nconst { ReactCurrentOwner, ReactCurrentDispatcher } = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\nfunction useFiber() {\n const root = React.useContext(FiberContext);\n if (root === null)\n throw new Error(\"its-fine: useFiber must be called within a !\");\n const id = React.useId();\n const fiber = React.useMemo(() => {\n for (const maybeFiber of [ReactCurrentOwner == null ? void 0 : ReactCurrentOwner.current, root, root == null ? void 0 : root.alternate]) {\n if (!maybeFiber)\n continue;\n const fiber2 = traverseFiber(maybeFiber, false, (node) => {\n let state = node.memoizedState;\n while (state) {\n if (state.memoizedState === id)\n return true;\n state = state.next;\n }\n });\n if (fiber2)\n return fiber2;\n }\n }, [root, id]);\n return fiber;\n}\nfunction useContainer() {\n const fiber = useFiber();\n const root = React.useMemo(\n () => traverseFiber(fiber, true, (node) => {\n var _a;\n return ((_a = node.stateNode) == null ? void 0 : _a.containerInfo) != null;\n }),\n [fiber]\n );\n return root == null ? void 0 : root.stateNode.containerInfo;\n}\nfunction useNearestChild(type) {\n const fiber = useFiber();\n const childRef = React.useRef();\n React.useLayoutEffect(() => {\n var _a;\n childRef.current = (_a = traverseFiber(\n fiber,\n false,\n (node) => typeof node.type === \"string\" && (type === void 0 || node.type === type)\n )) == null ? void 0 : _a.stateNode;\n }, [fiber]);\n return childRef;\n}\nfunction useNearestParent(type) {\n const fiber = useFiber();\n const parentRef = React.useRef();\n React.useLayoutEffect(() => {\n var _a;\n parentRef.current = (_a = traverseFiber(\n fiber,\n true,\n (node) => typeof node.type === \"string\" && (type === void 0 || node.type === type)\n )) == null ? void 0 : _a.stateNode;\n }, [fiber]);\n return parentRef;\n}\nfunction useContextMap() {\n var _a, _b;\n const fiber = useFiber();\n const [contextMap] = React.useState(() => /* @__PURE__ */ new Map());\n contextMap.clear();\n let node = fiber;\n while (node) {\n const context = (_a = node.type) == null ? void 0 : _a._context;\n if (context && context !== FiberContext && !contextMap.has(context)) {\n contextMap.set(context, (_b = ReactCurrentDispatcher == null ? void 0 : ReactCurrentDispatcher.current) == null ? void 0 : _b.readContext(wrapContext(context)));\n }\n node = node.return;\n }\n return contextMap;\n}\nfunction useContextBridge() {\n const contextMap = useContextMap();\n return React.useMemo(\n () => Array.from(contextMap.keys()).reduce(\n (Prev, context) => (props) => /* @__PURE__ */ React.createElement(Prev, null, /* @__PURE__ */ React.createElement(context.Provider, __spreadProps(__spreadValues({}, props), {\n value: contextMap.get(context)\n }))),\n (props) => /* @__PURE__ */ React.createElement(FiberProvider, __spreadValues({}, props))\n ),\n [contextMap]\n );\n}\nexport {\n FiberProvider,\n traverseFiber,\n useContainer,\n useContextBridge,\n useContextMap,\n useFiber,\n useNearestChild,\n useNearestParent\n};\n//# sourceMappingURL=index.js.map\n","import { c as createEvents, e as extend, u as useMutableCallback, a as useIsomorphicLayoutEffect, b as createRoot, i as isRef, E as ErrorBoundary, B as Block, d as unmountComponentAtNode } from './index-dc6125bc.esm.js';\nexport { t as ReactThreeFiber, w as _roots, v as act, o as addAfterEffect, n as addEffect, p as addTail, m as advance, j as applyProps, f as context, c as createEvents, g as createPortal, b as createRoot, k as dispose, e as extend, q as flushGlobalEffects, s as getRootState, l as invalidate, h as reconciler, r as render, d as unmountComponentAtNode, A as useFrame, C as useGraph, x as useInstanceHandle, D as useLoader, y as useStore, z as useThree } from './index-dc6125bc.esm.js';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport * as THREE from 'three';\nimport useMeasure from 'react-use-measure';\nimport { FiberProvider, useContextBridge } from 'its-fine';\nimport 'react-reconciler/constants';\nimport 'zustand';\nimport 'react-reconciler';\nimport 'scheduler';\nimport 'suspend-react';\n\nconst DOM_EVENTS = {\n onClick: ['click', false],\n onContextMenu: ['contextmenu', false],\n onDoubleClick: ['dblclick', false],\n onWheel: ['wheel', true],\n onPointerDown: ['pointerdown', true],\n onPointerUp: ['pointerup', true],\n onPointerLeave: ['pointerleave', true],\n onPointerMove: ['pointermove', true],\n onPointerCancel: ['pointercancel', true],\n onLostPointerCapture: ['lostpointercapture', true]\n};\n\n/** Default R3F event manager for web */\nfunction createPointerEvents(store) {\n const {\n handlePointer\n } = createEvents(store);\n return {\n priority: 1,\n enabled: true,\n compute(event, state, previous) {\n // https://github.com/pmndrs/react-three-fiber/pull/782\n // Events trigger outside of canvas when moved, use offsetX/Y by default and allow overrides\n state.pointer.set(event.offsetX / state.size.width * 2 - 1, -(event.offsetY / state.size.height) * 2 + 1);\n state.raycaster.setFromCamera(state.pointer, state.camera);\n },\n connected: undefined,\n handlers: Object.keys(DOM_EVENTS).reduce((acc, key) => ({\n ...acc,\n [key]: handlePointer(key)\n }), {}),\n update: () => {\n var _internal$lastEvent;\n const {\n events,\n internal\n } = store.getState();\n if ((_internal$lastEvent = internal.lastEvent) != null && _internal$lastEvent.current && events.handlers) events.handlers.onPointerMove(internal.lastEvent.current);\n },\n connect: target => {\n var _events$handlers;\n const {\n set,\n events\n } = store.getState();\n events.disconnect == null ? void 0 : events.disconnect();\n set(state => ({\n events: {\n ...state.events,\n connected: target\n }\n }));\n Object.entries((_events$handlers = events.handlers) != null ? _events$handlers : []).forEach(([name, event]) => {\n const [eventName, passive] = DOM_EVENTS[name];\n target.addEventListener(eventName, event, {\n passive\n });\n });\n },\n disconnect: () => {\n const {\n set,\n events\n } = store.getState();\n if (events.connected) {\n var _events$handlers2;\n Object.entries((_events$handlers2 = events.handlers) != null ? _events$handlers2 : []).forEach(([name, event]) => {\n if (events && events.connected instanceof HTMLElement) {\n const [eventName] = DOM_EVENTS[name];\n events.connected.removeEventListener(eventName, event);\n }\n });\n set(state => ({\n events: {\n ...state.events,\n connected: undefined\n }\n }));\n }\n }\n };\n}\n\nconst CanvasImpl = /*#__PURE__*/React.forwardRef(function Canvas({\n children,\n fallback,\n resize,\n style,\n gl,\n events = createPointerEvents,\n eventSource,\n eventPrefix,\n shadows,\n linear,\n flat,\n legacy,\n orthographic,\n frameloop,\n dpr,\n performance,\n raycaster,\n camera,\n scene,\n onPointerMissed,\n onCreated,\n ...props\n}, forwardedRef) {\n // Create a known catalogue of Threejs-native elements\n // This will include the entire THREE namespace by default, users can extend\n // their own elements by using the createRoot API instead\n React.useMemo(() => extend(THREE), []);\n const Bridge = useContextBridge();\n const [containerRef, containerRect] = useMeasure({\n scroll: true,\n debounce: {\n scroll: 50,\n resize: 0\n },\n ...resize\n });\n const canvasRef = React.useRef(null);\n const divRef = React.useRef(null);\n React.useImperativeHandle(forwardedRef, () => canvasRef.current);\n const handlePointerMissed = useMutableCallback(onPointerMissed);\n const [block, setBlock] = React.useState(false);\n const [error, setError] = React.useState(false);\n\n // Suspend this component if block is a promise (2nd run)\n if (block) throw block;\n // Throw exception outwards if anything within canvas throws\n if (error) throw error;\n const root = React.useRef(null);\n useIsomorphicLayoutEffect(() => {\n const canvas = canvasRef.current;\n if (containerRect.width > 0 && containerRect.height > 0 && canvas) {\n if (!root.current) root.current = createRoot(canvas);\n root.current.configure({\n gl,\n events,\n shadows,\n linear,\n flat,\n legacy,\n orthographic,\n frameloop,\n dpr,\n performance,\n raycaster,\n camera,\n scene,\n size: containerRect,\n // Pass mutable reference to onPointerMissed so it's free to update\n onPointerMissed: (...args) => handlePointerMissed.current == null ? void 0 : handlePointerMissed.current(...args),\n onCreated: state => {\n // Connect to event source\n state.events.connect == null ? void 0 : state.events.connect(eventSource ? isRef(eventSource) ? eventSource.current : eventSource : divRef.current);\n // Set up compute function\n if (eventPrefix) {\n state.setEvents({\n compute: (event, state) => {\n const x = event[eventPrefix + 'X'];\n const y = event[eventPrefix + 'Y'];\n state.pointer.set(x / state.size.width * 2 - 1, -(y / state.size.height) * 2 + 1);\n state.raycaster.setFromCamera(state.pointer, state.camera);\n }\n });\n }\n // Call onCreated callback\n onCreated == null ? void 0 : onCreated(state);\n }\n });\n root.current.render( /*#__PURE__*/React.createElement(Bridge, null, /*#__PURE__*/React.createElement(ErrorBoundary, {\n set: setError\n }, /*#__PURE__*/React.createElement(React.Suspense, {\n fallback: /*#__PURE__*/React.createElement(Block, {\n set: setBlock\n })\n }, children))));\n }\n });\n React.useEffect(() => {\n const canvas = canvasRef.current;\n if (canvas) return () => unmountComponentAtNode(canvas);\n }, []);\n\n // When the event source is not this div, we need to set pointer-events to none\n // Or else the canvas will block events from reaching the event source\n const pointerEvents = eventSource ? 'none' : 'auto';\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: divRef,\n style: {\n position: 'relative',\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n pointerEvents,\n ...style\n }\n }, props), /*#__PURE__*/React.createElement(\"div\", {\n ref: containerRef,\n style: {\n width: '100%',\n height: '100%'\n }\n }, /*#__PURE__*/React.createElement(\"canvas\", {\n ref: canvasRef,\n style: {\n display: 'block'\n }\n }, fallback)));\n});\n\n/**\n * A DOM canvas which accepts threejs elements as children.\n * @see https://docs.pmnd.rs/react-three-fiber/api/canvas\n */\nconst Canvas = /*#__PURE__*/React.forwardRef(function CanvasWrapper(props, ref) {\n return /*#__PURE__*/React.createElement(FiberProvider, null, /*#__PURE__*/React.createElement(CanvasImpl, _extends({}, props, {\n ref: ref\n })));\n});\n\nexport { Canvas, createPointerEvents as events };\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\") ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => listeners.clear();\n const api = { setState, getState, subscribe, destroy };\n state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\n\nexport { createStore as default };\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","import createStore__default from 'zustand/vanilla';\nexport * from 'zustand/vanilla';\nexport { default as createStore } from 'zustand/vanilla';\nimport { useDebugValue } from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\n\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nfunction useStore(api, selector = api.getState, equalityFn) {\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getServerState || api.getState,\n selector,\n equalityFn\n );\n useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = typeof createState === \"function\" ? createStore__default(createState) : createState;\n const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\n\nexport { create as default, useStore };\n","function shallow(objA, objB) {\n if (Object.is(objA, objB)) {\n return true;\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n if (objA instanceof Map && objB instanceof Map) {\n if (objA.size !== objB.size)\n return false;\n for (const [key, value] of objA) {\n if (!Object.is(value, objB.get(key))) {\n return false;\n }\n }\n return true;\n }\n if (objA instanceof Set && objB instanceof Set) {\n if (objA.size !== objB.size)\n return false;\n for (const value of objA) {\n if (!objB.has(value)) {\n return false;\n }\n }\n return true;\n }\n const keysA = Object.keys(objA);\n if (keysA.length !== Object.keys(objB).length) {\n return false;\n }\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !Object.is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n return true;\n}\n\nexport { shallow as default };\n","import create from \"zustand\";\nimport shallow from \"zustand/shallow\";\nconst setCustomData = (customData) => {\n setPerf({ customData });\n};\nconst getCustomData = () => {\n return getPerf().customData;\n};\nconst usePerfImpl = create((set, get) => {\n function getReport() {\n var _a;\n const { accumulated, startTime, infos } = get();\n const maxMemory = (_a = get().log) == null ? void 0 : _a.maxMemory;\n const { totalFrames, log, gl, max } = accumulated;\n const glAverage = {\n calls: gl.calls / totalFrames,\n triangles: gl.triangles / totalFrames,\n points: gl.points / totalFrames,\n lines: gl.lines / totalFrames\n };\n const logAverage = {\n gpu: log.gpu / totalFrames,\n cpu: log.cpu / totalFrames,\n mem: log.mem / totalFrames,\n fps: log.fps / totalFrames\n };\n const sessionTime = (window.performance.now() - startTime) / 1e3;\n return {\n sessionTime,\n infos,\n log: logAverage,\n gl: glAverage,\n max,\n maxMemory,\n totalFrames\n };\n }\n return {\n log: null,\n paused: false,\n triggerProgramsUpdate: 0,\n startTime: 0,\n customData: 0,\n fpsLimit: 60,\n overclockingFps: false,\n accumulated: {\n totalFrames: 0,\n gl: {\n calls: 0,\n triangles: 0,\n points: 0,\n lines: 0,\n counts: 0\n },\n log: {\n gpu: 0,\n cpu: 0,\n mem: 0,\n fps: 0\n },\n max: {\n gl: {\n calls: 0,\n triangles: 0,\n points: 0,\n lines: 0,\n counts: 0\n },\n log: {\n gpu: 0,\n cpu: 0,\n mem: 0,\n fps: 0\n }\n }\n },\n chart: {\n data: {\n fps: [],\n cpu: [],\n gpu: [],\n mem: []\n },\n circularId: 0\n },\n gl: void 0,\n objectWithMaterials: null,\n scene: void 0,\n programs: /* @__PURE__ */ new Map(),\n sceneLength: void 0,\n tab: \"infos\",\n getReport\n };\n});\nconst usePerf = (sel) => usePerfImpl(sel, shallow);\nObject.assign(usePerf, usePerfImpl);\nconst { getState: getPerf, setState: setPerf } = usePerfImpl;\nexport {\n getCustomData,\n getPerf,\n setCustomData,\n setPerf,\n usePerf,\n usePerfImpl\n};\n//# sourceMappingURL=store.mjs.map\n","import { MathUtils } from \"three\";\nimport { setPerf, getPerf } from \"./store.mjs\";\nconst overLimitFps = {\n value: 0,\n fpsLimit: 60,\n isOverLimit: 0\n};\nconst average = (arr) => (arr == null ? void 0 : arr.reduce((a, b) => a + b, 0)) / arr.length;\nclass GLPerf {\n constructor(settings = {}) {\n this.names = [\"\"];\n this.finished = [];\n this.paused = false;\n this.overClock = false;\n this.queryHasResult = false;\n this.queryCreated = false;\n this.isWebGL2 = true;\n this.memAccums = [];\n this.gpuAccums = [];\n this.activeAccums = [];\n this.logsAccums = {\n mem: [],\n gpu: [],\n cpu: [],\n fps: [],\n fpsFixed: []\n };\n this.fpsChart = [];\n this.gpuChart = [];\n this.cpuChart = [];\n this.memChart = [];\n this.paramLogger = () => {\n };\n this.glFinish = () => {\n };\n this.chartLogger = () => {\n };\n this.chartLen = 60;\n this.logsPerSecond = 10;\n this.maxMemory = 1500;\n this.chartHz = 10;\n this.startCpuProfiling = false;\n this.lastCalculateFixed = 0;\n this.chartFrame = 0;\n this.gpuTimeProcess = 0;\n this.chartTime = 0;\n this.activeQueries = 0;\n this.circularId = 0;\n this.detected = 0;\n this.frameId = 0;\n this.rafId = 0;\n this.idleCbId = 0;\n this.checkQueryId = 0;\n this.uuid = void 0;\n this.currentCpu = 0;\n this.currentMem = 0;\n this.paramFrame = 0;\n this.paramTime = 0;\n this.now = () => {\n };\n this.t0 = 0;\n window.GLPerf = window.GLPerf || {};\n Object.assign(this, settings);\n this.fpsChart = new Array(this.chartLen).fill(0);\n this.gpuChart = new Array(this.chartLen).fill(0);\n this.cpuChart = new Array(this.chartLen).fill(0);\n this.memChart = new Array(this.chartLen).fill(0);\n this.now = () => window.performance && window.performance.now ? window.performance.now() : Date.now();\n this.initGpu();\n this.is120hz();\n }\n initGpu() {\n this.uuid = MathUtils.generateUUID();\n if (this.gl) {\n this.isWebGL2 = true;\n if (!this.extension) {\n this.extension = this.gl.getExtension(\"EXT_disjoint_timer_query_webgl2\");\n }\n if (this.extension === null) {\n this.isWebGL2 = false;\n }\n }\n }\n /**\n * 120hz device detection\n */\n is120hz() {\n let n = 0;\n const loop = (t) => {\n if (++n < 20) {\n this.rafId = window.requestAnimationFrame(loop);\n } else {\n this.detected = Math.ceil(1e3 * n / (t - this.t0) / 70);\n window.cancelAnimationFrame(this.rafId);\n }\n if (!this.t0)\n this.t0 = t;\n };\n this.rafId = window.requestAnimationFrame(loop);\n }\n /**\n * Explicit UI add\n * @param { string | undefined } name\n */\n addUI(name) {\n if (this.names.indexOf(name) === -1) {\n this.names.push(name);\n this.gpuAccums.push(0);\n this.activeAccums.push(false);\n }\n }\n nextFps(d) {\n const goal = 1e3 / 60;\n const elapsed = goal - d.timeRemaining();\n const fps = goal * overLimitFps.fpsLimit / 10 / elapsed;\n if (fps < 0)\n return;\n overLimitFps.value = fps;\n if (overLimitFps.isOverLimit < 25) {\n overLimitFps.isOverLimit++;\n } else {\n setPerf({ overclockingFps: true });\n }\n }\n /**\n * Increase frameID\n * @param { any | undefined } now\n */\n nextFrame(now) {\n this.frameId++;\n const t = now || this.now();\n let duration = t - this.paramTime;\n let gpu = 0;\n if (this.frameId <= 1) {\n this.paramFrame = this.frameId;\n this.paramTime = t;\n } else {\n if (t >= this.paramTime) {\n this.maxMemory = window.performance.memory ? window.performance.memory.jsHeapSizeLimit / 1048576 : 0;\n const frameCount = this.frameId - this.paramFrame;\n const fpsFixed = frameCount * 1e3 / duration;\n const fps = getPerf().overclockingFps ? overLimitFps.value : fpsFixed;\n gpu = this.isWebGL2 ? this.gpuAccums[0] : this.gpuAccums[0] / duration;\n if (this.isWebGL2) {\n this.gpuAccums[0] = 0;\n } else {\n Promise.all(this.finished).then(() => {\n this.gpuAccums[0] = 0;\n this.finished = [];\n });\n }\n this.currentMem = Math.round(\n window.performance && window.performance.memory ? window.performance.memory.usedJSHeapSize / 1048576 : 0\n );\n if (window.performance && this.startCpuProfiling) {\n window.performance.mark(\"cpu-finished\");\n const cpuMeasure = performance.measure(\"cpu-duration\", \"cpu-started\", \"cpu-finished\");\n this.currentCpu = cpuMeasure.duration;\n this.logsAccums.cpu.push(this.currentCpu);\n this.startCpuProfiling = false;\n }\n this.logsAccums.mem.push(this.currentMem);\n this.logsAccums.fpsFixed.push(fpsFixed);\n this.logsAccums.fps.push(fps);\n this.logsAccums.gpu.push(gpu);\n if (this.overClock && typeof window.requestIdleCallback !== \"undefined\") {\n if (overLimitFps.isOverLimit > 0 && fps > fpsFixed) {\n overLimitFps.isOverLimit--;\n } else if (getPerf().overclockingFps) {\n setPerf({ overclockingFps: false });\n }\n }\n if (t >= this.paramTime + 1e3 / this.logsPerSecond) {\n this.paramLogger({\n cpu: average(this.logsAccums.cpu),\n gpu: average(this.logsAccums.gpu),\n mem: average(this.logsAccums.mem),\n fps: average(this.logsAccums.fps),\n duration: Math.round(duration),\n maxMemory: this.maxMemory,\n frameCount\n });\n this.logsAccums.mem = [];\n this.logsAccums.fps = [];\n this.logsAccums.gpu = [];\n this.logsAccums.cpu = [];\n this.paramFrame = this.frameId;\n this.paramTime = t;\n }\n if (this.overClock) {\n if (t - this.lastCalculateFixed >= 2 * 1e3) {\n this.lastCalculateFixed = now;\n overLimitFps.fpsLimit = Math.round(average(this.logsAccums.fpsFixed) / 10) * 100;\n setPerf({ fpsLimit: overLimitFps.fpsLimit / 10 });\n this.logsAccums.fpsFixed = [];\n this.paramFrame = this.frameId;\n this.paramTime = t;\n }\n }\n }\n }\n if (!this.detected || !this.chartFrame) {\n this.chartFrame = this.frameId;\n this.chartTime = t;\n this.circularId = 0;\n } else {\n const timespan = t - this.chartTime;\n let hz = this.chartHz * timespan / 1e3;\n while (--hz > 0 && this.detected) {\n const frameCount = this.frameId - this.chartFrame;\n const fpsFixed = frameCount / timespan * 1e3;\n const fps = getPerf().overclockingFps ? overLimitFps.value : fpsFixed;\n this.fpsChart[this.circularId % this.chartLen] = fps;\n const memS = 1e3 / this.currentMem;\n const cpuS = this.currentCpu;\n const gpuS = (this.isWebGL2 ? this.gpuAccums[1] * 2 : Math.round(this.gpuAccums[1] / duration * 100)) + 4;\n if (gpuS > 0) {\n this.gpuChart[this.circularId % this.chartLen] = gpuS;\n }\n if (cpuS > 0) {\n this.cpuChart[this.circularId % this.chartLen] = cpuS;\n }\n if (memS > 0) {\n this.memChart[this.circularId % this.chartLen] = memS;\n }\n for (let i = 0; i < this.names.length; i++) {\n this.chartLogger({\n i,\n data: {\n fps: this.fpsChart,\n gpu: this.gpuChart,\n cpu: this.cpuChart,\n mem: this.memChart\n },\n circularId: this.circularId\n });\n }\n this.circularId++;\n this.chartFrame = this.frameId;\n this.chartTime = t;\n }\n }\n }\n startGpu() {\n const gl = this.gl;\n const ext = this.extension;\n if (!gl || !ext)\n return;\n if (this.isWebGL2) {\n let available = false;\n let disjoint, ns;\n if (this.query) {\n this.queryHasResult = false;\n let query = this.query;\n available = gl.getQueryParameter(query, gl.QUERY_RESULT_AVAILABLE);\n disjoint = gl.getParameter(ext.GPU_DISJOINT_EXT);\n if (available && !disjoint) {\n ns = gl.getQueryParameter(this.query, gl.QUERY_RESULT);\n const ms = ns * 1e-6;\n if (available || disjoint) {\n gl.deleteQuery(this.query);\n query = null;\n }\n if (available && ms > 0) {\n if (!disjoint) {\n this.activeAccums.forEach((_active, i) => {\n this.gpuAccums[i] = ms;\n });\n }\n }\n }\n }\n if (available || !this.query) {\n this.queryCreated = true;\n this.query = gl.createQuery();\n gl.beginQuery(ext.TIME_ELAPSED_EXT, this.query);\n }\n }\n }\n endGpu() {\n const ext = this.extension;\n const gl = this.gl;\n if (this.isWebGL2 && this.queryCreated && gl.getQuery(ext.TIME_ELAPSED_EXT, gl.CURRENT_QUERY)) {\n gl.endQuery(ext.TIME_ELAPSED_EXT);\n }\n }\n /**\n * Begin named measurement\n * @param { string | undefined } name\n */\n begin(name) {\n this.startGpu();\n this.updateAccums(name);\n }\n /**\n * End named measure\n * @param { string | undefined } name\n */\n end(name) {\n this.endGpu();\n this.updateAccums(name);\n }\n updateAccums(name) {\n let nameId = this.names.indexOf(name);\n if (nameId === -1) {\n nameId = this.names.length;\n this.addUI(name);\n }\n const t = this.now();\n this.activeAccums[nameId] = !this.activeAccums[nameId];\n this.t0 = t;\n }\n}\nexport {\n GLPerf,\n overLimitFps\n};\n//# sourceMappingURL=internal.mjs.map\n","const countGeoDrawCalls = (programs) => {\n programs.forEach((program, _pkey) => {\n const { meshes } = program;\n if (!meshes) {\n return;\n }\n let drawCounts2 = {\n total: 0,\n type: \"Triangle\",\n data: []\n };\n Object.keys(meshes).forEach((key) => {\n const mesh = meshes[key];\n const { geometry, material } = mesh;\n let index = geometry.index;\n const position = geometry.attributes.position;\n if (!position)\n return;\n let rangeFactor = 1;\n if (material.wireframe === true) {\n rangeFactor = 0;\n }\n const dataCount = index !== null ? index.count : position.count;\n const rangeStart = geometry.drawRange.start * rangeFactor;\n const rangeCount = geometry.drawRange.count * rangeFactor;\n const drawStart = rangeStart;\n const drawEnd = Math.min(dataCount, rangeStart + rangeCount) - 1;\n let countInstanceRatio = 1;\n const instanceCount = mesh.count || 1;\n let type = \"Triangle\";\n let mostDrawCalls = 0;\n if (mesh.isMesh) {\n if (material.wireframe === true) {\n type = \"Line\";\n countInstanceRatio = countInstanceRatio / 2;\n } else {\n type = \"Triangle\";\n countInstanceRatio = countInstanceRatio / 3;\n }\n } else if (mesh.isLine) {\n type = \"Line\";\n if (mesh.isLineSegments) {\n countInstanceRatio = countInstanceRatio / 2;\n } else if (mesh.isLineLoop) {\n countInstanceRatio = countInstanceRatio;\n } else {\n countInstanceRatio = countInstanceRatio - 1;\n }\n } else if (mesh.isPoints) {\n type = \"Point\";\n countInstanceRatio = countInstanceRatio;\n } else if (mesh.isSprite) {\n type = \"Triangle\";\n countInstanceRatio = countInstanceRatio / 3;\n }\n const drawCount = Math.round(Math.max(0, drawEnd - drawStart + 1) * (countInstanceRatio * instanceCount));\n if (drawCount > mostDrawCalls) {\n mostDrawCalls = drawCount;\n drawCounts2.type = type;\n }\n drawCounts2.total += drawCount;\n drawCounts2.data.push({ drawCount, type });\n mesh.userData.drawCount = {\n type,\n count: drawCount\n };\n });\n program.drawCounts = drawCounts2;\n });\n};\nexport {\n countGeoDrawCalls\n};\n//# sourceMappingURL=countGeoDrawCalls.mjs.map\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","import EventEmitter from \"eventemitter3\";\nconst eventEmitter = /* @__PURE__ */ new EventEmitter();\nfunction onEvent(eventName, handler, options) {\n return (options == null ? void 0 : options.once) ? eventEmitter.once(eventName, handler) : eventEmitter.on(eventName, handler);\n}\nfunction offEvent(eventName, handler, options) {\n var _a;\n eventEmitter.removeListener(eventName, handler, (_a = options == null ? void 0 : options.context) != null ? _a : null, options == null ? void 0 : options.once);\n}\nfunction emitEvent(eventName, payload) {\n eventEmitter.emit(eventName, payload);\n}\nexport {\n emitEvent,\n offEvent,\n onEvent\n};\n//# sourceMappingURL=vanilla.mjs.map\n","import { useRef, useEffect } from \"react\";\nimport { onEvent, offEvent } from \"./vanilla.mjs\";\nfunction useEvent(eventName, handler, deps = [], options) {\n const handlerRef = useRef(handler);\n useEffect(() => void (handlerRef.current = handler), [handler]);\n useEffect(() => {\n const handler2 = (event) => {\n var _a;\n return (_a = handlerRef.current) == null ? void 0 : _a.call(handlerRef, event);\n };\n const context = onEvent(eventName, handler2, options);\n return () => offEvent(eventName, handler2, { ...options, context });\n }, [eventName, options == null ? void 0 : options.once, ...deps]);\n}\nexport {\n useEvent\n};\n//# sourceMappingURL=react.mjs.map\n","import { useMemo, useEffect } from \"react\";\nimport { useThree, addEffect, addAfterEffect, addTail } from \"@react-three/fiber\";\nimport { GLPerf, overLimitFps } from \"../internal.mjs\";\nimport * as THREE from \"three\";\nimport { countGeoDrawCalls } from \"../helpers/countGeoDrawCalls.mjs\";\nimport { setPerf, getPerf } from \"../store.mjs\";\nimport { emitEvent } from \"@utsubo/events\";\nconst updateMatrixWorldTemp = THREE.Object3D.prototype.updateMatrixWorld;\nconst updateWorldMatrixTemp = THREE.Object3D.prototype.updateWorldMatrix;\nconst updateMatrixTemp = THREE.Object3D.prototype.updateMatrix;\nconst maxGl = [\"calls\", \"triangles\", \"points\", \"lines\"];\nconst maxLog = [\"gpu\", \"cpu\", \"mem\", \"fps\"];\nlet matriceWorldCount = {\n value: 0\n};\nlet matriceCount = {\n value: 0\n};\nconst isUUID = (uuid) => {\n let s = \"\" + uuid;\n s = s.match(\"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$\");\n if (s === null) {\n return false;\n }\n return true;\n};\nconst addMuiPerfID = (material, currentObjectWithMaterials) => {\n if (!material.defines) {\n material.defines = {};\n }\n if (material.defines && !material.defines.muiPerf) {\n material.defines = Object.assign(material.defines || {}, {\n muiPerf: material.uuid\n });\n }\n const uuid = material.uuid;\n if (!currentObjectWithMaterials[uuid]) {\n currentObjectWithMaterials[uuid] = {\n meshes: {},\n material\n };\n material.needsUpdate = true;\n }\n material.needsUpdate = false;\n return uuid;\n};\nconst getMUIIndex = (muid) => muid === \"muiPerf\";\nconst PerfHeadless = ({ overClock, logsPerSecond, chart, deepAnalyze, matrixUpdate }) => {\n const { gl, scene } = useThree();\n setPerf({ gl, scene });\n const PerfLib = useMemo(() => {\n const PerfLib2 = new GLPerf({\n trackGPU: true,\n overClock,\n chartLen: chart ? chart.length : 120,\n chartHz: chart ? chart.hz : 60,\n logsPerSecond: logsPerSecond || 10,\n gl: gl.getContext(),\n chartLogger: (chart2) => {\n setPerf({ chart: chart2 });\n },\n paramLogger: (logger) => {\n const log = {\n maxMemory: logger.maxMemory,\n gpu: logger.gpu,\n cpu: logger.cpu,\n mem: logger.mem,\n fps: logger.fps,\n totalTime: logger.duration,\n frameCount: logger.frameCount\n };\n setPerf({\n log\n });\n const { accumulated } = getPerf();\n const glRender = gl.info.render;\n accumulated.totalFrames++;\n accumulated.gl.calls += glRender.calls;\n accumulated.gl.triangles += glRender.triangles;\n accumulated.gl.points += glRender.points;\n accumulated.gl.lines += glRender.lines;\n accumulated.log.gpu += logger.gpu;\n accumulated.log.cpu += logger.cpu;\n accumulated.log.mem += logger.mem;\n accumulated.log.fps += logger.fps;\n for (let i = 0; i < maxGl.length; i++) {\n const key = maxGl[i];\n const value = glRender[key];\n if (value > accumulated.max.gl[key]) {\n accumulated.max.gl[key] = value;\n }\n }\n for (let i = 0; i < maxLog.length; i++) {\n const key = maxLog[i];\n const value = logger[key];\n if (value > accumulated.max.log[key]) {\n accumulated.max.log[key] = value;\n }\n }\n setPerf({ accumulated });\n emitEvent(\"log\", [log, gl]);\n }\n });\n const ctx = gl.getContext();\n let glRenderer = null;\n let glVendor = null;\n const rendererInfo = ctx.getExtension(\"WEBGL_debug_renderer_info\");\n const glVersion = ctx.getParameter(ctx.VERSION);\n if (rendererInfo != null) {\n glRenderer = ctx.getParameter(rendererInfo.UNMASKED_RENDERER_WEBGL);\n glVendor = ctx.getParameter(rendererInfo.UNMASKED_VENDOR_WEBGL);\n }\n if (!glVendor) {\n glVendor = \"Unknown vendor\";\n }\n if (!glRenderer) {\n glRenderer = ctx.getParameter(ctx.RENDERER);\n }\n setPerf({\n startTime: window.performance.now(),\n infos: {\n version: glVersion,\n renderer: glRenderer,\n vendor: glVendor\n }\n });\n const callbacks = /* @__PURE__ */ new Map();\n const callbacksAfter = /* @__PURE__ */ new Map();\n Object.defineProperty(THREE.Scene.prototype, \"onBeforeRender\", {\n get() {\n return (...args) => {\n var _a;\n if (PerfLib2) {\n PerfLib2.begin(\"profiler\");\n }\n (_a = callbacks.get(this)) == null ? void 0 : _a(...args);\n };\n },\n set(callback) {\n callbacks.set(this, callback);\n },\n configurable: true\n });\n Object.defineProperty(THREE.Scene.prototype, \"onAfterRender\", {\n get() {\n return (...args) => {\n var _a;\n if (PerfLib2) {\n PerfLib2.end(\"profiler\");\n }\n (_a = callbacksAfter.get(this)) == null ? void 0 : _a(...args);\n };\n },\n set(callback) {\n callbacksAfter.set(this, callback);\n },\n configurable: true\n });\n return PerfLib2;\n }, []);\n useEffect(() => {\n if (PerfLib) {\n PerfLib.overClock = overClock || false;\n if (overClock === false) {\n setPerf({ overclockingFps: false });\n overLimitFps.value = 0;\n overLimitFps.isOverLimit = 0;\n }\n PerfLib.chartHz = (chart == null ? void 0 : chart.hz) || 60;\n PerfLib.chartLen = (chart == null ? void 0 : chart.length) || 120;\n }\n }, [overClock, PerfLib, chart == null ? void 0 : chart.length, chart == null ? void 0 : chart.hz]);\n useEffect(() => {\n if (matrixUpdate) {\n THREE.Object3D.prototype.updateMatrixWorld = function() {\n if (this.matrixWorldNeedsUpdate || arguments[0]) {\n matriceWorldCount.value++;\n }\n updateMatrixWorldTemp.apply(this, arguments);\n };\n THREE.Object3D.prototype.updateWorldMatrix = function() {\n matriceWorldCount.value++;\n updateWorldMatrixTemp.apply(this, arguments);\n };\n THREE.Object3D.prototype.updateMatrix = function() {\n matriceCount.value++;\n updateMatrixTemp.apply(this, arguments);\n };\n }\n gl.info.autoReset = false;\n let effectSub = null;\n let afterEffectSub = null;\n if (!gl.info)\n return;\n effectSub = addEffect(function preRafR3FPerf() {\n if (getPerf().paused) {\n setPerf({ paused: false });\n }\n if (window.performance) {\n window.performance.mark(\"cpu-started\");\n PerfLib.startCpuProfiling = true;\n }\n matriceCount.value -= 1;\n matriceWorldCount.value = 0;\n matriceCount.value = 0;\n if (gl.info) {\n gl.info.reset();\n }\n });\n afterEffectSub = addAfterEffect(function postRafR3FPerf() {\n var _a, _b;\n if (PerfLib && !PerfLib.paused) {\n PerfLib.nextFrame(window.performance.now());\n if (overClock && typeof window.requestIdleCallback !== \"undefined\") {\n PerfLib.idleCbId = requestIdleCallback(PerfLib.nextFps);\n }\n }\n if (deepAnalyze) {\n const currentObjectWithMaterials = {};\n const programs = /* @__PURE__ */ new Map();\n scene.traverse(function deepAnalyzeR3FPerf(object) {\n if (object instanceof THREE.Mesh || object instanceof THREE.Points) {\n if (object.material) {\n let uuid = object.material.uuid;\n const isTroika = Array.isArray(object.material) && object.material.length > 1;\n if (isTroika) {\n uuid = addMuiPerfID(object.material[1], currentObjectWithMaterials);\n } else {\n uuid = addMuiPerfID(object.material, currentObjectWithMaterials);\n }\n currentObjectWithMaterials[uuid].meshes[object.uuid] = object;\n }\n }\n });\n (_b = (_a = gl == null ? void 0 : gl.info) == null ? void 0 : _a.programs) == null ? void 0 : _b.forEach((program) => {\n const cacheKeySplited = program.cacheKey.split(\",\");\n const muiPerfTracker = cacheKeySplited[cacheKeySplited.findIndex(getMUIIndex) + 1];\n if (isUUID(muiPerfTracker) && currentObjectWithMaterials[muiPerfTracker]) {\n const { material, meshes } = currentObjectWithMaterials[muiPerfTracker];\n programs.set(muiPerfTracker, {\n program,\n material,\n meshes,\n drawCounts: {\n total: 0,\n type: \"triangle\",\n data: []\n },\n expand: false,\n visible: true\n });\n }\n });\n if (programs.size !== getPerf().programs.size) {\n countGeoDrawCalls(programs);\n setPerf({\n programs,\n triggerProgramsUpdate: getPerf().triggerProgramsUpdate++\n });\n }\n }\n });\n return () => {\n if (PerfLib) {\n if (typeof window.cancelIdleCallback !== \"undefined\") {\n window.cancelIdleCallback(PerfLib.idleCbId);\n }\n window.cancelAnimationFrame(PerfLib.rafId);\n window.cancelAnimationFrame(PerfLib.checkQueryId);\n }\n if (matrixUpdate) {\n THREE.Object3D.prototype.updateMatrixWorld = updateMatrixTemp;\n }\n effectSub();\n afterEffectSub();\n };\n }, [PerfLib, gl, chart, matrixUpdate]);\n useEffect(() => {\n const unsub = addTail(function postRafTailR3FPerf() {\n if (PerfLib) {\n PerfLib.paused = true;\n matriceCount.value = 0;\n matriceWorldCount.value = 0;\n setPerf({\n paused: true,\n log: {\n maxMemory: 0,\n gpu: 0,\n mem: 0,\n cpu: 0,\n fps: 0,\n totalTime: 0,\n frameCount: 0\n }\n });\n }\n return false;\n });\n return () => {\n unsub();\n };\n }, []);\n return null;\n};\nexport {\n PerfHeadless,\n matriceCount,\n matriceWorldCount\n};\n//# sourceMappingURL=PerfHeadless.mjs.map\n","var e=\"colors\",t=\"sizes\",r=\"space\",n={gap:r,gridGap:r,columnGap:r,gridColumnGap:r,rowGap:r,gridRowGap:r,inset:r,insetBlock:r,insetBlockEnd:r,insetBlockStart:r,insetInline:r,insetInlineEnd:r,insetInlineStart:r,margin:r,marginTop:r,marginRight:r,marginBottom:r,marginLeft:r,marginBlock:r,marginBlockEnd:r,marginBlockStart:r,marginInline:r,marginInlineEnd:r,marginInlineStart:r,padding:r,paddingTop:r,paddingRight:r,paddingBottom:r,paddingLeft:r,paddingBlock:r,paddingBlockEnd:r,paddingBlockStart:r,paddingInline:r,paddingInlineEnd:r,paddingInlineStart:r,top:r,right:r,bottom:r,left:r,scrollMargin:r,scrollMarginTop:r,scrollMarginRight:r,scrollMarginBottom:r,scrollMarginLeft:r,scrollMarginX:r,scrollMarginY:r,scrollMarginBlock:r,scrollMarginBlockEnd:r,scrollMarginBlockStart:r,scrollMarginInline:r,scrollMarginInlineEnd:r,scrollMarginInlineStart:r,scrollPadding:r,scrollPaddingTop:r,scrollPaddingRight:r,scrollPaddingBottom:r,scrollPaddingLeft:r,scrollPaddingX:r,scrollPaddingY:r,scrollPaddingBlock:r,scrollPaddingBlockEnd:r,scrollPaddingBlockStart:r,scrollPaddingInline:r,scrollPaddingInlineEnd:r,scrollPaddingInlineStart:r,fontSize:\"fontSizes\",background:e,backgroundColor:e,backgroundImage:e,borderImage:e,border:e,borderBlock:e,borderBlockEnd:e,borderBlockStart:e,borderBottom:e,borderBottomColor:e,borderColor:e,borderInline:e,borderInlineEnd:e,borderInlineStart:e,borderLeft:e,borderLeftColor:e,borderRight:e,borderRightColor:e,borderTop:e,borderTopColor:e,caretColor:e,color:e,columnRuleColor:e,fill:e,outline:e,outlineColor:e,stroke:e,textDecorationColor:e,fontFamily:\"fonts\",fontWeight:\"fontWeights\",lineHeight:\"lineHeights\",letterSpacing:\"letterSpacings\",blockSize:t,minBlockSize:t,maxBlockSize:t,inlineSize:t,minInlineSize:t,maxInlineSize:t,width:t,minWidth:t,maxWidth:t,height:t,minHeight:t,maxHeight:t,flexBasis:t,gridTemplateColumns:t,gridTemplateRows:t,borderWidth:\"borderWidths\",borderTopWidth:\"borderWidths\",borderRightWidth:\"borderWidths\",borderBottomWidth:\"borderWidths\",borderLeftWidth:\"borderWidths\",borderStyle:\"borderStyles\",borderTopStyle:\"borderStyles\",borderRightStyle:\"borderStyles\",borderBottomStyle:\"borderStyles\",borderLeftStyle:\"borderStyles\",borderRadius:\"radii\",borderTopLeftRadius:\"radii\",borderTopRightRadius:\"radii\",borderBottomRightRadius:\"radii\",borderBottomLeftRadius:\"radii\",boxShadow:\"shadows\",textShadow:\"shadows\",transition:\"transitions\",zIndex:\"zIndices\"},i=(e,t)=>\"function\"==typeof t?{\"()\":Function.prototype.toString.call(t)}:t,o=()=>{const e=Object.create(null);return(t,r,...n)=>{const o=(e=>JSON.stringify(e,i))(t);return o in e?e[o]:e[o]=r(t,...n)}},l=Symbol.for(\"sxs.internal\"),s=(e,t)=>Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)),a=e=>{for(const t in e)return!0;return!1},{hasOwnProperty:c}=Object.prototype,d=e=>e.includes(\"-\")?e:e.replace(/[A-Z]/g,(e=>\"-\"+e.toLowerCase())),g=/\\s+(?![^()]*\\))/,p=e=>t=>e(...\"string\"==typeof t?String(t).split(g):[t]),u={appearance:e=>({WebkitAppearance:e,appearance:e}),backfaceVisibility:e=>({WebkitBackfaceVisibility:e,backfaceVisibility:e}),backdropFilter:e=>({WebkitBackdropFilter:e,backdropFilter:e}),backgroundClip:e=>({WebkitBackgroundClip:e,backgroundClip:e}),boxDecorationBreak:e=>({WebkitBoxDecorationBreak:e,boxDecorationBreak:e}),clipPath:e=>({WebkitClipPath:e,clipPath:e}),content:e=>({content:e.includes('\"')||e.includes(\"'\")||/^([A-Za-z]+\\([^]*|[^]*-quote|inherit|initial|none|normal|revert|unset)$/.test(e)?e:`\"${e}\"`}),hyphens:e=>({WebkitHyphens:e,hyphens:e}),maskImage:e=>({WebkitMaskImage:e,maskImage:e}),maskSize:e=>({WebkitMaskSize:e,maskSize:e}),tabSize:e=>({MozTabSize:e,tabSize:e}),textSizeAdjust:e=>({WebkitTextSizeAdjust:e,textSizeAdjust:e}),userSelect:e=>({WebkitUserSelect:e,userSelect:e}),marginBlock:p(((e,t)=>({marginBlockStart:e,marginBlockEnd:t||e}))),marginInline:p(((e,t)=>({marginInlineStart:e,marginInlineEnd:t||e}))),maxSize:p(((e,t)=>({maxBlockSize:e,maxInlineSize:t||e}))),minSize:p(((e,t)=>({minBlockSize:e,minInlineSize:t||e}))),paddingBlock:p(((e,t)=>({paddingBlockStart:e,paddingBlockEnd:t||e}))),paddingInline:p(((e,t)=>({paddingInlineStart:e,paddingInlineEnd:t||e})))},h=/([\\d.]+)([^]*)/,f=(e,t)=>e.length?e.reduce(((e,r)=>(e.push(...t.map((e=>e.includes(\"&\")?e.replace(/&/g,/[ +>|~]/.test(r)&&/&.*&/.test(e)?`:is(${r})`:r):r+\" \"+e))),e)),[]):t,m=(e,t)=>e in b&&\"string\"==typeof t?t.replace(/^((?:[^]*[^\\w-])?)(fit-content|stretch)((?:[^\\w-][^]*)?)$/,((t,r,n,i)=>r+(\"stretch\"===n?`-moz-available${i};${d(e)}:${r}-webkit-fill-available`:`-moz-fit-content${i};${d(e)}:${r}fit-content`)+i)):String(t),b={blockSize:1,height:1,inlineSize:1,maxBlockSize:1,maxHeight:1,maxInlineSize:1,maxWidth:1,minBlockSize:1,minHeight:1,minInlineSize:1,minWidth:1,width:1},S=e=>e?e+\"-\":\"\",k=(e,t,r)=>e.replace(/([+-])?((?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[Ee][+-]?\\d+)?)?(\\$|--)([$\\w-]+)/g,((e,n,i,o,l)=>\"$\"==o==!!i?e:(n||\"--\"==o?\"calc(\":\"\")+\"var(--\"+(\"$\"===o?S(t)+(l.includes(\"$\")?\"\":S(r))+l.replace(/\\$/g,\"-\"):l)+\")\"+(n||\"--\"==o?\"*\"+(n||\"\")+(i||\"1\")+\")\":\"\"))),y=/\\s*,\\s*(?![^()]*\\))/,B=Object.prototype.toString,$=(e,t,r,n,i)=>{let o,l,s;const a=(e,t,r)=>{let c,g;const p=e=>{for(c in e){const R=64===c.charCodeAt(0),z=R&&Array.isArray(e[c])?e[c]:[e[c]];for(g of z){const e=/[A-Z]/.test($=c)?$:$.replace(/-[^]/g,(e=>e[1].toUpperCase())),z=\"object\"==typeof g&&g&&g.toString===B&&(!n.utils[e]||!t.length);if(e in n.utils&&!z){const t=n.utils[e];if(t!==l){l=t,p(t(g)),l=null;continue}}else if(e in u){const t=u[e];if(t!==s){s=t,p(t(g)),s=null;continue}}if(R&&(b=c.slice(1)in n.media?\"@media \"+n.media[c.slice(1)]:c,c=b.replace(/\\(\\s*([\\w-]+)\\s*(=|<|<=|>|>=)\\s*([\\w-]+)\\s*(?:(<|<=|>|>=)\\s*([\\w-]+)\\s*)?\\)/g,((e,t,r,n,i,o)=>{const l=h.test(t),s=.0625*(l?-1:1),[a,c]=l?[n,t]:[t,n];return\"(\"+(\"=\"===r[0]?\"\":\">\"===r[0]===l?\"max-\":\"min-\")+a+\":\"+(\"=\"!==r[0]&&1===r.length?c.replace(h,((e,t,n)=>Number(t)+s*(\">\"===r?1:-1)+n)):c)+(i?\") and (\"+(\">\"===i[0]?\"min-\":\"max-\")+a+\":\"+(1===i.length?o.replace(h,((e,t,r)=>Number(t)+s*(\">\"===i?-1:1)+r)):o):\"\")+\")\"}))),z){const e=R?r.concat(c):[...r],n=R?[...t]:f(t,c.split(y));void 0!==o&&i(x(...o)),o=void 0,a(g,n,e)}else void 0===o&&(o=[[],t,r]),c=R||36!==c.charCodeAt(0)?c:`--${S(n.prefix)}${c.slice(1).replace(/\\$/g,\"-\")}`,g=z?g:\"number\"==typeof g?g&&e in I?String(g)+\"px\":String(g):k(m(e,null==g?\"\":g),n.prefix,n.themeMap[e]),o[0].push(`${R?`${c} `:`${d(c)}:`}${g}`)}}var b,$};p(e),void 0!==o&&i(x(...o)),o=void 0};a(e,t,r)},x=(e,t,r)=>`${r.map((e=>`${e}{`)).join(\"\")}${t.length?`${t.join(\",\")}{`:\"\"}${e.join(\";\")}${t.length?\"}\":\"\"}${Array(r.length?r.length+1:0).join(\"}\")}`,I={animationDelay:1,animationDuration:1,backgroundSize:1,blockSize:1,border:1,borderBlock:1,borderBlockEnd:1,borderBlockEndWidth:1,borderBlockStart:1,borderBlockStartWidth:1,borderBlockWidth:1,borderBottom:1,borderBottomLeftRadius:1,borderBottomRightRadius:1,borderBottomWidth:1,borderEndEndRadius:1,borderEndStartRadius:1,borderInlineEnd:1,borderInlineEndWidth:1,borderInlineStart:1,borderInlineStartWidth:1,borderInlineWidth:1,borderLeft:1,borderLeftWidth:1,borderRadius:1,borderRight:1,borderRightWidth:1,borderSpacing:1,borderStartEndRadius:1,borderStartStartRadius:1,borderTop:1,borderTopLeftRadius:1,borderTopRightRadius:1,borderTopWidth:1,borderWidth:1,bottom:1,columnGap:1,columnRule:1,columnRuleWidth:1,columnWidth:1,containIntrinsicSize:1,flexBasis:1,fontSize:1,gap:1,gridAutoColumns:1,gridAutoRows:1,gridTemplateColumns:1,gridTemplateRows:1,height:1,inlineSize:1,inset:1,insetBlock:1,insetBlockEnd:1,insetBlockStart:1,insetInline:1,insetInlineEnd:1,insetInlineStart:1,left:1,letterSpacing:1,margin:1,marginBlock:1,marginBlockEnd:1,marginBlockStart:1,marginBottom:1,marginInline:1,marginInlineEnd:1,marginInlineStart:1,marginLeft:1,marginRight:1,marginTop:1,maxBlockSize:1,maxHeight:1,maxInlineSize:1,maxWidth:1,minBlockSize:1,minHeight:1,minInlineSize:1,minWidth:1,offsetDistance:1,offsetRotate:1,outline:1,outlineOffset:1,outlineWidth:1,overflowClipMargin:1,padding:1,paddingBlock:1,paddingBlockEnd:1,paddingBlockStart:1,paddingBottom:1,paddingInline:1,paddingInlineEnd:1,paddingInlineStart:1,paddingLeft:1,paddingRight:1,paddingTop:1,perspective:1,right:1,rowGap:1,scrollMargin:1,scrollMarginBlock:1,scrollMarginBlockEnd:1,scrollMarginBlockStart:1,scrollMarginBottom:1,scrollMarginInline:1,scrollMarginInlineEnd:1,scrollMarginInlineStart:1,scrollMarginLeft:1,scrollMarginRight:1,scrollMarginTop:1,scrollPadding:1,scrollPaddingBlock:1,scrollPaddingBlockEnd:1,scrollPaddingBlockStart:1,scrollPaddingBottom:1,scrollPaddingInline:1,scrollPaddingInlineEnd:1,scrollPaddingInlineStart:1,scrollPaddingLeft:1,scrollPaddingRight:1,scrollPaddingTop:1,shapeMargin:1,textDecoration:1,textDecorationThickness:1,textIndent:1,textUnderlineOffset:1,top:1,transitionDelay:1,transitionDuration:1,verticalAlign:1,width:1,wordSpacing:1},R=e=>String.fromCharCode(e+(e>25?39:97)),z=e=>(e=>{let t,r=\"\";for(t=Math.abs(e);t>52;t=t/52|0)r=R(t%52)+r;return R(t%52)+r})(((e,t)=>{let r=t.length;for(;r;)e=33*e^t.charCodeAt(--r);return e})(5381,JSON.stringify(e))>>>0),W=[\"themed\",\"global\",\"styled\",\"onevar\",\"resonevar\",\"allvar\",\"inline\"],j=e=>{if(e.href&&!e.href.startsWith(location.origin))return!1;try{return!!e.cssRules}catch(e){return!1}},E=e=>{let t;const r=()=>{const{cssRules:e}=t.sheet;return[].map.call(e,((r,n)=>{const{cssText:i}=r;let o=\"\";if(i.startsWith(\"--sxs\"))return\"\";if(e[n-1]&&(o=e[n-1].cssText).startsWith(\"--sxs\")){if(!r.cssRules.length)return\"\";for(const e in t.rules)if(t.rules[e].group===r)return`--sxs{--sxs:${[...t.rules[e].cache].join(\" \")}}${i}`;return r.cssRules.length?`${o}${i}`:\"\"}return i})).join(\"\")},n=()=>{if(t){const{rules:e,sheet:r}=t;if(!r.deleteRule){for(;3===Object(Object(r.cssRules)[0]).type;)r.cssRules.splice(0,1);r.cssRules=[]}for(const t in e)delete e[t]}const i=Object(e).styleSheets||[];for(const e of i)if(j(e)){for(let i=0,o=e.cssRules;o[i];++i){const l=Object(o[i]);if(1!==l.type)continue;const s=Object(o[i+1]);if(4!==s.type)continue;++i;const{cssText:a}=l;if(!a.startsWith(\"--sxs\"))continue;const c=a.slice(14,-3).trim().split(/\\s+/),d=W[c[0]];d&&(t||(t={sheet:e,reset:n,rules:{},toString:r}),t.rules[d]={group:s,index:i,cache:new Set(c)})}if(t)break}if(!t){const i=(e,t)=>({type:t,cssRules:[],insertRule(e,t){this.cssRules.splice(t,0,i(e,{import:3,undefined:1}[(e.toLowerCase().match(/^@([a-z]+)/)||[])[1]]||4))},get cssText(){return\"@media{}\"===e?`@media{${[].map.call(this.cssRules,(e=>e.cssText)).join(\"\")}}`:e}});t={sheet:e?(e.head||e).appendChild(document.createElement(\"style\")).sheet:i(\"\",\"text/css\"),rules:{},reset:n,toString:r}}const{sheet:o,rules:l}=t;for(let e=W.length-1;e>=0;--e){const t=W[e];if(!l[t]){const r=W[e+1],n=l[r]?l[r].index:o.cssRules.length;o.insertRule(\"@media{}\",n),o.insertRule(`--sxs{--sxs:${e}}`,n),l[t]={group:o.cssRules[n+1],index:n,cache:new Set([e])}}v(l[t])}};return n(),t},v=e=>{const t=e.group;let r=t.cssRules.length;e.apply=e=>{try{t.insertRule(e,r),++r}catch(e){}}},T=Symbol(),w=o(),M=(e,t)=>w(e,(()=>(...r)=>{let n={type:null,composers:new Set};for(const t of r)if(null!=t)if(t[l]){null==n.type&&(n.type=t[l].type);for(const e of t[l].composers)n.composers.add(e)}else t.constructor!==Object||t.$$typeof?null==n.type&&(n.type=t):n.composers.add(C(t,e));return null==n.type&&(n.type=\"span\"),n.composers.size||n.composers.add([\"PJLV\",{},[],[],{},[]]),P(e,n,t)})),C=({variants:e,compoundVariants:t,defaultVariants:r,...n},i)=>{const o=`${S(i.prefix)}c-${z(n)}`,l=[],s=[],d=Object.create(null),g=[];for(const e in r)d[e]=String(r[e]);if(\"object\"==typeof e&&e)for(const t in e){p=d,u=t,c.call(p,u)||(d[t]=\"undefined\");const r=e[t];for(const e in r){const n={[t]:String(e)};\"undefined\"===String(e)&&g.push(t);const i=r[e],o=[n,i,!a(i)];l.push(o)}}var p,u;if(\"object\"==typeof t&&t)for(const e of t){let{css:t,...r}=e;t=\"object\"==typeof t&&t||{};for(const e in r)r[e]=String(r[e]);const n=[r,t,!a(t)];s.push(n)}return[o,n,l,s,d,g]},P=(e,t,r)=>{const[n,i,o,a]=L(t.composers),c=\"function\"==typeof t.type||t.type.$$typeof?(e=>{function t(){for(let r=0;rt.rules[e]={apply:r=>t[T].push([e,r])})),t})(r):null,d=(c||r).rules,g=`.${n}${i.length>1?`:where(.${i.slice(1).join(\".\")})`:\"\"}`,p=l=>{l=\"object\"==typeof l&&l||A;const{css:s,...p}=l,u={};for(const e in o)if(delete p[e],e in l){let t=l[e];\"object\"==typeof t&&t?u[e]={\"@initial\":o[e],...t}:(t=String(t),u[e]=\"undefined\"!==t||a.has(e)?t:o[e])}else u[e]=o[e];const h=new Set([...i]);for(const[n,i,o,l]of t.composers){r.rules.styled.cache.has(n)||(r.rules.styled.cache.add(n),$(i,[`.${n}`],[],e,(e=>{d.styled.apply(e)})));const t=O(o,u,e.media),s=O(l,u,e.media,!0);for(const i of t)if(void 0!==i)for(const[t,o,l]of i){const i=`${n}-${z(o)}-${t}`;h.add(i);const s=(l?r.rules.resonevar:r.rules.onevar).cache,a=l?d.resonevar:d.onevar;s.has(i)||(s.add(i),$(o,[`.${i}`],[],e,(e=>{a.apply(e)})))}for(const t of s)if(void 0!==t)for(const[i,o]of t){const t=`${n}-${z(o)}-${i}`;h.add(t),r.rules.allvar.cache.has(t)||(r.rules.allvar.cache.add(t),$(o,[`.${t}`],[],e,(e=>{d.allvar.apply(e)})))}}if(\"object\"==typeof s&&s){const t=`${n}-i${z(s)}-css`;h.add(t),r.rules.inline.cache.has(t)||(r.rules.inline.cache.add(t),$(s,[`.${t}`],[],e,(e=>{d.inline.apply(e)})))}for(const e of String(l.className||\"\").trim().split(/\\s+/))e&&h.add(e);const f=p.className=[...h].join(\" \");return{type:t.type,className:f,selector:g,props:p,toString:()=>f,deferredInjector:c}};return s(p,{className:n,selector:g,[l]:t,toString:()=>(r.rules.styled.cache.has(n)||p(),n)})},L=e=>{let t=\"\";const r=[],n={},i=[];for(const[o,,,,l,s]of e){\"\"===t&&(t=o),r.push(o),i.push(...s);for(const e in l){const t=l[e];(void 0===n[e]||\"undefined\"!==t||s.includes(t))&&(n[e]=t)}}return[t,r,n,new Set(i)]},O=(e,t,r,n)=>{const i=[];e:for(let[o,l,s]of e){if(s)continue;let e,a=0,c=!1;for(e in o){const n=o[e];let i=t[e];if(i!==n){if(\"object\"!=typeof i||!i)continue e;{let e,t,o=0;for(const l in i){if(n===String(i[l])){if(\"@initial\"!==l){const e=l.slice(1);(t=t||[]).push(e in r?r[e]:l.replace(/^@media ?/,\"\")),c=!0}a+=o,e=!0}++o}if(t&&t.length&&(l={[\"@media \"+t.join(\", \")]:l}),!e)continue e}}}(i[a]=i[a]||[]).push([n?\"cv\":`${e}-${o[e]}`,l,c])}return i},A={},N=o(),D=(e,t)=>N(e,(()=>(...r)=>{const n=()=>{for(let n of r){n=\"object\"==typeof n&&n||{};let r=z(n);if(!t.rules.global.cache.has(r)){if(t.rules.global.cache.add(r),\"@import\"in n){let e=[].indexOf.call(t.sheet.cssRules,t.rules.themed.group)-1;for(let r of[].concat(n[\"@import\"]))r=r.includes('\"')||r.includes(\"'\")?r:`\"${r}\"`,t.sheet.insertRule(`@import ${r};`,e++);delete n[\"@import\"]}$(n,[],[],e,(e=>{t.rules.global.apply(e)}))}}return\"\"};return s(n,{toString:n})})),H=o(),V=(e,t)=>H(e,(()=>r=>{const n=`${S(e.prefix)}k-${z(r)}`,i=()=>{if(!t.rules.global.cache.has(n)){t.rules.global.cache.add(n);const i=[];$(r,[],[],e,(e=>i.push(e)));const o=`@keyframes ${n}{${i.join(\"\")}}`;t.rules.global.apply(o)}return n};return s(i,{get name(){return i()},toString:i})})),G=class{constructor(e,t,r,n){this.token=null==e?\"\":String(e),this.value=null==t?\"\":String(t),this.scale=null==r?\"\":String(r),this.prefix=null==n?\"\":String(n)}get computedValue(){return\"var(\"+this.variable+\")\"}get variable(){return\"--\"+S(this.prefix)+S(this.scale)+this.token}toString(){return this.computedValue}},F=o(),J=(e,t)=>F(e,(()=>(r,n)=>{n=\"object\"==typeof r&&r||Object(n);const i=`.${r=(r=\"string\"==typeof r?r:\"\")||`${S(e.prefix)}t-${z(n)}`}`,o={},l=[];for(const t in n){o[t]={};for(const r in n[t]){const i=`--${S(e.prefix)}${t}-${r}`,s=k(String(n[t][r]),e.prefix,t);o[t][r]=new G(r,s,t,e.prefix),l.push(`${i}:${s}`)}}const s=()=>{if(l.length&&!t.rules.themed.cache.has(r)){t.rules.themed.cache.add(r);const i=`${n===e.theme?\":root,\":\"\"}.${r}{${l.join(\";\")}}`;t.rules.themed.apply(i)}return r};return{...o,get className(){return s()},selector:i,toString:s}})),U=o();import Z from\"react\";var X,Y=o(),q=e=>{const t=(e=>{let t=!1;const r=U(e,(e=>{t=!0;const r=\"prefix\"in(e=\"object\"==typeof e&&e||{})?String(e.prefix):\"\",i=\"object\"==typeof e.media&&e.media||{},o=\"object\"==typeof e.root?e.root||null:globalThis.document||null,l=\"object\"==typeof e.theme&&e.theme||{},s={prefix:r,media:i,theme:l,themeMap:\"object\"==typeof e.themeMap&&e.themeMap||{...n},utils:\"object\"==typeof e.utils&&e.utils||{}},a=E(o),c={css:M(s,a),globalCss:D(s,a),keyframes:V(s,a),createTheme:J(s,a),reset(){a.reset(),c.theme.toString()},theme:{},sheet:a,config:s,prefix:r,getCssText:a.toString,toString:a.toString};return String(c.theme=c.createTheme(l)),c}));return t||r.reset(),r})(e);return t.styled=(({config:e,sheet:t})=>Y(e,(()=>{const r=M(e,t);return(...e)=>{const t=r(...e),n=t[l].type,i=Z.forwardRef(((e,r)=>{const i=e&&e.as||n,{props:o,deferredInjector:l}=t(e);return delete o.as,o.ref=r,l?Z.createElement(Z.Fragment,null,Z.createElement(i,o),Z.createElement(l,null)):Z.createElement(i,o)}));return i.className=t.className,i.displayName=`Styled.${n.displayName||n.name||n}`,i.selector=t.selector,i.toString=()=>t.selector,i[l]=t[l],i}})))(t),t},K=()=>X||(X=q()),Q=(...e)=>K().createTheme(...e),_=(...e)=>K().globalCss(...e),ee=(...e)=>K().keyframes(...e),te=(...e)=>K().css(...e),re=(...e)=>K().styled(...e);export{q as createStitches,Q as createTheme,te as css,n as defaultThemeMap,_ as globalCss,ee as keyframes,re as styled};\n//# sourceMappingUrl=index.map","import { styled } from \"@stitches/react\";\nconst PerfS = styled(\"div\", {\n position: \"fixed\",\n top: 0,\n right: 0,\n zIndex: 9999,\n fontFamily: `-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif`,\n backgroundColor: \"rgba(36, 36, 36, .9)\",\n color: \"#fff\",\n margin: 0,\n minHeight: \"100px\",\n padding: \"4px 0\",\n \"-webkit-font-smoothing\": \"antialiased\",\n \"-moz-osx-font-smoothing\": \"grayscale\",\n userSelect: \"none\",\n \"&.top-left\": {\n right: \"initial\",\n left: 0\n },\n \"&.bottom-left\": {\n right: \"initial\",\n top: \"initial\",\n bottom: 0,\n left: 0,\n \".__perf_toggle\": {\n top: \"-20px\",\n bottom: \"initial\"\n }\n },\n \"&.bottom-right\": {\n top: \"initial\",\n bottom: 0,\n \".__perf_toggle\": {\n top: \"-20px\",\n bottom: \"initial\"\n }\n },\n \"&.minimal\": {\n backgroundColor: \"rgba(36, 36, 36, .75)\"\n },\n \"*\": {\n margin: \"0\",\n padding: \"0\",\n border: \"0\",\n fontSize: \"100%\",\n lineHeight: \"1\",\n verticalAlign: \"baseline\"\n }\n});\nconst PerfSmallI = styled(\"small\", {\n position: \"absolute\",\n right: 0,\n fontSize: \"10px\"\n});\nconst PerfI = styled(\"div\", {\n display: \"inline-flex\",\n fontStyle: \"normal\",\n padding: 0,\n lineHeight: \"13px\",\n fontSize: \"14px\",\n width: \"62px\",\n position: \"relative\",\n pointerEvents: \"auto\",\n cursor: \"default\",\n fontWeight: 500,\n letterSpacing: \"0px\",\n textAlign: \"left\",\n height: \"29px\",\n whiteSpace: \"nowrap\",\n justifyContent: \"space-evenly\",\n fontVariantNumeric: \"tabular-nums\",\n small: {\n paddingLeft: \"12px\"\n },\n svg: {\n padding: 0,\n color: \"rgba(145, 145, 145, 0.3)\",\n fontSize: \"40px\",\n position: \"absolute\",\n zIndex: 1,\n maxHeight: \"20px\",\n left: \" 50%\",\n marginLeft: \"-23px\",\n top: \"4px\"\n }\n});\nconst PerfB = styled(\"span\", {\n verticalAlign: \"bottom\",\n position: \"absolute\",\n bottom: \"5px\",\n color: \"rgba(101, 197, 188, 1)\",\n textAlign: \"right\",\n letterSpacing: \"1px\",\n fontSize: \"8px\",\n fontWeight: \"500\",\n width: \"60px\"\n});\nconst PerfIContainer = styled(\"div\", {\n display: \"flex\"\n // justifyContent: 'space-between',\n});\nconst ProgramHeader = styled(\"div\", {\n backgroundColor: \"#404040\",\n padding: \"6px\",\n display: \"block\",\n fontSize: \"12px\",\n marginBottom: \"6px\",\n cursor: \"pointer\",\n \"*\": {\n cursor: \"pointer !important\"\n },\n \"> span\": {},\n small: {\n fontSize: \"9px\"\n },\n \"> b\": {\n marginRight: \"4px\",\n cursor: \"pointer\"\n }\n});\nconst Graph = styled(\"div\", {\n height: \"66px\",\n overflow: \"hidden\",\n position: \"absolute\",\n pointerEvents: \"none\",\n display: \"flex\",\n top: \"0px\",\n justifyContent: \"center\",\n width: \"100%\",\n minWidth: \"310px\",\n margin: \"0 auto\",\n canvas: {\n background: \"transparent !important\",\n position: \"absolute !important\"\n }\n});\nconst Graphpc = styled(\"div\", {\n textAlign: \"center\",\n fontWeight: 700,\n fontSize: \"12px\",\n lineHeight: \"12px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n verticalAlign: \"middle\",\n color: \"#f1f1f1\",\n padding: \"7px\",\n width: \"100%\",\n backgroundColor: \"rgba(36, 36, 37, 0.8)\",\n zIndex: 1,\n position: \"absolute\",\n height: \"100%\"\n});\nconst Toggle = styled(\"div\", {\n pointerEvents: \"auto\",\n justifyContent: \"center\",\n cursor: \"pointer\",\n fontSize: \"12px\",\n backgroundColor: \"rgb(41, 43, 45)\",\n marginTop: \"6px\",\n width: \"auto\",\n margin: \"0\",\n color: \"rgba(145, 145, 145, 1)\",\n textAlign: \"center\",\n display: \"inline-block\",\n verticalAlign: \"middle\",\n padding: \"4px 6px\",\n \"&.__perf_toggle_tab_active\": {\n backgroundColor: \"rgb(31 31 31)\"\n },\n svg: {\n width: \"12px\",\n height: \"12px\",\n float: \"left\"\n }\n});\nconst ToggleVisible = styled(\"div\", {\n pointerEvents: \"auto\",\n justifyContent: \"center\",\n cursor: \"pointer\",\n fontSize: \"12px\",\n float: \"right\",\n backgroundColor: \"rgb(41, 43, 45)\",\n width: \"auto\",\n margin: \"0\",\n color: \"rgba(145, 145, 145, 1)\",\n textAlign: \"center\",\n display: \"inline-block\",\n verticalAlign: \"middle\",\n padding: \"4px 6px\",\n \"&.__perf_toggle_tab_active\": {\n backgroundColor: \"rgb(31 31 31)\"\n },\n svg: {\n width: \"12px\",\n height: \"12px\",\n float: \"left\"\n }\n});\nconst ProgramGeo = styled(\"div\", {\n padding: \"4px 6px\",\n fontSize: \"12px\",\n pointerEvents: \"auto\"\n});\nconst ProgramTitle = styled(\"span\", {\n fontWeight: \"bold\",\n letterSpacing: \"0.08em\",\n maxWidth: \"145px\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n display: \"inline-block\",\n verticalAlign: \"middle\",\n fontSize: \"11px\",\n marginRight: \"10px\"\n});\nconst ContainerScroll = styled(\"div\", {\n maxHeight: \"50vh\",\n overflowY: \"auto\",\n marginTop: \"38px\"\n});\nconst ProgramsContainer = styled(\"div\", {\n marginTop: \"0\"\n});\nconst ProgramsULHeader = styled(\"div\", {\n display: \"flex\",\n position: \"relative\",\n fontWeight: \"bold\",\n color: \"#fff\",\n lineHeight: \"14px\",\n svg: {\n marginRight: \"4px\",\n display: \"inline-block\"\n }\n});\nconst ProgramsUL = styled(\"ul\", {\n display: \"block\",\n position: \"relative\",\n paddingLeft: \"10px\",\n margin: \"6px 6px\",\n img: {\n maxHeight: \"60px\",\n maxWidth: \"100%\",\n margin: \"6px auto\",\n display: \"block\"\n },\n \"&:after\": {\n content: \"\",\n position: \"absolute\",\n left: \"0px\",\n top: \"0px\",\n width: \"1px\",\n height: \"100%\",\n backgroundColor: \"grey\",\n transform: \"translateX(-50%)\",\n maxHeight: \"50vh\",\n overflowY: \"auto\"\n },\n li: {\n borderBottom: \"1px solid #313131\",\n display: \"block\",\n padding: \"4px\",\n margin: 0,\n lineHeight: 1,\n verticalAlign: \"middle\",\n height: \"24px\"\n },\n b: {\n fontWeight: \"bold\"\n },\n small: {\n textAlign: \"revert\",\n letterSpacing: \"1px\",\n fontSize: \"10px\",\n fontWeight: \"500\",\n marginLeft: \"2px\",\n color: \"rgb(101, 197, 188)\"\n }\n});\nconst ProgramConsole = styled(\"button\", {\n fontWeight: \"bold\",\n letterSpacing: \"0.02em\",\n backgroundColor: \"rgb(41, 43, 45)\",\n color: \"rgb(211, 211, 211)\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n cursor: \"pointer\",\n display: \"block\",\n verticalAlign: \"middle\",\n fontSize: \"11px\",\n padding: \"5px\",\n margin: \"4px auto\"\n});\nconst ToggleContainer = styled(\"div\", {\n display: \"flex\",\n justifyContent: \"center\",\n cursor: \"pointer\",\n fontSize: \"12px\",\n backgroundColor: \"rgb(41, 43, 45)\",\n marginTop: \"6px\",\n width: \"auto\",\n margin: \"0 auto\",\n color: \"rgba(145, 145, 145, 1)\",\n textAlign: \"center\",\n position: \"absolute\",\n right: 0,\n bottom: \" -20px\",\n svg: {\n width: \"12px\",\n height: \"12px\",\n float: \"left\"\n }\n});\nconst ProgramsGeoLi = styled(\"li\", {\n display: \"flex !important\",\n height: \"auto !important\",\n span: {\n height: \"40px\",\n display: \"block\",\n position: \"relative\"\n },\n b: {\n paddingLeft: \"12px\"\n }\n});\nexport {\n ContainerScroll,\n Graph,\n Graphpc,\n PerfB,\n PerfI,\n PerfIContainer,\n PerfS,\n PerfSmallI,\n ProgramConsole,\n ProgramGeo,\n ProgramHeader,\n ProgramTitle,\n ProgramsContainer,\n ProgramsGeoLi,\n ProgramsUL,\n ProgramsULHeader,\n Toggle,\n ToggleContainer,\n ToggleVisible\n};\n//# sourceMappingURL=styles.mjs.map\n","import { forwardRef, createElement } from 'react';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar _excluded = [\"color\"];\nvar AccessibilityIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M0.877197 7.49984C0.877197 3.84216 3.84234 0.877014 7.50003 0.877014C11.1577 0.877014 14.1229 3.84216 14.1229 7.49984C14.1229 11.1575 11.1577 14.1227 7.50003 14.1227C3.84234 14.1227 0.877197 11.1575 0.877197 7.49984ZM7.50003 1.82701C4.36702 1.82701 1.8272 4.36683 1.8272 7.49984C1.8272 10.6328 4.36702 13.1727 7.50003 13.1727C10.633 13.1727 13.1729 10.6328 13.1729 7.49984C13.1729 4.36683 10.633 1.82701 7.50003 1.82701ZM7.12457 9.00001C7.06994 9.12735 6.33165 11.9592 6.33165 11.9592C6.26018 12.226 5.98601 12.3843 5.71928 12.3128C5.45255 12.2413 5.29425 11.9672 5.36573 11.7004C5.36573 11.7004 6.24661 8.87268 6.24661 8.27007V6.80099L4.28763 6.27608C4.0209 6.20461 3.86261 5.93045 3.93408 5.66371C4.00555 5.39698 4.27972 5.23869 4.54645 5.31016C4.54645 5.31016 6.20042 5.87268 6.84579 5.87268H8.15505C8.80042 5.87268 10.4534 5.31042 10.4534 5.31042C10.7202 5.23895 10.9943 5.39724 11.0658 5.66397C11.1373 5.93071 10.979 6.20487 10.7122 6.27635L8.74661 6.80303V8.27007C8.74661 8.87268 9.62663 11.6971 9.62663 11.6971C9.6981 11.9639 9.5398 12.238 9.27307 12.3095C9.00634 12.381 8.73217 12.2227 8.6607 11.956C8.6607 11.956 7.91994 9.12735 7.86866 9.00001C7.81994 8.87268 7.65006 8.87268 7.65006 8.87268H7.34317C7.34317 8.87268 7.16994 8.87268 7.12457 9.00001ZM7.50043 5.12007C8.12175 5.12007 8.62543 4.61639 8.62543 3.99507C8.62543 3.37375 8.12175 2.87007 7.50043 2.87007C6.87911 2.87007 6.37543 3.37375 6.37543 3.99507C6.37543 4.61639 6.87911 5.12007 7.50043 5.12007Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1 = [\"color\"];\nvar ActivityLogIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M0 1.5C0 1.22386 0.223858 1 0.5 1H2.5C2.77614 1 3 1.22386 3 1.5C3 1.77614 2.77614 2 2.5 2H0.5C0.223858 2 0 1.77614 0 1.5ZM4 1.5C4 1.22386 4.22386 1 4.5 1H14.5C14.7761 1 15 1.22386 15 1.5C15 1.77614 14.7761 2 14.5 2H4.5C4.22386 2 4 1.77614 4 1.5ZM4 4.5C4 4.22386 4.22386 4 4.5 4H11.5C11.7761 4 12 4.22386 12 4.5C12 4.77614 11.7761 5 11.5 5H4.5C4.22386 5 4 4.77614 4 4.5ZM0 7.5C0 7.22386 0.223858 7 0.5 7H2.5C2.77614 7 3 7.22386 3 7.5C3 7.77614 2.77614 8 2.5 8H0.5C0.223858 8 0 7.77614 0 7.5ZM4 7.5C4 7.22386 4.22386 7 4.5 7H14.5C14.7761 7 15 7.22386 15 7.5C15 7.77614 14.7761 8 14.5 8H4.5C4.22386 8 4 7.77614 4 7.5ZM4 10.5C4 10.2239 4.22386 10 4.5 10H11.5C11.7761 10 12 10.2239 12 10.5C12 10.7761 11.7761 11 11.5 11H4.5C4.22386 11 4 10.7761 4 10.5ZM0 13.5C0 13.2239 0.223858 13 0.5 13H2.5C2.77614 13 3 13.2239 3 13.5C3 13.7761 2.77614 14 2.5 14H0.5C0.223858 14 0 13.7761 0 13.5ZM4 13.5C4 13.2239 4.22386 13 4.5 13H14.5C14.7761 13 15 13.2239 15 13.5C15 13.7761 14.7761 14 14.5 14H4.5C4.22386 14 4 13.7761 4 13.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2 = [\"color\"];\nvar AlignBaselineIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M10.5 1.75003C10.7107 1.75003 10.8988 1.88217 10.9703 2.08042L13.9703 10.4C14.064 10.6598 13.9293 10.9463 13.6696 11.04C13.4098 11.1336 13.1233 10.999 13.0296 10.7392L12.0477 8.01606H8.95227L7.97031 10.7392C7.87664 10.999 7.59012 11.1336 7.33035 11.04C7.07058 10.9463 6.93593 10.6598 7.0296 10.4L10.0296 2.08042C10.1011 1.88217 10.2892 1.75003 10.5 1.75003ZM10.5 3.72402L11.7411 7.16606H9.25877L10.5 3.72402ZM2.49949 2.09997C2.7204 2.09997 2.89949 2.27906 2.89949 2.49997L2.89949 9.53428L4.21664 8.21713C4.37285 8.06092 4.62612 8.06092 4.78233 8.21713C4.93854 8.37334 4.93854 8.6266 4.78233 8.78281L2.78233 10.7828C2.70732 10.8578 2.60557 10.9 2.49949 10.9C2.3934 10.9 2.29166 10.8578 2.21664 10.7828L0.216645 8.78281C0.0604349 8.6266 0.0604349 8.37334 0.216645 8.21713C0.372854 8.06092 0.62612 8.06092 0.78233 8.21713L2.09949 9.53428L2.09949 2.49997C2.09949 2.27906 2.27857 2.09997 2.49949 2.09997ZM0.0999695 13.5001C0.0999695 13.2791 0.279056 13.1001 0.499969 13.1001H14.5C14.7209 13.1001 14.9 13.2791 14.9 13.5001C14.9 13.721 14.7209 13.9001 14.5 13.9001H0.499969C0.279056 13.9001 0.0999695 13.721 0.0999695 13.5001Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3 = [\"color\"];\nvar AlignBottomIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M9 3C9 2.44772 8.55229 2 8 2H7C6.44772 2 6 2.44772 6 3L6 14H1.5C1.22386 14 1 14.2239 1 14.5C1 14.7761 1.22386 15 1.5 15L6 15H9H13.5C13.7761 15 14 14.7761 14 14.5C14 14.2239 13.7761 14 13.5 14H9V3Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4 = [\"color\"];\nvar AlignCenterHorizontallyIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1.99988 6C1.44759 6 0.999877 6.44772 0.999877 7L0.999877 8C0.999877 8.55228 1.44759 9 1.99988 9L6.99988 9L6.99988 13.5C6.99988 13.7761 7.22374 14 7.49988 14C7.77602 14 7.99988 13.7761 7.99988 13.5L7.99988 9L12.9999 9C13.5522 9 13.9999 8.55228 13.9999 8L13.9999 7C13.9999 6.44772 13.5522 6 12.9999 6L7.99988 6L7.99988 1.5C7.99988 1.22386 7.77602 1 7.49988 1C7.22373 1 6.99988 1.22386 6.99988 1.5L6.99988 6L1.99988 6Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$5 = [\"color\"];\nvar AlignCenterVerticallyIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$5);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M6.99988 1C6.44759 1 5.99988 1.44772 5.99988 2V7H1.49988C1.22374 7 0.999878 7.22386 0.999878 7.5C0.999878 7.77614 1.22374 8 1.49988 8H5.99988V13C5.99988 13.5523 6.44759 14 6.99988 14H7.99988C8.55216 14 8.99988 13.5523 8.99988 13V8H13.4999C13.776 8 13.9999 7.77614 13.9999 7.5C13.9999 7.22386 13.776 7 13.4999 7H8.99988V2C8.99988 1.44772 8.55216 1 7.99988 1L6.99988 1Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$6 = [\"color\"];\nvar AlignLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$6);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M0.499995 0.999995C0.223855 0.999995 -5.58458e-07 1.22385 -5.46388e-07 1.49999L-2.18554e-08 13.4999C-9.78492e-09 13.776 0.223855 13.9999 0.499995 13.9999C0.776136 13.9999 0.999991 13.776 0.999991 13.4999L0.999991 8.99993L12 8.99993C12.5523 8.99993 13 8.55222 13 7.99993L13 6.99994C13 6.44766 12.5523 5.99995 12 5.99995L0.999991 5.99995L0.999991 1.49999C0.999991 1.22385 0.776135 0.999995 0.499995 0.999995Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$7 = [\"color\"];\nvar AlignRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$7);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M14.4999 1C14.2237 1 13.9999 1.22386 13.9999 1.5L13.9999 6L2.99988 6C2.44759 6 1.99988 6.44772 1.99988 7L1.99988 8C1.99988 8.55228 2.44759 9 2.99988 9L13.9999 9L13.9999 13.5C13.9999 13.7761 14.2237 14 14.4999 14C14.776 14 14.9999 13.7761 14.9999 13.5L14.9999 9L14.9999 6L14.9999 1.5C14.9999 1.22386 14.776 1 14.4999 1Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$8 = [\"color\"];\nvar AlignTopIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$8);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1.5 0C1.22386 0 1 0.223858 1 0.5C1 0.776142 1.22386 1 1.5 1H6V12C6 12.5523 6.44772 13 7 13H8C8.55228 13 9 12.5523 9 12V1H13.5C13.7761 1 14 0.776142 14 0.5C14 0.223858 13.7761 0 13.5 0H9H6H1.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$9 = [\"color\"];\nvar AllSidesIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$9);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.5 0.75L9.75 3H5.25L7.5 0.75ZM7.5 14.25L9.75 12H5.25L7.5 14.25ZM3 5.25L0.75 7.5L3 9.75V5.25ZM14.25 7.5L12 5.25V9.75L14.25 7.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$a = [\"color\"];\nvar AngleIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$a);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M8.8914 2.1937C9.1158 2.35464 9.16725 2.66701 9.00631 2.89141L2.47388 12H13.5C13.7761 12 14 12.2239 14 12.5C14 12.7762 13.7761 13 13.5 13H1.5C1.31254 13 1.14082 12.8952 1.0552 12.7284C0.969578 12.5616 0.984438 12.361 1.09369 12.2086L8.19369 2.30862C8.35462 2.08422 8.667 2.03277 8.8914 2.1937ZM11.1 6.50001C11.1 6.22387 11.3238 6.00001 11.6 6.00001C11.8761 6.00001 12.1 6.22387 12.1 6.50001C12.1 6.77615 11.8761 7.00001 11.6 7.00001C11.3238 7.00001 11.1 6.77615 11.1 6.50001ZM10.4 4.00001C10.1239 4.00001 9.90003 4.22387 9.90003 4.50001C9.90003 4.77615 10.1239 5.00001 10.4 5.00001C10.6762 5.00001 10.9 4.77615 10.9 4.50001C10.9 4.22387 10.6762 4.00001 10.4 4.00001ZM12.1 8.50001C12.1 8.22387 12.3238 8.00001 12.6 8.00001C12.8761 8.00001 13.1 8.22387 13.1 8.50001C13.1 8.77615 12.8761 9.00001 12.6 9.00001C12.3238 9.00001 12.1 8.77615 12.1 8.50001ZM13.4 10C13.1239 10 12.9 10.2239 12.9 10.5C12.9 10.7761 13.1239 11 13.4 11C13.6762 11 13.9 10.7761 13.9 10.5C13.9 10.2239 13.6762 10 13.4 10Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$b = [\"color\"];\nvar ArchiveIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$b);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.30902 1C2.93025 1 2.58398 1.214 2.41459 1.55279L1.05279 4.27639C1.01807 4.34582 1 4.42238 1 4.5V13C1 13.5523 1.44772 14 2 14H13C13.5523 14 14 13.5523 14 13V4.5C14 4.42238 13.9819 4.34582 13.9472 4.27639L12.5854 1.55281C12.416 1.21403 12.0698 1.00003 11.691 1.00003L7.5 1.00001L3.30902 1ZM3.30902 2L7 2.00001V4H2.30902L3.30902 2ZM8 4V2.00002L11.691 2.00003L12.691 4H8ZM7.5 5H13V13H2V5H7.5ZM5.5 7C5.22386 7 5 7.22386 5 7.5C5 7.77614 5.22386 8 5.5 8H9.5C9.77614 8 10 7.77614 10 7.5C10 7.22386 9.77614 7 9.5 7H5.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$c = [\"color\"];\nvar ArrowBottomLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$c);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M11.3536 3.64644C11.5488 3.8417 11.5488 4.15828 11.3536 4.35354L4.70711 11L9 11C9.27614 11 9.5 11.2239 9.5 11.5C9.5 11.7761 9.27614 12 9 12L3.5 12C3.36739 12 3.24021 11.9473 3.14645 11.8536C3.05268 11.7598 3 11.6326 3 11.5L3 5.99999C3 5.72385 3.22386 5.49999 3.5 5.49999C3.77614 5.49999 4 5.72385 4 5.99999V10.2929L10.6464 3.64643C10.8417 3.45117 11.1583 3.45117 11.3536 3.64644Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$d = [\"color\"];\nvar ArrowBottomRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$d);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.64645 3.64644C3.45118 3.8417 3.45118 4.15828 3.64645 4.35354L10.2929 11L6 11C5.72386 11 5.5 11.2239 5.5 11.5C5.5 11.7761 5.72386 12 6 12L11.5 12C11.6326 12 11.7598 11.9473 11.8536 11.8536C11.9473 11.7598 12 11.6326 12 11.5L12 5.99999C12 5.72385 11.7761 5.49999 11.5 5.49999C11.2239 5.49999 11 5.72385 11 5.99999V10.2929L4.35355 3.64643C4.15829 3.45117 3.84171 3.45117 3.64645 3.64644Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$e = [\"color\"];\nvar ArrowDownIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$e);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.5 2C7.77614 2 8 2.22386 8 2.5L8 11.2929L11.1464 8.14645C11.3417 7.95118 11.6583 7.95118 11.8536 8.14645C12.0488 8.34171 12.0488 8.65829 11.8536 8.85355L7.85355 12.8536C7.75979 12.9473 7.63261 13 7.5 13C7.36739 13 7.24021 12.9473 7.14645 12.8536L3.14645 8.85355C2.95118 8.65829 2.95118 8.34171 3.14645 8.14645C3.34171 7.95118 3.65829 7.95118 3.85355 8.14645L7 11.2929L7 2.5C7 2.22386 7.22386 2 7.5 2Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$f = [\"color\"];\nvar ArrowLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$f);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M6.85355 3.14645C7.04882 3.34171 7.04882 3.65829 6.85355 3.85355L3.70711 7H12.5C12.7761 7 13 7.22386 13 7.5C13 7.77614 12.7761 8 12.5 8H3.70711L6.85355 11.1464C7.04882 11.3417 7.04882 11.6583 6.85355 11.8536C6.65829 12.0488 6.34171 12.0488 6.14645 11.8536L2.14645 7.85355C1.95118 7.65829 1.95118 7.34171 2.14645 7.14645L6.14645 3.14645C6.34171 2.95118 6.65829 2.95118 6.85355 3.14645Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$g = [\"color\"];\nvar ArrowRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$g);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M8.14645 3.14645C8.34171 2.95118 8.65829 2.95118 8.85355 3.14645L12.8536 7.14645C13.0488 7.34171 13.0488 7.65829 12.8536 7.85355L8.85355 11.8536C8.65829 12.0488 8.34171 12.0488 8.14645 11.8536C7.95118 11.6583 7.95118 11.3417 8.14645 11.1464L11.2929 8H2.5C2.22386 8 2 7.77614 2 7.5C2 7.22386 2.22386 7 2.5 7H11.2929L8.14645 3.85355C7.95118 3.65829 7.95118 3.34171 8.14645 3.14645Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$h = [\"color\"];\nvar ArrowTopLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$h);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M11.3536 11.3536C11.5488 11.1583 11.5488 10.8417 11.3536 10.6465L4.70711 4L9 4C9.27614 4 9.5 3.77614 9.5 3.5C9.5 3.22386 9.27614 3 9 3L3.5 3C3.36739 3 3.24021 3.05268 3.14645 3.14645C3.05268 3.24022 3 3.36739 3 3.5L3 9.00001C3 9.27615 3.22386 9.50001 3.5 9.50001C3.77614 9.50001 4 9.27615 4 9.00001V4.70711L10.6464 11.3536C10.8417 11.5488 11.1583 11.5488 11.3536 11.3536Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$i = [\"color\"];\nvar ArrowTopRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$i);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.64645 11.3536C3.45118 11.1583 3.45118 10.8417 3.64645 10.6465L10.2929 4L6 4C5.72386 4 5.5 3.77614 5.5 3.5C5.5 3.22386 5.72386 3 6 3L11.5 3C11.6326 3 11.7598 3.05268 11.8536 3.14645C11.9473 3.24022 12 3.36739 12 3.5L12 9.00001C12 9.27615 11.7761 9.50001 11.5 9.50001C11.2239 9.50001 11 9.27615 11 9.00001V4.70711L4.35355 11.3536C4.15829 11.5488 3.84171 11.5488 3.64645 11.3536Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$j = [\"color\"];\nvar ArrowUpIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$j);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.14645 2.14645C7.34171 1.95118 7.65829 1.95118 7.85355 2.14645L11.8536 6.14645C12.0488 6.34171 12.0488 6.65829 11.8536 6.85355C11.6583 7.04882 11.3417 7.04882 11.1464 6.85355L8 3.70711L8 12.5C8 12.7761 7.77614 13 7.5 13C7.22386 13 7 12.7761 7 12.5L7 3.70711L3.85355 6.85355C3.65829 7.04882 3.34171 7.04882 3.14645 6.85355C2.95118 6.65829 2.95118 6.34171 3.14645 6.14645L7.14645 2.14645Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$k = [\"color\"];\nvar AspectRatioIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$k);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2.5 2H12.5C12.7761 2 13 2.22386 13 2.5V12.5C13 12.7761 12.7761 13 12.5 13H2.5C2.22386 13 2 12.7761 2 12.5V2.5C2 2.22386 2.22386 2 2.5 2ZM1 2.5C1 1.67157 1.67157 1 2.5 1H12.5C13.3284 1 14 1.67157 14 2.5V12.5C14 13.3284 13.3284 14 12.5 14H2.5C1.67157 14 1 13.3284 1 12.5V2.5ZM7.5 4C7.77614 4 8 3.77614 8 3.5C8 3.22386 7.77614 3 7.5 3C7.22386 3 7 3.22386 7 3.5C7 3.77614 7.22386 4 7.5 4ZM8 5.5C8 5.77614 7.77614 6 7.5 6C7.22386 6 7 5.77614 7 5.5C7 5.22386 7.22386 5 7.5 5C7.77614 5 8 5.22386 8 5.5ZM7.5 8C7.77614 8 8 7.77614 8 7.5C8 7.22386 7.77614 7 7.5 7C7.22386 7 7 7.22386 7 7.5C7 7.77614 7.22386 8 7.5 8ZM10 7.5C10 7.77614 9.77614 8 9.5 8C9.22386 8 9 7.77614 9 7.5C9 7.22386 9.22386 7 9.5 7C9.77614 7 10 7.22386 10 7.5ZM11.5 8C11.7761 8 12 7.77614 12 7.5C12 7.22386 11.7761 7 11.5 7C11.2239 7 11 7.22386 11 7.5C11 7.77614 11.2239 8 11.5 8Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$l = [\"color\"];\nvar AvatarIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$l);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M0.877014 7.49988C0.877014 3.84219 3.84216 0.877045 7.49985 0.877045C11.1575 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1575 14.1227 7.49985 14.1227C3.84216 14.1227 0.877014 11.1575 0.877014 7.49988ZM7.49985 1.82704C4.36683 1.82704 1.82701 4.36686 1.82701 7.49988C1.82701 8.97196 2.38774 10.3131 3.30727 11.3213C4.19074 9.94119 5.73818 9.02499 7.50023 9.02499C9.26206 9.02499 10.8093 9.94097 11.6929 11.3208C12.6121 10.3127 13.1727 8.97172 13.1727 7.49988C13.1727 4.36686 10.6328 1.82704 7.49985 1.82704ZM10.9818 11.9787C10.2839 10.7795 8.9857 9.97499 7.50023 9.97499C6.01458 9.97499 4.71624 10.7797 4.01845 11.9791C4.97952 12.7272 6.18765 13.1727 7.49985 13.1727C8.81227 13.1727 10.0206 12.727 10.9818 11.9787ZM5.14999 6.50487C5.14999 5.207 6.20212 4.15487 7.49999 4.15487C8.79786 4.15487 9.84999 5.207 9.84999 6.50487C9.84999 7.80274 8.79786 8.85487 7.49999 8.85487C6.20212 8.85487 5.14999 7.80274 5.14999 6.50487ZM7.49999 5.10487C6.72679 5.10487 6.09999 5.73167 6.09999 6.50487C6.09999 7.27807 6.72679 7.90487 7.49999 7.90487C8.27319 7.90487 8.89999 7.27807 8.89999 6.50487C8.89999 5.73167 8.27319 5.10487 7.49999 5.10487Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$m = [\"color\"];\nvar BackpackIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$m);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M5 1C5 0.447715 5.44772 0 6 0H9C9.55228 0 10 0.447715 10 1V2H14C14.5523 2 15 2.44772 15 3V6C15 6.8888 14.6131 7.68734 14 8.23608V11.5C14 12.3284 13.3284 13 12.5 13H2.5C1.67157 13 1 12.3284 1 11.5V8.2359C0.38697 7.68721 0 6.88883 0 6V3C0 2.44772 0.447716 2 1 2H5V1ZM9 1V2H6V1H9ZM1 3H5H5.5H9.5H10H14V6C14 6.654 13.6866 7.23467 13.1997 7.6004C12.8655 7.85144 12.4508 8 12 8H8V7.5C8 7.22386 7.77614 7 7.5 7C7.22386 7 7 7.22386 7 7.5V8H3C2.5493 8 2.1346 7.85133 1.80029 7.60022C1.31335 7.23446 1 6.65396 1 6V3ZM7 9H3C2.64961 9 2.31292 8.93972 2 8.82905V11.5C2 11.7761 2.22386 12 2.5 12H12.5C12.7761 12 13 11.7761 13 11.5V8.82915C12.6871 8.93978 12.3504 9 12 9H8V9.5C8 9.77614 7.77614 10 7.5 10C7.22386 10 7 9.77614 7 9.5V9Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$n = [\"color\"];\nvar BadgeIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$n);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.5 6H11.5C12.3284 6 13 6.67157 13 7.5C13 8.32843 12.3284 9 11.5 9H3.5C2.67157 9 2 8.32843 2 7.5C2 6.67157 2.67157 6 3.5 6ZM1 7.5C1 6.11929 2.11929 5 3.5 5H11.5C12.8807 5 14 6.11929 14 7.5C14 8.88071 12.8807 10 11.5 10H3.5C2.11929 10 1 8.88071 1 7.5ZM4.5 7C4.22386 7 4 7.22386 4 7.5C4 7.77614 4.22386 8 4.5 8H10.5C10.7761 8 11 7.77614 11 7.5C11 7.22386 10.7761 7 10.5 7H4.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$o = [\"color\"];\nvar BarChartIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$o);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M11.5 1C11.7761 1 12 1.22386 12 1.5V13.5C12 13.7761 11.7761 14 11.5 14C11.2239 14 11 13.7761 11 13.5V1.5C11 1.22386 11.2239 1 11.5 1ZM9.5 3C9.77614 3 10 3.22386 10 3.5V13.5C10 13.7761 9.77614 14 9.5 14C9.22386 14 9 13.7761 9 13.5V3.5C9 3.22386 9.22386 3 9.5 3ZM13.5 3C13.7761 3 14 3.22386 14 3.5V13.5C14 13.7761 13.7761 14 13.5 14C13.2239 14 13 13.7761 13 13.5V3.5C13 3.22386 13.2239 3 13.5 3ZM5.5 4C5.77614 4 6 4.22386 6 4.5V13.5C6 13.7761 5.77614 14 5.5 14C5.22386 14 5 13.7761 5 13.5V4.5C5 4.22386 5.22386 4 5.5 4ZM1.5 5C1.77614 5 2 5.22386 2 5.5V13.5C2 13.7761 1.77614 14 1.5 14C1.22386 14 1 13.7761 1 13.5V5.5C1 5.22386 1.22386 5 1.5 5ZM7.5 5C7.77614 5 8 5.22386 8 5.5V13.5C8 13.7761 7.77614 14 7.5 14C7.22386 14 7 13.7761 7 13.5V5.5C7 5.22386 7.22386 5 7.5 5ZM3.5 7C3.77614 7 4 7.22386 4 7.5V13.5C4 13.7761 3.77614 14 3.5 14C3.22386 14 3 13.7761 3 13.5V7.5C3 7.22386 3.22386 7 3.5 7Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$p = [\"color\"];\nvar BellIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$p);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M8.60124 1.25086C8.60124 1.75459 8.26278 2.17927 7.80087 2.30989C10.1459 2.4647 12 4.41582 12 6.79999V10.25C12 11.0563 12.0329 11.7074 12.7236 12.0528C12.931 12.1565 13.0399 12.3892 12.9866 12.6149C12.9333 12.8406 12.7319 13 12.5 13H8.16144C8.36904 13.1832 8.49997 13.4513 8.49997 13.75C8.49997 14.3023 8.05226 14.75 7.49997 14.75C6.94769 14.75 6.49997 14.3023 6.49997 13.75C6.49997 13.4513 6.63091 13.1832 6.83851 13H2.49999C2.2681 13 2.06664 12.8406 2.01336 12.6149C1.96009 12.3892 2.06897 12.1565 2.27638 12.0528C2.96708 11.7074 2.99999 11.0563 2.99999 10.25V6.79999C2.99999 4.41537 4.85481 2.46396 7.20042 2.3098C6.73867 2.17908 6.40036 1.75448 6.40036 1.25086C6.40036 0.643104 6.89304 0.150421 7.5008 0.150421C8.10855 0.150421 8.60124 0.643104 8.60124 1.25086ZM7.49999 3.29999C5.56699 3.29999 3.99999 4.86699 3.99999 6.79999V10.25L4.00002 10.3009C4.0005 10.7463 4.00121 11.4084 3.69929 12H11.3007C10.9988 11.4084 10.9995 10.7463 11 10.3009L11 10.25V6.79999C11 4.86699 9.43299 3.29999 7.49999 3.29999Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$q = [\"color\"];\nvar BlendingModeIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$q);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3 9C3 6.5 4.5 4.25 7.5 1.5C10.5 4.25 12 6.5 12 9C12 11.4853 9.98528 13.5 7.5 13.5C5.01472 13.5 3 11.4853 3 9ZM10.9524 8.30307C9.67347 7.82121 8.2879 8.46208 6.98956 9.06259C5.9327 9.55142 4.93365 10.0135 4.09695 9.82153C4.03357 9.55804 4 9.28294 4 9C4 7.11203 5.02686 5.27195 7.5 2.87357C9.66837 4.97639 10.725 6.65004 10.9524 8.30307Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$r = [\"color\"];\nvar BookmarkIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$r);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3 2.5C3 2.22386 3.22386 2 3.5 2H11.5C11.7761 2 12 2.22386 12 2.5V13.5C12 13.6818 11.9014 13.8492 11.7424 13.9373C11.5834 14.0254 11.3891 14.0203 11.235 13.924L7.5 11.5896L3.765 13.924C3.61087 14.0203 3.41659 14.0254 3.25762 13.9373C3.09864 13.8492 3 13.6818 3 13.5V2.5ZM4 3V12.5979L6.97 10.7416C7.29427 10.539 7.70573 10.539 8.03 10.7416L11 12.5979V3H4Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$s = [\"color\"];\nvar BookmarkFilledIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$s);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.5 2C3.22386 2 3 2.22386 3 2.5V13.5C3 13.6818 3.09864 13.8492 3.25762 13.9373C3.41659 14.0254 3.61087 14.0203 3.765 13.924L7.5 11.5896L11.235 13.924C11.3891 14.0203 11.5834 14.0254 11.7424 13.9373C11.9014 13.8492 12 13.6818 12 13.5V2.5C12 2.22386 11.7761 2 11.5 2H3.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$t = [\"color\"];\nvar BorderAllIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$t);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M0.25 1C0.25 0.585786 0.585786 0.25 1 0.25H14C14.4142 0.25 14.75 0.585786 14.75 1V14C14.75 14.4142 14.4142 14.75 14 14.75H1C0.585786 14.75 0.25 14.4142 0.25 14V1ZM1.75 1.75V13.25H13.25V1.75H1.75Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"5\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"3\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"7\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"5\",\n y: \"7\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"3\",\n y: \"7\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"9\",\n y: \"7\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"11\",\n y: \"7\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"9\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"11\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }));\n});\n\nvar _excluded$u = [\"color\"];\nvar BorderBottomIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$u);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1 13.25L14 13.25V14.75L1 14.75V13.25Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"5\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"13\",\n y: \"5\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"3\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"13\",\n y: \"3\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"7\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"1\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"13\",\n y: \"7\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"13\",\n y: \"1\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"5\",\n y: \"7\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"5\",\n y: \"1\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"3\",\n y: \"7\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"3\",\n y: \"1\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"9\",\n y: \"7\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"9\",\n y: \"1\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"11\",\n y: \"7\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"11\",\n y: \"1\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"9\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"13\",\n y: \"9\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"11\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"13\",\n y: \"11\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"1\",\n y: \"5\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"1\",\n y: \"3\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"1\",\n y: \"7\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"1\",\n y: \"1\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"1\",\n y: \"9\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"1\",\n y: \"11\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }));\n});\n\nvar _excluded$v = [\"color\"];\nvar BorderDashedIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$v);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M0 7.5C0 7.22386 0.223858 7 0.5 7H3C3.27614 7 3.5 7.22386 3.5 7.5C3.5 7.77614 3.27614 8 3 8H0.5C0.223858 8 0 7.77614 0 7.5ZM5.75 7.5C5.75 7.22386 5.97386 7 6.25 7H8.75C9.02614 7 9.25 7.22386 9.25 7.5C9.25 7.77614 9.02614 8 8.75 8H6.25C5.97386 8 5.75 7.77614 5.75 7.5ZM12 7C11.7239 7 11.5 7.22386 11.5 7.5C11.5 7.77614 11.7239 8 12 8H14.5C14.7761 8 15 7.77614 15 7.5C15 7.22386 14.7761 7 14.5 7H12Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$w = [\"color\"];\nvar BorderDottedIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$w);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1.5 6.625C1.01675 6.625 0.625 7.01675 0.625 7.5C0.625 7.98325 1.01675 8.375 1.5 8.375C1.98325 8.375 2.375 7.98325 2.375 7.5C2.375 7.01675 1.98325 6.625 1.5 6.625ZM5.5 6.625C5.01675 6.625 4.625 7.01675 4.625 7.5C4.625 7.98325 5.01675 8.375 5.5 8.375C5.98325 8.375 6.375 7.98325 6.375 7.5C6.375 7.01675 5.98325 6.625 5.5 6.625ZM9.5 6.625C9.01675 6.625 8.625 7.01675 8.625 7.5C8.625 7.98325 9.01675 8.375 9.5 8.375C9.98325 8.375 10.375 7.98325 10.375 7.5C10.375 7.01675 9.98325 6.625 9.5 6.625ZM12.625 7.5C12.625 7.01675 13.0168 6.625 13.5 6.625C13.9832 6.625 14.375 7.01675 14.375 7.5C14.375 7.98325 13.9832 8.375 13.5 8.375C13.0168 8.375 12.625 7.98325 12.625 7.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$x = [\"color\"];\nvar BorderLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$x);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1.75 1L1.75 14L0.249999 14L0.25 1L1.75 1Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"rect\", {\n x: \"10\",\n y: \"7\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 10 7)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"10\",\n y: \"13\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 10 13)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"12\",\n y: \"7\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 12 7)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"12\",\n y: \"13\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 12 13)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"8\",\n y: \"7\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 8 7)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"14\",\n y: \"7\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 14 7)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"8\",\n y: \"13\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 8 13)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"14\",\n y: \"13\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 14 13)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"8\",\n y: \"5\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 8 5)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"14\",\n y: \"5\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 14 5)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"8\",\n y: \"3\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 8 3)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"14\",\n y: \"3\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 14 3)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"8\",\n y: \"9\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 8 9)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"14\",\n y: \"9\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 14 9)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"8\",\n y: \"11\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 8 11)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"14\",\n y: \"11\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 14 11)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"6\",\n y: \"7\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 6 7)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"6\",\n y: \"13\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 6 13)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"4\",\n y: \"7\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 4 7)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"4\",\n y: \"13\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 4 13)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"10\",\n y: \"1\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 10 1)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"12\",\n y: \"1\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 12 1)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"8\",\n y: \"1\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 8 1)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"14\",\n y: \"1\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 14 1)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"6\",\n y: \"1\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 6 1)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"4\",\n y: \"1\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(90 4 1)\",\n fill: color\n }));\n});\n\nvar _excluded$y = [\"color\"];\nvar BorderNoneIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$y);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"5.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"13\",\n y: \"5.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"3.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"13\",\n y: \"3.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"7.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"13.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"1.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"13\",\n y: \"7.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"13\",\n y: \"13.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"13\",\n y: \"1.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"5\",\n y: \"7.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"5\",\n y: \"13.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"5\",\n y: \"1.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"3\",\n y: \"7.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"3\",\n y: \"13.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"3\",\n y: \"1.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"9\",\n y: \"7.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"9\",\n y: \"13.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"9\",\n y: \"1.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"11\",\n y: \"7.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"11\",\n y: \"13.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"11\",\n y: \"1.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"9.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"13\",\n y: \"9.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"11.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"13\",\n y: \"11.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"1\",\n y: \"5.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"1\",\n y: \"3.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"1\",\n y: \"7.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"1\",\n y: \"13.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"1\",\n y: \"1.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"1\",\n y: \"9.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"1\",\n y: \"11.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }));\n});\n\nvar _excluded$z = [\"color\"];\nvar BorderRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$z);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M13.25 1L13.25 14L14.75 14L14.75 1L13.25 1Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 5 7)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 5 13)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 3 7)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 3 13)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 7 7)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 1 7)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 7 13)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 1 13)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 7 5)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 1 5)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 7 3)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 1 3)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 7 9)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 1 9)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 7 11)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 1 11)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 9 7)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 9 13)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 11 7)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 11 13)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 5 1)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 3 1)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 7 1)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 1 1)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 9 1)\",\n fill: color\n }), createElement(\"rect\", {\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"matrix(0 1 1 0 11 1)\",\n fill: color\n }));\n});\n\nvar _excluded$A = [\"color\"];\nvar BorderSolidIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$A);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1.25 7.5C1.25 7.22386 1.47386 7 1.75 7H13.25C13.5261 7 13.75 7.22386 13.75 7.5C13.75 7.77614 13.5261 8 13.25 8H1.75C1.47386 8 1.25 7.77614 1.25 7.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$B = [\"color\"];\nvar BorderSplitIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$B);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"5.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"3.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"7.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"13.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"1.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"13\",\n y: \"7.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"5\",\n y: \"7.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"3\",\n y: \"7.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"9\",\n y: \"7.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"11\",\n y: \"7.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"9.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"7\",\n y: \"11.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"rect\", {\n x: \"1\",\n y: \"7.025\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n fill: color\n }), createElement(\"path\", {\n d: \"M1 1.49994C1 1.2238 1.22386 0.999939 1.5 0.999939H6V1.99994H2V5.99994H1V1.49994ZM13 1.99994H9V0.999939H13.5C13.7761 0.999939 14 1.2238 14 1.49994V5.99994H13V1.99994ZM1 13.4999V8.99994H2V12.9999H6V13.9999H1.5C1.22386 13.9999 1 13.7761 1 13.4999ZM13 12.9999V8.99994H14V13.4999C14 13.7761 13.7761 13.9999 13.5 13.9999H9.5V12.9999H13Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$C = [\"color\"];\nvar BorderStyleIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$C);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1.5 3C1.22386 3 1 3.22386 1 3.5C1 3.77614 1.22386 4 1.5 4H13.5C13.7761 4 14 3.77614 14 3.5C14 3.22386 13.7761 3 13.5 3H1.5ZM1 7.5C1 7.22386 1.22386 7 1.5 7H3.5C3.77614 7 4 7.22386 4 7.5C4 7.77614 3.77614 8 3.5 8H1.5C1.22386 8 1 7.77614 1 7.5ZM1 11.5C1 11.2239 1.22386 11 1.5 11C1.77614 11 2 11.2239 2 11.5C2 11.7761 1.77614 12 1.5 12C1.22386 12 1 11.7761 1 11.5ZM3 11.5C3 11.2239 3.22386 11 3.5 11C3.77614 11 4 11.2239 4 11.5C4 11.7761 3.77614 12 3.5 12C3.22386 12 3 11.7761 3 11.5ZM5.5 11C5.22386 11 5 11.2239 5 11.5C5 11.7761 5.22386 12 5.5 12C5.77614 12 6 11.7761 6 11.5C6 11.2239 5.77614 11 5.5 11ZM7 11.5C7 11.2239 7.22386 11 7.5 11C7.77614 11 8 11.2239 8 11.5C8 11.7761 7.77614 12 7.5 12C7.22386 12 7 11.7761 7 11.5ZM9.5 11C9.22386 11 9 11.2239 9 11.5C9 11.7761 9.22386 12 9.5 12C9.77614 12 10 11.7761 10 11.5C10 11.2239 9.77614 11 9.5 11ZM11 11.5C11 11.2239 11.2239 11 11.5 11C11.7761 11 12 11.2239 12 11.5C12 11.7761 11.7761 12 11.5 12C11.2239 12 11 11.7761 11 11.5ZM13.5 11C13.2239 11 13 11.2239 13 11.5C13 11.7761 13.2239 12 13.5 12C13.7761 12 14 11.7761 14 11.5C14 11.2239 13.7761 11 13.5 11ZM6.5 7C6.22386 7 6 7.22386 6 7.5C6 7.77614 6.22386 8 6.5 8H8.5C8.77614 8 9 7.77614 9 7.5C9 7.22386 8.77614 7 8.5 7H6.5ZM11 7.5C11 7.22386 11.2239 7 11.5 7H13.5C13.7761 7 14 7.22386 14 7.5C14 7.77614 13.7761 8 13.5 8H11.5C11.2239 8 11 7.77614 11 7.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$D = [\"color\"];\nvar BorderTopIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$D);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M14 1.75L1 1.75L1 0.249999L14 0.25L14 1.75Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"rect\", {\n x: \"8\",\n y: \"10\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 8 10)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"2\",\n y: \"10\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 2 10)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"8\",\n y: \"12\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 8 12)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"2\",\n y: \"12\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 2 12)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"8\",\n y: \"8\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 8 8)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"8\",\n y: \"14\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 8 14)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"2\",\n y: \"8\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 2 8)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"2\",\n y: \"14\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 2 14)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"10\",\n y: \"8\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 10 8)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"10\",\n y: \"14\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 10 14)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"12\",\n y: \"8\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 12 8)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"12\",\n y: \"14\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 12 14)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"6\",\n y: \"8\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 6 8)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"6\",\n y: \"14\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 6 14)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"4\",\n y: \"8\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 4 8)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"4\",\n y: \"14\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 4 14)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"8\",\n y: \"6\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 8 6)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"2\",\n y: \"6\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 2 6)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"8\",\n y: \"4\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 8 4)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"2\",\n y: \"4\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 2 4)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"14\",\n y: \"10\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 14 10)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"14\",\n y: \"12\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 14 12)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"14\",\n y: \"8\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 14 8)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"14\",\n y: \"14\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 14 14)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"14\",\n y: \"6\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 14 6)\",\n fill: color\n }), createElement(\"rect\", {\n x: \"14\",\n y: \"4\",\n width: \"1\",\n height: \"1\",\n rx: \".5\",\n transform: \"rotate(-180 14 4)\",\n fill: color\n }));\n});\n\nvar _excluded$E = [\"color\"];\nvar BorderWidthIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$E);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1 3H14V4H1V3ZM1 6H14V8H1V6ZM14 10.25H1V12.75H14V10.25Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$F = [\"color\"];\nvar BoxIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$F);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M12.5 2H2.5C2.22386 2 2 2.22386 2 2.5V12.5C2 12.7761 2.22386 13 2.5 13H12.5C12.7761 13 13 12.7761 13 12.5V2.5C13 2.22386 12.7761 2 12.5 2ZM2.5 1C1.67157 1 1 1.67157 1 2.5V12.5C1 13.3284 1.67157 14 2.5 14H12.5C13.3284 14 14 13.3284 14 12.5V2.5C14 1.67157 13.3284 1 12.5 1H2.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$G = [\"color\"];\nvar BoxModelIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$G);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1.99998 0.999976C1.44769 0.999976 0.999976 1.44769 0.999976 1.99998V13C0.999976 13.5523 1.44769 14 1.99998 14H13C13.5523 14 14 13.5523 14 13V1.99998C14 1.44769 13.5523 0.999976 13 0.999976H1.99998ZM1.99998 1.99998L13 1.99998V13H1.99998V1.99998ZM4.49996 3.99996C4.22382 3.99996 3.99996 4.22382 3.99996 4.49996V10.5C3.99996 10.7761 4.22382 11 4.49996 11H10.5C10.7761 11 11 10.7761 11 10.5V4.49996C11 4.22382 10.7761 3.99996 10.5 3.99996H4.49996ZM4.99996 9.99996V4.99996H9.99996V9.99996H4.99996Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$H = [\"color\"];\nvar ButtonIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$H);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2 5H13C13.5523 5 14 5.44772 14 6V9C14 9.55228 13.5523 10 13 10H2C1.44772 10 1 9.55228 1 9V6C1 5.44772 1.44772 5 2 5ZM0 6C0 4.89543 0.895431 4 2 4H13C14.1046 4 15 4.89543 15 6V9C15 10.1046 14.1046 11 13 11H2C0.89543 11 0 10.1046 0 9V6ZM4.5 6.75C4.08579 6.75 3.75 7.08579 3.75 7.5C3.75 7.91421 4.08579 8.25 4.5 8.25C4.91421 8.25 5.25 7.91421 5.25 7.5C5.25 7.08579 4.91421 6.75 4.5 6.75ZM6.75 7.5C6.75 7.08579 7.08579 6.75 7.5 6.75C7.91421 6.75 8.25 7.08579 8.25 7.5C8.25 7.91421 7.91421 8.25 7.5 8.25C7.08579 8.25 6.75 7.91421 6.75 7.5ZM10.5 6.75C10.0858 6.75 9.75 7.08579 9.75 7.5C9.75 7.91421 10.0858 8.25 10.5 8.25C10.9142 8.25 11.25 7.91421 11.25 7.5C11.25 7.08579 10.9142 6.75 10.5 6.75Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$I = [\"color\"];\nvar CalendarIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$I);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M4.5 1C4.77614 1 5 1.22386 5 1.5V2H10V1.5C10 1.22386 10.2239 1 10.5 1C10.7761 1 11 1.22386 11 1.5V2H12.5C13.3284 2 14 2.67157 14 3.5V12.5C14 13.3284 13.3284 14 12.5 14H2.5C1.67157 14 1 13.3284 1 12.5V3.5C1 2.67157 1.67157 2 2.5 2H4V1.5C4 1.22386 4.22386 1 4.5 1ZM10 3V3.5C10 3.77614 10.2239 4 10.5 4C10.7761 4 11 3.77614 11 3.5V3H12.5C12.7761 3 13 3.22386 13 3.5V5H2V3.5C2 3.22386 2.22386 3 2.5 3H4V3.5C4 3.77614 4.22386 4 4.5 4C4.77614 4 5 3.77614 5 3.5V3H10ZM2 6V12.5C2 12.7761 2.22386 13 2.5 13H12.5C12.7761 13 13 12.7761 13 12.5V6H2ZM7 7.5C7 7.22386 7.22386 7 7.5 7C7.77614 7 8 7.22386 8 7.5C8 7.77614 7.77614 8 7.5 8C7.22386 8 7 7.77614 7 7.5ZM9.5 7C9.22386 7 9 7.22386 9 7.5C9 7.77614 9.22386 8 9.5 8C9.77614 8 10 7.77614 10 7.5C10 7.22386 9.77614 7 9.5 7ZM11 7.5C11 7.22386 11.2239 7 11.5 7C11.7761 7 12 7.22386 12 7.5C12 7.77614 11.7761 8 11.5 8C11.2239 8 11 7.77614 11 7.5ZM11.5 9C11.2239 9 11 9.22386 11 9.5C11 9.77614 11.2239 10 11.5 10C11.7761 10 12 9.77614 12 9.5C12 9.22386 11.7761 9 11.5 9ZM9 9.5C9 9.22386 9.22386 9 9.5 9C9.77614 9 10 9.22386 10 9.5C10 9.77614 9.77614 10 9.5 10C9.22386 10 9 9.77614 9 9.5ZM7.5 9C7.22386 9 7 9.22386 7 9.5C7 9.77614 7.22386 10 7.5 10C7.77614 10 8 9.77614 8 9.5C8 9.22386 7.77614 9 7.5 9ZM5 9.5C5 9.22386 5.22386 9 5.5 9C5.77614 9 6 9.22386 6 9.5C6 9.77614 5.77614 10 5.5 10C5.22386 10 5 9.77614 5 9.5ZM3.5 9C3.22386 9 3 9.22386 3 9.5C3 9.77614 3.22386 10 3.5 10C3.77614 10 4 9.77614 4 9.5C4 9.22386 3.77614 9 3.5 9ZM3 11.5C3 11.2239 3.22386 11 3.5 11C3.77614 11 4 11.2239 4 11.5C4 11.7761 3.77614 12 3.5 12C3.22386 12 3 11.7761 3 11.5ZM5.5 11C5.22386 11 5 11.2239 5 11.5C5 11.7761 5.22386 12 5.5 12C5.77614 12 6 11.7761 6 11.5C6 11.2239 5.77614 11 5.5 11ZM7 11.5C7 11.2239 7.22386 11 7.5 11C7.77614 11 8 11.2239 8 11.5C8 11.7761 7.77614 12 7.5 12C7.22386 12 7 11.7761 7 11.5ZM9.5 11C9.22386 11 9 11.2239 9 11.5C9 11.7761 9.22386 12 9.5 12C9.77614 12 10 11.7761 10 11.5C10 11.2239 9.77614 11 9.5 11Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$J = [\"color\"];\nvar CameraIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$J);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2 3C1.44772 3 1 3.44772 1 4V11C1 11.5523 1.44772 12 2 12H13C13.5523 12 14 11.5523 14 11V4C14 3.44772 13.5523 3 13 3H2ZM0 4C0 2.89543 0.895431 2 2 2H13C14.1046 2 15 2.89543 15 4V11C15 12.1046 14.1046 13 13 13H2C0.895431 13 0 12.1046 0 11V4ZM2 4.25C2 4.11193 2.11193 4 2.25 4H4.75C4.88807 4 5 4.11193 5 4.25V5.75454C5 5.89261 4.88807 6.00454 4.75 6.00454H2.25C2.11193 6.00454 2 5.89261 2 5.75454V4.25ZM12.101 7.58421C12.101 9.02073 10.9365 10.1853 9.49998 10.1853C8.06346 10.1853 6.89893 9.02073 6.89893 7.58421C6.89893 6.14769 8.06346 4.98315 9.49998 4.98315C10.9365 4.98315 12.101 6.14769 12.101 7.58421ZM13.101 7.58421C13.101 9.57302 11.4888 11.1853 9.49998 11.1853C7.51117 11.1853 5.89893 9.57302 5.89893 7.58421C5.89893 5.5954 7.51117 3.98315 9.49998 3.98315C11.4888 3.98315 13.101 5.5954 13.101 7.58421Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$K = [\"color\"];\nvar CardStackIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$K);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2 3.5C2 3.22386 2.22386 3 2.5 3H12.5C12.7761 3 13 3.22386 13 3.5V9.5C13 9.77614 12.7761 10 12.5 10H2.5C2.22386 10 2 9.77614 2 9.5V3.5ZM2 10.9146C1.4174 10.7087 1 10.1531 1 9.5V3.5C1 2.67157 1.67157 2 2.5 2H12.5C13.3284 2 14 2.67157 14 3.5V9.5C14 10.1531 13.5826 10.7087 13 10.9146V11.5C13 12.3284 12.3284 13 11.5 13H3.5C2.67157 13 2 12.3284 2 11.5V10.9146ZM12 11V11.5C12 11.7761 11.7761 12 11.5 12H3.5C3.22386 12 3 11.7761 3 11.5V11H12Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$L = [\"color\"];\nvar CardStackMinusIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$L);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2.5 3C2.22386 3 2 3.22386 2 3.5V9.5C2 9.77614 2.22386 10 2.5 10H12.5C12.7761 10 13 9.77614 13 9.5V3.5C13 3.22386 12.7761 3 12.5 3H2.5ZM1 9.5C1 10.1531 1.4174 10.7087 2 10.9146V11.5C2 12.3284 2.67157 13 3.5 13H11.5C12.3284 13 13 12.3284 13 11.5V10.9146C13.5826 10.7087 14 10.1531 14 9.5V3.5C14 2.67157 13.3284 2 12.5 2H2.5C1.67157 2 1 2.67157 1 3.5V9.5ZM12 11.5V11H3V11.5C3 11.7761 3.22386 12 3.5 12H11.5C11.7761 12 12 11.7761 12 11.5ZM5.5 6C5.22386 6 5 6.22386 5 6.5C5 6.77614 5.22386 7 5.5 7H9.5C9.77614 7 10 6.77614 10 6.5C10 6.22386 9.77614 6 9.5 6H5.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$M = [\"color\"];\nvar CardStackPlusIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$M);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2 3.5C2 3.22386 2.22386 3 2.5 3H12.5C12.7761 3 13 3.22386 13 3.5V9.5C13 9.77614 12.7761 10 12.5 10H2.5C2.22386 10 2 9.77614 2 9.5V3.5ZM2 10.9146C1.4174 10.7087 1 10.1531 1 9.5V3.5C1 2.67157 1.67157 2 2.5 2H12.5C13.3284 2 14 2.67157 14 3.5V9.5C14 10.1531 13.5826 10.7087 13 10.9146V11.5C13 12.3284 12.3284 13 11.5 13H3.5C2.67157 13 2 12.3284 2 11.5V10.9146ZM12 11V11.5C12 11.7761 11.7761 12 11.5 12H3.5C3.22386 12 3 11.7761 3 11.5V11H12ZM5 6.5C5 6.22386 5.22386 6 5.5 6H7V4.5C7 4.22386 7.22386 4 7.5 4C7.77614 4 8 4.22386 8 4.5V6H9.5C9.77614 6 10 6.22386 10 6.5C10 6.77614 9.77614 7 9.5 7H8V8.5C8 8.77614 7.77614 9 7.5 9C7.22386 9 7 8.77614 7 8.5V7H5.5C5.22386 7 5 6.77614 5 6.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$N = [\"color\"];\nvar CaretDownIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$N);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M4.18179 6.18181C4.35753 6.00608 4.64245 6.00608 4.81819 6.18181L7.49999 8.86362L10.1818 6.18181C10.3575 6.00608 10.6424 6.00608 10.8182 6.18181C10.9939 6.35755 10.9939 6.64247 10.8182 6.81821L7.81819 9.81821C7.73379 9.9026 7.61934 9.95001 7.49999 9.95001C7.38064 9.95001 7.26618 9.9026 7.18179 9.81821L4.18179 6.81821C4.00605 6.64247 4.00605 6.35755 4.18179 6.18181Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$O = [\"color\"];\nvar CaretLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$O);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M8.81809 4.18179C8.99383 4.35753 8.99383 4.64245 8.81809 4.81819L6.13629 7.49999L8.81809 10.1818C8.99383 10.3575 8.99383 10.6424 8.81809 10.8182C8.64236 10.9939 8.35743 10.9939 8.1817 10.8182L5.1817 7.81819C5.09731 7.73379 5.0499 7.61933 5.0499 7.49999C5.0499 7.38064 5.09731 7.26618 5.1817 7.18179L8.1817 4.18179C8.35743 4.00605 8.64236 4.00605 8.81809 4.18179Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$P = [\"color\"];\nvar CaretRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$P);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M6.18194 4.18185C6.35767 4.00611 6.6426 4.00611 6.81833 4.18185L9.81833 7.18185C9.90272 7.26624 9.95013 7.3807 9.95013 7.50005C9.95013 7.6194 9.90272 7.73386 9.81833 7.81825L6.81833 10.8182C6.6426 10.994 6.35767 10.994 6.18194 10.8182C6.0062 10.6425 6.0062 10.3576 6.18194 10.1819L8.86374 7.50005L6.18194 4.81825C6.0062 4.64251 6.0062 4.35759 6.18194 4.18185Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$Q = [\"color\"];\nvar CaretSortIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$Q);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M4.93179 5.43179C4.75605 5.60753 4.75605 5.89245 4.93179 6.06819C5.10753 6.24392 5.39245 6.24392 5.56819 6.06819L7.49999 4.13638L9.43179 6.06819C9.60753 6.24392 9.89245 6.24392 10.0682 6.06819C10.2439 5.89245 10.2439 5.60753 10.0682 5.43179L7.81819 3.18179C7.73379 3.0974 7.61933 3.04999 7.49999 3.04999C7.38064 3.04999 7.26618 3.0974 7.18179 3.18179L4.93179 5.43179ZM10.0682 9.56819C10.2439 9.39245 10.2439 9.10753 10.0682 8.93179C9.89245 8.75606 9.60753 8.75606 9.43179 8.93179L7.49999 10.8636L5.56819 8.93179C5.39245 8.75606 5.10753 8.75606 4.93179 8.93179C4.75605 9.10753 4.75605 9.39245 4.93179 9.56819L7.18179 11.8182C7.35753 11.9939 7.64245 11.9939 7.81819 11.8182L10.0682 9.56819Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$R = [\"color\"];\nvar CaretUpIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$R);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M4.18179 8.81819C4.00605 8.64245 4.00605 8.35753 4.18179 8.18179L7.18179 5.18179C7.26618 5.0974 7.38064 5.04999 7.49999 5.04999C7.61933 5.04999 7.73379 5.0974 7.81819 5.18179L10.8182 8.18179C10.9939 8.35753 10.9939 8.64245 10.8182 8.81819C10.6424 8.99392 10.3575 8.99392 10.1818 8.81819L7.49999 6.13638L4.81819 8.81819C4.64245 8.99392 4.35753 8.99392 4.18179 8.81819Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$S = [\"color\"];\nvar ChatBubbleIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$S);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M12.5 3L2.5 3.00002C1.67157 3.00002 1 3.6716 1 4.50002V9.50003C1 10.3285 1.67157 11 2.5 11H7.50003C7.63264 11 7.75982 11.0527 7.85358 11.1465L10 13.2929V11.5C10 11.2239 10.2239 11 10.5 11H12.5C13.3284 11 14 10.3285 14 9.50003V4.5C14 3.67157 13.3284 3 12.5 3ZM2.49999 2.00002L12.5 2C13.8807 2 15 3.11929 15 4.5V9.50003C15 10.8807 13.8807 12 12.5 12H11V14.5C11 14.7022 10.8782 14.8845 10.6913 14.9619C10.5045 15.0393 10.2894 14.9965 10.1464 14.8536L7.29292 12H2.5C1.11929 12 0 10.8807 0 9.50003V4.50002C0 3.11931 1.11928 2.00003 2.49999 2.00002Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$T = [\"color\"];\nvar CheckIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$T);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$U = [\"color\"];\nvar CheckCircledIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$U);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.49991 0.877045C3.84222 0.877045 0.877075 3.84219 0.877075 7.49988C0.877075 11.1575 3.84222 14.1227 7.49991 14.1227C11.1576 14.1227 14.1227 11.1575 14.1227 7.49988C14.1227 3.84219 11.1576 0.877045 7.49991 0.877045ZM1.82708 7.49988C1.82708 4.36686 4.36689 1.82704 7.49991 1.82704C10.6329 1.82704 13.1727 4.36686 13.1727 7.49988C13.1727 10.6329 10.6329 13.1727 7.49991 13.1727C4.36689 13.1727 1.82708 10.6329 1.82708 7.49988ZM10.1589 5.53774C10.3178 5.31191 10.2636 5.00001 10.0378 4.84109C9.81194 4.68217 9.50004 4.73642 9.34112 4.96225L6.51977 8.97154L5.35681 7.78706C5.16334 7.59002 4.84677 7.58711 4.64973 7.78058C4.45268 7.97404 4.44978 8.29061 4.64325 8.48765L6.22658 10.1003C6.33054 10.2062 6.47617 10.2604 6.62407 10.2483C6.77197 10.2363 6.90686 10.1591 6.99226 10.0377L10.1589 5.53774Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$V = [\"color\"];\nvar CheckboxIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$V);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3 3H12V12H3L3 3ZM2 3C2 2.44771 2.44772 2 3 2H12C12.5523 2 13 2.44772 13 3V12C13 12.5523 12.5523 13 12 13H3C2.44771 13 2 12.5523 2 12V3ZM10.3498 5.51105C10.506 5.28337 10.4481 4.97212 10.2204 4.81587C9.99275 4.65961 9.6815 4.71751 9.52525 4.94519L6.64048 9.14857L5.19733 7.40889C5.02102 7.19635 4.7058 7.16699 4.49327 7.34329C4.28073 7.5196 4.25137 7.83482 4.42767 8.04735L6.2934 10.2964C6.39348 10.4171 6.54437 10.4838 6.70097 10.4767C6.85757 10.4695 7.00177 10.3894 7.09047 10.2601L10.3498 5.51105Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$W = [\"color\"];\nvar ChevronDownIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$W);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$X = [\"color\"];\nvar ChevronLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$X);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M8.84182 3.13514C9.04327 3.32401 9.05348 3.64042 8.86462 3.84188L5.43521 7.49991L8.86462 11.1579C9.05348 11.3594 9.04327 11.6758 8.84182 11.8647C8.64036 12.0535 8.32394 12.0433 8.13508 11.8419L4.38508 7.84188C4.20477 7.64955 4.20477 7.35027 4.38508 7.15794L8.13508 3.15794C8.32394 2.95648 8.64036 2.94628 8.84182 3.13514Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$Y = [\"color\"];\nvar ChevronRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$Y);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M6.1584 3.13508C6.35985 2.94621 6.67627 2.95642 6.86514 3.15788L10.6151 7.15788C10.7954 7.3502 10.7954 7.64949 10.6151 7.84182L6.86514 11.8418C6.67627 12.0433 6.35985 12.0535 6.1584 11.8646C5.95694 11.6757 5.94673 11.3593 6.1356 11.1579L9.565 7.49985L6.1356 3.84182C5.94673 3.64036 5.95694 3.32394 6.1584 3.13508Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$Z = [\"color\"];\nvar ChevronUpIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$Z);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.13523 8.84197C3.3241 9.04343 3.64052 9.05363 3.84197 8.86477L7.5 5.43536L11.158 8.86477C11.3595 9.05363 11.6759 9.04343 11.8648 8.84197C12.0536 8.64051 12.0434 8.32409 11.842 8.13523L7.84197 4.38523C7.64964 4.20492 7.35036 4.20492 7.15803 4.38523L3.15803 8.13523C2.95657 8.32409 2.94637 8.64051 3.13523 8.84197Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$_ = [\"color\"];\nvar CircleIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$_);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M0.877075 7.49991C0.877075 3.84222 3.84222 0.877075 7.49991 0.877075C11.1576 0.877075 14.1227 3.84222 14.1227 7.49991C14.1227 11.1576 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1576 0.877075 7.49991ZM7.49991 1.82708C4.36689 1.82708 1.82708 4.36689 1.82708 7.49991C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49991C13.1727 4.36689 10.6329 1.82708 7.49991 1.82708Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$$ = [\"color\"];\nvar CircleBackslashIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$$);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.49991 0.877075C3.84222 0.877075 0.877075 3.84222 0.877075 7.49991C0.877075 11.1576 3.84222 14.1227 7.49991 14.1227C11.1576 14.1227 14.1227 11.1576 14.1227 7.49991C14.1227 3.84222 11.1576 0.877075 7.49991 0.877075ZM3.85768 3.15057C4.84311 2.32448 6.11342 1.82708 7.49991 1.82708C10.6329 1.82708 13.1727 4.36689 13.1727 7.49991C13.1727 8.88638 12.6753 10.1567 11.8492 11.1421L3.85768 3.15057ZM3.15057 3.85768C2.32448 4.84311 1.82708 6.11342 1.82708 7.49991C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C8.88638 13.1727 10.1567 12.6753 11.1421 11.8492L3.15057 3.85768Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$10 = [\"color\"];\nvar ClipboardIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$10);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M5 2V1H10V2H5ZM4.75 0C4.33579 0 4 0.335786 4 0.75V1H3.5C2.67157 1 2 1.67157 2 2.5V12.5C2 13.3284 2.67157 14 3.5 14H11.5C12.3284 14 13 13.3284 13 12.5V2.5C13 1.67157 12.3284 1 11.5 1H11V0.75C11 0.335786 10.6642 0 10.25 0H4.75ZM11 2V2.25C11 2.66421 10.6642 3 10.25 3H4.75C4.33579 3 4 2.66421 4 2.25V2H3.5C3.22386 2 3 2.22386 3 2.5V12.5C3 12.7761 3.22386 13 3.5 13H11.5C11.7761 13 12 12.7761 12 12.5V2.5C12 2.22386 11.7761 2 11.5 2H11Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$11 = [\"color\"];\nvar ClipboardCopyIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$11);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M5 2V1H10V2H5ZM4.75 0C4.33579 0 4 0.335786 4 0.75V1H3.5C2.67157 1 2 1.67157 2 2.5V12.5C2 13.3284 2.67157 14 3.5 14H7V13H3.5C3.22386 13 3 12.7761 3 12.5V2.5C3 2.22386 3.22386 2 3.5 2H4V2.25C4 2.66421 4.33579 3 4.75 3H10.25C10.6642 3 11 2.66421 11 2.25V2H11.5C11.7761 2 12 2.22386 12 2.5V7H13V2.5C13 1.67157 12.3284 1 11.5 1H11V0.75C11 0.335786 10.6642 0 10.25 0H4.75ZM9 8.5C9 8.77614 8.77614 9 8.5 9C8.22386 9 8 8.77614 8 8.5C8 8.22386 8.22386 8 8.5 8C8.77614 8 9 8.22386 9 8.5ZM10.5 9C10.7761 9 11 8.77614 11 8.5C11 8.22386 10.7761 8 10.5 8C10.2239 8 10 8.22386 10 8.5C10 8.77614 10.2239 9 10.5 9ZM13 8.5C13 8.77614 12.7761 9 12.5 9C12.2239 9 12 8.77614 12 8.5C12 8.22386 12.2239 8 12.5 8C12.7761 8 13 8.22386 13 8.5ZM14.5 9C14.7761 9 15 8.77614 15 8.5C15 8.22386 14.7761 8 14.5 8C14.2239 8 14 8.22386 14 8.5C14 8.77614 14.2239 9 14.5 9ZM15 10.5C15 10.7761 14.7761 11 14.5 11C14.2239 11 14 10.7761 14 10.5C14 10.2239 14.2239 10 14.5 10C14.7761 10 15 10.2239 15 10.5ZM14.5 13C14.7761 13 15 12.7761 15 12.5C15 12.2239 14.7761 12 14.5 12C14.2239 12 14 12.2239 14 12.5C14 12.7761 14.2239 13 14.5 13ZM14.5 15C14.7761 15 15 14.7761 15 14.5C15 14.2239 14.7761 14 14.5 14C14.2239 14 14 14.2239 14 14.5C14 14.7761 14.2239 15 14.5 15ZM8.5 11C8.77614 11 9 10.7761 9 10.5C9 10.2239 8.77614 10 8.5 10C8.22386 10 8 10.2239 8 10.5C8 10.7761 8.22386 11 8.5 11ZM9 12.5C9 12.7761 8.77614 13 8.5 13C8.22386 13 8 12.7761 8 12.5C8 12.2239 8.22386 12 8.5 12C8.77614 12 9 12.2239 9 12.5ZM8.5 15C8.77614 15 9 14.7761 9 14.5C9 14.2239 8.77614 14 8.5 14C8.22386 14 8 14.2239 8 14.5C8 14.7761 8.22386 15 8.5 15ZM11 14.5C11 14.7761 10.7761 15 10.5 15C10.2239 15 10 14.7761 10 14.5C10 14.2239 10.2239 14 10.5 14C10.7761 14 11 14.2239 11 14.5ZM12.5 15C12.7761 15 13 14.7761 13 14.5C13 14.2239 12.7761 14 12.5 14C12.2239 14 12 14.2239 12 14.5C12 14.7761 12.2239 15 12.5 15Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$12 = [\"color\"];\nvar ClockIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$12);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.50009 0.877014C3.84241 0.877014 0.877258 3.84216 0.877258 7.49984C0.877258 11.1575 3.8424 14.1227 7.50009 14.1227C11.1578 14.1227 14.1229 11.1575 14.1229 7.49984C14.1229 3.84216 11.1577 0.877014 7.50009 0.877014ZM1.82726 7.49984C1.82726 4.36683 4.36708 1.82701 7.50009 1.82701C10.6331 1.82701 13.1729 4.36683 13.1729 7.49984C13.1729 10.6328 10.6331 13.1727 7.50009 13.1727C4.36708 13.1727 1.82726 10.6328 1.82726 7.49984ZM8 4.50001C8 4.22387 7.77614 4.00001 7.5 4.00001C7.22386 4.00001 7 4.22387 7 4.50001V7.50001C7 7.63262 7.05268 7.7598 7.14645 7.85357L9.14645 9.85357C9.34171 10.0488 9.65829 10.0488 9.85355 9.85357C10.0488 9.65831 10.0488 9.34172 9.85355 9.14646L8 7.29291V4.50001Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$13 = [\"color\"];\nvar CodeIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$13);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M9.96424 2.68571C10.0668 2.42931 9.94209 2.13833 9.6857 2.03577C9.4293 1.93322 9.13832 2.05792 9.03576 2.31432L5.03576 12.3143C4.9332 12.5707 5.05791 12.8617 5.3143 12.9642C5.5707 13.0668 5.86168 12.9421 5.96424 12.6857L9.96424 2.68571ZM3.85355 5.14646C4.04882 5.34172 4.04882 5.6583 3.85355 5.85356L2.20711 7.50001L3.85355 9.14646C4.04882 9.34172 4.04882 9.6583 3.85355 9.85356C3.65829 10.0488 3.34171 10.0488 3.14645 9.85356L1.14645 7.85356C0.951184 7.6583 0.951184 7.34172 1.14645 7.14646L3.14645 5.14646C3.34171 4.9512 3.65829 4.9512 3.85355 5.14646ZM11.1464 5.14646C11.3417 4.9512 11.6583 4.9512 11.8536 5.14646L13.8536 7.14646C14.0488 7.34172 14.0488 7.6583 13.8536 7.85356L11.8536 9.85356C11.6583 10.0488 11.3417 10.0488 11.1464 9.85356C10.9512 9.6583 10.9512 9.34172 11.1464 9.14646L12.7929 7.50001L11.1464 5.85356C10.9512 5.6583 10.9512 5.34172 11.1464 5.14646Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$14 = [\"color\"];\nvar CodeSandboxLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$14);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.71144 0.796902C7.57741 0.734357 7.42257 0.734357 7.28855 0.796902L1.28855 3.5969C1.11251 3.67905 0.999993 3.85573 0.999993 4.04999V10.95C0.999993 11.1443 1.11251 11.3209 1.28855 11.4031L7.28855 14.2031C7.42257 14.2656 7.57741 14.2656 7.71144 14.2031L13.7114 11.4031C13.8875 11.3209 14 11.1443 14 10.95V4.04999C14 3.85573 13.8875 3.67905 13.7114 3.5969L7.71144 0.796902ZM7.49999 3.15674L5.98039 2.51091L7.49999 1.80176L9.01959 2.51091L7.49999 3.15674ZM7.69556 4.16018L10.2382 3.07958L12.2719 4.02865L7.49999 6.05671L2.72808 4.02865L4.76181 3.07958L7.30442 4.16018C7.42939 4.2133 7.57059 4.2133 7.69556 4.16018ZM7.99999 6.93078L13 4.80578V7.92966L11.0821 8.8119C10.7273 8.97509 10.5 9.32988 10.5 9.72039V11.7982L7.99999 12.9649V6.93078ZM11.5 11.3316L13 10.6316V9.03039L11.5 9.72039V11.3316ZM6.99999 6.93078V12.9649L4.50231 11.7993V9.72036C4.50231 9.32985 4.27499 8.97506 3.92022 8.81187L1.99999 7.92856V4.80578L6.99999 6.93078ZM1.99999 10.6316L3.50231 11.3326L3.50231 9.72036L1.99999 9.02929V10.6316Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$15 = [\"color\"];\nvar ColorWheelIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$15);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M0.877075 7.49985C0.877075 3.84216 3.84222 0.877014 7.49991 0.877014C11.1576 0.877014 14.1227 3.84216 14.1227 7.49985C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49985ZM3.78135 3.21565C4.68298 2.43239 5.83429 1.92904 7.09998 1.84089V6.53429L3.78135 3.21565ZM3.21567 3.78134C2.43242 4.68298 1.92909 5.83428 1.84095 7.09997H6.5343L3.21567 3.78134ZM6.5343 7.89997H1.84097C1.92916 9.16562 2.43253 10.3169 3.21579 11.2185L6.5343 7.89997ZM3.78149 11.7842C4.6831 12.5673 5.83435 13.0707 7.09998 13.1588V8.46566L3.78149 11.7842ZM7.89998 8.46566V13.1588C9.16559 13.0706 10.3168 12.5673 11.2184 11.7841L7.89998 8.46566ZM11.7841 11.2184C12.5673 10.3168 13.0707 9.16558 13.1588 7.89997H8.46567L11.7841 11.2184ZM8.46567 7.09997H13.1589C13.0707 5.83432 12.5674 4.68305 11.7842 3.78143L8.46567 7.09997ZM11.2185 3.21573C10.3169 2.43246 9.16565 1.92909 7.89998 1.8409V6.53429L11.2185 3.21573Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$16 = [\"color\"];\nvar ColumnSpacingIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$16);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M8.00012 1.5C8.00012 1.22386 7.77626 1 7.50012 1C7.22398 1 7.00012 1.22386 7.00012 1.5V13.5C7.00012 13.7761 7.22398 14 7.50012 14C7.77626 14 8.00012 13.7761 8.00012 13.5V1.5ZM3.31812 5.818C3.49386 5.64227 3.49386 5.35734 3.31812 5.18161C3.14239 5.00587 2.85746 5.00587 2.68173 5.18161L0.681729 7.18161C0.505993 7.35734 0.505993 7.64227 0.681729 7.818L2.68173 9.818C2.85746 9.99374 3.14239 9.99374 3.31812 9.818C3.49386 9.64227 3.49386 9.35734 3.31812 9.18161L2.08632 7.9498H5.50017C5.7487 7.9498 5.95017 7.74833 5.95017 7.4998C5.95017 7.25128 5.7487 7.0498 5.50017 7.0498H2.08632L3.31812 5.818ZM12.3181 5.18161C12.1424 5.00587 11.8575 5.00587 11.6817 5.18161C11.506 5.35734 11.506 5.64227 11.6817 5.818L12.9135 7.0498H9.50017C9.25164 7.0498 9.05017 7.25128 9.05017 7.4998C9.05017 7.74833 9.25164 7.9498 9.50017 7.9498H12.9135L11.6817 9.18161C11.506 9.35734 11.506 9.64227 11.6817 9.818C11.8575 9.99374 12.1424 9.99374 12.3181 9.818L14.3181 7.818C14.4939 7.64227 14.4939 7.35734 14.3181 7.18161L12.3181 5.18161Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$17 = [\"color\"];\nvar ColumnsIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$17);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2.14998 14V1H0.849976V14H2.14998ZM6.14998 14V1H4.84998V14H6.14998ZM10.15 1V14H8.84998V1H10.15ZM14.15 14V1H12.85V14H14.15Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$18 = [\"color\"];\nvar CommitIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$18);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M9.94969 7.49989C9.94969 8.85288 8.85288 9.94969 7.49989 9.94969C6.14691 9.94969 5.0501 8.85288 5.0501 7.49989C5.0501 6.14691 6.14691 5.0501 7.49989 5.0501C8.85288 5.0501 9.94969 6.14691 9.94969 7.49989ZM10.8632 8C10.6213 9.64055 9.20764 10.8997 7.49989 10.8997C5.79214 10.8997 4.37847 9.64055 4.13662 8H0.5C0.223858 8 0 7.77614 0 7.5C0 7.22386 0.223858 7 0.5 7H4.13659C4.37835 5.35935 5.79206 4.1001 7.49989 4.1001C9.20772 4.1001 10.6214 5.35935 10.8632 7H14.5C14.7761 7 15 7.22386 15 7.5C15 7.77614 14.7761 8 14.5 8H10.8632Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$19 = [\"color\"];\nvar Component1Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$19);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M4.67129 3.14634C4.47603 3.34161 4.47603 3.65819 4.67129 3.85345L7.14616 6.32833C7.34142 6.52359 7.65801 6.52359 7.85327 6.32833L10.3281 3.85345C10.5234 3.65819 10.5234 3.34161 10.3281 3.14634L7.85327 0.671471C7.65801 0.476209 7.34142 0.476209 7.14616 0.671471L4.67129 3.14634ZM7.49971 5.26766L5.73195 3.4999L7.49971 1.73213L9.26748 3.4999L7.49971 5.26766ZM8.67129 7.14634C8.47603 7.34161 8.47603 7.65819 8.67129 7.85345L11.1462 10.3283C11.3414 10.5236 11.658 10.5236 11.8533 10.3283L14.3281 7.85345C14.5234 7.65819 14.5234 7.34161 14.3281 7.14634L11.8533 4.67147C11.658 4.47621 11.3414 4.47621 11.1462 4.67147L8.67129 7.14634ZM11.4997 9.26766L9.73195 7.4999L11.4997 5.73213L13.2675 7.4999L11.4997 9.26766ZM4.67129 11.8535C4.47603 11.6582 4.47603 11.3416 4.67129 11.1463L7.14616 8.67147C7.34142 8.47621 7.65801 8.47621 7.85327 8.67147L10.3281 11.1463C10.5234 11.3416 10.5234 11.6582 10.3281 11.8535L7.85327 14.3283C7.65801 14.5236 7.34142 14.5236 7.14616 14.3283L4.67129 11.8535ZM5.73195 11.4999L7.49971 13.2677L9.26748 11.4999L7.49971 9.73213L5.73195 11.4999ZM0.671288 7.14649C0.476026 7.34175 0.476026 7.65834 0.671288 7.8536L3.14616 10.3285C3.34142 10.5237 3.65801 10.5237 3.85327 10.3285L6.32814 7.8536C6.5234 7.65834 6.5234 7.34175 6.32814 7.14649L3.85327 4.67162C3.65801 4.47636 3.34142 4.47636 3.14616 4.67162L0.671288 7.14649ZM3.49972 9.26781L1.73195 7.50005L3.49972 5.73228L5.26748 7.50005L3.49972 9.26781Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1a = [\"color\"];\nvar Component2Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1a);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.87935 1H3.9H11.1H11.1207C11.5231 0.999994 11.8553 0.999989 12.1259 1.0221C12.407 1.04506 12.6653 1.09434 12.908 1.21799C13.2843 1.40973 13.5903 1.7157 13.782 2.09202C13.9057 2.33469 13.9549 2.59304 13.9779 2.87409C14 3.14468 14 3.47686 14 3.87934V3.9V11.1V11.1207C14 11.5231 14 11.8553 13.9779 12.1259C13.9549 12.407 13.9057 12.6653 13.782 12.908C13.5903 13.2843 13.2843 13.5903 12.908 13.782C12.6653 13.9057 12.407 13.9549 12.1259 13.9779C11.8553 14 11.5231 14 11.1207 14H11.1H3.9H3.87934C3.47686 14 3.14468 14 2.87409 13.9779C2.59304 13.9549 2.33469 13.9057 2.09202 13.782C1.7157 13.5903 1.40973 13.2843 1.21799 12.908C1.09434 12.6653 1.04506 12.407 1.0221 12.1259C0.999989 11.8553 0.999994 11.5231 1 11.1207V11.1207V11.1V3.9V3.87935V3.87934C0.999994 3.47686 0.999989 3.14468 1.0221 2.87409C1.04506 2.59304 1.09434 2.33469 1.21799 2.09202C1.40973 1.7157 1.7157 1.40973 2.09202 1.21799C2.33469 1.09434 2.59304 1.04506 2.87409 1.0221C3.14469 0.999989 3.47687 0.999994 3.87935 1ZM2.95552 2.01878C2.73631 2.03669 2.62421 2.06915 2.54601 2.10899C2.35785 2.20487 2.20487 2.35785 2.10899 2.54601C2.06915 2.62421 2.03669 2.73631 2.01878 2.95552C2.00039 3.18056 2 3.47171 2 3.9V7H7V2H3.9C3.47171 2 3.18056 2.00039 2.95552 2.01878ZM7 8H2V11.1C2 11.5283 2.00039 11.8194 2.01878 12.0445C2.03669 12.2637 2.06915 12.3758 2.10899 12.454C2.20487 12.6422 2.35785 12.7951 2.54601 12.891C2.62421 12.9309 2.73631 12.9633 2.95552 12.9812C3.18056 12.9996 3.47171 13 3.9 13H7V8ZM8 8H13V11.1C13 11.5283 12.9996 11.8194 12.9812 12.0445C12.9633 12.2637 12.9309 12.3758 12.891 12.454C12.7951 12.6422 12.6422 12.7951 12.454 12.891C12.3758 12.9309 12.2637 12.9633 12.0445 12.9812C11.8194 12.9996 11.5283 13 11.1 13H8V8ZM13 7H8V2H11.1C11.5283 2 11.8194 2.00039 12.0445 2.01878C12.2637 2.03669 12.3758 2.06915 12.454 2.10899C12.6422 2.20487 12.7951 2.35785 12.891 2.54601C12.9309 2.62421 12.9633 2.73631 12.9812 2.95552C12.9996 3.18056 13 3.47171 13 3.9V7Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1b = [\"color\"];\nvar ComponentBooleanIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1b);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.85367 1.48956C7.65841 1.29429 7.34182 1.29429 7.14656 1.48956L1.48971 7.14641C1.29445 7.34167 1.29445 7.65825 1.48971 7.85352L7.14656 13.5104C7.34182 13.7056 7.65841 13.7056 7.85367 13.5104L13.5105 7.85352C13.7058 7.65825 13.7058 7.34167 13.5105 7.14641L7.85367 1.48956ZM7.5 2.55033L2.55037 7.49996L7.5 12.4496V2.55033Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1c = [\"color\"];\nvar ComponentInstanceIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1c);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.1465 1.48959C7.34176 1.29432 7.65835 1.29432 7.85361 1.48959L13.5105 7.14644C13.7057 7.3417 13.7057 7.65829 13.5105 7.85355L7.85361 13.5104C7.65835 13.7057 7.34176 13.7057 7.1465 13.5104L1.48965 7.85355C1.29439 7.65829 1.29439 7.3417 1.48965 7.14644L7.1465 1.48959ZM7.50005 2.55025L2.55031 7.49999L7.50005 12.4497L12.4498 7.49999L7.50005 2.55025Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1d = [\"color\"];\nvar ComponentNoneIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1d);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.85361 1.48959C7.65835 1.29432 7.34176 1.29432 7.1465 1.48959L1.48965 7.14644C1.29439 7.3417 1.29439 7.65829 1.48965 7.85355L3.9645 10.3284L1.64644 12.6464C1.45118 12.8417 1.45118 13.1583 1.64644 13.3536C1.84171 13.5488 2.15829 13.5488 2.35355 13.3536L4.6716 11.0355L7.1465 13.5104C7.34176 13.7057 7.65835 13.7057 7.85361 13.5104L13.5105 7.85355C13.7057 7.65829 13.7057 7.3417 13.5105 7.14644L11.0356 4.67154L13.3535 2.35355C13.5488 2.15829 13.5488 1.84171 13.3535 1.64645C13.1583 1.45118 12.8417 1.45118 12.6464 1.64645L10.3285 3.96443L7.85361 1.48959ZM9.62135 4.67154L7.50005 2.55025L2.55031 7.49999L4.6716 9.62129L9.62135 4.67154ZM5.37871 10.3284L7.50005 12.4497L12.4498 7.49999L10.3285 5.37865L5.37871 10.3284Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1e = [\"color\"];\nvar ComponentPlaceholderIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1e);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M12.8034 7.14644C12.9986 6.95118 13.3152 6.95118 13.5105 7.14644C13.7057 7.3417 13.7057 7.65829 13.5105 7.85355C13.3152 8.04881 12.9986 8.04881 12.8034 7.85355C12.6081 7.65828 12.6081 7.3417 12.8034 7.14644ZM12.0962 8.56065C12.2915 8.75592 12.2915 9.0725 12.0962 9.26776C11.901 9.46302 11.5844 9.46302 11.3891 9.26776C11.1939 9.0725 11.1939 8.75592 11.3891 8.56065C11.5844 8.36539 11.901 8.36539 12.0962 8.56065ZM10.682 9.97487C10.8773 10.1701 10.8773 10.4867 10.682 10.682C10.4868 10.8772 10.1702 10.8772 9.97493 10.682C9.77967 10.4867 9.77967 10.1701 9.97493 9.97487C10.1702 9.7796 10.4868 9.7796 10.682 9.97487ZM9.26782 11.3891C9.46308 11.5843 9.46308 11.9009 9.26782 12.0962C9.07256 12.2915 8.75598 12.2915 8.56071 12.0962C8.36545 11.9009 8.36545 11.5843 8.56072 11.3891C8.75598 11.1938 9.07256 11.1938 9.26782 11.3891ZM7.1465 13.5104C6.95124 13.3151 6.95124 12.9986 7.1465 12.8033C7.17091 12.7789 7.19721 12.7575 7.22494 12.7392C7.41901 12.6111 7.68275 12.6324 7.85361 12.8033C8.04887 12.9986 8.04887 13.3151 7.85361 13.5104C7.65835 13.7057 7.34176 13.7057 7.1465 13.5104Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n d: \"M2.90386 8.56065C2.7086 8.75592 2.7086 9.0725 2.90386 9.26776 3.09912 9.46302 3.41571 9.46302 3.61097 9.26776 3.80623 9.0725 3.80623 8.75592 3.61097 8.56065 3.41571 8.36539 3.09912 8.36539 2.90386 8.56065zM4.31807 9.97487C4.12281 10.1701 4.12281 10.4867 4.31807 10.682 4.51334 10.8772 4.82992 10.8772 5.02518 10.682 5.22044 10.4867 5.22044 10.1701 5.02518 9.97487 4.82992 9.7796 4.51334 9.7796 4.31807 9.97487zM5.73229 11.3891C5.53703 11.5843 5.53703 11.9009 5.73229 12.0962 5.92755 12.2914 6.24413 12.2915 6.43939 12.0962 6.63466 11.9009 6.63466 11.5843 6.43939 11.3891 6.24413 11.1938 5.92755 11.1938 5.73229 11.3891zM2.19675 7.85355C2.36761 7.68269 2.38897 7.41895 2.26082 7.22488 2.09046 6.96684 1.71063 6.92546 1.48965 7.14644 1.29439 7.3417 1.29439 7.65829 1.48965 7.85355 1.68491 8.04881 2.00149 8.04881 2.19675 7.85355zM3.61097 5.73223C3.41571 5.53696 3.09912 5.53696 2.90386 5.73223 2.7086 5.92749 2.7086 6.24407 2.90386 6.43933 3.09912 6.6346 3.41571 6.6346 3.61097 6.43933 3.80623 6.24407 3.80623 5.92749 3.61097 5.73223zM5.02518 4.31801C4.82992 4.12275 4.51334 4.12275 4.31807 4.31801 4.12281 4.51328 4.12281 4.82986 4.31807 5.02512 4.51334 5.22038 4.82992 5.22038 5.02518 5.02512 5.22044 4.82986 5.22044 4.51328 5.02518 4.31801zM6.43939 2.9038C6.24413 2.70854 5.92755 2.70854 5.73229 2.9038 5.53703 3.09906 5.53703 3.41564 5.73229 3.61091 5.92755 3.80617 6.24413 3.80617 6.43939 3.61091 6.63466 3.41564 6.63466 3.09906 6.43939 2.9038zM7.85361 1.48959C7.65835 1.29432 7.34176 1.29432 7.1465 1.48959 6.95124 1.68485 6.95124 2.00143 7.1465 2.19669 7.34176 2.39196 7.65835 2.39196 7.85361 2.19669 8.04887 2.00143 8.04887 1.68485 7.85361 1.48959zM9.26782 2.9038C9.07256 2.70854 8.75598 2.70854 8.56071 2.9038 8.36545 3.09906 8.36545 3.41564 8.56071 3.61091 8.75598 3.80617 9.07256 3.80617 9.26782 3.61091 9.46308 3.41564 9.46308 3.09906 9.26782 2.9038zM10.682 4.31801C10.4868 4.12275 10.1702 4.12275 9.97493 4.31801 9.77967 4.51328 9.77967 4.82986 9.97493 5.02512 10.1702 5.22038 10.4868 5.22038 10.682 5.02512 10.8773 4.82986 10.8773 4.51328 10.682 4.31801zM12.0962 5.73223C11.901 5.53696 11.5844 5.53696 11.3891 5.73223 11.1939 5.92749 11.1939 6.24407 11.3891 6.43933 11.5844 6.6346 11.901 6.6346 12.0962 6.43933 12.2915 6.24407 12.2915 5.92749 12.0962 5.73223z\",\n fill: color\n }));\n});\n\nvar _excluded$1f = [\"color\"];\nvar ContainerIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1f);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2 1.5C2 1.77614 1.77614 2 1.5 2C1.22386 2 1 1.77614 1 1.5C1 1.22386 1.22386 1 1.5 1C1.77614 1 2 1.22386 2 1.5ZM5 13H10V2L5 2L5 13ZM4 13C4 13.5523 4.44772 14 5 14H10C10.5523 14 11 13.5523 11 13V2C11 1.44772 10.5523 1 10 1H5C4.44772 1 4 1.44771 4 2V13ZM13.5 2C13.7761 2 14 1.77614 14 1.5C14 1.22386 13.7761 1 13.5 1C13.2239 1 13 1.22386 13 1.5C13 1.77614 13.2239 2 13.5 2ZM2 3.5C2 3.77614 1.77614 4 1.5 4C1.22386 4 1 3.77614 1 3.5C1 3.22386 1.22386 3 1.5 3C1.77614 3 2 3.22386 2 3.5ZM13.5 4C13.7761 4 14 3.77614 14 3.5C14 3.22386 13.7761 3 13.5 3C13.2239 3 13 3.22386 13 3.5C13 3.77614 13.2239 4 13.5 4ZM2 5.5C2 5.77614 1.77614 6 1.5 6C1.22386 6 1 5.77614 1 5.5C1 5.22386 1.22386 5 1.5 5C1.77614 5 2 5.22386 2 5.5ZM13.5 6C13.7761 6 14 5.77614 14 5.5C14 5.22386 13.7761 5 13.5 5C13.2239 5 13 5.22386 13 5.5C13 5.77614 13.2239 6 13.5 6ZM2 7.5C2 7.77614 1.77614 8 1.5 8C1.22386 8 1 7.77614 1 7.5C1 7.22386 1.22386 7 1.5 7C1.77614 7 2 7.22386 2 7.5ZM13.5 8C13.7761 8 14 7.77614 14 7.5C14 7.22386 13.7761 7 13.5 7C13.2239 7 13 7.22386 13 7.5C13 7.77614 13.2239 8 13.5 8ZM2 9.5C2 9.77614 1.77614 10 1.5 10C1.22386 10 1 9.77614 1 9.5C1 9.22386 1.22386 9 1.5 9C1.77614 9 2 9.22386 2 9.5ZM13.5 10C13.7761 10 14 9.77614 14 9.5C14 9.22386 13.7761 9 13.5 9C13.2239 9 13 9.22386 13 9.5C13 9.77614 13.2239 10 13.5 10ZM2 11.5C2 11.7761 1.77614 12 1.5 12C1.22386 12 1 11.7761 1 11.5C1 11.2239 1.22386 11 1.5 11C1.77614 11 2 11.2239 2 11.5ZM13.5 12C13.7761 12 14 11.7761 14 11.5C14 11.2239 13.7761 11 13.5 11C13.2239 11 13 11.2239 13 11.5C13 11.7761 13.2239 12 13.5 12ZM2 13.5C2 13.7761 1.77614 14 1.5 14C1.22386 14 1 13.7761 1 13.5C1 13.2239 1.22386 13 1.5 13C1.77614 13 2 13.2239 2 13.5ZM13.5 14C13.7761 14 14 13.7761 14 13.5C14 13.2239 13.7761 13 13.5 13C13.2239 13 13 13.2239 13 13.5C13 13.7761 13.2239 14 13.5 14Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1g = [\"color\"];\nvar CookieIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1g);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M12.0697 1.76746C12.4807 1.21947 11.4605 0.454311 11.0495 1.0023C10.6385 1.55028 11.6588 2.31544 12.0697 1.76746ZM8.39263 1.07811C7.15585 0.950602 5.7823 1.16348 4.58433 1.70937C3.38552 2.25563 2.32735 3.15309 1.78844 4.41832C1.37574 5.38724 1.01715 6.28113 1.00088 7.44354C0.984724 8.59844 1.30522 9.96898 2.13174 11.928C2.61142 13.0649 4.03963 13.5446 5.13895 13.8079C6.40836 14.1119 7.80857 14.1914 8.6644 14.0742C9.36515 13.9782 10.1448 13.8284 10.7987 13.297C11.8977 12.4039 12.9009 11.3955 13.4994 10.3393C14.104 9.27221 14.3256 8.09207 13.7216 6.95324C13.5628 6.65373 13.316 6.57734 13.0412 6.4923C12.9374 6.46016 12.8295 6.42678 12.7209 6.37966C11.6211 5.90234 10.9646 5.34963 10.9135 5.02876C10.8656 4.72808 10.9221 4.51463 10.9811 4.29181C11.0129 4.17199 11.0453 4.04947 11.0626 3.90922C11.0838 3.73737 11.0814 3.33319 10.6996 3.12761C10.4048 2.96888 10.2164 2.65843 10.0407 2.36904C9.99742 2.29775 9.95492 2.22773 9.9118 2.16158C9.62634 1.72367 9.20769 1.16213 8.39263 1.07811ZM4.99899 2.61935C3.96483 3.09058 3.12554 3.83097 2.70846 4.81018C2.29808 5.77368 2.01406 6.50873 2.00079 7.45753C1.98741 8.41385 2.25043 9.6368 3.0531 11.5393C3.39181 12.3421 4.62167 12.6557 5.37186 12.8354C6.5493 13.1174 7.822 13.1802 8.52868 13.0834C9.21271 12.9897 9.74568 12.8642 10.1681 12.5209C11.229 11.6587 12.121 10.7435 12.6293 9.84635C12.9349 9.30709 13.5141 7.7028 12.6292 7.3873C10.7539 6.71875 10.262 6.06669 9.99011 5.41268C9.80915 4.97744 9.82868 4.52282 9.95741 4.07885L9.95741 4.07884C9.97662 4.0126 9.99538 3.94791 10.0334 3.88882C9.81857 3.73676 9.6515 3.55195 9.51464 3.3715C9.42876 3.25828 9.3469 3.12099 9.26197 2.97856C9.01866 2.57052 8.75018 2.12027 8.29008 2.07283C7.22889 1.96343 6.03398 2.14772 4.99899 2.61935ZM13.2081 3.77471C13.441 3.22671 12.4547 2.63606 12.0822 3.10163C11.5817 3.72732 12.9029 4.49281 13.2081 3.77471ZM14.3672 2.26031C14.9668 2.27493 15.1551 1.11603 14.5718 0.949371C13.8076 0.731026 13.5918 2.24139 14.3672 2.26031ZM14.2857 5.09098C14.8644 5.10004 15.0462 4.38222 14.4832 4.27899C13.7455 4.14375 13.5373 5.07927 14.2857 5.09098ZM6.9075 4.28672C6.46898 4.66754 6.0522 4.15185 5.97983 3.7365C5.86848 3.09744 6.33696 2.56856 6.94823 2.91156C7.43344 3.18382 7.26678 3.97471 6.9075 4.28672ZM4.94455 5.88184C5.40885 5.41754 4.59567 4.57013 4.11425 5.05154C3.83338 5.33242 4.00936 5.65376 4.23744 5.88184C4.43271 6.0771 4.74929 6.0771 4.94455 5.88184ZM6.97716 6.71984C7.31181 7.38914 8.48804 6.79159 7.99413 6.14788C7.86519 5.97983 7.68657 5.9494 7.62145 5.94207C7.21217 5.89601 6.76349 6.2925 6.97716 6.71984ZM6.98798 8.72461C7.14066 9.1188 7.51122 9.3187 7.91915 9.1633C8.27434 9.02799 8.33186 8.39689 8.17175 8.07427C8.02331 7.77514 7.63956 7.67793 7.33747 7.79417C6.98512 7.92976 6.85672 8.38708 6.98576 8.71889L6.98798 8.72461ZM10.3885 8.84081C10.7575 8.6566 11.4617 8.82771 11.4617 9.31199C11.4617 9.71286 10.9587 10.2165 10.5634 10.2826C10.1813 10.3465 9.70515 9.97581 9.76648 9.57718C9.81445 9.26539 10.1217 8.97401 10.3885 8.84081ZM7.56704 10.8432C7.33461 10.7502 7.14353 10.8601 7.11437 10.8769L7.11279 10.8778C6.90782 10.9949 6.71383 11.2439 6.6747 11.4842C6.59018 12.0034 7.13199 12.1239 7.52661 12.0987C8.2074 12.0553 8.06547 11.0426 7.56704 10.8432ZM4.8805 10.8932C5.0674 10.7723 5.15658 10.5363 5.08293 10.3153C4.93046 9.79687 4.3246 9.71252 3.96561 10.1297C3.79336 10.3299 3.80749 10.6274 3.99214 10.8105L3.99495 10.814L3.9979 10.8176C4.22025 11.0942 4.63624 11.1857 4.8805 10.8932ZM3.04695 7.81318C3.33147 8.0977 3.60077 8.15067 3.98443 8.05859C4.60826 7.90887 4.13814 6.24299 3.047 6.87296C2.70939 7.06788 2.86716 7.63339 3.04695 7.81318Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1h = [\"color\"];\nvar CopyIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1h);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1 9.50006C1 10.3285 1.67157 11.0001 2.5 11.0001H4L4 10.0001H2.5C2.22386 10.0001 2 9.7762 2 9.50006L2 2.50006C2 2.22392 2.22386 2.00006 2.5 2.00006L9.5 2.00006C9.77614 2.00006 10 2.22392 10 2.50006V4.00002H5.5C4.67158 4.00002 4 4.67159 4 5.50002V12.5C4 13.3284 4.67158 14 5.5 14H12.5C13.3284 14 14 13.3284 14 12.5V5.50002C14 4.67159 13.3284 4.00002 12.5 4.00002H11V2.50006C11 1.67163 10.3284 1.00006 9.5 1.00006H2.5C1.67157 1.00006 1 1.67163 1 2.50006V9.50006ZM5 5.50002C5 5.22388 5.22386 5.00002 5.5 5.00002H12.5C12.7761 5.00002 13 5.22388 13 5.50002V12.5C13 12.7762 12.7761 13 12.5 13H5.5C5.22386 13 5 12.7762 5 12.5V5.50002Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1i = [\"color\"];\nvar CornerBottomLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1i);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M9.87737 12H9.9H11.5C11.7761 12 12 11.7761 12 11.5C12 11.2239 11.7761 11 11.5 11H9.9C8.77164 11 7.95545 10.9996 7.31352 10.9472C6.67744 10.8952 6.25662 10.7946 5.91103 10.6185C5.25247 10.283 4.71703 9.74753 4.38148 9.08897C4.20539 8.74338 4.10481 8.32256 4.05284 7.68648C4.00039 7.04455 4 6.22836 4 5.1V3.5C4 3.22386 3.77614 3 3.5 3C3.22386 3 3 3.22386 3 3.5V5.1V5.12263C3 6.22359 3 7.08052 3.05616 7.76791C3.11318 8.46584 3.23058 9.0329 3.49047 9.54296C3.9219 10.3897 4.61031 11.0781 5.45704 11.5095C5.9671 11.7694 6.53416 11.8868 7.23209 11.9438C7.91948 12 8.77641 12 9.87737 12Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1j = [\"color\"];\nvar CornerBottomRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1j);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M5.12263 12H5.1H3.5C3.22386 12 3 11.7761 3 11.5C3 11.2239 3.22386 11 3.5 11H5.1C6.22836 11 7.04455 10.9996 7.68648 10.9472C8.32256 10.8952 8.74338 10.7946 9.08897 10.6185C9.74753 10.283 10.283 9.74753 10.6185 9.08897C10.7946 8.74338 10.8952 8.32256 10.9472 7.68648C10.9996 7.04455 11 6.22836 11 5.1V3.5C11 3.22386 11.2239 3 11.5 3C11.7761 3 12 3.22386 12 3.5V5.1V5.12263C12 6.22359 12 7.08052 11.9438 7.76791C11.8868 8.46584 11.7694 9.0329 11.5095 9.54296C11.0781 10.3897 10.3897 11.0781 9.54296 11.5095C9.0329 11.7694 8.46584 11.8868 7.76791 11.9438C7.08052 12 6.22359 12 5.12263 12Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1k = [\"color\"];\nvar CornerTopLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1k);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M9.87737 3H9.9H11.5C11.7761 3 12 3.22386 12 3.5C12 3.77614 11.7761 4 11.5 4H9.9C8.77164 4 7.95545 4.00039 7.31352 4.05284C6.67744 4.10481 6.25662 4.20539 5.91103 4.38148C5.25247 4.71703 4.71703 5.25247 4.38148 5.91103C4.20539 6.25662 4.10481 6.67744 4.05284 7.31352C4.00039 7.95545 4 8.77164 4 9.9V11.5C4 11.7761 3.77614 12 3.5 12C3.22386 12 3 11.7761 3 11.5V9.9V9.87737C3 8.77641 3 7.91948 3.05616 7.23209C3.11318 6.53416 3.23058 5.9671 3.49047 5.45704C3.9219 4.61031 4.61031 3.9219 5.45704 3.49047C5.9671 3.23058 6.53416 3.11318 7.23209 3.05616C7.91948 3 8.77641 3 9.87737 3Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1l = [\"color\"];\nvar CornerTopRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1l);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M5.12263 3H5.1H3.5C3.22386 3 3 3.22386 3 3.5C3 3.77614 3.22386 4 3.5 4H5.1C6.22836 4 7.04455 4.00039 7.68648 4.05284C8.32256 4.10481 8.74338 4.20539 9.08897 4.38148C9.74753 4.71703 10.283 5.25247 10.6185 5.91103C10.7946 6.25662 10.8952 6.67744 10.9472 7.31352C10.9996 7.95545 11 8.77164 11 9.9V11.5C11 11.7761 11.2239 12 11.5 12C11.7761 12 12 11.7761 12 11.5V9.9V9.87737C12 8.77641 12 7.91948 11.9438 7.23209C11.8868 6.53416 11.7694 5.9671 11.5095 5.45704C11.0781 4.61031 10.3897 3.9219 9.54296 3.49047C9.0329 3.23058 8.46584 3.11318 7.76791 3.05616C7.08052 3 6.22359 3 5.12263 3Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1m = [\"color\"];\nvar CornersIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1m);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M5.5 2L4.87935 2C4.47687 1.99999 4.14469 1.99999 3.87409 2.0221C3.59304 2.04506 3.33469 2.09434 3.09202 2.21799C2.7157 2.40973 2.40973 2.7157 2.21799 3.09202C2.09434 3.33469 2.04506 3.59304 2.0221 3.87409C1.99999 4.14468 1.99999 4.47686 2 4.87933V4.87935V5.5C2 5.77614 2.22386 6 2.5 6C2.77614 6 3 5.77614 3 5.5V4.9C3 4.47171 3.00039 4.18056 3.01878 3.95552C3.03669 3.73631 3.06915 3.62421 3.10899 3.54601C3.20487 3.35785 3.35785 3.20487 3.54601 3.10899C3.62421 3.06915 3.73631 3.03669 3.95552 3.01878C4.18056 3.00039 4.47171 3 4.9 3H5.5C5.77614 3 6 2.77614 6 2.5C6 2.22386 5.77614 2 5.5 2ZM13 9.5C13 9.22386 12.7761 9 12.5 9C12.2239 9 12 9.22386 12 9.5V10.1C12 10.5283 11.9996 10.8194 11.9812 11.0445C11.9633 11.2637 11.9309 11.3758 11.891 11.454C11.7951 11.6422 11.6422 11.7951 11.454 11.891C11.3758 11.9309 11.2637 11.9633 11.0445 11.9812C10.8194 11.9996 10.5283 12 10.1 12H9.5C9.22386 12 9 12.2239 9 12.5C9 12.7761 9.22386 13 9.5 13H10.1206C10.5231 13 10.8553 13 11.1259 12.9779C11.407 12.9549 11.6653 12.9057 11.908 12.782C12.2843 12.5903 12.5903 12.2843 12.782 11.908C12.9057 11.6653 12.9549 11.407 12.9779 11.1259C13 10.8553 13 10.5232 13 10.1207V10.1207V10.1207V10.1206V9.5ZM2.5 9C2.77614 9 3 9.22386 3 9.5V10.1C3 10.5283 3.00039 10.8194 3.01878 11.0445C3.03669 11.2637 3.06915 11.3758 3.10899 11.454C3.20487 11.6422 3.35785 11.7951 3.54601 11.891C3.62421 11.9309 3.73631 11.9633 3.95552 11.9812C4.18056 11.9996 4.47171 12 4.9 12H5.5C5.77614 12 6 12.2239 6 12.5C6 12.7761 5.77614 13 5.5 13H4.87935C4.47687 13 4.14469 13 3.87409 12.9779C3.59304 12.9549 3.33469 12.9057 3.09202 12.782C2.7157 12.5903 2.40973 12.2843 2.21799 11.908C2.09434 11.6653 2.04506 11.407 2.0221 11.1259C1.99999 10.8553 1.99999 10.5231 2 10.1207V10.1206V10.1V9.5C2 9.22386 2.22386 9 2.5 9ZM10.1 3C10.5283 3 10.8194 3.00039 11.0445 3.01878C11.2637 3.03669 11.3758 3.06915 11.454 3.10899C11.6422 3.20487 11.7951 3.35785 11.891 3.54601C11.9309 3.62421 11.9633 3.73631 11.9812 3.95552C11.9996 4.18056 12 4.47171 12 4.9V5.5C12 5.77614 12.2239 6 12.5 6C12.7761 6 13 5.77614 13 5.5V4.87935V4.87934C13 4.47686 13 4.14468 12.9779 3.87409C12.9549 3.59304 12.9057 3.33469 12.782 3.09202C12.5903 2.7157 12.2843 2.40973 11.908 2.21799C11.6653 2.09434 11.407 2.04506 11.1259 2.0221C10.8553 1.99999 10.5231 1.99999 10.1206 2L10.1 2H9.5C9.22386 2 9 2.22386 9 2.5C9 2.77614 9.22386 3 9.5 3H10.1Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1n = [\"color\"];\nvar CountdownTimerIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1n);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M13.15 7.49998C13.15 4.66458 10.9402 1.84998 7.50002 1.84998C4.7217 1.84998 3.34851 3.90636 2.76336 4.99997H4.5C4.77614 4.99997 5 5.22383 5 5.49997C5 5.77611 4.77614 5.99997 4.5 5.99997H1.5C1.22386 5.99997 1 5.77611 1 5.49997V2.49997C1 2.22383 1.22386 1.99997 1.5 1.99997C1.77614 1.99997 2 2.22383 2 2.49997V4.31318C2.70453 3.07126 4.33406 0.849976 7.50002 0.849976C11.5628 0.849976 14.15 4.18537 14.15 7.49998C14.15 10.8146 11.5628 14.15 7.50002 14.15C5.55618 14.15 3.93778 13.3808 2.78548 12.2084C2.16852 11.5806 1.68668 10.839 1.35816 10.0407C1.25306 9.78536 1.37488 9.49315 1.63024 9.38806C1.8856 9.28296 2.17781 9.40478 2.2829 9.66014C2.56374 10.3425 2.97495 10.9745 3.4987 11.5074C4.47052 12.4963 5.83496 13.15 7.50002 13.15C10.9402 13.15 13.15 10.3354 13.15 7.49998ZM7 10V5.00001H8V10H7Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1o = [\"color\"];\nvar CounterClockwiseClockIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1o);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M13.15 7.49998C13.15 4.66458 10.9402 1.84998 7.50002 1.84998C4.72167 1.84998 3.34849 3.9064 2.76335 5H4.5C4.77614 5 5 5.22386 5 5.5C5 5.77614 4.77614 6 4.5 6H1.5C1.22386 6 1 5.77614 1 5.5V2.5C1 2.22386 1.22386 2 1.5 2C1.77614 2 2 2.22386 2 2.5V4.31318C2.70453 3.07126 4.33406 0.849976 7.50002 0.849976C11.5628 0.849976 14.15 4.18537 14.15 7.49998C14.15 10.8146 11.5628 14.15 7.50002 14.15C5.55618 14.15 3.93778 13.3808 2.78548 12.2084C2.16852 11.5806 1.68668 10.839 1.35816 10.0407C1.25306 9.78536 1.37488 9.49315 1.63024 9.38806C1.8856 9.28296 2.17781 9.40478 2.2829 9.66014C2.56374 10.3425 2.97495 10.9745 3.4987 11.5074C4.47052 12.4963 5.83496 13.15 7.50002 13.15C10.9402 13.15 13.15 10.3354 13.15 7.49998ZM7.5 4.00001C7.77614 4.00001 8 4.22387 8 4.50001V7.29291L9.85355 9.14646C10.0488 9.34172 10.0488 9.65831 9.85355 9.85357C9.65829 10.0488 9.34171 10.0488 9.14645 9.85357L7.14645 7.85357C7.05268 7.7598 7 7.63262 7 7.50001V4.50001C7 4.22387 7.22386 4.00001 7.5 4.00001Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1p = [\"color\"];\nvar CropIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1p);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.5 8.00684e-07C3.77614 7.88614e-07 4 0.223859 4 0.500001L4 3.00006L11.5 3.00006C11.7761 3.00006 12 3.22392 12 3.50006L12 11.0001L14.5 11C14.7761 11 15 11.2238 15 11.5C15 11.7761 14.7762 12 14.5 12L12 12.0001L12 14.5C12 14.7761 11.7761 15 11.5 15C11.2239 15 11 14.7761 11 14.5L11 12.0001L3.5 12.0001C3.22386 12.0001 3 11.7762 3 11.5001L3 4.00005L0.499989 4C0.223847 4 -6.10541e-06 3.77613 -5.02576e-07 3.49999C5.13006e-06 3.22385 0.223867 3 0.50001 3L3 3.00005L3 0.500001C3 0.223859 3.22386 8.12755e-07 3.5 8.00684e-07ZM4 4.00006L4 11.0001L11 11.0001L11 4.00006L4 4.00006Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1q = [\"color\"];\nvar Cross1Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1q);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M12.8536 2.85355C13.0488 2.65829 13.0488 2.34171 12.8536 2.14645C12.6583 1.95118 12.3417 1.95118 12.1464 2.14645L7.5 6.79289L2.85355 2.14645C2.65829 1.95118 2.34171 1.95118 2.14645 2.14645C1.95118 2.34171 1.95118 2.65829 2.14645 2.85355L6.79289 7.5L2.14645 12.1464C1.95118 12.3417 1.95118 12.6583 2.14645 12.8536C2.34171 13.0488 2.65829 13.0488 2.85355 12.8536L7.5 8.20711L12.1464 12.8536C12.3417 13.0488 12.6583 13.0488 12.8536 12.8536C13.0488 12.6583 13.0488 12.3417 12.8536 12.1464L8.20711 7.5L12.8536 2.85355Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1r = [\"color\"];\nvar Cross2Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1r);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1s = [\"color\"];\nvar CrossCircledIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1s);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M0.877075 7.49988C0.877075 3.84219 3.84222 0.877045 7.49991 0.877045C11.1576 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49988ZM7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 4.36686 10.6329 1.82704 7.49991 1.82704ZM9.85358 5.14644C10.0488 5.3417 10.0488 5.65829 9.85358 5.85355L8.20713 7.49999L9.85358 9.14644C10.0488 9.3417 10.0488 9.65829 9.85358 9.85355C9.65832 10.0488 9.34173 10.0488 9.14647 9.85355L7.50002 8.2071L5.85358 9.85355C5.65832 10.0488 5.34173 10.0488 5.14647 9.85355C4.95121 9.65829 4.95121 9.3417 5.14647 9.14644L6.79292 7.49999L5.14647 5.85355C4.95121 5.65829 4.95121 5.3417 5.14647 5.14644C5.34173 4.95118 5.65832 4.95118 5.85358 5.14644L7.50002 6.79289L9.14647 5.14644C9.34173 4.95118 9.65832 4.95118 9.85358 5.14644Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1t = [\"color\"];\nvar Crosshair1Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1t);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M0.877075 7.50207C0.877075 3.84319 3.84319 0.877075 7.50208 0.877075C11.1609 0.877075 14.1271 3.84319 14.1271 7.50207C14.1271 11.1609 11.1609 14.1271 7.50208 14.1271C3.84319 14.1271 0.877075 11.1609 0.877075 7.50207ZM1.84898 7.00003C2.0886 4.26639 4.26639 2.0886 7.00003 1.84898V4.50003C7.00003 4.77617 7.22388 5.00003 7.50003 5.00003C7.77617 5.00003 8.00003 4.77617 8.00003 4.50003V1.84862C10.7356 2.08643 12.9154 4.26502 13.1552 7.00003H10.5C10.2239 7.00003 10 7.22388 10 7.50003C10 7.77617 10.2239 8.00003 10.5 8.00003H13.1555C12.9176 10.7369 10.7369 12.9176 8.00003 13.1555V10.5C8.00003 10.2239 7.77617 10 7.50003 10C7.22388 10 7.00003 10.2239 7.00003 10.5V13.1552C4.26502 12.9154 2.08643 10.7356 1.84862 8.00003H4.50003C4.77617 8.00003 5.00003 7.77617 5.00003 7.50003C5.00003 7.22388 4.77617 7.00003 4.50003 7.00003H1.84898Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1u = [\"color\"];\nvar Crosshair2Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1u);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.5 0C7.77614 0 8 0.223858 8 0.5V1.80687C10.6922 2.0935 12.8167 4.28012 13.0068 7H14.5C14.7761 7 15 7.22386 15 7.5C15 7.77614 14.7761 8 14.5 8H12.9888C12.7094 10.6244 10.6244 12.7094 8 12.9888V14.5C8 14.7761 7.77614 15 7.5 15C7.22386 15 7 14.7761 7 14.5V13.0068C4.28012 12.8167 2.0935 10.6922 1.80687 8H0.5C0.223858 8 0 7.77614 0 7.5C0 7.22386 0.223858 7 0.5 7H1.78886C1.98376 4.21166 4.21166 1.98376 7 1.78886V0.5C7 0.223858 7.22386 0 7.5 0ZM8 12.0322V9.5C8 9.22386 7.77614 9 7.5 9C7.22386 9 7 9.22386 7 9.5V12.054C4.80517 11.8689 3.04222 10.1668 2.76344 8H5.5C5.77614 8 6 7.77614 6 7.5C6 7.22386 5.77614 7 5.5 7H2.7417C2.93252 4.73662 4.73662 2.93252 7 2.7417V5.5C7 5.77614 7.22386 6 7.5 6C7.77614 6 8 5.77614 8 5.5V2.76344C10.1668 3.04222 11.8689 4.80517 12.054 7H9.5C9.22386 7 9 7.22386 9 7.5C9 7.77614 9.22386 8 9.5 8H12.0322C11.7621 10.0991 10.0991 11.7621 8 12.0322Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1v = [\"color\"];\nvar CrumpledPaperIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1v);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M4.60913 0.0634287C4.39082 0.0088505 4.16575 0.12393 4.08218 0.332867L3.1538 2.6538L0.832866 3.58218C0.702884 3.63417 0.604504 3.7437 0.566705 3.87849C0.528906 4.01329 0.555994 4.158 0.639992 4.26999L2.01148 6.09864L1.06343 9.89085C1.00944 10.1068 1.12145 10.3298 1.32691 10.4154L4.20115 11.613L5.62557 13.7496C5.73412 13.9124 5.93545 13.9864 6.12362 13.9327L9.62362 12.9327C9.62988 12.9309 9.63611 12.929 9.64229 12.9269L12.6423 11.9269C12.7923 11.8769 12.905 11.7519 12.9393 11.5976L13.9393 7.09761C13.9776 6.92506 13.9114 6.74605 13.77 6.63999L11.95 5.27499V2.99999C11.95 2.82955 11.8537 2.67373 11.7012 2.5975L8.70124 1.0975C8.67187 1.08282 8.64098 1.07139 8.60913 1.06343L4.60913 0.0634287ZM11.4323 6.01173L12.7748 7.01858L10.2119 9.15429C10.1476 9.20786 10.0995 9.2783 10.0731 9.35769L9.25382 11.8155L7.73849 10.8684C7.52774 10.7367 7.25011 10.8007 7.11839 11.0115C6.98667 11.2222 7.05074 11.4999 7.26149 11.6316L8.40341 12.3453L6.19221 12.9771L4.87441 11.0004C4.82513 10.9265 4.75508 10.8688 4.67307 10.8346L2.03046 9.73352L2.85134 6.44999H4.99999C5.24852 6.44999 5.44999 6.24852 5.44999 5.99999C5.44999 5.75146 5.24852 5.54999 4.99999 5.54999H2.72499L1.7123 4.19974L3.51407 3.47903L6.35769 4.4269C6.53655 4.48652 6.73361 4.42832 6.85138 4.28111L8.62413 2.06518L11.05 3.27811V5.19533L8.83287 6.08218C8.70996 6.13134 8.61494 6.23212 8.57308 6.35769L8.07308 7.85769C7.99449 8.09346 8.12191 8.34831 8.35769 8.4269C8.59346 8.50549 8.84831 8.37807 8.9269 8.14229L9.3609 6.84029L11.4323 6.01173ZM7.71052 1.76648L6.34462 3.47386L4.09505 2.724L4.77192 1.03183L7.71052 1.76648ZM10.2115 11.7885L12.116 11.1537L12.7745 8.19034L10.8864 9.76374L10.2115 11.7885Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1w = [\"color\"];\nvar CubeIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1w);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.28856 0.796908C7.42258 0.734364 7.57742 0.734364 7.71144 0.796908L13.7114 3.59691C13.8875 3.67906 14 3.85574 14 4.05V10.95C14 11.1443 13.8875 11.3209 13.7114 11.4031L7.71144 14.2031C7.57742 14.2656 7.42258 14.2656 7.28856 14.2031L1.28856 11.4031C1.11252 11.3209 1 11.1443 1 10.95V4.05C1 3.85574 1.11252 3.67906 1.28856 3.59691L7.28856 0.796908ZM2 4.80578L7 6.93078V12.9649L2 10.6316V4.80578ZM8 12.9649L13 10.6316V4.80578L8 6.93078V12.9649ZM7.5 6.05672L12.2719 4.02866L7.5 1.80176L2.72809 4.02866L7.5 6.05672Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1x = [\"color\"];\nvar CursorArrowIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1x);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.29227 0.048984C3.47033 -0.032338 3.67946 -0.00228214 3.8274 0.125891L12.8587 7.95026C13.0134 8.08432 13.0708 8.29916 13.0035 8.49251C12.9362 8.68586 12.7578 8.81866 12.5533 8.82768L9.21887 8.97474L11.1504 13.2187C11.2648 13.47 11.1538 13.7664 10.9026 13.8808L8.75024 14.8613C8.499 14.9758 8.20255 14.8649 8.08802 14.6137L6.15339 10.3703L3.86279 12.7855C3.72196 12.934 3.50487 12.9817 3.31479 12.9059C3.1247 12.8301 3 12.6461 3 12.4414V0.503792C3 0.308048 3.11422 0.130306 3.29227 0.048984ZM4 1.59852V11.1877L5.93799 9.14425C6.05238 9.02363 6.21924 8.96776 6.38319 8.99516C6.54715 9.02256 6.68677 9.12965 6.75573 9.2809L8.79056 13.7441L10.0332 13.178L8.00195 8.71497C7.93313 8.56376 7.94391 8.38824 8.03072 8.24659C8.11753 8.10494 8.26903 8.01566 8.435 8.00834L11.2549 7.88397L4 1.59852Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1y = [\"color\"];\nvar CursorTextIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1y);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M4.5 1C4.22386 1 4 1.22386 4 1.5C4 1.77614 4.22386 2 4.5 2C5.42215 2 6.0399 2.23054 6.42075 2.56379C6.79286 2.88939 7 3.36626 7 4V7H5.75C5.47386 7 5.25 7.22386 5.25 7.5C5.25 7.77614 5.47386 8 5.75 8H7V11C7 11.6337 6.79286 12.1106 6.42075 12.4362C6.0399 12.7695 5.42215 13 4.5 13C4.22386 13 4 13.2239 4 13.5C4 13.7761 4.22386 14 4.5 14C5.57785 14 6.4601 13.7305 7.07925 13.1888C7.24168 13.0467 7.38169 12.8896 7.5 12.7198C7.61832 12.8896 7.75832 13.0467 7.92075 13.1888C8.5399 13.7305 9.42215 14 10.5 14C10.7761 14 11 13.7761 11 13.5C11 13.2239 10.7761 13 10.5 13C9.57785 13 8.9601 12.7695 8.57925 12.4362C8.20714 12.1106 8 11.6337 8 11V8H9.25C9.52614 8 9.75 7.77614 9.75 7.5C9.75 7.22386 9.52614 7 9.25 7H8V4C8 3.36626 8.20714 2.88939 8.57925 2.56379C8.9601 2.23054 9.57785 2 10.5 2C10.7761 2 11 1.77614 11 1.5C11 1.22386 10.7761 1 10.5 1C9.42215 1 8.5399 1.26946 7.92075 1.81121C7.75832 1.95333 7.61832 2.11043 7.5 2.28023C7.38168 2.11043 7.24168 1.95333 7.07925 1.81121C6.4601 1.26946 5.57785 1 4.5 1Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1z = [\"color\"];\nvar DashIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1z);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M5 7.5C5 7.22386 5.22386 7 5.5 7H9.5C9.77614 7 10 7.22386 10 7.5C10 7.77614 9.77614 8 9.5 8H5.5C5.22386 8 5 7.77614 5 7.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1A = [\"color\"];\nvar DashboardIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1A);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2.8 1L2.74967 0.99997C2.52122 0.999752 2.32429 0.999564 2.14983 1.04145C1.60136 1.17312 1.17312 1.60136 1.04145 2.14983C0.999564 2.32429 0.999752 2.52122 0.99997 2.74967L1 2.8V5.2L0.99997 5.25033C0.999752 5.47878 0.999564 5.67572 1.04145 5.85017C1.17312 6.39864 1.60136 6.82688 2.14983 6.95856C2.32429 7.00044 2.52122 7.00025 2.74967 7.00003L2.8 7H5.2L5.25033 7.00003C5.47878 7.00025 5.67572 7.00044 5.85017 6.95856C6.39864 6.82688 6.82688 6.39864 6.95856 5.85017C7.00044 5.67572 7.00025 5.47878 7.00003 5.25033L7 5.2V2.8L7.00003 2.74967C7.00025 2.52122 7.00044 2.32429 6.95856 2.14983C6.82688 1.60136 6.39864 1.17312 5.85017 1.04145C5.67572 0.999564 5.47878 0.999752 5.25033 0.99997L5.2 1H2.8ZM2.38328 2.01382C2.42632 2.00348 2.49222 2 2.8 2H5.2C5.50779 2 5.57369 2.00348 5.61672 2.01382C5.79955 2.05771 5.94229 2.20045 5.98619 2.38328C5.99652 2.42632 6 2.49222 6 2.8V5.2C6 5.50779 5.99652 5.57369 5.98619 5.61672C5.94229 5.79955 5.79955 5.94229 5.61672 5.98619C5.57369 5.99652 5.50779 6 5.2 6H2.8C2.49222 6 2.42632 5.99652 2.38328 5.98619C2.20045 5.94229 2.05771 5.79955 2.01382 5.61672C2.00348 5.57369 2 5.50779 2 5.2V2.8C2 2.49222 2.00348 2.42632 2.01382 2.38328C2.05771 2.20045 2.20045 2.05771 2.38328 2.01382ZM9.8 1L9.74967 0.99997C9.52122 0.999752 9.32429 0.999564 9.14983 1.04145C8.60136 1.17312 8.17312 1.60136 8.04145 2.14983C7.99956 2.32429 7.99975 2.52122 7.99997 2.74967L8 2.8V5.2L7.99997 5.25033C7.99975 5.47878 7.99956 5.67572 8.04145 5.85017C8.17312 6.39864 8.60136 6.82688 9.14983 6.95856C9.32429 7.00044 9.52122 7.00025 9.74967 7.00003L9.8 7H12.2L12.2503 7.00003C12.4788 7.00025 12.6757 7.00044 12.8502 6.95856C13.3986 6.82688 13.8269 6.39864 13.9586 5.85017C14.0004 5.67572 14.0003 5.47878 14 5.25033L14 5.2V2.8L14 2.74967C14.0003 2.52122 14.0004 2.32429 13.9586 2.14983C13.8269 1.60136 13.3986 1.17312 12.8502 1.04145C12.6757 0.999564 12.4788 0.999752 12.2503 0.99997L12.2 1H9.8ZM9.38328 2.01382C9.42632 2.00348 9.49222 2 9.8 2H12.2C12.5078 2 12.5737 2.00348 12.6167 2.01382C12.7995 2.05771 12.9423 2.20045 12.9862 2.38328C12.9965 2.42632 13 2.49222 13 2.8V5.2C13 5.50779 12.9965 5.57369 12.9862 5.61672C12.9423 5.79955 12.7995 5.94229 12.6167 5.98619C12.5737 5.99652 12.5078 6 12.2 6H9.8C9.49222 6 9.42632 5.99652 9.38328 5.98619C9.20045 5.94229 9.05771 5.79955 9.01382 5.61672C9.00348 5.57369 9 5.50779 9 5.2V2.8C9 2.49222 9.00348 2.42632 9.01382 2.38328C9.05771 2.20045 9.20045 2.05771 9.38328 2.01382ZM2.74967 7.99997L2.8 8H5.2L5.25033 7.99997C5.47878 7.99975 5.67572 7.99956 5.85017 8.04145C6.39864 8.17312 6.82688 8.60136 6.95856 9.14983C7.00044 9.32429 7.00025 9.52122 7.00003 9.74967L7 9.8V12.2L7.00003 12.2503C7.00025 12.4788 7.00044 12.6757 6.95856 12.8502C6.82688 13.3986 6.39864 13.8269 5.85017 13.9586C5.67572 14.0004 5.47878 14.0003 5.25033 14L5.2 14H2.8L2.74967 14C2.52122 14.0003 2.32429 14.0004 2.14983 13.9586C1.60136 13.8269 1.17312 13.3986 1.04145 12.8502C0.999564 12.6757 0.999752 12.4788 0.99997 12.2503L1 12.2V9.8L0.99997 9.74967C0.999752 9.52122 0.999564 9.32429 1.04145 9.14983C1.17312 8.60136 1.60136 8.17312 2.14983 8.04145C2.32429 7.99956 2.52122 7.99975 2.74967 7.99997ZM2.8 9C2.49222 9 2.42632 9.00348 2.38328 9.01382C2.20045 9.05771 2.05771 9.20045 2.01382 9.38328C2.00348 9.42632 2 9.49222 2 9.8V12.2C2 12.5078 2.00348 12.5737 2.01382 12.6167C2.05771 12.7995 2.20045 12.9423 2.38328 12.9862C2.42632 12.9965 2.49222 13 2.8 13H5.2C5.50779 13 5.57369 12.9965 5.61672 12.9862C5.79955 12.9423 5.94229 12.7995 5.98619 12.6167C5.99652 12.5737 6 12.5078 6 12.2V9.8C6 9.49222 5.99652 9.42632 5.98619 9.38328C5.94229 9.20045 5.79955 9.05771 5.61672 9.01382C5.57369 9.00348 5.50779 9 5.2 9H2.8ZM9.8 8L9.74967 7.99997C9.52122 7.99975 9.32429 7.99956 9.14983 8.04145C8.60136 8.17312 8.17312 8.60136 8.04145 9.14983C7.99956 9.32429 7.99975 9.52122 7.99997 9.74967L8 9.8V12.2L7.99997 12.2503C7.99975 12.4788 7.99956 12.6757 8.04145 12.8502C8.17312 13.3986 8.60136 13.8269 9.14983 13.9586C9.32429 14.0004 9.52122 14.0003 9.74967 14L9.8 14H12.2L12.2503 14C12.4788 14.0003 12.6757 14.0004 12.8502 13.9586C13.3986 13.8269 13.8269 13.3986 13.9586 12.8502C14.0004 12.6757 14.0003 12.4788 14 12.2503L14 12.2V9.8L14 9.74967C14.0003 9.52122 14.0004 9.32429 13.9586 9.14983C13.8269 8.60136 13.3986 8.17312 12.8502 8.04145C12.6757 7.99956 12.4788 7.99975 12.2503 7.99997L12.2 8H9.8ZM9.38328 9.01382C9.42632 9.00348 9.49222 9 9.8 9H12.2C12.5078 9 12.5737 9.00348 12.6167 9.01382C12.7995 9.05771 12.9423 9.20045 12.9862 9.38328C12.9965 9.42632 13 9.49222 13 9.8V12.2C13 12.5078 12.9965 12.5737 12.9862 12.6167C12.9423 12.7995 12.7995 12.9423 12.6167 12.9862C12.5737 12.9965 12.5078 13 12.2 13H9.8C9.49222 13 9.42632 12.9965 9.38328 12.9862C9.20045 12.9423 9.05771 12.7995 9.01382 12.6167C9.00348 12.5737 9 12.5078 9 12.2V9.8C9 9.49222 9.00348 9.42632 9.01382 9.38328C9.05771 9.20045 9.20045 9.05771 9.38328 9.01382Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1B = [\"color\"];\nvar DesktopIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1B);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1 3.25C1 3.11193 1.11193 3 1.25 3H13.75C13.8881 3 14 3.11193 14 3.25V10.75C14 10.8881 13.8881 11 13.75 11H1.25C1.11193 11 1 10.8881 1 10.75V3.25ZM1.25 2C0.559643 2 0 2.55964 0 3.25V10.75C0 11.4404 0.559644 12 1.25 12H5.07341L4.82991 13.2986C4.76645 13.6371 5.02612 13.95 5.37049 13.95H9.62951C9.97389 13.95 10.2336 13.6371 10.1701 13.2986L9.92659 12H13.75C14.4404 12 15 11.4404 15 10.75V3.25C15 2.55964 14.4404 2 13.75 2H1.25ZM9.01091 12H5.98909L5.79222 13.05H9.20778L9.01091 12Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1C = [\"color\"];\nvar DimensionsIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1C);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.00014 2.73895C3.00014 2.94698 2.76087 3.06401 2.59666 2.93628L1.00386 1.69744C0.875177 1.59735 0.875177 1.40286 1.00386 1.30277L2.59666 0.063928C2.76087 -0.0637944 3.00014 0.0532293 3.00014 0.261266V1.00012H9.00009V0.261296C9.00009 0.0532591 9.23936 -0.0637646 9.40358 0.0639578L10.9964 1.3028C11.1251 1.40289 11.1251 1.59738 10.9964 1.69747L9.40358 2.93631C9.23936 3.06404 9.00009 2.94701 9.00009 2.73898V2.00012H3.00014V2.73895ZM9.50002 4.99998H2.50002C2.22388 4.99998 2.00002 5.22384 2.00002 5.49998V12.5C2.00002 12.7761 2.22388 13 2.50002 13H9.50002C9.77616 13 10 12.7761 10 12.5V5.49998C10 5.22384 9.77616 4.99998 9.50002 4.99998ZM2.50002 3.99998C1.67159 3.99998 1.00002 4.67156 1.00002 5.49998V12.5C1.00002 13.3284 1.67159 14 2.50002 14H9.50002C10.3284 14 11 13.3284 11 12.5V5.49998C11 4.67156 10.3284 3.99998 9.50002 3.99998H2.50002ZM14.7389 6.00001H14V12H14.7389C14.9469 12 15.064 12.2393 14.9362 12.4035L13.6974 13.9963C13.5973 14.125 13.4028 14.125 13.3027 13.9963L12.0639 12.4035C11.9362 12.2393 12.0532 12 12.2612 12H13V6.00001H12.2612C12.0532 6.00001 11.9361 5.76074 12.0639 5.59653L13.3027 4.00373C13.4028 3.87505 13.5973 3.87505 13.6974 4.00374L14.9362 5.59653C15.0639 5.76074 14.9469 6.00001 14.7389 6.00001Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1D = [\"color\"];\nvar DiscIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1D);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.49991 0.877075C3.84222 0.877075 0.877075 3.84222 0.877075 7.49991C0.877075 11.1576 3.84222 14.1227 7.49991 14.1227C11.1576 14.1227 14.1227 11.1576 14.1227 7.49991C14.1227 3.84222 11.1576 0.877075 7.49991 0.877075ZM1.82708 7.49991C1.82708 4.36689 4.36689 1.82707 7.49991 1.82707C10.6329 1.82707 13.1727 4.36689 13.1727 7.49991C13.1727 10.6329 10.6329 13.1727 7.49991 13.1727C4.36689 13.1727 1.82708 10.6329 1.82708 7.49991ZM8.37287 7.50006C8.37287 7.98196 7.98221 8.37263 7.5003 8.37263C7.01839 8.37263 6.62773 7.98196 6.62773 7.50006C6.62773 7.01815 7.01839 6.62748 7.5003 6.62748C7.98221 6.62748 8.37287 7.01815 8.37287 7.50006ZM9.32287 7.50006C9.32287 8.50664 8.50688 9.32263 7.5003 9.32263C6.49372 9.32263 5.67773 8.50664 5.67773 7.50006C5.67773 6.49348 6.49372 5.67748 7.5003 5.67748C8.50688 5.67748 9.32287 6.49348 9.32287 7.50006Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1E = [\"color\"];\nvar DiscordLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1E);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M5.07451 1.82584C5.03267 1.81926 4.99014 1.81825 4.94803 1.82284C4.10683 1.91446 2.82673 2.36828 2.07115 2.77808C2.02106 2.80525 1.97621 2.84112 1.93869 2.88402C1.62502 3.24266 1.34046 3.82836 1.11706 4.38186C0.887447 4.95076 0.697293 5.55032 0.588937 5.98354C0.236232 7.39369 0.042502 9.08728 0.0174948 10.6925C0.0162429 10.7729 0.0351883 10.8523 0.0725931 10.9234C0.373679 11.496 1.02015 12.027 1.66809 12.4152C2.32332 12.8078 3.08732 13.1182 3.70385 13.1778C3.85335 13.1922 4.00098 13.1358 4.10282 13.0255C4.2572 12.8581 4.5193 12.4676 4.71745 12.1643C4.80739 12.0267 4.89157 11.8953 4.95845 11.7901C5.62023 11.9106 6.45043 11.9801 7.50002 11.9801C8.54844 11.9801 9.37796 11.9107 10.0394 11.7905C10.1062 11.8957 10.1903 12.0269 10.2801 12.1643C10.4783 12.4676 10.7404 12.8581 10.8947 13.0255C10.9966 13.1358 11.1442 13.1922 11.2937 13.1778C11.9102 13.1182 12.6742 12.8078 13.3295 12.4152C13.9774 12.027 14.6239 11.496 14.925 10.9234C14.9624 10.8523 14.9813 10.7729 14.9801 10.6925C14.9551 9.08728 14.7613 7.39369 14.4086 5.98354C14.3003 5.55032 14.1101 4.95076 13.8805 4.38186C13.6571 3.82836 13.3725 3.24266 13.0589 2.88402C13.0214 2.84112 12.9765 2.80525 12.9264 2.77808C12.1708 2.36828 10.8907 1.91446 10.0495 1.82284C10.0074 1.81825 9.96489 1.81926 9.92305 1.82584C9.71676 1.85825 9.5391 1.96458 9.40809 2.06355C9.26977 2.16804 9.1413 2.29668 9.0304 2.42682C8.86968 2.61544 8.71437 2.84488 8.61428 3.06225C8.27237 3.03501 7.90138 3.02 7.5 3.02C7.0977 3.02 6.72593 3.03508 6.38337 3.06244C6.28328 2.84501 6.12792 2.61549 5.96716 2.42682C5.85626 2.29668 5.72778 2.16804 5.58947 2.06355C5.45846 1.96458 5.2808 1.85825 5.07451 1.82584ZM11.0181 11.5382C11.0395 11.5713 11.0615 11.6051 11.0838 11.6392C11.2169 11.843 11.3487 12.0385 11.4508 12.1809C11.8475 12.0916 12.352 11.8818 12.8361 11.5917C13.3795 11.2661 13.8098 10.8918 14.0177 10.5739C13.9852 9.06758 13.7993 7.50369 13.4773 6.21648C13.38 5.82759 13.2038 5.27021 12.9903 4.74117C12.7893 4.24326 12.5753 3.82162 12.388 3.5792C11.7376 3.24219 10.7129 2.88582 10.0454 2.78987C10.0308 2.79839 10.0113 2.81102 9.98675 2.82955C9.91863 2.881 9.84018 2.95666 9.76111 3.04945C9.71959 3.09817 9.68166 3.1471 9.64768 3.19449C9.953 3.25031 10.2253 3.3171 10.4662 3.39123C11.1499 3.6016 11.6428 3.89039 11.884 4.212C12.0431 4.42408 12.0001 4.72494 11.788 4.884C11.5759 5.04306 11.2751 5.00008 11.116 4.788C11.0572 4.70961 10.8001 4.4984 10.1838 4.30877C9.58933 4.12585 8.71356 3.98 7.5 3.98C6.28644 3.98 5.41067 4.12585 4.81616 4.30877C4.19988 4.4984 3.94279 4.70961 3.884 4.788C3.72494 5.00008 3.42408 5.04306 3.212 4.884C2.99992 4.72494 2.95694 4.42408 3.116 4.212C3.35721 3.89039 3.85011 3.6016 4.53383 3.39123C4.77418 3.31727 5.04571 3.25062 5.35016 3.19488C5.31611 3.14738 5.27808 3.09831 5.23645 3.04945C5.15738 2.95666 5.07893 2.881 5.01081 2.82955C4.98628 2.81102 4.96674 2.79839 4.95217 2.78987C4.28464 2.88582 3.25999 3.24219 2.60954 3.5792C2.42226 3.82162 2.20825 4.24326 2.00729 4.74117C1.79376 5.27021 1.61752 5.82759 1.52025 6.21648C1.19829 7.50369 1.01236 9.06758 0.97986 10.5739C1.18772 10.8918 1.61807 11.2661 2.16148 11.5917C2.64557 11.8818 3.15003 12.0916 3.5468 12.1809C3.64885 12.0385 3.78065 11.843 3.9138 11.6392C3.93626 11.6048 3.95838 11.5708 3.97996 11.5375C3.19521 11.2591 2.77361 10.8758 2.50064 10.4664C2.35359 10.2458 2.4132 9.94778 2.63377 9.80074C2.85435 9.65369 3.15236 9.71329 3.29941 9.93387C3.56077 10.3259 4.24355 11.0201 7.50002 11.0201C10.7565 11.0201 11.4392 10.326 11.7006 9.93386C11.8477 9.71329 12.1457 9.65369 12.3663 9.80074C12.5869 9.94779 12.6465 10.2458 12.4994 10.4664C12.2262 10.8762 11.8041 11.2598 11.0181 11.5382ZM4.08049 7.01221C4.32412 6.74984 4.65476 6.60162 5.00007 6.59998C5.34538 6.60162 5.67603 6.74984 5.91966 7.01221C6.16329 7.27459 6.30007 7.62974 6.30007 7.99998C6.30007 8.37021 6.16329 8.72536 5.91966 8.98774C5.67603 9.25011 5.34538 9.39833 5.00007 9.39998C4.65476 9.39833 4.32412 9.25011 4.08049 8.98774C3.83685 8.72536 3.70007 8.37021 3.70007 7.99998C3.70007 7.62974 3.83685 7.27459 4.08049 7.01221ZM9.99885 6.59998C9.65354 6.60162 9.3229 6.74984 9.07926 7.01221C8.83563 7.27459 8.69885 7.62974 8.69885 7.99998C8.69885 8.37021 8.83563 8.72536 9.07926 8.98774C9.3229 9.25011 9.65354 9.39833 9.99885 9.39998C10.3442 9.39833 10.6748 9.25011 10.9184 8.98774C11.1621 8.72536 11.2989 8.37021 11.2989 7.99998C11.2989 7.62974 11.1621 7.27459 10.9184 7.01221C10.6748 6.74984 10.3442 6.60162 9.99885 6.59998Z\",\n fill: color\n }));\n});\n\nvar _excluded$1F = [\"color\"];\nvar DividerHorizontalIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1F);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2 7.5C2 7.22386 2.22386 7 2.5 7H12.5C12.7761 7 13 7.22386 13 7.5C13 7.77614 12.7761 8 12.5 8H2.5C2.22386 8 2 7.77614 2 7.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1G = [\"color\"];\nvar DividerVerticalIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1G);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.5 2C7.77614 2 8 2.22386 8 2.5L8 12.5C8 12.7761 7.77614 13 7.5 13C7.22386 13 7 12.7761 7 12.5L7 2.5C7 2.22386 7.22386 2 7.5 2Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1H = [\"color\"];\nvar DotIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1H);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.5 9.125C8.39746 9.125 9.125 8.39746 9.125 7.5C9.125 6.60254 8.39746 5.875 7.5 5.875C6.60254 5.875 5.875 6.60254 5.875 7.5C5.875 8.39746 6.60254 9.125 7.5 9.125ZM7.5 10.125C8.94975 10.125 10.125 8.94975 10.125 7.5C10.125 6.05025 8.94975 4.875 7.5 4.875C6.05025 4.875 4.875 6.05025 4.875 7.5C4.875 8.94975 6.05025 10.125 7.5 10.125Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1I = [\"color\"];\nvar DotFilledIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1I);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M9.875 7.5C9.875 8.81168 8.81168 9.875 7.5 9.875C6.18832 9.875 5.125 8.81168 5.125 7.5C5.125 6.18832 6.18832 5.125 7.5 5.125C8.81168 5.125 9.875 6.18832 9.875 7.5Z\",\n fill: color\n }));\n});\n\nvar _excluded$1J = [\"color\"];\nvar DotsHorizontalIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1J);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.625 7.5C3.625 8.12132 3.12132 8.625 2.5 8.625C1.87868 8.625 1.375 8.12132 1.375 7.5C1.375 6.87868 1.87868 6.375 2.5 6.375C3.12132 6.375 3.625 6.87868 3.625 7.5ZM8.625 7.5C8.625 8.12132 8.12132 8.625 7.5 8.625C6.87868 8.625 6.375 8.12132 6.375 7.5C6.375 6.87868 6.87868 6.375 7.5 6.375C8.12132 6.375 8.625 6.87868 8.625 7.5ZM12.5 8.625C13.1213 8.625 13.625 8.12132 13.625 7.5C13.625 6.87868 13.1213 6.375 12.5 6.375C11.8787 6.375 11.375 6.87868 11.375 7.5C11.375 8.12132 11.8787 8.625 12.5 8.625Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1K = [\"color\"];\nvar DotsVerticalIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1K);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M8.625 2.5C8.625 3.12132 8.12132 3.625 7.5 3.625C6.87868 3.625 6.375 3.12132 6.375 2.5C6.375 1.87868 6.87868 1.375 7.5 1.375C8.12132 1.375 8.625 1.87868 8.625 2.5ZM8.625 7.5C8.625 8.12132 8.12132 8.625 7.5 8.625C6.87868 8.625 6.375 8.12132 6.375 7.5C6.375 6.87868 6.87868 6.375 7.5 6.375C8.12132 6.375 8.625 6.87868 8.625 7.5ZM7.5 13.625C8.12132 13.625 8.625 13.1213 8.625 12.5C8.625 11.8787 8.12132 11.375 7.5 11.375C6.87868 11.375 6.375 11.8787 6.375 12.5C6.375 13.1213 6.87868 13.625 7.5 13.625Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1L = [\"color\"];\nvar DoubleArrowDownIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1L);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.85355 2.14645C3.65829 1.95118 3.34171 1.95118 3.14645 2.14645C2.95118 2.34171 2.95118 2.65829 3.14645 2.85355L7.14645 6.85355C7.34171 7.04882 7.65829 7.04882 7.85355 6.85355L11.8536 2.85355C12.0488 2.65829 12.0488 2.34171 11.8536 2.14645C11.6583 1.95118 11.3417 1.95118 11.1464 2.14645L7.5 5.79289L3.85355 2.14645ZM3.85355 8.14645C3.65829 7.95118 3.34171 7.95118 3.14645 8.14645C2.95118 8.34171 2.95118 8.65829 3.14645 8.85355L7.14645 12.8536C7.34171 13.0488 7.65829 13.0488 7.85355 12.8536L11.8536 8.85355C12.0488 8.65829 12.0488 8.34171 11.8536 8.14645C11.6583 7.95118 11.3417 7.95118 11.1464 8.14645L7.5 11.7929L3.85355 8.14645Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1M = [\"color\"];\nvar DoubleArrowLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1M);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M6.85355 3.85355C7.04882 3.65829 7.04882 3.34171 6.85355 3.14645C6.65829 2.95118 6.34171 2.95118 6.14645 3.14645L2.14645 7.14645C1.95118 7.34171 1.95118 7.65829 2.14645 7.85355L6.14645 11.8536C6.34171 12.0488 6.65829 12.0488 6.85355 11.8536C7.04882 11.6583 7.04882 11.3417 6.85355 11.1464L3.20711 7.5L6.85355 3.85355ZM12.8536 3.85355C13.0488 3.65829 13.0488 3.34171 12.8536 3.14645C12.6583 2.95118 12.3417 2.95118 12.1464 3.14645L8.14645 7.14645C7.95118 7.34171 7.95118 7.65829 8.14645 7.85355L12.1464 11.8536C12.3417 12.0488 12.6583 12.0488 12.8536 11.8536C13.0488 11.6583 13.0488 11.3417 12.8536 11.1464L9.20711 7.5L12.8536 3.85355Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1N = [\"color\"];\nvar DoubleArrowRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1N);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2.14645 11.1464C1.95118 11.3417 1.95118 11.6583 2.14645 11.8536C2.34171 12.0488 2.65829 12.0488 2.85355 11.8536L6.85355 7.85355C7.04882 7.65829 7.04882 7.34171 6.85355 7.14645L2.85355 3.14645C2.65829 2.95118 2.34171 2.95118 2.14645 3.14645C1.95118 3.34171 1.95118 3.65829 2.14645 3.85355L5.79289 7.5L2.14645 11.1464ZM8.14645 11.1464C7.95118 11.3417 7.95118 11.6583 8.14645 11.8536C8.34171 12.0488 8.65829 12.0488 8.85355 11.8536L12.8536 7.85355C13.0488 7.65829 13.0488 7.34171 12.8536 7.14645L8.85355 3.14645C8.65829 2.95118 8.34171 2.95118 8.14645 3.14645C7.95118 3.34171 7.95118 3.65829 8.14645 3.85355L11.7929 7.5L8.14645 11.1464Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1O = [\"color\"];\nvar DoubleArrowUpIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1O);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M11.1464 6.85355C11.3417 7.04882 11.6583 7.04882 11.8536 6.85355C12.0488 6.65829 12.0488 6.34171 11.8536 6.14645L7.85355 2.14645C7.65829 1.95118 7.34171 1.95118 7.14645 2.14645L3.14645 6.14645C2.95118 6.34171 2.95118 6.65829 3.14645 6.85355C3.34171 7.04882 3.65829 7.04882 3.85355 6.85355L7.5 3.20711L11.1464 6.85355ZM11.1464 12.8536C11.3417 13.0488 11.6583 13.0488 11.8536 12.8536C12.0488 12.6583 12.0488 12.3417 11.8536 12.1464L7.85355 8.14645C7.65829 7.95118 7.34171 7.95118 7.14645 8.14645L3.14645 12.1464C2.95118 12.3417 2.95118 12.6583 3.14645 12.8536C3.34171 13.0488 3.65829 13.0488 3.85355 12.8536L7.5 9.20711L11.1464 12.8536Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1P = [\"color\"];\nvar DownloadIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1P);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.50005 1.04999C7.74858 1.04999 7.95005 1.25146 7.95005 1.49999V8.41359L10.1819 6.18179C10.3576 6.00605 10.6425 6.00605 10.8182 6.18179C10.994 6.35753 10.994 6.64245 10.8182 6.81819L7.81825 9.81819C7.64251 9.99392 7.35759 9.99392 7.18185 9.81819L4.18185 6.81819C4.00611 6.64245 4.00611 6.35753 4.18185 6.18179C4.35759 6.00605 4.64251 6.00605 4.81825 6.18179L7.05005 8.41359V1.49999C7.05005 1.25146 7.25152 1.04999 7.50005 1.04999ZM2.5 10C2.77614 10 3 10.2239 3 10.5V12C3 12.5539 3.44565 13 3.99635 13H11.0012C11.5529 13 12 12.5528 12 12V10.5C12 10.2239 12.2239 10 12.5 10C12.7761 10 13 10.2239 13 10.5V12C13 13.1041 12.1062 14 11.0012 14H3.99635C2.89019 14 2 13.103 2 12V10.5C2 10.2239 2.22386 10 2.5 10Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1Q = [\"color\"];\nvar DragHandleDots1Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1Q);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"circle\", {\n cx: \"4.5\",\n cy: \"2.5\",\n r: \".6\",\n fill: color\n }), createElement(\"circle\", {\n cx: \"4.5\",\n cy: \"4.5\",\n r: \".6\",\n fill: color\n }), createElement(\"circle\", {\n cx: \"4.5\",\n cy: \"6.499\",\n r: \".6\",\n fill: color\n }), createElement(\"circle\", {\n cx: \"4.5\",\n cy: \"8.499\",\n r: \".6\",\n fill: color\n }), createElement(\"circle\", {\n cx: \"4.5\",\n cy: \"10.498\",\n r: \".6\",\n fill: color\n }), createElement(\"circle\", {\n cx: \"4.5\",\n cy: \"12.498\",\n r: \".6\",\n fill: color\n }), createElement(\"circle\", {\n cx: \"6.5\",\n cy: \"2.5\",\n r: \".6\",\n fill: color\n }), createElement(\"circle\", {\n cx: \"6.5\",\n cy: \"4.5\",\n r: \".6\",\n fill: color\n }), createElement(\"circle\", {\n cx: \"6.5\",\n cy: \"6.499\",\n r: \".6\",\n fill: color\n }), createElement(\"circle\", {\n cx: \"6.5\",\n cy: \"8.499\",\n r: \".6\",\n fill: color\n }), createElement(\"circle\", {\n cx: \"6.5\",\n cy: \"10.498\",\n r: \".6\",\n fill: color\n }), createElement(\"circle\", {\n cx: \"6.5\",\n cy: \"12.498\",\n r: \".6\",\n fill: color\n }), createElement(\"circle\", {\n cx: \"8.499\",\n cy: \"2.5\",\n r: \".6\",\n fill: color\n }), createElement(\"circle\", {\n cx: \"8.499\",\n cy: \"4.5\",\n r: \".6\",\n fill: color\n }), createElement(\"circle\", {\n cx: \"8.499\",\n cy: \"6.499\",\n r: \".6\",\n fill: color\n }), createElement(\"circle\", {\n cx: \"8.499\",\n cy: \"8.499\",\n r: \".6\",\n fill: color\n }), createElement(\"circle\", {\n cx: \"8.499\",\n cy: \"10.498\",\n r: \".6\",\n fill: color\n }), createElement(\"circle\", {\n cx: \"8.499\",\n cy: \"12.498\",\n r: \".6\",\n fill: color\n }), createElement(\"circle\", {\n cx: \"10.499\",\n cy: \"2.5\",\n r: \".6\",\n fill: color\n }), createElement(\"circle\", {\n cx: \"10.499\",\n cy: \"4.5\",\n r: \".6\",\n fill: color\n }), createElement(\"circle\", {\n cx: \"10.499\",\n cy: \"6.499\",\n r: \".6\",\n fill: color\n }), createElement(\"circle\", {\n cx: \"10.499\",\n cy: \"8.499\",\n r: \".6\",\n fill: color\n }), createElement(\"circle\", {\n cx: \"10.499\",\n cy: \"10.498\",\n r: \".6\",\n fill: color\n }), createElement(\"circle\", {\n cx: \"10.499\",\n cy: \"12.498\",\n r: \".6\",\n fill: color\n }));\n});\n\nvar _excluded$1R = [\"color\"];\nvar DragHandleDots2Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1R);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M5.5 4.625C6.12132 4.625 6.625 4.12132 6.625 3.5C6.625 2.87868 6.12132 2.375 5.5 2.375C4.87868 2.375 4.375 2.87868 4.375 3.5C4.375 4.12132 4.87868 4.625 5.5 4.625ZM9.5 4.625C10.1213 4.625 10.625 4.12132 10.625 3.5C10.625 2.87868 10.1213 2.375 9.5 2.375C8.87868 2.375 8.375 2.87868 8.375 3.5C8.375 4.12132 8.87868 4.625 9.5 4.625ZM10.625 7.5C10.625 8.12132 10.1213 8.625 9.5 8.625C8.87868 8.625 8.375 8.12132 8.375 7.5C8.375 6.87868 8.87868 6.375 9.5 6.375C10.1213 6.375 10.625 6.87868 10.625 7.5ZM5.5 8.625C6.12132 8.625 6.625 8.12132 6.625 7.5C6.625 6.87868 6.12132 6.375 5.5 6.375C4.87868 6.375 4.375 6.87868 4.375 7.5C4.375 8.12132 4.87868 8.625 5.5 8.625ZM10.625 11.5C10.625 12.1213 10.1213 12.625 9.5 12.625C8.87868 12.625 8.375 12.1213 8.375 11.5C8.375 10.8787 8.87868 10.375 9.5 10.375C10.1213 10.375 10.625 10.8787 10.625 11.5ZM5.5 12.625C6.12132 12.625 6.625 12.1213 6.625 11.5C6.625 10.8787 6.12132 10.375 5.5 10.375C4.87868 10.375 4.375 10.8787 4.375 11.5C4.375 12.1213 4.87868 12.625 5.5 12.625Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1S = [\"color\"];\nvar DragHandleHorizontalIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1S);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2.49998 4.09998C2.27906 4.09998 2.09998 4.27906 2.09998 4.49998C2.09998 4.72089 2.27906 4.89998 2.49998 4.89998H12.5C12.7209 4.89998 12.9 4.72089 12.9 4.49998C12.9 4.27906 12.7209 4.09998 12.5 4.09998H2.49998ZM2.49998 6.09998C2.27906 6.09998 2.09998 6.27906 2.09998 6.49998C2.09998 6.72089 2.27906 6.89998 2.49998 6.89998H12.5C12.7209 6.89998 12.9 6.72089 12.9 6.49998C12.9 6.27906 12.7209 6.09998 12.5 6.09998H2.49998ZM2.09998 8.49998C2.09998 8.27906 2.27906 8.09998 2.49998 8.09998H12.5C12.7209 8.09998 12.9 8.27906 12.9 8.49998C12.9 8.72089 12.7209 8.89998 12.5 8.89998H2.49998C2.27906 8.89998 2.09998 8.72089 2.09998 8.49998ZM2.49998 10.1C2.27906 10.1 2.09998 10.2791 2.09998 10.5C2.09998 10.7209 2.27906 10.9 2.49998 10.9H12.5C12.7209 10.9 12.9 10.7209 12.9 10.5C12.9 10.2791 12.7209 10.1 12.5 10.1H2.49998Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1T = [\"color\"];\nvar DragHandleVerticalIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1T);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M4.09998 12.5C4.09998 12.7209 4.27906 12.9 4.49998 12.9C4.72089 12.9 4.89998 12.7209 4.89998 12.5L4.89998 2.50002C4.89998 2.27911 4.72089 2.10003 4.49998 2.10003C4.27906 2.10003 4.09998 2.27911 4.09998 2.50002L4.09998 12.5ZM6.09998 12.5C6.09998 12.7209 6.27906 12.9 6.49998 12.9C6.72089 12.9 6.89998 12.7209 6.89998 12.5L6.89998 2.50002C6.89998 2.27911 6.72089 2.10003 6.49998 2.10003C6.27906 2.10003 6.09998 2.27911 6.09998 2.50002L6.09998 12.5ZM8.49998 12.9C8.27906 12.9 8.09998 12.7209 8.09998 12.5L8.09998 2.50002C8.09998 2.27911 8.27906 2.10002 8.49998 2.10002C8.72089 2.10002 8.89998 2.27911 8.89998 2.50002L8.89998 12.5C8.89998 12.7209 8.72089 12.9 8.49998 12.9ZM10.1 12.5C10.1 12.7209 10.2791 12.9 10.5 12.9C10.7209 12.9 10.9 12.7209 10.9 12.5L10.9 2.50002C10.9 2.27911 10.7209 2.10002 10.5 2.10002C10.2791 2.10002 10.1 2.27911 10.1 2.50002L10.1 12.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1U = [\"color\"];\nvar DrawingPinIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1U);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M10.3285 1.13607C10.1332 0.940809 9.81662 0.940808 9.62136 1.13607C9.42609 1.33133 9.42609 1.64792 9.62136 1.84318L10.2744 2.49619L5.42563 6.13274L4.31805 5.02516C4.12279 4.8299 3.80621 4.8299 3.61095 5.02516C3.41569 5.22042 3.41569 5.537 3.61095 5.73226L5.02516 7.14648L6.08582 8.20714L2.81545 11.4775C2.62019 11.6728 2.62019 11.9894 2.81545 12.1846C3.01072 12.3799 3.3273 12.3799 3.52256 12.1846L6.79293 8.91425L7.85359 9.97491L9.2678 11.3891C9.46306 11.5844 9.77965 11.5844 9.97491 11.3891C10.1702 11.1939 10.1702 10.8773 9.97491 10.682L8.86733 9.57443L12.5039 4.7257L13.1569 5.37871C13.3522 5.57397 13.6687 5.57397 13.864 5.37871C14.0593 5.18345 14.0593 4.86687 13.864 4.6716L12.8033 3.61094L11.3891 2.19673L10.3285 1.13607ZM6.13992 6.84702L10.9887 3.21047L11.7896 4.01142L8.15305 8.86015L6.13992 6.84702Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1V = [\"color\"];\nvar DrawingPinFilledIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1V);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M9.62129 1.13607C9.81656 0.940808 10.1331 0.940809 10.3284 1.13607L11.3891 2.19673L12.8033 3.61094L13.8639 4.6716C14.0592 4.86687 14.0592 5.18345 13.8639 5.37871C13.6687 5.57397 13.3521 5.57397 13.1568 5.37871L12.5038 4.7257L8.86727 9.57443L9.97485 10.682C10.1701 10.8773 10.1701 11.1939 9.97485 11.3891C9.77959 11.5844 9.463 11.5844 9.26774 11.3891L7.85353 9.97491L6.79287 8.91425L3.5225 12.1846C3.32724 12.3799 3.01065 12.3799 2.81539 12.1846C2.62013 11.9894 2.62013 11.6728 2.81539 11.4775L6.08576 8.20714L5.0251 7.14648L3.61089 5.73226C3.41563 5.537 3.41562 5.22042 3.61089 5.02516C3.80615 4.8299 4.12273 4.8299 4.31799 5.02516L5.42557 6.13274L10.2743 2.49619L9.62129 1.84318C9.42603 1.64792 9.42603 1.33133 9.62129 1.13607Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n d: \"M9.62129 1.13607C9.81656 0.940808 10.1331 0.940809 10.3284 1.13607L11.3891 2.19673L12.8033 3.61094L13.8639 4.6716C14.0592 4.86687 14.0592 5.18345 13.8639 5.37871C13.6687 5.57397 13.3521 5.57397 13.1568 5.37871L12.5038 4.7257L8.86727 9.57443L9.97485 10.682C10.1701 10.8773 10.1701 11.1939 9.97485 11.3891C9.77959 11.5844 9.463 11.5844 9.26774 11.3891L7.85353 9.97491L6.79287 8.91425L3.5225 12.1846C3.32724 12.3799 3.01065 12.3799 2.81539 12.1846C2.62013 11.9894 2.62013 11.6728 2.81539 11.4775L6.08576 8.20714L5.0251 7.14648L3.61089 5.73226C3.41563 5.537 3.41562 5.22042 3.61089 5.02516C3.80615 4.8299 4.12273 4.8299 4.31799 5.02516L5.42557 6.13274L10.2743 2.49619L9.62129 1.84318C9.42603 1.64792 9.42603 1.33133 9.62129 1.13607Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1W = [\"color\"];\nvar DropdownMenuIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1W);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.49999 3.09998C7.27907 3.09998 7.09999 3.27906 7.09999 3.49998C7.09999 3.72089 7.27907 3.89998 7.49999 3.89998H14.5C14.7209 3.89998 14.9 3.72089 14.9 3.49998C14.9 3.27906 14.7209 3.09998 14.5 3.09998H7.49999ZM7.49998 5.1C7.27907 5.1 7.09998 5.27908 7.09998 5.5C7.09998 5.72091 7.27907 5.9 7.49998 5.9H14.5C14.7209 5.9 14.9 5.72091 14.9 5.5C14.9 5.27908 14.7209 5.1 14.5 5.1H7.49998ZM7.1 7.5C7.1 7.27908 7.27909 7.1 7.5 7.1H14.5C14.7209 7.1 14.9 7.27908 14.9 7.5C14.9 7.72091 14.7209 7.9 14.5 7.9H7.5C7.27909 7.9 7.1 7.72091 7.1 7.5ZM7.49998 9.1C7.27907 9.1 7.09998 9.27908 7.09998 9.5C7.09998 9.72091 7.27907 9.9 7.49998 9.9H14.5C14.7209 9.9 14.9 9.72091 14.9 9.5C14.9 9.27908 14.7209 9.1 14.5 9.1H7.49998ZM7.09998 11.5C7.09998 11.2791 7.27907 11.1 7.49998 11.1H14.5C14.7209 11.1 14.9 11.2791 14.9 11.5C14.9 11.7209 14.7209 11.9 14.5 11.9H7.49998C7.27907 11.9 7.09998 11.7209 7.09998 11.5ZM2.5 9.25003L5 6.00003H0L2.5 9.25003Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1X = [\"color\"];\nvar EnterIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1X);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M4.5 1C4.22386 1 4 1.22386 4 1.5C4 1.77614 4.22386 2 4.5 2H12V13H4.5C4.22386 13 4 13.2239 4 13.5C4 13.7761 4.22386 14 4.5 14H12C12.5523 14 13 13.5523 13 13V2C13 1.44772 12.5523 1 12 1H4.5ZM6.60355 4.89645C6.40829 4.70118 6.09171 4.70118 5.89645 4.89645C5.70118 5.09171 5.70118 5.40829 5.89645 5.60355L7.29289 7H0.5C0.223858 7 0 7.22386 0 7.5C0 7.77614 0.223858 8 0.5 8H7.29289L5.89645 9.39645C5.70118 9.59171 5.70118 9.90829 5.89645 10.1036C6.09171 10.2988 6.40829 10.2988 6.60355 10.1036L8.85355 7.85355C9.04882 7.65829 9.04882 7.34171 8.85355 7.14645L6.60355 4.89645Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1Y = [\"color\"];\nvar EnterFullScreenIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1Y);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2 2.5C2 2.22386 2.22386 2 2.5 2H5.5C5.77614 2 6 2.22386 6 2.5C6 2.77614 5.77614 3 5.5 3H3V5.5C3 5.77614 2.77614 6 2.5 6C2.22386 6 2 5.77614 2 5.5V2.5ZM9 2.5C9 2.22386 9.22386 2 9.5 2H12.5C12.7761 2 13 2.22386 13 2.5V5.5C13 5.77614 12.7761 6 12.5 6C12.2239 6 12 5.77614 12 5.5V3H9.5C9.22386 3 9 2.77614 9 2.5ZM2.5 9C2.77614 9 3 9.22386 3 9.5V12H5.5C5.77614 12 6 12.2239 6 12.5C6 12.7761 5.77614 13 5.5 13H2.5C2.22386 13 2 12.7761 2 12.5V9.5C2 9.22386 2.22386 9 2.5 9ZM12.5 9C12.7761 9 13 9.22386 13 9.5V12.5C13 12.7761 12.7761 13 12.5 13H9.5C9.22386 13 9 12.7761 9 12.5C9 12.2239 9.22386 12 9.5 12H12V9.5C12 9.22386 12.2239 9 12.5 9Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1Z = [\"color\"];\nvar EnvelopeClosedIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1Z);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1 2C0.447715 2 0 2.44772 0 3V12C0 12.5523 0.447715 13 1 13H14C14.5523 13 15 12.5523 15 12V3C15 2.44772 14.5523 2 14 2H1ZM1 3L14 3V3.92494C13.9174 3.92486 13.8338 3.94751 13.7589 3.99505L7.5 7.96703L1.24112 3.99505C1.16621 3.94751 1.0826 3.92486 1 3.92494V3ZM1 4.90797V12H14V4.90797L7.74112 8.87995C7.59394 8.97335 7.40606 8.97335 7.25888 8.87995L1 4.90797Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1_ = [\"color\"];\nvar EnvelopeOpenIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1_);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.94721 0.164594C7.66569 0.0238299 7.33431 0.0238302 7.05279 0.164594L0.552786 3.41459C0.214002 3.58399 0 3.93025 0 4.30902V12C0 12.5523 0.447715 13 1 13H14C14.5523 13 15 12.5523 15 12V4.30902C15 3.93025 14.786 3.58399 14.4472 3.41459L7.94721 0.164594ZM13.5689 4.09349L7.5 1.05902L1.43105 4.09349L7.5 7.29136L13.5689 4.09349ZM1 4.88366V12H14V4.88366L7.70977 8.19813C7.57848 8.26731 7.42152 8.26731 7.29023 8.19813L1 4.88366Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$1$ = [\"color\"];\nvar EraserIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1$);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M8.36052 0.72921C8.55578 0.533948 8.87236 0.533948 9.06763 0.72921L14.2708 5.93235C14.466 6.12761 14.466 6.4442 14.2708 6.63946L8.95513 11.9551L7.3466 13.5636C6.76081 14.1494 5.81106 14.1494 5.22528 13.5636L1.43635 9.7747C0.850563 9.18891 0.850563 8.23917 1.43635 7.65338L3.04488 6.04485L8.36052 0.72921ZM8.71407 1.78987L4.10554 6.3984L8.60157 10.8944L13.2101 6.28591L8.71407 1.78987ZM7.89447 11.6015L3.39843 7.10551L2.14346 8.36049C1.94819 8.55575 1.94819 8.87233 2.14346 9.06759L5.93238 12.8565C6.12765 13.0518 6.44423 13.0518 6.63949 12.8565L7.89447 11.6015Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$20 = [\"color\"];\nvar ExclamationTriangleIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$20);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M8.4449 0.608765C8.0183 -0.107015 6.9817 -0.107015 6.55509 0.608766L0.161178 11.3368C-0.275824 12.07 0.252503 13 1.10608 13H13.8939C14.7475 13 15.2758 12.07 14.8388 11.3368L8.4449 0.608765ZM7.4141 1.12073C7.45288 1.05566 7.54712 1.05566 7.5859 1.12073L13.9798 11.8488C14.0196 11.9154 13.9715 12 13.8939 12H1.10608C1.02849 12 0.980454 11.9154 1.02018 11.8488L7.4141 1.12073ZM6.8269 4.48611C6.81221 4.10423 7.11783 3.78663 7.5 3.78663C7.88217 3.78663 8.18778 4.10423 8.1731 4.48612L8.01921 8.48701C8.00848 8.766 7.7792 8.98664 7.5 8.98664C7.2208 8.98664 6.99151 8.766 6.98078 8.48701L6.8269 4.48611ZM8.24989 10.476C8.24989 10.8902 7.9141 11.226 7.49989 11.226C7.08567 11.226 6.74989 10.8902 6.74989 10.476C6.74989 10.0618 7.08567 9.72599 7.49989 9.72599C7.9141 9.72599 8.24989 10.0618 8.24989 10.476Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$21 = [\"color\"];\nvar ExitIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$21);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3 1C2.44771 1 2 1.44772 2 2V13C2 13.5523 2.44772 14 3 14H10.5C10.7761 14 11 13.7761 11 13.5C11 13.2239 10.7761 13 10.5 13H3V2L10.5 2C10.7761 2 11 1.77614 11 1.5C11 1.22386 10.7761 1 10.5 1H3ZM12.6036 4.89645C12.4083 4.70118 12.0917 4.70118 11.8964 4.89645C11.7012 5.09171 11.7012 5.40829 11.8964 5.60355L13.2929 7H6.5C6.22386 7 6 7.22386 6 7.5C6 7.77614 6.22386 8 6.5 8H13.2929L11.8964 9.39645C11.7012 9.59171 11.7012 9.90829 11.8964 10.1036C12.0917 10.2988 12.4083 10.2988 12.6036 10.1036L14.8536 7.85355C15.0488 7.65829 15.0488 7.34171 14.8536 7.14645L12.6036 4.89645Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$22 = [\"color\"];\nvar ExitFullScreenIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$22);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M5.5 2C5.77614 2 6 2.22386 6 2.5V5.5C6 5.77614 5.77614 6 5.5 6H2.5C2.22386 6 2 5.77614 2 5.5C2 5.22386 2.22386 5 2.5 5H5V2.5C5 2.22386 5.22386 2 5.5 2ZM9.5 2C9.77614 2 10 2.22386 10 2.5V5H12.5C12.7761 5 13 5.22386 13 5.5C13 5.77614 12.7761 6 12.5 6H9.5C9.22386 6 9 5.77614 9 5.5V2.5C9 2.22386 9.22386 2 9.5 2ZM2 9.5C2 9.22386 2.22386 9 2.5 9H5.5C5.77614 9 6 9.22386 6 9.5V12.5C6 12.7761 5.77614 13 5.5 13C5.22386 13 5 12.7761 5 12.5V10H2.5C2.22386 10 2 9.77614 2 9.5ZM9 9.5C9 9.22386 9.22386 9 9.5 9H12.5C12.7761 9 13 9.22386 13 9.5C13 9.77614 12.7761 10 12.5 10H10V12.5C10 12.7761 9.77614 13 9.5 13C9.22386 13 9 12.7761 9 12.5V9.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$23 = [\"color\"];\nvar ExternalLinkIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$23);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3 2C2.44772 2 2 2.44772 2 3V12C2 12.5523 2.44772 13 3 13H12C12.5523 13 13 12.5523 13 12V8.5C13 8.22386 12.7761 8 12.5 8C12.2239 8 12 8.22386 12 8.5V12H3V3L6.5 3C6.77614 3 7 2.77614 7 2.5C7 2.22386 6.77614 2 6.5 2H3ZM12.8536 2.14645C12.9015 2.19439 12.9377 2.24964 12.9621 2.30861C12.9861 2.36669 12.9996 2.4303 13 2.497L13 2.5V2.50049V5.5C13 5.77614 12.7761 6 12.5 6C12.2239 6 12 5.77614 12 5.5V3.70711L6.85355 8.85355C6.65829 9.04882 6.34171 9.04882 6.14645 8.85355C5.95118 8.65829 5.95118 8.34171 6.14645 8.14645L11.2929 3H9.5C9.22386 3 9 2.77614 9 2.5C9 2.22386 9.22386 2 9.5 2H12.4999H12.5C12.5678 2 12.6324 2.01349 12.6914 2.03794C12.7504 2.06234 12.8056 2.09851 12.8536 2.14645Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$24 = [\"color\"];\nvar EyeClosedIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$24);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M14.7649 6.07596C14.9991 6.22231 15.0703 6.53079 14.9239 6.76495C14.4849 7.46743 13.9632 8.10645 13.3702 8.66305L14.5712 9.86406C14.7664 10.0593 14.7664 10.3759 14.5712 10.5712C14.3759 10.7664 14.0593 10.7664 13.8641 10.5712L12.6011 9.30817C11.805 9.90283 10.9089 10.3621 9.93375 10.651L10.383 12.3277C10.4544 12.5944 10.2961 12.8685 10.0294 12.94C9.76267 13.0115 9.4885 12.8532 9.41704 12.5865L8.95917 10.8775C8.48743 10.958 8.00036 10.9999 7.50001 10.9999C6.99965 10.9999 6.51257 10.958 6.04082 10.8775L5.58299 12.5864C5.51153 12.8532 5.23737 13.0115 4.97064 12.94C4.7039 12.8686 4.5456 12.5944 4.61706 12.3277L5.06625 10.651C4.09111 10.3621 3.19503 9.90282 2.3989 9.30815L1.1359 10.5712C0.940638 10.7664 0.624058 10.7664 0.428798 10.5712C0.233537 10.3759 0.233537 10.0593 0.428798 9.86405L1.62982 8.66303C1.03682 8.10643 0.515113 7.46742 0.0760677 6.76495C-0.0702867 6.53079 0.000898544 6.22231 0.235065 6.07596C0.469231 5.9296 0.777703 6.00079 0.924058 6.23496C1.40354 7.00213 1.989 7.68057 2.66233 8.2427C2.67315 8.25096 2.6837 8.25972 2.69397 8.26898C4.00897 9.35527 5.65537 9.99991 7.50001 9.99991C10.3078 9.99991 12.6564 8.5063 14.076 6.23495C14.2223 6.00079 14.5308 5.9296 14.7649 6.07596Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$25 = [\"color\"];\nvar EyeNoneIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$25);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M13.3536 2.35355C13.5488 2.15829 13.5488 1.84171 13.3536 1.64645C13.1583 1.45118 12.8417 1.45118 12.6464 1.64645L10.6828 3.61012C9.70652 3.21671 8.63759 3 7.5 3C4.30786 3 1.65639 4.70638 0.0760002 7.23501C-0.0253338 7.39715 -0.0253334 7.60288 0.0760014 7.76501C0.902945 9.08812 2.02314 10.1861 3.36061 10.9323L1.64645 12.6464C1.45118 12.8417 1.45118 13.1583 1.64645 13.3536C1.84171 13.5488 2.15829 13.5488 2.35355 13.3536L4.31723 11.3899C5.29348 11.7833 6.36241 12 7.5 12C10.6921 12 13.3436 10.2936 14.924 7.76501C15.0253 7.60288 15.0253 7.39715 14.924 7.23501C14.0971 5.9119 12.9769 4.81391 11.6394 4.06771L13.3536 2.35355ZM9.90428 4.38861C9.15332 4.1361 8.34759 4 7.5 4C4.80285 4 2.52952 5.37816 1.09622 7.50001C1.87284 8.6497 2.89609 9.58106 4.09974 10.1931L9.90428 4.38861ZM5.09572 10.6114L10.9003 4.80685C12.1039 5.41894 13.1272 6.35031 13.9038 7.50001C12.4705 9.62183 10.1971 11 7.5 11C6.65241 11 5.84668 10.8639 5.09572 10.6114Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$26 = [\"color\"];\nvar EyeOpenIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$26);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.5 11C4.80285 11 2.52952 9.62184 1.09622 7.50001C2.52952 5.37816 4.80285 4 7.5 4C10.1971 4 12.4705 5.37816 13.9038 7.50001C12.4705 9.62183 10.1971 11 7.5 11ZM7.5 3C4.30786 3 1.65639 4.70638 0.0760002 7.23501C-0.0253338 7.39715 -0.0253334 7.60288 0.0760014 7.76501C1.65639 10.2936 4.30786 12 7.5 12C10.6921 12 13.3436 10.2936 14.924 7.76501C15.0253 7.60288 15.0253 7.39715 14.924 7.23501C13.3436 4.70638 10.6921 3 7.5 3ZM7.5 9.5C8.60457 9.5 9.5 8.60457 9.5 7.5C9.5 6.39543 8.60457 5.5 7.5 5.5C6.39543 5.5 5.5 6.39543 5.5 7.5C5.5 8.60457 6.39543 9.5 7.5 9.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$27 = [\"color\"];\nvar FaceIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$27);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM1.82708 7.49972C1.82708 4.36671 4.36689 1.82689 7.49991 1.82689C10.6329 1.82689 13.1727 4.36671 13.1727 7.49972C13.1727 10.6327 10.6329 13.1726 7.49991 13.1726C4.36689 13.1726 1.82708 10.6327 1.82708 7.49972ZM5.03747 9.21395C4.87949 8.98746 4.56782 8.93193 4.34133 9.08991C4.11484 9.24789 4.05931 9.55956 4.21729 9.78605C4.93926 10.8211 6.14033 11.5 7.50004 11.5C8.85974 11.5 10.0608 10.8211 10.7828 9.78605C10.9408 9.55956 10.8852 9.24789 10.6587 9.08991C10.4323 8.93193 10.1206 8.98746 9.9626 9.21395C9.41963 9.99238 8.51907 10.5 7.50004 10.5C6.481 10.5 5.58044 9.99238 5.03747 9.21395ZM5.37503 6.84998C5.85828 6.84998 6.25003 6.45815 6.25003 5.97498C6.25003 5.4918 5.85828 5.09998 5.37503 5.09998C4.89179 5.09998 4.50003 5.4918 4.50003 5.97498C4.50003 6.45815 4.89179 6.84998 5.37503 6.84998ZM10.5 5.97498C10.5 6.45815 10.1083 6.84998 9.62503 6.84998C9.14179 6.84998 8.75003 6.45815 8.75003 5.97498C8.75003 5.4918 9.14179 5.09998 9.62503 5.09998C10.1083 5.09998 10.5 5.4918 10.5 5.97498Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$28 = [\"color\"];\nvar FigmaLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$28);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.00005 2.04999H5.52505C4.71043 2.04999 4.05005 2.71037 4.05005 3.52499C4.05005 4.33961 4.71043 4.99999 5.52505 4.99999H7.00005V2.04999ZM7.00005 1.04999H8.00005H9.47505C10.842 1.04999 11.95 2.15808 11.95 3.52499C11.95 4.33163 11.5642 5.04815 10.9669 5.49999C11.5642 5.95184 11.95 6.66836 11.95 7.475C11.95 8.8419 10.842 9.95 9.47505 9.95C8.92236 9.95 8.41198 9.76884 8.00005 9.46266V9.95L8.00005 11.425C8.00005 12.7919 6.89195 13.9 5.52505 13.9C4.15814 13.9 3.05005 12.7919 3.05005 11.425C3.05005 10.6183 3.43593 9.90184 4.03317 9.44999C3.43593 8.99814 3.05005 8.28163 3.05005 7.475C3.05005 6.66836 3.43594 5.95184 4.03319 5.5C3.43594 5.04815 3.05005 4.33163 3.05005 3.52499C3.05005 2.15808 4.15814 1.04999 5.52505 1.04999H7.00005ZM8.00005 2.04999V4.99999H9.47505C10.2897 4.99999 10.95 4.33961 10.95 3.52499C10.95 2.71037 10.2897 2.04999 9.47505 2.04999H8.00005ZM5.52505 8.94998H7.00005L7.00005 7.4788L7.00005 7.475L7.00005 7.4712V6H5.52505C4.71043 6 4.05005 6.66038 4.05005 7.475C4.05005 8.28767 4.70727 8.94684 5.5192 8.94999L5.52505 8.94998ZM4.05005 11.425C4.05005 10.6123 4.70727 9.95315 5.5192 9.94999L5.52505 9.95H7.00005L7.00005 11.425C7.00005 12.2396 6.33967 12.9 5.52505 12.9C4.71043 12.9 4.05005 12.2396 4.05005 11.425ZM8.00005 7.47206C8.00164 6.65879 8.66141 6 9.47505 6C10.2897 6 10.95 6.66038 10.95 7.475C10.95 8.28962 10.2897 8.95 9.47505 8.95C8.66141 8.95 8.00164 8.29121 8.00005 7.47794V7.47206Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$29 = [\"color\"];\nvar FileIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$29);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.5 2C3.22386 2 3 2.22386 3 2.5V12.5C3 12.7761 3.22386 13 3.5 13H11.5C11.7761 13 12 12.7761 12 12.5V6H8.5C8.22386 6 8 5.77614 8 5.5V2H3.5ZM9 2.70711L11.2929 5H9V2.70711ZM2 2.5C2 1.67157 2.67157 1 3.5 1H8.5C8.63261 1 8.75979 1.05268 8.85355 1.14645L12.8536 5.14645C12.9473 5.24021 13 5.36739 13 5.5V12.5C13 13.3284 12.3284 14 11.5 14H3.5C2.67157 14 2 13.3284 2 12.5V2.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2a = [\"color\"];\nvar FileMinusIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2a);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3 2.5C3 2.22386 3.22386 2 3.5 2H9.29289L12 4.70711V12.5C12 12.7761 11.7761 13 11.5 13H3.5C3.22386 13 3 12.7761 3 12.5V2.5ZM3.5 1C2.67157 1 2 1.67157 2 2.5V12.5C2 13.3284 2.67157 14 3.5 14H11.5C12.3284 14 13 13.3284 13 12.5V4.60355C13 4.40464 12.921 4.21388 12.7803 4.07322L9.85355 1.14645C9.75979 1.05268 9.63261 1 9.5 1H3.5ZM5.25 7C4.97386 7 4.75 7.22386 4.75 7.5C4.75 7.77614 4.97386 8 5.25 8H9.75C10.0261 8 10.25 7.77614 10.25 7.5C10.25 7.22386 10.0261 7 9.75 7H5.25Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2b = [\"color\"];\nvar FilePlusIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2b);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.5 2C3.22386 2 3 2.22386 3 2.5V12.5C3 12.7761 3.22386 13 3.5 13H11.5C11.7761 13 12 12.7761 12 12.5V4.70711L9.29289 2H3.5ZM2 2.5C2 1.67157 2.67157 1 3.5 1H9.5C9.63261 1 9.75979 1.05268 9.85355 1.14645L12.7803 4.07322C12.921 4.21388 13 4.40464 13 4.60355V12.5C13 13.3284 12.3284 14 11.5 14H3.5C2.67157 14 2 13.3284 2 12.5V2.5ZM4.75 7.5C4.75 7.22386 4.97386 7 5.25 7H7V5.25C7 4.97386 7.22386 4.75 7.5 4.75C7.77614 4.75 8 4.97386 8 5.25V7H9.75C10.0261 7 10.25 7.22386 10.25 7.5C10.25 7.77614 10.0261 8 9.75 8H8V9.75C8 10.0261 7.77614 10.25 7.5 10.25C7.22386 10.25 7 10.0261 7 9.75V8H5.25C4.97386 8 4.75 7.77614 4.75 7.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2c = [\"color\"];\nvar FileTextIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2c);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3 2.5C3 2.22386 3.22386 2 3.5 2H9.08579C9.21839 2 9.34557 2.05268 9.43934 2.14645L11.8536 4.56066C11.9473 4.65443 12 4.78161 12 4.91421V12.5C12 12.7761 11.7761 13 11.5 13H3.5C3.22386 13 3 12.7761 3 12.5V2.5ZM3.5 1C2.67157 1 2 1.67157 2 2.5V12.5C2 13.3284 2.67157 14 3.5 14H11.5C12.3284 14 13 13.3284 13 12.5V4.91421C13 4.51639 12.842 4.13486 12.5607 3.85355L10.1464 1.43934C9.86514 1.15804 9.48361 1 9.08579 1H3.5ZM4.5 4C4.22386 4 4 4.22386 4 4.5C4 4.77614 4.22386 5 4.5 5H7.5C7.77614 5 8 4.77614 8 4.5C8 4.22386 7.77614 4 7.5 4H4.5ZM4.5 7C4.22386 7 4 7.22386 4 7.5C4 7.77614 4.22386 8 4.5 8H10.5C10.7761 8 11 7.77614 11 7.5C11 7.22386 10.7761 7 10.5 7H4.5ZM4.5 10C4.22386 10 4 10.2239 4 10.5C4 10.7761 4.22386 11 4.5 11H10.5C10.7761 11 11 10.7761 11 10.5C11 10.2239 10.7761 10 10.5 10H4.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2d = [\"color\"];\nvar FontBoldIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2d);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M5.10505 12C4.70805 12 4.4236 11.912 4.25171 11.736C4.0839 11.5559 4 11.2715 4 10.8827V4.11733C4 3.72033 4.08595 3.43588 4.25784 3.26398C4.43383 3.08799 4.71623 3 5.10505 3C6.42741 3 8.25591 3 9.02852 3C10.1373 3 11.0539 3.98153 11.0539 5.1846C11.0539 6.08501 10.6037 6.81855 9.70327 7.23602C10.8657 7.44851 11.5176 8.62787 11.5176 9.48128C11.5176 10.5125 10.9902 12 9.27734 12C8.77742 12 6.42626 12 5.10505 12ZM8.37891 8.00341H5.8V10.631H8.37891C8.9 10.631 9.6296 10.1211 9.6296 9.29877C9.6296 8.47643 8.9 8.00341 8.37891 8.00341ZM5.8 4.36903V6.69577H8.17969C8.53906 6.69577 9.27734 6.35939 9.27734 5.50002C9.27734 4.64064 8.48047 4.36903 8.17969 4.36903H5.8Z\",\n fill: color\n }));\n});\n\nvar _excluded$2e = [\"color\"];\nvar FontFamilyIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2e);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2.5 4.5C2.5 3.09886 3.59886 2 5 2H12.499C12.7752 2 13 2.22386 13 2.5C13 2.77614 12.7761 3 12.5 3H8.69244L8.40509 3.85458C8.18869 4.49752 7.89401 5.37197 7.58091 6.29794C7.50259 6.52956 7.42308 6.76453 7.34332 7H8.5C8.77614 7 9 7.22386 9 7.5C9 7.77614 8.77614 8 8.5 8H7.00407C6.56724 9.28543 6.16435 10.4613 5.95799 11.0386C5.63627 11.9386 5.20712 12.4857 4.66741 12.7778C4.16335 13.0507 3.64154 13.0503 3.28378 13.05L3.25 13.05C2.94624 13.05 2.7 12.8037 2.7 12.5C2.7 12.1962 2.94624 11.95 3.25 11.95C3.64182 11.95 3.9035 11.9405 4.14374 11.8105C4.36443 11.691 4.65532 11.4148 4.92217 10.6683C5.10695 10.1514 5.45375 9.14134 5.8422 8H4.5C4.22386 8 4 7.77614 4 7.5C4 7.22386 4.22386 7 4.5 7H6.18187C6.30127 6.64785 6.42132 6.29323 6.53887 5.94559C6.85175 5.02025 7.14627 4.14631 7.36256 3.50368L7.53192 3H5C4.15114 3 3.5 3.65114 3.5 4.5C3.5 4.77614 3.27614 5 3 5C2.72386 5 2.5 4.77614 2.5 4.5Z\",\n fill: color\n }));\n});\n\nvar _excluded$2f = [\"color\"];\nvar FontItalicIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2f);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M5.67494 3.50017C5.67494 3.25164 5.87641 3.05017 6.12494 3.05017H10.6249C10.8735 3.05017 11.0749 3.25164 11.0749 3.50017C11.0749 3.7487 10.8735 3.95017 10.6249 3.95017H9.00587L7.2309 11.05H8.87493C9.12345 11.05 9.32493 11.2515 9.32493 11.5C9.32493 11.7486 9.12345 11.95 8.87493 11.95H4.37493C4.1264 11.95 3.92493 11.7486 3.92493 11.5C3.92493 11.2515 4.1264 11.05 4.37493 11.05H5.99397L7.76894 3.95017H6.12494C5.87641 3.95017 5.67494 3.7487 5.67494 3.50017Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2g = [\"color\"];\nvar FontRomanIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2g);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M4.79993 3.50017C4.79993 3.25164 5.0014 3.05017 5.24993 3.05017H9.74993C9.99845 3.05017 10.1999 3.25164 10.1999 3.50017C10.1999 3.7487 9.99845 3.95017 9.74993 3.95017H8.09993V11.05H9.74994C9.99847 11.05 10.1999 11.2515 10.1999 11.5C10.1999 11.7486 9.99847 11.95 9.74994 11.95H5.24994C5.00141 11.95 4.79994 11.7486 4.79994 11.5C4.79994 11.2515 5.00141 11.05 5.24994 11.05H6.89993V3.95017H5.24993C5.0014 3.95017 4.79993 3.7487 4.79993 3.50017Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2h = [\"color\"];\nvar FontSizeIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2h);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2.78233 2.21707C2.70732 2.14206 2.60557 2.09991 2.49949 2.09991C2.3934 2.09991 2.29166 2.14206 2.21664 2.21707L0.216645 4.21707C0.0604351 4.37328 0.0604351 4.62655 0.216645 4.78276C0.372855 4.93897 0.626121 4.93897 0.78233 4.78276L2.09949 3.4656L2.09949 11.5342L0.78233 10.2171C0.62612 10.0609 0.372854 10.0609 0.216645 10.2171C0.0604349 10.3733 0.0604349 10.6265 0.216645 10.7828L2.21664 12.7828C2.29166 12.8578 2.3934 12.8999 2.49949 12.8999C2.60557 12.8999 2.70731 12.8578 2.78233 12.7828L4.78233 10.7828C4.93854 10.6265 4.93854 10.3733 4.78233 10.2171C4.62612 10.0609 4.37285 10.0609 4.21664 10.2171L2.89949 11.5342L2.89949 3.4656L4.21664 4.78276C4.37285 4.93897 4.62612 4.93897 4.78233 4.78276C4.93854 4.62655 4.93854 4.37328 4.78233 4.21707L2.78233 2.21707ZM10.5 2.74997C10.7107 2.74997 10.8988 2.88211 10.9703 3.08036L13.9703 11.3999C14.064 11.6597 13.9293 11.9462 13.6696 12.0399C13.4098 12.1336 13.1233 11.9989 13.0296 11.7392L12.0477 9.016H8.95228L7.97033 11.7392C7.87666 11.9989 7.59013 12.1336 7.33036 12.0399C7.07059 11.9462 6.93595 11.6597 7.02962 11.3999L10.0296 3.08036C10.1011 2.88211 10.2892 2.74997 10.5 2.74997ZM10.5 4.72396L11.7412 8.166H9.25879L10.5 4.72396Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2i = [\"color\"];\nvar FontStyleIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2i);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1.03791 9.98075C0.934777 9.6583 1.11603 9.37719 1.40005 9.24871C1.68408 9.12022 2.09463 9.13412 2.27071 9.45426C2.85393 10.5147 3.64599 10.7282 4.48665 10.7282C5.52721 10.7282 6.29659 10.2615 6.29659 9.45426C6.29659 8.8047 5.9119 8.46416 4.87134 8.14253L4.15872 7.92181C2.64518 7.44883 1.88842 6.69206 1.88842 5.45601C1.88842 3.79743 3.27583 2.6875 5.24342 2.6875C6.91733 2.6875 7.97409 3.33536 8.43833 4.31065C8.57087 4.58909 8.57614 4.91294 8.22794 5.19114C7.87974 5.46934 7.52351 5.34799 7.23327 5.03839C6.47215 4.22653 5.99545 4.04968 5.25604 4.04968C4.1398 4.04968 3.547 4.63618 3.547 5.27943C3.547 5.86592 3.96322 6.23169 4.94702 6.5344L5.67856 6.76143C7.22994 7.23441 7.97409 7.95964 7.97409 9.17047C7.97409 10.7723 6.69389 12.0903 4.46143 12.0903C2.86612 12.0903 1.40005 11.1131 1.03791 9.98075ZM11.8491 8.77985C10.661 8.39543 10.1649 7.86114 10.1649 6.98805C10.1649 5.86736 11.1636 5.04639 12.6128 5.04639C13.8546 5.04639 14.6629 5.63345 14.9778 6.6346C15.0443 6.84599 14.9593 6.98006 14.7475 7.0491C14.5394 7.11697 14.3176 7.09974 14.238 6.89611C13.9356 6.12273 13.352 5.76311 12.5998 5.76311C11.6467 5.76311 11.0135 6.25178 11.0135 6.91638C11.0135 7.45066 11.3464 7.75038 12.2473 8.04358L12.8348 8.23254C14.062 8.62999 14.5516 9.13821 14.5516 10.0178C14.5516 11.1972 13.481 12.0442 11.9927 12.0442C10.6439 12.0442 9.65644 11.2809 9.41979 10.3361C9.36535 10.1188 9.41192 10.0287 9.70039 9.96184C9.98886 9.89499 10.0714 9.89918 10.1715 10.1369C10.4555 10.8114 11.1531 11.3275 12.0318 11.3275C12.9914 11.3275 13.6834 10.7802 13.6834 10.0634C13.6834 9.53567 13.3961 9.28807 12.4366 8.97532L11.8491 8.77985Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2j = [\"color\"];\nvar FrameIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2j);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M11 1.5C11 1.22386 10.7761 1 10.5 1C10.2239 1 10 1.22386 10 1.5V4H5V1.5C5 1.22386 4.77614 1 4.5 1C4.22386 1 4 1.22386 4 1.5V4H1.5C1.22386 4 1 4.22386 1 4.5C1 4.77614 1.22386 5 1.5 5H4V10H1.5C1.22386 10 1 10.2239 1 10.5C1 10.7761 1.22386 11 1.5 11H4V13.5C4 13.7761 4.22386 14 4.5 14C4.77614 14 5 13.7761 5 13.5V11H10V13.5C10 13.7761 10.2239 14 10.5 14C10.7761 14 11 13.7761 11 13.5V11H13.5C13.7761 11 14 10.7761 14 10.5C14 10.2239 13.7761 10 13.5 10H11V5H13.5C13.7761 5 14 4.77614 14 4.5C14 4.22386 13.7761 4 13.5 4H11V1.5ZM10 10V5H5V10H10Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2k = [\"color\"];\nvar FramerLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2k);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.3825 1.29567C3.46241 1.11432 3.64188 0.997284 3.84005 0.997284H11.5C11.7761 0.997284 12 1.22114 12 1.49728V5.5C12 5.77614 11.7761 6 11.5 6H8.63521L11.5288 9.16247C11.6626 9.3087 11.6974 9.52015 11.6175 9.70154C11.5376 9.88293 11.3582 10 11.16 10H8V13.5C8 13.7022 7.87818 13.8845 7.69134 13.9619C7.5045 14.0393 7.28945 13.9966 7.14645 13.8536L3.14645 9.85355C3.05268 9.75979 3 9.63261 3 9.5V5.5C3 5.22386 3.22386 5 3.5 5H6.36531L3.47105 1.83468C3.33732 1.68844 3.30259 1.47701 3.3825 1.29567ZM7.72032 5L4.97474 1.99728H11V5H7.72032ZM7.27978 6H4V9H7.5H10.0247L7.27978 6ZM4.70711 10L7 12.2929V10H4.70711Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2l = [\"color\"];\nvar GearIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2l);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.07095 0.650238C6.67391 0.650238 6.32977 0.925096 6.24198 1.31231L6.0039 2.36247C5.6249 2.47269 5.26335 2.62363 4.92436 2.81013L4.01335 2.23585C3.67748 2.02413 3.23978 2.07312 2.95903 2.35386L2.35294 2.95996C2.0722 3.2407 2.0232 3.6784 2.23493 4.01427L2.80942 4.92561C2.62307 5.2645 2.47227 5.62594 2.36216 6.00481L1.31209 6.24287C0.924883 6.33065 0.650024 6.6748 0.650024 7.07183V7.92897C0.650024 8.32601 0.924883 8.67015 1.31209 8.75794L2.36228 8.99603C2.47246 9.375 2.62335 9.73652 2.80979 10.0755L2.2354 10.9867C2.02367 11.3225 2.07267 11.7602 2.35341 12.041L2.95951 12.6471C3.24025 12.9278 3.67795 12.9768 4.01382 12.7651L4.92506 12.1907C5.26384 12.377 5.62516 12.5278 6.0039 12.6379L6.24198 13.6881C6.32977 14.0753 6.67391 14.3502 7.07095 14.3502H7.92809C8.32512 14.3502 8.66927 14.0753 8.75705 13.6881L8.99505 12.6383C9.37411 12.5282 9.73573 12.3773 10.0748 12.1909L10.986 12.7653C11.3218 12.977 11.7595 12.928 12.0403 12.6473L12.6464 12.0412C12.9271 11.7604 12.9761 11.3227 12.7644 10.9869L12.1902 10.076C12.3768 9.73688 12.5278 9.37515 12.638 8.99596L13.6879 8.75794C14.0751 8.67015 14.35 8.32601 14.35 7.92897V7.07183C14.35 6.6748 14.0751 6.33065 13.6879 6.24287L12.6381 6.00488C12.528 5.62578 12.3771 5.26414 12.1906 4.92507L12.7648 4.01407C12.9766 3.6782 12.9276 3.2405 12.6468 2.95975L12.0407 2.35366C11.76 2.07292 11.3223 2.02392 10.9864 2.23565L10.0755 2.80989C9.73622 2.62328 9.37437 2.47229 8.99505 2.36209L8.75705 1.31231C8.66927 0.925096 8.32512 0.650238 7.92809 0.650238H7.07095ZM4.92053 3.81251C5.44724 3.44339 6.05665 3.18424 6.71543 3.06839L7.07095 1.50024H7.92809L8.28355 3.06816C8.94267 3.18387 9.5524 3.44302 10.0794 3.81224L11.4397 2.9547L12.0458 3.56079L11.1882 4.92117C11.5573 5.44798 11.8164 6.0575 11.9321 6.71638L13.5 7.07183V7.92897L11.932 8.28444C11.8162 8.94342 11.557 9.55301 11.1878 10.0798L12.0453 11.4402L11.4392 12.0462L10.0787 11.1886C9.55192 11.5576 8.94241 11.8166 8.28355 11.9323L7.92809 13.5002H7.07095L6.71543 11.932C6.0569 11.8162 5.44772 11.5572 4.92116 11.1883L3.56055 12.046L2.95445 11.4399L3.81213 10.0794C3.4431 9.55266 3.18403 8.94326 3.06825 8.2845L1.50002 7.92897V7.07183L3.06818 6.71632C3.18388 6.05765 3.44283 5.44833 3.81171 4.92165L2.95398 3.561L3.56008 2.95491L4.92053 3.81251ZM9.02496 7.50008C9.02496 8.34226 8.34223 9.02499 7.50005 9.02499C6.65786 9.02499 5.97513 8.34226 5.97513 7.50008C5.97513 6.65789 6.65786 5.97516 7.50005 5.97516C8.34223 5.97516 9.02496 6.65789 9.02496 7.50008ZM9.92496 7.50008C9.92496 8.83932 8.83929 9.92499 7.50005 9.92499C6.1608 9.92499 5.07513 8.83932 5.07513 7.50008C5.07513 6.16084 6.1608 5.07516 7.50005 5.07516C8.83929 5.07516 9.92496 6.16084 9.92496 7.50008Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2m = [\"color\"];\nvar GitHubLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2m);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.49933 0.25C3.49635 0.25 0.25 3.49593 0.25 7.50024C0.25 10.703 2.32715 13.4206 5.2081 14.3797C5.57084 14.446 5.70302 14.2222 5.70302 14.0299C5.70302 13.8576 5.69679 13.4019 5.69323 12.797C3.67661 13.235 3.25112 11.825 3.25112 11.825C2.92132 10.9874 2.44599 10.7644 2.44599 10.7644C1.78773 10.3149 2.49584 10.3238 2.49584 10.3238C3.22353 10.375 3.60629 11.0711 3.60629 11.0711C4.25298 12.1788 5.30335 11.8588 5.71638 11.6732C5.78225 11.205 5.96962 10.8854 6.17658 10.7043C4.56675 10.5209 2.87415 9.89918 2.87415 7.12104C2.87415 6.32925 3.15677 5.68257 3.62053 5.17563C3.54576 4.99226 3.29697 4.25521 3.69174 3.25691C3.69174 3.25691 4.30015 3.06196 5.68522 3.99973C6.26337 3.83906 6.8838 3.75895 7.50022 3.75583C8.1162 3.75895 8.73619 3.83906 9.31523 3.99973C10.6994 3.06196 11.3069 3.25691 11.3069 3.25691C11.7026 4.25521 11.4538 4.99226 11.3795 5.17563C11.8441 5.68257 12.1245 6.32925 12.1245 7.12104C12.1245 9.9063 10.4292 10.5192 8.81452 10.6985C9.07444 10.9224 9.30633 11.3648 9.30633 12.0413C9.30633 13.0102 9.29742 13.7922 9.29742 14.0299C9.29742 14.2239 9.42828 14.4496 9.79591 14.3788C12.6746 13.4179 14.75 10.7025 14.75 7.50024C14.75 3.49593 11.5036 0.25 7.49933 0.25Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2n = [\"color\"];\nvar GlobeIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2n);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.49996 1.80002C4.35194 1.80002 1.79996 4.352 1.79996 7.50002C1.79996 10.648 4.35194 13.2 7.49996 13.2C10.648 13.2 13.2 10.648 13.2 7.50002C13.2 4.352 10.648 1.80002 7.49996 1.80002ZM0.899963 7.50002C0.899963 3.85494 3.85488 0.900024 7.49996 0.900024C11.145 0.900024 14.1 3.85494 14.1 7.50002C14.1 11.1451 11.145 14.1 7.49996 14.1C3.85488 14.1 0.899963 11.1451 0.899963 7.50002Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n d: \"M13.4999 7.89998H1.49994V7.09998H13.4999V7.89998Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n d: \"M7.09991 13.5V1.5H7.89991V13.5H7.09991zM10.375 7.49998C10.375 5.32724 9.59364 3.17778 8.06183 1.75656L8.53793 1.24341C10.2396 2.82218 11.075 5.17273 11.075 7.49998 11.075 9.82724 10.2396 12.1778 8.53793 13.7566L8.06183 13.2434C9.59364 11.8222 10.375 9.67273 10.375 7.49998zM3.99969 7.5C3.99969 5.17611 4.80786 2.82678 6.45768 1.24719L6.94177 1.75281C5.4582 3.17323 4.69969 5.32389 4.69969 7.5 4.6997 9.67611 5.45822 11.8268 6.94179 13.2472L6.45769 13.7528C4.80788 12.1732 3.9997 9.8239 3.99969 7.5z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n d: \"M7.49996 3.95801C9.66928 3.95801 11.8753 4.35915 13.3706 5.19448 13.5394 5.28875 13.5998 5.50197 13.5055 5.67073 13.4113 5.83948 13.198 5.89987 13.0293 5.8056 11.6794 5.05155 9.60799 4.65801 7.49996 4.65801 5.39192 4.65801 3.32052 5.05155 1.97064 5.8056 1.80188 5.89987 1.58866 5.83948 1.49439 5.67073 1.40013 5.50197 1.46051 5.28875 1.62927 5.19448 3.12466 4.35915 5.33063 3.95801 7.49996 3.95801zM7.49996 10.85C9.66928 10.85 11.8753 10.4488 13.3706 9.6135 13.5394 9.51924 13.5998 9.30601 13.5055 9.13726 13.4113 8.9685 13.198 8.90812 13.0293 9.00238 11.6794 9.75643 9.60799 10.15 7.49996 10.15 5.39192 10.15 3.32052 9.75643 1.97064 9.00239 1.80188 8.90812 1.58866 8.9685 1.49439 9.13726 1.40013 9.30601 1.46051 9.51924 1.62927 9.6135 3.12466 10.4488 5.33063 10.85 7.49996 10.85z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2o = [\"color\"];\nvar GridIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2o);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M12.5 2H8V7H13V2.5C13 2.22386 12.7761 2 12.5 2ZM13 8H8V13H12.5C12.7761 13 13 12.7761 13 12.5V8ZM7 7V2H2.5C2.22386 2 2 2.22386 2 2.5V7H7ZM2 8V12.5C2 12.7761 2.22386 13 2.5 13H7V8H2ZM2.5 1C1.67157 1 1 1.67157 1 2.5V12.5C1 13.3284 1.67157 14 2.5 14H12.5C13.3284 14 14 13.3284 14 12.5V2.5C14 1.67157 13.3284 1 12.5 1H2.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2p = [\"color\"];\nvar GroupIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2p);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1.44995 0.949951C1.31734 0.949951 1.19016 1.00263 1.0964 1.0964C1.00263 1.19017 0.949951 1.31735 0.949951 1.44995L0.949966 3.44995C0.949969 3.7261 1.17383 3.94995 1.44997 3.94995C1.72611 3.94995 1.94997 3.72609 1.94997 3.44995L1.94995 1.94995H3.44997C3.72611 1.94995 3.94997 1.72609 3.94997 1.44995C3.94997 1.17381 3.72611 0.949951 3.44997 0.949951H1.44995ZM5.94995 0.949951C5.67381 0.949951 5.44995 1.17381 5.44995 1.44995C5.44995 1.72609 5.67381 1.94995 5.94995 1.94995H8.94995C9.22609 1.94995 9.44995 1.72609 9.44995 1.44995C9.44995 1.17381 9.22609 0.949951 8.94995 0.949951H5.94995ZM5.44995 13.45C5.44995 13.1738 5.67381 12.95 5.94995 12.95H8.94995C9.22609 12.95 9.44995 13.1738 9.44995 13.45C9.44995 13.7261 9.22609 13.95 8.94995 13.95H5.94995C5.67381 13.95 5.44995 13.7261 5.44995 13.45ZM1.94995 5.94995C1.94995 5.67381 1.72609 5.44995 1.44995 5.44995C1.17381 5.44995 0.949951 5.67381 0.949951 5.94995V8.94995C0.949951 9.22609 1.17381 9.44995 1.44995 9.44995C1.72609 9.44995 1.94995 9.22609 1.94995 8.94995V5.94995ZM13.45 5.44995C13.7261 5.44995 13.95 5.67381 13.95 5.94995V8.94995C13.95 9.22609 13.7261 9.44995 13.45 9.44995C13.1738 9.44995 12.95 9.22609 12.95 8.94995V5.94995C12.95 5.67381 13.1738 5.44995 13.45 5.44995ZM11.45 0.949951C11.1738 0.949951 10.95 1.17381 10.95 1.44995C10.95 1.72609 11.1738 1.94995 11.45 1.94995H12.9499V3.44995C12.9499 3.72609 13.1738 3.94995 13.4499 3.94995C13.7261 3.94995 13.9499 3.72609 13.9499 3.44995V1.44995C13.9499 1.17381 13.7252 0.949951 13.449 0.949951H11.45ZM1.44995 10.95C1.72609 10.95 1.94995 11.1738 1.94995 11.45V12.95H3.44997C3.72611 12.95 3.94997 13.1738 3.94997 13.45C3.94997 13.7261 3.72611 13.95 3.44997 13.95H1.44995C1.17381 13.95 0.949951 13.7261 0.949951 13.45V11.45C0.949951 11.1738 1.17381 10.95 1.44995 10.95ZM13.95 11.45C13.95 11.1738 13.7261 10.95 13.45 10.95C13.1738 10.9499 12.95 11.1738 12.95 11.4499L12.9491 12.95H11.45C11.1738 12.95 10.95 13.1738 10.95 13.45C10.95 13.7261 11.1738 13.95 11.45 13.95H13.4499C13.7261 13.95 13.9499 13.7261 13.9499 13.45L13.95 11.45Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2q = [\"color\"];\nvar Half1Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2q);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM7.00003 1.84861C4.10114 2.1017 1.82707 4.53515 1.82707 7.49972C1.82707 10.4643 4.10114 12.8977 7.00003 13.1508V1.84861ZM8.00003 13.1508C10.8988 12.8976 13.1727 10.4642 13.1727 7.49972C13.1727 4.53524 10.8988 2.10185 8.00003 1.84864V13.1508Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2r = [\"color\"];\nvar Half2Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2r);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM7.49988 1.82689C4.36688 1.8269 1.82707 4.36672 1.82707 7.49972C1.82707 10.6327 4.36688 13.1725 7.49988 13.1726V1.82689Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2s = [\"color\"];\nvar HamburgerMenuIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2s);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1.5 3C1.22386 3 1 3.22386 1 3.5C1 3.77614 1.22386 4 1.5 4H13.5C13.7761 4 14 3.77614 14 3.5C14 3.22386 13.7761 3 13.5 3H1.5ZM1 7.5C1 7.22386 1.22386 7 1.5 7H13.5C13.7761 7 14 7.22386 14 7.5C14 7.77614 13.7761 8 13.5 8H1.5C1.22386 8 1 7.77614 1 7.5ZM1 11.5C1 11.2239 1.22386 11 1.5 11H13.5C13.7761 11 14 11.2239 14 11.5C14 11.7761 13.7761 12 13.5 12H1.5C1.22386 12 1 11.7761 1 11.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2t = [\"color\"];\nvar HandIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2t);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M6.8113 1.64706C6.62188 2.87918 6.68268 3.88523 6.76848 5.30499C6.78415 5.56426 6.80065 5.83732 6.81661 6.12808C6.83111 6.39208 6.63758 6.62172 6.37495 6.65217C6.11232 6.68262 5.87138 6.50334 5.82509 6.24304L5.74754 5.80698C5.64402 5.16529 5.48355 4.25481 5.17807 3.44741C4.86241 2.61312 4.4486 2.04121 3.93436 1.86044C3.64994 1.76104 3.41901 1.84279 3.25868 2.01052C3.08746 2.18962 2.9976 2.47065 3.0627 2.75399C3.2146 3.34424 3.44627 3.9167 3.69836 4.51802C3.72082 4.57158 3.74346 4.62543 3.76621 4.67954C3.9954 5.22457 4.23619 5.7972 4.41644 6.39081L4.41691 6.39238C4.562 6.87586 4.65646 7.2595 4.73086 7.56165C4.76034 7.68138 4.78667 7.78831 4.81175 7.88359C4.86768 8.09606 4.77836 8.32014 4.59161 8.43588C4.40486 8.55161 4.16445 8.53188 3.99907 8.38725C3.73749 8.15848 3.515 7.92784 3.31817 7.71802C3.27627 7.67335 3.23602 7.63018 3.19705 7.58838C3.04777 7.42826 2.91712 7.28812 2.78334 7.16029C2.45989 6.85122 2.18398 6.68004 1.80585 6.64369L1.80324 6.64343C1.56117 6.61888 1.41402 6.66441 1.31756 6.72627C1.21899 6.78947 1.11988 6.90414 1.03784 7.1123C0.976576 7.28492 1.01515 7.62987 1.1929 7.96911L1.19728 7.97747C1.40086 8.38452 1.74475 8.81587 2.18141 9.29299C2.39739 9.52898 2.62872 9.76849 2.86934 10.0174L2.87966 10.0281C3.11546 10.2721 3.35962 10.5247 3.59713 10.7827C4.4288 11.6863 5.27706 12.7538 5.4627 14H11.5087C11.5636 12.4353 11.8756 11.268 12.2875 10.1346C12.4454 9.70041 12.6121 9.28412 12.7826 8.85829C13.1097 8.04139 13.4509 7.18937 13.7705 6.10824C14.0989 4.99737 14.0097 4.37033 13.8613 4.03984C13.717 3.71858 13.4914 3.61786 13.3816 3.59606C13.1381 3.54774 13.0384 3.60947 12.9698 3.67901C12.867 3.78316 12.7698 3.98273 12.6921 4.30269C12.6166 4.61345 12.5752 4.96517 12.533 5.32501L12.5298 5.35285C12.4924 5.67242 12.4505 6.03016 12.3665 6.30098C12.3383 6.40699 12.2819 6.50407 12.1979 6.57539C12.1382 6.6261 12.0104 6.70818 11.8309 6.69312C11.5424 6.66891 11.3712 6.42143 11.365 6.14783C11.356 5.75454 11.3883 5.35864 11.4074 4.96608C11.4428 4.23646 11.477 3.5337 11.4245 2.8342L11.4242 2.82934C11.3916 2.32997 11.0493 2.00228 10.7007 1.9228C10.5305 1.88401 10.369 1.90601 10.2347 1.9835C10.103 2.05946 9.95535 2.21318 9.8574 2.51394L9.85631 2.51726C9.81525 2.6404 9.77298 2.87753 9.73606 3.2124C9.70044 3.53542 9.67337 3.91279 9.65156 4.29418C9.6329 4.62033 9.61785 4.9584 9.60434 5.26194C9.58728 5.64529 9.57267 5.97357 9.55633 6.1532C9.54983 6.22459 9.52939 6.29493 9.49501 6.35785C9.47356 6.39711 9.36115 6.60947 9.07106 6.61843C8.77917 6.62744 8.63975 6.40057 8.61698 6.35919C8.55634 6.24899 8.55066 6.11807 8.54754 5.99283C8.54474 5.88064 8.54294 5.71798 8.54174 5.54767C8.53935 5.20582 8.53935 4.81919 8.53935 4.70952C8.53935 3.6657 8.53838 2.65372 8.44714 1.64372C8.39183 1.24127 8.06278 1.00455 7.6436 1.00005C7.22399 0.995552 6.87918 1.22704 6.8113 1.64706ZM9.41219 1.3617C9.21469 0.448484 8.39913 0.00810324 7.65433 0.00011154C6.86452 -0.00836308 5.98761 0.465881 5.82365 1.49037L5.82318 1.49334C5.78239 1.7584 5.75229 2.01481 5.7309 2.26652C5.39423 1.67364 4.92622 1.14894 4.2655 0.916859C3.58661 0.679312 2.9492 0.887087 2.53582 1.31952C2.13415 1.73971 1.94438 2.36742 2.09031 2.98746L2.09269 2.99713C2.26478 3.66808 2.52396 4.30316 2.77613 4.90465C2.79814 4.95717 2.8201 5.00941 2.84194 5.06139C3.02139 5.48842 3.19378 5.89866 3.33871 6.31256C2.96404 5.98142 2.51925 5.70796 1.90276 5.6484C1.48865 5.60663 1.10391 5.67536 0.777805 5.88444C0.454239 6.0919 0.240671 6.40405 0.104187 6.75406L0.100868 6.76281C-0.10184 7.31286 0.0663312 7.97157 0.304895 8.42897C0.573704 8.96474 0.996104 9.47904 1.44372 9.96813C1.67046 10.2159 1.91136 10.4652 2.15033 10.7124L2.15682 10.7191C2.39524 10.9658 2.63217 11.2109 2.86134 11.4599C3.80937 12.49 4.50002 13.4632 4.50002 14.5C4.50002 14.7761 4.72388 15 5.00002 15H12C12.2762 15 12.5 14.7761 12.5 14.5C12.5 12.8212 12.8021 11.6462 13.2274 10.4762C13.3653 10.0968 13.5216 9.70579 13.6868 9.29247C14.0238 8.44922 14.398 7.51298 14.7295 6.39175C15.0956 5.15324 15.0559 4.25904 14.7735 3.63017C14.487 2.99208 13.9798 2.6953 13.5763 2.6152C13.1276 2.52614 12.7367 2.60475 12.4268 2.83081C12.4253 2.80773 12.4236 2.78468 12.4219 2.76167C12.3587 1.8105 11.6907 1.12285 10.923 0.947821C10.5346 0.859287 10.1111 0.900393 9.73509 1.11724C9.61852 1.18446 9.51055 1.26623 9.41219 1.3617Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2u = [\"color\"];\nvar HeadingIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2u);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M8.75432 2.0502C8.50579 2.0502 8.30432 2.25167 8.30432 2.5002C8.30432 2.74873 8.50579 2.9502 8.75432 2.9502H9.94997V7.05004H5.04997V2.9502H6.25432C6.50285 2.9502 6.70432 2.74873 6.70432 2.5002C6.70432 2.25167 6.50285 2.0502 6.25432 2.0502H2.75432C2.50579 2.0502 2.30432 2.25167 2.30432 2.5002C2.30432 2.74873 2.50579 2.9502 2.75432 2.9502H3.94997V12.0502H2.75432C2.50579 12.0502 2.30432 12.2517 2.30432 12.5002C2.30432 12.7487 2.50579 12.9502 2.75432 12.9502H6.25432C6.50285 12.9502 6.70432 12.7487 6.70432 12.5002C6.70432 12.2517 6.50285 12.0502 6.25432 12.0502H5.04997V7.95004H9.94997V12.0502H8.75432C8.50579 12.0502 8.30432 12.2517 8.30432 12.5002C8.30432 12.7487 8.50579 12.9502 8.75432 12.9502H12.2543C12.5028 12.9502 12.7043 12.7487 12.7043 12.5002C12.7043 12.2517 12.5028 12.0502 12.2543 12.0502H11.05V2.9502H12.2543C12.5028 2.9502 12.7043 2.74873 12.7043 2.5002C12.7043 2.25167 12.5028 2.0502 12.2543 2.0502H8.75432Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2v = [\"color\"];\nvar HeartIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2v);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M4.89346 2.35248C3.49195 2.35248 2.35248 3.49359 2.35248 4.90532C2.35248 6.38164 3.20954 7.9168 4.37255 9.33522C5.39396 10.581 6.59464 11.6702 7.50002 12.4778C8.4054 11.6702 9.60608 10.581 10.6275 9.33522C11.7905 7.9168 12.6476 6.38164 12.6476 4.90532C12.6476 3.49359 11.5081 2.35248 10.1066 2.35248C9.27059 2.35248 8.81894 2.64323 8.5397 2.95843C8.27877 3.25295 8.14623 3.58566 8.02501 3.88993C8.00391 3.9429 7.98315 3.99501 7.96211 4.04591C7.88482 4.23294 7.7024 4.35494 7.50002 4.35494C7.29765 4.35494 7.11523 4.23295 7.03793 4.04592C7.01689 3.99501 6.99612 3.94289 6.97502 3.8899C6.8538 3.58564 6.72126 3.25294 6.46034 2.95843C6.18109 2.64323 5.72945 2.35248 4.89346 2.35248ZM1.35248 4.90532C1.35248 2.94498 2.936 1.35248 4.89346 1.35248C6.0084 1.35248 6.73504 1.76049 7.20884 2.2953C7.32062 2.42147 7.41686 2.55382 7.50002 2.68545C7.58318 2.55382 7.67941 2.42147 7.79119 2.2953C8.265 1.76049 8.99164 1.35248 10.1066 1.35248C12.064 1.35248 13.6476 2.94498 13.6476 4.90532C13.6476 6.74041 12.6013 8.50508 11.4008 9.96927C10.2636 11.3562 8.92194 12.5508 8.00601 13.3664C7.94645 13.4194 7.88869 13.4709 7.83291 13.5206C7.64324 13.6899 7.3568 13.6899 7.16713 13.5206C7.11135 13.4709 7.05359 13.4194 6.99403 13.3664C6.0781 12.5508 4.73641 11.3562 3.59926 9.96927C2.39872 8.50508 1.35248 6.74041 1.35248 4.90532Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2w = [\"color\"];\nvar HeartFilledIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2w);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1.35248 4.90532C1.35248 2.94498 2.936 1.35248 4.89346 1.35248C6.25769 1.35248 6.86058 1.92336 7.50002 2.93545C8.13946 1.92336 8.74235 1.35248 10.1066 1.35248C12.064 1.35248 13.6476 2.94498 13.6476 4.90532C13.6476 6.74041 12.6013 8.50508 11.4008 9.96927C10.2636 11.3562 8.92194 12.5508 8.00601 13.3664C7.94645 13.4194 7.88869 13.4709 7.83291 13.5206C7.64324 13.6899 7.3568 13.6899 7.16713 13.5206C7.11135 13.4709 7.05359 13.4194 6.99403 13.3664C6.0781 12.5508 4.73641 11.3562 3.59926 9.96927C2.39872 8.50508 1.35248 6.74041 1.35248 4.90532Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2x = [\"color\"];\nvar HeightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2x);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.1813 1.68179C7.35704 1.50605 7.64196 1.50605 7.8177 1.68179L10.3177 4.18179C10.4934 4.35753 10.4934 4.64245 10.3177 4.81819C10.142 4.99392 9.85704 4.99392 9.6813 4.81819L7.9495 3.08638L7.9495 11.9136L9.6813 10.1818C9.85704 10.0061 10.142 10.0061 10.3177 10.1818C10.4934 10.3575 10.4934 10.6424 10.3177 10.8182L7.8177 13.3182C7.73331 13.4026 7.61885 13.45 7.4995 13.45C7.38015 13.45 7.26569 13.4026 7.1813 13.3182L4.6813 10.8182C4.50557 10.6424 4.50557 10.3575 4.6813 10.1818C4.85704 10.0061 5.14196 10.0061 5.3177 10.1818L7.0495 11.9136L7.0495 3.08638L5.3177 4.81819C5.14196 4.99392 4.85704 4.99392 4.6813 4.81819C4.50557 4.64245 4.50557 4.35753 4.6813 4.18179L7.1813 1.68179Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2y = [\"color\"];\nvar HobbyKnifeIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2y);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M12.3536 13.3536C12.1583 13.5488 11.8417 13.5488 11.6465 13.3536L6.39645 8.10355C6.36478 8.07188 6.33824 8.03702 6.31685 8H5.00002C4.78719 8 4.59769 7.86528 4.52777 7.66426L2.12777 0.764277C2.05268 0.548387 2.13355 0.309061 2.3242 0.182972C2.51486 0.0568819 2.76674 0.0761337 2.93602 0.229734L8.336 5.12972C8.44044 5.22449 8.50001 5.35897 8.50001 5.5V5.81684C8.53702 5.83824 8.57189 5.86478 8.60356 5.89645L13.8536 11.1464C14.0488 11.3417 14.0488 11.6583 13.8536 11.8536L12.3536 13.3536ZM8.25 6.95711L7.45711 7.75L12 12.2929L12.7929 11.5L8.25 6.95711ZM3.71669 2.28845L5.35549 7H6.2929L7.50001 5.79289V5.72146L3.71669 2.28845Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2z = [\"color\"];\nvar HomeIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2z);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.07926 0.222253C7.31275 -0.007434 7.6873 -0.007434 7.92079 0.222253L14.6708 6.86227C14.907 7.09465 14.9101 7.47453 14.6778 7.71076C14.4454 7.947 14.0655 7.95012 13.8293 7.71773L13 6.90201V12.5C13 12.7761 12.7762 13 12.5 13H2.50002C2.22388 13 2.00002 12.7761 2.00002 12.5V6.90201L1.17079 7.71773C0.934558 7.95012 0.554672 7.947 0.32229 7.71076C0.0899079 7.47453 0.0930283 7.09465 0.32926 6.86227L7.07926 0.222253ZM7.50002 1.49163L12 5.91831V12H10V8.49999C10 8.22385 9.77617 7.99999 9.50002 7.99999H6.50002C6.22388 7.99999 6.00002 8.22385 6.00002 8.49999V12H3.00002V5.91831L7.50002 1.49163ZM7.00002 12H9.00002V8.99999H7.00002V12Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2A = [\"color\"];\nvar IconJarLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2A);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.5 0.0032959C6.80473 0.0032959 6.24953 0.281106 6.25 0.749995C6.25 0.997258 6.42446 1.12014 6.57687 1.22749C6.69507 1.31074 6.8 1.38465 6.8 1.5C6.8 1.7071 6.06224 1.74264 5.19789 1.78427C3.97553 1.84314 2.5 1.91421 2.5 2.5C2.5 2.77614 2.72386 3 3 3H12C12.2761 3 12.5 2.77614 12.5 2.5C12.5 1.91421 11.0245 1.84314 9.80211 1.78427C8.93776 1.74264 8.2 1.7071 8.2 1.5C8.2 1.38465 8.30493 1.31074 8.42313 1.22749C8.57554 1.12014 8.75 0.997258 8.75 0.749995C8.75047 0.281106 8.19527 0.0032959 7.5 0.0032959ZM2.89451 6.12266C2.25806 6.52471 1.90417 7.31118 2.02473 8.0556L2.83588 12.4772C3.00993 13.3562 3.7629 14 4.66061 14H10.3373C11.2354 14 11.9884 13.3562 12.1625 12.4772L12.9736 8.05607C13.089 7.32358 12.8284 6.53276 12.1331 6.09373C11.7283 5.83013 11.6412 5.33231 12.1331 5.12796C12.8284 4.86435 12.6948 4 12 4H10.3001H6.80005H2.99996C2.30469 4 2.19878 4.89328 2.89451 5.15689C3.38642 5.33231 3.29939 5.83013 2.89451 6.12266ZM8.20006 6.25C8.20006 5.81769 8.08572 5.37615 7.90635 5L4.11093 5C4.20626 5.21312 4.2419 5.43889 4.22904 5.65521C4.19522 6.22412 3.84587 6.66899 3.48016 6.93322L3.45492 6.95146L3.42858 6.9681C3.13407 7.15414 2.95801 7.53989 3.01058 7.88749L3.81797 12.2886C3.90513 12.7154 4.26148 13 4.66061 13H10.3373C10.737 13 11.0932 12.7153 11.1804 12.2886L11.9874 7.8898C12.048 7.48247 11.8954 7.12631 11.5992 6.93927L11.5875 6.93184L11.5875 6.93176C11.1947 6.67602 10.8331 6.22785 10.7986 5.64798C10.7846 5.412 10.8264 5.19397 10.9112 5H9.05517C9.01987 5.14611 9.00006 5.31201 9.00006 5.5C9.00006 5.9745 9.21679 6.37127 9.44367 6.78662C9.69284 7.24278 9.95425 7.72136 9.95425 8.34993C9.95425 9.2698 9.49868 9.84205 8.62189 9.84205C8.13206 9.84205 7.57818 9.46097 7.57818 8.75781C7.57818 8.35279 7.71558 8.01646 7.86121 7.65998C8.0254 7.25806 8.20006 6.83051 8.20006 6.25Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2B = [\"color\"];\nvar IdCardIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2B);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M14 11.0001V4.00006L1 4.00006L1 11.0001H14ZM15 4.00006V11.0001C15 11.5523 14.5523 12.0001 14 12.0001H1C0.447715 12.0001 0 11.5523 0 11.0001V4.00006C0 3.44778 0.447715 3.00006 1 3.00006H14C14.5523 3.00006 15 3.44778 15 4.00006ZM2 5.25C2 5.11193 2.11193 5 2.25 5H5.75C5.88807 5 6 5.11193 6 5.25V9.75C6 9.88807 5.88807 10 5.75 10H2.25C2.11193 10 2 9.88807 2 9.75V5.25ZM7.5 7C7.22386 7 7 7.22386 7 7.5C7 7.77614 7.22386 8 7.5 8H10.5C10.7761 8 11 7.77614 11 7.5C11 7.22386 10.7761 7 10.5 7H7.5ZM7 9.5C7 9.22386 7.22386 9 7.5 9H12.5C12.7761 9 13 9.22386 13 9.5C13 9.77614 12.7761 10 12.5 10H7.5C7.22386 10 7 9.77614 7 9.5ZM7.5 5C7.22386 5 7 5.22386 7 5.5C7 5.77614 7.22386 6 7.5 6H11.5C11.7761 6 12 5.77614 12 5.5C12 5.22386 11.7761 5 11.5 5H7.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2C = [\"color\"];\nvar ImageIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2C);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2.5 1H12.5C13.3284 1 14 1.67157 14 2.5V12.5C14 13.3284 13.3284 14 12.5 14H2.5C1.67157 14 1 13.3284 1 12.5V2.5C1 1.67157 1.67157 1 2.5 1ZM2.5 2C2.22386 2 2 2.22386 2 2.5V8.3636L3.6818 6.6818C3.76809 6.59551 3.88572 6.54797 4.00774 6.55007C4.12975 6.55216 4.24568 6.60372 4.32895 6.69293L7.87355 10.4901L10.6818 7.6818C10.8575 7.50607 11.1425 7.50607 11.3182 7.6818L13 9.3636V2.5C13 2.22386 12.7761 2 12.5 2H2.5ZM2 12.5V9.6364L3.98887 7.64753L7.5311 11.4421L8.94113 13H2.5C2.22386 13 2 12.7761 2 12.5ZM12.5 13H10.155L8.48336 11.153L11 8.6364L13 10.6364V12.5C13 12.7761 12.7761 13 12.5 13ZM6.64922 5.5C6.64922 5.03013 7.03013 4.64922 7.5 4.64922C7.96987 4.64922 8.35078 5.03013 8.35078 5.5C8.35078 5.96987 7.96987 6.35078 7.5 6.35078C7.03013 6.35078 6.64922 5.96987 6.64922 5.5ZM7.5 3.74922C6.53307 3.74922 5.74922 4.53307 5.74922 5.5C5.74922 6.46693 6.53307 7.25078 7.5 7.25078C8.46693 7.25078 9.25078 6.46693 9.25078 5.5C9.25078 4.53307 8.46693 3.74922 7.5 3.74922Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2D = [\"color\"];\nvar InfoCircledIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2D);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM1.82707 7.49972C1.82707 4.36671 4.36689 1.82689 7.49991 1.82689C10.6329 1.82689 13.1727 4.36671 13.1727 7.49972C13.1727 10.6327 10.6329 13.1726 7.49991 13.1726C4.36689 13.1726 1.82707 10.6327 1.82707 7.49972ZM8.24992 4.49999C8.24992 4.9142 7.91413 5.24999 7.49992 5.24999C7.08571 5.24999 6.74992 4.9142 6.74992 4.49999C6.74992 4.08577 7.08571 3.74999 7.49992 3.74999C7.91413 3.74999 8.24992 4.08577 8.24992 4.49999ZM6.00003 5.99999H6.50003H7.50003C7.77618 5.99999 8.00003 6.22384 8.00003 6.49999V9.99999H8.50003H9.00003V11H8.50003H7.50003H6.50003H6.00003V9.99999H6.50003H7.00003V6.99999H6.50003H6.00003V5.99999Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2E = [\"color\"];\nvar InputIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2E);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M6.5 1C6.22386 1 6 1.22386 6 1.5C6 1.77614 6.22386 2 6.5 2C7.12671 2 7.45718 2.20028 7.65563 2.47812C7.8781 2.78957 8 3.28837 8 4V11C8 11.7116 7.8781 12.2104 7.65563 12.5219C7.45718 12.7997 7.12671 13 6.5 13C6.22386 13 6 13.2239 6 13.5C6 13.7761 6.22386 14 6.5 14C7.37329 14 8.04282 13.7003 8.46937 13.1031C8.47976 13.0886 8.48997 13.0739 8.5 13.0591C8.51003 13.0739 8.52024 13.0886 8.53063 13.1031C8.95718 13.7003 9.62671 14 10.5 14C10.7761 14 11 13.7761 11 13.5C11 13.2239 10.7761 13 10.5 13C9.87329 13 9.54282 12.7997 9.34437 12.5219C9.1219 12.2104 9 11.7116 9 11V4C9 3.28837 9.1219 2.78957 9.34437 2.47812C9.54282 2.20028 9.87329 2 10.5 2C10.7761 2 11 1.77614 11 1.5C11 1.22386 10.7761 1 10.5 1C9.62671 1 8.95718 1.29972 8.53063 1.89688C8.52024 1.91143 8.51003 1.92611 8.5 1.9409C8.48997 1.92611 8.47976 1.91143 8.46937 1.89688C8.04282 1.29972 7.37329 1 6.5 1ZM14 5H11V4H14C14.5523 4 15 4.44772 15 5V10C15 10.5523 14.5523 11 14 11H11V10H14V5ZM6 4V5H1L1 10H6V11H1C0.447715 11 0 10.5523 0 10V5C0 4.44772 0.447715 4 1 4H6Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2F = [\"color\"];\nvar InstagramLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2F);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12.9091 12.909C13.2365 12.5817 13.4918 12.1895 13.6588 11.7577C13.8195 11.3443 13.9294 10.8718 13.961 10.1799C13.9926 9.48665 14.0001 9.26529 14.0001 7.50001C14.0001 5.73473 13.9926 5.51328 13.961 4.82008C13.9294 4.12821 13.8195 3.65573 13.6588 3.24228C13.4956 2.80857 13.2398 2.41567 12.9091 2.091C12.5844 1.76028 12.1915 1.50437 11.7578 1.34113C11.3443 1.18056 10.8718 1.0707 10.1799 1.03924C9.48675 1.00748 9.26537 1 7.50006 1C5.73476 1 5.51333 1.00748 4.82014 1.03912C4.12826 1.0707 3.65578 1.18056 3.24233 1.34125C2.80862 1.50447 2.41573 1.76032 2.09105 2.09098C1.76032 2.41563 1.5044 2.80852 1.34113 3.24225C1.18056 3.65573 1.0707 4.12821 1.03924 4.82008C1.00748 5.51328 1 5.73471 1 7.50001C1 9.26532 1.00748 9.48675 1.03924 10.1799C1.07083 10.8718 1.18069 11.3443 1.34138 11.7577C1.5046 12.1915 1.76045 12.5843 2.09111 12.909C2.41578 13.2397 2.80867 13.4955 3.24238 13.6587C3.65586 13.8194 4.12834 13.9293 4.82019 13.9609C5.51348 13.9925 5.73483 14 7.50012 14C9.2654 14 9.48685 13.9925 10.18 13.9609C10.8719 13.9293 11.3444 13.8194 11.7578 13.6587C12.1896 13.4917 12.5818 13.2364 12.9091 12.909ZM1.99949 6.73496C1.99974 6.94524 2.00005 7.19543 2.00005 7.50002C2.00005 7.80461 1.99974 8.0548 1.99949 8.26507C1.99849 9.08596 1.99824 9.29856 2.01963 9.7655C2.04625 10.3509 2.07823 10.7811 2.17588 11.1053C2.26976 11.417 2.37505 11.7342 2.7188 12.1171C3.06255 12.4999 3.39411 12.6733 3.81645 12.8007C4.23879 12.928 4.7696 12.9554 5.23052 12.9764C5.75332 13.0003 5.96052 13.0002 7.05714 12.9999L7.50006 12.9999C7.79304 12.9999 8.03569 13.0001 8.2409 13.0004C9.08195 13.0013 9.29425 13.0015 9.76575 12.9799C10.3512 12.9533 10.7814 12.9213 11.1056 12.8237C11.4173 12.7298 11.7345 12.6245 12.1173 12.2807C12.5001 11.937 12.6735 11.6054 12.8009 11.1831C12.9283 10.7607 12.9557 10.2299 12.9767 9.76902C13.0005 9.24689 13.0004 9.04027 13.0002 7.94749V7.94738L13.0001 7.50039L13.0001 7.05747C13.0004 5.96085 13.0005 5.75365 12.9766 5.23085C12.9556 4.76993 12.9282 4.23912 12.8009 3.81678C12.6735 3.39445 12.5001 3.06288 12.1173 2.71913C11.7345 2.37538 11.4172 2.27009 11.1056 2.17621C10.7813 2.07856 10.3511 2.04658 9.76571 2.01996C9.29421 1.99836 9.08194 1.99859 8.24092 1.99951H8.24092C8.0357 1.99974 7.79305 2.00001 7.50006 2.00001L7.05704 1.99993C5.96051 1.99964 5.75331 1.99958 5.23052 2.02343C4.7696 2.04446 4.23879 2.07183 3.81645 2.19921C3.39411 2.32659 3.06255 2.49999 2.7188 2.88281C2.37505 3.26562 2.26976 3.58286 2.17588 3.89453C2.07823 4.21874 2.04625 4.64894 2.01963 5.23437C1.99824 5.70131 1.99849 5.91401 1.99949 6.73496ZM7.49996 5.25015C6.25741 5.25015 5.25012 6.25744 5.25012 7.49999C5.25012 8.74254 6.25741 9.74983 7.49996 9.74983C8.74251 9.74983 9.7498 8.74254 9.7498 7.49999C9.7498 6.25744 8.74251 5.25015 7.49996 5.25015ZM4.25012 7.49999C4.25012 5.70515 5.70512 4.25015 7.49996 4.25015C9.2948 4.25015 10.7498 5.70515 10.7498 7.49999C10.7498 9.29483 9.2948 10.7498 7.49996 10.7498C5.70512 10.7498 4.25012 9.29483 4.25012 7.49999ZM10.9697 4.7803C11.3839 4.7803 11.7197 4.44452 11.7197 4.0303C11.7197 3.61609 11.3839 3.2803 10.9697 3.2803C10.5555 3.2803 10.2197 3.61609 10.2197 4.0303C10.2197 4.44452 10.5555 4.7803 10.9697 4.7803Z\",\n fill: color\n }));\n});\n\nvar _excluded$2G = [\"color\"];\nvar KeyboardIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2G);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M13.5 4H1.5C1.22386 4 1 4.22386 1 4.5V10.5C1 10.7761 1.22386 11 1.5 11H13.5C13.7761 11 14 10.7761 14 10.5V4.5C14 4.22386 13.7761 4 13.5 4ZM1.5 3C0.671573 3 0 3.67157 0 4.5V10.5C0 11.3284 0.671573 12 1.5 12H13.5C14.3284 12 15 11.3284 15 10.5V4.5C15 3.67157 14.3284 3 13.5 3H1.5ZM2 5H3V6H2V5ZM5 5H4V6H5V5ZM6 5H7V6H6V5ZM9 5H8V6H9V5ZM10 5H11V6H10V5ZM13 5H12V6H13V5ZM11 7H12V8H11V7ZM13 9H12V10H13V9ZM9 7H10V8H9V7ZM8 7H7V8H8V7ZM5 7H6V8H5V7ZM4 7H3V8H4V7ZM2 9H3V10H2V9ZM11 9H4V10H11V9Z\",\n fill: color\n }));\n});\n\nvar _excluded$2H = [\"color\"];\nvar LapTimerIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2H);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M5.49998 0.5C5.49998 0.223858 5.72383 0 5.99998 0H7.49998H8.99998C9.27612 0 9.49998 0.223858 9.49998 0.5C9.49998 0.776142 9.27612 1 8.99998 1H7.99998V2.11922C9.09832 2.20409 10.119 2.56622 10.992 3.13572C11.0116 3.10851 11.0336 3.08252 11.058 3.05806L12.058 2.05806C12.3021 1.81398 12.6978 1.81398 12.9419 2.05806C13.186 2.30214 13.186 2.69786 12.9419 2.94194L11.967 3.91682C13.1595 5.07925 13.9 6.70314 13.9 8.49998C13.9 12.0346 11.0346 14.9 7.49998 14.9C3.96535 14.9 1.09998 12.0346 1.09998 8.49998C1.09998 5.13361 3.69904 2.3743 6.99998 2.11922V1H5.99998C5.72383 1 5.49998 0.776142 5.49998 0.5ZM2.09998 8.49998C2.09998 5.51764 4.51764 3.09998 7.49998 3.09998C10.4823 3.09998 12.9 5.51764 12.9 8.49998C12.9 11.4823 10.4823 13.9 7.49998 13.9C4.51764 13.9 2.09998 11.4823 2.09998 8.49998ZM7.49998 8.49998V4.09998C5.06992 4.09998 3.09998 6.06992 3.09998 8.49998C3.09998 10.93 5.06992 12.9 7.49998 12.9C8.715 12.9 9.815 12.4075 10.6112 11.6112L7.49998 8.49998Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2I = [\"color\"];\nvar LaptopIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2I);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2 4.25C2 4.11193 2.11193 4 2.25 4H12.75C12.8881 4 13 4.11193 13 4.25V11.5H2V4.25ZM2.25 3C1.55964 3 1 3.55964 1 4.25V12H0V12.5C0 12.7761 0.223858 13 0.5 13H14.5C14.7761 13 15 12.7761 15 12.5V12H14V4.25C14 3.55964 13.4404 3 12.75 3H2.25Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2J = [\"color\"];\nvar LayersIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2J);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.75432 0.819537C7.59742 0.726821 7.4025 0.726821 7.24559 0.819537L1.74559 4.06954C1.59336 4.15949 1.49996 4.32317 1.49996 4.5C1.49996 4.67683 1.59336 4.84051 1.74559 4.93046L7.24559 8.18046C7.4025 8.27318 7.59742 8.27318 7.75432 8.18046L13.2543 4.93046C13.4066 4.84051 13.5 4.67683 13.5 4.5C13.5 4.32317 13.4066 4.15949 13.2543 4.06954L7.75432 0.819537ZM7.49996 7.16923L2.9828 4.5L7.49996 1.83077L12.0171 4.5L7.49996 7.16923ZM1.5695 7.49564C1.70998 7.2579 2.01659 7.17906 2.25432 7.31954L7.49996 10.4192L12.7456 7.31954C12.9833 7.17906 13.2899 7.2579 13.4304 7.49564C13.5709 7.73337 13.4921 8.03998 13.2543 8.18046L7.75432 11.4305C7.59742 11.5232 7.4025 11.5232 7.24559 11.4305L1.74559 8.18046C1.50786 8.03998 1.42901 7.73337 1.5695 7.49564ZM1.56949 10.4956C1.70998 10.2579 2.01658 10.1791 2.25432 10.3195L7.49996 13.4192L12.7456 10.3195C12.9833 10.1791 13.2899 10.2579 13.4304 10.4956C13.5709 10.7334 13.4921 11.04 13.2543 11.1805L7.75432 14.4305C7.59742 14.5232 7.4025 14.5232 7.24559 14.4305L1.74559 11.1805C1.50785 11.04 1.42901 10.7334 1.56949 10.4956Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2K = [\"color\"];\nvar LayoutIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2K);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M9 2H6V13H9V2ZM10 2V13H12.5C12.7761 13 13 12.7761 13 12.5V2.5C13 2.22386 12.7761 2 12.5 2H10ZM2.5 2H5V13H2.5C2.22386 13 2 12.7761 2 12.5V2.5C2 2.22386 2.22386 2 2.5 2ZM2.5 1C1.67157 1 1 1.67157 1 2.5V12.5C1 13.3284 1.67157 14 2.5 14H12.5C13.3284 14 14 13.3284 14 12.5V2.5C14 1.67157 13.3284 1 12.5 1H2.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2L = [\"color\"];\nvar LetterCaseCapitalizeIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2L);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.68979 2.75C3.89667 2.74979 4.08232 2.87701 4.15679 3.07003L7.36662 11.39C7.46602 11.6477 7.33774 11.9371 7.0801 12.0365C6.82247 12.1359 6.53304 12.0076 6.43365 11.75L5.3825 9.02537H2.01133L0.966992 11.749C0.868128 12.0068 0.578964 12.1357 0.321126 12.0369C0.0632878 11.938 -0.0655864 11.6488 0.0332774 11.391L3.22344 3.07099C3.29751 2.87782 3.4829 2.75021 3.68979 2.75ZM3.69174 4.64284L5.05458 8.17537H2.33724L3.69174 4.64284ZM10.8989 5.20703C9.25818 5.20703 8.00915 6.68569 8.00915 8.60972C8.00915 10.6337 9.35818 12.0124 10.8989 12.0124C11.7214 12.0124 12.5744 11.6692 13.1543 11.0219V11.53C13.1543 11.7785 13.3557 11.98 13.6043 11.98C13.8528 11.98 14.0543 11.7785 14.0543 11.53V5.72C14.0543 5.47147 13.8528 5.27 13.6043 5.27C13.3557 5.27 13.1543 5.47147 13.1543 5.72V6.22317C12.6054 5.60095 11.7924 5.20703 10.8989 5.20703ZM13.1543 9.79823V7.30195C12.7639 6.58101 11.9414 6.05757 11.0868 6.05757C10.1088 6.05757 9.03503 6.96581 9.03503 8.60955C9.03503 10.1533 10.0088 11.1615 11.0868 11.1615C11.9701 11.1615 12.7719 10.4952 13.1543 9.79823Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2M = [\"color\"];\nvar LetterCaseLowercaseIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2M);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.69899 5.20703C2.05823 5.20703 0.809204 6.68569 0.809204 8.60972C0.809204 10.6337 2.15823 12.0124 3.69899 12.0124C4.52126 12.0124 5.37402 11.6693 5.9539 11.0223V11.53C5.9539 11.7785 6.15537 11.98 6.4039 11.98C6.65243 11.98 6.8539 11.7785 6.8539 11.53V5.72001C6.8539 5.47149 6.65243 5.27001 6.4039 5.27001C6.15537 5.27001 5.9539 5.47149 5.9539 5.72001V6.22269C5.40506 5.60075 4.59218 5.20703 3.69899 5.20703ZM5.9539 9.799V7.30117C5.56339 6.58064 4.74118 6.05757 3.8868 6.05757C2.9089 6.05757 1.83508 6.96581 1.83508 8.60955C1.83508 10.1533 2.80889 11.1615 3.8868 11.1615C4.76984 11.1615 5.57141 10.4957 5.9539 9.799ZM10.799 5.20703C9.15823 5.20703 7.9092 6.68569 7.9092 8.60972C7.9092 10.6337 9.25823 12.0124 10.799 12.0124C11.6215 12.0124 12.4744 11.6692 13.0543 11.0218V11.53C13.0543 11.7785 13.2558 11.98 13.5043 11.98C13.7529 11.98 13.9543 11.7785 13.9543 11.53V5.72C13.9543 5.47147 13.7529 5.27 13.5043 5.27C13.2558 5.27 13.0543 5.47147 13.0543 5.72V6.22318C12.5055 5.60095 11.6924 5.20703 10.799 5.20703ZM13.0543 9.79822V7.30196C12.664 6.58102 11.8415 6.05757 10.9868 6.05757C10.0089 6.05757 8.93508 6.96581 8.93508 8.60955C8.93508 10.1533 9.90889 11.1615 10.9868 11.1615C11.8702 11.1615 12.672 10.4952 13.0543 9.79822Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2N = [\"color\"];\nvar LetterCaseToggleIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2N);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M11.2895 2.75C11.4964 2.74979 11.6821 2.87701 11.7565 3.07003L14.9664 11.39C15.0657 11.6477 14.9375 11.9371 14.6798 12.0365C14.4222 12.1359 14.1328 12.0076 14.0334 11.75L12.9822 9.02537H9.61106L8.56672 11.749C8.46786 12.0068 8.1787 12.1357 7.92086 12.0369C7.66302 11.938 7.53415 11.6488 7.63301 11.391L10.8232 3.07099C10.8972 2.87782 11.0826 2.75021 11.2895 2.75ZM11.2915 4.64284L12.6543 8.17537H9.93698L11.2915 4.64284ZM2.89895 5.20703C1.25818 5.20703 0.00915527 6.68569 0.00915527 8.60972C0.00915527 10.6337 1.35818 12.0124 2.89895 12.0124C3.72141 12.0124 4.57438 11.6692 5.15427 11.0219V11.53C5.15427 11.7785 5.35574 11.98 5.60427 11.98C5.8528 11.98 6.05427 11.7785 6.05427 11.53V5.72C6.05427 5.47147 5.8528 5.27 5.60427 5.27C5.35574 5.27 5.15427 5.47147 5.15427 5.72V6.22317C4.60543 5.60095 3.79236 5.20703 2.89895 5.20703ZM5.15427 9.79823V7.30195C4.76393 6.58101 3.94144 6.05757 3.08675 6.05757C2.10885 6.05757 1.03503 6.96581 1.03503 8.60955C1.03503 10.1533 2.00885 11.1615 3.08675 11.1615C3.97011 11.1615 4.77195 10.4952 5.15427 9.79823Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2O = [\"color\"];\nvar LetterCaseUppercaseIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2O);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.6255 2.75C3.83478 2.75 4.02192 2.88034 4.09448 3.07664L7.16985 11.3962C7.2656 11.6552 7.13324 11.9428 6.87423 12.0386C6.61522 12.1343 6.32763 12.002 6.23188 11.7429L5.22387 9.01603H2.02712L1.01911 11.7429C0.923362 12.002 0.635774 12.1343 0.376762 12.0386C0.117749 11.9428 -0.0146052 11.6552 0.0811401 11.3962L3.15651 3.07664C3.22908 2.88034 3.41621 2.75 3.6255 2.75ZM3.6255 4.69207L4.90966 8.16603H2.34133L3.6255 4.69207ZM11.3719 2.75C11.5811 2.75 11.7683 2.88034 11.8408 3.07664L14.9162 11.3962C15.012 11.6552 14.8796 11.9428 14.6206 12.0386C14.3616 12.1343 14.074 12.002 13.9782 11.7429L12.9702 9.01603H9.77348L8.76547 11.7429C8.66972 12.002 8.38213 12.1343 8.12312 12.0386C7.86411 11.9428 7.73175 11.6552 7.8275 11.3962L10.9029 3.07664C10.9754 2.88034 11.1626 2.75 11.3719 2.75ZM11.3719 4.69207L12.656 8.16603H10.0877L11.3719 4.69207Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2P = [\"color\"];\nvar LetterSpacingIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2P);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M4.55293 0.999969C4.75295 0.999969 4.93372 1.11917 5.0125 1.30301L8.01106 8.29982C8.11984 8.55363 8.00226 8.84757 7.74844 8.95635C7.49463 9.06512 7.20069 8.94754 7.09191 8.69373L6.11613 6.41685H2.98973L2.01395 8.69373C1.90517 8.94754 1.61123 9.06512 1.35742 8.95635C1.1036 8.84757 0.986023 8.55363 1.0948 8.29982L4.09336 1.30301C4.17214 1.11917 4.35291 0.999969 4.55293 0.999969ZM4.55293 2.76929L5.75186 5.56685H3.354L4.55293 2.76929ZM11.0562 9.00214C11.2617 9.00214 11.4463 8.87633 11.5215 8.68502L14.2733 1.68299C14.3743 1.42598 14.2478 1.13575 13.9908 1.03475C13.7338 0.933747 13.4436 1.06021 13.3426 1.31722L11.0562 7.13514L8.76973 1.31722C8.66873 1.06021 8.3785 0.933747 8.1215 1.03475C7.86449 1.13575 7.73802 1.42598 7.83902 1.68299L10.5908 8.68502C10.666 8.87633 10.8506 9.00214 11.0562 9.00214ZM14.9537 12.4999C14.9537 12.606 14.9115 12.7077 14.8365 12.7828L12.8365 14.7828C12.6803 14.939 12.4271 14.939 12.2708 14.7828C12.1146 14.6265 12.1146 14.3733 12.2708 14.2171L13.588 12.8999H1.51937L2.83653 14.2171C2.99274 14.3733 2.99274 14.6265 2.83653 14.7828C2.68032 14.939 2.42705 14.939 2.27084 14.7828L0.270843 12.7828C0.195828 12.7077 0.153687 12.606 0.153687 12.4999C0.153687 12.3938 0.195828 12.2921 0.270843 12.2171L2.27084 10.2171C2.42705 10.0609 2.68032 10.0609 2.83653 10.2171C2.99274 10.3733 2.99274 10.6265 2.83653 10.7828L1.51937 12.0999L13.588 12.0999L12.2708 10.7828C12.1146 10.6265 12.1146 10.3733 12.2708 10.2171C12.4271 10.0609 12.6803 10.0609 12.8365 10.2171L14.8365 12.2171C14.9115 12.2921 14.9537 12.3938 14.9537 12.4999Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2Q = [\"color\"];\nvar LightningBoltIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2Q);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M8.69667 0.0403541C8.90859 0.131038 9.03106 0.354857 8.99316 0.582235L8.0902 6.00001H12.5C12.6893 6.00001 12.8625 6.10701 12.9472 6.27641C13.0319 6.4458 13.0136 6.6485 12.8999 6.80001L6.89997 14.8C6.76167 14.9844 6.51521 15.0503 6.30328 14.9597C6.09135 14.869 5.96888 14.6452 6.00678 14.4178L6.90974 9H2.49999C2.31061 9 2.13748 8.893 2.05278 8.72361C1.96809 8.55422 1.98636 8.35151 2.09999 8.2L8.09997 0.200038C8.23828 0.0156255 8.48474 -0.0503301 8.69667 0.0403541ZM3.49999 8.00001H7.49997C7.64695 8.00001 7.78648 8.06467 7.88148 8.17682C7.97648 8.28896 8.01733 8.43723 7.99317 8.5822L7.33027 12.5596L11.5 7.00001H7.49997C7.353 7.00001 7.21347 6.93534 7.11846 6.8232C7.02346 6.71105 6.98261 6.56279 7.00678 6.41781L7.66968 2.44042L3.49999 8.00001Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2R = [\"color\"];\nvar LineHeightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2R);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.78233 2.21713C3.70732 2.14212 3.60557 2.09998 3.49949 2.09998C3.3934 2.09998 3.29166 2.14212 3.21664 2.21713L1.21664 4.21713C1.06044 4.37334 1.06044 4.62661 1.21664 4.78282C1.37285 4.93903 1.62612 4.93903 1.78233 4.78282L3.09949 3.46566L3.09949 11.5343L1.78233 10.2171C1.62612 10.0609 1.37285 10.0609 1.21664 10.2171C1.06043 10.3733 1.06043 10.6266 1.21664 10.7828L3.21664 12.7828C3.29166 12.8578 3.3934 12.9 3.49949 12.9C3.60557 12.9 3.70731 12.8578 3.78233 12.7828L5.78233 10.7828C5.93854 10.6266 5.93854 10.3733 5.78233 10.2171C5.62612 10.0609 5.37285 10.0609 5.21664 10.2171L3.89949 11.5343L3.89949 3.46566L5.21664 4.78282C5.37285 4.93903 5.62612 4.93903 5.78233 4.78282C5.93854 4.62661 5.93854 4.37334 5.78233 4.21713L3.78233 2.21713ZM8.49998 3.99997C8.22383 3.99997 7.99998 4.22382 7.99998 4.49997C7.99998 4.77611 8.22383 4.99997 8.49998 4.99997H14.5C14.7761 4.99997 15 4.77611 15 4.49997C15 4.22382 14.7761 3.99997 14.5 3.99997H8.49998ZM7.99998 7.49997C7.99998 7.22382 8.22383 6.99997 8.49998 6.99997H14.5C14.7761 6.99997 15 7.22382 15 7.49997C15 7.77611 14.7761 7.99997 14.5 7.99997H8.49998C8.22383 7.99997 7.99998 7.77611 7.99998 7.49997ZM8.49998 9.99997C8.22383 9.99997 7.99998 10.2238 7.99998 10.5C7.99998 10.7761 8.22383 11 8.49998 11H14.5C14.7761 11 15 10.7761 15 10.5C15 10.2238 14.7761 9.99997 14.5 9.99997H8.49998Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2S = [\"color\"];\nvar Link1Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2S);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M4.62471 4.00001L4.56402 4.00001C4.04134 3.99993 3.70687 3.99988 3.4182 4.055C2.2379 4.28039 1.29846 5.17053 1.05815 6.33035C0.999538 6.61321 0.999604 6.93998 0.999703 7.43689L0.999711 7.50001L0.999703 7.56313C0.999604 8.06004 0.999538 8.38681 1.05815 8.66967C1.29846 9.8295 2.2379 10.7196 3.4182 10.945C3.70688 11.0001 4.04135 11.0001 4.56403 11L4.62471 11H5.49971C5.77585 11 5.99971 10.7762 5.99971 10.5C5.99971 10.2239 5.77585 10 5.49971 10H4.62471C4.02084 10 3.78907 9.99777 3.60577 9.96277C2.80262 9.8094 2.19157 9.21108 2.03735 8.46678C2.00233 8.29778 1.99971 8.08251 1.99971 7.50001C1.99971 6.91752 2.00233 6.70225 2.03735 6.53324C2.19157 5.78895 2.80262 5.19062 3.60577 5.03725C3.78907 5.00225 4.02084 5.00001 4.62471 5.00001H5.49971C5.77585 5.00001 5.99971 4.77615 5.99971 4.50001C5.99971 4.22387 5.77585 4.00001 5.49971 4.00001H4.62471ZM10.3747 5.00001C10.9786 5.00001 11.2104 5.00225 11.3937 5.03725C12.1968 5.19062 12.8079 5.78895 12.9621 6.53324C12.9971 6.70225 12.9997 6.91752 12.9997 7.50001C12.9997 8.08251 12.9971 8.29778 12.9621 8.46678C12.8079 9.21108 12.1968 9.8094 11.3937 9.96277C11.2104 9.99777 10.9786 10 10.3747 10H9.49971C9.22357 10 8.99971 10.2239 8.99971 10.5C8.99971 10.7762 9.22357 11 9.49971 11H10.3747L10.4354 11C10.9581 11.0001 11.2925 11.0001 11.5812 10.945C12.7615 10.7196 13.701 9.8295 13.9413 8.66967C13.9999 8.38681 13.9998 8.06005 13.9997 7.56314L13.9997 7.50001L13.9997 7.43688C13.9998 6.93998 13.9999 6.61321 13.9413 6.33035C13.701 5.17053 12.7615 4.28039 11.5812 4.055C11.2925 3.99988 10.9581 3.99993 10.4354 4.00001L10.3747 4.00001H9.49971C9.22357 4.00001 8.99971 4.22387 8.99971 4.50001C8.99971 4.77615 9.22357 5.00001 9.49971 5.00001H10.3747ZM5.00038 7C4.72424 7 4.50038 7.22386 4.50038 7.5C4.50038 7.77614 4.72424 8 5.00038 8H10.0004C10.2765 8 10.5004 7.77614 10.5004 7.5C10.5004 7.22386 10.2765 7 10.0004 7H5.00038Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2T = [\"color\"];\nvar Link2Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2T);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M8.51194 3.00541C9.18829 2.54594 10.0435 2.53694 10.6788 2.95419C10.8231 3.04893 10.9771 3.1993 11.389 3.61119C11.8009 4.02307 11.9513 4.17714 12.046 4.32141C12.4633 4.95675 12.4543 5.81192 11.9948 6.48827C11.8899 6.64264 11.7276 6.80811 11.3006 7.23511L10.6819 7.85383C10.4867 8.04909 10.4867 8.36567 10.6819 8.56093C10.8772 8.7562 11.1938 8.7562 11.389 8.56093L12.0077 7.94221L12.0507 7.89929C12.4203 7.52976 12.6568 7.2933 12.822 7.0502C13.4972 6.05623 13.5321 4.76252 12.8819 3.77248C12.7233 3.53102 12.4922 3.30001 12.1408 2.94871L12.0961 2.90408L12.0515 2.85942C11.7002 2.508 11.4692 2.27689 11.2277 2.11832C10.2377 1.46813 8.94398 1.50299 7.95001 2.17822C7.70691 2.34336 7.47044 2.57991 7.1009 2.94955L7.058 2.99247L6.43928 3.61119C6.24401 3.80645 6.24401 4.12303 6.43928 4.31829C6.63454 4.51355 6.95112 4.51355 7.14638 4.31829L7.7651 3.69957C8.1921 3.27257 8.35757 3.11027 8.51194 3.00541ZM4.31796 7.14672C4.51322 6.95146 4.51322 6.63487 4.31796 6.43961C4.12269 6.24435 3.80611 6.24435 3.61085 6.43961L2.99213 7.05833L2.94922 7.10124C2.57957 7.47077 2.34303 7.70724 2.17788 7.95035C1.50265 8.94432 1.4678 10.238 2.11799 11.2281C2.27656 11.4695 2.50766 11.7005 2.8591 12.0518L2.90374 12.0965L2.94837 12.1411C3.29967 12.4925 3.53068 12.7237 3.77214 12.8822C4.76219 13.5324 6.05589 13.4976 7.04986 12.8223C7.29296 12.6572 7.52943 12.4206 7.89896 12.051L7.89897 12.051L7.94188 12.0081L8.5606 11.3894C8.75586 11.1941 8.75586 10.8775 8.5606 10.6823C8.36533 10.487 8.04875 10.487 7.85349 10.6823L7.23477 11.301C6.80777 11.728 6.6423 11.8903 6.48794 11.9951C5.81158 12.4546 4.95642 12.4636 4.32107 12.0464C4.17681 11.9516 4.02274 11.8012 3.61085 11.3894C3.19896 10.9775 3.0486 10.8234 2.95385 10.6791C2.53661 10.0438 2.54561 9.18863 3.00507 8.51227C3.10993 8.35791 3.27224 8.19244 3.69924 7.76544L4.31796 7.14672ZM9.62172 6.08558C9.81698 5.89032 9.81698 5.57373 9.62172 5.37847C9.42646 5.18321 9.10988 5.18321 8.91461 5.37847L5.37908 8.91401C5.18382 9.10927 5.18382 9.42585 5.37908 9.62111C5.57434 9.81637 5.89092 9.81637 6.08619 9.62111L9.62172 6.08558Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2U = [\"color\"];\nvar LinkBreak1Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2U);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M13.3536 2.35355C13.5488 2.15829 13.5488 1.84171 13.3536 1.64645C13.1583 1.45118 12.8417 1.45118 12.6464 1.64645L1.64645 12.6464C1.45118 12.8417 1.45118 13.1583 1.64645 13.3536C1.84171 13.5488 2.15829 13.5488 2.35355 13.3536L13.3536 2.35355ZM2.03735 8.46678C2.17398 9.12619 2.66918 9.67103 3.33886 9.89338L2.57833 10.6539C1.80843 10.2534 1.23784 9.53693 1.05815 8.66967C0.999538 8.38681 0.999604 8.06004 0.999703 7.56313L0.999711 7.50001L0.999703 7.43689C0.999604 6.93998 0.999538 6.61321 1.05815 6.33035C1.29846 5.17053 2.2379 4.28039 3.4182 4.055C3.70687 3.99988 4.04134 3.99993 4.56402 4.00001L4.62471 4.00001H5.49971C5.77585 4.00001 5.99971 4.22387 5.99971 4.50001C5.99971 4.77615 5.77585 5.00001 5.49971 5.00001H4.62471C4.02084 5.00001 3.78907 5.00225 3.60577 5.03725C2.80262 5.19062 2.19157 5.78895 2.03735 6.53324C2.00233 6.70225 1.99971 6.91752 1.99971 7.50001C1.99971 8.08251 2.00233 8.29778 2.03735 8.46678ZM12.9621 6.53324C12.8255 5.87397 12.3304 5.32922 11.661 5.10679L12.4215 4.34631C13.1912 4.74686 13.7616 5.46323 13.9413 6.33035C13.9999 6.61321 13.9998 6.93998 13.9997 7.43688L13.9997 7.50001L13.9997 7.56314C13.9998 8.06005 13.9999 8.38681 13.9413 8.66967C13.701 9.8295 12.7615 10.7196 11.5812 10.945C11.2925 11.0001 10.9581 11.0001 10.4354 11L10.3747 11H9.49971C9.22357 11 8.99971 10.7762 8.99971 10.5C8.99971 10.2239 9.22357 10 9.49971 10H10.3747C10.9786 10 11.2104 9.99777 11.3937 9.96277C12.1968 9.8094 12.8079 9.21108 12.9621 8.46678C12.9971 8.29778 12.9997 8.08251 12.9997 7.50001C12.9997 6.91752 12.9971 6.70225 12.9621 6.53324Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2V = [\"color\"];\nvar LinkBreak2Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2V);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M4.50021 0C4.77635 0 5.0002 0.223853 5.0002 0.49999V2.49995C5.0002 2.77609 4.77635 2.99994 4.50021 2.99994C4.22408 2.99994 4.00022 2.77609 4.00022 2.49995V0.49999C4.00022 0.223853 4.22408 0 4.50021 0ZM0.646451 0.64647C0.84171 0.451212 1.15829 0.451212 1.35354 0.64647L2.85351 2.14644C3.04877 2.3417 3.04877 2.65827 2.85351 2.85353C2.65826 3.04879 2.34168 3.04879 2.14642 2.85353L0.646452 1.35356C0.451193 1.1583 0.451193 0.841728 0.646451 0.64647ZM0.00030517 4.49991C0.00030517 4.22377 0.224158 3.99992 0.500295 3.99992H2.50025C2.77639 3.99992 3.00024 4.22377 3.00024 4.49991C3.00024 4.77605 2.77639 4.9999 2.50025 4.9999H0.500295C0.224158 4.9999 0.00030517 4.77605 0.00030517 4.49991ZM12.0001 10.4998C12.0001 10.2236 12.2239 9.9998 12.5001 9.9998H14.5C14.7761 9.9998 15 10.2236 15 10.4998C15 10.7759 14.7761 10.9998 14.5 10.9998H12.5001C12.2239 10.9998 12.0001 10.7759 12.0001 10.4998ZM10.5001 11.9998C10.7762 11.9998 11.0001 12.2236 11.0001 12.4997V14.4997C11.0001 14.7758 10.7762 14.9997 10.5001 14.9997C10.224 14.9997 10.0001 14.7758 10.0001 14.4997V12.4997C10.0001 12.2236 10.224 11.9998 10.5001 11.9998ZM12.1462 12.1462C12.3415 11.951 12.658 11.951 12.8533 12.1462L14.3533 13.6462C14.5485 13.8415 14.5485 14.158 14.3533 14.3533C14.158 14.5485 13.8414 14.5485 13.6462 14.3533L12.1462 12.8533C11.951 12.6581 11.951 12.3415 12.1462 12.1462ZM7.76478 3.69938C8.19177 3.27238 8.35724 3.11008 8.5116 3.00522C9.18794 2.54577 10.0431 2.53677 10.6784 2.95401C10.8227 3.04875 10.9767 3.19911 11.3886 3.61099C11.8005 4.02287 11.9509 4.17694 12.0456 4.3212C12.4628 4.95653 12.4539 5.81168 11.9944 6.48802C11.8895 6.64238 11.7272 6.80785 11.3002 7.23484L10.6815 7.85354C10.4863 8.0488 10.4863 8.36538 10.6815 8.56064C10.8768 8.75589 11.1934 8.75589 11.3886 8.56064L12.0073 7.94193L12.0502 7.89903C12.4199 7.5295 12.6564 7.29303 12.8216 7.04993C13.4968 6.05598 13.5316 4.7623 12.8815 3.77228C12.7229 3.53083 12.4918 3.29982 12.1404 2.94853L12.0957 2.9039L12.0511 2.85925C11.6998 2.50782 11.4688 2.27672 11.2273 2.11816C10.2373 1.46798 8.94364 1.50284 7.94968 2.17805C7.70659 2.34319 7.47012 2.57973 7.1006 2.94936L7.1006 2.94937L7.05769 2.99228L6.43898 3.61099C6.24372 3.80625 6.24372 4.12282 6.43898 4.31808C6.63424 4.51334 6.95081 4.51334 7.14607 4.31808L7.76478 3.69938ZM2.99191 7.05807L2.94899 7.10097C2.57935 7.4705 2.34282 7.70697 2.17767 7.95006C1.50246 8.94401 1.4676 10.2377 2.11778 11.2277C2.27634 11.4692 2.50744 11.7002 2.85886 12.0515L2.85888 12.0515L2.90352 12.0961L2.94815 12.1407L2.94815 12.1407L2.94817 12.1408C3.29945 12.4922 3.53045 12.7233 3.7719 12.8818C4.76193 13.532 6.0556 13.4972 7.04956 12.8219C7.29265 12.6568 7.52912 12.4203 7.89865 12.0506L7.94155 12.0077L8.56026 11.389C8.75552 11.1937 8.75552 10.8772 8.56026 10.6819C8.365 10.4867 8.04842 10.4867 7.85317 10.6819L7.23446 11.3006C6.80747 11.7276 6.642 11.8899 6.48764 11.9948C5.8113 12.4542 4.95615 12.4632 4.32082 12.046C4.17656 11.9512 4.02249 11.8009 3.61061 11.389C3.19873 10.9771 3.04837 10.8231 2.95363 10.6788C2.53639 10.0435 2.54539 9.18832 3.00484 8.51198C3.10971 8.35761 3.27201 8.19215 3.699 7.76516L4.3177 7.14645C4.51296 6.95119 4.51296 6.63462 4.3177 6.43936C4.12245 6.2441 3.80587 6.2441 3.61061 6.43936L2.99191 7.05807Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2W = [\"color\"];\nvar LinkNone1Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2W);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M4.56427 3.99988C4.58422 3.99989 4.60445 3.99989 4.62496 3.99989H5.49996C5.7761 3.99989 5.99996 4.22375 5.99996 4.49989C5.99996 4.77603 5.7761 4.99989 5.49996 4.99989H4.62496C4.02108 4.99989 3.78932 5.00213 3.60601 5.03713C2.80287 5.1905 2.19181 5.78883 2.03759 6.53312C2.00257 6.70212 1.99996 6.91739 1.99996 7.49989C1.99996 8.08239 2.00257 8.29766 2.03759 8.46666C2.19181 9.21095 2.80287 9.80928 3.60601 9.96265C3.78932 9.99765 4.02108 9.99989 4.62496 9.99989H5.49996C5.7761 9.99989 5.99996 10.2237 5.99996 10.4999C5.99996 10.776 5.7761 10.9999 5.49996 10.9999H4.62496C4.60445 10.9999 4.58422 10.9999 4.56427 10.9999C4.04159 11 3.70712 11 3.41845 10.9449C2.23814 10.7195 1.29871 9.82937 1.05839 8.66955C0.999782 8.38669 0.999848 8.05992 0.999947 7.56301C0.999951 7.54227 0.999955 7.52123 0.999955 7.49989C0.999955 7.47855 0.999951 7.45751 0.999947 7.43677C0.999848 6.93986 0.999782 6.61309 1.05839 6.33023C1.29871 5.17041 2.23814 4.28027 3.41845 4.05488C3.70712 3.99976 4.04159 3.99981 4.56427 3.99988ZM11.3939 5.03713C11.2106 5.00213 10.9788 4.99989 10.375 4.99989H9.49996C9.22381 4.99989 8.99996 4.77603 8.99996 4.49989C8.99996 4.22375 9.22381 3.99989 9.49996 3.99989H10.375C10.3955 3.99989 10.4157 3.99989 10.4356 3.99988C10.9583 3.99981 11.2928 3.99976 11.5815 4.05488C12.7618 4.28027 13.7012 5.17041 13.9415 6.33023C14.0001 6.61309 14.0001 6.93985 14 7.43676C14 7.4575 14 7.47854 14 7.49989C14 7.52124 14 7.54228 14 7.56302C14.0001 8.05992 14.0001 8.38669 13.9415 8.66955C13.7012 9.82937 12.7618 10.7195 11.5815 10.9449C11.2928 11 10.9583 11 10.4356 10.9999C10.4157 10.9999 10.3955 10.9999 10.375 10.9999H9.49996C9.22381 10.9999 8.99996 10.776 8.99996 10.4999C8.99996 10.2237 9.22381 9.99989 9.49996 9.99989H10.375C10.9788 9.99989 11.2106 9.99765 11.3939 9.96265C12.197 9.80928 12.8081 9.21095 12.9623 8.46666C12.9973 8.29766 13 8.08239 13 7.49989C13 6.91739 12.9973 6.70212 12.9623 6.53312C12.8081 5.78883 12.197 5.1905 11.3939 5.03713Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2X = [\"color\"];\nvar LinkNone2Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2X);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M10.6788 2.95419C10.0435 2.53694 9.18829 2.54594 8.51194 3.00541C8.35757 3.11027 8.1921 3.27257 7.7651 3.69957L7.14638 4.31829C6.95112 4.51355 6.63454 4.51355 6.43928 4.31829C6.24401 4.12303 6.24401 3.80645 6.43928 3.61119L7.058 2.99247C7.0725 2.97797 7.08679 2.96366 7.1009 2.94955C7.47044 2.57991 7.70691 2.34336 7.95001 2.17822C8.94398 1.50299 10.2377 1.46813 11.2277 2.11832C11.4692 2.27689 11.7002 2.508 12.0515 2.85942C12.0662 2.8741 12.081 2.88898 12.0961 2.90408C12.1112 2.91917 12.1261 2.93405 12.1408 2.94871C12.4922 3.30001 12.7233 3.53102 12.8819 3.77248C13.5321 4.76252 13.4972 6.05623 12.822 7.0502C12.6568 7.2933 12.4203 7.52976 12.0507 7.89929C12.0366 7.9134 12.0222 7.92771 12.0077 7.94221L11.389 8.56093C11.1938 8.7562 10.8772 8.7562 10.6819 8.56093C10.4867 8.36567 10.4867 8.04909 10.6819 7.85383L11.3006 7.23511C11.7276 6.80811 11.8899 6.64264 11.9948 6.48827C12.4543 5.81192 12.4633 4.95675 12.046 4.32141C11.9513 4.17714 11.8009 4.02307 11.389 3.61119C10.9771 3.1993 10.8231 3.04893 10.6788 2.95419ZM4.31796 6.43961C4.51322 6.63487 4.51322 6.95146 4.31796 7.14672L3.69924 7.76544C3.27224 8.19244 3.10993 8.35791 3.00507 8.51227C2.54561 9.18863 2.53661 10.0438 2.95385 10.6791C3.0486 10.8234 3.19896 10.9775 3.61085 11.3894C4.02274 11.8012 4.17681 11.9516 4.32107 12.0464C4.95642 12.4636 5.81158 12.4546 6.48794 11.9951C6.6423 11.8903 6.80777 11.728 7.23477 11.301L7.85349 10.6823C8.04875 10.487 8.36533 10.487 8.5606 10.6823C8.75586 10.8775 8.75586 11.1941 8.5606 11.3894L7.94188 12.0081C7.92738 12.0226 7.91307 12.0369 7.89897 12.051C7.52943 12.4206 7.29296 12.6572 7.04986 12.8223C6.05589 13.4976 4.76219 13.5324 3.77214 12.8822C3.53068 12.7237 3.29967 12.4925 2.94837 12.1411C2.93371 12.1264 2.91883 12.1116 2.90374 12.0965C2.88865 12.0814 2.87377 12.0665 2.8591 12.0518C2.50766 11.7005 2.27656 11.4695 2.11799 11.2281C1.4678 10.238 1.50265 8.94432 2.17788 7.95035C2.34303 7.70724 2.57957 7.47077 2.94922 7.10124C2.96333 7.08713 2.97763 7.07283 2.99213 7.05833L3.61085 6.43961C3.80611 6.24435 4.12269 6.24435 4.31796 6.43961Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2Y = [\"color\"];\nvar LinkedInLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2Y);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2 1C1.44772 1 1 1.44772 1 2V13C1 13.5523 1.44772 14 2 14H13C13.5523 14 14 13.5523 14 13V2C14 1.44772 13.5523 1 13 1H2ZM3.05 6H4.95V12H3.05V6ZM5.075 4.005C5.075 4.59871 4.59371 5.08 4 5.08C3.4063 5.08 2.925 4.59871 2.925 4.005C2.925 3.41129 3.4063 2.93 4 2.93C4.59371 2.93 5.075 3.41129 5.075 4.005ZM12 8.35713C12 6.55208 10.8334 5.85033 9.67449 5.85033C9.29502 5.83163 8.91721 5.91119 8.57874 6.08107C8.32172 6.21007 8.05265 6.50523 7.84516 7.01853H7.79179V6.00044H6V12.0047H7.90616V8.8112C7.8786 8.48413 7.98327 8.06142 8.19741 7.80987C8.41156 7.55832 8.71789 7.49825 8.95015 7.46774H9.02258C9.62874 7.46774 10.0786 7.84301 10.0786 8.78868V12.0047H11.9847L12 8.35713Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2Z = [\"color\"];\nvar ListBulletIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2Z);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1.5 5.25C1.91421 5.25 2.25 4.91421 2.25 4.5C2.25 4.08579 1.91421 3.75 1.5 3.75C1.08579 3.75 0.75 4.08579 0.75 4.5C0.75 4.91421 1.08579 5.25 1.5 5.25ZM4 4.5C4 4.22386 4.22386 4 4.5 4H13.5C13.7761 4 14 4.22386 14 4.5C14 4.77614 13.7761 5 13.5 5H4.5C4.22386 5 4 4.77614 4 4.5ZM4.5 7C4.22386 7 4 7.22386 4 7.5C4 7.77614 4.22386 8 4.5 8H13.5C13.7761 8 14 7.77614 14 7.5C14 7.22386 13.7761 7 13.5 7H4.5ZM4.5 10C4.22386 10 4 10.2239 4 10.5C4 10.7761 4.22386 11 4.5 11H13.5C13.7761 11 14 10.7761 14 10.5C14 10.2239 13.7761 10 13.5 10H4.5ZM2.25 7.5C2.25 7.91421 1.91421 8.25 1.5 8.25C1.08579 8.25 0.75 7.91421 0.75 7.5C0.75 7.08579 1.08579 6.75 1.5 6.75C1.91421 6.75 2.25 7.08579 2.25 7.5ZM1.5 11.25C1.91421 11.25 2.25 10.9142 2.25 10.5C2.25 10.0858 1.91421 9.75 1.5 9.75C1.08579 9.75 0.75 10.0858 0.75 10.5C0.75 10.9142 1.08579 11.25 1.5 11.25Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2_ = [\"color\"];\nvar LockClosedIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2_);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M5 4.63601C5 3.76031 5.24219 3.1054 5.64323 2.67357C6.03934 2.24705 6.64582 1.9783 7.5014 1.9783C8.35745 1.9783 8.96306 2.24652 9.35823 2.67208C9.75838 3.10299 10 3.75708 10 4.63325V5.99999H5V4.63601ZM4 5.99999V4.63601C4 3.58148 4.29339 2.65754 4.91049 1.99307C5.53252 1.32329 6.42675 0.978302 7.5014 0.978302C8.57583 0.978302 9.46952 1.32233 10.091 1.99162C10.7076 2.65557 11 3.57896 11 4.63325V5.99999H12C12.5523 5.99999 13 6.44771 13 6.99999V13C13 13.5523 12.5523 14 12 14H3C2.44772 14 2 13.5523 2 13V6.99999C2 6.44771 2.44772 5.99999 3 5.99999H4ZM3 6.99999H12V13H3V6.99999Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$2$ = [\"color\"];\nvar LockOpen1Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2$);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.4986 0C6.3257 0 5.36107 0.38943 4.73753 1.19361C4.23745 1.83856 4 2.68242 4 3.63325H5C5 2.84313 5.19691 2.23312 5.5278 1.80636C5.91615 1.30552 6.55152 1 7.4986 1C8.35683 1 8.96336 1.26502 9.35846 1.68623C9.75793 2.11211 10 2.76044 10 3.63601V6H3C2.44772 6 2 6.44772 2 7V13C2 13.5523 2.44772 14 3 14H12C12.5523 14 13 13.5523 13 13V7C13 6.44771 12.5523 6 12 6H11V3.63601C11 2.58135 10.7065 1.66167 10.0878 1.0021C9.46477 0.337871 8.57061 0 7.4986 0ZM3 7H12V13H3V7Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$30 = [\"color\"];\nvar LockOpen2Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$30);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M9 3.63601C9 2.76044 9.24207 2.11211 9.64154 1.68623C10.0366 1.26502 10.6432 1 11.5014 1C12.4485 1 13.0839 1.30552 13.4722 1.80636C13.8031 2.23312 14 2.84313 14 3.63325H15C15 2.68242 14.7626 1.83856 14.2625 1.19361C13.6389 0.38943 12.6743 0 11.5014 0C10.4294 0 9.53523 0.337871 8.91218 1.0021C8.29351 1.66167 8 2.58135 8 3.63601V6H1C0.447715 6 0 6.44772 0 7V13C0 13.5523 0.447715 14 1 14H10C10.5523 14 11 13.5523 11 13V7C11 6.44772 10.5523 6 10 6H9V3.63601ZM1 7H10V13H1V7Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$31 = [\"color\"];\nvar LoopIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$31);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.35355 1.85355C3.54882 1.65829 3.54882 1.34171 3.35355 1.14645C3.15829 0.951184 2.84171 0.951184 2.64645 1.14645L0.646447 3.14645C0.451184 3.34171 0.451184 3.65829 0.646447 3.85355L2.64645 5.85355C2.84171 6.04882 3.15829 6.04882 3.35355 5.85355C3.54882 5.65829 3.54882 5.34171 3.35355 5.14645L2.20711 4H9.5C11.433 4 13 5.567 13 7.5C13 7.77614 13.2239 8 13.5 8C13.7761 8 14 7.77614 14 7.5C14 5.01472 11.9853 3 9.5 3H2.20711L3.35355 1.85355ZM2 7.5C2 7.22386 1.77614 7 1.5 7C1.22386 7 1 7.22386 1 7.5C1 9.98528 3.01472 12 5.5 12H12.7929L11.6464 13.1464C11.4512 13.3417 11.4512 13.6583 11.6464 13.8536C11.8417 14.0488 12.1583 14.0488 12.3536 13.8536L14.3536 11.8536C14.5488 11.6583 14.5488 11.3417 14.3536 11.1464L12.3536 9.14645C12.1583 8.95118 11.8417 8.95118 11.6464 9.14645C11.4512 9.34171 11.4512 9.65829 11.6464 9.85355L12.7929 11H5.5C3.567 11 2 9.433 2 7.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$32 = [\"color\"];\nvar MagicWandIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$32);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M13.9 0.499976C13.9 0.279062 13.7209 0.0999756 13.5 0.0999756C13.2791 0.0999756 13.1 0.279062 13.1 0.499976V1.09998H12.5C12.2791 1.09998 12.1 1.27906 12.1 1.49998C12.1 1.72089 12.2791 1.89998 12.5 1.89998H13.1V2.49998C13.1 2.72089 13.2791 2.89998 13.5 2.89998C13.7209 2.89998 13.9 2.72089 13.9 2.49998V1.89998H14.5C14.7209 1.89998 14.9 1.72089 14.9 1.49998C14.9 1.27906 14.7209 1.09998 14.5 1.09998H13.9V0.499976ZM11.8536 3.14642C12.0488 3.34168 12.0488 3.65826 11.8536 3.85353L10.8536 4.85353C10.6583 5.04879 10.3417 5.04879 10.1465 4.85353C9.9512 4.65827 9.9512 4.34169 10.1465 4.14642L11.1464 3.14643C11.3417 2.95116 11.6583 2.95116 11.8536 3.14642ZM9.85357 5.14642C10.0488 5.34168 10.0488 5.65827 9.85357 5.85353L2.85355 12.8535C2.65829 13.0488 2.34171 13.0488 2.14645 12.8535C1.95118 12.6583 1.95118 12.3417 2.14645 12.1464L9.14646 5.14642C9.34172 4.95116 9.65831 4.95116 9.85357 5.14642ZM13.5 5.09998C13.7209 5.09998 13.9 5.27906 13.9 5.49998V6.09998H14.5C14.7209 6.09998 14.9 6.27906 14.9 6.49998C14.9 6.72089 14.7209 6.89998 14.5 6.89998H13.9V7.49998C13.9 7.72089 13.7209 7.89998 13.5 7.89998C13.2791 7.89998 13.1 7.72089 13.1 7.49998V6.89998H12.5C12.2791 6.89998 12.1 6.72089 12.1 6.49998C12.1 6.27906 12.2791 6.09998 12.5 6.09998H13.1V5.49998C13.1 5.27906 13.2791 5.09998 13.5 5.09998ZM8.90002 0.499976C8.90002 0.279062 8.72093 0.0999756 8.50002 0.0999756C8.2791 0.0999756 8.10002 0.279062 8.10002 0.499976V1.09998H7.50002C7.2791 1.09998 7.10002 1.27906 7.10002 1.49998C7.10002 1.72089 7.2791 1.89998 7.50002 1.89998H8.10002V2.49998C8.10002 2.72089 8.2791 2.89998 8.50002 2.89998C8.72093 2.89998 8.90002 2.72089 8.90002 2.49998V1.89998H9.50002C9.72093 1.89998 9.90002 1.72089 9.90002 1.49998C9.90002 1.27906 9.72093 1.09998 9.50002 1.09998H8.90002V0.499976Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$33 = [\"color\"];\nvar MagnifyingGlassIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$33);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M10 6.5C10 8.433 8.433 10 6.5 10C4.567 10 3 8.433 3 6.5C3 4.567 4.567 3 6.5 3C8.433 3 10 4.567 10 6.5ZM9.30884 10.0159C8.53901 10.6318 7.56251 11 6.5 11C4.01472 11 2 8.98528 2 6.5C2 4.01472 4.01472 2 6.5 2C8.98528 2 11 4.01472 11 6.5C11 7.56251 10.6318 8.53901 10.0159 9.30884L12.8536 12.1464C13.0488 12.3417 13.0488 12.6583 12.8536 12.8536C12.6583 13.0488 12.3417 13.0488 12.1464 12.8536L9.30884 10.0159Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$34 = [\"color\"];\nvar MarginIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$34);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1.49988 2.00012C1.77602 2.00012 1.99988 1.77626 1.99988 1.50012C1.99988 1.22398 1.77602 1.00012 1.49988 1.00012C1.22374 1.00012 0.999878 1.22398 0.999878 1.50012C0.999878 1.77626 1.22374 2.00012 1.49988 2.00012ZM4.49988 2.00012C4.77602 2.00012 4.99988 1.77626 4.99988 1.50012C4.99988 1.22398 4.77602 1.00012 4.49988 1.00012C4.22374 1.00012 3.99988 1.22398 3.99988 1.50012C3.99988 1.77626 4.22374 2.00012 4.49988 2.00012ZM7.99988 1.50012C7.99988 1.77626 7.77602 2.00012 7.49988 2.00012C7.22374 2.00012 6.99988 1.77626 6.99988 1.50012C6.99988 1.22398 7.22374 1.00012 7.49988 1.00012C7.77602 1.00012 7.99988 1.22398 7.99988 1.50012ZM10.4999 2.00012C10.776 2.00012 10.9999 1.77626 10.9999 1.50012C10.9999 1.22398 10.776 1.00012 10.4999 1.00012C10.2237 1.00012 9.99988 1.22398 9.99988 1.50012C9.99988 1.77626 10.2237 2.00012 10.4999 2.00012ZM13.9999 1.50012C13.9999 1.77626 13.776 2.00012 13.4999 2.00012C13.2237 2.00012 12.9999 1.77626 12.9999 1.50012C12.9999 1.22398 13.2237 1.00012 13.4999 1.00012C13.776 1.00012 13.9999 1.22398 13.9999 1.50012ZM1.49988 14.0001C1.77602 14.0001 1.99988 13.7763 1.99988 13.5001C1.99988 13.224 1.77602 13.0001 1.49988 13.0001C1.22374 13.0001 0.999878 13.224 0.999878 13.5001C0.999878 13.7763 1.22374 14.0001 1.49988 14.0001ZM1.99988 10.5001C1.99988 10.7763 1.77602 11.0001 1.49988 11.0001C1.22374 11.0001 0.999878 10.7763 0.999878 10.5001C0.999878 10.224 1.22374 10.0001 1.49988 10.0001C1.77602 10.0001 1.99988 10.224 1.99988 10.5001ZM1.49988 8.00012C1.77602 8.00012 1.99988 7.77626 1.99988 7.50012C1.99988 7.22398 1.77602 7.00012 1.49988 7.00012C1.22374 7.00012 0.999878 7.22398 0.999878 7.50012C0.999878 7.77626 1.22374 8.00012 1.49988 8.00012ZM1.99988 4.50012C1.99988 4.77626 1.77602 5.00012 1.49988 5.00012C1.22374 5.00012 0.999878 4.77626 0.999878 4.50012C0.999878 4.22398 1.22374 4.00012 1.49988 4.00012C1.77602 4.00012 1.99988 4.22398 1.99988 4.50012ZM13.4999 11.0001C13.776 11.0001 13.9999 10.7763 13.9999 10.5001C13.9999 10.224 13.776 10.0001 13.4999 10.0001C13.2237 10.0001 12.9999 10.224 12.9999 10.5001C12.9999 10.7763 13.2237 11.0001 13.4999 11.0001ZM13.9999 7.50012C13.9999 7.77626 13.776 8.00012 13.4999 8.00012C13.2237 8.00012 12.9999 7.77626 12.9999 7.50012C12.9999 7.22398 13.2237 7.00012 13.4999 7.00012C13.776 7.00012 13.9999 7.22398 13.9999 7.50012ZM13.4999 5.00012C13.776 5.00012 13.9999 4.77626 13.9999 4.50012C13.9999 4.22398 13.776 4.00012 13.4999 4.00012C13.2237 4.00012 12.9999 4.22398 12.9999 4.50012C12.9999 4.77626 13.2237 5.00012 13.4999 5.00012ZM4.99988 13.5001C4.99988 13.7763 4.77602 14.0001 4.49988 14.0001C4.22374 14.0001 3.99988 13.7763 3.99988 13.5001C3.99988 13.224 4.22374 13.0001 4.49988 13.0001C4.77602 13.0001 4.99988 13.224 4.99988 13.5001ZM7.49988 14.0001C7.77602 14.0001 7.99988 13.7763 7.99988 13.5001C7.99988 13.224 7.77602 13.0001 7.49988 13.0001C7.22374 13.0001 6.99988 13.224 6.99988 13.5001C6.99988 13.7763 7.22374 14.0001 7.49988 14.0001ZM10.9999 13.5001C10.9999 13.7763 10.776 14.0001 10.4999 14.0001C10.2237 14.0001 9.99988 13.7763 9.99988 13.5001C9.99988 13.224 10.2237 13.0001 10.4999 13.0001C10.776 13.0001 10.9999 13.224 10.9999 13.5001ZM13.4999 14.0001C13.776 14.0001 13.9999 13.7763 13.9999 13.5001C13.9999 13.224 13.776 13.0001 13.4999 13.0001C13.2237 13.0001 12.9999 13.224 12.9999 13.5001C12.9999 13.7763 13.2237 14.0001 13.4999 14.0001ZM3.99988 5.00012C3.99988 4.44784 4.44759 4.00012 4.99988 4.00012H9.99988C10.5522 4.00012 10.9999 4.44784 10.9999 5.00012V10.0001C10.9999 10.5524 10.5522 11.0001 9.99988 11.0001H4.99988C4.44759 11.0001 3.99988 10.5524 3.99988 10.0001V5.00012ZM4.99988 5.00012H9.99988V10.0001H4.99988V5.00012Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$35 = [\"color\"];\nvar MaskOffIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$35);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1 2H14V13H1L1 2ZM0 2C0 1.44772 0.447715 1 1 1H14C14.5523 1 15 1.44772 15 2V13C15 13.5523 14.5523 14 14 14H1C0.447715 14 0 13.5523 0 13V2ZM4.875 7.5C4.875 6.05025 6.05025 4.875 7.5 4.875C8.94975 4.875 10.125 6.05025 10.125 7.5C10.125 8.94975 8.94975 10.125 7.5 10.125C6.05025 10.125 4.875 8.94975 4.875 7.5ZM7.5 3.875C5.49797 3.875 3.875 5.49797 3.875 7.5C3.875 9.50203 5.49797 11.125 7.5 11.125C9.50203 11.125 11.125 9.50203 11.125 7.5C11.125 5.49797 9.50203 3.875 7.5 3.875Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$36 = [\"color\"];\nvar MaskOnIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$36);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1 1C0.447715 1 0 1.44772 0 2V13C0 13.5523 0.447715 14 1 14H14C14.5523 14 15 13.5523 15 13V2C15 1.44772 14.5523 1 14 1H1ZM7.5 10.625C9.22589 10.625 10.625 9.22589 10.625 7.5C10.625 5.77411 9.22589 4.375 7.5 4.375C5.77411 4.375 4.375 5.77411 4.375 7.5C4.375 9.22589 5.77411 10.625 7.5 10.625Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$37 = [\"color\"];\nvar MinusIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$37);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2.25 7.5C2.25 7.22386 2.47386 7 2.75 7H12.25C12.5261 7 12.75 7.22386 12.75 7.5C12.75 7.77614 12.5261 8 12.25 8H2.75C2.47386 8 2.25 7.77614 2.25 7.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$38 = [\"color\"];\nvar MinusCircledIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$38);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM1.82707 7.49972C1.82707 4.36671 4.36689 1.82689 7.49991 1.82689C10.6329 1.82689 13.1727 4.36671 13.1727 7.49972C13.1727 10.6327 10.6329 13.1726 7.49991 13.1726C4.36689 13.1726 1.82707 10.6327 1.82707 7.49972ZM4.50003 7C4.22389 7 4.00003 7.22386 4.00003 7.5C4.00003 7.77614 4.22389 8 4.50003 8H10.5C10.7762 8 11 7.77614 11 7.5C11 7.22386 10.7762 7 10.5 7H4.50003Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$39 = [\"color\"];\nvar MixIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$39);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2.14921 3.99996C2.14921 2.97778 2.97784 2.14915 4.00002 2.14915C5.02219 2.14915 5.85083 2.97778 5.85083 3.99996C5.85083 5.02213 5.02219 5.85077 4.00002 5.85077C2.97784 5.85077 2.14921 5.02213 2.14921 3.99996ZM4.00002 1.24915C2.48079 1.24915 1.24921 2.48073 1.24921 3.99996C1.24921 5.51919 2.48079 6.75077 4.00002 6.75077C5.51925 6.75077 6.75083 5.51919 6.75083 3.99996C6.75083 2.48073 5.51925 1.24915 4.00002 1.24915ZM5.82034 11.0001L2.49998 12.8369V9.16331L5.82034 11.0001ZM2.63883 8.21159C2.17228 7.9535 1.59998 8.29093 1.59998 8.82411V13.1761C1.59998 13.7093 2.17228 14.0467 2.63883 13.7886L6.57235 11.6126C7.05389 11.3462 7.05389 10.654 6.57235 10.3876L2.63883 8.21159ZM8.30001 9.00003C8.30001 8.61343 8.61341 8.30003 9.00001 8.30003H13C13.3866 8.30003 13.7 8.61343 13.7 9.00003V13C13.7 13.3866 13.3866 13.7 13 13.7H9.00001C8.61341 13.7 8.30001 13.3866 8.30001 13V9.00003ZM9.20001 9.20003V12.8H12.8V9.20003H9.20001ZM13.4432 2.19311C13.6189 2.01737 13.6189 1.73245 13.4432 1.55671C13.2675 1.38098 12.9826 1.38098 12.8068 1.55671L11 3.36353L9.19321 1.55674C9.01748 1.381 8.73255 1.381 8.55682 1.55674C8.38108 1.73247 8.38108 2.0174 8.55682 2.19313L10.3636 3.99992L8.55682 5.80671C8.38108 5.98245 8.38108 6.26737 8.55682 6.44311C8.73255 6.61885 9.01748 6.61885 9.19321 6.44311L11 4.63632L12.8068 6.44314C12.9826 6.61887 13.2675 6.61887 13.4432 6.44314C13.6189 6.2674 13.6189 5.98247 13.4432 5.80674L11.6364 3.99992L13.4432 2.19311Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3a = [\"color\"];\nvar MixerHorizontalIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3a);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M5.5 3C4.67157 3 4 3.67157 4 4.5C4 5.32843 4.67157 6 5.5 6C6.32843 6 7 5.32843 7 4.5C7 3.67157 6.32843 3 5.5 3ZM3 5C3.01671 5 3.03323 4.99918 3.04952 4.99758C3.28022 6.1399 4.28967 7 5.5 7C6.71033 7 7.71978 6.1399 7.95048 4.99758C7.96677 4.99918 7.98329 5 8 5H13.5C13.7761 5 14 4.77614 14 4.5C14 4.22386 13.7761 4 13.5 4H8C7.98329 4 7.96677 4.00082 7.95048 4.00242C7.71978 2.86009 6.71033 2 5.5 2C4.28967 2 3.28022 2.86009 3.04952 4.00242C3.03323 4.00082 3.01671 4 3 4H1.5C1.22386 4 1 4.22386 1 4.5C1 4.77614 1.22386 5 1.5 5H3ZM11.9505 10.9976C11.7198 12.1399 10.7103 13 9.5 13C8.28967 13 7.28022 12.1399 7.04952 10.9976C7.03323 10.9992 7.01671 11 7 11H1.5C1.22386 11 1 10.7761 1 10.5C1 10.2239 1.22386 10 1.5 10H7C7.01671 10 7.03323 10.0008 7.04952 10.0024C7.28022 8.8601 8.28967 8 9.5 8C10.7103 8 11.7198 8.8601 11.9505 10.0024C11.9668 10.0008 11.9833 10 12 10H13.5C13.7761 10 14 10.2239 14 10.5C14 10.7761 13.7761 11 13.5 11H12C11.9833 11 11.9668 10.9992 11.9505 10.9976ZM8 10.5C8 9.67157 8.67157 9 9.5 9C10.3284 9 11 9.67157 11 10.5C11 11.3284 10.3284 12 9.5 12C8.67157 12 8 11.3284 8 10.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3b = [\"color\"];\nvar MixerVerticalIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3b);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M5 1.5C5 1.22386 4.77614 1 4.5 1C4.22386 1 4 1.22386 4 1.5L4 7C4 7.01671 4.00082 7.03323 4.00242 7.04952C2.86009 7.28022 2 8.28967 2 9.5C2 10.7103 2.86009 11.7198 4.00242 11.9505C4.00082 11.9668 4 11.9833 4 12V13.5C4 13.7761 4.22386 14 4.5 14C4.77614 14 5 13.7761 5 13.5V12C5 11.9833 4.99918 11.9668 4.99758 11.9505C6.1399 11.7198 7 10.7103 7 9.5C7 8.28967 6.1399 7.28022 4.99758 7.04952C4.99918 7.03323 5 7.01671 5 7L5 1.5ZM11 1.5C11 1.22386 10.7761 1 10.5 1C10.2239 1 10 1.22386 10 1.5V3C10 3.01671 10.0008 3.03323 10.0024 3.04952C8.8601 3.28022 8 4.28967 8 5.5C8 6.71033 8.8601 7.71978 10.0024 7.95048C10.0008 7.96677 10 7.98329 10 8V13.5C10 13.7761 10.2239 14 10.5 14C10.7761 14 11 13.7761 11 13.5V8C11 7.98329 10.9992 7.96677 10.9976 7.95048C12.1399 7.71978 13 6.71033 13 5.5C13 4.28967 12.1399 3.28022 10.9976 3.04952C10.9992 3.03323 11 3.01671 11 3V1.5ZM4.5 8C3.67157 8 3 8.67157 3 9.5C3 10.3284 3.67157 11 4.5 11C5.32843 11 6 10.3284 6 9.5C6 8.67157 5.32843 8 4.5 8ZM9 5.5C9 4.67157 9.67157 4 10.5 4C11.3284 4 12 4.67157 12 5.5C12 6.32843 11.3284 7 10.5 7C9.67157 7 9 6.32843 9 5.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3c = [\"color\"];\nvar MobileIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3c);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M4 2.5C4 2.22386 4.22386 2 4.5 2H10.5C10.7761 2 11 2.22386 11 2.5V12.5C11 12.7761 10.7761 13 10.5 13H4.5C4.22386 13 4 12.7761 4 12.5V2.5ZM4.5 1C3.67157 1 3 1.67157 3 2.5V12.5C3 13.3284 3.67157 14 4.5 14H10.5C11.3284 14 12 13.3284 12 12.5V2.5C12 1.67157 11.3284 1 10.5 1H4.5ZM6 11.65C5.8067 11.65 5.65 11.8067 5.65 12C5.65 12.1933 5.8067 12.35 6 12.35H9C9.1933 12.35 9.35 12.1933 9.35 12C9.35 11.8067 9.1933 11.65 9 11.65H6Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3d = [\"color\"];\nvar ModulzLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3d);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.25925 3.16667L4.37036 5.33333V1L7.25925 3.16667ZM1 8.22222L3.88889 6.05555L1 3.88889V8.22222ZM1 14L3.88889 11.8333L1 9.66666V14ZM7.74072 8.22222L10.6296 6.05555L7.74072 3.88889V8.22222ZM14 3.16667L11.1111 5.33333V1L14 3.16667ZM11.1111 11.1111L14 8.94444L11.1111 6.77777V11.1111ZM3.88889 11.1111L1 8.94444L3.88889 6.77777V11.1111ZM4.37036 6.05555L7.25925 8.22222V3.88889L4.37036 6.05555ZM3.88889 5.33333L1 3.16667L3.88889 1V5.33333ZM7.74072 3.16667L10.6296 5.33333V1L7.74072 3.16667ZM14 8.22222L11.1111 6.05555L14 3.88889V8.22222ZM11.1111 11.8333L14 14V9.66666L11.1111 11.8333Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3e = [\"color\"];\nvar MoonIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3e);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2.89998 0.499976C2.89998 0.279062 2.72089 0.0999756 2.49998 0.0999756C2.27906 0.0999756 2.09998 0.279062 2.09998 0.499976V1.09998H1.49998C1.27906 1.09998 1.09998 1.27906 1.09998 1.49998C1.09998 1.72089 1.27906 1.89998 1.49998 1.89998H2.09998V2.49998C2.09998 2.72089 2.27906 2.89998 2.49998 2.89998C2.72089 2.89998 2.89998 2.72089 2.89998 2.49998V1.89998H3.49998C3.72089 1.89998 3.89998 1.72089 3.89998 1.49998C3.89998 1.27906 3.72089 1.09998 3.49998 1.09998H2.89998V0.499976ZM5.89998 3.49998C5.89998 3.27906 5.72089 3.09998 5.49998 3.09998C5.27906 3.09998 5.09998 3.27906 5.09998 3.49998V4.09998H4.49998C4.27906 4.09998 4.09998 4.27906 4.09998 4.49998C4.09998 4.72089 4.27906 4.89998 4.49998 4.89998H5.09998V5.49998C5.09998 5.72089 5.27906 5.89998 5.49998 5.89998C5.72089 5.89998 5.89998 5.72089 5.89998 5.49998V4.89998H6.49998C6.72089 4.89998 6.89998 4.72089 6.89998 4.49998C6.89998 4.27906 6.72089 4.09998 6.49998 4.09998H5.89998V3.49998ZM1.89998 6.49998C1.89998 6.27906 1.72089 6.09998 1.49998 6.09998C1.27906 6.09998 1.09998 6.27906 1.09998 6.49998V7.09998H0.499976C0.279062 7.09998 0.0999756 7.27906 0.0999756 7.49998C0.0999756 7.72089 0.279062 7.89998 0.499976 7.89998H1.09998V8.49998C1.09998 8.72089 1.27906 8.89997 1.49998 8.89997C1.72089 8.89997 1.89998 8.72089 1.89998 8.49998V7.89998H2.49998C2.72089 7.89998 2.89998 7.72089 2.89998 7.49998C2.89998 7.27906 2.72089 7.09998 2.49998 7.09998H1.89998V6.49998ZM8.54406 0.98184L8.24618 0.941586C8.03275 0.917676 7.90692 1.1655 8.02936 1.34194C8.17013 1.54479 8.29981 1.75592 8.41754 1.97445C8.91878 2.90485 9.20322 3.96932 9.20322 5.10022C9.20322 8.37201 6.82247 11.0878 3.69887 11.6097C3.45736 11.65 3.20988 11.6772 2.96008 11.6906C2.74563 11.702 2.62729 11.9535 2.77721 12.1072C2.84551 12.1773 2.91535 12.2458 2.98667 12.3128L3.05883 12.3795L3.31883 12.6045L3.50684 12.7532L3.62796 12.8433L3.81491 12.9742L3.99079 13.089C4.11175 13.1651 4.23536 13.2375 4.36157 13.3059L4.62496 13.4412L4.88553 13.5607L5.18837 13.6828L5.43169 13.7686C5.56564 13.8128 5.70149 13.8529 5.83857 13.8885C5.94262 13.9155 6.04767 13.9401 6.15405 13.9622C6.27993 13.9883 6.40713 14.0109 6.53544 14.0298L6.85241 14.0685L7.11934 14.0892C7.24637 14.0965 7.37436 14.1002 7.50322 14.1002C11.1483 14.1002 14.1032 11.1453 14.1032 7.50023C14.1032 7.25044 14.0893 7.00389 14.0623 6.76131L14.0255 6.48407C13.991 6.26083 13.9453 6.04129 13.8891 5.82642C13.8213 5.56709 13.7382 5.31398 13.6409 5.06881L13.5279 4.80132L13.4507 4.63542L13.3766 4.48666C13.2178 4.17773 13.0353 3.88295 12.8312 3.60423L12.6782 3.40352L12.4793 3.16432L12.3157 2.98361L12.1961 2.85951L12.0355 2.70246L11.8134 2.50184L11.4925 2.24191L11.2483 2.06498L10.9562 1.87446L10.6346 1.68894L10.3073 1.52378L10.1938 1.47176L9.95488 1.3706L9.67791 1.2669L9.42566 1.1846L9.10075 1.09489L8.83599 1.03486L8.54406 0.98184ZM10.4032 5.30023C10.4032 4.27588 10.2002 3.29829 9.83244 2.40604C11.7623 3.28995 13.1032 5.23862 13.1032 7.50023C13.1032 10.593 10.596 13.1002 7.50322 13.1002C6.63646 13.1002 5.81597 12.9036 5.08355 12.5522C6.5419 12.0941 7.81081 11.2082 8.74322 10.0416C8.87963 10.2284 9.10028 10.3497 9.34928 10.3497C9.76349 10.3497 10.0993 10.0139 10.0993 9.59971C10.0993 9.24256 9.84965 8.94373 9.51535 8.86816C9.57741 8.75165 9.63653 8.63334 9.6926 8.51332C9.88358 8.63163 10.1088 8.69993 10.35 8.69993C11.0403 8.69993 11.6 8.14028 11.6 7.44993C11.6 6.75976 11.0406 6.20024 10.3505 6.19993C10.3853 5.90487 10.4032 5.60464 10.4032 5.30023Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3f = [\"color\"];\nvar MoveIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3f);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.81819 0.93179C7.64245 0.756054 7.35753 0.756054 7.18179 0.93179L5.43179 2.68179C5.25605 2.85753 5.25605 3.14245 5.43179 3.31819C5.60753 3.49392 5.89245 3.49392 6.06819 3.31819L6.99999 2.38638V5.49999C6.99999 5.77613 7.22385 5.99999 7.49999 5.99999C7.77613 5.99999 7.99999 5.77613 7.99999 5.49999V2.38638L8.93179 3.31819C9.10753 3.49392 9.39245 3.49392 9.56819 3.31819C9.74392 3.14245 9.74392 2.85753 9.56819 2.68179L7.81819 0.93179ZM7.99999 9.49999C7.99999 9.22385 7.77613 8.99999 7.49999 8.99999C7.22385 8.99999 6.99999 9.22385 6.99999 9.49999V12.6136L6.06819 11.6818C5.89245 11.5061 5.60753 11.5061 5.43179 11.6818C5.25605 11.8575 5.25605 12.1424 5.43179 12.3182L7.18179 14.0682C7.35753 14.2439 7.64245 14.2439 7.81819 14.0682L9.56819 12.3182C9.74392 12.1424 9.74392 11.8575 9.56819 11.6818C9.39245 11.5061 9.10753 11.5061 8.93179 11.6818L7.99999 12.6136V9.49999ZM8.99999 7.49999C8.99999 7.22385 9.22385 6.99999 9.49999 6.99999H12.6136L11.6818 6.06819C11.5061 5.89245 11.5061 5.60753 11.6818 5.43179C11.8575 5.25605 12.1424 5.25605 12.3182 5.43179L14.0682 7.18179C14.2439 7.35753 14.2439 7.64245 14.0682 7.81819L12.3182 9.56819C12.1424 9.74392 11.8575 9.74392 11.6818 9.56819C11.5061 9.39245 11.5061 9.10753 11.6818 8.93179L12.6136 7.99999H9.49999C9.22385 7.99999 8.99999 7.77613 8.99999 7.49999ZM3.31819 6.06819L2.38638 6.99999H5.49999C5.77613 6.99999 5.99999 7.22385 5.99999 7.49999C5.99999 7.77613 5.77613 7.99999 5.49999 7.99999H2.38638L3.31819 8.93179C3.49392 9.10753 3.49392 9.39245 3.31819 9.56819C3.14245 9.74392 2.85753 9.74392 2.68179 9.56819L0.93179 7.81819C0.756054 7.64245 0.756054 7.35753 0.93179 7.18179L2.68179 5.43179C2.85753 5.25605 3.14245 5.25605 3.31819 5.43179C3.49392 5.60753 3.49392 5.89245 3.31819 6.06819Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3g = [\"color\"];\nvar NotionLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3g);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.25781 3.11684C3.67771 3.45796 3.83523 3.43193 4.62369 3.37933L12.0571 2.93299C12.2147 2.93299 12.0836 2.77571 12.0311 2.74957L10.7965 1.85711C10.56 1.67347 10.2448 1.46315 9.64083 1.51576L2.44308 2.04074C2.18059 2.06677 2.12815 2.19801 2.2327 2.30322L3.25781 3.11684ZM3.7041 4.84917V12.6704C3.7041 13.0907 3.91415 13.248 4.38693 13.222L12.5562 12.7493C13.0292 12.7233 13.0819 12.4341 13.0819 12.0927V4.32397C13.0819 3.98306 12.9508 3.79921 12.6612 3.82545L4.12422 4.32397C3.80918 4.35044 3.7041 4.50803 3.7041 4.84917ZM11.7688 5.26872C11.8212 5.50518 11.7688 5.74142 11.5319 5.76799L11.1383 5.84641V11.6205C10.7965 11.8042 10.4814 11.9092 10.2188 11.9092C9.79835 11.9092 9.69305 11.7779 9.37812 11.3844L6.80345 7.34249V11.2532L7.61816 11.437C7.61816 11.437 7.61816 11.9092 6.96086 11.9092L5.14879 12.0143C5.09615 11.9092 5.14879 11.647 5.33259 11.5944L5.80546 11.4634V6.29276L5.1489 6.24015C5.09625 6.00369 5.22739 5.66278 5.5954 5.63631L7.53935 5.50528L10.2188 9.5998V5.97765L9.53564 5.89924C9.4832 5.61018 9.69305 5.40028 9.95576 5.37425L11.7688 5.26872ZM1.83874 1.33212L9.32557 0.780787C10.245 0.701932 10.4815 0.754753 11.0594 1.17452L13.4492 2.85424C13.8436 3.14309 13.975 3.22173 13.975 3.53661V12.7493C13.975 13.3266 13.7647 13.6681 13.0293 13.7203L4.33492 14.2454C3.78291 14.2717 3.52019 14.193 3.23111 13.8253L1.47116 11.5419C1.1558 11.1216 1.02466 10.8071 1.02466 10.4392V2.25041C1.02466 1.77825 1.23504 1.38441 1.83874 1.33212Z\",\n fill: color\n }));\n});\n\nvar _excluded$3h = [\"color\"];\nvar OpacityIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3h);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.5 1.5C4.5 4.25 3 6.5 3 9C3 11.4853 5.01472 13.5 7.5 13.5C9.98528 13.5 12 11.4853 12 9C12 6.5 10.5 4.25 7.5 1.5ZM11 9C11 7.11203 9.97315 5.27195 7.5 2.87357C5.02686 5.27195 4 7.11203 4 9C4 10.933 5.567 12.5 7.5 12.5C9.433 12.5 11 10.933 11 9Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3i = [\"color\"];\nvar OpenInNewWindowIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3i);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12 13C12.5523 13 13 12.5523 13 12V3C13 2.44771 12.5523 2 12 2H3C2.44771 2 2 2.44771 2 3V6.5C2 6.77614 2.22386 7 2.5 7C2.77614 7 3 6.77614 3 6.5V3H12V12H8.5C8.22386 12 8 12.2239 8 12.5C8 12.7761 8.22386 13 8.5 13H12ZM9 6.5C9 6.5001 9 6.50021 9 6.50031V6.50035V9.5C9 9.77614 8.77614 10 8.5 10C8.22386 10 8 9.77614 8 9.5V7.70711L2.85355 12.8536C2.65829 13.0488 2.34171 13.0488 2.14645 12.8536C1.95118 12.6583 1.95118 12.3417 2.14645 12.1464L7.29289 7H5.5C5.22386 7 5 6.77614 5 6.5C5 6.22386 5.22386 6 5.5 6H8.5C8.56779 6 8.63244 6.01349 8.69139 6.03794C8.74949 6.06198 8.80398 6.09744 8.85143 6.14433C8.94251 6.23434 8.9992 6.35909 8.99999 6.49708L8.99999 6.49738\",\n fill: color\n }));\n});\n\nvar _excluded$3j = [\"color\"];\nvar OverlineIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3j);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.49985 1.10001C3.27894 1.10001 3.09985 1.27909 3.09985 1.50001C3.09985 1.72092 3.27894 1.90001 3.49985 1.90001H11.4999C11.7208 1.90001 11.8999 1.72092 11.8999 1.50001C11.8999 1.27909 11.7208 1.10001 11.4999 1.10001H3.49985ZM4.99995 4.25001C4.99995 3.97387 4.77609 3.75001 4.49995 3.75001C4.22381 3.75001 3.99995 3.97387 3.99995 4.25001V9.55001C3.99995 11.483 5.56695 13.05 7.49995 13.05C9.43295 13.05 11 11.483 11 9.55001V4.25001C11 3.97387 10.7761 3.75001 10.5 3.75001C10.2238 3.75001 9.99995 3.97387 9.99995 4.25001V9.55001C9.99995 10.9307 8.88066 12.05 7.49995 12.05C6.11924 12.05 4.99995 10.9307 4.99995 9.55001V4.25001Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3k = [\"color\"];\nvar PaddingIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3k);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2.85714 2H12.1429C12.6162 2 13 2.38376 13 2.85714V12.1429C13 12.6162 12.6162 13 12.1429 13H2.85714C2.38376 13 2 12.6162 2 12.1429V2.85714C2 2.38376 2.38376 2 2.85714 2ZM1 2.85714C1 1.83147 1.83147 1 2.85714 1H12.1429C13.1685 1 14 1.83147 14 2.85714V12.1429C14 13.1685 13.1685 14 12.1429 14H2.85714C1.83147 14 1 13.1685 1 12.1429V2.85714ZM7.49988 5.00012C7.77602 5.00012 7.99988 4.77626 7.99988 4.50012C7.99988 4.22398 7.77602 4.00012 7.49988 4.00012C7.22374 4.00012 6.99988 4.22398 6.99988 4.50012C6.99988 4.77626 7.22374 5.00012 7.49988 5.00012ZM4.49988 11.0001C4.77602 11.0001 4.99988 10.7763 4.99988 10.5001C4.99988 10.224 4.77602 10.0001 4.49988 10.0001C4.22374 10.0001 3.99988 10.224 3.99988 10.5001C3.99988 10.7763 4.22374 11.0001 4.49988 11.0001ZM4.99988 7.50012C4.99988 7.77626 4.77602 8.00012 4.49988 8.00012C4.22374 8.00012 3.99988 7.77626 3.99988 7.50012C3.99988 7.22398 4.22374 7.00012 4.49988 7.00012C4.77602 7.00012 4.99988 7.22398 4.99988 7.50012ZM4.49988 5.00012C4.77602 5.00012 4.99988 4.77626 4.99988 4.50012C4.99988 4.22398 4.77602 4.00012 4.49988 4.00012C4.22374 4.00012 3.99988 4.22398 3.99988 4.50012C3.99988 4.77626 4.22374 5.00012 4.49988 5.00012ZM10.9999 10.5001C10.9999 10.7763 10.776 11.0001 10.4999 11.0001C10.2237 11.0001 9.99988 10.7763 9.99988 10.5001C9.99988 10.224 10.2237 10.0001 10.4999 10.0001C10.776 10.0001 10.9999 10.224 10.9999 10.5001ZM10.4999 8.00012C10.776 8.00012 10.9999 7.77626 10.9999 7.50012C10.9999 7.22398 10.776 7.00012 10.4999 7.00012C10.2237 7.00012 9.99988 7.22398 9.99988 7.50012C9.99988 7.77626 10.2237 8.00012 10.4999 8.00012ZM10.9999 4.50012C10.9999 4.77626 10.776 5.00012 10.4999 5.00012C10.2237 5.00012 9.99988 4.77626 9.99988 4.50012C9.99988 4.22398 10.2237 4.00012 10.4999 4.00012C10.776 4.00012 10.9999 4.22398 10.9999 4.50012ZM7.49988 11.0001C7.77602 11.0001 7.99988 10.7763 7.99988 10.5001C7.99988 10.224 7.77602 10.0001 7.49988 10.0001C7.22374 10.0001 6.99988 10.224 6.99988 10.5001C6.99988 10.7763 7.22374 11.0001 7.49988 11.0001Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3l = [\"color\"];\nvar PaperPlaneIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3l);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1.20308 1.04312C1.00481 0.954998 0.772341 1.0048 0.627577 1.16641C0.482813 1.32802 0.458794 1.56455 0.568117 1.75196L3.92115 7.50002L0.568117 13.2481C0.458794 13.4355 0.482813 13.672 0.627577 13.8336C0.772341 13.9952 1.00481 14.045 1.20308 13.9569L14.7031 7.95693C14.8836 7.87668 15 7.69762 15 7.50002C15 7.30243 14.8836 7.12337 14.7031 7.04312L1.20308 1.04312ZM4.84553 7.10002L2.21234 2.586L13.2689 7.50002L2.21234 12.414L4.84552 7.90002H9C9.22092 7.90002 9.4 7.72094 9.4 7.50002C9.4 7.27911 9.22092 7.10002 9 7.10002H4.84553Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3m = [\"color\"];\nvar PauseIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3m);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M6.04995 2.74998C6.04995 2.44623 5.80371 2.19998 5.49995 2.19998C5.19619 2.19998 4.94995 2.44623 4.94995 2.74998V12.25C4.94995 12.5537 5.19619 12.8 5.49995 12.8C5.80371 12.8 6.04995 12.5537 6.04995 12.25V2.74998ZM10.05 2.74998C10.05 2.44623 9.80371 2.19998 9.49995 2.19998C9.19619 2.19998 8.94995 2.44623 8.94995 2.74998V12.25C8.94995 12.5537 9.19619 12.8 9.49995 12.8C9.80371 12.8 10.05 12.5537 10.05 12.25V2.74998Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3n = [\"color\"];\nvar Pencil1Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3n);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M11.8536 1.14645C11.6583 0.951184 11.3417 0.951184 11.1465 1.14645L3.71455 8.57836C3.62459 8.66832 3.55263 8.77461 3.50251 8.89155L2.04044 12.303C1.9599 12.491 2.00189 12.709 2.14646 12.8536C2.29103 12.9981 2.50905 13.0401 2.69697 12.9596L6.10847 11.4975C6.2254 11.4474 6.3317 11.3754 6.42166 11.2855L13.8536 3.85355C14.0488 3.65829 14.0488 3.34171 13.8536 3.14645L11.8536 1.14645ZM4.42166 9.28547L11.5 2.20711L12.7929 3.5L5.71455 10.5784L4.21924 11.2192L3.78081 10.7808L4.42166 9.28547Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3o = [\"color\"];\nvar Pencil2Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3o);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M12.1464 1.14645C12.3417 0.951184 12.6583 0.951184 12.8535 1.14645L14.8535 3.14645C15.0488 3.34171 15.0488 3.65829 14.8535 3.85355L10.9109 7.79618C10.8349 7.87218 10.7471 7.93543 10.651 7.9835L6.72359 9.94721C6.53109 10.0435 6.29861 10.0057 6.14643 9.85355C5.99425 9.70137 5.95652 9.46889 6.05277 9.27639L8.01648 5.34897C8.06455 5.25283 8.1278 5.16507 8.2038 5.08907L12.1464 1.14645ZM12.5 2.20711L8.91091 5.79618L7.87266 7.87267L8.12731 8.12732L10.2038 7.08907L13.7929 3.5L12.5 2.20711ZM9.99998 2L8.99998 3H4.9C4.47171 3 4.18056 3.00039 3.95552 3.01877C3.73631 3.03668 3.62421 3.06915 3.54601 3.10899C3.35785 3.20487 3.20487 3.35785 3.10899 3.54601C3.06915 3.62421 3.03669 3.73631 3.01878 3.95552C3.00039 4.18056 3 4.47171 3 4.9V11.1C3 11.5283 3.00039 11.8194 3.01878 12.0445C3.03669 12.2637 3.06915 12.3758 3.10899 12.454C3.20487 12.6422 3.35785 12.7951 3.54601 12.891C3.62421 12.9309 3.73631 12.9633 3.95552 12.9812C4.18056 12.9996 4.47171 13 4.9 13H11.1C11.5283 13 11.8194 12.9996 12.0445 12.9812C12.2637 12.9633 12.3758 12.9309 12.454 12.891C12.6422 12.7951 12.7951 12.6422 12.891 12.454C12.9309 12.3758 12.9633 12.2637 12.9812 12.0445C12.9996 11.8194 13 11.5283 13 11.1V6.99998L14 5.99998V11.1V11.1207C14 11.5231 14 11.8553 13.9779 12.1259C13.9549 12.407 13.9057 12.6653 13.782 12.908C13.5903 13.2843 13.2843 13.5903 12.908 13.782C12.6653 13.9057 12.407 13.9549 12.1259 13.9779C11.8553 14 11.5231 14 11.1207 14H11.1H4.9H4.87934C4.47686 14 4.14468 14 3.87409 13.9779C3.59304 13.9549 3.33469 13.9057 3.09202 13.782C2.7157 13.5903 2.40973 13.2843 2.21799 12.908C2.09434 12.6653 2.04506 12.407 2.0221 12.1259C1.99999 11.8553 1.99999 11.5231 2 11.1207V11.1206V11.1V4.9V4.87935V4.87932V4.87931C1.99999 4.47685 1.99999 4.14468 2.0221 3.87409C2.04506 3.59304 2.09434 3.33469 2.21799 3.09202C2.40973 2.71569 2.7157 2.40973 3.09202 2.21799C3.33469 2.09434 3.59304 2.04506 3.87409 2.0221C4.14468 1.99999 4.47685 1.99999 4.87932 2H4.87935H4.9H9.99998Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3p = [\"color\"];\nvar PersonIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3p);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.5 0.875C5.49797 0.875 3.875 2.49797 3.875 4.5C3.875 6.15288 4.98124 7.54738 6.49373 7.98351C5.2997 8.12901 4.27557 8.55134 3.50407 9.31167C2.52216 10.2794 2.02502 11.72 2.02502 13.5999C2.02502 13.8623 2.23769 14.0749 2.50002 14.0749C2.76236 14.0749 2.97502 13.8623 2.97502 13.5999C2.97502 11.8799 3.42786 10.7206 4.17091 9.9883C4.91536 9.25463 6.02674 8.87499 7.49995 8.87499C8.97317 8.87499 10.0846 9.25463 10.8291 9.98831C11.5721 10.7206 12.025 11.8799 12.025 13.5999C12.025 13.8623 12.2376 14.0749 12.5 14.0749C12.7623 14.075 12.975 13.8623 12.975 13.6C12.975 11.72 12.4778 10.2794 11.4959 9.31166C10.7244 8.55135 9.70025 8.12903 8.50625 7.98352C10.0187 7.5474 11.125 6.15289 11.125 4.5C11.125 2.49797 9.50203 0.875 7.5 0.875ZM4.825 4.5C4.825 3.02264 6.02264 1.825 7.5 1.825C8.97736 1.825 10.175 3.02264 10.175 4.5C10.175 5.97736 8.97736 7.175 7.5 7.175C6.02264 7.175 4.825 5.97736 4.825 4.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3q = [\"color\"];\nvar PieChartIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3q);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1.85001 7.50043C1.85001 4.37975 4.37963 1.85001 7.50001 1.85001C10.6204 1.85001 13.15 4.37975 13.15 7.50043C13.15 10.6211 10.6204 13.1509 7.50001 13.1509C4.37963 13.1509 1.85001 10.6211 1.85001 7.50043ZM7.50001 0.850006C3.82728 0.850006 0.850006 3.82753 0.850006 7.50043C0.850006 11.1733 3.82728 14.1509 7.50001 14.1509C11.1727 14.1509 14.15 11.1733 14.15 7.50043C14.15 3.82753 11.1727 0.850006 7.50001 0.850006ZM7.00001 8.00001V3.12811C7.16411 3.10954 7.33094 3.10001 7.50001 3.10001C9.93006 3.10001 11.9 5.07014 11.9 7.50043C11.9 7.66935 11.8905 7.83604 11.872 8.00001H7.00001Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3r = [\"color\"];\nvar PilcrowIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3r);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3 5.5C3 7.983 4.99169 9 7 9V12.5C7 12.7761 7.22386 13 7.5 13C7.77614 13 8 12.7761 8 12.5V9V3.1H9V12.5C9 12.7761 9.22386 13 9.5 13C9.77614 13 10 12.7761 10 12.5V3.1H11.5C11.8038 3.1 12.05 2.85376 12.05 2.55C12.05 2.24624 11.8038 2 11.5 2H9.5H8H7.5H7C4.99169 2 3 3.017 3 5.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3s = [\"color\"];\nvar PinBottomIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3s);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M13.5 13.95C13.7485 13.95 13.95 13.7485 13.95 13.5C13.95 13.2514 13.7485 13.05 13.5 13.05L1.49995 13.05C1.25142 13.05 1.04995 13.2514 1.04995 13.5C1.04995 13.7485 1.25142 13.95 1.49995 13.95L13.5 13.95ZM11.0681 7.5683C11.2439 7.39257 11.2439 7.10764 11.0681 6.93191C10.8924 6.75617 10.6075 6.75617 10.4317 6.93191L7.94993 9.41371L7.94993 1.49998C7.94993 1.25146 7.74846 1.04998 7.49993 1.04998C7.2514 1.04998 7.04993 1.25146 7.04993 1.49998L7.04993 9.41371L4.56813 6.93191C4.39239 6.75617 4.10746 6.75617 3.93173 6.93191C3.75599 7.10764 3.75599 7.39257 3.93173 7.5683L7.18173 10.8183C7.35746 10.994 7.64239 10.994 7.81812 10.8183L11.0681 7.5683Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3t = [\"color\"];\nvar PinLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3t);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2.05005 13.5C2.05005 13.7485 2.25152 13.95 2.50005 13.95C2.74858 13.95 2.95005 13.7485 2.95005 13.5L2.95005 1.49995C2.95005 1.25142 2.74858 1.04995 2.50005 1.04995C2.25152 1.04995 2.05005 1.25142 2.05005 1.49995L2.05005 13.5ZM8.4317 11.0681C8.60743 11.2439 8.89236 11.2439 9.06809 11.0681C9.24383 10.8924 9.24383 10.6075 9.06809 10.4317L6.58629 7.94993L14.5 7.94993C14.7485 7.94993 14.95 7.74846 14.95 7.49993C14.95 7.2514 14.7485 7.04993 14.5 7.04993L6.58629 7.04993L9.06809 4.56813C9.24383 4.39239 9.24383 4.10746 9.06809 3.93173C8.89236 3.75599 8.60743 3.75599 8.4317 3.93173L5.1817 7.18173C5.00596 7.35746 5.00596 7.64239 5.1817 7.81812L8.4317 11.0681Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3u = [\"color\"];\nvar PinRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3u);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M12.95 1.50005C12.95 1.25152 12.7485 1.05005 12.5 1.05005C12.2514 1.05005 12.05 1.25152 12.05 1.50005L12.05 13.5C12.05 13.7486 12.2514 13.95 12.5 13.95C12.7485 13.95 12.95 13.7486 12.95 13.5L12.95 1.50005ZM6.5683 3.93188C6.39257 3.75614 6.10764 3.75614 5.93191 3.93188C5.75617 4.10761 5.75617 4.39254 5.93191 4.56827L8.41371 7.05007L0.499984 7.05007C0.251456 7.05007 0.0499847 7.25155 0.0499847 7.50007C0.0499846 7.7486 0.251457 7.95007 0.499984 7.95007L8.41371 7.95007L5.93191 10.4319C5.75617 10.6076 5.75617 10.8925 5.93191 11.0683C6.10764 11.244 6.39257 11.244 6.56831 11.0683L9.8183 7.81827C9.99404 7.64254 9.99404 7.35761 9.8183 7.18188L6.5683 3.93188Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3v = [\"color\"];\nvar PinTopIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3v);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1.50005 1.05005C1.25152 1.05005 1.05005 1.25152 1.05005 1.50005C1.05005 1.74858 1.25152 1.95005 1.50005 1.95005L13.5 1.95005C13.7486 1.95005 13.95 1.74858 13.95 1.50005C13.95 1.25152 13.7486 1.05005 13.5 1.05005H1.50005ZM3.93188 7.43169C3.75614 7.60743 3.75614 7.89236 3.93188 8.06809C4.10761 8.24383 4.39254 8.24383 4.56827 8.06809L7.05007 5.58629V13.5C7.05007 13.7485 7.25155 13.95 7.50007 13.95C7.7486 13.95 7.95007 13.7485 7.95007 13.5L7.95007 5.58629L10.4319 8.06809C10.6076 8.24383 10.8925 8.24383 11.0683 8.06809C11.244 7.89235 11.244 7.60743 11.0683 7.43169L7.81827 4.18169C7.64254 4.00596 7.35761 4.00596 7.18188 4.18169L3.93188 7.43169Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3w = [\"color\"];\nvar PlayIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3w);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.24182 2.32181C3.3919 2.23132 3.5784 2.22601 3.73338 2.30781L12.7334 7.05781C12.8974 7.14436 13 7.31457 13 7.5C13 7.68543 12.8974 7.85564 12.7334 7.94219L3.73338 12.6922C3.5784 12.774 3.3919 12.7687 3.24182 12.6782C3.09175 12.5877 3 12.4252 3 12.25V2.75C3 2.57476 3.09175 2.4123 3.24182 2.32181ZM4 3.57925V11.4207L11.4288 7.5L4 3.57925Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3x = [\"color\"];\nvar PlusIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3x);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M8 2.75C8 2.47386 7.77614 2.25 7.5 2.25C7.22386 2.25 7 2.47386 7 2.75V7H2.75C2.47386 7 2.25 7.22386 2.25 7.5C2.25 7.77614 2.47386 8 2.75 8H7V12.25C7 12.5261 7.22386 12.75 7.5 12.75C7.77614 12.75 8 12.5261 8 12.25V8H12.25C12.5261 8 12.75 7.77614 12.75 7.5C12.75 7.22386 12.5261 7 12.25 7H8V2.75Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3y = [\"color\"];\nvar PlusCircledIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3y);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM1.82707 7.49972C1.82707 4.36671 4.36689 1.82689 7.49991 1.82689C10.6329 1.82689 13.1727 4.36671 13.1727 7.49972C13.1727 10.6327 10.6329 13.1726 7.49991 13.1726C4.36689 13.1726 1.82707 10.6327 1.82707 7.49972ZM7.50003 4C7.77617 4 8.00003 4.22386 8.00003 4.5V7H10.5C10.7762 7 11 7.22386 11 7.5C11 7.77614 10.7762 8 10.5 8H8.00003V10.5C8.00003 10.7761 7.77617 11 7.50003 11C7.22389 11 7.00003 10.7761 7.00003 10.5V8H4.50003C4.22389 8 4.00003 7.77614 4.00003 7.5C4.00003 7.22386 4.22389 7 4.50003 7H7.00003V4.5C7.00003 4.22386 7.22389 4 7.50003 4Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3z = [\"color\"];\nvar QuestionMarkIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3z);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M5.07505 4.10001C5.07505 2.91103 6.25727 1.92502 7.50005 1.92502C8.74283 1.92502 9.92505 2.91103 9.92505 4.10001C9.92505 5.19861 9.36782 5.71436 8.61854 6.37884L8.58757 6.4063C7.84481 7.06467 6.92505 7.87995 6.92505 9.5C6.92505 9.81757 7.18248 10.075 7.50005 10.075C7.81761 10.075 8.07505 9.81757 8.07505 9.5C8.07505 8.41517 8.62945 7.90623 9.38156 7.23925L9.40238 7.22079C10.1496 6.55829 11.075 5.73775 11.075 4.10001C11.075 2.12757 9.21869 0.775024 7.50005 0.775024C5.7814 0.775024 3.92505 2.12757 3.92505 4.10001C3.92505 4.41758 4.18249 4.67501 4.50005 4.67501C4.81761 4.67501 5.07505 4.41758 5.07505 4.10001ZM7.50005 13.3575C7.9833 13.3575 8.37505 12.9657 8.37505 12.4825C8.37505 11.9992 7.9833 11.6075 7.50005 11.6075C7.0168 11.6075 6.62505 11.9992 6.62505 12.4825C6.62505 12.9657 7.0168 13.3575 7.50005 13.3575Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3A = [\"color\"];\nvar QuestionMarkCircledIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3A);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M0.877075 7.49972C0.877075 3.84204 3.84222 0.876892 7.49991 0.876892C11.1576 0.876892 14.1227 3.84204 14.1227 7.49972C14.1227 11.1574 11.1576 14.1226 7.49991 14.1226C3.84222 14.1226 0.877075 11.1574 0.877075 7.49972ZM7.49991 1.82689C4.36689 1.82689 1.82708 4.36671 1.82708 7.49972C1.82708 10.6327 4.36689 13.1726 7.49991 13.1726C10.6329 13.1726 13.1727 10.6327 13.1727 7.49972C13.1727 4.36671 10.6329 1.82689 7.49991 1.82689ZM8.24993 10.5C8.24993 10.9142 7.91414 11.25 7.49993 11.25C7.08571 11.25 6.74993 10.9142 6.74993 10.5C6.74993 10.0858 7.08571 9.75 7.49993 9.75C7.91414 9.75 8.24993 10.0858 8.24993 10.5ZM6.05003 6.25C6.05003 5.57211 6.63511 4.925 7.50003 4.925C8.36496 4.925 8.95003 5.57211 8.95003 6.25C8.95003 6.74118 8.68002 6.99212 8.21447 7.27494C8.16251 7.30651 8.10258 7.34131 8.03847 7.37854L8.03841 7.37858C7.85521 7.48497 7.63788 7.61119 7.47449 7.73849C7.23214 7.92732 6.95003 8.23198 6.95003 8.7C6.95004 9.00376 7.19628 9.25 7.50004 9.25C7.8024 9.25 8.04778 9.00601 8.05002 8.70417L8.05056 8.7033C8.05924 8.6896 8.08493 8.65735 8.15058 8.6062C8.25207 8.52712 8.36508 8.46163 8.51567 8.37436L8.51571 8.37433C8.59422 8.32883 8.68296 8.27741 8.78559 8.21506C9.32004 7.89038 10.05 7.35382 10.05 6.25C10.05 4.92789 8.93511 3.825 7.50003 3.825C6.06496 3.825 4.95003 4.92789 4.95003 6.25C4.95003 6.55376 5.19628 6.8 5.50003 6.8C5.80379 6.8 6.05003 6.55376 6.05003 6.25Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3B = [\"color\"];\nvar QuoteIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3B);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M9.42503 3.44136C10.0561 3.23654 10.7837 3.2402 11.3792 3.54623C12.7532 4.25224 13.3477 6.07191 12.7946 8C12.5465 8.8649 12.1102 9.70472 11.1861 10.5524C10.262 11.4 8.98034 11.9 8.38571 11.9C8.17269 11.9 8 11.7321 8 11.525C8 11.3179 8.17644 11.15 8.38571 11.15C9.06497 11.15 9.67189 10.7804 10.3906 10.236C10.9406 9.8193 11.3701 9.28633 11.608 8.82191C12.0628 7.93367 12.0782 6.68174 11.3433 6.34901C10.9904 6.73455 10.5295 6.95946 9.97725 6.95946C8.7773 6.95946 8.0701 5.99412 8.10051 5.12009C8.12957 4.28474 8.66032 3.68954 9.42503 3.44136ZM3.42503 3.44136C4.05614 3.23654 4.78366 3.2402 5.37923 3.54623C6.7532 4.25224 7.34766 6.07191 6.79462 8C6.54654 8.8649 6.11019 9.70472 5.1861 10.5524C4.26201 11.4 2.98034 11.9 2.38571 11.9C2.17269 11.9 2 11.7321 2 11.525C2 11.3179 2.17644 11.15 2.38571 11.15C3.06497 11.15 3.67189 10.7804 4.39058 10.236C4.94065 9.8193 5.37014 9.28633 5.60797 8.82191C6.06282 7.93367 6.07821 6.68174 5.3433 6.34901C4.99037 6.73455 4.52948 6.95946 3.97725 6.95946C2.7773 6.95946 2.0701 5.99412 2.10051 5.12009C2.12957 4.28474 2.66032 3.68954 3.42503 3.44136Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3C = [\"color\"];\nvar RadiobuttonIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3C);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.49985 0.877045C3.84216 0.877045 0.877014 3.84219 0.877014 7.49988C0.877014 11.1575 3.84216 14.1227 7.49985 14.1227C11.1575 14.1227 14.1227 11.1575 14.1227 7.49988C14.1227 3.84219 11.1575 0.877045 7.49985 0.877045ZM1.82701 7.49988C1.82701 4.36686 4.36683 1.82704 7.49985 1.82704C10.6328 1.82704 13.1727 4.36686 13.1727 7.49988C13.1727 10.6329 10.6328 13.1727 7.49985 13.1727C4.36683 13.1727 1.82701 10.6329 1.82701 7.49988ZM7.49999 9.49999C8.60456 9.49999 9.49999 8.60456 9.49999 7.49999C9.49999 6.39542 8.60456 5.49999 7.49999 5.49999C6.39542 5.49999 5.49999 6.39542 5.49999 7.49999C5.49999 8.60456 6.39542 9.49999 7.49999 9.49999Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3D = [\"color\"];\nvar ReaderIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3D);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M4.2 1H4.17741H4.1774C3.86936 0.999988 3.60368 0.999978 3.38609 1.02067C3.15576 1.04257 2.92825 1.09113 2.71625 1.22104C2.51442 1.34472 2.34473 1.51442 2.22104 1.71625C2.09113 1.92825 2.04257 2.15576 2.02067 2.38609C1.99998 2.60367 1.99999 2.86935 2 3.17738V3.1774V3.2V11.8V11.8226V11.8226C1.99999 12.1307 1.99998 12.3963 2.02067 12.6139C2.04257 12.8442 2.09113 13.0717 2.22104 13.2837C2.34473 13.4856 2.51442 13.6553 2.71625 13.779C2.92825 13.9089 3.15576 13.9574 3.38609 13.9793C3.60368 14 3.86937 14 4.17741 14H4.2H10.8H10.8226C11.1306 14 11.3963 14 11.6139 13.9793C11.8442 13.9574 12.0717 13.9089 12.2837 13.779C12.4856 13.6553 12.6553 13.4856 12.779 13.2837C12.9089 13.0717 12.9574 12.8442 12.9793 12.6139C13 12.3963 13 12.1306 13 11.8226V11.8V3.2V3.17741C13 2.86936 13 2.60368 12.9793 2.38609C12.9574 2.15576 12.9089 1.92825 12.779 1.71625C12.6553 1.51442 12.4856 1.34472 12.2837 1.22104C12.0717 1.09113 11.8442 1.04257 11.6139 1.02067C11.3963 0.999978 11.1306 0.999988 10.8226 1H10.8H4.2ZM3.23875 2.07368C3.26722 2.05623 3.32362 2.03112 3.48075 2.01618C3.64532 2.00053 3.86298 2 4.2 2H10.8C11.137 2 11.3547 2.00053 11.5193 2.01618C11.6764 2.03112 11.7328 2.05623 11.7613 2.07368C11.8285 2.11491 11.8851 2.17147 11.9263 2.23875C11.9438 2.26722 11.9689 2.32362 11.9838 2.48075C11.9995 2.64532 12 2.86298 12 3.2V11.8C12 12.137 11.9995 12.3547 11.9838 12.5193C11.9689 12.6764 11.9438 12.7328 11.9263 12.7613C11.8851 12.8285 11.8285 12.8851 11.7613 12.9263C11.7328 12.9438 11.6764 12.9689 11.5193 12.9838C11.3547 12.9995 11.137 13 10.8 13H4.2C3.86298 13 3.64532 12.9995 3.48075 12.9838C3.32362 12.9689 3.26722 12.9438 3.23875 12.9263C3.17147 12.8851 3.11491 12.8285 3.07368 12.7613C3.05624 12.7328 3.03112 12.6764 3.01618 12.5193C3.00053 12.3547 3 12.137 3 11.8V3.2C3 2.86298 3.00053 2.64532 3.01618 2.48075C3.03112 2.32362 3.05624 2.26722 3.07368 2.23875C3.11491 2.17147 3.17147 2.11491 3.23875 2.07368ZM5 10C4.72386 10 4.5 10.2239 4.5 10.5C4.5 10.7761 4.72386 11 5 11H8C8.27614 11 8.5 10.7761 8.5 10.5C8.5 10.2239 8.27614 10 8 10H5ZM4.5 7.5C4.5 7.22386 4.72386 7 5 7H10C10.2761 7 10.5 7.22386 10.5 7.5C10.5 7.77614 10.2761 8 10 8H5C4.72386 8 4.5 7.77614 4.5 7.5ZM5 4C4.72386 4 4.5 4.22386 4.5 4.5C4.5 4.77614 4.72386 5 5 5H10C10.2761 5 10.5 4.77614 10.5 4.5C10.5 4.22386 10.2761 4 10 4H5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3E = [\"color\"];\nvar ReloadIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3E);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1.84998 7.49998C1.84998 4.66458 4.05979 1.84998 7.49998 1.84998C10.2783 1.84998 11.6515 3.9064 12.2367 5H10.5C10.2239 5 10 5.22386 10 5.5C10 5.77614 10.2239 6 10.5 6H13.5C13.7761 6 14 5.77614 14 5.5V2.5C14 2.22386 13.7761 2 13.5 2C13.2239 2 13 2.22386 13 2.5V4.31318C12.2955 3.07126 10.6659 0.849976 7.49998 0.849976C3.43716 0.849976 0.849976 4.18537 0.849976 7.49998C0.849976 10.8146 3.43716 14.15 7.49998 14.15C9.44382 14.15 11.0622 13.3808 12.2145 12.2084C12.8315 11.5806 13.3133 10.839 13.6418 10.0407C13.7469 9.78536 13.6251 9.49315 13.3698 9.38806C13.1144 9.28296 12.8222 9.40478 12.7171 9.66014C12.4363 10.3425 12.0251 10.9745 11.5013 11.5074C10.5295 12.4963 9.16504 13.15 7.49998 13.15C4.05979 13.15 1.84998 10.3354 1.84998 7.49998Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3F = [\"color\"];\nvar ResetIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3F);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M4.85355 2.14645C5.04882 2.34171 5.04882 2.65829 4.85355 2.85355L3.70711 4H9C11.4853 4 13.5 6.01472 13.5 8.5C13.5 10.9853 11.4853 13 9 13H5C4.72386 13 4.5 12.7761 4.5 12.5C4.5 12.2239 4.72386 12 5 12H9C10.933 12 12.5 10.433 12.5 8.5C12.5 6.567 10.933 5 9 5H3.70711L4.85355 6.14645C5.04882 6.34171 5.04882 6.65829 4.85355 6.85355C4.65829 7.04882 4.34171 7.04882 4.14645 6.85355L2.14645 4.85355C1.95118 4.65829 1.95118 4.34171 2.14645 4.14645L4.14645 2.14645C4.34171 1.95118 4.65829 1.95118 4.85355 2.14645Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3G = [\"color\"];\nvar ResumeIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3G);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.04995 2.74995C3.04995 2.44619 2.80371 2.19995 2.49995 2.19995C2.19619 2.19995 1.94995 2.44619 1.94995 2.74995V12.25C1.94995 12.5537 2.19619 12.8 2.49995 12.8C2.80371 12.8 3.04995 12.5537 3.04995 12.25V2.74995ZM5.73333 2.30776C5.57835 2.22596 5.39185 2.23127 5.24177 2.32176C5.0917 2.41225 4.99995 2.57471 4.99995 2.74995V12.25C4.99995 12.4252 5.0917 12.5877 5.24177 12.6781C5.39185 12.7686 5.57835 12.7739 5.73333 12.6921L14.7333 7.94214C14.8973 7.85559 15 7.68539 15 7.49995C15 7.31452 14.8973 7.14431 14.7333 7.05776L5.73333 2.30776ZM5.99995 11.4207V3.5792L13.4287 7.49995L5.99995 11.4207Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3H = [\"color\"];\nvar RocketIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3H);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M6.85357 3.85355L7.65355 3.05353C8.2981 2.40901 9.42858 1.96172 10.552 1.80125C11.1056 1.72217 11.6291 1.71725 12.0564 1.78124C12.4987 1.84748 12.7698 1.97696 12.8965 2.10357C13.0231 2.23018 13.1526 2.50125 13.2188 2.94357C13.2828 3.37086 13.2779 3.89439 13.1988 4.44801C13.0383 5.57139 12.591 6.70188 11.9464 7.34645L7.49999 11.7929L6.35354 10.6465C6.15827 10.4512 5.84169 10.4512 5.64643 10.6465C5.45117 10.8417 5.45117 11.1583 5.64643 11.3536L7.14644 12.8536C7.34171 13.0488 7.65829 13.0488 7.85355 12.8536L8.40073 12.3064L9.57124 14.2572C9.65046 14.3893 9.78608 14.4774 9.9389 14.4963C10.0917 14.5151 10.2447 14.4624 10.3535 14.3536L12.3535 12.3536C12.4648 12.2423 12.5172 12.0851 12.495 11.9293L12.0303 8.67679L12.6536 8.05355C13.509 7.19808 14.0117 5.82855 14.1887 4.58943C14.2784 3.9618 14.2891 3.33847 14.2078 2.79546C14.1287 2.26748 13.9519 1.74482 13.6035 1.39645C13.2552 1.04809 12.7325 0.871332 12.2045 0.792264C11.6615 0.710945 11.0382 0.721644 10.4105 0.8113C9.17143 0.988306 7.80189 1.491 6.94644 2.34642L6.32322 2.96968L3.07071 2.50504C2.91492 2.48278 2.75773 2.53517 2.64645 2.64646L0.646451 4.64645C0.537579 4.75533 0.484938 4.90829 0.50375 5.0611C0.522563 5.21391 0.61073 5.34954 0.742757 5.42876L2.69364 6.59928L2.14646 7.14645C2.0527 7.24022 2.00002 7.3674 2.00002 7.50001C2.00002 7.63261 2.0527 7.75979 2.14646 7.85356L3.64647 9.35356C3.84173 9.54883 4.15831 9.54883 4.35357 9.35356C4.54884 9.1583 4.54884 8.84172 4.35357 8.64646L3.20712 7.50001L3.85357 6.85356L6.85357 3.85355ZM10.0993 13.1936L9.12959 11.5775L11.1464 9.56067L11.4697 11.8232L10.0993 13.1936ZM3.42251 5.87041L5.43935 3.85356L3.17678 3.53034L1.80638 4.90074L3.42251 5.87041ZM2.35356 10.3535C2.54882 10.1583 2.54882 9.8417 2.35356 9.64644C2.1583 9.45118 1.84171 9.45118 1.64645 9.64644L0.646451 10.6464C0.451188 10.8417 0.451188 11.1583 0.646451 11.3535C0.841713 11.5488 1.1583 11.5488 1.35356 11.3535L2.35356 10.3535ZM3.85358 11.8536C4.04884 11.6583 4.04885 11.3417 3.85359 11.1465C3.65833 10.9512 3.34175 10.9512 3.14648 11.1465L1.14645 13.1464C0.95119 13.3417 0.951187 13.6583 1.14645 13.8535C1.34171 14.0488 1.65829 14.0488 1.85355 13.8536L3.85358 11.8536ZM5.35356 13.3535C5.54882 13.1583 5.54882 12.8417 5.35356 12.6464C5.1583 12.4512 4.84171 12.4512 4.64645 12.6464L3.64645 13.6464C3.45119 13.8417 3.45119 14.1583 3.64645 14.3535C3.84171 14.5488 4.1583 14.5488 4.35356 14.3535L5.35356 13.3535ZM9.49997 6.74881C10.1897 6.74881 10.7488 6.1897 10.7488 5.5C10.7488 4.8103 10.1897 4.25118 9.49997 4.25118C8.81026 4.25118 8.25115 4.8103 8.25115 5.5C8.25115 6.1897 8.81026 6.74881 9.49997 6.74881Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3I = [\"color\"];\nvar RotateCounterClockwiseIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3I);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.59664 2.93628C7.76085 3.06401 8.00012 2.94698 8.00012 2.73895V1.99998C9.98143 2 11.1848 2.3637 11.9105 3.08945C12.6363 3.81522 13 5.0186 13 6.99998C13 7.27613 13.2239 7.49998 13.5 7.49998C13.7761 7.49998 14 7.27613 14 6.99998C14 4.9438 13.6325 3.39719 12.6176 2.38234C11.6028 1.36752 10.0562 0.999999 8.00012 0.999984V0.261266C8.00012 0.0532293 7.76085 -0.0637944 7.59664 0.063928L6.00384 1.30277C5.87516 1.40286 5.87516 1.59735 6.00384 1.69744L7.59664 2.93628ZM9.5 5H2.5C2.22386 5 2 5.22386 2 5.5V12.5C2 12.7761 2.22386 13 2.5 13H9.5C9.77614 13 10 12.7761 10 12.5V5.5C10 5.22386 9.77614 5 9.5 5ZM2.5 4C1.67157 4 1 4.67157 1 5.5V12.5C1 13.3284 1.67157 14 2.5 14H9.5C10.3284 14 11 13.3284 11 12.5V5.5C11 4.67157 10.3284 4 9.5 4H2.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3J = [\"color\"];\nvar RowSpacingIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3J);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.81832 0.68179C7.64258 0.506054 7.35766 0.506054 7.18192 0.68179L5.18192 2.68179C5.00619 2.85753 5.00619 3.14245 5.18192 3.31819C5.35766 3.49392 5.64258 3.49392 5.81832 3.31819L7.05012 2.08638L7.05012 5.50023C7.05012 5.74876 7.25159 5.95023 7.50012 5.95023C7.74865 5.95023 7.95012 5.74876 7.95012 5.50023L7.95012 2.08638L9.18192 3.31819C9.35766 3.49392 9.64258 3.49392 9.81832 3.31819C9.99406 3.14245 9.99406 2.85753 9.81832 2.68179L7.81832 0.68179ZM7.95012 12.9136V9.50023C7.95012 9.2517 7.74865 9.05023 7.50012 9.05023C7.25159 9.05023 7.05012 9.2517 7.05012 9.50023V12.9136L5.81832 11.6818C5.64258 11.5061 5.35766 11.5061 5.18192 11.6818C5.00619 11.8575 5.00619 12.1424 5.18192 12.3182L7.18192 14.3182C7.26632 14.4026 7.38077 14.45 7.50012 14.45C7.61947 14.45 7.73393 14.4026 7.81832 14.3182L9.81832 12.3182C9.99406 12.1424 9.99406 11.8575 9.81832 11.6818C9.64258 11.5061 9.35766 11.5061 9.18192 11.6818L7.95012 12.9136ZM1.49994 7.00017C1.2238 7.00017 0.999939 7.22403 0.999939 7.50017C0.999939 7.77631 1.2238 8.00017 1.49994 8.00017L13.4999 8.00017C13.7761 8.00017 13.9999 7.77631 13.9999 7.50017C13.9999 7.22403 13.7761 7.00017 13.4999 7.00017L1.49994 7.00017Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3K = [\"color\"];\nvar RowsIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3K);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M14 12.85L1 12.85L1 14.15L14 14.15L14 12.85ZM14 8.85002L1 8.85002L1 10.15L14 10.15L14 8.85002ZM1 4.85003L14 4.85003L14 6.15003L1 6.15002L1 4.85003ZM14 0.850025L1 0.850025L1 2.15002L14 2.15002L14 0.850025Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3L = [\"color\"];\nvar RulerHorizontalIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3L);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M0.5 4C0.223858 4 0 4.22386 0 4.5V10.5C0 10.7761 0.223858 11 0.5 11H14.5C14.7761 11 15 10.7761 15 10.5V4.5C15 4.22386 14.7761 4 14.5 4H0.5ZM1 10V5H2.075V7.5C2.075 7.73472 2.26528 7.925 2.5 7.925C2.73472 7.925 2.925 7.73472 2.925 7.5V5H4.075V6.5C4.075 6.73472 4.26528 6.925 4.5 6.925C4.73472 6.925 4.925 6.73472 4.925 6.5V5H6.075V6.5C6.075 6.73472 6.26528 6.925 6.5 6.925C6.73472 6.925 6.925 6.73472 6.925 6.5V5H8.075V7.5C8.075 7.73472 8.26528 7.925 8.5 7.925C8.73472 7.925 8.925 7.73472 8.925 7.5V5H10.075V6.5C10.075 6.73472 10.2653 6.925 10.5 6.925C10.7347 6.925 10.925 6.73472 10.925 6.5V5H12.075V6.5C12.075 6.73472 12.2653 6.925 12.5 6.925C12.7347 6.925 12.925 6.73472 12.925 6.5V5H14V10H1Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3M = [\"color\"];\nvar RulerSquareIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3M);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M0.5 0C0.223858 0 0 0.223858 0 0.5V14.5C0 14.7761 0.223858 15 0.5 15H4.5C4.77614 15 5 14.7761 5 14.5V5H14.5C14.7761 5 15 4.77614 15 4.5V0.5C15 0.223858 14.7761 0 14.5 0H0.5ZM1 4.07505L1 1H4.07502C4.07502 1 4.07502 1 4.07502 1L4.07505 4.07507L1 4.07505ZM0.999997 4.92505L1 14H4V12.925H2.75002C2.5153 12.925 2.32502 12.7348 2.32502 12.5C2.32502 12.2653 2.5153 12.075 2.75002 12.075H4V10.925H2.25002C2.0153 10.925 1.82502 10.7347 1.82502 10.5C1.82502 10.2653 2.0153 10.075 2.25002 10.075H4V8.92504L2.75002 8.92502C2.5153 8.92502 2.32502 8.73474 2.32502 8.50002C2.32503 8.26529 2.51531 8.07502 2.75003 8.07502L4 8.07504V6.92502L2.74999 6.925C2.51527 6.925 2.325 6.73472 2.325 6.5C2.325 6.26528 2.51529 6.075 2.75001 6.075L4 6.07502V4.92507L0.999997 4.92505ZM4.92505 4H6.075V2.75006C6.075 2.51534 6.26528 2.32506 6.5 2.32506C6.73472 2.32506 6.925 2.51534 6.925 2.75006V4H8.07502V2.75005C8.07502 2.51533 8.2653 2.32505 8.50002 2.32505C8.73474 2.32505 8.92502 2.51533 8.92502 2.75005V4H10.0751V2.25005C10.0751 2.01533 10.2653 1.82505 10.5001 1.82505C10.7348 1.82505 10.9251 2.01533 10.9251 2.25005V4H12.0751V2.75005C12.0751 2.51533 12.2654 2.32505 12.5001 2.32505C12.7348 2.32505 12.9251 2.51533 12.9251 2.75005V4H14V1H4.92502L4.92505 4Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3N = [\"color\"];\nvar ScissorsIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3N);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M0.949988 4.48455C0.949988 5.34059 1.64395 6.03455 2.49999 6.03455C3.35603 6.03455 4.04999 5.34059 4.04999 4.48455C4.04999 3.6285 3.35603 2.93455 2.49999 2.93455C1.64395 2.93455 0.949988 3.6285 0.949988 4.48455ZM2.49999 6.93455C1.14689 6.93455 0.0499878 5.83764 0.0499878 4.48455C0.0499878 3.13145 1.14689 2.03455 2.49999 2.03455C3.85309 2.03455 4.94999 3.13145 4.94999 4.48455C4.94999 4.80813 4.88726 5.11707 4.77329 5.39985L5.73655 6.04413C5.72943 6.06656 5.72269 6.08914 5.71635 6.11188L5.56288 6.66186L5.21005 6.89773L4.21554 6.23366C3.77357 6.6672 3.168 6.93455 2.49999 6.93455ZM0.949991 10.5C0.949991 9.64394 1.64395 8.94998 2.49999 8.94998C3.35603 8.94998 4.04999 9.64394 4.04999 10.5C4.04999 11.356 3.35603 12.05 2.49999 12.05C1.64395 12.05 0.949991 11.356 0.949991 10.5ZM2.49999 8.04998C1.14689 8.04998 0.0499908 9.14688 0.0499908 10.5C0.0499908 11.8531 1.14689 12.95 2.49999 12.95C3.85309 12.95 4.94999 11.8531 4.94999 10.5C4.94999 10.1803 4.88877 9.87497 4.77743 9.595L15 2.75737L14.0486 2.85737C12.7077 2.9983 11.4091 3.40895 10.231 4.06461L7.15646 5.77564C6.92307 5.90553 6.75134 6.12339 6.67955 6.38066L6.42653 7.28737L4.22437 8.75957C3.78166 8.32091 3.17246 8.04998 2.49999 8.04998ZM7.14435 9.2149L7.15646 9.22176L10.231 10.9328C11.4091 11.5884 12.7077 11.9991 14.0486 12.14L15 12.24L8.81072 8.1003L7.14435 9.2149Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3O = [\"color\"];\nvar SectionIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3O);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2 1.5C2 1.77614 1.77614 2 1.5 2C1.22386 2 1 1.77614 1 1.5C1 1.22386 1.22386 1 1.5 1C1.77614 1 2 1.22386 2 1.5ZM2 5L2 10H13V5H2ZM2 4C1.44772 4 1 4.44772 1 5V10C1 10.5523 1.44772 11 2 11H13C13.5523 11 14 10.5523 14 10V5C14 4.44772 13.5523 4 13 4H2ZM1.5 14C1.77614 14 2 13.7761 2 13.5C2 13.2239 1.77614 13 1.5 13C1.22386 13 1 13.2239 1 13.5C1 13.7761 1.22386 14 1.5 14ZM4 1.5C4 1.77614 3.77614 2 3.5 2C3.22386 2 3 1.77614 3 1.5C3 1.22386 3.22386 1 3.5 1C3.77614 1 4 1.22386 4 1.5ZM3.5 14C3.77614 14 4 13.7761 4 13.5C4 13.2239 3.77614 13 3.5 13C3.22386 13 3 13.2239 3 13.5C3 13.7761 3.22386 14 3.5 14ZM6 1.5C6 1.77614 5.77614 2 5.5 2C5.22386 2 5 1.77614 5 1.5C5 1.22386 5.22386 1 5.5 1C5.77614 1 6 1.22386 6 1.5ZM5.5 14C5.77614 14 6 13.7761 6 13.5C6 13.2239 5.77614 13 5.5 13C5.22386 13 5 13.2239 5 13.5C5 13.7761 5.22386 14 5.5 14ZM8 1.5C8 1.77614 7.77614 2 7.5 2C7.22386 2 7 1.77614 7 1.5C7 1.22386 7.22386 1 7.5 1C7.77614 1 8 1.22386 8 1.5ZM7.5 14C7.77614 14 8 13.7761 8 13.5C8 13.2239 7.77614 13 7.5 13C7.22386 13 7 13.2239 7 13.5C7 13.7761 7.22386 14 7.5 14ZM10 1.5C10 1.77614 9.77614 2 9.5 2C9.22386 2 9 1.77614 9 1.5C9 1.22386 9.22386 1 9.5 1C9.77614 1 10 1.22386 10 1.5ZM9.5 14C9.77614 14 10 13.7761 10 13.5C10 13.2239 9.77614 13 9.5 13C9.22386 13 9 13.2239 9 13.5C9 13.7761 9.22386 14 9.5 14ZM12 1.5C12 1.77614 11.7761 2 11.5 2C11.2239 2 11 1.77614 11 1.5C11 1.22386 11.2239 1 11.5 1C11.7761 1 12 1.22386 12 1.5ZM11.5 14C11.7761 14 12 13.7761 12 13.5C12 13.2239 11.7761 13 11.5 13C11.2239 13 11 13.2239 11 13.5C11 13.7761 11.2239 14 11.5 14ZM14 1.5C14 1.77614 13.7761 2 13.5 2C13.2239 2 13 1.77614 13 1.5C13 1.22386 13.2239 1 13.5 1C13.7761 1 14 1.22386 14 1.5ZM13.5 14C13.7761 14 14 13.7761 14 13.5C14 13.2239 13.7761 13 13.5 13C13.2239 13 13 13.2239 13 13.5C13 13.7761 13.2239 14 13.5 14Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3P = [\"color\"];\nvar SewingPinIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3P);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M6 3.5C6 2.67157 6.67157 2 7.5 2C8.32843 2 9 2.67157 9 3.5C9 4.32843 8.32843 5 7.5 5C6.67157 5 6 4.32843 6 3.5ZM8 5.94999C9.14112 5.71836 10 4.70948 10 3.5C10 2.11929 8.88071 1 7.5 1C6.11929 1 5 2.11929 5 3.5C5 4.70948 5.85888 5.71836 7 5.94999V13.5C7 13.7761 7.22386 14 7.5 14C7.77614 14 8 13.7761 8 13.5V5.94999Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3Q = [\"color\"];\nvar SewingPinFilledIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3Q);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M10 3.5C10 4.70948 9.14112 5.71836 8 5.94999V13.5C8 13.7761 7.77614 14 7.5 14C7.22386 14 7 13.7761 7 13.5V5.94999C5.85888 5.71836 5 4.70948 5 3.5C5 2.11929 6.11929 1 7.5 1C8.88071 1 10 2.11929 10 3.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3R = [\"color\"];\nvar ShadowIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3R);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n opacity: \".05\",\n d: \"M6.78296 13.376C8.73904 9.95284 8.73904 5.04719 6.78296 1.62405L7.21708 1.37598C9.261 4.95283 9.261 10.0472 7.21708 13.624L6.78296 13.376Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".1\",\n d: \"M7.28204 13.4775C9.23929 9.99523 9.23929 5.00475 7.28204 1.52248L7.71791 1.2775C9.76067 4.9119 9.76067 10.0881 7.71791 13.7225L7.28204 13.4775Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".15\",\n d: \"M7.82098 13.5064C9.72502 9.99523 9.72636 5.01411 7.82492 1.50084L8.26465 1.26285C10.2465 4.92466 10.2451 10.085 8.26052 13.7448L7.82098 13.5064Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".2\",\n d: \"M8.41284 13.429C10.1952 9.92842 10.1957 5.07537 8.41435 1.57402L8.85999 1.34729C10.7139 4.99113 10.7133 10.0128 8.85841 13.6559L8.41284 13.429Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".25\",\n d: \"M9.02441 13.2956C10.6567 9.8379 10.6586 5.17715 9.03005 1.71656L9.48245 1.50366C11.1745 5.09919 11.1726 9.91629 9.47657 13.5091L9.02441 13.2956Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".3\",\n d: \"M9.66809 13.0655C11.1097 9.69572 11.1107 5.3121 9.67088 1.94095L10.1307 1.74457C11.6241 5.24121 11.6231 9.76683 10.1278 13.2622L9.66809 13.0655Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".35\",\n d: \"M10.331 12.7456C11.5551 9.52073 11.5564 5.49103 10.3347 2.26444L10.8024 2.0874C12.0672 5.42815 12.0659 9.58394 10.7985 12.9231L10.331 12.7456Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".4\",\n d: \"M11.0155 12.2986C11.9938 9.29744 11.9948 5.71296 11.0184 2.71067L11.4939 2.55603C12.503 5.6589 12.502 9.35178 11.4909 12.4535L11.0155 12.2986Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".45\",\n d: \"M11.7214 11.668C12.4254 9.01303 12.4262 5.99691 11.7237 3.34116L12.2071 3.21329C12.9318 5.95292 12.931 9.05728 12.2047 11.7961L11.7214 11.668Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".5\",\n d: \"M12.4432 10.752C12.8524 8.63762 12.8523 6.36089 12.4429 4.2466L12.9338 4.15155C13.3553 6.32861 13.3554 8.66985 12.9341 10.847L12.4432 10.752Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n d: \"M0.877075 7.49988C0.877075 3.84219 3.84222 0.877045 7.49991 0.877045C11.1576 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49988ZM7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 4.36686 10.6329 1.82704 7.49991 1.82704Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3S = [\"color\"];\nvar ShadowInnerIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3S);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n opacity: \".05\",\n d: \"M12.1619 3.85182C8.35817 4.88918 4.88936 8.358 3.85199 12.1617L3.3696 12.0301C4.45356 8.05564 8.05581 4.45339 12.0303 3.36943L12.1619 3.85182Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".1\",\n d: \"M11.8807 3.42707C8.03441 4.50542 4.50561 8.03422 3.42726 11.8805L2.94582 11.7456C4.07129 7.73121 7.7314 4.0711 11.7458 2.94563L11.8807 3.42707Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".15\",\n d: \"M11.5201 3.02556C7.69092 4.16199 4.16779 7.68323 3.02805 11.512L2.54883 11.3694C3.73676 7.37869 7.38659 3.73076 11.3778 2.54623L11.5201 3.02556Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".2\",\n d: \"M11.0468 2.66169C7.31117 3.87664 3.87918 7.3079 2.66298 11.0434L2.18754 10.8886C3.45324 7.00109 7.00445 3.45062 10.8921 2.18621L11.0468 2.66169Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".25\",\n d: \"M10.5201 2.32365C6.92091 3.61447 3.62391 6.90876 2.32845 10.5073L1.858 10.338C3.20398 6.59909 6.61155 3.19424 10.3513 1.85301L10.5201 2.32365Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".3\",\n d: \"M9.90222 2.03122C6.50003 3.39465 3.39968 6.49367 2.03399 9.89551L1.56998 9.70924C2.98651 6.18076 6.18728 2.98133 9.71622 1.5671L9.90222 2.03122Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".35\",\n d: \"M9.20727 1.78873C6.06136 3.20349 3.21103 6.05203 1.79331 9.19738L1.33747 8.99192C2.80536 5.73528 5.74485 2.7976 9.0022 1.33272L9.20727 1.78873Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".4\",\n d: \"M8.40713 1.62085C5.59323 3.05117 3.05794 5.58509 1.62544 8.39847L1.17987 8.1716C2.66036 5.26397 5.27232 2.6534 8.18057 1.17513L8.40713 1.62085Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".45\",\n d: \"M7.46207 1.56747C5.08689 2.94695 2.95362 5.07912 1.57249 7.45379L1.14028 7.20241C2.56503 4.75273 4.7607 2.55818 7.21096 1.1351L7.46207 1.56747Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".5\",\n d: \"M6.30407 1.70487C4.51964 2.91063 2.90983 4.52061 1.7043 6.30513L1.28998 6.02524C2.5313 4.18773 4.18673 2.53214 6.02413 1.29059L6.30407 1.70487Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n d: \"M0.877075 7.49988C0.877075 3.84219 3.84222 0.877045 7.49991 0.877045C11.1576 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49988ZM7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 4.36686 10.6329 1.82704 7.49991 1.82704Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3T = [\"color\"];\nvar ShadowNoneIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3T);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n opacity: \".05\",\n d: \"M6.78296 13.376C8.73904 9.95284 8.73904 5.04719 6.78296 1.62405L7.21708 1.37598C9.261 4.95283 9.261 10.0472 7.21708 13.624L6.78296 13.376Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".1\",\n d: \"M7.28204 13.4775C9.23929 9.99523 9.23929 5.00475 7.28204 1.52248L7.71791 1.2775C9.76067 4.9119 9.76067 10.0881 7.71791 13.7225L7.28204 13.4775Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".15\",\n d: \"M7.82098 13.5064C9.72502 9.99523 9.72636 5.01411 7.82492 1.50084L8.26465 1.26285C10.2465 4.92466 10.2451 10.085 8.26052 13.7448L7.82098 13.5064Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".2\",\n d: \"M8.41284 13.429C10.1952 9.92842 10.1957 5.07537 8.41435 1.57402L8.85999 1.34729C10.7139 4.99113 10.7133 10.0128 8.85841 13.6559L8.41284 13.429Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".25\",\n d: \"M9.02441 13.2956C10.6567 9.8379 10.6586 5.17715 9.03005 1.71656L9.48245 1.50366C11.1745 5.09919 11.1726 9.91629 9.47657 13.5091L9.02441 13.2956Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".3\",\n d: \"M9.66809 13.0655C11.1097 9.69572 11.1107 5.3121 9.67088 1.94095L10.1307 1.74457C11.6241 5.24121 11.6231 9.76683 10.1278 13.2622L9.66809 13.0655Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".35\",\n d: \"M10.331 12.7456C11.5551 9.52073 11.5564 5.49103 10.3347 2.26444L10.8024 2.0874C12.0672 5.42815 12.0659 9.58394 10.7985 12.9231L10.331 12.7456Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".4\",\n d: \"M11.0155 12.2986C11.9938 9.29744 11.9948 5.71296 11.0184 2.71067L11.4939 2.55603C12.503 5.6589 12.502 9.35178 11.4909 12.4535L11.0155 12.2986Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".45\",\n d: \"M11.7214 11.668C12.4254 9.01303 12.4262 5.99691 11.7237 3.34116L12.2071 3.21329C12.9318 5.95292 12.931 9.05728 12.2047 11.7961L11.7214 11.668Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".5\",\n d: \"M12.4432 10.752C12.8524 8.63762 12.8523 6.36089 12.4429 4.2466L12.9338 4.15155C13.3553 6.32861 13.3554 8.66985 12.9341 10.847L12.4432 10.752Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n d: \"M7.49991 0.877045C3.84222 0.877045 0.877075 3.84219 0.877075 7.49988C0.877075 9.1488 1.47969 10.657 2.4767 11.8162L1.64647 12.6464C1.45121 12.8417 1.45121 13.1583 1.64647 13.3535C1.84173 13.5488 2.15832 13.5488 2.35358 13.3535L3.18383 12.5233C4.34302 13.5202 5.8511 14.1227 7.49991 14.1227C11.1576 14.1227 14.1227 11.1575 14.1227 7.49988C14.1227 5.85107 13.5202 4.34298 12.5233 3.1838L13.3536 2.35355C13.5488 2.15829 13.5488 1.8417 13.3536 1.64644C13.1583 1.45118 12.8417 1.45118 12.6465 1.64644L11.8162 2.47667C10.657 1.47966 9.14883 0.877045 7.49991 0.877045ZM11.1423 3.15065C10.1568 2.32449 8.88644 1.82704 7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 8.88641 2.32452 10.1568 3.15069 11.1422L11.1423 3.15065ZM3.85781 11.8493C4.84322 12.6753 6.11348 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 6.11345 12.6754 4.84319 11.8493 3.85778L3.85781 11.8493Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3U = [\"color\"];\nvar ShadowOuterIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3U);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n opacity: \".05\",\n d: \"M12.1398 3.88617C13.8553 4.94159 15 6.83701 15 9.00001C15 12.3137 12.3137 15 9.00002 15C6.84351 15 4.95296 13.8621 3.89569 12.1552L4.32076 11.8919C5.29069 13.4578 7.02376 14.5 9.00002 14.5C12.0376 14.5 14.5 12.0375 14.5 9.00001C14.5 7.01781 13.4516 5.28027 11.8778 4.31203L12.1398 3.88617Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".2\",\n d: \"M12.851 5.07321C13.8684 6.07106 14.5 7.46199 14.5 9C14.5 12.0375 12.0376 14.5 9.00004 14.5C7.46215 14.5 6.07132 13.8685 5.07349 12.8513L5.43043 12.5011C6.3381 13.4264 7.60186 14 9.00004 14C11.7614 14 14 11.7614 14 9C14 7.60171 13.4264 6.33786 12.5009 5.43017L12.851 5.07321Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".35\",\n d: \"M13.3022 6.45071C13.7455 7.19737 14 8.06935 14 9.00001C14 11.7614 11.7614 14 9.00002 14C8.04868 14 7.15868 13.7341 6.40118 13.2724L6.66142 12.8454C7.34275 13.2607 8.14306 13.5 9.00002 13.5C11.4853 13.5 13.5 11.4853 13.5 9.00001C13.5 8.16165 13.271 7.37754 12.8722 6.70599L13.3022 6.45071Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".5\",\n d: \"M13.3745 7.94022C13.4566 8.28031 13.5 8.63525 13.5 9.00001C13.5 11.4853 11.4853 13.5 9.00003 13.5C8.61104 13.5 8.23323 13.4506 7.87268 13.3576L7.99759 12.8734C8.31768 12.956 8.65353 13 9.00003 13C11.2091 13 13 11.2091 13 9.00001C13 8.67509 12.9613 8.35953 12.8884 8.05757L13.3745 7.94022Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n opacity: \".65\",\n d: \"M12.9155 9.82133C12.5898 11.3813 11.3562 12.6072 9.79205 12.9215L9.69354 12.4313C11.0613 12.1565 12.1413 11.0834 12.4261 9.71915L12.9155 9.82133Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }), createElement(\"path\", {\n d: \"M1.2771 7.50253C1.2771 4.06456 4.06413 1.27753 7.5021 1.27753C10.94 1.27753 13.7271 4.06456 13.7271 7.50253C13.7271 10.9405 10.94 13.7275 7.5021 13.7275C4.06413 13.7275 1.2771 10.9405 1.2771 7.50253ZM7.5021 2.22753C4.5888 2.22753 2.2271 4.58923 2.2271 7.50253C2.2271 10.4158 4.5888 12.7775 7.5021 12.7775C10.4154 12.7775 12.7771 10.4158 12.7771 7.50253C12.7771 4.58923 10.4154 2.22753 7.5021 2.22753Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3V = [\"color\"];\nvar Share1Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3V);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M5 7.50003C5 8.32845 4.32843 9.00003 3.5 9.00003C2.67157 9.00003 2 8.32845 2 7.50003C2 6.6716 2.67157 6.00003 3.5 6.00003C4.32843 6.00003 5 6.6716 5 7.50003ZM5.71313 8.66388C5.29445 9.45838 4.46048 10 3.5 10C2.11929 10 1 8.88074 1 7.50003C1 6.11931 2.11929 5.00003 3.5 5.00003C4.46048 5.00003 5.29445 5.54167 5.71313 6.33616L9.10424 4.21671C9.03643 3.98968 9 3.74911 9 3.50003C9 2.11932 10.1193 1.00003 11.5 1.00003C12.8807 1.00003 14 2.11932 14 3.50003C14 4.88074 12.8807 6.00003 11.5 6.00003C10.6915 6.00003 9.97264 5.61624 9.51566 5.0209L5.9853 7.22738C5.99502 7.31692 6 7.40789 6 7.50003C6 7.59216 5.99502 7.68312 5.9853 7.77267L9.51567 9.97915C9.97265 9.38382 10.6915 9.00003 11.5 9.00003C12.8807 9.00003 14 10.1193 14 11.5C14 12.8807 12.8807 14 11.5 14C10.1193 14 9 12.8807 9 11.5C9 11.2509 9.03643 11.0104 9.10425 10.7833L5.71313 8.66388ZM11.5 5.00003C12.3284 5.00003 13 4.32846 13 3.50003C13 2.6716 12.3284 2.00003 11.5 2.00003C10.6716 2.00003 10 2.6716 10 3.50003C10 4.32846 10.6716 5.00003 11.5 5.00003ZM13 11.5C13 12.3285 12.3284 13 11.5 13C10.6716 13 10 12.3285 10 11.5C10 10.6716 10.6716 10 11.5 10C12.3284 10 13 10.6716 13 11.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3W = [\"color\"];\nvar Share2Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3W);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.5 5.00006C3.22386 5.00006 3 5.22392 3 5.50006L3 11.5001C3 11.7762 3.22386 12.0001 3.5 12.0001L11.5 12.0001C11.7761 12.0001 12 11.7762 12 11.5001L12 5.50006C12 5.22392 11.7761 5.00006 11.5 5.00006L10.25 5.00006C9.97386 5.00006 9.75 4.7762 9.75 4.50006C9.75 4.22392 9.97386 4.00006 10.25 4.00006L11.5 4.00006C12.3284 4.00006 13 4.67163 13 5.50006L13 11.5001C13 12.3285 12.3284 13.0001 11.5 13.0001L3.5 13.0001C2.67157 13.0001 2 12.3285 2 11.5001L2 5.50006C2 4.67163 2.67157 4.00006 3.5 4.00006L4.75 4.00006C5.02614 4.00006 5.25 4.22392 5.25 4.50006C5.25 4.7762 5.02614 5.00006 4.75 5.00006L3.5 5.00006ZM7 1.6364L5.5682 3.0682C5.39246 3.24393 5.10754 3.24393 4.9318 3.0682C4.75607 2.89246 4.75607 2.60754 4.9318 2.4318L7.1818 0.181802C7.26619 0.09741 7.38065 0.049999 7.5 0.049999C7.61935 0.049999 7.73381 0.09741 7.8182 0.181802L10.0682 2.4318C10.2439 2.60754 10.2439 2.89246 10.0682 3.0682C9.89246 3.24393 9.60754 3.24393 9.4318 3.0682L8 1.6364L8 8.5C8 8.77614 7.77614 9 7.5 9C7.22386 9 7 8.77614 7 8.5L7 1.6364Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3X = [\"color\"];\nvar ShuffleIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3X);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M12.3536 1.14645C12.1583 0.951184 11.8417 0.951184 11.6464 1.14645C11.4512 1.34171 11.4512 1.65829 11.6464 1.85355L12.7929 3H12C10.7037 3 9.71111 3.58423 8.87248 4.38931C8.20065 5.03427 7.59349 5.85684 6.99461 6.6682C6.86287 6.84668 6.73154 7.02462 6.6 7.2C5.10874 9.18835 3.49037 11 0.5 11C0.223858 11 0 11.2239 0 11.5C0 11.7761 0.223858 12 0.5 12C4.00963 12 5.89126 9.81165 7.4 7.8C7.54367 7.60845 7.6832 7.41962 7.81996 7.23454L7.82005 7.23443L7.82006 7.23441C8.41674 6.42695 8.96069 5.69085 9.56502 5.11069C10.2889 4.41577 11.0463 4 12 4H12.7929L11.6464 5.14645C11.4512 5.34171 11.4512 5.65829 11.6464 5.85355C11.8417 6.04882 12.1583 6.04882 12.3536 5.85355L14.3536 3.85355C14.5488 3.65829 14.5488 3.34171 14.3536 3.14645L12.3536 1.14645ZM0.5 3C3.35278 3 5.12992 4.44588 6.50548 6.06746L6.3762 6.24266C6.2483 6.4161 6.12293 6.58609 6 6.75C5.96397 6.79804 5.92798 6.84581 5.892 6.89331C4.57348 5.29306 3.02637 4 0.5 4C0.223858 4 0 3.77614 0 3.5C0 3.22386 0.223858 3 0.5 3ZM8.87248 10.6107C8.37284 10.131 7.90897 9.55314 7.45767 8.95468C7.64688 8.71693 7.82704 8.48061 8 8.25L8.08987 8.12987C8.58412 8.79402 9.05288 9.39766 9.56502 9.88931C10.2889 10.5842 11.0463 11 12 11H12.7929L11.6464 9.85355C11.4512 9.65829 11.4512 9.34171 11.6464 9.14645C11.8417 8.95118 12.1583 8.95118 12.3536 9.14645L14.3536 11.1464C14.5488 11.3417 14.5488 11.6583 14.3536 11.8536L12.3536 13.8536C12.1583 14.0488 11.8417 14.0488 11.6464 13.8536C11.4512 13.6583 11.4512 13.3417 11.6464 13.1464L12.7929 12H12C10.7037 12 9.71111 11.4158 8.87248 10.6107Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3Y = [\"color\"];\nvar SizeIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3Y);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M11.5 3.04999C11.7485 3.04999 11.95 3.25146 11.95 3.49999V7.49999C11.95 7.74852 11.7485 7.94999 11.5 7.94999C11.2515 7.94999 11.05 7.74852 11.05 7.49999V4.58639L4.58638 11.05H7.49999C7.74852 11.05 7.94999 11.2515 7.94999 11.5C7.94999 11.7485 7.74852 11.95 7.49999 11.95L3.49999 11.95C3.38064 11.95 3.26618 11.9026 3.18179 11.8182C3.0974 11.7338 3.04999 11.6193 3.04999 11.5L3.04999 7.49999C3.04999 7.25146 3.25146 7.04999 3.49999 7.04999C3.74852 7.04999 3.94999 7.25146 3.94999 7.49999L3.94999 10.4136L10.4136 3.94999L7.49999 3.94999C7.25146 3.94999 7.04999 3.74852 7.04999 3.49999C7.04999 3.25146 7.25146 3.04999 7.49999 3.04999L11.5 3.04999Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3Z = [\"color\"];\nvar SketchLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3Z);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.53731 0.826873C7.5125 0.824392 7.4875 0.824392 7.46269 0.826873L3.96269 1.17687C3.85672 1.18747 3.76025 1.24262 3.69736 1.32857L0.699771 5.42528C0.654046 5.48627 0.62647 5.56165 0.625057 5.6434C0.625019 5.6456 0.625 5.64781 0.625 5.65001C0.625 5.65052 0.625001 5.65103 0.625003 5.65153C0.625363 5.74237 0.658021 5.82559 0.712087 5.8903L7.21042 13.7883C7.28165 13.8749 7.38789 13.925 7.5 13.925C7.61211 13.925 7.71835 13.8749 7.78958 13.7883L14.2879 5.89031C14.342 5.8256 14.3746 5.74237 14.375 5.65153C14.375 5.65103 14.375 5.65052 14.375 5.65001C14.375 5.64849 14.375 5.64697 14.375 5.64545C14.3749 5.63963 14.3747 5.63382 14.3744 5.62801C14.37 5.55219 14.3431 5.48242 14.3002 5.42527L11.3026 1.32857C11.2397 1.24262 11.1433 1.18747 11.0373 1.17687L7.53731 0.826873ZM10.925 5.27501V5.25236L10.9223 5.27501H10.925ZM10.9342 5.17498H13.1877L11.2495 2.5261L10.9342 5.17498ZM10.5707 1.88395L8.04432 1.63131L10.1747 5.21034L10.5707 1.88395ZM6.95568 1.63131L4.42931 1.88395L4.82531 5.21034L6.95568 1.63131ZM3.75046 2.5261L1.81226 5.17498H4.0658L3.75046 2.5261ZM1.79416 6.02501L6.75861 12.0587L4.22371 6.0669C4.21787 6.0531 4.21314 6.0391 4.20949 6.02501H1.79416ZM5.15055 6.02501L7.49999 12.1085L9.84943 6.02501H9.78681H5.21319H5.15055ZM10.7905 6.02501C10.7869 6.0391 10.7821 6.0531 10.7763 6.0669L8.24139 12.0587L13.2058 6.02501H10.7905ZM7.5 2.18317L9.34038 5.27501H5.65962L7.5 2.18317Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3_ = [\"color\"];\nvar SlashIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3_);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M4.10876 14L9.46582 1H10.8178L5.46074 14H4.10876Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$3$ = [\"color\"];\nvar SliderIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3$);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M10.3004 7.49991C10.3004 8.4943 9.49426 9.30041 8.49988 9.30041C7.50549 9.30041 6.69938 8.4943 6.69938 7.49991C6.69938 6.50553 7.50549 5.69942 8.49988 5.69942C9.49426 5.69942 10.3004 6.50553 10.3004 7.49991ZM11.205 8C10.9699 9.28029 9.84816 10.2504 8.49988 10.2504C7.1516 10.2504 6.0299 9.28029 5.79473 8H0.5C0.223858 8 0 7.77614 0 7.5C0 7.22386 0.223858 7 0.5 7H5.7947C6.0298 5.71962 7.15154 4.74942 8.49988 4.74942C9.84822 4.74942 10.97 5.71962 11.2051 7H14.5C14.7761 7 15 7.22386 15 7.5C15 7.77614 14.7761 8 14.5 8H11.205Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$40 = [\"color\"];\nvar SpaceBetweenHorizontallyIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$40);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M14.4999 0.999994C14.2237 0.999994 13.9999 1.22385 13.9999 1.49999L13.9999 5.99995L9.99992 5.99995C9.44764 5.99995 8.99993 6.44766 8.99993 6.99994L8.99993 7.99994C8.99993 8.55222 9.44764 8.99993 9.99992 8.99993L13.9999 8.99993L13.9999 13.4999C13.9999 13.776 14.2237 13.9999 14.4999 13.9999C14.776 13.9999 14.9999 13.776 14.9999 13.4999L14.9999 1.49999C14.9999 1.22385 14.776 0.999994 14.4999 0.999994ZM4.99996 5.99995L0.999992 5.99995L0.999992 1.49999C0.999992 1.22385 0.776136 0.999994 0.499996 0.999994C0.223856 0.999994 -9.7852e-09 1.22385 -2.18557e-08 1.49999L4.07279e-07 13.4999C3.95208e-07 13.776 0.223855 13.9999 0.499996 13.9999C0.776136 13.9999 0.999992 13.776 0.999992 13.4999L0.999992 8.99993L4.99996 8.99993C5.55224 8.99993 5.99995 8.55222 5.99995 7.99993L5.99995 6.99994C5.99995 6.44766 5.55224 5.99995 4.99996 5.99995Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$41 = [\"color\"];\nvar SpaceBetweenVerticallyIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$41);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M0.999878 0.5C0.999878 0.223858 1.22374 0 1.49988 0H13.4999C13.776 0 13.9999 0.223858 13.9999 0.5C13.9999 0.776142 13.776 1 13.4999 1L9 1V5C9 5.55228 8.55228 6 8 6H7C6.44772 6 6 5.55228 6 5V1H1.49988C1.22374 1 0.999878 0.776142 0.999878 0.5ZM7 9C6.44772 9 6 9.44771 6 10V14H1.49988C1.22374 14 0.999878 14.2239 0.999878 14.5C0.999878 14.7761 1.22374 15 1.49988 15H13.4999C13.776 15 13.9999 14.7761 13.9999 14.5C13.9999 14.2239 13.776 14 13.4999 14H9V10C9 9.44772 8.55228 9 8 9H7Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$42 = [\"color\"];\nvar SpaceEvenlyHorizontallyIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$42);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M14.4999 0.999992C14.2237 0.999992 13.9999 1.22385 13.9999 1.49999L13.9999 13.4999C13.9999 13.776 14.2237 13.9999 14.4999 13.9999C14.776 13.9999 14.9999 13.776 14.9999 13.4999L14.9999 1.49999C14.9999 1.22385 14.776 0.999992 14.4999 0.999992ZM0.499996 0.999992C0.223856 0.999992 -9.78509e-09 1.22385 -2.18556e-08 1.49999L4.07279e-07 13.4999C3.95208e-07 13.776 0.223855 13.9999 0.499996 13.9999C0.776136 13.9999 0.999992 13.776 0.999992 13.4999L0.999992 1.49999C0.999992 1.22385 0.776136 0.999992 0.499996 0.999992ZM1.99998 6.99994C1.99998 6.44766 2.44769 5.99995 2.99998 5.99995L5.99995 5.99995C6.55223 5.99995 6.99994 6.44766 6.99994 6.99994L6.99994 7.99993C6.99994 8.55221 6.55223 8.99992 5.99995 8.99992L2.99998 8.99992C2.4477 8.99992 1.99998 8.55221 1.99998 7.99993L1.99998 6.99994ZM8.99993 5.99995C8.44765 5.99995 7.99993 6.44766 7.99993 6.99994L7.99993 7.99993C7.99993 8.55221 8.44765 8.99992 8.99993 8.99992L11.9999 8.99992C12.5522 8.99992 12.9999 8.55221 12.9999 7.99993L12.9999 6.99994C12.9999 6.44766 12.5522 5.99995 11.9999 5.99995L8.99993 5.99995Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$43 = [\"color\"];\nvar SpaceEvenlyVerticallyIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$43);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M0.999878 0.5C0.999878 0.223858 1.22374 0 1.49988 0H13.4999C13.776 0 13.9999 0.223858 13.9999 0.5C13.9999 0.776142 13.776 1 13.4999 1H1.49988C1.22374 1 0.999878 0.776142 0.999878 0.5ZM7 2C6.44772 2 6 2.44772 6 3V6C6 6.55228 6.44772 7 7 7H8C8.55228 7 9 6.55228 9 6V3C9 2.44772 8.55228 2 8 2H7ZM7 8C6.44772 8 6 8.44771 6 9V12C6 12.5523 6.44772 13 7 13H8C8.55228 13 9 12.5523 9 12V9C9 8.44772 8.55228 8 8 8H7ZM1.49988 14C1.22374 14 0.999878 14.2239 0.999878 14.5C0.999878 14.7761 1.22374 15 1.49988 15H13.4999C13.776 15 13.9999 14.7761 13.9999 14.5C13.9999 14.2239 13.776 14 13.4999 14H1.49988Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$44 = [\"color\"];\nvar SpeakerLoudIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$44);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.46968 1.05085C7.64122 1.13475 7.75 1.30904 7.75 1.5V13.5C7.75 13.691 7.64122 13.8653 7.46968 13.9492C7.29813 14.0331 7.09377 14.0119 6.94303 13.8947L3.2213 11H1.5C0.671571 11 0 10.3284 0 9.5V5.5C0 4.67158 0.671573 4 1.5 4H3.2213L6.94303 1.10533C7.09377 0.988085 7.29813 0.966945 7.46968 1.05085ZM6.75 2.52232L3.69983 4.89468C3.61206 4.96294 3.50405 5 3.39286 5H1.5C1.22386 5 1 5.22386 1 5.5V9.5C1 9.77615 1.22386 10 1.5 10H3.39286C3.50405 10 3.61206 10.0371 3.69983 10.1053L6.75 12.4777V2.52232ZM10.2784 3.84804C10.4623 3.72567 10.7106 3.77557 10.833 3.95949C12.2558 6.09798 12.2558 8.90199 10.833 11.0405C10.7106 11.2244 10.4623 11.2743 10.2784 11.1519C10.0944 11.0296 10.0445 10.7813 10.1669 10.5973C11.4111 8.72728 11.4111 6.27269 10.1669 4.40264C10.0445 4.21871 10.0944 3.97041 10.2784 3.84804ZM12.6785 1.43044C12.5356 1.2619 12.2832 1.24104 12.1147 1.38386C11.9462 1.52667 11.9253 1.77908 12.0681 1.94762C14.7773 5.14488 14.7773 9.85513 12.0681 13.0524C11.9253 13.2209 11.9462 13.4733 12.1147 13.6161C12.2832 13.759 12.5356 13.7381 12.6785 13.5696C15.6406 10.0739 15.6406 4.92612 12.6785 1.43044Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$45 = [\"color\"];\nvar SpeakerModerateIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$45);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M8 1.5C8 1.31062 7.893 1.13749 7.72361 1.05279C7.55421 0.968093 7.35151 0.986371 7.2 1.1L3.33333 4H1.5C0.671573 4 0 4.67158 0 5.5V9.5C0 10.3284 0.671573 11 1.5 11H3.33333L7.2 13.9C7.35151 14.0136 7.55421 14.0319 7.72361 13.9472C7.893 13.8625 8 13.6894 8 13.5V1.5ZM3.8 4.9L7 2.5V12.5L3.8 10.1C3.71345 10.0351 3.60819 10 3.5 10H1.5C1.22386 10 1 9.77614 1 9.5V5.5C1 5.22386 1.22386 5 1.5 5H3.5C3.60819 5 3.71345 4.96491 3.8 4.9ZM10.833 3.95949C10.7106 3.77557 10.4623 3.72567 10.2784 3.84804C10.0944 3.97041 10.0445 4.21871 10.1669 4.40264C11.4111 6.27268 11.4111 8.72728 10.1669 10.5973C10.0445 10.7813 10.0944 11.0296 10.2784 11.1519C10.4623 11.2743 10.7106 11.2244 10.833 11.0405C12.2558 8.90199 12.2558 6.09798 10.833 3.95949Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$46 = [\"color\"];\nvar SpeakerOffIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$46);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.72361 1.05279C7.893 1.13749 8 1.31062 8 1.5V13.5C8 13.6894 7.893 13.8625 7.72361 13.9472C7.55421 14.0319 7.35151 14.0136 7.2 13.9L3.33333 11H1.5C0.671573 11 0 10.3284 0 9.5V5.5C0 4.67158 0.671573 4 1.5 4H3.33333L7.2 1.1C7.35151 0.986371 7.55421 0.968093 7.72361 1.05279ZM7 2.5L3.8 4.9C3.71345 4.96491 3.60819 5 3.5 5H1.5C1.22386 5 1 5.22386 1 5.5V9.5C1 9.77614 1.22386 10 1.5 10H3.5C3.60819 10 3.71345 10.0351 3.8 10.1L7 12.5V2.5ZM14.8536 5.14645C15.0488 5.34171 15.0488 5.65829 14.8536 5.85355L13.2071 7.5L14.8536 9.14645C15.0488 9.34171 15.0488 9.65829 14.8536 9.85355C14.6583 10.0488 14.3417 10.0488 14.1464 9.85355L12.5 8.20711L10.8536 9.85355C10.6583 10.0488 10.3417 10.0488 10.1464 9.85355C9.95118 9.65829 9.95118 9.34171 10.1464 9.14645L11.7929 7.5L10.1464 5.85355C9.95118 5.65829 9.95118 5.34171 10.1464 5.14645C10.3417 4.95118 10.6583 4.95118 10.8536 5.14645L12.5 6.79289L14.1464 5.14645C14.3417 4.95118 14.6583 4.95118 14.8536 5.14645Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$47 = [\"color\"];\nvar SpeakerQuietIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$47);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M8 1.5C8 1.31062 7.893 1.13749 7.72361 1.05279C7.55421 0.968093 7.35151 0.986371 7.2 1.1L3.33333 4H1.5C0.671573 4 0 4.67158 0 5.5V9.5C0 10.3284 0.671573 11 1.5 11H3.33333L7.2 13.9C7.35151 14.0136 7.55421 14.0319 7.72361 13.9472C7.893 13.8625 8 13.6894 8 13.5V1.5ZM3.8 4.9L7 2.5V12.5L3.8 10.1C3.71345 10.0351 3.60819 10 3.5 10H1.5C1.22386 10 1 9.77614 1 9.5V5.5C1 5.22386 1.22386 5 1.5 5H3.5C3.60819 5 3.71345 4.96491 3.8 4.9ZM10.083 5.05577C9.96066 4.87185 9.71235 4.82195 9.52843 4.94432C9.3445 5.06669 9.2946 5.31499 9.41697 5.49892C10.2207 6.70693 10.2207 8.29303 9.41697 9.50104C9.2946 9.68496 9.3445 9.93326 9.52843 10.0556C9.71235 10.178 9.96066 10.1281 10.083 9.94418C11.0653 8.46773 11.0653 6.53222 10.083 5.05577Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$48 = [\"color\"];\nvar SquareIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$48);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1 1H1.5H13.5H14V1.5V13.5V14H13.5H1.5H1V13.5V1.5V1ZM2 2V13H13V2H2Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$49 = [\"color\"];\nvar StackIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$49);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.75432 1.81954C7.59742 1.72682 7.4025 1.72682 7.24559 1.81954L1.74559 5.06954C1.59336 5.15949 1.49996 5.32317 1.49996 5.5C1.49996 5.67683 1.59336 5.84051 1.74559 5.93046L7.24559 9.18046C7.4025 9.27318 7.59742 9.27318 7.75432 9.18046L13.2543 5.93046C13.4066 5.84051 13.5 5.67683 13.5 5.5C13.5 5.32317 13.4066 5.15949 13.2543 5.06954L7.75432 1.81954ZM7.49996 8.16923L2.9828 5.5L7.49996 2.83077L12.0171 5.5L7.49996 8.16923ZM2.25432 8.31954C2.01658 8.17906 1.70998 8.2579 1.56949 8.49564C1.42901 8.73337 1.50785 9.03998 1.74559 9.18046L7.24559 12.4305C7.4025 12.5232 7.59742 12.5232 7.75432 12.4305L13.2543 9.18046C13.4921 9.03998 13.5709 8.73337 13.4304 8.49564C13.2899 8.2579 12.9833 8.17906 12.7456 8.31954L7.49996 11.4192L2.25432 8.31954Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4a = [\"color\"];\nvar StarIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4a);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M6.97942 1.25171L6.9585 1.30199L5.58662 4.60039C5.54342 4.70426 5.44573 4.77523 5.3336 4.78422L1.7727 5.0697L1.71841 5.07405L1.38687 5.10063L1.08608 5.12475C0.820085 5.14607 0.712228 5.47802 0.914889 5.65162L1.14406 5.84793L1.39666 6.06431L1.43802 6.09974L4.15105 8.42374C4.23648 8.49692 4.2738 8.61176 4.24769 8.72118L3.41882 12.196L3.40618 12.249L3.32901 12.5725L3.25899 12.866C3.19708 13.1256 3.47945 13.3308 3.70718 13.1917L3.9647 13.0344L4.24854 12.861L4.29502 12.8326L7.34365 10.9705C7.43965 10.9119 7.5604 10.9119 7.6564 10.9705L10.705 12.8326L10.7515 12.861L11.0354 13.0344L11.2929 13.1917C11.5206 13.3308 11.803 13.1256 11.7411 12.866L11.671 12.5725L11.5939 12.249L11.5812 12.196L10.7524 8.72118C10.7263 8.61176 10.7636 8.49692 10.849 8.42374L13.562 6.09974L13.6034 6.06431L13.856 5.84793L14.0852 5.65162C14.2878 5.47802 14.18 5.14607 13.914 5.12475L13.6132 5.10063L13.2816 5.07405L13.2274 5.0697L9.66645 4.78422C9.55432 4.77523 9.45663 4.70426 9.41343 4.60039L8.04155 1.30199L8.02064 1.25171L7.89291 0.944609L7.77702 0.665992C7.67454 0.419604 7.32551 0.419604 7.22303 0.665992L7.10715 0.944609L6.97942 1.25171ZM7.50003 2.60397L6.50994 4.98442C6.32273 5.43453 5.89944 5.74207 5.41351 5.78103L2.84361 5.98705L4.8016 7.66428C5.17183 7.98142 5.33351 8.47903 5.2204 8.95321L4.62221 11.461L6.8224 10.1171C7.23842 9.86302 7.76164 9.86302 8.17766 10.1171L10.3778 11.461L9.77965 8.95321C9.66654 8.47903 9.82822 7.98142 10.1984 7.66428L12.1564 5.98705L9.58654 5.78103C9.10061 5.74207 8.67732 5.43453 8.49011 4.98442L7.50003 2.60397Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4b = [\"color\"];\nvar StarFilledIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4b);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.22303 0.665992C7.32551 0.419604 7.67454 0.419604 7.77702 0.665992L9.41343 4.60039C9.45663 4.70426 9.55432 4.77523 9.66645 4.78422L13.914 5.12475C14.18 5.14607 14.2878 5.47802 14.0852 5.65162L10.849 8.42374C10.7636 8.49692 10.7263 8.61176 10.7524 8.72118L11.7411 12.866C11.803 13.1256 11.5206 13.3308 11.2929 13.1917L7.6564 10.9705C7.5604 10.9119 7.43965 10.9119 7.34365 10.9705L3.70718 13.1917C3.47945 13.3308 3.19708 13.1256 3.25899 12.866L4.24769 8.72118C4.2738 8.61176 4.23648 8.49692 4.15105 8.42374L0.914889 5.65162C0.712228 5.47802 0.820086 5.14607 1.08608 5.12475L5.3336 4.78422C5.44573 4.77523 5.54342 4.70426 5.58662 4.60039L7.22303 0.665992Z\",\n fill: color\n }));\n});\n\nvar _excluded$4c = [\"color\"];\nvar StitchesLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4c);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1.84998 7.49998C1.84998 7.21321 1.87134 6.93143 1.91256 6.65615L9.56374 2.23875C9.86311 2.35627 10.15 2.49861 10.4219 2.66322L3.77065 6.50332C3.73669 6.52183 3.70482 6.5449 3.67602 6.57238C3.5911 6.65308 3.54245 6.76286 3.53682 6.87658C3.53359 6.9418 3.54451 7.00831 3.57086 7.07137C3.58927 7.1157 3.6149 7.15742 3.64744 7.19458C3.67306 7.22396 3.702 7.24941 3.73337 7.27069L7.32533 9.83813L3.87232 11.8317C2.63604 10.7953 1.84998 9.23944 1.84998 7.49998ZM8.36843 10.2751C8.37682 10.2706 8.38509 10.2659 8.39322 10.2608L9.84091 9.42499C9.84706 9.42163 9.85314 9.41812 9.85915 9.41446L11.3101 8.57677C11.3655 8.54649 11.4154 8.504 11.4554 8.44995C11.6034 8.25031 11.5616 7.96848 11.362 7.82046L7.82779 5.20017L11.2161 3.24393C12.4013 4.27963 13.15 5.80237 13.15 7.49998C13.15 7.83546 13.1207 8.16411 13.0647 8.48353L5.56875 12.8113C5.26138 12.6995 4.96646 12.5618 4.68662 12.4008L8.36843 10.2751ZM8.18149 9.34383L4.81659 6.93868L5.50918 6.53881L8.80604 8.98324L8.18149 9.34383ZM6.35875 6.04832L6.97822 5.69067L10.2751 8.13506L9.6556 8.49275L6.35875 6.04832ZM8.3318 1.91078L2.24263 5.42636C3.06941 3.33188 5.11164 1.84998 7.49998 1.84998C7.78258 1.84998 8.06033 1.87072 8.3318 1.91078ZM6.84684 13.1126C7.06114 13.1373 7.27908 13.15 7.49998 13.15C9.8246 13.15 11.8213 11.7461 12.6886 9.7399L6.84684 13.1126ZM7.49998 0.849976C3.82728 0.849976 0.849976 3.82728 0.849976 7.49998C0.849976 11.1727 3.82728 14.15 7.49998 14.15C11.1727 14.15 14.15 11.1727 14.15 7.49998C14.15 3.82728 11.1727 0.849976 7.49998 0.849976Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4d = [\"color\"];\nvar StopIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4d);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2 3C2 2.44772 2.44772 2 3 2H12C12.5523 2 13 2.44772 13 3V12C13 12.5523 12.5523 13 12 13H3C2.44772 13 2 12.5523 2 12V3ZM12 3H3V12H12V3Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4e = [\"color\"];\nvar StopwatchIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4e);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M5.49998 0.5C5.49998 0.223858 5.72383 0 5.99998 0H7.49998H8.99998C9.27612 0 9.49998 0.223858 9.49998 0.5C9.49998 0.776142 9.27612 1 8.99998 1H7.99998V2.11922C9.09832 2.20409 10.119 2.56622 10.992 3.13572C11.0116 3.10851 11.0336 3.08252 11.058 3.05806L11.858 2.25806C12.1021 2.01398 12.4978 2.01398 12.7419 2.25806C12.986 2.50214 12.986 2.89786 12.7419 3.14194L11.967 3.91682C13.1595 5.07925 13.9 6.70314 13.9 8.49998C13.9 12.0346 11.0346 14.9 7.49998 14.9C3.96535 14.9 1.09998 12.0346 1.09998 8.49998C1.09998 5.13362 3.69904 2.3743 6.99998 2.11922V1H5.99998C5.72383 1 5.49998 0.776142 5.49998 0.5ZM2.09998 8.49998C2.09998 5.51764 4.51764 3.09998 7.49998 3.09998C10.4823 3.09998 12.9 5.51764 12.9 8.49998C12.9 11.4823 10.4823 13.9 7.49998 13.9C4.51764 13.9 2.09998 11.4823 2.09998 8.49998ZM7.99998 4.5C7.99998 4.22386 7.77612 4 7.49998 4C7.22383 4 6.99998 4.22386 6.99998 4.5V9.5C6.99998 9.77614 7.22383 10 7.49998 10C7.77612 10 7.99998 9.77614 7.99998 9.5V4.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4f = [\"color\"];\nvar StretchHorizontallyIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4f);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M14.4999 0.999992C14.2237 0.999992 13.9999 1.22385 13.9999 1.49999L13.9999 5.99995L0.999992 5.99995L0.999992 1.49999C0.999992 1.22385 0.776136 0.999992 0.499996 0.999992C0.223856 0.999992 -9.78509e-09 1.22385 -2.18556e-08 1.49999L4.07279e-07 13.4999C3.95208e-07 13.776 0.223855 13.9999 0.499996 13.9999C0.776136 13.9999 0.999992 13.776 0.999992 13.4999L0.999992 8.99992L13.9999 8.99992L13.9999 13.4999C13.9999 13.776 14.2237 13.9999 14.4999 13.9999C14.776 13.9999 14.9999 13.776 14.9999 13.4999L14.9999 1.49999C14.9999 1.22385 14.776 0.999992 14.4999 0.999992Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4g = [\"color\"];\nvar StretchVerticallyIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4g);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M0.999878 0.5C0.999878 0.223858 1.22374 0 1.49988 0H13.4999C13.776 0 13.9999 0.223858 13.9999 0.5C13.9999 0.776142 13.776 1 13.4999 1H6H1.49988C1.22374 1 0.999878 0.776142 0.999878 0.5ZM9 14V1L6 1V14H1.49988C1.22374 14 0.999878 14.2239 0.999878 14.5C0.999878 14.7761 1.22374 15 1.49988 15H13.4999C13.776 15 13.9999 14.7761 13.9999 14.5C13.9999 14.2239 13.776 14 13.4999 14H9Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4h = [\"color\"];\nvar StrikethroughIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4h);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M5.00003 3.25C5.00003 2.97386 4.77617 2.75 4.50003 2.75C4.22389 2.75 4.00003 2.97386 4.00003 3.25V7.10003H2.49998C2.27906 7.10003 2.09998 7.27912 2.09998 7.50003C2.09998 7.72094 2.27906 7.90003 2.49998 7.90003H4.00003V8.55C4.00003 10.483 5.56703 12.05 7.50003 12.05C9.43303 12.05 11 10.483 11 8.55V7.90003H12.5C12.7209 7.90003 12.9 7.72094 12.9 7.50003C12.9 7.27912 12.7209 7.10003 12.5 7.10003H11V3.25C11 2.97386 10.7762 2.75 10.5 2.75C10.2239 2.75 10 2.97386 10 3.25V7.10003H5.00003V3.25ZM5.00003 7.90003V8.55C5.00003 9.93071 6.11932 11.05 7.50003 11.05C8.88074 11.05 10 9.93071 10 8.55V7.90003H5.00003Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4i = [\"color\"];\nvar SunIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4i);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.5 0C7.77614 0 8 0.223858 8 0.5V2.5C8 2.77614 7.77614 3 7.5 3C7.22386 3 7 2.77614 7 2.5V0.5C7 0.223858 7.22386 0 7.5 0ZM2.1967 2.1967C2.39196 2.00144 2.70854 2.00144 2.90381 2.1967L4.31802 3.61091C4.51328 3.80617 4.51328 4.12276 4.31802 4.31802C4.12276 4.51328 3.80617 4.51328 3.61091 4.31802L2.1967 2.90381C2.00144 2.70854 2.00144 2.39196 2.1967 2.1967ZM0.5 7C0.223858 7 0 7.22386 0 7.5C0 7.77614 0.223858 8 0.5 8H2.5C2.77614 8 3 7.77614 3 7.5C3 7.22386 2.77614 7 2.5 7H0.5ZM2.1967 12.8033C2.00144 12.608 2.00144 12.2915 2.1967 12.0962L3.61091 10.682C3.80617 10.4867 4.12276 10.4867 4.31802 10.682C4.51328 10.8772 4.51328 11.1938 4.31802 11.3891L2.90381 12.8033C2.70854 12.9986 2.39196 12.9986 2.1967 12.8033ZM12.5 7C12.2239 7 12 7.22386 12 7.5C12 7.77614 12.2239 8 12.5 8H14.5C14.7761 8 15 7.77614 15 7.5C15 7.22386 14.7761 7 14.5 7H12.5ZM10.682 4.31802C10.4867 4.12276 10.4867 3.80617 10.682 3.61091L12.0962 2.1967C12.2915 2.00144 12.608 2.00144 12.8033 2.1967C12.9986 2.39196 12.9986 2.70854 12.8033 2.90381L11.3891 4.31802C11.1938 4.51328 10.8772 4.51328 10.682 4.31802ZM8 12.5C8 12.2239 7.77614 12 7.5 12C7.22386 12 7 12.2239 7 12.5V14.5C7 14.7761 7.22386 15 7.5 15C7.77614 15 8 14.7761 8 14.5V12.5ZM10.682 10.682C10.8772 10.4867 11.1938 10.4867 11.3891 10.682L12.8033 12.0962C12.9986 12.2915 12.9986 12.608 12.8033 12.8033C12.608 12.9986 12.2915 12.9986 12.0962 12.8033L10.682 11.3891C10.4867 11.1938 10.4867 10.8772 10.682 10.682ZM5.5 7.5C5.5 6.39543 6.39543 5.5 7.5 5.5C8.60457 5.5 9.5 6.39543 9.5 7.5C9.5 8.60457 8.60457 9.5 7.5 9.5C6.39543 9.5 5.5 8.60457 5.5 7.5ZM7.5 4.5C5.84315 4.5 4.5 5.84315 4.5 7.5C4.5 9.15685 5.84315 10.5 7.5 10.5C9.15685 10.5 10.5 9.15685 10.5 7.5C10.5 5.84315 9.15685 4.5 7.5 4.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4j = [\"color\"];\nvar SwitchIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4j);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M10.5 4C8.567 4 7 5.567 7 7.5C7 9.433 8.567 11 10.5 11C12.433 11 14 9.433 14 7.5C14 5.567 12.433 4 10.5 4ZM7.67133 11C6.65183 10.175 6 8.91363 6 7.5C6 6.08637 6.65183 4.82498 7.67133 4H4.5C2.567 4 1 5.567 1 7.5C1 9.433 2.567 11 4.5 11H7.67133ZM0 7.5C0 5.01472 2.01472 3 4.5 3H10.5C12.9853 3 15 5.01472 15 7.5C15 9.98528 12.9853 12 10.5 12H4.5C2.01472 12 0 9.98528 0 7.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4k = [\"color\"];\nvar SymbolIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4k);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1.90321 7.29677C1.90321 10.341 4.11041 12.4147 6.58893 12.8439C6.87255 12.893 7.06266 13.1627 7.01355 13.4464C6.96444 13.73 6.69471 13.9201 6.41109 13.871C3.49942 13.3668 0.86084 10.9127 0.86084 7.29677C0.860839 5.76009 1.55996 4.55245 2.37639 3.63377C2.96124 2.97568 3.63034 2.44135 4.16846 2.03202L2.53205 2.03202C2.25591 2.03202 2.03205 1.80816 2.03205 1.53202C2.03205 1.25588 2.25591 1.03202 2.53205 1.03202L5.53205 1.03202C5.80819 1.03202 6.03205 1.25588 6.03205 1.53202L6.03205 4.53202C6.03205 4.80816 5.80819 5.03202 5.53205 5.03202C5.25591 5.03202 5.03205 4.80816 5.03205 4.53202L5.03205 2.68645L5.03054 2.68759L5.03045 2.68766L5.03044 2.68767L5.03043 2.68767C4.45896 3.11868 3.76059 3.64538 3.15554 4.3262C2.44102 5.13021 1.90321 6.10154 1.90321 7.29677ZM13.0109 7.70321C13.0109 4.69115 10.8505 2.6296 8.40384 2.17029C8.12093 2.11718 7.93465 1.84479 7.98776 1.56188C8.04087 1.27898 8.31326 1.0927 8.59616 1.14581C11.4704 1.68541 14.0532 4.12605 14.0532 7.70321C14.0532 9.23988 13.3541 10.4475 12.5377 11.3662C11.9528 12.0243 11.2837 12.5586 10.7456 12.968L12.3821 12.968C12.6582 12.968 12.8821 13.1918 12.8821 13.468C12.8821 13.7441 12.6582 13.968 12.3821 13.968L9.38205 13.968C9.10591 13.968 8.88205 13.7441 8.88205 13.468L8.88205 10.468C8.88205 10.1918 9.10591 9.96796 9.38205 9.96796C9.65819 9.96796 9.88205 10.1918 9.88205 10.468L9.88205 12.3135L9.88362 12.3123C10.4551 11.8813 11.1535 11.3546 11.7585 10.6738C12.4731 9.86976 13.0109 8.89844 13.0109 7.70321Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4l = [\"color\"];\nvar TableIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4l);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M8 2H12.5C12.7761 2 13 2.22386 13 2.5V5H8V2ZM7 5V2H2.5C2.22386 2 2 2.22386 2 2.5V5H7ZM2 6V9H7V6H2ZM8 6H13V9H8V6ZM8 10H13V12.5C13 12.7761 12.7761 13 12.5 13H8V10ZM2 12.5V10H7V13H2.5C2.22386 13 2 12.7761 2 12.5ZM1 2.5C1 1.67157 1.67157 1 2.5 1H12.5C13.3284 1 14 1.67157 14 2.5V12.5C14 13.3284 13.3284 14 12.5 14H2.5C1.67157 14 1 13.3284 1 12.5V2.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4m = [\"color\"];\nvar TargetIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4m);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M0.900024 7.50002C0.900024 3.85495 3.85495 0.900024 7.50002 0.900024C11.1451 0.900024 14.1 3.85495 14.1 7.50002C14.1 11.1451 11.1451 14.1 7.50002 14.1C3.85495 14.1 0.900024 11.1451 0.900024 7.50002ZM7.50002 1.80002C4.35201 1.80002 1.80002 4.35201 1.80002 7.50002C1.80002 10.648 4.35201 13.2 7.50002 13.2C10.648 13.2 13.2 10.648 13.2 7.50002C13.2 4.35201 10.648 1.80002 7.50002 1.80002ZM3.07504 7.50002C3.07504 5.05617 5.05618 3.07502 7.50004 3.07502C9.94388 3.07502 11.925 5.05617 11.925 7.50002C11.925 9.94386 9.94388 11.925 7.50004 11.925C5.05618 11.925 3.07504 9.94386 3.07504 7.50002ZM7.50004 3.92502C5.52562 3.92502 3.92504 5.52561 3.92504 7.50002C3.92504 9.47442 5.52563 11.075 7.50004 11.075C9.47444 11.075 11.075 9.47442 11.075 7.50002C11.075 5.52561 9.47444 3.92502 7.50004 3.92502ZM7.50004 5.25002C6.2574 5.25002 5.25004 6.25739 5.25004 7.50002C5.25004 8.74266 6.2574 9.75002 7.50004 9.75002C8.74267 9.75002 9.75004 8.74266 9.75004 7.50002C9.75004 6.25738 8.74267 5.25002 7.50004 5.25002ZM6.05004 7.50002C6.05004 6.69921 6.69923 6.05002 7.50004 6.05002C8.30084 6.05002 8.95004 6.69921 8.95004 7.50002C8.95004 8.30083 8.30084 8.95002 7.50004 8.95002C6.69923 8.95002 6.05004 8.30083 6.05004 7.50002Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4n = [\"color\"];\nvar TextIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4n);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.94993 2.95002L3.94993 4.49998C3.94993 4.74851 3.74845 4.94998 3.49993 4.94998C3.2514 4.94998 3.04993 4.74851 3.04993 4.49998V2.50004C3.04993 2.45246 3.05731 2.40661 3.07099 2.36357C3.12878 2.18175 3.29897 2.05002 3.49993 2.05002H11.4999C11.6553 2.05002 11.7922 2.12872 11.8731 2.24842C11.9216 2.32024 11.9499 2.40682 11.9499 2.50002L11.9499 2.50004V4.49998C11.9499 4.74851 11.7485 4.94998 11.4999 4.94998C11.2514 4.94998 11.0499 4.74851 11.0499 4.49998V2.95002H8.04993V12.05H9.25428C9.50281 12.05 9.70428 12.2515 9.70428 12.5C9.70428 12.7486 9.50281 12.95 9.25428 12.95H5.75428C5.50575 12.95 5.30428 12.7486 5.30428 12.5C5.30428 12.2515 5.50575 12.05 5.75428 12.05H6.94993V2.95002H3.94993Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4o = [\"color\"];\nvar TextAlignBottomIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4o);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.89949 5.50002C3.89949 5.27911 3.7204 5.10003 3.49949 5.10003C3.27857 5.10003 3.09949 5.27911 3.09949 5.50002L3.09949 12.5343L1.78233 11.2172C1.62612 11.061 1.37285 11.061 1.21664 11.2172C1.06043 11.3734 1.06043 11.6267 1.21664 11.7829L3.21664 13.7829C3.29166 13.8579 3.3934 13.9 3.49949 13.9C3.60557 13.9 3.70732 13.8579 3.78233 13.7829L5.78233 11.7829C5.93854 11.6267 5.93854 11.3734 5.78233 11.2172C5.62612 11.061 5.37285 11.061 5.21664 11.2172L3.89949 12.5343L3.89949 5.50002ZM8.49998 13C8.22383 13 7.99998 12.7762 7.99998 12.5C7.99998 12.2239 8.22383 12 8.49998 12H14.5C14.7761 12 15 12.2239 15 12.5C15 12.7762 14.7761 13 14.5 13H8.49998ZM8.49998 10C8.22383 10 7.99998 9.77617 7.99998 9.50002C7.99998 9.22388 8.22383 9.00002 8.49998 9.00002H14.5C14.7761 9.00002 15 9.22388 15 9.50002C15 9.77617 14.7761 10 14.5 10H8.49998ZM7.99998 6.50002C7.99998 6.77617 8.22383 7.00002 8.49998 7.00002H14.5C14.7761 7.00002 15 6.77617 15 6.50002C15 6.22388 14.7761 6.00002 14.5 6.00002H8.49998C8.22383 6.00002 7.99998 6.22388 7.99998 6.50002Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4p = [\"color\"];\nvar TextAlignCenterIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4p);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2 4.5C2 4.22386 2.22386 4 2.5 4H12.5C12.7761 4 13 4.22386 13 4.5C13 4.77614 12.7761 5 12.5 5H2.5C2.22386 5 2 4.77614 2 4.5ZM4 7.5C4 7.22386 4.22386 7 4.5 7H10.5C10.7761 7 11 7.22386 11 7.5C11 7.77614 10.7761 8 10.5 8H4.5C4.22386 8 4 7.77614 4 7.5ZM3 10.5C3 10.2239 3.22386 10 3.5 10H11.5C11.7761 10 12 10.2239 12 10.5C12 10.7761 11.7761 11 11.5 11H3.5C3.22386 11 3 10.7761 3 10.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4q = [\"color\"];\nvar TextAlignJustifyIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4q);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2.5 4C2.22386 4 2 4.22386 2 4.5C2 4.77614 2.22386 5 2.5 5H12.5C12.7761 5 13 4.77614 13 4.5C13 4.22386 12.7761 4 12.5 4H2.5ZM2 7.5C2 7.22386 2.22386 7 2.5 7H12.5C12.7761 7 13 7.22386 13 7.5C13 7.77614 12.7761 8 12.5 8H2.5C2.22386 8 2 7.77614 2 7.5ZM2 10.5C2 10.2239 2.22386 10 2.5 10H12.5C12.7761 10 13 10.2239 13 10.5C13 10.7761 12.7761 11 12.5 11H2.5C2.22386 11 2 10.7761 2 10.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4r = [\"color\"];\nvar TextAlignLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4r);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2 4.5C2 4.22386 2.22386 4 2.5 4H12.5C12.7761 4 13 4.22386 13 4.5C13 4.77614 12.7761 5 12.5 5H2.5C2.22386 5 2 4.77614 2 4.5ZM2 7.5C2 7.22386 2.22386 7 2.5 7H7.5C7.77614 7 8 7.22386 8 7.5C8 7.77614 7.77614 8 7.5 8H2.5C2.22386 8 2 7.77614 2 7.5ZM2 10.5C2 10.2239 2.22386 10 2.5 10H10.5C10.7761 10 11 10.2239 11 10.5C11 10.7761 10.7761 11 10.5 11H2.5C2.22386 11 2 10.7761 2 10.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4s = [\"color\"];\nvar TextAlignMiddleIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4s);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.49949 14.9C3.7204 14.9 3.89949 14.7209 3.89949 14.5L3.89949 10.4657L5.21664 11.7829C5.37285 11.9391 5.62612 11.9391 5.78233 11.7829C5.93854 11.6267 5.93854 11.3734 5.78233 11.2172L3.78233 9.21718C3.70732 9.14217 3.60557 9.10002 3.49949 9.10002C3.3934 9.10002 3.29166 9.14217 3.21664 9.21718L1.21664 11.2172C1.06043 11.3734 1.06043 11.6267 1.21664 11.7829C1.37285 11.9391 1.62612 11.9391 1.78233 11.7829L3.09949 10.4657L3.09949 14.5C3.09949 14.7209 3.27857 14.9 3.49949 14.9ZM7.99998 10.5C7.99998 10.7762 8.22383 11 8.49998 11H14.5C14.7761 11 15 10.7762 15 10.5C15 10.2239 14.7761 10 14.5 10H8.49998C8.22383 10 7.99998 10.2239 7.99998 10.5ZM7.99998 7.50002C7.99998 7.77617 8.22383 8.00002 8.49998 8.00002H14.5C14.7761 8.00002 15 7.77617 15 7.50002C15 7.22388 14.7761 7.00002 14.5 7.00002H8.49998C8.22383 7.00002 7.99998 7.22388 7.99998 7.50002ZM8.49998 5.00002C8.22383 5.00002 7.99998 4.77617 7.99998 4.50002C7.99998 4.22388 8.22383 4.00002 8.49998 4.00002H14.5C14.7761 4.00002 15 4.22388 15 4.50002C15 4.77617 14.7761 5.00002 14.5 5.00002H8.49998ZM3.89949 0.500025C3.89949 0.279111 3.7204 0.100025 3.49949 0.100025C3.27857 0.100025 3.09949 0.279111 3.09949 0.500025L3.09949 4.53434L1.78233 3.21718C1.62612 3.06097 1.37285 3.06097 1.21664 3.21718C1.06043 3.37339 1.06043 3.62666 1.21664 3.78287L3.21664 5.78287C3.29166 5.85788 3.3934 5.90002 3.49949 5.90002C3.60557 5.90002 3.70732 5.85788 3.78233 5.78287L5.78233 3.78287C5.93854 3.62666 5.93854 3.37339 5.78233 3.21718C5.62612 3.06097 5.37285 3.06097 5.21664 3.21718L3.89949 4.53434L3.89949 0.500025Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4t = [\"color\"];\nvar TextAlignRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4t);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M2 4.5C2 4.22386 2.22386 4 2.5 4H12.5C12.7761 4 13 4.22386 13 4.5C13 4.77614 12.7761 5 12.5 5H2.5C2.22386 5 2 4.77614 2 4.5ZM7 7.5C7 7.22386 7.22386 7 7.5 7H12.5C12.7761 7 13 7.22386 13 7.5C13 7.77614 12.7761 8 12.5 8H7.5C7.22386 8 7 7.77614 7 7.5ZM4 10.5C4 10.2239 4.22386 10 4.5 10H12.5C12.7761 10 13 10.2239 13 10.5C13 10.7761 12.7761 11 12.5 11H4.5C4.22386 11 4 10.7761 4 10.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4u = [\"color\"];\nvar TextAlignTopIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4u);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M3.89949 9.49998C3.89949 9.72089 3.7204 9.89997 3.49949 9.89997C3.27857 9.89997 3.09949 9.72089 3.09949 9.49998L3.09949 2.46566L1.78233 3.78282C1.62612 3.93903 1.37285 3.93903 1.21664 3.78282C1.06043 3.62661 1.06043 3.37334 1.21664 3.21713L3.21664 1.21713C3.29166 1.14212 3.3934 1.09998 3.49949 1.09998C3.60557 1.09998 3.70732 1.14212 3.78233 1.21713L5.78233 3.21713C5.93854 3.37334 5.93854 3.62661 5.78233 3.78282C5.62612 3.93903 5.37285 3.93903 5.21664 3.78282L3.89949 2.46566L3.89949 9.49998ZM8.49998 1.99998C8.22383 1.99998 7.99998 2.22383 7.99998 2.49998C7.99998 2.77612 8.22383 2.99998 8.49998 2.99998H14.5C14.7761 2.99998 15 2.77612 15 2.49998C15 2.22383 14.7761 1.99998 14.5 1.99998H8.49998ZM8.49998 4.99998C8.22383 4.99998 7.99998 5.22383 7.99998 5.49998C7.99998 5.77612 8.22383 5.99998 8.49998 5.99998H14.5C14.7761 5.99998 15 5.77612 15 5.49998C15 5.22383 14.7761 4.99998 14.5 4.99998H8.49998ZM7.99998 8.49998C7.99998 8.22383 8.22383 7.99998 8.49998 7.99998H14.5C14.7761 7.99998 15 8.22383 15 8.49998C15 8.77612 14.7761 8.99998 14.5 8.99998H8.49998C8.22383 8.99998 7.99998 8.77612 7.99998 8.49998Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4v = [\"color\"];\nvar TextNoneIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4v);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M13.3536 2.35355C13.5488 2.15829 13.5488 1.84171 13.3536 1.64645C13.1583 1.45118 12.8417 1.45118 12.6464 1.64645L11.9291 2.36383C11.9159 2.32246 11.897 2.28368 11.8732 2.24845C11.7923 2.12875 11.6554 2.05005 11.5001 2.05005H3.50005C3.29909 2.05005 3.1289 2.18178 3.07111 2.3636C3.05743 2.40665 3.05005 2.45249 3.05005 2.50007V4.50001C3.05005 4.74854 3.25152 4.95001 3.50005 4.95001C3.74858 4.95001 3.95005 4.74854 3.95005 4.50001V2.95005H6.95006V7.34284L1.64645 12.6464C1.45118 12.8417 1.45118 13.1583 1.64645 13.3536C1.84171 13.5488 2.15829 13.5488 2.35355 13.3536L6.95006 8.75705V12.0501H5.7544C5.50587 12.0501 5.3044 12.2515 5.3044 12.5001C5.3044 12.7486 5.50587 12.9501 5.7544 12.9501H9.2544C9.50293 12.9501 9.7044 12.7486 9.7044 12.5001C9.7044 12.2515 9.50293 12.0501 9.2544 12.0501H8.05006V7.65705L13.3536 2.35355ZM8.05006 6.24284L11.0501 3.24283V2.95005H8.05006V6.24284Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4w = [\"color\"];\nvar ThickArrowDownIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4w);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M5 3.5C5 3.22386 5.22386 3 5.5 3H9.5C9.77614 3 10 3.22386 10 3.5V6H12.5C12.6873 6 12.8589 6.10467 12.9446 6.27121C13.0303 6.43774 13.0157 6.63821 12.9069 6.79062L7.90687 13.7906C7.81301 13.922 7.66148 14 7.5 14C7.33853 14 7.18699 13.922 7.09314 13.7906L2.09314 6.79062C1.98427 6.63821 1.96972 6.43774 2.05542 6.27121C2.14112 6.10467 2.31271 6 2.5 6H5V3.5ZM6 4V6.5C6 6.77614 5.77614 7 5.5 7H3.4716L7.5 12.6398L11.5284 7H9.5C9.22386 7 9 6.77614 9 6.5V4H6Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4x = [\"color\"];\nvar ThickArrowLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4x);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1 7.5C1 7.66148 1.07798 7.81301 1.20938 7.90687L8.20938 12.9069C8.36179 13.0157 8.56226 13.0303 8.72879 12.9446C8.89533 12.8589 9 12.6873 9 12.5L9 10L11.5 10C11.7761 10 12 9.77614 12 9.5L12 5.5C12 5.22386 11.7761 5 11.5 5L9 5L9 2.5C9 2.31271 8.89533 2.14112 8.72879 2.05542C8.56226 1.96972 8.36179 1.98427 8.20938 2.09313L1.20938 7.09314C1.07798 7.18699 1 7.33853 1 7.5ZM8 3.4716L8 5.5C8 5.77614 8.22386 6 8.5 6L11 6L11 9L8.5 9C8.22386 9 8 9.22386 8 9.5L8 11.5284L2.36023 7.5L8 3.4716Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4y = [\"color\"];\nvar ThickArrowRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4y);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M14 7.5C14 7.66148 13.922 7.81301 13.7906 7.90687L6.79062 12.9069C6.63821 13.0157 6.43774 13.0303 6.27121 12.9446C6.10467 12.8589 6 12.6873 6 12.5L6 10L3.5 10C3.22386 10 3 9.77614 3 9.5L3 5.5C3 5.22386 3.22386 5 3.5 5L6 5L6 2.5C6 2.31271 6.10467 2.14112 6.27121 2.05542C6.43774 1.96972 6.63821 1.98427 6.79062 2.09313L13.7906 7.09314C13.922 7.18699 14 7.33853 14 7.5ZM7 3.4716L7 5.5C7 5.77614 6.77614 6 6.5 6L4 6L4 9L6.5 9C6.77614 9 7 9.22386 7 9.5L7 11.5284L12.6398 7.5L7 3.4716Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4z = [\"color\"];\nvar ThickArrowUpIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4z);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.5 1C7.66148 1 7.81301 1.07798 7.90687 1.20938L12.9069 8.20938C13.0157 8.36179 13.0303 8.56226 12.9446 8.72879C12.8589 8.89533 12.6873 9 12.5 9H10V11.5C10 11.7761 9.77614 12 9.5 12H5.5C5.22386 12 5 11.7761 5 11.5V9H2.5C2.31271 9 2.14112 8.89533 2.05542 8.72879C1.96972 8.56226 1.98427 8.36179 2.09314 8.20938L7.09314 1.20938C7.18699 1.07798 7.33853 1 7.5 1ZM3.4716 8H5.5C5.77614 8 6 8.22386 6 8.5V11H9V8.5C9 8.22386 9.22386 8 9.5 8H11.5284L7.5 2.36023L3.4716 8Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4A = [\"color\"];\nvar TimerIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4A);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.49998 0.849976C7.22383 0.849976 6.99998 1.07383 6.99998 1.34998V3.52234C6.99998 3.79848 7.22383 4.02234 7.49998 4.02234C7.77612 4.02234 7.99998 3.79848 7.99998 3.52234V1.8718C10.8862 2.12488 13.15 4.54806 13.15 7.49998C13.15 10.6204 10.6204 13.15 7.49998 13.15C4.37957 13.15 1.84998 10.6204 1.84998 7.49998C1.84998 6.10612 2.35407 4.83128 3.19049 3.8459C3.36919 3.63538 3.34339 3.31985 3.13286 3.14115C2.92234 2.96245 2.60681 2.98825 2.42811 3.19877C1.44405 4.35808 0.849976 5.86029 0.849976 7.49998C0.849976 11.1727 3.82728 14.15 7.49998 14.15C11.1727 14.15 14.15 11.1727 14.15 7.49998C14.15 3.82728 11.1727 0.849976 7.49998 0.849976ZM6.74049 8.08072L4.22363 4.57237C4.15231 4.47295 4.16346 4.33652 4.24998 4.25C4.33649 4.16348 4.47293 4.15233 4.57234 4.22365L8.08069 6.74051C8.56227 7.08599 8.61906 7.78091 8.19998 8.2C7.78089 8.61909 7.08597 8.56229 6.74049 8.08072Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4B = [\"color\"];\nvar TokensIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4B);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M4.5 2C3.11929 2 2 3.11929 2 4.5C2 5.88072 3.11929 7 4.5 7C5.88072 7 7 5.88072 7 4.5C7 3.11929 5.88072 2 4.5 2ZM3 4.5C3 3.67157 3.67157 3 4.5 3C5.32843 3 6 3.67157 6 4.5C6 5.32843 5.32843 6 4.5 6C3.67157 6 3 5.32843 3 4.5ZM10.5 2C9.11929 2 8 3.11929 8 4.5C8 5.88072 9.11929 7 10.5 7C11.8807 7 13 5.88072 13 4.5C13 3.11929 11.8807 2 10.5 2ZM9 4.5C9 3.67157 9.67157 3 10.5 3C11.3284 3 12 3.67157 12 4.5C12 5.32843 11.3284 6 10.5 6C9.67157 6 9 5.32843 9 4.5ZM2 10.5C2 9.11929 3.11929 8 4.5 8C5.88072 8 7 9.11929 7 10.5C7 11.8807 5.88072 13 4.5 13C3.11929 13 2 11.8807 2 10.5ZM4.5 9C3.67157 9 3 9.67157 3 10.5C3 11.3284 3.67157 12 4.5 12C5.32843 12 6 11.3284 6 10.5C6 9.67157 5.32843 9 4.5 9ZM10.5 8C9.11929 8 8 9.11929 8 10.5C8 11.8807 9.11929 13 10.5 13C11.8807 13 13 11.8807 13 10.5C13 9.11929 11.8807 8 10.5 8ZM9 10.5C9 9.67157 9.67157 9 10.5 9C11.3284 9 12 9.67157 12 10.5C12 11.3284 11.3284 12 10.5 12C9.67157 12 9 11.3284 9 10.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4C = [\"color\"];\nvar TrackNextIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4C);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M13.0502 2.74989C13.0502 2.44613 12.804 2.19989 12.5002 2.19989C12.1965 2.19989 11.9502 2.44613 11.9502 2.74989V7.2825C11.9046 7.18802 11.8295 7.10851 11.7334 7.05776L2.73338 2.30776C2.5784 2.22596 2.3919 2.23127 2.24182 2.32176C2.09175 2.41225 2 2.57471 2 2.74995V12.25C2 12.4252 2.09175 12.5877 2.24182 12.6781C2.3919 12.7686 2.5784 12.7739 2.73338 12.6921L11.7334 7.94214C11.8295 7.89139 11.9046 7.81188 11.9502 7.7174V12.2499C11.9502 12.5536 12.1965 12.7999 12.5002 12.7999C12.804 12.7999 13.0502 12.5536 13.0502 12.2499V2.74989ZM3 11.4207V3.5792L10.4288 7.49995L3 11.4207Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4D = [\"color\"];\nvar TrackPreviousIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4D);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1.94976 2.74989C1.94976 2.44613 2.196 2.19989 2.49976 2.19989C2.80351 2.19989 3.04976 2.44613 3.04976 2.74989V7.2825C3.0954 7.18802 3.17046 7.10851 3.26662 7.05776L12.2666 2.30776C12.4216 2.22596 12.6081 2.23127 12.7582 2.32176C12.9083 2.41225 13 2.57471 13 2.74995V12.25C13 12.4252 12.9083 12.5877 12.7582 12.6781C12.6081 12.7686 12.4216 12.7739 12.2666 12.6921L3.26662 7.94214C3.17046 7.89139 3.0954 7.81188 3.04976 7.7174V12.2499C3.04976 12.5536 2.80351 12.7999 2.49976 12.7999C2.196 12.7999 1.94976 12.5536 1.94976 12.2499V2.74989ZM4.57122 7.49995L12 11.4207V3.5792L4.57122 7.49995Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4E = [\"color\"];\nvar TransformIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4E);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M0.849976 1.74998C0.849976 1.25292 1.25292 0.849976 1.74998 0.849976H3.24998C3.74703 0.849976 4.14998 1.25292 4.14998 1.74998V2.04998H10.85V1.74998C10.85 1.25292 11.2529 0.849976 11.75 0.849976H13.25C13.747 0.849976 14.15 1.25292 14.15 1.74998V3.24998C14.15 3.74703 13.747 4.14998 13.25 4.14998H12.95V10.85H13.25C13.747 10.85 14.15 11.2529 14.15 11.75V13.25C14.15 13.747 13.747 14.15 13.25 14.15H11.75C11.2529 14.15 10.85 13.747 10.85 13.25V12.95H4.14998V13.25C4.14998 13.747 3.74703 14.15 3.24998 14.15H1.74998C1.25292 14.15 0.849976 13.747 0.849976 13.25V11.75C0.849976 11.2529 1.25292 10.85 1.74998 10.85H2.04998V4.14998H1.74998C1.25292 4.14998 0.849976 3.74703 0.849976 3.24998V1.74998ZM2.94998 4.14998V10.85H3.24998C3.74703 10.85 4.14998 11.2529 4.14998 11.75V12.05H10.85V11.75C10.85 11.2529 11.2529 10.85 11.75 10.85H12.05V4.14998H11.75C11.2529 4.14998 10.85 3.74703 10.85 3.24998V2.94998H4.14998V3.24998C4.14998 3.74703 3.74703 4.14998 3.24998 4.14998H2.94998ZM2.34998 1.74998H1.74998V2.34998V2.64998V3.24998H2.34998H2.64998H3.24998V2.64998V2.34998V1.74998H2.64998H2.34998ZM5.09998 5.99998C5.09998 5.50292 5.50292 5.09998 5.99998 5.09998H6.99998C7.49703 5.09998 7.89998 5.50292 7.89998 5.99998V6.99998C7.89998 7.03591 7.89787 7.07134 7.89378 7.10618C7.92861 7.10208 7.96405 7.09998 7.99998 7.09998H8.99998C9.49703 7.09998 9.89998 7.50292 9.89998 7.99998V8.99998C9.89998 9.49703 9.49703 9.89998 8.99998 9.89998H7.99998C7.50292 9.89998 7.09998 9.49703 7.09998 8.99998V7.99998C7.09998 7.96405 7.10208 7.92861 7.10618 7.89378C7.07134 7.89787 7.03591 7.89998 6.99998 7.89998H5.99998C5.50292 7.89998 5.09998 7.49703 5.09998 6.99998V5.99998ZM6.09998 5.99998H5.99998V6.09998V6.89998V6.99998H6.09998H6.89998H6.99998V6.89998V6.09998V5.99998H6.89998H6.09998ZM7.99998 7.99998H8.09998H8.89998H8.99998V8.09998V8.89998V8.99998H8.89998H8.09998H7.99998V8.89998V8.09998V7.99998ZM2.64998 11.75H2.34998H1.74998V12.35V12.65V13.25H2.34998H2.64998H3.24998V12.65V12.35V11.75H2.64998ZM11.75 1.74998H12.35H12.65H13.25V2.34998V2.64998V3.24998H12.65H12.35H11.75V2.64998V2.34998V1.74998ZM12.65 11.75H12.35H11.75V12.35V12.65V13.25H12.35H12.65H13.25V12.65V12.35V11.75H12.65Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4F = [\"color\"];\nvar TransparencyGridIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4F);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n opacity: \".25\",\n d: \"M0 0H3V3H0V0ZM6 3H3V6H0V9H3V12H0V15H3V12H6V15H9V12H12V15H15V12H12V9H15V6H12V3H15V0H12V3H9V0H6V3ZM6 6V3H9V6H6ZM6 9H3V6H6V9ZM9 9V6H12V9H9ZM9 9H6V12H9V9Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4G = [\"color\"];\nvar TrashIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4G);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M5.5 1C5.22386 1 5 1.22386 5 1.5C5 1.77614 5.22386 2 5.5 2H9.5C9.77614 2 10 1.77614 10 1.5C10 1.22386 9.77614 1 9.5 1H5.5ZM3 3.5C3 3.22386 3.22386 3 3.5 3H5H10H11.5C11.7761 3 12 3.22386 12 3.5C12 3.77614 11.7761 4 11.5 4H11V12C11 12.5523 10.5523 13 10 13H5C4.44772 13 4 12.5523 4 12V4L3.5 4C3.22386 4 3 3.77614 3 3.5ZM5 4H10V12H5V4Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4H = [\"color\"];\nvar TriangleDownIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4H);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M4 6H11L7.5 10.5L4 6Z\",\n fill: color\n }));\n});\n\nvar _excluded$4I = [\"color\"];\nvar TriangleLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4I);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M9 4L9 11L4.5 7.5L9 4Z\",\n fill: color\n }));\n});\n\nvar _excluded$4J = [\"color\"];\nvar TriangleRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4J);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M6 11L6 4L10.5 7.5L6 11Z\",\n fill: color\n }));\n});\n\nvar _excluded$4K = [\"color\"];\nvar TriangleUpIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4K);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M4 9H11L7.5 4.5L4 9Z\",\n fill: color\n }));\n});\n\nvar _excluded$4L = [\"color\"];\nvar TwitterLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4L);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.23336 4.69629C7.23336 2.96884 8.63335 1.56857 10.36 1.56857C11.3736 1.56857 12.183 2.04804 12.7254 2.74385C13.3079 2.62467 13.8557 2.40913 14.3513 2.11508C14.1559 2.72598 13.7424 3.2396 13.2033 3.56463C13.2038 3.56568 13.2042 3.56674 13.2047 3.56779C13.7334 3.50361 14.2364 3.36302 14.7048 3.15546L14.7037 3.15715C14.3667 3.66183 13.9431 4.10736 13.4561 4.47034C13.4823 4.64672 13.4956 4.82427 13.4956 5.00079C13.4956 8.6871 10.6873 12.9746 5.52122 12.9746C3.93906 12.9746 2.46544 12.511 1.22505 11.7152C0.992632 11.5661 0.925108 11.2568 1.07423 11.0244C1.0874 11.0038 1.10183 10.9846 1.11734 10.9666C1.20582 10.8202 1.37438 10.7309 1.5554 10.7522C2.47066 10.8601 3.38568 10.7485 4.19219 10.3962C3.39226 10.0434 2.77129 9.35975 2.50204 8.51974C2.45359 8.3686 2.48835 8.20311 2.59351 8.08422C2.59716 8.0801 2.60087 8.07606 2.60464 8.0721C1.96391 7.50819 1.55973 6.68208 1.55973 5.76143V5.72759C1.55973 5.56814 1.64411 5.42059 1.78155 5.33974C1.82671 5.31317 1.87537 5.29511 1.92532 5.28558C1.70549 4.86154 1.58116 4.37984 1.58116 3.86958C1.58116 3.40165 1.58384 2.81192 1.91332 2.28081C1.98718 2.16175 2.10758 2.08915 2.2364 2.07195C2.42588 2.01237 2.64087 2.06969 2.77406 2.23302C3.86536 3.57126 5.44066 4.49583 7.23366 4.73961L7.23336 4.69629ZM5.52122 11.9746C4.73387 11.9746 3.97781 11.8435 3.27248 11.6023C4.13012 11.4538 4.95307 11.1159 5.66218 10.5602C5.81211 10.4427 5.87182 10.2435 5.81126 10.0629C5.7507 9.88234 5.583 9.75943 5.39255 9.75607C4.68968 9.74366 4.06712 9.39716 3.67793 8.86845C3.86828 8.85306 4.05428 8.82039 4.23445 8.77167C4.43603 8.71716 4.57363 8.53114 4.56674 8.32243C4.55985 8.11372 4.41029 7.93718 4.20555 7.89607C3.42694 7.73977 2.79883 7.16764 2.56169 6.42174C2.76255 6.47025 2.97102 6.4991 3.18482 6.5061C3.38563 6.51267 3.56646 6.38533 3.62795 6.19405C3.68943 6.00277 3.61666 5.79391 3.44963 5.68224C2.86523 5.29155 2.48116 4.62464 2.48116 3.86958C2.48116 3.70213 2.48352 3.55268 2.49355 3.41719C3.85115 4.79913 5.70873 5.68931 7.77588 5.79338C7.93225 5.80126 8.08328 5.73543 8.18395 5.61553C8.28463 5.49562 8.32332 5.33548 8.28851 5.18284C8.25255 5.02517 8.23336 4.86284 8.23336 4.69629C8.23336 3.52085 9.18591 2.56857 10.36 2.56857C11.5943 2.56857 12.4956 3.71208 12.4956 5.00079C12.4956 8.25709 10.0202 11.9746 5.52122 11.9746Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4M = [\"color\"];\nvar UnderlineIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4M);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M5.00001 2.75C5.00001 2.47386 4.77615 2.25 4.50001 2.25C4.22387 2.25 4.00001 2.47386 4.00001 2.75V8.05C4.00001 9.983 5.56702 11.55 7.50001 11.55C9.43301 11.55 11 9.983 11 8.05V2.75C11 2.47386 10.7762 2.25 10.5 2.25C10.2239 2.25 10 2.47386 10 2.75V8.05C10 9.43071 8.88072 10.55 7.50001 10.55C6.1193 10.55 5.00001 9.43071 5.00001 8.05V2.75ZM3.49998 13.1001C3.27906 13.1001 3.09998 13.2791 3.09998 13.5001C3.09998 13.721 3.27906 13.9001 3.49998 13.9001H11.5C11.7209 13.9001 11.9 13.721 11.9 13.5001C11.9 13.2791 11.7209 13.1001 11.5 13.1001H3.49998Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4N = [\"color\"];\nvar UpdateIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4N);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1.90321 7.29677C1.90321 10.341 4.11041 12.4147 6.58893 12.8439C6.87255 12.893 7.06266 13.1627 7.01355 13.4464C6.96444 13.73 6.69471 13.9201 6.41109 13.871C3.49942 13.3668 0.86084 10.9127 0.86084 7.29677C0.860839 5.76009 1.55996 4.55245 2.37639 3.63377C2.96124 2.97568 3.63034 2.44135 4.16846 2.03202L2.53205 2.03202C2.25591 2.03202 2.03205 1.80816 2.03205 1.53202C2.03205 1.25588 2.25591 1.03202 2.53205 1.03202L5.53205 1.03202C5.80819 1.03202 6.03205 1.25588 6.03205 1.53202L6.03205 4.53202C6.03205 4.80816 5.80819 5.03202 5.53205 5.03202C5.25591 5.03202 5.03205 4.80816 5.03205 4.53202L5.03205 2.68645L5.03054 2.68759L5.03045 2.68766L5.03044 2.68767L5.03043 2.68767C4.45896 3.11868 3.76059 3.64538 3.15554 4.3262C2.44102 5.13021 1.90321 6.10154 1.90321 7.29677ZM13.0109 7.70321C13.0109 4.69115 10.8505 2.6296 8.40384 2.17029C8.12093 2.11718 7.93465 1.84479 7.98776 1.56188C8.04087 1.27898 8.31326 1.0927 8.59616 1.14581C11.4704 1.68541 14.0532 4.12605 14.0532 7.70321C14.0532 9.23988 13.3541 10.4475 12.5377 11.3662C11.9528 12.0243 11.2837 12.5586 10.7456 12.968L12.3821 12.968C12.6582 12.968 12.8821 13.1918 12.8821 13.468C12.8821 13.7441 12.6582 13.968 12.3821 13.968L9.38205 13.968C9.10591 13.968 8.88205 13.7441 8.88205 13.468L8.88205 10.468C8.88205 10.1918 9.10591 9.96796 9.38205 9.96796C9.65819 9.96796 9.88205 10.1918 9.88205 10.468L9.88205 12.3135L9.88362 12.3123C10.4551 11.8813 11.1535 11.3546 11.7585 10.6738C12.4731 9.86976 13.0109 8.89844 13.0109 7.70321Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4O = [\"color\"];\nvar UploadIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4O);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.81825 1.18188C7.64251 1.00615 7.35759 1.00615 7.18185 1.18188L4.18185 4.18188C4.00611 4.35762 4.00611 4.64254 4.18185 4.81828C4.35759 4.99401 4.64251 4.99401 4.81825 4.81828L7.05005 2.58648V9.49996C7.05005 9.74849 7.25152 9.94996 7.50005 9.94996C7.74858 9.94996 7.95005 9.74849 7.95005 9.49996V2.58648L10.1819 4.81828C10.3576 4.99401 10.6425 4.99401 10.8182 4.81828C10.994 4.64254 10.994 4.35762 10.8182 4.18188L7.81825 1.18188ZM2.5 9.99997C2.77614 9.99997 3 10.2238 3 10.5V12C3 12.5538 3.44565 13 3.99635 13H11.0012C11.5529 13 12 12.5528 12 12V10.5C12 10.2238 12.2239 9.99997 12.5 9.99997C12.7761 9.99997 13 10.2238 13 10.5V12C13 13.104 12.1062 14 11.0012 14H3.99635C2.89019 14 2 13.103 2 12V10.5C2 10.2238 2.22386 9.99997 2.5 9.99997Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4P = [\"color\"];\nvar ValueIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4P);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M0.877075 7.49988C0.877075 3.84219 3.84222 0.877045 7.49991 0.877045C11.1576 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49988ZM7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 4.36686 10.6329 1.82704 7.49991 1.82704Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4Q = [\"color\"];\nvar ValueNoneIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4Q);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.49985 0.877045C3.84216 0.877045 0.877014 3.84219 0.877014 7.49988C0.877014 9.1488 1.47963 10.657 2.47665 11.8162L1.64643 12.6464C1.45117 12.8417 1.45117 13.1583 1.64643 13.3535C1.8417 13.5488 2.15828 13.5488 2.35354 13.3535L3.18377 12.5233C4.34296 13.5202 5.85104 14.1227 7.49985 14.1227C11.1575 14.1227 14.1227 11.1575 14.1227 7.49988C14.1227 5.85107 13.5202 4.34299 12.5233 3.1838L13.3535 2.35354C13.5488 2.15827 13.5488 1.84169 13.3535 1.64643C13.1583 1.45117 12.8417 1.45117 12.6464 1.64643L11.8162 2.47668C10.657 1.47966 9.14877 0.877045 7.49985 0.877045ZM11.1422 3.15066C10.1567 2.32449 8.88639 1.82704 7.49985 1.82704C4.36683 1.82704 1.82701 4.36686 1.82701 7.49988C1.82701 8.88642 2.32446 10.1568 3.15063 11.1422L11.1422 3.15066ZM3.85776 11.8493C4.84317 12.6753 6.11343 13.1727 7.49985 13.1727C10.6328 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 6.11346 12.6753 4.8432 11.8493 3.85779L3.85776 11.8493Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4R = [\"color\"];\nvar VercelLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4R);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7.49998 1L6.92321 2.00307L1.17498 12L0.599976 13H1.7535H13.2464H14.4L13.825 12L8.07674 2.00307L7.49998 1ZM7.49998 3.00613L2.3285 12H12.6714L7.49998 3.00613Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4S = [\"color\"];\nvar VideoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4S);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M4.76447 3.12199C5.63151 3.04859 6.56082 3 7.5 3C8.43918 3 9.36849 3.04859 10.2355 3.12199C11.2796 3.21037 11.9553 3.27008 12.472 3.39203C12.9425 3.50304 13.2048 3.64976 13.4306 3.88086C13.4553 3.90618 13.4902 3.94414 13.5133 3.97092C13.7126 4.20149 13.8435 4.4887 13.918 5.03283C13.9978 5.6156 14 6.37644 14 7.52493C14 8.66026 13.9978 9.41019 13.9181 9.98538C13.8439 10.5206 13.7137 10.8061 13.5125 11.0387C13.4896 11.0651 13.4541 11.1038 13.4296 11.1287C13.2009 11.3625 12.9406 11.5076 12.4818 11.6164C11.9752 11.7365 11.3143 11.7942 10.2878 11.8797C9.41948 11.9521 8.47566 12 7.5 12C6.52434 12 5.58052 11.9521 4.7122 11.8797C3.68572 11.7942 3.02477 11.7365 2.51816 11.6164C2.05936 11.5076 1.7991 11.3625 1.57037 11.1287C1.54593 11.1038 1.51035 11.0651 1.48748 11.0387C1.28628 10.8061 1.15612 10.5206 1.08193 9.98538C1.00221 9.41019 1 8.66026 1 7.52493C1 6.37644 1.00216 5.6156 1.082 5.03283C1.15654 4.4887 1.28744 4.20149 1.48666 3.97092C1.5098 3.94414 1.54468 3.90618 1.56942 3.88086C1.7952 3.64976 2.05752 3.50304 2.52796 3.39203C3.04473 3.27008 3.7204 3.21037 4.76447 3.12199ZM0 7.52493C0 5.28296 0 4.16198 0.729985 3.31713C0.766457 3.27491 0.815139 3.22194 0.854123 3.18204C1.63439 2.38339 2.64963 2.29744 4.68012 2.12555C5.56923 2.05028 6.52724 2 7.5 2C8.47276 2 9.43077 2.05028 10.3199 2.12555C12.3504 2.29744 13.3656 2.38339 14.1459 3.18204C14.1849 3.22194 14.2335 3.27491 14.27 3.31713C15 4.16198 15 5.28296 15 7.52493C15 9.74012 15 10.8477 14.2688 11.6929C14.2326 11.7348 14.1832 11.7885 14.1444 11.8281C13.3629 12.6269 12.3655 12.71 10.3709 12.8763C9.47971 12.9505 8.50782 13 7.5 13C6.49218 13 5.52028 12.9505 4.62915 12.8763C2.63446 12.71 1.63712 12.6269 0.855558 11.8281C0.816844 11.7885 0.767442 11.7348 0.731221 11.6929C0 10.8477 0 9.74012 0 7.52493ZM5.25 5.38264C5.25 5.20225 5.43522 5.08124 5.60041 5.15369L10.428 7.27105C10.6274 7.35853 10.6274 7.64147 10.428 7.72895L5.60041 9.84631C5.43522 9.91876 5.25 9.79775 5.25 9.61736V5.38264Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4T = [\"color\"];\nvar ViewGridIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4T);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M7 2H1.5C1.22386 2 1 2.22386 1 2.5V7H7V2ZM8 2V7H14V2.5C14 2.22386 13.7761 2 13.5 2H8ZM7 8H1V12.5C1 12.7761 1.22386 13 1.5 13H7V8ZM8 13V8H14V12.5C14 12.7761 13.7761 13 13.5 13H8ZM1.5 1C0.671573 1 0 1.67157 0 2.5V12.5C0 13.3284 0.671573 14 1.5 14H13.5C14.3284 14 15 13.3284 15 12.5V2.5C15 1.67157 14.3284 1 13.5 1H1.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4U = [\"color\"];\nvar ViewHorizontalIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4U);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M1.5 2H13.5C13.7761 2 14 2.22386 14 2.5V7H1V2.5C1 2.22386 1.22386 2 1.5 2ZM1 8V12.5C1 12.7761 1.22386 13 1.5 13H13.5C13.7761 13 14 12.7761 14 12.5V8H1ZM0 2.5C0 1.67157 0.671573 1 1.5 1H13.5C14.3284 1 15 1.67157 15 2.5V12.5C15 13.3284 14.3284 14 13.5 14H1.5C0.671573 14 0 13.3284 0 12.5V2.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4V = [\"color\"];\nvar ViewNoneIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4V);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M14 2.58711L1.85163 13H13.5C13.7761 13 14 12.7761 14 12.5V2.58711ZM0.762879 13.8067L0.825396 13.8796L0.854717 13.8545C1.05017 13.9478 1.26899 14 1.5 14H13.5C14.3284 14 15 13.3284 15 12.5V2.5C15 1.93949 14.6926 1.45078 14.2371 1.19331L14.1746 1.12037L14.1453 1.1455C13.9498 1.05222 13.731 1 13.5 1H1.5C0.671573 1 0 1.67157 0 2.5V12.5C0 13.0605 0.307435 13.5492 0.762879 13.8067ZM1 12.4129L13.1484 2H1.5C1.22386 2 1 2.22386 1 2.5V12.4129Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4W = [\"color\"];\nvar ViewVerticalIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4W);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M8 2H13.5C13.7761 2 14 2.22386 14 2.5V12.5C14 12.7761 13.7761 13 13.5 13H8V2ZM7 2H1.5C1.22386 2 1 2.22386 1 2.5V12.5C1 12.7761 1.22386 13 1.5 13H7V2ZM0 2.5C0 1.67157 0.671573 1 1.5 1H13.5C14.3284 1 15 1.67157 15 2.5V12.5C15 13.3284 14.3284 14 13.5 14H1.5C0.671573 14 0 13.3284 0 12.5V2.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4X = [\"color\"];\nvar WidthIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4X);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M4.81812 4.68161C4.99386 4.85734 4.99386 5.14227 4.81812 5.318L3.08632 7.0498H11.9135L10.1817 5.318C10.006 5.14227 10.006 4.85734 10.1817 4.68161C10.3575 4.50587 10.6424 4.50587 10.8181 4.68161L13.3181 7.18161C13.4939 7.35734 13.4939 7.64227 13.3181 7.818L10.8181 10.318C10.6424 10.4937 10.3575 10.4937 10.1817 10.318C10.006 10.1423 10.006 9.85734 10.1817 9.68161L11.9135 7.9498H3.08632L4.81812 9.68161C4.99386 9.85734 4.99386 10.1423 4.81812 10.318C4.64239 10.4937 4.35746 10.4937 4.18173 10.318L1.68173 7.818C1.50599 7.64227 1.50599 7.35734 1.68173 7.18161L4.18173 4.68161C4.35746 4.50587 4.64239 4.50587 4.81812 4.68161Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4Y = [\"color\"];\nvar ZoomInIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4Y);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M10 6.5C10 8.433 8.433 10 6.5 10C4.567 10 3 8.433 3 6.5C3 4.567 4.567 3 6.5 3C8.433 3 10 4.567 10 6.5ZM9.30884 10.0159C8.53901 10.6318 7.56251 11 6.5 11C4.01472 11 2 8.98528 2 6.5C2 4.01472 4.01472 2 6.5 2C8.98528 2 11 4.01472 11 6.5C11 7.56251 10.6318 8.53901 10.0159 9.30884L12.8536 12.1464C13.0488 12.3417 13.0488 12.6583 12.8536 12.8536C12.6583 13.0488 12.3417 13.0488 12.1464 12.8536L9.30884 10.0159ZM4.25 6.5C4.25 6.22386 4.47386 6 4.75 6H6V4.75C6 4.47386 6.22386 4.25 6.5 4.25C6.77614 4.25 7 4.47386 7 4.75V6H8.25C8.52614 6 8.75 6.22386 8.75 6.5C8.75 6.77614 8.52614 7 8.25 7H7V8.25C7 8.52614 6.77614 8.75 6.5 8.75C6.22386 8.75 6 8.52614 6 8.25V7H4.75C4.47386 7 4.25 6.77614 4.25 6.5Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nvar _excluded$4Z = [\"color\"];\nvar ZoomOutIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$4Z);\n\n return createElement(\"svg\", Object.assign({\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props, {\n ref: forwardedRef\n }), createElement(\"path\", {\n d: \"M6.5 10C8.433 10 10 8.433 10 6.5C10 4.567 8.433 3 6.5 3C4.567 3 3 4.567 3 6.5C3 8.433 4.567 10 6.5 10ZM6.5 11C7.56251 11 8.53901 10.6318 9.30884 10.0159L12.1464 12.8536C12.3417 13.0488 12.6583 13.0488 12.8536 12.8536C13.0488 12.6583 13.0488 12.3417 12.8536 12.1464L10.0159 9.30884C10.6318 8.53901 11 7.56251 11 6.5C11 4.01472 8.98528 2 6.5 2C4.01472 2 2 4.01472 2 6.5C2 8.98528 4.01472 11 6.5 11ZM4.75 6C4.47386 6 4.25 6.22386 4.25 6.5C4.25 6.77614 4.47386 7 4.75 7H8.25C8.52614 7 8.75 6.77614 8.75 6.5C8.75 6.22386 8.52614 6 8.25 6H4.75Z\",\n fill: color,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n});\n\nexport { AccessibilityIcon, ActivityLogIcon, AlignBaselineIcon, AlignBottomIcon, AlignCenterHorizontallyIcon, AlignCenterVerticallyIcon, AlignLeftIcon, AlignRightIcon, AlignTopIcon, AllSidesIcon, AngleIcon, ArchiveIcon, ArrowBottomLeftIcon, ArrowBottomRightIcon, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowTopLeftIcon, ArrowTopRightIcon, ArrowUpIcon, AspectRatioIcon, AvatarIcon, BackpackIcon, BadgeIcon, BarChartIcon, BellIcon, BlendingModeIcon, BookmarkFilledIcon, BookmarkIcon, BorderAllIcon, BorderBottomIcon, BorderDashedIcon, BorderDottedIcon, BorderLeftIcon, BorderNoneIcon, BorderRightIcon, BorderSolidIcon, BorderSplitIcon, BorderStyleIcon, BorderTopIcon, BorderWidthIcon, BoxIcon, BoxModelIcon, ButtonIcon, CalendarIcon, CameraIcon, CardStackIcon, CardStackMinusIcon, CardStackPlusIcon, CaretDownIcon, CaretLeftIcon, CaretRightIcon, CaretSortIcon, CaretUpIcon, ChatBubbleIcon, CheckCircledIcon, CheckIcon, CheckboxIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CircleBackslashIcon, CircleIcon, ClipboardCopyIcon, ClipboardIcon, ClockIcon, CodeIcon, CodeSandboxLogoIcon, ColorWheelIcon, ColumnSpacingIcon, ColumnsIcon, CommitIcon, Component1Icon, Component2Icon, ComponentBooleanIcon, ComponentInstanceIcon, ComponentNoneIcon, ComponentPlaceholderIcon, ContainerIcon, CookieIcon, CopyIcon, CornerBottomLeftIcon, CornerBottomRightIcon, CornerTopLeftIcon, CornerTopRightIcon, CornersIcon, CountdownTimerIcon, CounterClockwiseClockIcon, CropIcon, Cross1Icon, Cross2Icon, CrossCircledIcon, Crosshair1Icon, Crosshair2Icon, CrumpledPaperIcon, CubeIcon, CursorArrowIcon, CursorTextIcon, DashIcon, DashboardIcon, DesktopIcon, DimensionsIcon, DiscIcon, DiscordLogoIcon, DividerHorizontalIcon, DividerVerticalIcon, DotFilledIcon, DotIcon, DotsHorizontalIcon, DotsVerticalIcon, DoubleArrowDownIcon, DoubleArrowLeftIcon, DoubleArrowRightIcon, DoubleArrowUpIcon, DownloadIcon, DragHandleDots1Icon, DragHandleDots2Icon, DragHandleHorizontalIcon, DragHandleVerticalIcon, DrawingPinFilledIcon, DrawingPinIcon, DropdownMenuIcon, EnterFullScreenIcon, EnterIcon, EnvelopeClosedIcon, EnvelopeOpenIcon, EraserIcon, ExclamationTriangleIcon, ExitFullScreenIcon, ExitIcon, ExternalLinkIcon, EyeClosedIcon, EyeNoneIcon, EyeOpenIcon, FaceIcon, FigmaLogoIcon, FileIcon, FileMinusIcon, FilePlusIcon, FileTextIcon, FontBoldIcon, FontFamilyIcon, FontItalicIcon, FontRomanIcon, FontSizeIcon, FontStyleIcon, FrameIcon, FramerLogoIcon, GearIcon, GitHubLogoIcon, GlobeIcon, GridIcon, GroupIcon, Half1Icon, Half2Icon, HamburgerMenuIcon, HandIcon, HeadingIcon, HeartFilledIcon, HeartIcon, HeightIcon, HobbyKnifeIcon, HomeIcon, IconJarLogoIcon, IdCardIcon, ImageIcon, InfoCircledIcon, InputIcon, InstagramLogoIcon, KeyboardIcon, LapTimerIcon, LaptopIcon, LayersIcon, LayoutIcon, LetterCaseCapitalizeIcon, LetterCaseLowercaseIcon, LetterCaseToggleIcon, LetterCaseUppercaseIcon, LetterSpacingIcon, LightningBoltIcon, LineHeightIcon, Link1Icon, Link2Icon, LinkBreak1Icon, LinkBreak2Icon, LinkNone1Icon, LinkNone2Icon, LinkedInLogoIcon, ListBulletIcon, LockClosedIcon, LockOpen1Icon, LockOpen2Icon, LoopIcon, MagicWandIcon, MagnifyingGlassIcon, MarginIcon, MaskOffIcon, MaskOnIcon, MinusCircledIcon, MinusIcon, MixIcon, MixerHorizontalIcon, MixerVerticalIcon, MobileIcon, ModulzLogoIcon, MoonIcon, MoveIcon, NotionLogoIcon, OpacityIcon, OpenInNewWindowIcon, OverlineIcon, PaddingIcon, PaperPlaneIcon, PauseIcon, Pencil1Icon, Pencil2Icon, PersonIcon, PieChartIcon, PilcrowIcon, PinBottomIcon, PinLeftIcon, PinRightIcon, PinTopIcon, PlayIcon, PlusCircledIcon, PlusIcon, QuestionMarkCircledIcon, QuestionMarkIcon, QuoteIcon, RadiobuttonIcon, ReaderIcon, ReloadIcon, ResetIcon, ResumeIcon, RocketIcon, RotateCounterClockwiseIcon, RowSpacingIcon, RowsIcon, RulerHorizontalIcon, RulerSquareIcon, ScissorsIcon, SectionIcon, SewingPinFilledIcon, SewingPinIcon, ShadowIcon, ShadowInnerIcon, ShadowNoneIcon, ShadowOuterIcon, Share1Icon, Share2Icon, ShuffleIcon, SizeIcon, SketchLogoIcon, SlashIcon, SliderIcon, SpaceBetweenHorizontallyIcon, SpaceBetweenVerticallyIcon, SpaceEvenlyHorizontallyIcon, SpaceEvenlyVerticallyIcon, SpeakerLoudIcon, SpeakerModerateIcon, SpeakerOffIcon, SpeakerQuietIcon, SquareIcon, StackIcon, StarFilledIcon, StarIcon, StitchesLogoIcon, StopIcon, StopwatchIcon, StretchHorizontallyIcon, StretchVerticallyIcon, StrikethroughIcon, SunIcon, SwitchIcon, SymbolIcon, TableIcon, TargetIcon, TextAlignBottomIcon, TextAlignCenterIcon, TextAlignJustifyIcon, TextAlignLeftIcon, TextAlignMiddleIcon, TextAlignRightIcon, TextAlignTopIcon, TextIcon, TextNoneIcon, ThickArrowDownIcon, ThickArrowLeftIcon, ThickArrowRightIcon, ThickArrowUpIcon, TimerIcon, TokensIcon, TrackNextIcon, TrackPreviousIcon, TransformIcon, TransparencyGridIcon, TrashIcon, TriangleDownIcon, TriangleLeftIcon, TriangleRightIcon, TriangleUpIcon, TwitterLogoIcon, UnderlineIcon, UpdateIcon, UploadIcon, ValueIcon, ValueNoneIcon, VercelLogoIcon, VideoIcon, ViewGridIcon, ViewHorizontalIcon, ViewNoneIcon, ViewVerticalIcon, WidthIcon, ZoomInIcon, ZoomOutIcon };\n//# sourceMappingURL=react-icons.esm.js.map\n","function mergeRefs(refs) {\n return function (value) {\n refs.forEach(function (ref) {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref != null) {\n ref.current = value;\n }\n });\n };\n}\n\nexport default mergeRefs;\n//# sourceMappingURL=react-merge-refs.esm.js.map\n","/**\n * @author Takahiro / https://github.com/takahirox\n *\n * Simple CharsetEncoder.\n */\n\nfunction CharsetEncoder() {\n}\n\n/*\n * Converts from Shift_JIS Uint8Array data to Unicode strings.\n */\nCharsetEncoder.prototype.s2u = function(uint8Array) {\n var t = this.s2uTable;\n var str = '';\n var p = 0;\n\n while(p < uint8Array.length) {\n var key = uint8Array[p++];\n\n if(! ((key >= 0x00 && key <= 0x7e) ||\n (key >= 0xa1 && key <= 0xdf)) &&\n p < uint8Array.length) {\n key = (key << 8) | uint8Array[p++];\n }\n\n if(t[key] === undefined) {\n console.error('unknown char code ' + key + '.');\n return str;\n }\n\n str += String.fromCharCode(t[key]);\n }\n\n return str;\n};\n\nCharsetEncoder.prototype.s2uTable = {\n0:0,\n1:1,\n2:2,\n3:3,\n4:4,\n5:5,\n6:6,\n7:7,\n8:8,\n9:9,\n10:10,\n11:11,\n12:12,\n13:13,\n14:14,\n15:15,\n16:16,\n17:17,\n18:18,\n19:19,\n20:20,\n21:21,\n22:22,\n23:23,\n24:24,\n25:25,\n26:26,\n27:27,\n28:28,\n29:29,\n30:30,\n31:31,\n32:32,\n33:33,\n34:34,\n35:35,\n36:36,\n37:37,\n38:38,\n39:39,\n40:40,\n41:41,\n42:42,\n43:43,\n44:44,\n45:45,\n46:46,\n47:47,\n48:48,\n49:49,\n50:50,\n51:51,\n52:52,\n53:53,\n54:54,\n55:55,\n56:56,\n57:57,\n58:58,\n59:59,\n60:60,\n61:61,\n62:62,\n63:63,\n64:64,\n65:65,\n66:66,\n67:67,\n68:68,\n69:69,\n70:70,\n71:71,\n72:72,\n73:73,\n74:74,\n75:75,\n76:76,\n77:77,\n78:78,\n79:79,\n80:80,\n81:81,\n82:82,\n83:83,\n84:84,\n85:85,\n86:86,\n87:87,\n88:88,\n89:89,\n90:90,\n91:91,\n92:92,\n93:93,\n94:94,\n95:95,\n96:96,\n97:97,\n98:98,\n99:99,\n100:100,\n101:101,\n102:102,\n103:103,\n104:104,\n105:105,\n106:106,\n107:107,\n108:108,\n109:109,\n110:110,\n111:111,\n112:112,\n113:113,\n114:114,\n115:115,\n116:116,\n117:117,\n118:118,\n119:119,\n120:120,\n121:121,\n122:122,\n123:123,\n124:124,\n125:125,\n126:126,\n161:65377,\n162:65378,\n163:65379,\n164:65380,\n165:65381,\n166:65382,\n167:65383,\n168:65384,\n169:65385,\n170:65386,\n171:65387,\n172:65388,\n173:65389,\n174:65390,\n175:65391,\n176:65392,\n177:65393,\n178:65394,\n179:65395,\n180:65396,\n181:65397,\n182:65398,\n183:65399,\n184:65400,\n185:65401,\n186:65402,\n187:65403,\n188:65404,\n189:65405,\n190:65406,\n191:65407,\n192:65408,\n193:65409,\n194:65410,\n195:65411,\n196:65412,\n197:65413,\n198:65414,\n199:65415,\n200:65416,\n201:65417,\n202:65418,\n203:65419,\n204:65420,\n205:65421,\n206:65422,\n207:65423,\n208:65424,\n209:65425,\n210:65426,\n211:65427,\n212:65428,\n213:65429,\n214:65430,\n215:65431,\n216:65432,\n217:65433,\n218:65434,\n219:65435,\n220:65436,\n221:65437,\n222:65438,\n223:65439,\n33088:12288,\n33089:12289,\n33090:12290,\n33091:65292,\n33092:65294,\n33093:12539,\n33094:65306,\n33095:65307,\n33096:65311,\n33097:65281,\n33098:12443,\n33099:12444,\n33100:180,\n33101:65344,\n33102:168,\n33103:65342,\n33104:65507,\n33105:65343,\n33106:12541,\n33107:12542,\n33108:12445,\n33109:12446,\n33110:12291,\n33111:20189,\n33112:12293,\n33113:12294,\n33114:12295,\n33115:12540,\n33116:8213,\n33117:8208,\n33118:65295,\n33119:65340,\n33120:65374,\n33121:8741,\n33122:65372,\n33123:8230,\n33124:8229,\n33125:8216,\n33126:8217,\n33127:8220,\n33128:8221,\n33129:65288,\n33130:65289,\n33131:12308,\n33132:12309,\n33133:65339,\n33134:65341,\n33135:65371,\n33136:65373,\n33137:12296,\n33138:12297,\n33139:12298,\n33140:12299,\n33141:12300,\n33142:12301,\n33143:12302,\n33144:12303,\n33145:12304,\n33146:12305,\n33147:65291,\n33148:65293,\n33149:177,\n33150:215,\n33152:247,\n33153:65309,\n33154:8800,\n33155:65308,\n33156:65310,\n33157:8806,\n33158:8807,\n33159:8734,\n33160:8756,\n33161:9794,\n33162:9792,\n33163:176,\n33164:8242,\n33165:8243,\n33166:8451,\n33167:65509,\n33168:65284,\n33169:65504,\n33170:65505,\n33171:65285,\n33172:65283,\n33173:65286,\n33174:65290,\n33175:65312,\n33176:167,\n33177:9734,\n33178:9733,\n33179:9675,\n33180:9679,\n33181:9678,\n33182:9671,\n33183:9670,\n33184:9633,\n33185:9632,\n33186:9651,\n33187:9650,\n33188:9661,\n33189:9660,\n33190:8251,\n33191:12306,\n33192:8594,\n33193:8592,\n33194:8593,\n33195:8595,\n33196:12307,\n33208:8712,\n33209:8715,\n33210:8838,\n33211:8839,\n33212:8834,\n33213:8835,\n33214:8746,\n33215:8745,\n33224:8743,\n33225:8744,\n33226:65506,\n33227:8658,\n33228:8660,\n33229:8704,\n33230:8707,\n33242:8736,\n33243:8869,\n33244:8978,\n33245:8706,\n33246:8711,\n33247:8801,\n33248:8786,\n33249:8810,\n33250:8811,\n33251:8730,\n33252:8765,\n33253:8733,\n33254:8757,\n33255:8747,\n33256:8748,\n33264:8491,\n33265:8240,\n33266:9839,\n33267:9837,\n33268:9834,\n33269:8224,\n33270:8225,\n33271:182,\n33276:9711,\n33359:65296,\n33360:65297,\n33361:65298,\n33362:65299,\n33363:65300,\n33364:65301,\n33365:65302,\n33366:65303,\n33367:65304,\n33368:65305,\n33376:65313,\n33377:65314,\n33378:65315,\n33379:65316,\n33380:65317,\n33381:65318,\n33382:65319,\n33383:65320,\n33384:65321,\n33385:65322,\n33386:65323,\n33387:65324,\n33388:65325,\n33389:65326,\n33390:65327,\n33391:65328,\n33392:65329,\n33393:65330,\n33394:65331,\n33395:65332,\n33396:65333,\n33397:65334,\n33398:65335,\n33399:65336,\n33400:65337,\n33401:65338,\n33409:65345,\n33410:65346,\n33411:65347,\n33412:65348,\n33413:65349,\n33414:65350,\n33415:65351,\n33416:65352,\n33417:65353,\n33418:65354,\n33419:65355,\n33420:65356,\n33421:65357,\n33422:65358,\n33423:65359,\n33424:65360,\n33425:65361,\n33426:65362,\n33427:65363,\n33428:65364,\n33429:65365,\n33430:65366,\n33431:65367,\n33432:65368,\n33433:65369,\n33434:65370,\n33439:12353,\n33440:12354,\n33441:12355,\n33442:12356,\n33443:12357,\n33444:12358,\n33445:12359,\n33446:12360,\n33447:12361,\n33448:12362,\n33449:12363,\n33450:12364,\n33451:12365,\n33452:12366,\n33453:12367,\n33454:12368,\n33455:12369,\n33456:12370,\n33457:12371,\n33458:12372,\n33459:12373,\n33460:12374,\n33461:12375,\n33462:12376,\n33463:12377,\n33464:12378,\n33465:12379,\n33466:12380,\n33467:12381,\n33468:12382,\n33469:12383,\n33470:12384,\n33471:12385,\n33472:12386,\n33473:12387,\n33474:12388,\n33475:12389,\n33476:12390,\n33477:12391,\n33478:12392,\n33479:12393,\n33480:12394,\n33481:12395,\n33482:12396,\n33483:12397,\n33484:12398,\n33485:12399,\n33486:12400,\n33487:12401,\n33488:12402,\n33489:12403,\n33490:12404,\n33491:12405,\n33492:12406,\n33493:12407,\n33494:12408,\n33495:12409,\n33496:12410,\n33497:12411,\n33498:12412,\n33499:12413,\n33500:12414,\n33501:12415,\n33502:12416,\n33503:12417,\n33504:12418,\n33505:12419,\n33506:12420,\n33507:12421,\n33508:12422,\n33509:12423,\n33510:12424,\n33511:12425,\n33512:12426,\n33513:12427,\n33514:12428,\n33515:12429,\n33516:12430,\n33517:12431,\n33518:12432,\n33519:12433,\n33520:12434,\n33521:12435,\n33600:12449,\n33601:12450,\n33602:12451,\n33603:12452,\n33604:12453,\n33605:12454,\n33606:12455,\n33607:12456,\n33608:12457,\n33609:12458,\n33610:12459,\n33611:12460,\n33612:12461,\n33613:12462,\n33614:12463,\n33615:12464,\n33616:12465,\n33617:12466,\n33618:12467,\n33619:12468,\n33620:12469,\n33621:12470,\n33622:12471,\n33623:12472,\n33624:12473,\n33625:12474,\n33626:12475,\n33627:12476,\n33628:12477,\n33629:12478,\n33630:12479,\n33631:12480,\n33632:12481,\n33633:12482,\n33634:12483,\n33635:12484,\n33636:12485,\n33637:12486,\n33638:12487,\n33639:12488,\n33640:12489,\n33641:12490,\n33642:12491,\n33643:12492,\n33644:12493,\n33645:12494,\n33646:12495,\n33647:12496,\n33648:12497,\n33649:12498,\n33650:12499,\n33651:12500,\n33652:12501,\n33653:12502,\n33654:12503,\n33655:12504,\n33656:12505,\n33657:12506,\n33658:12507,\n33659:12508,\n33660:12509,\n33661:12510,\n33662:12511,\n33664:12512,\n33665:12513,\n33666:12514,\n33667:12515,\n33668:12516,\n33669:12517,\n33670:12518,\n33671:12519,\n33672:12520,\n33673:12521,\n33674:12522,\n33675:12523,\n33676:12524,\n33677:12525,\n33678:12526,\n33679:12527,\n33680:12528,\n33681:12529,\n33682:12530,\n33683:12531,\n33684:12532,\n33685:12533,\n33686:12534,\n33695:913,\n33696:914,\n33697:915,\n33698:916,\n33699:917,\n33700:918,\n33701:919,\n33702:920,\n33703:921,\n33704:922,\n33705:923,\n33706:924,\n33707:925,\n33708:926,\n33709:927,\n33710:928,\n33711:929,\n33712:931,\n33713:932,\n33714:933,\n33715:934,\n33716:935,\n33717:936,\n33718:937,\n33727:945,\n33728:946,\n33729:947,\n33730:948,\n33731:949,\n33732:950,\n33733:951,\n33734:952,\n33735:953,\n33736:954,\n33737:955,\n33738:956,\n33739:957,\n33740:958,\n33741:959,\n33742:960,\n33743:961,\n33744:963,\n33745:964,\n33746:965,\n33747:966,\n33748:967,\n33749:968,\n33750:969,\n33856:1040,\n33857:1041,\n33858:1042,\n33859:1043,\n33860:1044,\n33861:1045,\n33862:1025,\n33863:1046,\n33864:1047,\n33865:1048,\n33866:1049,\n33867:1050,\n33868:1051,\n33869:1052,\n33870:1053,\n33871:1054,\n33872:1055,\n33873:1056,\n33874:1057,\n33875:1058,\n33876:1059,\n33877:1060,\n33878:1061,\n33879:1062,\n33880:1063,\n33881:1064,\n33882:1065,\n33883:1066,\n33884:1067,\n33885:1068,\n33886:1069,\n33887:1070,\n33888:1071,\n33904:1072,\n33905:1073,\n33906:1074,\n33907:1075,\n33908:1076,\n33909:1077,\n33910:1105,\n33911:1078,\n33912:1079,\n33913:1080,\n33914:1081,\n33915:1082,\n33916:1083,\n33917:1084,\n33918:1085,\n33920:1086,\n33921:1087,\n33922:1088,\n33923:1089,\n33924:1090,\n33925:1091,\n33926:1092,\n33927:1093,\n33928:1094,\n33929:1095,\n33930:1096,\n33931:1097,\n33932:1098,\n33933:1099,\n33934:1100,\n33935:1101,\n33936:1102,\n33937:1103,\n33951:9472,\n33952:9474,\n33953:9484,\n33954:9488,\n33955:9496,\n33956:9492,\n33957:9500,\n33958:9516,\n33959:9508,\n33960:9524,\n33961:9532,\n33962:9473,\n33963:9475,\n33964:9487,\n33965:9491,\n33966:9499,\n33967:9495,\n33968:9507,\n33969:9523,\n33970:9515,\n33971:9531,\n33972:9547,\n33973:9504,\n33974:9519,\n33975:9512,\n33976:9527,\n33977:9535,\n33978:9501,\n33979:9520,\n33980:9509,\n33981:9528,\n33982:9538,\n34624:9312,\n34625:9313,\n34626:9314,\n34627:9315,\n34628:9316,\n34629:9317,\n34630:9318,\n34631:9319,\n34632:9320,\n34633:9321,\n34634:9322,\n34635:9323,\n34636:9324,\n34637:9325,\n34638:9326,\n34639:9327,\n34640:9328,\n34641:9329,\n34642:9330,\n34643:9331,\n34644:8544,\n34645:8545,\n34646:8546,\n34647:8547,\n34648:8548,\n34649:8549,\n34650:8550,\n34651:8551,\n34652:8552,\n34653:8553,\n34655:13129,\n34656:13076,\n34657:13090,\n34658:13133,\n34659:13080,\n34660:13095,\n34661:13059,\n34662:13110,\n34663:13137,\n34664:13143,\n34665:13069,\n34666:13094,\n34667:13091,\n34668:13099,\n34669:13130,\n34670:13115,\n34671:13212,\n34672:13213,\n34673:13214,\n34674:13198,\n34675:13199,\n34676:13252,\n34677:13217,\n34686:13179,\n34688:12317,\n34689:12319,\n34690:8470,\n34691:13261,\n34692:8481,\n34693:12964,\n34694:12965,\n34695:12966,\n34696:12967,\n34697:12968,\n34698:12849,\n34699:12850,\n34700:12857,\n34701:13182,\n34702:13181,\n34703:13180,\n34704:8786,\n34705:8801,\n34706:8747,\n34707:8750,\n34708:8721,\n34709:8730,\n34710:8869,\n34711:8736,\n34712:8735,\n34713:8895,\n34714:8757,\n34715:8745,\n34716:8746,\n34975:20124,\n34976:21782,\n34977:23043,\n34978:38463,\n34979:21696,\n34980:24859,\n34981:25384,\n34982:23030,\n34983:36898,\n34984:33909,\n34985:33564,\n34986:31312,\n34987:24746,\n34988:25569,\n34989:28197,\n34990:26093,\n34991:33894,\n34992:33446,\n34993:39925,\n34994:26771,\n34995:22311,\n34996:26017,\n34997:25201,\n34998:23451,\n34999:22992,\n35000:34427,\n35001:39156,\n35002:32098,\n35003:32190,\n35004:39822,\n35005:25110,\n35006:31903,\n35007:34999,\n35008:23433,\n35009:24245,\n35010:25353,\n35011:26263,\n35012:26696,\n35013:38343,\n35014:38797,\n35015:26447,\n35016:20197,\n35017:20234,\n35018:20301,\n35019:20381,\n35020:20553,\n35021:22258,\n35022:22839,\n35023:22996,\n35024:23041,\n35025:23561,\n35026:24799,\n35027:24847,\n35028:24944,\n35029:26131,\n35030:26885,\n35031:28858,\n35032:30031,\n35033:30064,\n35034:31227,\n35035:32173,\n35036:32239,\n35037:32963,\n35038:33806,\n35039:34915,\n35040:35586,\n35041:36949,\n35042:36986,\n35043:21307,\n35044:20117,\n35045:20133,\n35046:22495,\n35047:32946,\n35048:37057,\n35049:30959,\n35050:19968,\n35051:22769,\n35052:28322,\n35053:36920,\n35054:31282,\n35055:33576,\n35056:33419,\n35057:39983,\n35058:20801,\n35059:21360,\n35060:21693,\n35061:21729,\n35062:22240,\n35063:23035,\n35064:24341,\n35065:39154,\n35066:28139,\n35067:32996,\n35068:34093,\n35136:38498,\n35137:38512,\n35138:38560,\n35139:38907,\n35140:21515,\n35141:21491,\n35142:23431,\n35143:28879,\n35144:32701,\n35145:36802,\n35146:38632,\n35147:21359,\n35148:40284,\n35149:31418,\n35150:19985,\n35151:30867,\n35152:33276,\n35153:28198,\n35154:22040,\n35155:21764,\n35156:27421,\n35157:34074,\n35158:39995,\n35159:23013,\n35160:21417,\n35161:28006,\n35162:29916,\n35163:38287,\n35164:22082,\n35165:20113,\n35166:36939,\n35167:38642,\n35168:33615,\n35169:39180,\n35170:21473,\n35171:21942,\n35172:23344,\n35173:24433,\n35174:26144,\n35175:26355,\n35176:26628,\n35177:27704,\n35178:27891,\n35179:27945,\n35180:29787,\n35181:30408,\n35182:31310,\n35183:38964,\n35184:33521,\n35185:34907,\n35186:35424,\n35187:37613,\n35188:28082,\n35189:30123,\n35190:30410,\n35191:39365,\n35192:24742,\n35193:35585,\n35194:36234,\n35195:38322,\n35196:27022,\n35197:21421,\n35198:20870,\n35200:22290,\n35201:22576,\n35202:22852,\n35203:23476,\n35204:24310,\n35205:24616,\n35206:25513,\n35207:25588,\n35208:27839,\n35209:28436,\n35210:28814,\n35211:28948,\n35212:29017,\n35213:29141,\n35214:29503,\n35215:32257,\n35216:33398,\n35217:33489,\n35218:34199,\n35219:36960,\n35220:37467,\n35221:40219,\n35222:22633,\n35223:26044,\n35224:27738,\n35225:29989,\n35226:20985,\n35227:22830,\n35228:22885,\n35229:24448,\n35230:24540,\n35231:25276,\n35232:26106,\n35233:27178,\n35234:27431,\n35235:27572,\n35236:29579,\n35237:32705,\n35238:35158,\n35239:40236,\n35240:40206,\n35241:40644,\n35242:23713,\n35243:27798,\n35244:33659,\n35245:20740,\n35246:23627,\n35247:25014,\n35248:33222,\n35249:26742,\n35250:29281,\n35251:20057,\n35252:20474,\n35253:21368,\n35254:24681,\n35255:28201,\n35256:31311,\n35257:38899,\n35258:19979,\n35259:21270,\n35260:20206,\n35261:20309,\n35262:20285,\n35263:20385,\n35264:20339,\n35265:21152,\n35266:21487,\n35267:22025,\n35268:22799,\n35269:23233,\n35270:23478,\n35271:23521,\n35272:31185,\n35273:26247,\n35274:26524,\n35275:26550,\n35276:27468,\n35277:27827,\n35278:28779,\n35279:29634,\n35280:31117,\n35281:31166,\n35282:31292,\n35283:31623,\n35284:33457,\n35285:33499,\n35286:33540,\n35287:33655,\n35288:33775,\n35289:33747,\n35290:34662,\n35291:35506,\n35292:22057,\n35293:36008,\n35294:36838,\n35295:36942,\n35296:38686,\n35297:34442,\n35298:20420,\n35299:23784,\n35300:25105,\n35301:29273,\n35302:30011,\n35303:33253,\n35304:33469,\n35305:34558,\n35306:36032,\n35307:38597,\n35308:39187,\n35309:39381,\n35310:20171,\n35311:20250,\n35312:35299,\n35313:22238,\n35314:22602,\n35315:22730,\n35316:24315,\n35317:24555,\n35318:24618,\n35319:24724,\n35320:24674,\n35321:25040,\n35322:25106,\n35323:25296,\n35324:25913,\n35392:39745,\n35393:26214,\n35394:26800,\n35395:28023,\n35396:28784,\n35397:30028,\n35398:30342,\n35399:32117,\n35400:33445,\n35401:34809,\n35402:38283,\n35403:38542,\n35404:35997,\n35405:20977,\n35406:21182,\n35407:22806,\n35408:21683,\n35409:23475,\n35410:23830,\n35411:24936,\n35412:27010,\n35413:28079,\n35414:30861,\n35415:33995,\n35416:34903,\n35417:35442,\n35418:37799,\n35419:39608,\n35420:28012,\n35421:39336,\n35422:34521,\n35423:22435,\n35424:26623,\n35425:34510,\n35426:37390,\n35427:21123,\n35428:22151,\n35429:21508,\n35430:24275,\n35431:25313,\n35432:25785,\n35433:26684,\n35434:26680,\n35435:27579,\n35436:29554,\n35437:30906,\n35438:31339,\n35439:35226,\n35440:35282,\n35441:36203,\n35442:36611,\n35443:37101,\n35444:38307,\n35445:38548,\n35446:38761,\n35447:23398,\n35448:23731,\n35449:27005,\n35450:38989,\n35451:38990,\n35452:25499,\n35453:31520,\n35454:27179,\n35456:27263,\n35457:26806,\n35458:39949,\n35459:28511,\n35460:21106,\n35461:21917,\n35462:24688,\n35463:25324,\n35464:27963,\n35465:28167,\n35466:28369,\n35467:33883,\n35468:35088,\n35469:36676,\n35470:19988,\n35471:39993,\n35472:21494,\n35473:26907,\n35474:27194,\n35475:38788,\n35476:26666,\n35477:20828,\n35478:31427,\n35479:33970,\n35480:37340,\n35481:37772,\n35482:22107,\n35483:40232,\n35484:26658,\n35485:33541,\n35486:33841,\n35487:31909,\n35488:21000,\n35489:33477,\n35490:29926,\n35491:20094,\n35492:20355,\n35493:20896,\n35494:23506,\n35495:21002,\n35496:21208,\n35497:21223,\n35498:24059,\n35499:21914,\n35500:22570,\n35501:23014,\n35502:23436,\n35503:23448,\n35504:23515,\n35505:24178,\n35506:24185,\n35507:24739,\n35508:24863,\n35509:24931,\n35510:25022,\n35511:25563,\n35512:25954,\n35513:26577,\n35514:26707,\n35515:26874,\n35516:27454,\n35517:27475,\n35518:27735,\n35519:28450,\n35520:28567,\n35521:28485,\n35522:29872,\n35523:29976,\n35524:30435,\n35525:30475,\n35526:31487,\n35527:31649,\n35528:31777,\n35529:32233,\n35530:32566,\n35531:32752,\n35532:32925,\n35533:33382,\n35534:33694,\n35535:35251,\n35536:35532,\n35537:36011,\n35538:36996,\n35539:37969,\n35540:38291,\n35541:38289,\n35542:38306,\n35543:38501,\n35544:38867,\n35545:39208,\n35546:33304,\n35547:20024,\n35548:21547,\n35549:23736,\n35550:24012,\n35551:29609,\n35552:30284,\n35553:30524,\n35554:23721,\n35555:32747,\n35556:36107,\n35557:38593,\n35558:38929,\n35559:38996,\n35560:39000,\n35561:20225,\n35562:20238,\n35563:21361,\n35564:21916,\n35565:22120,\n35566:22522,\n35567:22855,\n35568:23305,\n35569:23492,\n35570:23696,\n35571:24076,\n35572:24190,\n35573:24524,\n35574:25582,\n35575:26426,\n35576:26071,\n35577:26082,\n35578:26399,\n35579:26827,\n35580:26820,\n35648:27231,\n35649:24112,\n35650:27589,\n35651:27671,\n35652:27773,\n35653:30079,\n35654:31048,\n35655:23395,\n35656:31232,\n35657:32000,\n35658:24509,\n35659:35215,\n35660:35352,\n35661:36020,\n35662:36215,\n35663:36556,\n35664:36637,\n35665:39138,\n35666:39438,\n35667:39740,\n35668:20096,\n35669:20605,\n35670:20736,\n35671:22931,\n35672:23452,\n35673:25135,\n35674:25216,\n35675:25836,\n35676:27450,\n35677:29344,\n35678:30097,\n35679:31047,\n35680:32681,\n35681:34811,\n35682:35516,\n35683:35696,\n35684:25516,\n35685:33738,\n35686:38816,\n35687:21513,\n35688:21507,\n35689:21931,\n35690:26708,\n35691:27224,\n35692:35440,\n35693:30759,\n35694:26485,\n35695:40653,\n35696:21364,\n35697:23458,\n35698:33050,\n35699:34384,\n35700:36870,\n35701:19992,\n35702:20037,\n35703:20167,\n35704:20241,\n35705:21450,\n35706:21560,\n35707:23470,\n35708:24339,\n35709:24613,\n35710:25937,\n35712:26429,\n35713:27714,\n35714:27762,\n35715:27875,\n35716:28792,\n35717:29699,\n35718:31350,\n35719:31406,\n35720:31496,\n35721:32026,\n35722:31998,\n35723:32102,\n35724:26087,\n35725:29275,\n35726:21435,\n35727:23621,\n35728:24040,\n35729:25298,\n35730:25312,\n35731:25369,\n35732:28192,\n35733:34394,\n35734:35377,\n35735:36317,\n35736:37624,\n35737:28417,\n35738:31142,\n35739:39770,\n35740:20136,\n35741:20139,\n35742:20140,\n35743:20379,\n35744:20384,\n35745:20689,\n35746:20807,\n35747:31478,\n35748:20849,\n35749:20982,\n35750:21332,\n35751:21281,\n35752:21375,\n35753:21483,\n35754:21932,\n35755:22659,\n35756:23777,\n35757:24375,\n35758:24394,\n35759:24623,\n35760:24656,\n35761:24685,\n35762:25375,\n35763:25945,\n35764:27211,\n35765:27841,\n35766:29378,\n35767:29421,\n35768:30703,\n35769:33016,\n35770:33029,\n35771:33288,\n35772:34126,\n35773:37111,\n35774:37857,\n35775:38911,\n35776:39255,\n35777:39514,\n35778:20208,\n35779:20957,\n35780:23597,\n35781:26241,\n35782:26989,\n35783:23616,\n35784:26354,\n35785:26997,\n35786:29577,\n35787:26704,\n35788:31873,\n35789:20677,\n35790:21220,\n35791:22343,\n35792:24062,\n35793:37670,\n35794:26020,\n35795:27427,\n35796:27453,\n35797:29748,\n35798:31105,\n35799:31165,\n35800:31563,\n35801:32202,\n35802:33465,\n35803:33740,\n35804:34943,\n35805:35167,\n35806:35641,\n35807:36817,\n35808:37329,\n35809:21535,\n35810:37504,\n35811:20061,\n35812:20534,\n35813:21477,\n35814:21306,\n35815:29399,\n35816:29590,\n35817:30697,\n35818:33510,\n35819:36527,\n35820:39366,\n35821:39368,\n35822:39378,\n35823:20855,\n35824:24858,\n35825:34398,\n35826:21936,\n35827:31354,\n35828:20598,\n35829:23507,\n35830:36935,\n35831:38533,\n35832:20018,\n35833:27355,\n35834:37351,\n35835:23633,\n35836:23624,\n35904:25496,\n35905:31391,\n35906:27795,\n35907:38772,\n35908:36705,\n35909:31402,\n35910:29066,\n35911:38536,\n35912:31874,\n35913:26647,\n35914:32368,\n35915:26705,\n35916:37740,\n35917:21234,\n35918:21531,\n35919:34219,\n35920:35347,\n35921:32676,\n35922:36557,\n35923:37089,\n35924:21350,\n35925:34952,\n35926:31041,\n35927:20418,\n35928:20670,\n35929:21009,\n35930:20804,\n35931:21843,\n35932:22317,\n35933:29674,\n35934:22411,\n35935:22865,\n35936:24418,\n35937:24452,\n35938:24693,\n35939:24950,\n35940:24935,\n35941:25001,\n35942:25522,\n35943:25658,\n35944:25964,\n35945:26223,\n35946:26690,\n35947:28179,\n35948:30054,\n35949:31293,\n35950:31995,\n35951:32076,\n35952:32153,\n35953:32331,\n35954:32619,\n35955:33550,\n35956:33610,\n35957:34509,\n35958:35336,\n35959:35427,\n35960:35686,\n35961:36605,\n35962:38938,\n35963:40335,\n35964:33464,\n35965:36814,\n35966:39912,\n35968:21127,\n35969:25119,\n35970:25731,\n35971:28608,\n35972:38553,\n35973:26689,\n35974:20625,\n35975:27424,\n35976:27770,\n35977:28500,\n35978:31348,\n35979:32080,\n35980:34880,\n35981:35363,\n35982:26376,\n35983:20214,\n35984:20537,\n35985:20518,\n35986:20581,\n35987:20860,\n35988:21048,\n35989:21091,\n35990:21927,\n35991:22287,\n35992:22533,\n35993:23244,\n35994:24314,\n35995:25010,\n35996:25080,\n35997:25331,\n35998:25458,\n35999:26908,\n36000:27177,\n36001:29309,\n36002:29356,\n36003:29486,\n36004:30740,\n36005:30831,\n36006:32121,\n36007:30476,\n36008:32937,\n36009:35211,\n36010:35609,\n36011:36066,\n36012:36562,\n36013:36963,\n36014:37749,\n36015:38522,\n36016:38997,\n36017:39443,\n36018:40568,\n36019:20803,\n36020:21407,\n36021:21427,\n36022:24187,\n36023:24358,\n36024:28187,\n36025:28304,\n36026:29572,\n36027:29694,\n36028:32067,\n36029:33335,\n36030:35328,\n36031:35578,\n36032:38480,\n36033:20046,\n36034:20491,\n36035:21476,\n36036:21628,\n36037:22266,\n36038:22993,\n36039:23396,\n36040:24049,\n36041:24235,\n36042:24359,\n36043:25144,\n36044:25925,\n36045:26543,\n36046:28246,\n36047:29392,\n36048:31946,\n36049:34996,\n36050:32929,\n36051:32993,\n36052:33776,\n36053:34382,\n36054:35463,\n36055:36328,\n36056:37431,\n36057:38599,\n36058:39015,\n36059:40723,\n36060:20116,\n36061:20114,\n36062:20237,\n36063:21320,\n36064:21577,\n36065:21566,\n36066:23087,\n36067:24460,\n36068:24481,\n36069:24735,\n36070:26791,\n36071:27278,\n36072:29786,\n36073:30849,\n36074:35486,\n36075:35492,\n36076:35703,\n36077:37264,\n36078:20062,\n36079:39881,\n36080:20132,\n36081:20348,\n36082:20399,\n36083:20505,\n36084:20502,\n36085:20809,\n36086:20844,\n36087:21151,\n36088:21177,\n36089:21246,\n36090:21402,\n36091:21475,\n36092:21521,\n36160:21518,\n36161:21897,\n36162:22353,\n36163:22434,\n36164:22909,\n36165:23380,\n36166:23389,\n36167:23439,\n36168:24037,\n36169:24039,\n36170:24055,\n36171:24184,\n36172:24195,\n36173:24218,\n36174:24247,\n36175:24344,\n36176:24658,\n36177:24908,\n36178:25239,\n36179:25304,\n36180:25511,\n36181:25915,\n36182:26114,\n36183:26179,\n36184:26356,\n36185:26477,\n36186:26657,\n36187:26775,\n36188:27083,\n36189:27743,\n36190:27946,\n36191:28009,\n36192:28207,\n36193:28317,\n36194:30002,\n36195:30343,\n36196:30828,\n36197:31295,\n36198:31968,\n36199:32005,\n36200:32024,\n36201:32094,\n36202:32177,\n36203:32789,\n36204:32771,\n36205:32943,\n36206:32945,\n36207:33108,\n36208:33167,\n36209:33322,\n36210:33618,\n36211:34892,\n36212:34913,\n36213:35611,\n36214:36002,\n36215:36092,\n36216:37066,\n36217:37237,\n36218:37489,\n36219:30783,\n36220:37628,\n36221:38308,\n36222:38477,\n36224:38917,\n36225:39321,\n36226:39640,\n36227:40251,\n36228:21083,\n36229:21163,\n36230:21495,\n36231:21512,\n36232:22741,\n36233:25335,\n36234:28640,\n36235:35946,\n36236:36703,\n36237:40633,\n36238:20811,\n36239:21051,\n36240:21578,\n36241:22269,\n36242:31296,\n36243:37239,\n36244:40288,\n36245:40658,\n36246:29508,\n36247:28425,\n36248:33136,\n36249:29969,\n36250:24573,\n36251:24794,\n36252:39592,\n36253:29403,\n36254:36796,\n36255:27492,\n36256:38915,\n36257:20170,\n36258:22256,\n36259:22372,\n36260:22718,\n36261:23130,\n36262:24680,\n36263:25031,\n36264:26127,\n36265:26118,\n36266:26681,\n36267:26801,\n36268:28151,\n36269:30165,\n36270:32058,\n36271:33390,\n36272:39746,\n36273:20123,\n36274:20304,\n36275:21449,\n36276:21766,\n36277:23919,\n36278:24038,\n36279:24046,\n36280:26619,\n36281:27801,\n36282:29811,\n36283:30722,\n36284:35408,\n36285:37782,\n36286:35039,\n36287:22352,\n36288:24231,\n36289:25387,\n36290:20661,\n36291:20652,\n36292:20877,\n36293:26368,\n36294:21705,\n36295:22622,\n36296:22971,\n36297:23472,\n36298:24425,\n36299:25165,\n36300:25505,\n36301:26685,\n36302:27507,\n36303:28168,\n36304:28797,\n36305:37319,\n36306:29312,\n36307:30741,\n36308:30758,\n36309:31085,\n36310:25998,\n36311:32048,\n36312:33756,\n36313:35009,\n36314:36617,\n36315:38555,\n36316:21092,\n36317:22312,\n36318:26448,\n36319:32618,\n36320:36001,\n36321:20916,\n36322:22338,\n36323:38442,\n36324:22586,\n36325:27018,\n36326:32948,\n36327:21682,\n36328:23822,\n36329:22524,\n36330:30869,\n36331:40442,\n36332:20316,\n36333:21066,\n36334:21643,\n36335:25662,\n36336:26152,\n36337:26388,\n36338:26613,\n36339:31364,\n36340:31574,\n36341:32034,\n36342:37679,\n36343:26716,\n36344:39853,\n36345:31545,\n36346:21273,\n36347:20874,\n36348:21047,\n36416:23519,\n36417:25334,\n36418:25774,\n36419:25830,\n36420:26413,\n36421:27578,\n36422:34217,\n36423:38609,\n36424:30352,\n36425:39894,\n36426:25420,\n36427:37638,\n36428:39851,\n36429:30399,\n36430:26194,\n36431:19977,\n36432:20632,\n36433:21442,\n36434:23665,\n36435:24808,\n36436:25746,\n36437:25955,\n36438:26719,\n36439:29158,\n36440:29642,\n36441:29987,\n36442:31639,\n36443:32386,\n36444:34453,\n36445:35715,\n36446:36059,\n36447:37240,\n36448:39184,\n36449:26028,\n36450:26283,\n36451:27531,\n36452:20181,\n36453:20180,\n36454:20282,\n36455:20351,\n36456:21050,\n36457:21496,\n36458:21490,\n36459:21987,\n36460:22235,\n36461:22763,\n36462:22987,\n36463:22985,\n36464:23039,\n36465:23376,\n36466:23629,\n36467:24066,\n36468:24107,\n36469:24535,\n36470:24605,\n36471:25351,\n36472:25903,\n36473:23388,\n36474:26031,\n36475:26045,\n36476:26088,\n36477:26525,\n36478:27490,\n36480:27515,\n36481:27663,\n36482:29509,\n36483:31049,\n36484:31169,\n36485:31992,\n36486:32025,\n36487:32043,\n36488:32930,\n36489:33026,\n36490:33267,\n36491:35222,\n36492:35422,\n36493:35433,\n36494:35430,\n36495:35468,\n36496:35566,\n36497:36039,\n36498:36060,\n36499:38604,\n36500:39164,\n36501:27503,\n36502:20107,\n36503:20284,\n36504:20365,\n36505:20816,\n36506:23383,\n36507:23546,\n36508:24904,\n36509:25345,\n36510:26178,\n36511:27425,\n36512:28363,\n36513:27835,\n36514:29246,\n36515:29885,\n36516:30164,\n36517:30913,\n36518:31034,\n36519:32780,\n36520:32819,\n36521:33258,\n36522:33940,\n36523:36766,\n36524:27728,\n36525:40575,\n36526:24335,\n36527:35672,\n36528:40235,\n36529:31482,\n36530:36600,\n36531:23437,\n36532:38635,\n36533:19971,\n36534:21489,\n36535:22519,\n36536:22833,\n36537:23241,\n36538:23460,\n36539:24713,\n36540:28287,\n36541:28422,\n36542:30142,\n36543:36074,\n36544:23455,\n36545:34048,\n36546:31712,\n36547:20594,\n36548:26612,\n36549:33437,\n36550:23649,\n36551:34122,\n36552:32286,\n36553:33294,\n36554:20889,\n36555:23556,\n36556:25448,\n36557:36198,\n36558:26012,\n36559:29038,\n36560:31038,\n36561:32023,\n36562:32773,\n36563:35613,\n36564:36554,\n36565:36974,\n36566:34503,\n36567:37034,\n36568:20511,\n36569:21242,\n36570:23610,\n36571:26451,\n36572:28796,\n36573:29237,\n36574:37196,\n36575:37320,\n36576:37675,\n36577:33509,\n36578:23490,\n36579:24369,\n36580:24825,\n36581:20027,\n36582:21462,\n36583:23432,\n36584:25163,\n36585:26417,\n36586:27530,\n36587:29417,\n36588:29664,\n36589:31278,\n36590:33131,\n36591:36259,\n36592:37202,\n36593:39318,\n36594:20754,\n36595:21463,\n36596:21610,\n36597:23551,\n36598:25480,\n36599:27193,\n36600:32172,\n36601:38656,\n36602:22234,\n36603:21454,\n36604:21608,\n36672:23447,\n36673:23601,\n36674:24030,\n36675:20462,\n36676:24833,\n36677:25342,\n36678:27954,\n36679:31168,\n36680:31179,\n36681:32066,\n36682:32333,\n36683:32722,\n36684:33261,\n36685:33311,\n36686:33936,\n36687:34886,\n36688:35186,\n36689:35728,\n36690:36468,\n36691:36655,\n36692:36913,\n36693:37195,\n36694:37228,\n36695:38598,\n36696:37276,\n36697:20160,\n36698:20303,\n36699:20805,\n36700:21313,\n36701:24467,\n36702:25102,\n36703:26580,\n36704:27713,\n36705:28171,\n36706:29539,\n36707:32294,\n36708:37325,\n36709:37507,\n36710:21460,\n36711:22809,\n36712:23487,\n36713:28113,\n36714:31069,\n36715:32302,\n36716:31899,\n36717:22654,\n36718:29087,\n36719:20986,\n36720:34899,\n36721:36848,\n36722:20426,\n36723:23803,\n36724:26149,\n36725:30636,\n36726:31459,\n36727:33308,\n36728:39423,\n36729:20934,\n36730:24490,\n36731:26092,\n36732:26991,\n36733:27529,\n36734:28147,\n36736:28310,\n36737:28516,\n36738:30462,\n36739:32020,\n36740:24033,\n36741:36981,\n36742:37255,\n36743:38918,\n36744:20966,\n36745:21021,\n36746:25152,\n36747:26257,\n36748:26329,\n36749:28186,\n36750:24246,\n36751:32210,\n36752:32626,\n36753:26360,\n36754:34223,\n36755:34295,\n36756:35576,\n36757:21161,\n36758:21465,\n36759:22899,\n36760:24207,\n36761:24464,\n36762:24661,\n36763:37604,\n36764:38500,\n36765:20663,\n36766:20767,\n36767:21213,\n36768:21280,\n36769:21319,\n36770:21484,\n36771:21736,\n36772:21830,\n36773:21809,\n36774:22039,\n36775:22888,\n36776:22974,\n36777:23100,\n36778:23477,\n36779:23558,\n36780:23567,\n36781:23569,\n36782:23578,\n36783:24196,\n36784:24202,\n36785:24288,\n36786:24432,\n36787:25215,\n36788:25220,\n36789:25307,\n36790:25484,\n36791:25463,\n36792:26119,\n36793:26124,\n36794:26157,\n36795:26230,\n36796:26494,\n36797:26786,\n36798:27167,\n36799:27189,\n36800:27836,\n36801:28040,\n36802:28169,\n36803:28248,\n36804:28988,\n36805:28966,\n36806:29031,\n36807:30151,\n36808:30465,\n36809:30813,\n36810:30977,\n36811:31077,\n36812:31216,\n36813:31456,\n36814:31505,\n36815:31911,\n36816:32057,\n36817:32918,\n36818:33750,\n36819:33931,\n36820:34121,\n36821:34909,\n36822:35059,\n36823:35359,\n36824:35388,\n36825:35412,\n36826:35443,\n36827:35937,\n36828:36062,\n36829:37284,\n36830:37478,\n36831:37758,\n36832:37912,\n36833:38556,\n36834:38808,\n36835:19978,\n36836:19976,\n36837:19998,\n36838:20055,\n36839:20887,\n36840:21104,\n36841:22478,\n36842:22580,\n36843:22732,\n36844:23330,\n36845:24120,\n36846:24773,\n36847:25854,\n36848:26465,\n36849:26454,\n36850:27972,\n36851:29366,\n36852:30067,\n36853:31331,\n36854:33976,\n36855:35698,\n36856:37304,\n36857:37664,\n36858:22065,\n36859:22516,\n36860:39166,\n36928:25325,\n36929:26893,\n36930:27542,\n36931:29165,\n36932:32340,\n36933:32887,\n36934:33394,\n36935:35302,\n36936:39135,\n36937:34645,\n36938:36785,\n36939:23611,\n36940:20280,\n36941:20449,\n36942:20405,\n36943:21767,\n36944:23072,\n36945:23517,\n36946:23529,\n36947:24515,\n36948:24910,\n36949:25391,\n36950:26032,\n36951:26187,\n36952:26862,\n36953:27035,\n36954:28024,\n36955:28145,\n36956:30003,\n36957:30137,\n36958:30495,\n36959:31070,\n36960:31206,\n36961:32051,\n36962:33251,\n36963:33455,\n36964:34218,\n36965:35242,\n36966:35386,\n36967:36523,\n36968:36763,\n36969:36914,\n36970:37341,\n36971:38663,\n36972:20154,\n36973:20161,\n36974:20995,\n36975:22645,\n36976:22764,\n36977:23563,\n36978:29978,\n36979:23613,\n36980:33102,\n36981:35338,\n36982:36805,\n36983:38499,\n36984:38765,\n36985:31525,\n36986:35535,\n36987:38920,\n36988:37218,\n36989:22259,\n36990:21416,\n36992:36887,\n36993:21561,\n36994:22402,\n36995:24101,\n36996:25512,\n36997:27700,\n36998:28810,\n36999:30561,\n37000:31883,\n37001:32736,\n37002:34928,\n37003:36930,\n37004:37204,\n37005:37648,\n37006:37656,\n37007:38543,\n37008:29790,\n37009:39620,\n37010:23815,\n37011:23913,\n37012:25968,\n37013:26530,\n37014:36264,\n37015:38619,\n37016:25454,\n37017:26441,\n37018:26905,\n37019:33733,\n37020:38935,\n37021:38592,\n37022:35070,\n37023:28548,\n37024:25722,\n37025:23544,\n37026:19990,\n37027:28716,\n37028:30045,\n37029:26159,\n37030:20932,\n37031:21046,\n37032:21218,\n37033:22995,\n37034:24449,\n37035:24615,\n37036:25104,\n37037:25919,\n37038:25972,\n37039:26143,\n37040:26228,\n37041:26866,\n37042:26646,\n37043:27491,\n37044:28165,\n37045:29298,\n37046:29983,\n37047:30427,\n37048:31934,\n37049:32854,\n37050:22768,\n37051:35069,\n37052:35199,\n37053:35488,\n37054:35475,\n37055:35531,\n37056:36893,\n37057:37266,\n37058:38738,\n37059:38745,\n37060:25993,\n37061:31246,\n37062:33030,\n37063:38587,\n37064:24109,\n37065:24796,\n37066:25114,\n37067:26021,\n37068:26132,\n37069:26512,\n37070:30707,\n37071:31309,\n37072:31821,\n37073:32318,\n37074:33034,\n37075:36012,\n37076:36196,\n37077:36321,\n37078:36447,\n37079:30889,\n37080:20999,\n37081:25305,\n37082:25509,\n37083:25666,\n37084:25240,\n37085:35373,\n37086:31363,\n37087:31680,\n37088:35500,\n37089:38634,\n37090:32118,\n37091:33292,\n37092:34633,\n37093:20185,\n37094:20808,\n37095:21315,\n37096:21344,\n37097:23459,\n37098:23554,\n37099:23574,\n37100:24029,\n37101:25126,\n37102:25159,\n37103:25776,\n37104:26643,\n37105:26676,\n37106:27849,\n37107:27973,\n37108:27927,\n37109:26579,\n37110:28508,\n37111:29006,\n37112:29053,\n37113:26059,\n37114:31359,\n37115:31661,\n37116:32218,\n37184:32330,\n37185:32680,\n37186:33146,\n37187:33307,\n37188:33337,\n37189:34214,\n37190:35438,\n37191:36046,\n37192:36341,\n37193:36984,\n37194:36983,\n37195:37549,\n37196:37521,\n37197:38275,\n37198:39854,\n37199:21069,\n37200:21892,\n37201:28472,\n37202:28982,\n37203:20840,\n37204:31109,\n37205:32341,\n37206:33203,\n37207:31950,\n37208:22092,\n37209:22609,\n37210:23720,\n37211:25514,\n37212:26366,\n37213:26365,\n37214:26970,\n37215:29401,\n37216:30095,\n37217:30094,\n37218:30990,\n37219:31062,\n37220:31199,\n37221:31895,\n37222:32032,\n37223:32068,\n37224:34311,\n37225:35380,\n37226:38459,\n37227:36961,\n37228:40736,\n37229:20711,\n37230:21109,\n37231:21452,\n37232:21474,\n37233:20489,\n37234:21930,\n37235:22766,\n37236:22863,\n37237:29245,\n37238:23435,\n37239:23652,\n37240:21277,\n37241:24803,\n37242:24819,\n37243:25436,\n37244:25475,\n37245:25407,\n37246:25531,\n37248:25805,\n37249:26089,\n37250:26361,\n37251:24035,\n37252:27085,\n37253:27133,\n37254:28437,\n37255:29157,\n37256:20105,\n37257:30185,\n37258:30456,\n37259:31379,\n37260:31967,\n37261:32207,\n37262:32156,\n37263:32865,\n37264:33609,\n37265:33624,\n37266:33900,\n37267:33980,\n37268:34299,\n37269:35013,\n37270:36208,\n37271:36865,\n37272:36973,\n37273:37783,\n37274:38684,\n37275:39442,\n37276:20687,\n37277:22679,\n37278:24974,\n37279:33235,\n37280:34101,\n37281:36104,\n37282:36896,\n37283:20419,\n37284:20596,\n37285:21063,\n37286:21363,\n37287:24687,\n37288:25417,\n37289:26463,\n37290:28204,\n37291:36275,\n37292:36895,\n37293:20439,\n37294:23646,\n37295:36042,\n37296:26063,\n37297:32154,\n37298:21330,\n37299:34966,\n37300:20854,\n37301:25539,\n37302:23384,\n37303:23403,\n37304:23562,\n37305:25613,\n37306:26449,\n37307:36956,\n37308:20182,\n37309:22810,\n37310:22826,\n37311:27760,\n37312:35409,\n37313:21822,\n37314:22549,\n37315:22949,\n37316:24816,\n37317:25171,\n37318:26561,\n37319:33333,\n37320:26965,\n37321:38464,\n37322:39364,\n37323:39464,\n37324:20307,\n37325:22534,\n37326:23550,\n37327:32784,\n37328:23729,\n37329:24111,\n37330:24453,\n37331:24608,\n37332:24907,\n37333:25140,\n37334:26367,\n37335:27888,\n37336:28382,\n37337:32974,\n37338:33151,\n37339:33492,\n37340:34955,\n37341:36024,\n37342:36864,\n37343:36910,\n37344:38538,\n37345:40667,\n37346:39899,\n37347:20195,\n37348:21488,\n37349:22823,\n37350:31532,\n37351:37261,\n37352:38988,\n37353:40441,\n37354:28381,\n37355:28711,\n37356:21331,\n37357:21828,\n37358:23429,\n37359:25176,\n37360:25246,\n37361:25299,\n37362:27810,\n37363:28655,\n37364:29730,\n37365:35351,\n37366:37944,\n37367:28609,\n37368:35582,\n37369:33592,\n37370:20967,\n37371:34552,\n37372:21482,\n37440:21481,\n37441:20294,\n37442:36948,\n37443:36784,\n37444:22890,\n37445:33073,\n37446:24061,\n37447:31466,\n37448:36799,\n37449:26842,\n37450:35895,\n37451:29432,\n37452:40008,\n37453:27197,\n37454:35504,\n37455:20025,\n37456:21336,\n37457:22022,\n37458:22374,\n37459:25285,\n37460:25506,\n37461:26086,\n37462:27470,\n37463:28129,\n37464:28251,\n37465:28845,\n37466:30701,\n37467:31471,\n37468:31658,\n37469:32187,\n37470:32829,\n37471:32966,\n37472:34507,\n37473:35477,\n37474:37723,\n37475:22243,\n37476:22727,\n37477:24382,\n37478:26029,\n37479:26262,\n37480:27264,\n37481:27573,\n37482:30007,\n37483:35527,\n37484:20516,\n37485:30693,\n37486:22320,\n37487:24347,\n37488:24677,\n37489:26234,\n37490:27744,\n37491:30196,\n37492:31258,\n37493:32622,\n37494:33268,\n37495:34584,\n37496:36933,\n37497:39347,\n37498:31689,\n37499:30044,\n37500:31481,\n37501:31569,\n37502:33988,\n37504:36880,\n37505:31209,\n37506:31378,\n37507:33590,\n37508:23265,\n37509:30528,\n37510:20013,\n37511:20210,\n37512:23449,\n37513:24544,\n37514:25277,\n37515:26172,\n37516:26609,\n37517:27880,\n37518:34411,\n37519:34935,\n37520:35387,\n37521:37198,\n37522:37619,\n37523:39376,\n37524:27159,\n37525:28710,\n37526:29482,\n37527:33511,\n37528:33879,\n37529:36015,\n37530:19969,\n37531:20806,\n37532:20939,\n37533:21899,\n37534:23541,\n37535:24086,\n37536:24115,\n37537:24193,\n37538:24340,\n37539:24373,\n37540:24427,\n37541:24500,\n37542:25074,\n37543:25361,\n37544:26274,\n37545:26397,\n37546:28526,\n37547:29266,\n37548:30010,\n37549:30522,\n37550:32884,\n37551:33081,\n37552:33144,\n37553:34678,\n37554:35519,\n37555:35548,\n37556:36229,\n37557:36339,\n37558:37530,\n37559:38263,\n37560:38914,\n37561:40165,\n37562:21189,\n37563:25431,\n37564:30452,\n37565:26389,\n37566:27784,\n37567:29645,\n37568:36035,\n37569:37806,\n37570:38515,\n37571:27941,\n37572:22684,\n37573:26894,\n37574:27084,\n37575:36861,\n37576:37786,\n37577:30171,\n37578:36890,\n37579:22618,\n37580:26626,\n37581:25524,\n37582:27131,\n37583:20291,\n37584:28460,\n37585:26584,\n37586:36795,\n37587:34086,\n37588:32180,\n37589:37716,\n37590:26943,\n37591:28528,\n37592:22378,\n37593:22775,\n37594:23340,\n37595:32044,\n37596:29226,\n37597:21514,\n37598:37347,\n37599:40372,\n37600:20141,\n37601:20302,\n37602:20572,\n37603:20597,\n37604:21059,\n37605:35998,\n37606:21576,\n37607:22564,\n37608:23450,\n37609:24093,\n37610:24213,\n37611:24237,\n37612:24311,\n37613:24351,\n37614:24716,\n37615:25269,\n37616:25402,\n37617:25552,\n37618:26799,\n37619:27712,\n37620:30855,\n37621:31118,\n37622:31243,\n37623:32224,\n37624:33351,\n37625:35330,\n37626:35558,\n37627:36420,\n37628:36883,\n37696:37048,\n37697:37165,\n37698:37336,\n37699:40718,\n37700:27877,\n37701:25688,\n37702:25826,\n37703:25973,\n37704:28404,\n37705:30340,\n37706:31515,\n37707:36969,\n37708:37841,\n37709:28346,\n37710:21746,\n37711:24505,\n37712:25764,\n37713:36685,\n37714:36845,\n37715:37444,\n37716:20856,\n37717:22635,\n37718:22825,\n37719:23637,\n37720:24215,\n37721:28155,\n37722:32399,\n37723:29980,\n37724:36028,\n37725:36578,\n37726:39003,\n37727:28857,\n37728:20253,\n37729:27583,\n37730:28593,\n37731:30000,\n37732:38651,\n37733:20814,\n37734:21520,\n37735:22581,\n37736:22615,\n37737:22956,\n37738:23648,\n37739:24466,\n37740:26007,\n37741:26460,\n37742:28193,\n37743:30331,\n37744:33759,\n37745:36077,\n37746:36884,\n37747:37117,\n37748:37709,\n37749:30757,\n37750:30778,\n37751:21162,\n37752:24230,\n37753:22303,\n37754:22900,\n37755:24594,\n37756:20498,\n37757:20826,\n37758:20908,\n37760:20941,\n37761:20992,\n37762:21776,\n37763:22612,\n37764:22616,\n37765:22871,\n37766:23445,\n37767:23798,\n37768:23947,\n37769:24764,\n37770:25237,\n37771:25645,\n37772:26481,\n37773:26691,\n37774:26812,\n37775:26847,\n37776:30423,\n37777:28120,\n37778:28271,\n37779:28059,\n37780:28783,\n37781:29128,\n37782:24403,\n37783:30168,\n37784:31095,\n37785:31561,\n37786:31572,\n37787:31570,\n37788:31958,\n37789:32113,\n37790:21040,\n37791:33891,\n37792:34153,\n37793:34276,\n37794:35342,\n37795:35588,\n37796:35910,\n37797:36367,\n37798:36867,\n37799:36879,\n37800:37913,\n37801:38518,\n37802:38957,\n37803:39472,\n37804:38360,\n37805:20685,\n37806:21205,\n37807:21516,\n37808:22530,\n37809:23566,\n37810:24999,\n37811:25758,\n37812:27934,\n37813:30643,\n37814:31461,\n37815:33012,\n37816:33796,\n37817:36947,\n37818:37509,\n37819:23776,\n37820:40199,\n37821:21311,\n37822:24471,\n37823:24499,\n37824:28060,\n37825:29305,\n37826:30563,\n37827:31167,\n37828:31716,\n37829:27602,\n37830:29420,\n37831:35501,\n37832:26627,\n37833:27233,\n37834:20984,\n37835:31361,\n37836:26932,\n37837:23626,\n37838:40182,\n37839:33515,\n37840:23493,\n37841:37193,\n37842:28702,\n37843:22136,\n37844:23663,\n37845:24775,\n37846:25958,\n37847:27788,\n37848:35930,\n37849:36929,\n37850:38931,\n37851:21585,\n37852:26311,\n37853:37389,\n37854:22856,\n37855:37027,\n37856:20869,\n37857:20045,\n37858:20970,\n37859:34201,\n37860:35598,\n37861:28760,\n37862:25466,\n37863:37707,\n37864:26978,\n37865:39348,\n37866:32260,\n37867:30071,\n37868:21335,\n37869:26976,\n37870:36575,\n37871:38627,\n37872:27741,\n37873:20108,\n37874:23612,\n37875:24336,\n37876:36841,\n37877:21250,\n37878:36049,\n37879:32905,\n37880:34425,\n37881:24319,\n37882:26085,\n37883:20083,\n37884:20837,\n37952:22914,\n37953:23615,\n37954:38894,\n37955:20219,\n37956:22922,\n37957:24525,\n37958:35469,\n37959:28641,\n37960:31152,\n37961:31074,\n37962:23527,\n37963:33905,\n37964:29483,\n37965:29105,\n37966:24180,\n37967:24565,\n37968:25467,\n37969:25754,\n37970:29123,\n37971:31896,\n37972:20035,\n37973:24316,\n37974:20043,\n37975:22492,\n37976:22178,\n37977:24745,\n37978:28611,\n37979:32013,\n37980:33021,\n37981:33075,\n37982:33215,\n37983:36786,\n37984:35223,\n37985:34468,\n37986:24052,\n37987:25226,\n37988:25773,\n37989:35207,\n37990:26487,\n37991:27874,\n37992:27966,\n37993:29750,\n37994:30772,\n37995:23110,\n37996:32629,\n37997:33453,\n37998:39340,\n37999:20467,\n38000:24259,\n38001:25309,\n38002:25490,\n38003:25943,\n38004:26479,\n38005:30403,\n38006:29260,\n38007:32972,\n38008:32954,\n38009:36649,\n38010:37197,\n38011:20493,\n38012:22521,\n38013:23186,\n38014:26757,\n38016:26995,\n38017:29028,\n38018:29437,\n38019:36023,\n38020:22770,\n38021:36064,\n38022:38506,\n38023:36889,\n38024:34687,\n38025:31204,\n38026:30695,\n38027:33833,\n38028:20271,\n38029:21093,\n38030:21338,\n38031:25293,\n38032:26575,\n38033:27850,\n38034:30333,\n38035:31636,\n38036:31893,\n38037:33334,\n38038:34180,\n38039:36843,\n38040:26333,\n38041:28448,\n38042:29190,\n38043:32283,\n38044:33707,\n38045:39361,\n38046:40614,\n38047:20989,\n38048:31665,\n38049:30834,\n38050:31672,\n38051:32903,\n38052:31560,\n38053:27368,\n38054:24161,\n38055:32908,\n38056:30033,\n38057:30048,\n38058:20843,\n38059:37474,\n38060:28300,\n38061:30330,\n38062:37271,\n38063:39658,\n38064:20240,\n38065:32624,\n38066:25244,\n38067:31567,\n38068:38309,\n38069:40169,\n38070:22138,\n38071:22617,\n38072:34532,\n38073:38588,\n38074:20276,\n38075:21028,\n38076:21322,\n38077:21453,\n38078:21467,\n38079:24070,\n38080:25644,\n38081:26001,\n38082:26495,\n38083:27710,\n38084:27726,\n38085:29256,\n38086:29359,\n38087:29677,\n38088:30036,\n38089:32321,\n38090:33324,\n38091:34281,\n38092:36009,\n38093:31684,\n38094:37318,\n38095:29033,\n38096:38930,\n38097:39151,\n38098:25405,\n38099:26217,\n38100:30058,\n38101:30436,\n38102:30928,\n38103:34115,\n38104:34542,\n38105:21290,\n38106:21329,\n38107:21542,\n38108:22915,\n38109:24199,\n38110:24444,\n38111:24754,\n38112:25161,\n38113:25209,\n38114:25259,\n38115:26000,\n38116:27604,\n38117:27852,\n38118:30130,\n38119:30382,\n38120:30865,\n38121:31192,\n38122:32203,\n38123:32631,\n38124:32933,\n38125:34987,\n38126:35513,\n38127:36027,\n38128:36991,\n38129:38750,\n38130:39131,\n38131:27147,\n38132:31800,\n38133:20633,\n38134:23614,\n38135:24494,\n38136:26503,\n38137:27608,\n38138:29749,\n38139:30473,\n38140:32654,\n38208:40763,\n38209:26570,\n38210:31255,\n38211:21305,\n38212:30091,\n38213:39661,\n38214:24422,\n38215:33181,\n38216:33777,\n38217:32920,\n38218:24380,\n38219:24517,\n38220:30050,\n38221:31558,\n38222:36924,\n38223:26727,\n38224:23019,\n38225:23195,\n38226:32016,\n38227:30334,\n38228:35628,\n38229:20469,\n38230:24426,\n38231:27161,\n38232:27703,\n38233:28418,\n38234:29922,\n38235:31080,\n38236:34920,\n38237:35413,\n38238:35961,\n38239:24287,\n38240:25551,\n38241:30149,\n38242:31186,\n38243:33495,\n38244:37672,\n38245:37618,\n38246:33948,\n38247:34541,\n38248:39981,\n38249:21697,\n38250:24428,\n38251:25996,\n38252:27996,\n38253:28693,\n38254:36007,\n38255:36051,\n38256:38971,\n38257:25935,\n38258:29942,\n38259:19981,\n38260:20184,\n38261:22496,\n38262:22827,\n38263:23142,\n38264:23500,\n38265:20904,\n38266:24067,\n38267:24220,\n38268:24598,\n38269:25206,\n38270:25975,\n38272:26023,\n38273:26222,\n38274:28014,\n38275:29238,\n38276:31526,\n38277:33104,\n38278:33178,\n38279:33433,\n38280:35676,\n38281:36000,\n38282:36070,\n38283:36212,\n38284:38428,\n38285:38468,\n38286:20398,\n38287:25771,\n38288:27494,\n38289:33310,\n38290:33889,\n38291:34154,\n38292:37096,\n38293:23553,\n38294:26963,\n38295:39080,\n38296:33914,\n38297:34135,\n38298:20239,\n38299:21103,\n38300:24489,\n38301:24133,\n38302:26381,\n38303:31119,\n38304:33145,\n38305:35079,\n38306:35206,\n38307:28149,\n38308:24343,\n38309:25173,\n38310:27832,\n38311:20175,\n38312:29289,\n38313:39826,\n38314:20998,\n38315:21563,\n38316:22132,\n38317:22707,\n38318:24996,\n38319:25198,\n38320:28954,\n38321:22894,\n38322:31881,\n38323:31966,\n38324:32027,\n38325:38640,\n38326:25991,\n38327:32862,\n38328:19993,\n38329:20341,\n38330:20853,\n38331:22592,\n38332:24163,\n38333:24179,\n38334:24330,\n38335:26564,\n38336:20006,\n38337:34109,\n38338:38281,\n38339:38491,\n38340:31859,\n38341:38913,\n38342:20731,\n38343:22721,\n38344:30294,\n38345:30887,\n38346:21029,\n38347:30629,\n38348:34065,\n38349:31622,\n38350:20559,\n38351:22793,\n38352:29255,\n38353:31687,\n38354:32232,\n38355:36794,\n38356:36820,\n38357:36941,\n38358:20415,\n38359:21193,\n38360:23081,\n38361:24321,\n38362:38829,\n38363:20445,\n38364:33303,\n38365:37610,\n38366:22275,\n38367:25429,\n38368:27497,\n38369:29995,\n38370:35036,\n38371:36628,\n38372:31298,\n38373:21215,\n38374:22675,\n38375:24917,\n38376:25098,\n38377:26286,\n38378:27597,\n38379:31807,\n38380:33769,\n38381:20515,\n38382:20472,\n38383:21253,\n38384:21574,\n38385:22577,\n38386:22857,\n38387:23453,\n38388:23792,\n38389:23791,\n38390:23849,\n38391:24214,\n38392:25265,\n38393:25447,\n38394:25918,\n38395:26041,\n38396:26379,\n38464:27861,\n38465:27873,\n38466:28921,\n38467:30770,\n38468:32299,\n38469:32990,\n38470:33459,\n38471:33804,\n38472:34028,\n38473:34562,\n38474:35090,\n38475:35370,\n38476:35914,\n38477:37030,\n38478:37586,\n38479:39165,\n38480:40179,\n38481:40300,\n38482:20047,\n38483:20129,\n38484:20621,\n38485:21078,\n38486:22346,\n38487:22952,\n38488:24125,\n38489:24536,\n38490:24537,\n38491:25151,\n38492:26292,\n38493:26395,\n38494:26576,\n38495:26834,\n38496:20882,\n38497:32033,\n38498:32938,\n38499:33192,\n38500:35584,\n38501:35980,\n38502:36031,\n38503:37502,\n38504:38450,\n38505:21536,\n38506:38956,\n38507:21271,\n38508:20693,\n38509:21340,\n38510:22696,\n38511:25778,\n38512:26420,\n38513:29287,\n38514:30566,\n38515:31302,\n38516:37350,\n38517:21187,\n38518:27809,\n38519:27526,\n38520:22528,\n38521:24140,\n38522:22868,\n38523:26412,\n38524:32763,\n38525:20961,\n38526:30406,\n38528:25705,\n38529:30952,\n38530:39764,\n38531:40635,\n38532:22475,\n38533:22969,\n38534:26151,\n38535:26522,\n38536:27598,\n38537:21737,\n38538:27097,\n38539:24149,\n38540:33180,\n38541:26517,\n38542:39850,\n38543:26622,\n38544:40018,\n38545:26717,\n38546:20134,\n38547:20451,\n38548:21448,\n38549:25273,\n38550:26411,\n38551:27819,\n38552:36804,\n38553:20397,\n38554:32365,\n38555:40639,\n38556:19975,\n38557:24930,\n38558:28288,\n38559:28459,\n38560:34067,\n38561:21619,\n38562:26410,\n38563:39749,\n38564:24051,\n38565:31637,\n38566:23724,\n38567:23494,\n38568:34588,\n38569:28234,\n38570:34001,\n38571:31252,\n38572:33032,\n38573:22937,\n38574:31885,\n38575:27665,\n38576:30496,\n38577:21209,\n38578:22818,\n38579:28961,\n38580:29279,\n38581:30683,\n38582:38695,\n38583:40289,\n38584:26891,\n38585:23167,\n38586:23064,\n38587:20901,\n38588:21517,\n38589:21629,\n38590:26126,\n38591:30431,\n38592:36855,\n38593:37528,\n38594:40180,\n38595:23018,\n38596:29277,\n38597:28357,\n38598:20813,\n38599:26825,\n38600:32191,\n38601:32236,\n38602:38754,\n38603:40634,\n38604:25720,\n38605:27169,\n38606:33538,\n38607:22916,\n38608:23391,\n38609:27611,\n38610:29467,\n38611:30450,\n38612:32178,\n38613:32791,\n38614:33945,\n38615:20786,\n38616:26408,\n38617:40665,\n38618:30446,\n38619:26466,\n38620:21247,\n38621:39173,\n38622:23588,\n38623:25147,\n38624:31870,\n38625:36016,\n38626:21839,\n38627:24758,\n38628:32011,\n38629:38272,\n38630:21249,\n38631:20063,\n38632:20918,\n38633:22812,\n38634:29242,\n38635:32822,\n38636:37326,\n38637:24357,\n38638:30690,\n38639:21380,\n38640:24441,\n38641:32004,\n38642:34220,\n38643:35379,\n38644:36493,\n38645:38742,\n38646:26611,\n38647:34222,\n38648:37971,\n38649:24841,\n38650:24840,\n38651:27833,\n38652:30290,\n38720:35565,\n38721:36664,\n38722:21807,\n38723:20305,\n38724:20778,\n38725:21191,\n38726:21451,\n38727:23461,\n38728:24189,\n38729:24736,\n38730:24962,\n38731:25558,\n38732:26377,\n38733:26586,\n38734:28263,\n38735:28044,\n38736:29494,\n38737:29495,\n38738:30001,\n38739:31056,\n38740:35029,\n38741:35480,\n38742:36938,\n38743:37009,\n38744:37109,\n38745:38596,\n38746:34701,\n38747:22805,\n38748:20104,\n38749:20313,\n38750:19982,\n38751:35465,\n38752:36671,\n38753:38928,\n38754:20653,\n38755:24188,\n38756:22934,\n38757:23481,\n38758:24248,\n38759:25562,\n38760:25594,\n38761:25793,\n38762:26332,\n38763:26954,\n38764:27096,\n38765:27915,\n38766:28342,\n38767:29076,\n38768:29992,\n38769:31407,\n38770:32650,\n38771:32768,\n38772:33865,\n38773:33993,\n38774:35201,\n38775:35617,\n38776:36362,\n38777:36965,\n38778:38525,\n38779:39178,\n38780:24958,\n38781:25233,\n38782:27442,\n38784:27779,\n38785:28020,\n38786:32716,\n38787:32764,\n38788:28096,\n38789:32645,\n38790:34746,\n38791:35064,\n38792:26469,\n38793:33713,\n38794:38972,\n38795:38647,\n38796:27931,\n38797:32097,\n38798:33853,\n38799:37226,\n38800:20081,\n38801:21365,\n38802:23888,\n38803:27396,\n38804:28651,\n38805:34253,\n38806:34349,\n38807:35239,\n38808:21033,\n38809:21519,\n38810:23653,\n38811:26446,\n38812:26792,\n38813:29702,\n38814:29827,\n38815:30178,\n38816:35023,\n38817:35041,\n38818:37324,\n38819:38626,\n38820:38520,\n38821:24459,\n38822:29575,\n38823:31435,\n38824:33870,\n38825:25504,\n38826:30053,\n38827:21129,\n38828:27969,\n38829:28316,\n38830:29705,\n38831:30041,\n38832:30827,\n38833:31890,\n38834:38534,\n38835:31452,\n38836:40845,\n38837:20406,\n38838:24942,\n38839:26053,\n38840:34396,\n38841:20102,\n38842:20142,\n38843:20698,\n38844:20001,\n38845:20940,\n38846:23534,\n38847:26009,\n38848:26753,\n38849:28092,\n38850:29471,\n38851:30274,\n38852:30637,\n38853:31260,\n38854:31975,\n38855:33391,\n38856:35538,\n38857:36988,\n38858:37327,\n38859:38517,\n38860:38936,\n38861:21147,\n38862:32209,\n38863:20523,\n38864:21400,\n38865:26519,\n38866:28107,\n38867:29136,\n38868:29747,\n38869:33256,\n38870:36650,\n38871:38563,\n38872:40023,\n38873:40607,\n38874:29792,\n38875:22593,\n38876:28057,\n38877:32047,\n38878:39006,\n38879:20196,\n38880:20278,\n38881:20363,\n38882:20919,\n38883:21169,\n38884:23994,\n38885:24604,\n38886:29618,\n38887:31036,\n38888:33491,\n38889:37428,\n38890:38583,\n38891:38646,\n38892:38666,\n38893:40599,\n38894:40802,\n38895:26278,\n38896:27508,\n38897:21015,\n38898:21155,\n38899:28872,\n38900:35010,\n38901:24265,\n38902:24651,\n38903:24976,\n38904:28451,\n38905:29001,\n38906:31806,\n38907:32244,\n38908:32879,\n38976:34030,\n38977:36899,\n38978:37676,\n38979:21570,\n38980:39791,\n38981:27347,\n38982:28809,\n38983:36034,\n38984:36335,\n38985:38706,\n38986:21172,\n38987:23105,\n38988:24266,\n38989:24324,\n38990:26391,\n38991:27004,\n38992:27028,\n38993:28010,\n38994:28431,\n38995:29282,\n38996:29436,\n38997:31725,\n38998:32769,\n38999:32894,\n39000:34635,\n39001:37070,\n39002:20845,\n39003:40595,\n39004:31108,\n39005:32907,\n39006:37682,\n39007:35542,\n39008:20525,\n39009:21644,\n39010:35441,\n39011:27498,\n39012:36036,\n39013:33031,\n39014:24785,\n39015:26528,\n39016:40434,\n39017:20121,\n39018:20120,\n39019:39952,\n39020:35435,\n39021:34241,\n39022:34152,\n39023:26880,\n39024:28286,\n39025:30871,\n39026:33109,\n39071:24332,\n39072:19984,\n39073:19989,\n39074:20010,\n39075:20017,\n39076:20022,\n39077:20028,\n39078:20031,\n39079:20034,\n39080:20054,\n39081:20056,\n39082:20098,\n39083:20101,\n39084:35947,\n39085:20106,\n39086:33298,\n39087:24333,\n39088:20110,\n39089:20126,\n39090:20127,\n39091:20128,\n39092:20130,\n39093:20144,\n39094:20147,\n39095:20150,\n39096:20174,\n39097:20173,\n39098:20164,\n39099:20166,\n39100:20162,\n39101:20183,\n39102:20190,\n39103:20205,\n39104:20191,\n39105:20215,\n39106:20233,\n39107:20314,\n39108:20272,\n39109:20315,\n39110:20317,\n39111:20311,\n39112:20295,\n39113:20342,\n39114:20360,\n39115:20367,\n39116:20376,\n39117:20347,\n39118:20329,\n39119:20336,\n39120:20369,\n39121:20335,\n39122:20358,\n39123:20374,\n39124:20760,\n39125:20436,\n39126:20447,\n39127:20430,\n39128:20440,\n39129:20443,\n39130:20433,\n39131:20442,\n39132:20432,\n39133:20452,\n39134:20453,\n39135:20506,\n39136:20520,\n39137:20500,\n39138:20522,\n39139:20517,\n39140:20485,\n39141:20252,\n39142:20470,\n39143:20513,\n39144:20521,\n39145:20524,\n39146:20478,\n39147:20463,\n39148:20497,\n39149:20486,\n39150:20547,\n39151:20551,\n39152:26371,\n39153:20565,\n39154:20560,\n39155:20552,\n39156:20570,\n39157:20566,\n39158:20588,\n39159:20600,\n39160:20608,\n39161:20634,\n39162:20613,\n39163:20660,\n39164:20658,\n39232:20681,\n39233:20682,\n39234:20659,\n39235:20674,\n39236:20694,\n39237:20702,\n39238:20709,\n39239:20717,\n39240:20707,\n39241:20718,\n39242:20729,\n39243:20725,\n39244:20745,\n39245:20737,\n39246:20738,\n39247:20758,\n39248:20757,\n39249:20756,\n39250:20762,\n39251:20769,\n39252:20794,\n39253:20791,\n39254:20796,\n39255:20795,\n39256:20799,\n39257:20800,\n39258:20818,\n39259:20812,\n39260:20820,\n39261:20834,\n39262:31480,\n39263:20841,\n39264:20842,\n39265:20846,\n39266:20864,\n39267:20866,\n39268:22232,\n39269:20876,\n39270:20873,\n39271:20879,\n39272:20881,\n39273:20883,\n39274:20885,\n39275:20886,\n39276:20900,\n39277:20902,\n39278:20898,\n39279:20905,\n39280:20906,\n39281:20907,\n39282:20915,\n39283:20913,\n39284:20914,\n39285:20912,\n39286:20917,\n39287:20925,\n39288:20933,\n39289:20937,\n39290:20955,\n39291:20960,\n39292:34389,\n39293:20969,\n39294:20973,\n39296:20976,\n39297:20981,\n39298:20990,\n39299:20996,\n39300:21003,\n39301:21012,\n39302:21006,\n39303:21031,\n39304:21034,\n39305:21038,\n39306:21043,\n39307:21049,\n39308:21071,\n39309:21060,\n39310:21067,\n39311:21068,\n39312:21086,\n39313:21076,\n39314:21098,\n39315:21108,\n39316:21097,\n39317:21107,\n39318:21119,\n39319:21117,\n39320:21133,\n39321:21140,\n39322:21138,\n39323:21105,\n39324:21128,\n39325:21137,\n39326:36776,\n39327:36775,\n39328:21164,\n39329:21165,\n39330:21180,\n39331:21173,\n39332:21185,\n39333:21197,\n39334:21207,\n39335:21214,\n39336:21219,\n39337:21222,\n39338:39149,\n39339:21216,\n39340:21235,\n39341:21237,\n39342:21240,\n39343:21241,\n39344:21254,\n39345:21256,\n39346:30008,\n39347:21261,\n39348:21264,\n39349:21263,\n39350:21269,\n39351:21274,\n39352:21283,\n39353:21295,\n39354:21297,\n39355:21299,\n39356:21304,\n39357:21312,\n39358:21318,\n39359:21317,\n39360:19991,\n39361:21321,\n39362:21325,\n39363:20950,\n39364:21342,\n39365:21353,\n39366:21358,\n39367:22808,\n39368:21371,\n39369:21367,\n39370:21378,\n39371:21398,\n39372:21408,\n39373:21414,\n39374:21413,\n39375:21422,\n39376:21424,\n39377:21430,\n39378:21443,\n39379:31762,\n39380:38617,\n39381:21471,\n39382:26364,\n39383:29166,\n39384:21486,\n39385:21480,\n39386:21485,\n39387:21498,\n39388:21505,\n39389:21565,\n39390:21568,\n39391:21548,\n39392:21549,\n39393:21564,\n39394:21550,\n39395:21558,\n39396:21545,\n39397:21533,\n39398:21582,\n39399:21647,\n39400:21621,\n39401:21646,\n39402:21599,\n39403:21617,\n39404:21623,\n39405:21616,\n39406:21650,\n39407:21627,\n39408:21632,\n39409:21622,\n39410:21636,\n39411:21648,\n39412:21638,\n39413:21703,\n39414:21666,\n39415:21688,\n39416:21669,\n39417:21676,\n39418:21700,\n39419:21704,\n39420:21672,\n39488:21675,\n39489:21698,\n39490:21668,\n39491:21694,\n39492:21692,\n39493:21720,\n39494:21733,\n39495:21734,\n39496:21775,\n39497:21780,\n39498:21757,\n39499:21742,\n39500:21741,\n39501:21754,\n39502:21730,\n39503:21817,\n39504:21824,\n39505:21859,\n39506:21836,\n39507:21806,\n39508:21852,\n39509:21829,\n39510:21846,\n39511:21847,\n39512:21816,\n39513:21811,\n39514:21853,\n39515:21913,\n39516:21888,\n39517:21679,\n39518:21898,\n39519:21919,\n39520:21883,\n39521:21886,\n39522:21912,\n39523:21918,\n39524:21934,\n39525:21884,\n39526:21891,\n39527:21929,\n39528:21895,\n39529:21928,\n39530:21978,\n39531:21957,\n39532:21983,\n39533:21956,\n39534:21980,\n39535:21988,\n39536:21972,\n39537:22036,\n39538:22007,\n39539:22038,\n39540:22014,\n39541:22013,\n39542:22043,\n39543:22009,\n39544:22094,\n39545:22096,\n39546:29151,\n39547:22068,\n39548:22070,\n39549:22066,\n39550:22072,\n39552:22123,\n39553:22116,\n39554:22063,\n39555:22124,\n39556:22122,\n39557:22150,\n39558:22144,\n39559:22154,\n39560:22176,\n39561:22164,\n39562:22159,\n39563:22181,\n39564:22190,\n39565:22198,\n39566:22196,\n39567:22210,\n39568:22204,\n39569:22209,\n39570:22211,\n39571:22208,\n39572:22216,\n39573:22222,\n39574:22225,\n39575:22227,\n39576:22231,\n39577:22254,\n39578:22265,\n39579:22272,\n39580:22271,\n39581:22276,\n39582:22281,\n39583:22280,\n39584:22283,\n39585:22285,\n39586:22291,\n39587:22296,\n39588:22294,\n39589:21959,\n39590:22300,\n39591:22310,\n39592:22327,\n39593:22328,\n39594:22350,\n39595:22331,\n39596:22336,\n39597:22351,\n39598:22377,\n39599:22464,\n39600:22408,\n39601:22369,\n39602:22399,\n39603:22409,\n39604:22419,\n39605:22432,\n39606:22451,\n39607:22436,\n39608:22442,\n39609:22448,\n39610:22467,\n39611:22470,\n39612:22484,\n39613:22482,\n39614:22483,\n39615:22538,\n39616:22486,\n39617:22499,\n39618:22539,\n39619:22553,\n39620:22557,\n39621:22642,\n39622:22561,\n39623:22626,\n39624:22603,\n39625:22640,\n39626:27584,\n39627:22610,\n39628:22589,\n39629:22649,\n39630:22661,\n39631:22713,\n39632:22687,\n39633:22699,\n39634:22714,\n39635:22750,\n39636:22715,\n39637:22712,\n39638:22702,\n39639:22725,\n39640:22739,\n39641:22737,\n39642:22743,\n39643:22745,\n39644:22744,\n39645:22757,\n39646:22748,\n39647:22756,\n39648:22751,\n39649:22767,\n39650:22778,\n39651:22777,\n39652:22779,\n39653:22780,\n39654:22781,\n39655:22786,\n39656:22794,\n39657:22800,\n39658:22811,\n39659:26790,\n39660:22821,\n39661:22828,\n39662:22829,\n39663:22834,\n39664:22840,\n39665:22846,\n39666:31442,\n39667:22869,\n39668:22864,\n39669:22862,\n39670:22874,\n39671:22872,\n39672:22882,\n39673:22880,\n39674:22887,\n39675:22892,\n39676:22889,\n39744:22904,\n39745:22913,\n39746:22941,\n39747:20318,\n39748:20395,\n39749:22947,\n39750:22962,\n39751:22982,\n39752:23016,\n39753:23004,\n39754:22925,\n39755:23001,\n39756:23002,\n39757:23077,\n39758:23071,\n39759:23057,\n39760:23068,\n39761:23049,\n39762:23066,\n39763:23104,\n39764:23148,\n39765:23113,\n39766:23093,\n39767:23094,\n39768:23138,\n39769:23146,\n39770:23194,\n39771:23228,\n39772:23230,\n39773:23243,\n39774:23234,\n39775:23229,\n39776:23267,\n39777:23255,\n39778:23270,\n39779:23273,\n39780:23254,\n39781:23290,\n39782:23291,\n39783:23308,\n39784:23307,\n39785:23318,\n39786:23346,\n39787:23248,\n39788:23338,\n39789:23350,\n39790:23358,\n39791:23363,\n39792:23365,\n39793:23360,\n39794:23377,\n39795:23381,\n39796:23386,\n39797:23387,\n39798:23397,\n39799:23401,\n39800:23408,\n39801:23411,\n39802:23413,\n39803:23416,\n39804:25992,\n39805:23418,\n39806:23424,\n39808:23427,\n39809:23462,\n39810:23480,\n39811:23491,\n39812:23495,\n39813:23497,\n39814:23508,\n39815:23504,\n39816:23524,\n39817:23526,\n39818:23522,\n39819:23518,\n39820:23525,\n39821:23531,\n39822:23536,\n39823:23542,\n39824:23539,\n39825:23557,\n39826:23559,\n39827:23560,\n39828:23565,\n39829:23571,\n39830:23584,\n39831:23586,\n39832:23592,\n39833:23608,\n39834:23609,\n39835:23617,\n39836:23622,\n39837:23630,\n39838:23635,\n39839:23632,\n39840:23631,\n39841:23409,\n39842:23660,\n39843:23662,\n39844:20066,\n39845:23670,\n39846:23673,\n39847:23692,\n39848:23697,\n39849:23700,\n39850:22939,\n39851:23723,\n39852:23739,\n39853:23734,\n39854:23740,\n39855:23735,\n39856:23749,\n39857:23742,\n39858:23751,\n39859:23769,\n39860:23785,\n39861:23805,\n39862:23802,\n39863:23789,\n39864:23948,\n39865:23786,\n39866:23819,\n39867:23829,\n39868:23831,\n39869:23900,\n39870:23839,\n39871:23835,\n39872:23825,\n39873:23828,\n39874:23842,\n39875:23834,\n39876:23833,\n39877:23832,\n39878:23884,\n39879:23890,\n39880:23886,\n39881:23883,\n39882:23916,\n39883:23923,\n39884:23926,\n39885:23943,\n39886:23940,\n39887:23938,\n39888:23970,\n39889:23965,\n39890:23980,\n39891:23982,\n39892:23997,\n39893:23952,\n39894:23991,\n39895:23996,\n39896:24009,\n39897:24013,\n39898:24019,\n39899:24018,\n39900:24022,\n39901:24027,\n39902:24043,\n39903:24050,\n39904:24053,\n39905:24075,\n39906:24090,\n39907:24089,\n39908:24081,\n39909:24091,\n39910:24118,\n39911:24119,\n39912:24132,\n39913:24131,\n39914:24128,\n39915:24142,\n39916:24151,\n39917:24148,\n39918:24159,\n39919:24162,\n39920:24164,\n39921:24135,\n39922:24181,\n39923:24182,\n39924:24186,\n39925:40636,\n39926:24191,\n39927:24224,\n39928:24257,\n39929:24258,\n39930:24264,\n39931:24272,\n39932:24271,\n40000:24278,\n40001:24291,\n40002:24285,\n40003:24282,\n40004:24283,\n40005:24290,\n40006:24289,\n40007:24296,\n40008:24297,\n40009:24300,\n40010:24305,\n40011:24307,\n40012:24304,\n40013:24308,\n40014:24312,\n40015:24318,\n40016:24323,\n40017:24329,\n40018:24413,\n40019:24412,\n40020:24331,\n40021:24337,\n40022:24342,\n40023:24361,\n40024:24365,\n40025:24376,\n40026:24385,\n40027:24392,\n40028:24396,\n40029:24398,\n40030:24367,\n40031:24401,\n40032:24406,\n40033:24407,\n40034:24409,\n40035:24417,\n40036:24429,\n40037:24435,\n40038:24439,\n40039:24451,\n40040:24450,\n40041:24447,\n40042:24458,\n40043:24456,\n40044:24465,\n40045:24455,\n40046:24478,\n40047:24473,\n40048:24472,\n40049:24480,\n40050:24488,\n40051:24493,\n40052:24508,\n40053:24534,\n40054:24571,\n40055:24548,\n40056:24568,\n40057:24561,\n40058:24541,\n40059:24755,\n40060:24575,\n40061:24609,\n40062:24672,\n40064:24601,\n40065:24592,\n40066:24617,\n40067:24590,\n40068:24625,\n40069:24603,\n40070:24597,\n40071:24619,\n40072:24614,\n40073:24591,\n40074:24634,\n40075:24666,\n40076:24641,\n40077:24682,\n40078:24695,\n40079:24671,\n40080:24650,\n40081:24646,\n40082:24653,\n40083:24675,\n40084:24643,\n40085:24676,\n40086:24642,\n40087:24684,\n40088:24683,\n40089:24665,\n40090:24705,\n40091:24717,\n40092:24807,\n40093:24707,\n40094:24730,\n40095:24708,\n40096:24731,\n40097:24726,\n40098:24727,\n40099:24722,\n40100:24743,\n40101:24715,\n40102:24801,\n40103:24760,\n40104:24800,\n40105:24787,\n40106:24756,\n40107:24560,\n40108:24765,\n40109:24774,\n40110:24757,\n40111:24792,\n40112:24909,\n40113:24853,\n40114:24838,\n40115:24822,\n40116:24823,\n40117:24832,\n40118:24820,\n40119:24826,\n40120:24835,\n40121:24865,\n40122:24827,\n40123:24817,\n40124:24845,\n40125:24846,\n40126:24903,\n40127:24894,\n40128:24872,\n40129:24871,\n40130:24906,\n40131:24895,\n40132:24892,\n40133:24876,\n40134:24884,\n40135:24893,\n40136:24898,\n40137:24900,\n40138:24947,\n40139:24951,\n40140:24920,\n40141:24921,\n40142:24922,\n40143:24939,\n40144:24948,\n40145:24943,\n40146:24933,\n40147:24945,\n40148:24927,\n40149:24925,\n40150:24915,\n40151:24949,\n40152:24985,\n40153:24982,\n40154:24967,\n40155:25004,\n40156:24980,\n40157:24986,\n40158:24970,\n40159:24977,\n40160:25003,\n40161:25006,\n40162:25036,\n40163:25034,\n40164:25033,\n40165:25079,\n40166:25032,\n40167:25027,\n40168:25030,\n40169:25018,\n40170:25035,\n40171:32633,\n40172:25037,\n40173:25062,\n40174:25059,\n40175:25078,\n40176:25082,\n40177:25076,\n40178:25087,\n40179:25085,\n40180:25084,\n40181:25086,\n40182:25088,\n40183:25096,\n40184:25097,\n40185:25101,\n40186:25100,\n40187:25108,\n40188:25115,\n40256:25118,\n40257:25121,\n40258:25130,\n40259:25134,\n40260:25136,\n40261:25138,\n40262:25139,\n40263:25153,\n40264:25166,\n40265:25182,\n40266:25187,\n40267:25179,\n40268:25184,\n40269:25192,\n40270:25212,\n40271:25218,\n40272:25225,\n40273:25214,\n40274:25234,\n40275:25235,\n40276:25238,\n40277:25300,\n40278:25219,\n40279:25236,\n40280:25303,\n40281:25297,\n40282:25275,\n40283:25295,\n40284:25343,\n40285:25286,\n40286:25812,\n40287:25288,\n40288:25308,\n40289:25292,\n40290:25290,\n40291:25282,\n40292:25287,\n40293:25243,\n40294:25289,\n40295:25356,\n40296:25326,\n40297:25329,\n40298:25383,\n40299:25346,\n40300:25352,\n40301:25327,\n40302:25333,\n40303:25424,\n40304:25406,\n40305:25421,\n40306:25628,\n40307:25423,\n40308:25494,\n40309:25486,\n40310:25472,\n40311:25515,\n40312:25462,\n40313:25507,\n40314:25487,\n40315:25481,\n40316:25503,\n40317:25525,\n40318:25451,\n40320:25449,\n40321:25534,\n40322:25577,\n40323:25536,\n40324:25542,\n40325:25571,\n40326:25545,\n40327:25554,\n40328:25590,\n40329:25540,\n40330:25622,\n40331:25652,\n40332:25606,\n40333:25619,\n40334:25638,\n40335:25654,\n40336:25885,\n40337:25623,\n40338:25640,\n40339:25615,\n40340:25703,\n40341:25711,\n40342:25718,\n40343:25678,\n40344:25898,\n40345:25749,\n40346:25747,\n40347:25765,\n40348:25769,\n40349:25736,\n40350:25788,\n40351:25818,\n40352:25810,\n40353:25797,\n40354:25799,\n40355:25787,\n40356:25816,\n40357:25794,\n40358:25841,\n40359:25831,\n40360:33289,\n40361:25824,\n40362:25825,\n40363:25260,\n40364:25827,\n40365:25839,\n40366:25900,\n40367:25846,\n40368:25844,\n40369:25842,\n40370:25850,\n40371:25856,\n40372:25853,\n40373:25880,\n40374:25884,\n40375:25861,\n40376:25892,\n40377:25891,\n40378:25899,\n40379:25908,\n40380:25909,\n40381:25911,\n40382:25910,\n40383:25912,\n40384:30027,\n40385:25928,\n40386:25942,\n40387:25941,\n40388:25933,\n40389:25944,\n40390:25950,\n40391:25949,\n40392:25970,\n40393:25976,\n40394:25986,\n40395:25987,\n40396:35722,\n40397:26011,\n40398:26015,\n40399:26027,\n40400:26039,\n40401:26051,\n40402:26054,\n40403:26049,\n40404:26052,\n40405:26060,\n40406:26066,\n40407:26075,\n40408:26073,\n40409:26080,\n40410:26081,\n40411:26097,\n40412:26482,\n40413:26122,\n40414:26115,\n40415:26107,\n40416:26483,\n40417:26165,\n40418:26166,\n40419:26164,\n40420:26140,\n40421:26191,\n40422:26180,\n40423:26185,\n40424:26177,\n40425:26206,\n40426:26205,\n40427:26212,\n40428:26215,\n40429:26216,\n40430:26207,\n40431:26210,\n40432:26224,\n40433:26243,\n40434:26248,\n40435:26254,\n40436:26249,\n40437:26244,\n40438:26264,\n40439:26269,\n40440:26305,\n40441:26297,\n40442:26313,\n40443:26302,\n40444:26300,\n40512:26308,\n40513:26296,\n40514:26326,\n40515:26330,\n40516:26336,\n40517:26175,\n40518:26342,\n40519:26345,\n40520:26352,\n40521:26357,\n40522:26359,\n40523:26383,\n40524:26390,\n40525:26398,\n40526:26406,\n40527:26407,\n40528:38712,\n40529:26414,\n40530:26431,\n40531:26422,\n40532:26433,\n40533:26424,\n40534:26423,\n40535:26438,\n40536:26462,\n40537:26464,\n40538:26457,\n40539:26467,\n40540:26468,\n40541:26505,\n40542:26480,\n40543:26537,\n40544:26492,\n40545:26474,\n40546:26508,\n40547:26507,\n40548:26534,\n40549:26529,\n40550:26501,\n40551:26551,\n40552:26607,\n40553:26548,\n40554:26604,\n40555:26547,\n40556:26601,\n40557:26552,\n40558:26596,\n40559:26590,\n40560:26589,\n40561:26594,\n40562:26606,\n40563:26553,\n40564:26574,\n40565:26566,\n40566:26599,\n40567:27292,\n40568:26654,\n40569:26694,\n40570:26665,\n40571:26688,\n40572:26701,\n40573:26674,\n40574:26702,\n40576:26803,\n40577:26667,\n40578:26713,\n40579:26723,\n40580:26743,\n40581:26751,\n40582:26783,\n40583:26767,\n40584:26797,\n40585:26772,\n40586:26781,\n40587:26779,\n40588:26755,\n40589:27310,\n40590:26809,\n40591:26740,\n40592:26805,\n40593:26784,\n40594:26810,\n40595:26895,\n40596:26765,\n40597:26750,\n40598:26881,\n40599:26826,\n40600:26888,\n40601:26840,\n40602:26914,\n40603:26918,\n40604:26849,\n40605:26892,\n40606:26829,\n40607:26836,\n40608:26855,\n40609:26837,\n40610:26934,\n40611:26898,\n40612:26884,\n40613:26839,\n40614:26851,\n40615:26917,\n40616:26873,\n40617:26848,\n40618:26863,\n40619:26920,\n40620:26922,\n40621:26906,\n40622:26915,\n40623:26913,\n40624:26822,\n40625:27001,\n40626:26999,\n40627:26972,\n40628:27000,\n40629:26987,\n40630:26964,\n40631:27006,\n40632:26990,\n40633:26937,\n40634:26996,\n40635:26941,\n40636:26969,\n40637:26928,\n40638:26977,\n40639:26974,\n40640:26973,\n40641:27009,\n40642:26986,\n40643:27058,\n40644:27054,\n40645:27088,\n40646:27071,\n40647:27073,\n40648:27091,\n40649:27070,\n40650:27086,\n40651:23528,\n40652:27082,\n40653:27101,\n40654:27067,\n40655:27075,\n40656:27047,\n40657:27182,\n40658:27025,\n40659:27040,\n40660:27036,\n40661:27029,\n40662:27060,\n40663:27102,\n40664:27112,\n40665:27138,\n40666:27163,\n40667:27135,\n40668:27402,\n40669:27129,\n40670:27122,\n40671:27111,\n40672:27141,\n40673:27057,\n40674:27166,\n40675:27117,\n40676:27156,\n40677:27115,\n40678:27146,\n40679:27154,\n40680:27329,\n40681:27171,\n40682:27155,\n40683:27204,\n40684:27148,\n40685:27250,\n40686:27190,\n40687:27256,\n40688:27207,\n40689:27234,\n40690:27225,\n40691:27238,\n40692:27208,\n40693:27192,\n40694:27170,\n40695:27280,\n40696:27277,\n40697:27296,\n40698:27268,\n40699:27298,\n40700:27299,\n40768:27287,\n40769:34327,\n40770:27323,\n40771:27331,\n40772:27330,\n40773:27320,\n40774:27315,\n40775:27308,\n40776:27358,\n40777:27345,\n40778:27359,\n40779:27306,\n40780:27354,\n40781:27370,\n40782:27387,\n40783:27397,\n40784:34326,\n40785:27386,\n40786:27410,\n40787:27414,\n40788:39729,\n40789:27423,\n40790:27448,\n40791:27447,\n40792:30428,\n40793:27449,\n40794:39150,\n40795:27463,\n40796:27459,\n40797:27465,\n40798:27472,\n40799:27481,\n40800:27476,\n40801:27483,\n40802:27487,\n40803:27489,\n40804:27512,\n40805:27513,\n40806:27519,\n40807:27520,\n40808:27524,\n40809:27523,\n40810:27533,\n40811:27544,\n40812:27541,\n40813:27550,\n40814:27556,\n40815:27562,\n40816:27563,\n40817:27567,\n40818:27570,\n40819:27569,\n40820:27571,\n40821:27575,\n40822:27580,\n40823:27590,\n40824:27595,\n40825:27603,\n40826:27615,\n40827:27628,\n40828:27627,\n40829:27635,\n40830:27631,\n40832:40638,\n40833:27656,\n40834:27667,\n40835:27668,\n40836:27675,\n40837:27684,\n40838:27683,\n40839:27742,\n40840:27733,\n40841:27746,\n40842:27754,\n40843:27778,\n40844:27789,\n40845:27802,\n40846:27777,\n40847:27803,\n40848:27774,\n40849:27752,\n40850:27763,\n40851:27794,\n40852:27792,\n40853:27844,\n40854:27889,\n40855:27859,\n40856:27837,\n40857:27863,\n40858:27845,\n40859:27869,\n40860:27822,\n40861:27825,\n40862:27838,\n40863:27834,\n40864:27867,\n40865:27887,\n40866:27865,\n40867:27882,\n40868:27935,\n40869:34893,\n40870:27958,\n40871:27947,\n40872:27965,\n40873:27960,\n40874:27929,\n40875:27957,\n40876:27955,\n40877:27922,\n40878:27916,\n40879:28003,\n40880:28051,\n40881:28004,\n40882:27994,\n40883:28025,\n40884:27993,\n40885:28046,\n40886:28053,\n40887:28644,\n40888:28037,\n40889:28153,\n40890:28181,\n40891:28170,\n40892:28085,\n40893:28103,\n40894:28134,\n40895:28088,\n40896:28102,\n40897:28140,\n40898:28126,\n40899:28108,\n40900:28136,\n40901:28114,\n40902:28101,\n40903:28154,\n40904:28121,\n40905:28132,\n40906:28117,\n40907:28138,\n40908:28142,\n40909:28205,\n40910:28270,\n40911:28206,\n40912:28185,\n40913:28274,\n40914:28255,\n40915:28222,\n40916:28195,\n40917:28267,\n40918:28203,\n40919:28278,\n40920:28237,\n40921:28191,\n40922:28227,\n40923:28218,\n40924:28238,\n40925:28196,\n40926:28415,\n40927:28189,\n40928:28216,\n40929:28290,\n40930:28330,\n40931:28312,\n40932:28361,\n40933:28343,\n40934:28371,\n40935:28349,\n40936:28335,\n40937:28356,\n40938:28338,\n40939:28372,\n40940:28373,\n40941:28303,\n40942:28325,\n40943:28354,\n40944:28319,\n40945:28481,\n40946:28433,\n40947:28748,\n40948:28396,\n40949:28408,\n40950:28414,\n40951:28479,\n40952:28402,\n40953:28465,\n40954:28399,\n40955:28466,\n40956:28364,\n57408:28478,\n57409:28435,\n57410:28407,\n57411:28550,\n57412:28538,\n57413:28536,\n57414:28545,\n57415:28544,\n57416:28527,\n57417:28507,\n57418:28659,\n57419:28525,\n57420:28546,\n57421:28540,\n57422:28504,\n57423:28558,\n57424:28561,\n57425:28610,\n57426:28518,\n57427:28595,\n57428:28579,\n57429:28577,\n57430:28580,\n57431:28601,\n57432:28614,\n57433:28586,\n57434:28639,\n57435:28629,\n57436:28652,\n57437:28628,\n57438:28632,\n57439:28657,\n57440:28654,\n57441:28635,\n57442:28681,\n57443:28683,\n57444:28666,\n57445:28689,\n57446:28673,\n57447:28687,\n57448:28670,\n57449:28699,\n57450:28698,\n57451:28532,\n57452:28701,\n57453:28696,\n57454:28703,\n57455:28720,\n57456:28734,\n57457:28722,\n57458:28753,\n57459:28771,\n57460:28825,\n57461:28818,\n57462:28847,\n57463:28913,\n57464:28844,\n57465:28856,\n57466:28851,\n57467:28846,\n57468:28895,\n57469:28875,\n57470:28893,\n57472:28889,\n57473:28937,\n57474:28925,\n57475:28956,\n57476:28953,\n57477:29029,\n57478:29013,\n57479:29064,\n57480:29030,\n57481:29026,\n57482:29004,\n57483:29014,\n57484:29036,\n57485:29071,\n57486:29179,\n57487:29060,\n57488:29077,\n57489:29096,\n57490:29100,\n57491:29143,\n57492:29113,\n57493:29118,\n57494:29138,\n57495:29129,\n57496:29140,\n57497:29134,\n57498:29152,\n57499:29164,\n57500:29159,\n57501:29173,\n57502:29180,\n57503:29177,\n57504:29183,\n57505:29197,\n57506:29200,\n57507:29211,\n57508:29224,\n57509:29229,\n57510:29228,\n57511:29232,\n57512:29234,\n57513:29243,\n57514:29244,\n57515:29247,\n57516:29248,\n57517:29254,\n57518:29259,\n57519:29272,\n57520:29300,\n57521:29310,\n57522:29314,\n57523:29313,\n57524:29319,\n57525:29330,\n57526:29334,\n57527:29346,\n57528:29351,\n57529:29369,\n57530:29362,\n57531:29379,\n57532:29382,\n57533:29380,\n57534:29390,\n57535:29394,\n57536:29410,\n57537:29408,\n57538:29409,\n57539:29433,\n57540:29431,\n57541:20495,\n57542:29463,\n57543:29450,\n57544:29468,\n57545:29462,\n57546:29469,\n57547:29492,\n57548:29487,\n57549:29481,\n57550:29477,\n57551:29502,\n57552:29518,\n57553:29519,\n57554:40664,\n57555:29527,\n57556:29546,\n57557:29544,\n57558:29552,\n57559:29560,\n57560:29557,\n57561:29563,\n57562:29562,\n57563:29640,\n57564:29619,\n57565:29646,\n57566:29627,\n57567:29632,\n57568:29669,\n57569:29678,\n57570:29662,\n57571:29858,\n57572:29701,\n57573:29807,\n57574:29733,\n57575:29688,\n57576:29746,\n57577:29754,\n57578:29781,\n57579:29759,\n57580:29791,\n57581:29785,\n57582:29761,\n57583:29788,\n57584:29801,\n57585:29808,\n57586:29795,\n57587:29802,\n57588:29814,\n57589:29822,\n57590:29835,\n57591:29854,\n57592:29863,\n57593:29898,\n57594:29903,\n57595:29908,\n57596:29681,\n57664:29920,\n57665:29923,\n57666:29927,\n57667:29929,\n57668:29934,\n57669:29938,\n57670:29936,\n57671:29937,\n57672:29944,\n57673:29943,\n57674:29956,\n57675:29955,\n57676:29957,\n57677:29964,\n57678:29966,\n57679:29965,\n57680:29973,\n57681:29971,\n57682:29982,\n57683:29990,\n57684:29996,\n57685:30012,\n57686:30020,\n57687:30029,\n57688:30026,\n57689:30025,\n57690:30043,\n57691:30022,\n57692:30042,\n57693:30057,\n57694:30052,\n57695:30055,\n57696:30059,\n57697:30061,\n57698:30072,\n57699:30070,\n57700:30086,\n57701:30087,\n57702:30068,\n57703:30090,\n57704:30089,\n57705:30082,\n57706:30100,\n57707:30106,\n57708:30109,\n57709:30117,\n57710:30115,\n57711:30146,\n57712:30131,\n57713:30147,\n57714:30133,\n57715:30141,\n57716:30136,\n57717:30140,\n57718:30129,\n57719:30157,\n57720:30154,\n57721:30162,\n57722:30169,\n57723:30179,\n57724:30174,\n57725:30206,\n57726:30207,\n57728:30204,\n57729:30209,\n57730:30192,\n57731:30202,\n57732:30194,\n57733:30195,\n57734:30219,\n57735:30221,\n57736:30217,\n57737:30239,\n57738:30247,\n57739:30240,\n57740:30241,\n57741:30242,\n57742:30244,\n57743:30260,\n57744:30256,\n57745:30267,\n57746:30279,\n57747:30280,\n57748:30278,\n57749:30300,\n57750:30296,\n57751:30305,\n57752:30306,\n57753:30312,\n57754:30313,\n57755:30314,\n57756:30311,\n57757:30316,\n57758:30320,\n57759:30322,\n57760:30326,\n57761:30328,\n57762:30332,\n57763:30336,\n57764:30339,\n57765:30344,\n57766:30347,\n57767:30350,\n57768:30358,\n57769:30355,\n57770:30361,\n57771:30362,\n57772:30384,\n57773:30388,\n57774:30392,\n57775:30393,\n57776:30394,\n57777:30402,\n57778:30413,\n57779:30422,\n57780:30418,\n57781:30430,\n57782:30433,\n57783:30437,\n57784:30439,\n57785:30442,\n57786:34351,\n57787:30459,\n57788:30472,\n57789:30471,\n57790:30468,\n57791:30505,\n57792:30500,\n57793:30494,\n57794:30501,\n57795:30502,\n57796:30491,\n57797:30519,\n57798:30520,\n57799:30535,\n57800:30554,\n57801:30568,\n57802:30571,\n57803:30555,\n57804:30565,\n57805:30591,\n57806:30590,\n57807:30585,\n57808:30606,\n57809:30603,\n57810:30609,\n57811:30624,\n57812:30622,\n57813:30640,\n57814:30646,\n57815:30649,\n57816:30655,\n57817:30652,\n57818:30653,\n57819:30651,\n57820:30663,\n57821:30669,\n57822:30679,\n57823:30682,\n57824:30684,\n57825:30691,\n57826:30702,\n57827:30716,\n57828:30732,\n57829:30738,\n57830:31014,\n57831:30752,\n57832:31018,\n57833:30789,\n57834:30862,\n57835:30836,\n57836:30854,\n57837:30844,\n57838:30874,\n57839:30860,\n57840:30883,\n57841:30901,\n57842:30890,\n57843:30895,\n57844:30929,\n57845:30918,\n57846:30923,\n57847:30932,\n57848:30910,\n57849:30908,\n57850:30917,\n57851:30922,\n57852:30956,\n57920:30951,\n57921:30938,\n57922:30973,\n57923:30964,\n57924:30983,\n57925:30994,\n57926:30993,\n57927:31001,\n57928:31020,\n57929:31019,\n57930:31040,\n57931:31072,\n57932:31063,\n57933:31071,\n57934:31066,\n57935:31061,\n57936:31059,\n57937:31098,\n57938:31103,\n57939:31114,\n57940:31133,\n57941:31143,\n57942:40779,\n57943:31146,\n57944:31150,\n57945:31155,\n57946:31161,\n57947:31162,\n57948:31177,\n57949:31189,\n57950:31207,\n57951:31212,\n57952:31201,\n57953:31203,\n57954:31240,\n57955:31245,\n57956:31256,\n57957:31257,\n57958:31264,\n57959:31263,\n57960:31104,\n57961:31281,\n57962:31291,\n57963:31294,\n57964:31287,\n57965:31299,\n57966:31319,\n57967:31305,\n57968:31329,\n57969:31330,\n57970:31337,\n57971:40861,\n57972:31344,\n57973:31353,\n57974:31357,\n57975:31368,\n57976:31383,\n57977:31381,\n57978:31384,\n57979:31382,\n57980:31401,\n57981:31432,\n57982:31408,\n57984:31414,\n57985:31429,\n57986:31428,\n57987:31423,\n57988:36995,\n57989:31431,\n57990:31434,\n57991:31437,\n57992:31439,\n57993:31445,\n57994:31443,\n57995:31449,\n57996:31450,\n57997:31453,\n57998:31457,\n57999:31458,\n58000:31462,\n58001:31469,\n58002:31472,\n58003:31490,\n58004:31503,\n58005:31498,\n58006:31494,\n58007:31539,\n58008:31512,\n58009:31513,\n58010:31518,\n58011:31541,\n58012:31528,\n58013:31542,\n58014:31568,\n58015:31610,\n58016:31492,\n58017:31565,\n58018:31499,\n58019:31564,\n58020:31557,\n58021:31605,\n58022:31589,\n58023:31604,\n58024:31591,\n58025:31600,\n58026:31601,\n58027:31596,\n58028:31598,\n58029:31645,\n58030:31640,\n58031:31647,\n58032:31629,\n58033:31644,\n58034:31642,\n58035:31627,\n58036:31634,\n58037:31631,\n58038:31581,\n58039:31641,\n58040:31691,\n58041:31681,\n58042:31692,\n58043:31695,\n58044:31668,\n58045:31686,\n58046:31709,\n58047:31721,\n58048:31761,\n58049:31764,\n58050:31718,\n58051:31717,\n58052:31840,\n58053:31744,\n58054:31751,\n58055:31763,\n58056:31731,\n58057:31735,\n58058:31767,\n58059:31757,\n58060:31734,\n58061:31779,\n58062:31783,\n58063:31786,\n58064:31775,\n58065:31799,\n58066:31787,\n58067:31805,\n58068:31820,\n58069:31811,\n58070:31828,\n58071:31823,\n58072:31808,\n58073:31824,\n58074:31832,\n58075:31839,\n58076:31844,\n58077:31830,\n58078:31845,\n58079:31852,\n58080:31861,\n58081:31875,\n58082:31888,\n58083:31908,\n58084:31917,\n58085:31906,\n58086:31915,\n58087:31905,\n58088:31912,\n58089:31923,\n58090:31922,\n58091:31921,\n58092:31918,\n58093:31929,\n58094:31933,\n58095:31936,\n58096:31941,\n58097:31938,\n58098:31960,\n58099:31954,\n58100:31964,\n58101:31970,\n58102:39739,\n58103:31983,\n58104:31986,\n58105:31988,\n58106:31990,\n58107:31994,\n58108:32006,\n58176:32002,\n58177:32028,\n58178:32021,\n58179:32010,\n58180:32069,\n58181:32075,\n58182:32046,\n58183:32050,\n58184:32063,\n58185:32053,\n58186:32070,\n58187:32115,\n58188:32086,\n58189:32078,\n58190:32114,\n58191:32104,\n58192:32110,\n58193:32079,\n58194:32099,\n58195:32147,\n58196:32137,\n58197:32091,\n58198:32143,\n58199:32125,\n58200:32155,\n58201:32186,\n58202:32174,\n58203:32163,\n58204:32181,\n58205:32199,\n58206:32189,\n58207:32171,\n58208:32317,\n58209:32162,\n58210:32175,\n58211:32220,\n58212:32184,\n58213:32159,\n58214:32176,\n58215:32216,\n58216:32221,\n58217:32228,\n58218:32222,\n58219:32251,\n58220:32242,\n58221:32225,\n58222:32261,\n58223:32266,\n58224:32291,\n58225:32289,\n58226:32274,\n58227:32305,\n58228:32287,\n58229:32265,\n58230:32267,\n58231:32290,\n58232:32326,\n58233:32358,\n58234:32315,\n58235:32309,\n58236:32313,\n58237:32323,\n58238:32311,\n58240:32306,\n58241:32314,\n58242:32359,\n58243:32349,\n58244:32342,\n58245:32350,\n58246:32345,\n58247:32346,\n58248:32377,\n58249:32362,\n58250:32361,\n58251:32380,\n58252:32379,\n58253:32387,\n58254:32213,\n58255:32381,\n58256:36782,\n58257:32383,\n58258:32392,\n58259:32393,\n58260:32396,\n58261:32402,\n58262:32400,\n58263:32403,\n58264:32404,\n58265:32406,\n58266:32398,\n58267:32411,\n58268:32412,\n58269:32568,\n58270:32570,\n58271:32581,\n58272:32588,\n58273:32589,\n58274:32590,\n58275:32592,\n58276:32593,\n58277:32597,\n58278:32596,\n58279:32600,\n58280:32607,\n58281:32608,\n58282:32616,\n58283:32617,\n58284:32615,\n58285:32632,\n58286:32642,\n58287:32646,\n58288:32643,\n58289:32648,\n58290:32647,\n58291:32652,\n58292:32660,\n58293:32670,\n58294:32669,\n58295:32666,\n58296:32675,\n58297:32687,\n58298:32690,\n58299:32697,\n58300:32686,\n58301:32694,\n58302:32696,\n58303:35697,\n58304:32709,\n58305:32710,\n58306:32714,\n58307:32725,\n58308:32724,\n58309:32737,\n58310:32742,\n58311:32745,\n58312:32755,\n58313:32761,\n58314:39132,\n58315:32774,\n58316:32772,\n58317:32779,\n58318:32786,\n58319:32792,\n58320:32793,\n58321:32796,\n58322:32801,\n58323:32808,\n58324:32831,\n58325:32827,\n58326:32842,\n58327:32838,\n58328:32850,\n58329:32856,\n58330:32858,\n58331:32863,\n58332:32866,\n58333:32872,\n58334:32883,\n58335:32882,\n58336:32880,\n58337:32886,\n58338:32889,\n58339:32893,\n58340:32895,\n58341:32900,\n58342:32902,\n58343:32901,\n58344:32923,\n58345:32915,\n58346:32922,\n58347:32941,\n58348:20880,\n58349:32940,\n58350:32987,\n58351:32997,\n58352:32985,\n58353:32989,\n58354:32964,\n58355:32986,\n58356:32982,\n58357:33033,\n58358:33007,\n58359:33009,\n58360:33051,\n58361:33065,\n58362:33059,\n58363:33071,\n58364:33099,\n58432:38539,\n58433:33094,\n58434:33086,\n58435:33107,\n58436:33105,\n58437:33020,\n58438:33137,\n58439:33134,\n58440:33125,\n58441:33126,\n58442:33140,\n58443:33155,\n58444:33160,\n58445:33162,\n58446:33152,\n58447:33154,\n58448:33184,\n58449:33173,\n58450:33188,\n58451:33187,\n58452:33119,\n58453:33171,\n58454:33193,\n58455:33200,\n58456:33205,\n58457:33214,\n58458:33208,\n58459:33213,\n58460:33216,\n58461:33218,\n58462:33210,\n58463:33225,\n58464:33229,\n58465:33233,\n58466:33241,\n58467:33240,\n58468:33224,\n58469:33242,\n58470:33247,\n58471:33248,\n58472:33255,\n58473:33274,\n58474:33275,\n58475:33278,\n58476:33281,\n58477:33282,\n58478:33285,\n58479:33287,\n58480:33290,\n58481:33293,\n58482:33296,\n58483:33302,\n58484:33321,\n58485:33323,\n58486:33336,\n58487:33331,\n58488:33344,\n58489:33369,\n58490:33368,\n58491:33373,\n58492:33370,\n58493:33375,\n58494:33380,\n58496:33378,\n58497:33384,\n58498:33386,\n58499:33387,\n58500:33326,\n58501:33393,\n58502:33399,\n58503:33400,\n58504:33406,\n58505:33421,\n58506:33426,\n58507:33451,\n58508:33439,\n58509:33467,\n58510:33452,\n58511:33505,\n58512:33507,\n58513:33503,\n58514:33490,\n58515:33524,\n58516:33523,\n58517:33530,\n58518:33683,\n58519:33539,\n58520:33531,\n58521:33529,\n58522:33502,\n58523:33542,\n58524:33500,\n58525:33545,\n58526:33497,\n58527:33589,\n58528:33588,\n58529:33558,\n58530:33586,\n58531:33585,\n58532:33600,\n58533:33593,\n58534:33616,\n58535:33605,\n58536:33583,\n58537:33579,\n58538:33559,\n58539:33560,\n58540:33669,\n58541:33690,\n58542:33706,\n58543:33695,\n58544:33698,\n58545:33686,\n58546:33571,\n58547:33678,\n58548:33671,\n58549:33674,\n58550:33660,\n58551:33717,\n58552:33651,\n58553:33653,\n58554:33696,\n58555:33673,\n58556:33704,\n58557:33780,\n58558:33811,\n58559:33771,\n58560:33742,\n58561:33789,\n58562:33795,\n58563:33752,\n58564:33803,\n58565:33729,\n58566:33783,\n58567:33799,\n58568:33760,\n58569:33778,\n58570:33805,\n58571:33826,\n58572:33824,\n58573:33725,\n58574:33848,\n58575:34054,\n58576:33787,\n58577:33901,\n58578:33834,\n58579:33852,\n58580:34138,\n58581:33924,\n58582:33911,\n58583:33899,\n58584:33965,\n58585:33902,\n58586:33922,\n58587:33897,\n58588:33862,\n58589:33836,\n58590:33903,\n58591:33913,\n58592:33845,\n58593:33994,\n58594:33890,\n58595:33977,\n58596:33983,\n58597:33951,\n58598:34009,\n58599:33997,\n58600:33979,\n58601:34010,\n58602:34000,\n58603:33985,\n58604:33990,\n58605:34006,\n58606:33953,\n58607:34081,\n58608:34047,\n58609:34036,\n58610:34071,\n58611:34072,\n58612:34092,\n58613:34079,\n58614:34069,\n58615:34068,\n58616:34044,\n58617:34112,\n58618:34147,\n58619:34136,\n58620:34120,\n58688:34113,\n58689:34306,\n58690:34123,\n58691:34133,\n58692:34176,\n58693:34212,\n58694:34184,\n58695:34193,\n58696:34186,\n58697:34216,\n58698:34157,\n58699:34196,\n58700:34203,\n58701:34282,\n58702:34183,\n58703:34204,\n58704:34167,\n58705:34174,\n58706:34192,\n58707:34249,\n58708:34234,\n58709:34255,\n58710:34233,\n58711:34256,\n58712:34261,\n58713:34269,\n58714:34277,\n58715:34268,\n58716:34297,\n58717:34314,\n58718:34323,\n58719:34315,\n58720:34302,\n58721:34298,\n58722:34310,\n58723:34338,\n58724:34330,\n58725:34352,\n58726:34367,\n58727:34381,\n58728:20053,\n58729:34388,\n58730:34399,\n58731:34407,\n58732:34417,\n58733:34451,\n58734:34467,\n58735:34473,\n58736:34474,\n58737:34443,\n58738:34444,\n58739:34486,\n58740:34479,\n58741:34500,\n58742:34502,\n58743:34480,\n58744:34505,\n58745:34851,\n58746:34475,\n58747:34516,\n58748:34526,\n58749:34537,\n58750:34540,\n58752:34527,\n58753:34523,\n58754:34543,\n58755:34578,\n58756:34566,\n58757:34568,\n58758:34560,\n58759:34563,\n58760:34555,\n58761:34577,\n58762:34569,\n58763:34573,\n58764:34553,\n58765:34570,\n58766:34612,\n58767:34623,\n58768:34615,\n58769:34619,\n58770:34597,\n58771:34601,\n58772:34586,\n58773:34656,\n58774:34655,\n58775:34680,\n58776:34636,\n58777:34638,\n58778:34676,\n58779:34647,\n58780:34664,\n58781:34670,\n58782:34649,\n58783:34643,\n58784:34659,\n58785:34666,\n58786:34821,\n58787:34722,\n58788:34719,\n58789:34690,\n58790:34735,\n58791:34763,\n58792:34749,\n58793:34752,\n58794:34768,\n58795:38614,\n58796:34731,\n58797:34756,\n58798:34739,\n58799:34759,\n58800:34758,\n58801:34747,\n58802:34799,\n58803:34802,\n58804:34784,\n58805:34831,\n58806:34829,\n58807:34814,\n58808:34806,\n58809:34807,\n58810:34830,\n58811:34770,\n58812:34833,\n58813:34838,\n58814:34837,\n58815:34850,\n58816:34849,\n58817:34865,\n58818:34870,\n58819:34873,\n58820:34855,\n58821:34875,\n58822:34884,\n58823:34882,\n58824:34898,\n58825:34905,\n58826:34910,\n58827:34914,\n58828:34923,\n58829:34945,\n58830:34942,\n58831:34974,\n58832:34933,\n58833:34941,\n58834:34997,\n58835:34930,\n58836:34946,\n58837:34967,\n58838:34962,\n58839:34990,\n58840:34969,\n58841:34978,\n58842:34957,\n58843:34980,\n58844:34992,\n58845:35007,\n58846:34993,\n58847:35011,\n58848:35012,\n58849:35028,\n58850:35032,\n58851:35033,\n58852:35037,\n58853:35065,\n58854:35074,\n58855:35068,\n58856:35060,\n58857:35048,\n58858:35058,\n58859:35076,\n58860:35084,\n58861:35082,\n58862:35091,\n58863:35139,\n58864:35102,\n58865:35109,\n58866:35114,\n58867:35115,\n58868:35137,\n58869:35140,\n58870:35131,\n58871:35126,\n58872:35128,\n58873:35148,\n58874:35101,\n58875:35168,\n58876:35166,\n58944:35174,\n58945:35172,\n58946:35181,\n58947:35178,\n58948:35183,\n58949:35188,\n58950:35191,\n58951:35198,\n58952:35203,\n58953:35208,\n58954:35210,\n58955:35219,\n58956:35224,\n58957:35233,\n58958:35241,\n58959:35238,\n58960:35244,\n58961:35247,\n58962:35250,\n58963:35258,\n58964:35261,\n58965:35263,\n58966:35264,\n58967:35290,\n58968:35292,\n58969:35293,\n58970:35303,\n58971:35316,\n58972:35320,\n58973:35331,\n58974:35350,\n58975:35344,\n58976:35340,\n58977:35355,\n58978:35357,\n58979:35365,\n58980:35382,\n58981:35393,\n58982:35419,\n58983:35410,\n58984:35398,\n58985:35400,\n58986:35452,\n58987:35437,\n58988:35436,\n58989:35426,\n58990:35461,\n58991:35458,\n58992:35460,\n58993:35496,\n58994:35489,\n58995:35473,\n58996:35493,\n58997:35494,\n58998:35482,\n58999:35491,\n59000:35524,\n59001:35533,\n59002:35522,\n59003:35546,\n59004:35563,\n59005:35571,\n59006:35559,\n59008:35556,\n59009:35569,\n59010:35604,\n59011:35552,\n59012:35554,\n59013:35575,\n59014:35550,\n59015:35547,\n59016:35596,\n59017:35591,\n59018:35610,\n59019:35553,\n59020:35606,\n59021:35600,\n59022:35607,\n59023:35616,\n59024:35635,\n59025:38827,\n59026:35622,\n59027:35627,\n59028:35646,\n59029:35624,\n59030:35649,\n59031:35660,\n59032:35663,\n59033:35662,\n59034:35657,\n59035:35670,\n59036:35675,\n59037:35674,\n59038:35691,\n59039:35679,\n59040:35692,\n59041:35695,\n59042:35700,\n59043:35709,\n59044:35712,\n59045:35724,\n59046:35726,\n59047:35730,\n59048:35731,\n59049:35734,\n59050:35737,\n59051:35738,\n59052:35898,\n59053:35905,\n59054:35903,\n59055:35912,\n59056:35916,\n59057:35918,\n59058:35920,\n59059:35925,\n59060:35938,\n59061:35948,\n59062:35960,\n59063:35962,\n59064:35970,\n59065:35977,\n59066:35973,\n59067:35978,\n59068:35981,\n59069:35982,\n59070:35988,\n59071:35964,\n59072:35992,\n59073:25117,\n59074:36013,\n59075:36010,\n59076:36029,\n59077:36018,\n59078:36019,\n59079:36014,\n59080:36022,\n59081:36040,\n59082:36033,\n59083:36068,\n59084:36067,\n59085:36058,\n59086:36093,\n59087:36090,\n59088:36091,\n59089:36100,\n59090:36101,\n59091:36106,\n59092:36103,\n59093:36111,\n59094:36109,\n59095:36112,\n59096:40782,\n59097:36115,\n59098:36045,\n59099:36116,\n59100:36118,\n59101:36199,\n59102:36205,\n59103:36209,\n59104:36211,\n59105:36225,\n59106:36249,\n59107:36290,\n59108:36286,\n59109:36282,\n59110:36303,\n59111:36314,\n59112:36310,\n59113:36300,\n59114:36315,\n59115:36299,\n59116:36330,\n59117:36331,\n59118:36319,\n59119:36323,\n59120:36348,\n59121:36360,\n59122:36361,\n59123:36351,\n59124:36381,\n59125:36382,\n59126:36368,\n59127:36383,\n59128:36418,\n59129:36405,\n59130:36400,\n59131:36404,\n59132:36426,\n59200:36423,\n59201:36425,\n59202:36428,\n59203:36432,\n59204:36424,\n59205:36441,\n59206:36452,\n59207:36448,\n59208:36394,\n59209:36451,\n59210:36437,\n59211:36470,\n59212:36466,\n59213:36476,\n59214:36481,\n59215:36487,\n59216:36485,\n59217:36484,\n59218:36491,\n59219:36490,\n59220:36499,\n59221:36497,\n59222:36500,\n59223:36505,\n59224:36522,\n59225:36513,\n59226:36524,\n59227:36528,\n59228:36550,\n59229:36529,\n59230:36542,\n59231:36549,\n59232:36552,\n59233:36555,\n59234:36571,\n59235:36579,\n59236:36604,\n59237:36603,\n59238:36587,\n59239:36606,\n59240:36618,\n59241:36613,\n59242:36629,\n59243:36626,\n59244:36633,\n59245:36627,\n59246:36636,\n59247:36639,\n59248:36635,\n59249:36620,\n59250:36646,\n59251:36659,\n59252:36667,\n59253:36665,\n59254:36677,\n59255:36674,\n59256:36670,\n59257:36684,\n59258:36681,\n59259:36678,\n59260:36686,\n59261:36695,\n59262:36700,\n59264:36706,\n59265:36707,\n59266:36708,\n59267:36764,\n59268:36767,\n59269:36771,\n59270:36781,\n59271:36783,\n59272:36791,\n59273:36826,\n59274:36837,\n59275:36834,\n59276:36842,\n59277:36847,\n59278:36999,\n59279:36852,\n59280:36869,\n59281:36857,\n59282:36858,\n59283:36881,\n59284:36885,\n59285:36897,\n59286:36877,\n59287:36894,\n59288:36886,\n59289:36875,\n59290:36903,\n59291:36918,\n59292:36917,\n59293:36921,\n59294:36856,\n59295:36943,\n59296:36944,\n59297:36945,\n59298:36946,\n59299:36878,\n59300:36937,\n59301:36926,\n59302:36950,\n59303:36952,\n59304:36958,\n59305:36968,\n59306:36975,\n59307:36982,\n59308:38568,\n59309:36978,\n59310:36994,\n59311:36989,\n59312:36993,\n59313:36992,\n59314:37002,\n59315:37001,\n59316:37007,\n59317:37032,\n59318:37039,\n59319:37041,\n59320:37045,\n59321:37090,\n59322:37092,\n59323:25160,\n59324:37083,\n59325:37122,\n59326:37138,\n59327:37145,\n59328:37170,\n59329:37168,\n59330:37194,\n59331:37206,\n59332:37208,\n59333:37219,\n59334:37221,\n59335:37225,\n59336:37235,\n59337:37234,\n59338:37259,\n59339:37257,\n59340:37250,\n59341:37282,\n59342:37291,\n59343:37295,\n59344:37290,\n59345:37301,\n59346:37300,\n59347:37306,\n59348:37312,\n59349:37313,\n59350:37321,\n59351:37323,\n59352:37328,\n59353:37334,\n59354:37343,\n59355:37345,\n59356:37339,\n59357:37372,\n59358:37365,\n59359:37366,\n59360:37406,\n59361:37375,\n59362:37396,\n59363:37420,\n59364:37397,\n59365:37393,\n59366:37470,\n59367:37463,\n59368:37445,\n59369:37449,\n59370:37476,\n59371:37448,\n59372:37525,\n59373:37439,\n59374:37451,\n59375:37456,\n59376:37532,\n59377:37526,\n59378:37523,\n59379:37531,\n59380:37466,\n59381:37583,\n59382:37561,\n59383:37559,\n59384:37609,\n59385:37647,\n59386:37626,\n59387:37700,\n59388:37678,\n59456:37657,\n59457:37666,\n59458:37658,\n59459:37667,\n59460:37690,\n59461:37685,\n59462:37691,\n59463:37724,\n59464:37728,\n59465:37756,\n59466:37742,\n59467:37718,\n59468:37808,\n59469:37804,\n59470:37805,\n59471:37780,\n59472:37817,\n59473:37846,\n59474:37847,\n59475:37864,\n59476:37861,\n59477:37848,\n59478:37827,\n59479:37853,\n59480:37840,\n59481:37832,\n59482:37860,\n59483:37914,\n59484:37908,\n59485:37907,\n59486:37891,\n59487:37895,\n59488:37904,\n59489:37942,\n59490:37931,\n59491:37941,\n59492:37921,\n59493:37946,\n59494:37953,\n59495:37970,\n59496:37956,\n59497:37979,\n59498:37984,\n59499:37986,\n59500:37982,\n59501:37994,\n59502:37417,\n59503:38000,\n59504:38005,\n59505:38007,\n59506:38013,\n59507:37978,\n59508:38012,\n59509:38014,\n59510:38017,\n59511:38015,\n59512:38274,\n59513:38279,\n59514:38282,\n59515:38292,\n59516:38294,\n59517:38296,\n59518:38297,\n59520:38304,\n59521:38312,\n59522:38311,\n59523:38317,\n59524:38332,\n59525:38331,\n59526:38329,\n59527:38334,\n59528:38346,\n59529:28662,\n59530:38339,\n59531:38349,\n59532:38348,\n59533:38357,\n59534:38356,\n59535:38358,\n59536:38364,\n59537:38369,\n59538:38373,\n59539:38370,\n59540:38433,\n59541:38440,\n59542:38446,\n59543:38447,\n59544:38466,\n59545:38476,\n59546:38479,\n59547:38475,\n59548:38519,\n59549:38492,\n59550:38494,\n59551:38493,\n59552:38495,\n59553:38502,\n59554:38514,\n59555:38508,\n59556:38541,\n59557:38552,\n59558:38549,\n59559:38551,\n59560:38570,\n59561:38567,\n59562:38577,\n59563:38578,\n59564:38576,\n59565:38580,\n59566:38582,\n59567:38584,\n59568:38585,\n59569:38606,\n59570:38603,\n59571:38601,\n59572:38605,\n59573:35149,\n59574:38620,\n59575:38669,\n59576:38613,\n59577:38649,\n59578:38660,\n59579:38662,\n59580:38664,\n59581:38675,\n59582:38670,\n59583:38673,\n59584:38671,\n59585:38678,\n59586:38681,\n59587:38692,\n59588:38698,\n59589:38704,\n59590:38713,\n59591:38717,\n59592:38718,\n59593:38724,\n59594:38726,\n59595:38728,\n59596:38722,\n59597:38729,\n59598:38748,\n59599:38752,\n59600:38756,\n59601:38758,\n59602:38760,\n59603:21202,\n59604:38763,\n59605:38769,\n59606:38777,\n59607:38789,\n59608:38780,\n59609:38785,\n59610:38778,\n59611:38790,\n59612:38795,\n59613:38799,\n59614:38800,\n59615:38812,\n59616:38824,\n59617:38822,\n59618:38819,\n59619:38835,\n59620:38836,\n59621:38851,\n59622:38854,\n59623:38856,\n59624:38859,\n59625:38876,\n59626:38893,\n59627:40783,\n59628:38898,\n59629:31455,\n59630:38902,\n59631:38901,\n59632:38927,\n59633:38924,\n59634:38968,\n59635:38948,\n59636:38945,\n59637:38967,\n59638:38973,\n59639:38982,\n59640:38991,\n59641:38987,\n59642:39019,\n59643:39023,\n59644:39024,\n59712:39025,\n59713:39028,\n59714:39027,\n59715:39082,\n59716:39087,\n59717:39089,\n59718:39094,\n59719:39108,\n59720:39107,\n59721:39110,\n59722:39145,\n59723:39147,\n59724:39171,\n59725:39177,\n59726:39186,\n59727:39188,\n59728:39192,\n59729:39201,\n59730:39197,\n59731:39198,\n59732:39204,\n59733:39200,\n59734:39212,\n59735:39214,\n59736:39229,\n59737:39230,\n59738:39234,\n59739:39241,\n59740:39237,\n59741:39248,\n59742:39243,\n59743:39249,\n59744:39250,\n59745:39244,\n59746:39253,\n59747:39319,\n59748:39320,\n59749:39333,\n59750:39341,\n59751:39342,\n59752:39356,\n59753:39391,\n59754:39387,\n59755:39389,\n59756:39384,\n59757:39377,\n59758:39405,\n59759:39406,\n59760:39409,\n59761:39410,\n59762:39419,\n59763:39416,\n59764:39425,\n59765:39439,\n59766:39429,\n59767:39394,\n59768:39449,\n59769:39467,\n59770:39479,\n59771:39493,\n59772:39490,\n59773:39488,\n59774:39491,\n59776:39486,\n59777:39509,\n59778:39501,\n59779:39515,\n59780:39511,\n59781:39519,\n59782:39522,\n59783:39525,\n59784:39524,\n59785:39529,\n59786:39531,\n59787:39530,\n59788:39597,\n59789:39600,\n59790:39612,\n59791:39616,\n59792:39631,\n59793:39633,\n59794:39635,\n59795:39636,\n59796:39646,\n59797:39647,\n59798:39650,\n59799:39651,\n59800:39654,\n59801:39663,\n59802:39659,\n59803:39662,\n59804:39668,\n59805:39665,\n59806:39671,\n59807:39675,\n59808:39686,\n59809:39704,\n59810:39706,\n59811:39711,\n59812:39714,\n59813:39715,\n59814:39717,\n59815:39719,\n59816:39720,\n59817:39721,\n59818:39722,\n59819:39726,\n59820:39727,\n59821:39730,\n59822:39748,\n59823:39747,\n59824:39759,\n59825:39757,\n59826:39758,\n59827:39761,\n59828:39768,\n59829:39796,\n59830:39827,\n59831:39811,\n59832:39825,\n59833:39830,\n59834:39831,\n59835:39839,\n59836:39840,\n59837:39848,\n59838:39860,\n59839:39872,\n59840:39882,\n59841:39865,\n59842:39878,\n59843:39887,\n59844:39889,\n59845:39890,\n59846:39907,\n59847:39906,\n59848:39908,\n59849:39892,\n59850:39905,\n59851:39994,\n59852:39922,\n59853:39921,\n59854:39920,\n59855:39957,\n59856:39956,\n59857:39945,\n59858:39955,\n59859:39948,\n59860:39942,\n59861:39944,\n59862:39954,\n59863:39946,\n59864:39940,\n59865:39982,\n59866:39963,\n59867:39973,\n59868:39972,\n59869:39969,\n59870:39984,\n59871:40007,\n59872:39986,\n59873:40006,\n59874:39998,\n59875:40026,\n59876:40032,\n59877:40039,\n59878:40054,\n59879:40056,\n59880:40167,\n59881:40172,\n59882:40176,\n59883:40201,\n59884:40200,\n59885:40171,\n59886:40195,\n59887:40198,\n59888:40234,\n59889:40230,\n59890:40367,\n59891:40227,\n59892:40223,\n59893:40260,\n59894:40213,\n59895:40210,\n59896:40257,\n59897:40255,\n59898:40254,\n59899:40262,\n59900:40264,\n59968:40285,\n59969:40286,\n59970:40292,\n59971:40273,\n59972:40272,\n59973:40281,\n59974:40306,\n59975:40329,\n59976:40327,\n59977:40363,\n59978:40303,\n59979:40314,\n59980:40346,\n59981:40356,\n59982:40361,\n59983:40370,\n59984:40388,\n59985:40385,\n59986:40379,\n59987:40376,\n59988:40378,\n59989:40390,\n59990:40399,\n59991:40386,\n59992:40409,\n59993:40403,\n59994:40440,\n59995:40422,\n59996:40429,\n59997:40431,\n59998:40445,\n59999:40474,\n60000:40475,\n60001:40478,\n60002:40565,\n60003:40569,\n60004:40573,\n60005:40577,\n60006:40584,\n60007:40587,\n60008:40588,\n60009:40594,\n60010:40597,\n60011:40593,\n60012:40605,\n60013:40613,\n60014:40617,\n60015:40632,\n60016:40618,\n60017:40621,\n60018:38753,\n60019:40652,\n60020:40654,\n60021:40655,\n60022:40656,\n60023:40660,\n60024:40668,\n60025:40670,\n60026:40669,\n60027:40672,\n60028:40677,\n60029:40680,\n60030:40687,\n60032:40692,\n60033:40694,\n60034:40695,\n60035:40697,\n60036:40699,\n60037:40700,\n60038:40701,\n60039:40711,\n60040:40712,\n60041:30391,\n60042:40725,\n60043:40737,\n60044:40748,\n60045:40766,\n60046:40778,\n60047:40786,\n60048:40788,\n60049:40803,\n60050:40799,\n60051:40800,\n60052:40801,\n60053:40806,\n60054:40807,\n60055:40812,\n60056:40810,\n60057:40823,\n60058:40818,\n60059:40822,\n60060:40853,\n60061:40860,\n60062:40864,\n60063:22575,\n60064:27079,\n60065:36953,\n60066:29796,\n60067:20956,\n60068:29081,\n60736:32394,\n60737:35100,\n60738:37704,\n60739:37512,\n60740:34012,\n60741:20425,\n60742:28859,\n60743:26161,\n60744:26824,\n60745:37625,\n60746:26363,\n60747:24389,\n60748:20008,\n60749:20193,\n60750:20220,\n60751:20224,\n60752:20227,\n60753:20281,\n60754:20310,\n60755:20370,\n60756:20362,\n60757:20378,\n60758:20372,\n60759:20429,\n60760:20544,\n60761:20514,\n60762:20479,\n60763:20510,\n60764:20550,\n60765:20592,\n60766:20546,\n60767:20628,\n60768:20724,\n60769:20696,\n60770:20810,\n60771:20836,\n60772:20893,\n60773:20926,\n60774:20972,\n60775:21013,\n60776:21148,\n60777:21158,\n60778:21184,\n60779:21211,\n60780:21248,\n60781:21255,\n60782:21284,\n60783:21362,\n60784:21395,\n60785:21426,\n60786:21469,\n60787:64014,\n60788:21660,\n60789:21642,\n60790:21673,\n60791:21759,\n60792:21894,\n60793:22361,\n60794:22373,\n60795:22444,\n60796:22472,\n60797:22471,\n60798:64015,\n60800:64016,\n60801:22686,\n60802:22706,\n60803:22795,\n60804:22867,\n60805:22875,\n60806:22877,\n60807:22883,\n60808:22948,\n60809:22970,\n60810:23382,\n60811:23488,\n60812:29999,\n60813:23512,\n60814:23532,\n60815:23582,\n60816:23718,\n60817:23738,\n60818:23797,\n60819:23847,\n60820:23891,\n60821:64017,\n60822:23874,\n60823:23917,\n60824:23992,\n60825:23993,\n60826:24016,\n60827:24353,\n60828:24372,\n60829:24423,\n60830:24503,\n60831:24542,\n60832:24669,\n60833:24709,\n60834:24714,\n60835:24798,\n60836:24789,\n60837:24864,\n60838:24818,\n60839:24849,\n60840:24887,\n60841:24880,\n60842:24984,\n60843:25107,\n60844:25254,\n60845:25589,\n60846:25696,\n60847:25757,\n60848:25806,\n60849:25934,\n60850:26112,\n60851:26133,\n60852:26171,\n60853:26121,\n60854:26158,\n60855:26142,\n60856:26148,\n60857:26213,\n60858:26199,\n60859:26201,\n60860:64018,\n60861:26227,\n60862:26265,\n60863:26272,\n60864:26290,\n60865:26303,\n60866:26362,\n60867:26382,\n60868:63785,\n60869:26470,\n60870:26555,\n60871:26706,\n60872:26560,\n60873:26625,\n60874:26692,\n60875:26831,\n60876:64019,\n60877:26984,\n60878:64020,\n60879:27032,\n60880:27106,\n60881:27184,\n60882:27243,\n60883:27206,\n60884:27251,\n60885:27262,\n60886:27362,\n60887:27364,\n60888:27606,\n60889:27711,\n60890:27740,\n60891:27782,\n60892:27759,\n60893:27866,\n60894:27908,\n60895:28039,\n60896:28015,\n60897:28054,\n60898:28076,\n60899:28111,\n60900:28152,\n60901:28146,\n60902:28156,\n60903:28217,\n60904:28252,\n60905:28199,\n60906:28220,\n60907:28351,\n60908:28552,\n60909:28597,\n60910:28661,\n60911:28677,\n60912:28679,\n60913:28712,\n60914:28805,\n60915:28843,\n60916:28943,\n60917:28932,\n60918:29020,\n60919:28998,\n60920:28999,\n60921:64021,\n60922:29121,\n60923:29182,\n60924:29361,\n60992:29374,\n60993:29476,\n60994:64022,\n60995:29559,\n60996:29629,\n60997:29641,\n60998:29654,\n60999:29667,\n61000:29650,\n61001:29703,\n61002:29685,\n61003:29734,\n61004:29738,\n61005:29737,\n61006:29742,\n61007:29794,\n61008:29833,\n61009:29855,\n61010:29953,\n61011:30063,\n61012:30338,\n61013:30364,\n61014:30366,\n61015:30363,\n61016:30374,\n61017:64023,\n61018:30534,\n61019:21167,\n61020:30753,\n61021:30798,\n61022:30820,\n61023:30842,\n61024:31024,\n61025:64024,\n61026:64025,\n61027:64026,\n61028:31124,\n61029:64027,\n61030:31131,\n61031:31441,\n61032:31463,\n61033:64028,\n61034:31467,\n61035:31646,\n61036:64029,\n61037:32072,\n61038:32092,\n61039:32183,\n61040:32160,\n61041:32214,\n61042:32338,\n61043:32583,\n61044:32673,\n61045:64030,\n61046:33537,\n61047:33634,\n61048:33663,\n61049:33735,\n61050:33782,\n61051:33864,\n61052:33972,\n61053:34131,\n61054:34137,\n61056:34155,\n61057:64031,\n61058:34224,\n61059:64032,\n61060:64033,\n61061:34823,\n61062:35061,\n61063:35346,\n61064:35383,\n61065:35449,\n61066:35495,\n61067:35518,\n61068:35551,\n61069:64034,\n61070:35574,\n61071:35667,\n61072:35711,\n61073:36080,\n61074:36084,\n61075:36114,\n61076:36214,\n61077:64035,\n61078:36559,\n61079:64036,\n61080:64037,\n61081:36967,\n61082:37086,\n61083:64038,\n61084:37141,\n61085:37159,\n61086:37338,\n61087:37335,\n61088:37342,\n61089:37357,\n61090:37358,\n61091:37348,\n61092:37349,\n61093:37382,\n61094:37392,\n61095:37386,\n61096:37434,\n61097:37440,\n61098:37436,\n61099:37454,\n61100:37465,\n61101:37457,\n61102:37433,\n61103:37479,\n61104:37543,\n61105:37495,\n61106:37496,\n61107:37607,\n61108:37591,\n61109:37593,\n61110:37584,\n61111:64039,\n61112:37589,\n61113:37600,\n61114:37587,\n61115:37669,\n61116:37665,\n61117:37627,\n61118:64040,\n61119:37662,\n61120:37631,\n61121:37661,\n61122:37634,\n61123:37744,\n61124:37719,\n61125:37796,\n61126:37830,\n61127:37854,\n61128:37880,\n61129:37937,\n61130:37957,\n61131:37960,\n61132:38290,\n61133:63964,\n61134:64041,\n61135:38557,\n61136:38575,\n61137:38707,\n61138:38715,\n61139:38723,\n61140:38733,\n61141:38735,\n61142:38737,\n61143:38741,\n61144:38999,\n61145:39013,\n61146:64042,\n61147:64043,\n61148:39207,\n61149:64044,\n61150:39326,\n61151:39502,\n61152:39641,\n61153:39644,\n61154:39797,\n61155:39794,\n61156:39823,\n61157:39857,\n61158:39867,\n61159:39936,\n61160:40304,\n61161:40299,\n61162:64045,\n61163:40473,\n61164:40657,\n61167:8560,\n61168:8561,\n61169:8562,\n61170:8563,\n61171:8564,\n61172:8565,\n61173:8566,\n61174:8567,\n61175:8568,\n61176:8569,\n61177:65506,\n61178:65508,\n61179:65287,\n61180:65282,\n61504:57344,\n61505:57345,\n61506:57346,\n61507:57347,\n61508:57348,\n61509:57349,\n61510:57350,\n61511:57351,\n61512:57352,\n61513:57353,\n61514:57354,\n61515:57355,\n61516:57356,\n61517:57357,\n61518:57358,\n61519:57359,\n61520:57360,\n61521:57361,\n61522:57362,\n61523:57363,\n61524:57364,\n61525:57365,\n61526:57366,\n61527:57367,\n61528:57368,\n61529:57369,\n61530:57370,\n61531:57371,\n61532:57372,\n61533:57373,\n61534:57374,\n61535:57375,\n61536:57376,\n61537:57377,\n61538:57378,\n61539:57379,\n61540:57380,\n61541:57381,\n61542:57382,\n61543:57383,\n61544:57384,\n61545:57385,\n61546:57386,\n61547:57387,\n61548:57388,\n61549:57389,\n61550:57390,\n61551:57391,\n61552:57392,\n61553:57393,\n61554:57394,\n61555:57395,\n61556:57396,\n61557:57397,\n61558:57398,\n61559:57399,\n61560:57400,\n61561:57401,\n61562:57402,\n61563:57403,\n61564:57404,\n61565:57405,\n61566:57406,\n61568:57407,\n61569:57408,\n61570:57409,\n61571:57410,\n61572:57411,\n61573:57412,\n61574:57413,\n61575:57414,\n61576:57415,\n61577:57416,\n61578:57417,\n61579:57418,\n61580:57419,\n61581:57420,\n61582:57421,\n61583:57422,\n61584:57423,\n61585:57424,\n61586:57425,\n61587:57426,\n61588:57427,\n61589:57428,\n61590:57429,\n61591:57430,\n61592:57431,\n61593:57432,\n61594:57433,\n61595:57434,\n61596:57435,\n61597:57436,\n61598:57437,\n61599:57438,\n61600:57439,\n61601:57440,\n61602:57441,\n61603:57442,\n61604:57443,\n61605:57444,\n61606:57445,\n61607:57446,\n61608:57447,\n61609:57448,\n61610:57449,\n61611:57450,\n61612:57451,\n61613:57452,\n61614:57453,\n61615:57454,\n61616:57455,\n61617:57456,\n61618:57457,\n61619:57458,\n61620:57459,\n61621:57460,\n61622:57461,\n61623:57462,\n61624:57463,\n61625:57464,\n61626:57465,\n61627:57466,\n61628:57467,\n61629:57468,\n61630:57469,\n61631:57470,\n61632:57471,\n61633:57472,\n61634:57473,\n61635:57474,\n61636:57475,\n61637:57476,\n61638:57477,\n61639:57478,\n61640:57479,\n61641:57480,\n61642:57481,\n61643:57482,\n61644:57483,\n61645:57484,\n61646:57485,\n61647:57486,\n61648:57487,\n61649:57488,\n61650:57489,\n61651:57490,\n61652:57491,\n61653:57492,\n61654:57493,\n61655:57494,\n61656:57495,\n61657:57496,\n61658:57497,\n61659:57498,\n61660:57499,\n61661:57500,\n61662:57501,\n61663:57502,\n61664:57503,\n61665:57504,\n61666:57505,\n61667:57506,\n61668:57507,\n61669:57508,\n61670:57509,\n61671:57510,\n61672:57511,\n61673:57512,\n61674:57513,\n61675:57514,\n61676:57515,\n61677:57516,\n61678:57517,\n61679:57518,\n61680:57519,\n61681:57520,\n61682:57521,\n61683:57522,\n61684:57523,\n61685:57524,\n61686:57525,\n61687:57526,\n61688:57527,\n61689:57528,\n61690:57529,\n61691:57530,\n61692:57531,\n61760:57532,\n61761:57533,\n61762:57534,\n61763:57535,\n61764:57536,\n61765:57537,\n61766:57538,\n61767:57539,\n61768:57540,\n61769:57541,\n61770:57542,\n61771:57543,\n61772:57544,\n61773:57545,\n61774:57546,\n61775:57547,\n61776:57548,\n61777:57549,\n61778:57550,\n61779:57551,\n61780:57552,\n61781:57553,\n61782:57554,\n61783:57555,\n61784:57556,\n61785:57557,\n61786:57558,\n61787:57559,\n61788:57560,\n61789:57561,\n61790:57562,\n61791:57563,\n61792:57564,\n61793:57565,\n61794:57566,\n61795:57567,\n61796:57568,\n61797:57569,\n61798:57570,\n61799:57571,\n61800:57572,\n61801:57573,\n61802:57574,\n61803:57575,\n61804:57576,\n61805:57577,\n61806:57578,\n61807:57579,\n61808:57580,\n61809:57581,\n61810:57582,\n61811:57583,\n61812:57584,\n61813:57585,\n61814:57586,\n61815:57587,\n61816:57588,\n61817:57589,\n61818:57590,\n61819:57591,\n61820:57592,\n61821:57593,\n61822:57594,\n61824:57595,\n61825:57596,\n61826:57597,\n61827:57598,\n61828:57599,\n61829:57600,\n61830:57601,\n61831:57602,\n61832:57603,\n61833:57604,\n61834:57605,\n61835:57606,\n61836:57607,\n61837:57608,\n61838:57609,\n61839:57610,\n61840:57611,\n61841:57612,\n61842:57613,\n61843:57614,\n61844:57615,\n61845:57616,\n61846:57617,\n61847:57618,\n61848:57619,\n61849:57620,\n61850:57621,\n61851:57622,\n61852:57623,\n61853:57624,\n61854:57625,\n61855:57626,\n61856:57627,\n61857:57628,\n61858:57629,\n61859:57630,\n61860:57631,\n61861:57632,\n61862:57633,\n61863:57634,\n61864:57635,\n61865:57636,\n61866:57637,\n61867:57638,\n61868:57639,\n61869:57640,\n61870:57641,\n61871:57642,\n61872:57643,\n61873:57644,\n61874:57645,\n61875:57646,\n61876:57647,\n61877:57648,\n61878:57649,\n61879:57650,\n61880:57651,\n61881:57652,\n61882:57653,\n61883:57654,\n61884:57655,\n61885:57656,\n61886:57657,\n61887:57658,\n61888:57659,\n61889:57660,\n61890:57661,\n61891:57662,\n61892:57663,\n61893:57664,\n61894:57665,\n61895:57666,\n61896:57667,\n61897:57668,\n61898:57669,\n61899:57670,\n61900:57671,\n61901:57672,\n61902:57673,\n61903:57674,\n61904:57675,\n61905:57676,\n61906:57677,\n61907:57678,\n61908:57679,\n61909:57680,\n61910:57681,\n61911:57682,\n61912:57683,\n61913:57684,\n61914:57685,\n61915:57686,\n61916:57687,\n61917:57688,\n61918:57689,\n61919:57690,\n61920:57691,\n61921:57692,\n61922:57693,\n61923:57694,\n61924:57695,\n61925:57696,\n61926:57697,\n61927:57698,\n61928:57699,\n61929:57700,\n61930:57701,\n61931:57702,\n61932:57703,\n61933:57704,\n61934:57705,\n61935:57706,\n61936:57707,\n61937:57708,\n61938:57709,\n61939:57710,\n61940:57711,\n61941:57712,\n61942:57713,\n61943:57714,\n61944:57715,\n61945:57716,\n61946:57717,\n61947:57718,\n61948:57719,\n62016:57720,\n62017:57721,\n62018:57722,\n62019:57723,\n62020:57724,\n62021:57725,\n62022:57726,\n62023:57727,\n62024:57728,\n62025:57729,\n62026:57730,\n62027:57731,\n62028:57732,\n62029:57733,\n62030:57734,\n62031:57735,\n62032:57736,\n62033:57737,\n62034:57738,\n62035:57739,\n62036:57740,\n62037:57741,\n62038:57742,\n62039:57743,\n62040:57744,\n62041:57745,\n62042:57746,\n62043:57747,\n62044:57748,\n62045:57749,\n62046:57750,\n62047:57751,\n62048:57752,\n62049:57753,\n62050:57754,\n62051:57755,\n62052:57756,\n62053:57757,\n62054:57758,\n62055:57759,\n62056:57760,\n62057:57761,\n62058:57762,\n62059:57763,\n62060:57764,\n62061:57765,\n62062:57766,\n62063:57767,\n62064:57768,\n62065:57769,\n62066:57770,\n62067:57771,\n62068:57772,\n62069:57773,\n62070:57774,\n62071:57775,\n62072:57776,\n62073:57777,\n62074:57778,\n62075:57779,\n62076:57780,\n62077:57781,\n62078:57782,\n62080:57783,\n62081:57784,\n62082:57785,\n62083:57786,\n62084:57787,\n62085:57788,\n62086:57789,\n62087:57790,\n62088:57791,\n62089:57792,\n62090:57793,\n62091:57794,\n62092:57795,\n62093:57796,\n62094:57797,\n62095:57798,\n62096:57799,\n62097:57800,\n62098:57801,\n62099:57802,\n62100:57803,\n62101:57804,\n62102:57805,\n62103:57806,\n62104:57807,\n62105:57808,\n62106:57809,\n62107:57810,\n62108:57811,\n62109:57812,\n62110:57813,\n62111:57814,\n62112:57815,\n62113:57816,\n62114:57817,\n62115:57818,\n62116:57819,\n62117:57820,\n62118:57821,\n62119:57822,\n62120:57823,\n62121:57824,\n62122:57825,\n62123:57826,\n62124:57827,\n62125:57828,\n62126:57829,\n62127:57830,\n62128:57831,\n62129:57832,\n62130:57833,\n62131:57834,\n62132:57835,\n62133:57836,\n62134:57837,\n62135:57838,\n62136:57839,\n62137:57840,\n62138:57841,\n62139:57842,\n62140:57843,\n62141:57844,\n62142:57845,\n62143:57846,\n62144:57847,\n62145:57848,\n62146:57849,\n62147:57850,\n62148:57851,\n62149:57852,\n62150:57853,\n62151:57854,\n62152:57855,\n62153:57856,\n62154:57857,\n62155:57858,\n62156:57859,\n62157:57860,\n62158:57861,\n62159:57862,\n62160:57863,\n62161:57864,\n62162:57865,\n62163:57866,\n62164:57867,\n62165:57868,\n62166:57869,\n62167:57870,\n62168:57871,\n62169:57872,\n62170:57873,\n62171:57874,\n62172:57875,\n62173:57876,\n62174:57877,\n62175:57878,\n62176:57879,\n62177:57880,\n62178:57881,\n62179:57882,\n62180:57883,\n62181:57884,\n62182:57885,\n62183:57886,\n62184:57887,\n62185:57888,\n62186:57889,\n62187:57890,\n62188:57891,\n62189:57892,\n62190:57893,\n62191:57894,\n62192:57895,\n62193:57896,\n62194:57897,\n62195:57898,\n62196:57899,\n62197:57900,\n62198:57901,\n62199:57902,\n62200:57903,\n62201:57904,\n62202:57905,\n62203:57906,\n62204:57907,\n62272:57908,\n62273:57909,\n62274:57910,\n62275:57911,\n62276:57912,\n62277:57913,\n62278:57914,\n62279:57915,\n62280:57916,\n62281:57917,\n62282:57918,\n62283:57919,\n62284:57920,\n62285:57921,\n62286:57922,\n62287:57923,\n62288:57924,\n62289:57925,\n62290:57926,\n62291:57927,\n62292:57928,\n62293:57929,\n62294:57930,\n62295:57931,\n62296:57932,\n62297:57933,\n62298:57934,\n62299:57935,\n62300:57936,\n62301:57937,\n62302:57938,\n62303:57939,\n62304:57940,\n62305:57941,\n62306:57942,\n62307:57943,\n62308:57944,\n62309:57945,\n62310:57946,\n62311:57947,\n62312:57948,\n62313:57949,\n62314:57950,\n62315:57951,\n62316:57952,\n62317:57953,\n62318:57954,\n62319:57955,\n62320:57956,\n62321:57957,\n62322:57958,\n62323:57959,\n62324:57960,\n62325:57961,\n62326:57962,\n62327:57963,\n62328:57964,\n62329:57965,\n62330:57966,\n62331:57967,\n62332:57968,\n62333:57969,\n62334:57970,\n62336:57971,\n62337:57972,\n62338:57973,\n62339:57974,\n62340:57975,\n62341:57976,\n62342:57977,\n62343:57978,\n62344:57979,\n62345:57980,\n62346:57981,\n62347:57982,\n62348:57983,\n62349:57984,\n62350:57985,\n62351:57986,\n62352:57987,\n62353:57988,\n62354:57989,\n62355:57990,\n62356:57991,\n62357:57992,\n62358:57993,\n62359:57994,\n62360:57995,\n62361:57996,\n62362:57997,\n62363:57998,\n62364:57999,\n62365:58000,\n62366:58001,\n62367:58002,\n62368:58003,\n62369:58004,\n62370:58005,\n62371:58006,\n62372:58007,\n62373:58008,\n62374:58009,\n62375:58010,\n62376:58011,\n62377:58012,\n62378:58013,\n62379:58014,\n62380:58015,\n62381:58016,\n62382:58017,\n62383:58018,\n62384:58019,\n62385:58020,\n62386:58021,\n62387:58022,\n62388:58023,\n62389:58024,\n62390:58025,\n62391:58026,\n62392:58027,\n62393:58028,\n62394:58029,\n62395:58030,\n62396:58031,\n62397:58032,\n62398:58033,\n62399:58034,\n62400:58035,\n62401:58036,\n62402:58037,\n62403:58038,\n62404:58039,\n62405:58040,\n62406:58041,\n62407:58042,\n62408:58043,\n62409:58044,\n62410:58045,\n62411:58046,\n62412:58047,\n62413:58048,\n62414:58049,\n62415:58050,\n62416:58051,\n62417:58052,\n62418:58053,\n62419:58054,\n62420:58055,\n62421:58056,\n62422:58057,\n62423:58058,\n62424:58059,\n62425:58060,\n62426:58061,\n62427:58062,\n62428:58063,\n62429:58064,\n62430:58065,\n62431:58066,\n62432:58067,\n62433:58068,\n62434:58069,\n62435:58070,\n62436:58071,\n62437:58072,\n62438:58073,\n62439:58074,\n62440:58075,\n62441:58076,\n62442:58077,\n62443:58078,\n62444:58079,\n62445:58080,\n62446:58081,\n62447:58082,\n62448:58083,\n62449:58084,\n62450:58085,\n62451:58086,\n62452:58087,\n62453:58088,\n62454:58089,\n62455:58090,\n62456:58091,\n62457:58092,\n62458:58093,\n62459:58094,\n62460:58095,\n62528:58096,\n62529:58097,\n62530:58098,\n62531:58099,\n62532:58100,\n62533:58101,\n62534:58102,\n62535:58103,\n62536:58104,\n62537:58105,\n62538:58106,\n62539:58107,\n62540:58108,\n62541:58109,\n62542:58110,\n62543:58111,\n62544:58112,\n62545:58113,\n62546:58114,\n62547:58115,\n62548:58116,\n62549:58117,\n62550:58118,\n62551:58119,\n62552:58120,\n62553:58121,\n62554:58122,\n62555:58123,\n62556:58124,\n62557:58125,\n62558:58126,\n62559:58127,\n62560:58128,\n62561:58129,\n62562:58130,\n62563:58131,\n62564:58132,\n62565:58133,\n62566:58134,\n62567:58135,\n62568:58136,\n62569:58137,\n62570:58138,\n62571:58139,\n62572:58140,\n62573:58141,\n62574:58142,\n62575:58143,\n62576:58144,\n62577:58145,\n62578:58146,\n62579:58147,\n62580:58148,\n62581:58149,\n62582:58150,\n62583:58151,\n62584:58152,\n62585:58153,\n62586:58154,\n62587:58155,\n62588:58156,\n62589:58157,\n62590:58158,\n62592:58159,\n62593:58160,\n62594:58161,\n62595:58162,\n62596:58163,\n62597:58164,\n62598:58165,\n62599:58166,\n62600:58167,\n62601:58168,\n62602:58169,\n62603:58170,\n62604:58171,\n62605:58172,\n62606:58173,\n62607:58174,\n62608:58175,\n62609:58176,\n62610:58177,\n62611:58178,\n62612:58179,\n62613:58180,\n62614:58181,\n62615:58182,\n62616:58183,\n62617:58184,\n62618:58185,\n62619:58186,\n62620:58187,\n62621:58188,\n62622:58189,\n62623:58190,\n62624:58191,\n62625:58192,\n62626:58193,\n62627:58194,\n62628:58195,\n62629:58196,\n62630:58197,\n62631:58198,\n62632:58199,\n62633:58200,\n62634:58201,\n62635:58202,\n62636:58203,\n62637:58204,\n62638:58205,\n62639:58206,\n62640:58207,\n62641:58208,\n62642:58209,\n62643:58210,\n62644:58211,\n62645:58212,\n62646:58213,\n62647:58214,\n62648:58215,\n62649:58216,\n62650:58217,\n62651:58218,\n62652:58219,\n62653:58220,\n62654:58221,\n62655:58222,\n62656:58223,\n62657:58224,\n62658:58225,\n62659:58226,\n62660:58227,\n62661:58228,\n62662:58229,\n62663:58230,\n62664:58231,\n62665:58232,\n62666:58233,\n62667:58234,\n62668:58235,\n62669:58236,\n62670:58237,\n62671:58238,\n62672:58239,\n62673:58240,\n62674:58241,\n62675:58242,\n62676:58243,\n62677:58244,\n62678:58245,\n62679:58246,\n62680:58247,\n62681:58248,\n62682:58249,\n62683:58250,\n62684:58251,\n62685:58252,\n62686:58253,\n62687:58254,\n62688:58255,\n62689:58256,\n62690:58257,\n62691:58258,\n62692:58259,\n62693:58260,\n62694:58261,\n62695:58262,\n62696:58263,\n62697:58264,\n62698:58265,\n62699:58266,\n62700:58267,\n62701:58268,\n62702:58269,\n62703:58270,\n62704:58271,\n62705:58272,\n62706:58273,\n62707:58274,\n62708:58275,\n62709:58276,\n62710:58277,\n62711:58278,\n62712:58279,\n62713:58280,\n62714:58281,\n62715:58282,\n62716:58283,\n62784:58284,\n62785:58285,\n62786:58286,\n62787:58287,\n62788:58288,\n62789:58289,\n62790:58290,\n62791:58291,\n62792:58292,\n62793:58293,\n62794:58294,\n62795:58295,\n62796:58296,\n62797:58297,\n62798:58298,\n62799:58299,\n62800:58300,\n62801:58301,\n62802:58302,\n62803:58303,\n62804:58304,\n62805:58305,\n62806:58306,\n62807:58307,\n62808:58308,\n62809:58309,\n62810:58310,\n62811:58311,\n62812:58312,\n62813:58313,\n62814:58314,\n62815:58315,\n62816:58316,\n62817:58317,\n62818:58318,\n62819:58319,\n62820:58320,\n62821:58321,\n62822:58322,\n62823:58323,\n62824:58324,\n62825:58325,\n62826:58326,\n62827:58327,\n62828:58328,\n62829:58329,\n62830:58330,\n62831:58331,\n62832:58332,\n62833:58333,\n62834:58334,\n62835:58335,\n62836:58336,\n62837:58337,\n62838:58338,\n62839:58339,\n62840:58340,\n62841:58341,\n62842:58342,\n62843:58343,\n62844:58344,\n62845:58345,\n62846:58346,\n62848:58347,\n62849:58348,\n62850:58349,\n62851:58350,\n62852:58351,\n62853:58352,\n62854:58353,\n62855:58354,\n62856:58355,\n62857:58356,\n62858:58357,\n62859:58358,\n62860:58359,\n62861:58360,\n62862:58361,\n62863:58362,\n62864:58363,\n62865:58364,\n62866:58365,\n62867:58366,\n62868:58367,\n62869:58368,\n62870:58369,\n62871:58370,\n62872:58371,\n62873:58372,\n62874:58373,\n62875:58374,\n62876:58375,\n62877:58376,\n62878:58377,\n62879:58378,\n62880:58379,\n62881:58380,\n62882:58381,\n62883:58382,\n62884:58383,\n62885:58384,\n62886:58385,\n62887:58386,\n62888:58387,\n62889:58388,\n62890:58389,\n62891:58390,\n62892:58391,\n62893:58392,\n62894:58393,\n62895:58394,\n62896:58395,\n62897:58396,\n62898:58397,\n62899:58398,\n62900:58399,\n62901:58400,\n62902:58401,\n62903:58402,\n62904:58403,\n62905:58404,\n62906:58405,\n62907:58406,\n62908:58407,\n62909:58408,\n62910:58409,\n62911:58410,\n62912:58411,\n62913:58412,\n62914:58413,\n62915:58414,\n62916:58415,\n62917:58416,\n62918:58417,\n62919:58418,\n62920:58419,\n62921:58420,\n62922:58421,\n62923:58422,\n62924:58423,\n62925:58424,\n62926:58425,\n62927:58426,\n62928:58427,\n62929:58428,\n62930:58429,\n62931:58430,\n62932:58431,\n62933:58432,\n62934:58433,\n62935:58434,\n62936:58435,\n62937:58436,\n62938:58437,\n62939:58438,\n62940:58439,\n62941:58440,\n62942:58441,\n62943:58442,\n62944:58443,\n62945:58444,\n62946:58445,\n62947:58446,\n62948:58447,\n62949:58448,\n62950:58449,\n62951:58450,\n62952:58451,\n62953:58452,\n62954:58453,\n62955:58454,\n62956:58455,\n62957:58456,\n62958:58457,\n62959:58458,\n62960:58459,\n62961:58460,\n62962:58461,\n62963:58462,\n62964:58463,\n62965:58464,\n62966:58465,\n62967:58466,\n62968:58467,\n62969:58468,\n62970:58469,\n62971:58470,\n62972:58471,\n63040:58472,\n63041:58473,\n63042:58474,\n63043:58475,\n63044:58476,\n63045:58477,\n63046:58478,\n63047:58479,\n63048:58480,\n63049:58481,\n63050:58482,\n63051:58483,\n63052:58484,\n63053:58485,\n63054:58486,\n63055:58487,\n63056:58488,\n63057:58489,\n63058:58490,\n63059:58491,\n63060:58492,\n63061:58493,\n63062:58494,\n63063:58495,\n63064:58496,\n63065:58497,\n63066:58498,\n63067:58499,\n63068:58500,\n63069:58501,\n63070:58502,\n63071:58503,\n63072:58504,\n63073:58505,\n63074:58506,\n63075:58507,\n63076:58508,\n63077:58509,\n63078:58510,\n63079:58511,\n63080:58512,\n63081:58513,\n63082:58514,\n63083:58515,\n63084:58516,\n63085:58517,\n63086:58518,\n63087:58519,\n63088:58520,\n63089:58521,\n63090:58522,\n63091:58523,\n63092:58524,\n63093:58525,\n63094:58526,\n63095:58527,\n63096:58528,\n63097:58529,\n63098:58530,\n63099:58531,\n63100:58532,\n63101:58533,\n63102:58534,\n63104:58535,\n63105:58536,\n63106:58537,\n63107:58538,\n63108:58539,\n63109:58540,\n63110:58541,\n63111:58542,\n63112:58543,\n63113:58544,\n63114:58545,\n63115:58546,\n63116:58547,\n63117:58548,\n63118:58549,\n63119:58550,\n63120:58551,\n63121:58552,\n63122:58553,\n63123:58554,\n63124:58555,\n63125:58556,\n63126:58557,\n63127:58558,\n63128:58559,\n63129:58560,\n63130:58561,\n63131:58562,\n63132:58563,\n63133:58564,\n63134:58565,\n63135:58566,\n63136:58567,\n63137:58568,\n63138:58569,\n63139:58570,\n63140:58571,\n63141:58572,\n63142:58573,\n63143:58574,\n63144:58575,\n63145:58576,\n63146:58577,\n63147:58578,\n63148:58579,\n63149:58580,\n63150:58581,\n63151:58582,\n63152:58583,\n63153:58584,\n63154:58585,\n63155:58586,\n63156:58587,\n63157:58588,\n63158:58589,\n63159:58590,\n63160:58591,\n63161:58592,\n63162:58593,\n63163:58594,\n63164:58595,\n63165:58596,\n63166:58597,\n63167:58598,\n63168:58599,\n63169:58600,\n63170:58601,\n63171:58602,\n63172:58603,\n63173:58604,\n63174:58605,\n63175:58606,\n63176:58607,\n63177:58608,\n63178:58609,\n63179:58610,\n63180:58611,\n63181:58612,\n63182:58613,\n63183:58614,\n63184:58615,\n63185:58616,\n63186:58617,\n63187:58618,\n63188:58619,\n63189:58620,\n63190:58621,\n63191:58622,\n63192:58623,\n63193:58624,\n63194:58625,\n63195:58626,\n63196:58627,\n63197:58628,\n63198:58629,\n63199:58630,\n63200:58631,\n63201:58632,\n63202:58633,\n63203:58634,\n63204:58635,\n63205:58636,\n63206:58637,\n63207:58638,\n63208:58639,\n63209:58640,\n63210:58641,\n63211:58642,\n63212:58643,\n63213:58644,\n63214:58645,\n63215:58646,\n63216:58647,\n63217:58648,\n63218:58649,\n63219:58650,\n63220:58651,\n63221:58652,\n63222:58653,\n63223:58654,\n63224:58655,\n63225:58656,\n63226:58657,\n63227:58658,\n63228:58659,\n63296:58660,\n63297:58661,\n63298:58662,\n63299:58663,\n63300:58664,\n63301:58665,\n63302:58666,\n63303:58667,\n63304:58668,\n63305:58669,\n63306:58670,\n63307:58671,\n63308:58672,\n63309:58673,\n63310:58674,\n63311:58675,\n63312:58676,\n63313:58677,\n63314:58678,\n63315:58679,\n63316:58680,\n63317:58681,\n63318:58682,\n63319:58683,\n63320:58684,\n63321:58685,\n63322:58686,\n63323:58687,\n63324:58688,\n63325:58689,\n63326:58690,\n63327:58691,\n63328:58692,\n63329:58693,\n63330:58694,\n63331:58695,\n63332:58696,\n63333:58697,\n63334:58698,\n63335:58699,\n63336:58700,\n63337:58701,\n63338:58702,\n63339:58703,\n63340:58704,\n63341:58705,\n63342:58706,\n63343:58707,\n63344:58708,\n63345:58709,\n63346:58710,\n63347:58711,\n63348:58712,\n63349:58713,\n63350:58714,\n63351:58715,\n63352:58716,\n63353:58717,\n63354:58718,\n63355:58719,\n63356:58720,\n63357:58721,\n63358:58722,\n63360:58723,\n63361:58724,\n63362:58725,\n63363:58726,\n63364:58727,\n63365:58728,\n63366:58729,\n63367:58730,\n63368:58731,\n63369:58732,\n63370:58733,\n63371:58734,\n63372:58735,\n63373:58736,\n63374:58737,\n63375:58738,\n63376:58739,\n63377:58740,\n63378:58741,\n63379:58742,\n63380:58743,\n63381:58744,\n63382:58745,\n63383:58746,\n63384:58747,\n63385:58748,\n63386:58749,\n63387:58750,\n63388:58751,\n63389:58752,\n63390:58753,\n63391:58754,\n63392:58755,\n63393:58756,\n63394:58757,\n63395:58758,\n63396:58759,\n63397:58760,\n63398:58761,\n63399:58762,\n63400:58763,\n63401:58764,\n63402:58765,\n63403:58766,\n63404:58767,\n63405:58768,\n63406:58769,\n63407:58770,\n63408:58771,\n63409:58772,\n63410:58773,\n63411:58774,\n63412:58775,\n63413:58776,\n63414:58777,\n63415:58778,\n63416:58779,\n63417:58780,\n63418:58781,\n63419:58782,\n63420:58783,\n63421:58784,\n63422:58785,\n63423:58786,\n63424:58787,\n63425:58788,\n63426:58789,\n63427:58790,\n63428:58791,\n63429:58792,\n63430:58793,\n63431:58794,\n63432:58795,\n63433:58796,\n63434:58797,\n63435:58798,\n63436:58799,\n63437:58800,\n63438:58801,\n63439:58802,\n63440:58803,\n63441:58804,\n63442:58805,\n63443:58806,\n63444:58807,\n63445:58808,\n63446:58809,\n63447:58810,\n63448:58811,\n63449:58812,\n63450:58813,\n63451:58814,\n63452:58815,\n63453:58816,\n63454:58817,\n63455:58818,\n63456:58819,\n63457:58820,\n63458:58821,\n63459:58822,\n63460:58823,\n63461:58824,\n63462:58825,\n63463:58826,\n63464:58827,\n63465:58828,\n63466:58829,\n63467:58830,\n63468:58831,\n63469:58832,\n63470:58833,\n63471:58834,\n63472:58835,\n63473:58836,\n63474:58837,\n63475:58838,\n63476:58839,\n63477:58840,\n63478:58841,\n63479:58842,\n63480:58843,\n63481:58844,\n63482:58845,\n63483:58846,\n63484:58847,\n63552:58848,\n63553:58849,\n63554:58850,\n63555:58851,\n63556:58852,\n63557:58853,\n63558:58854,\n63559:58855,\n63560:58856,\n63561:58857,\n63562:58858,\n63563:58859,\n63564:58860,\n63565:58861,\n63566:58862,\n63567:58863,\n63568:58864,\n63569:58865,\n63570:58866,\n63571:58867,\n63572:58868,\n63573:58869,\n63574:58870,\n63575:58871,\n63576:58872,\n63577:58873,\n63578:58874,\n63579:58875,\n63580:58876,\n63581:58877,\n63582:58878,\n63583:58879,\n63584:58880,\n63585:58881,\n63586:58882,\n63587:58883,\n63588:58884,\n63589:58885,\n63590:58886,\n63591:58887,\n63592:58888,\n63593:58889,\n63594:58890,\n63595:58891,\n63596:58892,\n63597:58893,\n63598:58894,\n63599:58895,\n63600:58896,\n63601:58897,\n63602:58898,\n63603:58899,\n63604:58900,\n63605:58901,\n63606:58902,\n63607:58903,\n63608:58904,\n63609:58905,\n63610:58906,\n63611:58907,\n63612:58908,\n63613:58909,\n63614:58910,\n63616:58911,\n63617:58912,\n63618:58913,\n63619:58914,\n63620:58915,\n63621:58916,\n63622:58917,\n63623:58918,\n63624:58919,\n63625:58920,\n63626:58921,\n63627:58922,\n63628:58923,\n63629:58924,\n63630:58925,\n63631:58926,\n63632:58927,\n63633:58928,\n63634:58929,\n63635:58930,\n63636:58931,\n63637:58932,\n63638:58933,\n63639:58934,\n63640:58935,\n63641:58936,\n63642:58937,\n63643:58938,\n63644:58939,\n63645:58940,\n63646:58941,\n63647:58942,\n63648:58943,\n63649:58944,\n63650:58945,\n63651:58946,\n63652:58947,\n63653:58948,\n63654:58949,\n63655:58950,\n63656:58951,\n63657:58952,\n63658:58953,\n63659:58954,\n63660:58955,\n63661:58956,\n63662:58957,\n63663:58958,\n63664:58959,\n63665:58960,\n63666:58961,\n63667:58962,\n63668:58963,\n63669:58964,\n63670:58965,\n63671:58966,\n63672:58967,\n63673:58968,\n63674:58969,\n63675:58970,\n63676:58971,\n63677:58972,\n63678:58973,\n63679:58974,\n63680:58975,\n63681:58976,\n63682:58977,\n63683:58978,\n63684:58979,\n63685:58980,\n63686:58981,\n63687:58982,\n63688:58983,\n63689:58984,\n63690:58985,\n63691:58986,\n63692:58987,\n63693:58988,\n63694:58989,\n63695:58990,\n63696:58991,\n63697:58992,\n63698:58993,\n63699:58994,\n63700:58995,\n63701:58996,\n63702:58997,\n63703:58998,\n63704:58999,\n63705:59000,\n63706:59001,\n63707:59002,\n63708:59003,\n63709:59004,\n63710:59005,\n63711:59006,\n63712:59007,\n63713:59008,\n63714:59009,\n63715:59010,\n63716:59011,\n63717:59012,\n63718:59013,\n63719:59014,\n63720:59015,\n63721:59016,\n63722:59017,\n63723:59018,\n63724:59019,\n63725:59020,\n63726:59021,\n63727:59022,\n63728:59023,\n63729:59024,\n63730:59025,\n63731:59026,\n63732:59027,\n63733:59028,\n63734:59029,\n63735:59030,\n63736:59031,\n63737:59032,\n63738:59033,\n63739:59034,\n63740:59035,\n64064:8560,\n64065:8561,\n64066:8562,\n64067:8563,\n64068:8564,\n64069:8565,\n64070:8566,\n64071:8567,\n64072:8568,\n64073:8569,\n64074:8544,\n64075:8545,\n64076:8546,\n64077:8547,\n64078:8548,\n64079:8549,\n64080:8550,\n64081:8551,\n64082:8552,\n64083:8553,\n64084:65506,\n64085:65508,\n64086:65287,\n64087:65282,\n64088:12849,\n64089:8470,\n64090:8481,\n64091:8757,\n64092:32394,\n64093:35100,\n64094:37704,\n64095:37512,\n64096:34012,\n64097:20425,\n64098:28859,\n64099:26161,\n64100:26824,\n64101:37625,\n64102:26363,\n64103:24389,\n64104:20008,\n64105:20193,\n64106:20220,\n64107:20224,\n64108:20227,\n64109:20281,\n64110:20310,\n64111:20370,\n64112:20362,\n64113:20378,\n64114:20372,\n64115:20429,\n64116:20544,\n64117:20514,\n64118:20479,\n64119:20510,\n64120:20550,\n64121:20592,\n64122:20546,\n64123:20628,\n64124:20724,\n64125:20696,\n64126:20810,\n64128:20836,\n64129:20893,\n64130:20926,\n64131:20972,\n64132:21013,\n64133:21148,\n64134:21158,\n64135:21184,\n64136:21211,\n64137:21248,\n64138:21255,\n64139:21284,\n64140:21362,\n64141:21395,\n64142:21426,\n64143:21469,\n64144:64014,\n64145:21660,\n64146:21642,\n64147:21673,\n64148:21759,\n64149:21894,\n64150:22361,\n64151:22373,\n64152:22444,\n64153:22472,\n64154:22471,\n64155:64015,\n64156:64016,\n64157:22686,\n64158:22706,\n64159:22795,\n64160:22867,\n64161:22875,\n64162:22877,\n64163:22883,\n64164:22948,\n64165:22970,\n64166:23382,\n64167:23488,\n64168:29999,\n64169:23512,\n64170:23532,\n64171:23582,\n64172:23718,\n64173:23738,\n64174:23797,\n64175:23847,\n64176:23891,\n64177:64017,\n64178:23874,\n64179:23917,\n64180:23992,\n64181:23993,\n64182:24016,\n64183:24353,\n64184:24372,\n64185:24423,\n64186:24503,\n64187:24542,\n64188:24669,\n64189:24709,\n64190:24714,\n64191:24798,\n64192:24789,\n64193:24864,\n64194:24818,\n64195:24849,\n64196:24887,\n64197:24880,\n64198:24984,\n64199:25107,\n64200:25254,\n64201:25589,\n64202:25696,\n64203:25757,\n64204:25806,\n64205:25934,\n64206:26112,\n64207:26133,\n64208:26171,\n64209:26121,\n64210:26158,\n64211:26142,\n64212:26148,\n64213:26213,\n64214:26199,\n64215:26201,\n64216:64018,\n64217:26227,\n64218:26265,\n64219:26272,\n64220:26290,\n64221:26303,\n64222:26362,\n64223:26382,\n64224:63785,\n64225:26470,\n64226:26555,\n64227:26706,\n64228:26560,\n64229:26625,\n64230:26692,\n64231:26831,\n64232:64019,\n64233:26984,\n64234:64020,\n64235:27032,\n64236:27106,\n64237:27184,\n64238:27243,\n64239:27206,\n64240:27251,\n64241:27262,\n64242:27362,\n64243:27364,\n64244:27606,\n64245:27711,\n64246:27740,\n64247:27782,\n64248:27759,\n64249:27866,\n64250:27908,\n64251:28039,\n64252:28015,\n64320:28054,\n64321:28076,\n64322:28111,\n64323:28152,\n64324:28146,\n64325:28156,\n64326:28217,\n64327:28252,\n64328:28199,\n64329:28220,\n64330:28351,\n64331:28552,\n64332:28597,\n64333:28661,\n64334:28677,\n64335:28679,\n64336:28712,\n64337:28805,\n64338:28843,\n64339:28943,\n64340:28932,\n64341:29020,\n64342:28998,\n64343:28999,\n64344:64021,\n64345:29121,\n64346:29182,\n64347:29361,\n64348:29374,\n64349:29476,\n64350:64022,\n64351:29559,\n64352:29629,\n64353:29641,\n64354:29654,\n64355:29667,\n64356:29650,\n64357:29703,\n64358:29685,\n64359:29734,\n64360:29738,\n64361:29737,\n64362:29742,\n64363:29794,\n64364:29833,\n64365:29855,\n64366:29953,\n64367:30063,\n64368:30338,\n64369:30364,\n64370:30366,\n64371:30363,\n64372:30374,\n64373:64023,\n64374:30534,\n64375:21167,\n64376:30753,\n64377:30798,\n64378:30820,\n64379:30842,\n64380:31024,\n64381:64024,\n64382:64025,\n64384:64026,\n64385:31124,\n64386:64027,\n64387:31131,\n64388:31441,\n64389:31463,\n64390:64028,\n64391:31467,\n64392:31646,\n64393:64029,\n64394:32072,\n64395:32092,\n64396:32183,\n64397:32160,\n64398:32214,\n64399:32338,\n64400:32583,\n64401:32673,\n64402:64030,\n64403:33537,\n64404:33634,\n64405:33663,\n64406:33735,\n64407:33782,\n64408:33864,\n64409:33972,\n64410:34131,\n64411:34137,\n64412:34155,\n64413:64031,\n64414:34224,\n64415:64032,\n64416:64033,\n64417:34823,\n64418:35061,\n64419:35346,\n64420:35383,\n64421:35449,\n64422:35495,\n64423:35518,\n64424:35551,\n64425:64034,\n64426:35574,\n64427:35667,\n64428:35711,\n64429:36080,\n64430:36084,\n64431:36114,\n64432:36214,\n64433:64035,\n64434:36559,\n64435:64036,\n64436:64037,\n64437:36967,\n64438:37086,\n64439:64038,\n64440:37141,\n64441:37159,\n64442:37338,\n64443:37335,\n64444:37342,\n64445:37357,\n64446:37358,\n64447:37348,\n64448:37349,\n64449:37382,\n64450:37392,\n64451:37386,\n64452:37434,\n64453:37440,\n64454:37436,\n64455:37454,\n64456:37465,\n64457:37457,\n64458:37433,\n64459:37479,\n64460:37543,\n64461:37495,\n64462:37496,\n64463:37607,\n64464:37591,\n64465:37593,\n64466:37584,\n64467:64039,\n64468:37589,\n64469:37600,\n64470:37587,\n64471:37669,\n64472:37665,\n64473:37627,\n64474:64040,\n64475:37662,\n64476:37631,\n64477:37661,\n64478:37634,\n64479:37744,\n64480:37719,\n64481:37796,\n64482:37830,\n64483:37854,\n64484:37880,\n64485:37937,\n64486:37957,\n64487:37960,\n64488:38290,\n64489:63964,\n64490:64041,\n64491:38557,\n64492:38575,\n64493:38707,\n64494:38715,\n64495:38723,\n64496:38733,\n64497:38735,\n64498:38737,\n64499:38741,\n64500:38999,\n64501:39013,\n64502:64042,\n64503:64043,\n64504:39207,\n64505:64044,\n64506:39326,\n64507:39502,\n64508:39641,\n64576:39644,\n64577:39797,\n64578:39794,\n64579:39823,\n64580:39857,\n64581:39867,\n64582:39936,\n64583:40304,\n64584:40299,\n64585:64045,\n64586:40473,\n64587:40657\n};\n\n/**\n * @author takahiro / https://github.com/takahirox\n */\n\nfunction DataViewEx ( buffer, littleEndian ) {\n\n\tthis.dv = new DataView( buffer );\n\tthis.offset = 0;\n\tthis.littleEndian = ( littleEndian !== undefined ) ? littleEndian : true;\n\tthis.encoder = new CharsetEncoder();\n\n}\n\nDataViewEx.prototype = {\n\n\tconstructor: DataViewEx,\n\n\tgetInt8: function () {\n\n\t\tvar value = this.dv.getInt8( this.offset );\n\t\tthis.offset += 1;\n\t\treturn value;\n\n\t},\n\n\tgetInt8Array: function ( size ) {\n\n\t\tvar a = [];\n\n\t\tfor ( var i = 0; i < size; i++ ) {\n\n\t\t\ta.push( this.getInt8() );\n\n\t\t}\n\n\t\treturn a;\n\n\t},\n\n\tgetUint8: function () {\n\n\t\tvar value = this.dv.getUint8( this.offset );\n\t\tthis.offset += 1;\n\t\treturn value;\n\n\t},\n\n\tgetUint8Array: function ( size ) {\n\n\t\tvar a = [];\n\n\t\tfor ( var i = 0; i < size; i++ ) {\n\n\t\t\ta.push( this.getUint8() );\n\n\t\t}\n\n\t\treturn a;\n\n\t},\n\n\n\tgetInt16: function () {\n\n\t\tvar value = this.dv.getInt16( this.offset, this.littleEndian );\n\t\tthis.offset += 2;\n\t\treturn value;\n\n\t},\n\n\tgetInt16Array: function ( size ) {\n\n\t\tvar a = [];\n\n\t\tfor ( var i = 0; i < size; i++ ) {\n\n\t\t\ta.push( this.getInt16() );\n\n\t\t}\n\n\t\treturn a;\n\n\t},\n\n\tgetUint16: function () {\n\n\t\tvar value = this.dv.getUint16( this.offset, this.littleEndian );\n\t\tthis.offset += 2;\n\t\treturn value;\n\n\t},\n\n\tgetUint16Array: function ( size ) {\n\n\t\tvar a = [];\n\n\t\tfor ( var i = 0; i < size; i++ ) {\n\n\t\t\ta.push( this.getUint16() );\n\n\t\t}\n\n\t\treturn a;\n\n\t},\n\n\tgetInt32: function () {\n\n\t\tvar value = this.dv.getInt32( this.offset, this.littleEndian );\n\t\tthis.offset += 4;\n\t\treturn value;\n\n\t},\n\n\tgetInt32Array: function ( size ) {\n\n\t\tvar a = [];\n\n\t\tfor ( var i = 0; i < size; i++ ) {\n\n\t\t\ta.push( this.getInt32() );\n\n\t\t}\n\n\t\treturn a;\n\n\t},\n\n\tgetUint32: function () {\n\n\t\tvar value = this.dv.getUint32( this.offset, this.littleEndian );\n\t\tthis.offset += 4;\n\t\treturn value;\n\n\t},\n\n\tgetUint32Array: function ( size ) {\n\n\t\tvar a = [];\n\n\t\tfor ( var i = 0; i < size; i++ ) {\n\n\t\t\ta.push( this.getUint32() );\n\n\t\t}\n\n\t\treturn a;\n\n\t},\n\n\tgetFloat32: function () {\n\n\t\tvar value = this.dv.getFloat32( this.offset, this.littleEndian );\n\t\tthis.offset += 4;\n\t\treturn value;\n\n\t},\n\n\tgetFloat32Array: function( size ) {\n\n\t\tvar a = [];\n\n\t\tfor ( var i = 0; i < size; i++ ) {\n\n\t\t\ta.push( this.getFloat32() );\n\n\t\t}\n\n\t\treturn a;\n\n\t},\n\n\tgetFloat64: function () {\n\n\t\tvar value = this.dv.getFloat64( this.offset, this.littleEndian );\n\t\tthis.offset += 8;\n\t\treturn value;\n\n\t},\n\n\tgetFloat64Array: function( size ) {\n\n\t\tvar a = [];\n\n\t\tfor ( var i = 0; i < size; i++ ) {\n\n\t\t\ta.push( this.getFloat64() );\n\n\t\t}\n\n\t\treturn a;\n\n\t},\n\n\tgetIndex: function ( type, isUnsigned ) {\n\n\t\tswitch ( type ) {\n\n\t\t\tcase 1:\n\t\t\t\treturn ( isUnsigned === true ) ? this.getUint8() : this.getInt8();\n\n\t\t\tcase 2:\n\t\t\t\treturn ( isUnsigned === true ) ? this.getUint16() : this.getInt16();\n\n\t\t\tcase 4:\n\t\t\t\treturn this.getInt32(); // No Uint32\n\n\t\t\tdefault:\n\t\t\t\tthrow 'unknown number type ' + type + ' exception.';\n\n\t\t}\n\n\t},\n\n\tgetIndexArray: function ( type, size, isUnsigned ) {\n\n\t\tvar a = [];\n\n\t\tfor ( var i = 0; i < size; i++ ) {\n\n\t\t\ta.push( this.getIndex( type, isUnsigned ) );\n\n\t\t}\n\n\t\treturn a;\n\n\t},\n\n\tgetChars: function ( size ) {\n\n\t\tvar str = '';\n\n\t\twhile ( size > 0 ) {\n\n\t\t\tvar value = this.getUint8();\n\t\t\tsize--;\n\n\t\t\tif ( value === 0 ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tstr += String.fromCharCode( value );\n\n\t\t}\n\n\t\twhile ( size > 0 ) {\n\n\t\t\tthis.getUint8();\n\t\t\tsize--;\n\n\t\t}\n\n\t\treturn str;\n\n\t},\n\n\tgetSjisStringsAsUnicode: function ( size ) {\n\n\t\tvar a = [];\n\n\t\twhile ( size > 0 ) {\n\n\t\t\tvar value = this.getUint8();\n\t\t\tsize--;\n\n\t\t\tif ( value === 0 ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\ta.push( value );\n\n\t\t}\n\n\t\twhile ( size > 0 ) {\n\n\t\t\tthis.getUint8();\n\t\t\tsize--;\n\n\t\t}\n\n\t\treturn this.encoder.s2u( new Uint8Array( a ) );\n\n\t},\n\n\tgetUnicodeStrings: function ( size ) {\n\n\t\tvar str = '';\n\n\t\twhile ( size > 0 ) {\n\n\t\t\tvar value = this.getUint16();\n\t\t\tsize -= 2;\n\n\t\t\tif ( value === 0 ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tstr += String.fromCharCode( value );\n\n\t\t}\n\n\t\twhile ( size > 0 ) {\n\n\t\t\tthis.getUint8();\n\t\t\tsize--;\n\n\t\t}\n\n\t\treturn str;\n\n\t},\n\n\tgetTextBuffer: function () {\n\n\t\tvar size = this.getUint32();\n\t\treturn this.getUnicodeStrings( size );\n\n\t}\n\n};\n\n/**\n * @author takahiro / https://github.com/takahirox\n */\n\nfunction DataCreationHelper () {\n}\n\nDataCreationHelper.prototype = {\n\n\tconstructor: DataCreationHelper,\n\n\tleftToRightVector3: function ( v ) {\n\n\t\tv[ 2 ] = -v[ 2 ];\n\n\t},\n\n\tleftToRightQuaternion: function ( q ) {\n\n\t\tq[ 0 ] = -q[ 0 ];\n\t\tq[ 1 ] = -q[ 1 ];\n\n\t},\n\n\tleftToRightEuler: function ( r ) {\n\n\t\tr[ 0 ] = -r[ 0 ];\n\t\tr[ 1 ] = -r[ 1 ];\n\n\t},\n\n\tleftToRightIndexOrder: function ( p ) {\n\n\t\tvar tmp = p[ 2 ];\n\t\tp[ 2 ] = p[ 0 ];\n\t\tp[ 0 ] = tmp;\n\n\t},\n\n\tleftToRightVector3Range: function ( v1, v2 ) {\n\n\t\tvar tmp = -v2[ 2 ];\n\t\tv2[ 2 ] = -v1[ 2 ];\n\t\tv1[ 2 ] = tmp;\n\n\t},\n\n\tleftToRightEulerRange: function ( r1, r2 ) {\n\n\t\tvar tmp1 = -r2[ 0 ];\n\t\tvar tmp2 = -r2[ 1 ];\n\t\tr2[ 0 ] = -r1[ 0 ];\n\t\tr2[ 1 ] = -r1[ 1 ];\n\t\tr1[ 0 ] = tmp1;\n\t\tr1[ 1 ] = tmp2;\n\n\t}\n\n};\n\n/**\n * @author takahiro / https://github.com/takahirox\n */\n\nfunction Parser() {\n}\n\nParser.prototype.parsePmd = function ( buffer, leftToRight ) {\n\n\tvar pmd = {};\n\tvar dv = new DataViewEx( buffer );\n\n\tpmd.metadata = {};\n\tpmd.metadata.format = 'pmd';\n\tpmd.metadata.coordinateSystem = 'left';\n\n\tvar parseHeader = function () {\n\n\t\tvar metadata = pmd.metadata;\n\t\tmetadata.magic = dv.getChars( 3 );\n\n\t\tif ( metadata.magic !== 'Pmd' ) {\n\n\t\t\tthrow 'PMD file magic is not Pmd, but ' + metadata.magic;\n\n\t\t}\n\n\t\tmetadata.version = dv.getFloat32();\n\t\tmetadata.modelName = dv.getSjisStringsAsUnicode( 20 );\n\t\tmetadata.comment = dv.getSjisStringsAsUnicode( 256 );\n\n\t};\n\n\tvar parseVertices = function () {\n\n\t\tvar parseVertex = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.position = dv.getFloat32Array( 3 );\n\t\t\tp.normal = dv.getFloat32Array( 3 );\n\t\t\tp.uv = dv.getFloat32Array( 2 );\n\t\t\tp.skinIndices = dv.getUint16Array( 2 );\n\t\t\tp.skinWeights = [ dv.getUint8() / 100 ];\n\t\t\tp.skinWeights.push( 1.0 - p.skinWeights[ 0 ] );\n\t\t\tp.edgeFlag = dv.getUint8();\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = pmd.metadata;\n\t\tmetadata.vertexCount = dv.getUint32();\n\n\t\tpmd.vertices = [];\n\n\t\tfor ( var i = 0; i < metadata.vertexCount; i++ ) {\n\n\t\t\tpmd.vertices.push( parseVertex() );\n\n\t\t}\n\n\t};\n\n\tvar parseFaces = function () {\n\n\t\tvar parseFace = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.indices = dv.getUint16Array( 3 );\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = pmd.metadata;\n\t\tmetadata.faceCount = dv.getUint32() / 3;\n\n\t\tpmd.faces = [];\n\n\t\tfor ( var i = 0; i < metadata.faceCount; i++ ) {\n\n\t\t\tpmd.faces.push( parseFace() );\n\n\t\t}\n\n\t};\n\n\tvar parseMaterials = function () {\n\n\t\tvar parseMaterial = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.diffuse = dv.getFloat32Array( 4 );\n\t\t\tp.shininess = dv.getFloat32();\n\t\t\tp.specular = dv.getFloat32Array( 3 );\n\t\t\tp.ambient = dv.getFloat32Array( 3 );\n\t\t\tp.toonIndex = dv.getInt8();\n\t\t\tp.edgeFlag = dv.getUint8();\n\t\t\tp.faceCount = dv.getUint32() / 3;\n\t\t\tp.fileName = dv.getSjisStringsAsUnicode( 20 );\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = pmd.metadata;\n\t\tmetadata.materialCount = dv.getUint32();\n\n\t\tpmd.materials = [];\n\n\t\tfor ( var i = 0; i < metadata.materialCount; i++ ) {\n\n\t\t\tpmd.materials.push( parseMaterial() );\n\n\t\t}\n\n\t};\n\n\tvar parseBones = function () {\n\n\t\tvar parseBone = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.name = dv.getSjisStringsAsUnicode( 20 );\n\t\t\tp.parentIndex = dv.getInt16();\n\t\t\tp.tailIndex = dv.getInt16();\n\t\t\tp.type = dv.getUint8();\n\t\t\tp.ikIndex = dv.getInt16();\n\t\t\tp.position = dv.getFloat32Array( 3 );\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = pmd.metadata;\n\t\tmetadata.boneCount = dv.getUint16();\n\n\t\tpmd.bones = [];\n\n\t\tfor ( var i = 0; i < metadata.boneCount; i++ ) {\n\n\t\t\tpmd.bones.push( parseBone() );\n\n\t\t}\n\n\t};\n\n\tvar parseIks = function () {\n\n\t\tvar parseIk = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.target = dv.getUint16();\n\t\t\tp.effector = dv.getUint16();\n\t\t\tp.linkCount = dv.getUint8();\n\t\t\tp.iteration = dv.getUint16();\n\t\t\tp.maxAngle = dv.getFloat32();\n\n\t\t\tp.links = [];\n\t\t\tfor ( var i = 0; i < p.linkCount; i++ ) {\n\n\t\t\t\tvar link = {};\n\t\t\t\tlink.index = dv.getUint16();\n\t\t\t\tp.links.push( link );\n\n\t\t\t}\n\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = pmd.metadata;\n\t\tmetadata.ikCount = dv.getUint16();\n\n\t\tpmd.iks = [];\n\n\t\tfor ( var i = 0; i < metadata.ikCount; i++ ) {\n\n\t\t\tpmd.iks.push( parseIk() );\n\n\t\t}\n\n\t};\n\n\tvar parseMorphs = function () {\n\n\t\tvar parseMorph = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.name = dv.getSjisStringsAsUnicode( 20 );\n\t\t\tp.elementCount = dv.getUint32();\n\t\t\tp.type = dv.getUint8();\n\n\t\t\tp.elements = [];\n\t\t\tfor ( var i = 0; i < p.elementCount; i++ ) {\n\n\t\t\t\tp.elements.push( {\n\t\t\t\t\tindex: dv.getUint32(),\n\t\t\t\t\tposition: dv.getFloat32Array( 3 )\n\t\t\t\t} ) ;\n\n\t\t\t}\n\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = pmd.metadata;\n\t\tmetadata.morphCount = dv.getUint16();\n\n\t\tpmd.morphs = [];\n\n\t\tfor ( var i = 0; i < metadata.morphCount; i++ ) {\n\n\t\t\tpmd.morphs.push( parseMorph() );\n\n\t\t}\n\n\n\t};\n\n\tvar parseMorphFrames = function () {\n\n\t\tvar parseMorphFrame = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.index = dv.getUint16();\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = pmd.metadata;\n\t\tmetadata.morphFrameCount = dv.getUint8();\n\n\t\tpmd.morphFrames = [];\n\n\t\tfor ( var i = 0; i < metadata.morphFrameCount; i++ ) {\n\n\t\t\tpmd.morphFrames.push( parseMorphFrame() );\n\n\t\t}\n\n\t};\n\n\tvar parseBoneFrameNames = function () {\n\n\t\tvar parseBoneFrameName = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.name = dv.getSjisStringsAsUnicode( 50 );\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = pmd.metadata;\n\t\tmetadata.boneFrameNameCount = dv.getUint8();\n\n\t\tpmd.boneFrameNames = [];\n\n\t\tfor ( var i = 0; i < metadata.boneFrameNameCount; i++ ) {\n\n\t\t\tpmd.boneFrameNames.push( parseBoneFrameName() );\n\n\t\t}\n\n\t};\n\n\tvar parseBoneFrames = function () {\n\n\t\tvar parseBoneFrame = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.boneIndex = dv.getInt16();\n\t\t\tp.frameIndex = dv.getUint8();\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = pmd.metadata;\n\t\tmetadata.boneFrameCount = dv.getUint32();\n\n\t\tpmd.boneFrames = [];\n\n\t\tfor ( var i = 0; i < metadata.boneFrameCount; i++ ) {\n\n\t\t\tpmd.boneFrames.push( parseBoneFrame() );\n\n\t\t}\n\n\t};\n\n\tvar parseEnglishHeader = function () {\n\n\t\tvar metadata = pmd.metadata;\n\t\tmetadata.englishCompatibility = dv.getUint8();\n\n\t\tif ( metadata.englishCompatibility > 0 ) {\n\n\t\t\tmetadata.englishModelName = dv.getSjisStringsAsUnicode( 20 );\n\t\t\tmetadata.englishComment = dv.getSjisStringsAsUnicode( 256 );\n\n\t\t}\n\n\t};\n\n\tvar parseEnglishBoneNames = function () {\n\n\t\tvar parseEnglishBoneName = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.name = dv.getSjisStringsAsUnicode( 20 );\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = pmd.metadata;\n\n\t\tif ( metadata.englishCompatibility === 0 ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tpmd.englishBoneNames = [];\n\n\t\tfor ( var i = 0; i < metadata.boneCount; i++ ) {\n\n\t\t\tpmd.englishBoneNames.push( parseEnglishBoneName() );\n\n\t\t}\n\n\t};\n\n\tvar parseEnglishMorphNames = function () {\n\n\t\tvar parseEnglishMorphName = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.name = dv.getSjisStringsAsUnicode( 20 );\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = pmd.metadata;\n\n\t\tif ( metadata.englishCompatibility === 0 ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tpmd.englishMorphNames = [];\n\n\t\tfor ( var i = 0; i < metadata.morphCount - 1; i++ ) {\n\n\t\t\tpmd.englishMorphNames.push( parseEnglishMorphName() );\n\n\t\t}\n\n\t};\n\n\tvar parseEnglishBoneFrameNames = function () {\n\n\t\tvar parseEnglishBoneFrameName = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.name = dv.getSjisStringsAsUnicode( 50 );\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = pmd.metadata;\n\n\t\tif ( metadata.englishCompatibility === 0 ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tpmd.englishBoneFrameNames = [];\n\n\t\tfor ( var i = 0; i < metadata.boneFrameNameCount; i++ ) {\n\n\t\t\tpmd.englishBoneFrameNames.push( parseEnglishBoneFrameName() );\n\n\t\t}\n\n\t};\n\n\tvar parseToonTextures = function () {\n\n\t\tvar parseToonTexture = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.fileName = dv.getSjisStringsAsUnicode( 100 );\n\t\t\treturn p;\n\n\t\t};\n\n\t\tpmd.toonTextures = [];\n\n\t\tfor ( var i = 0; i < 10; i++ ) {\n\n\t\t\tpmd.toonTextures.push( parseToonTexture() );\n\n\t\t}\n\n\t};\n\n\tvar parseRigidBodies = function () {\n\n\t\tvar parseRigidBody = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.name = dv.getSjisStringsAsUnicode( 20 );\n\t\t\tp.boneIndex = dv.getInt16();\n\t\t\tp.groupIndex = dv.getUint8();\n\t\t\tp.groupTarget = dv.getUint16();\n\t\t\tp.shapeType = dv.getUint8();\n\t\t\tp.width = dv.getFloat32();\n\t\t\tp.height = dv.getFloat32();\n\t\t\tp.depth = dv.getFloat32();\n\t\t\tp.position = dv.getFloat32Array( 3 );\n\t\t\tp.rotation = dv.getFloat32Array( 3 );\n\t\t\tp.weight = dv.getFloat32();\n\t\t\tp.positionDamping = dv.getFloat32();\n\t\t\tp.rotationDamping = dv.getFloat32();\n\t\t\tp.restitution = dv.getFloat32();\n\t\t\tp.friction = dv.getFloat32();\n\t\t\tp.type = dv.getUint8();\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = pmd.metadata;\n\t\tmetadata.rigidBodyCount = dv.getUint32();\n\n\t\tpmd.rigidBodies = [];\n\n\t\tfor ( var i = 0; i < metadata.rigidBodyCount; i++ ) {\n\n\t\t\tpmd.rigidBodies.push( parseRigidBody() );\n\n\t\t}\n\n\t};\n\n\tvar parseConstraints = function () {\n\n\t\tvar parseConstraint = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.name = dv.getSjisStringsAsUnicode( 20 );\n\t\t\tp.rigidBodyIndex1 = dv.getUint32();\n\t\t\tp.rigidBodyIndex2 = dv.getUint32();\n\t\t\tp.position = dv.getFloat32Array( 3 );\n\t\t\tp.rotation = dv.getFloat32Array( 3 );\n\t\t\tp.translationLimitation1 = dv.getFloat32Array( 3 );\n\t\t\tp.translationLimitation2 = dv.getFloat32Array( 3 );\n\t\t\tp.rotationLimitation1 = dv.getFloat32Array( 3 );\n\t\t\tp.rotationLimitation2 = dv.getFloat32Array( 3 );\n\t\t\tp.springPosition = dv.getFloat32Array( 3 );\n\t\t\tp.springRotation = dv.getFloat32Array( 3 );\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = pmd.metadata;\n\t\tmetadata.constraintCount = dv.getUint32();\n\n\t\tpmd.constraints = [];\n\n\t\tfor ( var i = 0; i < metadata.constraintCount; i++ ) {\n\n\t\t\tpmd.constraints.push( parseConstraint() );\n\n\t\t}\n\n\t};\n\n\tparseHeader();\n\tparseVertices();\n\tparseFaces();\n\tparseMaterials();\n\tparseBones();\n\tparseIks();\n\tparseMorphs();\n\tparseMorphFrames();\n\tparseBoneFrameNames();\n\tparseBoneFrames();\n\tparseEnglishHeader();\n\tparseEnglishBoneNames();\n\tparseEnglishMorphNames();\n\tparseEnglishBoneFrameNames();\n\tparseToonTextures();\n\tparseRigidBodies();\n\tparseConstraints();\n\n\tif ( leftToRight === true ) this.leftToRightModel( pmd );\n\n\t// console.log( pmd ); // for console debug\n\n\treturn pmd;\n\n};\n\nParser.prototype.parsePmx = function ( buffer, leftToRight ) {\n\n\tvar pmx = {};\n\tvar dv = new DataViewEx( buffer );\n\n\tpmx.metadata = {};\n\tpmx.metadata.format = 'pmx';\n\tpmx.metadata.coordinateSystem = 'left';\n\n\tvar parseHeader = function () {\n\n\t\tvar metadata = pmx.metadata;\n\t\tmetadata.magic = dv.getChars( 4 );\n\n\t\t// Note: don't remove the last blank space.\n\t\tif ( metadata.magic !== 'PMX ' ) {\n\n\t\t\tthrow 'PMX file magic is not PMX , but ' + metadata.magic;\n\n\t\t}\n\n\t\tmetadata.version = dv.getFloat32();\n\n\t\tif ( metadata.version !== 2.0 && metadata.version !== 2.1 ) {\n\n\t\t\tthrow 'PMX version ' + metadata.version + ' is not supported.';\n\n\t\t}\n\n\t\tmetadata.headerSize = dv.getUint8();\n\t\tmetadata.encoding = dv.getUint8();\n\t\tmetadata.additionalUvNum = dv.getUint8();\n\t\tmetadata.vertexIndexSize = dv.getUint8();\n\t\tmetadata.textureIndexSize = dv.getUint8();\n\t\tmetadata.materialIndexSize = dv.getUint8();\n\t\tmetadata.boneIndexSize = dv.getUint8();\n\t\tmetadata.morphIndexSize = dv.getUint8();\n\t\tmetadata.rigidBodyIndexSize = dv.getUint8();\n\t\tmetadata.modelName = dv.getTextBuffer();\n\t\tmetadata.englishModelName = dv.getTextBuffer();\n\t\tmetadata.comment = dv.getTextBuffer();\n\t\tmetadata.englishComment = dv.getTextBuffer();\n\n\t};\n\n\tvar parseVertices = function () {\n\n\t\tvar parseVertex = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.position = dv.getFloat32Array( 3 );\n\t\t\tp.normal = dv.getFloat32Array( 3 );\n\t\t\tp.uv = dv.getFloat32Array( 2 );\n\n\t\t\tp.auvs = [];\n\n\t\t\tfor ( var i = 0; i < pmx.metadata.additionalUvNum; i++ ) {\n\n\t\t\t\tp.auvs.push( dv.getFloat32Array( 4 ) );\n\n\t\t\t}\n\n\t\t\tp.type = dv.getUint8();\n\n\t\t\tvar indexSize = metadata.boneIndexSize;\n\n\t\t\tif ( p.type === 0 ) { // BDEF1\n\n\t\t\t\tp.skinIndices = dv.getIndexArray( indexSize, 1 );\n\t\t\t\tp.skinWeights = [ 1.0 ];\n\n\t\t\t} else if ( p.type === 1 ) { // BDEF2\n\n\t\t\t\tp.skinIndices = dv.getIndexArray( indexSize, 2 );\n\t\t\t\tp.skinWeights = dv.getFloat32Array( 1 );\n\t\t\t\tp.skinWeights.push( 1.0 - p.skinWeights[ 0 ] );\n\n\t\t\t} else if ( p.type === 2 ) { // BDEF4\n\n\t\t\t\tp.skinIndices = dv.getIndexArray( indexSize, 4 );\n\t\t\t\tp.skinWeights = dv.getFloat32Array( 4 );\n\n\t\t\t} else if ( p.type === 3 ) { // SDEF\n\n\t\t\t\tp.skinIndices = dv.getIndexArray( indexSize, 2 );\n\t\t\t\tp.skinWeights = dv.getFloat32Array( 1 );\n\t\t\t\tp.skinWeights.push( 1.0 - p.skinWeights[ 0 ] );\n\n\t\t\t\tp.skinC = dv.getFloat32Array( 3 );\n\t\t\t\tp.skinR0 = dv.getFloat32Array( 3 );\n\t\t\t\tp.skinR1 = dv.getFloat32Array( 3 );\n\n\t\t\t\t// SDEF is not supported yet and is handled as BDEF2 so far.\n\t\t\t\t// TODO: SDEF support\n\t\t\t\tp.type = 1;\n\n\t\t\t} else {\n\n\t\t\t\tthrow 'unsupport bone type ' + p.type + ' exception.';\n\n\t\t\t}\n\n\t\t\tp.edgeRatio = dv.getFloat32();\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = pmx.metadata;\n\t\tmetadata.vertexCount = dv.getUint32();\n\n\t\tpmx.vertices = [];\n\n\t\tfor ( var i = 0; i < metadata.vertexCount; i++ ) {\n\n\t\t\tpmx.vertices.push( parseVertex() );\n\n\t\t}\n\n\t};\n\n\tvar parseFaces = function () {\n\n\t\tvar parseFace = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.indices = dv.getIndexArray( metadata.vertexIndexSize, 3, true );\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = pmx.metadata;\n\t\tmetadata.faceCount = dv.getUint32() / 3;\n\n\t\tpmx.faces = [];\n\n\t\tfor ( var i = 0; i < metadata.faceCount; i++ ) {\n\n\t\t\tpmx.faces.push( parseFace() );\n\n\t\t}\n\n\t};\n\n\tvar parseTextures = function () {\n\n\t\tvar parseTexture = function () {\n\n\t\t\treturn dv.getTextBuffer();\n\n\t\t};\n\n\t\tvar metadata = pmx.metadata;\n\t\tmetadata.textureCount = dv.getUint32();\n\n\t\tpmx.textures = [];\n\n\t\tfor ( var i = 0; i < metadata.textureCount; i++ ) {\n\n\t\t\tpmx.textures.push( parseTexture() );\n\n\t\t}\n\n\t};\n\n\tvar parseMaterials = function () {\n\n\t\tvar parseMaterial = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.name = dv.getTextBuffer();\n\t\t\tp.englishName = dv.getTextBuffer();\n\t\t\tp.diffuse = dv.getFloat32Array( 4 );\n\t\t\tp.specular = dv.getFloat32Array( 3 );\n\t\t\tp.shininess = dv.getFloat32();\n\t\t\tp.ambient = dv.getFloat32Array( 3 );\n\t\t\tp.flag = dv.getUint8();\n\t\t\tp.edgeColor = dv.getFloat32Array( 4 );\n\t\t\tp.edgeSize = dv.getFloat32();\n\t\t\tp.textureIndex = dv.getIndex( pmx.metadata.textureIndexSize );\n\t\t\tp.envTextureIndex = dv.getIndex( pmx.metadata.textureIndexSize );\n\t\t\tp.envFlag = dv.getUint8();\n\t\t\tp.toonFlag = dv.getUint8();\n\n\t\t\tif ( p.toonFlag === 0 ) {\n\n\t\t\t\tp.toonIndex = dv.getIndex( pmx.metadata.textureIndexSize );\n\n\t\t\t} else if ( p.toonFlag === 1 ) {\n\n\t\t\t\tp.toonIndex = dv.getInt8();\n\n\t\t\t} else {\n\n\t\t\t\tthrow 'unknown toon flag ' + p.toonFlag + ' exception.';\n\n\t\t\t}\n\n\t\t\tp.comment = dv.getTextBuffer();\n\t\t\tp.faceCount = dv.getUint32() / 3;\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = pmx.metadata;\n\t\tmetadata.materialCount = dv.getUint32();\n\n\t\tpmx.materials = [];\n\n\t\tfor ( var i = 0; i < metadata.materialCount; i++ ) {\n\n\t\t\tpmx.materials.push( parseMaterial() );\n\n\t\t}\n\n\t};\n\n\tvar parseBones = function () {\n\n\t\tvar parseBone = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.name = dv.getTextBuffer();\n\t\t\tp.englishName = dv.getTextBuffer();\n\t\t\tp.position = dv.getFloat32Array( 3 );\n\t\t\tp.parentIndex = dv.getIndex( pmx.metadata.boneIndexSize );\n\t\t\tp.transformationClass = dv.getUint32();\n\t\t\tp.flag = dv.getUint16();\n\n\t\t\tif ( p.flag & 0x1 ) {\n\n\t\t\t\tp.connectIndex = dv.getIndex( pmx.metadata.boneIndexSize );\n\n\t\t\t} else {\n\n\t\t\t\tp.offsetPosition = dv.getFloat32Array( 3 );\n\n\t\t\t}\n\n\t\t\tif ( p.flag & 0x100 || p.flag & 0x200 ) {\n\n\t\t\t\t// Note: I don't think Grant is an appropriate name\n\t\t\t\t// but I found that some English translated MMD tools use this term\n\t\t\t\t// so I've named it Grant so far.\n\t\t\t\t// I'd rename to more appropriate name from Grant later.\n\t\t\t\tvar grant = {};\n\n\t\t\t\tgrant.isLocal = ( p.flag & 0x80 ) !== 0 ? true : false;\n\t\t\t\tgrant.affectRotation = ( p.flag & 0x100 ) !== 0 ? true : false;\n\t\t\t\tgrant.affectPosition = ( p.flag & 0x200 ) !== 0 ? true : false;\n\t\t\t\tgrant.parentIndex = dv.getIndex( pmx.metadata.boneIndexSize );\n\t\t\t\tgrant.ratio = dv.getFloat32();\n\n\t\t\t\tp.grant = grant;\n\n\t\t\t}\n\n\t\t\tif ( p.flag & 0x400 ) {\n\n\t\t\t\tp.fixAxis = dv.getFloat32Array( 3 );\n\n\t\t\t}\n\n\t\t\tif ( p.flag & 0x800 ) {\n\n\t\t\t\tp.localXVector = dv.getFloat32Array( 3 );\n\t\t\t\tp.localZVector = dv.getFloat32Array( 3 );\n\n\t\t\t}\n\n\t\t\tif ( p.flag & 0x2000 ) {\n\n\t\t\t\tp.key = dv.getUint32();\n\n\t\t\t}\n\n\t\t\tif ( p.flag & 0x20 ) {\n\n\t\t\t\tvar ik = {};\n\n\t\t\t\tik.effector = dv.getIndex( pmx.metadata.boneIndexSize );\n\t\t\t\tik.target = null;\n\t\t\t\tik.iteration = dv.getUint32();\n\t\t\t\tik.maxAngle = dv.getFloat32();\n\t\t\t\tik.linkCount = dv.getUint32();\n\t\t\t\tik.links = [];\n\n\t\t\t\tfor ( var i = 0; i < ik.linkCount; i++ ) {\n\n\t\t\t\t\tvar link = {};\n\t\t\t\t\tlink.index = dv.getIndex( pmx.metadata.boneIndexSize );\n\t\t\t\t\tlink.angleLimitation = dv.getUint8();\n\n\t\t\t\t\tif ( link.angleLimitation === 1 ) {\n\n\t\t\t\t\t\tlink.lowerLimitationAngle = dv.getFloat32Array( 3 );\n\t\t\t\t\t\tlink.upperLimitationAngle = dv.getFloat32Array( 3 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tik.links.push( link );\n\n\t\t\t\t}\n\n\t\t\t\tp.ik = ik;\n\t\t\t}\n\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = pmx.metadata;\n\t\tmetadata.boneCount = dv.getUint32();\n\n\t\tpmx.bones = [];\n\n\t\tfor ( var i = 0; i < metadata.boneCount; i++ ) {\n\n\t\t\tpmx.bones.push( parseBone() );\n\n\t\t}\n\n\t};\n\n\tvar parseMorphs = function () {\n\n\t\tvar parseMorph = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.name = dv.getTextBuffer();\n\t\t\tp.englishName = dv.getTextBuffer();\n\t\t\tp.panel = dv.getUint8();\n\t\t\tp.type = dv.getUint8();\n\t\t\tp.elementCount = dv.getUint32();\n\t\t\tp.elements = [];\n\n\t\t\tfor ( var i = 0; i < p.elementCount; i++ ) {\n\n\t\t\t\tif ( p.type === 0 ) { // group morph\n\n\t\t\t\t\tvar m = {};\n\t\t\t\t\tm.index = dv.getIndex( pmx.metadata.morphIndexSize );\n\t\t\t\t\tm.ratio = dv.getFloat32();\n\t\t\t\t\tp.elements.push( m );\n\n\t\t\t\t} else if ( p.type === 1 ) { // vertex morph\n\n\t\t\t\t\tvar m = {};\n\t\t\t\t\tm.index = dv.getIndex( pmx.metadata.vertexIndexSize, true );\n\t\t\t\t\tm.position = dv.getFloat32Array( 3 );\n\t\t\t\t\tp.elements.push( m );\n\n\t\t\t\t} else if ( p.type === 2 ) { // bone morph\n\n\t\t\t\t\tvar m = {};\n\t\t\t\t\tm.index = dv.getIndex( pmx.metadata.boneIndexSize );\n\t\t\t\t\tm.position = dv.getFloat32Array( 3 );\n\t\t\t\t\tm.rotation = dv.getFloat32Array( 4 );\n\t\t\t\t\tp.elements.push( m );\n\n\t\t\t\t} else if ( p.type === 3 ) { // uv morph\n\n\t\t\t\t\tvar m = {};\n\t\t\t\t\tm.index = dv.getIndex( pmx.metadata.vertexIndexSize, true );\n\t\t\t\t\tm.uv = dv.getFloat32Array( 4 );\n\t\t\t\t\tp.elements.push( m );\n\n\t\t\t\t} else if ( p.type === 4 ) { // additional uv1\n\n\t\t\t\t\t// TODO: implement\n\n\t\t\t\t} else if ( p.type === 5 ) { // additional uv2\n\n\t\t\t\t\t// TODO: implement\n\n\t\t\t\t} else if ( p.type === 6 ) { // additional uv3\n\n\t\t\t\t\t// TODO: implement\n\n\t\t\t\t} else if ( p.type === 7 ) { // additional uv4\n\n\t\t\t\t\t// TODO: implement\n\n\t\t\t\t} else if ( p.type === 8 ) { // material morph\n\n\t\t\t\t\tvar m = {};\n\t\t\t\t\tm.index = dv.getIndex( pmx.metadata.materialIndexSize );\n\t\t\t\t\tm.type = dv.getUint8();\n\t\t\t\t\tm.diffuse = dv.getFloat32Array( 4 );\n\t\t\t\t\tm.specular = dv.getFloat32Array( 3 );\n\t\t\t\t\tm.shininess = dv.getFloat32();\n\t\t\t\t\tm.ambient = dv.getFloat32Array( 3 );\n\t\t\t\t\tm.edgeColor = dv.getFloat32Array( 4 );\n\t\t\t\t\tm.edgeSize = dv.getFloat32();\n\t\t\t\t\tm.textureColor = dv.getFloat32Array( 4 );\n\t\t\t\t\tm.sphereTextureColor = dv.getFloat32Array( 4 );\n\t\t\t\t\tm.toonColor = dv.getFloat32Array( 4 );\n\t\t\t\t\tp.elements.push( m );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = pmx.metadata;\n\t\tmetadata.morphCount = dv.getUint32();\n\n\t\tpmx.morphs = [];\n\n\t\tfor ( var i = 0; i < metadata.morphCount; i++ ) {\n\n\t\t\tpmx.morphs.push( parseMorph() );\n\n\t\t}\n\n\t};\n\n\tvar parseFrames = function () {\n\n\t\tvar parseFrame = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.name = dv.getTextBuffer();\n\t\t\tp.englishName = dv.getTextBuffer();\n\t\t\tp.type = dv.getUint8();\n\t\t\tp.elementCount = dv.getUint32();\n\t\t\tp.elements = [];\n\n\t\t\tfor ( var i = 0; i < p.elementCount; i++ ) {\n\n\t\t\t\tvar e = {};\n\t\t\t\te.target = dv.getUint8();\n\t\t\t\te.index = ( e.target === 0 ) ? dv.getIndex( pmx.metadata.boneIndexSize ) : dv.getIndex( pmx.metadata.morphIndexSize );\n\t\t\t\tp.elements.push( e );\n\n\t\t\t}\n\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = pmx.metadata;\n\t\tmetadata.frameCount = dv.getUint32();\n\n\t\tpmx.frames = [];\n\n\t\tfor ( var i = 0; i < metadata.frameCount; i++ ) {\n\n\t\t\tpmx.frames.push( parseFrame() );\n\n\t\t}\n\n\t};\n\n\tvar parseRigidBodies = function () {\n\n\t\tvar parseRigidBody = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.name = dv.getTextBuffer();\n\t\t\tp.englishName = dv.getTextBuffer();\n\t\t\tp.boneIndex = dv.getIndex( pmx.metadata.boneIndexSize );\n\t\t\tp.groupIndex = dv.getUint8();\n\t\t\tp.groupTarget = dv.getUint16();\n\t\t\tp.shapeType = dv.getUint8();\n\t\t\tp.width = dv.getFloat32();\n\t\t\tp.height = dv.getFloat32();\n\t\t\tp.depth = dv.getFloat32();\n\t\t\tp.position = dv.getFloat32Array( 3 );\n\t\t\tp.rotation = dv.getFloat32Array( 3 );\n\t\t\tp.weight = dv.getFloat32();\n\t\t\tp.positionDamping = dv.getFloat32();\n\t\t\tp.rotationDamping = dv.getFloat32();\n\t\t\tp.restitution = dv.getFloat32();\n\t\t\tp.friction = dv.getFloat32();\n\t\t\tp.type = dv.getUint8();\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = pmx.metadata;\n\t\tmetadata.rigidBodyCount = dv.getUint32();\n\n\t\tpmx.rigidBodies = [];\n\n\t\tfor ( var i = 0; i < metadata.rigidBodyCount; i++ ) {\n\n\t\t\tpmx.rigidBodies.push( parseRigidBody() );\n\n\t\t}\n\n\t};\n\n\tvar parseConstraints = function () {\n\n\t\tvar parseConstraint = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.name = dv.getTextBuffer();\n\t\t\tp.englishName = dv.getTextBuffer();\n\t\t\tp.type = dv.getUint8();\n\t\t\tp.rigidBodyIndex1 = dv.getIndex( pmx.metadata.rigidBodyIndexSize );\n\t\t\tp.rigidBodyIndex2 = dv.getIndex( pmx.metadata.rigidBodyIndexSize );\n\t\t\tp.position = dv.getFloat32Array( 3 );\n\t\t\tp.rotation = dv.getFloat32Array( 3 );\n\t\t\tp.translationLimitation1 = dv.getFloat32Array( 3 );\n\t\t\tp.translationLimitation2 = dv.getFloat32Array( 3 );\n\t\t\tp.rotationLimitation1 = dv.getFloat32Array( 3 );\n\t\t\tp.rotationLimitation2 = dv.getFloat32Array( 3 );\n\t\t\tp.springPosition = dv.getFloat32Array( 3 );\n\t\t\tp.springRotation = dv.getFloat32Array( 3 );\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = pmx.metadata;\n\t\tmetadata.constraintCount = dv.getUint32();\n\n\t\tpmx.constraints = [];\n\n\t\tfor ( var i = 0; i < metadata.constraintCount; i++ ) {\n\n\t\t\tpmx.constraints.push( parseConstraint() );\n\n\t\t}\n\n\t};\n\n\tparseHeader();\n\tparseVertices();\n\tparseFaces();\n\tparseTextures();\n\tparseMaterials();\n\tparseBones();\n\tparseMorphs();\n\tparseFrames();\n\tparseRigidBodies();\n\tparseConstraints();\n\n\tif ( leftToRight === true ) this.leftToRightModel( pmx );\n\n\t// console.log( pmx ); // for console debug\n\n\treturn pmx;\n\n};\n\nParser.prototype.parseVmd = function ( buffer, leftToRight ) {\n\n\tvar vmd = {};\n\tvar dv = new DataViewEx( buffer );\n\n\tvmd.metadata = {};\n\tvmd.metadata.coordinateSystem = 'left';\n\n\tvar parseHeader = function () {\n\n\t\tvar metadata = vmd.metadata;\n\t\tmetadata.magic = dv.getChars( 30 );\n\n\t\tif ( metadata.magic !== 'Vocaloid Motion Data 0002' ) {\n\n\t\t\tthrow 'VMD file magic is not Vocaloid Motion Data 0002, but ' + metadata.magic;\n\n\t\t}\n\n\t\tmetadata.name = dv.getSjisStringsAsUnicode( 20 );\n\n\t};\n\n\tvar parseMotions = function () {\n\n\t\tvar parseMotion = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.boneName = dv.getSjisStringsAsUnicode( 15 );\n\t\t\tp.frameNum = dv.getUint32();\n\t\t\tp.position = dv.getFloat32Array( 3 );\n\t\t\tp.rotation = dv.getFloat32Array( 4 );\n\t\t\tp.interpolation = dv.getUint8Array( 64 );\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = vmd.metadata;\n\t\tmetadata.motionCount = dv.getUint32();\n\n\t\tvmd.motions = [];\n\t\tfor ( var i = 0; i < metadata.motionCount; i++ ) {\n\n\t\t\tvmd.motions.push( parseMotion() );\n\n\t\t}\n\n\t};\n\n\tvar parseMorphs = function () {\n\n\t\tvar parseMorph = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.morphName = dv.getSjisStringsAsUnicode( 15 );\n\t\t\tp.frameNum = dv.getUint32();\n\t\t\tp.weight = dv.getFloat32();\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = vmd.metadata;\n\t\tmetadata.morphCount = dv.getUint32();\n\n\t\tvmd.morphs = [];\n\t\tfor ( var i = 0; i < metadata.morphCount; i++ ) {\n\n\t\t\tvmd.morphs.push( parseMorph() );\n\n\t\t}\n\n\t};\n\n\tvar parseCameras = function () {\n\n\t\tvar parseCamera = function () {\n\n\t\t\tvar p = {};\n\t\t\tp.frameNum = dv.getUint32();\n\t\t\tp.distance = dv.getFloat32();\n\t\t\tp.position = dv.getFloat32Array( 3 );\n\t\t\tp.rotation = dv.getFloat32Array( 3 );\n\t\t\tp.interpolation = dv.getUint8Array( 24 );\n\t\t\tp.fov = dv.getUint32();\n\t\t\tp.perspective = dv.getUint8();\n\t\t\treturn p;\n\n\t\t};\n\n\t\tvar metadata = vmd.metadata;\n\t\tmetadata.cameraCount = dv.getUint32();\n\n\t\tvmd.cameras = [];\n\t\tfor ( var i = 0; i < metadata.cameraCount; i++ ) {\n\n\t\t\tvmd.cameras.push( parseCamera() );\n\n\t\t}\n\n\t};\n\n\tparseHeader();\n\tparseMotions();\n\tparseMorphs();\n\tparseCameras();\n\n\tif ( leftToRight === true ) this.leftToRightVmd( vmd );\n\n\t// console.log( vmd ); // for console debug\n\n\treturn vmd;\n\n};\n\nParser.prototype.parseVpd = function ( text, leftToRight ) {\n\n\tvar vpd = {};\n\n\tvpd.metadata = {};\n\tvpd.metadata.coordinateSystem = 'left';\n\n\tvpd.bones = [];\n\n\tvar commentPatternG = /\\/\\/\\w*(\\r|\\n|\\r\\n)/g;\n\tvar newlinePattern = /\\r|\\n|\\r\\n/;\n\n\tvar lines = text.replace( commentPatternG, '' ).split( newlinePattern );\n\n\tfunction throwError () {\n\n\t\tthrow 'the file seems not vpd file.';\n\n\t}\n\n\tfunction checkMagic () {\n\n\t\tif ( lines[ 0 ] !== 'Vocaloid Pose Data file' ) {\n\n\t\t\tthrowError();\n\n\t\t}\n\n\t}\n\n\tfunction parseHeader () {\n\n\t\tif ( lines.length < 4 ) {\n\n\t\t\tthrowError();\n\n\t\t}\n\n\t\tvpd.metadata.parentFile = lines[ 2 ];\n\t\tvpd.metadata.boneCount = parseInt( lines[ 3 ] );\n\n\t}\n\n\tfunction parseBones () {\n\n\t\tvar boneHeaderPattern = /^\\s*(Bone[0-9]+)\\s*\\{\\s*(.*)$/;\n\t\tvar boneVectorPattern = /^\\s*(-?[0-9]+\\.[0-9]+)\\s*,\\s*(-?[0-9]+\\.[0-9]+)\\s*,\\s*(-?[0-9]+\\.[0-9]+)\\s*;/;\n\t\tvar boneQuaternionPattern = /^\\s*(-?[0-9]+\\.[0-9]+)\\s*,\\s*(-?[0-9]+\\.[0-9]+)\\s*,\\s*(-?[0-9]+\\.[0-9]+)\\s*,\\s*(-?[0-9]+\\.[0-9]+)\\s*;/;\n\t\tvar boneFooterPattern = /^\\s*}/;\n\n\t\tvar bones = vpd.bones;\n\t\tvar n = null;\n\t\tvar v = null;\n\t\tvar q = null;\n\n\t\tfor ( var i = 4; i < lines.length; i++ ) {\n\n\t\t\tvar line = lines[ i ];\n\n\t\t\tvar result;\n\n\t\t\tresult = line.match( boneHeaderPattern );\n\n\t\t\tif ( result !== null ) {\n\n\t\t\t\tif ( n !== null ) {\n\n\t\t\t\t\tthrowError();\n\n\t\t\t\t}\n\n\t\t\t\tn = result[ 2 ];\n\n\t\t\t}\n\n\t\t\tresult = line.match( boneVectorPattern );\n\n\t\t\tif ( result !== null ) {\n\n\t\t\t\tif ( v !== null ) {\n\n\t\t\t\t\tthrowError();\n\n\t\t\t\t}\n\n\t\t\t\tv = [\n\n\t\t\t\t\tparseFloat( result[ 1 ] ),\n\t\t\t\t\tparseFloat( result[ 2 ] ),\n\t\t\t\t\tparseFloat( result[ 3 ] )\n\n\t\t\t\t];\n\n\t\t\t}\n\n\t\t\tresult = line.match( boneQuaternionPattern );\n\n\t\t\tif ( result !== null ) {\n\n\t\t\t\tif ( q !== null ) {\n\n\t\t\t\t\tthrowError();\n\n\t\t\t\t}\n\n\t\t\t\tq = [\n\n\t\t\t\t\tparseFloat( result[ 1 ] ),\n\t\t\t\t\tparseFloat( result[ 2 ] ),\n\t\t\t\t\tparseFloat( result[ 3 ] ),\n\t\t\t\t\tparseFloat( result[ 4 ] )\n\n\t\t\t\t];\n\n\n\t\t\t}\n\n\t\t\tresult = line.match( boneFooterPattern );\n\n\t\t\tif ( result !== null ) {\n\n\t\t\t\tif ( n === null || v === null || q === null ) {\n\n\t\t\t\t\tthrowError();\n\n\t\t\t\t}\n\n\t\t\t\tbones.push( {\n\n\t\t\t\t\tname: n,\n\t\t\t\t\ttranslation: v,\n\t\t\t\t\tquaternion: q\n\n\t\t\t\t} );\n\n\t\t\t\tn = null;\n\t\t\t\tv = null;\n\t\t\t\tq = null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( n !== null || v !== null || q !== null ) {\n\n\t\t\tthrowError();\n\n\t\t}\n\n\t}\n\n\tcheckMagic();\n\tparseHeader();\n\tparseBones();\n\n\tif ( leftToRight === true ) this.leftToRightVpd( vpd );\n\n\t// console.log( vpd ); // for console debug\n\n\treturn vpd;\n\n};\n\nParser.prototype.mergeVmds = function ( vmds ) {\n\n\tvar v = {};\n\tv.metadata = {};\n\tv.metadata.name = vmds[ 0 ].metadata.name;\n\tv.metadata.coordinateSystem = vmds[ 0 ].metadata.coordinateSystem;\n\tv.metadata.motionCount = 0;\n\tv.metadata.morphCount = 0;\n\tv.metadata.cameraCount = 0;\n\tv.motions = [];\n\tv.morphs = [];\n\tv.cameras = [];\n\n\tfor ( var i = 0; i < vmds.length; i++ ) {\n\n\t\tvar v2 = vmds[ i ];\n\n\t\tv.metadata.motionCount += v2.metadata.motionCount;\n\t\tv.metadata.morphCount += v2.metadata.morphCount;\n\t\tv.metadata.cameraCount += v2.metadata.cameraCount;\n\n\t\tfor ( var j = 0; j < v2.metadata.motionCount; j++ ) {\n\n\t\t\tv.motions.push( v2.motions[ j ] );\n\n\t\t}\n\n\t\tfor ( var j = 0; j < v2.metadata.morphCount; j++ ) {\n\n\t\t\tv.morphs.push( v2.morphs[ j ] );\n\n\t\t}\n\n\t\tfor ( var j = 0; j < v2.metadata.cameraCount; j++ ) {\n\n\t\t\tv.cameras.push( v2.cameras[ j ] );\n\n\t\t}\n\n\t}\n\n\treturn v;\n\n};\n\nParser.prototype.leftToRightModel = function ( model ) {\n\n\tif ( model.metadata.coordinateSystem === 'right' ) {\n\n\t\treturn;\n\n\t}\n\n\tmodel.metadata.coordinateSystem = 'right';\n\n\tvar helper = new DataCreationHelper();\n\n\tfor ( var i = 0; i < model.metadata.vertexCount; i++ ) {\n\n\t\thelper.leftToRightVector3( model.vertices[ i ].position );\n\t\thelper.leftToRightVector3( model.vertices[ i ].normal );\n\n\t}\n\n\tfor ( var i = 0; i < model.metadata.faceCount; i++ ) {\n\n\t\thelper.leftToRightIndexOrder( model.faces[ i ].indices );\n\n\t}\n\n\tfor ( var i = 0; i < model.metadata.boneCount; i++ ) {\n\n\t\thelper.leftToRightVector3( model.bones[ i ].position );\n\n\t}\n\n\t// TODO: support other morph for PMX\n\tfor ( var i = 0; i < model.metadata.morphCount; i++ ) {\n\n\t\tvar m = model.morphs[ i ];\n\n\t\tif ( model.metadata.format === 'pmx' && m.type !== 1 ) {\n\n\t\t\t// TODO: implement\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tfor ( var j = 0; j < m.elements.length; j++ ) {\n\n\t\t\thelper.leftToRightVector3( m.elements[ j ].position );\n\n\t\t}\n\n\t}\n\n\tfor ( var i = 0; i < model.metadata.rigidBodyCount; i++ ) {\n\n\t\thelper.leftToRightVector3( model.rigidBodies[ i ].position );\n\t\thelper.leftToRightEuler( model.rigidBodies[ i ].rotation );\n\n\t}\n\n\tfor ( var i = 0; i < model.metadata.constraintCount; i++ ) {\n\n\t\thelper.leftToRightVector3( model.constraints[ i ].position );\n\t\thelper.leftToRightEuler( model.constraints[ i ].rotation );\n\t\thelper.leftToRightVector3Range( model.constraints[ i ].translationLimitation1, model.constraints[ i ].translationLimitation2 );\n\t\thelper.leftToRightEulerRange( model.constraints[ i ].rotationLimitation1, model.constraints[ i ].rotationLimitation2 );\n\n\t}\n\n};\n\nParser.prototype.leftToRightVmd = function ( vmd ) {\n\n\tif ( vmd.metadata.coordinateSystem === 'right' ) {\n\n\t\treturn;\n\n\t}\n\n\tvmd.metadata.coordinateSystem = 'right';\n\n\tvar helper = new DataCreationHelper();\n\n\tfor ( var i = 0; i < vmd.metadata.motionCount; i++ ) {\n\n\t\thelper.leftToRightVector3( vmd.motions[ i ].position );\n\t\thelper.leftToRightQuaternion( vmd.motions[ i ].rotation );\n\n\t}\n\n\tfor ( var i = 0; i < vmd.metadata.cameraCount; i++ ) {\n\n\t\thelper.leftToRightVector3( vmd.cameras[ i ].position );\n\t\thelper.leftToRightEuler( vmd.cameras[ i ].rotation );\n\n\t}\n\n};\n\nParser.prototype.leftToRightVpd = function ( vpd ) {\n\n\tif ( vpd.metadata.coordinateSystem === 'right' ) {\n\n\t\treturn;\n\n\t}\n\n\tvpd.metadata.coordinateSystem = 'right';\n\n\tvar helper = new DataCreationHelper();\n\n\tfor ( var i = 0; i < vpd.bones.length; i++ ) {\n\n\t\thelper.leftToRightVector3( vpd.bones[ i ].translation );\n\t\thelper.leftToRightQuaternion( vpd.bones[ i ].quaternion );\n\n\t}\n\n};\n\nvar MMDParser = {\n CharsetEncoder: CharsetEncoder,\n Parser: Parser\n};\n\nexport { MMDParser, CharsetEncoder, Parser };\n","var __defProp=Object.defineProperty;var __defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:true,configurable:true,writable:true,value}):obj[key]=value;var __publicField=(obj,key,value)=>{__defNormalProp(obj,typeof key!==\"symbol\"?key+\"\":key,value);return value;};import*as THREE from\"three\";import{Loader,FileLoader,BufferGeometry,Vector3,Float32BufferAttribute,AnimationClip,Mesh,MathUtils,Object3D,Box3,MeshLambertMaterial,TextureLoader,UVMapping,Line3,Plane,Triangle as Triangle$1,Scene,Camera,PlaneGeometry,ShaderMaterial,WebGLRenderTarget,RGBAFormat,DataTexture,FloatType,NoToneMapping,NearestFilter,ClampToEdgeWrapping,Quaternion,AnimationMixer,BufferAttribute,Raycaster,Color,Texture,LinearFilter,MeshBasicMaterial,DoubleSide,DynamicDrawUsage,MeshStandardMaterial,Matrix4,Matrix3,MeshPhongMaterial,Vector2,Vector4,Frustum,Box2,RepeatWrapping,InstancedMesh,InterleavedBuffer,InterleavedBufferAttribute,TrianglesDrawMode,TriangleFanDrawMode,TriangleStripDrawMode,PropertyBinding,InterpolateLinear,CompressedTexture,REVISION,InterpolateDiscrete,Uniform,PerspectiveCamera,WebGLRenderer,NearestMipmapNearestFilter,NearestMipmapLinearFilter,LinearMipmapNearestFilter,LinearMipmapLinearFilter,MirroredRepeatWrapping,MeshPhysicalMaterial,Points,SkinnedMesh,Line,NumberKeyframeTrack,VectorKeyframeTrack,BooleanKeyframeTrack,ColorKeyframeTrack,SphereGeometry,LineBasicMaterial,LatheGeometry,Path,Euler,Bone,BoxGeometry,HalfFloatType,UniformsUtils,EqualStencilFunc,IncrementStencilOp,RawShaderMaterial,AdditiveBlending,FrontSide,UniformsLib,Sphere,Uint32BufferAttribute,DepthTexture,UnsignedShortType,BackSide,Clock,IcosahedronGeometry,Group,OrthographicCamera,NoBlending,QuaternionKeyframeTrack,SkeletonHelper,ShaderLib,ShaderChunk,Ray,EventDispatcher,TOUCH,Spherical,MOUSE,CylinderGeometry,OctahedronGeometry,TorusGeometry,EllipseCurve,GridHelper,LuminanceFormat,RedFormat,MeshDepthMaterial,RGBADepthPacking,DepthStencilFormat,UnsignedInt248Type,MeshNormalMaterial,DstColorFactor,ZeroFactor,AddEquation,DstAlphaFactor,CustomBlending,SrcAlphaFactor,OneMinusSrcAlphaFactor,NormalBlending,LoaderUtils,SpotLight,PointLight,DirectionalLight,ImageBitmapLoader,PointsMaterial,Material,LineSegments,LineLoop,Skeleton,Interpolant,LightProbe,WebGLCubeRenderTarget,Curve,ExtrudeGeometry,Box3Helper,CanvasTexture,StereoCamera,EquirectangularReflectionMapping,AmbientLight,Uint16BufferAttribute,ShapePath,DataTextureLoader,UnsignedByteType,DefaultLoadingManager,LoadingManager,ConeGeometry,ShapeUtils,RGBA_ASTC_4x4_Format,RGBA_BPTC_Format,RGBA_ETC2_EAC_Format,RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT5_Format,RGB_ETC1_Format,RGB_ETC2_Format,RGB_PVRTC_4BPPV1_Format,RGB_S3TC_DXT1_Format,RGFormat,DataUtils,CompressedTextureLoader,RGBA_S3TC_DXT3_Format,RGBA_PVRTC_2BPPV1_Format,RGB_PVRTC_2BPPV1_Format,Shape,BufferGeometryLoader,RectAreaLight,SpriteMaterial,Sprite,MultiplyOperation,AddOperation,MeshToonMaterial,CubeTexture,EquirectangularRefractionMapping,InstancedBufferGeometry,InstancedInterleavedBuffer,WireframeGeometry,SphericalHarmonics3}from\"three\";import potpack from\"potpack\";import{strToU8,zipSync,unzlibSync,gunzipSync,unzipSync,strFromU8}from\"fflate\";import{CharsetEncoder,Parser}from\"mmd-parser\";import{KHR_DF_TRANSFER_SRGB,KHR_DF_FLAG_ALPHA_PREMULTIPLIED,read,VK_FORMAT_UNDEFINED,KHR_SUPERCOMPRESSION_NONE,KHR_SUPERCOMPRESSION_ZSTD,VK_FORMAT_R32G32B32A32_SFLOAT,VK_FORMAT_R16G16B16A16_SFLOAT,VK_FORMAT_R8G8B8A8_UNORM,VK_FORMAT_R8G8B8A8_SRGB,VK_FORMAT_R32G32_SFLOAT,VK_FORMAT_R16G16_SFLOAT,VK_FORMAT_R8G8_UNORM,VK_FORMAT_R8G8_SRGB,VK_FORMAT_R32_SFLOAT,VK_FORMAT_R16_SFLOAT,VK_FORMAT_R8_SRGB,VK_FORMAT_R8_UNORM}from\"ktx-parse\";import{ZSTDDecoder}from\"zstddec\";const _normalData=[[-0.525731,0,0.850651],[-0.442863,0.238856,0.864188],[-0.295242,0,0.955423],[-0.309017,0.5,0.809017],[-0.16246,0.262866,0.951056],[0,0,1],[0,0.850651,0.525731],[-0.147621,0.716567,0.681718],[0.147621,0.716567,0.681718],[0,0.525731,0.850651],[0.309017,0.5,0.809017],[0.525731,0,0.850651],[0.295242,0,0.955423],[0.442863,0.238856,0.864188],[0.16246,0.262866,0.951056],[-0.681718,0.147621,0.716567],[-0.809017,0.309017,0.5],[-0.587785,0.425325,0.688191],[-0.850651,0.525731,0],[-0.864188,0.442863,0.238856],[-0.716567,0.681718,0.147621],[-0.688191,0.587785,0.425325],[-0.5,0.809017,0.309017],[-0.238856,0.864188,0.442863],[-0.425325,0.688191,0.587785],[-0.716567,0.681718,-0.147621],[-0.5,0.809017,-0.309017],[-0.525731,0.850651,0],[0,0.850651,-0.525731],[-0.238856,0.864188,-0.442863],[0,0.955423,-0.295242],[-0.262866,0.951056,-0.16246],[0,1,0],[0,0.955423,0.295242],[-0.262866,0.951056,0.16246],[0.238856,0.864188,0.442863],[0.262866,0.951056,0.16246],[0.5,0.809017,0.309017],[0.238856,0.864188,-0.442863],[0.262866,0.951056,-0.16246],[0.5,0.809017,-0.309017],[0.850651,0.525731,0],[0.716567,0.681718,0.147621],[0.716567,0.681718,-0.147621],[0.525731,0.850651,0],[0.425325,0.688191,0.587785],[0.864188,0.442863,0.238856],[0.688191,0.587785,0.425325],[0.809017,0.309017,0.5],[0.681718,0.147621,0.716567],[0.587785,0.425325,0.688191],[0.955423,0.295242,0],[1,0,0],[0.951056,0.16246,0.262866],[0.850651,-0.525731,0],[0.955423,-0.295242,0],[0.864188,-0.442863,0.238856],[0.951056,-0.16246,0.262866],[0.809017,-0.309017,0.5],[0.681718,-0.147621,0.716567],[0.850651,0,0.525731],[0.864188,0.442863,-0.238856],[0.809017,0.309017,-0.5],[0.951056,0.16246,-0.262866],[0.525731,0,-0.850651],[0.681718,0.147621,-0.716567],[0.681718,-0.147621,-0.716567],[0.850651,0,-0.525731],[0.809017,-0.309017,-0.5],[0.864188,-0.442863,-0.238856],[0.951056,-0.16246,-0.262866],[0.147621,0.716567,-0.681718],[0.309017,0.5,-0.809017],[0.425325,0.688191,-0.587785],[0.442863,0.238856,-0.864188],[0.587785,0.425325,-0.688191],[0.688191,0.587785,-0.425325],[-0.147621,0.716567,-0.681718],[-0.309017,0.5,-0.809017],[0,0.525731,-0.850651],[-0.525731,0,-0.850651],[-0.442863,0.238856,-0.864188],[-0.295242,0,-0.955423],[-0.16246,0.262866,-0.951056],[0,0,-1],[0.295242,0,-0.955423],[0.16246,0.262866,-0.951056],[-0.442863,-0.238856,-0.864188],[-0.309017,-0.5,-0.809017],[-0.16246,-0.262866,-0.951056],[0,-0.850651,-0.525731],[-0.147621,-0.716567,-0.681718],[0.147621,-0.716567,-0.681718],[0,-0.525731,-0.850651],[0.309017,-0.5,-0.809017],[0.442863,-0.238856,-0.864188],[0.16246,-0.262866,-0.951056],[0.238856,-0.864188,-0.442863],[0.5,-0.809017,-0.309017],[0.425325,-0.688191,-0.587785],[0.716567,-0.681718,-0.147621],[0.688191,-0.587785,-0.425325],[0.587785,-0.425325,-0.688191],[0,-0.955423,-0.295242],[0,-1,0],[0.262866,-0.951056,-0.16246],[0,-0.850651,0.525731],[0,-0.955423,0.295242],[0.238856,-0.864188,0.442863],[0.262866,-0.951056,0.16246],[0.5,-0.809017,0.309017],[0.716567,-0.681718,0.147621],[0.525731,-0.850651,0],[-0.238856,-0.864188,-0.442863],[-0.5,-0.809017,-0.309017],[-0.262866,-0.951056,-0.16246],[-0.850651,-0.525731,0],[-0.716567,-0.681718,-0.147621],[-0.716567,-0.681718,0.147621],[-0.525731,-0.850651,0],[-0.5,-0.809017,0.309017],[-0.238856,-0.864188,0.442863],[-0.262866,-0.951056,0.16246],[-0.864188,-0.442863,0.238856],[-0.809017,-0.309017,0.5],[-0.688191,-0.587785,0.425325],[-0.681718,-0.147621,0.716567],[-0.442863,-0.238856,0.864188],[-0.587785,-0.425325,0.688191],[-0.309017,-0.5,0.809017],[-0.147621,-0.716567,0.681718],[-0.425325,-0.688191,0.587785],[-0.16246,-0.262866,0.951056],[0.442863,-0.238856,0.864188],[0.16246,-0.262866,0.951056],[0.309017,-0.5,0.809017],[0.147621,-0.716567,0.681718],[0,-0.525731,0.850651],[0.425325,-0.688191,0.587785],[0.587785,-0.425325,0.688191],[0.688191,-0.587785,0.425325],[-0.955423,0.295242,0],[-0.951056,0.16246,0.262866],[-1,0,0],[-0.850651,0,0.525731],[-0.955423,-0.295242,0],[-0.951056,-0.16246,0.262866],[-0.864188,0.442863,-0.238856],[-0.951056,0.16246,-0.262866],[-0.809017,0.309017,-0.5],[-0.864188,-0.442863,-0.238856],[-0.951056,-0.16246,-0.262866],[-0.809017,-0.309017,-0.5],[-0.681718,0.147621,-0.716567],[-0.681718,-0.147621,-0.716567],[-0.850651,0,-0.525731],[-0.688191,0.587785,-0.425325],[-0.587785,0.425325,-0.688191],[-0.425325,0.688191,-0.587785],[-0.425325,-0.688191,-0.587785],[-0.587785,-0.425325,-0.688191],[-0.688191,-0.587785,-0.425325]];class MD2Loader extends Loader{constructor(manager){super(manager);}load(url,onLoad,onProgress,onError){const scope=this;const loader=new FileLoader(scope.manager);loader.setPath(scope.path);loader.setResponseType(\"arraybuffer\");loader.setRequestHeader(scope.requestHeader);loader.setWithCredentials(scope.withCredentials);loader.load(url,function(buffer){try{onLoad(scope.parse(buffer));}catch(e){if(onError){onError(e);}else{console.error(e);}scope.manager.itemError(url);}},onProgress,onError);}parse(buffer){const data=new DataView(buffer);const header={};const headerNames=[\"ident\",\"version\",\"skinwidth\",\"skinheight\",\"framesize\",\"num_skins\",\"num_vertices\",\"num_st\",\"num_tris\",\"num_glcmds\",\"num_frames\",\"offset_skins\",\"offset_st\",\"offset_tris\",\"offset_frames\",\"offset_glcmds\",\"offset_end\"];for(let i2=0;i20){const positions2=[];for(let j=0,jl=vertexIndices.length;j0){const normals2=[];for(let j=0,jl=vertexIndices.length;j1){const name=chunks[1];if(!frameRanges[name])frameRanges[name]={start:Infinity,end:-Infinity};const range=frameRanges[name];if(i2range.end)range.end=i2;if(!firstAnimation)firstAnimation=name;}i2++;}for(const name in frameRanges){const range=frameRanges[name];this.createAnimation(name,range.start,range.end,fps);}this.firstAnimation=firstAnimation;}setAnimationDirectionForward(name){const animation=this.animationsMap[name];if(animation){animation.direction=1;animation.directionBackwards=false;}}setAnimationDirectionBackward(name){const animation=this.animationsMap[name];if(animation){animation.direction=-1;animation.directionBackwards=true;}}setAnimationFPS(name,fps){const animation=this.animationsMap[name];if(animation){animation.fps=fps;animation.duration=(animation.end-animation.start)/animation.fps;}}setAnimationDuration(name,duration){const animation=this.animationsMap[name];if(animation){animation.duration=duration;animation.fps=(animation.end-animation.start)/animation.duration;}}setAnimationWeight(name,weight){const animation=this.animationsMap[name];if(animation){animation.weight=weight;}}setAnimationTime(name,time){const animation=this.animationsMap[name];if(animation){animation.time=time;}}getAnimationTime(name){let time=0;const animation=this.animationsMap[name];if(animation){time=animation.time;}return time;}getAnimationDuration(name){let duration=-1;const animation=this.animationsMap[name];if(animation){duration=animation.duration;}return duration;}playAnimation(name){const animation=this.animationsMap[name];if(animation){animation.time=0;animation.active=true;}else{console.warn(\"THREE.MorphBlendMesh: animation[\"+name+\"] undefined in .playAnimation()\");}}stopAnimation(name){const animation=this.animationsMap[name];if(animation){animation.active=false;}}update(delta){for(let i2=0,il=this.animationsList.length;i2animation.duration||animation.time<0){animation.direction*=-1;if(animation.time>animation.duration){animation.time=animation.duration;animation.directionBackwards=true;}if(animation.time<0){animation.time=0;animation.directionBackwards=false;}}}else{animation.time=animation.time%animation.duration;if(animation.time<0)animation.time+=animation.duration;}const keyframe=animation.start+MathUtils.clamp(Math.floor(animation.time/frameTime),0,animation.length-1);const weight=animation.weight;if(keyframe!==animation.currentFrame){this.morphTargetInfluences[animation.lastFrame]=0;this.morphTargetInfluences[animation.currentFrame]=1*weight;this.morphTargetInfluences[keyframe]=0;animation.lastFrame=animation.currentFrame;animation.currentFrame=keyframe;}let mix=animation.time%frameTime/frameTime;if(animation.directionBackwards)mix=1-mix;if(animation.currentFrame!==animation.lastFrame){this.morphTargetInfluences[animation.currentFrame]=mix*weight;this.morphTargetInfluences[animation.lastFrame]=(1-mix)*weight;}else{this.morphTargetInfluences[animation.currentFrame]=weight;}}}}class MD2CharacterComplex{constructor(){this.scale=1;this.animationFPS=6;this.transitionFrames=15;this.maxSpeed=275;this.maxReverseSpeed=-275;this.frontAcceleration=600;this.backAcceleration=600;this.frontDecceleration=600;this.angularSpeed=2.5;this.root=new Object3D();this.meshBody=null;this.meshWeapon=null;this.controls=null;this.skinsBody=[];this.skinsWeapon=[];this.weapons=[];this.currentSkin=void 0;this.onLoadComplete=function(){};this.meshes=[];this.animations={};this.loadCounter=0;this.speed=0;this.bodyOrientation=0;this.walkSpeed=this.maxSpeed;this.crouchSpeed=this.maxSpeed*0.5;this.activeAnimation=null;this.oldAnimation=null;}enableShadows(enable){for(let i2=0;i20){mix=(this.transitionFrames-this.blendCounter)/this.transitionFrames;this.blendCounter-=1;}if(this.meshBody){this.meshBody.update(delta);this.meshBody.setAnimationWeight(this.activeAnimation,mix);this.meshBody.setAnimationWeight(this.oldAnimation,1-mix);}if(this.meshWeapon){this.meshWeapon.update(delta);this.meshWeapon.setAnimationWeight(this.activeAnimation,mix);this.meshWeapon.setAnimationWeight(this.oldAnimation,1-mix);}}updateBehaviors(){const controls=this.controls;const animations=this.animations;let moveAnimation,idleAnimation;if(controls.crouch){moveAnimation=animations[\"crouchMove\"];idleAnimation=animations[\"crouchIdle\"];}else{moveAnimation=animations[\"move\"];idleAnimation=animations[\"idle\"];}if(controls.jump){moveAnimation=animations[\"jump\"];idleAnimation=animations[\"jump\"];}if(controls.attack){if(controls.crouch){moveAnimation=animations[\"crouchAttack\"];idleAnimation=animations[\"crouchAttack\"];}else{moveAnimation=animations[\"attack\"];idleAnimation=animations[\"attack\"];}}if(controls.moveForward||controls.moveBackward||controls.moveLeft||controls.moveRight){if(this.activeAnimation!==moveAnimation){this.setAnimation(moveAnimation);}}if(Math.abs(this.speed)<0.2*this.maxSpeed&&!(controls.moveLeft||controls.moveRight||controls.moveForward||controls.moveBackward)){if(this.activeAnimation!==idleAnimation){this.setAnimation(idleAnimation);}}if(controls.moveForward){if(this.meshBody){this.meshBody.setAnimationDirectionForward(this.activeAnimation);this.meshBody.setAnimationDirectionForward(this.oldAnimation);}if(this.meshWeapon){this.meshWeapon.setAnimationDirectionForward(this.activeAnimation);this.meshWeapon.setAnimationDirectionForward(this.oldAnimation);}}if(controls.moveBackward){if(this.meshBody){this.meshBody.setAnimationDirectionBackward(this.activeAnimation);this.meshBody.setAnimationDirectionBackward(this.oldAnimation);}if(this.meshWeapon){this.meshWeapon.setAnimationDirectionBackward(this.activeAnimation);this.meshWeapon.setAnimationDirectionBackward(this.oldAnimation);}}}updateMovementModel(delta){function exponentialEaseOut(k){return k===1?1:-Math.pow(2,-10*k)+1;}const controls=this.controls;if(controls.crouch)this.maxSpeed=this.crouchSpeed;else this.maxSpeed=this.walkSpeed;this.maxReverseSpeed=-this.maxSpeed;if(controls.moveForward)this.speed=MathUtils.clamp(this.speed+delta*this.frontAcceleration,this.maxReverseSpeed,this.maxSpeed);if(controls.moveBackward)this.speed=MathUtils.clamp(this.speed-delta*this.backAcceleration,this.maxReverseSpeed,this.maxSpeed);const dir=1;if(controls.moveLeft){this.bodyOrientation+=delta*this.angularSpeed;this.speed=MathUtils.clamp(this.speed+dir*delta*this.frontAcceleration,this.maxReverseSpeed,this.maxSpeed);}if(controls.moveRight){this.bodyOrientation-=delta*this.angularSpeed;this.speed=MathUtils.clamp(this.speed+dir*delta*this.frontAcceleration,this.maxReverseSpeed,this.maxSpeed);}if(!(controls.moveForward||controls.moveBackward)){if(this.speed>0){const k=exponentialEaseOut(this.speed/this.maxSpeed);this.speed=MathUtils.clamp(this.speed-k*delta*this.frontDecceleration,0,this.maxSpeed);}else{const k=exponentialEaseOut(this.speed/this.maxReverseSpeed);this.speed=MathUtils.clamp(this.speed+k*delta*this.backAcceleration,this.maxReverseSpeed,0);}}const forwardDelta=this.speed*delta;this.root.position.x+=Math.sin(this.bodyOrientation)*forwardDelta;this.root.position.z+=Math.cos(this.bodyOrientation)*forwardDelta;this.root.rotation.y=this.bodyOrientation;}// internal\n_createPart(geometry2,skinMap){const materialWireframe=new MeshLambertMaterial({color:16755200,wireframe:true,morphTargets:true,morphNormals:true});const materialTexture=new MeshLambertMaterial({color:16777215,wireframe:false,map:skinMap,morphTargets:true,morphNormals:true});const mesh=new MorphBlendMesh(geometry2,materialTexture);mesh.rotation.y=-Math.PI/2;mesh.materialTexture=materialTexture;mesh.materialWireframe=materialWireframe;mesh.autoCreateAnimations(this.animationFPS);return mesh;}}const Visible=0;const Deleted=1;const _v1$5=/*@__PURE__*/new Vector3();const _line3=/*@__PURE__*/new Line3();const _plane$2=/*@__PURE__*/new Plane();const _closestPoint$1=/*@__PURE__*/new Vector3();const _triangle=/*@__PURE__*/new Triangle$1();class ConvexHull{constructor(){this.tolerance=-1;this.faces=[];this.newFaces=[];this.assigned=new VertexList();this.unassigned=new VertexList();this.vertices=[];}setFromPoints(points){if(points.length>=4){this.makeEmpty();for(let i2=0,l=points.length;i2this.tolerance)return false;}return true;}intersectRay(ray,target){const faces=this.faces;let tNear=-Infinity;let tFar=Infinity;for(let i2=0,l=faces.length;i20&&vD>=0)return null;const t2=vD!==0?-vN/vD:0;if(t2<=0)continue;if(vD>0){tFar=Math.min(t2,tFar);}else{tNear=Math.max(t2,tNear);}if(tNear>tFar){return null;}}if(tNear!==-Infinity){ray.at(tNear,target);}else{ray.at(tFar,target);}return target;}intersectsRay(ray){return this.intersectRay(ray,_v1$5)!==null;}makeEmpty(){this.faces=[];this.vertices=[];return this;}// Adds a vertex to the 'assigned' list of vertices and assigns it to the given face\naddVertexToFace(vertex,face){vertex.face=face;if(face.outside===null){this.assigned.append(vertex);}else{this.assigned.insertBefore(face.outside,vertex);}face.outside=vertex;return this;}// Removes a vertex from the 'assigned' list of vertices and from the given face\nremoveVertexFromFace(vertex,face){if(vertex===face.outside){if(vertex.next!==null&&vertex.next.face===face){face.outside=vertex.next;}else{face.outside=null;}}this.assigned.remove(vertex);return this;}// Removes all the visible vertices that a given face is able to see which are stored in the 'assigned' vertex list\nremoveAllVerticesFromFace(face){if(face.outside!==null){const start=face.outside;let end=face.outside;while(end.next!==null&&end.next.face===face){end=end.next;}this.assigned.removeSubList(start,end);start.prev=end.next=null;face.outside=null;return start;}}// Removes all the visible vertices that 'face' is able to see\ndeleteFaceVertices(face,absorbingFace){const faceVertices=this.removeAllVerticesFromFace(face);if(faceVertices!==void 0){if(absorbingFace===void 0){this.unassigned.appendChain(faceVertices);}else{let vertex=faceVertices;do{const nextVertex=vertex.next;const distance=absorbingFace.distanceToPoint(vertex.point);if(distance>this.tolerance){this.addVertexToFace(vertex,absorbingFace);}else{this.unassigned.append(vertex);}vertex=nextVertex;}while(vertex!==null);}}return this;}// Reassigns as many vertices as possible from the unassigned list to the new faces\nresolveUnassignedPoints(newFaces){if(this.unassigned.isEmpty()===false){let vertex=this.unassigned.first();do{const nextVertex=vertex.next;let maxDistance=this.tolerance;let maxFace=null;for(let i2=0;i2maxDistance){maxDistance=distance;maxFace=face;}if(maxDistance>1e3*this.tolerance)break;}}if(maxFace!==null){this.addVertexToFace(vertex,maxFace);}vertex=nextVertex;}while(vertex!==null);}return this;}// Computes the extremes of a simplex which will be the initial hull\ncomputeExtremes(){const min=new Vector3();const max=new Vector3();const minVertices=[];const maxVertices=[];for(let i2=0;i2<3;i2++){minVertices[i2]=maxVertices[i2]=this.vertices[0];}min.copy(this.vertices[0].point);max.copy(this.vertices[0].point);for(let i2=0,l=this.vertices.length;i2max.getComponent(j)){max.setComponent(j,point.getComponent(j));maxVertices[j]=vertex;}}}this.tolerance=3*Number.EPSILON*(Math.max(Math.abs(min.x),Math.abs(max.x))+Math.max(Math.abs(min.y),Math.abs(max.y))+Math.max(Math.abs(min.z),Math.abs(max.z)));return{min:minVertices,max:maxVertices};}// Computes the initial simplex assigning to its faces all the points\n// that are candidates to form part of the hull\ncomputeInitialHull(){const vertices=this.vertices;const extremes=this.computeExtremes();const min=extremes.min;const max=extremes.max;let maxDistance=0;let index=0;for(let i2=0;i2<3;i2++){const distance=max[i2].point.getComponent(i2)-min[i2].point.getComponent(i2);if(distance>maxDistance){maxDistance=distance;index=i2;}}const v0=min[index];const v12=max[index];let v2;let v3;maxDistance=0;_line3.set(v0.point,v12.point);for(let i2=0,l=this.vertices.length;i2maxDistance){maxDistance=distance;v2=vertex;}}}maxDistance=-1;_plane$2.setFromCoplanarPoints(v0.point,v12.point,v2.point);for(let i2=0,l=this.vertices.length;i2maxDistance){maxDistance=distance;v3=vertex;}}}const faces=[];if(_plane$2.distanceToPoint(v3.point)<0){faces.push(Face$1.create(v0,v12,v2),Face$1.create(v3,v12,v0),Face$1.create(v3,v2,v12),Face$1.create(v3,v0,v2));for(let i2=0;i2<3;i2++){const j=(i2+1)%3;faces[i2+1].getEdge(2).setTwin(faces[0].getEdge(j));faces[i2+1].getEdge(1).setTwin(faces[j+1].getEdge(0));}}else{faces.push(Face$1.create(v0,v2,v12),Face$1.create(v3,v0,v12),Face$1.create(v3,v12,v2),Face$1.create(v3,v2,v0));for(let i2=0;i2<3;i2++){const j=(i2+1)%3;faces[i2+1].getEdge(2).setTwin(faces[0].getEdge((3-i2)%3));faces[i2+1].getEdge(0).setTwin(faces[j+1].getEdge(1));}}for(let i2=0;i2<4;i2++){this.faces.push(faces[i2]);}for(let i2=0,l=vertices.length;i2maxDistance){maxDistance=distance;maxFace=this.faces[j];}}if(maxFace!==null){this.addVertexToFace(vertex,maxFace);}}}return this;}// Removes inactive faces\nreindexFaces(){const activeFaces=[];for(let i2=0;i2maxDistance){maxDistance=distance;eyeVertex=vertex;}vertex=vertex.next;}while(vertex!==null&&vertex.face===eyeFace);return eyeVertex;}}// Computes a chain of half edges in CCW order called the 'horizon'.\n// For an edge to be part of the horizon it must join a face that can see\n// 'eyePoint' and a face that cannot see 'eyePoint'.\ncomputeHorizon(eyePoint,crossEdge,face,horizon){this.deleteFaceVertices(face);face.mark=Deleted;let edge;if(crossEdge===null){edge=crossEdge=face.getEdge(0);}else{edge=crossEdge.next;}do{const twinEdge=edge.twin;const oppositeFace=twinEdge.face;if(oppositeFace.mark===Visible){if(oppositeFace.distanceToPoint(eyePoint)>this.tolerance){this.computeHorizon(eyePoint,twinEdge,oppositeFace,horizon);}else{horizon.push(edge);}}edge=edge.next;}while(edge!==crossEdge);return this;}// Creates a face with the vertices 'eyeVertex.point', 'horizonEdge.tail' and 'horizonEdge.head' in CCW order\naddAdjoiningFace(eyeVertex,horizonEdge){const face=Face$1.create(eyeVertex,horizonEdge.tail(),horizonEdge.head());this.faces.push(face);face.getEdge(-1).setTwin(horizonEdge.twin);return face.getEdge(0);}// Adds 'horizon.length' faces to the hull, each face will be linked with the\n// horizon opposite face and the face on the left/right\naddNewFaces(eyeVertex,horizon){this.newFaces=[];let firstSideEdge=null;let previousSideEdge=null;for(let i2=0;i20){edge=edge.next;i2--;}while(i2<0){edge=edge.prev;i2++;}return edge;}compute(){const a2=this.edge.tail();const b2=this.edge.head();const c=this.edge.next.head();_triangle.set(a2.point,b2.point,c.point);_triangle.getNormal(this.normal);_triangle.getMidpoint(this.midpoint);this.area=_triangle.getArea();this.constant=this.normal.dot(this.midpoint);return this;}distanceToPoint(point){return this.normal.dot(point)-this.constant;}};class HalfEdge{constructor(vertex,face){this.vertex=vertex;this.prev=null;this.next=null;this.twin=null;this.face=face;}head(){return this.vertex;}tail(){return this.prev?this.prev.vertex:null;}length(){const head=this.head();const tail=this.tail();if(tail!==null){return tail.point.distanceTo(head.point);}return-1;}lengthSquared(){const head=this.head();const tail=this.tail();if(tail!==null){return tail.point.distanceToSquared(head.point);}return-1;}setTwin(edge){this.twin=edge;edge.twin=this;return this;}}class VertexNode{constructor(point){this.point=point;this.prev=null;this.next=null;this.face=null;}}class VertexList{constructor(){this.head=null;this.tail=null;}first(){return this.head;}last(){return this.tail;}clear(){this.head=this.tail=null;return this;}// Inserts a vertex before the target vertex\ninsertBefore(target,vertex){vertex.prev=target.prev;vertex.next=target;if(vertex.prev===null){this.head=vertex;}else{vertex.prev.next=vertex;}target.prev=vertex;return this;}// Inserts a vertex after the target vertex\ninsertAfter(target,vertex){vertex.prev=target;vertex.next=target.next;if(vertex.next===null){this.tail=vertex;}else{vertex.next.prev=vertex;}target.next=vertex;return this;}// Appends a vertex to the end of the linked list\nappend(vertex){if(this.head===null){this.head=vertex;}else{this.tail.next=vertex;}vertex.prev=this.tail;vertex.next=null;this.tail=vertex;return this;}// Appends a chain of vertices where 'vertex' is the head.\nappendChain(vertex){if(this.head===null){this.head=vertex;}else{this.tail.next=vertex;}vertex.prev=this.tail;while(vertex.next!==null){vertex=vertex.next;}this.tail=vertex;return this;}// Removes a vertex from the linked list\nremove(vertex){if(vertex.prev===null){this.head=vertex.next;}else{vertex.prev.next=vertex.next;}if(vertex.next===null){this.tail=vertex.prev;}else{vertex.next.prev=vertex.prev;}return this;}// Removes a list of vertices whose 'head' is 'a' and whose 'tail' is b\nremoveSubList(a2,b2){if(a2.prev===null){this.head=b2.next;}else{a2.prev.next=b2.next;}if(b2.next===null){this.tail=a2.prev;}else{b2.next.prev=a2.prev;}return this;}isEmpty(){return this.head===null;}}class ConvexGeometry extends BufferGeometry{constructor(points=[]){super();const vertices=[];const normals=[];const convexHull=new ConvexHull().setFromPoints(points);const faces=convexHull.faces;for(let i2=0;i2maxTotalIterations){debris.push(subObject);return;}let angle=Math.PI;if(numIterations===0){tempPlane2.normal.copy(tempPlane1.normal);tempPlane2.constant=tempPlane1.constant;}else{if(numIterations<=maxRadialIterations){angle=(endAngle-startAngle)*(0.2+0.6*Math.random())+startAngle;scope.tempVector3_2.copy(object.position).sub(pointOfImpact).applyAxisAngle(normal,angle).add(pointOfImpact);tempPlane2.setFromCoplanarPoints(pointOfImpact,scope.tempVector3,scope.tempVector3_2);}else{angle=(0.5*(numIterations&1)+0.2*(2-Math.random()))*Math.PI;scope.tempVector3_2.copy(pointOfImpact).sub(subObject.position).applyAxisAngle(normal,angle).add(subObject.position);scope.tempVector3_3.copy(normal).add(subObject.position);tempPlane2.setFromCoplanarPoints(subObject.position,scope.tempVector3_3,scope.tempVector3_2);}}scope.cutByPlane(subObject,tempPlane2,scope.tempResultObjects);const obj1=scope.tempResultObjects.object1;const obj2=scope.tempResultObjects.object2;if(obj1){subdivideRadial(obj1,startAngle,angle,numIterations+1);}if(obj2){subdivideRadial(obj2,angle,endAngle,numIterations+1);}}subdivideRadial(object,0,2*Math.PI,0);return debris;}cutByPlane(object,plane,output){const geometry2=object.geometry;const coords=geometry2.attributes.position.array;const normals=geometry2.attributes.normal.array;const numPoints=coords.length/3;let numFaces=numPoints/3;let indices=geometry2.getIndex();if(indices){indices=indices.array;numFaces=indices.length/3;}function getVertexIndex(faceIdx,vert){const idx=faceIdx*3+vert;return indices?indices[idx]:idx;}const points1=[];const points2=[];const delta=this.smallDelta;const numPointPairs=numPoints*numPoints;for(let i2=0;i2delta){mark0=2;points2.push(p0.clone());}else if(d<-delta){mark0=1;points1.push(p0.clone());}else{mark0=3;points1.push(p0.clone());points2.push(p0.clone());}let mark1=0;d=localPlane.distanceToPoint(p1);if(d>delta){mark1=2;points2.push(p1.clone());}else if(d<-delta){mark1=1;points1.push(p1.clone());}else{mark1=3;points1.push(p1.clone());points2.push(p1.clone());}if(mark0===1&&mark1===2||mark0===2&&mark1===1){this.tempLine1.start.copy(p0);this.tempLine1.end.copy(p1);let intersection=new Vector3();intersection=localPlane.intersectLine(this.tempLine1,intersection);if(intersection===null){console.error(\"Internal error: segment does not intersect plane.\");output.segmentedObject1=null;output.segmentedObject2=null;return 0;}points1.push(intersection);points2.push(intersection.clone());}}}const newMass=object.userData.mass*0.5;this.tempCM1.set(0,0,0);let radius1=0;const numPoints1=points1.length;if(numPoints1>0){for(let i2=0;i20){for(let i2=0;i24){object1=new Mesh(new ConvexGeometry(points1),object.material);object1.position.copy(this.tempCM1);object1.quaternion.copy(object.quaternion);this.prepareBreakableObject(object1,newMass,object.userData.velocity,object.userData.angularVelocity,2*radius1>this.minSizeForBreak);numObjects++;}if(numPoints2>4){object2=new Mesh(new ConvexGeometry(points2),object.material);object2.position.copy(this.tempCM2);object2.quaternion.copy(object.quaternion);this.prepareBreakableObject(object2,newMass,object.userData.velocity,object.userData.angularVelocity,2*radius2>this.minSizeForBreak);numObjects++;}output.object1=object1;output.object2=object2;return numObjects;}static transformFreeVector(v,m){const x=v.x,y=v.y,z=v.z;const e=m.elements;v.x=e[0]*x+e[4]*y+e[8]*z;v.y=e[1]*x+e[5]*y+e[9]*z;v.z=e[2]*x+e[6]*y+e[10]*z;return v;}static transformFreeVectorInverse(v,m){const x=v.x,y=v.y,z=v.z;const e=m.elements;v.x=e[0]*x+e[1]*y+e[2]*z;v.y=e[4]*x+e[5]*y+e[6]*z;v.z=e[8]*x+e[9]*y+e[10]*z;return v;}static transformTiedVectorInverse(v,m){const x=v.x,y=v.y,z=v.z;const e=m.elements;v.x=e[0]*x+e[1]*y+e[2]*z-e[12];v.y=e[4]*x+e[5]*y+e[6]*z-e[13];v.z=e[8]*x+e[9]*y+e[10]*z-e[14];return v;}static transformPlaneToLocalSpace(plane,m,resultPlane){resultPlane.normal.copy(plane.normal);resultPlane.constant=plane.constant;const referencePoint=ConvexObjectBreaker.transformTiedVectorInverse(plane.coplanarPoint(_v1$4),m);ConvexObjectBreaker.transformFreeVectorInverse(resultPlane.normal,m);resultPlane.constant=-referencePoint.dot(resultPlane.normal);}}class GPUComputationRenderer{constructor(sizeX,sizeY,renderer){this.variables=[];this.currentTextureIndex=0;let dataType=FloatType;const scene=new Scene();const camera=new Camera();camera.position.z=1;const passThruUniforms={passThruTexture:{value:null}};const passThruShader=createShaderMaterial(getPassThroughFragmentShader(),passThruUniforms);const mesh=new Mesh(new PlaneGeometry(2,2),passThruShader);scene.add(mesh);this.setDataType=function(type){dataType=type;return this;};this.addVariable=function(variableName,computeFragmentShader,initialValueTexture){const material2=this.createShaderMaterial(computeFragmentShader);const variable={name:variableName,initialValueTexture,material:material2,dependencies:null,renderTargets:[],wrapS:null,wrapT:null,minFilter:NearestFilter,magFilter:NearestFilter};this.variables.push(variable);return variable;};this.setVariableDependencies=function(variable,dependencies){variable.dependencies=dependencies;};this.init=function(){if(renderer.capabilities.isWebGL2===false&&renderer.extensions.has(\"OES_texture_float\")===false){return\"No OES_texture_float support for float textures.\";}if(renderer.capabilities.maxVertexTextures===0){return\"No support for vertex shader textures.\";}for(let i2=0;i2=0;j--){vector.copy(shape[j]);vector.applyQuaternion(quaternion);vector.add(point);vertices.push(vector.x,vector.y,vector.z);normals.push(normal.x,normal.y,normal.z);colors.push(color[0],color[1],color[2]);}}const vector1=new Vector3();const vector2=new Vector3();const vector3=new Vector3();const vector4=new Vector3();const normal1=new Vector3();const normal2=new Vector3();const normal3=new Vector3();const normal4=new Vector3();function extrudeShape(shape,offset2,color){for(let j=0,jl=shape.length;j10){fromPoint.set(-0.75,-0.35,0);fromPoint.applyQuaternion(quaternion);fromPoint.add(point);toPoint.set(0.75,-0.35,0);toPoint.applyQuaternion(quaternion);toPoint.add(point);extrudeShape(tube1,fromPoint,toPoint);fromPoint.set(-0.7,-0.3,0);fromPoint.applyQuaternion(quaternion);fromPoint.add(point);toPoint.set(-0.7,-point.y,0);toPoint.applyQuaternion(quaternion);toPoint.add(point);extrudeShape(tube2,fromPoint,toPoint);fromPoint.set(0.7,-0.3,0);fromPoint.applyQuaternion(quaternion);fromPoint.add(point);toPoint.set(0.7,-point.y,0);toPoint.applyQuaternion(quaternion);toPoint.add(point);extrudeShape(tube3,fromPoint,toPoint);}else{fromPoint.set(0,-0.2,0);fromPoint.applyQuaternion(quaternion);fromPoint.add(point);toPoint.set(0,-point.y,0);toPoint.applyQuaternion(quaternion);toPoint.add(point);extrudeShape(tube3,fromPoint,toPoint);}}this.setAttribute(\"position\",new BufferAttribute(new Float32Array(vertices),3));this.setAttribute(\"normal\",new BufferAttribute(new Float32Array(normals),3));}}class RollerCoasterShadowGeometry extends BufferGeometry{constructor(curve,divisions){super();const vertices=[];const up=new Vector3(0,1,0);const forward=new Vector3();const quaternion=new Quaternion();const prevQuaternion=new Quaternion();prevQuaternion.setFromAxisAngle(up,Math.PI/2);const point=new Vector3();const prevPoint=new Vector3();prevPoint.copy(curve.getPointAt(0));prevPoint.y=0;const vector1=new Vector3();const vector2=new Vector3();const vector3=new Vector3();const vector4=new Vector3();for(let i2=1;i2<=divisions;i2++){point.copy(curve.getPointAt(i2/divisions));point.y=0;forward.subVectors(point,prevPoint);const angle=Math.atan2(forward.x,forward.z);quaternion.setFromAxisAngle(up,angle);vector1.set(-0.3,0,0);vector1.applyQuaternion(quaternion);vector1.add(point);vector2.set(0.3,0,0);vector2.applyQuaternion(quaternion);vector2.add(point);vector3.set(0.3,0,0);vector3.applyQuaternion(prevQuaternion);vector3.add(prevPoint);vector4.set(-0.3,0,0);vector4.applyQuaternion(prevQuaternion);vector4.add(prevPoint);vertices.push(vector1.x,vector1.y,vector1.z);vertices.push(vector2.x,vector2.y,vector2.z);vertices.push(vector4.x,vector4.y,vector4.z);vertices.push(vector2.x,vector2.y,vector2.z);vertices.push(vector3.x,vector3.y,vector3.z);vertices.push(vector4.x,vector4.y,vector4.z);prevPoint.copy(point);prevQuaternion.copy(quaternion);}this.setAttribute(\"position\",new BufferAttribute(new Float32Array(vertices),3));}}class SkyGeometry extends BufferGeometry{constructor(){super();const vertices=[];for(let i2=0;i2<100;i2++){const x=Math.random()*800-400;const y=Math.random()*50+50;const z=Math.random()*800-400;const size2=Math.random()*40+20;vertices.push(x-size2,y,z-size2);vertices.push(x+size2,y,z-size2);vertices.push(x-size2,y,z+size2);vertices.push(x+size2,y,z-size2);vertices.push(x+size2,y,z+size2);vertices.push(x-size2,y,z+size2);}this.setAttribute(\"position\",new BufferAttribute(new Float32Array(vertices),3));}}class TreesGeometry extends BufferGeometry{constructor(landscape){super();const vertices=[];const colors=[];const raycaster=new Raycaster();raycaster.ray.direction.set(0,-1,0);const _color2=new Color();for(let i2=0;i2<2e3;i2++){const x=Math.random()*500-250;const z=Math.random()*500-250;raycaster.ray.origin.set(x,50,z);const intersections=raycaster.intersectObject(landscape);if(intersections.length===0)continue;const y=intersections[0].point.y;const height=Math.random()*5+0.5;let angle=Math.random()*Math.PI*2;vertices.push(x+Math.sin(angle),y,z+Math.cos(angle));vertices.push(x,y+height,z);vertices.push(x+Math.sin(angle+Math.PI),y,z+Math.cos(angle+Math.PI));angle+=Math.PI/2;vertices.push(x+Math.sin(angle),y,z+Math.cos(angle));vertices.push(x,y+height,z);vertices.push(x+Math.sin(angle+Math.PI),y,z+Math.cos(angle+Math.PI));const random=Math.random()*0.1;for(let j=0;j<6;j++){_color2.setRGB(0.2+random,0.4+random,0,\"srgb\");colors.push(_color2.r,_color2.g,_color2.b);}}this.setAttribute(\"position\",new BufferAttribute(new Float32Array(vertices),3));this.setAttribute(\"color\",new BufferAttribute(new Float32Array(colors),3));}}class Timer{constructor(){__publicField(this,\"_previousTime\");__publicField(this,\"_currentTime\");__publicField(this,\"_delta\");__publicField(this,\"_elapsed\");__publicField(this,\"_timescale\");__publicField(this,\"_useFixedDelta\");__publicField(this,\"_fixedDelta\");__publicField(this,\"_usePageVisibilityAPI\");__publicField(this,\"_pageVisibilityHandler\");this._previousTime=0;this._currentTime=0;this._delta=0;this._elapsed=0;this._timescale=1;this._useFixedDelta=false;this._fixedDelta=16.67;this._usePageVisibilityAPI=typeof document!==\"undefined\"&&document.hidden!==void 0;}// https://github.com/mrdoob/three.js/issues/20575\n// use Page Visibility API to avoid large time delta values\nconnect(){if(this._usePageVisibilityAPI){this._pageVisibilityHandler=handleVisibilityChange.bind(this);document.addEventListener(\"visibilitychange\",this._pageVisibilityHandler,false);}return this;}dispose(){if(this._usePageVisibilityAPI&&this._pageVisibilityHandler){document.removeEventListener(\"visibilitychange\",this._pageVisibilityHandler);}return this;}disableFixedDelta(){this._useFixedDelta=false;return this;}enableFixedDelta(){this._useFixedDelta=true;return this;}getDelta(){return this._delta/1e3;}getElapsedTime(){return this._elapsed/1e3;}getFixedDelta(){return this._fixedDelta/1e3;}getTimescale(){return this._timescale;}reset(){this._currentTime=this._now();return this;}setFixedDelta(fixedDelta){this._fixedDelta=fixedDelta*1e3;return this;}setTimescale(timescale){this._timescale=timescale;return this;}update(){if(this._useFixedDelta===true){this._delta=this._fixedDelta;}else{this._previousTime=this._currentTime;this._currentTime=this._now();this._delta=this._currentTime-this._previousTime;}this._delta*=this._timescale;this._elapsed+=this._delta;return this;}// For THREE.Clock backward compatibility\nget elapsedTime(){return this.getElapsedTime();}// private\n_now(){return(typeof performance===\"undefined\"?Date:performance).now();}}function handleVisibilityChange(){if(document.hidden===false)this.reset();}let webGLAvailable,webGL2Available;function isWebGLAvailable(){var _a2;if(webGLAvailable!==void 0)return webGLAvailable;try{let gl;const canvas=document.createElement(\"canvas\");webGLAvailable=!!(window.WebGLRenderingContext&&(gl=canvas.getContext(\"webgl\")));if(gl)(_a2=gl.getExtension(\"WEBGL_lose_context\"))==null?void 0:_a2.loseContext();return webGLAvailable;}catch(e){return webGLAvailable=false;}}function isWebGL2Available(){var _a2;if(webGL2Available!==void 0)return webGL2Available;try{let gl;const canvas=document.createElement(\"canvas\");webGL2Available=!!(window.WebGL2RenderingContext&&(gl=canvas.getContext(\"webgl2\")));if(gl)(_a2=gl.getExtension(\"WEBGL_lose_context\"))==null?void 0:_a2.loseContext();return webGL2Available;}catch(e){return webGL2Available=false;}}function getWebGLErrorMessage(){return getErrorMessage(1);}function getWebGL2ErrorMessage(){return getErrorMessage(2);}function getErrorMessage(version2){const names={1:\"WebGL\",2:\"WebGL 2\"};const contexts={1:window.WebGLRenderingContext,2:window.WebGL2RenderingContext};const element=document.createElement(\"div\");element.id=\"webglmessage\";element.style.fontFamily=\"monospace\";element.style.fontSize=\"13px\";element.style.fontWeight=\"normal\";element.style.textAlign=\"center\";element.style.background=\"#fff\";element.style.color=\"#000\";element.style.padding=\"1.5em\";element.style.width=\"400px\";element.style.margin=\"5em auto 0\";let message='Your $0 does not seem to support $1';if(contexts[version2]){message=message.replace(\"$0\",\"graphics card\");}else{message=message.replace(\"$0\",\"browser\");}message=message.replace(\"$1\",names[version2]);element.innerHTML=message;return element;}class MD2Character{constructor(){this.scale=1;this.animationFPS=6;this.root=new Object3D();this.meshBody=null;this.meshWeapon=null;this.skinsBody=[];this.skinsWeapon=[];this.weapons=[];this.activeAnimation=null;this.mixer=null;this.onLoadComplete=function(){};this.loadCounter=0;}loadParts(config){const scope=this;function createPart(geometry2,skinMap){const materialWireframe=new MeshLambertMaterial({color:16755200,wireframe:true,morphTargets:true,morphNormals:true});const materialTexture=new MeshLambertMaterial({color:16777215,wireframe:false,map:skinMap,morphTargets:true,morphNormals:true});const mesh=new Mesh(geometry2,materialTexture);mesh.rotation.y=-Math.PI/2;mesh.castShadow=true;mesh.receiveShadow=true;mesh.materialTexture=materialTexture;mesh.materialWireframe=materialWireframe;return mesh;}function loadTextures(baseUrl,textureUrls){const textureLoader=new TextureLoader();const textures=[];for(let i2=0;i2=this.colorMap.length?label%this.colorMap.length+1:label;const color=this.colorMap[label];data[4*pixelCount]=color>>24&255;data[4*pixelCount+1]=color>>16&255;data[4*pixelCount+2]=color>>8&255;data[4*pixelCount+3]=color&255;pixelCount++;}}}else{for(let j=0;j=value?lowerThreshold<=value?alpha:0:0;value=Math.floor(255*(value-windowLow)/(windowHigh-windowLow));value=value>255?255:value<0?0:value|0;data[4*pixelCount]=value;data[4*pixelCount+1]=value;data[4*pixelCount+2]=value;data[4*pixelCount+3]=alpha;pixelCount++;}}}ctx.putImageData(imgData,0,0);this.ctx.drawImage(canvas,0,0,iLength,jLength,0,0,this.canvas.width,this.canvas.height);this.mesh.material.map.needsUpdate=true;}/**\n * @member {Function} Refresh the geometry according to axis and index\n * @see Volume.extractPerpendicularPlane\n * @memberof VolumeSlice\n */updateGeometry(){const extracted=this.volume.extractPerpendicularPlane(this.axis,this.index);this.sliceAccess=extracted.sliceAccess;this.jLength=extracted.jLength;this.iLength=extracted.iLength;this.matrix=extracted.matrix;this.canvas.width=extracted.planeWidth;this.canvas.height=extracted.planeHeight;this.canvasBuffer.width=this.iLength;this.canvasBuffer.height=this.jLength;this.ctx=this.canvas.getContext(\"2d\");this.ctxBuffer=this.canvasBuffer.getContext(\"2d\");if(this.geometry)this.geometry.dispose();this.geometry=new PlaneGeometry(extracted.planeWidth,extracted.planeHeight);if(this.mesh){this.mesh.geometry=this.geometry;this.mesh.matrix.identity();this.mesh.applyMatrix4(this.matrix);}this.geometryNeedsUpdate=false;}}function TubePainter(){const BUFFER_SIZE=1e6*3;const positions=new BufferAttribute(new Float32Array(BUFFER_SIZE),3);positions.usage=DynamicDrawUsage;const normals=new BufferAttribute(new Float32Array(BUFFER_SIZE),3);normals.usage=DynamicDrawUsage;const colors=new BufferAttribute(new Float32Array(BUFFER_SIZE),3);colors.usage=DynamicDrawUsage;const geometry2=new BufferGeometry();geometry2.setAttribute(\"position\",positions);geometry2.setAttribute(\"normal\",normals);geometry2.setAttribute(\"color\",colors);geometry2.drawRange.count=0;const material2=new MeshStandardMaterial({vertexColors:true});const mesh=new Mesh(geometry2,material2);mesh.frustumCulled=false;function getPoints(size3){const PI2=Math.PI*2;const sides=10;const array=[];const radius=0.01*size3;for(let i2=0;i20.9;});const jDirection=[firstDirection,secondDirection,axisInIJK].find(function(x){return Math.abs(x.dot(base[1]))>0.9;});const kDirection=[firstDirection,secondDirection,axisInIJK].find(function(x){return Math.abs(x.dot(base[2]))>0.9;});function sliceAccess(i2,j){const si=iDirection===axisInIJK?IJKIndex:iDirection.arglet===\"i\"?i2:j;const sj=jDirection===axisInIJK?IJKIndex:jDirection.arglet===\"i\"?i2:j;const sk=kDirection===axisInIJK?IJKIndex:kDirection.arglet===\"i\"?i2:j;const accessI=iDirection.dot(base[0])>0?si:volume.xLength-1-si;const accessJ=jDirection.dot(base[1])>0?sj:volume.yLength-1-sj;const accessK=kDirection.dot(base[2])>0?sk:volume.zLength-1-sk;return volume.access(accessI,accessJ,accessK);}return{iLength,jLength,sliceAccess,matrix:planeMatrix,planeWidth,planeHeight};}/**\n * @member {Function} extractSlice Returns a slice corresponding to the given axis and index\n * The coordinate are given in the Right Anterior Superior coordinate format\n * @memberof Volume\n * @param {string} axis the normal axis to the slice 'x' 'y' or 'z'\n * @param {number} index the index of the slice\n * @returns {VolumeSlice} the extracted slice\n */extractSlice(axis,index){const slice2=new VolumeSlice(this,index,axis);this.sliceList.push(slice2);return slice2;}/**\n * @member {Function} repaintAllSlices Call repaint on all the slices extracted from this volume\n * @see VolumeSlice.repaint\n * @memberof Volume\n * @returns {Volume} this\n */repaintAllSlices(){this.sliceList.forEach(function(slice2){slice2.repaint();});return this;}/**\n * @member {Function} computeMinMax Compute the minimum and the maximum of the data in the volume\n * @memberof Volume\n * @returns {Array} [min,max]\n */computeMinMax(){let min=Infinity;let max=-Infinity;const datasize=this.data.length;let i2=0;for(i2=0;i2{shader.vertexShader=\"#define USE_LIGHTMAP\\n\"+shader.vertexShader.slice(0,-1)+\"\tgl_Position = vec4((uv2 - 0.5) * 2.0, 1.0, 1.0); }\";const bodyStart=shader.fragmentShader.indexOf(\"void main() {\");shader.fragmentShader=\"varying vec2 vUv2;\\n\"+shader.fragmentShader.slice(0,bodyStart)+\"\tuniform sampler2D previousShadowMap;\\n\tuniform float averagingWindow;\\n\"+shader.fragmentShader.slice(bodyStart-1,-1)+`\nvec3 texelOld = texture2D(previousShadowMap, vUv2).rgb;\n\t\t\t\tgl_FragColor.rgb = mix(texelOld, gl_FragColor.rgb, 1.0/averagingWindow);\n\t\t\t}`;shader.uniforms.previousShadowMap={value:this.progressiveLightMap1.texture};shader.uniforms.averagingWindow={value:100};this.uvMat.uniforms=shader.uniforms;this.uvMat.userData.shader=shader;this.compiled=true;};}/**\n * Sets these objects' materials' lightmaps and modifies their uv2's.\n * @param {Object3D} objects An array of objects and lights to set up your lightmap.\n */addObjectsToLightMap(objects){this.uv_boxes=[];const padding=3/this.res;for(let ob=0;ob{const uv2=objects[box.index].geometry.getAttribute(\"uv\").clone();for(let i2=0;i21, samples will accumulate over time.\n * @param {boolean} blurEdges Whether to fix UV Edges via blurring\n */update(camera,blendWindow=100,blurEdges=true){if(this.blurringPlane==null){return;}const oldTarget=this.renderer.getRenderTarget();this.blurringPlane.visible=blurEdges;for(let l=0;l{shader.vertexShader=\"#define USE_UV\\n\"+shader.vertexShader.slice(0,-1)+\"\tgl_Position = vec4((uv - 0.5) * 2.0, 1.0, 1.0); }\";const bodyStart=shader.fragmentShader.indexOf(\"void main() {\");shader.fragmentShader=\"#define USE_UV\\n\"+shader.fragmentShader.slice(0,bodyStart)+\"\tuniform sampler2D previousShadowMap;\\n\tuniform float pixelOffset;\\n\"+shader.fragmentShader.slice(bodyStart-1,-1)+`\tgl_FragColor.rgb = (\n\t\t\t texture2D(previousShadowMap, vUv + vec2( pixelOffset, 0.0 )).rgb +\n\t\t\t texture2D(previousShadowMap, vUv + vec2( 0.0 , pixelOffset)).rgb +\n\t\t\t texture2D(previousShadowMap, vUv + vec2( 0.0 , -pixelOffset)).rgb +\n\t\t\t texture2D(previousShadowMap, vUv + vec2(-pixelOffset, 0.0 )).rgb +\n\t\t\t texture2D(previousShadowMap, vUv + vec2( pixelOffset, pixelOffset)).rgb +\n\t\t\t texture2D(previousShadowMap, vUv + vec2(-pixelOffset, pixelOffset)).rgb +\n\t\t\t texture2D(previousShadowMap, vUv + vec2( pixelOffset, -pixelOffset)).rgb +\n\t\t\t texture2D(previousShadowMap, vUv + vec2(-pixelOffset, -pixelOffset)).rgb)/8.0;\n\t\t}`;shader.uniforms.previousShadowMap={value:lightMap.texture};shader.uniforms.pixelOffset={value:0.5/res};blurMaterial.uniforms=shader.uniforms;blurMaterial.userData.shader=shader;this.compiled=true;};this.blurringPlane=new Mesh(new PlaneGeometry(1,1),blurMaterial);this.blurringPlane.name=\"Blurring Plane\";this.blurringPlane.frustumCulled=false;this.blurringPlane.renderOrder=0;this.blurringPlane.material.depthWrite=false;this.scene.add(this.blurringPlane);}}class CSS2DObject extends Object3D{constructor(element=document.createElement(\"div\")){super();this.isCSS2DObject=true;this.element=element;this.element.style.position=\"absolute\";this.element.style.userSelect=\"none\";this.element.setAttribute(\"draggable\",false);this.center=new Vector2(0.5,0.5);this.addEventListener(\"removed\",function(){this.traverse(function(object){if(object.element instanceof Element&&object.element.parentNode!==null){object.element.parentNode.removeChild(object.element);}});});}copy(source,recursive){super.copy(source,recursive);this.element=source.element.cloneNode(true);this.center=source.center;return this;}}const _vector$4=/*@__PURE__*/new Vector3();const _viewMatrix=/*@__PURE__*/new Matrix4();const _viewProjectionMatrix=/*@__PURE__*/new Matrix4();const _a=/*@__PURE__*/new Vector3();const _b=/*@__PURE__*/new Vector3();class CSS2DRenderer{constructor(parameters={}){const _this=this;let _width,_height;let _widthHalf,_heightHalf;const cache={objects:/* @__PURE__ */new WeakMap()};const domElement=parameters.element!==void 0?parameters.element:document.createElement(\"div\");domElement.style.overflow=\"hidden\";this.domElement=domElement;this.getSize=function(){return{width:_width,height:_height};};this.render=function(scene,camera){if(scene.matrixWorldAutoUpdate===true)scene.updateMatrixWorld();if(camera.parent===null&&camera.matrixWorldAutoUpdate===true)camera.updateMatrixWorld();_viewMatrix.copy(camera.matrixWorldInverse);_viewProjectionMatrix.multiplyMatrices(camera.projectionMatrix,_viewMatrix);renderObject(scene,scene,camera);zOrder(scene);};this.setSize=function(width,height){_width=width;_height=height;_widthHalf=_width/2;_heightHalf=_height/2;domElement.style.width=width+\"px\";domElement.style.height=height+\"px\";};function renderObject(object,scene,camera){if(object.isCSS2DObject){_vector$4.setFromMatrixPosition(object.matrixWorld);_vector$4.applyMatrix4(_viewProjectionMatrix);const visible=object.visible===true&&_vector$4.z>=-1&&_vector$4.z<=1&&object.layers.test(camera.layers)===true;object.element.style.display=visible===true?\"\":\"none\";if(visible===true){object.onBeforeRender(_this,scene,camera);const element=object.element;element.style.transform=\"translate(\"+-100*object.center.x+\"%,\"+-100*object.center.y+\"%)translate(\"+(_vector$4.x*_widthHalf+_widthHalf)+\"px,\"+(-_vector$4.y*_heightHalf+_heightHalf)+\"px)\";if(element.parentNode!==domElement){domElement.appendChild(element);}object.onAfterRender(_this,scene,camera);}const objectData={distanceToCameraSquared:getDistanceToSquared(camera,object)};cache.objects.set(object,objectData);}for(let i2=0,l=object.children.length;i2=-1&&positionScreen.x<=1&&positionScreen.y>=-1&&positionScreen.y<=1&&positionScreen.z>=-1&&positionScreen.z<=1;}function pushVertex(x,y,z){_vertex=getNextVertexInPool();_vertex.position.set(x,y,z);projectVertex(_vertex);}function pushNormal(x,y,z){normals.push(x,y,z);}function pushColor(r,g,b2){colors.push(r,g,b2);}function pushUv(x,y){uvs.push(x,y);}function checkTriangleVisibility(v12,v2,v3){if(v12.visible===true||v2.visible===true||v3.visible===true)return true;_points3[0]=v12.positionScreen;_points3[1]=v2.positionScreen;_points3[2]=v3.positionScreen;return _clipBox.intersectsBox(_boundingBox.setFromPoints(_points3));}function checkBackfaceCulling(v12,v2,v3){return(v3.positionScreen.x-v12.positionScreen.x)*(v2.positionScreen.y-v12.positionScreen.y)-(v3.positionScreen.y-v12.positionScreen.y)*(v2.positionScreen.x-v12.positionScreen.x)<0;}function pushLine(a2,b2){const v12=_vertexPool[a2];const v2=_vertexPool[b2];v12.positionScreen.copy(v12.position).applyMatrix4(_modelViewProjectionMatrix);v2.positionScreen.copy(v2.position).applyMatrix4(_modelViewProjectionMatrix);if(clipLine(v12.positionScreen,v2.positionScreen)===true){v12.positionScreen.multiplyScalar(1/v12.positionScreen.w);v2.positionScreen.multiplyScalar(1/v2.positionScreen.w);_line4=getNextLineInPool();_line4.id=object.id;_line4.v1.copy(v12);_line4.v2.copy(v2);_line4.z=Math.max(v12.positionScreen.z,v2.positionScreen.z);_line4.renderOrder=object.renderOrder;_line4.material=object.material;if(object.material.vertexColors){_line4.vertexColors[0].fromArray(colors,a2*3);_line4.vertexColors[1].fromArray(colors,b2*3);}_renderData.elements.push(_line4);}}function pushTriangle(a2,b2,c,material2){const v12=_vertexPool[a2];const v2=_vertexPool[b2];const v3=_vertexPool[c];if(checkTriangleVisibility(v12,v2,v3)===false)return;if(material2.side===DoubleSide||checkBackfaceCulling(v12,v2,v3)===true){_face2=getNextFaceInPool();_face2.id=object.id;_face2.v1.copy(v12);_face2.v2.copy(v2);_face2.v3.copy(v3);_face2.z=(v12.positionScreen.z+v2.positionScreen.z+v3.positionScreen.z)/3;_face2.renderOrder=object.renderOrder;_vector3.subVectors(v3.position,v2.position);_vector4.subVectors(v12.position,v2.position);_vector3.cross(_vector4);_face2.normalModel.copy(_vector3);_face2.normalModel.applyMatrix3(normalMatrix).normalize();for(let i2=0;i2<3;i2++){const normal=_face2.vertexNormalsModel[i2];normal.fromArray(normals,arguments[i2]*3);normal.applyMatrix3(normalMatrix).normalize();const uv=_face2.uvs[i2];uv.fromArray(uvs,arguments[i2]*2);}_face2.vertexNormalsLength=3;_face2.material=material2;if(material2.vertexColors){_face2.color.fromArray(colors,a2*3);}_renderData.elements.push(_face2);}}return{setObject,projectVertex,checkTriangleVisibility,checkBackfaceCulling,pushVertex,pushNormal,pushColor,pushUv,pushLine,pushTriangle};}const renderList=new RenderList();function projectObject(object){if(object.visible===false)return;if(object.isLight){_renderData.lights.push(object);}else if(object.isMesh||object.isLine||object.isPoints){if(object.material.visible===false)return;if(object.frustumCulled===true&&_frustum.intersectsObject(object)===false)return;addObject(object);}else if(object.isSprite){if(object.material.visible===false)return;if(object.frustumCulled===true&&_frustum.intersectsSprite(object)===false)return;addObject(object);}const children=object.children;for(let i2=0,l=children.length;i20){for(let g=0;g0){for(let g=0;g=-1&&_vector42.z<=1){_sprite=getNextSpriteInPool();_sprite.id=object.id;_sprite.x=_vector42.x*invW;_sprite.y=_vector42.y*invW;_sprite.z=_vector42.z;_sprite.renderOrder=object.renderOrder;_sprite.object=object;_sprite.rotation=object.rotation;_sprite.scale.x=object.scale.x*Math.abs(_sprite.x-(_vector42.x+camera.projectionMatrix.elements[0])/(_vector42.w+camera.projectionMatrix.elements[12]));_sprite.scale.y=object.scale.y*Math.abs(_sprite.y-(_vector42.y+camera.projectionMatrix.elements[5])/(_vector42.w+camera.projectionMatrix.elements[13]));_sprite.material=object.material;_renderData.elements.push(_sprite);}}function getNextObjectInPool(){if(_objectCount===_objectPoolLength){const object=new RenderableObject();_objectPool.push(object);_objectPoolLength++;_objectCount++;return object;}return _objectPool[_objectCount++];}function getNextVertexInPool(){if(_vertexCount===_vertexPoolLength){const vertex=new RenderableVertex();_vertexPool.push(vertex);_vertexPoolLength++;_vertexCount++;return vertex;}return _vertexPool[_vertexCount++];}function getNextFaceInPool(){if(_faceCount===_facePoolLength){const face=new RenderableFace();_facePool.push(face);_facePoolLength++;_faceCount++;return face;}return _facePool[_faceCount++];}function getNextLineInPool(){if(_lineCount===_linePoolLength){const line=new RenderableLine();_linePool.push(line);_linePoolLength++;_lineCount++;return line;}return _linePool[_lineCount++];}function getNextSpriteInPool(){if(_spriteCount===_spritePoolLength){const sprite=new RenderableSprite();_spritePool.push(sprite);_spritePoolLength++;_spriteCount++;return sprite;}return _spritePool[_spriteCount++];}function painterSort(a2,b2){if(a2.renderOrder!==b2.renderOrder){return a2.renderOrder-b2.renderOrder;}else if(a2.z!==b2.z){return b2.z-a2.z;}else if(a2.id!==b2.id){return a2.id-b2.id;}else{return 0;}}function clipLine(s1,s2){let alpha1=0,alpha2=1;const bc1near=s1.z+s1.w,bc2near=s2.z+s2.w,bc1far=-s1.z+s1.w,bc2far=-s2.z+s2.w;if(bc1near>=0&&bc2near>=0&&bc1far>=0&&bc2far>=0){return true;}else if(bc1near<0&&bc2near<0||bc1far<0&&bc2far<0){return false;}else{if(bc1near<0){alpha1=Math.max(alpha1,bc1near/(bc1near-bc2near));}else if(bc2near<0){alpha2=Math.min(alpha2,bc1near/(bc1near-bc2near));}if(bc1far<0){alpha1=Math.max(alpha1,bc1far/(bc1far-bc2far));}else if(bc2far<0){alpha2=Math.min(alpha2,bc1far/(bc1far-bc2far));}if(alpha20){_svg.removeChild(_svg.childNodes[0]);}}function convert(c){return _precision!==null?c.toFixed(_precision):c;}this.clear=function(){removeChildNodes();_svg.style.backgroundColor=_clearColor.getStyle();};this.render=function(scene,camera){if(camera instanceof Camera===false){console.error(\"THREE.SVGRenderer.render: camera is not an instance of Camera.\");return;}const background=scene.background;if(background&&background.isColor){removeChildNodes();_svg.style.backgroundColor=background.getStyle();}else if(this.autoClear===true){this.clear();}_this.info.render.vertices=0;_this.info.render.faces=0;_viewMatrix2.copy(camera.matrixWorldInverse);_viewProjectionMatrix2.multiplyMatrices(camera.projectionMatrix,_viewMatrix2);_renderData=_projector.projectScene(scene,camera,this.sortObjects,this.sortElements);_elements=_renderData.elements;_lights=_renderData.lights;_normalViewMatrix.getNormalMatrix(camera.matrixWorldInverse);calculateLights(_lights);_currentPath=\"\";_currentStyle=\"\";for(let e=0,el=_elements.length;e1)continue;if(_v22.positionScreen.z<-1||_v22.positionScreen.z>1)continue;if(_v32.positionScreen.z<-1||_v32.positionScreen.z>1)continue;_v12.positionScreen.x*=_svgWidthHalf;_v12.positionScreen.y*=-_svgHeightHalf;_v22.positionScreen.x*=_svgWidthHalf;_v22.positionScreen.y*=-_svgHeightHalf;_v32.positionScreen.x*=_svgWidthHalf;_v32.positionScreen.y*=-_svgHeightHalf;if(this.overdraw>0){expand(_v12.positionScreen,_v22.positionScreen,this.overdraw);expand(_v22.positionScreen,_v32.positionScreen,this.overdraw);expand(_v32.positionScreen,_v12.positionScreen,this.overdraw);}_elemBox.setFromPoints([_v12.positionScreen,_v22.positionScreen,_v32.positionScreen]);if(_clipBox.intersectsBox(_elemBox)===true){renderFace3(_v12,_v22,_v32,element,material2);}}}flushPath();scene.traverseVisible(function(object){if(object.isSVGObject){_vector3.setFromMatrixPosition(object.matrixWorld);_vector3.applyMatrix4(_viewProjectionMatrix2);if(_vector3.z<-1||_vector3.z>1)return;const x=_vector3.x*_svgWidthHalf;const y=-_vector3.y*_svgHeightHalf;const node=object.node;node.setAttribute(\"transform\",\"translate(\"+x+\",\"+y+\")\");_svg.appendChild(node);}});};function calculateLights(lights){_ambientLight.setRGB(0,0,0);_directionalLights.setRGB(0,0,0);_pointLights.setRGB(0,0,0);for(let l=0,ll=lights.length;l{const dataArray2=new Float32Array(TEXTURE_WIDTH*TEXTURE_HEIGHT*numberOfCurves*CHANNELS);const dataTexture=new DataTexture(dataArray2,TEXTURE_WIDTH,TEXTURE_HEIGHT*numberOfCurves,RGBAFormat,FloatType);dataTexture.wrapS=RepeatWrapping;dataTexture.wrapT=RepeatWrapping;dataTexture.magFilter=NearestFilter;dataTexture.needsUpdate=true;return dataTexture;};const updateSplineTexture=(texture,splineCurve,offset=0)=>{const numberOfPoints=Math.floor(TEXTURE_WIDTH*(TEXTURE_HEIGHT/4));splineCurve.arcLengthDivisions=numberOfPoints/2;splineCurve.updateArcLengths();const points=splineCurve.getSpacedPoints(numberOfPoints);const frenetFrames=splineCurve.computeFrenetFrames(numberOfPoints,true);for(let i2=0;i2{const image=texture.image;const{data}=image;const i2=CHANNELS*TEXTURE_WIDTH*o;data[index*CHANNELS+i2+0]=x;data[index*CHANNELS+i2+1]=y;data[index*CHANNELS+i2+2]=z;data[index*CHANNELS+i2+3]=1;};const getUniforms=splineTexture=>({spineTexture:{value:splineTexture},pathOffset:{type:\"f\",value:0},// time of path curve\npathSegment:{type:\"f\",value:1},// fractional length of path\nspineOffset:{type:\"f\",value:161},spineLength:{type:\"f\",value:400},flow:{type:\"i\",value:1}});function modifyShader(material2,uniforms,numberOfCurves=1){if(material2.__ok)return;material2.__ok=true;material2.onBeforeCompile=shader=>{if(shader.__modified)return;shader.__modified=true;Object.assign(shader.uniforms,uniforms);const vertexShader=/* glsl */`\n\t\tuniform sampler2D spineTexture;\n\t\tuniform float pathOffset;\n\t\tuniform float pathSegment;\n\t\tuniform float spineOffset;\n\t\tuniform float spineLength;\n\t\tuniform int flow;\n\n\t\tfloat textureLayers = ${TEXTURE_HEIGHT*numberOfCurves}.;\n\t\tfloat textureStacks = ${TEXTURE_HEIGHT/4}.;\n\n\t\t${shader.vertexShader}\n\t\t`.replace(\"#include \",\"\").replace(\"#include \",\"\").replace(\"#include \",\"\").replace(/void\\s*main\\s*\\(\\)\\s*\\{/,/* glsl */`\n void main() {\n #include \n\n vec4 worldPos = modelMatrix * vec4(position, 1.);\n\n bool bend = flow > 0;\n float xWeight = bend ? 0. : 1.;\n\n #ifdef USE_INSTANCING\n float pathOffsetFromInstanceMatrix = instanceMatrix[3][2];\n float spineLengthFromInstanceMatrix = instanceMatrix[3][0];\n float spinePortion = bend ? (worldPos.x + spineOffset) / spineLengthFromInstanceMatrix : 0.;\n float mt = (spinePortion * pathSegment + pathOffset + pathOffsetFromInstanceMatrix)*textureStacks;\n #else\n float spinePortion = bend ? (worldPos.x + spineOffset) / spineLength : 0.;\n float mt = (spinePortion * pathSegment + pathOffset)*textureStacks;\n #endif\n\n mt = mod(mt, textureStacks);\n float rowOffset = floor(mt);\n\n #ifdef USE_INSTANCING\n rowOffset += instanceMatrix[3][1] * ${TEXTURE_HEIGHT}.;\n #endif\n\n vec3 spinePos = texture2D(spineTexture, vec2(mt, (0. + rowOffset + 0.5) / textureLayers)).xyz;\n vec3 a = texture2D(spineTexture, vec2(mt, (1. + rowOffset + 0.5) / textureLayers)).xyz;\n vec3 b = texture2D(spineTexture, vec2(mt, (2. + rowOffset + 0.5) / textureLayers)).xyz;\n vec3 c = texture2D(spineTexture, vec2(mt, (3. + rowOffset + 0.5) / textureLayers)).xyz;\n mat3 basis = mat3(a, b, c);\n\n vec3 transformed = basis\n * vec3(worldPos.x * xWeight, worldPos.y * 1., worldPos.z * 1.)\n + spinePos;\n\n vec3 transformedNormal = normalMatrix * (basis * objectNormal);\n\t\t\t`).replace(\"#include \",/* glsl */`vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\n\t\t\t\tgl_Position = projectionMatrix * mvPosition;`);shader.vertexShader=vertexShader;};}class Flow{/**\n * @param {Mesh} mesh The mesh to clone and modify to bend around the curve\n * @param {number} numberOfCurves The amount of space that should preallocated for additional curves\n */constructor(mesh,numberOfCurves=1){__publicField(this,\"curveArray\");__publicField(this,\"curveLengthArray\");__publicField(this,\"object3D\");__publicField(this,\"splineTexure\");__publicField(this,\"uniforms\");const obj3D=mesh.clone();const splineTexure=initSplineTexture(numberOfCurves);const uniforms=getUniforms(splineTexure);obj3D.traverse(child=>{if(child instanceof Mesh||child instanceof InstancedMesh){child.material=child.material.clone();modifyShader(child.material,uniforms,numberOfCurves);}});this.curveArray=new Array(numberOfCurves);this.curveLengthArray=new Array(numberOfCurves);this.object3D=obj3D;this.splineTexure=splineTexure;this.uniforms=uniforms;}updateCurve(index,curve){if(index>=this.curveArray.length)throw Error(\"Index out of range for Flow\");const curveLength=curve.getLength();this.uniforms.spineLength.value=curveLength;this.curveLengthArray[index]=curveLength;this.curveArray[index]=curve;updateSplineTexture(this.splineTexure,curve,index);}moveAlongCurve(amount){this.uniforms.pathOffset.value+=amount;}}const matrix$1=/*@__PURE__*/new Matrix4();class InstancedFlow extends Flow{/**\n *\n * @param {number} count The number of instanced elements\n * @param {number} curveCount The number of curves to preallocate for\n * @param {Geometry} geometry The geometry to use for the instanced mesh\n * @param {Material} material The material to use for the instanced mesh\n */constructor(count,curveCount,geometry2,material2){const mesh=new InstancedMesh(geometry2,material2,count);mesh.instanceMatrix.setUsage(DynamicDrawUsage);mesh.frustumCulled=false;super(mesh,curveCount);__publicField(this,\"offsets\");__publicField(this,\"whichCurve\");this.offsets=new Array(count).fill(0);this.whichCurve=new Array(count).fill(0);}/**\n * The extra information about which curve and curve position is stored in the translation components of the matrix for the instanced objects\n * This writes that information to the matrix and marks it as needing update.\n *\n * @param {number} index of the instanced element to update\n */writeChanges(index){matrix$1.makeTranslation(this.curveLengthArray[this.whichCurve[index]],this.whichCurve[index],this.offsets[index]);this.object3D.setMatrixAt(index,matrix$1);this.object3D.instanceMatrix.needsUpdate=true;}/**\n * Move an individual element along the curve by a specific amount\n *\n * @param {number} index Which element to update\n * @param {number} offset Move by how much\n */moveIndividualAlongCurve(index,offset){this.offsets[index]+=offset;this.writeChanges(index);}/**\n * Select which curve to use for an element\n *\n * @param {number} index the index of the instanced element to update\n * @param {number} curveNo the index of the curve it should use\n */setCurve(index,curveNo){if(isNaN(curveNo))throw Error(\"curve index being set is Not a Number (NaN)\");this.whichCurve[index]=curveNo;this.writeChanges(index);}}const getWithKey=(obj,key)=>obj[key];const mergeBufferGeometries=(geometries,useGroups)=>{const isIndexed=geometries[0].index!==null;const attributesUsed=new Set(Object.keys(geometries[0].attributes));const morphAttributesUsed=new Set(Object.keys(geometries[0].morphAttributes));const attributes={};const morphAttributes={};const morphTargetsRelative=geometries[0].morphTargetsRelative;const mergedGeometry=new BufferGeometry();let offset=0;geometries.forEach((geom,i2)=>{let attributesCount=0;if(isIndexed!==(geom.index!==null)){console.error(\"THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index \"+i2+\". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them.\");return null;}for(let name in geom.attributes){if(!attributesUsed.has(name)){console.error(\"THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index \"+i2+'. All geometries must have compatible attributes; make sure \"'+name+'\" attribute exists among all geometries, or in none of them.');return null;}if(attributes[name]===void 0){attributes[name]=[];}attributes[name].push(geom.attributes[name]);attributesCount++;}if(attributesCount!==attributesUsed.size){console.error(\"THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index \"+i2+\". Make sure all geometries have the same number of attributes.\");return null;}if(morphTargetsRelative!==geom.morphTargetsRelative){console.error(\"THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index \"+i2+\". .morphTargetsRelative must be consistent throughout all geometries.\");return null;}for(let name in geom.morphAttributes){if(!morphAttributesUsed.has(name)){console.error(\"THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index \"+i2+\". .morphAttributes must be consistent throughout all geometries.\");return null;}if(morphAttributes[name]===void 0)morphAttributes[name]=[];morphAttributes[name].push(geom.morphAttributes[name]);}mergedGeometry.userData.mergedUserData=mergedGeometry.userData.mergedUserData||[];mergedGeometry.userData.mergedUserData.push(geom.userData);if(useGroups){let count;if(geom.index){count=geom.index.count;}else if(geom.attributes.position!==void 0){count=geom.attributes.position.count;}else{console.error(\"THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index \"+i2+\". The geometry must have either an index or a position attribute\");return null;}mergedGeometry.addGroup(offset,count,i2);offset+=count;}});if(isIndexed){let indexOffset=0;const mergedIndex=[];geometries.forEach(geom=>{const index=geom.index;for(let j=0;j{let TypedArray=void 0;let itemSize=void 0;let normalized=void 0;let arrayLength=0;attributes.forEach(attr=>{if(TypedArray===void 0){TypedArray=attr.array.constructor;}if(TypedArray!==attr.array.constructor){console.error(\"THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes.\");return null;}if(itemSize===void 0)itemSize=attr.itemSize;if(itemSize!==attr.itemSize){console.error(\"THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes.\");return null;}if(normalized===void 0)normalized=attr.normalized;if(normalized!==attr.normalized){console.error(\"THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes.\");return null;}arrayLength+=attr.array.length;});if(TypedArray&&itemSize){const array=new TypedArray(arrayLength);let offset=0;attributes.forEach(attr=>{array.set(attr.array,offset);offset+=attr.array.length;});return new BufferAttribute(array,itemSize,normalized);}};const interleaveAttributes=attributes=>{let TypedArray=void 0;let arrayLength=0;let stride=0;for(let i2=0,l=attributes.length;i2[]);}}const decimalShift=Math.log10(1/tolerance);const shiftMultiplier=Math.pow(10,decimalShift);for(let i2=0;i2creaseDot){tempNorm2.add(otherNorm);}}tempNorm2.normalize();normAttr.setXYZ(i3+n,tempNorm2.x,tempNorm2.y,tempNorm2.z);}}resultGeometry.setAttribute(\"normal\",normAttr);return resultGeometry;}const BufferGeometryUtils=/*@__PURE__*/ /* @__PURE__ */Object.freeze(/*@__PURE__*/ /* @__PURE__ */Object.defineProperty({__proto__:null,computeMorphedAttributes,estimateBytesUsed,interleaveAttributes,mergeBufferAttributes,mergeBufferGeometries,mergeVertices,toCreasedNormals,toTrianglesDrawMode},Symbol.toStringTag,{value:\"Module\"}));const cb=/*@__PURE__*/new Vector3();const ab=/*@__PURE__*/new Vector3();function pushIfUnique(array,object){if(array.indexOf(object)===-1)array.push(object);}function removeFromArray(array,object){const k=array.indexOf(object);if(k>-1)array.splice(k,1);}class Vertex{constructor(v,id){__publicField(this,\"position\");__publicField(this,\"id\");__publicField(this,\"faces\");__publicField(this,\"neighbors\");__publicField(this,\"collapseCost\");__publicField(this,\"collapseNeighbor\");__publicField(this,\"minCost\",0);__publicField(this,\"totalCost\",0);__publicField(this,\"costCount\",0);this.position=v;this.id=id;this.faces=[];this.neighbors=[];this.collapseCost=0;this.collapseNeighbor=null;}addUniqueNeighbor(vertex){pushIfUnique(this.neighbors,vertex);}removeIfNonNeighbor(n){const neighbors=this.neighbors;const faces=this.faces;const offset=neighbors.indexOf(n);if(offset===-1)return;for(let i2=0;i2{const edgelength=v.position.distanceTo(u.position);let curvature=0;const sideFaces=[];let i2,il=u.faces.length,face,sideFace;for(i2=0;i2{if(v.neighbors.length===0){v.collapseNeighbor=null;v.collapseCost=-0.01;return;}v.collapseCost=1e5;v.collapseNeighbor=null;for(let i2=0;i2{removeFromArray(faces,f);if(f.v1)removeFromArray(f.v1.faces,f);if(f.v2)removeFromArray(f.v2.faces,f);if(f.v3)removeFromArray(f.v3.faces,f);const vs=[f.v1,f.v2,f.v3];let v12,v2;for(let i2=0;i2<3;i2++){v12=vs[i2];v2=vs[(i2+1)%3];if(!v12||!v2)continue;v12.removeIfNonNeighbor(v2);v2.removeIfNonNeighbor(v12);}});__publicField(this,\"collapse\",(vertices,faces,u,v)=>{if(!v){this.removeVertex(u,vertices);return;}let i2;const tmpVertices=[];for(i2=0;i2=0;i2--){if(u.faces[i2].hasVertex(v)){this.removeFace(u.faces[i2],faces);}}for(i2=u.faces.length-1;i2>=0;i2--){u.faces[i2].replaceVertex(u,v);}this.removeVertex(u,vertices);for(i2=0;i2{let least=vertices[0];for(let i2=0;i2{geometry2=geometry2.clone();const attributes=geometry2.attributes;for(let name in attributes){if(name!==\"position\")geometry2.deleteAttribute(name);}geometry2=mergeVertices(geometry2);const vertices=[];const faces=[];const positionAttribute=geometry2.getAttribute(\"position\");for(let i2=0;i2{this.normals=new Float32Array(this.indexes.length*3);for(let i2=0;i2{this.pointToIndexMap=Array(this.positions.length/3);for(let i2=0;i2{this.A.set(this.normals[3*firstIndex],this.normals[3*firstIndex+1],this.normals[3*firstIndex+2]).normalize();const result={splitGroup:[],currentGroup:[firstIndex]};for(let j of indexes){if(j!==firstIndex){this.B.set(this.normals[3*j],this.normals[3*j+1],this.normals[3*j+2]).normalize();if(this.B.dot(this.A){if(indexes.length===0)return;const groupResults=[];for(let index of indexes){groupResults.push(this.edgeSplitToGroups(indexes,cutOff,index));}let result=groupResults[0];for(let groupResult of groupResults){if(groupResult.currentGroup.length>result.currentGroup.length){result=groupResult;}}if(original!=null){this.splitIndexes.push({original,indexes:result.currentGroup});}if(result.splitGroup.length){this.edgeSplit(result.splitGroup,cutOff,original||result.currentGroup[0]);}});__publicField(this,\"modify\",(geometry2,cutOffAngle,tryKeepNormals=true)=>{let hadNormals=false;if(geometry2.attributes.normal){hadNormals=true;geometry2=geometry2.clone();if(tryKeepNormals===true&&geometry2.index!==null){this.oldNormals=geometry2.attributes.normal.array;}geometry2.deleteAttribute(\"normal\");}if(geometry2.index==null){if(BufferGeometryUtils===void 0){throw\"THREE.EdgeSplitModifier relies on BufferGeometryUtils\";}geometry2=mergeVertices(geometry2);}this.indexes=geometry2.index.array;this.positions=geometry2.getAttribute(\"position\").array;this.computeNormals();this.mapPositionsToIndexes();this.splitIndexes=[];for(let vertexIndexes of this.pointToIndexMap){this.edgeSplit(vertexIndexes,Math.cos(cutOffAngle)-1e-3);}const newAttributes={};for(let name of Object.keys(geometry2.attributes)){const oldAttribute=geometry2.attributes[name];const newArray=new oldAttribute.array.constructor((this.indexes.length+this.splitIndexes.length)*oldAttribute.itemSize);newArray.set(oldAttribute.array);newAttributes[name]=new BufferAttribute(newArray,oldAttribute.itemSize,oldAttribute.normalized);}const newIndexes=new Uint32Array(this.indexes.length);newIndexes.set(this.indexes);for(let i2=0;i2{if(geometry2.index!==null){geometry2=geometry2.toNonIndexed();}const maxIterations=this.maxIterations;const maxEdgeLengthSquared=this.maxEdgeLength*this.maxEdgeLength;const va=new Vector3();const vb=new Vector3();const vc=new Vector3();const vm=new Vector3();const vs=[va,vb,vc,vm];const na=new Vector3();const nb=new Vector3();const nc=new Vector3();const nm=new Vector3();const ns=[na,nb,nc,nm];const ca=new Color();const cb2=new Color();const cc=new Color();const cm=new Color();const cs=[ca,cb2,cc,cm];const ua=new Vector2();const ub=new Vector2();const uc=new Vector2();const um=new Vector2();const us=[ua,ub,uc,um];const u2a=new Vector2();const u2b=new Vector2();const u2c=new Vector2();const u2m=new Vector2();const u2s=[u2a,u2b,u2c,u2m];const attributes=geometry2.attributes;const hasNormals=attributes.normal!==void 0;const hasColors=attributes.color!==void 0;const hasUVs=attributes.uv!==void 0;const hasUV2s=attributes.uv2!==void 0;let positions=attributes.position.array;let normals=hasNormals?attributes.normal.array:null;let colors=hasColors?attributes.color.array:null;let uvs=hasUVs?attributes.uv.array:null;let uv2s=hasUV2s?attributes.uv2.array:null;let positions2=positions;let normals2=normals;let colors2=colors;let uvs2=uvs;let uv2s2=uv2s;let iteration=0;let tessellating=true;function addTriangle(a2,b2,c){const v12=vs[a2];const v2=vs[b2];const v3=vs[c];positions2.push(v12.x,v12.y,v12.z);positions2.push(v2.x,v2.y,v2.z);positions2.push(v3.x,v3.y,v3.z);if(hasNormals){const n1=ns[a2];const n2=ns[b2];const n3=ns[c];normals2.push(n1.x,n1.y,n1.z);normals2.push(n2.x,n2.y,n2.z);normals2.push(n3.x,n3.y,n3.z);}if(hasColors){const c1=cs[a2];const c2=cs[b2];const c3=cs[c];colors2.push(c1.r,c1.g,c1.b);colors2.push(c2.r,c2.g,c2.b);colors2.push(c3.r,c3.g,c3.b);}if(hasUVs){const u1=us[a2];const u2=us[b2];const u3=us[c];uvs2.push(u1.x,u1.y);uvs2.push(u2.x,u2.y);uvs2.push(u3.x,u3.y);}if(hasUV2s){const u21=u2s[a2];const u22=u2s[b2];const u23=u2s[c];uv2s2.push(u21.x,u21.y);uv2s2.push(u22.x,u22.y);uv2s2.push(u23.x,u23.y);}}while(tessellating&&iterationmaxEdgeLengthSquared||dbc>maxEdgeLengthSquared||dac>maxEdgeLengthSquared){tessellating=true;if(dab>=dbc&&dab>=dac){vm.lerpVectors(va,vb,0.5);if(hasNormals)nm.lerpVectors(na,nb,0.5);if(hasColors)cm.lerpColors(ca,cb2,0.5);if(hasUVs)um.lerpVectors(ua,ub,0.5);if(hasUV2s)u2m.lerpVectors(u2a,u2b,0.5);addTriangle(0,3,2);addTriangle(3,1,2);}else if(dbc>=dab&&dbc>=dac){vm.lerpVectors(vb,vc,0.5);if(hasNormals)nm.lerpVectors(nb,nc,0.5);if(hasColors)cm.lerpColors(cb2,cc,0.5);if(hasUVs)um.lerpVectors(ub,uc,0.5);if(hasUV2s)u2m.lerpVectors(u2b,u2c,0.5);addTriangle(0,1,3);addTriangle(3,2,0);}else{vm.lerpVectors(va,vc,0.5);if(hasNormals)nm.lerpVectors(na,nc,0.5);if(hasColors)cm.lerpColors(ca,cc,0.5);if(hasUVs)um.lerpVectors(ua,uc,0.5);if(hasUV2s)u2m.lerpVectors(u2a,u2c,0.5);addTriangle(0,1,3);addTriangle(3,1,2);}}else{addTriangle(0,1,2);}}}const geometry22=new BufferGeometry();geometry22.setAttribute(\"position\",new Float32BufferAttribute(positions2,3));if(hasNormals){geometry22.setAttribute(\"normal\",new Float32BufferAttribute(normals2,3));}if(hasColors){geometry22.setAttribute(\"color\",new Float32BufferAttribute(colors2,3));}if(hasUVs){geometry22.setAttribute(\"uv\",new Float32BufferAttribute(uvs2,2));}if(hasUV2s){geometry22.setAttribute(\"uv2\",new Float32BufferAttribute(uv2s2,2));}return geometry22;});this.maxEdgeLength=maxEdgeLength;this.maxIterations=maxIterations;}}async function readAsDataURL(blob){const buffer=await blob.arrayBuffer();const data=btoa(String.fromCharCode(...new Uint8Array(buffer)));return`data:${blob.type||\"\"};base64,${data}`;}let _renderer;let fullscreenQuadGeometry;let fullscreenQuadMaterial;let fullscreenQuad;function decompress(texture,maxTextureSize=Infinity,renderer=null){if(!fullscreenQuadGeometry)fullscreenQuadGeometry=new PlaneGeometry(2,2,1,1);if(!fullscreenQuadMaterial)fullscreenQuadMaterial=new ShaderMaterial({uniforms:{blitTexture:new Uniform(texture)},vertexShader:/* glsl */`\n varying vec2 vUv;\n void main(){\n vUv = uv;\n gl_Position = vec4(position.xy * 1.0,0.,.999999);\n }\n `,fragmentShader:/* glsl */`\n uniform sampler2D blitTexture; \n varying vec2 vUv;\n\n void main(){ \n gl_FragColor = vec4(vUv.xy, 0, 1);\n \n #ifdef IS_SRGB\n gl_FragColor = LinearTosRGB( texture2D( blitTexture, vUv) );\n #else\n gl_FragColor = texture2D( blitTexture, vUv);\n #endif\n }\n `});fullscreenQuadMaterial.uniforms.blitTexture.value=texture;fullscreenQuadMaterial.defines.IS_SRGB=\"colorSpace\"in texture?texture.colorSpace===\"srgb\":texture.encoding===3001;fullscreenQuadMaterial.needsUpdate=true;if(!fullscreenQuad){fullscreenQuad=new Mesh(fullscreenQuadGeometry,fullscreenQuadMaterial);fullscreenQuad.frustrumCulled=false;}const _camera=new PerspectiveCamera();const _scene=new Scene();_scene.add(fullscreenQuad);if(!renderer){renderer=_renderer=new WebGLRenderer({antialias:false});}renderer.setSize(Math.min(texture.image.width,maxTextureSize),Math.min(texture.image.height,maxTextureSize));renderer.clear();renderer.render(_scene,_camera);const readableTexture=new Texture(renderer.domElement);readableTexture.minFilter=texture.minFilter;readableTexture.magFilter=texture.magFilter;readableTexture.wrapS=texture.wrapS;readableTexture.wrapT=texture.wrapT;readableTexture.name=texture.name;if(_renderer){_renderer.dispose();_renderer=null;}return readableTexture;}const KHR_mesh_quantization_ExtraAttrTypes={POSITION:[\"byte\",\"byte normalized\",\"unsigned byte\",\"unsigned byte normalized\",\"short\",\"short normalized\",\"unsigned short\",\"unsigned short normalized\"],NORMAL:[\"byte normalized\",\"short normalized\"],TANGENT:[\"byte normalized\",\"short normalized\"],TEXCOORD:[\"byte\",\"byte normalized\",\"unsigned byte\",\"short\",\"short normalized\",\"unsigned short\"]};class GLTFExporter{constructor(){this.pluginCallbacks=[];this.register(function(writer){return new GLTFLightExtension(writer);});this.register(function(writer){return new GLTFMaterialsUnlitExtension$1(writer);});this.register(function(writer){return new GLTFMaterialsTransmissionExtension$1(writer);});this.register(function(writer){return new GLTFMaterialsVolumeExtension$1(writer);});this.register(function(writer){return new GLTFMaterialsIorExtension$1(writer);});this.register(function(writer){return new GLTFMaterialsSpecularExtension$1(writer);});this.register(function(writer){return new GLTFMaterialsClearcoatExtension$1(writer);});this.register(function(writer){return new GLTFMaterialsIridescenceExtension$1(writer);});this.register(function(writer){return new GLTFMaterialsSheenExtension$1(writer);});this.register(function(writer){return new GLTFMaterialsAnisotropyExtension$1(writer);});this.register(function(writer){return new GLTFMaterialsEmissiveStrengthExtension$1(writer);});}register(callback){if(this.pluginCallbacks.indexOf(callback)===-1){this.pluginCallbacks.push(callback);}return this;}unregister(callback){if(this.pluginCallbacks.indexOf(callback)!==-1){this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(callback),1);}return this;}/**\n * Parse scenes and generate GLTF output\n * @param {Scene or [THREE.Scenes]} input Scene or Array of THREE.Scenes\n * @param {Function} onDone Callback on completed\n * @param {Function} onError Callback on errors\n * @param {Object} options options\n */parse(input,onDone,onError,options){const writer=new GLTFWriter();const plugins=[];for(let i2=0,il=this.pluginCallbacks.length;i2track.times[track.times.length-1]){if(Math.abs(track.times[track.times.length-1]-time)time){times.set(track.times.slice(0,i2+1),0);times[i2+1]=time;times.set(track.times.slice(i2+1),i2+2);values.set(track.values.slice(0,(i2+1)*valueSize),0);values.set(interpolant.evaluate(time),(i2+1)*valueSize);values.set(track.values.slice((i2+1)*valueSize),(i2+2)*valueSize);index=i2+1;break;}}}track.times=times;track.values=values;return index;},mergeMorphTargetTracks:function(clip,root){const tracks=[];const mergedTracks={};const sourceTracks=clip.tracks;for(let i2=0;i24){value=attribute.array[i2*attribute.itemSize+a2];}else{if(a2===0)value=attribute.getX(i2);else if(a2===1)value=attribute.getY(i2);else if(a2===2)value=attribute.getZ(i2);else if(a2===3)value=attribute.getW(i2);if(attribute.normalized===true){value=MathUtils.normalize(value,attribute.array);}}output.min[a2]=Math.min(output.min[a2],value);output.max[a2]=Math.max(output.max[a2],value);}}return output;}function getPaddedBufferSize(bufferSize){return Math.ceil(bufferSize/4)*4;}function getPaddedArrayBuffer(arrayBuffer,paddingByte=0){const paddedLength=getPaddedBufferSize(arrayBuffer.byteLength);if(paddedLength!==arrayBuffer.byteLength){const array=new Uint8Array(paddedLength);array.set(new Uint8Array(arrayBuffer));if(paddingByte!==0){for(let i2=arrayBuffer.byteLength;i2canvas.toBlob(resolve,mimeType));}let quality;if(mimeType===\"image/jpeg\"){quality=0.92;}else if(mimeType===\"image/webp\"){quality=0.8;}return canvas.convertToBlob({type:mimeType,quality});}class GLTFWriter{constructor(){this.plugins=[];this.options={};this.pending=[];this.buffers=[];this.byteOffset=0;this.buffers=[];this.nodeMap=/* @__PURE__ */new Map();this.skins=[];this.extensionsUsed={};this.extensionsRequired={};this.uids=/* @__PURE__ */new Map();this.uid=0;this.json={asset:{version:\"2.0\",generator:\"THREE.GLTFExporter\"}};this.cache={meshes:/* @__PURE__ */new Map(),attributes:/* @__PURE__ */new Map(),attributesNormalized:/* @__PURE__ */new Map(),materials:/* @__PURE__ */new Map(),textures:/* @__PURE__ */new Map(),images:/* @__PURE__ */new Map()};}setPlugins(plugins){this.plugins=plugins;}/**\n * Parse scenes and generate GLTF output\n * @param {Scene or [THREE.Scenes]} input Scene or Array of THREE.Scenes\n * @param {Function} onDone Callback on completed\n * @param {Object} options options\n */async write(input,onDone,options={}){this.options=Object.assign({// default options\nbinary:false,trs:false,onlyVisible:true,maxTextureSize:Infinity,animations:[],includeCustomExtensions:false},options);if(this.options.animations.length>0){this.options.trs=true;}this.processInput(input);await Promise.all(this.pending);const writer=this;const buffers=writer.buffers;const json=writer.json;options=writer.options;const extensionsUsed=writer.extensionsUsed;const extensionsRequired=writer.extensionsRequired;const blob=new Blob(buffers,{type:\"application/octet-stream\"});const extensionsUsedList=Object.keys(extensionsUsed);const extensionsRequiredList=Object.keys(extensionsRequired);if(extensionsUsedList.length>0)json.extensionsUsed=extensionsUsedList;if(extensionsRequiredList.length>0)json.extensionsRequired=extensionsRequiredList;if(json.buffers&&json.buffers.length>0)json.buffers[0].byteLength=blob.size;if(options.binary===true){blob.arrayBuffer().then(result=>{const binaryChunk=getPaddedArrayBuffer(result);const binaryChunkPrefix=new DataView(new ArrayBuffer(GLB_CHUNK_PREFIX_BYTES));binaryChunkPrefix.setUint32(0,binaryChunk.byteLength,true);binaryChunkPrefix.setUint32(4,GLB_CHUNK_TYPE_BIN,true);const jsonChunk=getPaddedArrayBuffer(stringToArrayBuffer(JSON.stringify(json)),32);const jsonChunkPrefix=new DataView(new ArrayBuffer(GLB_CHUNK_PREFIX_BYTES));jsonChunkPrefix.setUint32(0,jsonChunk.byteLength,true);jsonChunkPrefix.setUint32(4,GLB_CHUNK_TYPE_JSON,true);const header=new ArrayBuffer(GLB_HEADER_BYTES);const headerView=new DataView(header);headerView.setUint32(0,GLB_HEADER_MAGIC,true);headerView.setUint32(4,GLB_VERSION,true);const totalByteLength=GLB_HEADER_BYTES+jsonChunkPrefix.byteLength+jsonChunk.byteLength+binaryChunkPrefix.byteLength+binaryChunk.byteLength;headerView.setUint32(8,totalByteLength,true);const glbBlob=new Blob([header,jsonChunkPrefix,jsonChunk,binaryChunkPrefix,binaryChunk],{type:\"application/octet-stream\"});glbBlob.arrayBuffer().then(onDone);});}else{if(json.buffers&&json.buffers.length>0){readAsDataURL(blob).then(uri=>{json.buffers[0].uri=uri;});}onDone(json);}}/**\n * Serializes a userData.\n *\n * @param {THREE.Object3D|THREE.Material} object\n * @param {Object} objectDef\n */serializeUserData(object,objectDef){if(Object.keys(object.userData).length===0)return;const options=this.options;const extensionsUsed=this.extensionsUsed;try{const json=JSON.parse(JSON.stringify(object.userData));if(options.includeCustomExtensions&&json.gltfExtensions){if(objectDef.extensions===void 0)objectDef.extensions={};for(const extensionName in json.gltfExtensions){objectDef.extensions[extensionName]=json.gltfExtensions[extensionName];extensionsUsed[extensionName]=true;}delete json.gltfExtensions;}if(Object.keys(json).length>0)objectDef.extras=json;}catch(error){console.warn(\"THREE.GLTFExporter: userData of '\"+object.name+\"' won't be serialized because of JSON.stringify error - \"+error.message);}}/**\n * Returns ids for buffer attributes.\n * @param {Object} object\n * @return {Integer}\n */getUID(attribute,isRelativeCopy=false){if(this.uids.has(attribute)===false){const uids2=/* @__PURE__ */new Map();uids2.set(true,this.uid++);uids2.set(false,this.uid++);this.uids.set(attribute,uids2);}const uids=this.uids.get(attribute);return uids.get(isRelativeCopy);}/**\n * Checks if normal attribute values are normalized.\n *\n * @param {BufferAttribute} normal\n * @returns {Boolean}\n */isNormalizedNormalAttribute(normal){const cache=this.cache;if(cache.attributesNormalized.has(normal))return false;const v=new Vector3();for(let i2=0,il=normal.count;i25e-4)return false;}return true;}/**\n * Creates normalized normal buffer attribute.\n *\n * @param {BufferAttribute} normal\n * @returns {BufferAttribute}\n *\n */createNormalizedNormalAttribute(normal){const cache=this.cache;if(cache.attributesNormalized.has(normal))return cache.attributesNormalized.get(normal);const attribute=normal.clone();const v=new Vector3();for(let i2=0,il=attribute.count;i24){value=attribute.array[i2*attribute.itemSize+a2];}else{if(a2===0)value=attribute.getX(i2);else if(a2===1)value=attribute.getY(i2);else if(a2===2)value=attribute.getZ(i2);else if(a2===3)value=attribute.getW(i2);if(attribute.normalized===true){value=MathUtils.normalize(value,attribute.array);}}if(componentType===WEBGL_CONSTANTS$1.FLOAT){dataView.setFloat32(offset,value,true);}else if(componentType===WEBGL_CONSTANTS$1.INT){dataView.setInt32(offset,value,true);}else if(componentType===WEBGL_CONSTANTS$1.UNSIGNED_INT){dataView.setUint32(offset,value,true);}else if(componentType===WEBGL_CONSTANTS$1.SHORT){dataView.setInt16(offset,value,true);}else if(componentType===WEBGL_CONSTANTS$1.UNSIGNED_SHORT){dataView.setUint16(offset,value,true);}else if(componentType===WEBGL_CONSTANTS$1.BYTE){dataView.setInt8(offset,value);}else if(componentType===WEBGL_CONSTANTS$1.UNSIGNED_BYTE){dataView.setUint8(offset,value);}offset+=componentSize;}}const bufferViewDef={buffer:this.processBuffer(dataView.buffer),byteOffset:this.byteOffset,byteLength};if(target!==void 0)bufferViewDef.target=target;if(target===WEBGL_CONSTANTS$1.ARRAY_BUFFER){bufferViewDef.byteStride=attribute.itemSize*componentSize;}this.byteOffset+=byteLength;json.bufferViews.push(bufferViewDef);const output={id:json.bufferViews.length-1,byteLength:0};return output;}/**\n * Process and generate a BufferView from an image Blob.\n * @param {Blob} blob\n * @return {Promise}\n */processBufferViewImage(blob){const writer=this;const json=writer.json;if(!json.bufferViews)json.bufferViews=[];return blob.arrayBuffer().then(result=>{const buffer=getPaddedArrayBuffer(result);const bufferViewDef={buffer:writer.processBuffer(buffer),byteOffset:writer.byteOffset,byteLength:buffer.byteLength};writer.byteOffset+=buffer.byteLength;return json.bufferViews.push(bufferViewDef)-1;});}/**\n * Process attribute to generate an accessor\n * @param {BufferAttribute} attribute Attribute to process\n * @param {THREE.BufferGeometry} geometry (Optional) Geometry used for truncated draw range\n * @param {Integer} start (Optional)\n * @param {Integer} count (Optional)\n * @return {Integer|null} Index of the processed accessor on the \"accessors\" array\n */processAccessor(attribute,geometry2,start,count){const json=this.json;const types={1:\"SCALAR\",2:\"VEC2\",3:\"VEC3\",4:\"VEC4\",9:\"MAT3\",16:\"MAT4\"};let componentType;if(attribute.array.constructor===Float32Array){componentType=WEBGL_CONSTANTS$1.FLOAT;}else if(attribute.array.constructor===Int32Array){componentType=WEBGL_CONSTANTS$1.INT;}else if(attribute.array.constructor===Uint32Array){componentType=WEBGL_CONSTANTS$1.UNSIGNED_INT;}else if(attribute.array.constructor===Int16Array){componentType=WEBGL_CONSTANTS$1.SHORT;}else if(attribute.array.constructor===Uint16Array){componentType=WEBGL_CONSTANTS$1.UNSIGNED_SHORT;}else if(attribute.array.constructor===Int8Array){componentType=WEBGL_CONSTANTS$1.BYTE;}else if(attribute.array.constructor===Uint8Array){componentType=WEBGL_CONSTANTS$1.UNSIGNED_BYTE;}else{throw new Error(\"THREE.GLTFExporter: Unsupported bufferAttribute component type: \"+attribute.array.constructor.name);}if(start===void 0)start=0;if(count===void 0)count=attribute.count;if(count===0)return null;const minMax=getMinMax(attribute,start,count);let bufferViewTarget;if(geometry2!==void 0){bufferViewTarget=attribute===geometry2.index?WEBGL_CONSTANTS$1.ELEMENT_ARRAY_BUFFER:WEBGL_CONSTANTS$1.ARRAY_BUFFER;}const bufferView=this.processBufferView(attribute,componentType,start,count,bufferViewTarget);const accessorDef={bufferView:bufferView.id,byteOffset:bufferView.byteOffset,componentType,count,max:minMax.max,min:minMax.min,type:types[attribute.itemSize]};if(attribute.normalized===true)accessorDef.normalized=true;if(!json.accessors)json.accessors=[];return json.accessors.push(accessorDef)-1;}/**\n * Process image\n * @param {Image} image to process\n * @param {Integer} format of the image (RGBAFormat)\n * @param {Boolean} flipY before writing out the image\n * @param {String} mimeType export format\n * @return {Integer} Index of the processed texture in the \"images\" array\n */processImage(image,format,flipY,mimeType=\"image/png\"){if(image!==null){const writer=this;const cache=writer.cache;const json=writer.json;const options=writer.options;const pending=writer.pending;if(!cache.images.has(image))cache.images.set(image,{});const cachedImages=cache.images.get(image);const key=mimeType+\":flipY/\"+flipY.toString();if(cachedImages[key]!==void 0)return cachedImages[key];if(!json.images)json.images=[];const imageDef={mimeType};const canvas=getCanvas();canvas.width=Math.min(image.width,options.maxTextureSize);canvas.height=Math.min(image.height,options.maxTextureSize);const ctx=canvas.getContext(\"2d\");if(flipY===true){ctx.translate(0,canvas.height);ctx.scale(1,-1);}if(image.data!==void 0){if(format!==RGBAFormat){console.error(\"GLTFExporter: Only RGBAFormat is supported.\",format);}if(image.width>options.maxTextureSize||image.height>options.maxTextureSize){console.warn(\"GLTFExporter: Image size is bigger than maxTextureSize\",image);}const data=new Uint8ClampedArray(image.height*image.width*4);for(let i2=0;i2writer.processBufferViewImage(blob)).then(bufferViewIndex=>{imageDef.bufferView=bufferViewIndex;}));}else{if(canvas.toDataURL!==void 0){imageDef.uri=canvas.toDataURL(mimeType);}else{pending.push(getToBlobPromise(canvas,mimeType).then(readAsDataURL).then(uri=>{imageDef.uri=uri;}));}}const index=json.images.push(imageDef)-1;cachedImages[key]=index;return index;}else{throw new Error(\"THREE.GLTFExporter: No valid image data found. Unable to process texture.\");}}/**\n * Process sampler\n * @param {Texture} map Texture to process\n * @return {Integer} Index of the processed texture in the \"samplers\" array\n */processSampler(map){const json=this.json;if(!json.samplers)json.samplers=[];const samplerDef={magFilter:THREE_TO_WEBGL[map.magFilter],minFilter:THREE_TO_WEBGL[map.minFilter],wrapS:THREE_TO_WEBGL[map.wrapS],wrapT:THREE_TO_WEBGL[map.wrapT]};return json.samplers.push(samplerDef)-1;}/**\n * Process texture\n * @param {Texture} map Map to process\n * @return {Integer} Index of the processed texture in the \"textures\" array\n */processTexture(map){const writer=this;const options=writer.options;const cache=this.cache;const json=this.json;if(cache.textures.has(map))return cache.textures.get(map);if(!json.textures)json.textures=[];if(map instanceof CompressedTexture){map=decompress(map,options.maxTextureSize);}let mimeType=map.userData.mimeType;if(mimeType===\"image/webp\")mimeType=\"image/png\";const textureDef={sampler:this.processSampler(map),source:this.processImage(map.image,map.format,map.flipY,mimeType)};if(map.name)textureDef.name=map.name;this._invokeAll(function(ext){ext.writeTexture&&ext.writeTexture(map,textureDef);});const index=json.textures.push(textureDef)-1;cache.textures.set(map,index);return index;}/**\n * Process material\n * @param {THREE.Material} material Material to process\n * @return {Integer|null} Index of the processed material in the \"materials\" array\n */processMaterial(material2){const cache=this.cache;const json=this.json;if(cache.materials.has(material2))return cache.materials.get(material2);if(material2.isShaderMaterial){console.warn(\"GLTFExporter: THREE.ShaderMaterial not supported.\");return null;}if(!json.materials)json.materials=[];const materialDef={pbrMetallicRoughness:{}};if(material2.isMeshStandardMaterial!==true&&material2.isMeshBasicMaterial!==true){console.warn(\"GLTFExporter: Use MeshStandardMaterial or MeshBasicMaterial for best results.\");}const color=material2.color.toArray().concat([material2.opacity]);if(!equalArray(color,[1,1,1,1])){materialDef.pbrMetallicRoughness.baseColorFactor=color;}if(material2.isMeshStandardMaterial){materialDef.pbrMetallicRoughness.metallicFactor=material2.metalness;materialDef.pbrMetallicRoughness.roughnessFactor=material2.roughness;}else{materialDef.pbrMetallicRoughness.metallicFactor=0.5;materialDef.pbrMetallicRoughness.roughnessFactor=0.5;}if(material2.metalnessMap||material2.roughnessMap){const metalRoughTexture=this.buildMetalRoughTexture(material2.metalnessMap,material2.roughnessMap);const metalRoughMapDef={index:this.processTexture(metalRoughTexture),channel:metalRoughTexture.channel};this.applyTextureTransform(metalRoughMapDef,metalRoughTexture);materialDef.pbrMetallicRoughness.metallicRoughnessTexture=metalRoughMapDef;}if(material2.map){const baseColorMapDef={index:this.processTexture(material2.map),texCoord:material2.map.channel};this.applyTextureTransform(baseColorMapDef,material2.map);materialDef.pbrMetallicRoughness.baseColorTexture=baseColorMapDef;}if(material2.emissive){const emissive=material2.emissive;const maxEmissiveComponent=Math.max(emissive.r,emissive.g,emissive.b);if(maxEmissiveComponent>0){materialDef.emissiveFactor=material2.emissive.toArray();}if(material2.emissiveMap){const emissiveMapDef={index:this.processTexture(material2.emissiveMap),texCoord:material2.emissiveMap.channel};this.applyTextureTransform(emissiveMapDef,material2.emissiveMap);materialDef.emissiveTexture=emissiveMapDef;}}if(material2.normalMap){const normalMapDef={index:this.processTexture(material2.normalMap),texCoord:material2.normalMap.channel};if(material2.normalScale&&material2.normalScale.x!==1){normalMapDef.scale=material2.normalScale.x;}this.applyTextureTransform(normalMapDef,material2.normalMap);materialDef.normalTexture=normalMapDef;}if(material2.aoMap){const occlusionMapDef={index:this.processTexture(material2.aoMap),texCoord:material2.aoMap.channel};if(material2.aoMapIntensity!==1){occlusionMapDef.strength=material2.aoMapIntensity;}this.applyTextureTransform(occlusionMapDef,material2.aoMap);materialDef.occlusionTexture=occlusionMapDef;}if(material2.transparent){materialDef.alphaMode=\"BLEND\";}else{if(material2.alphaTest>0){materialDef.alphaMode=\"MASK\";materialDef.alphaCutoff=material2.alphaTest;}}if(material2.side===DoubleSide)materialDef.doubleSided=true;if(material2.name!==\"\")materialDef.name=material2.name;this.serializeUserData(material2,materialDef);this._invokeAll(function(ext){ext.writeMaterial&&ext.writeMaterial(material2,materialDef);});const index=json.materials.push(materialDef)-1;cache.materials.set(material2,index);return index;}/**\n * Process mesh\n * @param {THREE.Mesh} mesh Mesh to process\n * @return {Integer|null} Index of the processed mesh in the \"meshes\" array\n */processMesh(mesh){const cache=this.cache;const json=this.json;const meshCacheKeyParts=[mesh.geometry.uuid];if(Array.isArray(mesh.material)){for(let i2=0,l=mesh.material.length;i2=152?\"uv1\":\"uv2\"]:\"TEXCOORD_1\",color:\"COLOR_0\",skinWeight:\"WEIGHTS_0\",skinIndex:\"JOINTS_0\"};const originalNormal=geometry2.getAttribute(\"normal\");if(originalNormal!==void 0&&!this.isNormalizedNormalAttribute(originalNormal)){console.warn(\"THREE.GLTFExporter: Creating normalized normal attribute from the non-normalized one.\");geometry2.setAttribute(\"normal\",this.createNormalizedNormalAttribute(originalNormal));}let modifiedAttribute=null;for(let attributeName in geometry2.attributes){if(attributeName.slice(0,5)===\"morph\")continue;const attribute=geometry2.attributes[attributeName];attributeName=nameConversion[attributeName]||attributeName.toUpperCase();const validVertexAttributes=/^(POSITION|NORMAL|TANGENT|TEXCOORD_\\d+|COLOR_\\d+|JOINTS_\\d+|WEIGHTS_\\d+)$/;if(!validVertexAttributes.test(attributeName))attributeName=\"_\"+attributeName;if(cache.attributes.has(this.getUID(attribute))){attributes[attributeName]=cache.attributes.get(this.getUID(attribute));continue;}modifiedAttribute=null;const array=attribute.array;if(attributeName===\"JOINTS_0\"&&!(array instanceof Uint16Array)&&!(array instanceof Uint8Array)){console.warn('GLTFExporter: Attribute \"skinIndex\" converted to type UNSIGNED_SHORT.');modifiedAttribute=new BufferAttribute(new Uint16Array(array),attribute.itemSize,attribute.normalized);}const accessor=this.processAccessor(modifiedAttribute||attribute,geometry2);if(accessor!==null){if(!attributeName.startsWith(\"_\")){this.detectMeshQuantization(attributeName,attribute);}attributes[attributeName]=accessor;cache.attributes.set(this.getUID(attribute),accessor);}}if(originalNormal!==void 0)geometry2.setAttribute(\"normal\",originalNormal);if(Object.keys(attributes).length===0)return null;if(mesh.morphTargetInfluences!==void 0&&mesh.morphTargetInfluences.length>0){const weights=[];const targetNames=[];const reverseDictionary={};if(mesh.morphTargetDictionary!==void 0){for(const key in mesh.morphTargetDictionary){reverseDictionary[mesh.morphTargetDictionary[key]]=key;}}for(let i2=0;i20){meshDef.extras={};meshDef.extras.targetNames=targetNames;}}const isMultiMaterial=Array.isArray(mesh.material);if(isMultiMaterial&&geometry2.groups.length===0)return null;const materials=isMultiMaterial?mesh.material:[mesh.material];const groups=isMultiMaterial?geometry2.groups:[{materialIndex:0,start:void 0,count:void 0}];for(let i2=0,il=groups.length;i20)primitive.targets=targets;if(geometry2.index!==null){let cacheKey=this.getUID(geometry2.index);if(groups[i2].start!==void 0||groups[i2].count!==void 0){cacheKey+=\":\"+groups[i2].start+\":\"+groups[i2].count;}if(cache.attributes.has(cacheKey)){primitive.indices=cache.attributes.get(cacheKey);}else{primitive.indices=this.processAccessor(geometry2.index,geometry2,groups[i2].start,groups[i2].count);cache.attributes.set(cacheKey,primitive.indices);}if(primitive.indices===null)delete primitive.indices;}const material2=this.processMaterial(materials[groups[i2].materialIndex]);if(material2!==null)primitive.material=material2;primitives.push(primitive);}meshDef.primitives=primitives;if(!json.meshes)json.meshes=[];this._invokeAll(function(ext){ext.writeMesh&&ext.writeMesh(mesh,meshDef);});const index=json.meshes.push(meshDef)-1;cache.meshes.set(meshCacheKey,index);return index;}/**\n * If a vertex attribute with a\n * [non-standard data type](https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#meshes-overview)\n * is used, it is checked whether it is a valid data type according to the\n * [KHR_mesh_quantization](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_mesh_quantization/README.md)\n * extension.\n * In this case the extension is automatically added to the list of used extensions.\n *\n * @param {string} attributeName\n * @param {THREE.BufferAttribute} attribute\n */detectMeshQuantization(attributeName,attribute){if(this.extensionsUsed[KHR_MESH_QUANTIZATION])return;let attrType=void 0;switch(attribute.array.constructor){case Int8Array:attrType=\"byte\";break;case Uint8Array:attrType=\"unsigned byte\";break;case Int16Array:attrType=\"short\";break;case Uint16Array:attrType=\"unsigned short\";break;default:return;}if(attribute.normalized)attrType+=\" normalized\";const attrNamePrefix=attributeName.split(\"_\",1)[0];if(KHR_mesh_quantization_ExtraAttrTypes[attrNamePrefix]&&KHR_mesh_quantization_ExtraAttrTypes[attrNamePrefix].includes(attrType)){this.extensionsUsed[KHR_MESH_QUANTIZATION]=true;this.extensionsRequired[KHR_MESH_QUANTIZATION]=true;}}/**\n * Process camera\n * @param {THREE.Camera} camera Camera to process\n * @return {Integer} Index of the processed mesh in the \"camera\" array\n */processCamera(camera){const json=this.json;if(!json.cameras)json.cameras=[];const isOrtho=camera.isOrthographicCamera;const cameraDef={type:isOrtho?\"orthographic\":\"perspective\"};if(isOrtho){cameraDef.orthographic={xmag:camera.right*2,ymag:camera.top*2,zfar:camera.far<=0?1e-3:camera.far,znear:camera.near<0?0:camera.near};}else{cameraDef.perspective={aspectRatio:camera.aspect,yfov:MathUtils.degToRad(camera.fov),zfar:camera.far<=0?1e-3:camera.far,znear:camera.near<0?0:camera.near};}if(camera.name!==\"\")cameraDef.name=camera.type;return json.cameras.push(cameraDef)-1;}/**\n * Creates glTF animation entry from AnimationClip object.\n *\n * Status:\n * - Only properties listed in PATH_PROPERTIES may be animated.\n *\n * @param {THREE.AnimationClip} clip\n * @param {THREE.Object3D} root\n * @return {number|null}\n */processAnimation(clip,root){const json=this.json;const nodeMap=this.nodeMap;if(!json.animations)json.animations=[];clip=GLTFExporter.Utils.mergeMorphTargetTracks(clip.clone(),root);const tracks=clip.tracks;const channels=[];const samplers=[];for(let i2=0;i20){const children=[];for(let i2=0,l=object.children.length;i20)nodeDef.children=children;}this._invokeAll(function(ext){ext.writeNode&&ext.writeNode(object,nodeDef);});const nodeIndex=json.nodes.push(nodeDef)-1;nodeMap.set(object,nodeIndex);return nodeIndex;}/**\n * Process Scene\n * @param {Scene} node Scene to process\n */processScene(scene){const json=this.json;const options=this.options;if(!json.scenes){json.scenes=[];json.scene=0;}const sceneDef={};if(scene.name!==\"\")sceneDef.name=scene.name;json.scenes.push(sceneDef);const nodes=[];for(let i2=0,l=scene.children.length;i20)sceneDef.nodes=nodes;this.serializeUserData(scene,sceneDef);}/**\n * Creates a Scene to hold a list of objects and parse it\n * @param {Array} objects List of objects to process\n */processObjects(objects){const scene=new Scene();scene.name=\"AuxScene\";for(let i2=0;i2} input\n */processInput(input){const options=this.options;input=input instanceof Array?input:[input];this._invokeAll(function(ext){ext.beforeParse&&ext.beforeParse(input);});const objectsWithoutScene=[];for(let i2=0;i20)this.processObjects(objectsWithoutScene);for(let i2=0;i20)lightDef.range=light.distance;}else if(light.isSpotLight){lightDef.type=\"spot\";if(light.distance>0)lightDef.range=light.distance;lightDef.spot={};lightDef.spot.innerConeAngle=(light.penumbra-1)*light.angle*-1;lightDef.spot.outerConeAngle=light.angle;}if(light.decay!==void 0&&light.decay!==2){console.warn(\"THREE.GLTFExporter: Light decay may be lost. glTF is physically-based, and expects light.decay=2.\");}if(light.target&&(light.target.parent!==light||light.target.position.x!==0||light.target.position.y!==0||light.target.position.z!==-1)){console.warn(\"THREE.GLTFExporter: Light direction may be lost. For best results, make light.target a child of the light with position 0,0,-1.\");}if(!extensionsUsed[this.name]){json.extensions=json.extensions||{};json.extensions[this.name]={lights:[]};extensionsUsed[this.name]=true;}const lights=json.extensions[this.name].lights;lights.push(lightDef);nodeDef.extensions=nodeDef.extensions||{};nodeDef.extensions[this.name]={light:lights.length-1};}}let GLTFMaterialsUnlitExtension$1=class GLTFMaterialsUnlitExtension{constructor(writer){this.writer=writer;this.name=\"KHR_materials_unlit\";}writeMaterial(material2,materialDef){if(!material2.isMeshBasicMaterial)return;const writer=this.writer;const extensionsUsed=writer.extensionsUsed;materialDef.extensions=materialDef.extensions||{};materialDef.extensions[this.name]={};extensionsUsed[this.name]=true;materialDef.pbrMetallicRoughness.metallicFactor=0;materialDef.pbrMetallicRoughness.roughnessFactor=0.9;}};let GLTFMaterialsClearcoatExtension$1=class GLTFMaterialsClearcoatExtension{constructor(writer){this.writer=writer;this.name=\"KHR_materials_clearcoat\";}writeMaterial(material2,materialDef){if(!material2.isMeshPhysicalMaterial||material2.clearcoat===0)return;const writer=this.writer;const extensionsUsed=writer.extensionsUsed;const extensionDef={};extensionDef.clearcoatFactor=material2.clearcoat;if(material2.clearcoatMap){const clearcoatMapDef={index:writer.processTexture(material2.clearcoatMap),texCoord:material2.clearcoatMap.channel};writer.applyTextureTransform(clearcoatMapDef,material2.clearcoatMap);extensionDef.clearcoatTexture=clearcoatMapDef;}extensionDef.clearcoatRoughnessFactor=material2.clearcoatRoughness;if(material2.clearcoatRoughnessMap){const clearcoatRoughnessMapDef={index:writer.processTexture(material2.clearcoatRoughnessMap),texCoord:material2.clearcoatRoughnessMap.channel};writer.applyTextureTransform(clearcoatRoughnessMapDef,material2.clearcoatRoughnessMap);extensionDef.clearcoatRoughnessTexture=clearcoatRoughnessMapDef;}if(material2.clearcoatNormalMap){const clearcoatNormalMapDef={index:writer.processTexture(material2.clearcoatNormalMap),texCoord:material2.clearcoatNormalMap.channel};writer.applyTextureTransform(clearcoatNormalMapDef,material2.clearcoatNormalMap);extensionDef.clearcoatNormalTexture=clearcoatNormalMapDef;}materialDef.extensions=materialDef.extensions||{};materialDef.extensions[this.name]=extensionDef;extensionsUsed[this.name]=true;}};let GLTFMaterialsIridescenceExtension$1=class GLTFMaterialsIridescenceExtension{constructor(writer){this.writer=writer;this.name=\"KHR_materials_iridescence\";}writeMaterial(material2,materialDef){if(!material2.isMeshPhysicalMaterial||material2.iridescence===0)return;const writer=this.writer;const extensionsUsed=writer.extensionsUsed;const extensionDef={};extensionDef.iridescenceFactor=material2.iridescence;if(material2.iridescenceMap){const iridescenceMapDef={index:writer.processTexture(material2.iridescenceMap),texCoord:material2.iridescenceMap.channel};writer.applyTextureTransform(iridescenceMapDef,material2.iridescenceMap);extensionDef.iridescenceTexture=iridescenceMapDef;}extensionDef.iridescenceIor=material2.iridescenceIOR;extensionDef.iridescenceThicknessMinimum=material2.iridescenceThicknessRange[0];extensionDef.iridescenceThicknessMaximum=material2.iridescenceThicknessRange[1];if(material2.iridescenceThicknessMap){const iridescenceThicknessMapDef={index:writer.processTexture(material2.iridescenceThicknessMap),texCoord:material2.iridescenceThicknessMap.channel};writer.applyTextureTransform(iridescenceThicknessMapDef,material2.iridescenceThicknessMap);extensionDef.iridescenceThicknessTexture=iridescenceThicknessMapDef;}materialDef.extensions=materialDef.extensions||{};materialDef.extensions[this.name]=extensionDef;extensionsUsed[this.name]=true;}};let GLTFMaterialsTransmissionExtension$1=class GLTFMaterialsTransmissionExtension{constructor(writer){this.writer=writer;this.name=\"KHR_materials_transmission\";}writeMaterial(material2,materialDef){if(!material2.isMeshPhysicalMaterial||material2.transmission===0)return;const writer=this.writer;const extensionsUsed=writer.extensionsUsed;const extensionDef={};extensionDef.transmissionFactor=material2.transmission;if(material2.transmissionMap){const transmissionMapDef={index:writer.processTexture(material2.transmissionMap),texCoord:material2.transmissionMap.channel};writer.applyTextureTransform(transmissionMapDef,material2.transmissionMap);extensionDef.transmissionTexture=transmissionMapDef;}materialDef.extensions=materialDef.extensions||{};materialDef.extensions[this.name]=extensionDef;extensionsUsed[this.name]=true;}};let GLTFMaterialsVolumeExtension$1=class GLTFMaterialsVolumeExtension{constructor(writer){this.writer=writer;this.name=\"KHR_materials_volume\";}writeMaterial(material2,materialDef){if(!material2.isMeshPhysicalMaterial||material2.transmission===0)return;const writer=this.writer;const extensionsUsed=writer.extensionsUsed;const extensionDef={};extensionDef.thicknessFactor=material2.thickness;if(material2.thicknessMap){const thicknessMapDef={index:writer.processTexture(material2.thicknessMap),texCoord:material2.thicknessMap.channel};writer.applyTextureTransform(thicknessMapDef,material2.thicknessMap);extensionDef.thicknessTexture=thicknessMapDef;}extensionDef.attenuationDistance=material2.attenuationDistance;extensionDef.attenuationColor=material2.attenuationColor.toArray();materialDef.extensions=materialDef.extensions||{};materialDef.extensions[this.name]=extensionDef;extensionsUsed[this.name]=true;}};let GLTFMaterialsIorExtension$1=class GLTFMaterialsIorExtension{constructor(writer){this.writer=writer;this.name=\"KHR_materials_ior\";}writeMaterial(material2,materialDef){if(!material2.isMeshPhysicalMaterial||material2.ior===1.5)return;const writer=this.writer;const extensionsUsed=writer.extensionsUsed;const extensionDef={};extensionDef.ior=material2.ior;materialDef.extensions=materialDef.extensions||{};materialDef.extensions[this.name]=extensionDef;extensionsUsed[this.name]=true;}};let GLTFMaterialsSpecularExtension$1=class GLTFMaterialsSpecularExtension{constructor(writer){this.writer=writer;this.name=\"KHR_materials_specular\";}writeMaterial(material2,materialDef){if(!material2.isMeshPhysicalMaterial||material2.specularIntensity===1&&material2.specularColor.equals(DEFAULT_SPECULAR_COLOR)&&!material2.specularIntensityMap&&!material2.specularColorTexture)return;const writer=this.writer;const extensionsUsed=writer.extensionsUsed;const extensionDef={};if(material2.specularIntensityMap){const specularIntensityMapDef={index:writer.processTexture(material2.specularIntensityMap),texCoord:material2.specularIntensityMap.channel};writer.applyTextureTransform(specularIntensityMapDef,material2.specularIntensityMap);extensionDef.specularTexture=specularIntensityMapDef;}if(material2.specularColorMap){const specularColorMapDef={index:writer.processTexture(material2.specularColorMap),texCoord:material2.specularColorMap.channel};writer.applyTextureTransform(specularColorMapDef,material2.specularColorMap);extensionDef.specularColorTexture=specularColorMapDef;}extensionDef.specularFactor=material2.specularIntensity;extensionDef.specularColorFactor=material2.specularColor.toArray();materialDef.extensions=materialDef.extensions||{};materialDef.extensions[this.name]=extensionDef;extensionsUsed[this.name]=true;}};let GLTFMaterialsSheenExtension$1=class GLTFMaterialsSheenExtension{constructor(writer){this.writer=writer;this.name=\"KHR_materials_sheen\";}writeMaterial(material2,materialDef){if(!material2.isMeshPhysicalMaterial||material2.sheen==0)return;const writer=this.writer;const extensionsUsed=writer.extensionsUsed;const extensionDef={};if(material2.sheenRoughnessMap){const sheenRoughnessMapDef={index:writer.processTexture(material2.sheenRoughnessMap),texCoord:material2.sheenRoughnessMap.channel};writer.applyTextureTransform(sheenRoughnessMapDef,material2.sheenRoughnessMap);extensionDef.sheenRoughnessTexture=sheenRoughnessMapDef;}if(material2.sheenColorMap){const sheenColorMapDef={index:writer.processTexture(material2.sheenColorMap),texCoord:material2.sheenColorMap.channel};writer.applyTextureTransform(sheenColorMapDef,material2.sheenColorMap);extensionDef.sheenColorTexture=sheenColorMapDef;}extensionDef.sheenRoughnessFactor=material2.sheenRoughness;extensionDef.sheenColorFactor=material2.sheenColor.toArray();materialDef.extensions=materialDef.extensions||{};materialDef.extensions[this.name]=extensionDef;extensionsUsed[this.name]=true;}};let GLTFMaterialsAnisotropyExtension$1=class GLTFMaterialsAnisotropyExtension{constructor(writer){this.writer=writer;this.name=\"KHR_materials_anisotropy\";}writeMaterial(material2,materialDef){if(!material2.isMeshPhysicalMaterial||material2.anisotropy==0)return;const writer=this.writer;const extensionsUsed=writer.extensionsUsed;const extensionDef={};if(material2.anisotropyMap){const anisotropyMapDef={index:writer.processTexture(material2.anisotropyMap)};writer.applyTextureTransform(anisotropyMapDef,material2.anisotropyMap);extensionDef.anisotropyTexture=anisotropyMapDef;}extensionDef.anisotropyStrength=material2.anisotropy;extensionDef.anisotropyRotation=material2.anisotropyRotation;materialDef.extensions=materialDef.extensions||{};materialDef.extensions[this.name]=extensionDef;extensionsUsed[this.name]=true;}};let GLTFMaterialsEmissiveStrengthExtension$1=class GLTFMaterialsEmissiveStrengthExtension{constructor(writer){this.writer=writer;this.name=\"KHR_materials_emissive_strength\";}writeMaterial(material2,materialDef){if(!material2.isMeshStandardMaterial||material2.emissiveIntensity===1)return;const writer=this.writer;const extensionsUsed=writer.extensionsUsed;const extensionDef={};extensionDef.emissiveStrength=material2.emissiveIntensity;materialDef.extensions=materialDef.extensions||{};materialDef.extensions[this.name]=extensionDef;extensionsUsed[this.name]=true;}};class USDZExporter{constructor(){__publicField(this,\"PRECISION\",7);__publicField(this,\"materials\");__publicField(this,\"textures\");__publicField(this,\"files\");this.materials={};this.textures={};this.files={};}async parse(scene){const modelFileName=\"model.usda\";this.files[modelFileName]=null;let output=this.buildHeader();scene.traverseVisible(object=>{if(object instanceof Mesh&&object.isMesh&&object.material.isMeshStandardMaterial){const geometry2=object.geometry;const material2=object.material;const geometryFileName=\"geometries/Geometry_\"+geometry2.id+\".usd\";if(!(geometryFileName in this.files)){const meshObject=this.buildMeshObject(geometry2);this.files[geometryFileName]=this.buildUSDFileAsString(meshObject);}if(!(material2.uuid in this.materials)){this.materials[material2.uuid]=material2;}output+=this.buildXform(object,geometry2,material2);}});output+=this.buildMaterials(this.materials);this.files[modelFileName]=strToU8(output);output=null;for(const id in this.textures){const texture=this.textures[id];const color=id.split(\"_\")[1];const isRGBA=texture.format===1023;const canvas=this.imageToCanvas(texture.image,color);const blob=await new Promise(resolve=>canvas==null?void 0:canvas.toBlob(resolve,isRGBA?\"image/png\":\"image/jpeg\",1));if(blob){this.files[`textures/Texture_${id}.${isRGBA?\"png\":\"jpg\"}`]=new Uint8Array(await blob.arrayBuffer());}}let offset=0;for(const filename in this.files){const file=this.files[filename];const headerSize=34+filename.length;offset+=headerSize;const offsetMod64=offset&63;if(offsetMod64!==4&&file!==null&&file instanceof Uint8Array){const padLength=64-offsetMod64;const padding=new Uint8Array(padLength);this.files[filename]=[file,{extra:{12345:padding}}];}if(file&&typeof file.length===\"number\"){offset=file.length;}}return zipSync(this.files,{level:0});}imageToCanvas(image,color){if(typeof HTMLImageElement!==\"undefined\"&&image instanceof HTMLImageElement||typeof HTMLCanvasElement!==\"undefined\"&&image instanceof HTMLCanvasElement||typeof OffscreenCanvas!==\"undefined\"&&image instanceof OffscreenCanvas||typeof ImageBitmap!==\"undefined\"&&image instanceof ImageBitmap){const scale=1024/Math.max(image.width,image.height);const canvas=document.createElement(\"canvas\");canvas.width=image.width*Math.min(1,scale);canvas.height=image.height*Math.min(1,scale);const context=canvas.getContext(\"2d\");context==null?void 0:context.drawImage(image,0,0,canvas.width,canvas.height);if(color!==void 0){const hex=parseInt(color,16);const r=(hex>>16&255)/255;const g=(hex>>8&255)/255;const b2=(hex&255)/255;const imagedata=context==null?void 0:context.getImageData(0,0,canvas.width,canvas.height);if(imagedata){const data=imagedata==null?void 0:imagedata.data;for(let i2=0;i2\n)\n{\n matrix4d xformOp:transform = ${transform}\n uniform token[] xformOpOrder = [\"xformOp:transform\"]\n rel material:binding = \n}\n`;}buildMatrix(matrix2){const array=matrix2.elements;return`( ${this.buildMatrixRow(array,0)}, ${this.buildMatrixRow(array,4)}, ${this.buildMatrixRow(array,8)}, ${this.buildMatrixRow(array,12)} )`;}buildMatrixRow(array,offset){return`(${array[offset+0]}, ${array[offset+1]}, ${array[offset+2]}, ${array[offset+3]})`;}// Mesh\nbuildMeshObject(geometry2){const mesh=this.buildMesh(geometry2);return`\ndef \"Geometry\"\n{\n ${mesh}\n}\n`;}buildMesh(geometry2){const name=\"Geometry\";const attributes=geometry2.attributes;const count=attributes.position.count;return`\n def Mesh \"${name}\"\n {\n int[] faceVertexCounts = [${this.buildMeshVertexCount(geometry2)}]\n int[] faceVertexIndices = [${this.buildMeshVertexIndices(geometry2)}]\n normal3f[] normals = [${this.buildVector3Array(attributes.normal,count)}] (\n interpolation = \"vertex\"\n )\n point3f[] points = [${this.buildVector3Array(attributes.position,count)}]\n float2[] primvars:st = [${this.buildVector2Array(attributes.uv,count)}] (\n interpolation = \"vertex\"\n )\n uniform token subdivisionScheme = \"none\"\n }\n`;}buildMeshVertexCount(geometry2){const count=geometry2.index!==null?geometry2.index.array.length:geometry2.attributes.position.count;return Array(count/3).fill(3).join(\", \");}buildMeshVertexIndices(geometry2){if(geometry2.index!==null){return geometry2.index.array.join(\", \");}const array=[];const length=geometry2.attributes.position.count;for(let i2=0;i2`);samplers.push(this.buildTexture(material2,material2.map,\"diffuse\",material2.color));}else{inputs.push(`${pad}color3f inputs:diffuseColor = ${this.buildColor(material2.color)}`);}if(material2.emissiveMap!==null){inputs.push(`${pad}color3f inputs:emissiveColor.connect = `);samplers.push(this.buildTexture(material2,material2.emissiveMap,\"emissive\"));}else if(material2.emissive.getHex()>0){inputs.push(`${pad}color3f inputs:emissiveColor = ${this.buildColor(material2.emissive)}`);}if(material2.normalMap!==null){inputs.push(`${pad}normal3f inputs:normal.connect = `);samplers.push(this.buildTexture(material2,material2.normalMap,\"normal\"));}if(material2.aoMap!==null){inputs.push(`${pad}float inputs:occlusion.connect = `);samplers.push(this.buildTexture(material2,material2.aoMap,\"occlusion\"));}if(material2.roughnessMap!==null&&material2.roughness===1){inputs.push(`${pad}float inputs:roughness.connect = `);samplers.push(this.buildTexture(material2,material2.roughnessMap,\"roughness\"));}else{inputs.push(`${pad}float inputs:roughness = ${material2.roughness}`);}if(material2.metalnessMap!==null&&material2.metalness===1){inputs.push(`${pad}float inputs:metallic.connect = `);samplers.push(this.buildTexture(material2,material2.metalnessMap,\"metallic\"));}else{inputs.push(`${pad}float inputs:metallic = ${material2.metalness}`);}inputs.push(`${pad}float inputs:opacity = ${material2.opacity}`);if(material2 instanceof MeshPhysicalMaterial){inputs.push(`${pad}float inputs:clearcoat = ${material2.clearcoat}`);inputs.push(`${pad}float inputs:clearcoatRoughness = ${material2.clearcoatRoughness}`);inputs.push(`${pad}float inputs:ior = ${material2.ior}`);}return`\n def Material \"Material_${material2.id}\"\n {\n def Shader \"PreviewSurface\"\n {\n uniform token info:id = \"UsdPreviewSurface\"\n${inputs.join(\"\\n\")}\n int inputs:useSpecularWorkflow = 0\n token outputs:surface\n }\n token outputs:surface.connect = \n token inputs:frame:stPrimvarName = \"st\"\n def Shader \"uvReader_st\"\n {\n uniform token info:id = \"UsdPrimvarReader_float2\"\n token inputs:varname.connect = \n float2 inputs:fallback = (0.0, 0.0)\n float2 outputs:result\n }\n${samplers.join(\"\\n\")}\n }\n`;}buildTexture(material2,texture,mapType,color){const id=texture.id+(color?\"_\"+color.getHexString():\"\");const isRGBA=texture.format===1023;this.textures[id]=texture;return`\n def Shader \"Transform2d_${mapType}\" (\n sdrMetadata = {\n string role = \"math\"\n }\n )\n {\n uniform token info:id = \"UsdTransform2d\"\n float2 inputs:in.connect = \n float2 inputs:scale = ${this.buildVector2(texture.repeat)}\n float2 inputs:translation = ${this.buildVector2(texture.offset)}\n float2 outputs:result\n }\n def Shader \"Texture_${texture.id}_${mapType}\"\n {\n uniform token info:id = \"UsdUVTexture\"\n asset inputs:file = @textures/Texture_${id}.${isRGBA?\"png\":\"jpg\"}@\n float2 inputs:st.connect = \n token inputs:wrapS = \"repeat\"\n token inputs:wrapT = \"repeat\"\n float outputs:r\n float outputs:g\n float outputs:b\n float3 outputs:rgb\n }`;}buildColor(color){return`(${color.r}, ${color.g}, ${color.b})`;}buildVector2(vector){return`(${vector.x}, ${vector.y})`;}}class PLYExporter{parse(object,onDone,options){if(onDone&&typeof onDone===\"object\"){console.warn('THREE.PLYExporter: The options parameter is now the third argument to the \"parse\" function. See the documentation for the new API.');options=onDone;onDone=void 0;}const defaultOptions={binary:false,excludeAttributes:[],// normal, uv, color, index\nlittleEndian:false};options=Object.assign(defaultOptions,options);const excludeAttributes=options.excludeAttributes;let includeNormals=false;let includeColors=false;let includeUVs=false;let vertexCount=0;let faceCount=0;object.traverse(function(child){if(child instanceof Mesh&&child.isMesh){const mesh=child;const geometry2=mesh.geometry;if(!geometry2.isBufferGeometry){throw new Error(\"THREE.PLYExporter: Geometry is not of type THREE.BufferGeometry.\");}const vertices=geometry2.getAttribute(\"position\");const normals=geometry2.getAttribute(\"normal\");const uvs=geometry2.getAttribute(\"uv\");const colors=geometry2.getAttribute(\"color\");const indices=geometry2.getIndex();if(vertices===void 0){return;}vertexCount+=vertices.count;faceCount+=indices?indices.count/3:vertices.count/3;if(normals!==void 0)includeNormals=true;if(uvs!==void 0)includeUVs=true;if(colors!==void 0)includeColors=true;}});const includeIndices=(excludeAttributes==null?void 0:excludeAttributes.indexOf(\"index\"))===-1;includeNormals=includeNormals&&(excludeAttributes==null?void 0:excludeAttributes.indexOf(\"normal\"))===-1;includeColors=includeColors&&(excludeAttributes==null?void 0:excludeAttributes.indexOf(\"color\"))===-1;includeUVs=includeUVs&&(excludeAttributes==null?void 0:excludeAttributes.indexOf(\"uv\"))===-1;if(includeIndices&&faceCount!==Math.floor(faceCount)){console.error(\"PLYExporter: Failed to generate a valid PLY file with triangle indices because the number of indices is not divisible by 3.\");return null;}const indexByteCount=4;let header=`ply\nformat ${options.binary?options.littleEndian?\"binary_little_endian\":\"binary_big_endian\":\"ascii\"} 1.0\nelement vertex ${vertexCount}\nproperty float x\nproperty float y\nproperty float z\n`;if(includeNormals){header+=\"property float nx\\nproperty float ny\\nproperty float nz\\n\";}if(includeUVs){header+=\"property float s\\nproperty float t\\n\";}if(includeColors){header+=\"property uchar red\\nproperty uchar green\\nproperty uchar blue\\n\";}if(includeIndices){header+=`${`element face ${faceCount}\n`}property list uchar int vertex_index\n`;}header+=\"end_header\\n\";const vertex=new Vector3();const normalMatrixWorld=new Matrix3();let result=null;if(options.binary){const headerBin=new TextEncoder().encode(header);const vertexListLength=vertexCount*(4*3+(includeNormals?4*3:0)+(includeColors?3:0)+(includeUVs?4*2:0));const faceListLength=includeIndices?faceCount*(indexByteCount*3+1):0;const output=new DataView(new ArrayBuffer(headerBin.length+vertexListLength+faceListLength));new Uint8Array(output.buffer).set(headerBin,0);let vOffset=headerBin.length;let fOffset=headerBin.length+vertexListLength;let writtenVertices=0;this.traverseMeshes(object,function(mesh,geometry2){const vertices=geometry2.getAttribute(\"position\");const normals=geometry2.getAttribute(\"normal\");const uvs=geometry2.getAttribute(\"uv\");const colors=geometry2.getAttribute(\"color\");const indices=geometry2.getIndex();normalMatrixWorld.getNormalMatrix(mesh.matrixWorld);for(let i2=0,l=vertices.count;i2onDone&&onDone(typeof result===\"string\"?result:\"\"));}return result;}// Iterate over the valid meshes in the object\ntraverseMeshes(object,cb2){object.traverse(function(child){if(child instanceof Mesh&&child.isMesh){const mesh=child;const geometry2=mesh.geometry;if(!geometry2.isBufferGeometry){throw new Error(\"THREE.PLYExporter: Geometry is not of type THREE.BufferGeometry.\");}if(geometry2.hasAttribute(\"position\")){cb2(mesh,geometry2);}}});}}const _DRACOExporter=class{parse(object,options={decodeSpeed:5,encodeSpeed:5,encoderMethod:_DRACOExporter.MESH_EDGEBREAKER_ENCODING,quantization:[16,8,8,8,8],exportUvs:true,exportNormals:true,exportColor:false}){if(object instanceof BufferGeometry&&object.isBufferGeometry){throw new Error(\"DRACOExporter: The first parameter of parse() is now an instance of Mesh or Points.\");}if(DracoEncoderModule===void 0){throw new Error(\"THREE.DRACOExporter: required the draco_encoder to work.\");}const geometry2=object.geometry;const dracoEncoder=DracoEncoderModule();const encoder=new dracoEncoder.Encoder();let builder;let dracoObject;if(!geometry2.isBufferGeometry){throw new Error(\"THREE.DRACOExporter.parse(geometry, options): geometry is not a THREE.BufferGeometry instance.\");}if(object instanceof Mesh&&object.isMesh){builder=new dracoEncoder.MeshBuilder();dracoObject=new dracoEncoder.Mesh();const vertices=geometry2.getAttribute(\"position\");builder.AddFloatAttributeToMesh(dracoObject,dracoEncoder.POSITION,vertices.count,vertices.itemSize,vertices.array);const faces=geometry2.getIndex();if(faces!==null){builder.AddFacesToMesh(dracoObject,faces.count/3,faces.array);}else{const faces2=new(vertices.count>65535?Uint32Array:Uint16Array)(vertices.count);for(let i2=0;i2${``}three.js Collada Exporter${this.options.author!==null?`${this.options.author}`:\"\"}${`${/* @__PURE__ */new Date().toISOString()}`}${`${/* @__PURE__ */new Date().toISOString()}`}Y_UP`;dae+=`${this.libraryImages.join(\"\")}`;dae+=`${this.libraryEffects.join(\"\")}`;dae+=`${this.libraryMaterials.join(\"\")}`;dae+=`${this.libraryGeometries.join(\"\")}`;dae+=`${libraryVisualScenes}`;dae+='';dae+=\"\";const res={data:this.format(dae),textures:this.textures};if(typeof onDone===\"function\"){requestAnimationFrame(()=>onDone(res));}return res;}// Convert the urdf xml into a well-formatted, indented format\nformat(urdf){var _a2,_b2;const IS_END_TAG=/^<\\//;const IS_SELF_CLOSING=/(\\?>$)|(\\/>$)/;const HAS_TEXT=/<[^>]+>[^<]*<\\/[^<]+>/;const pad=(ch,num)=>num>0?ch+pad(ch,num-1):\"\";let tagnum=0;return(_b2=(_a2=urdf.match(/(<[^>]+>[^<]+<\\/[^<]+>)|(<[^>]+>)/g))==null?void 0:_a2.map(tag=>{if(!HAS_TEXT.test(tag)&&!IS_SELF_CLOSING.test(tag)&&IS_END_TAG.test(tag)){tagnum--;}const res=`${pad(\" \",tagnum)}${tag}`;if(!HAS_TEXT.test(tag)&&!IS_SELF_CLOSING.test(tag)&&!IS_END_TAG.test(tag)){tagnum++;}return res;}).join(\"\\n\"))!=null?_b2:\"\";}// Convert an image into a png format for saving\nbase64ToBuffer(str){const b2=atob(str);const buf=new Uint8Array(b2.length);for(let i2=0,l=buf.length;i2`+array.join(\" \")}${``}${params.map(n=>``).join(\"\")}`:\"\";return res;}// Returns the string for a node's transform information\ngetTransform(o){o.updateMatrix();this.transMat=this.transMat||new Matrix4();this.transMat.copy(o.matrix);this.transMat.transpose();return`${this.transMat.toArray().join(\" \")}`;}// Process the given piece of geometry into the geometry library\n// Returns the mesh id\nprocessGeometry(g){let info=this.geometryInfo.get(g);if(!info){const bufferGeometry=g;if(!bufferGeometry.isBufferGeometry){throw new Error(\"THREE.ColladaExporter: Geometry is not of type THREE.BufferGeometry.\");}const meshid=`Mesh${this.libraryGeometries.length+1}`;const indexCount=bufferGeometry.index?bufferGeometry.index.count*bufferGeometry.index.itemSize:bufferGeometry.attributes.position.count;const groups=bufferGeometry.groups!=null&&bufferGeometry.groups.length!==0?bufferGeometry.groups:[{start:0,count:indexCount,materialIndex:0}];const gname=g.name?` name=\"${g.name}\"`:\"\";let gnode=``;const posName=`${meshid}-position`;const vertName=`${meshid}-vertices`;gnode+=this.getAttribute(bufferGeometry.attributes.position,posName,[\"X\",\"Y\",\"Z\"],\"float\");gnode+=``;let triangleInputs=``;if(\"normal\"in bufferGeometry.attributes){const normName=`${meshid}-normal`;gnode+=this.getAttribute(bufferGeometry.attributes.normal,normName,[\"X\",\"Y\",\"Z\"],\"float\");triangleInputs+=``;}if(\"uv\"in bufferGeometry.attributes){const uvName=`${meshid}-texcoord`;gnode+=this.getAttribute(bufferGeometry.attributes.uv,uvName,[\"S\",\"T\"],\"float\");triangleInputs+=``;}if(\"uv2\"in bufferGeometry.attributes){const uvName=`${meshid}-texcoord2`;gnode+=this.getAttribute(bufferGeometry.attributes.uv2,uvName,[\"S\",\"T\"],\"float\");triangleInputs+=``;}if(\"color\"in bufferGeometry.attributes){const colName=`${meshid}-color`;gnode+=this.getAttribute(bufferGeometry.attributes.color,colName,[\"X\",\"Y\",\"Z\"],\"uint8\");triangleInputs+=``;}let indexArray=null;if(bufferGeometry.index){indexArray=this.attrBufferToArray(bufferGeometry.index);}else{indexArray=new Array(indexCount);for(let i2=0,l=indexArray.length;i2`;gnode+=triangleInputs;gnode+=`

${subarr.join(\" \")}

`;gnode+=\"\";}gnode+=\"
\";this.libraryGeometries.push(gnode);info={meshid,bufferGeometry};this.geometryInfo.set(g,info);}return info;}// Process the given texture into the image library\n// Returns the image library\nprocessTexture(tex){let texid=this.imageMap.get(tex);if(texid==null){texid=`image-${this.libraryImages.length+1}`;const ext=\"png\";const name=tex.name||texid;let imageNode=``;if(this.options.version===\"1.5.0\"){imageNode+=`${this.options.textureDirectory}${name}.${ext}`;}else{imageNode+=`${this.options.textureDirectory}${name}.${ext}`;}imageNode+=\"\";this.libraryImages.push(imageNode);this.imageMap.set(tex,texid);this.textures.push({directory:this.options.textureDirectory,name,ext,data:this.imageToData(tex.image,ext),original:tex});}return texid;}// Process the given material into the material and effect libraries\n// Returns the material id\nprocessMaterial(m){let matid=this.materialMap.get(m);if(matid==null){matid=`Mat${this.libraryEffects.length+1}`;let type=\"phong\";if(m instanceof MeshLambertMaterial){type=\"lambert\";}else if(m instanceof MeshBasicMaterial){type=\"constant\";if(m.map!==null){console.warn(\"ColladaExporter: Texture maps not supported with MeshBasicMaterial.\");}}if(m instanceof MeshPhongMaterial){const emissive=m.emissive?m.emissive:new Color(0,0,0);const diffuse=m.color?m.color:new Color(0,0,0);const specular=m.specular?m.specular:new Color(1,1,1);const shininess=m.shininess||0;const reflectivity=m.reflectivity||0;let transparencyNode=\"\";if(m.transparent){transparencyNode+=`${m.map?'':\"1\"}`;if(m.opacity<1){transparencyNode+=`${m.opacity}`;}}const techniqueNode=`${`<${type}>`}${m.emissiveMap?'':`${emissive.r} ${emissive.g} ${emissive.b} 1`}${type!==\"constant\"?`${m.map?'':`${diffuse.r} ${diffuse.g} ${diffuse.b} 1`}`:\"\"}${type!==\"constant\"?`${m.normalMap?'':\"\"}`:\"\"}${type===\"phong\"?`${`${specular.r} ${specular.g} ${specular.b} 1`}${m.specularMap?'':`${shininess}`}`:\"\"}${`${diffuse.r} ${diffuse.g} ${diffuse.b} 1`}${`${reflectivity}`}${transparencyNode}${``}`;const effectnode=`${``}${m.map?`${`${this.processTexture(m.map)}`}diffuse-surface`:\"\"}${m.specularMap?`${`${this.processTexture(m.specularMap)}`}specular-surface`:\"\"}${m.emissiveMap?`${`${this.processTexture(m.emissiveMap)}`}emissive-surface`:\"\"}${m.normalMap?`${`${this.processTexture(m.normalMap)}`}bump-surface`:\"\"}${techniqueNode}${m.side===DoubleSide?'1':\"\"}`;const materialName=m.name?` name=\"${m.name}\"`:\"\";const materialNode=``;this.libraryMaterials.push(materialNode);this.libraryEffects.push(effectnode);this.materialMap.set(m,matid);}}return matid;}// Recursively process the object into a scene\nprocessObject(o){let node=``;node+=this.getTransform(o);const a2=new Mesh();a2.geometry;if(o instanceof Mesh&&o.isMesh&&o.geometry!==null){const geomInfo=this.processGeometry(o.geometry);const meshid=geomInfo.meshid;const geometry2=geomInfo.bufferGeometry;let matids=null;let matidsArray;const mat=o.material||new MeshBasicMaterial();const materials=Array.isArray(mat)?mat:[mat];if(geometry2.groups.length>materials.length){matidsArray=new Array(geometry2.groups.length);}else{matidsArray=new Array(materials.length);}matids=matidsArray.fill(null).map((_,i2)=>this.processMaterial(materials[i2%materials.length]));node+=`${``+(matids!=null?`${matids.map((id,i2)=>`${``}`).join(\"\")}`:\"\")}`;}o.children.forEach(c=>node+=this.processObject(c));node+=\"\";return node;}}class MMDExporter{constructor(){// Unicode to Shift_JIS table\n__publicField(this,\"u2sTable\");}/* TODO: implement\n // mesh -> pmd\n this.parsePmd = function ( object ) {\n };\n */ /* TODO: implement\n // mesh -> pmx\n this.parsePmx = function ( object ) {\n };\n */ /* TODO: implement\n // animation + skeleton -> vmd\n this.parseVmd = function ( object ) {\n };\n */ /*\n * skeleton -> vpd\n * Returns Shift_JIS encoded Uint8Array. Otherwise return strings.\n */parseVpd(skin,outputShiftJis,useOriginalBones){if(skin.isSkinnedMesh!==true){console.warn(\"THREE.MMDExporter: parseVpd() requires SkinnedMesh instance.\");return null;}function toStringsFromNumber(num){if(Math.abs(num)<1e-6)num=0;let a2=num.toString();if(a2.indexOf(\".\")===-1){a2+=\".\";}a2+=\"000000\";const index=a2.indexOf(\".\");const d=a2.slice(0,index);const p=a2.slice(index+1,index+7);return d+\".\"+p;}function toStringsFromArray(array2){const a2=[];for(let i2=0,il=array2.length;i2255){array.push(value>>8&255);array.push(value&255);}else{array.push(value&255);}}return new Uint8Array(array);}getBindBones(skin){const poseSkin=skin.clone();poseSkin.pose();return poseSkin.skeleton.bones;}}class STLExporter{constructor(){__publicField(this,\"binary\");__publicField(this,\"output\");__publicField(this,\"offset\");__publicField(this,\"objects\");__publicField(this,\"triangles\");__publicField(this,\"vA\");__publicField(this,\"vB\");__publicField(this,\"vC\");__publicField(this,\"cb\");__publicField(this,\"ab\");__publicField(this,\"normal\");this.binary=false;this.output=\"\";this.offset=80;this.objects=[];this.triangles=0;this.vA=new Vector3();this.vB=new Vector3();this.vC=new Vector3();this.cb=new Vector3();this.ab=new Vector3();this.normal=new Vector3();}parse(scene,options){this.binary=options.binary!==void 0?options.binary:false;scene.traverse(object=>{if(object instanceof Mesh&&object.isMesh){const geometry2=object.geometry;if(!geometry2.isBufferGeometry){throw new Error(\"THREE.STLExporter: Geometry is not of type THREE.BufferGeometry.\");}const index=geometry2.index;const positionAttribute=geometry2.getAttribute(\"position\");this.triangles+=index!==null?index.count/3:positionAttribute.count/3;this.objects.push({object3d:object,geometry:geometry2});}});if(this.binary){const bufferLength=this.triangles*2+this.triangles*3*4*4+80+4;const arrayBuffer=new ArrayBuffer(bufferLength);this.output=new DataView(arrayBuffer);this.output.setUint32(this.offset,this.triangles,true);this.offset+=4;}else{this.output=\"\";this.output+=\"solid exported\\n\";}for(let i2=0,il=this.objects.length;i2{if(child instanceof Mesh&&child.isMesh){this.parseMesh(child);}if(child instanceof Line&&child.isLine){this.parseLine(child);}if(child instanceof Points&&child.isPoints){this.parsePoints(child);}});return this.output;}parseMesh(mesh){let nbVertex=0;let nbNormals=0;let nbVertexUvs=0;const geometry2=mesh.geometry;const normalMatrixWorld=new Matrix3();if(!geometry2.isBufferGeometry){throw new Error(\"THREE.OBJExporter: Geometry is not of type THREE.BufferGeometry.\");}const vertices=geometry2.getAttribute(\"position\");const normals=geometry2.getAttribute(\"normal\");const uvs=geometry2.getAttribute(\"uv\");const indices=geometry2.getIndex();this.output+=`o ${mesh.name}\n`;if(mesh.material&&!Array.isArray(mesh.material)&&mesh.material.name){this.output+=`usemtl ${mesh.material.name}\n`;}if(vertices!==void 0){for(let i2=0,l=vertices.count;i2} iks\n */constructor(mesh,iks=[]){this.mesh=mesh;this.iks=iks;this._valid();}/**\n * Update all IK bones.\n *\n * @return {CCDIKSolver}\n */update(){const iks=this.iks;for(let i2=0,il=iks.length;i21){angle=1;}else if(angle<-1){angle=-1;}angle=math.acos(angle);if(angle<1e-5)continue;if(ik.minAngle!==void 0&&angleik.maxAngle){angle=ik.maxAngle;}_axis.crossVectors(_effectorVec,_targetVec);_axis.normalize();_q$2.setFromAxisAngle(_axis,angle);link.quaternion.multiply(_q$2);if(limitation!==void 0){let c=link.quaternion.w;if(c>1)c=1;const c2=math.sqrt(1-c*c);link.quaternion.set(limitation.x*c2,limitation.y*c2,limitation.z*c2,c);}if(rotationMin!==void 0){link.rotation.setFromVector3(_vector$3.setFromEuler(link.rotation).max(rotationMin));}if(rotationMax!==void 0){link.rotation.setFromVector3(_vector$3.setFromEuler(link.rotation).min(rotationMax));}link.updateMatrixWorld(true);rotated=true;}if(!rotated)break;}return this;}/**\n * Creates Helper\n *\n * @return {CCDIKHelper}\n */createHelper(){return new CCDIKHelper(this.mesh,this.iks);}// private methods\n_valid(){const iks=this.iks;const bones=this.mesh.skeleton.bones;for(let i2=0,il=iks.length;i2} rigidBodyParams\n * @param {Array} (optional) constraintParams\n * @param {Object} params - (optional)\n * @param {Number} params.unitStep - Default is 1 / 65.\n * @param {Integer} params.maxStepNum - Default is 3.\n * @param {Vector3} params.gravity - Default is ( 0, - 9.8 * 10, 0 )\n */constructor(mesh,rigidBodyParams,constraintParams=[],params={}){if(typeof Ammo===\"undefined\"){throw new Error(\"THREE.MMDPhysics: Import ammo.js https://github.com/kripken/ammo.js\");}this.manager=new ResourceManager();this.mesh=mesh;this.unitStep=params.unitStep!==void 0?params.unitStep:1/65;this.maxStepNum=params.maxStepNum!==void 0?params.maxStepNum:3;this.gravity=new Vector3(0,-9.8*10,0);if(params.gravity!==void 0)this.gravity.copy(params.gravity);this.world=params.world!==void 0?params.world:null;this.bodies=[];this.constraints=[];this._init(mesh,rigidBodyParams,constraintParams);}/**\n * Advances Physics calculation and updates bones.\n *\n * @param {Number} delta - time in second\n * @return {MMDPhysics}\n */update(delta){const manager=this.manager;const mesh=this.mesh;let isNonDefaultScale=false;const position=manager.allocThreeVector3();const quaternion=manager.allocThreeQuaternion();const scale=manager.allocThreeVector3();mesh.matrixWorld.decompose(position,quaternion,scale);if(scale.x!==1||scale.y!==1||scale.z!==1){isNonDefaultScale=true;}let parent;if(isNonDefaultScale){parent=mesh.parent;if(parent!==null)mesh.parent=null;scale.copy(this.mesh.scale);mesh.scale.set(1,1,1);mesh.updateMatrixWorld(true);}this._updateRigidBodies();this._stepSimulation(delta);this._updateBones();if(isNonDefaultScale){if(parent!==null)mesh.parent=parent;mesh.scale.copy(scale);}manager.freeThreeVector3(scale);manager.freeThreeQuaternion(quaternion);manager.freeThreeVector3(position);return this;}/**\n * Resets rigid bodies transorm to current bone's.\n *\n * @return {MMDPhysics}\n */reset(){for(let i2=0,il=this.bodies.length;i2this.maxStepNum){maxStepNum=this.maxStepNum;}this.world.stepSimulation(stepTime,maxStepNum,unitStep);}_updateRigidBodies(){for(let i2=0,il=this.bodies.length;i20?this.threeVector3s.pop():new Vector3();}freeThreeVector3(v){this.threeVector3s.push(v);}allocThreeMatrix4(){return this.threeMatrix4s.length>0?this.threeMatrix4s.pop():new Matrix4();}freeThreeMatrix4(m){this.threeMatrix4s.push(m);}allocThreeQuaternion(){return this.threeQuaternions.length>0?this.threeQuaternions.pop():new Quaternion();}freeThreeQuaternion(q){this.threeQuaternions.push(q);}allocThreeEuler(){return this.threeEulers.length>0?this.threeEulers.pop():new Euler();}freeThreeEuler(e){this.threeEulers.push(e);}allocTransform(){return this.transforms.length>0?this.transforms.pop():new Ammo.btTransform();}freeTransform(t2){this.transforms.push(t2);}allocQuaternion(){return this.quaternions.length>0?this.quaternions.pop():new Ammo.btQuaternion();}freeQuaternion(q){this.quaternions.push(q);}allocVector3(){return this.vector3s.length>0?this.vector3s.pop():new Ammo.btVector3();}freeVector3(v){this.vector3s.push(v);}setIdentity(t2){t2.setIdentity();}getBasis(t2){var q=this.allocQuaternion();t2.getBasis().getRotation(q);return q;}getBasisAsMatrix3(t2){var q=this.getBasis(t2);var m=this.quaternionToMatrix3(q);this.freeQuaternion(q);return m;}getOrigin(t2){return t2.getOrigin();}setOrigin(t2,v){t2.getOrigin().setValue(v.x(),v.y(),v.z());}copyOrigin(t1,t2){var o=t2.getOrigin();this.setOrigin(t1,o);}setBasis(t2,q){t2.setRotation(q);}setBasisFromMatrix3(t2,m){var q=this.matrix3ToQuaternion(m);this.setBasis(t2,q);this.freeQuaternion(q);}setOriginFromArray3(t2,a2){t2.getOrigin().setValue(a2[0],a2[1],a2[2]);}setOriginFromThreeVector3(t2,v){t2.getOrigin().setValue(v.x,v.y,v.z);}setBasisFromArray3(t2,a2){var thQ=this.allocThreeQuaternion();var thE=this.allocThreeEuler();thE.set(a2[0],a2[1],a2[2]);this.setBasisFromThreeQuaternion(t2,thQ.setFromEuler(thE));this.freeThreeEuler(thE);this.freeThreeQuaternion(thQ);}setBasisFromThreeQuaternion(t2,a2){var q=this.allocQuaternion();q.setX(a2.x);q.setY(a2.y);q.setZ(a2.z);q.setW(a2.w);this.setBasis(t2,q);this.freeQuaternion(q);}multiplyTransforms(t1,t2){var t3=this.allocTransform();this.setIdentity(t3);var m1=this.getBasisAsMatrix3(t1);var m2=this.getBasisAsMatrix3(t2);var o1=this.getOrigin(t1);var o2=this.getOrigin(t2);var v12=this.multiplyMatrix3ByVector3(m1,o2);var v2=this.addVector3(v12,o1);this.setOrigin(t3,v2);var m3=this.multiplyMatrices3(m1,m2);this.setBasisFromMatrix3(t3,m3);this.freeVector3(v12);this.freeVector3(v2);return t3;}inverseTransform(t2){var t22=this.allocTransform();var m1=this.getBasisAsMatrix3(t2);var o=this.getOrigin(t2);var m2=this.transposeMatrix3(m1);var v12=this.negativeVector3(o);var v2=this.multiplyMatrix3ByVector3(m2,v12);this.setOrigin(t22,v2);this.setBasisFromMatrix3(t22,m2);this.freeVector3(v12);this.freeVector3(v2);return t22;}multiplyMatrices3(m1,m2){var m3=[];var v10=this.rowOfMatrix3(m1,0);var v11=this.rowOfMatrix3(m1,1);var v12=this.rowOfMatrix3(m1,2);var v20=this.columnOfMatrix3(m2,0);var v21=this.columnOfMatrix3(m2,1);var v22=this.columnOfMatrix3(m2,2);m3[0]=this.dotVectors3(v10,v20);m3[1]=this.dotVectors3(v10,v21);m3[2]=this.dotVectors3(v10,v22);m3[3]=this.dotVectors3(v11,v20);m3[4]=this.dotVectors3(v11,v21);m3[5]=this.dotVectors3(v11,v22);m3[6]=this.dotVectors3(v12,v20);m3[7]=this.dotVectors3(v12,v21);m3[8]=this.dotVectors3(v12,v22);this.freeVector3(v10);this.freeVector3(v11);this.freeVector3(v12);this.freeVector3(v20);this.freeVector3(v21);this.freeVector3(v22);return m3;}addVector3(v12,v2){var v=this.allocVector3();v.setValue(v12.x()+v2.x(),v12.y()+v2.y(),v12.z()+v2.z());return v;}dotVectors3(v12,v2){return v12.x()*v2.x()+v12.y()*v2.y()+v12.z()*v2.z();}rowOfMatrix3(m,i2){var v=this.allocVector3();v.setValue(m[i2*3+0],m[i2*3+1],m[i2*3+2]);return v;}columnOfMatrix3(m,i2){var v=this.allocVector3();v.setValue(m[i2+0],m[i2+3],m[i2+6]);return v;}negativeVector3(v){var v2=this.allocVector3();v2.setValue(-v.x(),-v.y(),-v.z());return v2;}multiplyMatrix3ByVector3(m,v){var v4=this.allocVector3();var v0=this.rowOfMatrix3(m,0);var v12=this.rowOfMatrix3(m,1);var v2=this.rowOfMatrix3(m,2);var x=this.dotVectors3(v0,v);var y=this.dotVectors3(v12,v);var z=this.dotVectors3(v2,v);v4.setValue(x,y,z);this.freeVector3(v0);this.freeVector3(v12);this.freeVector3(v2);return v4;}transposeMatrix3(m){var m2=[];m2[0]=m[0];m2[1]=m[3];m2[2]=m[6];m2[3]=m[1];m2[4]=m[4];m2[5]=m[7];m2[6]=m[2];m2[7]=m[5];m2[8]=m[8];return m2;}quaternionToMatrix3(q){var m=[];var x=q.x();var y=q.y();var z=q.z();var w=q.w();var xx=x*x;var yy=y*y;var zz=z*z;var xy=x*y;var yz=y*z;var zx=z*x;var xw=x*w;var yw=y*w;var zw=z*w;m[0]=1-2*(yy+zz);m[1]=2*(xy-zw);m[2]=2*(zx+yw);m[3]=2*(xy+zw);m[4]=1-2*(zz+xx);m[5]=2*(yz-xw);m[6]=2*(zx-yw);m[7]=2*(yz+xw);m[8]=1-2*(xx+yy);return m;}matrix3ToQuaternion(m){var t2=m[0]+m[4]+m[8];var s,x,y,z,w;if(t2>0){s=Math.sqrt(t2+1)*2;w=0.25*s;x=(m[7]-m[5])/s;y=(m[2]-m[6])/s;z=(m[3]-m[1])/s;}else if(m[0]>m[4]&&m[0]>m[8]){s=Math.sqrt(1+m[0]-m[4]-m[8])*2;w=(m[7]-m[5])/s;x=0.25*s;y=(m[1]+m[3])/s;z=(m[2]+m[6])/s;}else if(m[4]>m[8]){s=Math.sqrt(1+m[4]-m[0]-m[8])*2;w=(m[2]-m[6])/s;x=(m[1]+m[3])/s;y=0.25*s;z=(m[5]+m[7])/s;}else{s=Math.sqrt(1+m[8]-m[0]-m[4])*2;w=(m[3]-m[1])/s;x=(m[2]+m[6])/s;y=(m[5]+m[7])/s;z=0.25*s;}var q=this.allocQuaternion();q.setX(x);q.setY(y);q.setZ(z);q.setW(w);return q;}}class RigidBody{constructor(mesh,world2,params,manager){this.mesh=mesh;this.world=world2;this.params=params;this.manager=manager;this.body=null;this.bone=null;this.boneOffsetForm=null;this.boneOffsetFormInverse=null;this._init();}/**\n * Resets rigid body transform to the current bone's.\n *\n * @return {RigidBody}\n */reset(){this._setTransformFromBone();return this;}/**\n * Updates rigid body's transform from the current bone.\n *\n * @return {RidigBody}\n */updateFromBone(){if(this.params.boneIndex!==-1&&this.params.type===0){this._setTransformFromBone();}return this;}/**\n * Updates bone from the current ridid body's transform.\n *\n * @return {RidigBody}\n */updateBone(){if(this.params.type===0||this.params.boneIndex===-1){return this;}this._updateBoneRotation();if(this.params.type===1){this._updateBonePosition();}this.bone.updateMatrixWorld(true);if(this.params.type===2){this._setPositionFromBone();}return this;}// private methods\n_init(){function generateShape(p){switch(p.shapeType){case 0:return new Ammo.btSphereShape(p.width);case 1:return new Ammo.btBoxShape(new Ammo.btVector3(p.width,p.height,p.depth));case 2:return new Ammo.btCapsuleShape(p.width,p.height);default:throw new Error(\"unknown shape type \"+p.shapeType);}}const manager=this.manager;const params=this.params;const bones=this.mesh.skeleton.bones;const bone=params.boneIndex===-1?new Bone():bones[params.boneIndex];const shape=generateShape(params);const weight=params.type===0?0:params.weight;const localInertia=manager.allocVector3();localInertia.setValue(0,0,0);if(weight!==0){shape.calculateLocalInertia(weight,localInertia);}const boneOffsetForm=manager.allocTransform();manager.setIdentity(boneOffsetForm);manager.setOriginFromArray3(boneOffsetForm,params.position);manager.setBasisFromArray3(boneOffsetForm,params.rotation);const vector=manager.allocThreeVector3();const boneForm=manager.allocTransform();manager.setIdentity(boneForm);manager.setOriginFromThreeVector3(boneForm,bone.getWorldPosition(vector));const form=manager.multiplyTransforms(boneForm,boneOffsetForm);const state=new Ammo.btDefaultMotionState(form);const info=new Ammo.btRigidBodyConstructionInfo(weight,state,shape,localInertia);info.set_m_friction(params.friction);info.set_m_restitution(params.restitution);const body=new Ammo.btRigidBody(info);if(params.type===0){body.setCollisionFlags(body.getCollisionFlags()|2);body.setActivationState(4);}body.setDamping(params.positionDamping,params.rotationDamping);body.setSleepingThresholds(0,0);this.world.addRigidBody(body,1<} params.animation - Only for THREE.SkinnedMesh and THREE.Camera. Default is undefined.\n * @param {boolean} params.physics - Only for THREE.SkinnedMesh. Default is true.\n * @param {Integer} params.warmup - Only for THREE.SkinnedMesh and physics is true. Default is 60.\n * @param {Number} params.unitStep - Only for THREE.SkinnedMesh and physics is true. Default is 1 / 65.\n * @param {Integer} params.maxStepNum - Only for THREE.SkinnedMesh and physics is true. Default is 3.\n * @param {Vector3} params.gravity - Only for THREE.SkinnedMesh and physics is true. Default ( 0, - 9.8 * 10, 0 ).\n * @param {Number} params.delayTime - Only for THREE.Audio. Default is 0.0.\n * @return {MMDAnimationHelper}\n */add(object,params={}){if(object.isSkinnedMesh){this._addMesh(object,params);}else if(object.isCamera){this._setupCamera(object,params);}else if(object.type===\"Audio\"){this._setupAudio(object,params);}else{throw new Error(\"THREE.MMDAnimationHelper.add: accepts only THREE.SkinnedMesh or THREE.Camera or THREE.Audio instance.\");}if(this.configuration.sync)this._syncDuration();return this;}/**\n * Removes an Three.js Object from helper.\n *\n * @param {THREE.SkinnedMesh|THREE.Camera|THREE.Audio} object\n * @return {MMDAnimationHelper}\n */remove(object){if(object.isSkinnedMesh){this._removeMesh(object);}else if(object.isCamera){this._clearCamera(object);}else if(object.type===\"Audio\"){this._clearAudio(object);}else{throw new Error(\"THREE.MMDAnimationHelper.remove: accepts only THREE.SkinnedMesh or THREE.Camera or THREE.Audio instance.\");}if(this.configuration.sync)this._syncDuration();return this;}/**\n * Updates the animation.\n *\n * @param {Number} delta\n * @return {MMDAnimationHelper}\n */update(delta){if(this.audioManager!==null)this.audioManager.control(delta);for(let i2=0;i2=0){throw new Error(\"THREE.MMDAnimationHelper._addMesh: SkinnedMesh '\"+mesh.name+\"' has already been added.\");}this.meshes.push(mesh);this.objects.set(mesh,{looped:false});this._setupMeshAnimation(mesh,params.animation);if(params.physics!==false){this._setupMeshPhysics(mesh,params);}return this;}_setupCamera(camera,params){if(this.camera===camera){throw new Error(\"THREE.MMDAnimationHelper._setupCamera: Camera '\"+camera.name+\"' has already been set.\");}if(this.camera)this.clearCamera(this.camera);this.camera=camera;camera.add(this.cameraTarget);this.objects.set(camera,{});if(params.animation!==void 0){this._setupCameraAnimation(camera,params.animation);}return this;}_setupAudio(audio,params){if(this.audio===audio){throw new Error(\"THREE.MMDAnimationHelper._setupAudio: Audio '\"+audio.name+\"' has already been set.\");}if(this.audio)this.clearAudio(this.audio);this.audio=audio;this.audioManager=new AudioManager(audio,params);this.objects.set(this.audioManager,{duration:this.audioManager.duration});return this;}_removeMesh(mesh){let found=false;let writeIndex=0;for(let i2=0,il=this.meshes.length;i20&&tracks[0].name.slice(0,6)!==\".bones\")return;objects.looped=true;});}objects.ikSolver=this._createCCDIKSolver(mesh);objects.grantSolver=this.createGrantSolver(mesh);return this;}_setupCameraAnimation(camera,animation){const animations=Array.isArray(animation)?animation:[animation];const objects=this.objects.get(camera);objects.mixer=new AnimationMixer(camera);for(let i2=0,il=animations.length;i20?false:true;}else{link.enabled=true;}}}}_createCCDIKSolver(mesh){if(CCDIKSolver===void 0){throw new Error(\"THREE.MMDAnimationHelper: Import CCDIKSolver.\");}return new CCDIKSolver(mesh,mesh.geometry.userData.MMD.iks);}_createMMDPhysics(mesh,params){if(MMDPhysics===void 0){throw new Error(\"THREE.MMDPhysics: Import MMDPhysics.\");}return new MMDPhysics(mesh,mesh.geometry.userData.MMD.rigidBodies,mesh.geometry.userData.MMD.constraints,params);}/*\n * Detects the longest duration and then sets it to them to sync.\n * TODO: Not to access private properties ( ._actions and ._clip )\n */_syncDuration(){let max=0;const objects=this.objects;const meshes=this.meshes;const camera=this.camera;const audioManager=this.audioManager;for(let i2=0,il=meshes.length;i2=_quaternions.length){_quaternions.push(new Quaternion());}return _quaternions[_quaternionIndex++];}const _grantResultMap=/*@__PURE__*/ /* @__PURE__ */new Map();function updateOne(mesh,boneIndex,ikSolver,grantSolver){const bones=mesh.skeleton.bones;const bonesData=mesh.geometry.userData.MMD.bones;const boneData=bonesData[boneIndex];const bone=bones[boneIndex];if(_grantResultMap.has(boneIndex))return;const quaternion=getQuaternion();_grantResultMap.set(boneIndex,quaternion.copy(bone.quaternion));if(grantSolver&&boneData.grant&&!boneData.grant.isLocal&&boneData.grant.affectRotation){const parentIndex=boneData.grant.parentIndex;const ratio=boneData.grant.ratio;if(!_grantResultMap.has(parentIndex)){updateOne(mesh,parentIndex,ikSolver,grantSolver);}grantSolver.addGrantRotation(bone,_grantResultMap.get(parentIndex),ratio);}if(ikSolver&&boneData.ik){mesh.updateMatrixWorld(true);ikSolver.updateOne(boneData.ik);const links=boneData.ik.links;for(let i2=0,il=links.length;i2=this.duration){this.currentTime-=this.duration;}if(this.currentTimethis.audioDuration)return false;return true;}_shouldStopAudio(){return this.audio.isPlaying&&this.currentTime>=this.duration;}}const _q$1=/*@__PURE__*/new Quaternion();class GrantSolver{constructor(mesh,grants=[]){this.mesh=mesh;this.grants=grants;}/**\n * Solve all the grant bones\n * @return {GrantSolver}\n */update(){const grants=this.grants;for(let i2=0,il=grants.length;i20)return;view.reflect(normal).negate();view.add(reflectorWorldPosition);rotationMatrix2.extractRotation(camera.matrixWorld);lookAtPosition.set(0,0,-1);lookAtPosition.applyMatrix4(rotationMatrix2);lookAtPosition.add(cameraWorldPosition);target.subVectors(reflectorWorldPosition,lookAtPosition);target.reflect(normal).negate();target.add(reflectorWorldPosition);virtualCamera.position.copy(view);virtualCamera.up.set(0,1,0);virtualCamera.up.applyMatrix4(rotationMatrix2);virtualCamera.up.reflect(normal);virtualCamera.lookAt(target);virtualCamera.far=camera.far;virtualCamera.updateMatrixWorld();virtualCamera.projectionMatrix.copy(camera.projectionMatrix);textureMatrix.set(0.5,0,0,0.5,0,0.5,0,0.5,0,0,0.5,0.5,0,0,0,1);textureMatrix.multiply(virtualCamera.projectionMatrix);textureMatrix.multiply(virtualCamera.matrixWorldInverse);textureMatrix.multiply(scope.matrixWorld);reflectorPlane.setFromNormalAndCoplanarPoint(normal,reflectorWorldPosition);reflectorPlane.applyMatrix4(virtualCamera.matrixWorldInverse);clipPlane.set(reflectorPlane.normal.x,reflectorPlane.normal.y,reflectorPlane.normal.z,reflectorPlane.constant);const projectionMatrix=virtualCamera.projectionMatrix;q.x=(Math.sign(clipPlane.x)+projectionMatrix.elements[8])/projectionMatrix.elements[0];q.y=(Math.sign(clipPlane.y)+projectionMatrix.elements[9])/projectionMatrix.elements[5];q.z=-1;q.w=(1+projectionMatrix.elements[10])/projectionMatrix.elements[14];clipPlane.multiplyScalar(2/clipPlane.dot(q));projectionMatrix.elements[2]=clipPlane.x;projectionMatrix.elements[6]=clipPlane.y;projectionMatrix.elements[10]=clipPlane.z+1-clipBias;projectionMatrix.elements[14]=clipPlane.w;scope.visible=false;const currentRenderTarget=renderer.getRenderTarget();const currentXrEnabled=renderer.xr.enabled;const currentShadowAutoUpdate=renderer.shadowMap.autoUpdate;const currentToneMapping=renderer.toneMapping;let isSRGB=false;if(\"outputColorSpace\"in renderer)isSRGB=renderer.outputColorSpace===\"srgb\";else isSRGB=renderer.outputEncoding===3001;renderer.xr.enabled=false;renderer.shadowMap.autoUpdate=false;if(\"outputColorSpace\"in renderer)renderer.outputColorSpace=\"linear-srgb\";else renderer.outputEncoding=3e3;renderer.toneMapping=NoToneMapping;renderer.setRenderTarget(renderTarget);renderer.state.buffers.depth.setMask(true);if(renderer.autoClear===false)renderer.clear();renderer.render(scene,virtualCamera);renderer.xr.enabled=currentXrEnabled;renderer.shadowMap.autoUpdate=currentShadowAutoUpdate;renderer.toneMapping=currentToneMapping;if(\"outputColorSpace\"in renderer)renderer.outputColorSpace=isSRGB?\"srgb\":\"srgb-linear\";else renderer.outputEncoding=isSRGB?3001:3e3;renderer.setRenderTarget(currentRenderTarget);const viewport=camera.viewport;if(viewport!==void 0){renderer.state.viewport(viewport);}scope.visible=true;};this.getRenderTarget=function(){return renderTarget;};this.dispose=function(){renderTarget.dispose();scope.material.dispose();};}};let Reflector=_Reflector;/*@__PURE__*/__publicField(Reflector,\"ReflectorShader\",{uniforms:{color:{value:null},tDiffuse:{value:null},textureMatrix:{value:null}},vertexShader:/* glsl */`\n\t\tuniform mat4 textureMatrix;\n\t\tvarying vec4 vUv;\n\n\t\t#include \n\t\t#include \n\n\t\tvoid main() {\n\n\t\t\tvUv = textureMatrix * vec4( position, 1.0 );\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t\t#include \n\n\t\t}`,fragmentShader:/* glsl */`\n\t\tuniform vec3 color;\n\t\tuniform sampler2D tDiffuse;\n\t\tvarying vec4 vUv;\n\n\t\t#include \n\n\t\tfloat blendOverlay( float base, float blend ) {\n\n\t\t\treturn( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );\n\n\t\t}\n\n\t\tvec3 blendOverlay( vec3 base, vec3 blend ) {\n\n\t\t\treturn vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ), blendOverlay( base.b, blend.b ) );\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\t#include \n\n\t\t\tvec4 base = texture2DProj( tDiffuse, vUv );\n\t\t\tgl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );\n\n\t\t\t#include \n\t\t\t#include <${version>=154?\"colorspace_fragment\":\"encodings_fragment\"}>\n\n\t\t}`});const _Refractor=class extends Mesh{constructor(geometry2,options={}){super(geometry2);this.isRefractor=true;this.type=\"Refractor\";this.camera=new PerspectiveCamera();const scope=this;const color=options.color!==void 0?new Color(options.color):new Color(8355711);const textureWidth=options.textureWidth||512;const textureHeight=options.textureHeight||512;const clipBias=options.clipBias||0;const shader=options.shader||_Refractor.RefractorShader;const multisample=options.multisample!==void 0?options.multisample:4;const virtualCamera=this.camera;virtualCamera.matrixAutoUpdate=false;virtualCamera.userData.refractor=true;const refractorPlane=new Plane();const textureMatrix=new Matrix4();const renderTarget=new WebGLRenderTarget(textureWidth,textureHeight,{samples:multisample,type:HalfFloatType});this.material=new ShaderMaterial({uniforms:UniformsUtils.clone(shader.uniforms),vertexShader:shader.vertexShader,fragmentShader:shader.fragmentShader,transparent:true// ensures, refractors are drawn from farthest to closest\n});this.material.uniforms[\"color\"].value=color;this.material.uniforms[\"tDiffuse\"].value=renderTarget.texture;this.material.uniforms[\"textureMatrix\"].value=textureMatrix;const visible=function(){const refractorWorldPosition=new Vector3();const cameraWorldPosition=new Vector3();const rotationMatrix2=new Matrix4();const view=new Vector3();const normal=new Vector3();return function visible2(camera){refractorWorldPosition.setFromMatrixPosition(scope.matrixWorld);cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld);view.subVectors(refractorWorldPosition,cameraWorldPosition);rotationMatrix2.extractRotation(scope.matrixWorld);normal.set(0,0,1);normal.applyMatrix4(rotationMatrix2);return view.dot(normal)<0;};}();const updateRefractorPlane=function(){const normal=new Vector3();const position=new Vector3();const quaternion=new Quaternion();const scale=new Vector3();return function updateRefractorPlane2(){scope.matrixWorld.decompose(position,quaternion,scale);normal.set(0,0,1).applyQuaternion(quaternion).normalize();normal.negate();refractorPlane.setFromNormalAndCoplanarPoint(normal,position);};}();const updateVirtualCamera=function(){const clipPlane=new Plane();const clipVector=new Vector4();const q=new Vector4();return function updateVirtualCamera2(camera){virtualCamera.matrixWorld.copy(camera.matrixWorld);virtualCamera.matrixWorldInverse.copy(virtualCamera.matrixWorld).invert();virtualCamera.projectionMatrix.copy(camera.projectionMatrix);virtualCamera.far=camera.far;clipPlane.copy(refractorPlane);clipPlane.applyMatrix4(virtualCamera.matrixWorldInverse);clipVector.set(clipPlane.normal.x,clipPlane.normal.y,clipPlane.normal.z,clipPlane.constant);const projectionMatrix=virtualCamera.projectionMatrix;q.x=(Math.sign(clipVector.x)+projectionMatrix.elements[8])/projectionMatrix.elements[0];q.y=(Math.sign(clipVector.y)+projectionMatrix.elements[9])/projectionMatrix.elements[5];q.z=-1;q.w=(1+projectionMatrix.elements[10])/projectionMatrix.elements[14];clipVector.multiplyScalar(2/clipVector.dot(q));projectionMatrix.elements[2]=clipVector.x;projectionMatrix.elements[6]=clipVector.y;projectionMatrix.elements[10]=clipVector.z+1-clipBias;projectionMatrix.elements[14]=clipVector.w;};}();function updateTextureMatrix(camera){textureMatrix.set(0.5,0,0,0.5,0,0.5,0,0.5,0,0,0.5,0.5,0,0,0,1);textureMatrix.multiply(camera.projectionMatrix);textureMatrix.multiply(camera.matrixWorldInverse);textureMatrix.multiply(scope.matrixWorld);}function render(renderer,scene,camera){scope.visible=false;const currentRenderTarget=renderer.getRenderTarget();const currentXrEnabled=renderer.xr.enabled;const currentShadowAutoUpdate=renderer.shadowMap.autoUpdate;const currentToneMapping=renderer.toneMapping;let isSRGB=false;if(\"outputColorSpace\"in renderer)isSRGB=renderer.outputColorSpace===\"srgb\";else isSRGB=renderer.outputEncoding===3001;renderer.xr.enabled=false;renderer.shadowMap.autoUpdate=false;if(\"outputColorSpace\"in renderer)renderer.outputColorSpace=\"linear-srgb\";else renderer.outputEncoding=3e3;renderer.toneMapping=NoToneMapping;renderer.setRenderTarget(renderTarget);if(renderer.autoClear===false)renderer.clear();renderer.render(scene,virtualCamera);renderer.xr.enabled=currentXrEnabled;renderer.shadowMap.autoUpdate=currentShadowAutoUpdate;renderer.toneMapping=currentToneMapping;renderer.setRenderTarget(currentRenderTarget);if(\"outputColorSpace\"in renderer)renderer.outputColorSpace=isSRGB?\"srgb\":\"srgb-linear\";else renderer.outputEncoding=isSRGB?3001:3e3;const viewport=camera.viewport;if(viewport!==void 0){renderer.state.viewport(viewport);}scope.visible=true;}this.onBeforeRender=function(renderer,scene,camera){if(camera.userData.refractor===true)return;if(!visible(camera)===true)return;updateRefractorPlane();updateTextureMatrix(camera);updateVirtualCamera(camera);render(renderer,scene,camera);};this.getRenderTarget=function(){return renderTarget;};this.dispose=function(){renderTarget.dispose();scope.material.dispose();};}};let Refractor=_Refractor;/*@__PURE__*/__publicField(Refractor,\"RefractorShader\",{uniforms:{color:{value:null},tDiffuse:{value:null},textureMatrix:{value:null}},vertexShader:/* glsl */`\n\n\t\tuniform mat4 textureMatrix;\n\n\t\tvarying vec4 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = textureMatrix * vec4( position, 1.0 );\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,fragmentShader:/* glsl */`\n\n\t\tuniform vec3 color;\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec4 vUv;\n\n\t\tfloat blendOverlay( float base, float blend ) {\n\n\t\t\treturn( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );\n\n\t\t}\n\n\t\tvec3 blendOverlay( vec3 base, vec3 blend ) {\n\n\t\t\treturn vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ), blendOverlay( base.b, blend.b ) );\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvec4 base = texture2DProj( tDiffuse, vUv );\n\t\t\tgl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );\n\n\t\t\t#include \n\t\t\t#include <${version>=154?\"colorspace_fragment\":\"encodings_fragment\"}>\n\n\t\t}`});const _shadowMatrix=/*@__PURE__*/new Matrix4();class ShadowMesh extends Mesh{constructor(mesh){const shadowMaterial=new MeshBasicMaterial({color:0,transparent:true,opacity:0.6,depthWrite:false,stencilWrite:true,stencilFunc:EqualStencilFunc,stencilRef:0,stencilZPass:IncrementStencilOp});super(mesh.geometry,shadowMaterial);this.isShadowMesh=true;this.meshMatrix=mesh.matrixWorld;this.frustumCulled=false;this.matrixAutoUpdate=false;}update(plane,lightPosition4D){const dot=plane.normal.x*lightPosition4D.x+plane.normal.y*lightPosition4D.y+plane.normal.z*lightPosition4D.z+-plane.constant*lightPosition4D.w;const sme=_shadowMatrix.elements;sme[0]=dot-lightPosition4D.x*plane.normal.x;sme[4]=-lightPosition4D.x*plane.normal.y;sme[8]=-lightPosition4D.x*plane.normal.z;sme[12]=-lightPosition4D.x*-plane.constant;sme[1]=-lightPosition4D.y*plane.normal.x;sme[5]=dot-lightPosition4D.y*plane.normal.y;sme[9]=-lightPosition4D.y*plane.normal.z;sme[13]=-lightPosition4D.y*-plane.constant;sme[2]=-lightPosition4D.z*plane.normal.x;sme[6]=-lightPosition4D.z*plane.normal.y;sme[10]=dot-lightPosition4D.z*plane.normal.z;sme[14]=-lightPosition4D.z*-plane.constant;sme[3]=-lightPosition4D.w*plane.normal.x;sme[7]=-lightPosition4D.w*plane.normal.y;sme[11]=-lightPosition4D.w*plane.normal.z;sme[15]=dot-lightPosition4D.w*-plane.constant;this.matrix.multiplyMatrices(_shadowMatrix,this.meshMatrix);}}const geometry=/*@__PURE__*/new BufferGeometry();const float32Array=/*@__PURE__*/new Float32Array([-1,-1,0,0,0,1,-1,0,1,0,1,1,0,1,1,-1,1,0,0,1]);const interleavedBuffer=/*@__PURE__*/new InterleavedBuffer(float32Array,5);/*@__PURE__*/geometry.setIndex([0,1,2,0,2,3]);/*@__PURE__*/geometry.setAttribute(\"position\",/*@__PURE__*/new InterleavedBufferAttribute(interleavedBuffer,3,0,false));/*@__PURE__*/geometry.setAttribute(\"uv\",/*@__PURE__*/new InterleavedBufferAttribute(interleavedBuffer,2,3,false));const _Lensflare=class extends Mesh{constructor(){super(_Lensflare.Geometry,new MeshBasicMaterial({opacity:0,transparent:true}));this.isLensflare=true;this.type=\"Lensflare\";this.frustumCulled=false;this.renderOrder=Infinity;const positionScreen=new Vector3();const positionView=new Vector3();const tempMap=new DataTexture(new Uint8Array(16*16*3),16,16,RGBAFormat);tempMap.minFilter=NearestFilter;tempMap.magFilter=NearestFilter;tempMap.wrapS=ClampToEdgeWrapping;tempMap.wrapT=ClampToEdgeWrapping;const occlusionMap=new DataTexture(new Uint8Array(16*16*3),16,16,RGBAFormat);occlusionMap.minFilter=NearestFilter;occlusionMap.magFilter=NearestFilter;occlusionMap.wrapS=ClampToEdgeWrapping;occlusionMap.wrapT=ClampToEdgeWrapping;const geometry2=_Lensflare.Geometry;const material1a=new RawShaderMaterial({uniforms:{scale:{value:null},screenPosition:{value:null}},vertexShader:/* glsl */`\n\n\t\t\t\tprecision highp float;\n\n\t\t\t\tuniform vec3 screenPosition;\n\t\t\t\tuniform vec2 scale;\n\n\t\t\t\tattribute vec3 position;\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tgl_Position = vec4( position.xy * scale + screenPosition.xy, screenPosition.z, 1.0 );\n\n\t\t\t\t}`,fragmentShader:/* glsl */`\n\n\t\t\t\tprecision highp float;\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tgl_FragColor = vec4( 1.0, 0.0, 1.0, 1.0 );\n\n\t\t\t\t}`,depthTest:true,depthWrite:false,transparent:false});const material1b=new RawShaderMaterial({uniforms:{map:{value:tempMap},scale:{value:null},screenPosition:{value:null}},vertexShader:/* glsl */`\n\n\t\t\t\tprecision highp float;\n\n\t\t\t\tuniform vec3 screenPosition;\n\t\t\t\tuniform vec2 scale;\n\n\t\t\t\tattribute vec3 position;\n\t\t\t\tattribute vec2 uv;\n\n\t\t\t\tvarying vec2 vUV;\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvUV = uv;\n\n\t\t\t\t\tgl_Position = vec4( position.xy * scale + screenPosition.xy, screenPosition.z, 1.0 );\n\n\t\t\t\t}`,fragmentShader:/* glsl */`\n\n\t\t\t\tprecision highp float;\n\n\t\t\t\tuniform sampler2D map;\n\n\t\t\t\tvarying vec2 vUV;\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tgl_FragColor = texture2D( map, vUV );\n\n\t\t\t\t}`,depthTest:false,depthWrite:false,transparent:false});const mesh1=new Mesh(geometry2,material1a);const elements=[];const shader=LensflareElement.Shader;const material2=new RawShaderMaterial({uniforms:{map:{value:null},occlusionMap:{value:occlusionMap},color:{value:new Color(16777215)},scale:{value:new Vector2()},screenPosition:{value:new Vector3()}},vertexShader:shader.vertexShader,fragmentShader:shader.fragmentShader,blending:AdditiveBlending,transparent:true,depthWrite:false});const mesh2=new Mesh(geometry2,material2);this.addElement=function(element){elements.push(element);};const scale=new Vector2();const screenPositionPixels=new Vector2();const validArea=new Box2();const viewport=new Vector4();this.onBeforeRender=function(renderer,scene,camera){renderer.getCurrentViewport(viewport);const invAspect=viewport.w/viewport.z;const halfViewportWidth=viewport.z/2;const halfViewportHeight=viewport.w/2;let size2=16/viewport.w;scale.set(size2*invAspect,size2);validArea.min.set(viewport.x,viewport.y);validArea.max.set(viewport.x+(viewport.z-16),viewport.y+(viewport.w-16));positionView.setFromMatrixPosition(this.matrixWorld);positionView.applyMatrix4(camera.matrixWorldInverse);if(positionView.z>0)return;positionScreen.copy(positionView).applyMatrix4(camera.projectionMatrix);screenPositionPixels.x=viewport.x+positionScreen.x*halfViewportWidth+halfViewportWidth-8;screenPositionPixels.y=viewport.y+positionScreen.y*halfViewportHeight+halfViewportHeight-8;if(validArea.containsPoint(screenPositionPixels)){renderer.copyFramebufferToTexture(screenPositionPixels,tempMap);let uniforms=material1a.uniforms;uniforms[\"scale\"].value=scale;uniforms[\"screenPosition\"].value=positionScreen;renderer.renderBufferDirect(camera,null,geometry2,material1a,mesh1,null);renderer.copyFramebufferToTexture(screenPositionPixels,occlusionMap);uniforms=material1b.uniforms;uniforms[\"scale\"].value=scale;uniforms[\"screenPosition\"].value=positionScreen;renderer.renderBufferDirect(camera,null,geometry2,material1b,mesh1,null);const vecX=-positionScreen.x*2;const vecY=-positionScreen.y*2;for(let i2=0,l=elements.length;i2\n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\t\t\t\t\tmirrorCoord = modelMatrix * vec4( position, 1.0 );\n\t\t\t\t\tworldPosition = mirrorCoord.xyzw;\n\t\t\t\t\tmirrorCoord = textureMatrix * mirrorCoord;\n\t\t\t\t\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t\tgl_Position = projectionMatrix * mvPosition;\n\n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t}`,fragmentShader:/* glsl */`\n\t\t\t\tuniform sampler2D mirrorSampler;\n\t\t\t\tuniform float alpha;\n\t\t\t\tuniform float time;\n\t\t\t\tuniform float size;\n\t\t\t\tuniform float distortionScale;\n\t\t\t\tuniform sampler2D normalSampler;\n\t\t\t\tuniform vec3 sunColor;\n\t\t\t\tuniform vec3 sunDirection;\n\t\t\t\tuniform vec3 eye;\n\t\t\t\tuniform vec3 waterColor;\n\n\t\t\t\tvarying vec4 mirrorCoord;\n\t\t\t\tvarying vec4 worldPosition;\n\n\t\t\t\tvec4 getNoise( vec2 uv ) {\n\t\t\t\t\tvec2 uv0 = ( uv / 103.0 ) + vec2(time / 17.0, time / 29.0);\n\t\t\t\t\tvec2 uv1 = uv / 107.0-vec2( time / -19.0, time / 31.0 );\n\t\t\t\t\tvec2 uv2 = uv / vec2( 8907.0, 9803.0 ) + vec2( time / 101.0, time / 97.0 );\n\t\t\t\t\tvec2 uv3 = uv / vec2( 1091.0, 1027.0 ) - vec2( time / 109.0, time / -113.0 );\n\t\t\t\t\tvec4 noise = texture2D( normalSampler, uv0 ) +\n\t\t\t\t\t\ttexture2D( normalSampler, uv1 ) +\n\t\t\t\t\t\ttexture2D( normalSampler, uv2 ) +\n\t\t\t\t\t\ttexture2D( normalSampler, uv3 );\n\t\t\t\t\treturn noise * 0.5 - 1.0;\n\t\t\t\t}\n\n\t\t\t\tvoid sunLight( const vec3 surfaceNormal, const vec3 eyeDirection, float shiny, float spec, float diffuse, inout vec3 diffuseColor, inout vec3 specularColor ) {\n\t\t\t\t\tvec3 reflection = normalize( reflect( -sunDirection, surfaceNormal ) );\n\t\t\t\t\tfloat direction = max( 0.0, dot( eyeDirection, reflection ) );\n\t\t\t\t\tspecularColor += pow( direction, shiny ) * sunColor * spec;\n\t\t\t\t\tdiffuseColor += max( dot( sunDirection, surfaceNormal ), 0.0 ) * sunColor * diffuse;\n\t\t\t\t}\n\n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\t#include \n\t\t\t\t\tvec4 noise = getNoise( worldPosition.xz * size );\n\t\t\t\t\tvec3 surfaceNormal = normalize( noise.xzy * vec3( 1.5, 1.0, 1.5 ) );\n\n\t\t\t\t\tvec3 diffuseLight = vec3(0.0);\n\t\t\t\t\tvec3 specularLight = vec3(0.0);\n\n\t\t\t\t\tvec3 worldToEye = eye-worldPosition.xyz;\n\t\t\t\t\tvec3 eyeDirection = normalize( worldToEye );\n\t\t\t\t\tsunLight( surfaceNormal, eyeDirection, 100.0, 2.0, 0.5, diffuseLight, specularLight );\n\n\t\t\t\t\tfloat distance = length(worldToEye);\n\n\t\t\t\t\tvec2 distortion = surfaceNormal.xz * ( 0.001 + 1.0 / distance ) * distortionScale;\n\t\t\t\t\tvec3 reflectionSample = vec3( texture2D( mirrorSampler, mirrorCoord.xy / mirrorCoord.w + distortion ) );\n\n\t\t\t\t\tfloat theta = max( dot( eyeDirection, surfaceNormal ), 0.0 );\n\t\t\t\t\tfloat rf0 = 0.3;\n\t\t\t\t\tfloat reflectance = rf0 + ( 1.0 - rf0 ) * pow( ( 1.0 - theta ), 5.0 );\n\t\t\t\t\tvec3 scatter = max( 0.0, dot( surfaceNormal, eyeDirection ) ) * waterColor;\n\t\t\t\t\tvec3 albedo = mix( ( sunColor * diffuseLight * 0.3 + scatter ) * getShadowMask(), ( vec3( 0.1 ) + reflectionSample * 0.9 + reflectionSample * specularLight ), reflectance);\n\t\t\t\t\tvec3 outgoingLight = albedo;\n\t\t\t\t\tgl_FragColor = vec4( outgoingLight, alpha );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include <${parseInt(REVISION.replace(/\\D+/g,\"\"))>=154?\"colorspace_fragment\":\"encodings_fragment\"}>\n\t\t\t\t\t#include \t\n\t\t\t\t}`};const material2=new ShaderMaterial({fragmentShader:mirrorShader.fragmentShader,vertexShader:mirrorShader.vertexShader,uniforms:UniformsUtils.clone(mirrorShader.uniforms),lights:true,side,fog});material2.uniforms[\"mirrorSampler\"].value=renderTarget.texture;material2.uniforms[\"textureMatrix\"].value=textureMatrix;material2.uniforms[\"alpha\"].value=alpha;material2.uniforms[\"time\"].value=time;material2.uniforms[\"normalSampler\"].value=normalSampler;material2.uniforms[\"sunColor\"].value=sunColor;material2.uniforms[\"waterColor\"].value=waterColor;material2.uniforms[\"sunDirection\"].value=sunDirection;material2.uniforms[\"distortionScale\"].value=distortionScale;material2.uniforms[\"eye\"].value=eye;scope.material=material2;scope.onBeforeRender=function(renderer,scene,camera){mirrorWorldPosition.setFromMatrixPosition(scope.matrixWorld);cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld);rotationMatrix2.extractRotation(scope.matrixWorld);normal.set(0,0,1);normal.applyMatrix4(rotationMatrix2);view.subVectors(mirrorWorldPosition,cameraWorldPosition);if(view.dot(normal)>0)return;view.reflect(normal).negate();view.add(mirrorWorldPosition);rotationMatrix2.extractRotation(camera.matrixWorld);lookAtPosition.set(0,0,-1);lookAtPosition.applyMatrix4(rotationMatrix2);lookAtPosition.add(cameraWorldPosition);target.subVectors(mirrorWorldPosition,lookAtPosition);target.reflect(normal).negate();target.add(mirrorWorldPosition);mirrorCamera.position.copy(view);mirrorCamera.up.set(0,1,0);mirrorCamera.up.applyMatrix4(rotationMatrix2);mirrorCamera.up.reflect(normal);mirrorCamera.lookAt(target);mirrorCamera.far=camera.far;mirrorCamera.updateMatrixWorld();mirrorCamera.projectionMatrix.copy(camera.projectionMatrix);textureMatrix.set(0.5,0,0,0.5,0,0.5,0,0.5,0,0,0.5,0.5,0,0,0,1);textureMatrix.multiply(mirrorCamera.projectionMatrix);textureMatrix.multiply(mirrorCamera.matrixWorldInverse);mirrorPlane.setFromNormalAndCoplanarPoint(normal,mirrorWorldPosition);mirrorPlane.applyMatrix4(mirrorCamera.matrixWorldInverse);clipPlane.set(mirrorPlane.normal.x,mirrorPlane.normal.y,mirrorPlane.normal.z,mirrorPlane.constant);const projectionMatrix=mirrorCamera.projectionMatrix;q.x=(Math.sign(clipPlane.x)+projectionMatrix.elements[8])/projectionMatrix.elements[0];q.y=(Math.sign(clipPlane.y)+projectionMatrix.elements[9])/projectionMatrix.elements[5];q.z=-1;q.w=(1+projectionMatrix.elements[10])/projectionMatrix.elements[14];clipPlane.multiplyScalar(2/clipPlane.dot(q));projectionMatrix.elements[2]=clipPlane.x;projectionMatrix.elements[6]=clipPlane.y;projectionMatrix.elements[10]=clipPlane.z+1-clipBias;projectionMatrix.elements[14]=clipPlane.w;eye.setFromMatrixPosition(camera.matrixWorld);const currentRenderTarget=renderer.getRenderTarget();const currentXrEnabled=renderer.xr.enabled;const currentShadowAutoUpdate=renderer.shadowMap.autoUpdate;scope.visible=false;renderer.xr.enabled=false;renderer.shadowMap.autoUpdate=false;renderer.setRenderTarget(renderTarget);renderer.state.buffers.depth.setMask(true);if(renderer.autoClear===false)renderer.clear();renderer.render(scene,mirrorCamera);scope.visible=true;renderer.xr.enabled=currentXrEnabled;renderer.shadowMap.autoUpdate=currentShadowAutoUpdate;renderer.setRenderTarget(currentRenderTarget);const viewport=camera.viewport;if(viewport!==void 0){renderer.state.viewport(viewport);}};}}class MarchingCubes extends Mesh{constructor(resolution,material2,enableUvs=false,enableColors=false,maxPolyCount=1e4){const geometry2=new BufferGeometry();super(geometry2,material2);this.isMarchingCubes=true;const scope=this;const vlist=new Float32Array(12*3);const nlist=new Float32Array(12*3);const clist=new Float32Array(12*3);this.enableUvs=enableUvs;this.enableColors=enableColors;this.init=function(resolution2){this.resolution=resolution2;this.isolation=80;this.size=resolution2;this.size2=this.size*this.size;this.size3=this.size2*this.size;this.halfsize=this.size/2;this.delta=2/this.size;this.yd=this.size;this.zd=this.size2;this.field=new Float32Array(this.size3);this.normal_cache=new Float32Array(this.size3*3);this.palette=new Float32Array(this.size3*3);this.count=0;const maxVertexCount=maxPolyCount*3;this.positionArray=new Float32Array(maxVertexCount*3);const positionAttribute=new BufferAttribute(this.positionArray,3);positionAttribute.setUsage(DynamicDrawUsage);geometry2.setAttribute(\"position\",positionAttribute);this.normalArray=new Float32Array(maxVertexCount*3);const normalAttribute=new BufferAttribute(this.normalArray,3);normalAttribute.setUsage(DynamicDrawUsage);geometry2.setAttribute(\"normal\",normalAttribute);if(this.enableUvs){this.uvArray=new Float32Array(maxVertexCount*2);const uvAttribute=new BufferAttribute(this.uvArray,2);uvAttribute.setUsage(DynamicDrawUsage);geometry2.setAttribute(\"uv\",uvAttribute);}if(this.enableColors){this.colorArray=new Float32Array(maxVertexCount*3);const colorAttribute=new BufferAttribute(this.colorArray,3);colorAttribute.setUsage(DynamicDrawUsage);geometry2.setAttribute(\"color\",colorAttribute);}geometry2.boundingSphere=new Sphere(new Vector3(),1);};function lerp2(a2,b2,t2){return a2+(b2-a2)*t2;}function VIntX(q,offset,isol,x,y,z,valp1,valp2,c_offset1,c_offset2){const mu=(isol-valp1)/(valp2-valp1),nc=scope.normal_cache;vlist[offset+0]=x+mu*scope.delta;vlist[offset+1]=y;vlist[offset+2]=z;nlist[offset+0]=lerp2(nc[q+0],nc[q+3],mu);nlist[offset+1]=lerp2(nc[q+1],nc[q+4],mu);nlist[offset+2]=lerp2(nc[q+2],nc[q+5],mu);clist[offset+0]=lerp2(scope.palette[c_offset1*3+0],scope.palette[c_offset2*3+0],mu);clist[offset+1]=lerp2(scope.palette[c_offset1*3+1],scope.palette[c_offset2*3+1],mu);clist[offset+2]=lerp2(scope.palette[c_offset1*3+2],scope.palette[c_offset2*3+2],mu);}function VIntY(q,offset,isol,x,y,z,valp1,valp2,c_offset1,c_offset2){const mu=(isol-valp1)/(valp2-valp1),nc=scope.normal_cache;vlist[offset+0]=x;vlist[offset+1]=y+mu*scope.delta;vlist[offset+2]=z;const q2=q+scope.yd*3;nlist[offset+0]=lerp2(nc[q+0],nc[q2+0],mu);nlist[offset+1]=lerp2(nc[q+1],nc[q2+1],mu);nlist[offset+2]=lerp2(nc[q+2],nc[q2+2],mu);clist[offset+0]=lerp2(scope.palette[c_offset1*3+0],scope.palette[c_offset2*3+0],mu);clist[offset+1]=lerp2(scope.palette[c_offset1*3+1],scope.palette[c_offset2*3+1],mu);clist[offset+2]=lerp2(scope.palette[c_offset1*3+2],scope.palette[c_offset2*3+2],mu);}function VIntZ(q,offset,isol,x,y,z,valp1,valp2,c_offset1,c_offset2){const mu=(isol-valp1)/(valp2-valp1),nc=scope.normal_cache;vlist[offset+0]=x;vlist[offset+1]=y;vlist[offset+2]=z+mu*scope.delta;const q2=q+scope.zd*3;nlist[offset+0]=lerp2(nc[q+0],nc[q2+0],mu);nlist[offset+1]=lerp2(nc[q+1],nc[q2+1],mu);nlist[offset+2]=lerp2(nc[q+2],nc[q2+2],mu);clist[offset+0]=lerp2(scope.palette[c_offset1*3+0],scope.palette[c_offset2*3+0],mu);clist[offset+1]=lerp2(scope.palette[c_offset1*3+1],scope.palette[c_offset2*3+1],mu);clist[offset+2]=lerp2(scope.palette[c_offset1*3+2],scope.palette[c_offset2*3+2],mu);}function compNorm(q){const q3=q*3;if(scope.normal_cache[q3]===0){scope.normal_cache[q3+0]=scope.field[q-1]-scope.field[q+1];scope.normal_cache[q3+1]=scope.field[q-scope.yd]-scope.field[q+scope.yd];scope.normal_cache[q3+2]=scope.field[q-scope.zd]-scope.field[q+scope.zd];}}function polygonize(fx,fy,fz,q,isol){const q1=q+1,qy=q+scope.yd,qz=q+scope.zd,q1y=q1+scope.yd,q1z=q1+scope.zd,qyz=q+scope.yd+scope.zd,q1yz=q1+scope.yd+scope.zd;let cubeindex=0;const field0=scope.field[q],field1=scope.field[q1],field2=scope.field[qy],field3=scope.field[q1y],field4=scope.field[qz],field5=scope.field[q1z],field6=scope.field[qyz],field7=scope.field[q1yz];if(field0this.size-1)max_z=this.size-1;let min_y=Math.floor(ys-radius);if(min_y<1)min_y=1;let max_y=Math.floor(ys+radius);if(max_y>this.size-1)max_y=this.size-1;let min_x=Math.floor(xs-radius);if(min_x<1)min_x=1;let max_x=Math.floor(xs+radius);if(max_x>this.size-1)max_x=this.size-1;let x,y,z,y_offset,z_offset,fx,fy,fz,fz2,fy2,val;for(z=min_z;z0){this.field[y_offset+x]+=val*sign;const ratio=Math.sqrt((x-xs)*(x-xs)+(y-ys)*(y-ys)+(z-zs)*(z-zs))/radius;const contrib=1-ratio*ratio*ratio*(ratio*(ratio*6-15)+10);this.palette[(y_offset+x)*3+0]+=ballColor.r*contrib;this.palette[(y_offset+x)*3+1]+=ballColor.g*contrib;this.palette[(y_offset+x)*3+2]+=ballColor.b*contrib;}}}}};this.addPlaneX=function(strength,subtract){const size2=this.size,yd=this.yd,zd=this.zd,field=this.field;let x,y,z,xx,val,xdiv,cxy,dist=size2*Math.sqrt(strength/subtract);if(dist>size2)dist=size2;for(x=0;x0){for(y=0;ysize2)dist=size2;for(y=0;y0){cy=y*yd;for(x=0;xsize2)dist=size2;for(z=0;z0){cz=zd*z;for(y=0;y=size2)continue;for(let y2=-1;y2<=1;y2+=2){const y3=y2+y;if(y3<0||y3>=size2)continue;for(let z2=-1;z2<=1;z2+=2){const z3=z2+z;if(z3<0||z3>=size2)continue;const index2=size22*z3+size2*y3+x3;const val2=fieldCopy[index2];count++;val+=intensity*(val2-val)/count;}}}field[index]=val;}}}};this.reset=function(){for(let i2=0;i2maxPolyCount)console.warn(\"THREE.MarchingCubes: Geometry buffers too small for rendering. Please create an instance with a higher poly count.\");};this.init(resolution);}}const edgeTable=/*@__PURE__*/new Int32Array([0,265,515,778,1030,1295,1541,1804,2060,2309,2575,2822,3082,3331,3593,3840,400,153,915,666,1430,1183,1941,1692,2460,2197,2975,2710,3482,3219,3993,3728,560,825,51,314,1590,1855,1077,1340,2620,2869,2111,2358,3642,3891,3129,3376,928,681,419,170,1958,1711,1445,1196,2988,2725,2479,2214,4010,3747,3497,3232,1120,1385,1635,1898,102,367,613,876,3180,3429,3695,3942,2154,2403,2665,2912,1520,1273,2035,1786,502,255,1013,764,3580,3317,4095,3830,2554,2291,3065,2800,1616,1881,1107,1370,598,863,85,348,3676,3925,3167,3414,2650,2899,2137,2384,1984,1737,1475,1226,966,719,453,204,4044,3781,3535,3270,3018,2755,2505,2240,2240,2505,2755,3018,3270,3535,3781,4044,204,453,719,966,1226,1475,1737,1984,2384,2137,2899,2650,3414,3167,3925,3676,348,85,863,598,1370,1107,1881,1616,2800,3065,2291,2554,3830,4095,3317,3580,764,1013,255,502,1786,2035,1273,1520,2912,2665,2403,2154,3942,3695,3429,3180,876,613,367,102,1898,1635,1385,1120,3232,3497,3747,4010,2214,2479,2725,2988,1196,1445,1711,1958,170,419,681,928,3376,3129,3891,3642,2358,2111,2869,2620,1340,1077,1855,1590,314,51,825,560,3728,3993,3219,3482,2710,2975,2197,2460,1692,1941,1183,1430,666,915,153,400,3840,3593,3331,3082,2822,2575,2309,2060,1804,1541,1295,1030,778,515,265,0]);const triTable=/*@__PURE__*/new Int32Array([-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,8,3,9,8,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,2,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,3,1,2,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,2,10,0,2,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,8,3,2,10,8,10,9,8,-1,-1,-1,-1,-1,-1,-1,3,11,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,11,2,8,11,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,9,0,2,3,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,11,2,1,9,11,9,8,11,-1,-1,-1,-1,-1,-1,-1,3,10,1,11,10,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,10,1,0,8,10,8,11,10,-1,-1,-1,-1,-1,-1,-1,3,9,0,3,11,9,11,10,9,-1,-1,-1,-1,-1,-1,-1,9,8,10,10,8,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,7,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,3,0,7,3,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,9,8,4,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,1,9,4,7,1,7,3,1,-1,-1,-1,-1,-1,-1,-1,1,2,10,8,4,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,4,7,3,0,4,1,2,10,-1,-1,-1,-1,-1,-1,-1,9,2,10,9,0,2,8,4,7,-1,-1,-1,-1,-1,-1,-1,2,10,9,2,9,7,2,7,3,7,9,4,-1,-1,-1,-1,8,4,7,3,11,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,4,7,11,2,4,2,0,4,-1,-1,-1,-1,-1,-1,-1,9,0,1,8,4,7,2,3,11,-1,-1,-1,-1,-1,-1,-1,4,7,11,9,4,11,9,11,2,9,2,1,-1,-1,-1,-1,3,10,1,3,11,10,7,8,4,-1,-1,-1,-1,-1,-1,-1,1,11,10,1,4,11,1,0,4,7,11,4,-1,-1,-1,-1,4,7,8,9,0,11,9,11,10,11,0,3,-1,-1,-1,-1,4,7,11,4,11,9,9,11,10,-1,-1,-1,-1,-1,-1,-1,9,5,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,5,4,0,8,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,5,4,1,5,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,5,4,8,3,5,3,1,5,-1,-1,-1,-1,-1,-1,-1,1,2,10,9,5,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,0,8,1,2,10,4,9,5,-1,-1,-1,-1,-1,-1,-1,5,2,10,5,4,2,4,0,2,-1,-1,-1,-1,-1,-1,-1,2,10,5,3,2,5,3,5,4,3,4,8,-1,-1,-1,-1,9,5,4,2,3,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,11,2,0,8,11,4,9,5,-1,-1,-1,-1,-1,-1,-1,0,5,4,0,1,5,2,3,11,-1,-1,-1,-1,-1,-1,-1,2,1,5,2,5,8,2,8,11,4,8,5,-1,-1,-1,-1,10,3,11,10,1,3,9,5,4,-1,-1,-1,-1,-1,-1,-1,4,9,5,0,8,1,8,10,1,8,11,10,-1,-1,-1,-1,5,4,0,5,0,11,5,11,10,11,0,3,-1,-1,-1,-1,5,4,8,5,8,10,10,8,11,-1,-1,-1,-1,-1,-1,-1,9,7,8,5,7,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,3,0,9,5,3,5,7,3,-1,-1,-1,-1,-1,-1,-1,0,7,8,0,1,7,1,5,7,-1,-1,-1,-1,-1,-1,-1,1,5,3,3,5,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,7,8,9,5,7,10,1,2,-1,-1,-1,-1,-1,-1,-1,10,1,2,9,5,0,5,3,0,5,7,3,-1,-1,-1,-1,8,0,2,8,2,5,8,5,7,10,5,2,-1,-1,-1,-1,2,10,5,2,5,3,3,5,7,-1,-1,-1,-1,-1,-1,-1,7,9,5,7,8,9,3,11,2,-1,-1,-1,-1,-1,-1,-1,9,5,7,9,7,2,9,2,0,2,7,11,-1,-1,-1,-1,2,3,11,0,1,8,1,7,8,1,5,7,-1,-1,-1,-1,11,2,1,11,1,7,7,1,5,-1,-1,-1,-1,-1,-1,-1,9,5,8,8,5,7,10,1,3,10,3,11,-1,-1,-1,-1,5,7,0,5,0,9,7,11,0,1,0,10,11,10,0,-1,11,10,0,11,0,3,10,5,0,8,0,7,5,7,0,-1,11,10,5,7,11,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,6,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,3,5,10,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,0,1,5,10,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,8,3,1,9,8,5,10,6,-1,-1,-1,-1,-1,-1,-1,1,6,5,2,6,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,6,5,1,2,6,3,0,8,-1,-1,-1,-1,-1,-1,-1,9,6,5,9,0,6,0,2,6,-1,-1,-1,-1,-1,-1,-1,5,9,8,5,8,2,5,2,6,3,2,8,-1,-1,-1,-1,2,3,11,10,6,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,0,8,11,2,0,10,6,5,-1,-1,-1,-1,-1,-1,-1,0,1,9,2,3,11,5,10,6,-1,-1,-1,-1,-1,-1,-1,5,10,6,1,9,2,9,11,2,9,8,11,-1,-1,-1,-1,6,3,11,6,5,3,5,1,3,-1,-1,-1,-1,-1,-1,-1,0,8,11,0,11,5,0,5,1,5,11,6,-1,-1,-1,-1,3,11,6,0,3,6,0,6,5,0,5,9,-1,-1,-1,-1,6,5,9,6,9,11,11,9,8,-1,-1,-1,-1,-1,-1,-1,5,10,6,4,7,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,3,0,4,7,3,6,5,10,-1,-1,-1,-1,-1,-1,-1,1,9,0,5,10,6,8,4,7,-1,-1,-1,-1,-1,-1,-1,10,6,5,1,9,7,1,7,3,7,9,4,-1,-1,-1,-1,6,1,2,6,5,1,4,7,8,-1,-1,-1,-1,-1,-1,-1,1,2,5,5,2,6,3,0,4,3,4,7,-1,-1,-1,-1,8,4,7,9,0,5,0,6,5,0,2,6,-1,-1,-1,-1,7,3,9,7,9,4,3,2,9,5,9,6,2,6,9,-1,3,11,2,7,8,4,10,6,5,-1,-1,-1,-1,-1,-1,-1,5,10,6,4,7,2,4,2,0,2,7,11,-1,-1,-1,-1,0,1,9,4,7,8,2,3,11,5,10,6,-1,-1,-1,-1,9,2,1,9,11,2,9,4,11,7,11,4,5,10,6,-1,8,4,7,3,11,5,3,5,1,5,11,6,-1,-1,-1,-1,5,1,11,5,11,6,1,0,11,7,11,4,0,4,11,-1,0,5,9,0,6,5,0,3,6,11,6,3,8,4,7,-1,6,5,9,6,9,11,4,7,9,7,11,9,-1,-1,-1,-1,10,4,9,6,4,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,10,6,4,9,10,0,8,3,-1,-1,-1,-1,-1,-1,-1,10,0,1,10,6,0,6,4,0,-1,-1,-1,-1,-1,-1,-1,8,3,1,8,1,6,8,6,4,6,1,10,-1,-1,-1,-1,1,4,9,1,2,4,2,6,4,-1,-1,-1,-1,-1,-1,-1,3,0,8,1,2,9,2,4,9,2,6,4,-1,-1,-1,-1,0,2,4,4,2,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,2,8,2,4,4,2,6,-1,-1,-1,-1,-1,-1,-1,10,4,9,10,6,4,11,2,3,-1,-1,-1,-1,-1,-1,-1,0,8,2,2,8,11,4,9,10,4,10,6,-1,-1,-1,-1,3,11,2,0,1,6,0,6,4,6,1,10,-1,-1,-1,-1,6,4,1,6,1,10,4,8,1,2,1,11,8,11,1,-1,9,6,4,9,3,6,9,1,3,11,6,3,-1,-1,-1,-1,8,11,1,8,1,0,11,6,1,9,1,4,6,4,1,-1,3,11,6,3,6,0,0,6,4,-1,-1,-1,-1,-1,-1,-1,6,4,8,11,6,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,10,6,7,8,10,8,9,10,-1,-1,-1,-1,-1,-1,-1,0,7,3,0,10,7,0,9,10,6,7,10,-1,-1,-1,-1,10,6,7,1,10,7,1,7,8,1,8,0,-1,-1,-1,-1,10,6,7,10,7,1,1,7,3,-1,-1,-1,-1,-1,-1,-1,1,2,6,1,6,8,1,8,9,8,6,7,-1,-1,-1,-1,2,6,9,2,9,1,6,7,9,0,9,3,7,3,9,-1,7,8,0,7,0,6,6,0,2,-1,-1,-1,-1,-1,-1,-1,7,3,2,6,7,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,11,10,6,8,10,8,9,8,6,7,-1,-1,-1,-1,2,0,7,2,7,11,0,9,7,6,7,10,9,10,7,-1,1,8,0,1,7,8,1,10,7,6,7,10,2,3,11,-1,11,2,1,11,1,7,10,6,1,6,7,1,-1,-1,-1,-1,8,9,6,8,6,7,9,1,6,11,6,3,1,3,6,-1,0,9,1,11,6,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,8,0,7,0,6,3,11,0,11,6,0,-1,-1,-1,-1,7,11,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,6,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,0,8,11,7,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,9,11,7,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,1,9,8,3,1,11,7,6,-1,-1,-1,-1,-1,-1,-1,10,1,2,6,11,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,2,10,3,0,8,6,11,7,-1,-1,-1,-1,-1,-1,-1,2,9,0,2,10,9,6,11,7,-1,-1,-1,-1,-1,-1,-1,6,11,7,2,10,3,10,8,3,10,9,8,-1,-1,-1,-1,7,2,3,6,2,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,0,8,7,6,0,6,2,0,-1,-1,-1,-1,-1,-1,-1,2,7,6,2,3,7,0,1,9,-1,-1,-1,-1,-1,-1,-1,1,6,2,1,8,6,1,9,8,8,7,6,-1,-1,-1,-1,10,7,6,10,1,7,1,3,7,-1,-1,-1,-1,-1,-1,-1,10,7,6,1,7,10,1,8,7,1,0,8,-1,-1,-1,-1,0,3,7,0,7,10,0,10,9,6,10,7,-1,-1,-1,-1,7,6,10,7,10,8,8,10,9,-1,-1,-1,-1,-1,-1,-1,6,8,4,11,8,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,6,11,3,0,6,0,4,6,-1,-1,-1,-1,-1,-1,-1,8,6,11,8,4,6,9,0,1,-1,-1,-1,-1,-1,-1,-1,9,4,6,9,6,3,9,3,1,11,3,6,-1,-1,-1,-1,6,8,4,6,11,8,2,10,1,-1,-1,-1,-1,-1,-1,-1,1,2,10,3,0,11,0,6,11,0,4,6,-1,-1,-1,-1,4,11,8,4,6,11,0,2,9,2,10,9,-1,-1,-1,-1,10,9,3,10,3,2,9,4,3,11,3,6,4,6,3,-1,8,2,3,8,4,2,4,6,2,-1,-1,-1,-1,-1,-1,-1,0,4,2,4,6,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,9,0,2,3,4,2,4,6,4,3,8,-1,-1,-1,-1,1,9,4,1,4,2,2,4,6,-1,-1,-1,-1,-1,-1,-1,8,1,3,8,6,1,8,4,6,6,10,1,-1,-1,-1,-1,10,1,0,10,0,6,6,0,4,-1,-1,-1,-1,-1,-1,-1,4,6,3,4,3,8,6,10,3,0,3,9,10,9,3,-1,10,9,4,6,10,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,9,5,7,6,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,3,4,9,5,11,7,6,-1,-1,-1,-1,-1,-1,-1,5,0,1,5,4,0,7,6,11,-1,-1,-1,-1,-1,-1,-1,11,7,6,8,3,4,3,5,4,3,1,5,-1,-1,-1,-1,9,5,4,10,1,2,7,6,11,-1,-1,-1,-1,-1,-1,-1,6,11,7,1,2,10,0,8,3,4,9,5,-1,-1,-1,-1,7,6,11,5,4,10,4,2,10,4,0,2,-1,-1,-1,-1,3,4,8,3,5,4,3,2,5,10,5,2,11,7,6,-1,7,2,3,7,6,2,5,4,9,-1,-1,-1,-1,-1,-1,-1,9,5,4,0,8,6,0,6,2,6,8,7,-1,-1,-1,-1,3,6,2,3,7,6,1,5,0,5,4,0,-1,-1,-1,-1,6,2,8,6,8,7,2,1,8,4,8,5,1,5,8,-1,9,5,4,10,1,6,1,7,6,1,3,7,-1,-1,-1,-1,1,6,10,1,7,6,1,0,7,8,7,0,9,5,4,-1,4,0,10,4,10,5,0,3,10,6,10,7,3,7,10,-1,7,6,10,7,10,8,5,4,10,4,8,10,-1,-1,-1,-1,6,9,5,6,11,9,11,8,9,-1,-1,-1,-1,-1,-1,-1,3,6,11,0,6,3,0,5,6,0,9,5,-1,-1,-1,-1,0,11,8,0,5,11,0,1,5,5,6,11,-1,-1,-1,-1,6,11,3,6,3,5,5,3,1,-1,-1,-1,-1,-1,-1,-1,1,2,10,9,5,11,9,11,8,11,5,6,-1,-1,-1,-1,0,11,3,0,6,11,0,9,6,5,6,9,1,2,10,-1,11,8,5,11,5,6,8,0,5,10,5,2,0,2,5,-1,6,11,3,6,3,5,2,10,3,10,5,3,-1,-1,-1,-1,5,8,9,5,2,8,5,6,2,3,8,2,-1,-1,-1,-1,9,5,6,9,6,0,0,6,2,-1,-1,-1,-1,-1,-1,-1,1,5,8,1,8,0,5,6,8,3,8,2,6,2,8,-1,1,5,6,2,1,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,3,6,1,6,10,3,8,6,5,6,9,8,9,6,-1,10,1,0,10,0,6,9,5,0,5,6,0,-1,-1,-1,-1,0,3,8,5,6,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,5,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,5,10,7,5,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,5,10,11,7,5,8,3,0,-1,-1,-1,-1,-1,-1,-1,5,11,7,5,10,11,1,9,0,-1,-1,-1,-1,-1,-1,-1,10,7,5,10,11,7,9,8,1,8,3,1,-1,-1,-1,-1,11,1,2,11,7,1,7,5,1,-1,-1,-1,-1,-1,-1,-1,0,8,3,1,2,7,1,7,5,7,2,11,-1,-1,-1,-1,9,7,5,9,2,7,9,0,2,2,11,7,-1,-1,-1,-1,7,5,2,7,2,11,5,9,2,3,2,8,9,8,2,-1,2,5,10,2,3,5,3,7,5,-1,-1,-1,-1,-1,-1,-1,8,2,0,8,5,2,8,7,5,10,2,5,-1,-1,-1,-1,9,0,1,5,10,3,5,3,7,3,10,2,-1,-1,-1,-1,9,8,2,9,2,1,8,7,2,10,2,5,7,5,2,-1,1,3,5,3,7,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,7,0,7,1,1,7,5,-1,-1,-1,-1,-1,-1,-1,9,0,3,9,3,5,5,3,7,-1,-1,-1,-1,-1,-1,-1,9,8,7,5,9,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,8,4,5,10,8,10,11,8,-1,-1,-1,-1,-1,-1,-1,5,0,4,5,11,0,5,10,11,11,3,0,-1,-1,-1,-1,0,1,9,8,4,10,8,10,11,10,4,5,-1,-1,-1,-1,10,11,4,10,4,5,11,3,4,9,4,1,3,1,4,-1,2,5,1,2,8,5,2,11,8,4,5,8,-1,-1,-1,-1,0,4,11,0,11,3,4,5,11,2,11,1,5,1,11,-1,0,2,5,0,5,9,2,11,5,4,5,8,11,8,5,-1,9,4,5,2,11,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,5,10,3,5,2,3,4,5,3,8,4,-1,-1,-1,-1,5,10,2,5,2,4,4,2,0,-1,-1,-1,-1,-1,-1,-1,3,10,2,3,5,10,3,8,5,4,5,8,0,1,9,-1,5,10,2,5,2,4,1,9,2,9,4,2,-1,-1,-1,-1,8,4,5,8,5,3,3,5,1,-1,-1,-1,-1,-1,-1,-1,0,4,5,1,0,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,4,5,8,5,3,9,0,5,0,3,5,-1,-1,-1,-1,9,4,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,11,7,4,9,11,9,10,11,-1,-1,-1,-1,-1,-1,-1,0,8,3,4,9,7,9,11,7,9,10,11,-1,-1,-1,-1,1,10,11,1,11,4,1,4,0,7,4,11,-1,-1,-1,-1,3,1,4,3,4,8,1,10,4,7,4,11,10,11,4,-1,4,11,7,9,11,4,9,2,11,9,1,2,-1,-1,-1,-1,9,7,4,9,11,7,9,1,11,2,11,1,0,8,3,-1,11,7,4,11,4,2,2,4,0,-1,-1,-1,-1,-1,-1,-1,11,7,4,11,4,2,8,3,4,3,2,4,-1,-1,-1,-1,2,9,10,2,7,9,2,3,7,7,4,9,-1,-1,-1,-1,9,10,7,9,7,4,10,2,7,8,7,0,2,0,7,-1,3,7,10,3,10,2,7,4,10,1,10,0,4,0,10,-1,1,10,2,8,7,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,9,1,4,1,7,7,1,3,-1,-1,-1,-1,-1,-1,-1,4,9,1,4,1,7,0,8,1,8,7,1,-1,-1,-1,-1,4,0,3,7,4,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,8,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,10,8,10,11,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,0,9,3,9,11,11,9,10,-1,-1,-1,-1,-1,-1,-1,0,1,10,0,10,8,8,10,11,-1,-1,-1,-1,-1,-1,-1,3,1,10,11,3,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,2,11,1,11,9,9,11,8,-1,-1,-1,-1,-1,-1,-1,3,0,9,3,9,11,1,2,9,2,11,9,-1,-1,-1,-1,0,2,11,8,0,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,2,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,8,2,8,10,10,8,9,-1,-1,-1,-1,-1,-1,-1,9,10,2,0,9,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,8,2,8,10,0,1,8,1,10,8,-1,-1,-1,-1,1,10,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,3,8,9,1,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,9,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,3,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]);class SimplexNoise{/**\n * You can pass in a random number generator object if you like.\n * It is assumed to have a random() method.\n */constructor(r=Math){__publicField(this,\"grad3\",[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]]);__publicField(this,\"grad4\",[[0,1,1,1],[0,1,1,-1],[0,1,-1,1],[0,1,-1,-1],[0,-1,1,1],[0,-1,1,-1],[0,-1,-1,1],[0,-1,-1,-1],[1,0,1,1],[1,0,1,-1],[1,0,-1,1],[1,0,-1,-1],[-1,0,1,1],[-1,0,1,-1],[-1,0,-1,1],[-1,0,-1,-1],[1,1,0,1],[1,1,0,-1],[1,-1,0,1],[1,-1,0,-1],[-1,1,0,1],[-1,1,0,-1],[-1,-1,0,1],[-1,-1,0,-1],[1,1,1,0],[1,1,-1,0],[1,-1,1,0],[1,-1,-1,0],[-1,1,1,0],[-1,1,-1,0],[-1,-1,1,0],[-1,-1,-1,0]]);__publicField(this,\"p\",[]);// To remove the need for index wrapping, double the permutation table length\n__publicField(this,\"perm\",[]);// A lookup table to traverse the simplex around a given point in 4D.\n// Details can be found where this table is used, in the 4D noise method.\n__publicField(this,\"simplex\",[[0,1,2,3],[0,1,3,2],[0,0,0,0],[0,2,3,1],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,2,3,0],[0,2,1,3],[0,0,0,0],[0,3,1,2],[0,3,2,1],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,3,2,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,2,0,3],[0,0,0,0],[1,3,0,2],[0,0,0,0],[0,0,0,0],[0,0,0,0],[2,3,0,1],[2,3,1,0],[1,0,2,3],[1,0,3,2],[0,0,0,0],[0,0,0,0],[0,0,0,0],[2,0,3,1],[0,0,0,0],[2,1,3,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[2,0,1,3],[0,0,0,0],[0,0,0,0],[0,0,0,0],[3,0,1,2],[3,0,2,1],[0,0,0,0],[3,1,2,0],[2,1,0,3],[0,0,0,0],[0,0,0,0],[0,0,0,0],[3,1,0,2],[0,0,0,0],[3,2,0,1],[3,2,1,0]]);__publicField(this,\"dot\",(g,x,y)=>{return g[0]*x+g[1]*y;});__publicField(this,\"dot3\",(g,x,y,z)=>{return g[0]*x+g[1]*y+g[2]*z;});__publicField(this,\"dot4\",(g,x,y,z,w)=>{return g[0]*x+g[1]*y+g[2]*z+g[3]*w;});__publicField(this,\"noise\",(xin,yin)=>{let n0;let n1;let n2;const F2=0.5*(Math.sqrt(3)-1);const s=(xin+yin)*F2;const i2=Math.floor(xin+s);const j=Math.floor(yin+s);const G2=(3-Math.sqrt(3))/6;const t2=(i2+j)*G2;const X0=i2-t2;const Y0=j-t2;const x0=xin-X0;const y0=yin-Y0;let i1=0;let j1=1;if(x0>y0){i1=1;j1=0;}const x1=x0-i1+G2;const y1=y0-j1+G2;const x2=x0-1+2*G2;const y2=y0-1+2*G2;const ii=i2&255;const jj=j&255;const gi0=this.perm[ii+this.perm[jj]]%12;const gi1=this.perm[ii+i1+this.perm[jj+j1]]%12;const gi2=this.perm[ii+1+this.perm[jj+1]]%12;let t0=0.5-x0*x0-y0*y0;if(t0<0){n0=0;}else{t0*=t0;n0=t0*t0*this.dot(this.grad3[gi0],x0,y0);}let t1=0.5-x1*x1-y1*y1;if(t1<0){n1=0;}else{t1*=t1;n1=t1*t1*this.dot(this.grad3[gi1],x1,y1);}let t22=0.5-x2*x2-y2*y2;if(t22<0){n2=0;}else{t22*=t22;n2=t22*t22*this.dot(this.grad3[gi2],x2,y2);}return 70*(n0+n1+n2);});// 3D simplex noise\n__publicField(this,\"noise3d\",(xin,yin,zin)=>{let n0;let n1;let n2;let n3;const F3=1/3;const s=(xin+yin+zin)*F3;const i2=Math.floor(xin+s);const j=Math.floor(yin+s);const k=Math.floor(zin+s);const G3=1/6;const t2=(i2+j+k)*G3;const X0=i2-t2;const Y0=j-t2;const Z0=k-t2;const x0=xin-X0;const y0=yin-Y0;const z0=zin-Z0;let i1;let j1;let k1;let i22;let j2;let k2;if(x0>=y0){if(y0>=z0){i1=1;j1=0;k1=0;i22=1;j2=1;k2=0;}else if(x0>=z0){i1=1;j1=0;k1=0;i22=1;j2=0;k2=1;}else{i1=0;j1=0;k1=1;i22=1;j2=0;k2=1;}}else{if(y0{const grad4=this.grad4;const simplex=this.simplex;const perm=this.perm;const F4=(Math.sqrt(5)-1)/4;const G4=(5-Math.sqrt(5))/20;let n0;let n1;let n2;let n3;let n4;const s=(x+y+z+w)*F4;const i2=Math.floor(x+s);const j=Math.floor(y+s);const k=Math.floor(z+s);const l=Math.floor(w+s);const t2=(i2+j+k+l)*G4;const X0=i2-t2;const Y0=j-t2;const Z0=k-t2;const W0=l-t2;const x0=x-X0;const y0=y-Y0;const z0=z-Z0;const w0=w-W0;const c1=x0>y0?32:0;const c2=x0>z0?16:0;const c3=y0>z0?8:0;const c4=x0>w0?4:0;const c5=y0>w0?2:0;const c6=z0>w0?1:0;const c=c1+c2+c3+c4+c5+c6;let i1;let j1;let k1;let l1;let i22;let j2;let k2;let l2;let i3;let j3;let k3;let l3;i1=simplex[c][0]>=3?1:0;j1=simplex[c][1]>=3?1:0;k1=simplex[c][2]>=3?1:0;l1=simplex[c][3]>=3?1:0;i22=simplex[c][0]>=2?1:0;j2=simplex[c][1]>=2?1:0;k2=simplex[c][2]>=2?1:0;l2=simplex[c][3]>=2?1:0;i3=simplex[c][0]>=1?1:0;j3=simplex[c][1]>=1?1:0;k3=simplex[c][2]>=1?1:0;l3=simplex[c][3]>=1?1:0;const x1=x0-i1+G4;const y1=y0-j1+G4;const z1=z0-k1+G4;const w1=w0-l1+G4;const x2=x0-i22+2*G4;const y2=y0-j2+2*G4;const z2=z0-k2+2*G4;const w2=w0-l2+2*G4;const x3=x0-i3+3*G4;const y3=y0-j3+3*G4;const z3=z0-k3+3*G4;const w3=w0-l3+3*G4;const x4=x0-1+4*G4;const y4=y0-1+4*G4;const z4=z0-1+4*G4;const w4=w0-1+4*G4;const ii=i2&255;const jj=j&255;const kk=k&255;const ll=l&255;const gi0=perm[ii+perm[jj+perm[kk+perm[ll]]]]%32;const gi1=perm[ii+i1+perm[jj+j1+perm[kk+k1+perm[ll+l1]]]]%32;const gi2=perm[ii+i22+perm[jj+j2+perm[kk+k2+perm[ll+l2]]]]%32;const gi3=perm[ii+i3+perm[jj+j3+perm[kk+k3+perm[ll+l3]]]]%32;const gi4=perm[ii+1+perm[jj+1+perm[kk+1+perm[ll+1]]]]%32;let t0=0.6-x0*x0-y0*y0-z0*z0-w0*w0;if(t0<0){n0=0;}else{t0*=t0;n0=t0*t0*this.dot4(grad4[gi0],x0,y0,z0,w0);}let t1=0.6-x1*x1-y1*y1-z1*z1-w1*w1;if(t1<0){n1=0;}else{t1*=t1;n1=t1*t1*this.dot4(grad4[gi1],x1,y1,z1,w1);}let t22=0.6-x2*x2-y2*y2-z2*z2-w2*w2;if(t22<0){n2=0;}else{t22*=t22;n2=t22*t22*this.dot4(grad4[gi2],x2,y2,z2,w2);}let t3=0.6-x3*x3-y3*y3-z3*z3-w3*w3;if(t3<0){n3=0;}else{t3*=t3;n3=t3*t3*this.dot4(grad4[gi3],x3,y3,z3,w3);}let t4=0.6-x4*x4-y4*y4-z4*z4-w4*w4;if(t4<0){n4=0;}else{t4*=t4;n4=t4*t4*this.dot4(grad4[gi4],x4,y4,z4,w4);}return 27*(n0+n1+n2+n3+n4);});for(let i2=0;i2<256;i2++){this.p[i2]=Math.floor(r.random()*256);}for(let i2=0;i2<512;i2++){this.perm[i2]=this.p[i2&255];}}}const _LightningStrike=class extends BufferGeometry{constructor(rayParameters={}){super();this.isLightningStrike=true;this.type=\"LightningStrike\";this.init(_LightningStrike.copyParameters(rayParameters,rayParameters));this.createMesh();}static createRandomGenerator(){const numSeeds=2053;const seeds=[];for(let i2=0;i2this.subrays[0].beginVanishingTime){this.state=_LightningStrike.RAY_VANISHING;}else{this.state=_LightningStrike.RAY_STEADY;}this.visible=true;}else{this.visible=false;if(time=segment.fraction0*subray.propagationTimeFactor){scope.createPrism(segment);scope.onDecideSubrayCreation(segment,scope);}}else if(time=this.currentSubray.maxIterations){this.currentSegmentCallback(segment);return;}this.forwards.subVectors(segment.pos1,segment.pos0);let lForwards=this.forwards.length();if(lForwards<1e-6){this.forwards.set(0,0,0.01);lForwards=this.forwards.length();}const middleRadius=(segment.radius0+segment.radius1)*0.5;const middleFraction=(segment.fraction0+segment.fraction1)*0.5;const timeDimension=this.time*this.currentSubray.timeScale*Math.pow(2,segment.iteration);this.middlePos.lerpVectors(segment.pos0,segment.pos1,0.5);this.middleLinPos.lerpVectors(segment.linPos0,segment.linPos1,0.5);const p=this.middleLinPos;this.newPos.set(this.simplexX.noise4d(p.x,p.y,p.z,timeDimension),this.simplexY.noise4d(p.x,p.y,p.z,timeDimension),this.simplexZ.noise4d(p.x,p.y,p.z,timeDimension));this.newPos.multiplyScalar(segment.positionVariationFactor*lForwards);this.newPos.add(this.middlePos);const newSegment1=this.getNewSegment();newSegment1.pos0.copy(segment.pos0);newSegment1.pos1.copy(this.newPos);newSegment1.linPos0.copy(segment.linPos0);newSegment1.linPos1.copy(this.middleLinPos);newSegment1.up0.copy(segment.up0);newSegment1.up1.copy(segment.up1);newSegment1.radius0=segment.radius0;newSegment1.radius1=middleRadius;newSegment1.fraction0=segment.fraction0;newSegment1.fraction1=middleFraction;newSegment1.positionVariationFactor=segment.positionVariationFactor*this.currentSubray.roughness;newSegment1.iteration=segment.iteration+1;const newSegment2=this.getNewSegment();newSegment2.pos0.copy(this.newPos);newSegment2.pos1.copy(segment.pos1);newSegment2.linPos0.copy(this.middleLinPos);newSegment2.linPos1.copy(segment.linPos1);this.cross1.crossVectors(segment.up0,this.forwards.normalize());newSegment2.up0.crossVectors(this.forwards,this.cross1).normalize();newSegment2.up1.copy(segment.up1);newSegment2.radius0=middleRadius;newSegment2.radius1=segment.radius1;newSegment2.fraction0=middleFraction;newSegment2.fraction1=segment.fraction1;newSegment2.positionVariationFactor=segment.positionVariationFactor*this.currentSubray.roughness;newSegment2.iteration=segment.iteration+1;this.fractalRayRecursive(newSegment1);this.fractalRayRecursive(newSegment2);}createPrism(segment){this.forwardsFill.subVectors(segment.pos1,segment.pos0).normalize();if(this.isInitialSegment){this.currentCreateTriangleVertices(segment.pos0,segment.up0,this.forwardsFill,segment.radius0,0);this.isInitialSegment=false;}this.currentCreateTriangleVertices(segment.pos1,segment.up0,this.forwardsFill,segment.radius1,segment.fraction1);this.createPrismFaces();}createTriangleVerticesWithoutUVs(pos,up,forwards,radius){this.side.crossVectors(up,forwards).multiplyScalar(radius*_LightningStrike.COS30DEG);this.down.copy(up).multiplyScalar(-radius*_LightningStrike.SIN30DEG);const p=this.vPos;const v=this.vertices;p.copy(pos).sub(this.side).add(this.down);v[this.currentCoordinate++]=p.x;v[this.currentCoordinate++]=p.y;v[this.currentCoordinate++]=p.z;p.copy(pos).add(this.side).add(this.down);v[this.currentCoordinate++]=p.x;v[this.currentCoordinate++]=p.y;v[this.currentCoordinate++]=p.z;p.copy(up).multiplyScalar(radius).add(pos);v[this.currentCoordinate++]=p.x;v[this.currentCoordinate++]=p.y;v[this.currentCoordinate++]=p.z;this.currentVertex+=3;}createTriangleVerticesWithUVs(pos,up,forwards,radius,u){this.side.crossVectors(up,forwards).multiplyScalar(radius*_LightningStrike.COS30DEG);this.down.copy(up).multiplyScalar(-radius*_LightningStrike.SIN30DEG);const p=this.vPos;const v=this.vertices;const uv=this.uvs;p.copy(pos).sub(this.side).add(this.down);v[this.currentCoordinate++]=p.x;v[this.currentCoordinate++]=p.y;v[this.currentCoordinate++]=p.z;uv[this.currentUVCoordinate++]=u;uv[this.currentUVCoordinate++]=0;p.copy(pos).add(this.side).add(this.down);v[this.currentCoordinate++]=p.x;v[this.currentCoordinate++]=p.y;v[this.currentCoordinate++]=p.z;uv[this.currentUVCoordinate++]=u;uv[this.currentUVCoordinate++]=0.5;p.copy(up).multiplyScalar(radius).add(pos);v[this.currentCoordinate++]=p.x;v[this.currentCoordinate++]=p.y;v[this.currentCoordinate++]=p.z;uv[this.currentUVCoordinate++]=u;uv[this.currentUVCoordinate++]=1;this.currentVertex+=3;}createPrismFaces(vertex){const indices=this.indices;vertex=this.currentVertex-6;indices[this.currentIndex++]=vertex+1;indices[this.currentIndex++]=vertex+2;indices[this.currentIndex++]=vertex+5;indices[this.currentIndex++]=vertex+1;indices[this.currentIndex++]=vertex+5;indices[this.currentIndex++]=vertex+4;indices[this.currentIndex++]=vertex+0;indices[this.currentIndex++]=vertex+1;indices[this.currentIndex++]=vertex+4;indices[this.currentIndex++]=vertex+0;indices[this.currentIndex++]=vertex+4;indices[this.currentIndex++]=vertex+3;indices[this.currentIndex++]=vertex+2;indices[this.currentIndex++]=vertex+0;indices[this.currentIndex++]=vertex+3;indices[this.currentIndex++]=vertex+2;indices[this.currentIndex++]=vertex+3;indices[this.currentIndex++]=vertex+5;}createDefaultSubrayCreationCallbacks(){const random1=this.randomGenerator.random;this.onDecideSubrayCreation=function(segment,lightningStrike){const subray=lightningStrike.currentSubray;const period=lightningStrike.rayParameters.subrayPeriod;const dutyCycle=lightningStrike.rayParameters.subrayDutyCycle;const phase0=lightningStrike.rayParameters.isEternal&&subray.recursion==0?-random1()*period:MathUtils.lerp(subray.birthTime,subray.endPropagationTime,segment.fraction0)-random1()*period;const phase=lightningStrike.time-phase0;const currentCycle=Math.floor(phase/period);const childSubraySeed=random1()*(currentCycle+1);const isActive=phase%period<=dutyCycle*period;let probability=0;if(isActive){probability=lightningStrike.subrayProbability;}if(subray.recursion=this.nextLightningTime){const lightningMesh=this.deadLightningsMeshes.pop();if(lightningMesh){const lightningParams1=LightningStrike.copyParameters(lightningMesh.geometry.rayParameters,this.lightningParameters);lightningParams1.birthTime=time;lightningParams1.deathTime=time+MathUtils.lerp(this.stormParams.lightningMinDuration,this.stormParams.lightningMaxDuration,Math.random());this.onRayPosition(lightningParams1.sourceOffset,lightningParams1.destOffset);lightningParams1.noiseSeed=Math.random();this.add(lightningMesh);this.lightningsMeshes.push(lightningMesh);}this.nextLightningTime=this.getNextLightningTime(time);}let i2=0,il=this.lightningsMeshes.length;while(i2prevState){if(this.onLightningDown){this.onLightningDown(lightning);}}if(lightning.state===LightningStrike.RAY_EXTINGUISHED){this.lightningsMeshes.splice(this.lightningsMeshes.indexOf(mesh),1);this.deadLightningsMeshes.push(mesh);this.remove(mesh);il--;}else{i2++;}}}getNextLightningTime(currentTime){return currentTime+MathUtils.lerp(this.stormParams.lightningMinPeriod,this.stormParams.lightningMaxPeriod,Math.random())/(this.stormParams.maxLightnings+1);}copy(source,recursive){super.copy(source,recursive);this.stormParams.size=source.stormParams.size;this.stormParams.minHeight=source.stormParams.minHeight;this.stormParams.maxHeight=source.stormParams.maxHeight;this.stormParams.maxSlope=source.stormParams.maxSlope;this.stormParams.maxLightnings=source.stormParams.maxLightnings;this.stormParams.lightningMinPeriod=source.stormParams.lightningMinPeriod;this.stormParams.lightningMaxPeriod=source.stormParams.lightningMaxPeriod;this.stormParams.lightningMinDuration=source.stormParams.lightningMinDuration;this.stormParams.lightningMaxDuration=source.stormParams.lightningMaxDuration;this.lightningParameters=LightningStrike.copyParameters({},source.lightningParameters);this.lightningMaterial=source.stormParams.lightningMaterial;this.onLightningDown=source.onLightningDown;return this;}clone(){return new this.constructor(this.stormParams).copy(this);}}class ReflectorRTT extends Reflector{constructor(geometry2,options){super(geometry2,options);this.geometry.setDrawRange(0,0);}}const _ReflectorForSSRPass=class extends Mesh{constructor(geometry2,options={}){super(geometry2);this.isReflectorForSSRPass=true;this.type=\"ReflectorForSSRPass\";const scope=this;const color=options.color!==void 0?new Color(options.color):new Color(8355711);const textureWidth=options.textureWidth||512;const textureHeight=options.textureHeight||512;const clipBias=options.clipBias||0;const shader=options.shader||_ReflectorForSSRPass.ReflectorShader;const useDepthTexture=options.useDepthTexture===true;const yAxis2=new Vector3(0,1,0);const vecTemp0=new Vector3();const vecTemp1=new Vector3();scope.needsUpdate=false;scope.maxDistance=_ReflectorForSSRPass.ReflectorShader.uniforms.maxDistance.value;scope.opacity=_ReflectorForSSRPass.ReflectorShader.uniforms.opacity.value;scope.color=color;scope.resolution=options.resolution||new Vector2(window.innerWidth,window.innerHeight);scope._distanceAttenuation=_ReflectorForSSRPass.ReflectorShader.defines.DISTANCE_ATTENUATION;Object.defineProperty(scope,\"distanceAttenuation\",{get(){return scope._distanceAttenuation;},set(val){if(scope._distanceAttenuation===val)return;scope._distanceAttenuation=val;scope.material.defines.DISTANCE_ATTENUATION=val;scope.material.needsUpdate=true;}});scope._fresnel=_ReflectorForSSRPass.ReflectorShader.defines.FRESNEL;Object.defineProperty(scope,\"fresnel\",{get(){return scope._fresnel;},set(val){if(scope._fresnel===val)return;scope._fresnel=val;scope.material.defines.FRESNEL=val;scope.material.needsUpdate=true;}});const normal=new Vector3();const reflectorWorldPosition=new Vector3();const cameraWorldPosition=new Vector3();const rotationMatrix2=new Matrix4();const lookAtPosition=new Vector3(0,0,-1);const view=new Vector3();const target=new Vector3();const textureMatrix=new Matrix4();const virtualCamera=new PerspectiveCamera();let depthTexture;if(useDepthTexture){depthTexture=new DepthTexture();depthTexture.type=UnsignedShortType;depthTexture.minFilter=NearestFilter;depthTexture.magFilter=NearestFilter;}const parameters={depthTexture:useDepthTexture?depthTexture:null,type:HalfFloatType};const renderTarget=new WebGLRenderTarget(textureWidth,textureHeight,parameters);const material2=new ShaderMaterial({transparent:useDepthTexture,defines:Object.assign({},_ReflectorForSSRPass.ReflectorShader.defines,{useDepthTexture}),uniforms:UniformsUtils.clone(shader.uniforms),fragmentShader:shader.fragmentShader,vertexShader:shader.vertexShader});material2.uniforms[\"tDiffuse\"].value=renderTarget.texture;material2.uniforms[\"color\"].value=scope.color;material2.uniforms[\"textureMatrix\"].value=textureMatrix;if(useDepthTexture){material2.uniforms[\"tDepth\"].value=renderTarget.depthTexture;}this.material=material2;const globalPlane=new Plane(new Vector3(0,1,0),clipBias);const globalPlanes=[globalPlane];this.doRender=function(renderer,scene,camera){material2.uniforms[\"maxDistance\"].value=scope.maxDistance;material2.uniforms[\"color\"].value=scope.color;material2.uniforms[\"opacity\"].value=scope.opacity;vecTemp0.copy(camera.position).normalize();vecTemp1.copy(vecTemp0).reflect(yAxis2);material2.uniforms[\"fresnelCoe\"].value=(vecTemp0.dot(vecTemp1)+1)/2;reflectorWorldPosition.setFromMatrixPosition(scope.matrixWorld);cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld);rotationMatrix2.extractRotation(scope.matrixWorld);normal.set(0,0,1);normal.applyMatrix4(rotationMatrix2);view.subVectors(reflectorWorldPosition,cameraWorldPosition);if(view.dot(normal)>0)return;view.reflect(normal).negate();view.add(reflectorWorldPosition);rotationMatrix2.extractRotation(camera.matrixWorld);lookAtPosition.set(0,0,-1);lookAtPosition.applyMatrix4(rotationMatrix2);lookAtPosition.add(cameraWorldPosition);target.subVectors(reflectorWorldPosition,lookAtPosition);target.reflect(normal).negate();target.add(reflectorWorldPosition);virtualCamera.position.copy(view);virtualCamera.up.set(0,1,0);virtualCamera.up.applyMatrix4(rotationMatrix2);virtualCamera.up.reflect(normal);virtualCamera.lookAt(target);virtualCamera.far=camera.far;virtualCamera.updateMatrixWorld();virtualCamera.projectionMatrix.copy(camera.projectionMatrix);material2.uniforms[\"virtualCameraNear\"].value=camera.near;material2.uniforms[\"virtualCameraFar\"].value=camera.far;material2.uniforms[\"virtualCameraMatrixWorld\"].value=virtualCamera.matrixWorld;material2.uniforms[\"virtualCameraProjectionMatrix\"].value=camera.projectionMatrix;material2.uniforms[\"virtualCameraProjectionMatrixInverse\"].value=camera.projectionMatrixInverse;material2.uniforms[\"resolution\"].value=scope.resolution;textureMatrix.set(0.5,0,0,0.5,0,0.5,0,0.5,0,0,0.5,0.5,0,0,0,1);textureMatrix.multiply(virtualCamera.projectionMatrix);textureMatrix.multiply(virtualCamera.matrixWorldInverse);textureMatrix.multiply(scope.matrixWorld);const currentRenderTarget=renderer.getRenderTarget();const currentXrEnabled=renderer.xr.enabled;const currentShadowAutoUpdate=renderer.shadowMap.autoUpdate;const currentClippingPlanes=renderer.clippingPlanes;renderer.xr.enabled=false;renderer.shadowMap.autoUpdate=false;renderer.clippingPlanes=globalPlanes;renderer.setRenderTarget(renderTarget);renderer.state.buffers.depth.setMask(true);if(renderer.autoClear===false)renderer.clear();renderer.render(scene,virtualCamera);renderer.xr.enabled=currentXrEnabled;renderer.shadowMap.autoUpdate=currentShadowAutoUpdate;renderer.clippingPlanes=currentClippingPlanes;renderer.setRenderTarget(currentRenderTarget);const viewport=camera.viewport;if(viewport!==void 0){renderer.state.viewport(viewport);}};this.getRenderTarget=function(){return renderTarget;};}};let ReflectorForSSRPass=_ReflectorForSSRPass;/*@__PURE__*/__publicField(ReflectorForSSRPass,\"ReflectorShader\",{defines:{DISTANCE_ATTENUATION:true,FRESNEL:true},uniforms:{color:{value:null},tDiffuse:{value:null},tDepth:{value:null},textureMatrix:{value:/*@__PURE__*/new Matrix4()},maxDistance:{value:180},opacity:{value:0.5},fresnelCoe:{value:null},virtualCameraNear:{value:null},virtualCameraFar:{value:null},virtualCameraProjectionMatrix:{value:/*@__PURE__*/new Matrix4()},virtualCameraMatrixWorld:{value:/*@__PURE__*/new Matrix4()},virtualCameraProjectionMatrixInverse:{value:/*@__PURE__*/new Matrix4()},resolution:{value:/*@__PURE__*/new Vector2()}},vertexShader:/* glsl */`\n\t\tuniform mat4 textureMatrix;\n\t\tvarying vec4 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = textureMatrix * vec4( position, 1.0 );\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,fragmentShader:/* glsl */`\n\t\tuniform vec3 color;\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform sampler2D tDepth;\n\t\tuniform float maxDistance;\n\t\tuniform float opacity;\n\t\tuniform float fresnelCoe;\n\t\tuniform float virtualCameraNear;\n\t\tuniform float virtualCameraFar;\n\t\tuniform mat4 virtualCameraProjectionMatrix;\n\t\tuniform mat4 virtualCameraProjectionMatrixInverse;\n\t\tuniform mat4 virtualCameraMatrixWorld;\n\t\tuniform vec2 resolution;\n\t\tvarying vec4 vUv;\n\t\t#include \n\t\tfloat blendOverlay( float base, float blend ) {\n\t\t\treturn( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );\n\t\t}\n\t\tvec3 blendOverlay( vec3 base, vec3 blend ) {\n\t\t\treturn vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ), blendOverlay( base.b, blend.b ) );\n\t\t}\n\t\tfloat getDepth( const in vec2 uv ) {\n\t\t\treturn texture2D( tDepth, uv ).x;\n\t\t}\n\t\tfloat getViewZ( const in float depth ) {\n\t\t\treturn perspectiveDepthToViewZ( depth, virtualCameraNear, virtualCameraFar );\n\t\t}\n\t\tvec3 getViewPosition( const in vec2 uv, const in float depth/*clip space*/, const in float clipW ) {\n\t\t\tvec4 clipPosition = vec4( ( vec3( uv, depth ) - 0.5 ) * 2.0, 1.0 );//ndc\n\t\t\tclipPosition *= clipW; //clip\n\t\t\treturn ( virtualCameraProjectionMatrixInverse * clipPosition ).xyz;//view\n\t\t}\n\t\tvoid main() {\n\t\t\tvec4 base = texture2DProj( tDiffuse, vUv );\n\t\t\t#ifdef useDepthTexture\n\t\t\t\tvec2 uv=(gl_FragCoord.xy-.5)/resolution.xy;\n\t\t\t\tuv.x=1.-uv.x;\n\t\t\t\tfloat depth = texture2DProj( tDepth, vUv ).r;\n\t\t\t\tfloat viewZ = getViewZ( depth );\n\t\t\t\tfloat clipW = virtualCameraProjectionMatrix[2][3] * viewZ+virtualCameraProjectionMatrix[3][3];\n\t\t\t\tvec3 viewPosition=getViewPosition( uv, depth, clipW );\n\t\t\t\tvec3 worldPosition=(virtualCameraMatrixWorld*vec4(viewPosition,1)).xyz;\n\t\t\t\tif(worldPosition.y>maxDistance) discard;\n\t\t\t\tfloat op=opacity;\n\t\t\t\t#ifdef DISTANCE_ATTENUATION\n\t\t\t\t\tfloat ratio=1.-(worldPosition.y/maxDistance);\n\t\t\t\t\tfloat attenuation=ratio*ratio;\n\t\t\t\t\top=opacity*attenuation;\n\t\t\t\t#endif\n\t\t\t\t#ifdef FRESNEL\n\t\t\t\t\top*=fresnelCoe;\n\t\t\t\t#endif\n\t\t\t\tgl_FragColor = vec4( blendOverlay( base.rgb, color ), op );\n\t\t\t#else\n\t\t\t\tgl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );\n\t\t\t#endif\n\t\t}\n\t`});const SkyShader={uniforms:{turbidity:{value:2},rayleigh:{value:1},mieCoefficient:{value:5e-3},mieDirectionalG:{value:0.8},sunPosition:{value:/*@__PURE__*/new Vector3()},up:{value:/*@__PURE__*/new Vector3(0,1,0)}},vertexShader:/* glsl */`\n uniform vec3 sunPosition;\n uniform float rayleigh;\n uniform float turbidity;\n uniform float mieCoefficient;\n uniform vec3 up;\n\n varying vec3 vWorldPosition;\n varying vec3 vSunDirection;\n varying float vSunfade;\n varying vec3 vBetaR;\n varying vec3 vBetaM;\n varying float vSunE;\n\n // constants for atmospheric scattering\n const float e = 2.71828182845904523536028747135266249775724709369995957;\n const float pi = 3.141592653589793238462643383279502884197169;\n\n // wavelength of used primaries, according to preetham\n const vec3 lambda = vec3( 680E-9, 550E-9, 450E-9 );\n // this pre-calcuation replaces older TotalRayleigh(vec3 lambda) function:\n // (8.0 * pow(pi, 3.0) * pow(pow(n, 2.0) - 1.0, 2.0) * (6.0 + 3.0 * pn)) / (3.0 * N * pow(lambda, vec3(4.0)) * (6.0 - 7.0 * pn))\n const vec3 totalRayleigh = vec3( 5.804542996261093E-6, 1.3562911419845635E-5, 3.0265902468824876E-5 );\n\n // mie stuff\n // K coefficient for the primaries\n const float v = 4.0;\n const vec3 K = vec3( 0.686, 0.678, 0.666 );\n // MieConst = pi * pow( ( 2.0 * pi ) / lambda, vec3( v - 2.0 ) ) * K\n const vec3 MieConst = vec3( 1.8399918514433978E14, 2.7798023919660528E14, 4.0790479543861094E14 );\n\n // earth shadow hack\n // cutoffAngle = pi / 1.95;\n const float cutoffAngle = 1.6110731556870734;\n const float steepness = 1.5;\n const float EE = 1000.0;\n\n float sunIntensity( float zenithAngleCos ) {\n zenithAngleCos = clamp( zenithAngleCos, -1.0, 1.0 );\n return EE * max( 0.0, 1.0 - pow( e, -( ( cutoffAngle - acos( zenithAngleCos ) ) / steepness ) ) );\n }\n\n vec3 totalMie( float T ) {\n float c = ( 0.2 * T ) * 10E-18;\n return 0.434 * c * MieConst;\n }\n\n void main() {\n\n vec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n vWorldPosition = worldPosition.xyz;\n\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n gl_Position.z = gl_Position.w; // set z to camera.far\n\n vSunDirection = normalize( sunPosition );\n\n vSunE = sunIntensity( dot( vSunDirection, up ) );\n\n vSunfade = 1.0 - clamp( 1.0 - exp( ( sunPosition.y / 450000.0 ) ), 0.0, 1.0 );\n\n float rayleighCoefficient = rayleigh - ( 1.0 * ( 1.0 - vSunfade ) );\n\n // extinction (absorbtion + out scattering)\n // rayleigh coefficients\n vBetaR = totalRayleigh * rayleighCoefficient;\n\n // mie coefficients\n vBetaM = totalMie( turbidity ) * mieCoefficient;\n\n }\n `,fragmentShader:/* glsl */`\n varying vec3 vWorldPosition;\n varying vec3 vSunDirection;\n varying float vSunfade;\n varying vec3 vBetaR;\n varying vec3 vBetaM;\n varying float vSunE;\n\n uniform float mieDirectionalG;\n uniform vec3 up;\n\n const vec3 cameraPos = vec3( 0.0, 0.0, 0.0 );\n\n // constants for atmospheric scattering\n const float pi = 3.141592653589793238462643383279502884197169;\n\n const float n = 1.0003; // refractive index of air\n const float N = 2.545E25; // number of molecules per unit volume for air at 288.15K and 1013mb (sea level -45 celsius)\n\n // optical length at zenith for molecules\n const float rayleighZenithLength = 8.4E3;\n const float mieZenithLength = 1.25E3;\n // 66 arc seconds -> degrees, and the cosine of that\n const float sunAngularDiameterCos = 0.999956676946448443553574619906976478926848692873900859324;\n\n // 3.0 / ( 16.0 * pi )\n const float THREE_OVER_SIXTEENPI = 0.05968310365946075;\n // 1.0 / ( 4.0 * pi )\n const float ONE_OVER_FOURPI = 0.07957747154594767;\n\n float rayleighPhase( float cosTheta ) {\n return THREE_OVER_SIXTEENPI * ( 1.0 + pow( cosTheta, 2.0 ) );\n }\n\n float hgPhase( float cosTheta, float g ) {\n float g2 = pow( g, 2.0 );\n float inverse = 1.0 / pow( 1.0 - 2.0 * g * cosTheta + g2, 1.5 );\n return ONE_OVER_FOURPI * ( ( 1.0 - g2 ) * inverse );\n }\n\n void main() {\n\n vec3 direction = normalize( vWorldPosition - cameraPos );\n\n // optical length\n // cutoff angle at 90 to avoid singularity in next formula.\n float zenithAngle = acos( max( 0.0, dot( up, direction ) ) );\n float inverse = 1.0 / ( cos( zenithAngle ) + 0.15 * pow( 93.885 - ( ( zenithAngle * 180.0 ) / pi ), -1.253 ) );\n float sR = rayleighZenithLength * inverse;\n float sM = mieZenithLength * inverse;\n\n // combined extinction factor\n vec3 Fex = exp( -( vBetaR * sR + vBetaM * sM ) );\n\n // in scattering\n float cosTheta = dot( direction, vSunDirection );\n\n float rPhase = rayleighPhase( cosTheta * 0.5 + 0.5 );\n vec3 betaRTheta = vBetaR * rPhase;\n\n float mPhase = hgPhase( cosTheta, mieDirectionalG );\n vec3 betaMTheta = vBetaM * mPhase;\n\n vec3 Lin = pow( vSunE * ( ( betaRTheta + betaMTheta ) / ( vBetaR + vBetaM ) ) * ( 1.0 - Fex ), vec3( 1.5 ) );\n Lin *= mix( vec3( 1.0 ), pow( vSunE * ( ( betaRTheta + betaMTheta ) / ( vBetaR + vBetaM ) ) * Fex, vec3( 1.0 / 2.0 ) ), clamp( pow( 1.0 - dot( up, vSunDirection ), 5.0 ), 0.0, 1.0 ) );\n\n // nightsky\n float theta = acos( direction.y ); // elevation --> y-axis, [-pi/2, pi/2]\n float phi = atan( direction.z, direction.x ); // azimuth --> x-axis [-pi/2, pi/2]\n vec2 uv = vec2( phi, theta ) / vec2( 2.0 * pi, pi ) + vec2( 0.5, 0.0 );\n vec3 L0 = vec3( 0.1 ) * Fex;\n\n // composition + solar disc\n float sundisk = smoothstep( sunAngularDiameterCos, sunAngularDiameterCos + 0.00002, cosTheta );\n L0 += ( vSunE * 19000.0 * Fex ) * sundisk;\n\n vec3 texColor = ( Lin + L0 ) * 0.04 + vec3( 0.0, 0.0003, 0.00075 );\n\n vec3 retColor = pow( texColor, vec3( 1.0 / ( 1.2 + ( 1.2 * vSunfade ) ) ) );\n\n gl_FragColor = vec4( retColor, 1.0 );\n\n #include \n #include <${version>=154?\"colorspace_fragment\":\"encodings_fragment\"}>\n\n }\n `};const material=/*@__PURE__*/new ShaderMaterial({name:\"SkyShader\",fragmentShader:SkyShader.fragmentShader,vertexShader:SkyShader.vertexShader,uniforms:/*@__PURE__*/UniformsUtils.clone(SkyShader.uniforms),side:BackSide,depthWrite:false});class Sky extends Mesh{constructor(){super(new BoxGeometry(1,1,1),material);}}/*@__PURE__*/__publicField(Sky,\"SkyShader\",SkyShader);/*@__PURE__*/__publicField(Sky,\"material\",material);const _Water2=class extends Mesh{constructor(geometry2,options={}){super(geometry2);this.isWater=true;this.type=\"Water\";const scope=this;const color=options.color!==void 0?new Color(options.color):new Color(16777215);const textureWidth=options.textureWidth||512;const textureHeight=options.textureHeight||512;const clipBias=options.clipBias||0;const flowDirection=options.flowDirection||new Vector2(1,0);const flowSpeed=options.flowSpeed||0.03;const reflectivity=options.reflectivity||0.02;const scale=options.scale||1;const shader=options.shader||_Water2.WaterShader;const encoding=options.encoding!==void 0?options.encoding:3e3;const flowMap=options.flowMap||void 0;const normalMap0=options.normalMap0;const normalMap1=options.normalMap1;const cycle=0.15;const halfCycle=cycle*0.5;const textureMatrix=new Matrix4();const clock=new Clock();if(Reflector===void 0){console.error(\"THREE.Water: Required component Reflector not found.\");return;}if(Refractor===void 0){console.error(\"THREE.Water: Required component Refractor not found.\");return;}const reflector=new Reflector(geometry2,{textureWidth,textureHeight,clipBias,encoding});const refractor=new Refractor(geometry2,{textureWidth,textureHeight,clipBias,encoding});reflector.matrixAutoUpdate=false;refractor.matrixAutoUpdate=false;this.material=new ShaderMaterial({uniforms:UniformsUtils.merge([UniformsLib[\"fog\"],shader.uniforms]),vertexShader:shader.vertexShader,fragmentShader:shader.fragmentShader,transparent:true,fog:true});if(flowMap!==void 0){this.material.defines.USE_FLOWMAP=\"\";this.material.uniforms[\"tFlowMap\"]={type:\"t\",value:flowMap};}else{this.material.uniforms[\"flowDirection\"]={type:\"v2\",value:flowDirection};}normalMap0.wrapS=normalMap0.wrapT=RepeatWrapping;normalMap1.wrapS=normalMap1.wrapT=RepeatWrapping;this.material.uniforms[\"tReflectionMap\"].value=reflector.getRenderTarget().texture;this.material.uniforms[\"tRefractionMap\"].value=refractor.getRenderTarget().texture;this.material.uniforms[\"tNormalMap0\"].value=normalMap0;this.material.uniforms[\"tNormalMap1\"].value=normalMap1;this.material.uniforms[\"color\"].value=color;this.material.uniforms[\"reflectivity\"].value=reflectivity;this.material.uniforms[\"textureMatrix\"].value=textureMatrix;this.material.uniforms[\"config\"].value.x=0;this.material.uniforms[\"config\"].value.y=halfCycle;this.material.uniforms[\"config\"].value.z=halfCycle;this.material.uniforms[\"config\"].value.w=scale;function updateTextureMatrix(camera){textureMatrix.set(0.5,0,0,0.5,0,0.5,0,0.5,0,0,0.5,0.5,0,0,0,1);textureMatrix.multiply(camera.projectionMatrix);textureMatrix.multiply(camera.matrixWorldInverse);textureMatrix.multiply(scope.matrixWorld);}function updateFlow(){const delta=clock.getDelta();const config=scope.material.uniforms[\"config\"];config.value.x+=flowSpeed*delta;config.value.y=config.value.x+halfCycle;if(config.value.x>=cycle){config.value.x=0;config.value.y=halfCycle;}else if(config.value.y>=cycle){config.value.y=config.value.y-cycle;}}this.onBeforeRender=function(renderer,scene,camera){updateTextureMatrix(camera);updateFlow();scope.visible=false;reflector.matrixWorld.copy(scope.matrixWorld);refractor.matrixWorld.copy(scope.matrixWorld);reflector.onBeforeRender(renderer,scene,camera);refractor.onBeforeRender(renderer,scene,camera);scope.visible=true;};}};let Water2=_Water2;/*@__PURE__*/__publicField(Water2,\"WaterShader\",{uniforms:{color:{value:null},reflectivity:{value:0},tReflectionMap:{value:null},tRefractionMap:{value:null},tNormalMap0:{value:null},tNormalMap1:{value:null},textureMatrix:{value:null},config:{value:/*@__PURE__*/new Vector4()}},vertexShader:/* glsl */`\n\n\t\t#include \n\t\t#include \n\t\t#include \n\n\t\tuniform mat4 textureMatrix;\n\n\t\tvarying vec4 vCoord;\n\t\tvarying vec2 vUv;\n\t\tvarying vec3 vToEye;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tvCoord = textureMatrix * vec4( position, 1.0 );\n\n\t\t\tvec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n\t\t\tvToEye = cameraPosition - worldPosition.xyz;\n\n\t\t\tvec4 mvPosition = viewMatrix * worldPosition; // used in fog_vertex\n\t\t\tgl_Position = projectionMatrix * mvPosition;\n\n\t\t\t#include \n\t\t\t#include \n\n\t\t}`,fragmentShader:/* glsl */`\n\n\t\t#include \n\t\t#include \n\t\t#include \n\n\t\tuniform sampler2D tReflectionMap;\n\t\tuniform sampler2D tRefractionMap;\n\t\tuniform sampler2D tNormalMap0;\n\t\tuniform sampler2D tNormalMap1;\n\n\t\t#ifdef USE_FLOWMAP\n\t\t\tuniform sampler2D tFlowMap;\n\t\t#else\n\t\t\tuniform vec2 flowDirection;\n\t\t#endif\n\n\t\tuniform vec3 color;\n\t\tuniform float reflectivity;\n\t\tuniform vec4 config;\n\n\t\tvarying vec4 vCoord;\n\t\tvarying vec2 vUv;\n\t\tvarying vec3 vToEye;\n\n\t\tvoid main() {\n\n\t\t\t#include \n\n\t\t\tfloat flowMapOffset0 = config.x;\n\t\t\tfloat flowMapOffset1 = config.y;\n\t\t\tfloat halfCycle = config.z;\n\t\t\tfloat scale = config.w;\n\n\t\t\tvec3 toEye = normalize( vToEye );\n\n\t\t\t// determine flow direction\n\t\t\tvec2 flow;\n\t\t\t#ifdef USE_FLOWMAP\n\t\t\t\tflow = texture2D( tFlowMap, vUv ).rg * 2.0 - 1.0;\n\t\t\t#else\n\t\t\t\tflow = flowDirection;\n\t\t\t#endif\n\t\t\tflow.x *= - 1.0;\n\n\t\t\t// sample normal maps (distort uvs with flowdata)\n\t\t\tvec4 normalColor0 = texture2D( tNormalMap0, ( vUv * scale ) + flow * flowMapOffset0 );\n\t\t\tvec4 normalColor1 = texture2D( tNormalMap1, ( vUv * scale ) + flow * flowMapOffset1 );\n\n\t\t\t// linear interpolate to get the final normal color\n\t\t\tfloat flowLerp = abs( halfCycle - flowMapOffset0 ) / halfCycle;\n\t\t\tvec4 normalColor = mix( normalColor0, normalColor1, flowLerp );\n\n\t\t\t// calculate normal vector\n\t\t\tvec3 normal = normalize( vec3( normalColor.r * 2.0 - 1.0, normalColor.b, normalColor.g * 2.0 - 1.0 ) );\n\n\t\t\t// calculate the fresnel term to blend reflection and refraction maps\n\t\t\tfloat theta = max( dot( toEye, normal ), 0.0 );\n\t\t\tfloat reflectance = reflectivity + ( 1.0 - reflectivity ) * pow( ( 1.0 - theta ), 5.0 );\n\n\t\t\t// calculate final uv coords\n\t\t\tvec3 coord = vCoord.xyz / vCoord.w;\n\t\t\tvec2 uv = coord.xy + coord.z * normal.xz * 0.05;\n\n\t\t\tvec4 reflectColor = texture2D( tReflectionMap, vec2( 1.0 - uv.x, uv.y ) );\n\t\t\tvec4 refractColor = texture2D( tRefractionMap, uv );\n\n\t\t\t// multiply water color with the mix of both textures\n\t\t\tgl_FragColor = vec4( color, 1.0 ) * mix( refractColor, reflectColor, reflectance );\n\n\t\t\t#include \n\t\t\t#include <${version>=154?\"colorspace_fragment\":\"encodings_fragment\"}>\n\t\t\t#include \n\n\t\t}`});const isCubeTexture=def=>def&&def.isCubeTexture;class GroundProjectedEnv extends Mesh{constructor(texture,options){var _a2,_b2;const isCubeMap=isCubeTexture(texture);const w=(_b2=isCubeMap?(_a2=texture.image[0])==null?void 0:_a2.width:texture.image.width)!=null?_b2:1024;const cubeSize=w/4;const _lodMax=Math.floor(Math.log2(cubeSize));const _cubeSize=Math.pow(2,_lodMax);const width=3*Math.max(_cubeSize,16*7);const height=4*_cubeSize;const defines=[isCubeMap?\"#define ENVMAP_TYPE_CUBE\":\"\",`#define CUBEUV_TEXEL_WIDTH ${1/width}`,`#define CUBEUV_TEXEL_HEIGHT ${1/height}`,`#define CUBEUV_MAX_MIP ${_lodMax}.0`];const vertexShader=/* glsl */`\n varying vec3 vWorldPosition;\n void main() \n {\n vec4 worldPosition = ( modelMatrix * vec4( position, 1.0 ) );\n vWorldPosition = worldPosition.xyz;\n \n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }\n `;const fragmentShader=defines.join(\"\\n\")+/* glsl */`\n #define ENVMAP_TYPE_CUBE_UV\n varying vec3 vWorldPosition;\n uniform float radius;\n uniform float height;\n uniform float angle;\n #ifdef ENVMAP_TYPE_CUBE\n uniform samplerCube map;\n #else\n uniform sampler2D map;\n #endif\n // From: https://www.shadertoy.com/view/4tsBD7\n float diskIntersectWithBackFaceCulling( vec3 ro, vec3 rd, vec3 c, vec3 n, float r ) \n {\n float d = dot ( rd, n );\n \n if( d > 0.0 ) { return 1e6; }\n \n vec3 o = ro - c;\n float t = - dot( n, o ) / d;\n vec3 q = o + rd * t;\n \n return ( dot( q, q ) < r * r ) ? t : 1e6;\n }\n // From: https://www.iquilezles.org/www/articles/intersectors/intersectors.htm\n float sphereIntersect( vec3 ro, vec3 rd, vec3 ce, float ra ) \n {\n vec3 oc = ro - ce;\n float b = dot( oc, rd );\n float c = dot( oc, oc ) - ra * ra;\n float h = b * b - c;\n \n if( h < 0.0 ) { return -1.0; }\n \n h = sqrt( h );\n \n return - b + h;\n }\n vec3 project() \n {\n vec3 p = normalize( vWorldPosition );\n vec3 camPos = cameraPosition;\n camPos.y -= height;\n float intersection = sphereIntersect( camPos, p, vec3( 0.0 ), radius );\n if( intersection > 0.0 ) {\n \n vec3 h = vec3( 0.0, - height, 0.0 );\n float intersection2 = diskIntersectWithBackFaceCulling( camPos, p, h, vec3( 0.0, 1.0, 0.0 ), radius );\n p = ( camPos + min( intersection, intersection2 ) * p ) / radius;\n } else {\n p = vec3( 0.0, 1.0, 0.0 );\n }\n return p;\n }\n #include \n #include \n void main() \n {\n vec3 projectedWorldPosition = project();\n \n #ifdef ENVMAP_TYPE_CUBE\n vec3 outcolor = textureCube( map, projectedWorldPosition ).rgb;\n #else\n vec3 direction = normalize( projectedWorldPosition );\n vec2 uv = equirectUv( direction );\n vec3 outcolor = texture2D( map, uv ).rgb;\n #endif\n gl_FragColor = vec4( outcolor, 1.0 );\n #include \n #include <${parseInt(REVISION.replace(/\\D+/g,\"\"))>=154?\"colorspace_fragment\":\"encodings_fragment\"}>\n }\n `;const uniforms={map:{value:texture},height:{value:(options==null?void 0:options.height)||15},radius:{value:(options==null?void 0:options.radius)||100}};const geometry2=new IcosahedronGeometry(1,16);const material2=new ShaderMaterial({uniforms,fragmentShader,vertexShader,side:DoubleSide});super(geometry2,material2);}set radius(radius){this.material.uniforms.radius.value=radius;}get radius(){return this.material.uniforms.radius.value;}set height(height){this.material.uniforms.height.value=height;}get height(){return this.material.uniforms.height.value;}}const SceneUtils={createMeshesFromInstancedMesh:function(instancedMesh){const group=new Group();const count=instancedMesh.count;const geometry2=instancedMesh.geometry;const material2=instancedMesh.material;for(let i2=0;i20.95){ctx.fillText(index2,a2.x%1*width,(1-a2.y)*height);}ctx.font=\"12px Arial\";ctx.fillStyle=\"rgb( 191, 191, 191 )\";for(let j=0,jl=uvs2.length;j0.95){ctx.fillText(abc[j]+vnum,b2.x%1*width,(1-b2.y)*height);}}}}const hilbert2D=(center2=new Vector3(0,0,0),size2=10,iterations=1,v0=0,v12=1,v2=2,v3=3)=>{const half=size2/2;const vec_s=[new Vector3(center2.x-half,center2.y,center2.z-half),new Vector3(center2.x-half,center2.y,center2.z+half),new Vector3(center2.x+half,center2.y,center2.z+half),new Vector3(center2.x+half,center2.y,center2.z-half)];const vec=[vec_s[v0],vec_s[v12],vec_s[v2],vec_s[v3]];if(0<=--iterations){const tmp=[];Array.prototype.push.apply(tmp,hilbert2D(vec[0],half,iterations,v0,v3,v2,v12));Array.prototype.push.apply(tmp,hilbert2D(vec[1],half,iterations,v0,v12,v2,v3));Array.prototype.push.apply(tmp,hilbert2D(vec[2],half,iterations,v0,v12,v2,v3));Array.prototype.push.apply(tmp,hilbert2D(vec[3],half,iterations,v2,v12,v0,v3));return tmp;}return vec;};const hilbert3D=(center2=new Vector3(0,0,0),size2=10,iterations=1,v0=0,v12=1,v2=2,v3=3,v4=4,v5=5,v6=6,v7=7)=>{const half=size2/2;const vec_s=[new Vector3(center2.x-half,center2.y+half,center2.z-half),new Vector3(center2.x-half,center2.y+half,center2.z+half),new Vector3(center2.x-half,center2.y-half,center2.z+half),new Vector3(center2.x-half,center2.y-half,center2.z-half),new Vector3(center2.x+half,center2.y-half,center2.z-half),new Vector3(center2.x+half,center2.y-half,center2.z+half),new Vector3(center2.x+half,center2.y+half,center2.z+half),new Vector3(center2.x+half,center2.y+half,center2.z-half)];const vec=[vec_s[v0],vec_s[v12],vec_s[v2],vec_s[v3],vec_s[v4],vec_s[v5],vec_s[v6],vec_s[v7]];if(--iterations>=0){const tmp=[];Array.prototype.push.apply(tmp,hilbert3D(vec[0],half,iterations,v0,v3,v4,v7,v6,v5,v2,v12));Array.prototype.push.apply(tmp,hilbert3D(vec[1],half,iterations,v0,v7,v6,v12,v2,v5,v4,v3));Array.prototype.push.apply(tmp,hilbert3D(vec[2],half,iterations,v0,v7,v6,v12,v2,v5,v4,v3));Array.prototype.push.apply(tmp,hilbert3D(vec[3],half,iterations,v2,v3,v0,v12,v6,v7,v4,v5));Array.prototype.push.apply(tmp,hilbert3D(vec[4],half,iterations,v2,v3,v0,v12,v6,v7,v4,v5));Array.prototype.push.apply(tmp,hilbert3D(vec[5],half,iterations,v4,v3,v2,v5,v6,v12,v0,v7));Array.prototype.push.apply(tmp,hilbert3D(vec[6],half,iterations,v4,v3,v2,v5,v6,v12,v0,v7));Array.prototype.push.apply(tmp,hilbert3D(vec[7],half,iterations,v6,v5,v2,v12,v0,v3,v4,v7));return tmp;}return vec;};const gosper=(size2=1)=>{function fractalize(config){let output=\"\";let input=config.axiom;for(let i2=0,il=config.steps;0<=il?i2il;0<=il?i2++:i2--){output=\"\";for(let j=0,jl=input.length;j=1&&height>=1;++mip,width/=2,height/=2){texelSize.set(1/width,1/height);if(mip==0)texelSize.set(0,0);_tempTarget.viewport.set(position.x,position.y,width,height);_tempTarget.scissor.set(position.x,position.y,width,height);this._renderer.setRenderTarget(_tempTarget);this._renderer.render(_mesh,_flatCamera);this._renderer.copyFramebufferToTexture(position,material2.roughnessMap,mip);_mipmapMaterial.uniforms.roughnessMap.value=material2.roughnessMap;}if(roughnessMap!==material2.roughnessMap)roughnessMap.dispose();this._renderer.setRenderTarget(oldTarget);this._renderer.autoClear=autoClear;});__publicField(this,\"dispose\",function(){_mipmapMaterial.dispose();_mesh.geometry.dispose();if(_tempTarget!=null)_tempTarget.dispose();});this._renderer=renderer;this._renderer.compile(_mesh,_flatCamera);}}function _getMipmapMaterial(){var shaderMaterial=new RawShaderMaterial({uniforms:{roughnessMap:{value:null},normalMap:{value:null},texelSize:{value:new Vector2(1,1)}},vertexShader:/* glsl */`\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tattribute vec3 position;\n\t\t\tattribute vec2 uv;\n\n\t\t\tvarying vec2 vUv;\n\n\t\t\tvoid main() {\n\n\t\t\t\tvUv = uv;\n\n\t\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t\t}\n\t\t`,fragmentShader:/* glsl */`\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec2 vUv;\n\n\t\t\tuniform sampler2D roughnessMap;\n\t\t\tuniform sampler2D normalMap;\n\t\t\tuniform vec2 texelSize;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\n\t\t\tvec4 envMapTexelToLinear( vec4 a ) { return a; }\n\n\t\t\t#include \n\n\t\t\tfloat roughnessToVariance( float roughness ) {\n\n\t\t\t\tfloat variance = 0.0;\n\n\t\t\t\tif ( roughness >= r1 ) {\n\n\t\t\t\t\tvariance = ( r0 - roughness ) * ( v1 - v0 ) / ( r0 - r1 ) + v0;\n\n\t\t\t\t} else if ( roughness >= r4 ) {\n\n\t\t\t\t\tvariance = ( r1 - roughness ) * ( v4 - v1 ) / ( r1 - r4 ) + v1;\n\n\t\t\t\t} else if ( roughness >= r5 ) {\n\n\t\t\t\t\tvariance = ( r4 - roughness ) * ( v5 - v4 ) / ( r4 - r5 ) + v4;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfloat roughness2 = roughness * roughness;\n\n\t\t\t\t\tvariance = 1.79 * roughness2 * roughness2;\n\n\t\t\t\t}\n\n\t\t\t\treturn variance;\n\n\t\t\t}\n\n\t\t\tfloat varianceToRoughness( float variance ) {\n\n\t\t\t\tfloat roughness = 0.0;\n\n\t\t\t\tif ( variance >= v1 ) {\n\n\t\t\t\t\troughness = ( v0 - variance ) * ( r1 - r0 ) / ( v0 - v1 ) + r0;\n\n\t\t\t\t} else if ( variance >= v4 ) {\n\n\t\t\t\t\troughness = ( v1 - variance ) * ( r4 - r1 ) / ( v1 - v4 ) + r1;\n\n\t\t\t\t} else if ( variance >= v5 ) {\n\n\t\t\t\t\troughness = ( v4 - variance ) * ( r5 - r4 ) / ( v4 - v5 ) + r4;\n\n\t\t\t\t} else {\n\n\t\t\t\t\troughness = pow( 0.559 * variance, 0.25 ); // 0.559 = 1.0 / 1.79\n\n\t\t\t\t}\n\n\t\t\t\treturn roughness;\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = texture2D( roughnessMap, vUv, - 1.0 );\n\n\t\t\t\tif ( texelSize.x == 0.0 ) return;\n\n\t\t\t\tfloat roughness = gl_FragColor.g;\n\n\t\t\t\tfloat variance = roughnessToVariance( roughness );\n\n\t\t\t\tvec3 avgNormal;\n\n\t\t\t\tfor ( float x = - 1.0; x < 2.0; x += 2.0 ) {\n\n\t\t\t\t\tfor ( float y = - 1.0; y < 2.0; y += 2.0 ) {\n\n\t\t\t\t\t\tvec2 uv = vUv + vec2( x, y ) * 0.25 * texelSize;\n\n\t\t\t\t\t\tavgNormal += normalize( texture2D( normalMap, uv, - 1.0 ).xyz - 0.5 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tvariance += 1.0 - 0.25 * length( avgNormal );\n\n\t\t\t\tgl_FragColor.g = varianceToRoughness( variance );\n\n\t\t\t}\n\t\t`,blending:NoBlending,depthTest:false,depthWrite:false});shaderMaterial.type=\"RoughnessMipmapper\";return shaderMaterial;}function retarget(target,source,options={}){const pos=new Vector3(),quat=new Quaternion(),scale=new Vector3(),bindBoneMatrix=new Matrix4(),relativeMatrix=new Matrix4(),globalMatrix=new Matrix4();options.preserveMatrix=options.preserveMatrix!==void 0?options.preserveMatrix:true;options.preservePosition=options.preservePosition!==void 0?options.preservePosition:true;options.preserveHipPosition=options.preserveHipPosition!==void 0?options.preserveHipPosition:false;options.useTargetMatrix=options.useTargetMatrix!==void 0?options.useTargetMatrix:false;options.hip=options.hip!==void 0?options.hip:\"hip\";options.names=options.names||{};const sourceBones=source.isObject3D?source.skeleton.bones:getBones(source),bones=target.isObject3D?target.skeleton.bones:getBones(target);let bindBones,bone,name,boneTo,bonesPosition;if(target.isObject3D){target.skeleton.pose();}else{options.useTargetMatrix=true;options.preserveMatrix=false;}if(options.preservePosition){bonesPosition=[];for(let i2=0;i2\",\"void main() {\",\"\tfloat depth = 1.0 - unpackRGBAToDepth( texture2D( tDiffuse, vUv ) );\",\"\tgl_FragColor = vec4( vec3( depth ), opacity );\",\"}\"].join(\"\\n\")};class ShadowMapViewer{constructor(light){const scope=this;const doRenderLabel=light.name!==void 0&&light.name!==\"\";let userAutoClearSetting;const frame={x:10,y:10,width:256,height:256};const camera=new OrthographicCamera(window.innerWidth/-2,window.innerWidth/2,window.innerHeight/2,window.innerHeight/-2,1,10);camera.position.set(0,0,2);const scene=new Scene();const shader=UnpackDepthRGBAShader;const uniforms=UniformsUtils.clone(shader.uniforms);const material2=new ShaderMaterial({uniforms,vertexShader:shader.vertexShader,fragmentShader:shader.fragmentShader});const plane=new PlaneGeometry(frame.width,frame.height);const mesh=new Mesh(plane,material2);scene.add(mesh);let labelCanvas,labelMesh;if(doRenderLabel){labelCanvas=document.createElement(\"canvas\");const context=labelCanvas.getContext(\"2d\");context.font=\"Bold 20px Arial\";const labelWidth=context.measureText(light.name).width;labelCanvas.width=labelWidth;labelCanvas.height=25;context.font=\"Bold 20px Arial\";context.fillStyle=\"rgba( 255, 0, 0, 1 )\";context.fillText(light.name,0,20);const labelTexture=new Texture(labelCanvas);labelTexture.magFilter=LinearFilter;labelTexture.minFilter=LinearFilter;labelTexture.needsUpdate=true;const labelMaterial=new MeshBasicMaterial({map:labelTexture,side:DoubleSide});labelMaterial.transparent=true;const labelPlane=new PlaneGeometry(labelCanvas.width,labelCanvas.height);labelMesh=new Mesh(labelPlane,labelMaterial);scene.add(labelMesh);}function resetPosition(){scope.position.set(scope.position.x,scope.position.y);}this.enabled=true;this.size={width:frame.width,height:frame.height,set:function(width,height){this.width=width;this.height=height;mesh.scale.set(this.width/frame.width,this.height/frame.height,1);resetPosition();}};this.position={x:frame.x,y:frame.y,set:function(x,y){this.x=x;this.y=y;const width=scope.size.width;const height=scope.size.height;mesh.position.set(-window.innerWidth/2+width/2+this.x,window.innerHeight/2-height/2-this.y,0);if(doRenderLabel)labelMesh.position.set(mesh.position.x,mesh.position.y-scope.size.height/2+labelCanvas.height/2,0);}};this.render=function(renderer){if(this.enabled){uniforms.tDiffuse.value=light.shadow.map.texture;userAutoClearSetting=renderer.autoClear;renderer.autoClear=false;renderer.clearDepth();renderer.render(scene,camera);renderer.autoClear=userAutoClearSetting;}};this.updateForWindowResize=function(){if(this.enabled){camera.left=window.innerWidth/-2;camera.right=window.innerWidth/2;camera.top=window.innerHeight/2;camera.bottom=window.innerHeight/-2;camera.updateProjectionMatrix();this.update();}};this.update=function(){this.position.set(this.position.x,this.position.y);this.size.set(this.size.width,this.size.height);};this.update();}}var GeometryCompressionUtils={/**\n * Make the input mesh.geometry's normal attribute encoded and compressed by 3 different methods.\n * Also will change the mesh.material to `PackedPhongMaterial` which let the vertex shader program decode the normal data.\n *\n * @param {THREE.Mesh} mesh\n * @param {String} encodeMethod\t\t\"DEFAULT\" || \"OCT1Byte\" || \"OCT2Byte\" || \"ANGLES\"\n *\n */compressNormals:function(mesh,encodeMethod){if(!mesh.geometry){console.error(\"Mesh must contain geometry. \");}const normal=mesh.geometry.attributes.normal;if(!normal){console.error(\"Geometry must contain normal attribute. \");}if(normal.isPacked)return;if(normal.itemSize!=3){console.error(\"normal.itemSize is not 3, which cannot be encoded. \");}const array=normal.array;const count=normal.count;let result;if(encodeMethod==\"DEFAULT\"){result=new Uint8Array(count*3);for(let idx=0;idx=-1&&range.max<=1){result=new Uint16Array(array.length);for(let i2=0;i2bestCos){best=oct;bestCos=currentCos;}oct=octEncodeVec3(x,y,z,\"floor\",\"ceil\");dec=octDecodeVec2(oct);currentCos=dot(x,y,z,dec);if(currentCos>bestCos){best=oct;bestCos=currentCos;}oct=octEncodeVec3(x,y,z,\"ceil\",\"ceil\");dec=octDecodeVec2(oct);currentCos=dot(x,y,z,dec);if(currentCos>bestCos){best=oct;}return best;function octEncodeVec3(x0,y0,z0,xfunc,yfunc){var x2=x0/(Math.abs(x0)+Math.abs(y0)+Math.abs(z0));var y2=y0/(Math.abs(x0)+Math.abs(y0)+Math.abs(z0));if(z<0){var tempx=(1-Math.abs(y2))*(x2>=0?1:-1);var tempy=(1-Math.abs(x2))*(y2>=0?1:-1);x2=tempx;y2=tempy;var diff=1-Math.abs(x2)-Math.abs(y2);if(diff>0){diff+=1e-3;x2+=x2>0?diff/2:-diff/2;y2+=y2>0?diff/2:-diff/2;}}if(bytes==1){return new Int8Array([Math[xfunc](x2*127.5+(x2<0?1:0)),Math[yfunc](y2*127.5+(y2<0?1:0))]);}if(bytes==2){return new Int16Array([Math[xfunc](x2*32767.5+(x2<0?1:0)),Math[yfunc](y2*32767.5+(y2<0?1:0))]);}}function octDecodeVec2(oct2){var x2=oct2[0];var y2=oct2[1];if(bytes==1){x2/=x2<0?127:128;y2/=y2<0?127:128;}else if(bytes==2){x2/=x2<0?32767:32768;y2/=y2<0?32767:32768;}var z2=1-Math.abs(x2)-Math.abs(y2);if(z2<0){var tmpx=x2;x2=(1-Math.abs(y2))*(x2>=0?1:-1);y2=(1-Math.abs(tmpx))*(y2>=0?1:-1);}var length=Math.sqrt(x2*x2+y2*y2+z2*z2);return[x2/length,y2/length,z2/length];}function dot(x2,y2,z2,vec3){return x2*vec3[0]+y2*vec3[1]+z2*vec3[2];}},quantizedEncode:function(array,bytes){let quantized,segments;if(bytes==1){quantized=new Uint8Array(array.length);segments=255;}else if(bytes==2){quantized=new Uint16Array(array.length);segments=65535;}else{console.error(\"number of bytes error! \");}const decodeMat=new Matrix4();const min=new Float32Array(3);const max=new Float32Array(3);min[0]=min[1]=min[2]=Number.MAX_VALUE;max[0]=max[1]=max[2]=-Number.MAX_VALUE;for(let i2=0;i2= 0.0) ? +1.0 : -1.0, (v.y >= 0.0) ? +1.0 : -1.0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn normalize(v);\n\t\t\t\t\t\t}\n\t\t\t\t\t#endif\n\n\t\t\t\t\t#if USE_PACKED_NORMAL == 2\n\t\t\t\t\t\tvec3 decodeNormal(vec3 packedNormal)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvec3 v = (packedNormal * 2.0) - 1.0;\n\t\t\t\t\t\t\treturn normalize(v);\n\t\t\t\t\t\t}\n\t\t\t\t\t#endif\n\t\t\t\t#endif`,`#ifdef USE_PACKED_POSITION\n\t\t\t\t\t#if USE_PACKED_POSITION == 0\n\t\t\t\t\t\tuniform mat4 quantizeMatPos;\n\t\t\t\t\t#endif\n\t\t\t\t#endif`,`#ifdef USE_PACKED_UV\n\t\t\t\t\t#if USE_PACKED_UV == 1\n\t\t\t\t\t\tuniform mat3 quantizeMatUV;\n\t\t\t\t\t#endif\n\t\t\t\t#endif`,`#ifdef USE_PACKED_UV\n\t\t\t\t\t#if USE_PACKED_UV == 0\n\t\t\t\t\t\tvec2 decodeUV(vec2 packedUV)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvec2 uv = (packedUV * 2.0) - 1.0;\n\t\t\t\t\t\t\treturn uv;\n\t\t\t\t\t\t}\n\t\t\t\t\t#endif\n\n\t\t\t\t\t#if USE_PACKED_UV == 1\n\t\t\t\t\t\tvec2 decodeUV(vec2 packedUV)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvec2 uv = ( vec3(packedUV, 1.0) * quantizeMatUV ).xy;\n\t\t\t\t\t\t\treturn uv;\n\t\t\t\t\t\t}\n\t\t\t\t\t#endif\n\t\t\t\t#endif`,\"void main() {\",ShaderChunk.uv_vertex,`#ifdef USE_UV\n\t\t\t\t\t#ifdef USE_PACKED_UV\n\t\t\t\t\t\tvUv = decodeUV(vUv);\n\t\t\t\t\t#endif\n\t\t\t\t#endif`,ShaderChunk.uv2_vertex,ShaderChunk.color_vertex,ShaderChunk.beginnormal_vertex,`#ifdef USE_PACKED_NORMAL\n\t\t\t\t\tobjectNormal = decodeNormal(objectNormal);\n\t\t\t\t#endif\n\n\t\t\t\t#ifdef USE_TANGENT\n\t\t\t\t\tvec3 objectTangent = vec3( tangent.xyz );\n\t\t\t\t#endif\n\t\t\t\t`,ShaderChunk.morphnormal_vertex,ShaderChunk.skinbase_vertex,ShaderChunk.skinnormal_vertex,ShaderChunk.defaultnormal_vertex,\"#ifndef FLAT_SHADED\",\"\tvNormal = normalize( transformedNormal );\",\"#endif\",ShaderChunk.begin_vertex,`#ifdef USE_PACKED_POSITION\n\t\t\t\t\t#if USE_PACKED_POSITION == 0\n\t\t\t\t\t\ttransformed = ( vec4(transformed, 1.0) * quantizeMatPos ).xyz;\n\t\t\t\t\t#endif\n\t\t\t\t#endif`,ShaderChunk.morphtarget_vertex,ShaderChunk.skinning_vertex,ShaderChunk.displacementmap_vertex,ShaderChunk.project_vertex,ShaderChunk.logdepthbuf_vertex,ShaderChunk.clipping_planes_vertex,\"vViewPosition = - mvPosition.xyz;\",ShaderChunk.worldpos_vertex,ShaderChunk.envmap_vertex,ShaderChunk.shadowmap_vertex,ShaderChunk.fog_vertex,\"}\"].join(\"\\n\");this.fragmentShader=[\"#define PHONG\",\"uniform vec3 diffuse;\",\"uniform vec3 emissive;\",\"uniform vec3 specular;\",\"uniform float shininess;\",\"uniform float opacity;\",ShaderChunk.common,ShaderChunk.packing,ShaderChunk.dithering_pars_fragment,ShaderChunk.color_pars_fragment,ShaderChunk.uv_pars_fragment,ShaderChunk.uv2_pars_fragment,ShaderChunk.map_pars_fragment,ShaderChunk.alphamap_pars_fragment,ShaderChunk.aomap_pars_fragment,ShaderChunk.lightmap_pars_fragment,ShaderChunk.emissivemap_pars_fragment,ShaderChunk.envmap_common_pars_fragment,ShaderChunk.envmap_pars_fragment,ShaderChunk.cube_uv_reflection_fragment,ShaderChunk.fog_pars_fragment,ShaderChunk.bsdfs,ShaderChunk.lights_pars_begin,ShaderChunk.lights_phong_pars_fragment,ShaderChunk.shadowmap_pars_fragment,ShaderChunk.bumpmap_pars_fragment,ShaderChunk.normalmap_pars_fragment,ShaderChunk.specularmap_pars_fragment,ShaderChunk.logdepthbuf_pars_fragment,ShaderChunk.clipping_planes_pars_fragment,\"void main() {\",ShaderChunk.clipping_planes_fragment,\"vec4 diffuseColor = vec4( diffuse, opacity );\",\"ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\",\"vec3 totalEmissiveRadiance = emissive;\",ShaderChunk.logdepthbuf_fragment,ShaderChunk.map_fragment,ShaderChunk.color_fragment,ShaderChunk.alphamap_fragment,ShaderChunk.alphatest_fragment,ShaderChunk.specularmap_fragment,ShaderChunk.normal_fragment_begin,ShaderChunk.normal_fragment_maps,ShaderChunk.emissivemap_fragment,// accumulation\nShaderChunk.lights_phong_fragment,ShaderChunk.lights_fragment_begin,ShaderChunk.lights_fragment_maps,ShaderChunk.lights_fragment_end,// modulation\nShaderChunk.aomap_fragment,\"vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\",ShaderChunk.envmap_fragment,\"gl_FragColor = vec4( outgoingLight, diffuseColor.a );\",ShaderChunk.tonemapping_fragment,parseInt(REVISION.replace(/\\D+/g,\"\"))>=154?ShaderChunk.colorspace_fragment:ShaderChunk.encodings_fragment,ShaderChunk.fog_fragment,ShaderChunk.premultiplied_alpha_fragment,ShaderChunk.dithering_fragment,\"}\"].join(\"\\n\");this.setValues(parameters);}}const BokehShader2={uniforms:{textureWidth:{value:1},textureHeight:{value:1},focalDepth:{value:1},focalLength:{value:24},fstop:{value:0.9},tColor:{value:null},tDepth:{value:null},maxblur:{value:1},showFocus:{value:0},manualdof:{value:0},vignetting:{value:0},depthblur:{value:0},threshold:{value:0.5},gain:{value:2},bias:{value:0.5},fringe:{value:0.7},znear:{value:0.1},zfar:{value:100},noise:{value:1},dithering:{value:1e-4},pentagon:{value:0},shaderFocus:{value:1},focusCoords:{value:/*@__PURE__*/new Vector2()}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"#include \",\"varying vec2 vUv;\",\"uniform sampler2D tColor;\",\"uniform sampler2D tDepth;\",\"uniform float textureWidth;\",\"uniform float textureHeight;\",\"uniform float focalDepth; //focal distance value in meters, but you may use autofocus option below\",\"uniform float focalLength; //focal length in mm\",\"uniform float fstop; //f-stop value\",\"uniform bool showFocus; //show debug focus point and focal range (red = focal point, green = focal range)\",\"/*\",\"make sure that these two values are the same for your camera, otherwise distances will be wrong.\",\"*/\",\"uniform float znear; // camera clipping start\",\"uniform float zfar; // camera clipping end\",\"//------------------------------------------\",\"//user variables\",\"const int samples = SAMPLES; //samples on the first ring\",\"const int rings = RINGS; //ring count\",\"const int maxringsamples = rings * samples;\",\"uniform bool manualdof; // manual dof calculation\",\"float ndofstart = 1.0; // near dof blur start\",\"float ndofdist = 2.0; // near dof blur falloff distance\",\"float fdofstart = 1.0; // far dof blur start\",\"float fdofdist = 3.0; // far dof blur falloff distance\",\"float CoC = 0.03; //circle of confusion size in mm (35mm film = 0.03mm)\",\"uniform bool vignetting; // use optical lens vignetting\",\"float vignout = 1.3; // vignetting outer border\",\"float vignin = 0.0; // vignetting inner border\",\"float vignfade = 22.0; // f-stops till vignete fades\",\"uniform bool shaderFocus;\",\"// disable if you use external focalDepth value\",\"uniform vec2 focusCoords;\",\"// autofocus point on screen (0.0,0.0 - left lower corner, 1.0,1.0 - upper right)\",\"// if center of screen use vec2(0.5, 0.5);\",\"uniform float maxblur;\",\"//clamp value of max blur (0.0 = no blur, 1.0 default)\",\"uniform float threshold; // highlight threshold;\",\"uniform float gain; // highlight gain;\",\"uniform float bias; // bokeh edge bias\",\"uniform float fringe; // bokeh chromatic aberration / fringing\",\"uniform bool noise; //use noise instead of pattern for sample dithering\",\"uniform float dithering;\",\"uniform bool depthblur; // blur the depth buffer\",\"float dbsize = 1.25; // depth blur size\",\"/*\",\"next part is experimental\",\"not looking good with small sample and ring count\",\"looks okay starting from samples = 4, rings = 4\",\"*/\",\"uniform bool pentagon; //use pentagon as bokeh shape?\",\"float feather = 0.4; //pentagon shape feather\",\"//------------------------------------------\",\"float penta(vec2 coords) {\",\"\t//pentagonal shape\",\"\tfloat scale = float(rings) - 1.3;\",\"\tvec4 HS0 = vec4( 1.0, 0.0, 0.0, 1.0);\",\"\tvec4 HS1 = vec4( 0.309016994, 0.951056516, 0.0, 1.0);\",\"\tvec4 HS2 = vec4(-0.809016994, 0.587785252, 0.0, 1.0);\",\"\tvec4 HS3 = vec4(-0.809016994,-0.587785252, 0.0, 1.0);\",\"\tvec4 HS4 = vec4( 0.309016994,-0.951056516, 0.0, 1.0);\",\"\tvec4 HS5 = vec4( 0.0 ,0.0 , 1.0, 1.0);\",\"\tvec4 one = vec4( 1.0 );\",\"\tvec4 P = vec4((coords),vec2(scale, scale));\",\"\tvec4 dist = vec4(0.0);\",\"\tfloat inorout = -4.0;\",\"\tdist.x = dot( P, HS0 );\",\"\tdist.y = dot( P, HS1 );\",\"\tdist.z = dot( P, HS2 );\",\"\tdist.w = dot( P, HS3 );\",\"\tdist = smoothstep( -feather, feather, dist );\",\"\tinorout += dot( dist, one );\",\"\tdist.x = dot( P, HS4 );\",\"\tdist.y = HS5.w - abs( P.z );\",\"\tdist = smoothstep( -feather, feather, dist );\",\"\tinorout += dist.x;\",\"\treturn clamp( inorout, 0.0, 1.0 );\",\"}\",\"float bdepth(vec2 coords) {\",\"\t// Depth buffer blur\",\"\tfloat d = 0.0;\",\"\tfloat kernel[9];\",\"\tvec2 offset[9];\",\"\tvec2 wh = vec2(1.0/textureWidth,1.0/textureHeight) * dbsize;\",\"\toffset[0] = vec2(-wh.x,-wh.y);\",\"\toffset[1] = vec2( 0.0, -wh.y);\",\"\toffset[2] = vec2( wh.x -wh.y);\",\"\toffset[3] = vec2(-wh.x, 0.0);\",\"\toffset[4] = vec2( 0.0, 0.0);\",\"\toffset[5] = vec2( wh.x, 0.0);\",\"\toffset[6] = vec2(-wh.x, wh.y);\",\"\toffset[7] = vec2( 0.0, wh.y);\",\"\toffset[8] = vec2( wh.x, wh.y);\",\"\tkernel[0] = 1.0/16.0; kernel[1] = 2.0/16.0; kernel[2] = 1.0/16.0;\",\"\tkernel[3] = 2.0/16.0; kernel[4] = 4.0/16.0; kernel[5] = 2.0/16.0;\",\"\tkernel[6] = 1.0/16.0; kernel[7] = 2.0/16.0; kernel[8] = 1.0/16.0;\",\"\tfor( int i=0; i<9; i++ ) {\",\"\t\tfloat tmp = texture2D(tDepth, coords + offset[i]).r;\",\"\t\td += tmp * kernel[i];\",\"\t}\",\"\treturn d;\",\"}\",\"vec3 color(vec2 coords,float blur) {\",\"\t//processing the sample\",\"\tvec3 col = vec3(0.0);\",\"\tvec2 texel = vec2(1.0/textureWidth,1.0/textureHeight);\",\"\tcol.r = texture2D(tColor,coords + vec2(0.0,1.0)*texel*fringe*blur).r;\",\"\tcol.g = texture2D(tColor,coords + vec2(-0.866,-0.5)*texel*fringe*blur).g;\",\"\tcol.b = texture2D(tColor,coords + vec2(0.866,-0.5)*texel*fringe*blur).b;\",\"\tvec3 lumcoeff = vec3(0.299,0.587,0.114);\",\"\tfloat lum = dot(col.rgb, lumcoeff);\",\"\tfloat thresh = max((lum-threshold)*gain, 0.0);\",\"\treturn col+mix(vec3(0.0),col,thresh*blur);\",\"}\",\"vec3 debugFocus(vec3 col, float blur, float depth) {\",\"\tfloat edge = 0.002*depth; //distance based edge smoothing\",\"\tfloat m = clamp(smoothstep(0.0,edge,blur),0.0,1.0);\",\"\tfloat e = clamp(smoothstep(1.0-edge,1.0,blur),0.0,1.0);\",\"\tcol = mix(col,vec3(1.0,0.5,0.0),(1.0-m)*0.6);\",\"\tcol = mix(col,vec3(0.0,0.5,1.0),((1.0-e)-(1.0-m))*0.2);\",\"\treturn col;\",\"}\",\"float linearize(float depth) {\",\"\treturn -zfar * znear / (depth * (zfar - znear) - zfar);\",\"}\",\"float vignette() {\",\"\tfloat dist = distance(vUv.xy, vec2(0.5,0.5));\",\"\tdist = smoothstep(vignout+(fstop/vignfade), vignin+(fstop/vignfade), dist);\",\"\treturn clamp(dist,0.0,1.0);\",\"}\",\"float gather(float i, float j, int ringsamples, inout vec3 col, float w, float h, float blur) {\",\"\tfloat rings2 = float(rings);\",\"\tfloat step = PI*2.0 / float(ringsamples);\",\"\tfloat pw = cos(j*step)*i;\",\"\tfloat ph = sin(j*step)*i;\",\"\tfloat p = 1.0;\",\"\tif (pentagon) {\",\"\t\tp = penta(vec2(pw,ph));\",\"\t}\",\"\tcol += color(vUv.xy + vec2(pw*w,ph*h), blur) * mix(1.0, i/rings2, bias) * p;\",\"\treturn 1.0 * mix(1.0, i /rings2, bias) * p;\",\"}\",\"void main() {\",\"\t//scene depth calculation\",\"\tfloat depth = linearize(texture2D(tDepth,vUv.xy).x);\",\"\t// Blur depth?\",\"\tif ( depthblur ) {\",\"\t\tdepth = linearize(bdepth(vUv.xy));\",\"\t}\",\"\t//focal plane calculation\",\"\tfloat fDepth = focalDepth;\",\"\tif (shaderFocus) {\",\"\t\tfDepth = linearize(texture2D(tDepth,focusCoords).x);\",\"\t}\",\"\t// dof blur factor calculation\",\"\tfloat blur = 0.0;\",\"\tif (manualdof) {\",\"\t\tfloat a = depth-fDepth; // Focal plane\",\"\t\tfloat b = (a-fdofstart)/fdofdist; // Far DoF\",\"\t\tfloat c = (-a-ndofstart)/ndofdist; // Near Dof\",\"\t\tblur = (a>0.0) ? b : c;\",\"\t} else {\",\"\t\tfloat f = focalLength; // focal length in mm\",\"\t\tfloat d = fDepth*1000.0; // focal plane in mm\",\"\t\tfloat o = depth*1000.0; // depth in mm\",\"\t\tfloat a = (o*f)/(o-f);\",\"\t\tfloat b = (d*f)/(d-f);\",\"\t\tfloat c = (d-f)/(d*fstop*CoC);\",\"\t\tblur = abs(a-b)*c;\",\"\t}\",\"\tblur = clamp(blur,0.0,1.0);\",\"\t// calculation of pattern for dithering\",\"\tvec2 noise = vec2(rand(vUv.xy), rand( vUv.xy + vec2( 0.4, 0.6 ) ) )*dithering*blur;\",\"\t// getting blur x and y step factor\",\"\tfloat w = (1.0/textureWidth)*blur*maxblur+noise.x;\",\"\tfloat h = (1.0/textureHeight)*blur*maxblur+noise.y;\",\"\t// calculation of final color\",\"\tvec3 col = vec3(0.0);\",\"\tif(blur < 0.05) {\",\"\t\t//some optimization thingy\",\"\t\tcol = texture2D(tColor, vUv.xy).rgb;\",\"\t} else {\",\"\t\tcol = texture2D(tColor, vUv.xy).rgb;\",\"\t\tfloat s = 1.0;\",\"\t\tint ringsamples;\",\"\t\tfor (int i = 1; i <= rings; i++) {\",\"\t\t\t/*unboxstart*/\",\"\t\t\tringsamples = i * samples;\",\"\t\t\tfor (int j = 0 ; j < maxringsamples ; j++) {\",\"\t\t\t\tif (j >= ringsamples) break;\",\"\t\t\t\ts += gather(float(i), float(j), ringsamples, col, w, h, blur);\",\"\t\t\t}\",\"\t\t\t/*unboxend*/\",\"\t\t}\",\"\t\tcol /= s; //divide by sample count\",\"\t}\",\"\tif (showFocus) {\",\"\t\tcol = debugFocus(col, blur, depth);\",\"\t}\",\"\tif (vignetting) {\",\"\t\tcol *= vignette();\",\"\t}\",\"\tgl_FragColor.rgb = col;\",\"\tgl_FragColor.a = 1.0;\",\"} \"].join(\"\\n\")};const BokehDepthShader={uniforms:{mNear:{value:1},mFar:{value:1e3}},vertexShader:/*@__PURE__*/[\"varying float vViewZDepth;\",\"void main() {\",\"\t#include \",\"\t#include \",\"\tvViewZDepth = - mvPosition.z;\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform float mNear;\",\"uniform float mFar;\",\"varying float vViewZDepth;\",\"void main() {\",\"\tfloat color = 1.0 - smoothstep( mNear, mFar, vViewZDepth );\",\"\tgl_FragColor = vec4( vec3( color ), 1.0 );\",\"} \"].join(\"\\n\")};class CinematicCamera extends PerspectiveCamera{constructor(fov,aspect,near,far){super(fov,aspect,near,far);this.type=\"CinematicCamera\";this.postprocessing={enabled:true};this.shaderSettings={rings:3,samples:4};const depthShader=BokehDepthShader;this.materialDepth=new ShaderMaterial({uniforms:depthShader.uniforms,vertexShader:depthShader.vertexShader,fragmentShader:depthShader.fragmentShader});this.materialDepth.uniforms[\"mNear\"].value=near;this.materialDepth.uniforms[\"mFar\"].value=far;this.setLens();this.initPostProcessing();}// providing fnumber and coc(Circle of Confusion) as extra arguments\nsetLens(focalLength,filmGauge,fNumber,coc){if(focalLength===void 0)focalLength=35;if(filmGauge!==void 0)this.filmGauge=filmGauge;this.setFocalLength(focalLength);if(fNumber===void 0)fNumber=8;if(coc===void 0)coc=0.019;this.fNumber=fNumber;this.coc=coc;this.aperture=focalLength/this.fNumber;this.hyperFocal=focalLength*focalLength/(this.aperture*this.coc);}linearize(depth){const zfar=this.far;const znear=this.near;return-zfar*znear/(depth*(zfar-znear)-zfar);}smoothstep(near,far,depth){const x=this.saturate((depth-near)/(far-near));return x*x*(3-2*x);}saturate(x){return Math.max(0,Math.min(1,x));}// function for focusing at a distance from the camera\nfocusAt(focusDistance){if(focusDistance===void 0)focusDistance=20;const focalLength=this.getFocalLength();this.focus=focusDistance;this.nearPoint=this.hyperFocal*this.focus/(this.hyperFocal+(this.focus-focalLength));this.farPoint=this.hyperFocal*this.focus/(this.hyperFocal-(this.focus-focalLength));this.depthOfField=this.farPoint-this.nearPoint;if(this.depthOfField<0)this.depthOfField=0;this.sdistance=this.smoothstep(this.near,this.far,this.focus);this.ldistance=this.linearize(1-this.sdistance);this.postprocessing.bokeh_uniforms[\"focalDepth\"].value=this.ldistance;}initPostProcessing(){if(this.postprocessing.enabled){this.postprocessing.scene=new Scene();this.postprocessing.camera=new OrthographicCamera(window.innerWidth/-2,window.innerWidth/2,window.innerHeight/2,window.innerHeight/-2,-1e4,1e4);this.postprocessing.scene.add(this.postprocessing.camera);this.postprocessing.rtTextureDepth=new WebGLRenderTarget(window.innerWidth,window.innerHeight);this.postprocessing.rtTextureColor=new WebGLRenderTarget(window.innerWidth,window.innerHeight);const bokeh_shader=BokehShader2;this.postprocessing.bokeh_uniforms=UniformsUtils.clone(bokeh_shader.uniforms);this.postprocessing.bokeh_uniforms[\"tColor\"].value=this.postprocessing.rtTextureColor.texture;this.postprocessing.bokeh_uniforms[\"tDepth\"].value=this.postprocessing.rtTextureDepth.texture;this.postprocessing.bokeh_uniforms[\"manualdof\"].value=0;this.postprocessing.bokeh_uniforms[\"shaderFocus\"].value=0;this.postprocessing.bokeh_uniforms[\"fstop\"].value=2.8;this.postprocessing.bokeh_uniforms[\"showFocus\"].value=1;this.postprocessing.bokeh_uniforms[\"focalDepth\"].value=0.1;this.postprocessing.bokeh_uniforms[\"znear\"].value=this.near;this.postprocessing.bokeh_uniforms[\"zfar\"].value=this.near;this.postprocessing.bokeh_uniforms[\"textureWidth\"].value=window.innerWidth;this.postprocessing.bokeh_uniforms[\"textureHeight\"].value=window.innerHeight;this.postprocessing.materialBokeh=new ShaderMaterial({uniforms:this.postprocessing.bokeh_uniforms,vertexShader:bokeh_shader.vertexShader,fragmentShader:bokeh_shader.fragmentShader,defines:{RINGS:this.shaderSettings.rings,SAMPLES:this.shaderSettings.samples,DEPTH_PACKING:1}});this.postprocessing.quad=new Mesh(new PlaneGeometry(window.innerWidth,window.innerHeight),this.postprocessing.materialBokeh);this.postprocessing.quad.position.z=-500;this.postprocessing.scene.add(this.postprocessing.quad);}}renderCinematic(scene,renderer){if(this.postprocessing.enabled){const currentRenderTarget=renderer.getRenderTarget();renderer.clear();scene.overrideMaterial=null;renderer.setRenderTarget(this.postprocessing.rtTextureColor);renderer.clear();renderer.render(scene,this);scene.overrideMaterial=this.materialDepth;renderer.setRenderTarget(this.postprocessing.rtTextureDepth);renderer.clear();renderer.render(scene,this);renderer.setRenderTarget(null);renderer.render(this.postprocessing.scene,this.postprocessing.camera);renderer.setRenderTarget(currentRenderTarget);}}}const _face=/*@__PURE__*/new Triangle$1();const _color=/*@__PURE__*/new Vector3();class MeshSurfaceSampler{constructor(mesh){let geometry2=mesh.geometry;if(geometry2.index){console.warn(\"THREE.MeshSurfaceSampler: Converting geometry to non-indexed BufferGeometry.\");geometry2=geometry2.toNonIndexed();}this.geometry=geometry2;this.randomFunction=Math.random;this.positionAttribute=this.geometry.getAttribute(\"position\");this.colorAttribute=this.geometry.getAttribute(\"color\");this.weightAttribute=null;this.distribution=null;}setWeightAttribute(name){this.weightAttribute=name?this.geometry.getAttribute(name):null;return this;}build(){const positionAttribute=this.positionAttribute;const weightAttribute=this.weightAttribute;const faceWeights=new Float32Array(positionAttribute.count/3);for(let i2=0;i2x){index=mid;break;}else if(x1){u=1-u;v=1-v;}_face.a.fromBufferAttribute(this.positionAttribute,faceIndex*3);_face.b.fromBufferAttribute(this.positionAttribute,faceIndex*3+1);_face.c.fromBufferAttribute(this.positionAttribute,faceIndex*3+2);targetPosition2.set(0,0,0).addScaledVector(_face.a,u).addScaledVector(_face.b,v).addScaledVector(_face.c,1-(u+v));if(targetNormal!==void 0){_face.getNormal(targetNormal);}if(targetColor!==void 0&&this.colorAttribute!==void 0){_face.a.fromBufferAttribute(this.colorAttribute,faceIndex*3);_face.b.fromBufferAttribute(this.colorAttribute,faceIndex*3+1);_face.c.fromBufferAttribute(this.colorAttribute,faceIndex*3+2);_color.set(0,0,0).addScaledVector(_face.a,u).addScaledVector(_face.b,v).addScaledVector(_face.c,1-(u+v));targetColor.r=_color.x;targetColor.g=_color.y;targetColor.b=_color.z;}return this;}}const a={c:null,// center\nu:[/*@__PURE__*/new Vector3(),/*@__PURE__*/new Vector3(),/*@__PURE__*/new Vector3()],// basis vectors\ne:[]// half width\n};const b={c:null,// center\nu:[/*@__PURE__*/new Vector3(),/*@__PURE__*/new Vector3(),/*@__PURE__*/new Vector3()],// basis vectors\ne:[]// half width\n};const R=[[],[],[]];const AbsR=[[],[],[]];const t=[];const xAxis=/*@__PURE__*/new Vector3();const yAxis=/*@__PURE__*/new Vector3();const zAxis=/*@__PURE__*/new Vector3();const v1=/*@__PURE__*/new Vector3();const size=/*@__PURE__*/new Vector3();const closestPoint=/*@__PURE__*/new Vector3();const rotationMatrix=/*@__PURE__*/new Matrix3();const aabb=/*@__PURE__*/new Box3();const matrix=/*@__PURE__*/new Matrix4();const inverse=/*@__PURE__*/new Matrix4();const localRay=/*@__PURE__*/new Ray();class OBB{constructor(center2=new Vector3(),halfSize=new Vector3(),rotation=new Matrix3()){this.center=center2;this.halfSize=halfSize;this.rotation=rotation;}set(center2,halfSize,rotation){this.center=center2;this.halfSize=halfSize;this.rotation=rotation;return this;}copy(obb2){this.center.copy(obb2.center);this.halfSize.copy(obb2.halfSize);this.rotation.copy(obb2.rotation);return this;}clone(){return new this.constructor().copy(this);}getSize(result){return result.copy(this.halfSize).multiplyScalar(2);}/**\n * Reference: Closest Point on OBB to Point in Real-Time Collision Detection\n * by Christer Ericson (chapter 5.1.4)\n */clampPoint(point,result){const halfSize=this.halfSize;v1.subVectors(point,this.center);this.rotation.extractBasis(xAxis,yAxis,zAxis);result.copy(this.center);const x=MathUtils.clamp(v1.dot(xAxis),-halfSize.x,halfSize.x);result.add(xAxis.multiplyScalar(x));const y=MathUtils.clamp(v1.dot(yAxis),-halfSize.y,halfSize.y);result.add(yAxis.multiplyScalar(y));const z=MathUtils.clamp(v1.dot(zAxis),-halfSize.z,halfSize.z);result.add(zAxis.multiplyScalar(z));return result;}containsPoint(point){v1.subVectors(point,this.center);this.rotation.extractBasis(xAxis,yAxis,zAxis);return Math.abs(v1.dot(xAxis))<=this.halfSize.x&&Math.abs(v1.dot(yAxis))<=this.halfSize.y&&Math.abs(v1.dot(zAxis))<=this.halfSize.z;}intersectsBox3(box3){return this.intersectsOBB(obb.fromBox3(box3));}intersectsSphere(sphere){this.clampPoint(sphere.center,closestPoint);return closestPoint.distanceToSquared(sphere.center)<=sphere.radius*sphere.radius;}/**\n * Reference: OBB-OBB Intersection in Real-Time Collision Detection\n * by Christer Ericson (chapter 4.4.1)\n *\n */intersectsOBB(obb2,epsilon=Number.EPSILON){a.c=this.center;a.e[0]=this.halfSize.x;a.e[1]=this.halfSize.y;a.e[2]=this.halfSize.z;this.rotation.extractBasis(a.u[0],a.u[1],a.u[2]);b.c=obb2.center;b.e[0]=obb2.halfSize.x;b.e[1]=obb2.halfSize.y;b.e[2]=obb2.halfSize.z;obb2.rotation.extractBasis(b.u[0],b.u[1],b.u[2]);for(let i2=0;i2<3;i2++){for(let j=0;j<3;j++){R[i2][j]=a.u[i2].dot(b.u[j]);}}v1.subVectors(b.c,a.c);t[0]=v1.dot(a.u[0]);t[1]=v1.dot(a.u[1]);t[2]=v1.dot(a.u[2]);for(let i2=0;i2<3;i2++){for(let j=0;j<3;j++){AbsR[i2][j]=Math.abs(R[i2][j])+epsilon;}}let ra,rb;for(let i2=0;i2<3;i2++){ra=a.e[i2];rb=b.e[0]*AbsR[i2][0]+b.e[1]*AbsR[i2][1]+b.e[2]*AbsR[i2][2];if(Math.abs(t[i2])>ra+rb)return false;}for(let i2=0;i2<3;i2++){ra=a.e[0]*AbsR[0][i2]+a.e[1]*AbsR[1][i2]+a.e[2]*AbsR[2][i2];rb=b.e[i2];if(Math.abs(t[0]*R[0][i2]+t[1]*R[1][i2]+t[2]*R[2][i2])>ra+rb)return false;}ra=a.e[1]*AbsR[2][0]+a.e[2]*AbsR[1][0];rb=b.e[1]*AbsR[0][2]+b.e[2]*AbsR[0][1];if(Math.abs(t[2]*R[1][0]-t[1]*R[2][0])>ra+rb)return false;ra=a.e[1]*AbsR[2][1]+a.e[2]*AbsR[1][1];rb=b.e[0]*AbsR[0][2]+b.e[2]*AbsR[0][0];if(Math.abs(t[2]*R[1][1]-t[1]*R[2][1])>ra+rb)return false;ra=a.e[1]*AbsR[2][2]+a.e[2]*AbsR[1][2];rb=b.e[0]*AbsR[0][1]+b.e[1]*AbsR[0][0];if(Math.abs(t[2]*R[1][2]-t[1]*R[2][2])>ra+rb)return false;ra=a.e[0]*AbsR[2][0]+a.e[2]*AbsR[0][0];rb=b.e[1]*AbsR[1][2]+b.e[2]*AbsR[1][1];if(Math.abs(t[0]*R[2][0]-t[2]*R[0][0])>ra+rb)return false;ra=a.e[0]*AbsR[2][1]+a.e[2]*AbsR[0][1];rb=b.e[0]*AbsR[1][2]+b.e[2]*AbsR[1][0];if(Math.abs(t[0]*R[2][1]-t[2]*R[0][1])>ra+rb)return false;ra=a.e[0]*AbsR[2][2]+a.e[2]*AbsR[0][2];rb=b.e[0]*AbsR[1][1]+b.e[1]*AbsR[1][0];if(Math.abs(t[0]*R[2][2]-t[2]*R[0][2])>ra+rb)return false;ra=a.e[0]*AbsR[1][0]+a.e[1]*AbsR[0][0];rb=b.e[1]*AbsR[2][2]+b.e[2]*AbsR[2][1];if(Math.abs(t[1]*R[0][0]-t[0]*R[1][0])>ra+rb)return false;ra=a.e[0]*AbsR[1][1]+a.e[1]*AbsR[0][1];rb=b.e[0]*AbsR[2][2]+b.e[2]*AbsR[2][0];if(Math.abs(t[1]*R[0][1]-t[0]*R[1][1])>ra+rb)return false;ra=a.e[0]*AbsR[1][2]+a.e[1]*AbsR[0][2];rb=b.e[0]*AbsR[2][1]+b.e[1]*AbsR[2][0];if(Math.abs(t[1]*R[0][2]-t[0]*R[1][2])>ra+rb)return false;return true;}/**\n * Reference: Testing Box Against Plane in Real-Time Collision Detection\n * by Christer Ericson (chapter 5.2.3)\n */intersectsPlane(plane){this.rotation.extractBasis(xAxis,yAxis,zAxis);const r=this.halfSize.x*Math.abs(plane.normal.dot(xAxis))+this.halfSize.y*Math.abs(plane.normal.dot(yAxis))+this.halfSize.z*Math.abs(plane.normal.dot(zAxis));const d=plane.normal.dot(this.center)-plane.constant;return Math.abs(d)<=r;}/**\n * Performs a ray/OBB intersection test and stores the intersection point\n * to the given 3D vector. If no intersection is detected, *null* is returned.\n */intersectRay(ray,result){this.getSize(size);aabb.setFromCenterAndSize(v1.set(0,0,0),size);matrix.setFromMatrix3(this.rotation);matrix.setPosition(this.center);inverse.copy(matrix).invert();localRay.copy(ray).applyMatrix4(inverse);if(localRay.intersectBox(aabb,result)){return result.applyMatrix4(matrix);}else{return null;}}/**\n * Performs a ray/OBB intersection test. Returns either true or false if\n * there is a intersection or not.\n */intersectsRay(ray){return this.intersectRay(ray,v1)!==null;}fromBox3(box3){box3.getCenter(this.center);box3.getSize(this.halfSize).multiplyScalar(0.5);this.rotation.identity();return this;}equals(obb2){return obb2.center.equals(this.center)&&obb2.halfSize.equals(this.halfSize)&&obb2.rotation.equals(this.rotation);}applyMatrix4(matrix2){const e=matrix2.elements;let sx=v1.set(e[0],e[1],e[2]).length();const sy=v1.set(e[4],e[5],e[6]).length();const sz=v1.set(e[8],e[9],e[10]).length();const det=matrix2.determinant();if(det<0)sx=-sx;rotationMatrix.setFromMatrix4(matrix2);const invSX=1/sx;const invSY=1/sy;const invSZ=1/sz;rotationMatrix.elements[0]*=invSX;rotationMatrix.elements[1]*=invSX;rotationMatrix.elements[2]*=invSX;rotationMatrix.elements[3]*=invSY;rotationMatrix.elements[4]*=invSY;rotationMatrix.elements[5]*=invSY;rotationMatrix.elements[6]*=invSZ;rotationMatrix.elements[7]*=invSZ;rotationMatrix.elements[8]*=invSZ;this.rotation.multiply(rotationMatrix);this.halfSize.x*=sx;this.halfSize.y*=sy;this.halfSize.z*=sz;v1.setFromMatrixPosition(matrix2);this.center.add(v1);return this;}}const obb=/*@__PURE__*/new OBB();const _v1$3=/*@__PURE__*/new Vector3();const _v2$3=/*@__PURE__*/new Vector3();const _v3=/*@__PURE__*/new Vector3();const EPS=1e-10;class Capsule{constructor(start=new Vector3(0,0,0),end=new Vector3(0,1,0),radius=1){this.start=start;this.end=end;this.radius=radius;}clone(){return new Capsule(this.start.clone(),this.end.clone(),this.radius);}set(start,end,radius){this.start.copy(start);this.end.copy(end);this.radius=radius;}copy(capsule){this.start.copy(capsule.start);this.end.copy(capsule.end);this.radius=capsule.radius;}getCenter(target){return target.copy(this.end).add(this.start).multiplyScalar(0.5);}translate(v){this.start.add(v);this.end.add(v);}checkAABBAxis(p1x,p1y,p2x,p2y,minx,maxx,miny,maxy,radius){return(minx-p1x8&&level<16){subTrees[i2].split(level+1);}if(len!==0){this.subTrees.push(subTrees[i2]);}}return this;}build(){this.calcBox();this.split(0);return this;}getRayTriangles(ray,triangles){for(let i2=0;i20){for(let j=0;j0&&d2>0||d1<-capsule.radius&&d2<-capsule.radius){return false;}const delta=Math.abs(d1/(Math.abs(d1)+Math.abs(d2)));const intersectPoint=_v1$2.copy(capsule.start).lerp(capsule.end,delta);if(triangle.containsPoint(intersectPoint)){return{normal:_plane$1.normal.clone(),point:intersectPoint.clone(),depth:Math.abs(Math.min(d1,d2))};}const r2=capsule.radius*capsule.radius;const line1=_line1.set(capsule.start,capsule.end);const lines=[[triangle.a,triangle.b],[triangle.b,triangle.c],[triangle.c,triangle.a]];for(let i2=0;i20){for(let j=0;j0){for(let j=0;jnewdistance){position=result.clone().add(ray.origin);distance=newdistance;triangle=triangles[i2];}}}return distance<1e100?{distance,triangle,position}:false;}fromGraphNode(group){group.updateWorldMatrix(true,true);group.traverse(obj=>{if(obj.isMesh===true){let geometry2,isTemp=false;if(obj.geometry.index!==null){isTemp=true;geometry2=obj.geometry.toNonIndexed();}else{geometry2=obj.geometry;}const positionAttribute=geometry2.getAttribute(\"position\");for(let i2=0;i2this.map[j][0]&&alpha<=this.map[j+1][0]){const min=this.map[j][0];const max=this.map[j+1][0];minColor.setHex(this.map[j][1],\"linear-srgb\");maxColor.setHex(this.map[j+1][1],\"linear-srgb\");const color=new Color().lerpColors(minColor,maxColor,(alpha-min)/(max-min));this.lut.push(color);}}}this.lut.push(new Color(this.map[this.map.length-1][1]));return this;}copy(lut){this.lut=lut.lut;this.map=lut.map;this.n=lut.n;this.minV=lut.minV;this.maxV=lut.maxV;return this;}getColor(alpha){alpha=MathUtils.clamp(alpha,this.minV,this.maxV);alpha=(alpha-this.minV)/(this.maxV-this.minV);const colorPosition=Math.round(alpha*this.n);return this.lut[colorPosition];}addColorMap(name,arrayOfColors){ColorMapKeywords[name]=arrayOfColors;return this;}createCanvas(){const canvas=document.createElement(\"canvas\");canvas.width=1;canvas.height=this.n;this.updateCanvas(canvas);return canvas;}updateCanvas(canvas){const ctx=canvas.getContext(\"2d\",{alpha:false});const imageData=ctx.getImageData(0,0,1,this.n);const data=imageData.data;let k=0;const step=1/this.n;const minColor=new Color();const maxColor=new Color();const finalColor=new Color();for(let i2=1;i2>=0;i2-=step){for(let j=this.map.length-1;j>=0;j--){if(i2=this.map[j-1][0]){const min=this.map[j-1][0];const max=this.map[j][0];minColor.setHex(this.map[j-1][1],\"linear-srgb\");maxColor.setHex(this.map[j][1],\"linear-srgb\");finalColor.lerpColors(minColor,maxColor,(i2-min)/(max-min));data[k*4]=Math.round(finalColor.r*255);data[k*4+1]=Math.round(finalColor.g*255);data[k*4+2]=Math.round(finalColor.b*255);data[k*4+3]=255;k+=1;}}}ctx.putImageData(imageData,0,0);return canvas;}}const ColorMapKeywords={rainbow:[[0,255],[0.2,65535],[0.5,65280],[0.8,16776960],[1,16711680]],cooltowarm:[[0,3952322],[0.2,10206463],[0.5,14474460],[0.8,16163717],[1,11797542]],blackbody:[[0,0],[0.2,7864320],[0.5,15086080],[0.8,16776960],[1,16777215]],grayscale:[[0,0],[0.2,4210752],[0.5,8355712],[0.8,12566463],[1,16777215]]};var STATE$1=/*@__PURE__*/ /* @__PURE__ */(STATE2=>{STATE2[STATE2[\"NONE\"]=-1]=\"NONE\";STATE2[STATE2[\"ROTATE\"]=0]=\"ROTATE\";STATE2[STATE2[\"DOLLY\"]=1]=\"DOLLY\";STATE2[STATE2[\"PAN\"]=2]=\"PAN\";STATE2[STATE2[\"TOUCH_ROTATE\"]=3]=\"TOUCH_ROTATE\";STATE2[STATE2[\"TOUCH_PAN\"]=4]=\"TOUCH_PAN\";STATE2[STATE2[\"TOUCH_DOLLY_PAN\"]=5]=\"TOUCH_DOLLY_PAN\";STATE2[STATE2[\"TOUCH_DOLLY_ROTATE\"]=6]=\"TOUCH_DOLLY_ROTATE\";return STATE2;})(STATE$1||{});class CameraControls extends EventDispatcher{constructor(object,domElement){super();__publicField(this,\"object\");__publicField(this,\"domElement\");/** Set to false to disable this control */__publicField(this,\"enabled\",true);/** \"target\" sets the location of focus, where the object orbits around */__publicField(this,\"target\",new Vector3());/** Set to true to enable trackball behavior */__publicField(this,\"trackball\",false);/** How far you can dolly in ( PerspectiveCamera only ) */__publicField(this,\"minDistance\",0);/** How far you can dolly out ( PerspectiveCamera only ) */__publicField(this,\"maxDistance\",Infinity);// How far you can zoom in and out ( OrthographicCamera only )\n__publicField(this,\"minZoom\",0);__publicField(this,\"maxZoom\",Infinity);// How far you can orbit vertically, upper and lower limits.\n// Range is 0 to Math.PI radians.\n__publicField(this,\"minPolarAngle\",0);__publicField(this,\"maxPolarAngle\",Math.PI);// How far you can orbit horizontally, upper and lower limits.\n// If set, must be a sub-interval of the interval [ - Math.PI, Math.PI ].\n__publicField(this,\"minAzimuthAngle\",-Infinity);// radians\n__publicField(this,\"maxAzimuthAngle\",Infinity);// radians\n// Set to true to enable damping (inertia)\n// If damping is enabled, you must call controls.update() in your animation loop\n__publicField(this,\"enableDamping\",false);__publicField(this,\"dampingFactor\",0.05);/**\n * This option enables dollying in and out; property named as \"zoom\" for backwards compatibility\n * Set to false to disable zooming\n */__publicField(this,\"enableZoom\",true);__publicField(this,\"zoomSpeed\",1);/** Set to false to disable rotating */__publicField(this,\"enableRotate\",true);__publicField(this,\"rotateSpeed\",1);/** Set to false to disable panning */__publicField(this,\"enablePan\",true);__publicField(this,\"panSpeed\",1);/** if true, pan in screen-space */__publicField(this,\"screenSpacePanning\",false);/** pixels moved per arrow key push */__publicField(this,\"keyPanSpeed\",7);/**\n * Set to true to automatically rotate around the target\n * If auto-rotate is enabled, you must call controls.update() in your animation loop\n * auto-rotate is not supported for trackball behavior\n */__publicField(this,\"autoRotate\",false);__publicField(this,\"autoRotateSpeed\",2);// 30 seconds per round when fps is 60\n/** Set to false to disable use of the keys */__publicField(this,\"enableKeys\",true);/** The four arrow keys */__publicField(this,\"keys\",{LEFT:\"ArrowLeft\",UP:\"ArrowUp\",RIGHT:\"ArrowRight\",BOTTOM:\"ArrowDown\"});__publicField(this,\"mouseButtons\");/** Touch fingers */__publicField(this,\"touches\",{ONE:TOUCH.ROTATE,TWO:TOUCH.DOLLY_PAN});// for reset\n__publicField(this,\"target0\");__publicField(this,\"position0\");__publicField(this,\"quaternion0\");__publicField(this,\"zoom0\");// current position in spherical coordinates\n__publicField(this,\"spherical\",new Spherical());__publicField(this,\"sphericalDelta\",new Spherical());__publicField(this,\"changeEvent\",{type:\"change\"});__publicField(this,\"startEvent\",{type:\"start\"});__publicField(this,\"endEvent\",{type:\"end\"});__publicField(this,\"state\",-1);__publicField(this,\"EPS\",1e-6);__publicField(this,\"scale\",1);__publicField(this,\"panOffset\",new Vector3());__publicField(this,\"zoomChanged\",false);__publicField(this,\"rotateStart\",new Vector2());__publicField(this,\"rotateEnd\",new Vector2());__publicField(this,\"rotateDelta\",new Vector2());__publicField(this,\"panStart\",new Vector2());__publicField(this,\"panEnd\",new Vector2());__publicField(this,\"panDelta\",new Vector2());__publicField(this,\"dollyStart\",new Vector2());__publicField(this,\"dollyEnd\",new Vector2());__publicField(this,\"dollyDelta\",new Vector2());__publicField(this,\"offset\",new Vector3());__publicField(this,\"lastPosition\",new Vector3());__publicField(this,\"lastQuaternion\",new Quaternion());__publicField(this,\"q\",new Quaternion());__publicField(this,\"v\",new Vector3());__publicField(this,\"vec\",new Vector3());__publicField(this,\"quat\");__publicField(this,\"quatInverse\");__publicField(this,\"getPolarAngle\",()=>this.spherical.phi);__publicField(this,\"getAzimuthalAngle\",()=>this.spherical.theta);__publicField(this,\"saveState\",()=>{this.target0.copy(this.target);this.position0.copy(this.object.position);this.quaternion0.copy(this.object.quaternion);this.zoom0=this.object.zoom;});__publicField(this,\"reset\",()=>{this.target.copy(this.target0);this.object.position.copy(this.position0);this.object.quaternion.copy(this.quaternion0);this.object.zoom=this.zoom0;this.object.updateProjectionMatrix();this.dispatchEvent(this.changeEvent);this.update();this.state=-1;});__publicField(this,\"dispose\",()=>{this.domElement.removeEventListener(\"contextmenu\",this.onContextMenu,false);this.domElement.removeEventListener(\"mousedown\",this.onMouseDown,false);this.domElement.removeEventListener(\"wheel\",this.onMouseWheel,false);this.domElement.removeEventListener(\"touchstart\",this.onTouchStart,false);this.domElement.removeEventListener(\"touchend\",this.onTouchEnd,false);this.domElement.removeEventListener(\"touchmove\",this.onTouchMove,false);document.removeEventListener(\"mousemove\",this.onMouseMove,false);document.removeEventListener(\"mouseup\",this.onMouseUp,false);this.domElement.removeEventListener(\"keydown\",this.onKeyDown,false);});__publicField(this,\"update\",()=>{const position=this.object.position;this.offset.copy(position).sub(this.target);if(this.trackball){if(this.sphericalDelta.theta){this.vec.set(0,1,0).applyQuaternion(this.object.quaternion);const factor=this.enableDamping?this.dampingFactor:1;this.q.setFromAxisAngle(this.vec,this.sphericalDelta.theta*factor);this.object.quaternion.premultiply(this.q);this.offset.applyQuaternion(this.q);}if(this.sphericalDelta.phi){this.vec.set(1,0,0).applyQuaternion(this.object.quaternion);const factor=this.enableDamping?this.dampingFactor:1;this.q.setFromAxisAngle(this.vec,this.sphericalDelta.phi*factor);this.object.quaternion.premultiply(this.q);this.offset.applyQuaternion(this.q);}this.offset.multiplyScalar(this.scale);this.offset.clampLength(this.minDistance,this.maxDistance);}else{this.offset.applyQuaternion(this.quat);if(this.autoRotate&&this.state===-1){this.rotateLeft(this.getAutoRotationAngle());}this.spherical.setFromVector3(this.offset);if(this.enableDamping){this.spherical.theta+=this.sphericalDelta.theta*this.dampingFactor;this.spherical.phi+=this.sphericalDelta.phi*this.dampingFactor;}else{this.spherical.theta+=this.sphericalDelta.theta;this.spherical.phi+=this.sphericalDelta.phi;}this.spherical.theta=Math.max(this.minAzimuthAngle,Math.min(this.maxAzimuthAngle,this.spherical.theta));this.spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this.spherical.phi));this.spherical.makeSafe();this.spherical.radius*=this.scale;this.spherical.radius=Math.max(this.minDistance,Math.min(this.maxDistance,this.spherical.radius));this.offset.setFromSpherical(this.spherical);this.offset.applyQuaternion(this.quatInverse);}if(this.enableDamping===true){this.target.addScaledVector(this.panOffset,this.dampingFactor);}else{this.target.add(this.panOffset);}position.copy(this.target).add(this.offset);if(this.trackball===false){this.object.lookAt(this.target);}if(this.enableDamping===true){this.sphericalDelta.theta*=1-this.dampingFactor;this.sphericalDelta.phi*=1-this.dampingFactor;this.panOffset.multiplyScalar(1-this.dampingFactor);}else{this.sphericalDelta.set(0,0,0);this.panOffset.set(0,0,0);}this.scale=1;if(this.zoomChanged||this.lastPosition.distanceToSquared(this.object.position)>this.EPS||8*(1-this.lastQuaternion.dot(this.object.quaternion))>this.EPS){this.dispatchEvent(this.changeEvent);this.lastPosition.copy(this.object.position);this.lastQuaternion.copy(this.object.quaternion);this.zoomChanged=false;return true;}return false;});__publicField(this,\"getAutoRotationAngle\",()=>2*Math.PI/60/60*this.autoRotateSpeed);__publicField(this,\"getZoomScale\",()=>Math.pow(0.95,this.zoomSpeed));__publicField(this,\"rotateLeft\",angle=>{this.sphericalDelta.theta-=angle;});__publicField(this,\"rotateUp\",angle=>{this.sphericalDelta.phi-=angle;});__publicField(this,\"panLeft\",(distance,objectMatrix)=>{this.v.setFromMatrixColumn(objectMatrix,0);this.v.multiplyScalar(-distance);this.panOffset.add(this.v);});__publicField(this,\"panUp\",(distance,objectMatrix)=>{if(this.screenSpacePanning===true){this.v.setFromMatrixColumn(objectMatrix,1);}else{this.v.setFromMatrixColumn(objectMatrix,0);this.v.crossVectors(this.object.up,this.v);}this.v.multiplyScalar(distance);this.panOffset.add(this.v);});// deltaX and deltaY are in pixels; right and down are positive\n__publicField(this,\"pan\",(deltaX,deltaY)=>{const element=this.domElement;if(this.object instanceof PerspectiveCamera){const position=this.object.position;this.offset.copy(position).sub(this.target);let targetDistance=this.offset.length();targetDistance*=Math.tan(this.object.fov/2*Math.PI/180);this.panLeft(2*deltaX*targetDistance/element.clientHeight,this.object.matrix);this.panUp(2*deltaY*targetDistance/element.clientHeight,this.object.matrix);}else if(this.object.isOrthographicCamera){this.panLeft(deltaX*(this.object.right-this.object.left)/this.object.zoom/element.clientWidth,this.object.matrix);this.panUp(deltaY*(this.object.top-this.object.bottom)/this.object.zoom/element.clientHeight,this.object.matrix);}else{console.warn(\"WARNING: CameraControls.js encountered an unknown camera type - pan disabled.\");this.enablePan=false;}});__publicField(this,\"dollyIn\",dollyScale=>{if(this.object instanceof PerspectiveCamera){this.scale/=dollyScale;}else if(this.object instanceof OrthographicCamera){this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom*dollyScale));this.object.updateProjectionMatrix();this.zoomChanged=true;}else{console.warn(\"WARNING: CameraControls.js encountered an unknown camera type - dolly/zoom disabled.\");this.enableZoom=false;}});__publicField(this,\"dollyOut\",dollyScale=>{if(this.object instanceof PerspectiveCamera){this.scale*=dollyScale;}else if(this.object instanceof OrthographicCamera){this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/dollyScale));this.object.updateProjectionMatrix();this.zoomChanged=true;}else{console.warn(\"WARNING: CameraControls.js encountered an unknown camera type - dolly/zoom disabled.\");this.enableZoom=false;}});// event callbacks - update the object state\n__publicField(this,\"handleMouseDownRotate\",event=>{this.rotateStart.set(event.clientX,event.clientY);});// TODO: confirm if worthwhile to return the Vector2 instead of void\n__publicField(this,\"handleMouseDownDolly\",event=>{this.dollyStart.set(event.clientX,event.clientY);});__publicField(this,\"handleMouseDownPan\",event=>{this.panStart.set(event.clientX,event.clientY);});__publicField(this,\"handleMouseMoveRotate\",event=>{this.rotateEnd.set(event.clientX,event.clientY);this.rotateDelta.subVectors(this.rotateEnd,this.rotateStart).multiplyScalar(this.rotateSpeed);const element=this.domElement;this.rotateLeft(2*Math.PI*this.rotateDelta.x/element.clientHeight);this.rotateUp(2*Math.PI*this.rotateDelta.y/element.clientHeight);this.rotateStart.copy(this.rotateEnd);this.update();});__publicField(this,\"handleMouseMoveDolly\",event=>{this.dollyEnd.set(event.clientX,event.clientY);this.dollyDelta.subVectors(this.dollyEnd,this.dollyStart);if(this.dollyDelta.y>0){this.dollyIn(this.getZoomScale());}else if(this.dollyDelta.y<0){this.dollyOut(this.getZoomScale());}this.dollyStart.copy(this.dollyEnd);this.update();});__publicField(this,\"handleMouseMovePan\",event=>{this.panEnd.set(event.clientX,event.clientY);this.panDelta.subVectors(this.panEnd,this.panStart).multiplyScalar(this.panSpeed);this.pan(this.panDelta.x,this.panDelta.y);this.panStart.copy(this.panEnd);this.update();});__publicField(this,\"handleMouseWheel\",event=>{if(event.deltaY<0){this.dollyOut(this.getZoomScale());}else if(event.deltaY>0){this.dollyIn(this.getZoomScale());}this.update();});__publicField(this,\"handleKeyDown\",event=>{let needsUpdate=false;switch(event.code){case this.keys.UP:this.pan(0,this.keyPanSpeed);needsUpdate=true;break;case this.keys.BOTTOM:this.pan(0,-this.keyPanSpeed);needsUpdate=true;break;case this.keys.LEFT:this.pan(this.keyPanSpeed,0);needsUpdate=true;break;case this.keys.RIGHT:this.pan(-this.keyPanSpeed,0);needsUpdate=true;break;}if(needsUpdate){event.preventDefault();this.update();}});__publicField(this,\"handleTouchStartRotate\",event=>{if(event.touches.length==1){this.rotateStart.set(event.touches[0].pageX,event.touches[0].pageY);}else{const x=0.5*(event.touches[0].pageX+event.touches[1].pageX);const y=0.5*(event.touches[0].pageY+event.touches[1].pageY);this.rotateStart.set(x,y);}});__publicField(this,\"handleTouchStartPan\",event=>{if(event.touches.length==1){this.panStart.set(event.touches[0].pageX,event.touches[0].pageY);}else{const x=0.5*(event.touches[0].pageX+event.touches[1].pageX);const y=0.5*(event.touches[0].pageY+event.touches[1].pageY);this.panStart.set(x,y);}});__publicField(this,\"handleTouchStartDolly\",event=>{const dx=event.touches[0].pageX-event.touches[1].pageX;const dy=event.touches[0].pageY-event.touches[1].pageY;const distance=Math.sqrt(dx*dx+dy*dy);this.dollyStart.set(0,distance);});__publicField(this,\"handleTouchStartDollyPan\",event=>{if(this.enableZoom)this.handleTouchStartDolly(event);if(this.enablePan)this.handleTouchStartPan(event);});__publicField(this,\"handleTouchStartDollyRotate\",event=>{if(this.enableZoom)this.handleTouchStartDolly(event);if(this.enableRotate)this.handleTouchStartRotate(event);});__publicField(this,\"handleTouchMoveRotate\",event=>{if(event.touches.length==1){this.rotateEnd.set(event.touches[0].pageX,event.touches[0].pageY);}else{const x=0.5*(event.touches[0].pageX+event.touches[1].pageX);const y=0.5*(event.touches[0].pageY+event.touches[1].pageY);this.rotateEnd.set(x,y);}this.rotateDelta.subVectors(this.rotateEnd,this.rotateStart).multiplyScalar(this.rotateSpeed);const element=this.domElement;this.rotateLeft(2*Math.PI*this.rotateDelta.x/element.clientHeight);this.rotateUp(2*Math.PI*this.rotateDelta.y/element.clientHeight);this.rotateStart.copy(this.rotateEnd);});__publicField(this,\"handleTouchMovePan\",event=>{if(event.touches.length==1){this.panEnd.set(event.touches[0].pageX,event.touches[0].pageY);}else{const x=0.5*(event.touches[0].pageX+event.touches[1].pageX);const y=0.5*(event.touches[0].pageY+event.touches[1].pageY);this.panEnd.set(x,y);}this.panDelta.subVectors(this.panEnd,this.panStart).multiplyScalar(this.panSpeed);this.pan(this.panDelta.x,this.panDelta.y);this.panStart.copy(this.panEnd);});__publicField(this,\"handleTouchMoveDolly\",event=>{const dx=event.touches[0].pageX-event.touches[1].pageX;const dy=event.touches[0].pageY-event.touches[1].pageY;const distance=Math.sqrt(dx*dx+dy*dy);this.dollyEnd.set(0,distance);this.dollyDelta.set(0,Math.pow(this.dollyEnd.y/this.dollyStart.y,this.zoomSpeed));this.dollyIn(this.dollyDelta.y);this.dollyStart.copy(this.dollyEnd);});__publicField(this,\"handleTouchMoveDollyPan\",event=>{if(this.enableZoom)this.handleTouchMoveDolly(event);if(this.enablePan)this.handleTouchMovePan(event);});__publicField(this,\"handleTouchMoveDollyRotate\",event=>{if(this.enableZoom)this.handleTouchMoveDolly(event);if(this.enableRotate)this.handleTouchMoveRotate(event);});//\n// event handlers - FSM: listen for events and reset state\n//\n__publicField(this,\"onMouseDown\",event=>{if(this.enabled===false)return;event.preventDefault();this.domElement.focus?this.domElement.focus():window.focus();let mouseAction;switch(event.button){case 0:mouseAction=this.mouseButtons.LEFT;break;case 1:mouseAction=this.mouseButtons.MIDDLE;break;case 2:mouseAction=this.mouseButtons.RIGHT;break;default:mouseAction=-1;}switch(mouseAction){case MOUSE.DOLLY:if(this.enableZoom===false)return;this.handleMouseDownDolly(event);this.state=1;break;case MOUSE.ROTATE:if(event.ctrlKey||event.metaKey||event.shiftKey){if(this.enablePan===false)return;this.handleMouseDownPan(event);this.state=2;}else{if(this.enableRotate===false)return;this.handleMouseDownRotate(event);this.state=0;}break;case MOUSE.PAN:if(event.ctrlKey||event.metaKey||event.shiftKey){if(this.enableRotate===false)return;this.handleMouseDownRotate(event);this.state=0;}else{if(this.enablePan===false)return;this.handleMouseDownPan(event);this.state=2;}break;default:this.state=-1;}if(this.state!==-1){document.addEventListener(\"mousemove\",this.onMouseMove,false);document.addEventListener(\"mouseup\",this.onMouseUp,false);this.dispatchEvent(this.startEvent);}});__publicField(this,\"onMouseMove\",event=>{if(this.enabled===false)return;event.preventDefault();switch(this.state){case 0:if(this.enableRotate===false)return;this.handleMouseMoveRotate(event);break;case 1:if(this.enableZoom===false)return;this.handleMouseMoveDolly(event);break;case 2:if(this.enablePan===false)return;this.handleMouseMovePan(event);break;}});__publicField(this,\"onMouseUp\",()=>{if(this.enabled===false)return;document.removeEventListener(\"mousemove\",this.onMouseMove,false);document.removeEventListener(\"mouseup\",this.onMouseUp,false);this.dispatchEvent(this.endEvent);this.state=-1;});__publicField(this,\"onMouseWheel\",event=>{if(this.enabled===false||this.enableZoom===false||this.state!==-1&&this.state!==0){return;}event.preventDefault();this.dispatchEvent(this.startEvent);this.handleMouseWheel(event);this.dispatchEvent(this.endEvent);});__publicField(this,\"onKeyDown\",event=>{if(this.enabled===false||this.enableKeys===false||this.enablePan===false)return;this.handleKeyDown(event);});__publicField(this,\"onTouchStart\",event=>{if(this.enabled===false)return;event.preventDefault();switch(event.touches.length){case 1:switch(this.touches.ONE){case TOUCH.ROTATE:if(this.enableRotate===false)return;this.handleTouchStartRotate(event);this.state=3;break;case TOUCH.PAN:if(this.enablePan===false)return;this.handleTouchStartPan(event);this.state=4;break;default:this.state=-1;}break;case 2:switch(this.touches.TWO){case TOUCH.DOLLY_PAN:if(this.enableZoom===false&&this.enablePan===false)return;this.handleTouchStartDollyPan(event);this.state=5;break;case TOUCH.DOLLY_ROTATE:if(this.enableZoom===false&&this.enableRotate===false)return;this.handleTouchStartDollyRotate(event);this.state=6;break;default:this.state=-1;}break;default:this.state=-1;}if(this.state!==-1){this.dispatchEvent(this.startEvent);}});__publicField(this,\"onTouchMove\",event=>{if(this.enabled===false)return;event.preventDefault();switch(this.state){case 3:if(this.enableRotate===false)return;this.handleTouchMoveRotate(event);this.update();break;case 4:if(this.enablePan===false)return;this.handleTouchMovePan(event);this.update();break;case 5:if(this.enableZoom===false&&this.enablePan===false)return;this.handleTouchMoveDollyPan(event);this.update();break;case 6:if(this.enableZoom===false&&this.enableRotate===false)return;this.handleTouchMoveDollyRotate(event);this.update();break;default:this.state=-1;}});__publicField(this,\"onTouchEnd\",()=>{if(this.enabled===false)return;this.dispatchEvent(this.endEvent);this.state=-1;});__publicField(this,\"onContextMenu\",event=>{if(this.enabled===false)return;event.preventDefault();});if(domElement===void 0){console.warn('THREE.CameraControls: The second parameter \"domElement\" is now mandatory.');}if(domElement instanceof Document){console.error('THREE.CameraControls: \"document\" should not be used as the target \"domElement\". Please use \"renderer.domElement\" instead.');}this.object=object;this.domElement=domElement;this.mouseButtons={LEFT:MOUSE.ROTATE,MIDDLE:MOUSE.DOLLY,RIGHT:MOUSE.PAN};this.target0=this.target.clone();this.position0=this.object.position.clone();this.quaternion0=this.object.quaternion.clone();this.zoom0=this.object.zoom;this.quat=new Quaternion().setFromUnitVectors(this.object.up,new Vector3(0,1,0));this.quatInverse=this.quat.clone().invert();this.lastPosition=new Vector3();this.lastQuaternion=new Quaternion();this.domElement.addEventListener(\"contextmenu\",this.onContextMenu,false);this.domElement.addEventListener(\"mousedown\",this.onMouseDown,false);this.domElement.addEventListener(\"wheel\",this.onMouseWheel,false);this.domElement.addEventListener(\"touchstart\",this.onTouchStart,false);this.domElement.addEventListener(\"touchend\",this.onTouchEnd,false);this.domElement.addEventListener(\"touchmove\",this.onTouchMove,false);this.domElement.addEventListener(\"keydown\",this.onKeyDown,false);if(this.domElement.tabIndex===-1){this.domElement.tabIndex=0;}this.object.lookAt(this.target);this.update();this.saveState();}handleMouseUp(){}handleTouchEnd(){}}class OrbitControlsExp extends CameraControls{constructor(object,domElement){super(object,domElement);__publicField(this,\"mouseButtons\");__publicField(this,\"touches\");this.mouseButtons={LEFT:MOUSE.ROTATE,RIGHT:MOUSE.PAN};this.touches={ONE:TOUCH.ROTATE,TWO:TOUCH.DOLLY_PAN};}}class MapControlsExp extends CameraControls{constructor(object,domElement){super(object,domElement);__publicField(this,\"mouseButtons\");__publicField(this,\"touches\");this.mouseButtons={LEFT:MOUSE.PAN,RIGHT:MOUSE.ROTATE};this.touches={ONE:TOUCH.PAN,TWO:TOUCH.DOLLY_ROTATE};}}class TrackballControlsExp extends CameraControls{constructor(object,domElement){super(object,domElement);__publicField(this,\"trackball\");__publicField(this,\"screenSpacePanning\");__publicField(this,\"autoRotate\");__publicField(this,\"mouseButtons\");__publicField(this,\"touches\");this.trackball=true;this.screenSpacePanning=true;this.autoRotate=false;this.mouseButtons={LEFT:MOUSE.ROTATE,RIGHT:MOUSE.PAN};this.touches={ONE:TOUCH.ROTATE,TWO:TOUCH.DOLLY_PAN};}}const targetPosition=/*@__PURE__*/new Vector3();class FirstPersonControls extends EventDispatcher{constructor(object,domElement){super();__publicField(this,\"object\");__publicField(this,\"domElement\");__publicField(this,\"enabled\",true);__publicField(this,\"movementSpeed\",1);__publicField(this,\"lookSpeed\",5e-3);__publicField(this,\"lookVertical\",true);__publicField(this,\"autoForward\",false);__publicField(this,\"activeLook\",true);__publicField(this,\"heightSpeed\",false);__publicField(this,\"heightCoef\",1);__publicField(this,\"heightMin\",0);__publicField(this,\"heightMax\",1);__publicField(this,\"constrainVertical\",false);__publicField(this,\"verticalMin\",0);__publicField(this,\"verticalMax\",Math.PI);__publicField(this,\"mouseDragOn\",false);// internals\n__publicField(this,\"autoSpeedFactor\",0);__publicField(this,\"mouseX\",0);__publicField(this,\"mouseY\",0);__publicField(this,\"moveForward\",false);__publicField(this,\"moveBackward\",false);__publicField(this,\"moveLeft\",false);__publicField(this,\"moveRight\",false);__publicField(this,\"moveUp\",false);__publicField(this,\"moveDown\",false);__publicField(this,\"viewHalfX\",0);__publicField(this,\"viewHalfY\",0);__publicField(this,\"lat\",0);__publicField(this,\"lon\",0);__publicField(this,\"lookDirection\",new Vector3());__publicField(this,\"spherical\",new Spherical());__publicField(this,\"target\",new Vector3());__publicField(this,\"connect\",domElement=>{domElement.setAttribute(\"tabindex\",\"-1\");domElement.style.touchAction=\"none\";domElement.addEventListener(\"contextmenu\",this.contextmenu);domElement.addEventListener(\"mousemove\",this.onMouseMove);domElement.addEventListener(\"mousedown\",this.onMouseDown);domElement.addEventListener(\"mouseup\",this.onMouseUp);this.domElement=domElement;window.addEventListener(\"keydown\",this.onKeyDown);window.addEventListener(\"keyup\",this.onKeyUp);this.handleResize();});__publicField(this,\"dispose\",()=>{var _a2,_b2,_c,_d;(_a2=this.domElement)==null?void 0:_a2.removeEventListener(\"contextmenu\",this.contextmenu);(_b2=this.domElement)==null?void 0:_b2.removeEventListener(\"mousedown\",this.onMouseDown);(_c=this.domElement)==null?void 0:_c.removeEventListener(\"mousemove\",this.onMouseMove);(_d=this.domElement)==null?void 0:_d.removeEventListener(\"mouseup\",this.onMouseUp);window.removeEventListener(\"keydown\",this.onKeyDown);window.removeEventListener(\"keyup\",this.onKeyUp);});__publicField(this,\"handleResize\",()=>{if(this.domElement){this.viewHalfX=this.domElement.offsetWidth/2;this.viewHalfY=this.domElement.offsetHeight/2;}});__publicField(this,\"onMouseDown\",event=>{var _a2;(_a2=this.domElement)==null?void 0:_a2.focus();if(this.activeLook){switch(event.button){case 0:this.moveForward=true;break;case 2:this.moveBackward=true;break;}}this.mouseDragOn=true;});__publicField(this,\"onMouseUp\",event=>{if(this.activeLook){switch(event.button){case 0:this.moveForward=false;break;case 2:this.moveBackward=false;break;}}this.mouseDragOn=false;});__publicField(this,\"onMouseMove\",event=>{if(this.domElement){this.mouseX=event.pageX-this.domElement.offsetLeft-this.viewHalfX;this.mouseY=event.pageY-this.domElement.offsetTop-this.viewHalfY;}});__publicField(this,\"onKeyDown\",event=>{switch(event.code){case\"ArrowUp\":case\"KeyW\":this.moveForward=true;break;case\"ArrowLeft\":case\"KeyA\":this.moveLeft=true;break;case\"ArrowDown\":case\"KeyS\":this.moveBackward=true;break;case\"ArrowRight\":case\"KeyD\":this.moveRight=true;break;case\"KeyR\":this.moveUp=true;break;case\"KeyF\":this.moveDown=true;break;}});__publicField(this,\"onKeyUp\",event=>{switch(event.code){case\"ArrowUp\":case\"KeyW\":this.moveForward=false;break;case\"ArrowLeft\":case\"KeyA\":this.moveLeft=false;break;case\"ArrowDown\":case\"KeyS\":this.moveBackward=false;break;case\"ArrowRight\":case\"KeyD\":this.moveRight=false;break;case\"KeyR\":this.moveUp=false;break;case\"KeyF\":this.moveDown=false;break;}});__publicField(this,\"lookAt\",(x,y,z)=>{if(x instanceof Vector3){this.target.copy(x);}else if(y&&z){this.target.set(x,y,z);}this.object.lookAt(this.target);this.setOrientation();return this;});__publicField(this,\"update\",delta=>{if(!this.enabled)return;if(this.heightSpeed){const y=MathUtils.clamp(this.object.position.y,this.heightMin,this.heightMax);const heightDelta=y-this.heightMin;this.autoSpeedFactor=delta*(heightDelta*this.heightCoef);}else{this.autoSpeedFactor=0;}const actualMoveSpeed=delta*this.movementSpeed;if(this.moveForward||this.autoForward&&!this.moveBackward){this.object.translateZ(-(actualMoveSpeed+this.autoSpeedFactor));}if(this.moveBackward)this.object.translateZ(actualMoveSpeed);if(this.moveLeft)this.object.translateX(-actualMoveSpeed);if(this.moveRight)this.object.translateX(actualMoveSpeed);if(this.moveUp)this.object.translateY(actualMoveSpeed);if(this.moveDown)this.object.translateY(-actualMoveSpeed);let actualLookSpeed=delta*this.lookSpeed;if(!this.activeLook){actualLookSpeed=0;}let verticalLookRatio=1;if(this.constrainVertical){verticalLookRatio=Math.PI/(this.verticalMax-this.verticalMin);}this.lon-=this.mouseX*actualLookSpeed;if(this.lookVertical)this.lat-=this.mouseY*actualLookSpeed*verticalLookRatio;this.lat=Math.max(-85,Math.min(85,this.lat));let phi=MathUtils.degToRad(90-this.lat);const theta=MathUtils.degToRad(this.lon);if(this.constrainVertical){phi=MathUtils.mapLinear(phi,0,Math.PI,this.verticalMin,this.verticalMax);}const position=this.object.position;targetPosition.setFromSphericalCoords(1,phi,theta).add(position);this.object.lookAt(targetPosition);});__publicField(this,\"contextmenu\",event=>event.preventDefault());__publicField(this,\"setOrientation\",()=>{this.lookDirection.set(0,0,-1).applyQuaternion(this.object.quaternion);this.spherical.setFromVector3(this.lookDirection);this.lat=90-MathUtils.radToDeg(this.spherical.phi);this.lon=MathUtils.radToDeg(this.spherical.theta);});this.object=object;this.domElement=domElement;this.setOrientation();if(domElement)this.connect(domElement);}}class TransformControls extends Object3D{constructor(camera,domElement){super();__publicField(this,\"isTransformControls\",true);__publicField(this,\"visible\",false);__publicField(this,\"domElement\");__publicField(this,\"raycaster\",new Raycaster());__publicField(this,\"gizmo\");__publicField(this,\"plane\");__publicField(this,\"tempVector\",new Vector3());__publicField(this,\"tempVector2\",new Vector3());__publicField(this,\"tempQuaternion\",new Quaternion());__publicField(this,\"unit\",{X:new Vector3(1,0,0),Y:new Vector3(0,1,0),Z:new Vector3(0,0,1)});__publicField(this,\"pointStart\",new Vector3());__publicField(this,\"pointEnd\",new Vector3());__publicField(this,\"offset\",new Vector3());__publicField(this,\"rotationAxis\",new Vector3());__publicField(this,\"startNorm\",new Vector3());__publicField(this,\"endNorm\",new Vector3());__publicField(this,\"rotationAngle\",0);__publicField(this,\"cameraPosition\",new Vector3());__publicField(this,\"cameraQuaternion\",new Quaternion());__publicField(this,\"cameraScale\",new Vector3());__publicField(this,\"parentPosition\",new Vector3());__publicField(this,\"parentQuaternion\",new Quaternion());__publicField(this,\"parentQuaternionInv\",new Quaternion());__publicField(this,\"parentScale\",new Vector3());__publicField(this,\"worldPositionStart\",new Vector3());__publicField(this,\"worldQuaternionStart\",new Quaternion());__publicField(this,\"worldScaleStart\",new Vector3());__publicField(this,\"worldPosition\",new Vector3());__publicField(this,\"worldQuaternion\",new Quaternion());__publicField(this,\"worldQuaternionInv\",new Quaternion());__publicField(this,\"worldScale\",new Vector3());__publicField(this,\"eye\",new Vector3());__publicField(this,\"positionStart\",new Vector3());__publicField(this,\"quaternionStart\",new Quaternion());__publicField(this,\"scaleStart\",new Vector3());__publicField(this,\"camera\");__publicField(this,\"object\");__publicField(this,\"enabled\",true);__publicField(this,\"axis\",null);__publicField(this,\"mode\",\"translate\");__publicField(this,\"translationSnap\",null);__publicField(this,\"rotationSnap\",null);__publicField(this,\"scaleSnap\",null);__publicField(this,\"space\",\"world\");__publicField(this,\"size\",1);__publicField(this,\"dragging\",false);__publicField(this,\"showX\",true);__publicField(this,\"showY\",true);__publicField(this,\"showZ\",true);// events\n__publicField(this,\"changeEvent\",{type:\"change\"});__publicField(this,\"mouseDownEvent\",{type:\"mouseDown\",mode:this.mode});__publicField(this,\"mouseUpEvent\",{type:\"mouseUp\",mode:this.mode});__publicField(this,\"objectChangeEvent\",{type:\"objectChange\"});__publicField(this,\"intersectObjectWithRay\",(object,raycaster,includeInvisible)=>{const allIntersections=raycaster.intersectObject(object,true);for(let i2=0;i2{this.object=object;this.visible=true;return this;});// Detatch from object\n__publicField(this,\"detach\",()=>{this.object=void 0;this.visible=false;this.axis=null;return this;});// Reset\n__publicField(this,\"reset\",()=>{if(!this.enabled)return this;if(this.dragging){if(this.object!==void 0){this.object.position.copy(this.positionStart);this.object.quaternion.copy(this.quaternionStart);this.object.scale.copy(this.scaleStart);this.dispatchEvent(this.changeEvent);this.dispatchEvent(this.objectChangeEvent);this.pointStart.copy(this.pointEnd);}}return this;});__publicField(this,\"updateMatrixWorld\",()=>{if(this.object!==void 0){this.object.updateMatrixWorld();if(this.object.parent===null){console.error(\"TransformControls: The attached 3D object must be a part of the scene graph.\");}else{this.object.parent.matrixWorld.decompose(this.parentPosition,this.parentQuaternion,this.parentScale);}this.object.matrixWorld.decompose(this.worldPosition,this.worldQuaternion,this.worldScale);this.parentQuaternionInv.copy(this.parentQuaternion).invert();this.worldQuaternionInv.copy(this.worldQuaternion).invert();}this.camera.updateMatrixWorld();this.camera.matrixWorld.decompose(this.cameraPosition,this.cameraQuaternion,this.cameraScale);this.eye.copy(this.cameraPosition).sub(this.worldPosition).normalize();super.updateMatrixWorld();});__publicField(this,\"pointerHover\",pointer=>{if(this.object===void 0||this.dragging===true)return;this.raycaster.setFromCamera(pointer,this.camera);const intersect=this.intersectObjectWithRay(this.gizmo.picker[this.mode],this.raycaster);if(intersect){this.axis=intersect.object.name;}else{this.axis=null;}});__publicField(this,\"pointerDown\",pointer=>{if(this.object===void 0||this.dragging===true||pointer.button!==0)return;if(this.axis!==null){this.raycaster.setFromCamera(pointer,this.camera);const planeIntersect=this.intersectObjectWithRay(this.plane,this.raycaster,true);if(planeIntersect){let space=this.space;if(this.mode===\"scale\"){space=\"local\";}else if(this.axis===\"E\"||this.axis===\"XYZE\"||this.axis===\"XYZ\"){space=\"world\";}if(space===\"local\"&&this.mode===\"rotate\"){const snap=this.rotationSnap;if(this.axis===\"X\"&&snap)this.object.rotation.x=Math.round(this.object.rotation.x/snap)*snap;if(this.axis===\"Y\"&&snap)this.object.rotation.y=Math.round(this.object.rotation.y/snap)*snap;if(this.axis===\"Z\"&&snap)this.object.rotation.z=Math.round(this.object.rotation.z/snap)*snap;}this.object.updateMatrixWorld();if(this.object.parent){this.object.parent.updateMatrixWorld();}this.positionStart.copy(this.object.position);this.quaternionStart.copy(this.object.quaternion);this.scaleStart.copy(this.object.scale);this.object.matrixWorld.decompose(this.worldPositionStart,this.worldQuaternionStart,this.worldScaleStart);this.pointStart.copy(planeIntersect.point).sub(this.worldPositionStart);}this.dragging=true;this.mouseDownEvent.mode=this.mode;this.dispatchEvent(this.mouseDownEvent);}});__publicField(this,\"pointerMove\",pointer=>{const axis=this.axis;const mode=this.mode;const object=this.object;let space=this.space;if(mode===\"scale\"){space=\"local\";}else if(axis===\"E\"||axis===\"XYZE\"||axis===\"XYZ\"){space=\"world\";}if(object===void 0||axis===null||this.dragging===false||pointer.button!==-1)return;this.raycaster.setFromCamera(pointer,this.camera);const planeIntersect=this.intersectObjectWithRay(this.plane,this.raycaster,true);if(!planeIntersect)return;this.pointEnd.copy(planeIntersect.point).sub(this.worldPositionStart);if(mode===\"translate\"){this.offset.copy(this.pointEnd).sub(this.pointStart);if(space===\"local\"&&axis!==\"XYZ\"){this.offset.applyQuaternion(this.worldQuaternionInv);}if(axis.indexOf(\"X\")===-1)this.offset.x=0;if(axis.indexOf(\"Y\")===-1)this.offset.y=0;if(axis.indexOf(\"Z\")===-1)this.offset.z=0;if(space===\"local\"&&axis!==\"XYZ\"){this.offset.applyQuaternion(this.quaternionStart).divide(this.parentScale);}else{this.offset.applyQuaternion(this.parentQuaternionInv).divide(this.parentScale);}object.position.copy(this.offset).add(this.positionStart);if(this.translationSnap){if(space===\"local\"){object.position.applyQuaternion(this.tempQuaternion.copy(this.quaternionStart).invert());if(axis.search(\"X\")!==-1){object.position.x=Math.round(object.position.x/this.translationSnap)*this.translationSnap;}if(axis.search(\"Y\")!==-1){object.position.y=Math.round(object.position.y/this.translationSnap)*this.translationSnap;}if(axis.search(\"Z\")!==-1){object.position.z=Math.round(object.position.z/this.translationSnap)*this.translationSnap;}object.position.applyQuaternion(this.quaternionStart);}if(space===\"world\"){if(object.parent){object.position.add(this.tempVector.setFromMatrixPosition(object.parent.matrixWorld));}if(axis.search(\"X\")!==-1){object.position.x=Math.round(object.position.x/this.translationSnap)*this.translationSnap;}if(axis.search(\"Y\")!==-1){object.position.y=Math.round(object.position.y/this.translationSnap)*this.translationSnap;}if(axis.search(\"Z\")!==-1){object.position.z=Math.round(object.position.z/this.translationSnap)*this.translationSnap;}if(object.parent){object.position.sub(this.tempVector.setFromMatrixPosition(object.parent.matrixWorld));}}}}else if(mode===\"scale\"){if(axis.search(\"XYZ\")!==-1){let d=this.pointEnd.length()/this.pointStart.length();if(this.pointEnd.dot(this.pointStart)<0)d*=-1;this.tempVector2.set(d,d,d);}else{this.tempVector.copy(this.pointStart);this.tempVector2.copy(this.pointEnd);this.tempVector.applyQuaternion(this.worldQuaternionInv);this.tempVector2.applyQuaternion(this.worldQuaternionInv);this.tempVector2.divide(this.tempVector);if(axis.search(\"X\")===-1){this.tempVector2.x=1;}if(axis.search(\"Y\")===-1){this.tempVector2.y=1;}if(axis.search(\"Z\")===-1){this.tempVector2.z=1;}}object.scale.copy(this.scaleStart).multiply(this.tempVector2);if(this.scaleSnap&&this.object){if(axis.search(\"X\")!==-1){this.object.scale.x=Math.round(object.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap;}if(axis.search(\"Y\")!==-1){object.scale.y=Math.round(object.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap;}if(axis.search(\"Z\")!==-1){object.scale.z=Math.round(object.scale.z/this.scaleSnap)*this.scaleSnap||this.scaleSnap;}}}else if(mode===\"rotate\"){this.offset.copy(this.pointEnd).sub(this.pointStart);const ROTATION_SPEED=20/this.worldPosition.distanceTo(this.tempVector.setFromMatrixPosition(this.camera.matrixWorld));if(axis===\"E\"){this.rotationAxis.copy(this.eye);this.rotationAngle=this.pointEnd.angleTo(this.pointStart);this.startNorm.copy(this.pointStart).normalize();this.endNorm.copy(this.pointEnd).normalize();this.rotationAngle*=this.endNorm.cross(this.startNorm).dot(this.eye)<0?1:-1;}else if(axis===\"XYZE\"){this.rotationAxis.copy(this.offset).cross(this.eye).normalize();this.rotationAngle=this.offset.dot(this.tempVector.copy(this.rotationAxis).cross(this.eye))*ROTATION_SPEED;}else if(axis===\"X\"||axis===\"Y\"||axis===\"Z\"){this.rotationAxis.copy(this.unit[axis]);this.tempVector.copy(this.unit[axis]);if(space===\"local\"){this.tempVector.applyQuaternion(this.worldQuaternion);}this.rotationAngle=this.offset.dot(this.tempVector.cross(this.eye).normalize())*ROTATION_SPEED;}if(this.rotationSnap){this.rotationAngle=Math.round(this.rotationAngle/this.rotationSnap)*this.rotationSnap;}if(space===\"local\"&&axis!==\"E\"&&axis!==\"XYZE\"){object.quaternion.copy(this.quaternionStart);object.quaternion.multiply(this.tempQuaternion.setFromAxisAngle(this.rotationAxis,this.rotationAngle)).normalize();}else{this.rotationAxis.applyQuaternion(this.parentQuaternionInv);object.quaternion.copy(this.tempQuaternion.setFromAxisAngle(this.rotationAxis,this.rotationAngle));object.quaternion.multiply(this.quaternionStart).normalize();}}this.dispatchEvent(this.changeEvent);this.dispatchEvent(this.objectChangeEvent);});__publicField(this,\"pointerUp\",pointer=>{if(pointer.button!==0)return;if(this.dragging&&this.axis!==null){this.mouseUpEvent.mode=this.mode;this.dispatchEvent(this.mouseUpEvent);}this.dragging=false;this.axis=null;});__publicField(this,\"getPointer\",event=>{var _a2,_b2;if(this.domElement&&((_a2=this.domElement.ownerDocument)==null?void 0:_a2.pointerLockElement)){return{x:0,y:0,button:event.button};}else{const pointer=event.changedTouches?event.changedTouches[0]:event;const rect=(_b2=this.domElement)==null?void 0:_b2.getBoundingClientRect();return{x:(pointer.clientX-rect.left)/rect.width*2-1,y:-(pointer.clientY-rect.top)/rect.height*2+1,button:event.button};}});__publicField(this,\"onPointerHover\",event=>{if(!this.enabled)return;switch(event.pointerType){case\"mouse\":case\"pen\":this.pointerHover(this.getPointer(event));break;}});__publicField(this,\"onPointerDown\",event=>{if(!this.enabled||!this.domElement)return;this.domElement.style.touchAction=\"none\";this.domElement.ownerDocument.addEventListener(\"pointermove\",this.onPointerMove);this.pointerHover(this.getPointer(event));this.pointerDown(this.getPointer(event));});__publicField(this,\"onPointerMove\",event=>{if(!this.enabled)return;this.pointerMove(this.getPointer(event));});__publicField(this,\"onPointerUp\",event=>{if(!this.enabled||!this.domElement)return;this.domElement.style.touchAction=\"\";this.domElement.ownerDocument.removeEventListener(\"pointermove\",this.onPointerMove);this.pointerUp(this.getPointer(event));});__publicField(this,\"getMode\",()=>this.mode);__publicField(this,\"setMode\",mode=>{this.mode=mode;});__publicField(this,\"setTranslationSnap\",translationSnap=>{this.translationSnap=translationSnap;});__publicField(this,\"setRotationSnap\",rotationSnap=>{this.rotationSnap=rotationSnap;});__publicField(this,\"setScaleSnap\",scaleSnap=>{this.scaleSnap=scaleSnap;});__publicField(this,\"setSize\",size2=>{this.size=size2;});__publicField(this,\"setSpace\",space=>{this.space=space;});__publicField(this,\"update\",()=>{console.warn(\"THREE.TransformControls: update function has no more functionality and therefore has been deprecated.\");});__publicField(this,\"connect\",domElement=>{if(domElement===document){console.error('THREE.OrbitControls: \"document\" should not be used as the target \"domElement\". Please use \"renderer.domElement\" instead.');}this.domElement=domElement;this.domElement.addEventListener(\"pointerdown\",this.onPointerDown);this.domElement.addEventListener(\"pointermove\",this.onPointerHover);this.domElement.ownerDocument.addEventListener(\"pointerup\",this.onPointerUp);});__publicField(this,\"dispose\",()=>{var _a2,_b2,_c,_d,_e,_f;(_a2=this.domElement)==null?void 0:_a2.removeEventListener(\"pointerdown\",this.onPointerDown);(_b2=this.domElement)==null?void 0:_b2.removeEventListener(\"pointermove\",this.onPointerHover);(_d=(_c=this.domElement)==null?void 0:_c.ownerDocument)==null?void 0:_d.removeEventListener(\"pointermove\",this.onPointerMove);(_f=(_e=this.domElement)==null?void 0:_e.ownerDocument)==null?void 0:_f.removeEventListener(\"pointerup\",this.onPointerUp);this.traverse(child=>{const mesh=child;if(mesh.geometry){mesh.geometry.dispose();}if(mesh.material){mesh.material.dispose();}});});this.domElement=domElement;this.camera=camera;this.gizmo=new TransformControlsGizmo();this.add(this.gizmo);this.plane=new TransformControlsPlane();this.add(this.plane);const defineProperty=(propName,defaultValue)=>{let propValue=defaultValue;Object.defineProperty(this,propName,{get:function(){return propValue!==void 0?propValue:defaultValue;},set:function(value){if(propValue!==value){propValue=value;this.plane[propName]=value;this.gizmo[propName]=value;this.dispatchEvent({type:propName+\"-changed\",value});this.dispatchEvent(this.changeEvent);}}});this[propName]=defaultValue;this.plane[propName]=defaultValue;this.gizmo[propName]=defaultValue;};defineProperty(\"camera\",this.camera);defineProperty(\"object\",this.object);defineProperty(\"enabled\",this.enabled);defineProperty(\"axis\",this.axis);defineProperty(\"mode\",this.mode);defineProperty(\"translationSnap\",this.translationSnap);defineProperty(\"rotationSnap\",this.rotationSnap);defineProperty(\"scaleSnap\",this.scaleSnap);defineProperty(\"space\",this.space);defineProperty(\"size\",this.size);defineProperty(\"dragging\",this.dragging);defineProperty(\"showX\",this.showX);defineProperty(\"showY\",this.showY);defineProperty(\"showZ\",this.showZ);defineProperty(\"worldPosition\",this.worldPosition);defineProperty(\"worldPositionStart\",this.worldPositionStart);defineProperty(\"worldQuaternion\",this.worldQuaternion);defineProperty(\"worldQuaternionStart\",this.worldQuaternionStart);defineProperty(\"cameraPosition\",this.cameraPosition);defineProperty(\"cameraQuaternion\",this.cameraQuaternion);defineProperty(\"pointStart\",this.pointStart);defineProperty(\"pointEnd\",this.pointEnd);defineProperty(\"rotationAxis\",this.rotationAxis);defineProperty(\"rotationAngle\",this.rotationAngle);defineProperty(\"eye\",this.eye);if(domElement!==void 0)this.connect(domElement);}}class TransformControlsGizmo extends Object3D{constructor(){super();__publicField(this,\"isTransformControlsGizmo\",true);__publicField(this,\"type\",\"TransformControlsGizmo\");__publicField(this,\"tempVector\",new Vector3(0,0,0));__publicField(this,\"tempEuler\",new Euler());__publicField(this,\"alignVector\",new Vector3(0,1,0));__publicField(this,\"zeroVector\",new Vector3(0,0,0));__publicField(this,\"lookAtMatrix\",new Matrix4());__publicField(this,\"tempQuaternion\",new Quaternion());__publicField(this,\"tempQuaternion2\",new Quaternion());__publicField(this,\"identityQuaternion\",new Quaternion());__publicField(this,\"unitX\",new Vector3(1,0,0));__publicField(this,\"unitY\",new Vector3(0,1,0));__publicField(this,\"unitZ\",new Vector3(0,0,1));__publicField(this,\"gizmo\");__publicField(this,\"picker\");__publicField(this,\"helper\");// these are set from parent class TransformControls\n__publicField(this,\"rotationAxis\",new Vector3());__publicField(this,\"cameraPosition\",new Vector3());__publicField(this,\"worldPositionStart\",new Vector3());__publicField(this,\"worldQuaternionStart\",new Quaternion());__publicField(this,\"worldPosition\",new Vector3());__publicField(this,\"worldQuaternion\",new Quaternion());__publicField(this,\"eye\",new Vector3());__publicField(this,\"camera\",null);__publicField(this,\"enabled\",true);__publicField(this,\"axis\",null);__publicField(this,\"mode\",\"translate\");__publicField(this,\"space\",\"world\");__publicField(this,\"size\",1);__publicField(this,\"dragging\",false);__publicField(this,\"showX\",true);__publicField(this,\"showY\",true);__publicField(this,\"showZ\",true);// updateMatrixWorld will update transformations and appearance of individual handles\n__publicField(this,\"updateMatrixWorld\",()=>{let space=this.space;if(this.mode===\"scale\"){space=\"local\";}const quaternion=space===\"local\"?this.worldQuaternion:this.identityQuaternion;this.gizmo[\"translate\"].visible=this.mode===\"translate\";this.gizmo[\"rotate\"].visible=this.mode===\"rotate\";this.gizmo[\"scale\"].visible=this.mode===\"scale\";this.helper[\"translate\"].visible=this.mode===\"translate\";this.helper[\"rotate\"].visible=this.mode===\"rotate\";this.helper[\"scale\"].visible=this.mode===\"scale\";let handles=[];handles=handles.concat(this.picker[this.mode].children);handles=handles.concat(this.gizmo[this.mode].children);handles=handles.concat(this.helper[this.mode].children);for(let i2=0;i20.9){handle.visible=false;}}if(this.axis===\"Y\"){this.tempQuaternion.setFromEuler(this.tempEuler.set(0,0,Math.PI/2));handle.quaternion.copy(quaternion).multiply(this.tempQuaternion);if(Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(quaternion).dot(this.eye))>0.9){handle.visible=false;}}if(this.axis===\"Z\"){this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0));handle.quaternion.copy(quaternion).multiply(this.tempQuaternion);if(Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(quaternion).dot(this.eye))>0.9){handle.visible=false;}}if(this.axis===\"XYZE\"){this.tempQuaternion.setFromEuler(this.tempEuler.set(0,Math.PI/2,0));this.alignVector.copy(this.rotationAxis);handle.quaternion.setFromRotationMatrix(this.lookAtMatrix.lookAt(this.zeroVector,this.alignVector,this.unitY));handle.quaternion.multiply(this.tempQuaternion);handle.visible=this.dragging;}if(this.axis===\"E\"){handle.visible=false;}}else if(handle.name===\"START\"){handle.position.copy(this.worldPositionStart);handle.visible=this.dragging;}else if(handle.name===\"END\"){handle.position.copy(this.worldPosition);handle.visible=this.dragging;}else if(handle.name===\"DELTA\"){handle.position.copy(this.worldPositionStart);handle.quaternion.copy(this.worldQuaternionStart);this.tempVector.set(1e-10,1e-10,1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1);this.tempVector.applyQuaternion(this.worldQuaternionStart.clone().invert());handle.scale.copy(this.tempVector);handle.visible=this.dragging;}else{handle.quaternion.copy(quaternion);if(this.dragging){handle.position.copy(this.worldPositionStart);}else{handle.position.copy(this.worldPosition);}if(this.axis){handle.visible=this.axis.search(handle.name)!==-1;}}continue;}handle.quaternion.copy(quaternion);if(this.mode===\"translate\"||this.mode===\"scale\"){const AXIS_HIDE_TRESHOLD=0.99;const PLANE_HIDE_TRESHOLD=0.2;const AXIS_FLIP_TRESHOLD=0;if(handle.name===\"X\"||handle.name===\"XYZX\"){if(Math.abs(this.alignVector.copy(this.unitX).applyQuaternion(quaternion).dot(this.eye))>AXIS_HIDE_TRESHOLD){handle.scale.set(1e-10,1e-10,1e-10);handle.visible=false;}}if(handle.name===\"Y\"||handle.name===\"XYZY\"){if(Math.abs(this.alignVector.copy(this.unitY).applyQuaternion(quaternion).dot(this.eye))>AXIS_HIDE_TRESHOLD){handle.scale.set(1e-10,1e-10,1e-10);handle.visible=false;}}if(handle.name===\"Z\"||handle.name===\"XYZZ\"){if(Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(quaternion).dot(this.eye))>AXIS_HIDE_TRESHOLD){handle.scale.set(1e-10,1e-10,1e-10);handle.visible=false;}}if(handle.name===\"XY\"){if(Math.abs(this.alignVector.copy(this.unitZ).applyQuaternion(quaternion).dot(this.eye)){const geometry2=new BufferGeometry();const vertices=[];for(let i2=0;i2<=64*arc;++i2){vertices.push(0,Math.cos(i2/32*Math.PI)*radius,Math.sin(i2/32*Math.PI)*radius);}geometry2.setAttribute(\"position\",new Float32BufferAttribute(vertices,3));return geometry2;};const TranslateHelperGeometry=()=>{const geometry2=new BufferGeometry();geometry2.setAttribute(\"position\",new Float32BufferAttribute([0,0,0,1,1,1],3));return geometry2;};const gizmoTranslate={X:[[new Mesh(arrowGeometry,matRed),[1,0,0],[0,0,-Math.PI/2],null,\"fwd\"],[new Mesh(arrowGeometry,matRed),[1,0,0],[0,0,Math.PI/2],null,\"bwd\"],[new Line(lineGeometry,matLineRed)]],Y:[[new Mesh(arrowGeometry,matGreen),[0,1,0],null,null,\"fwd\"],[new Mesh(arrowGeometry,matGreen),[0,1,0],[Math.PI,0,0],null,\"bwd\"],[new Line(lineGeometry,matLineGreen),null,[0,0,Math.PI/2]]],Z:[[new Mesh(arrowGeometry,matBlue),[0,0,1],[Math.PI/2,0,0],null,\"fwd\"],[new Mesh(arrowGeometry,matBlue),[0,0,1],[-Math.PI/2,0,0],null,\"bwd\"],[new Line(lineGeometry,matLineBlue),null,[0,-Math.PI/2,0]]],XYZ:[[new Mesh(new OctahedronGeometry(0.1,0),matWhiteTransparent.clone()),[0,0,0],[0,0,0]]],XY:[[new Mesh(new PlaneGeometry(0.295,0.295),matYellowTransparent.clone()),[0.15,0.15,0]],[new Line(lineGeometry,matLineYellow),[0.18,0.3,0],null,[0.125,1,1]],[new Line(lineGeometry,matLineYellow),[0.3,0.18,0],[0,0,Math.PI/2],[0.125,1,1]]],YZ:[[new Mesh(new PlaneGeometry(0.295,0.295),matCyanTransparent.clone()),[0,0.15,0.15],[0,Math.PI/2,0]],[new Line(lineGeometry,matLineCyan),[0,0.18,0.3],[0,0,Math.PI/2],[0.125,1,1]],[new Line(lineGeometry,matLineCyan),[0,0.3,0.18],[0,-Math.PI/2,0],[0.125,1,1]]],XZ:[[new Mesh(new PlaneGeometry(0.295,0.295),matMagentaTransparent.clone()),[0.15,0,0.15],[-Math.PI/2,0,0]],[new Line(lineGeometry,matLineMagenta),[0.18,0,0.3],null,[0.125,1,1]],[new Line(lineGeometry,matLineMagenta),[0.3,0,0.18],[0,-Math.PI/2,0],[0.125,1,1]]]};const pickerTranslate={X:[[new Mesh(new CylinderGeometry(0.2,0,1,4,1,false),matInvisible),[0.6,0,0],[0,0,-Math.PI/2]]],Y:[[new Mesh(new CylinderGeometry(0.2,0,1,4,1,false),matInvisible),[0,0.6,0]]],Z:[[new Mesh(new CylinderGeometry(0.2,0,1,4,1,false),matInvisible),[0,0,0.6],[Math.PI/2,0,0]]],XYZ:[[new Mesh(new OctahedronGeometry(0.2,0),matInvisible)]],XY:[[new Mesh(new PlaneGeometry(0.4,0.4),matInvisible),[0.2,0.2,0]]],YZ:[[new Mesh(new PlaneGeometry(0.4,0.4),matInvisible),[0,0.2,0.2],[0,Math.PI/2,0]]],XZ:[[new Mesh(new PlaneGeometry(0.4,0.4),matInvisible),[0.2,0,0.2],[-Math.PI/2,0,0]]]};const helperTranslate={START:[[new Mesh(new OctahedronGeometry(0.01,2),matHelper),null,null,null,\"helper\"]],END:[[new Mesh(new OctahedronGeometry(0.01,2),matHelper),null,null,null,\"helper\"]],DELTA:[[new Line(TranslateHelperGeometry(),matHelper),null,null,null,\"helper\"]],X:[[new Line(lineGeometry,matHelper.clone()),[-1e3,0,0],null,[1e6,1,1],\"helper\"]],Y:[[new Line(lineGeometry,matHelper.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],\"helper\"]],Z:[[new Line(lineGeometry,matHelper.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],\"helper\"]]};const gizmoRotate={X:[[new Line(CircleGeometry(1,0.5),matLineRed)],[new Mesh(new OctahedronGeometry(0.04,0),matRed),[0,0,0.99],null,[1,3,1]]],Y:[[new Line(CircleGeometry(1,0.5),matLineGreen),null,[0,0,-Math.PI/2]],[new Mesh(new OctahedronGeometry(0.04,0),matGreen),[0,0,0.99],null,[3,1,1]]],Z:[[new Line(CircleGeometry(1,0.5),matLineBlue),null,[0,Math.PI/2,0]],[new Mesh(new OctahedronGeometry(0.04,0),matBlue),[0.99,0,0],null,[1,3,1]]],E:[[new Line(CircleGeometry(1.25,1),matLineYellowTransparent),null,[0,Math.PI/2,0]],[new Mesh(new CylinderGeometry(0.03,0,0.15,4,1,false),matLineYellowTransparent),[1.17,0,0],[0,0,-Math.PI/2],[1,1,1e-3]],[new Mesh(new CylinderGeometry(0.03,0,0.15,4,1,false),matLineYellowTransparent),[-1.17,0,0],[0,0,Math.PI/2],[1,1,1e-3]],[new Mesh(new CylinderGeometry(0.03,0,0.15,4,1,false),matLineYellowTransparent),[0,-1.17,0],[Math.PI,0,0],[1,1,1e-3]],[new Mesh(new CylinderGeometry(0.03,0,0.15,4,1,false),matLineYellowTransparent),[0,1.17,0],[0,0,0],[1,1,1e-3]]],XYZE:[[new Line(CircleGeometry(1,1),matLineGray),null,[0,Math.PI/2,0]]]};const helperRotate={AXIS:[[new Line(lineGeometry,matHelper.clone()),[-1e3,0,0],null,[1e6,1,1],\"helper\"]]};const pickerRotate={X:[[new Mesh(new TorusGeometry(1,0.1,4,24),matInvisible),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],Y:[[new Mesh(new TorusGeometry(1,0.1,4,24),matInvisible),[0,0,0],[Math.PI/2,0,0]]],Z:[[new Mesh(new TorusGeometry(1,0.1,4,24),matInvisible),[0,0,0],[0,0,-Math.PI/2]]],E:[[new Mesh(new TorusGeometry(1.25,0.1,2,24),matInvisible)]],XYZE:[[new Mesh(new SphereGeometry(0.7,10,8),matInvisible)]]};const gizmoScale={X:[[new Mesh(scaleHandleGeometry,matRed),[0.8,0,0],[0,0,-Math.PI/2]],[new Line(lineGeometry,matLineRed),null,null,[0.8,1,1]]],Y:[[new Mesh(scaleHandleGeometry,matGreen),[0,0.8,0]],[new Line(lineGeometry,matLineGreen),null,[0,0,Math.PI/2],[0.8,1,1]]],Z:[[new Mesh(scaleHandleGeometry,matBlue),[0,0,0.8],[Math.PI/2,0,0]],[new Line(lineGeometry,matLineBlue),null,[0,-Math.PI/2,0],[0.8,1,1]]],XY:[[new Mesh(scaleHandleGeometry,matYellowTransparent),[0.85,0.85,0],null,[2,2,0.2]],[new Line(lineGeometry,matLineYellow),[0.855,0.98,0],null,[0.125,1,1]],[new Line(lineGeometry,matLineYellow),[0.98,0.855,0],[0,0,Math.PI/2],[0.125,1,1]]],YZ:[[new Mesh(scaleHandleGeometry,matCyanTransparent),[0,0.85,0.85],null,[0.2,2,2]],[new Line(lineGeometry,matLineCyan),[0,0.855,0.98],[0,0,Math.PI/2],[0.125,1,1]],[new Line(lineGeometry,matLineCyan),[0,0.98,0.855],[0,-Math.PI/2,0],[0.125,1,1]]],XZ:[[new Mesh(scaleHandleGeometry,matMagentaTransparent),[0.85,0,0.85],null,[2,0.2,2]],[new Line(lineGeometry,matLineMagenta),[0.855,0,0.98],null,[0.125,1,1]],[new Line(lineGeometry,matLineMagenta),[0.98,0,0.855],[0,-Math.PI/2,0],[0.125,1,1]]],XYZX:[[new Mesh(new BoxGeometry(0.125,0.125,0.125),matWhiteTransparent.clone()),[1.1,0,0]]],XYZY:[[new Mesh(new BoxGeometry(0.125,0.125,0.125),matWhiteTransparent.clone()),[0,1.1,0]]],XYZZ:[[new Mesh(new BoxGeometry(0.125,0.125,0.125),matWhiteTransparent.clone()),[0,0,1.1]]]};const pickerScale={X:[[new Mesh(new CylinderGeometry(0.2,0,0.8,4,1,false),matInvisible),[0.5,0,0],[0,0,-Math.PI/2]]],Y:[[new Mesh(new CylinderGeometry(0.2,0,0.8,4,1,false),matInvisible),[0,0.5,0]]],Z:[[new Mesh(new CylinderGeometry(0.2,0,0.8,4,1,false),matInvisible),[0,0,0.5],[Math.PI/2,0,0]]],XY:[[new Mesh(scaleHandleGeometry,matInvisible),[0.85,0.85,0],null,[3,3,0.2]]],YZ:[[new Mesh(scaleHandleGeometry,matInvisible),[0,0.85,0.85],null,[0.2,3,3]]],XZ:[[new Mesh(scaleHandleGeometry,matInvisible),[0.85,0,0.85],null,[3,0.2,3]]],XYZX:[[new Mesh(new BoxGeometry(0.2,0.2,0.2),matInvisible),[1.1,0,0]]],XYZY:[[new Mesh(new BoxGeometry(0.2,0.2,0.2),matInvisible),[0,1.1,0]]],XYZZ:[[new Mesh(new BoxGeometry(0.2,0.2,0.2),matInvisible),[0,0,1.1]]]};const helperScale={X:[[new Line(lineGeometry,matHelper.clone()),[-1e3,0,0],null,[1e6,1,1],\"helper\"]],Y:[[new Line(lineGeometry,matHelper.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],\"helper\"]],Z:[[new Line(lineGeometry,matHelper.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],\"helper\"]]};const setupGizmo=gizmoMap=>{const gizmo=new Object3D();for(let name in gizmoMap){for(let i2=gizmoMap[name].length;i2--;){const object=gizmoMap[name][i2][0].clone();const position=gizmoMap[name][i2][1];const rotation=gizmoMap[name][i2][2];const scale=gizmoMap[name][i2][3];const tag=gizmoMap[name][i2][4];object.name=name;object.tag=tag;if(position){object.position.set(position[0],position[1],position[2]);}if(rotation){object.rotation.set(rotation[0],rotation[1],rotation[2]);}if(scale){object.scale.set(scale[0],scale[1],scale[2]);}object.updateMatrix();const tempGeometry=object.geometry.clone();tempGeometry.applyMatrix4(object.matrix);object.geometry=tempGeometry;object.renderOrder=Infinity;object.position.set(0,0,0);object.rotation.set(0,0,0);object.scale.set(1,1,1);gizmo.add(object);}}return gizmo;};this.gizmo={};this.picker={};this.helper={};this.add(this.gizmo[\"translate\"]=setupGizmo(gizmoTranslate));this.add(this.gizmo[\"rotate\"]=setupGizmo(gizmoRotate));this.add(this.gizmo[\"scale\"]=setupGizmo(gizmoScale));this.add(this.picker[\"translate\"]=setupGizmo(pickerTranslate));this.add(this.picker[\"rotate\"]=setupGizmo(pickerRotate));this.add(this.picker[\"scale\"]=setupGizmo(pickerScale));this.add(this.helper[\"translate\"]=setupGizmo(helperTranslate));this.add(this.helper[\"rotate\"]=setupGizmo(helperRotate));this.add(this.helper[\"scale\"]=setupGizmo(helperScale));this.picker[\"translate\"].visible=false;this.picker[\"rotate\"].visible=false;this.picker[\"scale\"].visible=false;}}class TransformControlsPlane extends Mesh{constructor(){super(new PlaneGeometry(1e5,1e5,2,2),new MeshBasicMaterial({visible:false,wireframe:true,side:DoubleSide,transparent:true,opacity:0.1,toneMapped:false}));__publicField(this,\"isTransformControlsPlane\",true);__publicField(this,\"type\",\"TransformControlsPlane\");__publicField(this,\"unitX\",new Vector3(1,0,0));__publicField(this,\"unitY\",new Vector3(0,1,0));__publicField(this,\"unitZ\",new Vector3(0,0,1));__publicField(this,\"tempVector\",new Vector3());__publicField(this,\"dirVector\",new Vector3());__publicField(this,\"alignVector\",new Vector3());__publicField(this,\"tempMatrix\",new Matrix4());__publicField(this,\"identityQuaternion\",new Quaternion());// these are set from parent class TransformControls\n__publicField(this,\"cameraQuaternion\",new Quaternion());__publicField(this,\"worldPosition\",new Vector3());__publicField(this,\"worldQuaternion\",new Quaternion());__publicField(this,\"eye\",new Vector3());__publicField(this,\"axis\",null);__publicField(this,\"mode\",\"translate\");__publicField(this,\"space\",\"world\");__publicField(this,\"updateMatrixWorld\",()=>{let space=this.space;this.position.copy(this.worldPosition);if(this.mode===\"scale\")space=\"local\";this.unitX.set(1,0,0).applyQuaternion(space===\"local\"?this.worldQuaternion:this.identityQuaternion);this.unitY.set(0,1,0).applyQuaternion(space===\"local\"?this.worldQuaternion:this.identityQuaternion);this.unitZ.set(0,0,1).applyQuaternion(space===\"local\"?this.worldQuaternion:this.identityQuaternion);this.alignVector.copy(this.unitY);switch(this.mode){case\"translate\":case\"scale\":switch(this.axis){case\"X\":this.alignVector.copy(this.eye).cross(this.unitX);this.dirVector.copy(this.unitX).cross(this.alignVector);break;case\"Y\":this.alignVector.copy(this.eye).cross(this.unitY);this.dirVector.copy(this.unitY).cross(this.alignVector);break;case\"Z\":this.alignVector.copy(this.eye).cross(this.unitZ);this.dirVector.copy(this.unitZ).cross(this.alignVector);break;case\"XY\":this.dirVector.copy(this.unitZ);break;case\"YZ\":this.dirVector.copy(this.unitX);break;case\"XZ\":this.alignVector.copy(this.unitZ);this.dirVector.copy(this.unitY);break;case\"XYZ\":case\"E\":this.dirVector.set(0,0,0);break;}break;case\"rotate\":default:this.dirVector.set(0,0,0);}if(this.dirVector.length()===0){this.quaternion.copy(this.cameraQuaternion);}else{this.tempMatrix.lookAt(this.tempVector.set(0,0,0),this.dirVector,this.alignVector);this.quaternion.setFromRotationMatrix(this.tempMatrix);}super.updateMatrixWorld();});}}class DragControls extends EventDispatcher{constructor(_objects,_camera,_domElement){super();__publicField(this,\"enabled\",true);__publicField(this,\"transformGroup\",false);__publicField(this,\"_objects\");__publicField(this,\"_camera\");__publicField(this,\"_domElement\");__publicField(this,\"_plane\",new Plane());__publicField(this,\"_raycaster\",new Raycaster());__publicField(this,\"_mouse\",new Vector2());__publicField(this,\"_offset\",new Vector3());__publicField(this,\"_intersection\",new Vector3());__publicField(this,\"_worldPosition\",new Vector3());__publicField(this,\"_inverseMatrix\",new Matrix4());__publicField(this,\"_intersections\",[]);__publicField(this,\"_selected\",null);__publicField(this,\"_hovered\",null);__publicField(this,\"activate\",()=>{this._domElement.addEventListener(\"pointermove\",this.onPointerMove);this._domElement.addEventListener(\"pointerdown\",this.onPointerDown);this._domElement.addEventListener(\"pointerup\",this.onPointerCancel);this._domElement.addEventListener(\"pointerleave\",this.onPointerCancel);this._domElement.addEventListener(\"touchmove\",this.onTouchMove);this._domElement.addEventListener(\"touchstart\",this.onTouchStart);this._domElement.addEventListener(\"touchend\",this.onTouchEnd);});__publicField(this,\"deactivate\",()=>{this._domElement.removeEventListener(\"pointermove\",this.onPointerMove);this._domElement.removeEventListener(\"pointerdown\",this.onPointerDown);this._domElement.removeEventListener(\"pointerup\",this.onPointerCancel);this._domElement.removeEventListener(\"pointerleave\",this.onPointerCancel);this._domElement.removeEventListener(\"touchmove\",this.onTouchMove);this._domElement.removeEventListener(\"touchstart\",this.onTouchStart);this._domElement.removeEventListener(\"touchend\",this.onTouchEnd);this._domElement.style.cursor=\"\";});// TODO: confirm if this can be removed?\n__publicField(this,\"dispose\",()=>this.deactivate());__publicField(this,\"getObjects\",()=>this._objects);__publicField(this,\"getRaycaster\",()=>this._raycaster);__publicField(this,\"onMouseMove\",event=>{const rect=this._domElement.getBoundingClientRect();this._mouse.x=(event.clientX-rect.left)/rect.width*2-1;this._mouse.y=-((event.clientY-rect.top)/rect.height)*2+1;this._raycaster.setFromCamera(this._mouse,this._camera);if(this._selected&&this.enabled){if(this._raycaster.ray.intersectPlane(this._plane,this._intersection)){this._selected.position.copy(this._intersection.sub(this._offset).applyMatrix4(this._inverseMatrix));}this.dispatchEvent({type:\"drag\",object:this._selected});return;}this._intersections.length=0;this._raycaster.setFromCamera(this._mouse,this._camera);this._raycaster.intersectObjects(this._objects,true,this._intersections);if(this._intersections.length>0){const object=this._intersections[0].object;this._plane.setFromNormalAndCoplanarPoint(this._camera.getWorldDirection(this._plane.normal),this._worldPosition.setFromMatrixPosition(object.matrixWorld));if(this._hovered!==object){this.dispatchEvent({type:\"hoveron\",object});this._domElement.style.cursor=\"pointer\";this._hovered=object;}}else{if(this._hovered!==null){this.dispatchEvent({type:\"hoveroff\",object:this._hovered});this._domElement.style.cursor=\"auto\";this._hovered=null;}}});__publicField(this,\"onMouseDown\",()=>{this._intersections.length=0;this._raycaster.setFromCamera(this._mouse,this._camera);this._raycaster.intersectObjects(this._objects,true,this._intersections);if(this._intersections.length>0){this._selected=this.transformGroup===true?this._objects[0]:this._intersections[0].object;if(this._raycaster.ray.intersectPlane(this._plane,this._intersection)&&this._selected.parent){this._inverseMatrix.copy(this._selected.parent.matrixWorld).invert();this._offset.copy(this._intersection).sub(this._worldPosition.setFromMatrixPosition(this._selected.matrixWorld));}this._domElement.style.cursor=\"move\";this.dispatchEvent({type:\"dragstart\",object:this._selected});}});__publicField(this,\"onMouseCancel\",()=>{if(this._selected){this.dispatchEvent({type:\"dragend\",object:this._selected});this._selected=null;}this._domElement.style.cursor=this._hovered?\"pointer\":\"auto\";});__publicField(this,\"onPointerMove\",event=>{switch(event.pointerType){case\"mouse\":case\"pen\":this.onMouseMove(event);break;}});__publicField(this,\"onPointerDown\",event=>{switch(event.pointerType){case\"mouse\":case\"pen\":this.onMouseDown();break;}});__publicField(this,\"onPointerCancel\",event=>{switch(event.pointerType){case\"mouse\":case\"pen\":this.onMouseCancel();break;}});__publicField(this,\"onTouchMove\",event=>{event.preventDefault();const newEvent=event.changedTouches[0];const rect=this._domElement.getBoundingClientRect();this._mouse.x=(newEvent.clientX-rect.left)/rect.width*2-1;this._mouse.y=-((newEvent.clientY-rect.top)/rect.height)*2+1;this._raycaster.setFromCamera(this._mouse,this._camera);if(this._selected&&this.enabled){if(this._raycaster.ray.intersectPlane(this._plane,this._intersection)){this._selected.position.copy(this._intersection.sub(this._offset).applyMatrix4(this._inverseMatrix));}this.dispatchEvent({type:\"drag\",object:this._selected});return;}});__publicField(this,\"onTouchStart\",event=>{event.preventDefault();const newEvent=event.changedTouches[0];const rect=this._domElement.getBoundingClientRect();this._mouse.x=(newEvent.clientX-rect.left)/rect.width*2-1;this._mouse.y=-((newEvent.clientY-rect.top)/rect.height)*2+1;this._intersections.length=0;this._raycaster.setFromCamera(this._mouse,this._camera);this._raycaster.intersectObjects(this._objects,true,this._intersections);if(this._intersections.length>0){this._selected=this.transformGroup===true?this._objects[0]:this._intersections[0].object;this._plane.setFromNormalAndCoplanarPoint(this._camera.getWorldDirection(this._plane.normal),this._worldPosition.setFromMatrixPosition(this._selected.matrixWorld));if(this._raycaster.ray.intersectPlane(this._plane,this._intersection)&&this._selected.parent){this._inverseMatrix.copy(this._selected.parent.matrixWorld).invert();this._offset.copy(this._intersection).sub(this._worldPosition.setFromMatrixPosition(this._selected.matrixWorld));}this._domElement.style.cursor=\"move\";this.dispatchEvent({type:\"dragstart\",object:this._selected});}});__publicField(this,\"onTouchEnd\",event=>{event.preventDefault();if(this._selected){this.dispatchEvent({type:\"dragend\",object:this._selected});this._selected=null;}this._domElement.style.cursor=\"auto\";});this._objects=_objects;this._camera=_camera;this._domElement=_domElement;this.activate();}}const _euler=/*@__PURE__*/new Euler(0,0,0,\"YXZ\");const _vector$2=/*@__PURE__*/new Vector3();const _changeEvent$1={type:\"change\"};const _lockEvent={type:\"lock\"};const _unlockEvent={type:\"unlock\"};const _PI_2=Math.PI/2;class PointerLockControls extends EventDispatcher{constructor(camera,domElement){super();__publicField(this,\"camera\");__publicField(this,\"domElement\");__publicField(this,\"isLocked\");__publicField(this,\"minPolarAngle\");__publicField(this,\"maxPolarAngle\");__publicField(this,\"pointerSpeed\");__publicField(this,\"onMouseMove\",event=>{if(!this.domElement||this.isLocked===false)return;const movementX=event.movementX||event.mozMovementX||event.webkitMovementX||0;const movementY=event.movementY||event.mozMovementY||event.webkitMovementY||0;_euler.setFromQuaternion(this.camera.quaternion);_euler.y-=movementX*2e-3*this.pointerSpeed;_euler.x-=movementY*2e-3*this.pointerSpeed;_euler.x=Math.max(_PI_2-this.maxPolarAngle,Math.min(_PI_2-this.minPolarAngle,_euler.x));this.camera.quaternion.setFromEuler(_euler);this.dispatchEvent(_changeEvent$1);});__publicField(this,\"onPointerlockChange\",()=>{if(!this.domElement)return;if(this.domElement.ownerDocument.pointerLockElement===this.domElement){this.dispatchEvent(_lockEvent);this.isLocked=true;}else{this.dispatchEvent(_unlockEvent);this.isLocked=false;}});__publicField(this,\"onPointerlockError\",()=>{console.error(\"THREE.PointerLockControls: Unable to use Pointer Lock API\");});__publicField(this,\"connect\",domElement=>{this.domElement=domElement||this.domElement;if(!this.domElement)return;this.domElement.ownerDocument.addEventListener(\"mousemove\",this.onMouseMove);this.domElement.ownerDocument.addEventListener(\"pointerlockchange\",this.onPointerlockChange);this.domElement.ownerDocument.addEventListener(\"pointerlockerror\",this.onPointerlockError);});__publicField(this,\"disconnect\",()=>{if(!this.domElement)return;this.domElement.ownerDocument.removeEventListener(\"mousemove\",this.onMouseMove);this.domElement.ownerDocument.removeEventListener(\"pointerlockchange\",this.onPointerlockChange);this.domElement.ownerDocument.removeEventListener(\"pointerlockerror\",this.onPointerlockError);});__publicField(this,\"dispose\",()=>{this.disconnect();});__publicField(this,\"getObject\",()=>{return this.camera;});__publicField(this,\"direction\",new Vector3(0,0,-1));__publicField(this,\"getDirection\",v=>{return v.copy(this.direction).applyQuaternion(this.camera.quaternion);});__publicField(this,\"moveForward\",distance=>{_vector$2.setFromMatrixColumn(this.camera.matrix,0);_vector$2.crossVectors(this.camera.up,_vector$2);this.camera.position.addScaledVector(_vector$2,distance);});__publicField(this,\"moveRight\",distance=>{_vector$2.setFromMatrixColumn(this.camera.matrix,0);this.camera.position.addScaledVector(_vector$2,distance);});__publicField(this,\"lock\",()=>{if(this.domElement)this.domElement.requestPointerLock();});__publicField(this,\"unlock\",()=>{if(this.domElement)this.domElement.ownerDocument.exitPointerLock();});this.camera=camera;this.domElement=domElement;this.isLocked=false;this.minPolarAngle=0;this.maxPolarAngle=Math.PI;this.pointerSpeed=1;if(domElement)this.connect(domElement);}}class DeviceOrientationControls extends EventDispatcher{// radians\nconstructor(object){super();__publicField(this,\"object\");__publicField(this,\"changeEvent\",{type:\"change\"});__publicField(this,\"EPS\",1e-6);__publicField(this,\"enabled\",true);__publicField(this,\"deviceOrientation\",{alpha:0,beta:0,gamma:0});__publicField(this,\"screenOrientation\",0);__publicField(this,\"alphaOffset\",0);__publicField(this,\"onDeviceOrientationChangeEvent\",event=>{this.deviceOrientation=event;});__publicField(this,\"onScreenOrientationChangeEvent\",()=>{this.screenOrientation=window.orientation||0;});// The angles alpha, beta and gamma form a set of intrinsic Tait-Bryan angles of type Z-X'-Y''\n__publicField(this,\"zee\",new Vector3(0,0,1));__publicField(this,\"euler\",new Euler());__publicField(this,\"q0\",new Quaternion());__publicField(this,\"q1\",new Quaternion(-Math.sqrt(0.5),0,0,Math.sqrt(0.5)));// - PI/2 around the x-axis\n__publicField(this,\"setObjectQuaternion\",(quaternion,alpha,beta,gamma,orient)=>{this.euler.set(beta,alpha,-gamma,\"YXZ\");quaternion.setFromEuler(this.euler);quaternion.multiply(this.q1);quaternion.multiply(this.q0.setFromAxisAngle(this.zee,-orient));});__publicField(this,\"connect\",()=>{this.onScreenOrientationChangeEvent();if(window.DeviceOrientationEvent!==void 0&&// @ts-ignore\ntypeof window.DeviceOrientationEvent.requestPermission===\"function\"){window.DeviceOrientationEvent.requestPermission().then(response=>{if(response==\"granted\"){window.addEventListener(\"orientationchange\",this.onScreenOrientationChangeEvent);window.addEventListener(\"deviceorientation\",this.onDeviceOrientationChangeEvent);}}).catch(error=>{console.error(\"THREE.DeviceOrientationControls: Unable to use DeviceOrientation API:\",error);});}else{window.addEventListener(\"orientationchange\",this.onScreenOrientationChangeEvent);window.addEventListener(\"deviceorientation\",this.onDeviceOrientationChangeEvent);}this.enabled=true;});__publicField(this,\"disconnect\",()=>{window.removeEventListener(\"orientationchange\",this.onScreenOrientationChangeEvent);window.removeEventListener(\"deviceorientation\",this.onDeviceOrientationChangeEvent);this.enabled=false;});__publicField(this,\"lastQuaternion\",new Quaternion());__publicField(this,\"update\",()=>{if(this.enabled===false)return;const device=this.deviceOrientation;if(device){const alpha=device.alpha?MathUtils.degToRad(device.alpha)+this.alphaOffset:0;const beta=device.beta?MathUtils.degToRad(device.beta):0;const gamma=device.gamma?MathUtils.degToRad(device.gamma):0;const orient=this.screenOrientation?MathUtils.degToRad(this.screenOrientation):0;this.setObjectQuaternion(this.object.quaternion,alpha,beta,gamma,orient);if(8*(1-this.lastQuaternion.dot(this.object.quaternion))>this.EPS){this.lastQuaternion.copy(this.object.quaternion);this.dispatchEvent(this.changeEvent);}}});__publicField(this,\"dispose\",()=>this.disconnect());this.object=object;this.object.rotation.reorder(\"YXZ\");this.connect();}}class TrackballControls extends EventDispatcher{constructor(object,domElement){super();__publicField(this,\"enabled\",true);__publicField(this,\"screen\",{left:0,top:0,width:0,height:0});__publicField(this,\"rotateSpeed\",1);__publicField(this,\"zoomSpeed\",1.2);__publicField(this,\"panSpeed\",0.3);__publicField(this,\"noRotate\",false);__publicField(this,\"noZoom\",false);__publicField(this,\"noPan\",false);__publicField(this,\"staticMoving\",false);__publicField(this,\"dynamicDampingFactor\",0.2);__publicField(this,\"minDistance\",0);__publicField(this,\"maxDistance\",Infinity);__publicField(this,\"keys\",[\"KeyA\",\"KeyS\",\"KeyD\"/*D*/]);__publicField(this,\"mouseButtons\",{LEFT:MOUSE.ROTATE,MIDDLE:MOUSE.DOLLY,RIGHT:MOUSE.PAN});__publicField(this,\"object\");__publicField(this,\"domElement\");__publicField(this,\"cursorZoom\",false);__publicField(this,\"target\",new Vector3());__publicField(this,\"mousePosition\",new Vector2());// internals\n__publicField(this,\"STATE\",{NONE:-1,ROTATE:0,ZOOM:1,PAN:2,TOUCH_ROTATE:3,TOUCH_ZOOM_PAN:4});__publicField(this,\"EPS\",1e-6);__publicField(this,\"lastZoom\",1);__publicField(this,\"lastPosition\",new Vector3());__publicField(this,\"cursorVector\",new Vector3());__publicField(this,\"targetVector\",new Vector3());__publicField(this,\"_state\",this.STATE.NONE);__publicField(this,\"_keyState\",this.STATE.NONE);__publicField(this,\"_eye\",new Vector3());__publicField(this,\"_movePrev\",new Vector2());__publicField(this,\"_moveCurr\",new Vector2());__publicField(this,\"_lastAxis\",new Vector3());__publicField(this,\"_lastAngle\",0);__publicField(this,\"_zoomStart\",new Vector2());__publicField(this,\"_zoomEnd\",new Vector2());__publicField(this,\"_touchZoomDistanceStart\",0);__publicField(this,\"_touchZoomDistanceEnd\",0);__publicField(this,\"_panStart\",new Vector2());__publicField(this,\"_panEnd\",new Vector2());__publicField(this,\"target0\");__publicField(this,\"position0\");__publicField(this,\"up0\");__publicField(this,\"zoom0\");// events\n__publicField(this,\"changeEvent\",{type:\"change\"});__publicField(this,\"startEvent\",{type:\"start\"});__publicField(this,\"endEvent\",{type:\"end\"});__publicField(this,\"onScreenVector\",new Vector2());__publicField(this,\"getMouseOnScreen\",(pageX,pageY)=>{this.onScreenVector.set((pageX-this.screen.left)/this.screen.width,(pageY-this.screen.top)/this.screen.height);return this.onScreenVector;});__publicField(this,\"onCircleVector\",new Vector2());__publicField(this,\"getMouseOnCircle\",(pageX,pageY)=>{this.onCircleVector.set((pageX-this.screen.width*0.5-this.screen.left)/(this.screen.width*0.5),(this.screen.height+2*(this.screen.top-pageY))/this.screen.width// screen.width intentional\n);return this.onCircleVector;});__publicField(this,\"axis\",new Vector3());__publicField(this,\"quaternion\",new Quaternion());__publicField(this,\"eyeDirection\",new Vector3());__publicField(this,\"objectUpDirection\",new Vector3());__publicField(this,\"objectSidewaysDirection\",new Vector3());__publicField(this,\"moveDirection\",new Vector3());__publicField(this,\"angle\",0);__publicField(this,\"rotateCamera\",()=>{this.moveDirection.set(this._moveCurr.x-this._movePrev.x,this._moveCurr.y-this._movePrev.y,0);this.angle=this.moveDirection.length();if(this.angle){this._eye.copy(this.object.position).sub(this.target);this.eyeDirection.copy(this._eye).normalize();this.objectUpDirection.copy(this.object.up).normalize();this.objectSidewaysDirection.crossVectors(this.objectUpDirection,this.eyeDirection).normalize();this.objectUpDirection.setLength(this._moveCurr.y-this._movePrev.y);this.objectSidewaysDirection.setLength(this._moveCurr.x-this._movePrev.x);this.moveDirection.copy(this.objectUpDirection.add(this.objectSidewaysDirection));this.axis.crossVectors(this.moveDirection,this._eye).normalize();this.angle*=this.rotateSpeed;this.quaternion.setFromAxisAngle(this.axis,this.angle);this._eye.applyQuaternion(this.quaternion);this.object.up.applyQuaternion(this.quaternion);this._lastAxis.copy(this.axis);this._lastAngle=this.angle;}else if(!this.staticMoving&&this._lastAngle){this._lastAngle*=Math.sqrt(1-this.dynamicDampingFactor);this._eye.copy(this.object.position).sub(this.target);this.quaternion.setFromAxisAngle(this._lastAxis,this._lastAngle);this._eye.applyQuaternion(this.quaternion);this.object.up.applyQuaternion(this.quaternion);}this._movePrev.copy(this._moveCurr);});__publicField(this,\"zoomCamera\",()=>{let factor;if(this._state===this.STATE.TOUCH_ZOOM_PAN){factor=this._touchZoomDistanceStart/this._touchZoomDistanceEnd;this._touchZoomDistanceStart=this._touchZoomDistanceEnd;if(this.object.isPerspectiveCamera){this._eye.multiplyScalar(factor);}else if(this.object.isOrthographicCamera){this.object.zoom/=factor;this.object.updateProjectionMatrix();}else{console.warn(\"THREE.TrackballControls: Unsupported camera type\");}}else{factor=1+(this._zoomEnd.y-this._zoomStart.y)*this.zoomSpeed;if(Math.abs(factor-1)>this.EPS&&factor>0){if(this.object.isPerspectiveCamera){if(factor>1&&this._eye.length()>=this.maxDistance-this.EPS){factor=1;}this._eye.multiplyScalar(factor);}else if(this.object.isOrthographicCamera){if(factor>1&&this.object.zoom{if(!this.domElement)return;this.mouseChange.copy(this._panEnd).sub(this._panStart);if(this.mouseChange.lengthSq()>this.EPS){if(this.object.isOrthographicCamera){const orthoObject=this.object;const scale_x=(orthoObject.right-orthoObject.left)/this.object.zoom;const scale_y=(orthoObject.top-orthoObject.bottom)/this.object.zoom;this.mouseChange.x*=scale_x;this.mouseChange.y*=scale_y;}else{this.mouseChange.multiplyScalar(this._eye.length()*this.panSpeed);}this.pan.copy(this._eye).cross(this.object.up).setLength(this.mouseChange.x);this.pan.add(this.objectUp.copy(this.object.up).setLength(this.mouseChange.y));this.object.position.add(this.pan);this.target.add(this.pan);if(this.staticMoving){this._panStart.copy(this._panEnd);}else{this._panStart.add(this.mouseChange.subVectors(this._panEnd,this._panStart).multiplyScalar(this.dynamicDampingFactor));}}});__publicField(this,\"checkDistances\",()=>{if(!this.noZoom||!this.noPan){if(this._eye.lengthSq()>this.maxDistance*this.maxDistance){this.object.position.addVectors(this.target,this._eye.setLength(this.maxDistance));this._zoomStart.copy(this._zoomEnd);}if(this._eye.lengthSq(){if(!this.domElement)return;const box=this.domElement.getBoundingClientRect();const d=this.domElement.ownerDocument.documentElement;this.screen.left=box.left+window.pageXOffset-d.clientLeft;this.screen.top=box.top+window.pageYOffset-d.clientTop;this.screen.width=box.width;this.screen.height=box.height;});__publicField(this,\"update\",()=>{this._eye.subVectors(this.object.position,this.target);if(!this.noRotate){this.rotateCamera();}if(!this.noZoom){this.zoomCamera();}if(!this.noPan){this.panCamera();}this.object.position.addVectors(this.target,this._eye);if(this.object.isPerspectiveCamera){this.checkDistances();this.object.lookAt(this.target);if(this.lastPosition.distanceToSquared(this.object.position)>this.EPS){this.dispatchEvent(this.changeEvent);this.lastPosition.copy(this.object.position);}}else if(this.object.isOrthographicCamera){this.object.lookAt(this.target);if(this.lastPosition.distanceToSquared(this.object.position)>this.EPS||this.lastZoom!==this.object.zoom){this.dispatchEvent(this.changeEvent);this.lastPosition.copy(this.object.position);this.lastZoom=this.object.zoom;}}else{console.warn(\"THREE.TrackballControls: Unsupported camera type\");}});__publicField(this,\"reset\",()=>{this._state=this.STATE.NONE;this._keyState=this.STATE.NONE;this.target.copy(this.target0);this.object.position.copy(this.position0);this.object.up.copy(this.up0);this.object.zoom=this.zoom0;this.object.updateProjectionMatrix();this._eye.subVectors(this.object.position,this.target);this.object.lookAt(this.target);this.dispatchEvent(this.changeEvent);this.lastPosition.copy(this.object.position);this.lastZoom=this.object.zoom;});__publicField(this,\"keydown\",event=>{if(this.enabled===false)return;window.removeEventListener(\"keydown\",this.keydown);if(this._keyState!==this.STATE.NONE){return;}else if(event.code===this.keys[this.STATE.ROTATE]&&!this.noRotate){this._keyState=this.STATE.ROTATE;}else if(event.code===this.keys[this.STATE.ZOOM]&&!this.noZoom){this._keyState=this.STATE.ZOOM;}else if(event.code===this.keys[this.STATE.PAN]&&!this.noPan){this._keyState=this.STATE.PAN;}});__publicField(this,\"onPointerDown\",event=>{if(this.enabled===false)return;switch(event.pointerType){case\"mouse\":case\"pen\":this.onMouseDown(event);break;}});__publicField(this,\"onPointerMove\",event=>{if(this.enabled===false)return;switch(event.pointerType){case\"mouse\":case\"pen\":this.onMouseMove(event);break;}});__publicField(this,\"onPointerUp\",event=>{if(this.enabled===false)return;switch(event.pointerType){case\"mouse\":case\"pen\":this.onMouseUp();break;}});__publicField(this,\"keyup\",()=>{if(this.enabled===false)return;this._keyState=this.STATE.NONE;window.addEventListener(\"keydown\",this.keydown);});__publicField(this,\"onMouseDown\",event=>{if(!this.domElement)return;if(this._state===this.STATE.NONE){switch(event.button){case this.mouseButtons.LEFT:this._state=this.STATE.ROTATE;break;case this.mouseButtons.MIDDLE:this._state=this.STATE.ZOOM;break;case this.mouseButtons.RIGHT:this._state=this.STATE.PAN;break;default:this._state=this.STATE.NONE;}}const state=this._keyState!==this.STATE.NONE?this._keyState:this._state;if(state===this.STATE.ROTATE&&!this.noRotate){this._moveCurr.copy(this.getMouseOnCircle(event.pageX,event.pageY));this._movePrev.copy(this._moveCurr);}else if(state===this.STATE.ZOOM&&!this.noZoom){this._zoomStart.copy(this.getMouseOnScreen(event.pageX,event.pageY));this._zoomEnd.copy(this._zoomStart);}else if(state===this.STATE.PAN&&!this.noPan){this._panStart.copy(this.getMouseOnScreen(event.pageX,event.pageY));this._panEnd.copy(this._panStart);}this.domElement.ownerDocument.addEventListener(\"pointermove\",this.onPointerMove);this.domElement.ownerDocument.addEventListener(\"pointerup\",this.onPointerUp);this.dispatchEvent(this.startEvent);});__publicField(this,\"onMouseMove\",event=>{if(this.enabled===false)return;const state=this._keyState!==this.STATE.NONE?this._keyState:this._state;if(state===this.STATE.ROTATE&&!this.noRotate){this._movePrev.copy(this._moveCurr);this._moveCurr.copy(this.getMouseOnCircle(event.pageX,event.pageY));}else if(state===this.STATE.ZOOM&&!this.noZoom){this._zoomEnd.copy(this.getMouseOnScreen(event.pageX,event.pageY));}else if(state===this.STATE.PAN&&!this.noPan){this._panEnd.copy(this.getMouseOnScreen(event.pageX,event.pageY));}});__publicField(this,\"onMouseUp\",()=>{if(!this.domElement)return;if(this.enabled===false)return;this._state=this.STATE.NONE;this.domElement.ownerDocument.removeEventListener(\"pointermove\",this.onPointerMove);this.domElement.ownerDocument.removeEventListener(\"pointerup\",this.onPointerUp);this.dispatchEvent(this.endEvent);});__publicField(this,\"mousewheel\",event=>{if(this.enabled===false)return;if(this.noZoom===true)return;event.preventDefault();switch(event.deltaMode){case 2:this._zoomStart.y-=event.deltaY*0.025;break;case 1:this._zoomStart.y-=event.deltaY*0.01;break;default:this._zoomStart.y-=event.deltaY*25e-5;break;}this.mousePosition.x=event.offsetX/this.screen.width*2-1;this.mousePosition.y=-(event.offsetY/this.screen.height)*2+1;this.dispatchEvent(this.startEvent);this.dispatchEvent(this.endEvent);});__publicField(this,\"touchstart\",event=>{if(this.enabled===false)return;event.preventDefault();switch(event.touches.length){case 1:this._state=this.STATE.TOUCH_ROTATE;this._moveCurr.copy(this.getMouseOnCircle(event.touches[0].pageX,event.touches[0].pageY));this._movePrev.copy(this._moveCurr);break;default:this._state=this.STATE.TOUCH_ZOOM_PAN;const dx=event.touches[0].pageX-event.touches[1].pageX;const dy=event.touches[0].pageY-event.touches[1].pageY;this._touchZoomDistanceEnd=this._touchZoomDistanceStart=Math.sqrt(dx*dx+dy*dy);const x=(event.touches[0].pageX+event.touches[1].pageX)/2;const y=(event.touches[0].pageY+event.touches[1].pageY)/2;this._panStart.copy(this.getMouseOnScreen(x,y));this._panEnd.copy(this._panStart);break;}this.dispatchEvent(this.startEvent);});__publicField(this,\"touchmove\",event=>{if(this.enabled===false)return;event.preventDefault();switch(event.touches.length){case 1:this._movePrev.copy(this._moveCurr);this._moveCurr.copy(this.getMouseOnCircle(event.touches[0].pageX,event.touches[0].pageY));break;default:const dx=event.touches[0].pageX-event.touches[1].pageX;const dy=event.touches[0].pageY-event.touches[1].pageY;this._touchZoomDistanceEnd=Math.sqrt(dx*dx+dy*dy);const x=(event.touches[0].pageX+event.touches[1].pageX)/2;const y=(event.touches[0].pageY+event.touches[1].pageY)/2;this._panEnd.copy(this.getMouseOnScreen(x,y));break;}});__publicField(this,\"touchend\",event=>{if(this.enabled===false)return;switch(event.touches.length){case 0:this._state=this.STATE.NONE;break;case 1:this._state=this.STATE.TOUCH_ROTATE;this._moveCurr.copy(this.getMouseOnCircle(event.touches[0].pageX,event.touches[0].pageY));this._movePrev.copy(this._moveCurr);break;}this.dispatchEvent(this.endEvent);});__publicField(this,\"contextmenu\",event=>{if(this.enabled===false)return;event.preventDefault();});// https://github.com/mrdoob/three.js/issues/20575\n__publicField(this,\"connect\",domElement=>{if(domElement===document){console.error('THREE.OrbitControls: \"document\" should not be used as the target \"domElement\". Please use \"renderer.domElement\" instead.');}this.domElement=domElement;this.domElement.addEventListener(\"contextmenu\",this.contextmenu);this.domElement.addEventListener(\"pointerdown\",this.onPointerDown);this.domElement.addEventListener(\"wheel\",this.mousewheel);this.domElement.addEventListener(\"touchstart\",this.touchstart);this.domElement.addEventListener(\"touchend\",this.touchend);this.domElement.addEventListener(\"touchmove\",this.touchmove);this.domElement.ownerDocument.addEventListener(\"pointermove\",this.onPointerMove);this.domElement.ownerDocument.addEventListener(\"pointerup\",this.onPointerUp);window.addEventListener(\"keydown\",this.keydown);window.addEventListener(\"keyup\",this.keyup);this.handleResize();});__publicField(this,\"dispose\",()=>{if(!this.domElement)return;this.domElement.removeEventListener(\"contextmenu\",this.contextmenu);this.domElement.removeEventListener(\"pointerdown\",this.onPointerDown);this.domElement.removeEventListener(\"wheel\",this.mousewheel);this.domElement.removeEventListener(\"touchstart\",this.touchstart);this.domElement.removeEventListener(\"touchend\",this.touchend);this.domElement.removeEventListener(\"touchmove\",this.touchmove);this.domElement.ownerDocument.removeEventListener(\"pointermove\",this.onPointerMove);this.domElement.ownerDocument.removeEventListener(\"pointerup\",this.onPointerUp);window.removeEventListener(\"keydown\",this.keydown);window.removeEventListener(\"keyup\",this.keyup);});this.object=object;this.target0=this.target.clone();this.position0=this.object.position.clone();this.up0=this.object.up.clone();this.zoom0=this.object.zoom;if(domElement!==void 0)this.connect(domElement);this.update();}}const _ray$2=/*@__PURE__*/new Ray();const _plane=/*@__PURE__*/new Plane();const TILT_LIMIT=/*@__PURE__*/Math.cos(70*(Math.PI/180));const moduloWrapAround=(offset,capacity)=>(offset%capacity+capacity)%capacity;class OrbitControls extends EventDispatcher{constructor(object,domElement){super();__publicField(this,\"object\");__publicField(this,\"domElement\");// Set to false to disable this control\n__publicField(this,\"enabled\",true);// \"target\" sets the location of focus, where the object orbits around\n__publicField(this,\"target\",new Vector3());// How far you can dolly in and out ( PerspectiveCamera only )\n__publicField(this,\"minDistance\",0);__publicField(this,\"maxDistance\",Infinity);// How far you can zoom in and out ( OrthographicCamera only )\n__publicField(this,\"minZoom\",0);__publicField(this,\"maxZoom\",Infinity);// How far you can orbit vertically, upper and lower limits.\n// Range is 0 to Math.PI radians.\n__publicField(this,\"minPolarAngle\",0);// radians\n__publicField(this,\"maxPolarAngle\",Math.PI);// radians\n// How far you can orbit horizontally, upper and lower limits.\n// If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )\n__publicField(this,\"minAzimuthAngle\",-Infinity);// radians\n__publicField(this,\"maxAzimuthAngle\",Infinity);// radians\n// Set to true to enable damping (inertia)\n// If damping is enabled, you must call controls.update() in your animation loop\n__publicField(this,\"enableDamping\",false);__publicField(this,\"dampingFactor\",0.05);// This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n// Set to false to disable zooming\n__publicField(this,\"enableZoom\",true);__publicField(this,\"zoomSpeed\",1);// Set to false to disable rotating\n__publicField(this,\"enableRotate\",true);__publicField(this,\"rotateSpeed\",1);// Set to false to disable panning\n__publicField(this,\"enablePan\",true);__publicField(this,\"panSpeed\",1);__publicField(this,\"screenSpacePanning\",true);// if false, pan orthogonal to world-space direction camera.up\n__publicField(this,\"keyPanSpeed\",7);// pixels moved per arrow key push\n__publicField(this,\"zoomToCursor\",false);// Set to true to automatically rotate around the target\n// If auto-rotate is enabled, you must call controls.update() in your animation loop\n__publicField(this,\"autoRotate\",false);__publicField(this,\"autoRotateSpeed\",2);// 30 seconds per orbit when fps is 60\n__publicField(this,\"reverseOrbit\",false);// true if you want to reverse the orbit to mouse drag from left to right = orbits left\n__publicField(this,\"reverseHorizontalOrbit\",false);// true if you want to reverse the horizontal orbit direction\n__publicField(this,\"reverseVerticalOrbit\",false);// true if you want to reverse the vertical orbit direction\n// The four arrow keys\n__publicField(this,\"keys\",{LEFT:\"ArrowLeft\",UP:\"ArrowUp\",RIGHT:\"ArrowRight\",BOTTOM:\"ArrowDown\"});// Mouse buttons\n__publicField(this,\"mouseButtons\",{LEFT:MOUSE.ROTATE,MIDDLE:MOUSE.DOLLY,RIGHT:MOUSE.PAN});// Touch fingers\n__publicField(this,\"touches\",{ONE:TOUCH.ROTATE,TWO:TOUCH.DOLLY_PAN});__publicField(this,\"target0\");__publicField(this,\"position0\");__publicField(this,\"zoom0\");// the target DOM element for key events\n__publicField(this,\"_domElementKeyEvents\",null);__publicField(this,\"getPolarAngle\");__publicField(this,\"getAzimuthalAngle\");__publicField(this,\"setPolarAngle\");__publicField(this,\"setAzimuthalAngle\");__publicField(this,\"getDistance\");__publicField(this,\"listenToKeyEvents\");__publicField(this,\"stopListenToKeyEvents\");__publicField(this,\"saveState\");__publicField(this,\"reset\");__publicField(this,\"update\");__publicField(this,\"connect\");__publicField(this,\"dispose\");this.object=object;this.domElement=domElement;this.target0=this.target.clone();this.position0=this.object.position.clone();this.zoom0=this.object.zoom;this.getPolarAngle=()=>spherical.phi;this.getAzimuthalAngle=()=>spherical.theta;this.setPolarAngle=value=>{let phi=moduloWrapAround(value,2*Math.PI);let currentPhi=spherical.phi;if(currentPhi<0)currentPhi+=2*Math.PI;if(phi<0)phi+=2*Math.PI;let phiDist=Math.abs(phi-currentPhi);if(2*Math.PI-phiDist{let theta=moduloWrapAround(value,2*Math.PI);let currentTheta=spherical.theta;if(currentTheta<0)currentTheta+=2*Math.PI;if(theta<0)theta+=2*Math.PI;let thetaDist=Math.abs(theta-currentTheta);if(2*Math.PI-thetaDistscope.object.position.distanceTo(scope.target);this.listenToKeyEvents=domElement2=>{domElement2.addEventListener(\"keydown\",onKeyDown);this._domElementKeyEvents=domElement2;};this.stopListenToKeyEvents=()=>{this._domElementKeyEvents.removeEventListener(\"keydown\",onKeyDown);this._domElementKeyEvents=null;};this.saveState=()=>{scope.target0.copy(scope.target);scope.position0.copy(scope.object.position);scope.zoom0=scope.object.zoom;};this.reset=()=>{scope.target.copy(scope.target0);scope.object.position.copy(scope.position0);scope.object.zoom=scope.zoom0;scope.object.updateProjectionMatrix();scope.dispatchEvent(changeEvent);scope.update();state=STATE2.NONE;};this.update=(()=>{const offset=new Vector3();const up=new Vector3(0,1,0);const quat=new Quaternion().setFromUnitVectors(object.up,up);const quatInverse=quat.clone().invert();const lastPosition=new Vector3();const lastQuaternion=new Quaternion();const twoPI=2*Math.PI;return function update(){const position=scope.object.position;quat.setFromUnitVectors(object.up,up);quatInverse.copy(quat).invert();offset.copy(position).sub(scope.target);offset.applyQuaternion(quat);spherical.setFromVector3(offset);if(scope.autoRotate&&state===STATE2.NONE){rotateLeft(getAutoRotationAngle());}if(scope.enableDamping){spherical.theta+=sphericalDelta.theta*scope.dampingFactor;spherical.phi+=sphericalDelta.phi*scope.dampingFactor;}else{spherical.theta+=sphericalDelta.theta;spherical.phi+=sphericalDelta.phi;}let min=scope.minAzimuthAngle;let max=scope.maxAzimuthAngle;if(isFinite(min)&&isFinite(max)){if(min<-Math.PI)min+=twoPI;else if(min>Math.PI)min-=twoPI;if(max<-Math.PI)max+=twoPI;else if(max>Math.PI)max-=twoPI;if(min<=max){spherical.theta=Math.max(min,Math.min(max,spherical.theta));}else{spherical.theta=spherical.theta>(min+max)/2?Math.max(min,spherical.theta):Math.min(max,spherical.theta);}}spherical.phi=Math.max(scope.minPolarAngle,Math.min(scope.maxPolarAngle,spherical.phi));spherical.makeSafe();if(scope.enableDamping===true){scope.target.addScaledVector(panOffset,scope.dampingFactor);}else{scope.target.add(panOffset);}if(scope.zoomToCursor&&performCursorZoom||scope.object.isOrthographicCamera){spherical.radius=clampDistance(spherical.radius);}else{spherical.radius=clampDistance(spherical.radius*scale);}offset.setFromSpherical(spherical);offset.applyQuaternion(quatInverse);position.copy(scope.target).add(offset);scope.object.lookAt(scope.target);if(scope.enableDamping===true){sphericalDelta.theta*=1-scope.dampingFactor;sphericalDelta.phi*=1-scope.dampingFactor;panOffset.multiplyScalar(1-scope.dampingFactor);}else{sphericalDelta.set(0,0,0);panOffset.set(0,0,0);}let zoomChanged=false;if(scope.zoomToCursor&&performCursorZoom){let newRadius=null;if(scope.object instanceof PerspectiveCamera&&scope.object.isPerspectiveCamera){const prevRadius=offset.length();newRadius=clampDistance(prevRadius*scale);const radiusDelta=prevRadius-newRadius;scope.object.position.addScaledVector(dollyDirection,radiusDelta);scope.object.updateMatrixWorld();}else if(scope.object.isOrthographicCamera){const mouseBefore=new Vector3(mouse.x,mouse.y,0);mouseBefore.unproject(scope.object);scope.object.zoom=Math.max(scope.minZoom,Math.min(scope.maxZoom,scope.object.zoom/scale));scope.object.updateProjectionMatrix();zoomChanged=true;const mouseAfter=new Vector3(mouse.x,mouse.y,0);mouseAfter.unproject(scope.object);scope.object.position.sub(mouseAfter).add(mouseBefore);scope.object.updateMatrixWorld();newRadius=offset.length();}else{console.warn(\"WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled.\");scope.zoomToCursor=false;}if(newRadius!==null){if(scope.screenSpacePanning){scope.target.set(0,0,-1).transformDirection(scope.object.matrix).multiplyScalar(newRadius).add(scope.object.position);}else{_ray$2.origin.copy(scope.object.position);_ray$2.direction.set(0,0,-1).transformDirection(scope.object.matrix);if(Math.abs(scope.object.up.dot(_ray$2.direction))EPS2||8*(1-lastQuaternion.dot(scope.object.quaternion))>EPS2){scope.dispatchEvent(changeEvent);lastPosition.copy(scope.object.position);lastQuaternion.copy(scope.object.quaternion);zoomChanged=false;return true;}return false;};})();this.connect=domElement2=>{if(domElement2===document){console.error('THREE.OrbitControls: \"document\" should not be used as the target \"domElement\". Please use \"renderer.domElement\" instead.');}scope.domElement=domElement2;scope.domElement.style.touchAction=\"none\";scope.domElement.addEventListener(\"contextmenu\",onContextMenu);scope.domElement.addEventListener(\"pointerdown\",onPointerDown);scope.domElement.addEventListener(\"pointercancel\",onPointerCancel);scope.domElement.addEventListener(\"wheel\",onMouseWheel);};this.dispose=()=>{var _a2,_b2,_c,_d,_e,_f;(_a2=scope.domElement)==null?void 0:_a2.removeEventListener(\"contextmenu\",onContextMenu);(_b2=scope.domElement)==null?void 0:_b2.removeEventListener(\"pointerdown\",onPointerDown);(_c=scope.domElement)==null?void 0:_c.removeEventListener(\"pointercancel\",onPointerCancel);(_d=scope.domElement)==null?void 0:_d.removeEventListener(\"wheel\",onMouseWheel);(_e=scope.domElement)==null?void 0:_e.removeEventListener(\"pointermove\",onPointerMove);(_f=scope.domElement)==null?void 0:_f.removeEventListener(\"pointerup\",onPointerUp);if(scope._domElementKeyEvents!==null){scope._domElementKeyEvents.removeEventListener(\"keydown\",onKeyDown);}};const scope=this;const changeEvent={type:\"change\"};const startEvent={type:\"start\"};const endEvent={type:\"end\"};const STATE2={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let state=STATE2.NONE;const EPS2=1e-6;const spherical=new Spherical();const sphericalDelta=new Spherical();let scale=1;const panOffset=new Vector3();const rotateStart=new Vector2();const rotateEnd=new Vector2();const rotateDelta=new Vector2();const panStart=new Vector2();const panEnd=new Vector2();const panDelta=new Vector2();const dollyStart=new Vector2();const dollyEnd=new Vector2();const dollyDelta=new Vector2();const dollyDirection=new Vector3();const mouse=new Vector2();let performCursorZoom=false;const pointers=[];const pointerPositions={};function getAutoRotationAngle(){return 2*Math.PI/60/60*scope.autoRotateSpeed;}function getZoomScale(){return Math.pow(0.95,scope.zoomSpeed);}function rotateLeft(angle){if(scope.reverseOrbit||scope.reverseHorizontalOrbit){sphericalDelta.theta+=angle;}else{sphericalDelta.theta-=angle;}}function rotateUp(angle){if(scope.reverseOrbit||scope.reverseVerticalOrbit){sphericalDelta.phi+=angle;}else{sphericalDelta.phi-=angle;}}const panLeft=(()=>{const v=new Vector3();return function panLeft2(distance,objectMatrix){v.setFromMatrixColumn(objectMatrix,0);v.multiplyScalar(-distance);panOffset.add(v);};})();const panUp=(()=>{const v=new Vector3();return function panUp2(distance,objectMatrix){if(scope.screenSpacePanning===true){v.setFromMatrixColumn(objectMatrix,1);}else{v.setFromMatrixColumn(objectMatrix,0);v.crossVectors(scope.object.up,v);}v.multiplyScalar(distance);panOffset.add(v);};})();const pan=(()=>{const offset=new Vector3();return function pan2(deltaX,deltaY){const element=scope.domElement;if(element&&scope.object instanceof PerspectiveCamera&&scope.object.isPerspectiveCamera){const position=scope.object.position;offset.copy(position).sub(scope.target);let targetDistance=offset.length();targetDistance*=Math.tan(scope.object.fov/2*Math.PI/180);panLeft(2*deltaX*targetDistance/element.clientHeight,scope.object.matrix);panUp(2*deltaY*targetDistance/element.clientHeight,scope.object.matrix);}else if(element&&scope.object instanceof OrthographicCamera&&scope.object.isOrthographicCamera){panLeft(deltaX*(scope.object.right-scope.object.left)/scope.object.zoom/element.clientWidth,scope.object.matrix);panUp(deltaY*(scope.object.top-scope.object.bottom)/scope.object.zoom/element.clientHeight,scope.object.matrix);}else{console.warn(\"WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.\");scope.enablePan=false;}};})();function dollyOut(dollyScale){if(scope.object instanceof PerspectiveCamera&&scope.object.isPerspectiveCamera||scope.object instanceof OrthographicCamera&&scope.object.isOrthographicCamera){scale/=dollyScale;}else{console.warn(\"WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.\");scope.enableZoom=false;}}function dollyIn(dollyScale){if(scope.object instanceof PerspectiveCamera&&scope.object.isPerspectiveCamera||scope.object instanceof OrthographicCamera&&scope.object.isOrthographicCamera){scale*=dollyScale;}else{console.warn(\"WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.\");scope.enableZoom=false;}}function updateMouseParameters(event){if(!scope.zoomToCursor||!scope.domElement){return;}performCursorZoom=true;const rect=scope.domElement.getBoundingClientRect();const x=event.clientX-rect.left;const y=event.clientY-rect.top;const w=rect.width;const h=rect.height;mouse.x=x/w*2-1;mouse.y=-(y/h)*2+1;dollyDirection.set(mouse.x,mouse.y,1).unproject(scope.object).sub(scope.object.position).normalize();}function clampDistance(dist){return Math.max(scope.minDistance,Math.min(scope.maxDistance,dist));}function handleMouseDownRotate(event){rotateStart.set(event.clientX,event.clientY);}function handleMouseDownDolly(event){updateMouseParameters(event);dollyStart.set(event.clientX,event.clientY);}function handleMouseDownPan(event){panStart.set(event.clientX,event.clientY);}function handleMouseMoveRotate(event){rotateEnd.set(event.clientX,event.clientY);rotateDelta.subVectors(rotateEnd,rotateStart).multiplyScalar(scope.rotateSpeed);const element=scope.domElement;if(element){rotateLeft(2*Math.PI*rotateDelta.x/element.clientHeight);rotateUp(2*Math.PI*rotateDelta.y/element.clientHeight);}rotateStart.copy(rotateEnd);scope.update();}function handleMouseMoveDolly(event){dollyEnd.set(event.clientX,event.clientY);dollyDelta.subVectors(dollyEnd,dollyStart);if(dollyDelta.y>0){dollyOut(getZoomScale());}else if(dollyDelta.y<0){dollyIn(getZoomScale());}dollyStart.copy(dollyEnd);scope.update();}function handleMouseMovePan(event){panEnd.set(event.clientX,event.clientY);panDelta.subVectors(panEnd,panStart).multiplyScalar(scope.panSpeed);pan(panDelta.x,panDelta.y);panStart.copy(panEnd);scope.update();}function handleMouseWheel(event){updateMouseParameters(event);if(event.deltaY<0){dollyIn(getZoomScale());}else if(event.deltaY>0){dollyOut(getZoomScale());}scope.update();}function handleKeyDown(event){let needsUpdate=false;switch(event.code){case scope.keys.UP:pan(0,scope.keyPanSpeed);needsUpdate=true;break;case scope.keys.BOTTOM:pan(0,-scope.keyPanSpeed);needsUpdate=true;break;case scope.keys.LEFT:pan(scope.keyPanSpeed,0);needsUpdate=true;break;case scope.keys.RIGHT:pan(-scope.keyPanSpeed,0);needsUpdate=true;break;}if(needsUpdate){event.preventDefault();scope.update();}}function handleTouchStartRotate(){if(pointers.length==1){rotateStart.set(pointers[0].pageX,pointers[0].pageY);}else{const x=0.5*(pointers[0].pageX+pointers[1].pageX);const y=0.5*(pointers[0].pageY+pointers[1].pageY);rotateStart.set(x,y);}}function handleTouchStartPan(){if(pointers.length==1){panStart.set(pointers[0].pageX,pointers[0].pageY);}else{const x=0.5*(pointers[0].pageX+pointers[1].pageX);const y=0.5*(pointers[0].pageY+pointers[1].pageY);panStart.set(x,y);}}function handleTouchStartDolly(){const dx=pointers[0].pageX-pointers[1].pageX;const dy=pointers[0].pageY-pointers[1].pageY;const distance=Math.sqrt(dx*dx+dy*dy);dollyStart.set(0,distance);}function handleTouchStartDollyPan(){if(scope.enableZoom)handleTouchStartDolly();if(scope.enablePan)handleTouchStartPan();}function handleTouchStartDollyRotate(){if(scope.enableZoom)handleTouchStartDolly();if(scope.enableRotate)handleTouchStartRotate();}function handleTouchMoveRotate(event){if(pointers.length==1){rotateEnd.set(event.pageX,event.pageY);}else{const position=getSecondPointerPosition(event);const x=0.5*(event.pageX+position.x);const y=0.5*(event.pageY+position.y);rotateEnd.set(x,y);}rotateDelta.subVectors(rotateEnd,rotateStart).multiplyScalar(scope.rotateSpeed);const element=scope.domElement;if(element){rotateLeft(2*Math.PI*rotateDelta.x/element.clientHeight);rotateUp(2*Math.PI*rotateDelta.y/element.clientHeight);}rotateStart.copy(rotateEnd);}function handleTouchMovePan(event){if(pointers.length==1){panEnd.set(event.pageX,event.pageY);}else{const position=getSecondPointerPosition(event);const x=0.5*(event.pageX+position.x);const y=0.5*(event.pageY+position.y);panEnd.set(x,y);}panDelta.subVectors(panEnd,panStart).multiplyScalar(scope.panSpeed);pan(panDelta.x,panDelta.y);panStart.copy(panEnd);}function handleTouchMoveDolly(event){const position=getSecondPointerPosition(event);const dx=event.pageX-position.x;const dy=event.pageY-position.y;const distance=Math.sqrt(dx*dx+dy*dy);dollyEnd.set(0,distance);dollyDelta.set(0,Math.pow(dollyEnd.y/dollyStart.y,scope.zoomSpeed));dollyOut(dollyDelta.y);dollyStart.copy(dollyEnd);}function handleTouchMoveDollyPan(event){if(scope.enableZoom)handleTouchMoveDolly(event);if(scope.enablePan)handleTouchMovePan(event);}function handleTouchMoveDollyRotate(event){if(scope.enableZoom)handleTouchMoveDolly(event);if(scope.enableRotate)handleTouchMoveRotate(event);}function onPointerDown(event){var _a2,_b2,_c;if(scope.enabled===false)return;if(pointers.length===0){(_a2=scope.domElement)==null?void 0:_a2.setPointerCapture(event.pointerId);(_b2=scope.domElement)==null?void 0:_b2.addEventListener(\"pointermove\",onPointerMove);(_c=scope.domElement)==null?void 0:_c.addEventListener(\"pointerup\",onPointerUp);}addPointer(event);if(event.pointerType===\"touch\"){onTouchStart(event);}else{onMouseDown(event);}}function onPointerMove(event){if(scope.enabled===false)return;if(event.pointerType===\"touch\"){onTouchMove(event);}else{onMouseMove(event);}}function onPointerUp(event){var _a2,_b2,_c;removePointer(event);if(pointers.length===0){(_a2=scope.domElement)==null?void 0:_a2.releasePointerCapture(event.pointerId);(_b2=scope.domElement)==null?void 0:_b2.removeEventListener(\"pointermove\",onPointerMove);(_c=scope.domElement)==null?void 0:_c.removeEventListener(\"pointerup\",onPointerUp);}scope.dispatchEvent(endEvent);state=STATE2.NONE;}function onPointerCancel(event){removePointer(event);}function onMouseDown(event){let mouseAction;switch(event.button){case 0:mouseAction=scope.mouseButtons.LEFT;break;case 1:mouseAction=scope.mouseButtons.MIDDLE;break;case 2:mouseAction=scope.mouseButtons.RIGHT;break;default:mouseAction=-1;}switch(mouseAction){case MOUSE.DOLLY:if(scope.enableZoom===false)return;handleMouseDownDolly(event);state=STATE2.DOLLY;break;case MOUSE.ROTATE:if(event.ctrlKey||event.metaKey||event.shiftKey){if(scope.enablePan===false)return;handleMouseDownPan(event);state=STATE2.PAN;}else{if(scope.enableRotate===false)return;handleMouseDownRotate(event);state=STATE2.ROTATE;}break;case MOUSE.PAN:if(event.ctrlKey||event.metaKey||event.shiftKey){if(scope.enableRotate===false)return;handleMouseDownRotate(event);state=STATE2.ROTATE;}else{if(scope.enablePan===false)return;handleMouseDownPan(event);state=STATE2.PAN;}break;default:state=STATE2.NONE;}if(state!==STATE2.NONE){scope.dispatchEvent(startEvent);}}function onMouseMove(event){if(scope.enabled===false)return;switch(state){case STATE2.ROTATE:if(scope.enableRotate===false)return;handleMouseMoveRotate(event);break;case STATE2.DOLLY:if(scope.enableZoom===false)return;handleMouseMoveDolly(event);break;case STATE2.PAN:if(scope.enablePan===false)return;handleMouseMovePan(event);break;}}function onMouseWheel(event){if(scope.enabled===false||scope.enableZoom===false||state!==STATE2.NONE&&state!==STATE2.ROTATE){return;}event.preventDefault();scope.dispatchEvent(startEvent);handleMouseWheel(event);scope.dispatchEvent(endEvent);}function onKeyDown(event){if(scope.enabled===false||scope.enablePan===false)return;handleKeyDown(event);}function onTouchStart(event){trackPointer(event);switch(pointers.length){case 1:switch(scope.touches.ONE){case TOUCH.ROTATE:if(scope.enableRotate===false)return;handleTouchStartRotate();state=STATE2.TOUCH_ROTATE;break;case TOUCH.PAN:if(scope.enablePan===false)return;handleTouchStartPan();state=STATE2.TOUCH_PAN;break;default:state=STATE2.NONE;}break;case 2:switch(scope.touches.TWO){case TOUCH.DOLLY_PAN:if(scope.enableZoom===false&&scope.enablePan===false)return;handleTouchStartDollyPan();state=STATE2.TOUCH_DOLLY_PAN;break;case TOUCH.DOLLY_ROTATE:if(scope.enableZoom===false&&scope.enableRotate===false)return;handleTouchStartDollyRotate();state=STATE2.TOUCH_DOLLY_ROTATE;break;default:state=STATE2.NONE;}break;default:state=STATE2.NONE;}if(state!==STATE2.NONE){scope.dispatchEvent(startEvent);}}function onTouchMove(event){trackPointer(event);switch(state){case STATE2.TOUCH_ROTATE:if(scope.enableRotate===false)return;handleTouchMoveRotate(event);scope.update();break;case STATE2.TOUCH_PAN:if(scope.enablePan===false)return;handleTouchMovePan(event);scope.update();break;case STATE2.TOUCH_DOLLY_PAN:if(scope.enableZoom===false&&scope.enablePan===false)return;handleTouchMoveDollyPan(event);scope.update();break;case STATE2.TOUCH_DOLLY_ROTATE:if(scope.enableZoom===false&&scope.enableRotate===false)return;handleTouchMoveDollyRotate(event);scope.update();break;default:state=STATE2.NONE;}}function onContextMenu(event){if(scope.enabled===false)return;event.preventDefault();}function addPointer(event){pointers.push(event);}function removePointer(event){delete pointerPositions[event.pointerId];for(let i2=0;i2{const scale=(this._gizmos.scale.x+this._gizmos.scale.y+this._gizmos.scale.z)/3;if(this.camera){const tbRadius=this.calculateTbRadius(this.camera);if(tbRadius!==void 0){this._tbRadius=tbRadius;}}const newRadius=this._tbRadius/scale;const curve=new EllipseCurve(0,0,newRadius,newRadius);const points=curve.getPoints(this._curvePts);const curveGeometry=new BufferGeometry().setFromPoints(points);for(const gizmo in this._gizmos.children){const child=this._gizmos.children[gizmo];child.geometry=curveGeometry;}this.dispatchEvent(_changeEvent);});__publicField(this,\"onContextMenu\",event=>{if(!this.enabled){return;}for(let i2=0;i2{this._touchStart.splice(0,this._touchStart.length);this._touchCurrent.splice(0,this._touchCurrent.length);this._input=INPUT.NONE;});__publicField(this,\"onPointerDown\",event=>{if(event.button==0&&event.isPrimary){this._downValid=true;this._downEvents.push(event);}else{this._downValid=false;}if(event.pointerType==\"touch\"&&this._input!=INPUT.CURSOR){this._touchStart.push(event);this._touchCurrent.push(event);switch(this._input){case INPUT.NONE:this._input=INPUT.ONE_FINGER;this.onSinglePanStart(event,\"ROTATE\");window.addEventListener(\"pointermove\",this.onPointerMove);window.addEventListener(\"pointerup\",this.onPointerUp);break;case INPUT.ONE_FINGER:case INPUT.ONE_FINGER_SWITCHED:this._input=INPUT.TWO_FINGER;this.onRotateStart();this.onPinchStart();this.onDoublePanStart();break;case INPUT.TWO_FINGER:this._input=INPUT.MULT_FINGER;this.onTriplePanStart();break;}}else if(event.pointerType!=\"touch\"&&this._input==INPUT.NONE){let modifier=null;if(event.ctrlKey||event.metaKey){modifier=\"CTRL\";}else if(event.shiftKey){modifier=\"SHIFT\";}this._mouseOp=this.getOpFromAction(event.button,modifier);if(this._mouseOp){window.addEventListener(\"pointermove\",this.onPointerMove);window.addEventListener(\"pointerup\",this.onPointerUp);this._input=INPUT.CURSOR;this._button=event.button;this.onSinglePanStart(event,this._mouseOp);}}});__publicField(this,\"onPointerMove\",event=>{if(event.pointerType==\"touch\"&&this._input!=INPUT.CURSOR){switch(this._input){case INPUT.ONE_FINGER:this.updateTouchEvent(event);this.onSinglePanMove(event,STATE.ROTATE);break;case INPUT.ONE_FINGER_SWITCHED:const movement=this.calculatePointersDistance(this._touchCurrent[0],event)*this._devPxRatio;if(movement>=this._switchSensibility){this._input=INPUT.ONE_FINGER;this.updateTouchEvent(event);this.onSinglePanStart(event,\"ROTATE\");break;}break;case INPUT.TWO_FINGER:this.updateTouchEvent(event);this.onRotateMove();this.onPinchMove();this.onDoublePanMove();break;case INPUT.MULT_FINGER:this.updateTouchEvent(event);this.onTriplePanMove();break;}}else if(event.pointerType!=\"touch\"&&this._input==INPUT.CURSOR){let modifier=null;if(event.ctrlKey||event.metaKey){modifier=\"CTRL\";}else if(event.shiftKey){modifier=\"SHIFT\";}const mouseOpState=this.getOpStateFromAction(this._button,modifier);if(mouseOpState){this.onSinglePanMove(event,mouseOpState);}}if(this._downValid){const movement=this.calculatePointersDistance(this._downEvents[this._downEvents.length-1],event)*this._devPxRatio;if(movement>this._movementThreshold){this._downValid=false;}}});__publicField(this,\"onPointerUp\",event=>{if(event.pointerType==\"touch\"&&this._input!=INPUT.CURSOR){const nTouch=this._touchCurrent.length;for(let i2=0;i2{var _a2,_b2;if(this.enabled&&this.enableZoom&&this.domElement){let modifier=null;if(event.ctrlKey||event.metaKey){modifier=\"CTRL\";}else if(event.shiftKey){modifier=\"SHIFT\";}const mouseOp=this.getOpFromAction(\"WHEEL\",modifier);if(mouseOp){event.preventDefault();this.dispatchEvent(_startEvent);const notchDeltaY=125;let sgn=event.deltaY/notchDeltaY;let size2=1;if(sgn>0){size2=1/this.scaleFactor;}else if(sgn<0){size2=this.scaleFactor;}switch(mouseOp){case\"ZOOM\":this.updateTbState(STATE.SCALE,true);if(sgn>0){size2=1/Math.pow(this.scaleFactor,sgn);}else if(sgn<0){size2=Math.pow(this.scaleFactor,-sgn);}if(this.cursorZoom&&this.enablePan){let scalePoint;if(this.camera instanceof OrthographicCamera){scalePoint=(_a2=this.unprojectOnTbPlane(this.camera,event.clientX,event.clientY,this.domElement))==null?void 0:_a2.applyQuaternion(this.camera.quaternion).multiplyScalar(1/this.camera.zoom).add(this._gizmos.position);}if(this.camera instanceof PerspectiveCamera){scalePoint=(_b2=this.unprojectOnTbPlane(this.camera,event.clientX,event.clientY,this.domElement))==null?void 0:_b2.applyQuaternion(this.camera.quaternion).add(this._gizmos.position);}if(scalePoint!==void 0)this.applyTransformMatrix(this.applyScale(size2,scalePoint));}else{this.applyTransformMatrix(this.applyScale(size2,this._gizmos.position));}if(this._grid){this.disposeGrid();this.drawGrid();}this.updateTbState(STATE.IDLE,false);this.dispatchEvent(_changeEvent);this.dispatchEvent(_endEvent);break;case\"FOV\":if(this.camera instanceof PerspectiveCamera){this.updateTbState(STATE.FOV,true);if(event.deltaX!=0){sgn=event.deltaX/notchDeltaY;size2=1;if(sgn>0){size2=1/Math.pow(this.scaleFactor,sgn);}else if(sgn<0){size2=Math.pow(this.scaleFactor,-sgn);}}this._v3_1.setFromMatrixPosition(this._cameraMatrixState);const x=this._v3_1.distanceTo(this._gizmos.position);let xNew=x/size2;xNew=MathUtils.clamp(xNew,this.minDistance,this.maxDistance);const y=x*Math.tan(MathUtils.DEG2RAD*this.camera.fov*0.5);let newFov=MathUtils.RAD2DEG*(Math.atan(y/xNew)*2);if(newFov>this.maxFov){newFov=this.maxFov;}else if(newFov{if(this.enabled&&this.domElement){this.dispatchEvent(_startEvent);this.setCenter(event.clientX,event.clientY);switch(operation){case\"PAN\":if(!this.enablePan)return;if(this._animationId!=-1){cancelAnimationFrame(this._animationId);this._animationId=-1;this._timeStart=-1;this.activateGizmos(false);this.dispatchEvent(_changeEvent);}if(this.camera){this.updateTbState(STATE.PAN,true);const rayDir=this.unprojectOnTbPlane(this.camera,_center$1.x,_center$1.y,this.domElement);if(rayDir!==void 0){this._startCursorPosition.copy(rayDir);}if(this.enableGrid){this.drawGrid();this.dispatchEvent(_changeEvent);}}break;case\"ROTATE\":if(!this.enableRotate)return;if(this._animationId!=-1){cancelAnimationFrame(this._animationId);this._animationId=-1;this._timeStart=-1;}if(this.camera){this.updateTbState(STATE.ROTATE,true);const rayDir=this.unprojectOnTbSurface(this.camera,_center$1.x,_center$1.y,this.domElement,this._tbRadius);if(rayDir!==void 0){this._startCursorPosition.copy(rayDir);}this.activateGizmos(true);if(this.enableAnimations){this._timePrev=this._timeCurrent=performance.now();this._angleCurrent=this._anglePrev=0;this._cursorPosPrev.copy(this._startCursorPosition);this._cursorPosCurr.copy(this._cursorPosPrev);this._wCurr=0;this._wPrev=this._wCurr;}}this.dispatchEvent(_changeEvent);break;case\"FOV\":if(!this.enableZoom)return;if(this.camera instanceof PerspectiveCamera){if(this._animationId!=-1){cancelAnimationFrame(this._animationId);this._animationId=-1;this._timeStart=-1;this.activateGizmos(false);this.dispatchEvent(_changeEvent);}this.updateTbState(STATE.FOV,true);this._startCursorPosition.setY(this.getCursorNDC(_center$1.x,_center$1.y,this.domElement).y*0.5);this._currentCursorPosition.copy(this._startCursorPosition);}break;case\"ZOOM\":if(!this.enableZoom)return;if(this._animationId!=-1){cancelAnimationFrame(this._animationId);this._animationId=-1;this._timeStart=-1;this.activateGizmos(false);this.dispatchEvent(_changeEvent);}this.updateTbState(STATE.SCALE,true);this._startCursorPosition.setY(this.getCursorNDC(_center$1.x,_center$1.y,this.domElement).y*0.5);this._currentCursorPosition.copy(this._startCursorPosition);break;}}});__publicField(this,\"onSinglePanMove\",(event,opState)=>{if(this.enabled&&this.domElement){const restart=opState!=this._state;this.setCenter(event.clientX,event.clientY);switch(opState){case STATE.PAN:if(this.enablePan&&this.camera){if(restart){this.dispatchEvent(_endEvent);this.dispatchEvent(_startEvent);this.updateTbState(opState,true);const rayDir=this.unprojectOnTbPlane(this.camera,_center$1.x,_center$1.y,this.domElement);if(rayDir!==void 0){this._startCursorPosition.copy(rayDir);}if(this.enableGrid){this.drawGrid();}this.activateGizmos(false);}else{const rayDir=this.unprojectOnTbPlane(this.camera,_center$1.x,_center$1.y,this.domElement);if(rayDir!==void 0){this._currentCursorPosition.copy(rayDir);}this.applyTransformMatrix(this.pan(this._startCursorPosition,this._currentCursorPosition));}}break;case STATE.ROTATE:if(this.enableRotate&&this.camera){if(restart){this.dispatchEvent(_endEvent);this.dispatchEvent(_startEvent);this.updateTbState(opState,true);const rayDir=this.unprojectOnTbSurface(this.camera,_center$1.x,_center$1.y,this.domElement,this._tbRadius);if(rayDir!==void 0){this._startCursorPosition.copy(rayDir);}if(this.enableGrid){this.disposeGrid();}this.activateGizmos(true);}else{const rayDir=this.unprojectOnTbSurface(this.camera,_center$1.x,_center$1.y,this.domElement,this._tbRadius);if(rayDir!==void 0){this._currentCursorPosition.copy(rayDir);}const distance=this._startCursorPosition.distanceTo(this._currentCursorPosition);const angle=this._startCursorPosition.angleTo(this._currentCursorPosition);const amount=Math.max(distance/this._tbRadius,angle);this.applyTransformMatrix(this.rotate(this.calculateRotationAxis(this._startCursorPosition,this._currentCursorPosition),amount));if(this.enableAnimations){this._timePrev=this._timeCurrent;this._timeCurrent=performance.now();this._anglePrev=this._angleCurrent;this._angleCurrent=amount;this._cursorPosPrev.copy(this._cursorPosCurr);this._cursorPosCurr.copy(this._currentCursorPosition);this._wPrev=this._wCurr;this._wCurr=this.calculateAngularSpeed(this._anglePrev,this._angleCurrent,this._timePrev,this._timeCurrent);}}}break;case STATE.SCALE:if(this.enableZoom){if(restart){this.dispatchEvent(_endEvent);this.dispatchEvent(_startEvent);this.updateTbState(opState,true);this._startCursorPosition.setY(this.getCursorNDC(_center$1.x,_center$1.y,this.domElement).y*0.5);this._currentCursorPosition.copy(this._startCursorPosition);if(this.enableGrid){this.disposeGrid();}this.activateGizmos(false);}else{const screenNotches=8;this._currentCursorPosition.setY(this.getCursorNDC(_center$1.x,_center$1.y,this.domElement).y*0.5);const movement=this._currentCursorPosition.y-this._startCursorPosition.y;let size2=1;if(movement<0){size2=1/Math.pow(this.scaleFactor,-movement*screenNotches);}else if(movement>0){size2=Math.pow(this.scaleFactor,movement*screenNotches);}this.applyTransformMatrix(this.applyScale(size2,this._gizmos.position));}}break;case STATE.FOV:if(this.enableZoom&&this.camera instanceof PerspectiveCamera){if(restart){this.dispatchEvent(_endEvent);this.dispatchEvent(_startEvent);this.updateTbState(opState,true);this._startCursorPosition.setY(this.getCursorNDC(_center$1.x,_center$1.y,this.domElement).y*0.5);this._currentCursorPosition.copy(this._startCursorPosition);if(this.enableGrid){this.disposeGrid();}this.activateGizmos(false);}else{const screenNotches=8;this._currentCursorPosition.setY(this.getCursorNDC(_center$1.x,_center$1.y,this.domElement).y*0.5);const movement=this._currentCursorPosition.y-this._startCursorPosition.y;let size2=1;if(movement<0){size2=1/Math.pow(this.scaleFactor,-movement*screenNotches);}else if(movement>0){size2=Math.pow(this.scaleFactor,movement*screenNotches);}this._v3_1.setFromMatrixPosition(this._cameraMatrixState);const x=this._v3_1.distanceTo(this._gizmos.position);let xNew=x/size2;xNew=MathUtils.clamp(xNew,this.minDistance,this.maxDistance);const y=x*Math.tan(MathUtils.DEG2RAD*this._fovState*0.5);let newFov=MathUtils.RAD2DEG*(Math.atan(y/xNew)*2);newFov=MathUtils.clamp(newFov,this.minFov,this.maxFov);const newDistance=y/Math.tan(MathUtils.DEG2RAD*(newFov/2));size2=x/newDistance;this._v3_2.setFromMatrixPosition(this._gizmoMatrixState);this.setFov(newFov);this.applyTransformMatrix(this.applyScale(size2,this._v3_2,false));const direction=this._gizmos.position.clone().sub(this.camera.position).normalize().multiplyScalar(newDistance/x);this._m4_1.makeTranslation(direction.x,direction.y,direction.z);}}break;}this.dispatchEvent(_changeEvent);}});__publicField(this,\"onSinglePanEnd\",()=>{if(this._state==STATE.ROTATE){if(!this.enableRotate){return;}if(this.enableAnimations){const deltaTime=performance.now()-this._timeCurrent;if(deltaTime<120){const w=Math.abs((this._wPrev+this._wCurr)/2);const self2=this;this._animationId=window.requestAnimationFrame(function(t2){self2.updateTbState(STATE.ANIMATION_ROTATE,true);const rotationAxis=self2.calculateRotationAxis(self2._cursorPosPrev,self2._cursorPosCurr);self2.onRotationAnim(t2,rotationAxis,Math.min(w,self2.wMax));});}else{this.updateTbState(STATE.IDLE,false);this.activateGizmos(false);this.dispatchEvent(_changeEvent);}}else{this.updateTbState(STATE.IDLE,false);this.activateGizmos(false);this.dispatchEvent(_changeEvent);}}else if(this._state==STATE.PAN||this._state==STATE.IDLE){this.updateTbState(STATE.IDLE,false);if(this.enableGrid){this.disposeGrid();}this.activateGizmos(false);this.dispatchEvent(_changeEvent);}this.dispatchEvent(_endEvent);});__publicField(this,\"onDoubleTap\",event=>{if(this.enabled&&this.enablePan&&this.scene&&this.camera&&this.domElement){this.dispatchEvent(_startEvent);this.setCenter(event.clientX,event.clientY);const hitP=this.unprojectOnObj(this.getCursorNDC(_center$1.x,_center$1.y,this.domElement),this.camera);if(hitP&&this.enableAnimations){const self2=this;if(this._animationId!=-1){window.cancelAnimationFrame(this._animationId);}this._timeStart=-1;this._animationId=window.requestAnimationFrame(function(t2){self2.updateTbState(STATE.ANIMATION_FOCUS,true);self2.onFocusAnim(t2,hitP,self2._cameraMatrixState,self2._gizmoMatrixState);});}else if(hitP&&!this.enableAnimations){this.updateTbState(STATE.FOCUS,true);this.focus(hitP,this.scaleFactor);this.updateTbState(STATE.IDLE,false);this.dispatchEvent(_changeEvent);}}this.dispatchEvent(_endEvent);});__publicField(this,\"onDoublePanStart\",()=>{if(this.enabled&&this.enablePan&&this.camera&&this.domElement){this.dispatchEvent(_startEvent);this.updateTbState(STATE.PAN,true);this.setCenter((this._touchCurrent[0].clientX+this._touchCurrent[1].clientX)/2,(this._touchCurrent[0].clientY+this._touchCurrent[1].clientY)/2);const rayDir=this.unprojectOnTbPlane(this.camera,_center$1.x,_center$1.y,this.domElement,true);if(rayDir!==void 0){this._startCursorPosition.copy(rayDir);}this._currentCursorPosition.copy(this._startCursorPosition);this.activateGizmos(false);}});__publicField(this,\"onDoublePanMove\",()=>{if(this.enabled&&this.enablePan&&this.camera&&this.domElement){this.setCenter((this._touchCurrent[0].clientX+this._touchCurrent[1].clientX)/2,(this._touchCurrent[0].clientY+this._touchCurrent[1].clientY)/2);if(this._state!=STATE.PAN){this.updateTbState(STATE.PAN,true);this._startCursorPosition.copy(this._currentCursorPosition);}const rayDir=this.unprojectOnTbPlane(this.camera,_center$1.x,_center$1.y,this.domElement,true);if(rayDir!==void 0)this._currentCursorPosition.copy(rayDir);this.applyTransformMatrix(this.pan(this._startCursorPosition,this._currentCursorPosition,true));this.dispatchEvent(_changeEvent);}});__publicField(this,\"onDoublePanEnd\",()=>{this.updateTbState(STATE.IDLE,false);this.dispatchEvent(_endEvent);});__publicField(this,\"onRotateStart\",()=>{var _a2;if(this.enabled&&this.enableRotate){this.dispatchEvent(_startEvent);this.updateTbState(STATE.ZROTATE,true);this._startFingerRotation=this.getAngle(this._touchCurrent[1],this._touchCurrent[0])+this.getAngle(this._touchStart[1],this._touchStart[0]);this._currentFingerRotation=this._startFingerRotation;(_a2=this.camera)==null?void 0:_a2.getWorldDirection(this._rotationAxis);if(!this.enablePan&&!this.enableZoom){this.activateGizmos(true);}}});__publicField(this,\"onRotateMove\",()=>{var _a2;if(this.enabled&&this.enableRotate&&this.camera&&this.domElement){this.setCenter((this._touchCurrent[0].clientX+this._touchCurrent[1].clientX)/2,(this._touchCurrent[0].clientY+this._touchCurrent[1].clientY)/2);let rotationPoint;if(this._state!=STATE.ZROTATE){this.updateTbState(STATE.ZROTATE,true);this._startFingerRotation=this._currentFingerRotation;}this._currentFingerRotation=this.getAngle(this._touchCurrent[1],this._touchCurrent[0])+this.getAngle(this._touchStart[1],this._touchStart[0]);if(!this.enablePan){rotationPoint=new Vector3().setFromMatrixPosition(this._gizmoMatrixState);}else if(this.camera){this._v3_2.setFromMatrixPosition(this._gizmoMatrixState);rotationPoint=(_a2=this.unprojectOnTbPlane(this.camera,_center$1.x,_center$1.y,this.domElement))==null?void 0:_a2.applyQuaternion(this.camera.quaternion).multiplyScalar(1/this.camera.zoom).add(this._v3_2);}const amount=MathUtils.DEG2RAD*(this._startFingerRotation-this._currentFingerRotation);if(rotationPoint!==void 0){this.applyTransformMatrix(this.zRotate(rotationPoint,amount));}this.dispatchEvent(_changeEvent);}});__publicField(this,\"onRotateEnd\",()=>{this.updateTbState(STATE.IDLE,false);this.activateGizmos(false);this.dispatchEvent(_endEvent);});__publicField(this,\"onPinchStart\",()=>{if(this.enabled&&this.enableZoom){this.dispatchEvent(_startEvent);this.updateTbState(STATE.SCALE,true);this._startFingerDistance=this.calculatePointersDistance(this._touchCurrent[0],this._touchCurrent[1]);this._currentFingerDistance=this._startFingerDistance;this.activateGizmos(false);}});__publicField(this,\"onPinchMove\",()=>{var _a2,_b2;if(this.enabled&&this.enableZoom&&this.domElement){this.setCenter((this._touchCurrent[0].clientX+this._touchCurrent[1].clientX)/2,(this._touchCurrent[0].clientY+this._touchCurrent[1].clientY)/2);const minDistance=12;if(this._state!=STATE.SCALE){this._startFingerDistance=this._currentFingerDistance;this.updateTbState(STATE.SCALE,true);}this._currentFingerDistance=Math.max(this.calculatePointersDistance(this._touchCurrent[0],this._touchCurrent[1]),minDistance*this._devPxRatio);const amount=this._currentFingerDistance/this._startFingerDistance;let scalePoint;if(!this.enablePan){scalePoint=this._gizmos.position;}else{if(this.camera instanceof OrthographicCamera){scalePoint=(_a2=this.unprojectOnTbPlane(this.camera,_center$1.x,_center$1.y,this.domElement))==null?void 0:_a2.applyQuaternion(this.camera.quaternion).multiplyScalar(1/this.camera.zoom).add(this._gizmos.position);}else if(this.camera instanceof PerspectiveCamera){scalePoint=(_b2=this.unprojectOnTbPlane(this.camera,_center$1.x,_center$1.y,this.domElement))==null?void 0:_b2.applyQuaternion(this.camera.quaternion).add(this._gizmos.position);}}if(scalePoint!==void 0){this.applyTransformMatrix(this.applyScale(amount,scalePoint));}this.dispatchEvent(_changeEvent);}});__publicField(this,\"onPinchEnd\",()=>{this.updateTbState(STATE.IDLE,false);this.dispatchEvent(_endEvent);});__publicField(this,\"onTriplePanStart\",()=>{if(this.enabled&&this.enableZoom&&this.domElement){this.dispatchEvent(_startEvent);this.updateTbState(STATE.SCALE,true);let clientX=0;let clientY=0;const nFingers=this._touchCurrent.length;for(let i2=0;i2{if(this.enabled&&this.enableZoom&&this.camera&&this.domElement){let clientX=0;let clientY=0;const nFingers=this._touchCurrent.length;for(let i2=0;i20){size2=Math.pow(this.scaleFactor,movement*screenNotches);}this._v3_1.setFromMatrixPosition(this._cameraMatrixState);const x=this._v3_1.distanceTo(this._gizmos.position);let xNew=x/size2;xNew=MathUtils.clamp(xNew,this.minDistance,this.maxDistance);const y=x*Math.tan(MathUtils.DEG2RAD*this._fovState*0.5);let newFov=MathUtils.RAD2DEG*(Math.atan(y/xNew)*2);newFov=MathUtils.clamp(newFov,this.minFov,this.maxFov);const newDistance=y/Math.tan(MathUtils.DEG2RAD*(newFov/2));size2=x/newDistance;this._v3_2.setFromMatrixPosition(this._gizmoMatrixState);this.setFov(newFov);this.applyTransformMatrix(this.applyScale(size2,this._v3_2,false));const direction=this._gizmos.position.clone().sub(this.camera.position).normalize().multiplyScalar(newDistance/x);this._m4_1.makeTranslation(direction.x,direction.y,direction.z);this.dispatchEvent(_changeEvent);}});__publicField(this,\"onTriplePanEnd\",()=>{this.updateTbState(STATE.IDLE,false);this.dispatchEvent(_endEvent);});/**\n * Set _center's x/y coordinates\n * @param {Number} clientX\n * @param {Number} clientY\n */__publicField(this,\"setCenter\",(clientX,clientY)=>{_center$1.x=clientX;_center$1.y=clientY;});/**\n * Set default mouse actions\n */__publicField(this,\"initializeMouseActions\",()=>{this.setMouseAction(\"PAN\",0,\"CTRL\");this.setMouseAction(\"PAN\",2);this.setMouseAction(\"ROTATE\",0);this.setMouseAction(\"ZOOM\",\"WHEEL\");this.setMouseAction(\"ZOOM\",1);this.setMouseAction(\"FOV\",\"WHEEL\",\"SHIFT\");this.setMouseAction(\"FOV\",1,\"SHIFT\");});/**\n * Set a new mouse action by specifying the operation to be performed and a mouse/key combination. In case of conflict, replaces the existing one\n * @param {String} operation The operation to be performed ('PAN', 'ROTATE', 'ZOOM', 'FOV)\n * @param {*} mouse A mouse button (0, 1, 2) or 'WHEEL' for wheel notches\n * @param {*} key The keyboard modifier ('CTRL', 'SHIFT') or null if key is not needed\n * @returns {Boolean} True if the mouse action has been successfully added, false otherwise\n */__publicField(this,\"setMouseAction\",(operation,mouse,key=null)=>{const operationInput=[\"PAN\",\"ROTATE\",\"ZOOM\",\"FOV\"];const mouseInput=[0,1,2,\"WHEEL\"];const keyInput=[\"CTRL\",\"SHIFT\",null];let state;if(!operationInput.includes(operation)||!mouseInput.includes(mouse)||!keyInput.includes(key)){return false;}if(mouse==\"WHEEL\"){if(operation!=\"ZOOM\"&&operation!=\"FOV\"){return false;}}switch(operation){case\"PAN\":state=STATE.PAN;break;case\"ROTATE\":state=STATE.ROTATE;break;case\"ZOOM\":state=STATE.SCALE;break;case\"FOV\":state=STATE.FOV;break;}const action={operation,mouse,key,state};for(let i2=0;i2{let action;for(let i2=0;i2{let action;for(let i2=0;i2{return Math.atan2(p2.clientY-p1.clientY,p2.clientX-p1.clientX)*180/Math.PI;});/**\n * Update a PointerEvent inside current pointerevents array\n * @param {PointerEvent} event\n */__publicField(this,\"updateTouchEvent\",event=>{for(let i2=0;i2{const s=p1-p0;const t2=(t1-t0)/1e3;if(t2==0){return 0;}return s/t2;});/**\n * Calculate the distance between two pointers\n * @param {PointerEvent} p0 The first pointer\n * @param {PointerEvent} p1 The second pointer\n * @returns {number} The distance between the two pointers\n */__publicField(this,\"calculatePointersDistance\",(p0,p1)=>{return Math.sqrt(Math.pow(p1.clientX-p0.clientX,2)+Math.pow(p1.clientY-p0.clientY,2));});/**\n * Calculate the rotation axis as the vector perpendicular between two vectors\n * @param {Vector3} vec1 The first vector\n * @param {Vector3} vec2 The second vector\n * @returns {Vector3} The normalized rotation axis\n */__publicField(this,\"calculateRotationAxis\",(vec1,vec2)=>{this._rotationMatrix.extractRotation(this._cameraMatrixState);this._quat.setFromRotationMatrix(this._rotationMatrix);this._rotationAxis.crossVectors(vec1,vec2).applyQuaternion(this._quat);return this._rotationAxis.normalize().clone();});/**\n * Calculate the trackball radius so that gizmo's diamater will be 2/3 of the minimum side of the camera frustum\n * @param {Camera} camera\n * @returns {Number} The trackball radius\n */__publicField(this,\"calculateTbRadius\",camera=>{const factor=0.67;const distance=camera.position.distanceTo(this._gizmos.position);if(camera instanceof PerspectiveCamera){const halfFovV=MathUtils.DEG2RAD*camera.fov*0.5;const halfFovH=Math.atan(camera.aspect*Math.tan(halfFovV));return Math.tan(Math.min(halfFovV,halfFovH))*distance*factor;}else if(camera instanceof OrthographicCamera){return Math.min(camera.top,camera.right)*factor;}});/**\n * Focus operation consist of positioning the point of interest in front of the camera and a slightly zoom in\n * @param {Vector3} point The point of interest\n * @param {Number} size Scale factor\n * @param {Number} amount Amount of operation to be completed (used for focus animations, default is complete full operation)\n */__publicField(this,\"focus\",(point,size2,amount=1)=>{if(this.camera){const focusPoint=point.clone();focusPoint.sub(this._gizmos.position).multiplyScalar(amount);this._translationMatrix.makeTranslation(focusPoint.x,focusPoint.y,focusPoint.z);const gizmoStateTemp=this._gizmoMatrixState.clone();this._gizmoMatrixState.premultiply(this._translationMatrix);this._gizmoMatrixState.decompose(this._gizmos.position,this._gizmos.quaternion,this._gizmos.scale);const cameraStateTemp=this._cameraMatrixState.clone();this._cameraMatrixState.premultiply(this._translationMatrix);this._cameraMatrixState.decompose(this.camera.position,this.camera.quaternion,this.camera.scale);if(this.enableZoom){this.applyTransformMatrix(this.applyScale(size2,this._gizmos.position));}this._gizmoMatrixState.copy(gizmoStateTemp);this._cameraMatrixState.copy(cameraStateTemp);}});/**\n * Draw a grid and add it to the scene\n */__publicField(this,\"drawGrid\",()=>{if(this.scene){const color=8947848;const multiplier=3;let size2,divisions,maxLength,tick;if(this.camera instanceof OrthographicCamera){const width=this.camera.right-this.camera.left;const height=this.camera.bottom-this.camera.top;maxLength=Math.max(width,height);tick=maxLength/20;size2=maxLength/this.camera.zoom*multiplier;divisions=size2/tick*this.camera.zoom;}else if(this.camera instanceof PerspectiveCamera){const distance=this.camera.position.distanceTo(this._gizmos.position);const halfFovV=MathUtils.DEG2RAD*this.camera.fov*0.5;const halfFovH=Math.atan(this.camera.aspect*Math.tan(halfFovV));maxLength=Math.tan(Math.max(halfFovV,halfFovH))*distance*2;tick=maxLength/20;size2=maxLength*multiplier;divisions=size2/tick;}if(this._grid==null&&this.camera){this._grid=new GridHelper(size2,divisions,color,color);this._grid.position.copy(this._gizmos.position);this._gridPosition.copy(this._grid.position);this._grid.quaternion.copy(this.camera.quaternion);this._grid.rotateX(Math.PI*0.5);this.scene.add(this._grid);}}});__publicField(this,\"connect\",domElement=>{if(domElement===document){console.error('THREE.ArcballControls: \"document\" should not be used as the target \"domElement\". Please use \"renderer.domElement\" instead.');}this.domElement=domElement;this.domElement.style.touchAction=\"none\";this.domElement.addEventListener(\"contextmenu\",this.onContextMenu);this.domElement.addEventListener(\"pointerdown\",this.onPointerDown);this.domElement.addEventListener(\"pointercancel\",this.onPointerCancel);this.domElement.addEventListener(\"wheel\",this.onWheel);});/**\n * Remove all listeners, stop animations and clean scene\n */__publicField(this,\"dispose\",()=>{var _a2,_b2,_c,_d,_e;if(this._animationId!=-1){window.cancelAnimationFrame(this._animationId);}(_a2=this.domElement)==null?void 0:_a2.removeEventListener(\"pointerdown\",this.onPointerDown);(_b2=this.domElement)==null?void 0:_b2.removeEventListener(\"pointercancel\",this.onPointerCancel);(_c=this.domElement)==null?void 0:_c.removeEventListener(\"wheel\",this.onWheel);(_d=this.domElement)==null?void 0:_d.removeEventListener(\"contextmenu\",this.onContextMenu);window.removeEventListener(\"pointermove\",this.onPointerMove);window.removeEventListener(\"pointerup\",this.onPointerUp);window.removeEventListener(\"resize\",this.onWindowResize);(_e=this.scene)==null?void 0:_e.remove(this._gizmos);this.disposeGrid();});/**\n * remove the grid from the scene\n */__publicField(this,\"disposeGrid\",()=>{if(this._grid&&this.scene){this.scene.remove(this._grid);this._grid=null;}});/**\n * Compute the easing out cubic function for ease out effect in animation\n * @param {Number} t The absolute progress of the animation in the bound of 0 (beginning of the) and 1 (ending of animation)\n * @returns {Number} Result of easing out cubic at time t\n */__publicField(this,\"easeOutCubic\",t2=>{return 1-Math.pow(1-t2,3);});/**\n * Make rotation gizmos more or less visible\n * @param {Boolean} isActive If true, make gizmos more visible\n */__publicField(this,\"activateGizmos\",isActive=>{for(const gizmo of this._gizmos.children){gizmo.material.setValues({opacity:isActive?1:0.6});}});/**\n * Calculate the cursor position in NDC\n * @param {number} x Cursor horizontal coordinate within the canvas\n * @param {number} y Cursor vertical coordinate within the canvas\n * @param {HTMLElement} canvas The canvas where the renderer draws its output\n * @returns {Vector2} Cursor normalized position inside the canvas\n */__publicField(this,\"getCursorNDC\",(cursorX,cursorY,canvas)=>{const canvasRect=canvas.getBoundingClientRect();this._v2_1.setX((cursorX-canvasRect.left)/canvasRect.width*2-1);this._v2_1.setY((canvasRect.bottom-cursorY)/canvasRect.height*2-1);return this._v2_1.clone();});/**\n * Calculate the cursor position inside the canvas x/y coordinates with the origin being in the center of the canvas\n * @param {Number} x Cursor horizontal coordinate within the canvas\n * @param {Number} y Cursor vertical coordinate within the canvas\n * @param {HTMLElement} canvas The canvas where the renderer draws its output\n * @returns {Vector2} Cursor position inside the canvas\n */__publicField(this,\"getCursorPosition\",(cursorX,cursorY,canvas)=>{this._v2_1.copy(this.getCursorNDC(cursorX,cursorY,canvas));if(this.camera instanceof OrthographicCamera){this._v2_1.x*=(this.camera.right-this.camera.left)*0.5;this._v2_1.y*=(this.camera.top-this.camera.bottom)*0.5;}return this._v2_1.clone();});/**\n * Set the camera to be controlled\n * @param {Camera} camera The virtual camera to be controlled\n */__publicField(this,\"setCamera\",camera=>{if(camera){camera.lookAt(this.target);camera.updateMatrix();if(camera instanceof PerspectiveCamera){this._fov0=camera.fov;this._fovState=camera.fov;}this._cameraMatrixState0.copy(camera.matrix);this._cameraMatrixState.copy(this._cameraMatrixState0);this._cameraProjectionState.copy(camera.projectionMatrix);this._zoom0=camera.zoom;this._zoomState=this._zoom0;this._initialNear=camera.near;this._nearPos0=camera.position.distanceTo(this.target)-camera.near;this._nearPos=this._initialNear;this._initialFar=camera.far;this._farPos0=camera.position.distanceTo(this.target)-camera.far;this._farPos=this._initialFar;this._up0.copy(camera.up);this._upState.copy(camera.up);this.camera=camera;this.camera.updateProjectionMatrix();const tbRadius=this.calculateTbRadius(camera);if(tbRadius!==void 0){this._tbRadius=tbRadius;}this.makeGizmos(this.target,this._tbRadius);}});/**\n * Creates the rotation gizmos matching trackball center and radius\n * @param {Vector3} tbCenter The trackball center\n * @param {number} tbRadius The trackball radius\n */__publicField(this,\"makeGizmos\",(tbCenter,tbRadius)=>{const curve=new EllipseCurve(0,0,tbRadius,tbRadius);const points=curve.getPoints(this._curvePts);const curveGeometry=new BufferGeometry().setFromPoints(points);const curveMaterialX=new LineBasicMaterial({color:16744576,fog:false,transparent:true,opacity:0.6});const curveMaterialY=new LineBasicMaterial({color:8454016,fog:false,transparent:true,opacity:0.6});const curveMaterialZ=new LineBasicMaterial({color:8421631,fog:false,transparent:true,opacity:0.6});const gizmoX=new Line(curveGeometry,curveMaterialX);const gizmoY=new Line(curveGeometry,curveMaterialY);const gizmoZ=new Line(curveGeometry,curveMaterialZ);const rotation=Math.PI*0.5;gizmoX.rotation.x=rotation;gizmoY.rotation.y=rotation;this._gizmoMatrixState0.identity().setPosition(tbCenter);this._gizmoMatrixState.copy(this._gizmoMatrixState0);if(this.camera&&this.camera.zoom!=1){const size2=1/this.camera.zoom;this._scaleMatrix.makeScale(size2,size2,size2);this._translationMatrix.makeTranslation(-tbCenter.x,-tbCenter.y,-tbCenter.z);this._gizmoMatrixState.premultiply(this._translationMatrix).premultiply(this._scaleMatrix);this._translationMatrix.makeTranslation(tbCenter.x,tbCenter.y,tbCenter.z);this._gizmoMatrixState.premultiply(this._translationMatrix);}this._gizmoMatrixState.decompose(this._gizmos.position,this._gizmos.quaternion,this._gizmos.scale);this._gizmos.clear();this._gizmos.add(gizmoX);this._gizmos.add(gizmoY);this._gizmos.add(gizmoZ);});/**\n * Perform animation for focus operation\n * @param {Number} time Instant in which this function is called as performance.now()\n * @param {Vector3} point Point of interest for focus operation\n * @param {Matrix4} cameraMatrix Camera matrix\n * @param {Matrix4} gizmoMatrix Gizmos matrix\n */__publicField(this,\"onFocusAnim\",(time,point,cameraMatrix,gizmoMatrix)=>{if(this._timeStart==-1){this._timeStart=time;}if(this._state==STATE.ANIMATION_FOCUS){const deltaTime=time-this._timeStart;const animTime=deltaTime/this.focusAnimationTime;this._gizmoMatrixState.copy(gizmoMatrix);if(animTime>=1){this._gizmoMatrixState.decompose(this._gizmos.position,this._gizmos.quaternion,this._gizmos.scale);this.focus(point,this.scaleFactor);this._timeStart=-1;this.updateTbState(STATE.IDLE,false);this.activateGizmos(false);this.dispatchEvent(_changeEvent);}else{const amount=this.easeOutCubic(animTime);const size2=1-amount+this.scaleFactor*amount;this._gizmoMatrixState.decompose(this._gizmos.position,this._gizmos.quaternion,this._gizmos.scale);this.focus(point,size2,amount);this.dispatchEvent(_changeEvent);const self2=this;this._animationId=window.requestAnimationFrame(function(t2){self2.onFocusAnim(t2,point,cameraMatrix,gizmoMatrix.clone());});}}else{this._animationId=-1;this._timeStart=-1;}});/**\n * Perform animation for rotation operation\n * @param {Number} time Instant in which this function is called as performance.now()\n * @param {Vector3} rotationAxis Rotation axis\n * @param {number} w0 Initial angular velocity\n */__publicField(this,\"onRotationAnim\",(time,rotationAxis,w0)=>{if(this._timeStart==-1){this._anglePrev=0;this._angleCurrent=0;this._timeStart=time;}if(this._state==STATE.ANIMATION_ROTATE){const deltaTime=(time-this._timeStart)/1e3;const w=w0+-this.dampingFactor*deltaTime;if(w>0){this._angleCurrent=0.5*-this.dampingFactor*Math.pow(deltaTime,2)+w0*deltaTime+0;this.applyTransformMatrix(this.rotate(rotationAxis,this._angleCurrent));this.dispatchEvent(_changeEvent);const self2=this;this._animationId=window.requestAnimationFrame(function(t2){self2.onRotationAnim(t2,rotationAxis,w0);});}else{this._animationId=-1;this._timeStart=-1;this.updateTbState(STATE.IDLE,false);this.activateGizmos(false);this.dispatchEvent(_changeEvent);}}else{this._animationId=-1;this._timeStart=-1;if(this._state!=STATE.ROTATE){this.activateGizmos(false);this.dispatchEvent(_changeEvent);}}});/**\n * Perform pan operation moving camera between two points\n * @param {Vector3} p0 Initial point\n * @param {Vector3} p1 Ending point\n * @param {Boolean} adjust If movement should be adjusted considering camera distance (Perspective only)\n */__publicField(this,\"pan\",(p0,p1,adjust=false)=>{if(this.camera){const movement=p0.clone().sub(p1);if(this.camera instanceof OrthographicCamera){movement.multiplyScalar(1/this.camera.zoom);}if(this.camera instanceof PerspectiveCamera&&adjust){this._v3_1.setFromMatrixPosition(this._cameraMatrixState0);this._v3_2.setFromMatrixPosition(this._gizmoMatrixState0);const distanceFactor=this._v3_1.distanceTo(this._v3_2)/this.camera.position.distanceTo(this._gizmos.position);movement.multiplyScalar(1/distanceFactor);}this._v3_1.set(movement.x,movement.y,0).applyQuaternion(this.camera.quaternion);this._m4_1.makeTranslation(this._v3_1.x,this._v3_1.y,this._v3_1.z);this.setTransformationMatrices(this._m4_1,this._m4_1);}return _transformation;});/**\n * Reset trackball\n */__publicField(this,\"reset\",()=>{if(this.camera){this.camera.zoom=this._zoom0;if(this.camera instanceof PerspectiveCamera){this.camera.fov=this._fov0;}this.camera.near=this._nearPos;this.camera.far=this._farPos;this._cameraMatrixState.copy(this._cameraMatrixState0);this._cameraMatrixState.decompose(this.camera.position,this.camera.quaternion,this.camera.scale);this.camera.up.copy(this._up0);this.camera.updateMatrix();this.camera.updateProjectionMatrix();this._gizmoMatrixState.copy(this._gizmoMatrixState0);this._gizmoMatrixState0.decompose(this._gizmos.position,this._gizmos.quaternion,this._gizmos.scale);this._gizmos.updateMatrix();const tbRadius=this.calculateTbRadius(this.camera);if(tbRadius!==void 0){this._tbRadius=tbRadius;}this.makeGizmos(this._gizmos.position,this._tbRadius);this.camera.lookAt(this._gizmos.position);this.updateTbState(STATE.IDLE,false);this.dispatchEvent(_changeEvent);}});/**\n * Rotate the camera around an axis passing by trackball's center\n * @param {Vector3} axis Rotation axis\n * @param {number} angle Angle in radians\n * @returns {Object} Object with 'camera' field containing transformation matrix resulting from the operation to be applied to the camera\n */__publicField(this,\"rotate\",(axis,angle)=>{const point=this._gizmos.position;this._translationMatrix.makeTranslation(-point.x,-point.y,-point.z);this._rotationMatrix.makeRotationAxis(axis,-angle);this._m4_1.makeTranslation(point.x,point.y,point.z);this._m4_1.multiply(this._rotationMatrix);this._m4_1.multiply(this._translationMatrix);this.setTransformationMatrices(this._m4_1);return _transformation;});__publicField(this,\"copyState\",()=>{if(this.camera){const state=JSON.stringify(this.camera instanceof OrthographicCamera?{arcballState:{cameraFar:this.camera.far,cameraMatrix:this.camera.matrix,cameraNear:this.camera.near,cameraUp:this.camera.up,cameraZoom:this.camera.zoom,gizmoMatrix:this._gizmos.matrix}}:{arcballState:{cameraFar:this.camera.far,cameraFov:this.camera.fov,cameraMatrix:this.camera.matrix,cameraNear:this.camera.near,cameraUp:this.camera.up,cameraZoom:this.camera.zoom,gizmoMatrix:this._gizmos.matrix}});navigator.clipboard.writeText(state);}});__publicField(this,\"pasteState\",()=>{const self2=this;navigator.clipboard.readText().then(function resolved(value){self2.setStateFromJSON(value);});});/**\n * Save the current state of the control. This can later be recovered with .reset\n */__publicField(this,\"saveState\",()=>{if(!this.camera)return;this._cameraMatrixState0.copy(this.camera.matrix);this._gizmoMatrixState0.copy(this._gizmos.matrix);this._nearPos=this.camera.near;this._farPos=this.camera.far;this._zoom0=this.camera.zoom;this._up0.copy(this.camera.up);if(this.camera instanceof PerspectiveCamera){this._fov0=this.camera.fov;}});/**\n * Perform uniform scale operation around a given point\n * @param {Number} size Scale factor\n * @param {Vector3} point Point around which scale\n * @param {Boolean} scaleGizmos If gizmos should be scaled (Perspective only)\n * @returns {Object} Object with 'camera' and 'gizmo' fields containing transformation matrices resulting from the operation to be applied to the camera and gizmos\n */__publicField(this,\"applyScale\",(size2,point,scaleGizmos=true)=>{if(!this.camera)return;const scalePoint=point.clone();let sizeInverse=1/size2;if(this.camera instanceof OrthographicCamera){this.camera.zoom=this._zoomState;this.camera.zoom*=size2;if(this.camera.zoom>this.maxZoom){this.camera.zoom=this.maxZoom;sizeInverse=this._zoomState/this.maxZoom;}else if(this.camera.zoomthis.maxDistance){sizeInverse=this.maxDistance/distance;amount=distance-distance*sizeInverse;}let direction=scalePoint.clone().sub(this._v3_1).normalize().multiplyScalar(amount);this._m4_1.makeTranslation(direction.x,direction.y,direction.z);if(scaleGizmos){const pos=this._v3_2;distance=pos.distanceTo(scalePoint);amount=distance-distance*sizeInverse;direction=scalePoint.clone().sub(this._v3_2).normalize().multiplyScalar(amount);this._translationMatrix.makeTranslation(pos.x,pos.y,pos.z);this._scaleMatrix.makeScale(sizeInverse,sizeInverse,sizeInverse);this._m4_2.makeTranslation(direction.x,direction.y,direction.z).multiply(this._translationMatrix);this._m4_2.multiply(this._scaleMatrix);this._translationMatrix.makeTranslation(-pos.x,-pos.y,-pos.z);this._m4_2.multiply(this._translationMatrix);this.setTransformationMatrices(this._m4_1,this._m4_2);}else{this.setTransformationMatrices(this._m4_1);}return _transformation;}});/**\n * Set camera fov\n * @param {Number} value fov to be setted\n */__publicField(this,\"setFov\",value=>{if(this.camera instanceof PerspectiveCamera){this.camera.fov=MathUtils.clamp(value,this.minFov,this.maxFov);this.camera.updateProjectionMatrix();}});/**\n * Set the trackball's center point\n * @param {Number} x X coordinate\n * @param {Number} y Y coordinate\n * @param {Number} z Z coordinate\n */__publicField(this,\"setTarget\",(x,y,z)=>{if(this.camera){this.target.set(x,y,z);this._gizmos.position.set(x,y,z);const tbRadius=this.calculateTbRadius(this.camera);if(tbRadius!==void 0){this._tbRadius=tbRadius;}this.makeGizmos(this.target,this._tbRadius);this.camera.lookAt(this.target);}});/**\n * Rotate camera around its direction axis passing by a given point by a given angle\n * @param {Vector3} point The point where the rotation axis is passing trough\n * @param {Number} angle Angle in radians\n * @returns The computed transormation matix\n */__publicField(this,\"zRotate\",(point,angle)=>{this._rotationMatrix.makeRotationAxis(this._rotationAxis,angle);this._translationMatrix.makeTranslation(-point.x,-point.y,-point.z);this._m4_1.makeTranslation(point.x,point.y,point.z);this._m4_1.multiply(this._rotationMatrix);this._m4_1.multiply(this._translationMatrix);this._v3_1.setFromMatrixPosition(this._gizmoMatrixState).sub(point);this._v3_2.copy(this._v3_1).applyAxisAngle(this._rotationAxis,angle);this._v3_2.sub(this._v3_1);this._m4_2.makeTranslation(this._v3_2.x,this._v3_2.y,this._v3_2.z);this.setTransformationMatrices(this._m4_1,this._m4_2);return _transformation;});/**\n * Unproject the cursor on the 3D object surface\n * @param {Vector2} cursor Cursor coordinates in NDC\n * @param {Camera} camera Virtual camera\n * @returns {Vector3} The point of intersection with the model, if exist, null otherwise\n */__publicField(this,\"unprojectOnObj\",(cursor,camera)=>{if(!this.scene)return null;const raycaster=new Raycaster();raycaster.near=camera.near;raycaster.far=camera.far;raycaster.setFromCamera(cursor,camera);const intersect=raycaster.intersectObjects(this.scene.children,true);for(let i2=0;i2{if(camera instanceof OrthographicCamera){this._v2_1.copy(this.getCursorPosition(cursorX,cursorY,canvas));this._v3_1.set(this._v2_1.x,this._v2_1.y,0);const x2=Math.pow(this._v2_1.x,2);const y2=Math.pow(this._v2_1.y,2);const r2=Math.pow(this._tbRadius,2);if(x2+y2<=r2*0.5){this._v3_1.setZ(Math.sqrt(r2-(x2+y2)));}else{this._v3_1.setZ(r2*0.5/Math.sqrt(x2+y2));}return this._v3_1;}if(camera instanceof PerspectiveCamera){this._v2_1.copy(this.getCursorNDC(cursorX,cursorY,canvas));this._v3_1.set(this._v2_1.x,this._v2_1.y,-1);this._v3_1.applyMatrix4(camera.projectionMatrixInverse);const rayDir=this._v3_1.clone().normalize();const cameraGizmoDistance=camera.position.distanceTo(this._gizmos.position);const radius2=Math.pow(tbRadius,2);const h=this._v3_1.z;const l=Math.sqrt(Math.pow(this._v3_1.x,2)+Math.pow(this._v3_1.y,2));if(l==0){rayDir.set(this._v3_1.x,this._v3_1.y,tbRadius);return rayDir;}const m=h/l;const q=cameraGizmoDistance;let a2=Math.pow(m,2)+1;let b2=2*m*q;let c=Math.pow(q,2)-radius2;let delta=Math.pow(b2,2)-4*a2*c;if(delta>=0){this._v2_1.setX((-b2-Math.sqrt(delta))/(2*a2));this._v2_1.setY(m*this._v2_1.x+q);const angle=MathUtils.RAD2DEG*this._v2_1.angle();if(angle>=45){const rayLength2=Math.sqrt(Math.pow(this._v2_1.x,2)+Math.pow(cameraGizmoDistance-this._v2_1.y,2));rayDir.multiplyScalar(rayLength2);rayDir.z+=cameraGizmoDistance;return rayDir;}}a2=m;b2=q;c=-radius2*0.5;delta=Math.pow(b2,2)-4*a2*c;this._v2_1.setX((-b2-Math.sqrt(delta))/(2*a2));this._v2_1.setY(m*this._v2_1.x+q);const rayLength=Math.sqrt(Math.pow(this._v2_1.x,2)+Math.pow(cameraGizmoDistance-this._v2_1.y,2));rayDir.multiplyScalar(rayLength);rayDir.z+=cameraGizmoDistance;return rayDir;}});/**\n * Unproject the cursor on the plane passing through the center of the trackball orthogonal to the camera\n * @param {Camera} camera The virtual camera\n * @param {Number} cursorX Cursor horizontal coordinate on screen\n * @param {Number} cursorY Cursor vertical coordinate on screen\n * @param {HTMLElement} canvas The canvas where the renderer draws its output\n * @param {Boolean} initialDistance If initial distance between camera and gizmos should be used for calculations instead of current (Perspective only)\n * @returns {Vector3} The unprojected point on the trackball plane\n */__publicField(this,\"unprojectOnTbPlane\",(camera,cursorX,cursorY,canvas,initialDistance=false)=>{if(camera instanceof OrthographicCamera){this._v2_1.copy(this.getCursorPosition(cursorX,cursorY,canvas));this._v3_1.set(this._v2_1.x,this._v2_1.y,0);return this._v3_1.clone();}if(camera instanceof PerspectiveCamera){this._v2_1.copy(this.getCursorNDC(cursorX,cursorY,canvas));this._v3_1.set(this._v2_1.x,this._v2_1.y,-1);this._v3_1.applyMatrix4(camera.projectionMatrixInverse);const rayDir=this._v3_1.clone().normalize();const h=this._v3_1.z;const l=Math.sqrt(Math.pow(this._v3_1.x,2)+Math.pow(this._v3_1.y,2));let cameraGizmoDistance;if(initialDistance){cameraGizmoDistance=this._v3_1.setFromMatrixPosition(this._cameraMatrixState0).distanceTo(this._v3_2.setFromMatrixPosition(this._gizmoMatrixState0));}else{cameraGizmoDistance=camera.position.distanceTo(this._gizmos.position);}if(l==0){rayDir.set(0,0,0);return rayDir;}const m=h/l;const q=cameraGizmoDistance;const x=-q/m;const rayLength=Math.sqrt(Math.pow(q,2)+Math.pow(x,2));rayDir.multiplyScalar(rayLength);rayDir.z=0;return rayDir;}});/**\n * Update camera and gizmos state\n */__publicField(this,\"updateMatrixState\",()=>{if(!this.camera)return;this._cameraMatrixState.copy(this.camera.matrix);this._gizmoMatrixState.copy(this._gizmos.matrix);if(this.camera instanceof OrthographicCamera){this._cameraProjectionState.copy(this.camera.projectionMatrix);this.camera.updateProjectionMatrix();this._zoomState=this.camera.zoom;}if(this.camera instanceof PerspectiveCamera){this._fovState=this.camera.fov;}});/**\n * Update the trackball FSA\n * @param {STATE} newState New state of the FSA\n * @param {Boolean} updateMatrices If matriices state should be updated\n */__publicField(this,\"updateTbState\",(newState,updateMatrices)=>{this._state=newState;if(updateMatrices){this.updateMatrixState();}});__publicField(this,\"update\",()=>{const EPS2=1e-6;if(!this.target.equals(this._currentTarget)&&this.camera){this._gizmos.position.set(this.target.x,this.target.y,this.target.z);const tbRadius=this.calculateTbRadius(this.camera);if(tbRadius!==void 0){this._tbRadius=tbRadius;}this.makeGizmos(this.target,this._tbRadius);this._currentTarget.copy(this.target);}if(!this.camera)return;if(this.camera instanceof OrthographicCamera){if(this.camera.zoom>this.maxZoom||this.camera.zoomthis.maxDistance+EPS2||distancethis.maxFov){this.camera.fov=MathUtils.clamp(this.camera.fov,this.minFov,this.maxFov);this.camera.updateProjectionMatrix();}const oldRadius=this._tbRadius;const tbRadius=this.calculateTbRadius(this.camera);if(tbRadius!==void 0){this._tbRadius=tbRadius;}if(oldRadiusthis._tbRadius+EPS2){const scale=(this._gizmos.scale.x+this._gizmos.scale.y+this._gizmos.scale.z)/3;const newRadius=this._tbRadius/scale;const curve=new EllipseCurve(0,0,newRadius,newRadius);const points=curve.getPoints(this._curvePts);const curveGeometry=new BufferGeometry().setFromPoints(points);for(const gizmo in this._gizmos.children){const child=this._gizmos.children[gizmo];child.geometry=curveGeometry;}}}this.camera.lookAt(this._gizmos.position);});__publicField(this,\"setStateFromJSON\",json=>{const state=JSON.parse(json);if(state.arcballState&&this.camera){this._cameraMatrixState.fromArray(state.arcballState.cameraMatrix.elements);this._cameraMatrixState.decompose(this.camera.position,this.camera.quaternion,this.camera.scale);this.camera.up.copy(state.arcballState.cameraUp);this.camera.near=state.arcballState.cameraNear;this.camera.far=state.arcballState.cameraFar;this.camera.zoom=state.arcballState.cameraZoom;if(this.camera instanceof PerspectiveCamera){this.camera.fov=state.arcballState.cameraFov;}this._gizmoMatrixState.fromArray(state.arcballState.gizmoMatrix.elements);this._gizmoMatrixState.decompose(this._gizmos.position,this._gizmos.quaternion,this._gizmos.scale);this.camera.updateMatrix();this.camera.updateProjectionMatrix();this._gizmos.updateMatrix();const tbRadius=this.calculateTbRadius(this.camera);if(tbRadius!==void 0){this._tbRadius=tbRadius;}const gizmoTmp=new Matrix4().copy(this._gizmoMatrixState0);this.makeGizmos(this._gizmos.position,this._tbRadius);this._gizmoMatrixState0.copy(gizmoTmp);this.camera.lookAt(this._gizmos.position);this.updateTbState(STATE.IDLE,false);this.dispatchEvent(_changeEvent);}});this.camera=null;this.domElement=domElement;this.scene=scene;this.mouseActions=[];this._mouseOp=null;this._v2_1=new Vector2();this._v3_1=new Vector3();this._v3_2=new Vector3();this._m4_1=new Matrix4();this._m4_2=new Matrix4();this._quat=new Quaternion();this._translationMatrix=new Matrix4();this._rotationMatrix=new Matrix4();this._scaleMatrix=new Matrix4();this._rotationAxis=new Vector3();this._cameraMatrixState=new Matrix4();this._cameraProjectionState=new Matrix4();this._fovState=1;this._upState=new Vector3();this._zoomState=1;this._nearPos=0;this._farPos=0;this._gizmoMatrixState=new Matrix4();this._up0=new Vector3();this._zoom0=1;this._fov0=0;this._initialNear=0;this._nearPos0=0;this._initialFar=0;this._farPos0=0;this._cameraMatrixState0=new Matrix4();this._gizmoMatrixState0=new Matrix4();this._button=-1;this._touchStart=[];this._touchCurrent=[];this._input=INPUT.NONE;this._switchSensibility=32;this._startFingerDistance=0;this._currentFingerDistance=0;this._startFingerRotation=0;this._currentFingerRotation=0;this._devPxRatio=0;this._downValid=true;this._nclicks=0;this._downEvents=[];this._clickStart=0;this._maxDownTime=250;this._maxInterval=300;this._posThreshold=24;this._movementThreshold=24;this._currentCursorPosition=new Vector3();this._startCursorPosition=new Vector3();this._grid=null;this._gridPosition=new Vector3();this._gizmos=new Group();this._curvePts=128;this._timeStart=-1;this._animationId=-1;this.focusAnimationTime=500;this._timePrev=0;this._timeCurrent=0;this._anglePrev=0;this._angleCurrent=0;this._cursorPosPrev=new Vector3();this._cursorPosCurr=new Vector3();this._wPrev=0;this._wCurr=0;this.adjustNearFar=false;this.scaleFactor=1.1;this.dampingFactor=25;this.wMax=20;this.enableAnimations=true;this.enableGrid=false;this.cursorZoom=false;this.minFov=5;this.maxFov=90;this.enabled=true;this.enablePan=true;this.enableRotate=true;this.enableZoom=true;this.minDistance=0;this.maxDistance=Infinity;this.minZoom=0;this.maxZoom=Infinity;this.target=new Vector3(0,0,0);this._currentTarget=new Vector3(0,0,0);this._tbRadius=1;this._state=STATE.IDLE;this.setCamera(camera);if(this.scene){this.scene.add(this._gizmos);}this._devPxRatio=window.devicePixelRatio;this.initializeMouseActions();if(this.domElement)this.connect(this.domElement);window.addEventListener(\"resize\",this.onWindowResize);}/**\n * Apply a transformation matrix, to the camera and gizmos\n * @param {Object} transformation Object containing matrices to apply to camera and gizmos\n */applyTransformMatrix(transformation){if((transformation==null?void 0:transformation.camera)&&this.camera){this._m4_1.copy(this._cameraMatrixState).premultiply(transformation.camera);this._m4_1.decompose(this.camera.position,this.camera.quaternion,this.camera.scale);this.camera.updateMatrix();if(this._state==STATE.ROTATE||this._state==STATE.ZROTATE||this._state==STATE.ANIMATION_ROTATE){this.camera.up.copy(this._upState).applyQuaternion(this.camera.quaternion);}}if(transformation==null?void 0:transformation.gizmos){this._m4_1.copy(this._gizmoMatrixState).premultiply(transformation.gizmos);this._m4_1.decompose(this._gizmos.position,this._gizmos.quaternion,this._gizmos.scale);this._gizmos.updateMatrix();}if((this._state==STATE.SCALE||this._state==STATE.FOCUS||this._state==STATE.ANIMATION_FOCUS)&&this.camera){const tbRadius=this.calculateTbRadius(this.camera);if(tbRadius!==void 0){this._tbRadius=tbRadius;}if(this.adjustNearFar){const cameraDistance=this.camera.position.distanceTo(this._gizmos.position);const bb=new Box3();bb.setFromObject(this._gizmos);const sphere=new Sphere();bb.getBoundingSphere(sphere);const adjustedNearPosition=Math.max(this._nearPos0,sphere.radius+sphere.center.length());const regularNearPosition=cameraDistance-this._initialNear;const minNearPos=Math.min(adjustedNearPosition,regularNearPosition);this.camera.near=cameraDistance-minNearPos;const adjustedFarPosition=Math.min(this._farPos0,-sphere.radius+sphere.center.length());const regularFarPosition=cameraDistance-this._initialFar;const minFarPos=Math.min(adjustedFarPosition,regularFarPosition);this.camera.far=cameraDistance-minFarPos;this.camera.updateProjectionMatrix();}else{let update=false;if(this.camera.near!=this._initialNear){this.camera.near=this._initialNear;update=true;}if(this.camera.far!=this._initialFar){this.camera.far=this._initialFar;update=true;}if(update){this.camera.updateProjectionMatrix();}}}}/**\n * Set gizmos visibility\n * @param {Boolean} value Value of gizmos visibility\n */setGizmosVisible(value){this._gizmos.visible=value;this.dispatchEvent(_changeEvent);}/**\n * Set values in transformation object\n * @param {Matrix4} camera Transformation to be applied to the camera\n * @param {Matrix4} gizmos Transformation to be applied to gizmos\n */setTransformationMatrices(camera=null,gizmos=null){if(camera){if(_transformation.camera){_transformation.camera.copy(camera);}else{_transformation.camera=camera.clone();}}else{_transformation.camera=null;}if(gizmos){if(_transformation.gizmos){_transformation.gizmos.copy(gizmos);}else{_transformation.gizmos=gizmos.clone();}}else{_transformation.gizmos=null;}}}function contextmenu(event){event.preventDefault();}class FlyControls extends EventDispatcher{constructor(object,domElement){super();__publicField(this,\"object\");__publicField(this,\"domElement\",null);__publicField(this,\"movementSpeed\",1);__publicField(this,\"rollSpeed\",5e-3);__publicField(this,\"dragToLook\",false);__publicField(this,\"autoForward\",false);__publicField(this,\"changeEvent\",{type:\"change\"});__publicField(this,\"EPS\",1e-6);__publicField(this,\"tmpQuaternion\",new Quaternion());__publicField(this,\"mouseStatus\",0);__publicField(this,\"movementSpeedMultiplier\",1);__publicField(this,\"moveState\",{up:0,down:0,left:0,right:0,forward:0,back:0,pitchUp:0,pitchDown:0,yawLeft:0,yawRight:0,rollLeft:0,rollRight:0});__publicField(this,\"moveVector\",new Vector3(0,0,0));__publicField(this,\"rotationVector\",new Vector3(0,0,0));__publicField(this,\"keydown\",event=>{if(event.altKey){return;}switch(event.code){case\"ShiftLeft\":case\"ShiftRight\":this.movementSpeedMultiplier=0.1;break;case\"KeyW\":this.moveState.forward=1;break;case\"KeyS\":this.moveState.back=1;break;case\"KeyA\":this.moveState.left=1;break;case\"KeyD\":this.moveState.right=1;break;case\"KeyR\":this.moveState.up=1;break;case\"KeyF\":this.moveState.down=1;break;case\"ArrowUp\":this.moveState.pitchUp=1;break;case\"ArrowDown\":this.moveState.pitchDown=1;break;case\"ArrowLeft\":this.moveState.yawLeft=1;break;case\"ArrowRight\":this.moveState.yawRight=1;break;case\"KeyQ\":this.moveState.rollLeft=1;break;case\"KeyE\":this.moveState.rollRight=1;break;}this.updateMovementVector();this.updateRotationVector();});__publicField(this,\"keyup\",event=>{switch(event.code){case\"ShiftLeft\":case\"ShiftRight\":this.movementSpeedMultiplier=1;break;case\"KeyW\":this.moveState.forward=0;break;case\"KeyS\":this.moveState.back=0;break;case\"KeyA\":this.moveState.left=0;break;case\"KeyD\":this.moveState.right=0;break;case\"KeyR\":this.moveState.up=0;break;case\"KeyF\":this.moveState.down=0;break;case\"ArrowUp\":this.moveState.pitchUp=0;break;case\"ArrowDown\":this.moveState.pitchDown=0;break;case\"ArrowLeft\":this.moveState.yawLeft=0;break;case\"ArrowRight\":this.moveState.yawRight=0;break;case\"KeyQ\":this.moveState.rollLeft=0;break;case\"KeyE\":this.moveState.rollRight=0;break;}this.updateMovementVector();this.updateRotationVector();});__publicField(this,\"pointerdown\",event=>{if(this.dragToLook){this.mouseStatus++;}else{switch(event.button){case 0:this.moveState.forward=1;break;case 2:this.moveState.back=1;break;}this.updateMovementVector();}});__publicField(this,\"pointermove\",event=>{if(!this.dragToLook||this.mouseStatus>0){const container=this.getContainerDimensions();const halfWidth=container.size[0]/2;const halfHeight=container.size[1]/2;this.moveState.yawLeft=-(event.pageX-container.offset[0]-halfWidth)/halfWidth;this.moveState.pitchDown=(event.pageY-container.offset[1]-halfHeight)/halfHeight;this.updateRotationVector();}});__publicField(this,\"pointerup\",event=>{if(this.dragToLook){this.mouseStatus--;this.moveState.yawLeft=this.moveState.pitchDown=0;}else{switch(event.button){case 0:this.moveState.forward=0;break;case 2:this.moveState.back=0;break;}this.updateMovementVector();}this.updateRotationVector();});__publicField(this,\"lastQuaternion\",new Quaternion());__publicField(this,\"lastPosition\",new Vector3());__publicField(this,\"update\",delta=>{const moveMult=delta*this.movementSpeed;const rotMult=delta*this.rollSpeed;this.object.translateX(this.moveVector.x*moveMult);this.object.translateY(this.moveVector.y*moveMult);this.object.translateZ(this.moveVector.z*moveMult);this.tmpQuaternion.set(this.rotationVector.x*rotMult,this.rotationVector.y*rotMult,this.rotationVector.z*rotMult,1).normalize();this.object.quaternion.multiply(this.tmpQuaternion);if(this.lastPosition.distanceToSquared(this.object.position)>this.EPS||8*(1-this.lastQuaternion.dot(this.object.quaternion))>this.EPS){this.dispatchEvent(this.changeEvent);this.lastQuaternion.copy(this.object.quaternion);this.lastPosition.copy(this.object.position);}});__publicField(this,\"updateMovementVector\",()=>{const forward=this.moveState.forward||this.autoForward&&!this.moveState.back?1:0;this.moveVector.x=-this.moveState.left+this.moveState.right;this.moveVector.y=-this.moveState.down+this.moveState.up;this.moveVector.z=-forward+this.moveState.back;});__publicField(this,\"updateRotationVector\",()=>{this.rotationVector.x=-this.moveState.pitchDown+this.moveState.pitchUp;this.rotationVector.y=-this.moveState.yawRight+this.moveState.yawLeft;this.rotationVector.z=-this.moveState.rollRight+this.moveState.rollLeft;});__publicField(this,\"getContainerDimensions\",()=>{if(this.domElement!=document&&!(this.domElement instanceof Document)){return{size:[this.domElement.offsetWidth,this.domElement.offsetHeight],offset:[this.domElement.offsetLeft,this.domElement.offsetTop]};}else{return{size:[window.innerWidth,window.innerHeight],offset:[0,0]};}});// https://github.com/mrdoob/three.js/issues/20575\n__publicField(this,\"connect\",domElement=>{this.domElement=domElement;if(domElement&&!(domElement instanceof Document)){domElement.setAttribute(\"tabindex\",-1);}this.domElement.addEventListener(\"contextmenu\",contextmenu);this.domElement.addEventListener(\"pointermove\",this.pointermove);this.domElement.addEventListener(\"pointerdown\",this.pointerdown);this.domElement.addEventListener(\"pointerup\",this.pointerup);window.addEventListener(\"keydown\",this.keydown);window.addEventListener(\"keyup\",this.keyup);});__publicField(this,\"dispose\",()=>{this.domElement.removeEventListener(\"contextmenu\",contextmenu);this.domElement.removeEventListener(\"pointermove\",this.pointermove);this.domElement.removeEventListener(\"pointerdown\",this.pointerdown);this.domElement.removeEventListener(\"pointerup\",this.pointerup);window.removeEventListener(\"keydown\",this.keydown);window.removeEventListener(\"keyup\",this.keyup);});this.object=object;if(domElement!==void 0)this.connect(domElement);this.updateMovementVector();this.updateRotationVector();}}class Pass{constructor(){// if set to true, the pass is processed by the composer\n__publicField(this,\"enabled\",true);// if set to true, the pass indicates to swap read and write buffer after rendering\n__publicField(this,\"needsSwap\",true);// if set to true, the pass clears its buffer before rendering\n__publicField(this,\"clear\",false);// if set to true, the result of the pass is rendered to screen. This is set automatically by EffectComposer.\n__publicField(this,\"renderToScreen\",false);}setSize(width,height){}render(renderer,writeBuffer,readBuffer,deltaTime,maskActive){console.error(\"THREE.Pass: .render() must be implemented in derived pass.\");}}class FullScreenQuad{constructor(material2){__publicField(this,\"camera\",new OrthographicCamera(-1,1,1,-1,0,1));__publicField(this,\"geometry\",new PlaneGeometry(2,2));__publicField(this,\"mesh\");this.mesh=new Mesh(this.geometry,material2);}get material(){return this.mesh.material;}set material(value){this.mesh.material=value;}dispose(){this.mesh.geometry.dispose();}render(renderer){renderer.render(this.mesh,this.camera);}}class ShaderPass extends Pass{constructor(shader,textureID=\"tDiffuse\"){super();__publicField(this,\"textureID\");__publicField(this,\"uniforms\");__publicField(this,\"material\");__publicField(this,\"fsQuad\");this.textureID=textureID;if(shader instanceof ShaderMaterial){this.uniforms=shader.uniforms;this.material=shader;}else{this.uniforms=UniformsUtils.clone(shader.uniforms);this.material=new ShaderMaterial({defines:Object.assign({},shader.defines),uniforms:this.uniforms,vertexShader:shader.vertexShader,fragmentShader:shader.fragmentShader});}this.fsQuad=new FullScreenQuad(this.material);}render(renderer,writeBuffer,readBuffer){if(this.uniforms[this.textureID]){this.uniforms[this.textureID].value=readBuffer.texture;}this.fsQuad.material=this.material;if(this.renderToScreen){renderer.setRenderTarget(null);this.fsQuad.render(renderer);}else{renderer.setRenderTarget(writeBuffer);if(this.clear)renderer.clear(renderer.autoClearColor,renderer.autoClearDepth,renderer.autoClearStencil);this.fsQuad.render(renderer);}}}const LUTShader={defines:{USE_3DTEXTURE:1},uniforms:{lut3d:{value:null},lut:{value:null},lutSize:{value:0},tDiffuse:{value:null},intensity:{value:1}},vertexShader:/* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}\n\n\t`,fragmentShader:/* glsl */`\n\n\t\tuniform float lutSize;\n\t\t#if USE_3DTEXTURE\n\t\tprecision highp sampler3D;\n\t\tuniform sampler3D lut3d;\n\t\t#else\n\t\tuniform sampler2D lut;\n\n\t\tvec3 lutLookup( sampler2D tex, float size, vec3 rgb ) {\n\n\t\t\tfloat sliceHeight = 1.0 / size;\n\t\t\tfloat yPixelHeight = 1.0 / ( size * size );\n\n\t\t\t// Get the slices on either side of the sample\n\t\t\tfloat slice = rgb.b * size;\n\t\t\tfloat interp = fract( slice );\n\t\t\tfloat slice0 = slice - interp;\n\t\t\tfloat centeredInterp = interp - 0.5;\n\n\t\t\tfloat slice1 = slice0 + sign( centeredInterp );\n\n\t\t\t// Pull y sample in by half a pixel in each direction to avoid color\n\t\t\t// bleeding from adjacent slices.\n\t\t\tfloat greenOffset = clamp( rgb.g * sliceHeight, yPixelHeight * 0.5, sliceHeight - yPixelHeight * 0.5 );\n\n\t\t\tvec2 uv0 = vec2(\n\t\t\t\trgb.r,\n\t\t\t\tslice0 * sliceHeight + greenOffset\n\t\t\t);\n\t\t\tvec2 uv1 = vec2(\n\t\t\t\trgb.r,\n\t\t\t\tslice1 * sliceHeight + greenOffset\n\t\t\t);\n\n\t\t\tvec3 sample0 = texture2D( tex, uv0 ).rgb;\n\t\t\tvec3 sample1 = texture2D( tex, uv1 ).rgb;\n\n\t\t\treturn mix( sample0, sample1, abs( centeredInterp ) );\n\n\t\t}\n\t\t#endif\n\n\t\tvarying vec2 vUv;\n\t\tuniform float intensity;\n\t\tuniform sampler2D tDiffuse;\n\t\tvoid main() {\n\n\t\t\tvec4 val = texture2D( tDiffuse, vUv );\n\t\t\tvec4 lutVal;\n\n\t\t\t// pull the sample in by half a pixel so the sample begins\n\t\t\t// at the center of the edge pixels.\n\t\t\tfloat pixelWidth = 1.0 / lutSize;\n\t\t\tfloat halfPixelWidth = 0.5 / lutSize;\n\t\t\tvec3 uvw = vec3( halfPixelWidth ) + val.rgb * ( 1.0 - pixelWidth );\n\n\t\t\t#if USE_3DTEXTURE\n\n\t\t\tlutVal = vec4( texture( lut3d, uvw ).rgb, val.a );\n\n\t\t\t#else\n\n\t\t\tlutVal = vec4( lutLookup( lut, lutSize, uvw ), val.a );\n\n\t\t\t#endif\n\n\t\t\tgl_FragColor = vec4( mix( val, lutVal, intensity ) );\n\n\t\t}\n\n\t`};class LUTPass extends ShaderPass{set lut(v){const material2=this.material;if(v!==this.lut){material2.uniforms.lut3d.value=null;material2.uniforms.lut.value=null;if(v){const is3dTextureDefine=v.isData3DTexture?1:0;if(is3dTextureDefine!==material2.defines.USE_3DTEXTURE){material2.defines.USE_3DTEXTURE=is3dTextureDefine;material2.needsUpdate=true;}material2.uniforms.lutSize.value=v.image.width;if(v.isData3DTexture){material2.uniforms.lut3d.value=v;}else{material2.uniforms.lut.value=v;}}}}get lut(){return this.material.uniforms.lut.value||this.material.uniforms.lut3d.value;}set intensity(v){this.material.uniforms.intensity.value=v;}get intensity(){return this.material.uniforms.intensity.value;}constructor(options={}){super(LUTShader);this.lut=options.lut||null;this.intensity=\"intensity\"in options?options.intensity:1;}}class ClearPass extends Pass{constructor(clearColor,clearAlpha){super();__publicField(this,\"clearColor\");__publicField(this,\"clearAlpha\");__publicField(this,\"_oldClearColor\");this.needsSwap=false;this.clearColor=clearColor!==void 0?clearColor:0;this.clearAlpha=clearAlpha!==void 0?clearAlpha:0;this._oldClearColor=new Color();}render(renderer,writeBuffer,readBuffer){let oldClearAlpha;if(this.clearColor){renderer.getClearColor(this._oldClearColor);oldClearAlpha=renderer.getClearAlpha();renderer.setClearColor(this.clearColor,this.clearAlpha);}renderer.setRenderTarget(this.renderToScreen?null:readBuffer);renderer.clear();if(this.clearColor){renderer.setClearColor(this._oldClearColor,oldClearAlpha);}}}const DigitalGlitch={uniforms:{tDiffuse:{value:null},//diffuse texture\ntDisp:{value:null},//displacement texture for digital glitch squares\nbyp:{value:0},//apply the glitch ?\namount:{value:0.08},angle:{value:0.02},seed:{value:0.02},seed_x:{value:0.02},//-1,1\nseed_y:{value:0.02},//-1,1\ndistortion_x:{value:0.5},distortion_y:{value:0.6},col_s:{value:0.05}},vertexShader:`varying vec2 vUv;\n void main() {\n \t vUv = uv;\n \t gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }`,fragmentShader:`uniform int byp; //should we apply the glitch ?\n uniform sampler2D tDiffuse;\n uniform sampler2D tDisp;\n uniform float amount;\n uniform float angle;\n uniform float seed;\n uniform float seed_x;\n uniform float seed_y;\n uniform float distortion_x;\n uniform float distortion_y;\n uniform float col_s;\n\n varying vec2 vUv;\n\n float rand(vec2 co){\n \t return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);\n }\n\n void main() {\n \tif(byp<1) {\n \t\tvec2 p = vUv;\n \t\tfloat xs = floor(gl_FragCoord.x / 0.5);\n \t\tfloat ys = floor(gl_FragCoord.y / 0.5);\n //based on staffantans glitch shader for unity https://github.com/staffantan/unityglitch\n \t\tvec4 normal = texture2D (tDisp, p*seed*seed);\n \t\tif(p.ydistortion_x-col_s*seed) {\n \t\t\tif(seed_x>0.){\n \t\t\t\tp.y = 1. - (p.y + distortion_y);\n \t\t\t}\n \t\t\telse {\n \t\t\t\tp.y = distortion_y;\n \t\t\t}\n \t\t}\n \t\tif(p.xdistortion_y-col_s*seed) {\n \t\t\tif(seed_y>0.){\n \t\t\t\tp.x=distortion_x;\n \t\t\t}\n \t\t\telse {\n \t\t\t\tp.x = 1. - (p.x + distortion_x);\n \t\t\t}\n \t\t}\n \t\tp.x+=normal.x*seed_x*(seed/5.);\n \t\tp.y+=normal.y*seed_y*(seed/5.);\n //base from RGB shift shader\n \t\tvec2 offset = amount * vec2( cos(angle), sin(angle));\n \t\tvec4 cr = texture2D(tDiffuse, p + offset);\n \t\tvec4 cga = texture2D(tDiffuse, p);\n \t\tvec4 cb = texture2D(tDiffuse, p - offset);\n \t\tgl_FragColor = vec4(cr.r, cga.g, cb.b, cga.a);\n //add noise\n \t\tvec4 snow = 200.*amount*vec4(rand(vec2(xs * seed,ys * seed*50.))*0.2);\n \t\tgl_FragColor = gl_FragColor+ snow;\n \t}\n \telse {\n \t\tgl_FragColor=texture2D (tDiffuse, vUv);\n \t}\n }`};class GlitchPass extends Pass{constructor(dt_size=64){super();__publicField(this,\"material\");__publicField(this,\"fsQuad\");__publicField(this,\"goWild\");__publicField(this,\"curF\");__publicField(this,\"randX\");__publicField(this,\"uniforms\");this.uniforms=UniformsUtils.clone(DigitalGlitch.uniforms);this.uniforms[\"tDisp\"].value=this.generateHeightmap(dt_size);this.material=new ShaderMaterial({uniforms:this.uniforms,vertexShader:DigitalGlitch.vertexShader,fragmentShader:DigitalGlitch.fragmentShader});this.fsQuad=new FullScreenQuad(this.material);this.goWild=false;this.curF=0;this.generateTrigger();}render(renderer,writeBuffer,readBuffer){if(renderer.capabilities.isWebGL2===false)this.uniforms[\"tDisp\"].value.format=LuminanceFormat;this.uniforms[\"tDiffuse\"].value=readBuffer.texture;this.uniforms[\"seed\"].value=Math.random();this.uniforms[\"byp\"].value=0;if(this.curF%this.randX==0||this.goWild==true){this.uniforms[\"amount\"].value=Math.random()/30;this.uniforms[\"angle\"].value=MathUtils.randFloat(-Math.PI,Math.PI);this.uniforms[\"seed_x\"].value=MathUtils.randFloat(-1,1);this.uniforms[\"seed_y\"].value=MathUtils.randFloat(-1,1);this.uniforms[\"distortion_x\"].value=MathUtils.randFloat(0,1);this.uniforms[\"distortion_y\"].value=MathUtils.randFloat(0,1);this.curF=0;this.generateTrigger();}else if(this.curF%this.randX cos_t ) ? rad - sin_t * rad : rad - cos_t * rad ) );\",\"\t}\",\"\treturn rad - dist;\",\"}\",\"struct Cell {\",// grid sample positions\n\"\tvec2 normal;\",\"\tvec2 p1;\",\"\tvec2 p2;\",\"\tvec2 p3;\",\"\tvec2 p4;\",\"\tfloat samp2;\",\"\tfloat samp1;\",\"\tfloat samp3;\",\"\tfloat samp4;\",\"};\",\"vec4 getSample( vec2 point ) {\",// multi-sampled point\n\"\tvec4 tex = texture2D( tDiffuse, vec2( point.x / width, point.y / height ) );\",\"\tfloat base = rand( vec2( floor( point.x ), floor( point.y ) ) ) * PI2;\",\"\tfloat step = PI2 / float( samples );\",\"\tfloat dist = radius * 0.66;\",\"\tfor ( int i = 0; i < samples; ++i ) {\",\"\t\tfloat r = base + step * float( i );\",\"\t\tvec2 coord = point + vec2( cos( r ) * dist, sin( r ) * dist );\",\"\t\ttex += texture2D( tDiffuse, vec2( coord.x / width, coord.y / height ) );\",\"\t}\",\"\ttex /= float( samples ) + 1.0;\",\"\treturn tex;\",\"}\",\"float getDotColour( Cell c, vec2 p, int channel, float angle, float aa ) {\",// get colour for given point\n\"\tfloat dist_c_1, dist_c_2, dist_c_3, dist_c_4, res;\",\"\tif ( channel == 0 ) {\",\"\t\tc.samp1 = getSample( c.p1 ).r;\",\"\t\tc.samp2 = getSample( c.p2 ).r;\",\"\t\tc.samp3 = getSample( c.p3 ).r;\",\"\t\tc.samp4 = getSample( c.p4 ).r;\",\"\t} else if (channel == 1) {\",\"\t\tc.samp1 = getSample( c.p1 ).g;\",\"\t\tc.samp2 = getSample( c.p2 ).g;\",\"\t\tc.samp3 = getSample( c.p3 ).g;\",\"\t\tc.samp4 = getSample( c.p4 ).g;\",\"\t} else {\",\"\t\tc.samp1 = getSample( c.p1 ).b;\",\"\t\tc.samp3 = getSample( c.p3 ).b;\",\"\t\tc.samp2 = getSample( c.p2 ).b;\",\"\t\tc.samp4 = getSample( c.p4 ).b;\",\"\t}\",\"\tdist_c_1 = distanceToDotRadius( c.samp1, c.p1, c.normal, p, angle, radius );\",\"\tdist_c_2 = distanceToDotRadius( c.samp2, c.p2, c.normal, p, angle, radius );\",\"\tdist_c_3 = distanceToDotRadius( c.samp3, c.p3, c.normal, p, angle, radius );\",\"\tdist_c_4 = distanceToDotRadius( c.samp4, c.p4, c.normal, p, angle, radius );\",\"\tres = ( dist_c_1 > 0.0 ) ? clamp( dist_c_1 / aa, 0.0, 1.0 ) : 0.0;\",\"\tres += ( dist_c_2 > 0.0 ) ? clamp( dist_c_2 / aa, 0.0, 1.0 ) : 0.0;\",\"\tres += ( dist_c_3 > 0.0 ) ? clamp( dist_c_3 / aa, 0.0, 1.0 ) : 0.0;\",\"\tres += ( dist_c_4 > 0.0 ) ? clamp( dist_c_4 / aa, 0.0, 1.0 ) : 0.0;\",\"\tres = clamp( res, 0.0, 1.0 );\",\"\treturn res;\",\"}\",\"Cell getReferenceCell( vec2 p, vec2 origin, float grid_angle, float step ) {\",// get containing cell\n\"\tCell c;\",// calc grid\n\"\tvec2 n = vec2( cos( grid_angle ), sin( grid_angle ) );\",\"\tfloat threshold = step * 0.5;\",\"\tfloat dot_normal = n.x * ( p.x - origin.x ) + n.y * ( p.y - origin.y );\",\"\tfloat dot_line = -n.y * ( p.x - origin.x ) + n.x * ( p.y - origin.y );\",\"\tvec2 offset = vec2( n.x * dot_normal, n.y * dot_normal );\",\"\tfloat offset_normal = mod( hypot( offset.x, offset.y ), step );\",\"\tfloat normal_dir = ( dot_normal < 0.0 ) ? 1.0 : -1.0;\",\"\tfloat normal_scale = ( ( offset_normal < threshold ) ? -offset_normal : step - offset_normal ) * normal_dir;\",\"\tfloat offset_line = mod( hypot( ( p.x - offset.x ) - origin.x, ( p.y - offset.y ) - origin.y ), step );\",\"\tfloat line_dir = ( dot_line < 0.0 ) ? 1.0 : -1.0;\",\"\tfloat line_scale = ( ( offset_line < threshold ) ? -offset_line : step - offset_line ) * line_dir;\",// get closest corner\n\"\tc.normal = n;\",\"\tc.p1.x = p.x - n.x * normal_scale + n.y * line_scale;\",\"\tc.p1.y = p.y - n.y * normal_scale - n.x * line_scale;\",// scatter\n\"\tif ( scatter != 0.0 ) {\",\"\t\tfloat off_mag = scatter * threshold * 0.5;\",\"\t\tfloat off_angle = rand( vec2( floor( c.p1.x ), floor( c.p1.y ) ) ) * PI2;\",\"\t\tc.p1.x += cos( off_angle ) * off_mag;\",\"\t\tc.p1.y += sin( off_angle ) * off_mag;\",\"\t}\",// find corners\n\"\tfloat normal_step = normal_dir * ( ( offset_normal < threshold ) ? step : -step );\",\"\tfloat line_step = line_dir * ( ( offset_line < threshold ) ? step : -step );\",\"\tc.p2.x = c.p1.x - n.x * normal_step;\",\"\tc.p2.y = c.p1.y - n.y * normal_step;\",\"\tc.p3.x = c.p1.x + n.y * line_step;\",\"\tc.p3.y = c.p1.y - n.x * line_step;\",\"\tc.p4.x = c.p1.x - n.x * normal_step + n.y * line_step;\",\"\tc.p4.y = c.p1.y - n.y * normal_step - n.x * line_step;\",\"\treturn c;\",\"}\",\"float blendColour( float a, float b, float t ) {\",// blend colours\n\"\tif ( blendingMode == BLENDING_LINEAR ) {\",\"\t\treturn blend( a, b, 1.0 - t );\",\"\t} else if ( blendingMode == BLENDING_ADD ) {\",\"\t\treturn blend( a, min( 1.0, a + b ), t );\",\"\t} else if ( blendingMode == BLENDING_MULTIPLY ) {\",\"\t\treturn blend( a, max( 0.0, a * b ), t );\",\"\t} else if ( blendingMode == BLENDING_LIGHTER ) {\",\"\t\treturn blend( a, max( a, b ), t );\",\"\t} else if ( blendingMode == BLENDING_DARKER ) {\",\"\t\treturn blend( a, min( a, b ), t );\",\"\t} else {\",\"\t\treturn blend( a, b, 1.0 - t );\",\"\t}\",\"}\",\"void main() {\",\"\tif ( ! disable ) {\",// setup\n\"\t\tvec2 p = vec2( vUV.x * width, vUV.y * height );\",\"\t\tvec2 origin = vec2( 0, 0 );\",\"\t\tfloat aa = ( radius < 2.5 ) ? radius * 0.5 : 1.25;\",// get channel samples\n\"\t\tCell cell_r = getReferenceCell( p, origin, rotateR, radius );\",\"\t\tCell cell_g = getReferenceCell( p, origin, rotateG, radius );\",\"\t\tCell cell_b = getReferenceCell( p, origin, rotateB, radius );\",\"\t\tfloat r = getDotColour( cell_r, p, 0, rotateR, aa );\",\"\t\tfloat g = getDotColour( cell_g, p, 1, rotateG, aa );\",\"\t\tfloat b = getDotColour( cell_b, p, 2, rotateB, aa );\",// blend with original\n\"\t\tvec4 colour = texture2D( tDiffuse, vUV );\",\"\t\tr = blendColour( r, colour.r, blending );\",\"\t\tg = blendColour( g, colour.g, blending );\",\"\t\tb = blendColour( b, colour.b, blending );\",\"\t\tif ( greyscale ) {\",\"\t\t\tr = g = b = (r + b + g) / 3.0;\",\"\t\t}\",\"\t\tgl_FragColor = vec4( r, g, b, 1.0 );\",\"\t} else {\",\"\t\tgl_FragColor = texture2D( tDiffuse, vUV );\",\"\t}\",\"}\"].join(\"\\n\")};class HalftonePass extends Pass{constructor(width,height,params){super();__publicField(this,\"material\");__publicField(this,\"fsQuad\");__publicField(this,\"uniforms\");if(HalftoneShader===void 0){console.error(\"THREE.HalftonePass requires HalftoneShader\");}this.uniforms=UniformsUtils.clone(HalftoneShader.uniforms);this.material=new ShaderMaterial({uniforms:this.uniforms,fragmentShader:HalftoneShader.fragmentShader,vertexShader:HalftoneShader.vertexShader});this.uniforms.width.value=width;this.uniforms.height.value=height;for(const key in params){if(params.hasOwnProperty(key)&&this.uniforms.hasOwnProperty(key)){this.uniforms[key].value=params[key];}}this.fsQuad=new FullScreenQuad(this.material);}render(renderer,writeBuffer,readBuffer){this.material.uniforms[\"tDiffuse\"].value=readBuffer.texture;if(this.renderToScreen){renderer.setRenderTarget(null);this.fsQuad.render(renderer);}else{renderer.setRenderTarget(writeBuffer);if(this.clear)renderer.clear();this.fsQuad.render(renderer);}}setSize(width,height){this.uniforms.width.value=width;this.uniforms.height.value=height;}}const SMAAEdgesShader={defines:{SMAA_THRESHOLD:\"0.1\"},uniforms:{tDiffuse:{value:null},resolution:{value:/*@__PURE__*/new Vector2(1/1024,1/512)}},vertexShader:/*@__PURE__*/[\"uniform vec2 resolution;\",\"varying vec2 vUv;\",\"varying vec4 vOffset[ 3 ];\",\"void SMAAEdgeDetectionVS( vec2 texcoord ) {\",\"\tvOffset[ 0 ] = texcoord.xyxy + resolution.xyxy * vec4( -1.0, 0.0, 0.0, 1.0 );\",// WebGL port note: Changed sign in W component\n\"\tvOffset[ 1 ] = texcoord.xyxy + resolution.xyxy * vec4( 1.0, 0.0, 0.0, -1.0 );\",// WebGL port note: Changed sign in W component\n\"\tvOffset[ 2 ] = texcoord.xyxy + resolution.xyxy * vec4( -2.0, 0.0, 0.0, 2.0 );\",// WebGL port note: Changed sign in W component\n\"}\",\"void main() {\",\"\tvUv = uv;\",\"\tSMAAEdgeDetectionVS( vUv );\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform sampler2D tDiffuse;\",\"varying vec2 vUv;\",\"varying vec4 vOffset[ 3 ];\",\"vec4 SMAAColorEdgeDetectionPS( vec2 texcoord, vec4 offset[3], sampler2D colorTex ) {\",\"\tvec2 threshold = vec2( SMAA_THRESHOLD, SMAA_THRESHOLD );\",// Calculate color deltas:\n\"\tvec4 delta;\",\"\tvec3 C = texture2D( colorTex, texcoord ).rgb;\",\"\tvec3 Cleft = texture2D( colorTex, offset[0].xy ).rgb;\",\"\tvec3 t = abs( C - Cleft );\",\"\tdelta.x = max( max( t.r, t.g ), t.b );\",\"\tvec3 Ctop = texture2D( colorTex, offset[0].zw ).rgb;\",\"\tt = abs( C - Ctop );\",\"\tdelta.y = max( max( t.r, t.g ), t.b );\",// We do the usual threshold:\n\"\tvec2 edges = step( threshold, delta.xy );\",// Then discard if there is no edge:\n\"\tif ( dot( edges, vec2( 1.0, 1.0 ) ) == 0.0 )\",\"\t\tdiscard;\",// Calculate right and bottom deltas:\n\"\tvec3 Cright = texture2D( colorTex, offset[1].xy ).rgb;\",\"\tt = abs( C - Cright );\",\"\tdelta.z = max( max( t.r, t.g ), t.b );\",\"\tvec3 Cbottom = texture2D( colorTex, offset[1].zw ).rgb;\",\"\tt = abs( C - Cbottom );\",\"\tdelta.w = max( max( t.r, t.g ), t.b );\",// Calculate the maximum delta in the direct neighborhood:\n\"\tfloat maxDelta = max( max( max( delta.x, delta.y ), delta.z ), delta.w );\",// Calculate left-left and top-top deltas:\n\"\tvec3 Cleftleft = texture2D( colorTex, offset[2].xy ).rgb;\",\"\tt = abs( C - Cleftleft );\",\"\tdelta.z = max( max( t.r, t.g ), t.b );\",\"\tvec3 Ctoptop = texture2D( colorTex, offset[2].zw ).rgb;\",\"\tt = abs( C - Ctoptop );\",\"\tdelta.w = max( max( t.r, t.g ), t.b );\",// Calculate the final maximum delta:\n\"\tmaxDelta = max( max( maxDelta, delta.z ), delta.w );\",// Local contrast adaptation in action:\n\"\tedges.xy *= step( 0.5 * maxDelta, delta.xy );\",\"\treturn vec4( edges, 0.0, 0.0 );\",\"}\",\"void main() {\",\"\tgl_FragColor = SMAAColorEdgeDetectionPS( vUv, vOffset, tDiffuse );\",\"}\"].join(\"\\n\")};const SMAAWeightsShader={defines:{SMAA_MAX_SEARCH_STEPS:\"8\",SMAA_AREATEX_MAX_DISTANCE:\"16\",SMAA_AREATEX_PIXEL_SIZE:\"( 1.0 / vec2( 160.0, 560.0 ) )\",SMAA_AREATEX_SUBTEX_SIZE:\"( 1.0 / 7.0 )\"},uniforms:{tDiffuse:{value:null},tArea:{value:null},tSearch:{value:null},resolution:{value:/*@__PURE__*/new Vector2(1/1024,1/512)}},vertexShader:/*@__PURE__*/[\"uniform vec2 resolution;\",\"varying vec2 vUv;\",\"varying vec4 vOffset[ 3 ];\",\"varying vec2 vPixcoord;\",\"void SMAABlendingWeightCalculationVS( vec2 texcoord ) {\",\"\tvPixcoord = texcoord / resolution;\",// We will use these offsets for the searches later on (see @PSEUDO_GATHER4):\n\"\tvOffset[ 0 ] = texcoord.xyxy + resolution.xyxy * vec4( -0.25, 0.125, 1.25, 0.125 );\",// WebGL port note: Changed sign in Y and W components\n\"\tvOffset[ 1 ] = texcoord.xyxy + resolution.xyxy * vec4( -0.125, 0.25, -0.125, -1.25 );\",// WebGL port note: Changed sign in Y and W components\n// And these for the searches, they indicate the ends of the loops:\n\"\tvOffset[ 2 ] = vec4( vOffset[ 0 ].xz, vOffset[ 1 ].yw ) + vec4( -2.0, 2.0, -2.0, 2.0 ) * resolution.xxyy * float( SMAA_MAX_SEARCH_STEPS );\",\"}\",\"void main() {\",\"\tvUv = uv;\",\"\tSMAABlendingWeightCalculationVS( vUv );\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"#define SMAASampleLevelZeroOffset( tex, coord, offset ) texture2D( tex, coord + float( offset ) * resolution, 0.0 )\",\"uniform sampler2D tDiffuse;\",\"uniform sampler2D tArea;\",\"uniform sampler2D tSearch;\",\"uniform vec2 resolution;\",\"varying vec2 vUv;\",\"varying vec4 vOffset[3];\",\"varying vec2 vPixcoord;\",\"#if __VERSION__ == 100\",\"vec2 round( vec2 x ) {\",\"\treturn sign( x ) * floor( abs( x ) + 0.5 );\",\"}\",\"#endif\",\"float SMAASearchLength( sampler2D searchTex, vec2 e, float bias, float scale ) {\",// Not required if searchTex accesses are set to point:\n// float2 SEARCH_TEX_PIXEL_SIZE = 1.0 / float2(66.0, 33.0);\n// e = float2(bias, 0.0) + 0.5 * SEARCH_TEX_PIXEL_SIZE +\n// e * float2(scale, 1.0) * float2(64.0, 32.0) * SEARCH_TEX_PIXEL_SIZE;\n\"\te.r = bias + e.r * scale;\",\"\treturn 255.0 * texture2D( searchTex, e, 0.0 ).r;\",\"}\",\"float SMAASearchXLeft( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) {\",/**\n * @PSEUDO_GATHER4\n * This texcoord has been offset by (-0.25, -0.125) in the vertex shader to\n * sample between edge, thus fetching four edges in a row.\n * Sampling with different offsets in each direction allows to disambiguate\n * which edges are active from the four fetched ones.\n */\"\tvec2 e = vec2( 0.0, 1.0 );\",\"\tfor ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) {\",// WebGL port note: Changed while to for\n\"\t\te = texture2D( edgesTex, texcoord, 0.0 ).rg;\",\"\t\ttexcoord -= vec2( 2.0, 0.0 ) * resolution;\",\"\t\tif ( ! ( texcoord.x > end && e.g > 0.8281 && e.r == 0.0 ) ) break;\",\"\t}\",// We correct the previous (-0.25, -0.125) offset we applied:\n\"\ttexcoord.x += 0.25 * resolution.x;\",// The searches are bias by 1, so adjust the coords accordingly:\n\"\ttexcoord.x += resolution.x;\",// Disambiguate the length added by the last step:\n\"\ttexcoord.x += 2.0 * resolution.x;\",// Undo last step\n\"\ttexcoord.x -= resolution.x * SMAASearchLength(searchTex, e, 0.0, 0.5);\",\"\treturn texcoord.x;\",\"}\",\"float SMAASearchXRight( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) {\",\"\tvec2 e = vec2( 0.0, 1.0 );\",\"\tfor ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) {\",// WebGL port note: Changed while to for\n\"\t\te = texture2D( edgesTex, texcoord, 0.0 ).rg;\",\"\t\ttexcoord += vec2( 2.0, 0.0 ) * resolution;\",\"\t\tif ( ! ( texcoord.x < end && e.g > 0.8281 && e.r == 0.0 ) ) break;\",\"\t}\",\"\ttexcoord.x -= 0.25 * resolution.x;\",\"\ttexcoord.x -= resolution.x;\",\"\ttexcoord.x -= 2.0 * resolution.x;\",\"\ttexcoord.x += resolution.x * SMAASearchLength( searchTex, e, 0.5, 0.5 );\",\"\treturn texcoord.x;\",\"}\",\"float SMAASearchYUp( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) {\",\"\tvec2 e = vec2( 1.0, 0.0 );\",\"\tfor ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) {\",// WebGL port note: Changed while to for\n\"\t\te = texture2D( edgesTex, texcoord, 0.0 ).rg;\",\"\t\ttexcoord += vec2( 0.0, 2.0 ) * resolution;\",// WebGL port note: Changed sign\n\"\t\tif ( ! ( texcoord.y > end && e.r > 0.8281 && e.g == 0.0 ) ) break;\",\"\t}\",\"\ttexcoord.y -= 0.25 * resolution.y;\",// WebGL port note: Changed sign\n\"\ttexcoord.y -= resolution.y;\",// WebGL port note: Changed sign\n\"\ttexcoord.y -= 2.0 * resolution.y;\",// WebGL port note: Changed sign\n\"\ttexcoord.y += resolution.y * SMAASearchLength( searchTex, e.gr, 0.0, 0.5 );\",// WebGL port note: Changed sign\n\"\treturn texcoord.y;\",\"}\",\"float SMAASearchYDown( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) {\",\"\tvec2 e = vec2( 1.0, 0.0 );\",\"\tfor ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) {\",// WebGL port note: Changed while to for\n\"\t\te = texture2D( edgesTex, texcoord, 0.0 ).rg;\",\"\t\ttexcoord -= vec2( 0.0, 2.0 ) * resolution;\",// WebGL port note: Changed sign\n\"\t\tif ( ! ( texcoord.y < end && e.r > 0.8281 && e.g == 0.0 ) ) break;\",\"\t}\",\"\ttexcoord.y += 0.25 * resolution.y;\",// WebGL port note: Changed sign\n\"\ttexcoord.y += resolution.y;\",// WebGL port note: Changed sign\n\"\ttexcoord.y += 2.0 * resolution.y;\",// WebGL port note: Changed sign\n\"\ttexcoord.y -= resolution.y * SMAASearchLength( searchTex, e.gr, 0.5, 0.5 );\",// WebGL port note: Changed sign\n\"\treturn texcoord.y;\",\"}\",\"vec2 SMAAArea( sampler2D areaTex, vec2 dist, float e1, float e2, float offset ) {\",// Rounding prevents precision errors of bilinear filtering:\n\"\tvec2 texcoord = float( SMAA_AREATEX_MAX_DISTANCE ) * round( 4.0 * vec2( e1, e2 ) ) + dist;\",// We do a scale and bias for mapping to texel space:\n\"\ttexcoord = SMAA_AREATEX_PIXEL_SIZE * texcoord + ( 0.5 * SMAA_AREATEX_PIXEL_SIZE );\",// Move to proper place, according to the subpixel offset:\n\"\ttexcoord.y += SMAA_AREATEX_SUBTEX_SIZE * offset;\",\"\treturn texture2D( areaTex, texcoord, 0.0 ).rg;\",\"}\",\"vec4 SMAABlendingWeightCalculationPS( vec2 texcoord, vec2 pixcoord, vec4 offset[ 3 ], sampler2D edgesTex, sampler2D areaTex, sampler2D searchTex, ivec4 subsampleIndices ) {\",\"\tvec4 weights = vec4( 0.0, 0.0, 0.0, 0.0 );\",\"\tvec2 e = texture2D( edgesTex, texcoord ).rg;\",\"\tif ( e.g > 0.0 ) {\",// Edge at north\n\"\t\tvec2 d;\",// Find the distance to the left:\n\"\t\tvec2 coords;\",\"\t\tcoords.x = SMAASearchXLeft( edgesTex, searchTex, offset[ 0 ].xy, offset[ 2 ].x );\",\"\t\tcoords.y = offset[ 1 ].y;\",// offset[1].y = texcoord.y - 0.25 * resolution.y (@CROSSING_OFFSET)\n\"\t\td.x = coords.x;\",// Now fetch the left crossing edges, two at a time using bilinear\n// filtering. Sampling at -0.25 (see @CROSSING_OFFSET) enables to\n// discern what value each edge has:\n\"\t\tfloat e1 = texture2D( edgesTex, coords, 0.0 ).r;\",// Find the distance to the right:\n\"\t\tcoords.x = SMAASearchXRight( edgesTex, searchTex, offset[ 0 ].zw, offset[ 2 ].y );\",\"\t\td.y = coords.x;\",// We want the distances to be in pixel units (doing this here allow to\n// better interleave arithmetic and memory accesses):\n\"\t\td = d / resolution.x - pixcoord.x;\",// SMAAArea below needs a sqrt, as the areas texture is compressed\n// quadratically:\n\"\t\tvec2 sqrt_d = sqrt( abs( d ) );\",// Fetch the right crossing edges:\n\"\t\tcoords.y -= 1.0 * resolution.y;\",// WebGL port note: Added\n\"\t\tfloat e2 = SMAASampleLevelZeroOffset( edgesTex, coords, ivec2( 1, 0 ) ).r;\",// Ok, we know how this pattern looks like, now it is time for getting\n// the actual area:\n\"\t\tweights.rg = SMAAArea( areaTex, sqrt_d, e1, e2, float( subsampleIndices.y ) );\",\"\t}\",\"\tif ( e.r > 0.0 ) {\",// Edge at west\n\"\t\tvec2 d;\",// Find the distance to the top:\n\"\t\tvec2 coords;\",\"\t\tcoords.y = SMAASearchYUp( edgesTex, searchTex, offset[ 1 ].xy, offset[ 2 ].z );\",\"\t\tcoords.x = offset[ 0 ].x;\",// offset[1].x = texcoord.x - 0.25 * resolution.x;\n\"\t\td.x = coords.y;\",// Fetch the top crossing edges:\n\"\t\tfloat e1 = texture2D( edgesTex, coords, 0.0 ).g;\",// Find the distance to the bottom:\n\"\t\tcoords.y = SMAASearchYDown( edgesTex, searchTex, offset[ 1 ].zw, offset[ 2 ].w );\",\"\t\td.y = coords.y;\",// We want the distances to be in pixel units:\n\"\t\td = d / resolution.y - pixcoord.y;\",// SMAAArea below needs a sqrt, as the areas texture is compressed\n// quadratically:\n\"\t\tvec2 sqrt_d = sqrt( abs( d ) );\",// Fetch the bottom crossing edges:\n\"\t\tcoords.y -= 1.0 * resolution.y;\",// WebGL port note: Added\n\"\t\tfloat e2 = SMAASampleLevelZeroOffset( edgesTex, coords, ivec2( 0, 1 ) ).g;\",// Get the area for this direction:\n\"\t\tweights.ba = SMAAArea( areaTex, sqrt_d, e1, e2, float( subsampleIndices.x ) );\",\"\t}\",\"\treturn weights;\",\"}\",\"void main() {\",\"\tgl_FragColor = SMAABlendingWeightCalculationPS( vUv, vPixcoord, vOffset, tDiffuse, tArea, tSearch, ivec4( 0.0 ) );\",\"}\"].join(\"\\n\")};const SMAABlendShader={uniforms:{tDiffuse:{value:null},tColor:{value:null},resolution:{value:/*@__PURE__*/new Vector2(1/1024,1/512)}},vertexShader:/*@__PURE__*/[\"uniform vec2 resolution;\",\"varying vec2 vUv;\",\"varying vec4 vOffset[ 2 ];\",\"void SMAANeighborhoodBlendingVS( vec2 texcoord ) {\",\"\tvOffset[ 0 ] = texcoord.xyxy + resolution.xyxy * vec4( -1.0, 0.0, 0.0, 1.0 );\",// WebGL port note: Changed sign in W component\n\"\tvOffset[ 1 ] = texcoord.xyxy + resolution.xyxy * vec4( 1.0, 0.0, 0.0, -1.0 );\",// WebGL port note: Changed sign in W component\n\"}\",\"void main() {\",\"\tvUv = uv;\",\"\tSMAANeighborhoodBlendingVS( vUv );\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform sampler2D tDiffuse;\",\"uniform sampler2D tColor;\",\"uniform vec2 resolution;\",\"varying vec2 vUv;\",\"varying vec4 vOffset[ 2 ];\",\"vec4 SMAANeighborhoodBlendingPS( vec2 texcoord, vec4 offset[ 2 ], sampler2D colorTex, sampler2D blendTex ) {\",// Fetch the blending weights for current pixel:\n\"\tvec4 a;\",\"\ta.xz = texture2D( blendTex, texcoord ).xz;\",\"\ta.y = texture2D( blendTex, offset[ 1 ].zw ).g;\",\"\ta.w = texture2D( blendTex, offset[ 1 ].xy ).a;\",// Is there any blending weight with a value greater than 0.0?\n\"\tif ( dot(a, vec4( 1.0, 1.0, 1.0, 1.0 )) < 1e-5 ) {\",\"\t\treturn texture2D( colorTex, texcoord, 0.0 );\",\"\t} else {\",// Up to 4 lines can be crossing a pixel (one through each edge). We\n// favor blending by choosing the line with the maximum weight for each\n// direction:\n\"\t\tvec2 offset;\",\"\t\toffset.x = a.a > a.b ? a.a : -a.b;\",// left vs. right\n\"\t\toffset.y = a.g > a.r ? -a.g : a.r;\",// top vs. bottom // WebGL port note: Changed signs\n// Then we go in the direction that has the maximum weight:\n\"\t\tif ( abs( offset.x ) > abs( offset.y )) {\",// horizontal vs. vertical\n\"\t\t\toffset.y = 0.0;\",\"\t\t} else {\",\"\t\t\toffset.x = 0.0;\",\"\t\t}\",// Fetch the opposite color and lerp by hand:\n\"\t\tvec4 C = texture2D( colorTex, texcoord, 0.0 );\",\"\t\ttexcoord += sign( offset ) * resolution;\",\"\t\tvec4 Cop = texture2D( colorTex, texcoord, 0.0 );\",\"\t\tfloat s = abs( offset.x ) > abs( offset.y ) ? abs( offset.x ) : abs( offset.y );\",// WebGL port note: Added gamma correction\n\"\t\tC.xyz = pow(C.xyz, vec3(2.2));\",\"\t\tCop.xyz = pow(Cop.xyz, vec3(2.2));\",\"\t\tvec4 mixed = mix(C, Cop, s);\",\"\t\tmixed.xyz = pow(mixed.xyz, vec3(1.0 / 2.2));\",\"\t\treturn mixed;\",\"\t}\",\"}\",\"void main() {\",\"\tgl_FragColor = SMAANeighborhoodBlendingPS( vUv, vOffset, tColor, tDiffuse );\",\"}\"].join(\"\\n\")};class SMAAPass extends Pass{constructor(width,height){super();this.edgesRT=new WebGLRenderTarget(width,height,{depthBuffer:false});this.edgesRT.texture.name=\"SMAAPass.edges\";this.weightsRT=new WebGLRenderTarget(width,height,{depthBuffer:false});this.weightsRT.texture.name=\"SMAAPass.weights\";const scope=this;const areaTextureImage=new Image();areaTextureImage.src=this.getAreaTexture();areaTextureImage.onload=function(){scope.areaTexture.needsUpdate=true;};this.areaTexture=new Texture();this.areaTexture.name=\"SMAAPass.area\";this.areaTexture.image=areaTextureImage;this.areaTexture.minFilter=LinearFilter;this.areaTexture.generateMipmaps=false;this.areaTexture.flipY=false;const searchTextureImage=new Image();searchTextureImage.src=this.getSearchTexture();searchTextureImage.onload=function(){scope.searchTexture.needsUpdate=true;};this.searchTexture=new Texture();this.searchTexture.name=\"SMAAPass.search\";this.searchTexture.image=searchTextureImage;this.searchTexture.magFilter=NearestFilter;this.searchTexture.minFilter=NearestFilter;this.searchTexture.generateMipmaps=false;this.searchTexture.flipY=false;if(SMAAEdgesShader===void 0){console.error(\"THREE.SMAAPass relies on SMAAShader\");}this.uniformsEdges=UniformsUtils.clone(SMAAEdgesShader.uniforms);this.uniformsEdges[\"resolution\"].value.set(1/width,1/height);this.materialEdges=new ShaderMaterial({defines:Object.assign({},SMAAEdgesShader.defines),uniforms:this.uniformsEdges,vertexShader:SMAAEdgesShader.vertexShader,fragmentShader:SMAAEdgesShader.fragmentShader});this.uniformsWeights=UniformsUtils.clone(SMAAWeightsShader.uniforms);this.uniformsWeights[\"resolution\"].value.set(1/width,1/height);this.uniformsWeights[\"tDiffuse\"].value=this.edgesRT.texture;this.uniformsWeights[\"tArea\"].value=this.areaTexture;this.uniformsWeights[\"tSearch\"].value=this.searchTexture;this.materialWeights=new ShaderMaterial({defines:Object.assign({},SMAAWeightsShader.defines),uniforms:this.uniformsWeights,vertexShader:SMAAWeightsShader.vertexShader,fragmentShader:SMAAWeightsShader.fragmentShader});this.uniformsBlend=UniformsUtils.clone(SMAABlendShader.uniforms);this.uniformsBlend[\"resolution\"].value.set(1/width,1/height);this.uniformsBlend[\"tDiffuse\"].value=this.weightsRT.texture;this.materialBlend=new ShaderMaterial({uniforms:this.uniformsBlend,vertexShader:SMAABlendShader.vertexShader,fragmentShader:SMAABlendShader.fragmentShader});this.needsSwap=false;this.fsQuad=new FullScreenQuad(null);}render(renderer,writeBuffer,readBuffer){this.uniformsEdges[\"tDiffuse\"].value=readBuffer.texture;this.fsQuad.material=this.materialEdges;renderer.setRenderTarget(this.edgesRT);if(this.clear)renderer.clear();this.fsQuad.render(renderer);this.fsQuad.material=this.materialWeights;renderer.setRenderTarget(this.weightsRT);if(this.clear)renderer.clear();this.fsQuad.render(renderer);this.uniformsBlend[\"tColor\"].value=readBuffer.texture;this.fsQuad.material=this.materialBlend;if(this.renderToScreen){renderer.setRenderTarget(null);this.fsQuad.render(renderer);}else{renderer.setRenderTarget(writeBuffer);if(this.clear)renderer.clear();this.fsQuad.render(renderer);}}setSize(width,height){this.edgesRT.setSize(width,height);this.weightsRT.setSize(width,height);this.materialEdges.uniforms[\"resolution\"].value.set(1/width,1/height);this.materialWeights.uniforms[\"resolution\"].value.set(1/width,1/height);this.materialBlend.uniforms[\"resolution\"].value.set(1/width,1/height);}getAreaTexture(){return\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAIwCAIAAACOVPcQAACBeklEQVR42u39W4xlWXrnh/3WWvuciIzMrKxrV8/0rWbY0+SQFKcb4owIkSIFCjY9AC1BT/LYBozRi+EX+cV+8IMsYAaCwRcBwjzMiw2jAWtgwC8WR5Q8mDFHZLNHTarZGrLJJllt1W2qKrsumZWZcTvn7L3W54e1vrXX3vuciLPPORFR1XE2EomorB0nVuz//r71re/y/1eMvb4Cb3N11xV/PP/2v4UBAwJG/7H8urx6/25/Gf8O5hypMQ0EEEQwAqLfoN/Z+97f/SW+/NvcgQk4sGBJK6H7N4PFVL+K+e0N11yNfkKvwUdwdlUAXPHHL38oa15f/i/46Ih6SuMSPmLAYAwyRKn7dfMGH97jaMFBYCJUgotIC2YAdu+LyW9vvubxAP8kAL8H/koAuOKP3+q6+xGnd5kdYCeECnGIJViwGJMAkQKfDvB3WZxjLKGh8VSCCzhwEWBpMc5/kBbjawT4HnwJfhr+pPBIu7uu+OOTo9vsmtQcniMBGkKFd4jDWMSCRUpLjJYNJkM+IRzQ+PQvIeAMTrBS2LEiaiR9b/5PuT6Ap/AcfAFO4Y3dA3DFH7/VS+M8k4baEAQfMI4QfbVDDGIRg7GKaIY52qAjTAgTvGBAPGIIghOCYAUrGFNgzA7Q3QhgCwfwAnwe5vDejgG44o/fbm1C5ZlYQvQDARPAIQGxCWBM+wWl37ZQESb4gImexGMDouhGLx1Cst0Saa4b4AqO4Hk4gxo+3DHAV/nx27p3JziPM2pVgoiia5MdEzCGULprIN7gEEeQ5IQxEBBBQnxhsDb5auGmAAYcHMA9eAAz8PBol8/xij9+C4Djlim4gJjWcwZBhCBgMIIYxGAVIkH3ZtcBuLdtRFMWsPGoY9rN+HoBji9VBYdwD2ZQg4cnO7OSq/z4rU5KKdwVbFAjNojCQzTlCLPFSxtamwh2jMUcEgg2Wm/6XgErIBhBckQtGN3CzbVacERgCnfgLswhnvqf7QyAq/z4rRZm1YglYE3affGITaZsdIe2FmMIpnOCap25I6jt2kCwCW0D1uAD9sZctNGXcQIHCkINDQgc78aCr+zjtw3BU/ijdpw3zhCwcaONwBvdeS2YZKkJNJsMPf2JKEvC28RXxxI0ASJyzQCjCEQrO4Q7sFArEzjZhaFc4cdv+/JFdKULM4px0DfUBI2hIsy06BqLhGTQEVdbfAIZXYMPesq6VoCHICzUyjwInO4Y411//LYLs6TDa9wvg2CC2rElgAnpTBziThxaL22MYhzfkghz6GAs2VHbbdM91VZu1MEEpupMMwKyVTb5ij9+u4VJG/5EgEMMmFF01cFai3isRbKbzb+YaU/MQbAm2XSMoUPAmvZzbuKYRIFApbtlrfFuUGd6vq2hXNnH78ZLh/iFhsQG3T4D1ib7k5CC6vY0DCbtrohgLEIClXiGtl10zc0CnEGIhhatLBva7NP58Tvw0qE8yWhARLQ8h4+AhQSP+I4F5xoU+VilGRJs6wnS7ruti/4KvAY/CfdgqjsMy4pf8fodQO8/gnuX3f/3xi3om1/h7THr+co3x93PP9+FBUfbNUjcjEmhcrkT+8K7ml7V10Jo05mpIEFy1NmCJWx9SIKKt+EjAL4Ez8EBVOB6havuT/rByPvHXK+9zUcfcbb254+9fydJknYnRr1oGfdaiAgpxu1Rx/Rek8KISftx3L+DfsLWAANn8Hvw0/AFeAGO9DFV3c6D+CcWbL8Dj9e7f+T1k8AZv/d7+PXWM/Z+VvdCrIvuAKO09RpEEQJM0Ci6+B4xhTWr4cZNOvhktabw0ta0rSJmqz3Yw5/AKXwenod7cAhTmBSPKf6JBdvH8IP17h95pXqw50/+BFnj88fev4NchyaK47OPhhtI8RFSvAfDSNh0Ck0p2gLxGkib5NJj/JWCr90EWQJvwBzO4AHcgztwAFN1evHPUVGwfXON+0debT1YeGON9Yy9/63X+OguiwmhIhQhD7l4sMqlG3D86Suc3qWZ4rWjI1X7u0Ytw6x3rIMeIOPDprfe2XzNgyj6PahhBjO4C3e6puDgXrdg+/5l948vF3bqwZetZ+z9Rx9zdIY5pInPK4Nk0t+l52xdK2B45Qd87nM8fsD5EfUhIcJcERw4RdqqH7Yde5V7m1vhNmtedkz6EDzUMF/2jJYWbC+4fzzA/Y+/8PPH3j9dcBAPIRP8JLXd5BpAu03aziOL3VVHZzz3CXWDPWd+SH2AnxIqQoTZpo9Ckc6HIrFbAbzNmlcg8Ag8NFDDAhbJvTBZXbC94P7t68EXfv6o+21gUtPETU7bbkLxvNKRFG2+KXzvtObonPP4rBvsgmaKj404DlshFole1Glfh02fE7bYR7dZ82oTewIBGn1Md6CG6YUF26X376oevOLzx95vhUmgblI6LBZwTCDY7vMq0op5WVXgsObOXJ+1x3qaBl9j1FeLxbhU9w1F+Wiba6s1X/TBz1LnUfuYDi4r2C69f1f14BWfP+p+W2GFKuC9phcELMYRRLur9DEZTUdEH+iEqWdaM7X4WOoPGI+ZYD2+wcQ+y+ioHUZ9dTDbArzxmi/bJI9BND0Ynd6lBdve/butBw8+f/T9D3ABa3AG8W3VPX4hBin+bj8dMMmSpp5pg7fJ6xrBFE2WQQEWnV8Qg3FbAWzYfM1rREEnmvkN2o1+acG2d/9u68GDzx91v3mAjb1zkpqT21OipPKO0b9TO5W0nTdOmAQm0TObts3aBKgwARtoPDiCT0gHgwnbArzxmtcLc08HgF1asN0C4Ms/fvD5I+7PhfqyXE/b7RbbrGyRQRT9ARZcwAUmgdoz0ehJ9Fn7QAhUjhDAQSw0bV3T3WbNa59jzmiP6GsWbGXDX2ytjy8+f9T97fiBPq9YeLdBmyuizZHaqXITnXiMUEEVcJ7K4j3BFPurtB4bixW8wTpweL8DC95szWMOqucFYGsWbGU7p3TxxxefP+r+oTVktxY0v5hbq3KiOKYnY8ddJVSBxuMMVffNbxwIOERShst73HZ78DZrHpmJmH3K6sGz0fe3UUj0eyRrSCGTTc+rjVNoGzNSv05srAxUBh8IhqChiQgVNIIBH3AVPnrsnXQZbLTm8ammv8eVXn/vWpaTem5IXRlt+U/LA21zhSb9cye6jcOfCnOwhIAYXAMVTUNV0QhVha9xjgA27ODJbLbmitt3tRN80lqG6N/khgot4ZVlOyO4WNg3OIMzhIZQpUEHieg2im6F91hB3I2tubql6BYNN9Hj5S7G0G2tahslBWKDnOiIvuAEDzakDQKDNFQT6gbn8E2y4BBubM230YIpBnDbMa+y3dx0n1S0BtuG62lCCXwcY0F72T1VRR3t2ONcsmDjbmzNt9RFs2LO2hQNyb022JisaI8rAWuw4HI3FuAIhZdOGIcdjLJvvObqlpqvWTJnnQbyi/1M9O8UxWhBs//H42I0q1Yb/XPGONzcmm+ri172mHKvZBpHkJaNJz6v9jxqiklDj3U4CA2ugpAaYMWqNXsdXbmJNd9egCnJEsphXNM+MnK3m0FCJ5S1kmJpa3DgPVbnQnPGWIDspW9ozbcO4K/9LkfaQO2KHuqlfFXSbdNzcEcwoqNEFE9zcIXu9/6n/ym/BC/C3aJLzEKPuYVlbFnfhZ8kcWxV3dbv4bKl28566wD+8C53aw49lTABp9PWbsB+knfc/Li3eVizf5vv/xmvnPKg5ihwKEwlrcHqucuVcVOxEv8aH37E3ZqpZypUulrHEtIWKUr+txHg+ojZDGlwnqmkGlzcVi1dLiNSJiHjfbRNOPwKpx9TVdTn3K05DBx4psIk4Ei8aCkJahRgffk4YnEXe07T4H2RR1u27E6wfQsBDofUgjFUFnwC2AiVtA+05J2zpiDK2Oa0c5fmAecN1iJzmpqFZxqYBCYhFTCsUNEmUnIcZ6aEA5rQVhEywG6w7HSW02XfOoBlQmjwulOFQAg66SvJblrTEX1YtJ3uG15T/BH1OfOQeuR8g/c0gdpT5fx2SKbs9EfHTKdM8A1GaJRHLVIwhcGyydZsbifAFVKl5EMKNU2Hryo+06BeTgqnxzYjThVySDikbtJPieco75lYfKAJOMEZBTjoITuWHXXZVhcUDIS2hpiXHV9Ku4u44bN5OYLDOkJo8w+xJSMbhBRHEdEs9JZUCkQrPMAvaHyLkxgkEHxiNkx/x2YB0mGsQ8EUWj/stW5YLhtS5SMu+/YBbNPDCkGTUybN8krRLBGPlZkVOA0j+a1+rkyQKWGaPHPLZOkJhioQYnVZ2hS3zVxMtgC46KuRwbJNd9nV2PHgb36F194ecf/Yeu2vAFe5nm/bRBFrnY4BauE8ERmZRFUn0k8hbftiVYSKMEme2dJCJSCGYAlNqh87bXOPdUkGy24P6d1ll21MBqqx48Fvv8ZHH8HZFY7j/uAq1xMJUFqCSUlJPmNbIiNsmwuMs/q9CMtsZsFO6SprzCS1Z7QL8xCQClEelpjTduDMsmWD8S1PT152BtvmIGvUeDA/yRn83u/x0/4qxoPHjx+PXY9pqX9bgMvh/Nz9kpP4pOe1/fYf3axUiMdHLlPpZCNjgtNFAhcHEDxTumNONhHrBduW+vOyY++70WWnPXj98eA4kOt/mj/5E05l9+O4o8ePx67HFqyC+qSSnyselqjZGaVK2TadbFLPWAQ4NBhHqDCCV7OTpo34AlSSylPtIdd2AJZlyzYQrDJ5lcWGNceD80CunPLGGzsfD+7wRb95NevJI5docQ3tgCyr5bGnyaPRlmwNsFELViOOx9loebGNq2moDOKpHLVP5al2cymWHbkfzGXL7kfRl44H9wZy33tvt+PB/Xnf93e+nh5ZlU18wCiRUa9m7kib9LYuOk+hudQNbxwm0AQqbfloimaB2lM5fChex+ylMwuTbfmXQtmWlenZljbdXTLuOxjI/fDDHY4Hjx8/Hrse0zXfPFxbUN1kKqSCCSk50m0Ajtx3ub9XHBKHXESb8iO6E+qGytF4nO0OG3SXzbJlhxBnKtKyl0NwybjvYCD30aMdjgePHz8eu56SVTBbgxJMliQ3Oauwg0QHxXE2Ez/EIReLdQj42Gzb4CLS0YJD9xUx7bsi0vJi5mUbW1QzL0h0PFk17rtiIPfJk52MB48fPx67npJJwyrBa2RCCQRTbGZSPCxTPOiND4G2pYyOQ4h4jINIJh5wFU1NFZt+IsZ59LSnDqBjZ2awbOku+yInunLcd8VA7rNnOxkPHj9+PGY9B0MWJJNozOJmlglvDMXDEozdhQWbgs/U6oBanGzLrdSNNnZFjOkmbi5bNt1lX7JLLhn3vXAg9/h4y/Hg8ePHI9dzQMEkWCgdRfYykYKnkP7D4rIujsujaKPBsB54vE2TS00ccvFY/Tth7JXeq1hz+qgVy04sAJawTsvOknHfCwdyT062HA8eP348Zj0vdoXF4pilKa2BROed+9fyw9rWRXeTFXESMOanvDZfJuJaSXouQdMdDJZtekZcLLvEeK04d8m474UDuaenW44Hjx8/Xns9YYqZpszGWB3AN/4VHw+k7WSFtJ3Qicuqb/NlVmgXWsxh570xg2UwxUw3WfO6B5nOuO8aA7lnZxuPB48fPx6znm1i4bsfcbaptF3zNT78eFPtwi1OaCNOqp1x3zUGcs/PN++AGD1+fMXrSVm2baTtPhPahbPhA71wIHd2bXzRa69nG+3CraTtPivahV/55tXWg8fyRY/9AdsY8VbSdp8V7cKrrgdfM//z6ILQFtJ2nxHtwmuoB4/kf74+gLeRtvvMaBdeSz34+vifx0YG20jbfTa0C6+tHrwe//NmOG0L8EbSdp8R7cLrrQe/996O+ai3ujQOskpTNULa7jOjXXj99eCd8lHvoFiwsbTdZ0a78PrrwTvlo966pLuRtB2fFe3Cm6oHP9kNH/W2FryxtN1nTLvwRurBO+Kj3pWXHidtx2dFu/Bm68Fb81HvykuPlrb7LGkX3mw9eGs+6h1Y8MbSdjegXcguQLjmevDpTQLMxtJ2N6NdyBZu9AbrwVvwUW+LbteULUpCdqm0HTelXbhNPe8G68Gb8lFvVfYfSNuxvrTdTWoXbozAzdaDZzfkorOj1oxVxlIMlpSIlpLrt8D4hrQL17z+c3h6hU/wv4Q/utps4+bm+6P/hIcf0JwQ5oQGPBL0eKPTYEXTW+eL/2DKn73J9BTXYANG57hz1cEMviVf/4tf5b/6C5pTQkMIWoAq7hTpOJjtAM4pxKu5vg5vXeUrtI09/Mo/5H+4z+Mp5xULh7cEm2QbRP2tFIKR7WM3fPf/jZ3SWCqLM2l4NxID5zB72HQXv3jj/8mLR5xXNA5v8EbFQEz7PpRfl1+MB/hlAN65qgDn3wTgH13hK7T59bmP+NIx1SHHU84nLOITt3iVz8mNO+lPrjGAnBFqmioNn1mTyk1ta47R6d4MrX7tjrnjYUpdUbv2rVr6YpVfsGG58AG8Ah9eyUN8CX4WfgV+G8LVWPDGb+Zd4cU584CtqSbMKxauxTg+dyn/LkVgA+IR8KHtejeFKRtTmLLpxN6mYVLjYxwXf5x2VofiZcp/lwKk4wGOpYDnoIZPdg/AAbwMfx0+ge9dgZvYjuqKe4HnGnykYo5TvJbG0Vj12JagRhwKa44H95ShkZa5RyLGGdfYvG7aw1TsF6iapPAS29mNS3NmsTQZCmgTzFwgL3upCTgtBTRwvGMAKrgLn4evwin8+afJRcff+8izUGUM63GOOuAs3tJkw7J4kyoNreqrpO6cYLQeFUd7TTpr5YOTLc9RUUogUOVJQ1GYJaFLAW0oTmKyYS46ZooP4S4EON3xQ5zC8/CX4CnM4c1PE8ApexpoYuzqlP3d4S3OJP8ZDK7cKWNaTlqmgDiiHwl1YsE41w1zT4iRTm3DBqxvOUsbMKKDa/EHxagtnta072ejc3DOIh5ojvh8l3tk1JF/AV6FU6jh3U8HwEazLgdCLYSQ+MYiAI2ltomkzttUb0gGHdSUUgsIYjTzLG3mObX4FBRaYtpDVNZrih9TgTeYOBxsEnN1gOCTM8Bsw/ieMc75w9kuAT6A+/AiHGvN/+Gn4KRkiuzpNNDYhDGFndWRpE6SVfm8U5bxnSgVV2jrg6JCKmneqey8VMFgq2+AM/i4L4RUbfSi27lNXZ7R7W9RTcq/q9fk4Xw3AMQd4I5ifAZz8FcVtm9SAom/dyN4lczJQW/kC42ZrHgcCoIf1oVMKkVItmMBi9cOeNHGLqOZk+QqQmrbc5YmYgxELUUN35z2iohstgfLIFmcMV7s4CFmI74L9+EFmGsi+tGnAOD4Yk9gIpo01Y4cA43BWGygMdr4YZekG3OBIUXXNukvJS8tqa06e+lSDCtnqqMFu6hWHXCF+WaYt64m9QBmNxi7Ioy7D+fa1yHw+FMAcPt7SysFLtoG4PXAk7JOA3aAxBRqUiAdU9Yp5lK3HLSRFtOim0sa8euEt08xvKjYjzeJ2GU7YawexrnKI9tmobInjFXCewpwriY9+RR4aaezFhMhGCppKwom0ChrgFlKzyPKkGlTW1YQrE9HJqu8hKGgMc6hVi5QRq0PZxNfrYNgE64utmRv6KKHRpxf6VDUaOvNP5jCEx5q185My/7RKz69UQu2im5k4/eownpxZxNLwiZ1AZTO2ZjWjkU9uaB2HFn6Q3u0JcsSx/qV9hTEApRzeBLDJQXxYmTnq7bdLa3+uqFrxLJ5w1TehnNHx5ECvCh2g2c3hHH5YsfdaSKddztfjQ6imKFGSyFwlLzxEGPp6r5IevVjk1AMx3wMqi1NxDVjLBiPs9tbsCkIY5we5/ML22zrCScFxnNtzsr9Wcc3CnD+pYO+4VXXiDE0oc/vQQ/fDK3oPESJMYXNmJa/DuloJZkcTpcYE8lIH8Dz8DJMiynNC86Mb2lNaaqP/+L7f2fcE/yP7/Lde8xfgSOdMxvOixZf/9p3+M4hT1+F+zApxg9XfUvYjc8qX2lfOOpK2gNRtB4flpFu9FTKCp2XJRgXnX6olp1zyYjTKJSkGmLE2NjUr1bxFM4AeAAHBUFIeSLqXR+NvH/M9fOnfHzOD2vCSyQJKzfgsCh+yi/Mmc35F2fUrw7miW33W9hBD1vpuUojFphIyvg7aTeoymDkIkeW3XLHmguMzbIAJejN6B5MDrhipE2y6SoFRO/AK/AcHHZHNIfiWrEe/C6cr3f/yOvrQKB+zMM55/GQdLDsR+ifr5Fiuu+/y+M78LzOE5dsNuXC3PYvYWd8NXvphLSkJIasrlD2/HOqQ+RjcRdjKTGWYhhVUm4yxlyiGPuMsZR7sMCHUBeTuNWA7if+ifXgc/hovftHXs/DV+Fvwe+f8shzMiMcweFgBly3//vwJfg5AN4450fn1Hd1Rm1aBLu22Dy3y3H2+OqMemkbGZ4jozcDjJf6596xOLpC0eMTHbKnxLxH27uZ/bMTGs2jOaMOY4m87CfQwF0dw53oa1k80JRuz/XgS+8fX3N9Af4qPIMfzKgCp4H5TDGe9GGeFPzSsZz80SlPTxXjgwJmC45njzgt2vbQ4b4OAdUK4/vWhO8d8v6EE8fMUsfakXbPpFJeLs2ubM/qdm/la3WP91uWhxXHjoWhyRUq2iJ/+5mA73zwIIo+LoZ/SgvIRjAd1IMvvn98PfgOvAJfhhm8scAKVWDuaRaK8aQ9f7vuPDH6Bj47ZXau7rqYJ66mTDwEDU6lLbCjCK0qTXyl5mnDoeNRxanj3FJbaksTk0faXxHxLrssgPkWB9LnA/MFleXcJozzjwsUvUG0X/QCve51qkMDXp9mtcyOy3rwBfdvVJK7D6/ACSzg3RoruIq5UDeESfEmVclDxnniU82vxMLtceD0hGZWzBNPMM/jSPne2OVatiTKUpY5vY7gc0LdUAWeWM5tH+O2I66AOWw9xT2BuyRVLGdoDHUsVRXOo/c+ZdRXvFfnxWyIV4upFLCl9eAL7h8Zv0QH8Ry8pA2cHzQpGesctVA37ZtklBTgHjyvdSeKY/RZw/kJMk0Y25cSNRWSigQtlULPTw+kzuJPeYEkXjQRpoGZobYsLF79pyd1dMRHInbgFTZqNLhDqiIsTNpoex2WLcy0/X6rHcdMMQvFSd5dWA++4P7xv89deACnmr36uGlL69bRCL6BSZsS6c0TU2TKK5gtWCzgAOOwQcurqk9j8whvziZSMLcq5hbuwBEsYjopUBkqw1yYBGpLA97SRElEmx5MCInBY5vgLk94iKqSWmhIGmkJ4Bi9m4L645J68LyY4wsFYBfUg5feP/6gWWm58IEmKQM89hq7KsZNaKtP5TxxrUZZVkNmMJtjbKrGxLNEbHPJxhqy7lAmbC32ZqeF6lTaknRWcYaFpfLUBh/rwaQycCCJmW15Kstv6jRHyJFry2C1ahkkIW0LO75s61+owxK1y3XqweX9m5YLM2DPFeOjn/iiqCKJ+yKXF8t5Yl/kNsqaSCryxPq5xWTFIaP8KSW0RYxqupaUf0RcTNSSdJZGcKYdYA6kdtrtmyBckfKXwqk0pHpUHlwWaffjNRBYFPUDWa8e3Lt/o0R0CdisKDM89cX0pvRHEfM8ca4t0s2Xx4kgo91MPQJ/0c9MQYq0co8MBh7bz1fio0UUHLR4aAIOvOmoYO6kwlEVODSSTliWtOtH6sPkrtctF9ZtJ9GIerBskvhdVS5cFNv9s1BU0AbdUgdK4FG+dRnjFmDTzniRMdZO1QhzMK355vigbdkpz9P6qjUGE5J2qAcXmwJ20cZUiAD0z+pGMx6xkzJkmEf40Hr4qZfVg2XzF9YOyoV5BjzVkUJngKf8lgNYwKECEHrCNDrWZzMlflS3yBhr/InyoUgBc/lKT4pxVrrC6g1YwcceK3BmNxZcAtz3j5EIpqguh9H6wc011YN75cKDLpFDxuwkrPQmUwW4KTbj9mZTwBwLq4aQMUZbHm1rylJ46dzR0dua2n3RYCWZsiHROeywyJGR7mXKlpryyCiouY56sFkBWEnkEB/raeh/Sw4162KeuAxMQpEkzy5alMY5wamMsWKKrtW2WpEWNnReZWONKWjrdsKZarpFjqCslq773PLmEhM448Pc3+FKr1+94vv/rfw4tEcu+lKTBe4kZSdijBrykwv9vbCMPcLQTygBjzVckSLPRVGslqdunwJ4oegtFOYb4SwxNgWLCmD7T9kVjTv5YDgpo0XBmN34Z/rEHp0sgyz7lngsrm4lvMm2Mr1zNOJYJ5cuxuQxwMGJq/TP5emlb8fsQBZviK4t8hFL+zbhtlpwaRSxQRWfeETjuauPsdGxsBVdO7nmP4xvzSoT29pRl7kGqz+k26B3Oy0YNV+SXbbQas1ctC/GarskRdFpKczVAF1ZXnLcpaMuzVe6lZ2g/1ndcvOVgRG3sdUAY1bKD6achijMPdMxV4muKVorSpiDHituH7rSTs7n/4y5DhRXo4FVBN4vO/zbAcxhENzGbHCzU/98Mcx5e7a31kWjw9FCe/zNeYyQjZsWb1uc7U33pN4Mji6hCLhivqfa9Ss6xLg031AgfesA/l99m9fgvnaF9JoE6bYKmkGNK3aPbHB96w3+DnxFm4hs0drLsk7U8kf/N/CvwQNtllna0rjq61sH8L80HAuvwH1tvBy2ChqWSCaYTaGN19sTvlfzFD6n+iKTbvtayfrfe9ueWh6GJFoxLdr7V72a5ZpvHcCPDzma0wTO4EgbLyedxstO81n57LYBOBzyfsOhUKsW1J1BB5vr/tz8RyqOFylQP9Tvst2JALsC5lsH8PyQ40DV4ANzYa4dedNiKNR1s+x2wwbR7q4/4cTxqEk4LWDebfisuo36JXLiWFjOtLrlNWh3K1rRS4xvHcDNlFnNmWBBAl5SWaL3oPOfnvbr5pdjVnEaeBJSYjuLEkyLLsWhKccadmOphZkOPgVdalj2QpSmfOsADhMWE2ZBu4+EEJI4wKTAuCoC4xwQbWXBltpxbjkXJtKxxabo9e7tyhlgb6gNlSbUpMh+l/FaqzVwewGu8BW1Zx7pTpQDJUjb8tsUTW6+GDXbMn3mLbXlXJiGdggxFAoUrtPS3wE4Nk02UZG2OOzlk7fRs7i95QCLo3E0jtrjnM7SR3uS1p4qtS2nJ5OwtQVHgOvArLBFijZUV9QtSl8dAY5d0E0hM0w3HS2DpIeB6m/A1+HfhJcGUq4sOxH+x3f5+VO+Ds9rYNI7zPXOYWPrtf8bYMx6fuOAX5jzNR0PdsuON+X1f7EERxMJJoU6GkTEWBvVolVlb5lh3tKCg6Wx1IbaMDdJ+9sUCc5KC46hKGCk3IVOS4TCqdBNfUs7Kd4iXf2RjnT/LLysJy3XDcHLh/vde3x8DoGvwgsa67vBk91G5Pe/HbOe7xwym0NXbtiuuDkGO2IJDh9oQvJ4cY4vdoqLDuoH9Zl2F/ofsekn8lkuhIlhQcffUtSjytFyp++p6NiE7Rqx/lodgKVoceEp/CP4FfjrquZaTtj2AvH5K/ywpn7M34K/SsoYDAdIN448I1/0/wveW289T1/lX5xBzc8N5IaHr0XMOQdHsIkDuJFifj20pBm5jzwUv9e2FhwRsvhAbalCIuIw3bhJihY3p6nTFFIZgiSYjfTf3aXuOjmeGn4bPoGvwl+CFzTRczBIuHBEeImHc37/lGfwZR0cXzVDOvaKfNHvwe+suZ771K/y/XcBlsoN996JpBhoE2toYxOznNEOS5TJc6Id5GEXLjrWo+LEWGNpPDU4WAwsIRROu+1vM+0oW37z/MBN9kqHnSArwPfgFJ7Cq/Ai3Ie7g7ncmI09v8sjzw9mzOAEXoIHxURueaAce5V80f/DOuuZwHM8vsMb5wBzOFWM7wymTXPAEvm4vcFpZ2ut0VZRjkiP2MlmLd6DIpbGSiHOjdnUHN90hRYmhTnmvhzp1iKDNj+b7t5hi79lWGwQ+HN9RsfFMy0FXbEwhfuczKgCbyxYwBmcFhhvo/7a44v+i3XWcwDP86PzpGQYdWh7csP5dBvZ1jNzdxC8pBGuxqSW5vw40nBpj5JhMwvOzN0RWqERHMr4Lv1kWX84xLR830G3j6yqZ1a8UstTlW+qJPOZ+sZ7xZPKTJLhiNOAFd6tk+jrTH31ncLOxid8+nzRb128HhUcru/y0Wn6iT254YPC6FtVSIMoW2sk727AhvTtrWKZTvgsmckfXYZWeNRXx/3YQ2OUxLDrbHtN11IwrgXT6c8dATDwLniYwxzO4RzuQqTKSC5gAofMZ1QBK3zQ4JWobFbcvJm87FK+6JXrKahLn54m3p+McXzzYtP8VF/QpJuh1OwieElEoI1pRxPS09FBrkq2tWCU59+HdhNtTIqKm8EBrw2RTOEDpG3IKo2Y7mFdLm3ZeVjYwVw11o/oznceMve4CgMfNym/utA/d/ILMR7gpXzRy9eDsgLcgbs8O2Va1L0zzIdwGGemTBuwROHeoMShkUc7P+ISY3KH5ZZeWqO8mFTxQYeXTNuzvvK5FGPdQfuu00DwYFY9dyhctEt+OJDdnucfpmyhzUJzfsJjr29l8S0bXBfwRS9ZT26tmMIdZucch5ZboMz3Nio3nIOsYHCGoDT4kUA9MiXEp9Xsui1S8th/kbWIrMBxDGLodWUQIWcvnXy+9M23xPiSMOiRPqM+YMXkUN3gXFrZJwXGzUaMpJfyRS9ZT0lPe8TpScuRlbMHeUmlaKDoNuy62iWNTWNFYjoxFzuJs8oR+RhRx7O4SVNSXpa0ZJQ0K1LAHDQ+D9IepkMXpcsq5EVCvClBUIzDhDoyKwDw1Lc59GbTeORivugw1IcuaEOaGWdNm+Ps5fQ7/tm0DjMegq3yM3vb5j12qUId5UZD2oxDSEWOZMSqFl/W+5oynWDa/aI04tJRQ2eTXusg86SQVu/nwSYwpW6wLjlqIzwLuxGIvoAvul0PS+ZNz0/akp/pniO/8JDnGyaCkzbhl6YcqmK/69prxPqtpx2+Km9al9sjL+rwMgHw4jE/C8/HQ3m1vBuL1fldbzd8mOueVJ92syqdEY4KJjSCde3mcRw2TA6szxedn+zwhZMps0XrqEsiUjnC1hw0TELC2Ek7uAAdzcheXv1BYLagspxpzSAoZZUsIzIq35MnFQ9DOrlNB30jq3L4pkhccKUAA8/ocvN1Rzx9QyOtERs4CVsJRK/DF71kPYrxYsGsm6RMh4cps5g1DOmM54Ly1ii0Hd3Y/BMk8VWFgBVmhqrkJCPBHAolwZaWzLR9Vb7bcWdX9NyUYE+uB2BKfuaeBUcjDljbYVY4DdtsVWvzRZdWnyUzDpjNl1Du3aloAjVJTNDpcIOVVhrHFF66lLfJL1zJr9PQ2nFJSBaKoDe+sAvLufZVHVzYh7W0h/c6AAZ+7Tvj6q9j68G/cTCS/3n1vLKHZwNi+P+pS0WkZNMBMUl+LDLuiE4omZy71r3UFMwNJV+VJ/GC5ixVUkBStsT4gGKh0Gm4Oy3qvq7Lbmq24nPdDuDR9deR11XzP4vFu3TYzfnIyiSVmgizUYGqkIXNdKTY9pgb9D2Ix5t0+NHkVzCdU03suWkkVZAoCONCn0T35gAeW38de43mf97sMOpSvj4aa1KYUm58USI7Wxxes03bAZdRzk6UtbzMaCQ6IxO0dy7X+XsjoD16hpsBeGz9dfzHj+R/Hp8nCxZRqkEDTaCKCSywjiaoMJ1TITE9eg7Jqnq8HL6gDwiZb0u0V0Rr/rmvqjxKuaLCX7ZWXTvAY+uvm3z8CP7nzVpngqrJpZKwWnCUjIviYVlirlGOzPLI3SMVyp/elvBUjjDkNhrtufFFErQ8pmdSlbK16toBHlt/HV8uHMX/vEGALkV3RJREiSlopxwdMXOZPLZ+ix+kAHpMKIk8UtE1ygtquttwxNhphrIZ1IBzjGF3IIGxGcBj6q8bHJBG8T9vdsoWrTFEuebEZuVxhhClH6P5Zo89OG9fwHNjtNQTpD0TG9PJLEYqvEY6Rlxy+ZZGfL0Aj62/bnQCXp//eeM4KzfQVJbgMQbUjlMFIm6TpcfWlZje7NBSV6IsEVmumWIbjiloUzQX9OzYdo8L1wjw2PrrpimONfmfNyzKklrgnEkSzT5QWYQW40YShyzqsRmMXbvVxKtGuYyMKaU1ugenLDm5Ily4iT14fP11Mx+xJv+zZ3MvnfdFqxU3a1W/FTB4m3Qfsyc1XUcdVhDeUDZXSFHHLQj/Y5jtC7ZqM0CXGwB4bP11i3LhOvzPGygYtiUBiwQV/4wFO0majijGsafHyRLu0yG6q35cL1rOpVxr2s5cM2jJYMCdc10Aj6q/blRpWJ//+dmm5psMl0KA2+AFRx9jMe2WbC4jQxnikd4DU8TwUjRVacgdlhmr3bpddzuJ9zXqr2xnxJfzP29RexdtjDVZqzkqa6PyvcojGrfkXiJ8SEtml/nYskicv0ivlxbqjemwUjMw5evdg8fUX9nOiC/lf94Q2i7MURk9nW1MSj5j8eAyV6y5CN2S6qbnw3vdA1Iwq+XOSCl663udN3IzLnrt+us25cI1+Z83SXQUldqQq0b5XOT17bGpLd6ssN1VMPf8c+jG8L3NeCnMdF+Ra3fRa9dft39/LuZ/3vwHoHrqGmQFafmiQw6eyzMxS05K4bL9uA+SKUQzCnSDkqOGokXyJvbgJ/BHI+qvY69//4rl20NsmK2ou2dTsyIALv/91/8n3P2Aao71WFGi8KKv1fRC5+J67Q/507/E/SOshqN5TsmYIjVt+kcjAx98iz/4SaojbIV1rexE7/C29HcYD/DX4a0rBOF5VTu7omsb11L/AWcVlcVZHSsqGuXLLp9ha8I//w3Mv+T4Ew7nTBsmgapoCrNFObIcN4pf/Ob/mrvHTGqqgAupL8qWjWPS9m/31jAe4DjA+4+uCoQoT/zOzlrNd3qd4SdphFxsUvYwGWbTWtISc3wNOWH+kHBMfc6kpmpwPgHWwqaSUG2ZWWheYOGQGaHB+eQ/kn6b3pOgLV+ODSn94wDvr8Bvb70/LLuiPPEr8OGVWfDmr45PZyccEmsVXZGe1pRNX9SU5+AVQkNTIVPCHF/jGmyDC9j4R9LfWcQvfiETmgMMUCMN1uNCakkweZsowdYobiMSlnKA93u7NzTXlSfe+SVbfnPQXmg9LpYAQxpwEtONyEyaueWM4FPjjyjG3uOaFmBTWDNgBXGEiQpsaWhnAqIijB07Dlsy3fUGeP989xbWkyf+FF2SNEtT1E0f4DYYVlxFlbaSMPIRMk/3iMU5pME2SIWJvjckciebkQuIRRyhUvkHg/iUljG5kzVog5hV7vIlCuBrmlhvgPfNHQM8lCf+FEGsYbMIBC0qC9a0uuy2wLXVbLBaP5kjHokCRxapkQyzI4QEcwgYHRZBp+XEFTqXFuNVzMtjXLJgX4gAid24Hjwc4N3dtVSe+NNiwTrzH4WVUOlDobUqr1FuAgYllc8pmzoVrELRHSIW8ViPxNy4xwjBpyR55I6J220qQTZYR4guvUICJiSpr9gFFle4RcF/OMB7BRiX8sSfhpNSO3lvEZCQfLUVTKT78Ek1LRLhWN+yLyTnp8qWUZ46b6vxdRGXfHVqx3eI75YaLa4iNNiK4NOW7wPW6lhbSOF9/M9qw8e/aoB3d156qTzxp8pXx5BKAsYSTOIIiPkp68GmTq7sZtvyzBQaRLNxIZ+paozHWoLFeExIhRBrWitHCAHrCF7/thhD8JhYz84wg93QRV88wLuLY8zF8sQ36qF1J455bOlgnELfshKVxYOXKVuKx0jaj22sczTQqPqtV/XDgpswmGTWWMSDw3ssyUunLLrVPGjYRsH5ggHeHSWiV8kT33ycFSfMgkoOK8apCye0J6VW6GOYvffgU9RWsukEi2kUV2nl4dOYUzRik9p7bcA4ggdJ53LxKcEe17B1R8eqAd7dOepV8sTXf5lhejoL85hUdhDdknPtKHFhljOT+bdq0hxbm35p2nc8+Ja1Iw+tJykgp0EWuAAZYwMVwac5KzYMslhvgHdHRrxKnvhTYcfKsxTxtTETkjHO7rr3zjoV25lAQHrqpV7bTiy2aXMmUhTBnKS91jhtR3GEoF0oLnWhWNnYgtcc4N0FxlcgT7yz3TgNIKkscx9jtV1ZKpWW+Ub1tc1eOv5ucdgpx+FJy9pgbLE7xDyXb/f+hLHVGeitHOi6A7ybo3sF8sS7w7cgdk0nJaOn3hLj3uyD0Zp5pazFIUXUpuTTU18d1EPkDoX8SkmWTnVIozEdbTcZjoqxhNHf1JrSS/AcvHjZ/SMHhL/7i5z+POsTUh/8BvNfYMTA8n+yU/MlTZxSJDRStqvEuLQKWwDctMTQogUDyQRoTQG5Kc6oQRE1yV1jCA7ri7jdZyK0sYTRjCR0Hnnd+y7nHxNgTULqw+8wj0mQKxpYvhjm9uSUxg+TTy7s2GtLUGcywhXSKZN275GsqlclX90J6bRI1aouxmgL7Q0Nen5ziM80SqMIo8cSOo+8XplT/5DHNWsSUr/6lLN/QQ3rDyzLruEW5enpf7KqZoShEduuSFOV7DLX7Ye+GmXb6/hnNNqKsVXuMDFpb9Y9eH3C6NGEzuOuI3gpMH/I6e+zDiH1fXi15t3vA1czsLws0TGEtmPEJdiiFPwlwKbgLHAFk4P6ZyPdymYYHGE0dutsChQBl2JcBFlrEkY/N5bQeXQ18gjunuMfMfsBlxJSx3niO485fwO4fGD5T/+3fPQqkneWVdwnw/3bMPkW9Wbqg+iC765Zk+xcT98ibKZc2EdgHcLoF8cSOo/Oc8fS+OyEULF4g4sJqXVcmfMfsc7A8v1/yfGXmL9I6Fn5pRwZhsPv0TxFNlAfZCvG+Oohi82UC5f/2IsJo0cTOm9YrDoKhFPEUr/LBYTUNht9zelHXDqwfPCIw4owp3mOcIQcLttWXFe3VZ/j5H3cIc0G6oPbCR+6Y2xF2EC5cGUm6wKC5tGEzhsWqw5hNidUiKX5gFWE1GXh4/Qplw4sVzOmx9QxU78g3EF6wnZlEN4FzJ1QPSLEZz1KfXC7vd8ssGdIbNUYpVx4UapyFUHzJoTOo1McSkeNn1M5MDQfs4qQuhhX5vQZFw8suwWTcyYTgioISk2YdmkhehG4PkE7w51inyAGGaU+uCXADabGzJR1fn3lwkty0asIo8cROm9Vy1g0yDxxtPvHDAmpu+PKnM8Ix1wwsGw91YJqhteaWgjYBmmQiebmSpwKKzE19hx7jkzSWOm66oPbzZ8Yj6kxVSpYjVAuvLzYMCRo3oTQecOOjjgi3NQ4l9K5/hOGhNTdcWVOTrlgYNkEXINbpCkBRyqhp+LdRB3g0OU6rMfW2HPCFFMV9nSp+uB2woepdbLBuJQyaw/ZFysXrlXwHxI0b0LovEkiOpXGA1Ijagf+KUNC6rKNa9bQnLFqYNkEnMc1uJrg2u64ELPBHpkgWbmwKpJoDhMwNbbGzAp7Yg31wS2T5rGtzit59PrKhesWG550CZpHEzpv2NGRaxlNjbMqpmEIzygJqQfjypycs2pg2cS2RY9r8HUqkqdEgKTWtWTKoRvOBPDYBltja2SO0RGjy9UHtxwRjA11ujbKF+ti5cIR9eCnxUg6owidtyoU5tK4NLji5Q3HCtiyF2IqLGYsHViOXTXOYxucDqG0HyttqYAKqYo3KTY1ekyDXRAm2AWh9JmsVh/ccg9WJ2E8YjG201sPq5ULxxX8n3XLXuMInbft2mk80rRGjCGctJ8/GFdmEQ9Ug4FlE1ll1Y7jtiraqm5Fe04VV8lvSVBL8hiPrfFVd8+7QH3Qbu2ipTVi8cvSGivc9cj8yvH11YMHdNSERtuOslM97feYFOPKzGcsI4zW0YGAbTAOaxCnxdfiYUmVWslxiIblCeAYr9VYR1gM7GmoPrilunSxxeT3DN/2eBQ9H11+nk1adn6VK71+5+Jfct4/el10/7KBZfNryUunWSCPxPECk1rdOv1WVSrQmpC+Tl46YD3ikQYcpunSQgzVB2VHFhxHVGKDgMEY5GLlQnP7FMDzw7IacAWnO6sBr12u+XanW2AO0wQ8pknnFhsL7KYIqhkEPmEXFkwaN5KQphbkUmG72wgw7WSm9RiL9QT925hkjiVIIhphFS9HKI6/8QAjlpXqg9W2C0apyaVDwKQwrwLY3j6ADR13ZyUNByQXHQu6RY09Hu6zMqXRaNZGS/KEJs0cJEe9VH1QdvBSJv9h09eiRmy0V2uJcqHcShcdvbSNg5fxkenkVprXM9rDVnX24/y9MVtncvbKY706anNl3ASll9a43UiacVquXGhvq4s2FP62NGKfQLIQYu9q1WmdMfmUrDGt8eDS0cXozH/fjmUH6Jruvm50hBDSaEU/2Ru2LEN/dl006TSc/g7tfJERxGMsgDUEr104pfWH9lQaN+M4KWQjwZbVc2rZVNHsyHal23wZtIs2JJqtIc/WLXXRFCpJkfE9jvWlfFbsNQ9pP5ZBS0zKh4R0aMFj1IjTcTnvi0Zz2rt7NdvQb2mgbju1plsH8MmbnEk7KbK0b+wC2iy3aX3szW8xeZvDwET6hWZYwqTXSSG+wMETKum0Dq/q+x62gt2ua2ppAo309TRk9TPazfV3qL9H8z7uhGqGqxNVg/FKx0HBl9OVUORn8Q8Jx9gFttGQUDr3tzcXX9xGgN0EpzN9mdZ3GATtPhL+CjxFDmkeEU6x56kqZRusLzALXVqkCN7zMEcqwjmywDQ6OhyUe0Xao1Qpyncrg6wKp9XfWDsaZplElvQ/b3sdweeghorwBDlHzgk1JmMc/wiERICVy2VJFdMjFuLQSp3S0W3+sngt2njwNgLssFGVQdJ0tu0KH4ky1LW4yrbkuaA6Iy9oz/qEMMXMMDWyIHhsAyFZc2peV9hc7kiKvfULxCl9iddfRK1f8kk9qvbdOoBtOg7ZkOZ5MsGrSHsokgLXUp9y88smniwWyuFSIRVmjplga3yD8Uij5QS1ZiM4U3Qw5QlSm2bXjFe6jzzBFtpg+/YBbLAWG7OPynNjlCw65fukGNdkJRf7yM1fOxVzbxOJVocFoYIaGwH22mIQkrvu1E2nGuebxIgW9U9TSiukPGU+Lt++c3DJPKhyhEEbXCQLUpae2exiKy6tMPe9mDRBFCEMTWrtwxN8qvuGnt6MoihKWS5NSyBhbH8StXoAz8PLOrRgLtOT/+4vcu+7vDLnqNvztOq7fmd8sMmY9Xzn1zj8Dq8+XVdu2Nv0IIySgEdQo3xVHps3Q5i3fLFsV4aiqzAiBhbgMDEd1uh8qZZ+lwhjkgokkOIv4xNJmyncdfUUzgB4oFMBtiu71Xumpz/P+cfUP+SlwFExwWW62r7b+LSPxqxn/gvMZ5z9C16t15UbNlq+jbGJtco7p8wbYlL4alSyfWdeuu0j7JA3JFNuVAwtst7F7FhWBbPFNKIUORndWtLraFLmMu7KFVDDOzqkeaiN33YAW/r76wR4XDN/yN1z7hejPau06EddkS/6XThfcz1fI/4K736fO48vlxt2PXJYFaeUkFS8U15XE3428xdtn2kc8GQlf1vkIaNRRnOMvLTWrZbElEHeLWi1o0dlKPAh1MVgbbVquPJ5+Cr8LU5/H/+I2QlHIU2ClXM9G8v7Rr7oc/hozfUUgsPnb3D+I+7WF8kNO92GY0SNvuxiE+2Bt8prVJTkzE64sfOstxuwfxUUoyk8VjcTlsqe2qITSFoSj6Epd4KsT6BZOWmtgE3hBfir8IzZDwgV4ZTZvD8VvPHERo8v+vL1DASHTz/i9OlKueHDjK5Rnx/JB1Vb1ioXdBra16dmt7dgik10yA/FwJSVY6XjA3oy4SqM2frqDPPSRMex9qs3XQtoWxMj7/Er8GWYsXgjaVz4OYumP2+9kbxvny/6kvWsEBw+fcb5bInc8APdhpOSs01tEqIkoiZjbAqKMruLbJYddHuHFRIyJcbdEdbl2sVLaySygunutBg96Y2/JjKRCdyHV+AEFtTvIpbKIXOamknYSiB6KV/0JetZITgcjjk5ZdaskBtWO86UF0ap6ozGXJk2WNiRUlCPFir66lzdm/SLSuK7EUdPz8f1z29Skq6F1fXg8+5UVR6bszncP4Tn4KUkkdJ8UFCY1zR1i8RmL/qQL3rlei4THG7OODlnKko4oI01kd3CaM08Ia18kC3GNoVaO9iDh+hWxSyTXFABXoau7Q6q9OxYg/OVEMw6jdbtSrJ9cBcewGmaZmg+bvkUnUUaGr+ZfnMH45Ivevl61hMcXsxYLFTu1hTm2zViCp7u0o5l+2PSUh9bDj6FgYypufBDhqK2+oXkiuHFHR3zfj+9PtA8oR0xnqX8qn+sx3bFODSbbF0X8EUvWQ8jBIcjo5bRmLOljDNtcqNtOe756h3l0VhKa9hDd2l1eqmsnh0MNMT/Cqnx6BInumhLT8luljzQ53RiJeA/0dxe5NK0o2fA1+GLXr6eNQWHNUOJssQaTRlGpLHKL9fD+IrQzTOMZS9fNQD4AnRNVxvTdjC+fJdcDDWQcyB00B0t9BDwTxXgaAfzDZ/DBXzRnfWMFRwuNqocOmX6OKNkY63h5n/fFcB28McVHqnXZVI27K0i4rDLNE9lDKV/rT+udVbD8dFFu2GGZ8mOt0kAXcoX3ZkIWVtw+MNf5NjR2FbivROHmhV1/pj2egv/fMGIOWTIWrV3Av8N9imV9IWml36H6cUjqEWNv9aNc+veb2sH46PRaHSuMBxvtW+twxctq0z+QsHhux8Q7rCY4Ct8lqsx7c6Sy0dl5T89rIeEuZKoVctIk1hNpfavER6yyH1Vvm3MbsUHy4ab4hWr/OZPcsRBphnaV65/ZcdYPNNwsjN/djlf9NqCw9U5ExCPcdhKxUgLSmfROpLp4WSUr8ojdwbncbvCf+a/YzRaEc6QOvXcGO256TXc5Lab9POvB+AWY7PigWYjzhifbovuunzRawsO24ZqQQAqguBtmpmPB7ysXJfyDDaV/aPGillgz1MdQg4u5MYaEtBNNHFjkRlSpd65lp4hd2AVPTfbV7FGpyIOfmNc/XVsPfg7vzaS/3nkvLL593ANLvMuRMGpQIhiF7kUEW9QDpAUbTWYBcbp4WpacHHY1aacqQyjGZS9HI3yCBT9kUZJhVOD+zUDvEH9ddR11fzPcTDQ5TlgB0KwqdXSavk9BC0pKp0WmcuowSw07VXmXC5guzSa4p0UvRw2lbDiYUx0ExJJRzWzi6Gm8cnEkfXXsdcG/M/jAJa0+bmCgdmQ9CYlNlSYZOKixmRsgiFxkrmW4l3KdFKv1DM8tk6WxPYJZhUUzcd8Kdtgrw/gkfXXDT7+avmfVak32qhtkg6NVdUS5wgkru1YzIkSduTW1FDwVWV3JQVJVuieTc0y4iDpFwc7/BvSalvKdQM8sv662cevz/+8sQVnjVAT0W2wLllw1JiMhJRxgDjCjLQsOzSFSgZqx7lAW1JW0e03yAD3asC+GD3NbQhbe+mN5GXH1F83KDOM4n/e5JIuH4NpdQARrFPBVptUNcjj4cVMcFSRTE2NpR1LEYbYMmfWpXgP9KejaPsLUhuvLCsVXznAG9dfx9SR1ud/3hZdCLHb1GMdPqRJgqDmm76mHbvOXDtiO2QPUcKo/TWkQ0i2JFXpBoo7vij1i1Lp3ADAo+qvG3V0rM//vFnnTE4hxd5Ka/Cor5YEdsLVJyKtDgVoHgtW11pWSjolPNMnrlrVj9Fv2Qn60twMwKPqr+N/wvr8z5tZcDsDrv06tkqyzESM85Ycv6XBWA2birlNCXrI6VbD2lx2L0vQO0QVTVVLH4SE67fgsfVXv8n7sz7/85Z7cMtbE6f088wSaR4kCkCm10s6pKbJhfqiUNGLq+0gLWC6eUAZFPnLjwqtKd8EwGvWX59t7iPW4X/eAN1svgRVSY990YZg06BD1ohLMtyFTI4pKTJsS9xREq9EOaPWiO2gpms7397x6nQJkbh+Fz2q/rqRROX6/M8bJrqlVW4l6JEptKeUFuMYUbtCQ7CIttpGc6MY93x1r1vgAnRXvY5cvwWPqb9uWQm+lP95QxdNMeWhOq1x0Db55C7GcUv2ZUuN6n8iKzsvOxibC//Yfs9Na8r2Rlz02vXXDT57FP/zJi66/EJSmsJKa8QxnoqW3VLQ+jZVUtJwJ8PNX1NQCwfNgdhhHD9on7PdRdrdGPF28rJr1F+3LBdeyv+8yYfLoMYet1vX4upNAjVvwOUWnlNXJXlkzk5Il6kqeoiL0C07qno+/CYBXq/+utlnsz7/Mzvy0tmI4zm4ag23PRN3t/CWryoUVJGm+5+K8RJ0V8Hc88/XHUX/HfiAq7t+BH+x6v8t438enWmdJwFA6ZINriLGKv/95f8lT9/FnyA1NMVEvQyaXuu+gz36f/DD73E4pwqpLcvm/o0Vle78n//+L/NPvoefp1pTJye6e4A/D082FERa5/opeH9zpvh13cNm19/4v/LDe5xMWTi8I0Ta0qKlK27AS/v3/r+/x/2GO9K2c7kVMonDpq7//jc5PKCxeNPpFVzaRr01wF8C4Pu76hXuX18H4LduTr79guuFD3n5BHfI+ZRFhY8w29TYhbbLi/bvBdqKE4fUgg1pBKnV3FEaCWOWyA+m3WpORZr/j+9TKJtW8yBTF2/ZEODI9/QavHkVdGFp/Pjn4Q+u5hXapsP5sOH+OXXA1LiKuqJxiMNbhTkbdJTCy4llEt6NnqRT4dhg1V3nbdrm6dYMecA1yTOL4PWTE9L5VzPFlLBCvlG58AhehnN4uHsAYinyJ+AZ/NkVvELbfOBUuOO5syBIEtiqHU1k9XeISX5bsimrkUUhnGDxourN8SgUsCZVtKyGbyGzHXdjOhsAvOAswSRyIBddRdEZWP6GZhNK/yjwew9ehBo+3jEADu7Ay2n8mDc+TS7awUHg0OMzR0LABhqLD4hJEh/BEGyBdGlSJoXYXtr+3HS4ijzVpgi0paWXtdruGTknXBz+11qT1Q2inxaTzQCO46P3lfLpyS4fou2PH/PupwZgCxNhGlj4IvUuWEsTkqMWm6i4xCSMc9N1RDQoCVcuGItJ/MRWefais+3synowi/dESgJjkilnWnBTGvRWmaw8oR15257t7CHmCf8HOn7cwI8+NQBXMBEmAa8PMRemrNCEhLGEhDQKcGZWS319BX9PFBEwGTbRBhLbDcaV3drFcDqk5kCTd2JF1Wp0HraqBx8U0wwBTnbpCadwBA/gTH/CDrcCs93LV8E0YlmmcyQRQnjBa8JESmGUfIjK/7fkaDJpmD2QptFNVJU1bbtIAjjWQizepOKptRjbzR9Kag6xZmMLLjHOtcLT3Tx9o/0EcTT1XN3E45u24AiwEypDJXihKjQxjLprEwcmRKclaDNZCVqr/V8mYWyFADbusiY5hvgFoU2vio49RgJLn5OsReRFN6tabeetiiy0V7KFHT3HyZLx491u95sn4K1QQSPKM9hNT0wMVvAWbzDSVdrKw4zRjZMyJIHkfq1VAVCDl/bUhNKlGq0zGr05+YAceXVPCttVk0oqjVwMPt+BBefx4yPtGVkUsqY3CHDPiCM5ngupUwCdbkpd8kbPrCWHhkmtIKLEetF2499eS1jZlIPGYnlcPXeM2KD9vLS0bW3ktYNqUllpKLn5ZrsxlIzxvDu5eHxzGLctkZLEY4PgSOg2IUVVcUONzUDBEpRaMoXNmUc0tFZrTZquiLyKxrSm3DvIW9Fil+AkhXu5PhEPx9mUNwqypDvZWdKlhIJQY7vn2OsnmBeOWnYZ0m1iwbbw1U60by5om47iHRV6fOgzjMf/DAZrlP40Z7syxpLK0lJ0gqaAK1c2KQKu7tabTXkLFz0sCftuwX++MyNeNn68k5Buq23YQhUh0SNTJa1ioQ0p4nUG2y0XilF1JqODqdImloPS4Bp111DEWT0jJjVv95uX9BBV7eB3bUWcu0acSVM23YZdd8R8UbQUxJ9wdu3oMuhdt929ME+mh6JXJ8di2RxbTi6TbrDquqV4aUKR2iwT6aZbyOwEXN3DUsWr8Hn4EhwNyHuXHh7/pdaUjtR7vnDh/d8c9xD/s5f501eQ1+CuDiCvGhk1AN/4Tf74RfxPwD3toLarR0zNtsnPzmS64KIRk861dMWCU8ArasG9T9H0ZBpsDGnjtAOM2+/LuIb2iIUGXNgl5ZmKD/Tw8TlaAuihaFP5yrw18v4x1898zIdP+DDAX1bM3GAMvPgRP/cJn3zCW013nrhHkrITyvYuwOUkcHuKlRSW5C6rzIdY4ppnF7J8aAJbQepgbJYBjCY9usGXDKQxq7RZfh9eg5d1UHMVATRaD/4BHK93/1iAgYZ/+jqPn8Dn4UExmWrpa3+ZOK6MvM3bjwfzxNWA2dhs8+51XHSPJiaAhGSpWevEs5xHLXcEGFXYiCONySH3fPWq93JIsBiSWvWyc3CAN+EcXoT7rCSANloPPoa31rt/5PUA/gp8Q/jDD3hyrjzlR8VkanfOvB1XPubt17vzxAfdSVbD1pzAnfgyF3ycadOTOTXhpEUoLC1HZyNGW3dtmjeXgr2r56JNmRwdNNWaQVBddd6rh4MhviEB9EFRD/7RGvePvCbwAL4Mx/D6M541hHO4D3e7g6PafdcZVw689z7NGTwo5om7A8sPhccT6qKcl9NJl9aM/9kX+e59Hh1yPqGuCCZxuITcsmNaJ5F7d0q6J3H48TO1/+M57085q2icdu2U+W36Ldllz9Agiv4YGljoEN908EzvDOrBF98/vtJwCC/BF2AG75xxEmjmMIcjxbjoaxqOK3/4hPOZzhMPBpYPG44CM0dTVm1LjLtUWWVz1Bcf8tEx0zs8O2A2YVHRxKYOiy/aOVoAaMu0i7ubu43njjmd4ibMHU1sIDHaQNKrZND/FZYdk54oCXetjq7E7IVl9eAL7t+oHnwXXtLx44czzoRFHBztYVwtH1d+NOMkupZ5MTM+gUmq90X+Bh9zjRlmaQ+m7YMqUL/veemcecAtOJ0yq1JnVlN27di2E0+Klp1tAJ4KRw1eMI7aJjsO3R8kPSI3fUFXnIOfdQe86sIIVtWDL7h//Ok6vj8vwDk08NEcI8zz7OhBy+WwalzZeZ4+0XniRfst9pAJqQHDGLzVQ2pheZnnv1OWhwO43/AgcvAEXEVVpa4db9sGvNK8wjaENHkfFQ4Ci5i7dqnQlPoLQrHXZDvO3BIXZbJOBrOaEbML6sFL798I4FhKihjHMsPjBUZYCMFr6nvaArxqXPn4lCa+cHfSa2cP27g3Z3ziYTRrcbQNGLQmGF3F3cBdzzzX7AILx0IB9rbwn9kx2G1FW3Inic+ZLIsVvKR8Zwfj0l1fkqo8LWY1M3IX14OX3r9RKTIO+d9XzAI8qRPGPn/4NC2n6o4rN8XJ82TOIvuVA8zLKUHRFgBCetlDZlqR1gLKjS39xoE7Bt8UvA6BxuEDjU3tFsEijgA+615tmZkXKqiEENrh41iLDDZNq4pKTWR3LZfnos81LOuNa15cD956vLMsJd1rqYp51gDUQqMYm2XsxnUhD2jg1DM7SeuJxxgrmpfISSXVIJIS5qJJSvJPEQ49DQTVIbYWJ9QWa/E2+c/oPK1drmC7WSfJRNKBO5Yjvcp7Gc3dmmI/Xh1kDTEuiSnWqQf37h+fTMhGnDf6dsS8SQfQWlqqwXXGlc/PEZ/SC5mtzIV0nAshlQdM/LvUtYutrEZ/Y+EAFtq1k28zQhOwLr1AIeANzhF8t9qzTdZf2qRKO6MWE9ohBYwibbOmrFtNmg3mcS+tB28xv2uKd/agYCvOP+GkSc+0lr7RXzyufL7QbkUpjLjEWFLqOIkAGu2B0tNlO9Eau2W1qcOUvVRgKzypKIQZ5KI3q0MLzqTNRYqiZOqmtqloIRlmkBHVpHmRYV6/HixbO6UC47KOFJnoMrVyr7wYz+SlW6GUaghYbY1I6kkxA2W1fSJokUdSh2LQ1GAimRGm0MT+uu57H5l7QgOWxERpO9moLRPgTtquWCfFlGlIjQaRly9odmzMOWY+IBO5tB4sW/0+VWGUh32qYk79EidWKrjWuiLpiVNGFWFRJVktyeXWmbgBBzVl8anPuXyNJlBJOlKLTgAbi/EYHVHxWiDaVR06GnHQNpJcWcK2jJtiCfG2sEHLzuI66sGrMK47nPIInPnu799935aOK2cvmvubrE38ZzZjrELCmXM2hM7UcpXD2oC3+ECVp7xtIuxptJ0jUr3sBmBS47TVxlvJ1Sqb/E0uLdvLj0lLr29ypdd/eMX3f6lrxGlKwKQxEGvw0qHbkbwrF3uHKwVENbIV2wZ13kNEF6zD+x24aLNMfDTCbDPnEikZFyTNttxWBXDaBuM8KtI2rmaMdUY7cXcUPstqTGvBGSrFWIpNMfbdea990bvAOC1YX0qbc6smDS1mPxSJoW4fwEXvjMmhlijDRq6qale6aJEuFGoppYDoBELQzLBuh/mZNx7jkinv0EtnUp50lO9hbNK57lZaMAWuWR5Yo9/kYwcYI0t4gWM47Umnl3YmpeBPqSyNp3K7s2DSAS/39KRuEN2bS4xvowV3dFRMx/VFcp2Yp8w2nTO9hCXtHG1kF1L4KlrJr2wKfyq77R7MKpFKzWlY9UkhYxyHWW6nBWPaudvEAl3CGcNpSXPZ6R9BbBtIl6cHL3gIBi+42CYXqCx1gfGWe7Ap0h3luyXdt1MKy4YUT9xSF01G16YEdWsouW9mgDHd3veyA97H+Ya47ZmEbqMY72oPztCGvK0onL44AvgC49saZKkWRz4veWljE1FHjbRJaWv6ZKKtl875h4CziFCZhG5rx7tefsl0aRT1bMHZjm8dwL/6u7wCRysaQblQoG5yAQN5zpatMNY/+yf8z+GLcH/Qn0iX2W2oEfXP4GvwQHuIL9AYGnaO3zqAX6946nkgqZNnUhx43DIdQtMFeOPrgy/y3Yd85HlJWwjLFkU3kFwq28xPnuPhMWeS+tDLV9Otllq7pQCf3uXJDN9wFDiUTgefHaiYbdfi3b3u8+iY6TnzhgehI1LTe8lcd7s1wJSzKbahCRxKKztTLXstGAiu3a6rPuQs5pk9TWAan5f0BZmGf7Ylxzzk/A7PAs4QPPPAHeFQ2hbFHszlgZuKZsJcUmbDC40sEU403cEjczstOEypa+YxevL4QBC8oRYqWdK6b7sK25tfE+oDZgtOQ2Jg8T41HGcBE6fTWHn4JtHcu9S7uYgU5KSCkl/mcnq+5/YBXOEr6lCUCwOTOM1taOI8mSxx1NsCXBEmLKbMAg5MkwbLmpBaFOPrNSlO2HnLiEqW3tHEwd8AeiQLmn+2gxjC3k6AxREqvKcJbTEzlpLiw4rNZK6oJdidbMMGX9FULKr0AkW+2qDEPBNNm5QAt2Ik2nftNWHetubosHLo2nG4vQA7GkcVCgVCgaDixHqo9UUn1A6OshapaNR/LPRYFV8siT1cCtJE0k/3WtaNSuUZYKPnsVIW0xXWnMUxq5+En4Kvw/MqQmVXnAXj9Z+9zM98zM/Agy7F/qqj2Nh67b8HjFnPP3iBn/tkpdzwEJX/whIcQUXOaikeliCRGUk7tiwF0rItwMEhjkZ309hikFoRAmLTpEXWuHS6y+am/KB/fM50aLEhGnSMwkpxzOov4H0AvgovwJ1iGzDLtJn/9BU+fAINfwUe6FHSLhu83viV/+/HrOePX+STT2B9uWGbrMHHLldRBlhS/CJQmcRxJFqZica01XixAZsYiH1uolZxLrR/SgxVIJjkpQP4PE9sE59LKLr7kltSBogS5tyszzH8Fvw8/AS8rNOg0xUS9fIaHwb+6et8Q/gyvKRjf5OusOzGx8evA/BP4IP11uN/grca5O0lcsPLJ5YjwI4QkJBOHa0WdMZYGxPbh2W2nR9v3WxEWqgp/G3+6VZbRLSAAZ3BhdhAaUL33VUSw9yjEsvbaQ9u4A/gGXwZXoEHOuU1GSj2chf+Mo+f8IcfcAxfIKVmyunRbYQVnoevwgfw3TXXcw++xNuP4fhyueEUNttEduRVaDttddoP0eSxLe2LENk6itYxlrxBNBYrNNKSQmeaLcm9c8UsaB5WyO6675yyQIAWSDpBVoA/gxmcwEvwoDv0m58UE7gHn+fJOa8/Ywan8EKRfjsopF83eCglX/Sfr7OeaRoQfvt1CGvIDccH5BCvw1sWIzRGC/66t0VTcLZQZtm6PlAasbOJ9iwWtUo7biktTSIPxnR24jxP1ZKaqq+2RcXM9OrBAm/AAs7hDJ5bNmGb+KIfwCs8a3jnjBrOFeMjHSCdbKr+2uOLfnOd9eiA8Hvvwwq54VbP2OqwkB48Ytc4YEOiH2vTXqodabfWEOzso4qxdbqD5L6tbtNPECqbhnA708DZH4QOJUXqScmUlks7Ot6FBuZw3n2mEbaUX7kDzxHOOQk8nKWMzAzu6ZZ8sOFw4RK+6PcuXo9tB4SbMz58ApfKDXf3szjNIIbGpD5TKTRxGkEMLjLl+K3wlWXBsCUxIDU+jbOiysESqAy1MGUJpXgwbTWzNOVEziIXZrJ+VIztl1PUBxTSo0dwn2bOmfDRPD3TRTGlfbCJvO9KvuhL1hMHhB9wPuPRLGHcdOWG2xc0U+5bQtAJT0nRTewXL1pgk2+rZAdeWmz3jxAqfNQQdzTlbF8uJ5ecEIWvTkevAHpwz7w78QujlD/Lr491bD8/1vhM2yrUQRrWXNQY4fGilfctMWYjL72UL/qS9eiA8EmN88nbNdour+PBbbAjOjIa4iBhfFg6rxeKdEGcL6p3EWR1Qq2Qkhs2DrnkRnmN9tG2EAqmgPw6hoL7Oza7B+3SCrR9tRftko+Lsf2F/mkTndN2LmzuMcKTuj/mX2+4Va3ki16+nnJY+S7MefpkidxwnV+4wkXH8TKnX0tsYzYp29DOOoSW1nf7nTh2akYiWmcJOuTidSaqESrTYpwjJJNVGQr+rLI7WsqerHW6Kp/oM2pKuV7T1QY9gjqlZp41/WfKpl56FV/0kvXQFRyeQ83xaTu5E8p5dNP3dUF34ihyI3GSpeCsywSh22ZJdWto9winhqifb7VRvgktxp13vyjrS0EjvrRfZ62uyqddSWaWYlwTPAtJZ2oZ3j/Sgi/mi+6vpzesfAcWNA0n8xVyw90GVFGuZjTXEQy+6GfLGLMLL523f5E0OmxVjDoOuRiH91RKU+vtoCtH7TgmvBLvtFXWLW15H9GTdVw8ow4IlRLeHECN9ym1e9K0I+Cbnhgv4Yu+aD2HaQJ80XDqOzSGAV4+4yCqBxrsJAX6ZTIoX36QnvzhhzzMfFW2dZVLOJfo0zbce5OvwXMFaZ81mOnlTVXpDZsQNuoYWveketKb5+6JOOsgX+NTm7H49fUTlx+WLuWL7qxnOFh4BxpmJx0p2gDzA/BUARuS6phR+pUsY7MMboAHx5xNsSVfVZcYSwqCKrqon7zM+8ecCkeS4nm3rINuaWvVNnMRI1IRpxTqx8PZUZ0Br/UEduo3B3hNvmgZfs9gQPj8vIOxd2kndir3awvJ6BLvoUuOfFWNYB0LR1OQJoUySKb9IlOBx74q1+ADC2G6rOdmFdJcD8BkfualA+BdjOOzP9uUhGUEX/TwhZsUduwRr8wNuXKurCixLBgpQI0mDbJr9dIqUuV+92ngkJZ7xduCk2yZKbfWrH1VBiTg9VdzsgRjW3CVXCvAwDd+c1z9dWw9+B+8MJL/eY15ZQ/HqvTwVdsZn5WQsgRRnMaWaecu3jFvMBEmgg+FJFZsnSl0zjB9OqPYaBD7qmoVyImFvzi41usesV0julaAR9dfR15Xzv9sEruRDyk1nb+QaLU67T885GTls6YgcY+UiMa25M/pwGrbCfzkvR3e0jjtuaFtnwuagHTSb5y7boBH119HXhvwP487jJLsLJ4XnUkHX5sLbS61dpiAXRoZSCrFJ+EjpeU3puVfitngYNo6PJrAigKktmwjyQdZpfq30mmtulaAx9Zfx15Xzv+cyeuiBFUs9zq8Kq+XB9a4PVvph3GV4E3y8HENJrN55H1X2p8VyqSKwVusJDKzXOZzplWdzBUFK9e+B4+uv468xvI/b5xtSAkBHQaPvtqWzllVvEOxPbuiE6+j2pvjcKsbvI7txnRErgfH7LdXqjq0IokKzga14GzQ23SSbCQvO6r+Or7SMIr/efOkkqSdMnj9mBx2DRsiY29Uj6+qK9ZrssCKaptR6HKURdwUYeUWA2kPzVKQO8ku2nU3Anhs/XWkBx3F/7wJtCTTTIKftthue1ty9xvNYLY/zo5KSbIuKbXpbEdSyeRyYdAIwKY2neyoc3+k1XUaufYga3T9daMUx/r8z1s10ITknIO0kuoMt+TB8jK0lpayqqjsJ2qtXAYwBU932zinimgmd6mTRDnQfr88q36NAI+tv24E8Pr8zxtasBqx0+xHH9HhlrwsxxNUfKOHQaZBITNf0uccj8GXiVmXAuPEAKSdN/4GLHhs/XWj92dN/uetNuBMnVR+XWDc25JLjo5Mg5IZIq226tmCsip2zZliL213YrTlL2hcFjpCduyim3M7/eB16q/blQsv5X/esDRbtJeabLIosWy3ycavwLhtxdWzbMmHiBTiVjJo6lCLjXZsi7p9PEPnsq6X6wd4bP11i0rD5fzPm/0A6brrIsllenZs0lCJlU4abakR59enZKrKe3BZihbTxlyZ2zl1+g0wvgmA166/bhwDrcn/7Ddz0eWZuJvfSESug6NzZsox3Z04FIxz0mUjMwVOOVTq1CQ0AhdbBGVdjG/CgsfUX7esJl3K/7ytWHRv683praW/8iDOCqWLLhpljDY1ZpzK75QiaZoOTpLKl60auHS/97oBXrv+umU9+FL+5+NtLFgjqVLCdbmj7pY5zPCPLOHNCwXGOcLquOhi8CmCWvbcuO73XmMUPab+ug3A6/A/78Bwe0bcS2+tgHn4J5pyS2WbOck0F51Vq3LcjhLvZ67p1ABbaL2H67bg78BfjKi/jr3+T/ABV3ilLmNXTI2SpvxWBtt6/Z//D0z/FXaGbSBgylzlsEGp+5//xrd4/ae4d8DUUjlslfIYS3t06HZpvfQtvv0N7AHWqtjP2pW08QD/FLy//da38vo8PNlKHf5y37Dxdfe/oj4kVIgFq3koLReSR76W/bx//n9k8jonZxzWTANVwEniDsg87sOSd/z7//PvMp3jQiptGVWFX2caezzAXwfgtzYUvbr0iozs32c3Uge7varH+CNE6cvEYmzbPZ9hMaYDdjK4V2iecf6EcEbdUDVUARda2KzO/JtCuDbNQB/iTeL0EG1JSO1jbXS+nLxtPMDPw1fh5+EPrgSEKE/8Gry5A73ui87AmxwdatyMEBCPNOCSKUeRZ2P6Myb5MRvgCHmA9ywsMifU+AYXcB6Xa5GibUC5TSyerxyh0j6QgLVpdyhfArRTTLqQjwe4HOD9s92D4Ap54odXAPBWLAwB02igG5Kkc+piN4lvODIFGAZgT+EO4Si1s7fjSR7vcQETUkRm9O+MXyo9OYhfe4xt9STQ2pcZRLayCV90b4D3jR0DYAfyxJ+eywg2IL7NTMXna7S/RpQ63JhWEM8U41ZyQGjwsVS0QBrEKLu8xwZsbi4wLcCT+OGidPIOCe1PiSc9Qt+go+vYqB7cG+B9d8cAD+WJPz0Am2gxXgU9IneOqDpAAXOsOltVuMzpdakJXrdPCzXiNVUpCeOos5cxnpQT39G+XVLhs1osQVvJKPZyNq8HDwd4d7pNDuWJPxVX7MSzqUDU6gfadKiNlUFTzLeFHHDlzO4kpa7aiKhBPGKwOqxsBAmYkOIpipyXcQSPlRTf+Tii0U3EJGaZsDER2qoB3h2hu0qe+NNwUooYU8y5mILbJe6OuX+2FTKy7bieTDAemaQyQ0CPthljSWO+xmFDIYiESjM5xKd6Ik5lvLq5GrQ3aCMLvmCA9wowLuWJb9xF59hVVP6O0CrBi3ZjZSNOvRy+I6klNVRJYRBaEzdN+imiUXQ8iVF8fsp+W4JXw7WISW7fDh7lptWkCwZ4d7QTXyBPfJMYK7SijjFppGnlIVJBJBYj7eUwtiP1IBXGI1XCsjNpbjENVpSAJ2hq2LTywEly3hUYazt31J8w2+aiLx3g3fohXixPfOMYm6zCGs9LVo9MoW3MCJE7R5u/WsOIjrqBoHUO0bJE9vxBpbhsd3+Nb4/vtPCZ4oZYCitNeYuC/8UDvDvy0qvkiW/cgqNqRyzqSZa/s0mqNGjtKOoTm14zZpUauiQgVfqtQiZjq7Q27JNaSK5ExRcrGCXO1FJYh6jR6CFqK7bZdQZ4t8g0rSlPfP1RdBtqaa9diqtzJkQ9duSryi2brQXbxDwbRUpFMBHjRj8+Nt7GDKgvph9okW7LX47gu0SpGnnFQ1S1lYldOsC7hYteR574ZuKs7Ei1lBsfdz7IZoxzzCVmmVqaSySzQbBVAWDek+N4jh9E/4VqZrJjPwiv9BC1XcvOWgO8275CVyBPvAtTVlDJfZkaZGU7NpqBogAj/xEHkeAuJihWYCxGN6e8+9JtSegFXF1TrhhLGP1fak3pebgPz192/8gB4d/6WT7+GdYnpH7hH/DJzzFiYPn/vjW0SgNpTNuPIZoAEZv8tlGw4+RLxy+ZjnKa5NdFoC7UaW0aduoYse6+bXg1DLg6UfRYwmhGEjqPvF75U558SANrElK/+MdpXvmqBpaXOa/MTZaa1DOcSiLaw9j0NNNst3c+63c7EKTpkvKHzu6bPbP0RkuHAVcbRY8ijP46MIbQeeT1mhA+5PV/inyDdQipf8LTvMXbwvoDy7IruDNVZKTfV4CTSRUYdybUCnGU7KUTDxLgCknqUm5aAW6/1p6eMsOYsphLzsHrE0Y/P5bQedx1F/4yPHnMB3/IOoTU9+BL8PhtjuFKBpZXnYNJxTuv+2XqolKR2UQgHhS5novuxVySJhBNRF3SoKK1XZbbXjVwWNyOjlqWJjrWJIy+P5bQedyldNScP+HZ61xKSK3jyrz+NiHG1hcOLL/+P+PDF2gOkekKGiNWKgJ+8Z/x8Iv4DdQHzcpZyF4v19I27w9/yPGDFQvmEpKtqv/TLiWMfn4sofMm9eAH8Ao0zzh7h4sJqYtxZd5/D7hkYPneDzl5idlzNHcIB0jVlQ+8ULzw/nc5/ojzl2juE0apD7LRnJxe04dMz2iOCFNtGFpTuXA5AhcTRo8mdN4kz30nVjEC4YTZQy4gpC7GlTlrePKhGsKKgeXpCYeO0MAd/GH7yKQUlXPLOasOH3FnSphjHuDvEu4gB8g66oNbtr6eMbFIA4fIBJkgayoXriw2XEDQPJrQeROAlY6aeYOcMf+IVYTU3XFlZufMHinGywaW3YLpObVBAsbjF4QJMsVUSayjk4voPsHJOQfPWDhCgDnmDl6XIRerD24HsGtw86RMHOLvVSHrKBdeVE26gKB5NKHzaIwLOmrqBWJYZDLhASG16c0Tn+CdRhWDgWXnqRZUTnPIHuMJTfLVpkoYy5CzylHVTGZMTwkGAo2HBlkQplrJX6U+uF1wZz2uwS1SQ12IqWaPuO4baZaEFBdukksJmkcTOm+YJSvoqPFzxFA/YUhIvWxcmSdPWTWwbAKVp6rxTtPFUZfKIwpzm4IoMfaYQLWgmlG5FME2gdBgm+J7J+rtS/XBbaVLsR7bpPQnpMFlo2doWaVceHk9+MkyguZNCJ1He+kuHTWyQAzNM5YSUg/GlTk9ZunAsg1qELVOhUSAK0LABIJHLKbqaEbHZLL1VA3VgqoiOKXYiS+HRyaEKgsfIqX64HYWbLRXy/qWoylIV9gudL1OWBNgBgTNmxA6b4txDT4gi3Ri7xFSLxtXpmmYnzAcWDZgY8d503LFogz5sbonDgkKcxGsWsE1OI+rcQtlgBBCSOKD1mtqYpIU8cTvBmAT0yZe+zUzeY92fYjTtGipXLhuR0ePoHk0ofNWBX+lo8Z7pAZDk8mEw5L7dVyZZoE/pTewbI6SNbiAL5xeygW4xPRuLCGbhcO4RIeTMFYHEJkYyEO9HmJfXMDEj/LaH781wHHZEtqSQ/69UnGpzH7LKIAZEDSPJnTesJTUa+rwTepI9dLJEawYV+ZkRn9g+QirD8vF8Mq0jFQ29js6kCS3E1+jZIhgPNanHdHFqFvPJLHqFwQqbIA4jhDxcNsOCCQLDomaL/dr5lyJaJU6FxPFjO3JOh3kVMcROo8u+C+jo05GjMF3P3/FuDLn5x2M04xXULPwaS6hBYki+MrMdZJSgPHlcB7nCR5bJ9Kr5ACUn9jk5kivdd8tk95SOGrtqu9lr2IhK65ZtEl7ZKrp7DrqwZfRUSN1el7+7NJxZbywOC8neNKTch5vsTEMNsoCCqHBCqIPRjIPkm0BjvFODGtto99rCl+d3wmHkW0FPdpZtC7MMcVtGFQjJLX5bdQ2+x9ypdc313uj8xlsrfuLgWXz1cRhZvJYX0iNVBRcVcmCXZs6aEf3RQF2WI/TcCbKmGU3IOoDJGDdDub0+hYckt6PlGu2BcxmhbTdj/klhccLGJMcqRjMJP1jW2ETqLSWJ/29MAoORluJ+6LPffBZbi5gqi5h6catQpmOT7/OFf5UorRpLzCqcMltBLhwd1are3kztrSzXO0LUbXRQcdLh/RdSZ+swRm819REDrtqzC4es6Gw4JCKlSnjYVpo0xeq33PrADbFLL3RuCmObVmPN+24kfa+AojDuM4umKe2QwCf6EN906HwjujaitDs5o0s1y+k3lgbT2W2i7FJdnwbLXhJUBq/9liTctSmFC/0OqUinb0QddTWamtjbHRFuWJJ6NpqZ8vO3fZJ37Db+2GkaPYLGHs7XTTdiFQJ68SkVJFVmY6McR5UycflNCsccHFaV9FNbR4NttLxw4pQ7wJd066Z0ohVbzihaxHVExd/ay04oxUKWt+AsdiQ9OUyZ2krzN19IZIwafSTFgIBnMV73ADj7V/K8u1MaY2sJp2HWm0f41tqwajEvdHWOJs510MaAqN4aoSiPCXtN2KSi46dUxHdaMquar82O1x5jqhDGvqmoE9LfxcY3zqA7/x3HA67r9ZG4O6Cuxu12/+TP+eLP+I+HErqDDCDVmBDO4larujNe7x8om2rMug0MX0rL1+IWwdwfR+p1TNTyNmVJ85ljWzbWuGv8/C7HD/izjkHNZNYlhZcUOKVzKFUxsxxN/kax+8zPWPSFKw80rJr9Tizyj3o1gEsdwgWGoxPezDdZ1TSENE1dLdNvuKL+I84nxKesZgxXVA1VA1OcL49dFlpFV5yJMhzyCmNQ+a4BqusPJ2bB+xo8V9u3x48VVIEPS/mc3DvAbXyoYr6VgDfh5do5hhHOCXMqBZUPhWYbWZECwVJljLgMUWOCB4MUuMaxGNUQDVI50TQ+S3kFgIcu2qKkNSHVoM0SHsgoZxP2d5HH8B9woOk4x5bPkKtAHucZsdykjxuIpbUrSILgrT8G7G5oCW+K0990o7E3T6AdW4TilH5kDjds+H64kS0mz24grtwlzDHBJqI8YJQExotPvoC4JBq0lEjjQkyBZ8oH2LnRsQ4Hu1QsgDTJbO8fQDnllitkxuVskoiKbRF9VwzMDvxHAdwB7mD9yCplhHFEyUWHx3WtwCbSMMTCUCcEmSGlg4gTXkHpZXWQ7kpznK3EmCHiXInqndkQjunG5kxTKEeGye7jWz9cyMR2mGiFQ15ENRBTbCp+Gh86vAyASdgmJq2MC6hoADQ3GosP0QHbnMHjyBQvQqfhy/BUbeHd5WY/G/9LK/8Ka8Jd7UFeNWEZvzPb458Dn8DGLOe3/wGL/4xP+HXlRt+M1PE2iLhR8t+lfgxsuh7AfO2AOf+owWhSZRYQbd622hbpKWKuU+XuvNzP0OseRDa+mObgDHJUSc/pKx31QdKffQ5OIJpt8GWjlgTwMc/w5MPCR/yl1XC2a2Yut54SvOtMev55Of45BOat9aWG27p2ZVORRvnEk1hqWMVUmqa7S2YtvlIpspuF1pt0syuZS2NV14mUidCSfzQzg+KqvIYCMljIx2YK2AO34fX4GWdu5xcIAb8MzTw+j/lyWM+Dw/gjs4GD6ehNgA48kX/AI7XXM/XAN4WHr+9ntywqoCakCqmKP0rmQrJJEErG2Upg1JObr01lKQy4jskWalKYfJ/EDLMpjNSHFEUAde2fltaDgmrNaWQ9+AAb8I5vKjz3L1n1LriB/BXkG/wwR9y/oRX4LlioHA4LzP2inzRx/DWmutRweFjeP3tNeSGlaE1Fde0OS11yOpmbIp2u/jF1n2RRZviJM0yBT3IZl2HWImKjQOxIyeU325b/qWyU9Moj1o07tS0G7qJDoGHg5m8yeCxMoEH8GU45tnrNM84D2l297DQ9t1YP7jki/7RmutRweEA77/HWXOh3HCxkRgldDQkAjNTMl2Iloc1qN5JfJeeTlyTRzxURTdn1Ixv2uKjs12AbdEWlBtmVdk2k7FFwj07PCZ9XAwW3dG+8xKzNFr4EnwBZpy9Qzhh3jDXebBpYcpuo4fQ44u+fD1dweEnHzI7v0xuuOALRUV8rXpFyfSTQYkhd7IHm07jpyhlkCmI0ALYqPTpUxXS+z4jgDj1Pflvmz5ecuItpIBxyTHpSTGWd9g1ApfD/bvwUhL4nT1EzqgX7cxfCcNmb3mPL/qi9SwTHJ49oj5ZLjccbTG3pRmlYi6JCG0mQrAt1+i2UXTZ2dv9IlQpN5naMYtviaXlTrFpoMsl3bOAFEa8sqPj2WCMrx3Yjx99qFwO59Aw/wgx+HlqNz8oZvA3exRDvuhL1jMQHPaOJ0+XyA3fp1OfM3qObEVdhxjvynxNMXQV4+GJyvOEFqeQBaIbbO7i63rpxCltdZShPFxkjM2FPVkn3TG+Rp9pO3l2RzFegGfxGDHIAh8SteR0C4HopXzRF61nheDw6TFN05Ebvq8M3VKKpGjjO6r7nhudTEGMtYM92HTDaR1FDMXJ1eThsbKfywyoWwrzRSXkc51flG3vIid62h29bIcFbTGhfV+faaB+ohj7dPN0C2e2lC96+XouFByen9AsunLDJZ9z7NExiUc0OuoYW6UZkIyx2YUR2z6/TiRjyKMx5GbbjLHvHuf7YmtKghf34LJfx63Yg8vrvN2zC7lY0x0tvKezo4HmGYDU+Gab6dFL+KI761lDcNifcjLrrr9LWZJctG1FfU1uwhoQE22ObjdfkSzY63CbU5hzs21WeTddH2BaL11Gi7lVdlxP1nkxqhnKhVY6knS3EPgVGg1JpN5cP/hivujOelhXcPj8HC/LyI6MkteVjlolBdMmF3a3DbsuAYhL44dxzthWSN065xxUd55Lmf0wRbOYOqH09/o9WbO2VtFdaMb4qBgtFJoT1SqoN8wPXMoXLb3p1PUEhxfnnLzGzBI0Ku7FxrKsNJj/8bn/H8fPIVOd3rfrklUB/DOeO+nkghgSPzrlPxluCMtOnDL4Yml6dK1r3vsgMxgtPOrMFUZbEUbTdIzii5beq72G4PD0DKnwjmBULUVFmy8t+k7fZ3pKc0Q4UC6jpVRqS9Umv8bxw35flZVOU1X7qkjnhZlsMbk24qQ6Hz7QcuL6sDC0iHHki96Uh2UdvmgZnjIvExy2TeJdMDZNSbdZyAHe/Yd1xsQhHiKzjh7GxQ4yqMPaywPkjMamvqrYpmO7Knad+ZQC5msCuAPWUoxrxVhrGv7a+KLXFhyONdTMrZ7ke23qiO40ZJUyzgYyX5XyL0mV7NiUzEs9mjtbMN0dERqwyAJpigad0B3/zRV7s4PIfXSu6YV/MK7+OrYe/JvfGMn/PHJe2fyUdtnFrKRNpXV0Y2559aWPt/G4BlvjTMtXlVIWCnNyA3YQBDmYIodFz41PvXPSa6rq9lWZawZ4dP115HXV/M/tnFkkrBOdzg6aP4pID+MZnTJ1SuuB6iZlyiox4HT2y3YBtkUKWooacBQUDTpjwaDt5poBHl1/HXltwP887lKKXxNUEyPqpGTyA699UqY/lt9yGdlUKra0fFWS+36iylVWrAyd7Uw0CZM0z7xKTOduznLIjG2Hx8cDPLb+OvK6Bv7n1DYci4CxUuRxrjBc0bb4vD3rN5Zz36ntLb83eVJIB8LiIzCmn6SMPjlX+yNlTjvIGjs+QzHPf60Aj62/jrzG8j9vYMFtm1VoRWCJdmw7z9N0t+c8cxZpPeK4aTRicS25QhrVtUp7U578chk4q04Wx4YoQSjFryUlpcQ1AbxZ/XVMknIU//OGl7Q6z9Zpxi0+3yFhSkjUDpnCIUhLWVX23KQ+L9vKvFKI0ZWFQgkDLvBoylrHNVmaw10zwCPrr5tlodfnf94EWnQ0lFRWy8pW9LbkLsyUVDc2NSTHGDtnD1uMtchjbCeb1mpxFP0YbcClhzdLu6lfO8Bj6q+bdT2sz/+8SZCV7VIxtt0DUn9L7r4cLYWDSXnseEpOGFuty0qbOVlS7NNzs5FOGJUqQpl2Q64/yBpZf90sxbE+//PGdZ02HSipCbmD6NItmQ4Lk5XUrGpDMkhbMm2ZVheNYV+VbUWTcv99+2NyX1VoafSuC+AN6q9bFIMv5X/eagNWXZxEa9JjlMwNWb00akGUkSoepp1/yRuuqHGbUn3UdBSTxBU6SEVklzWRUkPndVvw2PrrpjvxOvzPmwHc0hpmq82npi7GRro8dXp0KXnUQmhZbRL7NEVp1uuZmO45vuzKsHrktS3GLWXODVjw+vXXLYx4Hf7njRPd0i3aoAGX6W29GnaV5YdyDj9TFkakje7GHYzDoObfddHtOSpoi2SmzJHrB3hM/XUDDEbxP2/oosszcRlehWXUvzHv4TpBVktHqwenFo8uLVmy4DKLa5d3RtLrmrM3aMFr1183E4sewf+85VWeg1c5ag276NZrM9IJVNcmLEvDNaV62aq+14IAOGFsBt973Ra8Xv11YzXwNfmft7Jg2oS+XOyoC8/cwzi66Dhmgk38kUmP1CUiYWOX1bpD2zWXt2FCp7uq8703APAa9dfNdscR/M/bZLIyouVxqJfeWvG9Je+JVckHQ9+CI9NWxz+blX/KYYvO5n2tAP/vrlZ7+8/h9y+9qeB/Hnt967e5mevX10rALDWK//FaAT5MXdBXdP0C/BAes792c40H+AiAp1e1oH8HgH94g/Lttx1gp63op1eyoM/Bvw5/G/7xFbqJPcCXnmBiwDPb/YKO4FX4OjyCb289db2/Noqicw4i7N6TVtoz8tNwDH+8x/i6Ae7lmaQVENzJFb3Di/BFeAwz+Is9SjeQySpPqbLFlNmyz47z5a/AF+AYFvDmHqibSXTEzoT4Gc3OALaqAP4KPFUJ6n+1x+rGAM6Zd78bgJ0a8QN4GU614vxwD9e1Amy6CcskNrczLx1JIp6HE5UZD/DBHrFr2oNlgG4Odv226BodoryjGJ9q2T/AR3vQrsOCS0ctXZi3ruLlhpFDJYl4HmYtjQCP9rhdn4suySLKDt6wLcC52h8xPlcjju1fn+yhuw4LZsAGUuo2b4Fx2UwQu77uqRHXGtg92aN3tQCbFexc0uk93vhTXbct6y7MulLycoUljx8ngDMBg1tvJjAazpEmOtxlzclvj1vQf1Tx7QlPDpGpqgtdSKz/d9/hdy1vTfFHSmC9dGDZbLiezz7Ac801HirGZsWjydfZyPvHXL/Y8Mjzg8BxTZiuwKz4Eb8sBE9zznszmjvFwHKPIWUnwhqfVRcd4Ck0K6ate48m1oOfrX3/yOtvAsJ8zsPAM89sjnddmuLuDPjX9Bu/L7x7xpMzFk6nWtyQfPg278Gn4Aekz2ZgOmU9eJ37R14vwE/BL8G3aibCiWMWWDQ0ZtkPMnlcGeAu/Ag+8ZyecU5BPuy2ILD+sQqyZhAKmn7XZd+jIMTN9eBL7x95xVLSX4On8EcNlXDqmBlqS13jG4LpmGbkF/0CnOi3H8ETOIXzmnmtb0a16Tzxj1sUvQCBiXZGDtmB3KAefPH94xcUa/6vwRn80GOFyjEXFpba4A1e8KQfFF+259tx5XS4egYn8fQsLGrqGrHbztr+uByTahWuL1NUGbDpsnrwBfePPwHHIf9X4RnM4Z2ABWdxUBlqQ2PwhuDxoS0vvqB1JzS0P4h2nA/QgTrsJFn+Y3AOjs9JFC07CGWX1oNX3T/yHOzgDjwPn1PM3g9Jk9lZrMEpxnlPmBbjyo2+KFXRU52TJM/2ALcY57RUzjObbjqxVw++4P6RAOf58pcVsw9Daje3htriYrpDOonre3CudSe6bfkTEgHBHuDiyu5MCsc7BHhYDx7ePxLjqigXZsw+ijMHFhuwBmtoTPtOxOrTvYJDnC75dnUbhfwu/ZW9AgYd+peL68HD+0emKquiXHhWjJg/UrkJYzuiaL3E9aI/ytrCvAd4GcYZMCkSQxfUg3v3j8c4e90j5ZTPdvmJJGHnOCI2nHS8081X013pHuBlV1gB2MX1YNmWLHqqGN/TWmG0y6clJWthxNUl48q38Bi8vtMKyzzpFdSDhxZ5WBA5ZLt8Jv3895DduBlgbPYAj8C4B8hO68FDkoh5lydC4FiWvBOVqjYdqjiLv92t8yPDjrDaiHdUD15qkSURSGmXJwOMSxWAXYwr3zaAufJ66l+94vv3AO+vPcD7aw/w/toDvL/2AO+vPcD7aw/wHuD9tQd4f+0B3l97gPfXHuD9tQd4f+0B3l97gG8LwP8G/AL8O/A5OCq0Ys2KIdv/qOIXG/4mvFAMF16gZD+2Xvu/B8as5+8bfllWyg0zaNO5bfXj6vfhhwD86/Aq3NfRS9t9WPnhfnvCIw/CT8GLcFTMnpntdF/z9V+PWc/vWoIH+FL3Znv57PitcdGP4R/C34avw5fgRVUInCwbsn1yyA8C8zm/BH8NXoXnVE6wVPjdeCI38kX/3+Ct9dbz1pTmHFRu+Hm4O9Ch3clr99negxfwj+ER/DR8EV6B5+DuQOnTgUw5rnkY+FbNU3gNXh0o/JYTuWOvyBf9FvzX663HH/HejO8LwAl8Hl5YLTd8q7sqA3wbjuExfAFegQdwfyDoSkWY8swzEf6o4Qyewefg+cHNbqMQruSL/u/WWc+E5g7vnnEXgDmcDeSGb/F4cBcCgT+GGRzDU3hZYburAt9TEtHgbM6JoxJ+6NMzzTcf6c2bycv2+KK/f+l6LBzw5IwfqZJhA3M472pWT/ajKxnjv4AFnMEpnBTPND6s2J7qHbPAqcMK74T2mZ4VGB9uJA465It+/eL1WKhYOD7xHOkr1ajK7d0C4+ke4Hy9qXZwpgLr+Znm/uNFw8xQOSy8H9IzjUrd9+BIfenYaylf9FsXr8fBAadnPIEDna8IBcwlxnuA0/Wv6GAWPd7dDIKjMdSWueAsBj4M7TOd06qBbwDwKr7oleuxMOEcTuEZTHWvDYUO7aHqAe0Bbq+HEFRzOz7WVoTDQkVds7A4sIIxfCQdCefFRoIOF/NFL1mPab/nvOakSL/Q1aFtNpUb/nFOVX6gzyg/1nISyDfUhsokIzaBR9Kxm80s5mK+6P56il1jXic7nhQxsxSm3OwBHl4fFdLqi64nDQZvqE2at7cWAp/IVvrN6/BFL1mPhYrGMBfOi4PyjuSGf6wBBh7p/FZTghCNWGgMzlBbrNJoPJX2mW5mwZfyRffXo7OFi5pZcS4qZUrlViptrXtw+GQoyhDPS+ANjcGBNRiLCQDPZPMHuiZfdFpPSTcQwwKYdRNqpkjm7AFeeT0pJzALgo7g8YYGrMHS0iocy+YTm2vyRUvvpXCIpQ5pe666TJrcygnScUf/p0NDs/iAI/nqDHC8TmQT8x3NF91l76oDdQGwu61Z6E0ABv7uO1dbf/37Zlv+Zw/Pbh8f1s4Avur6657/+YYBvur6657/+YYBvur6657/+YYBvur6657/+aYBvuL6657/+VMA8FXWX/f8zzcN8BXXX/f8zzcNMFdbf93zP38KLPiK6697/uebtuArrr/u+Z9vGmCusP6653/+1FjwVdZf9/zPN7oHX339dc//fNMu+irrr3v+50+Bi+Zq6697/uebA/jz8Pudf9ht/fWv517J/XUzAP8C/BAeX9WCDrUpZ3/dEMBxgPcfbtTVvsYV5Yn32u03B3Ac4P3b8I+vxNBKeeL9dRMAlwO83959qGO78sT769oB7g3w/vGVYFzKE++v6wV4OMD7F7tckFkmT7y/rhHgpQO8b+4Y46XyxPvrugBeNcB7BRiX8sT767oAvmCA9woAHsoT76+rBJjLBnh3txOvkifeX1dswZcO8G6N7sXyxPvr6i340gHe3TnqVfLE++uKAb50gHcXLnrX8sR7gNdPRqwzwLu7Y/FO5Yn3AK9jXCMGeHdgxDuVJ75VAI8ljP7PAb3/RfjcZfePHBB+79dpfpH1CanN30d+mT1h9GqAxxJGM5LQeeQ1+Tb+EQJrElLb38VHQ94TRq900aMIo8cSOo+8Dp8QfsB8zpqE1NO3OI9Zrj1h9EV78PqE0WMJnUdeU6E+Jjyk/hbrEFIfeWbvId8H9oTRFwdZaxJGvziW0Hn0gqYB/wyZ0PwRlxJST+BOw9m77Amj14ii1yGM/txYQudN0qDzGe4EqfA/5GJCagsHcPaEPWH0esekSwmjRxM6b5JEcZ4ww50ilvAOFxBSx4yLW+A/YU8YvfY5+ALC6NGEzhtmyZoFZoarwBLeZxUhtY4rc3bKnjB6TKJjFUHzJoTOozF2YBpsjcyxDgzhQ1YRUse8+J4wenwmaylB82hC5w0zoRXUNXaRBmSMQUqiWSWkLsaVqc/ZE0aPTFUuJWgeTei8SfLZQeMxNaZSIzbII4aE1Nmr13P2hNHjc9E9guYNCZ032YlNwESMLcZiLQHkE4aE1BFg0yAR4z1h9AiAGRA0jyZ03tyIxWMajMPWBIsxYJCnlITU5ShiHYdZ94TR4wCmSxg9jtB5KyPGYzymAYexWEMwAPIsAdYdV6aObmNPGD0aYLoEzaMJnTc0Ygs+YDw0GAtqxBjkuP38bMRWCHn73xNGjz75P73WenCEJnhwyVe3AEe8TtKdJcYhBl97wuhNAObK66lvD/9J9NS75v17wuitAN5fe4D31x7g/bUHeH/tAd5fe4D3AO+vPcD7aw/w/toDvL/2AO+vPcD7aw/w/toDvAd4f/24ABzZ8o+KLsSLS+Pv/TqTb3P4hKlQrTGh+fbIBT0Axqznnb+L/V2mb3HkN5Mb/nEHeK7d4IcDld6lmDW/iH9E+AH1MdOw/Jlu2T1xNmY98sv4wHnD7D3uNHu54WUuOsBTbQuvBsPT/UfzNxGYzwkP8c+Yz3C+r/i6DcyRL/rZ+utRwWH5PmfvcvYEt9jLDS/bg0/B64DWKrQM8AL8FPwS9beQCe6EMKNZYJol37jBMy35otdaz0Bw2H/C2Smc7+WGB0HWDELBmOByA3r5QONo4V+DpzR/hFS4U8wMW1PXNB4TOqYz9urxRV++ntWCw/U59Ty9ebdWbrgfRS9AYKKN63ZokZVygr8GZ/gfIhZXIXPsAlNjPOLBby5c1eOLvmQ9lwkOy5x6QV1j5TYqpS05JtUgUHUp5toHGsVfn4NX4RnMCe+AxTpwmApTYxqMxwfCeJGjpXzRF61nbcHhUBPqWze9svwcHJ+S6NPscKrEjug78Dx8Lj3T8D4YxGIdxmJcwhi34fzZUr7olevZCw5vkOhoClq5zBPZAnygD/Tl9EzDh6kl3VhsHYcDEb+hCtJSvuiV69kLDm+WycrOTArHmB5/VYyP6jOVjwgGawk2zQOaTcc1L+aLXrKeveDwZqlKrw8U9Y1p66uK8dEzdYwBeUQAY7DbyYNezBfdWQ97weEtAKYQg2xJIkuveAT3dYeLGH+ShrWNwZgN0b2YL7qznr3g8JYAo5bQBziPjx7BPZ0d9RCQp4UZbnFdzBddor4XHN4KYMrB2qHFRIzzcLAHQZ5the5ovui94PCWAPefaYnxIdzRwdHCbuR4B+tbiy96Lzi8E4D7z7S0mEPd+eqO3cT53Z0Y8SV80XvB4Z0ADJi/f7X113f+7p7/+UYBvur6657/+YYBvur6657/+aYBvuL6657/+aYBvuL6657/+aYBvuL6657/+aYBvuL6657/+VMA8FXWX/f8z58OgK+y/rrnf75RgLna+uue//lTA/CV1V/3/M837aKvvv6653++UQvmauuve/7nTwfAV1N/3fM/fzr24Cuuv+75nz8FFnxl9dc9//MOr/8/glixwRuUfM4AAAAASUVORK5CYII=\";}getSearchTexture(){return\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAAAhCAAAAABIXyLAAAAAOElEQVRIx2NgGAWjYBSMglEwEICREYRgFBZBqDCSLA2MGPUIVQETE9iNUAqLR5gIeoQKRgwXjwAAGn4AtaFeYLEAAAAASUVORK5CYII=\";}}const FilmShader={uniforms:{tDiffuse:{value:null},time:{value:0},nIntensity:{value:0.5},sIntensity:{value:0.05},sCount:{value:4096},grayscale:{value:1}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"#include \",// control parameter\n\"uniform float time;\",\"uniform bool grayscale;\",// noise effect intensity value (0 = no effect, 1 = full effect)\n\"uniform float nIntensity;\",// scanlines effect intensity value (0 = no effect, 1 = full effect)\n\"uniform float sIntensity;\",// scanlines effect count value (0 = no effect, 4096 = full effect)\n\"uniform float sCount;\",\"uniform sampler2D tDiffuse;\",\"varying vec2 vUv;\",\"void main() {\",// sample the source\n\"\tvec4 cTextureScreen = texture2D( tDiffuse, vUv );\",// make some noise\n\"\tfloat dx = rand( vUv + time );\",// add noise\n\"\tvec3 cResult = cTextureScreen.rgb + cTextureScreen.rgb * clamp( 0.1 + dx, 0.0, 1.0 );\",// get us a sine and cosine\n\"\tvec2 sc = vec2( sin( vUv.y * sCount ), cos( vUv.y * sCount ) );\",// add scanlines\n\"\tcResult += cTextureScreen.rgb * vec3( sc.x, sc.y, sc.x ) * sIntensity;\",// interpolate between source and result by intensity\n\"\tcResult = cTextureScreen.rgb + clamp( nIntensity, 0.0,1.0 ) * ( cResult - cTextureScreen.rgb );\",// convert to grayscale if desired\n\"\tif( grayscale ) {\",\"\t\tcResult = vec3( cResult.r * 0.3 + cResult.g * 0.59 + cResult.b * 0.11 );\",\"\t}\",\"\tgl_FragColor = vec4( cResult, cTextureScreen.a );\",\"}\"].join(\"\\n\")};class FilmPass extends Pass{constructor(noiseIntensity,scanlinesIntensity,scanlinesCount,grayscale){super();__publicField(this,\"material\");__publicField(this,\"fsQuad\");__publicField(this,\"uniforms\");if(FilmShader===void 0)console.error(\"THREE.FilmPass relies on FilmShader\");const shader=FilmShader;this.uniforms=UniformsUtils.clone(shader.uniforms);this.material=new ShaderMaterial({uniforms:this.uniforms,vertexShader:shader.vertexShader,fragmentShader:shader.fragmentShader});if(grayscale!==void 0)this.uniforms.grayscale.value=grayscale;if(noiseIntensity!==void 0)this.uniforms.nIntensity.value=noiseIntensity;if(scanlinesIntensity!==void 0)this.uniforms.sIntensity.value=scanlinesIntensity;if(scanlinesCount!==void 0)this.uniforms.sCount.value=scanlinesCount;this.fsQuad=new FullScreenQuad(this.material);}render(renderer,writeBuffer,readBuffer,deltaTime){this.uniforms[\"tDiffuse\"].value=readBuffer.texture;this.uniforms[\"time\"].value+=deltaTime;if(this.renderToScreen){renderer.setRenderTarget(null);this.fsQuad.render(renderer);}else{renderer.setRenderTarget(writeBuffer);if(this.clear)renderer.clear();this.fsQuad.render(renderer);}}}const CopyShader={uniforms:{tDiffuse:{value:null},opacity:{value:1}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform float opacity;\",\"uniform sampler2D tDiffuse;\",\"varying vec2 vUv;\",\"void main() {\",\"\tvec4 texel = texture2D( tDiffuse, vUv );\",\"\tgl_FragColor = opacity * texel;\",\"}\"].join(\"\\n\")};class OutlinePass extends Pass{constructor(resolution,scene,camera,selectedObjects){super();__publicField(this,\"renderScene\");__publicField(this,\"renderCamera\");__publicField(this,\"selectedObjects\");__publicField(this,\"visibleEdgeColor\");__publicField(this,\"hiddenEdgeColor\");__publicField(this,\"edgeGlow\");__publicField(this,\"usePatternTexture\");__publicField(this,\"edgeThickness\");__publicField(this,\"edgeStrength\");__publicField(this,\"downSampleRatio\");__publicField(this,\"pulsePeriod\");__publicField(this,\"resolution\");__publicField(this,\"renderTargetMaskBuffer\");__publicField(this,\"depthMaterial\");__publicField(this,\"prepareMaskMaterial\");__publicField(this,\"renderTargetDepthBuffer\");__publicField(this,\"renderTargetMaskDownSampleBuffer\");__publicField(this,\"renderTargetBlurBuffer1\");__publicField(this,\"renderTargetBlurBuffer2\");__publicField(this,\"edgeDetectionMaterial\");__publicField(this,\"renderTargetEdgeBuffer1\");__publicField(this,\"renderTargetEdgeBuffer2\");__publicField(this,\"separableBlurMaterial1\");__publicField(this,\"separableBlurMaterial2\");__publicField(this,\"overlayMaterial\");__publicField(this,\"materialCopy\");__publicField(this,\"oldClearAlpha\");__publicField(this,\"fsQuad\");__publicField(this,\"tempPulseColor1\");__publicField(this,\"tempPulseColor2\");__publicField(this,\"textureMatrix\");__publicField(this,\"patternTexture\");__publicField(this,\"_visibilityCache\");__publicField(this,\"_oldClearColor\");__publicField(this,\"copyUniforms\");__publicField(this,\"BlurDirectionX\",new Vector2(1,0));__publicField(this,\"BlurDirectionY\",new Vector2(0,1));this.renderScene=scene;this.renderCamera=camera;this.selectedObjects=selectedObjects!==void 0?selectedObjects:[];this.visibleEdgeColor=new Color(1,1,1);this.hiddenEdgeColor=new Color(0.1,0.04,0.02);this.edgeGlow=0;this.usePatternTexture=false;this.edgeThickness=1;this.edgeStrength=3;this.downSampleRatio=2;this.pulsePeriod=0;this._visibilityCache=/* @__PURE__ */new Map();this.resolution=resolution!==void 0?new Vector2(resolution.x,resolution.y):new Vector2(256,256);const resx=Math.round(this.resolution.x/this.downSampleRatio);const resy=Math.round(this.resolution.y/this.downSampleRatio);this.renderTargetMaskBuffer=new WebGLRenderTarget(this.resolution.x,this.resolution.y);this.renderTargetMaskBuffer.texture.name=\"OutlinePass.mask\";this.renderTargetMaskBuffer.texture.generateMipmaps=false;this.depthMaterial=new MeshDepthMaterial();this.depthMaterial.side=DoubleSide;this.depthMaterial.depthPacking=RGBADepthPacking;this.depthMaterial.blending=NoBlending;this.prepareMaskMaterial=this.getPrepareMaskMaterial();this.prepareMaskMaterial.side=DoubleSide;this.prepareMaskMaterial.fragmentShader=replaceDepthToViewZ(this.prepareMaskMaterial.fragmentShader,this.renderCamera);this.renderTargetDepthBuffer=new WebGLRenderTarget(this.resolution.x,this.resolution.y);this.renderTargetDepthBuffer.texture.name=\"OutlinePass.depth\";this.renderTargetDepthBuffer.texture.generateMipmaps=false;this.renderTargetMaskDownSampleBuffer=new WebGLRenderTarget(resx,resy);this.renderTargetMaskDownSampleBuffer.texture.name=\"OutlinePass.depthDownSample\";this.renderTargetMaskDownSampleBuffer.texture.generateMipmaps=false;this.renderTargetBlurBuffer1=new WebGLRenderTarget(resx,resy);this.renderTargetBlurBuffer1.texture.name=\"OutlinePass.blur1\";this.renderTargetBlurBuffer1.texture.generateMipmaps=false;this.renderTargetBlurBuffer2=new WebGLRenderTarget(Math.round(resx/2),Math.round(resy/2));this.renderTargetBlurBuffer2.texture.name=\"OutlinePass.blur2\";this.renderTargetBlurBuffer2.texture.generateMipmaps=false;this.edgeDetectionMaterial=this.getEdgeDetectionMaterial();this.renderTargetEdgeBuffer1=new WebGLRenderTarget(resx,resy);this.renderTargetEdgeBuffer1.texture.name=\"OutlinePass.edge1\";this.renderTargetEdgeBuffer1.texture.generateMipmaps=false;this.renderTargetEdgeBuffer2=new WebGLRenderTarget(Math.round(resx/2),Math.round(resy/2));this.renderTargetEdgeBuffer2.texture.name=\"OutlinePass.edge2\";this.renderTargetEdgeBuffer2.texture.generateMipmaps=false;const MAX_EDGE_THICKNESS=4;const MAX_EDGE_GLOW=4;this.separableBlurMaterial1=this.getSeperableBlurMaterial(MAX_EDGE_THICKNESS);this.separableBlurMaterial1.uniforms[\"texSize\"].value.set(resx,resy);this.separableBlurMaterial1.uniforms[\"kernelRadius\"].value=1;this.separableBlurMaterial2=this.getSeperableBlurMaterial(MAX_EDGE_GLOW);this.separableBlurMaterial2.uniforms[\"texSize\"].value.set(Math.round(resx/2),Math.round(resy/2));this.separableBlurMaterial2.uniforms[\"kernelRadius\"].value=MAX_EDGE_GLOW;this.overlayMaterial=this.getOverlayMaterial();if(CopyShader===void 0)console.error(\"THREE.OutlinePass relies on CopyShader\");const copyShader=CopyShader;this.copyUniforms=UniformsUtils.clone(copyShader.uniforms);this.copyUniforms[\"opacity\"].value=1;this.materialCopy=new ShaderMaterial({uniforms:this.copyUniforms,vertexShader:copyShader.vertexShader,fragmentShader:copyShader.fragmentShader,blending:NoBlending,depthTest:false,depthWrite:false,transparent:true});this.enabled=true;this.needsSwap=false;this._oldClearColor=new Color();this.oldClearAlpha=1;this.fsQuad=new FullScreenQuad(this.materialCopy);this.tempPulseColor1=new Color();this.tempPulseColor2=new Color();this.textureMatrix=new Matrix4();function replaceDepthToViewZ(string,camera2){const type=camera2.isPerspectiveCamera?\"perspective\":\"orthographic\";return string.replace(/DEPTH_TO_VIEW_Z/g,type+\"DepthToViewZ\");}}dispose(){this.renderTargetMaskBuffer.dispose();this.renderTargetDepthBuffer.dispose();this.renderTargetMaskDownSampleBuffer.dispose();this.renderTargetBlurBuffer1.dispose();this.renderTargetBlurBuffer2.dispose();this.renderTargetEdgeBuffer1.dispose();this.renderTargetEdgeBuffer2.dispose();}setSize(width,height){this.renderTargetMaskBuffer.setSize(width,height);this.renderTargetDepthBuffer.setSize(width,height);let resx=Math.round(width/this.downSampleRatio);let resy=Math.round(height/this.downSampleRatio);this.renderTargetMaskDownSampleBuffer.setSize(resx,resy);this.renderTargetBlurBuffer1.setSize(resx,resy);this.renderTargetEdgeBuffer1.setSize(resx,resy);this.separableBlurMaterial1.uniforms[\"texSize\"].value.set(resx,resy);resx=Math.round(resx/2);resy=Math.round(resy/2);this.renderTargetBlurBuffer2.setSize(resx,resy);this.renderTargetEdgeBuffer2.setSize(resx,resy);this.separableBlurMaterial2.uniforms[\"texSize\"].value.set(resx,resy);}changeVisibilityOfSelectedObjects(bVisible){const cache=this._visibilityCache;function gatherSelectedMeshesCallBack(object){if(object.isMesh){if(bVisible===true){object.visible=cache.get(object);}else{cache.set(object,object.visible);object.visible=bVisible;}}}for(let i2=0;i20){renderer.getClearColor(this._oldClearColor);this.oldClearAlpha=renderer.getClearAlpha();const oldAutoClear=renderer.autoClear;renderer.autoClear=false;if(maskActive)renderer.state.buffers.stencil.setTest(false);renderer.setClearColor(16777215,1);this.changeVisibilityOfSelectedObjects(false);const currentBackground=this.renderScene.background;this.renderScene.background=null;this.renderScene.overrideMaterial=this.depthMaterial;renderer.setRenderTarget(this.renderTargetDepthBuffer);renderer.clear();renderer.render(this.renderScene,this.renderCamera);this.changeVisibilityOfSelectedObjects(true);this._visibilityCache.clear();this.updateTextureMatrix();this.changeVisibilityOfNonSelectedObjects(false);this.renderScene.overrideMaterial=this.prepareMaskMaterial;this.prepareMaskMaterial.uniforms[\"cameraNearFar\"].value.set(this.renderCamera.near,this.renderCamera.far);this.prepareMaskMaterial.uniforms[\"depthTexture\"].value=this.renderTargetDepthBuffer.texture;this.prepareMaskMaterial.uniforms[\"textureMatrix\"].value=this.textureMatrix;renderer.setRenderTarget(this.renderTargetMaskBuffer);renderer.clear();renderer.render(this.renderScene,this.renderCamera);this.renderScene.overrideMaterial=null;this.changeVisibilityOfNonSelectedObjects(true);this._visibilityCache.clear();this.renderScene.background=currentBackground;this.fsQuad.material=this.materialCopy;this.copyUniforms[\"tDiffuse\"].value=this.renderTargetMaskBuffer.texture;renderer.setRenderTarget(this.renderTargetMaskDownSampleBuffer);renderer.clear();this.fsQuad.render(renderer);this.tempPulseColor1.copy(this.visibleEdgeColor);this.tempPulseColor2.copy(this.hiddenEdgeColor);if(this.pulsePeriod>0){const scalar=(1+0.25)/2+Math.cos(performance.now()*0.01/this.pulsePeriod)*(1-0.25)/2;this.tempPulseColor1.multiplyScalar(scalar);this.tempPulseColor2.multiplyScalar(scalar);}this.fsQuad.material=this.edgeDetectionMaterial;this.edgeDetectionMaterial.uniforms[\"maskTexture\"].value=this.renderTargetMaskDownSampleBuffer.texture;this.edgeDetectionMaterial.uniforms[\"texSize\"].value.set(this.renderTargetMaskDownSampleBuffer.width,this.renderTargetMaskDownSampleBuffer.height);this.edgeDetectionMaterial.uniforms[\"visibleEdgeColor\"].value=this.tempPulseColor1;this.edgeDetectionMaterial.uniforms[\"hiddenEdgeColor\"].value=this.tempPulseColor2;renderer.setRenderTarget(this.renderTargetEdgeBuffer1);renderer.clear();this.fsQuad.render(renderer);this.fsQuad.material=this.separableBlurMaterial1;this.separableBlurMaterial1.uniforms[\"colorTexture\"].value=this.renderTargetEdgeBuffer1.texture;this.separableBlurMaterial1.uniforms[\"direction\"].value=this.BlurDirectionX;this.separableBlurMaterial1.uniforms[\"kernelRadius\"].value=this.edgeThickness;renderer.setRenderTarget(this.renderTargetBlurBuffer1);renderer.clear();this.fsQuad.render(renderer);this.separableBlurMaterial1.uniforms[\"colorTexture\"].value=this.renderTargetBlurBuffer1.texture;this.separableBlurMaterial1.uniforms[\"direction\"].value=this.BlurDirectionY;renderer.setRenderTarget(this.renderTargetEdgeBuffer1);renderer.clear();this.fsQuad.render(renderer);this.fsQuad.material=this.separableBlurMaterial2;this.separableBlurMaterial2.uniforms[\"colorTexture\"].value=this.renderTargetEdgeBuffer1.texture;this.separableBlurMaterial2.uniforms[\"direction\"].value=this.BlurDirectionX;renderer.setRenderTarget(this.renderTargetBlurBuffer2);renderer.clear();this.fsQuad.render(renderer);this.separableBlurMaterial2.uniforms[\"colorTexture\"].value=this.renderTargetBlurBuffer2.texture;this.separableBlurMaterial2.uniforms[\"direction\"].value=this.BlurDirectionY;renderer.setRenderTarget(this.renderTargetEdgeBuffer2);renderer.clear();this.fsQuad.render(renderer);this.fsQuad.material=this.overlayMaterial;this.overlayMaterial.uniforms[\"maskTexture\"].value=this.renderTargetMaskBuffer.texture;this.overlayMaterial.uniforms[\"edgeTexture1\"].value=this.renderTargetEdgeBuffer1.texture;this.overlayMaterial.uniforms[\"edgeTexture2\"].value=this.renderTargetEdgeBuffer2.texture;this.overlayMaterial.uniforms[\"patternTexture\"].value=this.patternTexture;this.overlayMaterial.uniforms[\"edgeStrength\"].value=this.edgeStrength;this.overlayMaterial.uniforms[\"edgeGlow\"].value=this.edgeGlow;this.overlayMaterial.uniforms[\"usePatternTexture\"].value=this.usePatternTexture;if(maskActive)renderer.state.buffers.stencil.setTest(true);renderer.setRenderTarget(readBuffer);this.fsQuad.render(renderer);renderer.setClearColor(this._oldClearColor,this.oldClearAlpha);renderer.autoClear=oldAutoClear;}if(this.renderToScreen){this.fsQuad.material=this.materialCopy;this.copyUniforms[\"tDiffuse\"].value=readBuffer.texture;renderer.setRenderTarget(null);this.fsQuad.render(renderer);}}getPrepareMaskMaterial(){return new ShaderMaterial({uniforms:{depthTexture:{value:null},cameraNearFar:{value:new Vector2(0.5,0.5)},textureMatrix:{value:null}},vertexShader:`#include \n\t\t\t\t#include \n\t\t\t\tvarying vec4 projTexCoord;\n\t\t\t\tvarying vec4 vPosition;\n\t\t\t\tuniform mat4 textureMatrix;\n\t\t\t\tvoid main() {\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\t\t\t\t\tvPosition = mvPosition;\n\t\t\t\t\tvec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\n\t\t\t\t\tprojTexCoord = textureMatrix * worldPosition;\n\t\t\t\t}`,fragmentShader:`#include \n\t\t\t\tvarying vec4 vPosition;\n\t\t\t\tvarying vec4 projTexCoord;\n\t\t\t\tuniform sampler2D depthTexture;\n\t\t\t\tuniform vec2 cameraNearFar;\n\t\t\t\tvoid main() {\n\t\t\t\t\tfloat depth = unpackRGBAToDepth(texture2DProj( depthTexture, projTexCoord ));\n\t\t\t\t\tfloat viewZ = - DEPTH_TO_VIEW_Z( depth, cameraNearFar.x, cameraNearFar.y );\n\t\t\t\t\tfloat depthTest = (-vPosition.z > viewZ) ? 1.0 : 0.0;\n\t\t\t\t\tgl_FragColor = vec4(0.0, depthTest, 1.0, 1.0);\n\t\t\t\t}`});}getEdgeDetectionMaterial(){return new ShaderMaterial({uniforms:{maskTexture:{value:null},texSize:{value:new Vector2(0.5,0.5)},visibleEdgeColor:{value:new Vector3(1,1,1)},hiddenEdgeColor:{value:new Vector3(1,1,1)}},vertexShader:`varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}`,fragmentShader:`varying vec2 vUv;\n\t\t\t\tuniform sampler2D maskTexture;\n\t\t\t\tuniform vec2 texSize;\n\t\t\t\tuniform vec3 visibleEdgeColor;\n\t\t\t\tuniform vec3 hiddenEdgeColor;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec2 invSize = 1.0 / texSize;\n\t\t\t\t\tvec4 uvOffset = vec4(1.0, 0.0, 0.0, 1.0) * vec4(invSize, invSize);\n\t\t\t\t\tvec4 c1 = texture2D( maskTexture, vUv + uvOffset.xy);\n\t\t\t\t\tvec4 c2 = texture2D( maskTexture, vUv - uvOffset.xy);\n\t\t\t\t\tvec4 c3 = texture2D( maskTexture, vUv + uvOffset.yw);\n\t\t\t\t\tvec4 c4 = texture2D( maskTexture, vUv - uvOffset.yw);\n\t\t\t\t\tfloat diff1 = (c1.r - c2.r)*0.5;\n\t\t\t\t\tfloat diff2 = (c3.r - c4.r)*0.5;\n\t\t\t\t\tfloat d = length( vec2(diff1, diff2) );\n\t\t\t\t\tfloat a1 = min(c1.g, c2.g);\n\t\t\t\t\tfloat a2 = min(c3.g, c4.g);\n\t\t\t\t\tfloat visibilityFactor = min(a1, a2);\n\t\t\t\t\tvec3 edgeColor = 1.0 - visibilityFactor > 0.001 ? visibleEdgeColor : hiddenEdgeColor;\n\t\t\t\t\tgl_FragColor = vec4(edgeColor, 1.0) * vec4(d);\n\t\t\t\t}`});}getSeperableBlurMaterial(maxRadius){return new ShaderMaterial({defines:{MAX_RADIUS:maxRadius},uniforms:{colorTexture:{value:null},texSize:{value:new Vector2(0.5,0.5)},direction:{value:new Vector2(0.5,0.5)},kernelRadius:{value:1}},vertexShader:`varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}`,fragmentShader:`#include \n\t\t\t\tvarying vec2 vUv;\n\t\t\t\tuniform sampler2D colorTexture;\n\t\t\t\tuniform vec2 texSize;\n\t\t\t\tuniform vec2 direction;\n\t\t\t\tuniform float kernelRadius;\n\t\t\t\tfloat gaussianPdf(in float x, in float sigma) {\n\t\t\t\t\treturn 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma;\n\t\t\t\t}\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec2 invSize = 1.0 / texSize;\n\t\t\t\t\tfloat weightSum = gaussianPdf(0.0, kernelRadius);\n\t\t\t\t\tvec4 diffuseSum = texture2D( colorTexture, vUv) * weightSum;\n\t\t\t\t\tvec2 delta = direction * invSize * kernelRadius/float(MAX_RADIUS);\n\t\t\t\t\tvec2 uvOffset = delta;\n\t\t\t\t\tfor( int i = 1; i <= MAX_RADIUS; i ++ ) {\n\t\t\t\t\t\tfloat w = gaussianPdf(uvOffset.x, kernelRadius);\n\t\t\t\t\t\tvec4 sample1 = texture2D( colorTexture, vUv + uvOffset);\n\t\t\t\t\t\tvec4 sample2 = texture2D( colorTexture, vUv - uvOffset);\n\t\t\t\t\t\tdiffuseSum += ((sample1 + sample2) * w);\n\t\t\t\t\t\tweightSum += (2.0 * w);\n\t\t\t\t\t\tuvOffset += delta;\n\t\t\t\t\t}\n\t\t\t\t\tgl_FragColor = diffuseSum/weightSum;\n\t\t\t\t}`});}getOverlayMaterial(){return new ShaderMaterial({uniforms:{maskTexture:{value:null},edgeTexture1:{value:null},edgeTexture2:{value:null},patternTexture:{value:null},edgeStrength:{value:1},edgeGlow:{value:1},usePatternTexture:{value:0}},vertexShader:`varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}`,fragmentShader:`varying vec2 vUv;\n\t\t\t\tuniform sampler2D maskTexture;\n\t\t\t\tuniform sampler2D edgeTexture1;\n\t\t\t\tuniform sampler2D edgeTexture2;\n\t\t\t\tuniform sampler2D patternTexture;\n\t\t\t\tuniform float edgeStrength;\n\t\t\t\tuniform float edgeGlow;\n\t\t\t\tuniform bool usePatternTexture;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec4 edgeValue1 = texture2D(edgeTexture1, vUv);\n\t\t\t\t\tvec4 edgeValue2 = texture2D(edgeTexture2, vUv);\n\t\t\t\t\tvec4 maskColor = texture2D(maskTexture, vUv);\n\t\t\t\t\tvec4 patternColor = texture2D(patternTexture, 6.0 * vUv);\n\t\t\t\t\tfloat visibilityFactor = 1.0 - maskColor.g > 0.0 ? 1.0 : 0.5;\n\t\t\t\t\tvec4 edgeValue = edgeValue1 + edgeValue2 * edgeGlow;\n\t\t\t\t\tvec4 finalColor = edgeStrength * maskColor.r * edgeValue;\n\t\t\t\t\tif(usePatternTexture)\n\t\t\t\t\t\tfinalColor += + visibilityFactor * (1.0 - maskColor.r) * (1.0 - patternColor.r);\n\t\t\t\t\tgl_FragColor = finalColor;\n\t\t\t\t}`,blending:AdditiveBlending,depthTest:false,depthWrite:false,transparent:true});}}const SSAOShader={defines:{PERSPECTIVE_CAMERA:1,KERNEL_SIZE:32},uniforms:{tDiffuse:{value:null},tNormal:{value:null},tDepth:{value:null},tNoise:{value:null},kernel:{value:null},cameraNear:{value:null},cameraFar:{value:null},resolution:{value:/*@__PURE__*/new Vector2()},cameraProjectionMatrix:{value:/*@__PURE__*/new Matrix4()},cameraInverseProjectionMatrix:{value:/*@__PURE__*/new Matrix4()},kernelRadius:{value:8},minDistance:{value:5e-3},maxDistance:{value:0.05}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform sampler2D tDiffuse;\",\"uniform sampler2D tNormal;\",\"uniform sampler2D tDepth;\",\"uniform sampler2D tNoise;\",\"uniform vec3 kernel[ KERNEL_SIZE ];\",\"uniform vec2 resolution;\",\"uniform float cameraNear;\",\"uniform float cameraFar;\",\"uniform mat4 cameraProjectionMatrix;\",\"uniform mat4 cameraInverseProjectionMatrix;\",\"uniform float kernelRadius;\",\"uniform float minDistance;\",// avoid artifacts caused by neighbour fragments with minimal depth difference\n\"uniform float maxDistance;\",// avoid the influence of fragments which are too far away\n\"varying vec2 vUv;\",\"#include \",\"float getDepth( const in vec2 screenPosition ) {\",\"\treturn texture2D( tDepth, screenPosition ).x;\",\"}\",\"float getLinearDepth( const in vec2 screenPosition ) {\",\"\t#if PERSPECTIVE_CAMERA == 1\",\"\t\tfloat fragCoordZ = texture2D( tDepth, screenPosition ).x;\",\"\t\tfloat viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar );\",\"\t\treturn viewZToOrthographicDepth( viewZ, cameraNear, cameraFar );\",\"\t#else\",\"\t\treturn texture2D( tDepth, screenPosition ).x;\",\"\t#endif\",\"}\",\"float getViewZ( const in float depth ) {\",\"\t#if PERSPECTIVE_CAMERA == 1\",\"\t\treturn perspectiveDepthToViewZ( depth, cameraNear, cameraFar );\",\"\t#else\",\"\t\treturn orthographicDepthToViewZ( depth, cameraNear, cameraFar );\",\"\t#endif\",\"}\",\"vec3 getViewPosition( const in vec2 screenPosition, const in float depth, const in float viewZ ) {\",\"\tfloat clipW = cameraProjectionMatrix[2][3] * viewZ + cameraProjectionMatrix[3][3];\",\"\tvec4 clipPosition = vec4( ( vec3( screenPosition, depth ) - 0.5 ) * 2.0, 1.0 );\",\"\tclipPosition *= clipW; // unprojection.\",\"\treturn ( cameraInverseProjectionMatrix * clipPosition ).xyz;\",\"}\",\"vec3 getViewNormal( const in vec2 screenPosition ) {\",\"\treturn unpackRGBToNormal( texture2D( tNormal, screenPosition ).xyz );\",\"}\",\"void main() {\",\"\tfloat depth = getDepth( vUv );\",\"\tfloat viewZ = getViewZ( depth );\",\"\tvec3 viewPosition = getViewPosition( vUv, depth, viewZ );\",\"\tvec3 viewNormal = getViewNormal( vUv );\",\" vec2 noiseScale = vec2( resolution.x / 4.0, resolution.y / 4.0 );\",\"\tvec3 random = texture2D( tNoise, vUv * noiseScale ).xyz;\",// compute matrix used to reorient a kernel vector\n\"\tvec3 tangent = normalize( random - viewNormal * dot( random, viewNormal ) );\",\"\tvec3 bitangent = cross( viewNormal, tangent );\",\"\tmat3 kernelMatrix = mat3( tangent, bitangent, viewNormal );\",\" float occlusion = 0.0;\",\" for ( int i = 0; i < KERNEL_SIZE; i ++ ) {\",\"\t\tvec3 sampleVector = kernelMatrix * kernel[ i ];\",// reorient sample vector in view space\n\"\t\tvec3 samplePoint = viewPosition + ( sampleVector * kernelRadius );\",// calculate sample point\n\"\t\tvec4 samplePointNDC = cameraProjectionMatrix * vec4( samplePoint, 1.0 );\",// project point and calculate NDC\n\"\t\tsamplePointNDC /= samplePointNDC.w;\",\"\t\tvec2 samplePointUv = samplePointNDC.xy * 0.5 + 0.5;\",// compute uv coordinates\n\"\t\tfloat realDepth = getLinearDepth( samplePointUv );\",// get linear depth from depth texture\n\"\t\tfloat sampleDepth = viewZToOrthographicDepth( samplePoint.z, cameraNear, cameraFar );\",// compute linear depth of the sample view Z value\n\"\t\tfloat delta = sampleDepth - realDepth;\",\"\t\tif ( delta > minDistance && delta < maxDistance ) {\",// if fragment is before sample point, increase occlusion\n\"\t\t\tocclusion += 1.0;\",\"\t\t}\",\"\t}\",\"\tocclusion = clamp( occlusion / float( KERNEL_SIZE ), 0.0, 1.0 );\",\"\tgl_FragColor = vec4( vec3( 1.0 - occlusion ), 1.0 );\",\"}\"].join(\"\\n\")};const SSAODepthShader={defines:{PERSPECTIVE_CAMERA:1},uniforms:{tDepth:{value:null},cameraNear:{value:null},cameraFar:{value:null}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform sampler2D tDepth;\",\"uniform float cameraNear;\",\"uniform float cameraFar;\",\"varying vec2 vUv;\",\"#include \",\"float getLinearDepth( const in vec2 screenPosition ) {\",\"\t#if PERSPECTIVE_CAMERA == 1\",\"\t\tfloat fragCoordZ = texture2D( tDepth, screenPosition ).x;\",\"\t\tfloat viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar );\",\"\t\treturn viewZToOrthographicDepth( viewZ, cameraNear, cameraFar );\",\"\t#else\",\"\t\treturn texture2D( tDepth, screenPosition ).x;\",\"\t#endif\",\"}\",\"void main() {\",\"\tfloat depth = getLinearDepth( vUv );\",\"\tgl_FragColor = vec4( vec3( 1.0 - depth ), 1.0 );\",\"}\"].join(\"\\n\")};const SSAOBlurShader={uniforms:{tDiffuse:{value:null},resolution:{value:/*@__PURE__*/new Vector2()}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform sampler2D tDiffuse;\",\"uniform vec2 resolution;\",\"varying vec2 vUv;\",\"void main() {\",\"\tvec2 texelSize = ( 1.0 / resolution );\",\"\tfloat result = 0.0;\",\"\tfor ( int i = - 2; i <= 2; i ++ ) {\",\"\t\tfor ( int j = - 2; j <= 2; j ++ ) {\",\"\t\t\tvec2 offset = ( vec2( float( i ), float( j ) ) ) * texelSize;\",\"\t\t\tresult += texture2D( tDiffuse, vUv + offset ).r;\",\"\t\t}\",\"\t}\",\"\tgl_FragColor = vec4( vec3( result / ( 5.0 * 5.0 ) ), 1.0 );\",\"}\"].join(\"\\n\")};const _SSAOPass=class extends Pass{constructor(scene,camera,width,height){super();this.width=width!==void 0?width:512;this.height=height!==void 0?height:512;this.clear=true;this.camera=camera;this.scene=scene;this.kernelRadius=8;this.kernelSize=32;this.kernel=[];this.noiseTexture=null;this.output=0;this.minDistance=5e-3;this.maxDistance=0.1;this._visibilityCache=/* @__PURE__ */new Map();this.generateSampleKernel();this.generateRandomKernelRotations();const depthTexture=new DepthTexture();depthTexture.format=DepthStencilFormat;depthTexture.type=UnsignedInt248Type;this.beautyRenderTarget=new WebGLRenderTarget(this.width,this.height);this.normalRenderTarget=new WebGLRenderTarget(this.width,this.height,{minFilter:NearestFilter,magFilter:NearestFilter,depthTexture});this.ssaoRenderTarget=new WebGLRenderTarget(this.width,this.height);this.blurRenderTarget=this.ssaoRenderTarget.clone();if(SSAOShader===void 0){console.error(\"THREE.SSAOPass: The pass relies on SSAOShader.\");}this.ssaoMaterial=new ShaderMaterial({defines:Object.assign({},SSAOShader.defines),uniforms:UniformsUtils.clone(SSAOShader.uniforms),vertexShader:SSAOShader.vertexShader,fragmentShader:SSAOShader.fragmentShader,blending:NoBlending});this.ssaoMaterial.uniforms[\"tDiffuse\"].value=this.beautyRenderTarget.texture;this.ssaoMaterial.uniforms[\"tNormal\"].value=this.normalRenderTarget.texture;this.ssaoMaterial.uniforms[\"tDepth\"].value=this.normalRenderTarget.depthTexture;this.ssaoMaterial.uniforms[\"tNoise\"].value=this.noiseTexture;this.ssaoMaterial.uniforms[\"kernel\"].value=this.kernel;this.ssaoMaterial.uniforms[\"cameraNear\"].value=this.camera.near;this.ssaoMaterial.uniforms[\"cameraFar\"].value=this.camera.far;this.ssaoMaterial.uniforms[\"resolution\"].value.set(this.width,this.height);this.ssaoMaterial.uniforms[\"cameraProjectionMatrix\"].value.copy(this.camera.projectionMatrix);this.ssaoMaterial.uniforms[\"cameraInverseProjectionMatrix\"].value.copy(this.camera.projectionMatrixInverse);this.normalMaterial=new MeshNormalMaterial();this.normalMaterial.blending=NoBlending;this.blurMaterial=new ShaderMaterial({defines:Object.assign({},SSAOBlurShader.defines),uniforms:UniformsUtils.clone(SSAOBlurShader.uniforms),vertexShader:SSAOBlurShader.vertexShader,fragmentShader:SSAOBlurShader.fragmentShader});this.blurMaterial.uniforms[\"tDiffuse\"].value=this.ssaoRenderTarget.texture;this.blurMaterial.uniforms[\"resolution\"].value.set(this.width,this.height);this.depthRenderMaterial=new ShaderMaterial({defines:Object.assign({},SSAODepthShader.defines),uniforms:UniformsUtils.clone(SSAODepthShader.uniforms),vertexShader:SSAODepthShader.vertexShader,fragmentShader:SSAODepthShader.fragmentShader,blending:NoBlending});this.depthRenderMaterial.uniforms[\"tDepth\"].value=this.normalRenderTarget.depthTexture;this.depthRenderMaterial.uniforms[\"cameraNear\"].value=this.camera.near;this.depthRenderMaterial.uniforms[\"cameraFar\"].value=this.camera.far;this.copyMaterial=new ShaderMaterial({uniforms:UniformsUtils.clone(CopyShader.uniforms),vertexShader:CopyShader.vertexShader,fragmentShader:CopyShader.fragmentShader,transparent:true,depthTest:false,depthWrite:false,blendSrc:DstColorFactor,blendDst:ZeroFactor,blendEquation:AddEquation,blendSrcAlpha:DstAlphaFactor,blendDstAlpha:ZeroFactor,blendEquationAlpha:AddEquation});this.fsQuad=new FullScreenQuad(null);this.originalClearColor=new Color();}dispose(){this.beautyRenderTarget.dispose();this.normalRenderTarget.dispose();this.ssaoRenderTarget.dispose();this.blurRenderTarget.dispose();this.normalMaterial.dispose();this.blurMaterial.dispose();this.copyMaterial.dispose();this.depthRenderMaterial.dispose();this.fsQuad.dispose();}render(renderer,writeBuffer){if(renderer.capabilities.isWebGL2===false)this.noiseTexture.format=LuminanceFormat;renderer.setRenderTarget(this.beautyRenderTarget);renderer.clear();renderer.render(this.scene,this.camera);this.overrideVisibility();this.renderOverride(renderer,this.normalMaterial,this.normalRenderTarget,7829503,1);this.restoreVisibility();this.ssaoMaterial.uniforms[\"kernelRadius\"].value=this.kernelRadius;this.ssaoMaterial.uniforms[\"minDistance\"].value=this.minDistance;this.ssaoMaterial.uniforms[\"maxDistance\"].value=this.maxDistance;this.renderPass(renderer,this.ssaoMaterial,this.ssaoRenderTarget);this.renderPass(renderer,this.blurMaterial,this.blurRenderTarget);switch(this.output){case _SSAOPass.OUTPUT.SSAO:this.copyMaterial.uniforms[\"tDiffuse\"].value=this.ssaoRenderTarget.texture;this.copyMaterial.blending=NoBlending;this.renderPass(renderer,this.copyMaterial,this.renderToScreen?null:writeBuffer);break;case _SSAOPass.OUTPUT.Blur:this.copyMaterial.uniforms[\"tDiffuse\"].value=this.blurRenderTarget.texture;this.copyMaterial.blending=NoBlending;this.renderPass(renderer,this.copyMaterial,this.renderToScreen?null:writeBuffer);break;case _SSAOPass.OUTPUT.Beauty:this.copyMaterial.uniforms[\"tDiffuse\"].value=this.beautyRenderTarget.texture;this.copyMaterial.blending=NoBlending;this.renderPass(renderer,this.copyMaterial,this.renderToScreen?null:writeBuffer);break;case _SSAOPass.OUTPUT.Depth:this.renderPass(renderer,this.depthRenderMaterial,this.renderToScreen?null:writeBuffer);break;case _SSAOPass.OUTPUT.Normal:this.copyMaterial.uniforms[\"tDiffuse\"].value=this.normalRenderTarget.texture;this.copyMaterial.blending=NoBlending;this.renderPass(renderer,this.copyMaterial,this.renderToScreen?null:writeBuffer);break;case _SSAOPass.OUTPUT.Default:this.copyMaterial.uniforms[\"tDiffuse\"].value=this.beautyRenderTarget.texture;this.copyMaterial.blending=NoBlending;this.renderPass(renderer,this.copyMaterial,this.renderToScreen?null:writeBuffer);this.copyMaterial.uniforms[\"tDiffuse\"].value=this.blurRenderTarget.texture;this.copyMaterial.blending=CustomBlending;this.renderPass(renderer,this.copyMaterial,this.renderToScreen?null:writeBuffer);break;default:console.warn(\"THREE.SSAOPass: Unknown output type.\");}}renderPass(renderer,passMaterial,renderTarget,clearColor,clearAlpha){renderer.getClearColor(this.originalClearColor);const originalClearAlpha=renderer.getClearAlpha();const originalAutoClear=renderer.autoClear;renderer.setRenderTarget(renderTarget);renderer.autoClear=false;if(clearColor!==void 0&&clearColor!==null){renderer.setClearColor(clearColor);renderer.setClearAlpha(clearAlpha||0);renderer.clear();}this.fsQuad.material=passMaterial;this.fsQuad.render(renderer);renderer.autoClear=originalAutoClear;renderer.setClearColor(this.originalClearColor);renderer.setClearAlpha(originalClearAlpha);}renderOverride(renderer,overrideMaterial,renderTarget,clearColor,clearAlpha){renderer.getClearColor(this.originalClearColor);const originalClearAlpha=renderer.getClearAlpha();const originalAutoClear=renderer.autoClear;renderer.setRenderTarget(renderTarget);renderer.autoClear=false;clearColor=overrideMaterial.clearColor||clearColor;clearAlpha=overrideMaterial.clearAlpha||clearAlpha;if(clearColor!==void 0&&clearColor!==null){renderer.setClearColor(clearColor);renderer.setClearAlpha(clearAlpha||0);renderer.clear();}this.scene.overrideMaterial=overrideMaterial;renderer.render(this.scene,this.camera);this.scene.overrideMaterial=null;renderer.autoClear=originalAutoClear;renderer.setClearColor(this.originalClearColor);renderer.setClearAlpha(originalClearAlpha);}setSize(width,height){this.width=width;this.height=height;this.beautyRenderTarget.setSize(width,height);this.ssaoRenderTarget.setSize(width,height);this.normalRenderTarget.setSize(width,height);this.blurRenderTarget.setSize(width,height);this.ssaoMaterial.uniforms[\"resolution\"].value.set(width,height);this.ssaoMaterial.uniforms[\"cameraProjectionMatrix\"].value.copy(this.camera.projectionMatrix);this.ssaoMaterial.uniforms[\"cameraInverseProjectionMatrix\"].value.copy(this.camera.projectionMatrixInverse);this.blurMaterial.uniforms[\"resolution\"].value.set(width,height);}generateSampleKernel(){const kernelSize=this.kernelSize;const kernel=this.kernel;for(let i2=0;i2\",\"varying vec2 vUv;\",\"uniform sampler2D tColor;\",\"uniform sampler2D tDepth;\",\"uniform float maxblur;\",// max blur amount\n\"uniform float aperture;\",// aperture - bigger values for shallower depth of field\n\"uniform float nearClip;\",\"uniform float farClip;\",\"uniform float focus;\",\"uniform float aspect;\",\"#include \",\"float getDepth( const in vec2 screenPosition ) {\",\"\t#if DEPTH_PACKING == 1\",\"\treturn unpackRGBAToDepth( texture2D( tDepth, screenPosition ) );\",\"\t#else\",\"\treturn texture2D( tDepth, screenPosition ).x;\",\"\t#endif\",\"}\",\"float getViewZ( const in float depth ) {\",\"\t#if PERSPECTIVE_CAMERA == 1\",\"\treturn perspectiveDepthToViewZ( depth, nearClip, farClip );\",\"\t#else\",\"\treturn orthographicDepthToViewZ( depth, nearClip, farClip );\",\"\t#endif\",\"}\",\"void main() {\",\"\tvec2 aspectcorrect = vec2( 1.0, aspect );\",\"\tfloat viewZ = getViewZ( getDepth( vUv ) );\",\"\tfloat factor = ( focus + viewZ );\",// viewZ is <= 0, so this is a difference equation\n\"\tvec2 dofblur = vec2 ( clamp( factor * aperture, -maxblur, maxblur ) );\",\"\tvec2 dofblur9 = dofblur * 0.9;\",\"\tvec2 dofblur7 = dofblur * 0.7;\",\"\tvec2 dofblur4 = dofblur * 0.4;\",\"\tvec4 col = vec4( 0.0 );\",\"\tcol += texture2D( tColor, vUv.xy );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.0, 0.4 ) * aspectcorrect ) * dofblur );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.15, 0.37 ) * aspectcorrect ) * dofblur );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.29, 0.29 ) * aspectcorrect ) * dofblur );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.37, 0.15 ) * aspectcorrect ) * dofblur );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.40, 0.0 ) * aspectcorrect ) * dofblur );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.37, -0.15 ) * aspectcorrect ) * dofblur );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.29, -0.29 ) * aspectcorrect ) * dofblur );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.15, -0.37 ) * aspectcorrect ) * dofblur );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.0, -0.4 ) * aspectcorrect ) * dofblur );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.15, 0.37 ) * aspectcorrect ) * dofblur );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.29, 0.29 ) * aspectcorrect ) * dofblur );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.37, 0.15 ) * aspectcorrect ) * dofblur );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.4, 0.0 ) * aspectcorrect ) * dofblur );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.37, -0.15 ) * aspectcorrect ) * dofblur );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.29, -0.29 ) * aspectcorrect ) * dofblur );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.15, -0.37 ) * aspectcorrect ) * dofblur );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.15, 0.37 ) * aspectcorrect ) * dofblur9 );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.37, 0.15 ) * aspectcorrect ) * dofblur9 );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.37, -0.15 ) * aspectcorrect ) * dofblur9 );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.15, -0.37 ) * aspectcorrect ) * dofblur9 );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.15, 0.37 ) * aspectcorrect ) * dofblur9 );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.37, 0.15 ) * aspectcorrect ) * dofblur9 );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.37, -0.15 ) * aspectcorrect ) * dofblur9 );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.15, -0.37 ) * aspectcorrect ) * dofblur9 );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.29, 0.29 ) * aspectcorrect ) * dofblur7 );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.40, 0.0 ) * aspectcorrect ) * dofblur7 );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.29, -0.29 ) * aspectcorrect ) * dofblur7 );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.0, -0.4 ) * aspectcorrect ) * dofblur7 );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.29, 0.29 ) * aspectcorrect ) * dofblur7 );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.4, 0.0 ) * aspectcorrect ) * dofblur7 );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.29, -0.29 ) * aspectcorrect ) * dofblur7 );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.0, 0.4 ) * aspectcorrect ) * dofblur7 );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.29, 0.29 ) * aspectcorrect ) * dofblur4 );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.4, 0.0 ) * aspectcorrect ) * dofblur4 );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.29, -0.29 ) * aspectcorrect ) * dofblur4 );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.0, -0.4 ) * aspectcorrect ) * dofblur4 );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.29, 0.29 ) * aspectcorrect ) * dofblur4 );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.4, 0.0 ) * aspectcorrect ) * dofblur4 );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.29, -0.29 ) * aspectcorrect ) * dofblur4 );\",\"\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.0, 0.4 ) * aspectcorrect ) * dofblur4 );\",\"\tgl_FragColor = col / 41.0;\",\"\tgl_FragColor.a = 1.0;\",\"}\"].join(\"\\n\")};class BokehPass extends Pass{constructor(scene,camera,params){super();__publicField(this,\"scene\");__publicField(this,\"camera\");__publicField(this,\"renderTargetDepth\");__publicField(this,\"materialDepth\");__publicField(this,\"materialBokeh\");__publicField(this,\"fsQuad\");__publicField(this,\"_oldClearColor\");__publicField(this,\"uniforms\");this.scene=scene;this.camera=camera;const focus=params.focus!==void 0?params.focus:1;const aspect=params.aspect!==void 0?params.aspect:camera.aspect;const aperture=params.aperture!==void 0?params.aperture:0.025;const maxblur=params.maxblur!==void 0?params.maxblur:1;const width=params.width||window.innerWidth||1;const height=params.height||window.innerHeight||1;this.renderTargetDepth=new WebGLRenderTarget(width,height,{minFilter:NearestFilter,magFilter:NearestFilter});this.renderTargetDepth.texture.name=\"BokehPass.depth\";this.materialDepth=new MeshDepthMaterial();this.materialDepth.depthPacking=RGBADepthPacking;this.materialDepth.blending=NoBlending;if(BokehShader===void 0){console.error(\"BokehPass relies on BokehShader\");}const bokehShader=BokehShader;const bokehUniforms=UniformsUtils.clone(bokehShader.uniforms);bokehUniforms[\"tDepth\"].value=this.renderTargetDepth.texture;bokehUniforms[\"focus\"].value=focus;bokehUniforms[\"aspect\"].value=aspect;bokehUniforms[\"aperture\"].value=aperture;bokehUniforms[\"maxblur\"].value=maxblur;bokehUniforms[\"nearClip\"].value=camera.near;bokehUniforms[\"farClip\"].value=camera.far;this.materialBokeh=new ShaderMaterial({defines:Object.assign({},bokehShader.defines),uniforms:bokehUniforms,vertexShader:bokehShader.vertexShader,fragmentShader:bokehShader.fragmentShader});this.uniforms=bokehUniforms;this.needsSwap=false;this.fsQuad=new FullScreenQuad(this.materialBokeh);this._oldClearColor=new Color();}render(renderer,writeBuffer,readBuffer){this.scene.overrideMaterial=this.materialDepth;renderer.getClearColor(this._oldClearColor);const oldClearAlpha=renderer.getClearAlpha();const oldAutoClear=renderer.autoClear;renderer.autoClear=false;renderer.setClearColor(16777215);renderer.setClearAlpha(1);renderer.setRenderTarget(this.renderTargetDepth);renderer.clear();renderer.render(this.scene,this.camera);this.uniforms[\"tColor\"].value=readBuffer.texture;this.uniforms[\"nearClip\"].value=this.camera.near;this.uniforms[\"farClip\"].value=this.camera.far;if(this.renderToScreen){renderer.setRenderTarget(null);this.fsQuad.render(renderer);}else{renderer.setRenderTarget(writeBuffer);renderer.clear();this.fsQuad.render(renderer);}this.scene.overrideMaterial=null;renderer.setClearColor(this._oldClearColor);renderer.setClearAlpha(oldClearAlpha);renderer.autoClear=oldAutoClear;}}class TexturePass extends Pass{constructor(map,opacity){super();const shader=CopyShader;this.map=map;this.opacity=opacity!==void 0?opacity:1;this.uniforms=UniformsUtils.clone(shader.uniforms);this.material=new ShaderMaterial({uniforms:this.uniforms,vertexShader:shader.vertexShader,fragmentShader:shader.fragmentShader,depthTest:false,depthWrite:false,premultipliedAlpha:true});this.needsSwap=false;this.fsQuad=new FullScreenQuad(null);}render(renderer,writeBuffer,readBuffer){const oldAutoClear=renderer.autoClear;renderer.autoClear=false;this.fsQuad.material=this.material;this.uniforms[\"opacity\"].value=this.opacity;this.uniforms[\"tDiffuse\"].value=this.map;this.material.transparent=this.opacity<1;renderer.setRenderTarget(this.renderToScreen?null:readBuffer);if(this.clear)renderer.clear();this.fsQuad.render(renderer);renderer.autoClear=oldAutoClear;}dispose(){this.material.dispose();this.fsQuad.dispose();}}const LuminosityShader={uniforms:{tDiffuse:{value:null}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"#include \",\"uniform sampler2D tDiffuse;\",\"varying vec2 vUv;\",\"void main() {\",\"\tvec4 texel = texture2D( tDiffuse, vUv );\",\"\tfloat l = linearToRelativeLuminance( texel.rgb );\",\"\tgl_FragColor = vec4( l, l, l, texel.w );\",\"}\"].join(\"\\n\")};const ToneMapShader={uniforms:{tDiffuse:{value:null},averageLuminance:{value:1},luminanceMap:{value:null},maxLuminance:{value:16},minLuminance:{value:0.01},middleGrey:{value:0.6}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"#include \",\"uniform sampler2D tDiffuse;\",\"varying vec2 vUv;\",\"uniform float middleGrey;\",\"uniform float minLuminance;\",\"uniform float maxLuminance;\",\"#ifdef ADAPTED_LUMINANCE\",\"\tuniform sampler2D luminanceMap;\",\"#else\",\"\tuniform float averageLuminance;\",\"#endif\",\"vec3 ToneMap( vec3 vColor ) {\",\"\t#ifdef ADAPTED_LUMINANCE\",// Get the calculated average luminance\n\"\t\tfloat fLumAvg = texture2D(luminanceMap, vec2(0.5, 0.5)).r;\",\"\t#else\",\"\t\tfloat fLumAvg = averageLuminance;\",\"\t#endif\",// Calculate the luminance of the current pixel\n\"\tfloat fLumPixel = linearToRelativeLuminance( vColor );\",// Apply the modified operator (Eq. 4)\n\"\tfloat fLumScaled = (fLumPixel * middleGrey) / max( minLuminance, fLumAvg );\",\"\tfloat fLumCompressed = (fLumScaled * (1.0 + (fLumScaled / (maxLuminance * maxLuminance)))) / (1.0 + fLumScaled);\",\"\treturn fLumCompressed * vColor;\",\"}\",\"void main() {\",\"\tvec4 texel = texture2D( tDiffuse, vUv );\",\"\tgl_FragColor = vec4( ToneMap( texel.xyz ), texel.w );\",\"}\"].join(\"\\n\")};class AdaptiveToneMappingPass extends Pass{constructor(adaptive,resolution){super();this.resolution=resolution!==void 0?resolution:256;this.needsInit=true;this.adaptive=adaptive!==void 0?!!adaptive:true;this.luminanceRT=null;this.previousLuminanceRT=null;this.currentLuminanceRT=null;const copyShader=CopyShader;this.copyUniforms=UniformsUtils.clone(copyShader.uniforms);this.materialCopy=new ShaderMaterial({uniforms:this.copyUniforms,vertexShader:copyShader.vertexShader,fragmentShader:copyShader.fragmentShader,blending:NoBlending,depthTest:false});this.materialLuminance=new ShaderMaterial({uniforms:UniformsUtils.clone(LuminosityShader.uniforms),vertexShader:LuminosityShader.vertexShader,fragmentShader:LuminosityShader.fragmentShader,blending:NoBlending});this.adaptLuminanceShader={defines:{MIP_LEVEL_1X1:(Math.log(this.resolution)/Math.log(2)).toFixed(1)},uniforms:{lastLum:{value:null},currentLum:{value:null},minLuminance:{value:0.01},delta:{value:0.016},tau:{value:1}},vertexShader:`varying vec2 vUv;\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t\t\t}`,fragmentShader:`varying vec2 vUv;\n\n\t\t\t\tuniform sampler2D lastLum;\n\t\t\t\tuniform sampler2D currentLum;\n\t\t\t\tuniform float minLuminance;\n\t\t\t\tuniform float delta;\n\t\t\t\tuniform float tau;\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec4 lastLum = texture2D( lastLum, vUv, MIP_LEVEL_1X1 );\n\t\t\t\t\tvec4 currentLum = texture2D( currentLum, vUv, MIP_LEVEL_1X1 );\n\n\t\t\t\t\tfloat fLastLum = max( minLuminance, lastLum.r );\n\t\t\t\t\tfloat fCurrentLum = max( minLuminance, currentLum.r );\n\n\t\t\t\t\t//The adaption seems to work better in extreme lighting differences\n\t\t\t\t\t//if the input luminance is squared.\n\t\t\t\t\tfCurrentLum *= fCurrentLum;\n\n\t\t\t\t\t// Adapt the luminance using Pattanaik's technique\n\t\t\t\t\tfloat fAdaptedLum = fLastLum + (fCurrentLum - fLastLum) * (1.0 - exp(-delta * tau));\n\t\t\t\t\t// \"fAdaptedLum = sqrt(fAdaptedLum);\n\t\t\t\t\tgl_FragColor.r = fAdaptedLum;\n\t\t\t\t}`};this.materialAdaptiveLum=new ShaderMaterial({uniforms:UniformsUtils.clone(this.adaptLuminanceShader.uniforms),vertexShader:this.adaptLuminanceShader.vertexShader,fragmentShader:this.adaptLuminanceShader.fragmentShader,defines:Object.assign({},this.adaptLuminanceShader.defines),blending:NoBlending});this.materialToneMap=new ShaderMaterial({uniforms:UniformsUtils.clone(ToneMapShader.uniforms),vertexShader:ToneMapShader.vertexShader,fragmentShader:ToneMapShader.fragmentShader,blending:NoBlending});this.fsQuad=new FullScreenQuad(null);}render(renderer,writeBuffer,readBuffer,deltaTime){if(this.needsInit){this.reset(renderer);this.luminanceRT.texture.type=readBuffer.texture.type;this.previousLuminanceRT.texture.type=readBuffer.texture.type;this.currentLuminanceRT.texture.type=readBuffer.texture.type;this.needsInit=false;}if(this.adaptive){this.fsQuad.material=this.materialLuminance;this.materialLuminance.uniforms.tDiffuse.value=readBuffer.texture;renderer.setRenderTarget(this.currentLuminanceRT);this.fsQuad.render(renderer);this.fsQuad.material=this.materialAdaptiveLum;this.materialAdaptiveLum.uniforms.delta.value=deltaTime;this.materialAdaptiveLum.uniforms.lastLum.value=this.previousLuminanceRT.texture;this.materialAdaptiveLum.uniforms.currentLum.value=this.currentLuminanceRT.texture;renderer.setRenderTarget(this.luminanceRT);this.fsQuad.render(renderer);this.fsQuad.material=this.materialCopy;this.copyUniforms.tDiffuse.value=this.luminanceRT.texture;renderer.setRenderTarget(this.previousLuminanceRT);this.fsQuad.render(renderer);}this.fsQuad.material=this.materialToneMap;this.materialToneMap.uniforms.tDiffuse.value=readBuffer.texture;if(this.renderToScreen){renderer.setRenderTarget(null);this.fsQuad.render(renderer);}else{renderer.setRenderTarget(writeBuffer);if(this.clear)renderer.clear();this.fsQuad.render(renderer);}}reset(){if(this.luminanceRT){this.luminanceRT.dispose();}if(this.currentLuminanceRT){this.currentLuminanceRT.dispose();}if(this.previousLuminanceRT){this.previousLuminanceRT.dispose();}this.luminanceRT=new WebGLRenderTarget(this.resolution,this.resolution);this.luminanceRT.texture.name=\"AdaptiveToneMappingPass.l\";this.luminanceRT.texture.generateMipmaps=false;this.previousLuminanceRT=new WebGLRenderTarget(this.resolution,this.resolution);this.previousLuminanceRT.texture.name=\"AdaptiveToneMappingPass.pl\";this.previousLuminanceRT.texture.generateMipmaps=false;const pars={minFilter:LinearMipmapLinearFilter,generateMipmaps:true};this.currentLuminanceRT=new WebGLRenderTarget(this.resolution,this.resolution,pars);this.currentLuminanceRT.texture.name=\"AdaptiveToneMappingPass.cl\";if(this.adaptive){this.materialToneMap.defines[\"ADAPTED_LUMINANCE\"]=\"\";this.materialToneMap.uniforms.luminanceMap.value=this.luminanceRT.texture;}this.fsQuad.material=new MeshBasicMaterial({color:7829367});this.materialLuminance.needsUpdate=true;this.materialAdaptiveLum.needsUpdate=true;this.materialToneMap.needsUpdate=true;}setAdaptive(adaptive){if(adaptive){this.adaptive=true;this.materialToneMap.defines[\"ADAPTED_LUMINANCE\"]=\"\";this.materialToneMap.uniforms.luminanceMap.value=this.luminanceRT.texture;}else{this.adaptive=false;delete this.materialToneMap.defines[\"ADAPTED_LUMINANCE\"];this.materialToneMap.uniforms.luminanceMap.value=null;}this.materialToneMap.needsUpdate=true;}setAdaptionRate(rate){if(rate){this.materialAdaptiveLum.uniforms.tau.value=Math.abs(rate);}}setMinLuminance(minLum){if(minLum){this.materialToneMap.uniforms.minLuminance.value=minLum;this.materialAdaptiveLum.uniforms.minLuminance.value=minLum;}}setMaxLuminance(maxLum){if(maxLum){this.materialToneMap.uniforms.maxLuminance.value=maxLum;}}setAverageLuminance(avgLum){if(avgLum){this.materialToneMap.uniforms.averageLuminance.value=avgLum;}}setMiddleGrey(middleGrey){if(middleGrey){this.materialToneMap.uniforms.middleGrey.value=middleGrey;}}dispose(){if(this.luminanceRT){this.luminanceRT.dispose();}if(this.previousLuminanceRT){this.previousLuminanceRT.dispose();}if(this.currentLuminanceRT){this.currentLuminanceRT.dispose();}if(this.materialLuminance){this.materialLuminance.dispose();}if(this.materialAdaptiveLum){this.materialAdaptiveLum.dispose();}if(this.materialCopy){this.materialCopy.dispose();}if(this.materialToneMap){this.materialToneMap.dispose();}}}const LuminosityHighPassShader={shaderID:\"luminosityHighPass\",uniforms:{tDiffuse:{value:null},luminosityThreshold:{value:1},smoothWidth:{value:1},defaultColor:{value:/*@__PURE__*/new Color(0)},defaultOpacity:{value:0}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform sampler2D tDiffuse;\",\"uniform vec3 defaultColor;\",\"uniform float defaultOpacity;\",\"uniform float luminosityThreshold;\",\"uniform float smoothWidth;\",\"varying vec2 vUv;\",\"void main() {\",\"\tvec4 texel = texture2D( tDiffuse, vUv );\",\"\tvec3 luma = vec3( 0.299, 0.587, 0.114 );\",\"\tfloat v = dot( texel.xyz, luma );\",\"\tvec4 outputColor = vec4( defaultColor.rgb, defaultOpacity );\",\"\tfloat alpha = smoothstep( luminosityThreshold, luminosityThreshold + smoothWidth, v );\",\"\tgl_FragColor = mix( outputColor, texel, alpha );\",\"}\"].join(\"\\n\")};const _UnrealBloomPass=class extends Pass{constructor(resolution,strength,radius,threshold){super();this.strength=strength!==void 0?strength:1;this.radius=radius;this.threshold=threshold;this.resolution=resolution!==void 0?new Vector2(resolution.x,resolution.y):new Vector2(256,256);this.clearColor=new Color(0,0,0);this.renderTargetsHorizontal=[];this.renderTargetsVertical=[];this.nMips=5;let resx=Math.round(this.resolution.x/2);let resy=Math.round(this.resolution.y/2);this.renderTargetBright=new WebGLRenderTarget(resx,resy,{type:HalfFloatType});this.renderTargetBright.texture.name=\"UnrealBloomPass.bright\";this.renderTargetBright.texture.generateMipmaps=false;for(let i2=0;i2\n\t\t\t\tvarying vec2 vUv;\n\t\t\t\tuniform sampler2D colorTexture;\n\t\t\t\tuniform vec2 texSize;\n\t\t\t\tuniform vec2 direction;\n\n\t\t\t\tfloat gaussianPdf(in float x, in float sigma) {\n\t\t\t\t\treturn 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma;\n\t\t\t\t}\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec2 invSize = 1.0 / texSize;\n\t\t\t\t\tfloat fSigma = float(SIGMA);\n\t\t\t\t\tfloat weightSum = gaussianPdf(0.0, fSigma);\n\t\t\t\t\tvec3 diffuseSum = texture2D( colorTexture, vUv).rgb * weightSum;\n\t\t\t\t\tfor( int i = 1; i < KERNEL_RADIUS; i ++ ) {\n\t\t\t\t\t\tfloat x = float(i);\n\t\t\t\t\t\tfloat w = gaussianPdf(x, fSigma);\n\t\t\t\t\t\tvec2 uvOffset = direction * invSize * x;\n\t\t\t\t\t\tvec3 sample1 = texture2D( colorTexture, vUv + uvOffset).rgb;\n\t\t\t\t\t\tvec3 sample2 = texture2D( colorTexture, vUv - uvOffset).rgb;\n\t\t\t\t\t\tdiffuseSum += (sample1 + sample2) * w;\n\t\t\t\t\t\tweightSum += 2.0 * w;\n\t\t\t\t\t}\n\t\t\t\t\tgl_FragColor = vec4(diffuseSum/weightSum, 1.0);\n\t\t\t\t}`});}getCompositeMaterial(nMips){return new ShaderMaterial({defines:{NUM_MIPS:nMips},uniforms:{blurTexture1:{value:null},blurTexture2:{value:null},blurTexture3:{value:null},blurTexture4:{value:null},blurTexture5:{value:null},bloomStrength:{value:1},bloomFactors:{value:null},bloomTintColors:{value:null},bloomRadius:{value:0}},vertexShader:`varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}`,fragmentShader:`varying vec2 vUv;\n\t\t\t\tuniform sampler2D blurTexture1;\n\t\t\t\tuniform sampler2D blurTexture2;\n\t\t\t\tuniform sampler2D blurTexture3;\n\t\t\t\tuniform sampler2D blurTexture4;\n\t\t\t\tuniform sampler2D blurTexture5;\n\t\t\t\tuniform float bloomStrength;\n\t\t\t\tuniform float bloomRadius;\n\t\t\t\tuniform float bloomFactors[NUM_MIPS];\n\t\t\t\tuniform vec3 bloomTintColors[NUM_MIPS];\n\n\t\t\t\tfloat lerpBloomFactor(const in float factor) {\n\t\t\t\t\tfloat mirrorFactor = 1.2 - factor;\n\t\t\t\t\treturn mix(factor, mirrorFactor, bloomRadius);\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tgl_FragColor = bloomStrength * ( lerpBloomFactor(bloomFactors[0]) * vec4(bloomTintColors[0], 1.0) * texture2D(blurTexture1, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[1]) * vec4(bloomTintColors[1], 1.0) * texture2D(blurTexture2, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[2]) * vec4(bloomTintColors[2], 1.0) * texture2D(blurTexture3, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * texture2D(blurTexture4, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * texture2D(blurTexture5, vUv) );\n\t\t\t\t}`});}};let UnrealBloomPass=_UnrealBloomPass;/*@__PURE__*/__publicField(UnrealBloomPass,\"BlurDirectionX\",/*@__PURE__*/new Vector2(1,0));/*@__PURE__*/__publicField(UnrealBloomPass,\"BlurDirectionY\",/*@__PURE__*/new Vector2(0,1));class CubeTexturePass extends Pass{constructor(camera,tCube,opacity=1){super();this.camera=camera;this.needsSwap=false;this.cubeShader=ShaderLib[\"cube\"];this.cubeMesh=new Mesh(new BoxGeometry(10,10,10),new ShaderMaterial({uniforms:UniformsUtils.clone(this.cubeShader.uniforms),vertexShader:this.cubeShader.vertexShader,fragmentShader:this.cubeShader.fragmentShader,depthTest:false,depthWrite:false,side:BackSide}));Object.defineProperty(this.cubeMesh.material,\"envMap\",{get:function(){return this.uniforms.tCube.value;}});this.tCube=tCube;this.opacity=opacity;this.cubeScene=new Scene();this.cubeCamera=new PerspectiveCamera();this.cubeScene.add(this.cubeMesh);}render(renderer,writeBuffer,readBuffer){const oldAutoClear=renderer.autoClear;renderer.autoClear=false;this.cubeCamera.projectionMatrix.copy(this.camera.projectionMatrix);this.cubeCamera.quaternion.setFromRotationMatrix(this.camera.matrixWorld);this.cubeMesh.material.uniforms.tCube.value=this.tCube;this.cubeMesh.material.uniforms.tFlip.value=this.tCube.isCubeTexture&&this.tCube.isRenderTargetTexture===false?-1:1;this.cubeMesh.material.uniforms.opacity.value=this.opacity;this.cubeMesh.material.transparent=this.opacity<1;renderer.setRenderTarget(this.renderToScreen?null:readBuffer);if(this.clear)renderer.clear();renderer.render(this.cubeScene,this.cubeCamera);renderer.autoClear=oldAutoClear;}dispose(){this.cubeMesh.geometry.dispose();this.cubeMesh.material.dispose();}}const SAOShader={defines:{NUM_SAMPLES:7,NUM_RINGS:4,NORMAL_TEXTURE:0,DIFFUSE_TEXTURE:0,DEPTH_PACKING:1,PERSPECTIVE_CAMERA:1},uniforms:{tDepth:{value:null},tDiffuse:{value:null},tNormal:{value:null},size:{value:/*@__PURE__*/new Vector2(512,512)},cameraNear:{value:1},cameraFar:{value:100},cameraProjectionMatrix:{value:/*@__PURE__*/new Matrix4()},cameraInverseProjectionMatrix:{value:/*@__PURE__*/new Matrix4()},scale:{value:1},intensity:{value:0.1},bias:{value:0.5},minResolution:{value:0},kernelRadius:{value:100},randomSeed:{value:0}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"#include \",\"varying vec2 vUv;\",\"#if DIFFUSE_TEXTURE == 1\",\"uniform sampler2D tDiffuse;\",\"#endif\",\"uniform sampler2D tDepth;\",\"#if NORMAL_TEXTURE == 1\",\"uniform sampler2D tNormal;\",\"#endif\",\"uniform float cameraNear;\",\"uniform float cameraFar;\",\"uniform mat4 cameraProjectionMatrix;\",\"uniform mat4 cameraInverseProjectionMatrix;\",\"uniform float scale;\",\"uniform float intensity;\",\"uniform float bias;\",\"uniform float kernelRadius;\",\"uniform float minResolution;\",\"uniform vec2 size;\",\"uniform float randomSeed;\",\"// RGBA depth\",\"#include \",\"vec4 getDefaultColor( const in vec2 screenPosition ) {\",\"\t#if DIFFUSE_TEXTURE == 1\",\"\treturn texture2D( tDiffuse, vUv );\",\"\t#else\",\"\treturn vec4( 1.0 );\",\"\t#endif\",\"}\",\"float getDepth( const in vec2 screenPosition ) {\",\"\t#if DEPTH_PACKING == 1\",\"\treturn unpackRGBAToDepth( texture2D( tDepth, screenPosition ) );\",\"\t#else\",\"\treturn texture2D( tDepth, screenPosition ).x;\",\"\t#endif\",\"}\",\"float getViewZ( const in float depth ) {\",\"\t#if PERSPECTIVE_CAMERA == 1\",\"\treturn perspectiveDepthToViewZ( depth, cameraNear, cameraFar );\",\"\t#else\",\"\treturn orthographicDepthToViewZ( depth, cameraNear, cameraFar );\",\"\t#endif\",\"}\",\"vec3 getViewPosition( const in vec2 screenPosition, const in float depth, const in float viewZ ) {\",\"\tfloat clipW = cameraProjectionMatrix[2][3] * viewZ + cameraProjectionMatrix[3][3];\",\"\tvec4 clipPosition = vec4( ( vec3( screenPosition, depth ) - 0.5 ) * 2.0, 1.0 );\",\"\tclipPosition *= clipW; // unprojection.\",\"\treturn ( cameraInverseProjectionMatrix * clipPosition ).xyz;\",\"}\",\"vec3 getViewNormal( const in vec3 viewPosition, const in vec2 screenPosition ) {\",\"\t#if NORMAL_TEXTURE == 1\",\"\treturn unpackRGBToNormal( texture2D( tNormal, screenPosition ).xyz );\",\"\t#else\",\"\treturn normalize( cross( dFdx( viewPosition ), dFdy( viewPosition ) ) );\",\"\t#endif\",\"}\",\"float scaleDividedByCameraFar;\",\"float minResolutionMultipliedByCameraFar;\",\"float getOcclusion( const in vec3 centerViewPosition, const in vec3 centerViewNormal, const in vec3 sampleViewPosition ) {\",\"\tvec3 viewDelta = sampleViewPosition - centerViewPosition;\",\"\tfloat viewDistance = length( viewDelta );\",\"\tfloat scaledScreenDistance = scaleDividedByCameraFar * viewDistance;\",\"\treturn max(0.0, (dot(centerViewNormal, viewDelta) - minResolutionMultipliedByCameraFar) / scaledScreenDistance - bias) / (1.0 + pow2( scaledScreenDistance ) );\",\"}\",\"// moving costly divides into consts\",\"const float ANGLE_STEP = PI2 * float( NUM_RINGS ) / float( NUM_SAMPLES );\",\"const float INV_NUM_SAMPLES = 1.0 / float( NUM_SAMPLES );\",\"float getAmbientOcclusion( const in vec3 centerViewPosition ) {\",\"\t// precompute some variables require in getOcclusion.\",\"\tscaleDividedByCameraFar = scale / cameraFar;\",\"\tminResolutionMultipliedByCameraFar = minResolution * cameraFar;\",\"\tvec3 centerViewNormal = getViewNormal( centerViewPosition, vUv );\",\"\t// jsfiddle that shows sample pattern: https://jsfiddle.net/a16ff1p7/\",\"\tfloat angle = rand( vUv + randomSeed ) * PI2;\",\"\tvec2 radius = vec2( kernelRadius * INV_NUM_SAMPLES ) / size;\",\"\tvec2 radiusStep = radius;\",\"\tfloat occlusionSum = 0.0;\",\"\tfloat weightSum = 0.0;\",\"\tfor( int i = 0; i < NUM_SAMPLES; i ++ ) {\",\"\t\tvec2 sampleUv = vUv + vec2( cos( angle ), sin( angle ) ) * radius;\",\"\t\tradius += radiusStep;\",\"\t\tangle += ANGLE_STEP;\",\"\t\tfloat sampleDepth = getDepth( sampleUv );\",\"\t\tif( sampleDepth >= ( 1.0 - EPSILON ) ) {\",\"\t\t\tcontinue;\",\"\t\t}\",\"\t\tfloat sampleViewZ = getViewZ( sampleDepth );\",\"\t\tvec3 sampleViewPosition = getViewPosition( sampleUv, sampleDepth, sampleViewZ );\",\"\t\tocclusionSum += getOcclusion( centerViewPosition, centerViewNormal, sampleViewPosition );\",\"\t\tweightSum += 1.0;\",\"\t}\",\"\tif( weightSum == 0.0 ) discard;\",\"\treturn occlusionSum * ( intensity / weightSum );\",\"}\",\"void main() {\",\"\tfloat centerDepth = getDepth( vUv );\",\"\tif( centerDepth >= ( 1.0 - EPSILON ) ) {\",\"\t\tdiscard;\",\"\t}\",\"\tfloat centerViewZ = getViewZ( centerDepth );\",\"\tvec3 viewPosition = getViewPosition( vUv, centerDepth, centerViewZ );\",\"\tfloat ambientOcclusion = getAmbientOcclusion( viewPosition );\",\"\tgl_FragColor = getDefaultColor( vUv );\",\"\tgl_FragColor.xyz *= 1.0 - ambientOcclusion;\",\"}\"].join(\"\\n\")};const DepthLimitedBlurShader={defines:{KERNEL_RADIUS:4,DEPTH_PACKING:1,PERSPECTIVE_CAMERA:1},uniforms:{tDiffuse:{value:null},size:{value:/*@__PURE__*/new Vector2(512,512)},sampleUvOffsets:{value:[/*@__PURE__*/new Vector2(0,0)]},sampleWeights:{value:[1]},tDepth:{value:null},cameraNear:{value:10},cameraFar:{value:1e3},depthCutoff:{value:10}},vertexShader:/*@__PURE__*/[\"#include \",\"uniform vec2 size;\",\"varying vec2 vUv;\",\"varying vec2 vInvSize;\",\"void main() {\",\"\tvUv = uv;\",\"\tvInvSize = 1.0 / size;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"#include \",\"#include \",\"uniform sampler2D tDiffuse;\",\"uniform sampler2D tDepth;\",\"uniform float cameraNear;\",\"uniform float cameraFar;\",\"uniform float depthCutoff;\",\"uniform vec2 sampleUvOffsets[ KERNEL_RADIUS + 1 ];\",\"uniform float sampleWeights[ KERNEL_RADIUS + 1 ];\",\"varying vec2 vUv;\",\"varying vec2 vInvSize;\",\"float getDepth( const in vec2 screenPosition ) {\",\"\t#if DEPTH_PACKING == 1\",\"\treturn unpackRGBAToDepth( texture2D( tDepth, screenPosition ) );\",\"\t#else\",\"\treturn texture2D( tDepth, screenPosition ).x;\",\"\t#endif\",\"}\",\"float getViewZ( const in float depth ) {\",\"\t#if PERSPECTIVE_CAMERA == 1\",\"\treturn perspectiveDepthToViewZ( depth, cameraNear, cameraFar );\",\"\t#else\",\"\treturn orthographicDepthToViewZ( depth, cameraNear, cameraFar );\",\"\t#endif\",\"}\",\"void main() {\",\"\tfloat depth = getDepth( vUv );\",\"\tif( depth >= ( 1.0 - EPSILON ) ) {\",\"\t\tdiscard;\",\"\t}\",\"\tfloat centerViewZ = -getViewZ( depth );\",\"\tbool rBreak = false, lBreak = false;\",\"\tfloat weightSum = sampleWeights[0];\",\"\tvec4 diffuseSum = texture2D( tDiffuse, vUv ) * weightSum;\",\"\tfor( int i = 1; i <= KERNEL_RADIUS; i ++ ) {\",\"\t\tfloat sampleWeight = sampleWeights[i];\",\"\t\tvec2 sampleUvOffset = sampleUvOffsets[i] * vInvSize;\",\"\t\tvec2 sampleUv = vUv + sampleUvOffset;\",\"\t\tfloat viewZ = -getViewZ( getDepth( sampleUv ) );\",\"\t\tif( abs( viewZ - centerViewZ ) > depthCutoff ) rBreak = true;\",\"\t\tif( ! rBreak ) {\",\"\t\t\tdiffuseSum += texture2D( tDiffuse, sampleUv ) * sampleWeight;\",\"\t\t\tweightSum += sampleWeight;\",\"\t\t}\",\"\t\tsampleUv = vUv - sampleUvOffset;\",\"\t\tviewZ = -getViewZ( getDepth( sampleUv ) );\",\"\t\tif( abs( viewZ - centerViewZ ) > depthCutoff ) lBreak = true;\",\"\t\tif( ! lBreak ) {\",\"\t\t\tdiffuseSum += texture2D( tDiffuse, sampleUv ) * sampleWeight;\",\"\t\t\tweightSum += sampleWeight;\",\"\t\t}\",\"\t}\",\"\tgl_FragColor = diffuseSum / weightSum;\",\"}\"].join(\"\\n\")};const BlurShaderUtils={createSampleWeights:(kernelRadius,stdDev)=>{const gaussian=(x,stdDev2)=>{return Math.exp(-(x*x)/(2*(stdDev2*stdDev2)))/(Math.sqrt(2*Math.PI)*stdDev2);};const weights=[];for(let i2=0;i2<=kernelRadius;i2++){weights.push(gaussian(i2,stdDev));}return weights;},createSampleOffsets:(kernelRadius,uvIncrement)=>{const offsets=[];for(let i2=0;i2<=kernelRadius;i2++){offsets.push(uvIncrement.clone().multiplyScalar(i2));}return offsets;},configure:(shader,kernelRadius,stdDev,uvIncrement)=>{shader.defines[\"KERNEL_RADIUS\"]=kernelRadius;shader.uniforms[\"sampleUvOffsets\"].value=BlurShaderUtils.createSampleOffsets(kernelRadius,uvIncrement);shader.uniforms[\"sampleWeights\"].value=BlurShaderUtils.createSampleWeights(kernelRadius,stdDev);shader.needsUpdate=true;}};class SAOPass extends Pass{constructor(scene,camera,useDepthTexture=false,useNormals=false,resolution=new Vector2(256,256)){super();this.scene=scene;this.camera=camera;this.clear=true;this.needsSwap=false;this.supportsDepthTextureExtension=useDepthTexture;this.supportsNormalTexture=useNormals;this.originalClearColor=new Color();this._oldClearColor=new Color();this.oldClearAlpha=1;this.params={output:0,saoBias:0.5,saoIntensity:0.18,saoScale:1,saoKernelRadius:100,saoMinResolution:0,saoBlur:true,saoBlurRadius:8,saoBlurStdDev:4,saoBlurDepthCutoff:0.01};this.resolution=new Vector2(resolution.x,resolution.y);this.saoRenderTarget=new WebGLRenderTarget(this.resolution.x,this.resolution.y,{type:HalfFloatType});this.blurIntermediateRenderTarget=this.saoRenderTarget.clone();this.beautyRenderTarget=this.saoRenderTarget.clone();this.normalRenderTarget=new WebGLRenderTarget(this.resolution.x,this.resolution.y,{minFilter:NearestFilter,magFilter:NearestFilter,type:HalfFloatType});this.depthRenderTarget=this.normalRenderTarget.clone();let depthTexture;if(this.supportsDepthTextureExtension){depthTexture=new DepthTexture();depthTexture.type=UnsignedShortType;this.beautyRenderTarget.depthTexture=depthTexture;this.beautyRenderTarget.depthBuffer=true;}this.depthMaterial=new MeshDepthMaterial();this.depthMaterial.depthPacking=RGBADepthPacking;this.depthMaterial.blending=NoBlending;this.normalMaterial=new MeshNormalMaterial();this.normalMaterial.blending=NoBlending;this.saoMaterial=new ShaderMaterial({defines:Object.assign({},SAOShader.defines),fragmentShader:SAOShader.fragmentShader,vertexShader:SAOShader.vertexShader,uniforms:UniformsUtils.clone(SAOShader.uniforms)});this.saoMaterial.extensions.derivatives=true;this.saoMaterial.defines[\"DEPTH_PACKING\"]=this.supportsDepthTextureExtension?0:1;this.saoMaterial.defines[\"NORMAL_TEXTURE\"]=this.supportsNormalTexture?1:0;this.saoMaterial.defines[\"PERSPECTIVE_CAMERA\"]=this.camera.isPerspectiveCamera?1:0;this.saoMaterial.uniforms[\"tDepth\"].value=this.supportsDepthTextureExtension?depthTexture:this.depthRenderTarget.texture;this.saoMaterial.uniforms[\"tNormal\"].value=this.normalRenderTarget.texture;this.saoMaterial.uniforms[\"size\"].value.set(this.resolution.x,this.resolution.y);this.saoMaterial.uniforms[\"cameraInverseProjectionMatrix\"].value.copy(this.camera.projectionMatrixInverse);this.saoMaterial.uniforms[\"cameraProjectionMatrix\"].value=this.camera.projectionMatrix;this.saoMaterial.blending=NoBlending;this.vBlurMaterial=new ShaderMaterial({uniforms:UniformsUtils.clone(DepthLimitedBlurShader.uniforms),defines:Object.assign({},DepthLimitedBlurShader.defines),vertexShader:DepthLimitedBlurShader.vertexShader,fragmentShader:DepthLimitedBlurShader.fragmentShader});this.vBlurMaterial.defines[\"DEPTH_PACKING\"]=this.supportsDepthTextureExtension?0:1;this.vBlurMaterial.defines[\"PERSPECTIVE_CAMERA\"]=this.camera.isPerspectiveCamera?1:0;this.vBlurMaterial.uniforms[\"tDiffuse\"].value=this.saoRenderTarget.texture;this.vBlurMaterial.uniforms[\"tDepth\"].value=this.supportsDepthTextureExtension?depthTexture:this.depthRenderTarget.texture;this.vBlurMaterial.uniforms[\"size\"].value.set(this.resolution.x,this.resolution.y);this.vBlurMaterial.blending=NoBlending;this.hBlurMaterial=new ShaderMaterial({uniforms:UniformsUtils.clone(DepthLimitedBlurShader.uniforms),defines:Object.assign({},DepthLimitedBlurShader.defines),vertexShader:DepthLimitedBlurShader.vertexShader,fragmentShader:DepthLimitedBlurShader.fragmentShader});this.hBlurMaterial.defines[\"DEPTH_PACKING\"]=this.supportsDepthTextureExtension?0:1;this.hBlurMaterial.defines[\"PERSPECTIVE_CAMERA\"]=this.camera.isPerspectiveCamera?1:0;this.hBlurMaterial.uniforms[\"tDiffuse\"].value=this.blurIntermediateRenderTarget.texture;this.hBlurMaterial.uniforms[\"tDepth\"].value=this.supportsDepthTextureExtension?depthTexture:this.depthRenderTarget.texture;this.hBlurMaterial.uniforms[\"size\"].value.set(this.resolution.x,this.resolution.y);this.hBlurMaterial.blending=NoBlending;this.materialCopy=new ShaderMaterial({uniforms:UniformsUtils.clone(CopyShader.uniforms),vertexShader:CopyShader.vertexShader,fragmentShader:CopyShader.fragmentShader,blending:NoBlending});this.materialCopy.transparent=true;this.materialCopy.depthTest=false;this.materialCopy.depthWrite=false;this.materialCopy.blending=CustomBlending;this.materialCopy.blendSrc=DstColorFactor;this.materialCopy.blendDst=ZeroFactor;this.materialCopy.blendEquation=AddEquation;this.materialCopy.blendSrcAlpha=DstAlphaFactor;this.materialCopy.blendDstAlpha=ZeroFactor;this.materialCopy.blendEquationAlpha=AddEquation;this.depthCopy=new ShaderMaterial({uniforms:UniformsUtils.clone(UnpackDepthRGBAShader.uniforms),vertexShader:UnpackDepthRGBAShader.vertexShader,fragmentShader:UnpackDepthRGBAShader.fragmentShader,blending:NoBlending});this.fsQuad=new FullScreenQuad(null);}render(renderer,writeBuffer,readBuffer){if(this.renderToScreen){this.materialCopy.blending=NoBlending;this.materialCopy.uniforms[\"tDiffuse\"].value=readBuffer.texture;this.materialCopy.needsUpdate=true;this.renderPass(renderer,this.materialCopy,null);}if(this.params.output===1){return;}renderer.getClearColor(this._oldClearColor);this.oldClearAlpha=renderer.getClearAlpha();const oldAutoClear=renderer.autoClear;renderer.autoClear=false;renderer.setRenderTarget(this.depthRenderTarget);renderer.clear();this.saoMaterial.uniforms[\"bias\"].value=this.params.saoBias;this.saoMaterial.uniforms[\"intensity\"].value=this.params.saoIntensity;this.saoMaterial.uniforms[\"scale\"].value=this.params.saoScale;this.saoMaterial.uniforms[\"kernelRadius\"].value=this.params.saoKernelRadius;this.saoMaterial.uniforms[\"minResolution\"].value=this.params.saoMinResolution;this.saoMaterial.uniforms[\"cameraNear\"].value=this.camera.near;this.saoMaterial.uniforms[\"cameraFar\"].value=this.camera.far;const depthCutoff=this.params.saoBlurDepthCutoff*(this.camera.far-this.camera.near);this.vBlurMaterial.uniforms[\"depthCutoff\"].value=depthCutoff;this.hBlurMaterial.uniforms[\"depthCutoff\"].value=depthCutoff;this.vBlurMaterial.uniforms[\"cameraNear\"].value=this.camera.near;this.vBlurMaterial.uniforms[\"cameraFar\"].value=this.camera.far;this.hBlurMaterial.uniforms[\"cameraNear\"].value=this.camera.near;this.hBlurMaterial.uniforms[\"cameraFar\"].value=this.camera.far;this.params.saoBlurRadius=Math.floor(this.params.saoBlurRadius);if(this.prevStdDev!==this.params.saoBlurStdDev||this.prevNumSamples!==this.params.saoBlurRadius){BlurShaderUtils.configure(this.vBlurMaterial,this.params.saoBlurRadius,this.params.saoBlurStdDev,new Vector2(0,1));BlurShaderUtils.configure(this.hBlurMaterial,this.params.saoBlurRadius,this.params.saoBlurStdDev,new Vector2(1,0));this.prevStdDev=this.params.saoBlurStdDev;this.prevNumSamples=this.params.saoBlurRadius;}renderer.setClearColor(0);renderer.setRenderTarget(this.beautyRenderTarget);renderer.clear();renderer.render(this.scene,this.camera);if(!this.supportsDepthTextureExtension){this.renderOverride(renderer,this.depthMaterial,this.depthRenderTarget,0,1);}if(this.supportsNormalTexture){this.renderOverride(renderer,this.normalMaterial,this.normalRenderTarget,7829503,1);}this.renderPass(renderer,this.saoMaterial,this.saoRenderTarget,16777215,1);if(this.params.saoBlur){this.renderPass(renderer,this.vBlurMaterial,this.blurIntermediateRenderTarget,16777215,1);this.renderPass(renderer,this.hBlurMaterial,this.saoRenderTarget,16777215,1);}let outputMaterial=this.materialCopy;if(this.params.output===3){if(this.supportsDepthTextureExtension){this.materialCopy.uniforms[\"tDiffuse\"].value=this.beautyRenderTarget.depthTexture;this.materialCopy.needsUpdate=true;}else{this.depthCopy.uniforms[\"tDiffuse\"].value=this.depthRenderTarget.texture;this.depthCopy.needsUpdate=true;outputMaterial=this.depthCopy;}}else if(this.params.output===4){this.materialCopy.uniforms[\"tDiffuse\"].value=this.normalRenderTarget.texture;this.materialCopy.needsUpdate=true;}else{this.materialCopy.uniforms[\"tDiffuse\"].value=this.saoRenderTarget.texture;this.materialCopy.needsUpdate=true;}if(this.params.output===0){outputMaterial.blending=CustomBlending;}else{outputMaterial.blending=NoBlending;}this.renderPass(renderer,outputMaterial,this.renderToScreen?null:readBuffer);renderer.setClearColor(this._oldClearColor,this.oldClearAlpha);renderer.autoClear=oldAutoClear;}renderPass(renderer,passMaterial,renderTarget,clearColor,clearAlpha){renderer.getClearColor(this.originalClearColor);const originalClearAlpha=renderer.getClearAlpha();const originalAutoClear=renderer.autoClear;renderer.setRenderTarget(renderTarget);renderer.autoClear=false;if(clearColor!==void 0&&clearColor!==null){renderer.setClearColor(clearColor);renderer.setClearAlpha(clearAlpha||0);renderer.clear();}this.fsQuad.material=passMaterial;this.fsQuad.render(renderer);renderer.autoClear=originalAutoClear;renderer.setClearColor(this.originalClearColor);renderer.setClearAlpha(originalClearAlpha);}renderOverride(renderer,overrideMaterial,renderTarget,clearColor,clearAlpha){renderer.getClearColor(this.originalClearColor);const originalClearAlpha=renderer.getClearAlpha();const originalAutoClear=renderer.autoClear;renderer.setRenderTarget(renderTarget);renderer.autoClear=false;clearColor=overrideMaterial.clearColor||clearColor;clearAlpha=overrideMaterial.clearAlpha||clearAlpha;if(clearColor!==void 0&&clearColor!==null){renderer.setClearColor(clearColor);renderer.setClearAlpha(clearAlpha||0);renderer.clear();}this.scene.overrideMaterial=overrideMaterial;renderer.render(this.scene,this.camera);this.scene.overrideMaterial=null;renderer.autoClear=originalAutoClear;renderer.setClearColor(this.originalClearColor);renderer.setClearAlpha(originalClearAlpha);}setSize(width,height){this.beautyRenderTarget.setSize(width,height);this.saoRenderTarget.setSize(width,height);this.blurIntermediateRenderTarget.setSize(width,height);this.normalRenderTarget.setSize(width,height);this.depthRenderTarget.setSize(width,height);this.saoMaterial.uniforms[\"size\"].value.set(width,height);this.saoMaterial.uniforms[\"cameraInverseProjectionMatrix\"].value.copy(this.camera.projectionMatrixInverse);this.saoMaterial.uniforms[\"cameraProjectionMatrix\"].value=this.camera.projectionMatrix;this.saoMaterial.needsUpdate=true;this.vBlurMaterial.uniforms[\"size\"].value.set(width,height);this.vBlurMaterial.needsUpdate=true;this.hBlurMaterial.uniforms[\"size\"].value.set(width,height);this.hBlurMaterial.needsUpdate=true;}dispose(){this.saoRenderTarget.dispose();this.blurIntermediateRenderTarget.dispose();this.beautyRenderTarget.dispose();this.normalRenderTarget.dispose();this.depthRenderTarget.dispose();this.depthMaterial.dispose();this.normalMaterial.dispose();this.saoMaterial.dispose();this.vBlurMaterial.dispose();this.hBlurMaterial.dispose();this.materialCopy.dispose();this.depthCopy.dispose();this.fsQuad.dispose();}}/*@__PURE__*/__publicField(SAOPass,\"OUTPUT\",{Beauty:1,Default:0,SAO:2,Depth:3,Normal:4});const AfterimageShader={uniforms:{damp:{value:0.96},tOld:{value:null},tNew:{value:null}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform float damp;\",\"uniform sampler2D tOld;\",\"uniform sampler2D tNew;\",\"varying vec2 vUv;\",\"vec4 when_gt( vec4 x, float y ) {\",\"\treturn max( sign( x - y ), 0.0 );\",\"}\",\"void main() {\",\"\tvec4 texelOld = texture2D( tOld, vUv );\",\"\tvec4 texelNew = texture2D( tNew, vUv );\",\"\ttexelOld *= damp * when_gt( texelOld, 0.1 );\",\"\tgl_FragColor = max(texelNew, texelOld);\",\"}\"].join(\"\\n\")};class AfterimagePass extends Pass{constructor(damp=0.96,shader=AfterimageShader){super();__publicField(this,\"shader\");__publicField(this,\"uniforms\");__publicField(this,\"textureComp\");__publicField(this,\"textureOld\");__publicField(this,\"shaderMaterial\");__publicField(this,\"compFsQuad\");__publicField(this,\"copyFsQuad\");this.shader=shader;this.uniforms=UniformsUtils.clone(shader.uniforms);this.uniforms[\"damp\"].value=damp;this.textureComp=new WebGLRenderTarget(window.innerWidth,window.innerHeight,{minFilter:LinearFilter,magFilter:NearestFilter,format:RGBAFormat});this.textureOld=new WebGLRenderTarget(window.innerWidth,window.innerHeight,{minFilter:LinearFilter,magFilter:NearestFilter,format:RGBAFormat});this.shaderMaterial=new ShaderMaterial({uniforms:this.uniforms,vertexShader:this.shader.vertexShader,fragmentShader:this.shader.fragmentShader});this.compFsQuad=new FullScreenQuad(this.shaderMaterial);let material2=new MeshBasicMaterial();this.copyFsQuad=new FullScreenQuad(material2);}render(renderer,writeBuffer,readBuffer){this.uniforms[\"tOld\"].value=this.textureOld.texture;this.uniforms[\"tNew\"].value=readBuffer.texture;renderer.setRenderTarget(this.textureComp);this.compFsQuad.render(renderer);this.copyFsQuad.material.map=this.textureComp.texture;if(this.renderToScreen){renderer.setRenderTarget(null);this.copyFsQuad.render(renderer);}else{renderer.setRenderTarget(writeBuffer);if(this.clear)renderer.clear();this.copyFsQuad.render(renderer);}let temp=this.textureOld;this.textureOld=this.textureComp;this.textureComp=temp;}setSize(width,height){this.textureComp.setSize(width,height);this.textureOld.setSize(width,height);}}class MaskPass extends Pass{constructor(scene,camera){super();__publicField(this,\"scene\");__publicField(this,\"camera\");__publicField(this,\"inverse\");this.scene=scene;this.camera=camera;this.clear=true;this.needsSwap=false;this.inverse=false;}render(renderer,writeBuffer,readBuffer){const context=renderer.getContext();const state=renderer.state;state.buffers.color.setMask(false);state.buffers.depth.setMask(false);state.buffers.color.setLocked(true);state.buffers.depth.setLocked(true);let writeValue,clearValue;if(this.inverse){writeValue=0;clearValue=1;}else{writeValue=1;clearValue=0;}state.buffers.stencil.setTest(true);state.buffers.stencil.setOp(context.REPLACE,context.REPLACE,context.REPLACE);state.buffers.stencil.setFunc(context.ALWAYS,writeValue,4294967295);state.buffers.stencil.setClear(clearValue);state.buffers.stencil.setLocked(true);renderer.setRenderTarget(readBuffer);if(this.clear)renderer.clear();renderer.render(this.scene,this.camera);renderer.setRenderTarget(writeBuffer);if(this.clear)renderer.clear();renderer.render(this.scene,this.camera);state.buffers.color.setLocked(false);state.buffers.depth.setLocked(false);state.buffers.stencil.setLocked(false);state.buffers.stencil.setFunc(context.EQUAL,1,4294967295);state.buffers.stencil.setOp(context.KEEP,context.KEEP,context.KEEP);state.buffers.stencil.setLocked(true);}}class ClearMaskPass extends Pass{constructor(){super();this.needsSwap=false;}render(renderer){renderer.state.buffers.stencil.setLocked(false);renderer.state.buffers.stencil.setTest(false);}}class EffectComposer{constructor(renderer,renderTarget){__publicField(this,\"renderer\");__publicField(this,\"_pixelRatio\");__publicField(this,\"_width\");__publicField(this,\"_height\");__publicField(this,\"renderTarget1\");__publicField(this,\"renderTarget2\");__publicField(this,\"writeBuffer\");__publicField(this,\"readBuffer\");__publicField(this,\"renderToScreen\");__publicField(this,\"passes\",[]);__publicField(this,\"copyPass\");__publicField(this,\"clock\");this.renderer=renderer;if(renderTarget===void 0){const parameters={minFilter:LinearFilter,magFilter:LinearFilter,format:RGBAFormat};const size2=renderer.getSize(new Vector2());this._pixelRatio=renderer.getPixelRatio();this._width=size2.width;this._height=size2.height;renderTarget=new WebGLRenderTarget(this._width*this._pixelRatio,this._height*this._pixelRatio,parameters);renderTarget.texture.name=\"EffectComposer.rt1\";}else{this._pixelRatio=1;this._width=renderTarget.width;this._height=renderTarget.height;}this.renderTarget1=renderTarget;this.renderTarget2=renderTarget.clone();this.renderTarget2.texture.name=\"EffectComposer.rt2\";this.writeBuffer=this.renderTarget1;this.readBuffer=this.renderTarget2;this.renderToScreen=true;if(CopyShader===void 0){console.error(\"THREE.EffectComposer relies on CopyShader\");}if(ShaderPass===void 0){console.error(\"THREE.EffectComposer relies on ShaderPass\");}this.copyPass=new ShaderPass(CopyShader);this.copyPass.material.blending=NoBlending;this.clock=new Clock();}swapBuffers(){const tmp=this.readBuffer;this.readBuffer=this.writeBuffer;this.writeBuffer=tmp;}addPass(pass){this.passes.push(pass);pass.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio);}insertPass(pass,index){this.passes.splice(index,0,pass);pass.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio);}removePass(pass){const index=this.passes.indexOf(pass);if(index!==-1){this.passes.splice(index,1);}}isLastEnabledPass(passIndex){for(let i2=passIndex+1;i2\n\t\tfloat pointToLineDistance(vec3 x0, vec3 x1, vec3 x2) {\n\t\t\t//x0: point, x1: linePointA, x2: linePointB\n\t\t\t//https://mathworld.wolfram.com/Point-LineDistance3-Dimensional.html\n\t\t\treturn length(cross(x0-x1,x0-x2))/length(x2-x1);\n\t\t}\n\t\tfloat pointPlaneDistance(vec3 point,vec3 planePoint,vec3 planeNormal){\n\t\t\t// https://mathworld.wolfram.com/Point-PlaneDistance.html\n\t\t\t//// https://en.wikipedia.org/wiki/Plane_(geometry)\n\t\t\t//// http://paulbourke.net/geometry/pointlineplane/\n\t\t\tfloat a=planeNormal.x,b=planeNormal.y,c=planeNormal.z;\n\t\t\tfloat x0=point.x,y0=point.y,z0=point.z;\n\t\t\tfloat x=planePoint.x,y=planePoint.y,z=planePoint.z;\n\t\t\tfloat d=-(a*x+b*y+c*z);\n\t\t\tfloat distance=(a*x0+b*y0+c*z0+d)/sqrt(a*a+b*b+c*c);\n\t\t\treturn distance;\n\t\t}\n\t\tfloat getDepth( const in vec2 uv ) {\n\t\t\treturn texture2D( tDepth, uv ).x;\n\t\t}\n\t\tfloat getViewZ( const in float depth ) {\n\t\t\t#ifdef isPerspectiveCamera\n\t\t\t\treturn perspectiveDepthToViewZ( depth, cameraNear, cameraFar );\n\t\t\t#else\n\t\t\t\treturn orthographicDepthToViewZ( depth, cameraNear, cameraFar );\n\t\t\t#endif\n\t\t}\n\t\tvec3 getViewPosition( const in vec2 uv, const in float depth/*clip space*/, const in float clipW ) {\n\t\t\tvec4 clipPosition = vec4( ( vec3( uv, depth ) - 0.5 ) * 2.0, 1.0 );//ndc\n\t\t\tclipPosition *= clipW; //clip\n\t\t\treturn ( cameraInverseProjectionMatrix * clipPosition ).xyz;//view\n\t\t}\n\t\tvec3 getViewNormal( const in vec2 uv ) {\n\t\t\treturn unpackRGBToNormal( texture2D( tNormal, uv ).xyz );\n\t\t}\n\t\tvec2 viewPositionToXY(vec3 viewPosition){\n\t\t\tvec2 xy;\n\t\t\tvec4 clip=cameraProjectionMatrix*vec4(viewPosition,1);\n\t\t\txy=clip.xy;//clip\n\t\t\tfloat clipW=clip.w;\n\t\t\txy/=clipW;//NDC\n\t\t\txy=(xy+1.)/2.;//uv\n\t\t\txy*=resolution;//screen\n\t\t\treturn xy;\n\t\t}\n\t\tvoid main(){\n\t\t\t#ifdef isSelective\n\t\t\t\tfloat metalness=texture2D(tMetalness,vUv).r;\n\t\t\t\tif(metalness==0.) return;\n\t\t\t#endif\n\n\t\t\tfloat depth = getDepth( vUv );\n\t\t\tfloat viewZ = getViewZ( depth );\n\t\t\tif(-viewZ>=cameraFar) return;\n\n\t\t\tfloat clipW = cameraProjectionMatrix[2][3] * viewZ+cameraProjectionMatrix[3][3];\n\t\t\tvec3 viewPosition=getViewPosition( vUv, depth, clipW );\n\n\t\t\tvec2 d0=gl_FragCoord.xy;\n\t\t\tvec2 d1;\n\n\t\t\tvec3 viewNormal=getViewNormal( vUv );\n\n\t\t\t#ifdef isPerspectiveCamera\n\t\t\t\tvec3 viewIncidenceDir=normalize(viewPosition);\n\t\t\t\tvec3 viewReflectDir=reflect(viewIncidenceDir,viewNormal);\n\t\t\t#else\n\t\t\t\tvec3 viewIncidenceDir=vec3(0,0,-1);\n\t\t\t\tvec3 viewReflectDir=reflect(viewIncidenceDir,viewNormal);\n\t\t\t#endif\n\n\t\t\tfloat maxReflectRayLen=maxDistance/dot(-viewIncidenceDir,viewNormal);\n\t\t\t// dot(a,b)==length(a)*length(b)*cos(theta) // https://www.mathsisfun.com/algebra/vectors-dot-product.html\n\t\t\t// if(a.isNormalized&&b.isNormalized) dot(a,b)==cos(theta)\n\t\t\t// maxDistance/maxReflectRayLen=cos(theta)\n\t\t\t// maxDistance/maxReflectRayLen==dot(a,b)\n\t\t\t// maxReflectRayLen==maxDistance/dot(a,b)\n\n\t\t\tvec3 d1viewPosition=viewPosition+viewReflectDir*maxReflectRayLen;\n\t\t\t#ifdef isPerspectiveCamera\n\t\t\t\tif(d1viewPosition.z>-cameraNear){\n\t\t\t\t\t//https://tutorial.math.lamar.edu/Classes/CalcIII/EqnsOfLines.aspx\n\t\t\t\t\tfloat t=(-cameraNear-viewPosition.z)/viewReflectDir.z;\n\t\t\t\t\td1viewPosition=viewPosition+viewReflectDir*t;\n\t\t\t\t}\n\t\t\t#endif\n\t\t\td1=viewPositionToXY(d1viewPosition);\n\n\t\t\tfloat totalLen=length(d1-d0);\n\t\t\tfloat xLen=d1.x-d0.x;\n\t\t\tfloat yLen=d1.y-d0.y;\n\t\t\tfloat totalStep=max(abs(xLen),abs(yLen));\n\t\t\tfloat xSpan=xLen/totalStep;\n\t\t\tfloat ySpan=yLen/totalStep;\n\t\t\tfor(float i=0.;i=totalStep) break;\n\t\t\t\tvec2 xy=vec2(d0.x+i*xSpan,d0.y+i*ySpan);\n\t\t\t\tif(xy.x<0.||xy.x>resolution.x||xy.y<0.||xy.y>resolution.y) break;\n\t\t\t\tfloat s=length(xy-d0)/totalLen;\n\t\t\t\tvec2 uv=xy/resolution;\n\n\t\t\t\tfloat d = getDepth(uv);\n\t\t\t\tfloat vZ = getViewZ( d );\n\t\t\t\tif(-vZ>=cameraFar) continue;\n\t\t\t\tfloat cW = cameraProjectionMatrix[2][3] * vZ+cameraProjectionMatrix[3][3];\n\t\t\t\tvec3 vP=getViewPosition( uv, d, cW );\n\n\t\t\t\t#ifdef isPerspectiveCamera\n\t\t\t\t\t// https://www.comp.nus.edu.sg/~lowkl/publications/lowk_persp_interp_techrep.pdf\n\t\t\t\t\tfloat recipVPZ=1./viewPosition.z;\n\t\t\t\t\tfloat viewReflectRayZ=1./(recipVPZ+s*(1./d1viewPosition.z-recipVPZ));\n\t\t\t\t\tfloat sD=surfDist*cW;\n\t\t\t\t#else\n\t\t\t\t\tfloat viewReflectRayZ=viewPosition.z+s*(d1viewPosition.z-viewPosition.z);\n\t\t\t\t\tfloat sD=surfDist;\n\t\t\t\t#endif\n\t\t\t\tif(viewReflectRayZ-sD>vZ) continue;\n\n\t\t\t\t#ifdef isInfiniteThick\n\t\t\t\t\tif(viewReflectRayZ+thickTolerance*clipW=0.) continue;\n\t\t\t\t\tfloat distance=pointPlaneDistance(vP,viewPosition,viewNormal);\n\t\t\t\t\tif(distance>maxDistance) break;\n\t\t\t\t\t#ifdef isDistanceAttenuation\n\t\t\t\t\t\tfloat ratio=1.-(distance/maxDistance);\n\t\t\t\t\t\tfloat attenuation=ratio*ratio;\n\t\t\t\t\t\top=opacity*attenuation;\n\t\t\t\t\t#endif\n\t\t\t\t\t#ifdef isFresnel\n\t\t\t\t\t\tfloat fresnel=(dot(viewIncidenceDir,viewReflectDir)+1.)/2.;\n\t\t\t\t\t\top*=fresnel;\n\t\t\t\t\t#endif\n\t\t\t\t\tvec4 reflectColor=texture2D(tDiffuse,uv);\n\t\t\t\t\tgl_FragColor.xyz=reflectColor.xyz;\n\t\t\t\t\tgl_FragColor.a=op;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t`};const SSRDepthShader={defines:{PERSPECTIVE_CAMERA:1},uniforms:{tDepth:{value:null},cameraNear:{value:null},cameraFar:{value:null}},vertexShader:/* glsl */`\n\n varying vec2 vUv;\n\n void main() {\n\n \tvUv = uv;\n \tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n }\n\n `,fragmentShader:/* glsl */`\n\n uniform sampler2D tDepth;\n\n uniform float cameraNear;\n uniform float cameraFar;\n\n varying vec2 vUv;\n\n #include \n\n\t\tfloat getLinearDepth( const in vec2 uv ) {\n\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\n\t\t\t\tfloat fragCoordZ = texture2D( tDepth, uv ).x;\n\t\t\t\tfloat viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar );\n\t\t\t\treturn viewZToOrthographicDepth( viewZ, cameraNear, cameraFar );\n\n\t\t\t#else\n\n\t\t\t\treturn texture2D( tDepth, uv ).x;\n\n\t\t\t#endif\n\n\t\t}\n\n void main() {\n\n \tfloat depth = getLinearDepth( vUv );\n\t\t\tfloat d = 1.0 - depth;\n\t\t\t// d=(d-.999)*1000.;\n \tgl_FragColor = vec4( vec3( d ), 1.0 );\n\n }\n\n `};const SSRBlurShader={uniforms:{tDiffuse:{value:null},resolution:{value:/*@__PURE__*/new Vector2()},opacity:{value:0.5}},vertexShader:/* glsl */`\n\n varying vec2 vUv;\n\n void main() {\n\n \tvUv = uv;\n \tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n }\n\n `,fragmentShader:/* glsl */`\n\n uniform sampler2D tDiffuse;\n uniform vec2 resolution;\n varying vec2 vUv;\n void main() {\n\t\t\t//reverse engineering from PhotoShop blur filter, then change coefficient\n\n \tvec2 texelSize = ( 1.0 / resolution );\n\n\t\t\tvec4 c=texture2D(tDiffuse,vUv);\n\n\t\t\tvec2 offset;\n\n\t\t\toffset=(vec2(-1,0))*texelSize;\n\t\t\tvec4 cl=texture2D(tDiffuse,vUv+offset);\n\n\t\t\toffset=(vec2(1,0))*texelSize;\n\t\t\tvec4 cr=texture2D(tDiffuse,vUv+offset);\n\n\t\t\toffset=(vec2(0,-1))*texelSize;\n\t\t\tvec4 cb=texture2D(tDiffuse,vUv+offset);\n\n\t\t\toffset=(vec2(0,1))*texelSize;\n\t\t\tvec4 ct=texture2D(tDiffuse,vUv+offset);\n\n\t\t\t// float coeCenter=.5;\n\t\t\t// float coeSide=.125;\n\t\t\tfloat coeCenter=.2;\n\t\t\tfloat coeSide=.2;\n\t\t\tfloat a=c.a*coeCenter+cl.a*coeSide+cr.a*coeSide+cb.a*coeSide+ct.a*coeSide;\n\t\t\tvec3 rgb=(c.rgb*c.a*coeCenter+cl.rgb*cl.a*coeSide+cr.rgb*cr.a*coeSide+cb.rgb*cb.a*coeSide+ct.rgb*ct.a*coeSide)/a;\n\t\t\tgl_FragColor=vec4(rgb,a);\n\n\t\t}\n\t`};const _SSRPass=class extends Pass{constructor({renderer,scene,camera,width,height,selects,bouncing=false,groundReflector}){super();this.width=width!==void 0?width:512;this.height=height!==void 0?height:512;this.clear=true;this.renderer=renderer;this.scene=scene;this.camera=camera;this.groundReflector=groundReflector;this.opacity=SSRShader.uniforms.opacity.value;this.output=0;this.maxDistance=SSRShader.uniforms.maxDistance.value;this.thickness=SSRShader.uniforms.thickness.value;this.tempColor=new Color();this._selects=selects;this.selective=Array.isArray(this._selects);Object.defineProperty(this,\"selects\",{get(){return this._selects;},set(val){if(this._selects===val)return;this._selects=val;if(Array.isArray(val)){this.selective=true;this.ssrMaterial.defines.SELECTIVE=true;this.ssrMaterial.needsUpdate=true;}else{this.selective=false;this.ssrMaterial.defines.SELECTIVE=false;this.ssrMaterial.needsUpdate=true;}}});this._bouncing=bouncing;Object.defineProperty(this,\"bouncing\",{get(){return this._bouncing;},set(val){if(this._bouncing===val)return;this._bouncing=val;if(val){this.ssrMaterial.uniforms[\"tDiffuse\"].value=this.prevRenderTarget.texture;}else{this.ssrMaterial.uniforms[\"tDiffuse\"].value=this.beautyRenderTarget.texture;}}});this.blur=true;this._distanceAttenuation=SSRShader.defines.DISTANCE_ATTENUATION;Object.defineProperty(this,\"distanceAttenuation\",{get(){return this._distanceAttenuation;},set(val){if(this._distanceAttenuation===val)return;this._distanceAttenuation=val;this.ssrMaterial.defines.DISTANCE_ATTENUATION=val;this.ssrMaterial.needsUpdate=true;}});this._fresnel=SSRShader.defines.FRESNEL;Object.defineProperty(this,\"fresnel\",{get(){return this._fresnel;},set(val){if(this._fresnel===val)return;this._fresnel=val;this.ssrMaterial.defines.FRESNEL=val;this.ssrMaterial.needsUpdate=true;}});this._infiniteThick=SSRShader.defines.INFINITE_THICK;Object.defineProperty(this,\"infiniteThick\",{get(){return this._infiniteThick;},set(val){if(this._infiniteThick===val)return;this._infiniteThick=val;this.ssrMaterial.defines.INFINITE_THICK=val;this.ssrMaterial.needsUpdate=true;}});const depthTexture=new DepthTexture();depthTexture.type=UnsignedShortType;depthTexture.minFilter=NearestFilter;depthTexture.magFilter=NearestFilter;this.beautyRenderTarget=new WebGLRenderTarget(this.width,this.height,{minFilter:NearestFilter,magFilter:NearestFilter,type:HalfFloatType,depthTexture,depthBuffer:true});this.prevRenderTarget=new WebGLRenderTarget(this.width,this.height,{minFilter:NearestFilter,magFilter:NearestFilter});this.normalRenderTarget=new WebGLRenderTarget(this.width,this.height,{minFilter:NearestFilter,magFilter:NearestFilter,type:HalfFloatType});this.metalnessRenderTarget=new WebGLRenderTarget(this.width,this.height,{minFilter:NearestFilter,magFilter:NearestFilter,type:HalfFloatType});this.ssrRenderTarget=new WebGLRenderTarget(this.width,this.height,{minFilter:NearestFilter,magFilter:NearestFilter});this.blurRenderTarget=this.ssrRenderTarget.clone();this.blurRenderTarget2=this.ssrRenderTarget.clone();this.ssrMaterial=new ShaderMaterial({defines:Object.assign({},SSRShader.defines,{MAX_STEP:Math.sqrt(this.width*this.width+this.height*this.height)}),uniforms:UniformsUtils.clone(SSRShader.uniforms),vertexShader:SSRShader.vertexShader,fragmentShader:SSRShader.fragmentShader,blending:NoBlending});this.ssrMaterial.uniforms[\"tDiffuse\"].value=this.beautyRenderTarget.texture;this.ssrMaterial.uniforms[\"tNormal\"].value=this.normalRenderTarget.texture;this.ssrMaterial.defines.SELECTIVE=this.selective;this.ssrMaterial.needsUpdate=true;this.ssrMaterial.uniforms[\"tMetalness\"].value=this.metalnessRenderTarget.texture;this.ssrMaterial.uniforms[\"tDepth\"].value=this.beautyRenderTarget.depthTexture;this.ssrMaterial.uniforms[\"cameraNear\"].value=this.camera.near;this.ssrMaterial.uniforms[\"cameraFar\"].value=this.camera.far;this.ssrMaterial.uniforms[\"thickness\"].value=this.thickness;this.ssrMaterial.uniforms[\"resolution\"].value.set(this.width,this.height);this.ssrMaterial.uniforms[\"cameraProjectionMatrix\"].value.copy(this.camera.projectionMatrix);this.ssrMaterial.uniforms[\"cameraInverseProjectionMatrix\"].value.copy(this.camera.projectionMatrixInverse);this.normalMaterial=new MeshNormalMaterial();this.normalMaterial.blending=NoBlending;this.metalnessOnMaterial=new MeshBasicMaterial({color:\"white\"});this.metalnessOffMaterial=new MeshBasicMaterial({color:\"black\"});this.blurMaterial=new ShaderMaterial({defines:Object.assign({},SSRBlurShader.defines),uniforms:UniformsUtils.clone(SSRBlurShader.uniforms),vertexShader:SSRBlurShader.vertexShader,fragmentShader:SSRBlurShader.fragmentShader});this.blurMaterial.uniforms[\"tDiffuse\"].value=this.ssrRenderTarget.texture;this.blurMaterial.uniforms[\"resolution\"].value.set(this.width,this.height);this.blurMaterial2=new ShaderMaterial({defines:Object.assign({},SSRBlurShader.defines),uniforms:UniformsUtils.clone(SSRBlurShader.uniforms),vertexShader:SSRBlurShader.vertexShader,fragmentShader:SSRBlurShader.fragmentShader});this.blurMaterial2.uniforms[\"tDiffuse\"].value=this.blurRenderTarget.texture;this.blurMaterial2.uniforms[\"resolution\"].value.set(this.width,this.height);this.depthRenderMaterial=new ShaderMaterial({defines:Object.assign({},SSRDepthShader.defines),uniforms:UniformsUtils.clone(SSRDepthShader.uniforms),vertexShader:SSRDepthShader.vertexShader,fragmentShader:SSRDepthShader.fragmentShader,blending:NoBlending});this.depthRenderMaterial.uniforms[\"tDepth\"].value=this.beautyRenderTarget.depthTexture;this.depthRenderMaterial.uniforms[\"cameraNear\"].value=this.camera.near;this.depthRenderMaterial.uniforms[\"cameraFar\"].value=this.camera.far;this.copyMaterial=new ShaderMaterial({uniforms:UniformsUtils.clone(CopyShader.uniforms),vertexShader:CopyShader.vertexShader,fragmentShader:CopyShader.fragmentShader,transparent:true,depthTest:false,depthWrite:false,blendSrc:SrcAlphaFactor,blendDst:OneMinusSrcAlphaFactor,blendEquation:AddEquation,blendSrcAlpha:SrcAlphaFactor,blendDstAlpha:OneMinusSrcAlphaFactor,blendEquationAlpha:AddEquation// premultipliedAlpha:true,\n});this.fsQuad=new FullScreenQuad(null);this.originalClearColor=new Color();}dispose(){this.beautyRenderTarget.dispose();this.prevRenderTarget.dispose();this.normalRenderTarget.dispose();this.metalnessRenderTarget.dispose();this.ssrRenderTarget.dispose();this.blurRenderTarget.dispose();this.blurRenderTarget2.dispose();this.normalMaterial.dispose();this.metalnessOnMaterial.dispose();this.metalnessOffMaterial.dispose();this.blurMaterial.dispose();this.blurMaterial2.dispose();this.copyMaterial.dispose();this.depthRenderMaterial.dispose();this.fsQuad.dispose();}render(renderer,writeBuffer){renderer.setRenderTarget(this.beautyRenderTarget);renderer.clear();if(this.groundReflector){this.groundReflector.visible=false;this.groundReflector.doRender(this.renderer,this.scene,this.camera);this.groundReflector.visible=true;}renderer.render(this.scene,this.camera);if(this.groundReflector)this.groundReflector.visible=false;this.renderOverride(renderer,this.normalMaterial,this.normalRenderTarget,0,0);if(this.selective){this.renderMetalness(renderer,this.metalnessOnMaterial,this.metalnessRenderTarget,0,0);}this.ssrMaterial.uniforms[\"opacity\"].value=this.opacity;this.ssrMaterial.uniforms[\"maxDistance\"].value=this.maxDistance;this.ssrMaterial.uniforms[\"thickness\"].value=this.thickness;this.renderPass(renderer,this.ssrMaterial,this.ssrRenderTarget);if(this.blur){this.renderPass(renderer,this.blurMaterial,this.blurRenderTarget);this.renderPass(renderer,this.blurMaterial2,this.blurRenderTarget2);}switch(this.output){case _SSRPass.OUTPUT.Default:if(this.bouncing){this.copyMaterial.uniforms[\"tDiffuse\"].value=this.beautyRenderTarget.texture;this.copyMaterial.blending=NoBlending;this.renderPass(renderer,this.copyMaterial,this.prevRenderTarget);if(this.blur)this.copyMaterial.uniforms[\"tDiffuse\"].value=this.blurRenderTarget2.texture;else this.copyMaterial.uniforms[\"tDiffuse\"].value=this.ssrRenderTarget.texture;this.copyMaterial.blending=NormalBlending;this.renderPass(renderer,this.copyMaterial,this.prevRenderTarget);this.copyMaterial.uniforms[\"tDiffuse\"].value=this.prevRenderTarget.texture;this.copyMaterial.blending=NoBlending;this.renderPass(renderer,this.copyMaterial,this.renderToScreen?null:writeBuffer);}else{this.copyMaterial.uniforms[\"tDiffuse\"].value=this.beautyRenderTarget.texture;this.copyMaterial.blending=NoBlending;this.renderPass(renderer,this.copyMaterial,this.renderToScreen?null:writeBuffer);if(this.blur)this.copyMaterial.uniforms[\"tDiffuse\"].value=this.blurRenderTarget2.texture;else this.copyMaterial.uniforms[\"tDiffuse\"].value=this.ssrRenderTarget.texture;this.copyMaterial.blending=NormalBlending;this.renderPass(renderer,this.copyMaterial,this.renderToScreen?null:writeBuffer);}break;case _SSRPass.OUTPUT.SSR:if(this.blur)this.copyMaterial.uniforms[\"tDiffuse\"].value=this.blurRenderTarget2.texture;else this.copyMaterial.uniforms[\"tDiffuse\"].value=this.ssrRenderTarget.texture;this.copyMaterial.blending=NoBlending;this.renderPass(renderer,this.copyMaterial,this.renderToScreen?null:writeBuffer);if(this.bouncing){if(this.blur)this.copyMaterial.uniforms[\"tDiffuse\"].value=this.blurRenderTarget2.texture;else this.copyMaterial.uniforms[\"tDiffuse\"].value=this.beautyRenderTarget.texture;this.copyMaterial.blending=NoBlending;this.renderPass(renderer,this.copyMaterial,this.prevRenderTarget);this.copyMaterial.uniforms[\"tDiffuse\"].value=this.ssrRenderTarget.texture;this.copyMaterial.blending=NormalBlending;this.renderPass(renderer,this.copyMaterial,this.prevRenderTarget);}break;case _SSRPass.OUTPUT.Beauty:this.copyMaterial.uniforms[\"tDiffuse\"].value=this.beautyRenderTarget.texture;this.copyMaterial.blending=NoBlending;this.renderPass(renderer,this.copyMaterial,this.renderToScreen?null:writeBuffer);break;case _SSRPass.OUTPUT.Depth:this.renderPass(renderer,this.depthRenderMaterial,this.renderToScreen?null:writeBuffer);break;case _SSRPass.OUTPUT.Normal:this.copyMaterial.uniforms[\"tDiffuse\"].value=this.normalRenderTarget.texture;this.copyMaterial.blending=NoBlending;this.renderPass(renderer,this.copyMaterial,this.renderToScreen?null:writeBuffer);break;case _SSRPass.OUTPUT.Metalness:this.copyMaterial.uniforms[\"tDiffuse\"].value=this.metalnessRenderTarget.texture;this.copyMaterial.blending=NoBlending;this.renderPass(renderer,this.copyMaterial,this.renderToScreen?null:writeBuffer);break;default:console.warn(\"THREE.SSRPass: Unknown output type.\");}}renderPass(renderer,passMaterial,renderTarget,clearColor,clearAlpha){this.originalClearColor.copy(renderer.getClearColor(this.tempColor));const originalClearAlpha=renderer.getClearAlpha(this.tempColor);const originalAutoClear=renderer.autoClear;renderer.setRenderTarget(renderTarget);renderer.autoClear=false;if(clearColor!==void 0&&clearColor!==null){renderer.setClearColor(clearColor);renderer.setClearAlpha(clearAlpha||0);renderer.clear();}this.fsQuad.material=passMaterial;this.fsQuad.render(renderer);renderer.autoClear=originalAutoClear;renderer.setClearColor(this.originalClearColor);renderer.setClearAlpha(originalClearAlpha);}renderOverride(renderer,overrideMaterial,renderTarget,clearColor,clearAlpha){this.originalClearColor.copy(renderer.getClearColor(this.tempColor));const originalClearAlpha=renderer.getClearAlpha(this.tempColor);const originalAutoClear=renderer.autoClear;renderer.setRenderTarget(renderTarget);renderer.autoClear=false;clearColor=overrideMaterial.clearColor||clearColor;clearAlpha=overrideMaterial.clearAlpha||clearAlpha;if(clearColor!==void 0&&clearColor!==null){renderer.setClearColor(clearColor);renderer.setClearAlpha(clearAlpha||0);renderer.clear();}this.scene.overrideMaterial=overrideMaterial;renderer.render(this.scene,this.camera);this.scene.overrideMaterial=null;renderer.autoClear=originalAutoClear;renderer.setClearColor(this.originalClearColor);renderer.setClearAlpha(originalClearAlpha);}renderMetalness(renderer,overrideMaterial,renderTarget,clearColor,clearAlpha){this.originalClearColor.copy(renderer.getClearColor(this.tempColor));const originalClearAlpha=renderer.getClearAlpha(this.tempColor);const originalAutoClear=renderer.autoClear;renderer.setRenderTarget(renderTarget);renderer.autoClear=false;clearColor=overrideMaterial.clearColor||clearColor;clearAlpha=overrideMaterial.clearAlpha||clearAlpha;if(clearColor!==void 0&&clearColor!==null){renderer.setClearColor(clearColor);renderer.setClearAlpha(clearAlpha||0);renderer.clear();}this.scene.traverseVisible(child=>{child._SSRPassBackupMaterial=child.material;if(this._selects.includes(child)){child.material=this.metalnessOnMaterial;}else{child.material=this.metalnessOffMaterial;}});renderer.render(this.scene,this.camera);this.scene.traverseVisible(child=>{child.material=child._SSRPassBackupMaterial;});renderer.autoClear=originalAutoClear;renderer.setClearColor(this.originalClearColor);renderer.setClearAlpha(originalClearAlpha);}setSize(width,height){this.width=width;this.height=height;this.ssrMaterial.defines.MAX_STEP=Math.sqrt(width*width+height*height);this.ssrMaterial.needsUpdate=true;this.beautyRenderTarget.setSize(width,height);this.prevRenderTarget.setSize(width,height);this.ssrRenderTarget.setSize(width,height);this.normalRenderTarget.setSize(width,height);this.metalnessRenderTarget.setSize(width,height);this.blurRenderTarget.setSize(width,height);this.blurRenderTarget2.setSize(width,height);this.ssrMaterial.uniforms[\"resolution\"].value.set(width,height);this.ssrMaterial.uniforms[\"cameraProjectionMatrix\"].value.copy(this.camera.projectionMatrix);this.ssrMaterial.uniforms[\"cameraInverseProjectionMatrix\"].value.copy(this.camera.projectionMatrixInverse);this.blurMaterial.uniforms[\"resolution\"].value.set(width,height);this.blurMaterial2.uniforms[\"resolution\"].value.set(width,height);}};let SSRPass=_SSRPass;/*@__PURE__*/__publicField(SSRPass,\"OUTPUT\",{Default:0,SSR:1,Beauty:3,Depth:4,Normal:5,Metalness:7});class SSAARenderPass extends Pass{constructor(scene,camera,clearColor,clearAlpha){super();this.scene=scene;this.camera=camera;this.sampleLevel=4;this.unbiased=true;this.clearColor=clearColor!==void 0?clearColor:0;this.clearAlpha=clearAlpha!==void 0?clearAlpha:0;this._oldClearColor=new Color();const copyShader=CopyShader;this.copyUniforms=UniformsUtils.clone(copyShader.uniforms);this.copyMaterial=new ShaderMaterial({uniforms:this.copyUniforms,vertexShader:copyShader.vertexShader,fragmentShader:copyShader.fragmentShader,transparent:true,depthTest:false,depthWrite:false,premultipliedAlpha:true,blending:AdditiveBlending});this.fsQuad=new FullScreenQuad(this.copyMaterial);}dispose(){if(this.sampleRenderTarget){this.sampleRenderTarget.dispose();this.sampleRenderTarget=null;}this.copyMaterial.dispose();this.fsQuad.dispose();}setSize(width,height){if(this.sampleRenderTarget)this.sampleRenderTarget.setSize(width,height);}render(renderer,writeBuffer,readBuffer){if(!this.sampleRenderTarget){this.sampleRenderTarget=new WebGLRenderTarget(readBuffer.width,readBuffer.height,{type:HalfFloatType});this.sampleRenderTarget.texture.name=\"SSAARenderPass.sample\";}const jitterOffsets=_JitterVectors$1[Math.max(0,Math.min(this.sampleLevel,5))];const autoClear=renderer.autoClear;renderer.autoClear=false;renderer.getClearColor(this._oldClearColor);const oldClearAlpha=renderer.getClearAlpha();const baseSampleWeight=1/jitterOffsets.length;const roundingRange=1/32;this.copyUniforms[\"tDiffuse\"].value=this.sampleRenderTarget.texture;const viewOffset={fullWidth:readBuffer.width,fullHeight:readBuffer.height,offsetX:0,offsetY:0,width:readBuffer.width,height:readBuffer.height};const originalViewOffset=Object.assign({},this.camera.view);if(originalViewOffset.enabled)Object.assign(viewOffset,originalViewOffset);for(let i2=0;i2=0&&this.accumulateIndex=jitterOffsets.length)break;}if(this.camera.clearViewOffset)this.camera.clearViewOffset();}renderer.setClearColor(this.clearColor,this.clearAlpha);const accumulationWeight=this.accumulateIndex*sampleWeight;if(accumulationWeight>0){this.copyUniforms[\"opacity\"].value=1;this.copyUniforms[\"tDiffuse\"].value=this.sampleRenderTarget.texture;renderer.setRenderTarget(writeBuffer);renderer.clear();this.fsQuad.render(renderer);}if(accumulationWeight<1){this.copyUniforms[\"opacity\"].value=1-accumulationWeight;this.copyUniforms[\"tDiffuse\"].value=this.holdRenderTarget.texture;renderer.setRenderTarget(writeBuffer);this.fsQuad.render(renderer);}renderer.autoClear=autoClear;renderer.setClearColor(this._oldClearColor,oldClearAlpha);}dispose(){super.dispose();if(this.sampleRenderTarget!==void 0)this.sampleRenderTarget.dispose();if(this.holdRenderTarget!==void 0)this.holdRenderTarget.dispose();}}const _JitterVectors=[[[0,0]],[[4,4],[-4,-4]],[[-2,-6],[6,-2],[-6,2],[2,6]],[[1,-3],[-1,3],[5,1],[-3,-5],[-5,5],[-7,-1],[3,7],[7,-7]],[[1,1],[-1,-3],[-3,2],[4,-1],[-5,-2],[2,5],[5,3],[3,-5],[-2,6],[0,-7],[-4,-6],[-6,4],[-8,0],[7,-4],[6,7],[-7,-8]],[[-4,-7],[-7,-5],[-3,-5],[-5,-4],[-1,-4],[-2,-2],[-6,-1],[-4,0],[-7,1],[-1,2],[-6,3],[-3,3],[-7,6],[-3,6],[-5,7],[-1,7],[5,-7],[1,-6],[6,-5],[4,-4],[2,-3],[7,-2],[1,-1],[4,-1],[2,1],[6,2],[0,4],[4,4],[2,5],[7,5],[5,6],[3,7]]];class RenderPass extends Pass{constructor(scene,camera,overrideMaterial,clearColor,clearAlpha=0){super();__publicField(this,\"scene\");__publicField(this,\"camera\");__publicField(this,\"overrideMaterial\");__publicField(this,\"clearColor\");__publicField(this,\"clearAlpha\");__publicField(this,\"clearDepth\",false);__publicField(this,\"_oldClearColor\",new Color());this.scene=scene;this.camera=camera;this.overrideMaterial=overrideMaterial;this.clearColor=clearColor;this.clearAlpha=clearAlpha;this.clear=true;this.needsSwap=false;}render(renderer,writeBuffer,readBuffer){let oldAutoClear=renderer.autoClear;renderer.autoClear=false;let oldClearAlpha;let oldOverrideMaterial=null;if(this.overrideMaterial!==void 0){oldOverrideMaterial=this.scene.overrideMaterial;this.scene.overrideMaterial=this.overrideMaterial;}if(this.clearColor){renderer.getClearColor(this._oldClearColor);oldClearAlpha=renderer.getClearAlpha();renderer.setClearColor(this.clearColor,this.clearAlpha);}if(this.clearDepth){renderer.clearDepth();}renderer.setRenderTarget(this.renderToScreen?null:readBuffer);if(this.clear)renderer.clear(renderer.autoClearColor,renderer.autoClearDepth,renderer.autoClearStencil);renderer.render(this.scene,this.camera);if(this.clearColor){renderer.setClearColor(this._oldClearColor,oldClearAlpha);}if(this.overrideMaterial!==void 0){this.scene.overrideMaterial=oldOverrideMaterial;}renderer.autoClear=oldAutoClear;}}class RenderPixelatedPass extends Pass{constructor(resolution,pixelSize,scene,camera,options={}){var _a2,_b2;super();this.pixelSize=pixelSize;this.resolution=new Vector2();this.renderResolution=new Vector2();this.setSize(resolution.x,resolution.y);this.fsQuad=new FullScreenQuad(this.material());this.scene=scene;this.camera=camera;this.normalEdgeStrength=(_a2=options.normalEdgeStrength)!=null?_a2:0.3;this.depthEdgeStrength=(_b2=options.depthEdgeStrength)!=null?_b2:0.4;this.rgbRenderTarget=pixelRenderTarget(this.renderResolution,RGBAFormat,true);this.normalRenderTarget=pixelRenderTarget(this.renderResolution,RGBAFormat,false);this.normalMaterial=new MeshNormalMaterial();}dispose(){this.rgbRenderTarget.dispose();this.normalRenderTarget.dispose();this.fsQuad.dispose();}setSize(width,height){var _a2,_b2,_c;this.resolution.set(width,height);this.renderResolution.set(width/this.pixelSize|0,height/this.pixelSize|0);const{x,y}=this.renderResolution;(_a2=this.rgbRenderTarget)==null?void 0:_a2.setSize(x,y);(_b2=this.normalRenderTarget)==null?void 0:_b2.setSize(x,y);(_c=this.fsQuad)==null?void 0:_c.material.uniforms.resolution.value.set(x,y,1/x,1/y);}setPixelSize(pixelSize){this.pixelSize=pixelSize;this.setSize(this.resolution.x,this.resolution.y);}render(renderer,writeBuffer){const uniforms=this.fsQuad.material.uniforms;uniforms.normalEdgeStrength.value=this.normalEdgeStrength;uniforms.depthEdgeStrength.value=this.depthEdgeStrength;renderer.setRenderTarget(this.rgbRenderTarget);renderer.render(this.scene,this.camera);const overrideMaterial_old=this.scene.overrideMaterial;renderer.setRenderTarget(this.normalRenderTarget);this.scene.overrideMaterial=this.normalMaterial;renderer.render(this.scene,this.camera);this.scene.overrideMaterial=overrideMaterial_old;uniforms.tDiffuse.value=this.rgbRenderTarget.texture;uniforms.tDepth.value=this.rgbRenderTarget.depthTexture;uniforms.tNormal.value=this.normalRenderTarget.texture;if(this.renderToScreen){renderer.setRenderTarget(null);}else{renderer.setRenderTarget(writeBuffer);if(this.clear)renderer.clear();}this.fsQuad.render(renderer);}material(){return new ShaderMaterial({uniforms:{tDiffuse:{value:null},tDepth:{value:null},tNormal:{value:null},resolution:{value:new Vector4(this.renderResolution.x,this.renderResolution.y,1/this.renderResolution.x,1/this.renderResolution.y)},normalEdgeStrength:{value:0},depthEdgeStrength:{value:0}},vertexShader:`\n\t\t\t\tvarying vec2 vUv;\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t\t\t}\n\t\t\t\t`,fragmentShader:`\n\t\t\t\tuniform sampler2D tDiffuse;\n\t\t\t\tuniform sampler2D tDepth;\n\t\t\t\tuniform sampler2D tNormal;\n\t\t\t\tuniform vec4 resolution;\n\t\t\t\tuniform float normalEdgeStrength;\n\t\t\t\tuniform float depthEdgeStrength;\n\t\t\t\tvarying vec2 vUv;\n\n\t\t\t\tfloat getDepth(int x, int y) {\n\n\t\t\t\t\treturn texture2D( tDepth, vUv + vec2(x, y) * resolution.zw ).r;\n\n\t\t\t\t}\n\n\t\t\t\tvec3 getNormal(int x, int y) {\n\n\t\t\t\t\treturn texture2D( tNormal, vUv + vec2(x, y) * resolution.zw ).rgb * 2.0 - 1.0;\n\n\t\t\t\t}\n\n\t\t\t\tfloat depthEdgeIndicator(float depth, vec3 normal) {\n\n\t\t\t\t\tfloat diff = 0.0;\n\t\t\t\t\tdiff += clamp(getDepth(1, 0) - depth, 0.0, 1.0);\n\t\t\t\t\tdiff += clamp(getDepth(-1, 0) - depth, 0.0, 1.0);\n\t\t\t\t\tdiff += clamp(getDepth(0, 1) - depth, 0.0, 1.0);\n\t\t\t\t\tdiff += clamp(getDepth(0, -1) - depth, 0.0, 1.0);\n\t\t\t\t\treturn floor(smoothstep(0.01, 0.02, diff) * 2.) / 2.;\n\n\t\t\t\t}\n\n\t\t\t\tfloat neighborNormalEdgeIndicator(int x, int y, float depth, vec3 normal) {\n\n\t\t\t\t\tfloat depthDiff = getDepth(x, y) - depth;\n\t\t\t\t\tvec3 neighborNormal = getNormal(x, y);\n\t\t\t\t\t\n\t\t\t\t\t// Edge pixels should yield to faces who's normals are closer to the bias normal.\n\t\t\t\t\tvec3 normalEdgeBias = vec3(1., 1., 1.); // This should probably be a parameter.\n\t\t\t\t\tfloat normalDiff = dot(normal - neighborNormal, normalEdgeBias);\n\t\t\t\t\tfloat normalIndicator = clamp(smoothstep(-.01, .01, normalDiff), 0.0, 1.0);\n\t\t\t\t\t\n\t\t\t\t\t// Only the shallower pixel should detect the normal edge.\n\t\t\t\t\tfloat depthIndicator = clamp(sign(depthDiff * .25 + .0025), 0.0, 1.0);\n\n\t\t\t\t\treturn (1.0 - dot(normal, neighborNormal)) * depthIndicator * normalIndicator;\n\n\t\t\t\t}\n\n\t\t\t\tfloat normalEdgeIndicator(float depth, vec3 normal) {\n\t\t\t\t\t\n\t\t\t\t\tfloat indicator = 0.0;\n\n\t\t\t\t\tindicator += neighborNormalEdgeIndicator(0, -1, depth, normal);\n\t\t\t\t\tindicator += neighborNormalEdgeIndicator(0, 1, depth, normal);\n\t\t\t\t\tindicator += neighborNormalEdgeIndicator(-1, 0, depth, normal);\n\t\t\t\t\tindicator += neighborNormalEdgeIndicator(1, 0, depth, normal);\n\n\t\t\t\t\treturn step(0.1, indicator);\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec4 texel = texture2D( tDiffuse, vUv );\n\n\t\t\t\t\tfloat depth = 0.0;\n\t\t\t\t\tvec3 normal = vec3(0.0);\n\n\t\t\t\t\tif (depthEdgeStrength > 0.0 || normalEdgeStrength > 0.0) {\n\n\t\t\t\t\t\tdepth = getDepth(0, 0);\n\t\t\t\t\t\tnormal = getNormal(0, 0);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat dei = 0.0;\n\t\t\t\t\tif (depthEdgeStrength > 0.0) \n\t\t\t\t\t\tdei = depthEdgeIndicator(depth, normal);\n\n\t\t\t\t\tfloat nei = 0.0; \n\t\t\t\t\tif (normalEdgeStrength > 0.0) \n\t\t\t\t\t\tnei = normalEdgeIndicator(depth, normal);\n\n\t\t\t\t\tfloat Strength = dei > 0.0 ? (1.0 - depthEdgeStrength * dei) : (1.0 + normalEdgeStrength * nei);\n\n\t\t\t\t\tgl_FragColor = texel * Strength;\n\n\t\t\t\t}\n\t\t\t\t`});}}function pixelRenderTarget(resolution,pixelFormat,useDepthTexture){const renderTarget=new WebGLRenderTarget(resolution.x,resolution.y,!useDepthTexture?void 0:{depthTexture:new DepthTexture(resolution.x,resolution.y),depthBuffer:true});renderTarget.texture.format=pixelFormat;renderTarget.texture.minFilter=NearestFilter;renderTarget.texture.magFilter=NearestFilter;renderTarget.texture.generateMipmaps=false;renderTarget.stencilBuffer=false;return renderTarget;}const ConvolutionShader={defines:{KERNEL_SIZE_FLOAT:\"25.0\",KERNEL_SIZE_INT:\"25\"},uniforms:{tDiffuse:{value:null},uImageIncrement:{value:/*@__PURE__*/new Vector2(1953125e-9,0)},cKernel:{value:[]}},vertexShader:/*@__PURE__*/[\"uniform vec2 uImageIncrement;\",\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv - ( ( KERNEL_SIZE_FLOAT - 1.0 ) / 2.0 ) * uImageIncrement;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform float cKernel[ KERNEL_SIZE_INT ];\",\"uniform sampler2D tDiffuse;\",\"uniform vec2 uImageIncrement;\",\"varying vec2 vUv;\",\"void main() {\",\"\tvec2 imageCoord = vUv;\",\"\tvec4 sum = vec4( 0.0, 0.0, 0.0, 0.0 );\",\"\tfor( int i = 0; i < KERNEL_SIZE_INT; i ++ ) {\",\"\t\tsum += texture2D( tDiffuse, imageCoord ) * cKernel[ i ];\",\"\t\timageCoord += uImageIncrement;\",\"\t}\",\"\tgl_FragColor = sum;\",\"}\"].join(\"\\n\"),buildKernel:function(sigma){function gauss(x,sigma2){return Math.exp(-(x*x)/(2*sigma2*sigma2));}const kMaxKernelSize=25;const kernelSize=Math.min(2*Math.ceil(sigma*3)+1,kMaxKernelSize);const halfWidth=(kernelSize-1)*0.5;const values=new Array(kernelSize);let sum=0;for(let i2=0;i2{button.style.opacity=\"1.0\";};button.onmouseleave=()=>{button.style.opacity=\"0.5\";};button.onclick=()=>{if(currentSession===null){navigator.xr.requestSession(\"immersive-ar\",sessionInit).then(onSessionStarted);}else{currentSession.end();}};}function disableButton(){button.style.display=\"\";button.style.cursor=\"auto\";button.style.left=\"calc(50% - 75px)\";button.style.width=\"150px\";button.onmouseenter=null;button.onmouseleave=null;button.onclick=null;}function showARNotSupported(){disableButton();button.textContent=\"AR NOT SUPPORTED\";}function stylizeElement(element){element.style.position=\"absolute\";element.style.bottom=\"20px\";element.style.padding=\"12px 6px\";element.style.border=\"1px solid #fff\";element.style.borderRadius=\"4px\";element.style.background=\"rgba(0,0,0,0.1)\";element.style.color=\"#fff\";element.style.font=\"normal 13px sans-serif\";element.style.textAlign=\"center\";element.style.opacity=\"0.5\";element.style.outline=\"none\";element.style.zIndex=\"999\";}if(\"xr\"in navigator){button.id=\"ARButton\";button.style.display=\"none\";stylizeElement(button);navigator.xr.isSessionSupported(\"immersive-ar\").then(function(supported){supported?showStartAR():showARNotSupported();}).catch(showARNotSupported);return button;}else{const message=document.createElement(\"a\");if(window.isSecureContext===false){message.href=document.location.href.replace(/^http:/,\"https:\");message.innerHTML=\"WEBXR NEEDS HTTPS\";}else{message.href=\"https://immersiveweb.dev/\";message.innerHTML=\"WEBXR NOT AVAILABLE\";}message.style.left=\"calc(50% - 90px)\";message.style.width=\"180px\";message.style.textDecoration=\"none\";stylizeElement(message);return message;}}}class GLTFLoader extends Loader{constructor(manager){super(manager);this.dracoLoader=null;this.ktx2Loader=null;this.meshoptDecoder=null;this.pluginCallbacks=[];this.register(function(parser){return new GLTFMaterialsClearcoatExtension2(parser);});this.register(function(parser){return new GLTFTextureBasisUExtension(parser);});this.register(function(parser){return new GLTFTextureWebPExtension(parser);});this.register(function(parser){return new GLTFTextureAVIFExtension(parser);});this.register(function(parser){return new GLTFMaterialsSheenExtension2(parser);});this.register(function(parser){return new GLTFMaterialsTransmissionExtension2(parser);});this.register(function(parser){return new GLTFMaterialsVolumeExtension2(parser);});this.register(function(parser){return new GLTFMaterialsIorExtension2(parser);});this.register(function(parser){return new GLTFMaterialsEmissiveStrengthExtension2(parser);});this.register(function(parser){return new GLTFMaterialsSpecularExtension2(parser);});this.register(function(parser){return new GLTFMaterialsIridescenceExtension2(parser);});this.register(function(parser){return new GLTFMaterialsAnisotropyExtension2(parser);});this.register(function(parser){return new GLTFLightsExtension(parser);});this.register(function(parser){return new GLTFMeshoptCompression(parser);});this.register(function(parser){return new GLTFMeshGpuInstancing(parser);});}load(url,onLoad,onProgress,onError){const scope=this;let resourcePath;if(this.resourcePath!==\"\"){resourcePath=this.resourcePath;}else if(this.path!==\"\"){resourcePath=this.path;}else{resourcePath=LoaderUtils.extractUrlBase(url);}this.manager.itemStart(url);const _onError=function(e){if(onError){onError(e);}else{console.error(e);}scope.manager.itemError(url);scope.manager.itemEnd(url);};const loader=new FileLoader(this.manager);loader.setPath(this.path);loader.setResponseType(\"arraybuffer\");loader.setRequestHeader(this.requestHeader);loader.setWithCredentials(this.withCredentials);loader.load(url,function(data){try{scope.parse(data,resourcePath,function(gltf){onLoad(gltf);scope.manager.itemEnd(url);},_onError);}catch(e){_onError(e);}},onProgress,_onError);}setDRACOLoader(dracoLoader){this.dracoLoader=dracoLoader;return this;}setDDSLoader(){throw new Error('THREE.GLTFLoader: \"MSFT_texture_dds\" no longer supported. Please update to \"KHR_texture_basisu\".');}setKTX2Loader(ktx2Loader){this.ktx2Loader=ktx2Loader;return this;}setMeshoptDecoder(meshoptDecoder){this.meshoptDecoder=meshoptDecoder;return this;}register(callback){if(this.pluginCallbacks.indexOf(callback)===-1){this.pluginCallbacks.push(callback);}return this;}unregister(callback){if(this.pluginCallbacks.indexOf(callback)!==-1){this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(callback),1);}return this;}parse(data,path,onLoad,onError){let json;const extensions={};const plugins={};if(typeof data===\"string\"){json=JSON.parse(data);}else if(data instanceof ArrayBuffer){const magic=LoaderUtils.decodeText(new Uint8Array(data.slice(0,4)));if(magic===BINARY_EXTENSION_HEADER_MAGIC){try{extensions[EXTENSIONS.KHR_BINARY_GLTF]=new GLTFBinaryExtension(data);}catch(error){if(onError)onError(error);return;}json=JSON.parse(extensions[EXTENSIONS.KHR_BINARY_GLTF].content);}else{json=JSON.parse(LoaderUtils.decodeText(new Uint8Array(data)));}}else{json=data;}if(json.asset===void 0||json.asset.version[0]<2){if(onError)onError(new Error(\"THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.\"));return;}const parser=new GLTFParser(json,{path:path||this.resourcePath||\"\",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});parser.fileLoader.setRequestHeader(this.requestHeader);for(let i2=0;i2=0&&plugins[extensionName]===void 0){console.warn('THREE.GLTFLoader: Unknown extension \"'+extensionName+'\".');}}}}parser.setExtensions(extensions);parser.setPlugins(plugins);parser.parse(onLoad,onError);}parseAsync(data,path){const scope=this;return new Promise(function(resolve,reject){scope.parse(data,path,resolve,reject);});}}function GLTFRegistry(){let objects={};return{get:function(key){return objects[key];},add:function(key,object){objects[key]=object;},remove:function(key){delete objects[key];},removeAll:function(){objects={};}};}const EXTENSIONS={KHR_BINARY_GLTF:\"KHR_binary_glTF\",KHR_DRACO_MESH_COMPRESSION:\"KHR_draco_mesh_compression\",KHR_LIGHTS_PUNCTUAL:\"KHR_lights_punctual\",KHR_MATERIALS_CLEARCOAT:\"KHR_materials_clearcoat\",KHR_MATERIALS_IOR:\"KHR_materials_ior\",KHR_MATERIALS_SHEEN:\"KHR_materials_sheen\",KHR_MATERIALS_SPECULAR:\"KHR_materials_specular\",KHR_MATERIALS_TRANSMISSION:\"KHR_materials_transmission\",KHR_MATERIALS_IRIDESCENCE:\"KHR_materials_iridescence\",KHR_MATERIALS_ANISOTROPY:\"KHR_materials_anisotropy\",KHR_MATERIALS_UNLIT:\"KHR_materials_unlit\",KHR_MATERIALS_VOLUME:\"KHR_materials_volume\",KHR_TEXTURE_BASISU:\"KHR_texture_basisu\",KHR_TEXTURE_TRANSFORM:\"KHR_texture_transform\",KHR_MESH_QUANTIZATION:\"KHR_mesh_quantization\",KHR_MATERIALS_EMISSIVE_STRENGTH:\"KHR_materials_emissive_strength\",EXT_TEXTURE_WEBP:\"EXT_texture_webp\",EXT_TEXTURE_AVIF:\"EXT_texture_avif\",EXT_MESHOPT_COMPRESSION:\"EXT_meshopt_compression\",EXT_MESH_GPU_INSTANCING:\"EXT_mesh_gpu_instancing\"};class GLTFLightsExtension{constructor(parser){this.parser=parser;this.name=EXTENSIONS.KHR_LIGHTS_PUNCTUAL;this.cache={refs:{},uses:{}};}_markDefs(){const parser=this.parser;const nodeDefs=this.parser.json.nodes||[];for(let nodeIndex=0,nodeLength=nodeDefs.length;nodeIndex=0){throw new Error(\"THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures\");}else{return null;}}return parser.loadTextureImage(textureIndex,extension.source,loader);}}class GLTFTextureWebPExtension{constructor(parser){this.parser=parser;this.name=EXTENSIONS.EXT_TEXTURE_WEBP;this.isSupported=null;}loadTexture(textureIndex){const name=this.name;const parser=this.parser;const json=parser.json;const textureDef=json.textures[textureIndex];if(!textureDef.extensions||!textureDef.extensions[name]){return null;}const extension=textureDef.extensions[name];const source=json.images[extension.source];let loader=parser.textureLoader;if(source.uri){const handler=parser.options.manager.getHandler(source.uri);if(handler!==null)loader=handler;}return this.detectSupport().then(function(isSupported){if(isSupported)return parser.loadTextureImage(textureIndex,extension.source,loader);if(json.extensionsRequired&&json.extensionsRequired.indexOf(name)>=0){throw new Error(\"THREE.GLTFLoader: WebP required by asset but unsupported.\");}return parser.loadTexture(textureIndex);});}detectSupport(){if(!this.isSupported){this.isSupported=new Promise(function(resolve){const image=new Image();image.src=\"data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA\";image.onload=image.onerror=function(){resolve(image.height===1);};});}return this.isSupported;}}class GLTFTextureAVIFExtension{constructor(parser){this.parser=parser;this.name=EXTENSIONS.EXT_TEXTURE_AVIF;this.isSupported=null;}loadTexture(textureIndex){const name=this.name;const parser=this.parser;const json=parser.json;const textureDef=json.textures[textureIndex];if(!textureDef.extensions||!textureDef.extensions[name]){return null;}const extension=textureDef.extensions[name];const source=json.images[extension.source];let loader=parser.textureLoader;if(source.uri){const handler=parser.options.manager.getHandler(source.uri);if(handler!==null)loader=handler;}return this.detectSupport().then(function(isSupported){if(isSupported)return parser.loadTextureImage(textureIndex,extension.source,loader);if(json.extensionsRequired&&json.extensionsRequired.indexOf(name)>=0){throw new Error(\"THREE.GLTFLoader: AVIF required by asset but unsupported.\");}return parser.loadTexture(textureIndex);});}detectSupport(){if(!this.isSupported){this.isSupported=new Promise(function(resolve){const image=new Image();image.src=\"data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=\";image.onload=image.onerror=function(){resolve(image.height===1);};});}return this.isSupported;}}class GLTFMeshoptCompression{constructor(parser){this.name=EXTENSIONS.EXT_MESHOPT_COMPRESSION;this.parser=parser;}loadBufferView(index){const json=this.parser.json;const bufferView=json.bufferViews[index];if(bufferView.extensions&&bufferView.extensions[this.name]){const extensionDef=bufferView.extensions[this.name];const buffer=this.parser.getDependency(\"buffer\",extensionDef.buffer);const decoder=this.parser.options.meshoptDecoder;if(!decoder||!decoder.supported){if(json.extensionsRequired&&json.extensionsRequired.indexOf(this.name)>=0){throw new Error(\"THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files\");}else{return null;}}return buffer.then(function(res){const byteOffset=extensionDef.byteOffset||0;const byteLength=extensionDef.byteLength||0;const count=extensionDef.count;const stride=extensionDef.byteStride;const source=new Uint8Array(res,byteOffset,byteLength);if(decoder.decodeGltfBufferAsync){return decoder.decodeGltfBufferAsync(count,stride,source,extensionDef.mode,extensionDef.filter).then(function(res2){return res2.buffer;});}else{return decoder.ready.then(function(){const result=new ArrayBuffer(count*stride);decoder.decodeGltfBuffer(new Uint8Array(result),count,stride,source,extensionDef.mode,extensionDef.filter);return result;});}});}else{return null;}}}class GLTFMeshGpuInstancing{constructor(parser){this.name=EXTENSIONS.EXT_MESH_GPU_INSTANCING;this.parser=parser;}createNodeMesh(nodeIndex){const json=this.parser.json;const nodeDef=json.nodes[nodeIndex];if(!nodeDef.extensions||!nodeDef.extensions[this.name]||nodeDef.mesh===void 0){return null;}const meshDef=json.meshes[nodeDef.mesh];for(const primitive of meshDef.primitives){if(primitive.mode!==WEBGL_CONSTANTS.TRIANGLES&&primitive.mode!==WEBGL_CONSTANTS.TRIANGLE_STRIP&&primitive.mode!==WEBGL_CONSTANTS.TRIANGLE_FAN&&primitive.mode!==void 0){return null;}}const extensionDef=nodeDef.extensions[this.name];const attributesDef=extensionDef.attributes;const pending=[];const attributes={};for(const key in attributesDef){pending.push(this.parser.getDependency(\"accessor\",attributesDef[key]).then(accessor=>{attributes[key]=accessor;return attributes[key];}));}if(pending.length<1){return null;}pending.push(this.parser.createNodeMesh(nodeIndex));return Promise.all(pending).then(results=>{const nodeObject=results.pop();const meshes=nodeObject.isGroup?nodeObject.children:[nodeObject];const count=results[0].count;const instancedMeshes=[];for(const mesh of meshes){const m=new Matrix4();const p=new Vector3();const q=new Quaternion();const s=new Vector3(1,1,1);const instancedMesh=new InstancedMesh(mesh.geometry,mesh.material,count);for(let i2=0;i2 uv1, 4 uv channels\n// https://github.com/mrdoob/three.js/pull/25943\n// https://github.com/mrdoob/three.js/pull/25788\n...(version>=152?{TEXCOORD_0:\"uv\",TEXCOORD_1:\"uv1\",TEXCOORD_2:\"uv2\",TEXCOORD_3:\"uv3\"}:{TEXCOORD_0:\"uv\",TEXCOORD_1:\"uv2\"}),COLOR_0:\"color\",WEIGHTS_0:\"skinWeight\",JOINTS_0:\"skinIndex\"};const PATH_PROPERTIES={scale:\"scale\",translation:\"position\",rotation:\"quaternion\",weights:\"morphTargetInfluences\"};const INTERPOLATION={CUBICSPLINE:void 0,// We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each\n// keyframe track will be initialized with a default interpolation type, then modified.\nLINEAR:InterpolateLinear,STEP:InterpolateDiscrete};const ALPHA_MODES={OPAQUE:\"OPAQUE\",MASK:\"MASK\",BLEND:\"BLEND\"};function createDefaultMaterial(cache){if(cache[\"DefaultMaterial\"]===void 0){cache[\"DefaultMaterial\"]=new MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:false,depthTest:true,side:FrontSide});}return cache[\"DefaultMaterial\"];}function addUnknownExtensionsToUserData(knownExtensions,object,objectDef){for(const name in objectDef.extensions){if(knownExtensions[name]===void 0){object.userData.gltfExtensions=object.userData.gltfExtensions||{};object.userData.gltfExtensions[name]=objectDef.extensions[name];}}}function assignExtrasToUserData(object,gltfDef){if(gltfDef.extras!==void 0){if(typeof gltfDef.extras===\"object\"){Object.assign(object.userData,gltfDef.extras);}else{console.warn(\"THREE.GLTFLoader: Ignoring primitive type .extras, \"+gltfDef.extras);}}}function addMorphTargets(geometry2,targets,parser){let hasMorphPosition=false;let hasMorphNormal=false;let hasMorphColor=false;for(let i2=0,il=targets.length;i20||uri.search(/^data\\:image\\/jpeg/)===0)return\"image/jpeg\";if(uri.search(/\\.webp($|\\?)/i)>0||uri.search(/^data\\:image\\/webp/)===0)return\"image/webp\";return\"image/png\";}const _identityMatrix=/*@__PURE__*/new Matrix4();class GLTFParser{constructor(json={},options={}){this.json=json;this.extensions={};this.plugins={};this.options=options;this.cache=new GLTFRegistry();this.associations=/* @__PURE__ */new Map();this.primitiveCache={};this.nodeCache={};this.meshCache={refs:{},uses:{}};this.cameraCache={refs:{},uses:{}};this.lightCache={refs:{},uses:{}};this.sourceCache={};this.textureCache={};this.nodeNamesUsed={};let isSafari=false;let isFirefox=false;let firefoxVersion=-1;if(typeof navigator!==\"undefined\"&&typeof navigator.userAgent!==\"undefined\"){isSafari=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===true;isFirefox=navigator.userAgent.indexOf(\"Firefox\")>-1;firefoxVersion=isFirefox?navigator.userAgent.match(/Firefox\\/([0-9]+)\\./)[1]:-1;}if(typeof createImageBitmap===\"undefined\"||isSafari||isFirefox&&firefoxVersion<98){this.textureLoader=new TextureLoader(this.options.manager);}else{this.textureLoader=new ImageBitmapLoader(this.options.manager);}this.textureLoader.setCrossOrigin(this.options.crossOrigin);this.textureLoader.setRequestHeader(this.options.requestHeader);this.fileLoader=new FileLoader(this.options.manager);this.fileLoader.setResponseType(\"arraybuffer\");if(this.options.crossOrigin===\"use-credentials\"){this.fileLoader.setWithCredentials(true);}}setExtensions(extensions){this.extensions=extensions;}setPlugins(plugins){this.plugins=plugins;}parse(onLoad,onError){const parser=this;const json=this.json;const extensions=this.extensions;this.cache.removeAll();this.nodeCache={};this._invokeAll(function(ext){return ext._markDefs&&ext._markDefs();});Promise.all(this._invokeAll(function(ext){return ext.beforeRoot&&ext.beforeRoot();})).then(function(){return Promise.all([parser.getDependencies(\"scene\"),parser.getDependencies(\"animation\"),parser.getDependencies(\"camera\")]);}).then(function(dependencies){const result={scene:dependencies[0][json.scene||0],scenes:dependencies[0],animations:dependencies[1],cameras:dependencies[2],asset:json.asset,parser,userData:{}};addUnknownExtensionsToUserData(extensions,result,json);assignExtrasToUserData(result,json);Promise.all(parser._invokeAll(function(ext){return ext.afterRoot&&ext.afterRoot(result);})).then(function(){onLoad(result);});}).catch(onError);}/**\n * Marks the special nodes/meshes in json for efficient parse.\n */_markDefs(){const nodeDefs=this.json.nodes||[];const skinDefs=this.json.skins||[];const meshDefs=this.json.meshes||[];for(let skinIndex=0,skinLength=skinDefs.length;skinIndex{const mappings=this.associations.get(original);if(mappings!=null){this.associations.set(clone2,mappings);}for(const[i2,child]of original.children.entries()){updateMappings(child,clone2.children[i2]);}};updateMappings(object,ref);ref.name+=\"_instance_\"+cache.uses[index]++;return ref;}_invokeOne(func){const extensions=Object.values(this.plugins);extensions.push(this);for(let i2=0;i2}\n */getDependency(type,index){const cacheKey=type+\":\"+index;let dependency=this.cache.get(cacheKey);if(!dependency){switch(type){case\"scene\":dependency=this.loadScene(index);break;case\"node\":dependency=this._invokeOne(function(ext){return ext.loadNode&&ext.loadNode(index);});break;case\"mesh\":dependency=this._invokeOne(function(ext){return ext.loadMesh&&ext.loadMesh(index);});break;case\"accessor\":dependency=this.loadAccessor(index);break;case\"bufferView\":dependency=this._invokeOne(function(ext){return ext.loadBufferView&&ext.loadBufferView(index);});break;case\"buffer\":dependency=this.loadBuffer(index);break;case\"material\":dependency=this._invokeOne(function(ext){return ext.loadMaterial&&ext.loadMaterial(index);});break;case\"texture\":dependency=this._invokeOne(function(ext){return ext.loadTexture&&ext.loadTexture(index);});break;case\"skin\":dependency=this.loadSkin(index);break;case\"animation\":dependency=this._invokeOne(function(ext){return ext.loadAnimation&&ext.loadAnimation(index);});break;case\"camera\":dependency=this.loadCamera(index);break;default:dependency=this._invokeOne(function(ext){return ext!=this&&ext.getDependency&&ext.getDependency(type,index);});if(!dependency){throw new Error(\"Unknown type: \"+type);}break;}this.cache.add(cacheKey,dependency);}return dependency;}/**\n * Requests all dependencies of the specified type asynchronously, with caching.\n * @param {string} type\n * @return {Promise>}\n */getDependencies(type){let dependencies=this.cache.get(type);if(!dependencies){const parser=this;const defs=this.json[type+(type===\"mesh\"?\"es\":\"s\")]||[];dependencies=Promise.all(defs.map(function(def,index){return parser.getDependency(type,index);}));this.cache.add(type,dependencies);}return dependencies;}/**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n * @param {number} bufferIndex\n * @return {Promise}\n */loadBuffer(bufferIndex){const bufferDef=this.json.buffers[bufferIndex];const loader=this.fileLoader;if(bufferDef.type&&bufferDef.type!==\"arraybuffer\"){throw new Error(\"THREE.GLTFLoader: \"+bufferDef.type+\" buffer type is not supported.\");}if(bufferDef.uri===void 0&&bufferIndex===0){return Promise.resolve(this.extensions[EXTENSIONS.KHR_BINARY_GLTF].body);}const options=this.options;return new Promise(function(resolve,reject){loader.load(LoaderUtils.resolveURL(bufferDef.uri,options.path),resolve,void 0,function(){reject(new Error('THREE.GLTFLoader: Failed to load buffer \"'+bufferDef.uri+'\".'));});});}/**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n * @param {number} bufferViewIndex\n * @return {Promise}\n */loadBufferView(bufferViewIndex){const bufferViewDef=this.json.bufferViews[bufferViewIndex];return this.getDependency(\"buffer\",bufferViewDef.buffer).then(function(buffer){const byteLength=bufferViewDef.byteLength||0;const byteOffset=bufferViewDef.byteOffset||0;return buffer.slice(byteOffset,byteOffset+byteLength);});}/**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors\n * @param {number} accessorIndex\n * @return {Promise}\n */loadAccessor(accessorIndex){const parser=this;const json=this.json;const accessorDef=this.json.accessors[accessorIndex];if(accessorDef.bufferView===void 0&&accessorDef.sparse===void 0){const itemSize=WEBGL_TYPE_SIZES[accessorDef.type];const TypedArray=WEBGL_COMPONENT_TYPES[accessorDef.componentType];const normalized=accessorDef.normalized===true;const array=new TypedArray(accessorDef.count*itemSize);return Promise.resolve(new BufferAttribute(array,itemSize,normalized));}const pendingBufferViews=[];if(accessorDef.bufferView!==void 0){pendingBufferViews.push(this.getDependency(\"bufferView\",accessorDef.bufferView));}else{pendingBufferViews.push(null);}if(accessorDef.sparse!==void 0){pendingBufferViews.push(this.getDependency(\"bufferView\",accessorDef.sparse.indices.bufferView));pendingBufferViews.push(this.getDependency(\"bufferView\",accessorDef.sparse.values.bufferView));}return Promise.all(pendingBufferViews).then(function(bufferViews){const bufferView=bufferViews[0];const itemSize=WEBGL_TYPE_SIZES[accessorDef.type];const TypedArray=WEBGL_COMPONENT_TYPES[accessorDef.componentType];const elementBytes=TypedArray.BYTES_PER_ELEMENT;const itemBytes=elementBytes*itemSize;const byteOffset=accessorDef.byteOffset||0;const byteStride=accessorDef.bufferView!==void 0?json.bufferViews[accessorDef.bufferView].byteStride:void 0;const normalized=accessorDef.normalized===true;let array,bufferAttribute;if(byteStride&&byteStride!==itemBytes){const ibSlice=Math.floor(byteOffset/byteStride);const ibCacheKey=\"InterleavedBuffer:\"+accessorDef.bufferView+\":\"+accessorDef.componentType+\":\"+ibSlice+\":\"+accessorDef.count;let ib=parser.cache.get(ibCacheKey);if(!ib){array=new TypedArray(bufferView,ibSlice*byteStride,accessorDef.count*byteStride/elementBytes);ib=new InterleavedBuffer(array,byteStride/elementBytes);parser.cache.add(ibCacheKey,ib);}bufferAttribute=new InterleavedBufferAttribute(ib,itemSize,byteOffset%byteStride/elementBytes,normalized);}else{if(bufferView===null){array=new TypedArray(accessorDef.count*itemSize);}else{array=new TypedArray(bufferView,byteOffset,accessorDef.count*itemSize);}bufferAttribute=new BufferAttribute(array,itemSize,normalized);}if(accessorDef.sparse!==void 0){const itemSizeIndices=WEBGL_TYPE_SIZES.SCALAR;const TypedArrayIndices=WEBGL_COMPONENT_TYPES[accessorDef.sparse.indices.componentType];const byteOffsetIndices=accessorDef.sparse.indices.byteOffset||0;const byteOffsetValues=accessorDef.sparse.values.byteOffset||0;const sparseIndices=new TypedArrayIndices(bufferViews[1],byteOffsetIndices,accessorDef.sparse.count*itemSizeIndices);const sparseValues=new TypedArray(bufferViews[2],byteOffsetValues,accessorDef.sparse.count*itemSize);if(bufferView!==null){bufferAttribute=new BufferAttribute(bufferAttribute.array.slice(),bufferAttribute.itemSize,bufferAttribute.normalized);}for(let i2=0,il=sparseIndices.length;i2=2)bufferAttribute.setY(index,sparseValues[i2*itemSize+1]);if(itemSize>=3)bufferAttribute.setZ(index,sparseValues[i2*itemSize+2]);if(itemSize>=4)bufferAttribute.setW(index,sparseValues[i2*itemSize+3]);if(itemSize>=5)throw new Error(\"THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.\");}}return bufferAttribute;});}/**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\n * @param {number} textureIndex\n * @return {Promise}\n */loadTexture(textureIndex){const json=this.json;const options=this.options;const textureDef=json.textures[textureIndex];const sourceIndex=textureDef.source;const sourceDef=json.images[sourceIndex];let loader=this.textureLoader;if(sourceDef.uri){const handler=options.manager.getHandler(sourceDef.uri);if(handler!==null)loader=handler;}return this.loadTextureImage(textureIndex,sourceIndex,loader);}loadTextureImage(textureIndex,sourceIndex,loader){const parser=this;const json=this.json;const textureDef=json.textures[textureIndex];const sourceDef=json.images[sourceIndex];const cacheKey=(sourceDef.uri||sourceDef.bufferView)+\":\"+textureDef.sampler;if(this.textureCache[cacheKey]){return this.textureCache[cacheKey];}const promise=this.loadImageSource(sourceIndex,loader).then(function(texture){texture.flipY=false;texture.name=textureDef.name||sourceDef.name||\"\";if(texture.name===\"\"&&typeof sourceDef.uri===\"string\"&&sourceDef.uri.startsWith(\"data:image/\")===false){texture.name=sourceDef.uri;}const samplers=json.samplers||{};const sampler=samplers[textureDef.sampler]||{};texture.magFilter=WEBGL_FILTERS[sampler.magFilter]||LinearFilter;texture.minFilter=WEBGL_FILTERS[sampler.minFilter]||LinearMipmapLinearFilter;texture.wrapS=WEBGL_WRAPPINGS[sampler.wrapS]||RepeatWrapping;texture.wrapT=WEBGL_WRAPPINGS[sampler.wrapT]||RepeatWrapping;parser.associations.set(texture,{textures:textureIndex});return texture;}).catch(function(){return null;});this.textureCache[cacheKey]=promise;return promise;}loadImageSource(sourceIndex,loader){const parser=this;const json=this.json;const options=this.options;if(this.sourceCache[sourceIndex]!==void 0){return this.sourceCache[sourceIndex].then(texture=>texture.clone());}const sourceDef=json.images[sourceIndex];const URL2=self.URL||self.webkitURL;let sourceURI=sourceDef.uri||\"\";let isObjectURL=false;if(sourceDef.bufferView!==void 0){sourceURI=parser.getDependency(\"bufferView\",sourceDef.bufferView).then(function(bufferView){isObjectURL=true;const blob=new Blob([bufferView],{type:sourceDef.mimeType});sourceURI=URL2.createObjectURL(blob);return sourceURI;});}else if(sourceDef.uri===void 0){throw new Error(\"THREE.GLTFLoader: Image \"+sourceIndex+\" is missing URI and bufferView\");}const promise=Promise.resolve(sourceURI).then(function(sourceURI2){return new Promise(function(resolve,reject){let onLoad=resolve;if(loader.isImageBitmapLoader===true){onLoad=function(imageBitmap){const texture=new Texture(imageBitmap);texture.needsUpdate=true;resolve(texture);};}loader.load(LoaderUtils.resolveURL(sourceURI2,options.path),onLoad,void 0,reject);});}).then(function(texture){if(isObjectURL===true){URL2.revokeObjectURL(sourceURI);}texture.userData.mimeType=sourceDef.mimeType||getImageURIMimeType(sourceDef.uri);return texture;}).catch(function(error){console.error(\"THREE.GLTFLoader: Couldn't load texture\",sourceURI);throw error;});this.sourceCache[sourceIndex]=promise;return promise;}/**\n * Asynchronously assigns a texture to the given material parameters.\n * @param {Object} materialParams\n * @param {string} mapName\n * @param {Object} mapDef\n * @return {Promise}\n */assignTexture(materialParams,mapName,mapDef,encoding){const parser=this;return this.getDependency(\"texture\",mapDef.index).then(function(texture){if(!texture)return null;if(mapDef.texCoord!==void 0&&mapDef.texCoord>0){texture=texture.clone();texture.channel=mapDef.texCoord;}if(parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM]){const transform=mapDef.extensions!==void 0?mapDef.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM]:void 0;if(transform){const gltfReference=parser.associations.get(texture);texture=parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM].extendTexture(texture,transform);parser.associations.set(texture,gltfReference);}}if(encoding!==void 0){if(\"colorSpace\"in texture)texture.colorSpace=encoding===3001?\"srgb\":\"srgb-linear\";else texture.encoding=encoding;}materialParams[mapName]=texture;return texture;});}/**\n * Assigns final material to a Mesh, Line, or Points instance. The instance\n * already has a material (generated from the glTF material options alone)\n * but reuse of the same glTF material may require multiple threejs materials\n * to accommodate different primitive types, defines, etc. New materials will\n * be created if necessary, and reused from a cache.\n * @param {Object3D} mesh Mesh, Line, or Points instance.\n */assignFinalMaterial(mesh){const geometry2=mesh.geometry;let material2=mesh.material;const useDerivativeTangents=geometry2.attributes.tangent===void 0;const useVertexColors=geometry2.attributes.color!==void 0;const useFlatShading=geometry2.attributes.normal===void 0;if(mesh.isPoints){const cacheKey=\"PointsMaterial:\"+material2.uuid;let pointsMaterial=this.cache.get(cacheKey);if(!pointsMaterial){pointsMaterial=new PointsMaterial();Material.prototype.copy.call(pointsMaterial,material2);pointsMaterial.color.copy(material2.color);pointsMaterial.map=material2.map;pointsMaterial.sizeAttenuation=false;this.cache.add(cacheKey,pointsMaterial);}material2=pointsMaterial;}else if(mesh.isLine){const cacheKey=\"LineBasicMaterial:\"+material2.uuid;let lineMaterial=this.cache.get(cacheKey);if(!lineMaterial){lineMaterial=new LineBasicMaterial();Material.prototype.copy.call(lineMaterial,material2);lineMaterial.color.copy(material2.color);lineMaterial.map=material2.map;this.cache.add(cacheKey,lineMaterial);}material2=lineMaterial;}if(useDerivativeTangents||useVertexColors||useFlatShading){let cacheKey=\"ClonedMaterial:\"+material2.uuid+\":\";if(useDerivativeTangents)cacheKey+=\"derivative-tangents:\";if(useVertexColors)cacheKey+=\"vertex-colors:\";if(useFlatShading)cacheKey+=\"flat-shading:\";let cachedMaterial=this.cache.get(cacheKey);if(!cachedMaterial){cachedMaterial=material2.clone();if(useVertexColors)cachedMaterial.vertexColors=true;if(useFlatShading)cachedMaterial.flatShading=true;if(useDerivativeTangents){if(cachedMaterial.normalScale)cachedMaterial.normalScale.y*=-1;if(cachedMaterial.clearcoatNormalScale)cachedMaterial.clearcoatNormalScale.y*=-1;}this.cache.add(cacheKey,cachedMaterial);this.associations.set(cachedMaterial,this.associations.get(material2));}material2=cachedMaterial;}mesh.material=material2;}getMaterialType(){return MeshStandardMaterial;}/**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\n * @param {number} materialIndex\n * @return {Promise}\n */loadMaterial(materialIndex){const parser=this;const json=this.json;const extensions=this.extensions;const materialDef=json.materials[materialIndex];let materialType;const materialParams={};const materialExtensions=materialDef.extensions||{};const pending=[];if(materialExtensions[EXTENSIONS.KHR_MATERIALS_UNLIT]){const kmuExtension=extensions[EXTENSIONS.KHR_MATERIALS_UNLIT];materialType=kmuExtension.getMaterialType();pending.push(kmuExtension.extendParams(materialParams,materialDef,parser));}else{const metallicRoughness=materialDef.pbrMetallicRoughness||{};materialParams.color=new Color(1,1,1);materialParams.opacity=1;if(Array.isArray(metallicRoughness.baseColorFactor)){const array=metallicRoughness.baseColorFactor;materialParams.color.fromArray(array);materialParams.opacity=array[3];}if(metallicRoughness.baseColorTexture!==void 0){pending.push(parser.assignTexture(materialParams,\"map\",metallicRoughness.baseColorTexture,3001));}materialParams.metalness=metallicRoughness.metallicFactor!==void 0?metallicRoughness.metallicFactor:1;materialParams.roughness=metallicRoughness.roughnessFactor!==void 0?metallicRoughness.roughnessFactor:1;if(metallicRoughness.metallicRoughnessTexture!==void 0){pending.push(parser.assignTexture(materialParams,\"metalnessMap\",metallicRoughness.metallicRoughnessTexture));pending.push(parser.assignTexture(materialParams,\"roughnessMap\",metallicRoughness.metallicRoughnessTexture));}materialType=this._invokeOne(function(ext){return ext.getMaterialType&&ext.getMaterialType(materialIndex);});pending.push(Promise.all(this._invokeAll(function(ext){return ext.extendMaterialParams&&ext.extendMaterialParams(materialIndex,materialParams);})));}if(materialDef.doubleSided===true){materialParams.side=DoubleSide;}const alphaMode=materialDef.alphaMode||ALPHA_MODES.OPAQUE;if(alphaMode===ALPHA_MODES.BLEND){materialParams.transparent=true;materialParams.depthWrite=false;}else{materialParams.transparent=false;if(alphaMode===ALPHA_MODES.MASK){materialParams.alphaTest=materialDef.alphaCutoff!==void 0?materialDef.alphaCutoff:0.5;}}if(materialDef.normalTexture!==void 0&&materialType!==MeshBasicMaterial){pending.push(parser.assignTexture(materialParams,\"normalMap\",materialDef.normalTexture));materialParams.normalScale=new Vector2(1,1);if(materialDef.normalTexture.scale!==void 0){const scale=materialDef.normalTexture.scale;materialParams.normalScale.set(scale,scale);}}if(materialDef.occlusionTexture!==void 0&&materialType!==MeshBasicMaterial){pending.push(parser.assignTexture(materialParams,\"aoMap\",materialDef.occlusionTexture));if(materialDef.occlusionTexture.strength!==void 0){materialParams.aoMapIntensity=materialDef.occlusionTexture.strength;}}if(materialDef.emissiveFactor!==void 0&&materialType!==MeshBasicMaterial){materialParams.emissive=new Color().fromArray(materialDef.emissiveFactor);}if(materialDef.emissiveTexture!==void 0&&materialType!==MeshBasicMaterial){pending.push(parser.assignTexture(materialParams,\"emissiveMap\",materialDef.emissiveTexture,3001));}return Promise.all(pending).then(function(){const material2=new materialType(materialParams);if(materialDef.name)material2.name=materialDef.name;assignExtrasToUserData(material2,materialDef);parser.associations.set(material2,{materials:materialIndex});if(materialDef.extensions)addUnknownExtensionsToUserData(extensions,material2,materialDef);return material2;});}/** When Object3D instances are targeted by animation, they need unique names. */createUniqueName(originalName){const sanitizedName=PropertyBinding.sanitizeNodeName(originalName||\"\");if(sanitizedName in this.nodeNamesUsed){return sanitizedName+\"_\"+ ++this.nodeNamesUsed[sanitizedName];}else{this.nodeNamesUsed[sanitizedName]=0;return sanitizedName;}}/**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\n *\n * Creates BufferGeometries from primitives.\n *\n * @param {Array} primitives\n * @return {Promise>}\n */loadGeometries(primitives){const parser=this;const extensions=this.extensions;const cache=this.primitiveCache;function createDracoPrimitive(primitive){return extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(primitive,parser).then(function(geometry2){return addPrimitiveAttributes(geometry2,primitive,parser);});}const pending=[];for(let i2=0,il=primitives.length;i2}\n */loadMesh(meshIndex){const parser=this;const json=this.json;const extensions=this.extensions;const meshDef=json.meshes[meshIndex];const primitives=meshDef.primitives;const pending=[];for(let i2=0,il=primitives.length;i20){updateMorphTargets(mesh,meshDef);}mesh.name=parser.createUniqueName(meshDef.name||\"mesh_\"+meshIndex);assignExtrasToUserData(mesh,meshDef);if(primitive.extensions)addUnknownExtensionsToUserData(extensions,mesh,primitive);parser.assignFinalMaterial(mesh);meshes.push(mesh);}for(let i2=0,il=meshes.length;i2}\n */loadCamera(cameraIndex){let camera;const cameraDef=this.json.cameras[cameraIndex];const params=cameraDef[cameraDef.type];if(!params){console.warn(\"THREE.GLTFLoader: Missing camera parameters.\");return;}if(cameraDef.type===\"perspective\"){camera=new PerspectiveCamera(MathUtils.radToDeg(params.yfov),params.aspectRatio||1,params.znear||1,params.zfar||2e6);}else if(cameraDef.type===\"orthographic\"){camera=new OrthographicCamera(-params.xmag,params.xmag,params.ymag,-params.ymag,params.znear,params.zfar);}if(cameraDef.name)camera.name=this.createUniqueName(cameraDef.name);assignExtrasToUserData(camera,cameraDef);return Promise.resolve(camera);}/**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins\n * @param {number} skinIndex\n * @return {Promise}\n */loadSkin(skinIndex){const skinDef=this.json.skins[skinIndex];const pending=[];for(let i2=0,il=skinDef.joints.length;i2}\n */loadAnimation(animationIndex){const json=this.json;const animationDef=json.animations[animationIndex];const animationName=animationDef.name?animationDef.name:\"animation_\"+animationIndex;const pendingNodes=[];const pendingInputAccessors=[];const pendingOutputAccessors=[];const pendingSamplers=[];const pendingTargets=[];for(let i2=0,il=animationDef.channels.length;i2}\n */loadNode(nodeIndex){const json=this.json;const parser=this;const nodeDef=json.nodes[nodeIndex];const nodePending=parser._loadNodeShallow(nodeIndex);const childPending=[];const childrenDef=nodeDef.children||[];for(let i2=0,il=childrenDef.length;i21){node=new Group();}else if(objects.length===1){node=objects[0];}else{node=new Object3D();}if(node!==objects[0]){for(let i2=0,il=objects.length;i2}\n */loadScene(sceneIndex){const extensions=this.extensions;const sceneDef=this.json.scenes[sceneIndex];const parser=this;const scene=new Group();if(sceneDef.name)scene.name=parser.createUniqueName(sceneDef.name);assignExtrasToUserData(scene,sceneDef);if(sceneDef.extensions)addUnknownExtensionsToUserData(extensions,scene,sceneDef);const nodeIds=sceneDef.nodes||[];const pending=[];for(let i2=0,il=nodeIds.length;i2{const reducedAssociations=/* @__PURE__ */new Map();for(const[key,value]of parser.associations){if(key instanceof Material||key instanceof Texture){reducedAssociations.set(key,value);}}node.traverse(node2=>{const mappings=parser.associations.get(node2);if(mappings!=null){reducedAssociations.set(node2,mappings);}});return reducedAssociations;};parser.associations=reduceAssociations(scene);return scene;});}}function computeBounds(geometry2,primitiveDef,parser){const attributes=primitiveDef.attributes;const box=new Box3();if(attributes.POSITION!==void 0){const accessor=parser.json.accessors[attributes.POSITION];const min=accessor.min;const max=accessor.max;if(min!==void 0&&max!==void 0){box.set(new Vector3(min[0],min[1],min[2]),new Vector3(max[0],max[1],max[2]));if(accessor.normalized){const boxScale=getNormalizedComponentScale(WEBGL_COMPONENT_TYPES[accessor.componentType]);box.min.multiplyScalar(boxScale);box.max.multiplyScalar(boxScale);}}else{console.warn(\"THREE.GLTFLoader: Missing min/max properties for accessor POSITION.\");return;}}else{return;}const targets=primitiveDef.targets;if(targets!==void 0){const maxDisplacement=new Vector3();const vector=new Vector3();for(let i2=0,il=targets.length;i2{const object=gltf.scene.children[0];this.handModel.add(object);const mesh=object.getObjectByProperty(\"type\",\"SkinnedMesh\");mesh.frustumCulled=false;mesh.castShadow=true;mesh.receiveShadow=true;const joints=[\"wrist\",\"thumb-metacarpal\",\"thumb-phalanx-proximal\",\"thumb-phalanx-distal\",\"thumb-tip\",\"index-finger-metacarpal\",\"index-finger-phalanx-proximal\",\"index-finger-phalanx-intermediate\",\"index-finger-phalanx-distal\",\"index-finger-tip\",\"middle-finger-metacarpal\",\"middle-finger-phalanx-proximal\",\"middle-finger-phalanx-intermediate\",\"middle-finger-phalanx-distal\",\"middle-finger-tip\",\"ring-finger-metacarpal\",\"ring-finger-phalanx-proximal\",\"ring-finger-phalanx-intermediate\",\"ring-finger-phalanx-distal\",\"ring-finger-tip\",\"pinky-finger-metacarpal\",\"pinky-finger-phalanx-proximal\",\"pinky-finger-phalanx-intermediate\",\"pinky-finger-phalanx-distal\",\"pinky-finger-tip\"];joints.forEach(jointName=>{const bone=object.getObjectByName(jointName);if(bone!==void 0){bone.jointName=jointName;}else{console.warn(`Couldn't find ${jointName} in ${handedness} hand mesh`);}this.bones.push(bone);});});}updateMesh(){const XRJoints=this.controller.joints;for(let i2=0;i2{const xrInputSource=event.data;if(xrInputSource.hand&&!this.motionController){this.xrInputSource=xrInputSource;this.motionController=new XRHandMeshModel(this,controller,void 0,xrInputSource.handedness,xrInputSource.handedness===\"left\"?leftModelPath:rightModelPath);}});controller.addEventListener(\"disconnected\",()=>{this.dispose();});}updateMatrixWorld(force){super.updateMatrixWorld(force);if(this.motionController){this.motionController.updateMesh();}}getPointerPosition(){const indexFingerTip=this.controller.joints[POINTING_JOINT];if(indexFingerTip){return indexFingerTip.position;}else{return null;}}intersectBoxObject(boxObject){const pointerPosition=this.getPointerPosition();if(pointerPosition){const indexSphere=new Sphere(pointerPosition,TOUCH_RADIUS);const box=new Box3().setFromObject(boxObject);return indexSphere.intersectsBox(box);}else{return false;}}checkButton(button){if(this.intersectBoxObject(button)){button.onPress();}else{button.onClear();}if(button.isPressed()){button.whilePressed();}}dispose(){this.clear();this.motionController=null;}}const PINCH_MAX=0.05;const PINCH_THRESHOLD=0.02;const PINCH_MIN=0.01;const POINTER_ADVANCE_MAX=0.02;const POINTER_OPACITY_MAX=1;const POINTER_OPACITY_MIN=0.4;const POINTER_FRONT_RADIUS=2e-3;const POINTER_REAR_RADIUS=0.01;const POINTER_REAR_RADIUS_MIN=3e-3;const POINTER_LENGTH=0.035;const POINTER_SEGMENTS=16;const POINTER_RINGS=12;const POINTER_HEMISPHERE_ANGLE=110;const YAXIS=/*@__PURE__*/new THREE.Vector3(0,1,0);const ZAXIS=/*@__PURE__*/new THREE.Vector3(0,0,1);const CURSOR_RADIUS=0.02;const CURSOR_MAX_DISTANCE=1.5;class OculusHandPointerModel extends THREE.Object3D{constructor(hand,controller){super();this.hand=hand;this.controller=controller;this.motionController=null;this.envMap=null;this.mesh=null;this.pointerGeometry=null;this.pointerMesh=null;this.pointerObject=null;this.pinched=false;this.attached=false;this.cursorObject=null;this.raycaster=null;this._onConnected=this._onConnected.bind(this);this._onDisconnected=this._onDisconnected.bind(this);this.hand.addEventListener(\"connected\",this._onConnected);this.hand.addEventListener(\"disconnected\",this._onDisconnected);}_onConnected(event){const xrInputSource=event.data;if(xrInputSource.hand){this.visible=true;this.xrInputSource=xrInputSource;this.createPointer();}}_onDisconnected(){var _a2,_b2;this.visible=false;this.xrInputSource=null;(_a2=this.pointerGeometry)==null?void 0:_a2.dispose();(_b2=this.pointerMesh)==null?void 0:_b2.material.dispose();this.clear();}_drawVerticesRing(vertices,baseVector,ringIndex){const segmentVector=baseVector.clone();for(var i2=0;i21){this._updatePointerVertices(POINTER_REAR_RADIUS);this.pointerMesh.position.set(0,0,-1*POINTER_REAR_RADIUS);this.pointerMesh.material.opacity=POINTER_OPACITY_MIN;}else if(pinchScale>0){const rearRadius=(POINTER_REAR_RADIUS-POINTER_REAR_RADIUS_MIN)*pinchScale+POINTER_REAR_RADIUS_MIN;this._updatePointerVertices(rearRadius);if(focusScale<1){this.pointerMesh.position.set(0,0,-1*rearRadius-(1-focusScale)*POINTER_ADVANCE_MAX);this.pointerMesh.material.opacity=POINTER_OPACITY_MIN+(1-focusScale)*(POINTER_OPACITY_MAX-POINTER_OPACITY_MIN);}else{this.pointerMesh.position.set(0,0,-1*rearRadius);this.pointerMesh.material.opacity=POINTER_OPACITY_MIN;}}else{this._updatePointerVertices(POINTER_REAR_RADIUS_MIN);this.pointerMesh.position.set(0,0,-1*POINTER_REAR_RADIUS_MIN-POINTER_ADVANCE_MAX);this.pointerMesh.material.opacity=POINTER_OPACITY_MAX;}this.cursorObject.material.opacity=this.pointerMesh.material.opacity;}updateMatrixWorld(force){super.updateMatrixWorld(force);if(this.pointerGeometry){this._updatePointer();this._updateRaycaster();}}isPinched(){return this.pinched;}setAttached(attached){this.attached=attached;}isAttached(){return this.attached;}intersectObject(object,recursive=true){if(this.raycaster){return this.raycaster.intersectObject(object,recursive);}}intersectObjects(objects,recursive=true){if(this.raycaster){return this.raycaster.intersectObjects(objects,recursive);}}checkIntersections(objects,recursive=false){if(this.raycaster&&!this.attached){const intersections=this.raycaster.intersectObjects(objects,recursive);const direction=new THREE.Vector3(0,0,-1);if(intersections.length>0){const intersection=intersections[0];const distance=intersection.distance;this.cursorObject.position.copy(direction.multiplyScalar(distance));}else{this.cursorObject.position.copy(direction.multiplyScalar(CURSOR_MAX_DISTANCE));}}}setCursor(distance){const direction=new THREE.Vector3(0,0,-1);if(this.raycaster&&!this.attached){this.cursorObject.position.copy(direction.multiplyScalar(distance));}}dispose(){this._onDisconnected();this.hand.removeEventListener(\"connected\",this._onConnected);this.hand.removeEventListener(\"disconnected\",this._onDisconnected);}}function createText(message,height){const canvas=document.createElement(\"canvas\");const context=canvas.getContext(\"2d\");let metrics=null;const textHeight=100;context.font=\"normal \"+textHeight+\"px Arial\";metrics=context.measureText(message);const textWidth=metrics.width;canvas.width=textWidth;canvas.height=textHeight;context.font=\"normal \"+textHeight+\"px Arial\";context.textAlign=\"center\";context.textBaseline=\"middle\";context.fillStyle=\"#ffffff\";context.fillText(message,textWidth/2,textHeight/2);const texture=new THREE.Texture(canvas);texture.needsUpdate=true;const material2=new THREE.MeshBasicMaterial({color:16777215,side:THREE.DoubleSide,map:texture,transparent:true});const geometry2=new THREE.PlaneGeometry(height*textWidth/textHeight,height);const plane=new THREE.Mesh(geometry2,material2);return plane;}const _VRButton=class{static createButton(renderer,sessionInit={}){const button=document.createElement(\"button\");function showEnterVR(){let currentSession=null;async function onSessionStarted(session){session.addEventListener(\"end\",onSessionEnded);await renderer.xr.setSession(session);button.textContent=\"EXIT VR\";currentSession=session;}function onSessionEnded(){currentSession.removeEventListener(\"end\",onSessionEnded);button.textContent=\"ENTER VR\";currentSession=null;}button.style.display=\"\";button.style.cursor=\"pointer\";button.style.left=\"calc(50% - 50px)\";button.style.width=\"100px\";button.textContent=\"ENTER VR\";button.onmouseenter=()=>{button.style.opacity=\"1.0\";};button.onmouseleave=()=>{button.style.opacity=\"0.5\";};button.onclick=()=>{var _a2;if(currentSession===null){const optionalFeatures=[sessionInit.optionalFeatures,\"local-floor\",\"bounded-floor\",\"hand-tracking\"].flat().filter(Boolean);(_a2=navigator.xr)==null?void 0:_a2.requestSession(\"immersive-vr\",{...sessionInit,optionalFeatures}).then(onSessionStarted);}else{currentSession.end();}};}function disableButton(){button.style.display=\"\";button.style.cursor=\"auto\";button.style.left=\"calc(50% - 75px)\";button.style.width=\"150px\";button.onmouseenter=null;button.onmouseleave=null;button.onclick=null;}function showWebXRNotFound(){disableButton();button.textContent=\"VR NOT SUPPORTED\";}function stylizeElement(element){element.style.position=\"absolute\";element.style.bottom=\"20px\";element.style.padding=\"12px 6px\";element.style.border=\"1px solid #fff\";element.style.borderRadius=\"4px\";element.style.background=\"rgba(0,0,0,0.1)\";element.style.color=\"#fff\";element.style.font=\"normal 13px sans-serif\";element.style.textAlign=\"center\";element.style.opacity=\"0.5\";element.style.outline=\"none\";element.style.zIndex=\"999\";}if(\"xr\"in navigator){stylizeElement(button);button.id=\"VRButton\";button.style.display=\"none\";navigator.xr.isSessionSupported(\"immersive-vr\").then(supported=>{supported?showEnterVR():showWebXRNotFound();if(supported&&_VRButton.xrSessionIsGranted){button.click();}});return button;}else{const message=document.createElement(\"a\");if(window.isSecureContext===false){message.href=document.location.href.replace(/^http:/,\"https:\");message.innerHTML=\"WEBXR NEEDS HTTPS\";}else{message.href=\"https://immersiveweb.dev/\";message.innerHTML=\"WEBXR NOT AVAILABLE\";}message.style.left=\"calc(50% - 90px)\";message.style.width=\"180px\";message.style.textDecoration=\"none\";stylizeElement(message);return message;}}static registerSessionGrantedListener(){if(typeof navigator!==\"undefined\"&&\"xr\"in navigator){navigator.xr.addEventListener(\"sessiongranted\",()=>{_VRButton.xrSessionIsGranted=true;});}}};let VRButton=_VRButton;/*@__PURE__*/__publicField(VRButton,\"xrSessionIsGranted\",false);/*@__PURE__*/VRButton.registerSessionGrantedListener();const MotionControllerConstants={Handedness:{NONE:\"none\",LEFT:\"left\",RIGHT:\"right\"},ComponentState:{DEFAULT:\"default\",TOUCHED:\"touched\",PRESSED:\"pressed\"},ComponentProperty:{BUTTON:\"button\",X_AXIS:\"xAxis\",Y_AXIS:\"yAxis\",STATE:\"state\"},ComponentType:{TRIGGER:\"trigger\",SQUEEZE:\"squeeze\",TOUCHPAD:\"touchpad\",THUMBSTICK:\"thumbstick\",BUTTON:\"button\"},ButtonTouchThreshold:0.05,AxisTouchThreshold:0.1,VisualResponseProperty:{TRANSFORM:\"transform\",VISIBILITY:\"visibility\"}};async function fetchJsonFile(path){const response=await fetch(path);if(!response.ok){throw new Error(response.statusText);}else{return response.json();}}async function fetchProfilesList(basePath){if(!basePath){throw new Error(\"No basePath supplied\");}const profileListFileName=\"profilesList.json\";const profilesList=await fetchJsonFile(`${basePath}/${profileListFileName}`);return profilesList;}async function fetchProfile(xrInputSource,basePath,defaultProfile=null,getAssetPath=true){if(!xrInputSource){throw new Error(\"No xrInputSource supplied\");}if(!basePath){throw new Error(\"No basePath supplied\");}const supportedProfilesList=await fetchProfilesList(basePath);let match=void 0;xrInputSource.profiles.some(profileId=>{const supportedProfile=supportedProfilesList[profileId];if(supportedProfile){match={profileId,profilePath:`${basePath}/${supportedProfile.path}`,deprecated:!!supportedProfile.deprecated};}return!!match;});if(!match){if(!defaultProfile){throw new Error(\"No matching profile name found\");}const supportedProfile=supportedProfilesList[defaultProfile];if(!supportedProfile){throw new Error(`No matching profile name found and default profile \"${defaultProfile}\" missing.`);}match={profileId:defaultProfile,profilePath:`${basePath}/${supportedProfile.path}`,deprecated:!!supportedProfile.deprecated};}const profile=await fetchJsonFile(match.profilePath);let assetPath=void 0;if(getAssetPath){let layout;if(xrInputSource.handedness===\"any\"){layout=profile.layouts[Object.keys(profile.layouts)[0]];}else{layout=profile.layouts[xrInputSource.handedness];}if(!layout){throw new Error(`No matching handedness, ${xrInputSource.handedness}, in profile ${match.profileId}`);}if(layout.assetPath){assetPath=match.profilePath.replace(\"profile.json\",layout.assetPath);}}return{profile,assetPath};}const defaultComponentValues={xAxis:0,yAxis:0,button:0,state:MotionControllerConstants.ComponentState.DEFAULT};function normalizeAxes(x=0,y=0){let xAxis2=x;let yAxis2=y;const hypotenuse=Math.sqrt(x*x+y*y);if(hypotenuse>1){const theta=Math.atan2(y,x);xAxis2=Math.cos(theta);yAxis2=Math.sin(theta);}const result={normalizedXAxis:xAxis2*0.5+0.5,normalizedYAxis:yAxis2*0.5+0.5};return result;}class VisualResponse{constructor(visualResponseDescription){__publicField(this,\"value\");__publicField(this,\"componentProperty\");__publicField(this,\"states\");__publicField(this,\"valueNodeName\");__publicField(this,\"valueNodeProperty\");__publicField(this,\"minNodeName\");__publicField(this,\"maxNodeName\");__publicField(this,\"valueNode\");__publicField(this,\"minNode\");__publicField(this,\"maxNode\");this.componentProperty=visualResponseDescription.componentProperty;this.states=visualResponseDescription.states;this.valueNodeName=visualResponseDescription.valueNodeName;this.valueNodeProperty=visualResponseDescription.valueNodeProperty;if(this.valueNodeProperty===MotionControllerConstants.VisualResponseProperty.TRANSFORM){this.minNodeName=visualResponseDescription.minNodeName;this.maxNodeName=visualResponseDescription.maxNodeName;}this.value=0;this.updateFromComponent(defaultComponentValues);}/**\n * Computes the visual response's interpolation weight based on component state\n * @param {Object} componentValues - The component from which to update\n * @param {number | undefined} xAxis - The reported X axis value of the component\n * @param {number | undefined} yAxis - The reported Y axis value of the component\n * @param {number | undefined} button - The reported value of the component's button\n * @param {string} state - The component's active state\n */updateFromComponent({xAxis:xAxis2,yAxis:yAxis2,button,state}){const{normalizedXAxis,normalizedYAxis}=normalizeAxes(xAxis2,yAxis2);switch(this.componentProperty){case MotionControllerConstants.ComponentProperty.X_AXIS:this.value=this.states.includes(state)?normalizedXAxis:0.5;break;case MotionControllerConstants.ComponentProperty.Y_AXIS:this.value=this.states.includes(state)?normalizedYAxis:0.5;break;case MotionControllerConstants.ComponentProperty.BUTTON:this.value=this.states.includes(state)&&button?button:0;break;case MotionControllerConstants.ComponentProperty.STATE:if(this.valueNodeProperty===MotionControllerConstants.VisualResponseProperty.VISIBILITY){this.value=this.states.includes(state);}else{this.value=this.states.includes(state)?1:0;}break;default:throw new Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`);}}}class Component{/**\n * @param {string} componentId - Id of the component\n * @param {InputProfileComponent} componentDescription - Description of the component to be created\n */constructor(componentId,componentDescription){__publicField(this,\"id\");__publicField(this,\"values\");__publicField(this,\"type\");__publicField(this,\"gamepadIndices\");__publicField(this,\"rootNodeName\");__publicField(this,\"visualResponses\");__publicField(this,\"touchPointNodeName\");__publicField(this,\"touchPointNode\");if(!componentId||!componentDescription||!componentDescription.visualResponses||!componentDescription.gamepadIndices||Object.keys(componentDescription.gamepadIndices).length===0){throw new Error(\"Invalid arguments supplied\");}this.id=componentId;this.type=componentDescription.type;this.rootNodeName=componentDescription.rootNodeName;this.touchPointNodeName=componentDescription.touchPointNodeName;this.visualResponses={};Object.keys(componentDescription.visualResponses).forEach(responseName=>{const visualResponse=new VisualResponse(componentDescription.visualResponses[responseName]);this.visualResponses[responseName]=visualResponse;});this.gamepadIndices=Object.assign({},componentDescription.gamepadIndices);this.values={state:MotionControllerConstants.ComponentState.DEFAULT,button:this.gamepadIndices.button!==void 0?0:void 0,xAxis:this.gamepadIndices.xAxis!==void 0?0:void 0,yAxis:this.gamepadIndices.yAxis!==void 0?0:void 0};}get data(){const data={id:this.id,...this.values};return data;}/**\n * @description Poll for updated data based on current gamepad state\n * @param {Object} gamepad - The gamepad object from which the component data should be polled\n */updateFromGamepad(gamepad){this.values.state=MotionControllerConstants.ComponentState.DEFAULT;if(this.gamepadIndices.button!==void 0&&gamepad.buttons.length>this.gamepadIndices.button){const gamepadButton=gamepad.buttons[this.gamepadIndices.button];this.values.button=gamepadButton.value;this.values.button=this.values.button<0?0:this.values.button;this.values.button=this.values.button>1?1:this.values.button;if(gamepadButton.pressed||this.values.button===1){this.values.state=MotionControllerConstants.ComponentState.PRESSED;}else if(gamepadButton.touched||this.values.button>MotionControllerConstants.ButtonTouchThreshold){this.values.state=MotionControllerConstants.ComponentState.TOUCHED;}}if(this.gamepadIndices.xAxis!==void 0&&gamepad.axes.length>this.gamepadIndices.xAxis){this.values.xAxis=gamepad.axes[this.gamepadIndices.xAxis];this.values.xAxis=this.values.xAxis<-1?-1:this.values.xAxis;this.values.xAxis=this.values.xAxis>1?1:this.values.xAxis;if(this.values.state===MotionControllerConstants.ComponentState.DEFAULT&&Math.abs(this.values.xAxis)>MotionControllerConstants.AxisTouchThreshold){this.values.state=MotionControllerConstants.ComponentState.TOUCHED;}}if(this.gamepadIndices.yAxis!==void 0&&gamepad.axes.length>this.gamepadIndices.yAxis){this.values.yAxis=gamepad.axes[this.gamepadIndices.yAxis];this.values.yAxis=this.values.yAxis<-1?-1:this.values.yAxis;this.values.yAxis=this.values.yAxis>1?1:this.values.yAxis;if(this.values.state===MotionControllerConstants.ComponentState.DEFAULT&&Math.abs(this.values.yAxis)>MotionControllerConstants.AxisTouchThreshold){this.values.state=MotionControllerConstants.ComponentState.TOUCHED;}}Object.values(this.visualResponses).forEach(visualResponse=>{visualResponse.updateFromComponent(this.values);});}}class MotionController{/**\n * @param {XRInputSource} xrInputSource - The XRInputSource to build the MotionController around\n * @param {Profile} profile - The best matched profile description for the supplied xrInputSource\n * @param {string} assetUrl\n */constructor(xrInputSource,profile,assetUrl){__publicField(this,\"xrInputSource\");__publicField(this,\"assetUrl\");__publicField(this,\"layoutDescription\");__publicField(this,\"id\");__publicField(this,\"components\");if(!xrInputSource){throw new Error(\"No xrInputSource supplied\");}if(!profile){throw new Error(\"No profile supplied\");}if(!profile.layouts[xrInputSource.handedness]){throw new Error(\"No layout for \"+xrInputSource.handedness+\" handedness\");}this.xrInputSource=xrInputSource;this.assetUrl=assetUrl;this.id=profile.profileId;this.layoutDescription=profile.layouts[xrInputSource.handedness];this.components={};Object.keys(this.layoutDescription.components).forEach(componentId=>{const componentDescription=this.layoutDescription.components[componentId];this.components[componentId]=new Component(componentId,componentDescription);});this.updateFromGamepad();}get gripSpace(){return this.xrInputSource.gripSpace;}get targetRaySpace(){return this.xrInputSource.targetRaySpace;}/**\n * @description Returns a subset of component data for simplified debugging\n */get data(){const data=[];Object.values(this.components).forEach(component=>{data.push(component.data);});return data;}/**\n * @description Poll for updated data based on current gamepad state\n */updateFromGamepad(){Object.values(this.components).forEach(component=>{component.updateFromGamepad(this.xrInputSource.gamepad);});}}const DEFAULT_PROFILES_PATH=\"https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles\";const DEFAULT_PROFILE=\"generic-trigger\";const applyEnvironmentMap=(envMap,obj)=>{obj.traverse(child=>{if(child instanceof Mesh&&\"envMap\"in child.material){child.material.envMap=envMap;child.material.needsUpdate=true;}});};class XRControllerModel extends Object3D{constructor(){super();__publicField(this,\"envMap\");__publicField(this,\"motionController\");this.motionController=null;this.envMap=null;}setEnvironmentMap(envMap){if(this.envMap==envMap){return this;}this.envMap=envMap;applyEnvironmentMap(this.envMap,this);return this;}/**\n * Polls data from the XRInputSource and updates the model's components to match\n * the real world data\n */updateMatrixWorld(force){super.updateMatrixWorld(force);if(!this.motionController)return;this.motionController.updateFromGamepad();Object.values(this.motionController.components).forEach(component=>{Object.values(component.visualResponses).forEach(visualResponse=>{const{valueNode,minNode,maxNode,value,valueNodeProperty}=visualResponse;if(!valueNode)return;if(valueNodeProperty===MotionControllerConstants.VisualResponseProperty.VISIBILITY&&typeof value===\"boolean\"){valueNode.visible=value;}else if(valueNodeProperty===MotionControllerConstants.VisualResponseProperty.TRANSFORM&&minNode&&maxNode&&typeof value===\"number\"){valueNode.quaternion.slerpQuaternions(minNode.quaternion,maxNode.quaternion,value);valueNode.position.lerpVectors(minNode.position,maxNode.position,value);}});});}}function findNodes(motionController,scene){Object.values(motionController.components).forEach(component=>{const{type,touchPointNodeName,visualResponses}=component;if(type===MotionControllerConstants.ComponentType.TOUCHPAD&&touchPointNodeName){component.touchPointNode=scene.getObjectByName(touchPointNodeName);if(component.touchPointNode){const sphereGeometry=new SphereGeometry(1e-3);const material2=new MeshBasicMaterial({color:255});const sphere=new Mesh(sphereGeometry,material2);component.touchPointNode.add(sphere);}else{console.warn(`Could not find touch dot, ${component.touchPointNodeName}, in touchpad component ${component.id}`);}}Object.values(visualResponses).forEach(visualResponse=>{const{valueNodeName,minNodeName,maxNodeName,valueNodeProperty}=visualResponse;if(valueNodeProperty===MotionControllerConstants.VisualResponseProperty.TRANSFORM&&minNodeName&&maxNodeName){visualResponse.minNode=scene.getObjectByName(minNodeName);visualResponse.maxNode=scene.getObjectByName(maxNodeName);if(!visualResponse.minNode){console.warn(`Could not find ${minNodeName} in the model`);return;}if(!visualResponse.maxNode){console.warn(`Could not find ${maxNodeName} in the model`);return;}}visualResponse.valueNode=scene.getObjectByName(valueNodeName);if(!visualResponse.valueNode){console.warn(`Could not find ${valueNodeName} in the model`);}});});}function addAssetSceneToControllerModel(controllerModel,scene){findNodes(controllerModel.motionController,scene);if(controllerModel.envMap){applyEnvironmentMap(controllerModel.envMap,scene);}controllerModel.add(scene);}class XRControllerModelFactory{constructor(gltfLoader=null){__publicField(this,\"gltfLoader\");__publicField(this,\"path\");__publicField(this,\"_assetCache\");this.gltfLoader=gltfLoader;this.path=DEFAULT_PROFILES_PATH;this._assetCache={};if(!this.gltfLoader){this.gltfLoader=new GLTFLoader();}}createControllerModel(controller){const controllerModel=new XRControllerModel();let scene=null;const onConnected=event=>{const xrInputSource=event.data;if(xrInputSource.targetRayMode!==\"tracked-pointer\"||!xrInputSource.gamepad)return;fetchProfile(xrInputSource,this.path,DEFAULT_PROFILE).then(({profile,assetPath})=>{if(!assetPath){throw new Error(\"no asset path\");}controllerModel.motionController=new MotionController(xrInputSource,profile,assetPath);const assetUrl=controllerModel.motionController.assetUrl;const cachedAsset=this._assetCache[assetUrl];if(cachedAsset){scene=cachedAsset.scene.clone();addAssetSceneToControllerModel(controllerModel,scene);}else{if(!this.gltfLoader){throw new Error(\"GLTFLoader not set.\");}this.gltfLoader.setPath(\"\");this.gltfLoader.load(controllerModel.motionController.assetUrl,asset=>{if(!controllerModel.motionController){console.warn(\"motionController gone while gltf load, bailing...\");return;}this._assetCache[assetUrl]=asset;scene=asset.scene.clone();addAssetSceneToControllerModel(controllerModel,scene);},()=>{},()=>{throw new Error(`Asset ${assetUrl} missing or malformed.`);});}}).catch(err=>{console.warn(err);});};controller.addEventListener(\"connected\",onConnected);const onDisconnected=()=>{controller.removeEventListener(\"connected\",onConnected);controller.removeEventListener(\"disconnected\",onDisconnected);controllerModel.motionController=null;if(scene){controllerModel.remove(scene);}scene=null;};controller.addEventListener(\"disconnected\",onDisconnected);return controllerModel;}}class SessionLightProbe{constructor(xrLight,renderer,lightProbe,environmentEstimation,estimationStartCallback){this.xrLight=xrLight;this.renderer=renderer;this.lightProbe=lightProbe;this.xrWebGLBinding=null;this.estimationStartCallback=estimationStartCallback;this.frameCallback=this.onXRFrame.bind(this);const session=renderer.xr.getSession();if(environmentEstimation&&\"XRWebGLBinding\"in window){const cubeRenderTarget=new WebGLCubeRenderTarget(16);xrLight.environment=cubeRenderTarget.texture;const gl=renderer.getContext();switch(session.preferredReflectionFormat){case\"srgba8\":gl.getExtension(\"EXT_sRGB\");break;case\"rgba16f\":gl.getExtension(\"OES_texture_half_float\");break;}this.xrWebGLBinding=new XRWebGLBinding(session,gl);this.lightProbe.addEventListener(\"reflectionchange\",()=>{this.updateReflection();});}session.requestAnimationFrame(this.frameCallback);}updateReflection(){const textureProperties=this.renderer.properties.get(this.xrLight.environment);if(textureProperties){const cubeMap=this.xrWebGLBinding.getReflectionCubeMap(this.lightProbe);if(cubeMap){textureProperties.__webglTexture=cubeMap;this.xrLight.environment.needsPMREMUpdate=true;}}}onXRFrame(time,xrFrame){if(!this.xrLight){return;}const session=xrFrame.session;session.requestAnimationFrame(this.frameCallback);const lightEstimate=xrFrame.getLightEstimate(this.lightProbe);if(lightEstimate){this.xrLight.lightProbe.sh.fromArray(lightEstimate.sphericalHarmonicsCoefficients);this.xrLight.lightProbe.intensity=1;const intensityScalar=Math.max(1,Math.max(lightEstimate.primaryLightIntensity.x,Math.max(lightEstimate.primaryLightIntensity.y,lightEstimate.primaryLightIntensity.z)));this.xrLight.directionalLight.color.setRGB(lightEstimate.primaryLightIntensity.x/intensityScalar,lightEstimate.primaryLightIntensity.y/intensityScalar,lightEstimate.primaryLightIntensity.z/intensityScalar);this.xrLight.directionalLight.intensity=intensityScalar;this.xrLight.directionalLight.position.copy(lightEstimate.primaryLightDirection);if(this.estimationStartCallback){this.estimationStartCallback();this.estimationStartCallback=null;}}}dispose(){this.xrLight=null;this.renderer=null;this.lightProbe=null;this.xrWebGLBinding=null;}}class XREstimatedLight extends Group{constructor(renderer,environmentEstimation=true){super();this.lightProbe=new LightProbe();this.lightProbe.intensity=0;this.add(this.lightProbe);this.directionalLight=new DirectionalLight();this.directionalLight.intensity=0;this.add(this.directionalLight);this.environment=null;let sessionLightProbe=null;let estimationStarted=false;renderer.xr.addEventListener(\"sessionstart\",()=>{const session=renderer.xr.getSession();if(\"requestLightProbe\"in session){session.requestLightProbe({reflectionFormat:session.preferredReflectionFormat}).then(probe=>{sessionLightProbe=new SessionLightProbe(this,renderer,probe,environmentEstimation,()=>{estimationStarted=true;this.dispatchEvent({type:\"estimationstart\"});});});}});renderer.xr.addEventListener(\"sessionend\",()=>{if(sessionLightProbe){sessionLightProbe.dispose();sessionLightProbe=null;}if(estimationStarted){this.dispatchEvent({type:\"estimationend\"});}});this.dispose=()=>{if(sessionLightProbe){sessionLightProbe.dispose();sessionLightProbe=null;}this.remove(this.lightProbe);this.lightProbe=null;this.remove(this.directionalLight);this.directionalLight=null;this.environment=null;};}}const _matrix=/*@__PURE__*/new Matrix4();const _vector$1=/*@__PURE__*/new Vector3();class XRHandPrimitiveModel{constructor(handModel,controller,path,handedness,options){this.controller=controller;this.handModel=handModel;this.envMap=null;let geometry2;if(!options||!options.primitive||options.primitive===\"sphere\"){geometry2=new SphereGeometry(1,10,10);}else if(options.primitive===\"box\"){geometry2=new BoxGeometry(1,1,1);}const material2=new MeshStandardMaterial();this.handMesh=new InstancedMesh(geometry2,material2,30);this.handMesh.instanceMatrix.setUsage(DynamicDrawUsage);this.handMesh.castShadow=true;this.handMesh.receiveShadow=true;this.handModel.add(this.handMesh);this.joints=[\"wrist\",\"thumb-metacarpal\",\"thumb-phalanx-proximal\",\"thumb-phalanx-distal\",\"thumb-tip\",\"index-finger-metacarpal\",\"index-finger-phalanx-proximal\",\"index-finger-phalanx-intermediate\",\"index-finger-phalanx-distal\",\"index-finger-tip\",\"middle-finger-metacarpal\",\"middle-finger-phalanx-proximal\",\"middle-finger-phalanx-intermediate\",\"middle-finger-phalanx-distal\",\"middle-finger-tip\",\"ring-finger-metacarpal\",\"ring-finger-phalanx-proximal\",\"ring-finger-phalanx-intermediate\",\"ring-finger-phalanx-distal\",\"ring-finger-tip\",\"pinky-finger-metacarpal\",\"pinky-finger-phalanx-proximal\",\"pinky-finger-phalanx-intermediate\",\"pinky-finger-phalanx-distal\",\"pinky-finger-tip\"];}updateMesh(){const defaultRadius=8e-3;const joints=this.controller.joints;let count=0;for(let i2=0;i2{const xrInputSource=event.data;if(xrInputSource.hand&&!handModel.motionController){handModel.xrInputSource=xrInputSource;if(profile===void 0||profile===\"spheres\"){handModel.motionController=new XRHandPrimitiveModel(handModel,controller,this.path,xrInputSource.handedness,{primitive:\"sphere\"});}else if(profile===\"boxes\"){handModel.motionController=new XRHandPrimitiveModel(handModel,controller,this.path,xrInputSource.handedness,{primitive:\"box\"});}else if(profile===\"mesh\"){handModel.motionController=new XRHandMeshModel(handModel,controller,this.path,xrInputSource.handedness);}}});controller.addEventListener(\"disconnected\",()=>{});return handModel;}}class ParametricGeometry extends BufferGeometry{constructor(func=(u,v,target)=>target.set(u,v,Math.cos(u)*Math.sin(v)),slices=8,stacks=8){super();this.type=\"ParametricGeometry\";this.parameters={func,slices,stacks};const indices=[];const vertices=[];const normals=[];const uvs=[];const EPS2=1e-5;const normal=new Vector3();const p0=new Vector3(),p1=new Vector3();const pu=new Vector3(),pv=new Vector3();const sliceCount=slices+1;for(let i2=0;i2<=stacks;i2++){const v=i2/stacks;for(let j=0;j<=slices;j++){const u=j/slices;func(u,v,p0);vertices.push(p0.x,p0.y,p0.z);if(u-EPS2>=0){func(u-EPS2,v,p1);pu.subVectors(p0,p1);}else{func(u+EPS2,v,p1);pu.subVectors(p1,p0);}if(v-EPS2>=0){func(u,v-EPS2,p1);pv.subVectors(p0,p1);}else{func(u,v+EPS2,p1);pv.subVectors(p1,p0);}normal.crossVectors(pu,pv).normalize();normals.push(normal.x,normal.y,normal.z);uvs.push(u,v);}}for(let i2=0;i20;v2Out=d2>0;v3Out=d3>0;total=(v1Out?1:0)+(v2Out?1:0)+(v3Out?1:0);switch(total){case 0:{outVertices.push(inVertices[i2]);outVertices.push(inVertices[i2+1]);outVertices.push(inVertices[i2+2]);break;}case 1:{if(v1Out){nV1=inVertices[i2+1];nV2=inVertices[i2+2];nV3=clip(inVertices[i2],nV1,plane2,s);nV4=clip(inVertices[i2],nV2,plane2,s);}if(v2Out){nV1=inVertices[i2];nV2=inVertices[i2+2];nV3=clip(inVertices[i2+1],nV1,plane2,s);nV4=clip(inVertices[i2+1],nV2,plane2,s);outVertices.push(nV3);outVertices.push(nV2.clone());outVertices.push(nV1.clone());outVertices.push(nV2.clone());outVertices.push(nV3.clone());outVertices.push(nV4);break;}if(v3Out){nV1=inVertices[i2];nV2=inVertices[i2+1];nV3=clip(inVertices[i2+2],nV1,plane2,s);nV4=clip(inVertices[i2+2],nV2,plane2,s);}outVertices.push(nV1.clone());outVertices.push(nV2.clone());outVertices.push(nV3);outVertices.push(nV4);outVertices.push(nV3.clone());outVertices.push(nV2.clone());break;}case 2:{if(!v1Out){nV1=inVertices[i2].clone();nV2=clip(nV1,inVertices[i2+1],plane2,s);nV3=clip(nV1,inVertices[i2+2],plane2,s);outVertices.push(nV1);outVertices.push(nV2);outVertices.push(nV3);}if(!v2Out){nV1=inVertices[i2+1].clone();nV2=clip(nV1,inVertices[i2+2],plane2,s);nV3=clip(nV1,inVertices[i2],plane2,s);outVertices.push(nV1);outVertices.push(nV2);outVertices.push(nV3);}if(!v3Out){nV1=inVertices[i2+2].clone();nV2=clip(nV1,inVertices[i2],plane2,s);nV3=clip(nV1,inVertices[i2+1],plane2,s);outVertices.push(nV1);outVertices.push(nV2);outVertices.push(nV3);}break;}}}return outVertices;}function clip(v0,v12,p,s){const d0=v0.position.dot(p)-s;const d1=v12.position.dot(p)-s;const s0=d0/(d0-d1);const v=new DecalVertex(new Vector3(v0.position.x+s0*(v12.position.x-v0.position.x),v0.position.y+s0*(v12.position.y-v0.position.y),v0.position.z+s0*(v12.position.z-v0.position.z)),new Vector3(v0.normal.x+s0*(v12.normal.x-v0.normal.x),v0.normal.y+s0*(v12.normal.y-v0.normal.y),v0.normal.z+s0*(v12.normal.z-v0.normal.z)));return v;}}}class DecalVertex{constructor(position,normal){this.position=position;this.normal=normal;}clone(){return new this.constructor(this.position.clone(),this.normal.clone());}}class TeapotGeometry extends BufferGeometry{constructor(size2,segments,bottom,lid,body,fitLid,blinn){const teapotPatches=[/*rim*/0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,3,16,17,18,7,19,20,21,11,22,23,24,15,25,26,27,18,28,29,30,21,31,32,33,24,34,35,36,27,37,38,39,30,40,41,0,33,42,43,4,36,44,45,8,39,46,47,12,/*body*/12,13,14,15,48,49,50,51,52,53,54,55,56,57,58,59,15,25,26,27,51,60,61,62,55,63,64,65,59,66,67,68,27,37,38,39,62,69,70,71,65,72,73,74,68,75,76,77,39,46,47,12,71,78,79,48,74,80,81,52,77,82,83,56,56,57,58,59,84,85,86,87,88,89,90,91,92,93,94,95,59,66,67,68,87,96,97,98,91,99,100,101,95,102,103,104,68,75,76,77,98,105,106,107,101,108,109,110,104,111,112,113,77,82,83,56,107,114,115,84,110,116,117,88,113,118,119,92,/*handle*/120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,123,136,137,120,127,138,139,124,131,140,141,128,135,142,143,132,132,133,134,135,144,145,146,147,148,149,150,151,68,152,153,154,135,142,143,132,147,155,156,144,151,157,158,148,154,159,160,68,/*spout*/161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,164,177,178,161,168,179,180,165,172,181,182,169,176,183,184,173,173,174,175,176,185,186,187,188,189,190,191,192,193,194,195,196,176,183,184,173,188,197,198,185,192,199,200,189,196,201,202,193,/*lid*/203,203,203,203,204,205,206,207,208,208,208,208,209,210,211,212,203,203,203,203,207,213,214,215,208,208,208,208,212,216,217,218,203,203,203,203,215,219,220,221,208,208,208,208,218,222,223,224,203,203,203,203,221,225,226,204,208,208,208,208,224,227,228,209,209,210,211,212,229,230,231,232,233,234,235,236,237,238,239,240,212,216,217,218,232,241,242,243,236,244,245,246,240,247,248,249,218,222,223,224,243,250,251,252,246,253,254,255,249,256,257,258,224,227,228,209,252,259,260,229,255,261,262,233,258,263,264,237,/*bottom*/265,265,265,265,266,267,268,269,270,271,272,273,92,119,118,113,265,265,265,265,269,274,275,276,273,277,278,279,113,112,111,104,265,265,265,265,276,280,281,282,279,283,284,285,104,103,102,95,265,265,265,265,282,286,287,266,285,288,289,270,95,94,93,92];const teapotVertices=[1.4,0,2.4,1.4,-0.784,2.4,0.784,-1.4,2.4,0,-1.4,2.4,1.3375,0,2.53125,1.3375,-0.749,2.53125,0.749,-1.3375,2.53125,0,-1.3375,2.53125,1.4375,0,2.53125,1.4375,-0.805,2.53125,0.805,-1.4375,2.53125,0,-1.4375,2.53125,1.5,0,2.4,1.5,-0.84,2.4,0.84,-1.5,2.4,0,-1.5,2.4,-0.784,-1.4,2.4,-1.4,-0.784,2.4,-1.4,0,2.4,-0.749,-1.3375,2.53125,-1.3375,-0.749,2.53125,-1.3375,0,2.53125,-0.805,-1.4375,2.53125,-1.4375,-0.805,2.53125,-1.4375,0,2.53125,-0.84,-1.5,2.4,-1.5,-0.84,2.4,-1.5,0,2.4,-1.4,0.784,2.4,-0.784,1.4,2.4,0,1.4,2.4,-1.3375,0.749,2.53125,-0.749,1.3375,2.53125,0,1.3375,2.53125,-1.4375,0.805,2.53125,-0.805,1.4375,2.53125,0,1.4375,2.53125,-1.5,0.84,2.4,-0.84,1.5,2.4,0,1.5,2.4,0.784,1.4,2.4,1.4,0.784,2.4,0.749,1.3375,2.53125,1.3375,0.749,2.53125,0.805,1.4375,2.53125,1.4375,0.805,2.53125,0.84,1.5,2.4,1.5,0.84,2.4,1.75,0,1.875,1.75,-0.98,1.875,0.98,-1.75,1.875,0,-1.75,1.875,2,0,1.35,2,-1.12,1.35,1.12,-2,1.35,0,-2,1.35,2,0,0.9,2,-1.12,0.9,1.12,-2,0.9,0,-2,0.9,-0.98,-1.75,1.875,-1.75,-0.98,1.875,-1.75,0,1.875,-1.12,-2,1.35,-2,-1.12,1.35,-2,0,1.35,-1.12,-2,0.9,-2,-1.12,0.9,-2,0,0.9,-1.75,0.98,1.875,-0.98,1.75,1.875,0,1.75,1.875,-2,1.12,1.35,-1.12,2,1.35,0,2,1.35,-2,1.12,0.9,-1.12,2,0.9,0,2,0.9,0.98,1.75,1.875,1.75,0.98,1.875,1.12,2,1.35,2,1.12,1.35,1.12,2,0.9,2,1.12,0.9,2,0,0.45,2,-1.12,0.45,1.12,-2,0.45,0,-2,0.45,1.5,0,0.225,1.5,-0.84,0.225,0.84,-1.5,0.225,0,-1.5,0.225,1.5,0,0.15,1.5,-0.84,0.15,0.84,-1.5,0.15,0,-1.5,0.15,-1.12,-2,0.45,-2,-1.12,0.45,-2,0,0.45,-0.84,-1.5,0.225,-1.5,-0.84,0.225,-1.5,0,0.225,-0.84,-1.5,0.15,-1.5,-0.84,0.15,-1.5,0,0.15,-2,1.12,0.45,-1.12,2,0.45,0,2,0.45,-1.5,0.84,0.225,-0.84,1.5,0.225,0,1.5,0.225,-1.5,0.84,0.15,-0.84,1.5,0.15,0,1.5,0.15,1.12,2,0.45,2,1.12,0.45,0.84,1.5,0.225,1.5,0.84,0.225,0.84,1.5,0.15,1.5,0.84,0.15,-1.6,0,2.025,-1.6,-0.3,2.025,-1.5,-0.3,2.25,-1.5,0,2.25,-2.3,0,2.025,-2.3,-0.3,2.025,-2.5,-0.3,2.25,-2.5,0,2.25,-2.7,0,2.025,-2.7,-0.3,2.025,-3,-0.3,2.25,-3,0,2.25,-2.7,0,1.8,-2.7,-0.3,1.8,-3,-0.3,1.8,-3,0,1.8,-1.5,0.3,2.25,-1.6,0.3,2.025,-2.5,0.3,2.25,-2.3,0.3,2.025,-3,0.3,2.25,-2.7,0.3,2.025,-3,0.3,1.8,-2.7,0.3,1.8,-2.7,0,1.575,-2.7,-0.3,1.575,-3,-0.3,1.35,-3,0,1.35,-2.5,0,1.125,-2.5,-0.3,1.125,-2.65,-0.3,0.9375,-2.65,0,0.9375,-2,-0.3,0.9,-1.9,-0.3,0.6,-1.9,0,0.6,-3,0.3,1.35,-2.7,0.3,1.575,-2.65,0.3,0.9375,-2.5,0.3,1.125,-1.9,0.3,0.6,-2,0.3,0.9,1.7,0,1.425,1.7,-0.66,1.425,1.7,-0.66,0.6,1.7,0,0.6,2.6,0,1.425,2.6,-0.66,1.425,3.1,-0.66,0.825,3.1,0,0.825,2.3,0,2.1,2.3,-0.25,2.1,2.4,-0.25,2.025,2.4,0,2.025,2.7,0,2.4,2.7,-0.25,2.4,3.3,-0.25,2.4,3.3,0,2.4,1.7,0.66,0.6,1.7,0.66,1.425,3.1,0.66,0.825,2.6,0.66,1.425,2.4,0.25,2.025,2.3,0.25,2.1,3.3,0.25,2.4,2.7,0.25,2.4,2.8,0,2.475,2.8,-0.25,2.475,3.525,-0.25,2.49375,3.525,0,2.49375,2.9,0,2.475,2.9,-0.15,2.475,3.45,-0.15,2.5125,3.45,0,2.5125,2.8,0,2.4,2.8,-0.15,2.4,3.2,-0.15,2.4,3.2,0,2.4,3.525,0.25,2.49375,2.8,0.25,2.475,3.45,0.15,2.5125,2.9,0.15,2.475,3.2,0.15,2.4,2.8,0.15,2.4,0,0,3.15,0.8,0,3.15,0.8,-0.45,3.15,0.45,-0.8,3.15,0,-0.8,3.15,0,0,2.85,0.2,0,2.7,0.2,-0.112,2.7,0.112,-0.2,2.7,0,-0.2,2.7,-0.45,-0.8,3.15,-0.8,-0.45,3.15,-0.8,0,3.15,-0.112,-0.2,2.7,-0.2,-0.112,2.7,-0.2,0,2.7,-0.8,0.45,3.15,-0.45,0.8,3.15,0,0.8,3.15,-0.2,0.112,2.7,-0.112,0.2,2.7,0,0.2,2.7,0.45,0.8,3.15,0.8,0.45,3.15,0.112,0.2,2.7,0.2,0.112,2.7,0.4,0,2.55,0.4,-0.224,2.55,0.224,-0.4,2.55,0,-0.4,2.55,1.3,0,2.55,1.3,-0.728,2.55,0.728,-1.3,2.55,0,-1.3,2.55,1.3,0,2.4,1.3,-0.728,2.4,0.728,-1.3,2.4,0,-1.3,2.4,-0.224,-0.4,2.55,-0.4,-0.224,2.55,-0.4,0,2.55,-0.728,-1.3,2.55,-1.3,-0.728,2.55,-1.3,0,2.55,-0.728,-1.3,2.4,-1.3,-0.728,2.4,-1.3,0,2.4,-0.4,0.224,2.55,-0.224,0.4,2.55,0,0.4,2.55,-1.3,0.728,2.55,-0.728,1.3,2.55,0,1.3,2.55,-1.3,0.728,2.4,-0.728,1.3,2.4,0,1.3,2.4,0.224,0.4,2.55,0.4,0.224,2.55,0.728,1.3,2.55,1.3,0.728,2.55,0.728,1.3,2.4,1.3,0.728,2.4,0,0,0,1.425,0,0,1.425,0.798,0,0.798,1.425,0,0,1.425,0,1.5,0,0.075,1.5,0.84,0.075,0.84,1.5,0.075,0,1.5,0.075,-0.798,1.425,0,-1.425,0.798,0,-1.425,0,0,-0.84,1.5,0.075,-1.5,0.84,0.075,-1.5,0,0.075,-1.425,-0.798,0,-0.798,-1.425,0,0,-1.425,0,-1.5,-0.84,0.075,-0.84,-1.5,0.075,0,-1.5,0.075,0.798,-1.425,0,1.425,-0.798,0,0.84,-1.5,0.075,1.5,-0.84,0.075];super();size2=size2||50;segments=segments!==void 0?Math.max(2,Math.floor(segments)||10):10;bottom=bottom===void 0?true:bottom;lid=lid===void 0?true:lid;body=body===void 0?true:body;fitLid=fitLid===void 0?true:fitLid;const blinnScale=1.3;blinn=blinn===void 0?true:blinn;const maxHeight=3.15*(blinn?1:blinnScale);const maxHeight2=maxHeight/2;const trueSize=size2/maxHeight2;let numTriangles=bottom?(8*segments-4)*segments:0;numTriangles+=lid?(16*segments-4)*segments:0;numTriangles+=body?40*segments*segments:0;const indices=new Uint32Array(numTriangles*3);let numVertices=bottom?4:0;numVertices+=lid?8:0;numVertices+=body?20:0;numVertices*=(segments+1)*(segments+1);const vertices=new Float32Array(numVertices*3);const normals=new Float32Array(numVertices*3);const uvs=new Float32Array(numVertices*2);const ms=new Matrix4();ms.set(-1,3,-3,1,3,-6,3,0,-3,3,0,0,1,0,0,0);const g=[];let i2,r,c;const sp=[];const tp=[];const dsp=[];const dtp=[];const mgm=[];const vert=[];const sdir=[];const tdir=[];const norm=new Vector3();let tcoord;let sstep,tstep;let vertPerRow;let s,t2,sval,tval,p;let dsval=0;let dtval=0;const normOut=new Vector3();let v12,v2,v3,v4;const gmx=new Matrix4();const tmtx=new Matrix4();const vsp=new Vector4();const vtp=new Vector4();const vdsp=new Vector4();const vdtp=new Vector4();const vsdir=new Vector3();const vtdir=new Vector3();const mst=ms.clone();mst.transpose();const notDegenerate=(vtx1,vtx2,vtx3)=>!(vertices[vtx1*3]===vertices[vtx2*3]&&vertices[vtx1*3+1]===vertices[vtx2*3+1]&&vertices[vtx1*3+2]===vertices[vtx2*3+2]||vertices[vtx1*3]===vertices[vtx3*3]&&vertices[vtx1*3+1]===vertices[vtx3*3+1]&&vertices[vtx1*3+2]===vertices[vtx3*3+2]||vertices[vtx2*3]===vertices[vtx3*3]&&vertices[vtx2*3+1]===vertices[vtx3*3+1]&&vertices[vtx2*3+2]===vertices[vtx3*3+2]);for(i2=0;i2<3;i2++){mgm[i2]=new Matrix4();}const minPatches=body?0:20;const maxPatches=bottom?32:28;vertPerRow=segments+1;let surfCount=0;let vertCount=0;let normCount=0;let uvCount=0;let indexCount=0;for(let surf=minPatches;surf=28){for(i2=0;i2<3;i2++){for(r=0;r<4;r++){for(c=0;c<4;c++){g[c*4+r]=teapotVertices[teapotPatches[surf*16+r*4+c]*3+i2];if(fitLid&&surf>=20&&surf<28&&i2!==2){g[c*4+r]*=1.077;}if(!blinn&&i2===2){g[c*4+r]*=blinnScale;}}}gmx.set(g[0],g[1],g[2],g[3],g[4],g[5],g[6],g[7],g[8],g[9],g[10],g[11],g[12],g[13],g[14],g[15]);tmtx.multiplyMatrices(gmx,ms);mgm[i2].multiplyMatrices(mst,tmtx);}for(sstep=0;sstep<=segments;sstep++){s=sstep/segments;for(tstep=0;tstep<=segments;tstep++){t2=tstep/segments;for(p=4,sval=tval=1;p--;){sp[p]=sval;tp[p]=tval;sval*=s;tval*=t2;if(p===3){dsp[p]=dtp[p]=0;dsval=dtval=1;}else{dsp[p]=dsval*(3-p);dtp[p]=dtval*(3-p);dsval*=s;dtval*=t2;}}vsp.fromArray(sp);vtp.fromArray(tp);vdsp.fromArray(dsp);vdtp.fromArray(dtp);for(i2=0;i2<3;i2++){tcoord=vsp.clone();tcoord.applyMatrix4(mgm[i2]);vert[i2]=tcoord.dot(vtp);tcoord=vdsp.clone();tcoord.applyMatrix4(mgm[i2]);sdir[i2]=tcoord.dot(vtp);tcoord=vsp.clone();tcoord.applyMatrix4(mgm[i2]);tdir[i2]=tcoord.dot(vdtp);}vsdir.fromArray(sdir);vtdir.fromArray(tdir);norm.crossVectors(vtdir,vsdir);norm.normalize();if(vert[0]===0&&vert[1]===0){normOut.set(0,vert[2]>maxHeight2?1:-1,0);}else{normOut.set(norm.x,norm.z,-norm.y);}vertices[vertCount++]=trueSize*vert[0];vertices[vertCount++]=trueSize*(vert[2]-maxHeight2);vertices[vertCount++]=-trueSize*vert[1];normals[normCount++]=normOut.x;normals[normCount++]=normOut.y;normals[normCount++]=normOut.z;uvs[uvCount++]=1-t2;uvs[uvCount++]=1-s;}}for(sstep=0;ssteptarget.length){target.push(new CSMFrustum());}target.length=breaks.length;for(let i2=0;i2 0 ) && defined( RE_Direct )\n\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\n\t\tpointLight = pointLights[ i ];\n\n\t\tgetPointLightInfo( pointLight, geometry, directLight );\n\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\n\t}\n\t#pragma unroll_loop_end\n\n#endif\n\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\n\tSpotLight spotLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\n\t\tspotLight = spotLights[ i ];\n\n\t\tgetSpotLightInfo( spotLight, geometry, directLight );\n\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\n\t}\n\t#pragma unroll_loop_end\n\n#endif\n\n#if ( NUM_DIR_LIGHTS > 0) && defined( RE_Direct ) && defined( USE_CSM ) && defined( CSM_CASCADES )\n\n\tDirectionalLight directionalLight;\n\tfloat linearDepth = (vViewPosition.z) / (shadowFar - cameraNear);\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\n\t#if defined( USE_SHADOWMAP ) && defined( CSM_FADE )\n\tvec2 cascade;\n\tfloat cascadeCenter;\n\tfloat closestEdge;\n\tfloat margin;\n\tfloat csmx;\n\tfloat csmy;\n\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\n\n\t \t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\t\t// NOTE: Depth gets larger away from the camera.\n\t\t\t// cascade.x is closer, cascade.y is further\n\t\t\tcascade = CSM_cascades[ i ];\n\t\t\tcascadeCenter = ( cascade.x + cascade.y ) / 2.0;\n\t\t\tclosestEdge = linearDepth < cascadeCenter ? cascade.x : cascade.y;\n\t\t\tmargin = 0.25 * pow( closestEdge, 2.0 );\n\t\t\tcsmx = cascade.x - margin / 2.0;\n\t\t\tcsmy = cascade.y + margin / 2.0;\n\t\t\tif( linearDepth >= csmx && ( linearDepth < csmy || UNROLLED_LOOP_INDEX == CSM_CASCADES - 1 ) ) {\n\n\t\t\t\tfloat dist = min( linearDepth - csmx, csmy - linearDepth );\n\t\t\t\tfloat ratio = clamp( dist / margin, 0.0, 1.0 );\n\n\t\t\t\tvec3 prevColor = directLight.color;\n\t\t\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\t\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\n\t\t\t\tbool shouldFadeLastCascade = UNROLLED_LOOP_INDEX == CSM_CASCADES - 1 && linearDepth > cascadeCenter;\n\t\t\t\tdirectLight.color = mix( prevColor, directLight.color, shouldFadeLastCascade ? ratio : 1.0 );\n\n\t\t\t\tReflectedLight prevLight = reflectedLight;\n\t\t\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\n\t\t\t\tbool shouldBlend = UNROLLED_LOOP_INDEX != CSM_CASCADES - 1 || UNROLLED_LOOP_INDEX == CSM_CASCADES - 1 && linearDepth < cascadeCenter;\n\t\t\t\tfloat blendRatio = shouldBlend ? ratio : 1.0;\n\n\t\t\t\treflectedLight.directDiffuse = mix( prevLight.directDiffuse, reflectedLight.directDiffuse, blendRatio );\n\t\t\t\treflectedLight.directSpecular = mix( prevLight.directSpecular, reflectedLight.directSpecular, blendRatio );\n\t\t\t\treflectedLight.indirectDiffuse = mix( prevLight.indirectDiffuse, reflectedLight.indirectDiffuse, blendRatio );\n\t\t\t\treflectedLight.indirectSpecular = mix( prevLight.indirectSpecular, reflectedLight.indirectSpecular, blendRatio );\n\n\t\t\t}\n\t \t#endif\n\n\t}\n\t#pragma unroll_loop_end\n\t#else\n\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\n\t\t\tdirectionalLight = directionalLights[ i ];\n\t\t\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\n\n\t\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\n\t\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\t\tif(linearDepth >= CSM_cascades[UNROLLED_LOOP_INDEX].x && linearDepth < CSM_cascades[UNROLLED_LOOP_INDEX].y) directLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\n\t\t\tif(linearDepth >= CSM_cascades[UNROLLED_LOOP_INDEX].x && (linearDepth < CSM_cascades[UNROLLED_LOOP_INDEX].y || UNROLLED_LOOP_INDEX == CSM_CASCADES - 1)) RE_Direct( directLight, geometry, material, reflectedLight );\n\n\t\t\t#endif\n\n\t\t}\n\t\t#pragma unroll_loop_end\n\n\t#endif\n\n\t#if ( NUM_DIR_LIGHTS > NUM_DIR_LIGHT_SHADOWS)\n\t\t// compute the lights not casting shadows (if any)\n\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = NUM_DIR_LIGHT_SHADOWS; i < NUM_DIR_LIGHTS; i ++ ) {\n\n\t\t\tdirectionalLight = directionalLights[ i ];\n\n\t\t\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\n\n\t\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\n\t\t}\n\t\t#pragma unroll_loop_end\n\n\t#endif\n\n#endif\n\n\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) && !defined( USE_CSM ) && !defined( CSM_CASCADES )\n\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\n\t\tdirectionalLight = directionalLights[ i ];\n\n\t\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\n\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\n\t}\n\t#pragma unroll_loop_end\n\n#endif\n\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\n\tRectAreaLight rectAreaLight;\n\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\n\t}\n\t#pragma unroll_loop_end\n\n#endif\n\n#if defined( RE_IndirectDiffuse )\n\n\tvec3 iblIrradiance = vec3( 0.0 );\n\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\n\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\n\n\t\t}\n\t\t#pragma unroll_loop_end\n\n\t#endif\n\n#endif\n\n#if defined( RE_IndirectSpecular )\n\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n\n#endif\n`,getlights_pars_begin(){return(/* glsl */`\n\t\t\t#if defined( USE_CSM ) && defined( CSM_CASCADES )\n\t\t\tuniform vec2 CSM_cascades[CSM_CASCADES];\n\t\t\tuniform float cameraNear;\n\t\t\tuniform float shadowFar;\n\t\t\t#endif\n\n\t\t\t${ShaderChunk.lights_pars_begin}\n\t\t`);}};const _cameraToLightMatrix=/*@__PURE__*/new Matrix4();const _lightSpaceFrustum=/*@__PURE__*/new CSMFrustum();const _center=/*@__PURE__*/new Vector3();const _bbox=/*@__PURE__*/new Box3();const _uniformArray=[];const _logArray=[];class CSM{constructor(data){data=data||{};this.camera=data.camera;this.parent=data.parent;this.cascades=data.cascades||3;this.maxFar=data.maxFar||1e5;this.mode=data.mode||\"practical\";this.shadowMapSize=data.shadowMapSize||2048;this.shadowBias=data.shadowBias||1e-6;this.lightDirection=data.lightDirection||new Vector3(1,-1,1).normalize();this.lightIntensity=data.lightIntensity||1;this.lightNear=data.lightNear||1;this.lightFar=data.lightFar||2e3;this.lightMargin=data.lightMargin||200;this.customSplitsCallback=data.customSplitsCallback;this.fade=false;this.mainFrustum=new CSMFrustum();this.frustums=[];this.breaks=[];this.lights=[];this.shaders=/* @__PURE__ */new Map();this.createLights();this.updateFrustums();this.injectInclude();}createLights(){for(let i2=0;i2point1.distanceTo(nearVerts[2])){point2=farVerts[2];}else{point2=nearVerts[2];}let squaredBBWidth=point1.distanceTo(point2);if(this.fade){const camera=this.camera;const far=Math.max(camera.far,this.maxFar);const linearDepth=frustum2.vertices.far[0].z/(far-camera.near);const margin=0.25*Math.pow(linearDepth,2)*(far-camera.near);squaredBBWidth+=margin;}shadowCam.left=-squaredBBWidth/2;shadowCam.right=squaredBBWidth/2;shadowCam.top=squaredBBWidth/2;shadowCam.bottom=-squaredBBWidth/2;shadowCam.updateProjectionMatrix();}}getBreaks(){const camera=this.camera;const far=Math.min(camera.far,this.maxFar);this.breaks.length=0;switch(this.mode){case\"uniform\":uniformSplit(this.cascades,camera.near,far,this.breaks);break;case\"logarithmic\":logarithmicSplit(this.cascades,camera.near,far,this.breaks);break;case\"practical\":practicalSplit(this.cascades,camera.near,far,0.5,this.breaks);break;case\"custom\":if(this.customSplitsCallback===void 0)console.error(\"CSM: Custom split scheme callback not defined.\");this.customSplitsCallback(this.cascades,camera.near,far,this.breaks);break;}function uniformSplit(amount,near,far2,target){for(let i2=1;i2cascades){this.remove(cascadeLines.pop());this.remove(cascadePlanes.pop());this.remove(shadowLines.pop());}while(cascadeLines.length XYZ => D65_2_D60 => AP1 => RRT_SAT\n\"\tconst mat3 ACESInputMat = mat3(\",\"\t\tvec3( 0.59719, 0.07600, 0.02840 ),\",// transposed from source\n\"\t\tvec3( 0.35458, 0.90834, 0.13383 ),\",\"\t\tvec3( 0.04823, 0.01566, 0.83777 )\",\"\t);\",// ODT_SAT => XYZ => D60_2_D65 => sRGB\n\"\tconst mat3 ACESOutputMat = mat3(\",\"\t\tvec3( 1.60475, -0.10208, -0.00327 ),\",// transposed from source\n\"\t\tvec3( -0.53108, 1.10813, -0.07276 ),\",\"\t\tvec3( -0.07367, -0.00605, 1.07602 )\",\"\t);\",\"\tcolor = ACESInputMat * color;\",// Apply RRT and ODT\n\"\tcolor = RRTAndODTFit( color );\",\"\tcolor = ACESOutputMat * color;\",// Clamp to [0, 1]\n\"\treturn saturate( color );\",\"}\",\"void main() {\",\"\tvec4 tex = texture2D( tDiffuse, vUv );\",\"\ttex.rgb *= exposure / 0.6;\",// pre-exposed, outside of the tone mapping function\n\"\tgl_FragColor = vec4( ACESFilmicToneMapping( tex.rgb ), tex.a );\",\"}\"].join(\"\\n\")};const BasicShader={uniforms:{},vertexShader:/*@__PURE__*/[\"void main() {\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"void main() {\",\"\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 0.5 );\",\"}\"].join(\"\\n\")};const BleachBypassShader={uniforms:{tDiffuse:{value:null},opacity:{value:1}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform float opacity;\",\"uniform sampler2D tDiffuse;\",\"varying vec2 vUv;\",\"void main() {\",\"\tvec4 base = texture2D( tDiffuse, vUv );\",\"\tvec3 lumCoeff = vec3( 0.25, 0.65, 0.1 );\",\"\tfloat lum = dot( lumCoeff, base.rgb );\",\"\tvec3 blend = vec3( lum );\",\"\tfloat L = min( 1.0, max( 0.0, 10.0 * ( lum - 0.45 ) ) );\",\"\tvec3 result1 = 2.0 * base.rgb * blend;\",\"\tvec3 result2 = 1.0 - 2.0 * ( 1.0 - blend ) * ( 1.0 - base.rgb );\",\"\tvec3 newColor = mix( result1, result2, L );\",\"\tfloat A2 = opacity * base.a;\",\"\tvec3 mixRGB = A2 * newColor.rgb;\",\"\tmixRGB += ( ( 1.0 - A2 ) * base.rgb );\",\"\tgl_FragColor = vec4( mixRGB, base.a );\",\"}\"].join(\"\\n\")};const BlendShader={uniforms:{tDiffuse1:{value:null},tDiffuse2:{value:null},mixRatio:{value:0.5},opacity:{value:1}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform float opacity;\",\"uniform float mixRatio;\",\"uniform sampler2D tDiffuse1;\",\"uniform sampler2D tDiffuse2;\",\"varying vec2 vUv;\",\"void main() {\",\"\tvec4 texel1 = texture2D( tDiffuse1, vUv );\",\"\tvec4 texel2 = texture2D( tDiffuse2, vUv );\",\"\tgl_FragColor = opacity * mix( texel1, texel2, mixRatio );\",\"}\"].join(\"\\n\")};const BrightnessContrastShader={uniforms:{tDiffuse:{value:null},brightness:{value:0},contrast:{value:0}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform sampler2D tDiffuse;\",\"uniform float brightness;\",\"uniform float contrast;\",\"varying vec2 vUv;\",\"void main() {\",\"\tgl_FragColor = texture2D( tDiffuse, vUv );\",\"\tgl_FragColor.rgb += brightness;\",\"\tif (contrast > 0.0) {\",\"\t\tgl_FragColor.rgb = (gl_FragColor.rgb - 0.5) / (1.0 - contrast) + 0.5;\",\"\t} else {\",\"\t\tgl_FragColor.rgb = (gl_FragColor.rgb - 0.5) * (1.0 + contrast) + 0.5;\",\"\t}\",\"}\"].join(\"\\n\")};const ColorCorrectionShader={uniforms:{tDiffuse:{value:null},powRGB:{value:/*@__PURE__*/new Vector3(2,2,2)},mulRGB:{value:/*@__PURE__*/new Vector3(1,1,1)},addRGB:{value:/*@__PURE__*/new Vector3(0,0,0)}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform sampler2D tDiffuse;\",\"uniform vec3 powRGB;\",\"uniform vec3 mulRGB;\",\"uniform vec3 addRGB;\",\"varying vec2 vUv;\",\"void main() {\",\"\tgl_FragColor = texture2D( tDiffuse, vUv );\",\"\tgl_FragColor.rgb = mulRGB * pow( ( gl_FragColor.rgb + addRGB ), powRGB );\",\"}\"].join(\"\\n\")};const ColorifyShader={uniforms:{tDiffuse:{value:null},color:{value:/*@__PURE__*/new Color(16777215)}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform vec3 color;\",\"uniform sampler2D tDiffuse;\",\"varying vec2 vUv;\",\"void main() {\",\"\tvec4 texel = texture2D( tDiffuse, vUv );\",\"\tvec3 luma = vec3( 0.299, 0.587, 0.114 );\",\"\tfloat v = dot( texel.xyz, luma );\",\"\tgl_FragColor = vec4( v * color, texel.w );\",\"}\"].join(\"\\n\")};const DOFMipMapShader={uniforms:{tColor:{value:null},tDepth:{value:null},focus:{value:1},maxblur:{value:1}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform float focus;\",\"uniform float maxblur;\",\"uniform sampler2D tColor;\",\"uniform sampler2D tDepth;\",\"varying vec2 vUv;\",\"void main() {\",\"\tvec4 depth = texture2D( tDepth, vUv );\",\"\tfloat factor = depth.x - focus;\",\"\tvec4 col = texture2D( tColor, vUv, 2.0 * maxblur * abs( focus - depth.x ) );\",\"\tgl_FragColor = col;\",\"\tgl_FragColor.a = 1.0;\",\"}\"].join(\"\\n\")};const FXAAShader={uniforms:{tDiffuse:{value:null},resolution:{value:/*@__PURE__*/new Vector2(1/1024,1/512)}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"precision highp float;\",\"\",\"uniform sampler2D tDiffuse;\",\"\",\"uniform vec2 resolution;\",\"\",\"varying vec2 vUv;\",\"\",\"// FXAA 3.11 implementation by NVIDIA, ported to WebGL by Agost Biro (biro@archilogic.com)\",\"\",\"//----------------------------------------------------------------------------------\",\"// File: es3-keplerFXAAassetsshaders/FXAA_DefaultES.frag\",\"// SDK Version: v3.00\",\"// Email: gameworks@nvidia.com\",\"// Site: http://developer.nvidia.com/\",\"//\",\"// Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved.\",\"//\",\"// Redistribution and use in source and binary forms, with or without\",\"// modification, are permitted provided that the following conditions\",\"// are met:\",\"// * Redistributions of source code must retain the above copyright\",\"// notice, this list of conditions and the following disclaimer.\",\"// * Redistributions in binary form must reproduce the above copyright\",\"// notice, this list of conditions and the following disclaimer in the\",\"// documentation and/or other materials provided with the distribution.\",\"// * Neither the name of NVIDIA CORPORATION nor the names of its\",\"// contributors may be used to endorse or promote products derived\",\"// from this software without specific prior written permission.\",\"//\",\"// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY\",\"// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\",\"// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\",\"// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\",\"// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\",\"// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\",\"// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\",\"// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\",\"// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\",\"// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\",\"// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\",\"//\",\"//----------------------------------------------------------------------------------\",\"\",\"#define FXAA_PC 1\",\"#define FXAA_GLSL_100 1\",\"#define FXAA_QUALITY_PRESET 12\",\"\",\"#define FXAA_GREEN_AS_LUMA 1\",\"\",\"/*--------------------------------------------------------------------------*/\",\"#ifndef FXAA_PC_CONSOLE\",\" //\",\" // The console algorithm for PC is included\",\" // for developers targeting really low spec machines.\",\" // Likely better to just run FXAA_PC, and use a really low preset.\",\" //\",\" #define FXAA_PC_CONSOLE 0\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#ifndef FXAA_GLSL_120\",\" #define FXAA_GLSL_120 0\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#ifndef FXAA_GLSL_130\",\" #define FXAA_GLSL_130 0\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#ifndef FXAA_HLSL_3\",\" #define FXAA_HLSL_3 0\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#ifndef FXAA_HLSL_4\",\" #define FXAA_HLSL_4 0\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#ifndef FXAA_HLSL_5\",\" #define FXAA_HLSL_5 0\",\"#endif\",\"/*==========================================================================*/\",\"#ifndef FXAA_GREEN_AS_LUMA\",\" //\",\" // For those using non-linear color,\",\" // and either not able to get luma in alpha, or not wanting to,\",\" // this enables FXAA to run using green as a proxy for luma.\",\" // So with this enabled, no need to pack luma in alpha.\",\" //\",\" // This will turn off AA on anything which lacks some amount of green.\",\" // Pure red and blue or combination of only R and B, will get no AA.\",\" //\",\" // Might want to lower the settings for both,\",\" // fxaaConsoleEdgeThresholdMin\",\" // fxaaQualityEdgeThresholdMin\",\" // In order to insure AA does not get turned off on colors\",\" // which contain a minor amount of green.\",\" //\",\" // 1 = On.\",\" // 0 = Off.\",\" //\",\" #define FXAA_GREEN_AS_LUMA 0\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#ifndef FXAA_EARLY_EXIT\",\" //\",\" // Controls algorithm's early exit path.\",\" // On PS3 turning this ON adds 2 cycles to the shader.\",\" // On 360 turning this OFF adds 10ths of a millisecond to the shader.\",\" // Turning this off on console will result in a more blurry image.\",\" // So this defaults to on.\",\" //\",\" // 1 = On.\",\" // 0 = Off.\",\" //\",\" #define FXAA_EARLY_EXIT 1\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#ifndef FXAA_DISCARD\",\" //\",\" // Only valid for PC OpenGL currently.\",\" // Probably will not work when FXAA_GREEN_AS_LUMA = 1.\",\" //\",\" // 1 = Use discard on pixels which don't need AA.\",\" // For APIs which enable concurrent TEX+ROP from same surface.\",\" // 0 = Return unchanged color on pixels which don't need AA.\",\" //\",\" #define FXAA_DISCARD 0\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#ifndef FXAA_FAST_PIXEL_OFFSET\",\" //\",\" // Used for GLSL 120 only.\",\" //\",\" // 1 = GL API supports fast pixel offsets\",\" // 0 = do not use fast pixel offsets\",\" //\",\" #ifdef GL_EXT_gpu_shader4\",\" #define FXAA_FAST_PIXEL_OFFSET 1\",\" #endif\",\" #ifdef GL_NV_gpu_shader5\",\" #define FXAA_FAST_PIXEL_OFFSET 1\",\" #endif\",\" #ifdef GL_ARB_gpu_shader5\",\" #define FXAA_FAST_PIXEL_OFFSET 1\",\" #endif\",\" #ifndef FXAA_FAST_PIXEL_OFFSET\",\" #define FXAA_FAST_PIXEL_OFFSET 0\",\" #endif\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#ifndef FXAA_GATHER4_ALPHA\",\" //\",\" // 1 = API supports gather4 on alpha channel.\",\" // 0 = API does not support gather4 on alpha channel.\",\" //\",\" #if (FXAA_HLSL_5 == 1)\",\" #define FXAA_GATHER4_ALPHA 1\",\" #endif\",\" #ifdef GL_ARB_gpu_shader5\",\" #define FXAA_GATHER4_ALPHA 1\",\" #endif\",\" #ifdef GL_NV_gpu_shader5\",\" #define FXAA_GATHER4_ALPHA 1\",\" #endif\",\" #ifndef FXAA_GATHER4_ALPHA\",\" #define FXAA_GATHER4_ALPHA 0\",\" #endif\",\"#endif\",\"\",\"\",\"/*============================================================================\",\" FXAA QUALITY - TUNING KNOBS\",\"------------------------------------------------------------------------------\",\"NOTE the other tuning knobs are now in the shader function inputs!\",\"============================================================================*/\",\"#ifndef FXAA_QUALITY_PRESET\",\" //\",\" // Choose the quality preset.\",\" // This needs to be compiled into the shader as it effects code.\",\" // Best option to include multiple presets is to\",\" // in each shader define the preset, then include this file.\",\" //\",\" // OPTIONS\",\" // -----------------------------------------------------------------------\",\" // 10 to 15 - default medium dither (10=fastest, 15=highest quality)\",\" // 20 to 29 - less dither, more expensive (20=fastest, 29=highest quality)\",\" // 39 - no dither, very expensive\",\" //\",\" // NOTES\",\" // -----------------------------------------------------------------------\",\" // 12 = slightly faster then FXAA 3.9 and higher edge quality (default)\",\" // 13 = about same speed as FXAA 3.9 and better than 12\",\" // 23 = closest to FXAA 3.9 visually and performance wise\",\" // _ = the lowest digit is directly related to performance\",\" // _ = the highest digit is directly related to style\",\" //\",\" #define FXAA_QUALITY_PRESET 12\",\"#endif\",\"\",\"\",\"/*============================================================================\",\"\",\" FXAA QUALITY - PRESETS\",\"\",\"============================================================================*/\",\"\",\"/*============================================================================\",\" FXAA QUALITY - MEDIUM DITHER PRESETS\",\"============================================================================*/\",\"#if (FXAA_QUALITY_PRESET == 10)\",\" #define FXAA_QUALITY_PS 3\",\" #define FXAA_QUALITY_P0 1.5\",\" #define FXAA_QUALITY_P1 3.0\",\" #define FXAA_QUALITY_P2 12.0\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#if (FXAA_QUALITY_PRESET == 11)\",\" #define FXAA_QUALITY_PS 4\",\" #define FXAA_QUALITY_P0 1.0\",\" #define FXAA_QUALITY_P1 1.5\",\" #define FXAA_QUALITY_P2 3.0\",\" #define FXAA_QUALITY_P3 12.0\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#if (FXAA_QUALITY_PRESET == 12)\",\" #define FXAA_QUALITY_PS 5\",\" #define FXAA_QUALITY_P0 1.0\",\" #define FXAA_QUALITY_P1 1.5\",\" #define FXAA_QUALITY_P2 2.0\",\" #define FXAA_QUALITY_P3 4.0\",\" #define FXAA_QUALITY_P4 12.0\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#if (FXAA_QUALITY_PRESET == 13)\",\" #define FXAA_QUALITY_PS 6\",\" #define FXAA_QUALITY_P0 1.0\",\" #define FXAA_QUALITY_P1 1.5\",\" #define FXAA_QUALITY_P2 2.0\",\" #define FXAA_QUALITY_P3 2.0\",\" #define FXAA_QUALITY_P4 4.0\",\" #define FXAA_QUALITY_P5 12.0\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#if (FXAA_QUALITY_PRESET == 14)\",\" #define FXAA_QUALITY_PS 7\",\" #define FXAA_QUALITY_P0 1.0\",\" #define FXAA_QUALITY_P1 1.5\",\" #define FXAA_QUALITY_P2 2.0\",\" #define FXAA_QUALITY_P3 2.0\",\" #define FXAA_QUALITY_P4 2.0\",\" #define FXAA_QUALITY_P5 4.0\",\" #define FXAA_QUALITY_P6 12.0\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#if (FXAA_QUALITY_PRESET == 15)\",\" #define FXAA_QUALITY_PS 8\",\" #define FXAA_QUALITY_P0 1.0\",\" #define FXAA_QUALITY_P1 1.5\",\" #define FXAA_QUALITY_P2 2.0\",\" #define FXAA_QUALITY_P3 2.0\",\" #define FXAA_QUALITY_P4 2.0\",\" #define FXAA_QUALITY_P5 2.0\",\" #define FXAA_QUALITY_P6 4.0\",\" #define FXAA_QUALITY_P7 12.0\",\"#endif\",\"\",\"/*============================================================================\",\" FXAA QUALITY - LOW DITHER PRESETS\",\"============================================================================*/\",\"#if (FXAA_QUALITY_PRESET == 20)\",\" #define FXAA_QUALITY_PS 3\",\" #define FXAA_QUALITY_P0 1.5\",\" #define FXAA_QUALITY_P1 2.0\",\" #define FXAA_QUALITY_P2 8.0\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#if (FXAA_QUALITY_PRESET == 21)\",\" #define FXAA_QUALITY_PS 4\",\" #define FXAA_QUALITY_P0 1.0\",\" #define FXAA_QUALITY_P1 1.5\",\" #define FXAA_QUALITY_P2 2.0\",\" #define FXAA_QUALITY_P3 8.0\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#if (FXAA_QUALITY_PRESET == 22)\",\" #define FXAA_QUALITY_PS 5\",\" #define FXAA_QUALITY_P0 1.0\",\" #define FXAA_QUALITY_P1 1.5\",\" #define FXAA_QUALITY_P2 2.0\",\" #define FXAA_QUALITY_P3 2.0\",\" #define FXAA_QUALITY_P4 8.0\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#if (FXAA_QUALITY_PRESET == 23)\",\" #define FXAA_QUALITY_PS 6\",\" #define FXAA_QUALITY_P0 1.0\",\" #define FXAA_QUALITY_P1 1.5\",\" #define FXAA_QUALITY_P2 2.0\",\" #define FXAA_QUALITY_P3 2.0\",\" #define FXAA_QUALITY_P4 2.0\",\" #define FXAA_QUALITY_P5 8.0\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#if (FXAA_QUALITY_PRESET == 24)\",\" #define FXAA_QUALITY_PS 7\",\" #define FXAA_QUALITY_P0 1.0\",\" #define FXAA_QUALITY_P1 1.5\",\" #define FXAA_QUALITY_P2 2.0\",\" #define FXAA_QUALITY_P3 2.0\",\" #define FXAA_QUALITY_P4 2.0\",\" #define FXAA_QUALITY_P5 3.0\",\" #define FXAA_QUALITY_P6 8.0\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#if (FXAA_QUALITY_PRESET == 25)\",\" #define FXAA_QUALITY_PS 8\",\" #define FXAA_QUALITY_P0 1.0\",\" #define FXAA_QUALITY_P1 1.5\",\" #define FXAA_QUALITY_P2 2.0\",\" #define FXAA_QUALITY_P3 2.0\",\" #define FXAA_QUALITY_P4 2.0\",\" #define FXAA_QUALITY_P5 2.0\",\" #define FXAA_QUALITY_P6 4.0\",\" #define FXAA_QUALITY_P7 8.0\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#if (FXAA_QUALITY_PRESET == 26)\",\" #define FXAA_QUALITY_PS 9\",\" #define FXAA_QUALITY_P0 1.0\",\" #define FXAA_QUALITY_P1 1.5\",\" #define FXAA_QUALITY_P2 2.0\",\" #define FXAA_QUALITY_P3 2.0\",\" #define FXAA_QUALITY_P4 2.0\",\" #define FXAA_QUALITY_P5 2.0\",\" #define FXAA_QUALITY_P6 2.0\",\" #define FXAA_QUALITY_P7 4.0\",\" #define FXAA_QUALITY_P8 8.0\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#if (FXAA_QUALITY_PRESET == 27)\",\" #define FXAA_QUALITY_PS 10\",\" #define FXAA_QUALITY_P0 1.0\",\" #define FXAA_QUALITY_P1 1.5\",\" #define FXAA_QUALITY_P2 2.0\",\" #define FXAA_QUALITY_P3 2.0\",\" #define FXAA_QUALITY_P4 2.0\",\" #define FXAA_QUALITY_P5 2.0\",\" #define FXAA_QUALITY_P6 2.0\",\" #define FXAA_QUALITY_P7 2.0\",\" #define FXAA_QUALITY_P8 4.0\",\" #define FXAA_QUALITY_P9 8.0\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#if (FXAA_QUALITY_PRESET == 28)\",\" #define FXAA_QUALITY_PS 11\",\" #define FXAA_QUALITY_P0 1.0\",\" #define FXAA_QUALITY_P1 1.5\",\" #define FXAA_QUALITY_P2 2.0\",\" #define FXAA_QUALITY_P3 2.0\",\" #define FXAA_QUALITY_P4 2.0\",\" #define FXAA_QUALITY_P5 2.0\",\" #define FXAA_QUALITY_P6 2.0\",\" #define FXAA_QUALITY_P7 2.0\",\" #define FXAA_QUALITY_P8 2.0\",\" #define FXAA_QUALITY_P9 4.0\",\" #define FXAA_QUALITY_P10 8.0\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#if (FXAA_QUALITY_PRESET == 29)\",\" #define FXAA_QUALITY_PS 12\",\" #define FXAA_QUALITY_P0 1.0\",\" #define FXAA_QUALITY_P1 1.5\",\" #define FXAA_QUALITY_P2 2.0\",\" #define FXAA_QUALITY_P3 2.0\",\" #define FXAA_QUALITY_P4 2.0\",\" #define FXAA_QUALITY_P5 2.0\",\" #define FXAA_QUALITY_P6 2.0\",\" #define FXAA_QUALITY_P7 2.0\",\" #define FXAA_QUALITY_P8 2.0\",\" #define FXAA_QUALITY_P9 2.0\",\" #define FXAA_QUALITY_P10 4.0\",\" #define FXAA_QUALITY_P11 8.0\",\"#endif\",\"\",\"/*============================================================================\",\" FXAA QUALITY - EXTREME QUALITY\",\"============================================================================*/\",\"#if (FXAA_QUALITY_PRESET == 39)\",\" #define FXAA_QUALITY_PS 12\",\" #define FXAA_QUALITY_P0 1.0\",\" #define FXAA_QUALITY_P1 1.0\",\" #define FXAA_QUALITY_P2 1.0\",\" #define FXAA_QUALITY_P3 1.0\",\" #define FXAA_QUALITY_P4 1.0\",\" #define FXAA_QUALITY_P5 1.5\",\" #define FXAA_QUALITY_P6 2.0\",\" #define FXAA_QUALITY_P7 2.0\",\" #define FXAA_QUALITY_P8 2.0\",\" #define FXAA_QUALITY_P9 2.0\",\" #define FXAA_QUALITY_P10 4.0\",\" #define FXAA_QUALITY_P11 8.0\",\"#endif\",\"\",\"\",\"\",\"/*============================================================================\",\"\",\" API PORTING\",\"\",\"============================================================================*/\",\"#if (FXAA_GLSL_100 == 1) || (FXAA_GLSL_120 == 1) || (FXAA_GLSL_130 == 1)\",\" #define FxaaBool bool\",\" #define FxaaDiscard discard\",\" #define FxaaFloat float\",\" #define FxaaFloat2 vec2\",\" #define FxaaFloat3 vec3\",\" #define FxaaFloat4 vec4\",\" #define FxaaHalf float\",\" #define FxaaHalf2 vec2\",\" #define FxaaHalf3 vec3\",\" #define FxaaHalf4 vec4\",\" #define FxaaInt2 ivec2\",\" #define FxaaSat(x) clamp(x, 0.0, 1.0)\",\" #define FxaaTex sampler2D\",\"#else\",\" #define FxaaBool bool\",\" #define FxaaDiscard clip(-1)\",\" #define FxaaFloat float\",\" #define FxaaFloat2 float2\",\" #define FxaaFloat3 float3\",\" #define FxaaFloat4 float4\",\" #define FxaaHalf half\",\" #define FxaaHalf2 half2\",\" #define FxaaHalf3 half3\",\" #define FxaaHalf4 half4\",\" #define FxaaSat(x) saturate(x)\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#if (FXAA_GLSL_100 == 1)\",\" #define FxaaTexTop(t, p) texture2D(t, p, 0.0)\",\" #define FxaaTexOff(t, p, o, r) texture2D(t, p + (o * r), 0.0)\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#if (FXAA_GLSL_120 == 1)\",\" // Requires,\",\" // #version 120\",\" // And at least,\",\" // #extension GL_EXT_gpu_shader4 : enable\",\" // (or set FXAA_FAST_PIXEL_OFFSET 1 to work like DX9)\",\" #define FxaaTexTop(t, p) texture2DLod(t, p, 0.0)\",\" #if (FXAA_FAST_PIXEL_OFFSET == 1)\",\" #define FxaaTexOff(t, p, o, r) texture2DLodOffset(t, p, 0.0, o)\",\" #else\",\" #define FxaaTexOff(t, p, o, r) texture2DLod(t, p + (o * r), 0.0)\",\" #endif\",\" #if (FXAA_GATHER4_ALPHA == 1)\",\" // use #extension GL_ARB_gpu_shader5 : enable\",\" #define FxaaTexAlpha4(t, p) textureGather(t, p, 3)\",\" #define FxaaTexOffAlpha4(t, p, o) textureGatherOffset(t, p, o, 3)\",\" #define FxaaTexGreen4(t, p) textureGather(t, p, 1)\",\" #define FxaaTexOffGreen4(t, p, o) textureGatherOffset(t, p, o, 1)\",\" #endif\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#if (FXAA_GLSL_130 == 1)\",' // Requires \"#version 130\" or better',\" #define FxaaTexTop(t, p) textureLod(t, p, 0.0)\",\" #define FxaaTexOff(t, p, o, r) textureLodOffset(t, p, 0.0, o)\",\" #if (FXAA_GATHER4_ALPHA == 1)\",\" // use #extension GL_ARB_gpu_shader5 : enable\",\" #define FxaaTexAlpha4(t, p) textureGather(t, p, 3)\",\" #define FxaaTexOffAlpha4(t, p, o) textureGatherOffset(t, p, o, 3)\",\" #define FxaaTexGreen4(t, p) textureGather(t, p, 1)\",\" #define FxaaTexOffGreen4(t, p, o) textureGatherOffset(t, p, o, 1)\",\" #endif\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#if (FXAA_HLSL_3 == 1)\",\" #define FxaaInt2 float2\",\" #define FxaaTex sampler2D\",\" #define FxaaTexTop(t, p) tex2Dlod(t, float4(p, 0.0, 0.0))\",\" #define FxaaTexOff(t, p, o, r) tex2Dlod(t, float4(p + (o * r), 0, 0))\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#if (FXAA_HLSL_4 == 1)\",\" #define FxaaInt2 int2\",\" struct FxaaTex { SamplerState smpl; Texture2D tex; };\",\" #define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)\",\" #define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)\",\"#endif\",\"/*--------------------------------------------------------------------------*/\",\"#if (FXAA_HLSL_5 == 1)\",\" #define FxaaInt2 int2\",\" struct FxaaTex { SamplerState smpl; Texture2D tex; };\",\" #define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)\",\" #define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)\",\" #define FxaaTexAlpha4(t, p) t.tex.GatherAlpha(t.smpl, p)\",\" #define FxaaTexOffAlpha4(t, p, o) t.tex.GatherAlpha(t.smpl, p, o)\",\" #define FxaaTexGreen4(t, p) t.tex.GatherGreen(t.smpl, p)\",\" #define FxaaTexOffGreen4(t, p, o) t.tex.GatherGreen(t.smpl, p, o)\",\"#endif\",\"\",\"\",\"/*============================================================================\",\" GREEN AS LUMA OPTION SUPPORT FUNCTION\",\"============================================================================*/\",\"#if (FXAA_GREEN_AS_LUMA == 0)\",\" FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.w; }\",\"#else\",\" FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.y; }\",\"#endif\",\"\",\"\",\"\",\"\",\"/*============================================================================\",\"\",\" FXAA3 QUALITY - PC\",\"\",\"============================================================================*/\",\"#if (FXAA_PC == 1)\",\"/*--------------------------------------------------------------------------*/\",\"FxaaFloat4 FxaaPixelShader(\",\" //\",\" // Use noperspective interpolation here (turn off perspective interpolation).\",\" // {xy} = center of pixel\",\" FxaaFloat2 pos,\",\" //\",\" // Used only for FXAA Console, and not used on the 360 version.\",\" // Use noperspective interpolation here (turn off perspective interpolation).\",\" // {xy_} = upper left of pixel\",\" // {_zw} = lower right of pixel\",\" FxaaFloat4 fxaaConsolePosPos,\",\" //\",\" // Input color texture.\",\" // {rgb_} = color in linear or perceptual color space\",\" // if (FXAA_GREEN_AS_LUMA == 0)\",\" // {__a} = luma in perceptual color space (not linear)\",\" FxaaTex tex,\",\" //\",\" // Only used on the optimized 360 version of FXAA Console.\",' // For everything but 360, just use the same input here as for \"tex\".',\" // For 360, same texture, just alias with a 2nd sampler.\",\" // This sampler needs to have an exponent bias of -1.\",\" FxaaTex fxaaConsole360TexExpBiasNegOne,\",\" //\",\" // Only used on the optimized 360 version of FXAA Console.\",' // For everything but 360, just use the same input here as for \"tex\".',\" // For 360, same texture, just alias with a 3nd sampler.\",\" // This sampler needs to have an exponent bias of -2.\",\" FxaaTex fxaaConsole360TexExpBiasNegTwo,\",\" //\",\" // Only used on FXAA Quality.\",\" // This must be from a constant/uniform.\",\" // {x_} = 1.0/screenWidthInPixels\",\" // {_y} = 1.0/screenHeightInPixels\",\" FxaaFloat2 fxaaQualityRcpFrame,\",\" //\",\" // Only used on FXAA Console.\",\" // This must be from a constant/uniform.\",\" // This effects sub-pixel AA quality and inversely sharpness.\",\" // Where N ranges between,\",\" // N = 0.50 (default)\",\" // N = 0.33 (sharper)\",\" // {x__} = -N/screenWidthInPixels\",\" // {_y_} = -N/screenHeightInPixels\",\" // {_z_} = N/screenWidthInPixels\",\" // {__w} = N/screenHeightInPixels\",\" FxaaFloat4 fxaaConsoleRcpFrameOpt,\",\" //\",\" // Only used on FXAA Console.\",\" // Not used on 360, but used on PS3 and PC.\",\" // This must be from a constant/uniform.\",\" // {x__} = -2.0/screenWidthInPixels\",\" // {_y_} = -2.0/screenHeightInPixels\",\" // {_z_} = 2.0/screenWidthInPixels\",\" // {__w} = 2.0/screenHeightInPixels\",\" FxaaFloat4 fxaaConsoleRcpFrameOpt2,\",\" //\",\" // Only used on FXAA Console.\",\" // Only used on 360 in place of fxaaConsoleRcpFrameOpt2.\",\" // This must be from a constant/uniform.\",\" // {x__} = 8.0/screenWidthInPixels\",\" // {_y_} = 8.0/screenHeightInPixels\",\" // {_z_} = -4.0/screenWidthInPixels\",\" // {__w} = -4.0/screenHeightInPixels\",\" FxaaFloat4 fxaaConsole360RcpFrameOpt2,\",\" //\",\" // Only used on FXAA Quality.\",\" // This used to be the FXAA_QUALITY_SUBPIX define.\",\" // It is here now to allow easier tuning.\",\" // Choose the amount of sub-pixel aliasing removal.\",\" // This can effect sharpness.\",\" // 1.00 - upper limit (softer)\",\" // 0.75 - default amount of filtering\",\" // 0.50 - lower limit (sharper, less sub-pixel aliasing removal)\",\" // 0.25 - almost off\",\" // 0.00 - completely off\",\" FxaaFloat fxaaQualitySubpix,\",\" //\",\" // Only used on FXAA Quality.\",\" // This used to be the FXAA_QUALITY_EDGE_THRESHOLD define.\",\" // It is here now to allow easier tuning.\",\" // The minimum amount of local contrast required to apply algorithm.\",\" // 0.333 - too little (faster)\",\" // 0.250 - low quality\",\" // 0.166 - default\",\" // 0.125 - high quality\",\" // 0.063 - overkill (slower)\",\" FxaaFloat fxaaQualityEdgeThreshold,\",\" //\",\" // Only used on FXAA Quality.\",\" // This used to be the FXAA_QUALITY_EDGE_THRESHOLD_MIN define.\",\" // It is here now to allow easier tuning.\",\" // Trims the algorithm from processing darks.\",\" // 0.0833 - upper limit (default, the start of visible unfiltered edges)\",\" // 0.0625 - high quality (faster)\",\" // 0.0312 - visible limit (slower)\",\" // Special notes when using FXAA_GREEN_AS_LUMA,\",\" // Likely want to set this to zero.\",\" // As colors that are mostly not-green\",\" // will appear very dark in the green channel!\",\" // Tune by looking at mostly non-green content,\",\" // then start at zero and increase until aliasing is a problem.\",\" FxaaFloat fxaaQualityEdgeThresholdMin,\",\" //\",\" // Only used on FXAA Console.\",\" // This used to be the FXAA_CONSOLE_EDGE_SHARPNESS define.\",\" // It is here now to allow easier tuning.\",\" // This does not effect PS3, as this needs to be compiled in.\",\" // Use FXAA_CONSOLE_PS3_EDGE_SHARPNESS for PS3.\",\" // Due to the PS3 being ALU bound,\",\" // there are only three safe values here: 2 and 4 and 8.\",\" // These options use the shaders ability to a free *|/ by 2|4|8.\",\" // For all other platforms can be a non-power of two.\",\" // 8.0 is sharper (default!!!)\",\" // 4.0 is softer\",\" // 2.0 is really soft (good only for vector graphics inputs)\",\" FxaaFloat fxaaConsoleEdgeSharpness,\",\" //\",\" // Only used on FXAA Console.\",\" // This used to be the FXAA_CONSOLE_EDGE_THRESHOLD define.\",\" // It is here now to allow easier tuning.\",\" // This does not effect PS3, as this needs to be compiled in.\",\" // Use FXAA_CONSOLE_PS3_EDGE_THRESHOLD for PS3.\",\" // Due to the PS3 being ALU bound,\",\" // there are only two safe values here: 1/4 and 1/8.\",\" // These options use the shaders ability to a free *|/ by 2|4|8.\",\" // The console setting has a different mapping than the quality setting.\",\" // Other platforms can use other values.\",\" // 0.125 leaves less aliasing, but is softer (default!!!)\",\" // 0.25 leaves more aliasing, and is sharper\",\" FxaaFloat fxaaConsoleEdgeThreshold,\",\" //\",\" // Only used on FXAA Console.\",\" // This used to be the FXAA_CONSOLE_EDGE_THRESHOLD_MIN define.\",\" // It is here now to allow easier tuning.\",\" // Trims the algorithm from processing darks.\",\" // The console setting has a different mapping than the quality setting.\",\" // This only applies when FXAA_EARLY_EXIT is 1.\",\" // This does not apply to PS3,\",\" // PS3 was simplified to avoid more shader instructions.\",\" // 0.06 - faster but more aliasing in darks\",\" // 0.05 - default\",\" // 0.04 - slower and less aliasing in darks\",\" // Special notes when using FXAA_GREEN_AS_LUMA,\",\" // Likely want to set this to zero.\",\" // As colors that are mostly not-green\",\" // will appear very dark in the green channel!\",\" // Tune by looking at mostly non-green content,\",\" // then start at zero and increase until aliasing is a problem.\",\" FxaaFloat fxaaConsoleEdgeThresholdMin,\",\" //\",\" // Extra constants for 360 FXAA Console only.\",\" // Use zeros or anything else for other platforms.\",\" // These must be in physical constant registers and NOT immediates.\",\" // Immediates will result in compiler un-optimizing.\",\" // {xyzw} = float4(1.0, -1.0, 0.25, -0.25)\",\" FxaaFloat4 fxaaConsole360ConstDir\",\") {\",\"/*--------------------------------------------------------------------------*/\",\" FxaaFloat2 posM;\",\" posM.x = pos.x;\",\" posM.y = pos.y;\",\" #if (FXAA_GATHER4_ALPHA == 1)\",\" #if (FXAA_DISCARD == 0)\",\" FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);\",\" #if (FXAA_GREEN_AS_LUMA == 0)\",\" #define lumaM rgbyM.w\",\" #else\",\" #define lumaM rgbyM.y\",\" #endif\",\" #endif\",\" #if (FXAA_GREEN_AS_LUMA == 0)\",\" FxaaFloat4 luma4A = FxaaTexAlpha4(tex, posM);\",\" FxaaFloat4 luma4B = FxaaTexOffAlpha4(tex, posM, FxaaInt2(-1, -1));\",\" #else\",\" FxaaFloat4 luma4A = FxaaTexGreen4(tex, posM);\",\" FxaaFloat4 luma4B = FxaaTexOffGreen4(tex, posM, FxaaInt2(-1, -1));\",\" #endif\",\" #if (FXAA_DISCARD == 1)\",\" #define lumaM luma4A.w\",\" #endif\",\" #define lumaE luma4A.z\",\" #define lumaS luma4A.x\",\" #define lumaSE luma4A.y\",\" #define lumaNW luma4B.w\",\" #define lumaN luma4B.z\",\" #define lumaW luma4B.x\",\" #else\",\" FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);\",\" #if (FXAA_GREEN_AS_LUMA == 0)\",\" #define lumaM rgbyM.w\",\" #else\",\" #define lumaM rgbyM.y\",\" #endif\",\" #if (FXAA_GLSL_100 == 1)\",\" FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 0.0, 1.0), fxaaQualityRcpFrame.xy));\",\" FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 1.0, 0.0), fxaaQualityRcpFrame.xy));\",\" FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 0.0,-1.0), fxaaQualityRcpFrame.xy));\",\" FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2(-1.0, 0.0), fxaaQualityRcpFrame.xy));\",\" #else\",\" FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0, 1), fxaaQualityRcpFrame.xy));\",\" FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 0), fxaaQualityRcpFrame.xy));\",\" FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0,-1), fxaaQualityRcpFrame.xy));\",\" FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 0), fxaaQualityRcpFrame.xy));\",\" #endif\",\" #endif\",\"/*--------------------------------------------------------------------------*/\",\" FxaaFloat maxSM = max(lumaS, lumaM);\",\" FxaaFloat minSM = min(lumaS, lumaM);\",\" FxaaFloat maxESM = max(lumaE, maxSM);\",\" FxaaFloat minESM = min(lumaE, minSM);\",\" FxaaFloat maxWN = max(lumaN, lumaW);\",\" FxaaFloat minWN = min(lumaN, lumaW);\",\" FxaaFloat rangeMax = max(maxWN, maxESM);\",\" FxaaFloat rangeMin = min(minWN, minESM);\",\" FxaaFloat rangeMaxScaled = rangeMax * fxaaQualityEdgeThreshold;\",\" FxaaFloat range = rangeMax - rangeMin;\",\" FxaaFloat rangeMaxClamped = max(fxaaQualityEdgeThresholdMin, rangeMaxScaled);\",\" FxaaBool earlyExit = range < rangeMaxClamped;\",\"/*--------------------------------------------------------------------------*/\",\" if(earlyExit)\",\" #if (FXAA_DISCARD == 1)\",\" FxaaDiscard;\",\" #else\",\" return rgbyM;\",\" #endif\",\"/*--------------------------------------------------------------------------*/\",\" #if (FXAA_GATHER4_ALPHA == 0)\",\" #if (FXAA_GLSL_100 == 1)\",\" FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2(-1.0,-1.0), fxaaQualityRcpFrame.xy));\",\" FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 1.0, 1.0), fxaaQualityRcpFrame.xy));\",\" FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 1.0,-1.0), fxaaQualityRcpFrame.xy));\",\" FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2(-1.0, 1.0), fxaaQualityRcpFrame.xy));\",\" #else\",\" FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1,-1), fxaaQualityRcpFrame.xy));\",\" FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 1), fxaaQualityRcpFrame.xy));\",\" FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1,-1), fxaaQualityRcpFrame.xy));\",\" FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));\",\" #endif\",\" #else\",\" FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(1, -1), fxaaQualityRcpFrame.xy));\",\" FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));\",\" #endif\",\"/*--------------------------------------------------------------------------*/\",\" FxaaFloat lumaNS = lumaN + lumaS;\",\" FxaaFloat lumaWE = lumaW + lumaE;\",\" FxaaFloat subpixRcpRange = 1.0/range;\",\" FxaaFloat subpixNSWE = lumaNS + lumaWE;\",\" FxaaFloat edgeHorz1 = (-2.0 * lumaM) + lumaNS;\",\" FxaaFloat edgeVert1 = (-2.0 * lumaM) + lumaWE;\",\"/*--------------------------------------------------------------------------*/\",\" FxaaFloat lumaNESE = lumaNE + lumaSE;\",\" FxaaFloat lumaNWNE = lumaNW + lumaNE;\",\" FxaaFloat edgeHorz2 = (-2.0 * lumaE) + lumaNESE;\",\" FxaaFloat edgeVert2 = (-2.0 * lumaN) + lumaNWNE;\",\"/*--------------------------------------------------------------------------*/\",\" FxaaFloat lumaNWSW = lumaNW + lumaSW;\",\" FxaaFloat lumaSWSE = lumaSW + lumaSE;\",\" FxaaFloat edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2);\",\" FxaaFloat edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2);\",\" FxaaFloat edgeHorz3 = (-2.0 * lumaW) + lumaNWSW;\",\" FxaaFloat edgeVert3 = (-2.0 * lumaS) + lumaSWSE;\",\" FxaaFloat edgeHorz = abs(edgeHorz3) + edgeHorz4;\",\" FxaaFloat edgeVert = abs(edgeVert3) + edgeVert4;\",\"/*--------------------------------------------------------------------------*/\",\" FxaaFloat subpixNWSWNESE = lumaNWSW + lumaNESE;\",\" FxaaFloat lengthSign = fxaaQualityRcpFrame.x;\",\" FxaaBool horzSpan = edgeHorz >= edgeVert;\",\" FxaaFloat subpixA = subpixNSWE * 2.0 + subpixNWSWNESE;\",\"/*--------------------------------------------------------------------------*/\",\" if(!horzSpan) lumaN = lumaW;\",\" if(!horzSpan) lumaS = lumaE;\",\" if(horzSpan) lengthSign = fxaaQualityRcpFrame.y;\",\" FxaaFloat subpixB = (subpixA * (1.0/12.0)) - lumaM;\",\"/*--------------------------------------------------------------------------*/\",\" FxaaFloat gradientN = lumaN - lumaM;\",\" FxaaFloat gradientS = lumaS - lumaM;\",\" FxaaFloat lumaNN = lumaN + lumaM;\",\" FxaaFloat lumaSS = lumaS + lumaM;\",\" FxaaBool pairN = abs(gradientN) >= abs(gradientS);\",\" FxaaFloat gradient = max(abs(gradientN), abs(gradientS));\",\" if(pairN) lengthSign = -lengthSign;\",\" FxaaFloat subpixC = FxaaSat(abs(subpixB) * subpixRcpRange);\",\"/*--------------------------------------------------------------------------*/\",\" FxaaFloat2 posB;\",\" posB.x = posM.x;\",\" posB.y = posM.y;\",\" FxaaFloat2 offNP;\",\" offNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x;\",\" offNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y;\",\" if(!horzSpan) posB.x += lengthSign * 0.5;\",\" if( horzSpan) posB.y += lengthSign * 0.5;\",\"/*--------------------------------------------------------------------------*/\",\" FxaaFloat2 posN;\",\" posN.x = posB.x - offNP.x * FXAA_QUALITY_P0;\",\" posN.y = posB.y - offNP.y * FXAA_QUALITY_P0;\",\" FxaaFloat2 posP;\",\" posP.x = posB.x + offNP.x * FXAA_QUALITY_P0;\",\" posP.y = posB.y + offNP.y * FXAA_QUALITY_P0;\",\" FxaaFloat subpixD = ((-2.0)*subpixC) + 3.0;\",\" FxaaFloat lumaEndN = FxaaLuma(FxaaTexTop(tex, posN));\",\" FxaaFloat subpixE = subpixC * subpixC;\",\" FxaaFloat lumaEndP = FxaaLuma(FxaaTexTop(tex, posP));\",\"/*--------------------------------------------------------------------------*/\",\" if(!pairN) lumaNN = lumaSS;\",\" FxaaFloat gradientScaled = gradient * 1.0/4.0;\",\" FxaaFloat lumaMM = lumaM - lumaNN * 0.5;\",\" FxaaFloat subpixF = subpixD * subpixE;\",\" FxaaBool lumaMLTZero = lumaMM < 0.0;\",\"/*--------------------------------------------------------------------------*/\",\" lumaEndN -= lumaNN * 0.5;\",\" lumaEndP -= lumaNN * 0.5;\",\" FxaaBool doneN = abs(lumaEndN) >= gradientScaled;\",\" FxaaBool doneP = abs(lumaEndP) >= gradientScaled;\",\" if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P1;\",\" if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P1;\",\" FxaaBool doneNP = (!doneN) || (!doneP);\",\" if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P1;\",\" if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P1;\",\"/*--------------------------------------------------------------------------*/\",\" if(doneNP) {\",\" if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\",\" if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\",\" if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\",\" if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\",\" doneN = abs(lumaEndN) >= gradientScaled;\",\" doneP = abs(lumaEndP) >= gradientScaled;\",\" if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P2;\",\" if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P2;\",\" doneNP = (!doneN) || (!doneP);\",\" if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P2;\",\" if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P2;\",\"/*--------------------------------------------------------------------------*/\",\" #if (FXAA_QUALITY_PS > 3)\",\" if(doneNP) {\",\" if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\",\" if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\",\" if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\",\" if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\",\" doneN = abs(lumaEndN) >= gradientScaled;\",\" doneP = abs(lumaEndP) >= gradientScaled;\",\" if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P3;\",\" if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P3;\",\" doneNP = (!doneN) || (!doneP);\",\" if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P3;\",\" if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P3;\",\"/*--------------------------------------------------------------------------*/\",\" #if (FXAA_QUALITY_PS > 4)\",\" if(doneNP) {\",\" if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\",\" if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\",\" if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\",\" if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\",\" doneN = abs(lumaEndN) >= gradientScaled;\",\" doneP = abs(lumaEndP) >= gradientScaled;\",\" if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P4;\",\" if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P4;\",\" doneNP = (!doneN) || (!doneP);\",\" if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P4;\",\" if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P4;\",\"/*--------------------------------------------------------------------------*/\",\" #if (FXAA_QUALITY_PS > 5)\",\" if(doneNP) {\",\" if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\",\" if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\",\" if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\",\" if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\",\" doneN = abs(lumaEndN) >= gradientScaled;\",\" doneP = abs(lumaEndP) >= gradientScaled;\",\" if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P5;\",\" if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P5;\",\" doneNP = (!doneN) || (!doneP);\",\" if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P5;\",\" if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P5;\",\"/*--------------------------------------------------------------------------*/\",\" #if (FXAA_QUALITY_PS > 6)\",\" if(doneNP) {\",\" if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\",\" if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\",\" if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\",\" if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\",\" doneN = abs(lumaEndN) >= gradientScaled;\",\" doneP = abs(lumaEndP) >= gradientScaled;\",\" if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P6;\",\" if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P6;\",\" doneNP = (!doneN) || (!doneP);\",\" if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P6;\",\" if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P6;\",\"/*--------------------------------------------------------------------------*/\",\" #if (FXAA_QUALITY_PS > 7)\",\" if(doneNP) {\",\" if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\",\" if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\",\" if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\",\" if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\",\" doneN = abs(lumaEndN) >= gradientScaled;\",\" doneP = abs(lumaEndP) >= gradientScaled;\",\" if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P7;\",\" if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P7;\",\" doneNP = (!doneN) || (!doneP);\",\" if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P7;\",\" if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P7;\",\"/*--------------------------------------------------------------------------*/\",\" #if (FXAA_QUALITY_PS > 8)\",\" if(doneNP) {\",\" if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\",\" if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\",\" if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\",\" if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\",\" doneN = abs(lumaEndN) >= gradientScaled;\",\" doneP = abs(lumaEndP) >= gradientScaled;\",\" if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P8;\",\" if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P8;\",\" doneNP = (!doneN) || (!doneP);\",\" if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P8;\",\" if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P8;\",\"/*--------------------------------------------------------------------------*/\",\" #if (FXAA_QUALITY_PS > 9)\",\" if(doneNP) {\",\" if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\",\" if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\",\" if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\",\" if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\",\" doneN = abs(lumaEndN) >= gradientScaled;\",\" doneP = abs(lumaEndP) >= gradientScaled;\",\" if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P9;\",\" if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P9;\",\" doneNP = (!doneN) || (!doneP);\",\" if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P9;\",\" if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P9;\",\"/*--------------------------------------------------------------------------*/\",\" #if (FXAA_QUALITY_PS > 10)\",\" if(doneNP) {\",\" if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\",\" if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\",\" if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\",\" if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\",\" doneN = abs(lumaEndN) >= gradientScaled;\",\" doneP = abs(lumaEndP) >= gradientScaled;\",\" if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P10;\",\" if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P10;\",\" doneNP = (!doneN) || (!doneP);\",\" if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P10;\",\" if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P10;\",\"/*--------------------------------------------------------------------------*/\",\" #if (FXAA_QUALITY_PS > 11)\",\" if(doneNP) {\",\" if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\",\" if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\",\" if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\",\" if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\",\" doneN = abs(lumaEndN) >= gradientScaled;\",\" doneP = abs(lumaEndP) >= gradientScaled;\",\" if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P11;\",\" if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P11;\",\" doneNP = (!doneN) || (!doneP);\",\" if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P11;\",\" if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P11;\",\"/*--------------------------------------------------------------------------*/\",\" #if (FXAA_QUALITY_PS > 12)\",\" if(doneNP) {\",\" if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\",\" if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\",\" if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\",\" if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\",\" doneN = abs(lumaEndN) >= gradientScaled;\",\" doneP = abs(lumaEndP) >= gradientScaled;\",\" if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P12;\",\" if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P12;\",\" doneNP = (!doneN) || (!doneP);\",\" if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P12;\",\" if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P12;\",\"/*--------------------------------------------------------------------------*/\",\" }\",\" #endif\",\"/*--------------------------------------------------------------------------*/\",\" }\",\" #endif\",\"/*--------------------------------------------------------------------------*/\",\" }\",\" #endif\",\"/*--------------------------------------------------------------------------*/\",\" }\",\" #endif\",\"/*--------------------------------------------------------------------------*/\",\" }\",\" #endif\",\"/*--------------------------------------------------------------------------*/\",\" }\",\" #endif\",\"/*--------------------------------------------------------------------------*/\",\" }\",\" #endif\",\"/*--------------------------------------------------------------------------*/\",\" }\",\" #endif\",\"/*--------------------------------------------------------------------------*/\",\" }\",\" #endif\",\"/*--------------------------------------------------------------------------*/\",\" }\",\" #endif\",\"/*--------------------------------------------------------------------------*/\",\" }\",\"/*--------------------------------------------------------------------------*/\",\" FxaaFloat dstN = posM.x - posN.x;\",\" FxaaFloat dstP = posP.x - posM.x;\",\" if(!horzSpan) dstN = posM.y - posN.y;\",\" if(!horzSpan) dstP = posP.y - posM.y;\",\"/*--------------------------------------------------------------------------*/\",\" FxaaBool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero;\",\" FxaaFloat spanLength = (dstP + dstN);\",\" FxaaBool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero;\",\" FxaaFloat spanLengthRcp = 1.0/spanLength;\",\"/*--------------------------------------------------------------------------*/\",\" FxaaBool directionN = dstN < dstP;\",\" FxaaFloat dst = min(dstN, dstP);\",\" FxaaBool goodSpan = directionN ? goodSpanN : goodSpanP;\",\" FxaaFloat subpixG = subpixF * subpixF;\",\" FxaaFloat pixelOffset = (dst * (-spanLengthRcp)) + 0.5;\",\" FxaaFloat subpixH = subpixG * fxaaQualitySubpix;\",\"/*--------------------------------------------------------------------------*/\",\" FxaaFloat pixelOffsetGood = goodSpan ? pixelOffset : 0.0;\",\" FxaaFloat pixelOffsetSubpix = max(pixelOffsetGood, subpixH);\",\" if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign;\",\" if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign;\",\" #if (FXAA_DISCARD == 1)\",\" return FxaaTexTop(tex, posM);\",\" #else\",\" return FxaaFloat4(FxaaTexTop(tex, posM).xyz, lumaM);\",\" #endif\",\"}\",\"/*==========================================================================*/\",\"#endif\",\"\",\"void main() {\",\" gl_FragColor = FxaaPixelShader(\",\" vUv,\",\" vec4(0.0),\",\" tDiffuse,\",\" tDiffuse,\",\" tDiffuse,\",\" resolution,\",\" vec4(0.0),\",\" vec4(0.0),\",\" vec4(0.0),\",\" 0.75,\",\" 0.166,\",\" 0.0833,\",\" 0.0,\",\" 0.0,\",\" 0.0,\",\" vec4(0.0)\",\" );\",\"\",\" // TODO avoid querying texture twice for same texel\",\" gl_FragColor.a = texture2D(tDiffuse, vUv).a;\",\"}\"].join(\"\\n\")};const FocusShader={uniforms:{tDiffuse:{value:null},screenWidth:{value:1024},screenHeight:{value:1024},sampleDistance:{value:0.94},waveFactor:{value:125e-5}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform float screenWidth;\",\"uniform float screenHeight;\",\"uniform float sampleDistance;\",\"uniform float waveFactor;\",\"uniform sampler2D tDiffuse;\",\"varying vec2 vUv;\",\"void main() {\",\"\tvec4 color, org, tmp, add;\",\"\tfloat sample_dist, f;\",\"\tvec2 vin;\",\"\tvec2 uv = vUv;\",\"\tadd = color = org = texture2D( tDiffuse, uv );\",\"\tvin = ( uv - vec2( 0.5 ) ) * vec2( 1.4 );\",\"\tsample_dist = dot( vin, vin ) * 2.0;\",\"\tf = ( waveFactor * 100.0 + sample_dist ) * sampleDistance * 4.0;\",\"\tvec2 sampleSize = vec2( 1.0 / screenWidth, 1.0 / screenHeight ) * vec2( f );\",\"\tadd += tmp = texture2D( tDiffuse, uv + vec2( 0.111964, 0.993712 ) * sampleSize );\",\"\tif( tmp.b < color.b ) color = tmp;\",\"\tadd += tmp = texture2D( tDiffuse, uv + vec2( 0.846724, 0.532032 ) * sampleSize );\",\"\tif( tmp.b < color.b ) color = tmp;\",\"\tadd += tmp = texture2D( tDiffuse, uv + vec2( 0.943883, -0.330279 ) * sampleSize );\",\"\tif( tmp.b < color.b ) color = tmp;\",\"\tadd += tmp = texture2D( tDiffuse, uv + vec2( 0.330279, -0.943883 ) * sampleSize );\",\"\tif( tmp.b < color.b ) color = tmp;\",\"\tadd += tmp = texture2D( tDiffuse, uv + vec2( -0.532032, -0.846724 ) * sampleSize );\",\"\tif( tmp.b < color.b ) color = tmp;\",\"\tadd += tmp = texture2D( tDiffuse, uv + vec2( -0.993712, -0.111964 ) * sampleSize );\",\"\tif( tmp.b < color.b ) color = tmp;\",\"\tadd += tmp = texture2D( tDiffuse, uv + vec2( -0.707107, 0.707107 ) * sampleSize );\",\"\tif( tmp.b < color.b ) color = tmp;\",\"\tcolor = color * vec4( 2.0 ) - ( add / vec4( 8.0 ) );\",\"\tcolor = color + ( add / vec4( 8.0 ) - color ) * ( vec4( 1.0 ) - vec4( sample_dist * 0.5 ) );\",\"\tgl_FragColor = vec4( color.rgb * color.rgb * vec3( 0.95 ) + color.rgb, 1.0 );\",\"}\"].join(\"\\n\")};const FreiChenShader={uniforms:{tDiffuse:{value:null},aspect:{value:/*@__PURE__*/new Vector2(512,512)}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform sampler2D tDiffuse;\",\"varying vec2 vUv;\",\"uniform vec2 aspect;\",\"vec2 texel = vec2(1.0 / aspect.x, 1.0 / aspect.y);\",\"mat3 G[9];\",// hard coded matrix values!!!! as suggested in https://github.com/neilmendoza/ofxPostProcessing/blob/master/src/EdgePass.cpp#L45\n\"const mat3 g0 = mat3( 0.3535533845424652, 0, -0.3535533845424652, 0.5, 0, -0.5, 0.3535533845424652, 0, -0.3535533845424652 );\",\"const mat3 g1 = mat3( 0.3535533845424652, 0.5, 0.3535533845424652, 0, 0, 0, -0.3535533845424652, -0.5, -0.3535533845424652 );\",\"const mat3 g2 = mat3( 0, 0.3535533845424652, -0.5, -0.3535533845424652, 0, 0.3535533845424652, 0.5, -0.3535533845424652, 0 );\",\"const mat3 g3 = mat3( 0.5, -0.3535533845424652, 0, -0.3535533845424652, 0, 0.3535533845424652, 0, 0.3535533845424652, -0.5 );\",\"const mat3 g4 = mat3( 0, -0.5, 0, 0.5, 0, 0.5, 0, -0.5, 0 );\",\"const mat3 g5 = mat3( -0.5, 0, 0.5, 0, 0, 0, 0.5, 0, -0.5 );\",\"const mat3 g6 = mat3( 0.1666666716337204, -0.3333333432674408, 0.1666666716337204, -0.3333333432674408, 0.6666666865348816, -0.3333333432674408, 0.1666666716337204, -0.3333333432674408, 0.1666666716337204 );\",\"const mat3 g7 = mat3( -0.3333333432674408, 0.1666666716337204, -0.3333333432674408, 0.1666666716337204, 0.6666666865348816, 0.1666666716337204, -0.3333333432674408, 0.1666666716337204, -0.3333333432674408 );\",\"const mat3 g8 = mat3( 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408 );\",\"void main(void)\",\"{\",\"\tG[0] = g0,\",\"\tG[1] = g1,\",\"\tG[2] = g2,\",\"\tG[3] = g3,\",\"\tG[4] = g4,\",\"\tG[5] = g5,\",\"\tG[6] = g6,\",\"\tG[7] = g7,\",\"\tG[8] = g8;\",\"\tmat3 I;\",\"\tfloat cnv[9];\",\"\tvec3 sample;\",/* fetch the 3x3 neighbourhood and use the RGB vector's length as intensity value */\"\tfor (float i=0.0; i<3.0; i++) {\",\"\t\tfor (float j=0.0; j<3.0; j++) {\",\"\t\t\tsample = texture2D(tDiffuse, vUv + texel * vec2(i-1.0,j-1.0) ).rgb;\",\"\t\t\tI[int(i)][int(j)] = length(sample);\",\"\t\t}\",\"\t}\",/* calculate the convolution values for all the masks */\"\tfor (int i=0; i<9; i++) {\",\"\t\tfloat dp3 = dot(G[i][0], I[0]) + dot(G[i][1], I[1]) + dot(G[i][2], I[2]);\",\"\t\tcnv[i] = dp3 * dp3;\",\"\t}\",\"\tfloat M = (cnv[0] + cnv[1]) + (cnv[2] + cnv[3]);\",\"\tfloat S = (cnv[4] + cnv[5]) + (cnv[6] + cnv[7]) + (cnv[8] + M);\",\"\tgl_FragColor = vec4(vec3(sqrt(M/S)), 1.0);\",\"}\"].join(\"\\n\")};const FresnelShader={uniforms:{mRefractionRatio:{value:1.02},mFresnelBias:{value:0.1},mFresnelPower:{value:2},mFresnelScale:{value:1},tCube:{value:null}},vertexShader:/*@__PURE__*/[\"uniform float mRefractionRatio;\",\"uniform float mFresnelBias;\",\"uniform float mFresnelScale;\",\"uniform float mFresnelPower;\",\"varying vec3 vReflect;\",\"varying vec3 vRefract[3];\",\"varying float vReflectionFactor;\",\"void main() {\",\"\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\",\"\tvec4 worldPosition = modelMatrix * vec4( position, 1.0 );\",\"\tvec3 worldNormal = normalize( mat3( modelMatrix[0].xyz, modelMatrix[1].xyz, modelMatrix[2].xyz ) * normal );\",\"\tvec3 I = worldPosition.xyz - cameraPosition;\",\"\tvReflect = reflect( I, worldNormal );\",\"\tvRefract[0] = refract( normalize( I ), worldNormal, mRefractionRatio );\",\"\tvRefract[1] = refract( normalize( I ), worldNormal, mRefractionRatio * 0.99 );\",\"\tvRefract[2] = refract( normalize( I ), worldNormal, mRefractionRatio * 0.98 );\",\"\tvReflectionFactor = mFresnelBias + mFresnelScale * pow( 1.0 + dot( normalize( I ), worldNormal ), mFresnelPower );\",\"\tgl_Position = projectionMatrix * mvPosition;\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform samplerCube tCube;\",\"varying vec3 vReflect;\",\"varying vec3 vRefract[3];\",\"varying float vReflectionFactor;\",\"void main() {\",\"\tvec4 reflectedColor = textureCube( tCube, vec3( -vReflect.x, vReflect.yz ) );\",\"\tvec4 refractedColor = vec4( 1.0 );\",\"\trefractedColor.r = textureCube( tCube, vec3( -vRefract[0].x, vRefract[0].yz ) ).r;\",\"\trefractedColor.g = textureCube( tCube, vec3( -vRefract[1].x, vRefract[1].yz ) ).g;\",\"\trefractedColor.b = textureCube( tCube, vec3( -vRefract[2].x, vRefract[2].yz ) ).b;\",\"\tgl_FragColor = mix( refractedColor, reflectedColor, clamp( vReflectionFactor, 0.0, 1.0 ) );\",\"}\"].join(\"\\n\")};const GammaCorrectionShader={uniforms:{tDiffuse:{value:null}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform sampler2D tDiffuse;\",\"varying vec2 vUv;\",\"void main() {\",\"\tvec4 tex = texture2D( tDiffuse, vUv );\",\"\tgl_FragColor = LinearTosRGB( tex );\",\"}\"].join(\"\\n\")};const GodRaysDepthMaskShader={uniforms:{tInput:{value:null}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\" vUv = uv;\",\" gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"uniform sampler2D tInput;\",\"void main() {\",\"\tgl_FragColor = vec4( 1.0 ) - texture2D( tInput, vUv );\",\"}\"].join(\"\\n\")};const GodRaysGenerateShader={uniforms:{tInput:{value:null},fStepSize:{value:1},vSunPositionScreenSpace:{value:/*@__PURE__*/new Vector3()}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\" vUv = uv;\",\" gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"#define TAPS_PER_PASS 6.0\",\"varying vec2 vUv;\",\"uniform sampler2D tInput;\",\"uniform vec3 vSunPositionScreenSpace;\",\"uniform float fStepSize;\",// filter step size\n\"void main() {\",// delta from current pixel to \"sun\" position\n\"\tvec2 delta = vSunPositionScreenSpace.xy - vUv;\",\"\tfloat dist = length( delta );\",// Step vector (uv space)\n\"\tvec2 stepv = fStepSize * delta / dist;\",// Number of iterations between pixel and sun\n\"\tfloat iters = dist/fStepSize;\",\"\tvec2 uv = vUv.xy;\",\"\tfloat col = 0.0;\",// This breaks ANGLE in Chrome 22\n//\t- see http://code.google.com/p/chromium/issues/detail?id=153105\n/*\n \t\t// Unrolling didnt do much on my hardware (ATI Mobility Radeon 3450),\n \t\t// so i've just left the loop\n \n \t\t\"for ( float i = 0.0; i < TAPS_PER_PASS; i += 1.0 ) {\",\n \n \t\t// Accumulate samples, making sure we dont walk past the light source.\n \n \t\t// The check for uv.y < 1 would not be necessary with \"border\" UV wrap\n \t\t// mode, with a black border color. I don't think this is currently\n \t\t// exposed by three.js. As a result there might be artifacts when the\n \t\t// sun is to the left, right or bottom of screen as these cases are\n \t\t// not specifically handled.\n \n \t\t\"\tcol += ( i <= iters && uv.y < 1.0 ? texture2D( tInput, uv ).r : 0.0 );\",\n \t\t\"\tuv += stepv;\",\n \n \t\t\"}\",\n \t\t*/ // Unrolling loop manually makes it work in ANGLE\n\"\tfloat f = min( 1.0, max( vSunPositionScreenSpace.z / 1000.0, 0.0 ) );\",// used to fade out godrays\n\"\tif ( 0.0 <= iters && uv.y < 1.0 ) col += texture2D( tInput, uv ).r * f;\",\"\tuv += stepv;\",\"\tif ( 1.0 <= iters && uv.y < 1.0 ) col += texture2D( tInput, uv ).r * f;\",\"\tuv += stepv;\",\"\tif ( 2.0 <= iters && uv.y < 1.0 ) col += texture2D( tInput, uv ).r * f;\",\"\tuv += stepv;\",\"\tif ( 3.0 <= iters && uv.y < 1.0 ) col += texture2D( tInput, uv ).r * f;\",\"\tuv += stepv;\",\"\tif ( 4.0 <= iters && uv.y < 1.0 ) col += texture2D( tInput, uv ).r * f;\",\"\tuv += stepv;\",\"\tif ( 5.0 <= iters && uv.y < 1.0 ) col += texture2D( tInput, uv ).r * f;\",\"\tuv += stepv;\",// Should technically be dividing by 'iters', but 'TAPS_PER_PASS' smooths out\n// objectionable artifacts, in particular near the sun position. The side\n// effect is that the result is darker than it should be around the sun, as\n// TAPS_PER_PASS is greater than the number of samples actually accumulated.\n// When the result is inverted (in the shader 'godrays_combine', this produces\n// a slight bright spot at the position of the sun, even when it is occluded.\n\"\tgl_FragColor = vec4( col/TAPS_PER_PASS );\",\"\tgl_FragColor.a = 1.0;\",\"}\"].join(\"\\n\")};const GodRaysCombineShader={uniforms:{tColors:{value:null},tGodRays:{value:null},fGodRayIntensity:{value:0.69}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"uniform sampler2D tColors;\",\"uniform sampler2D tGodRays;\",\"uniform float fGodRayIntensity;\",\"void main() {\",// Since THREE.MeshDepthMaterial renders foreground objects white and background\n// objects black, the god-rays will be white streaks. Therefore value is inverted\n// before being combined with tColors\n\"\tgl_FragColor = texture2D( tColors, vUv ) + fGodRayIntensity * vec4( 1.0 - texture2D( tGodRays, vUv ).r );\",\"\tgl_FragColor.a = 1.0;\",\"}\"].join(\"\\n\")};const GodRaysFakeSunShader={uniforms:{vSunPositionScreenSpace:{value:/*@__PURE__*/new Vector3()},fAspect:{value:1},sunColor:{value:/*@__PURE__*/new Color(16772608)},bgColor:{value:/*@__PURE__*/new Color(0)}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"uniform vec3 vSunPositionScreenSpace;\",\"uniform float fAspect;\",\"uniform vec3 sunColor;\",\"uniform vec3 bgColor;\",\"void main() {\",\"\tvec2 diff = vUv - vSunPositionScreenSpace.xy;\",// Correct for aspect ratio\n\"\tdiff.x *= fAspect;\",\"\tfloat prop = clamp( length( diff ) / 0.5, 0.0, 1.0 );\",\"\tprop = 0.35 * pow( 1.0 - prop, 3.0 );\",\"\tgl_FragColor.xyz = ( vSunPositionScreenSpace.z > 0.0 ) ? mix( sunColor, bgColor, 1.0 - prop ) : bgColor;\",\"\tgl_FragColor.w = 1.0;\",\"}\"].join(\"\\n\")};const HorizontalBlurShader={uniforms:{tDiffuse:{value:null},h:{value:1/512}},vertexShader:/* glsl */`\n varying vec2 vUv;\n\n void main() {\n\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n }\n `,fragmentShader:/* glsl */`\n uniform sampler2D tDiffuse;\n uniform float h;\n\n varying vec2 vUv;\n\n void main() {\n\n \tvec4 sum = vec4( 0.0 );\n\n \tsum += texture2D( tDiffuse, vec2( vUv.x - 4.0 * h, vUv.y ) ) * 0.051;\n \tsum += texture2D( tDiffuse, vec2( vUv.x - 3.0 * h, vUv.y ) ) * 0.0918;\n \tsum += texture2D( tDiffuse, vec2( vUv.x - 2.0 * h, vUv.y ) ) * 0.12245;\n \tsum += texture2D( tDiffuse, vec2( vUv.x - 1.0 * h, vUv.y ) ) * 0.1531;\n \tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633;\n \tsum += texture2D( tDiffuse, vec2( vUv.x + 1.0 * h, vUv.y ) ) * 0.1531;\n \tsum += texture2D( tDiffuse, vec2( vUv.x + 2.0 * h, vUv.y ) ) * 0.12245;\n \tsum += texture2D( tDiffuse, vec2( vUv.x + 3.0 * h, vUv.y ) ) * 0.0918;\n \tsum += texture2D( tDiffuse, vec2( vUv.x + 4.0 * h, vUv.y ) ) * 0.051;\n\n \tgl_FragColor = sum;\n\n }\n `};const HorizontalTiltShiftShader={uniforms:{tDiffuse:{value:null},h:{value:1/512},r:{value:0.35}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform sampler2D tDiffuse;\",\"uniform float h;\",\"uniform float r;\",\"varying vec2 vUv;\",\"void main() {\",\"\tvec4 sum = vec4( 0.0 );\",\"\tfloat hh = h * abs( r - vUv.y );\",\"\tsum += texture2D( tDiffuse, vec2( vUv.x - 4.0 * hh, vUv.y ) ) * 0.051;\",\"\tsum += texture2D( tDiffuse, vec2( vUv.x - 3.0 * hh, vUv.y ) ) * 0.0918;\",\"\tsum += texture2D( tDiffuse, vec2( vUv.x - 2.0 * hh, vUv.y ) ) * 0.12245;\",\"\tsum += texture2D( tDiffuse, vec2( vUv.x - 1.0 * hh, vUv.y ) ) * 0.1531;\",\"\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633;\",\"\tsum += texture2D( tDiffuse, vec2( vUv.x + 1.0 * hh, vUv.y ) ) * 0.1531;\",\"\tsum += texture2D( tDiffuse, vec2( vUv.x + 2.0 * hh, vUv.y ) ) * 0.12245;\",\"\tsum += texture2D( tDiffuse, vec2( vUv.x + 3.0 * hh, vUv.y ) ) * 0.0918;\",\"\tsum += texture2D( tDiffuse, vec2( vUv.x + 4.0 * hh, vUv.y ) ) * 0.051;\",\"\tgl_FragColor = sum;\",\"}\"].join(\"\\n\")};const HueSaturationShader={uniforms:{tDiffuse:{value:null},hue:{value:0},saturation:{value:0}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform sampler2D tDiffuse;\",\"uniform float hue;\",\"uniform float saturation;\",\"varying vec2 vUv;\",\"void main() {\",\"\tgl_FragColor = texture2D( tDiffuse, vUv );\",// hue\n\"\tfloat angle = hue * 3.14159265;\",\"\tfloat s = sin(angle), c = cos(angle);\",\"\tvec3 weights = (vec3(2.0 * c, -sqrt(3.0) * s - c, sqrt(3.0) * s - c) + 1.0) / 3.0;\",\"\tfloat len = length(gl_FragColor.rgb);\",\"\tgl_FragColor.rgb = vec3(\",\"\t\tdot(gl_FragColor.rgb, weights.xyz),\",\"\t\tdot(gl_FragColor.rgb, weights.zxy),\",\"\t\tdot(gl_FragColor.rgb, weights.yzx)\",\"\t);\",// saturation\n\"\tfloat average = (gl_FragColor.r + gl_FragColor.g + gl_FragColor.b) / 3.0;\",\"\tif (saturation > 0.0) {\",\"\t\tgl_FragColor.rgb += (average - gl_FragColor.rgb) * (1.0 - 1.0 / (1.001 - saturation));\",\"\t} else {\",\"\t\tgl_FragColor.rgb += (average - gl_FragColor.rgb) * (-saturation);\",\"\t}\",\"}\"].join(\"\\n\")};const KaleidoShader={uniforms:{tDiffuse:{value:null},sides:{value:6},angle:{value:0}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform sampler2D tDiffuse;\",\"uniform float sides;\",\"uniform float angle;\",\"varying vec2 vUv;\",\"void main() {\",\"\tvec2 p = vUv - 0.5;\",\"\tfloat r = length(p);\",\"\tfloat a = atan(p.y, p.x) + angle;\",\"\tfloat tau = 2. * 3.1416 ;\",\"\ta = mod(a, tau/sides);\",\"\ta = abs(a - tau/sides/2.) ;\",\"\tp = r * vec2(cos(a), sin(a));\",\"\tvec4 color = texture2D(tDiffuse, p + 0.5);\",\"\tgl_FragColor = color;\",\"}\"].join(\"\\n\")};const MirrorShader={uniforms:{tDiffuse:{value:null},side:{value:1}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform sampler2D tDiffuse;\",\"uniform int side;\",\"varying vec2 vUv;\",\"void main() {\",\"\tvec2 p = vUv;\",\"\tif (side == 0){\",\"\t\tif (p.x > 0.5) p.x = 1.0 - p.x;\",\"\t}else if (side == 1){\",\"\t\tif (p.x < 0.5) p.x = 1.0 - p.x;\",\"\t}else if (side == 2){\",\"\t\tif (p.y < 0.5) p.y = 1.0 - p.y;\",\"\t}else if (side == 3){\",\"\t\tif (p.y > 0.5) p.y = 1.0 - p.y;\",\"\t} \",\"\tvec4 color = texture2D(tDiffuse, p);\",\"\tgl_FragColor = color;\",\"}\"].join(\"\\n\")};const NormalMapShader={uniforms:{heightMap:{value:null},resolution:{value:/*@__PURE__*/new Vector2(512,512)},scale:{value:/*@__PURE__*/new Vector2(1,1)},height:{value:0.05}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform float height;\",\"uniform vec2 resolution;\",\"uniform sampler2D heightMap;\",\"varying vec2 vUv;\",\"void main() {\",\"\tfloat val = texture2D( heightMap, vUv ).x;\",\"\tfloat valU = texture2D( heightMap, vUv + vec2( 1.0 / resolution.x, 0.0 ) ).x;\",\"\tfloat valV = texture2D( heightMap, vUv + vec2( 0.0, 1.0 / resolution.y ) ).x;\",\"\tgl_FragColor = vec4( ( 0.5 * normalize( vec3( val - valU, val - valV, height ) ) + 0.5 ), 1.0 );\",\"}\"].join(\"\\n\")};const ParallaxShader={// Ordered from fastest to best quality.\nmodes:{none:\"NO_PARALLAX\",basic:\"USE_BASIC_PARALLAX\",steep:\"USE_STEEP_PARALLAX\",occlusion:\"USE_OCLUSION_PARALLAX\",// a.k.a. POM\nrelief:\"USE_RELIEF_PARALLAX\"},uniforms:{bumpMap:{value:null},map:{value:null},parallaxScale:{value:null},parallaxMinLayers:{value:null},parallaxMaxLayers:{value:null}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"varying vec3 vViewPosition;\",\"varying vec3 vNormal;\",\"void main() {\",\"\tvUv = uv;\",\"\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\",\"\tvViewPosition = -mvPosition.xyz;\",\"\tvNormal = normalize( normalMatrix * normal );\",\"\tgl_Position = projectionMatrix * mvPosition;\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform sampler2D bumpMap;\",\"uniform sampler2D map;\",\"uniform float parallaxScale;\",\"uniform float parallaxMinLayers;\",\"uniform float parallaxMaxLayers;\",\"varying vec2 vUv;\",\"varying vec3 vViewPosition;\",\"varying vec3 vNormal;\",\"#ifdef USE_BASIC_PARALLAX\",\"\tvec2 parallaxMap( in vec3 V ) {\",\"\t\tfloat initialHeight = texture2D( bumpMap, vUv ).r;\",// No Offset Limitting: messy, floating output at grazing angles.\n//\"vec2 texCoordOffset = parallaxScale * V.xy / V.z * initialHeight;\",\n// Offset Limiting\n\"\t\tvec2 texCoordOffset = parallaxScale * V.xy * initialHeight;\",\"\t\treturn vUv - texCoordOffset;\",\"\t}\",\"#else\",\"\tvec2 parallaxMap( in vec3 V ) {\",// Determine number of layers from angle between V and N\n\"\t\tfloat numLayers = mix( parallaxMaxLayers, parallaxMinLayers, abs( dot( vec3( 0.0, 0.0, 1.0 ), V ) ) );\",\"\t\tfloat layerHeight = 1.0 / numLayers;\",\"\t\tfloat currentLayerHeight = 0.0;\",// Shift of texture coordinates for each iteration\n\"\t\tvec2 dtex = parallaxScale * V.xy / V.z / numLayers;\",\"\t\tvec2 currentTextureCoords = vUv;\",\"\t\tfloat heightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;\",// while ( heightFromTexture > currentLayerHeight )\n// Infinite loops are not well supported. Do a \"large\" finite\n// loop, but not too large, as it slows down some compilers.\n\"\t\tfor ( int i = 0; i < 30; i += 1 ) {\",\"\t\t\tif ( heightFromTexture <= currentLayerHeight ) {\",\"\t\t\t\tbreak;\",\"\t\t\t}\",\"\t\t\tcurrentLayerHeight += layerHeight;\",// Shift texture coordinates along vector V\n\"\t\t\tcurrentTextureCoords -= dtex;\",\"\t\t\theightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;\",\"\t\t}\",\"\t\t#ifdef USE_STEEP_PARALLAX\",\"\t\t\treturn currentTextureCoords;\",\"\t\t#elif defined( USE_RELIEF_PARALLAX )\",\"\t\t\tvec2 deltaTexCoord = dtex / 2.0;\",\"\t\t\tfloat deltaHeight = layerHeight / 2.0;\",// Return to the mid point of previous layer\n\"\t\t\tcurrentTextureCoords += deltaTexCoord;\",\"\t\t\tcurrentLayerHeight -= deltaHeight;\",// Binary search to increase precision of Steep Parallax Mapping\n\"\t\t\tconst int numSearches = 5;\",\"\t\t\tfor ( int i = 0; i < numSearches; i += 1 ) {\",\"\t\t\t\tdeltaTexCoord /= 2.0;\",\"\t\t\t\tdeltaHeight /= 2.0;\",\"\t\t\t\theightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;\",// Shift along or against vector V\n\"\t\t\t\tif( heightFromTexture > currentLayerHeight ) {\",// Below the surface\n\"\t\t\t\t\tcurrentTextureCoords -= deltaTexCoord;\",\"\t\t\t\t\tcurrentLayerHeight += deltaHeight;\",\"\t\t\t\t} else {\",// above the surface\n\"\t\t\t\t\tcurrentTextureCoords += deltaTexCoord;\",\"\t\t\t\t\tcurrentLayerHeight -= deltaHeight;\",\"\t\t\t\t}\",\"\t\t\t}\",\"\t\t\treturn currentTextureCoords;\",\"\t\t#elif defined( USE_OCLUSION_PARALLAX )\",\"\t\t\tvec2 prevTCoords = currentTextureCoords + dtex;\",// Heights for linear interpolation\n\"\t\t\tfloat nextH = heightFromTexture - currentLayerHeight;\",\"\t\t\tfloat prevH = texture2D( bumpMap, prevTCoords ).r - currentLayerHeight + layerHeight;\",// Proportions for linear interpolation\n\"\t\t\tfloat weight = nextH / ( nextH - prevH );\",// Interpolation of texture coordinates\n\"\t\t\treturn prevTCoords * weight + currentTextureCoords * ( 1.0 - weight );\",\"\t\t#else\",// NO_PARALLAX\n\"\t\t\treturn vUv;\",\"\t\t#endif\",\"\t}\",\"#endif\",\"vec2 perturbUv( vec3 surfPosition, vec3 surfNormal, vec3 viewPosition ) {\",\"\tvec2 texDx = dFdx( vUv );\",\"\tvec2 texDy = dFdy( vUv );\",\"\tvec3 vSigmaX = dFdx( surfPosition );\",\"\tvec3 vSigmaY = dFdy( surfPosition );\",\"\tvec3 vR1 = cross( vSigmaY, surfNormal );\",\"\tvec3 vR2 = cross( surfNormal, vSigmaX );\",\"\tfloat fDet = dot( vSigmaX, vR1 );\",\"\tvec2 vProjVscr = ( 1.0 / fDet ) * vec2( dot( vR1, viewPosition ), dot( vR2, viewPosition ) );\",\"\tvec3 vProjVtex;\",\"\tvProjVtex.xy = texDx * vProjVscr.x + texDy * vProjVscr.y;\",\"\tvProjVtex.z = dot( surfNormal, viewPosition );\",\"\treturn parallaxMap( vProjVtex );\",\"}\",\"void main() {\",\"\tvec2 mapUv = perturbUv( -vViewPosition, normalize( vNormal ), normalize( vViewPosition ) );\",\"\tgl_FragColor = texture2D( map, mapUv );\",\"}\"].join(\"\\n\")};const PixelShader={uniforms:{tDiffuse:{value:null},resolution:{value:null},pixelSize:{value:1}},vertexShader:/*@__PURE__*/[\"varying highp vec2 vUv;\",\"void main() {\",\"vUv = uv;\",\"gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform sampler2D tDiffuse;\",\"uniform float pixelSize;\",\"uniform vec2 resolution;\",\"varying highp vec2 vUv;\",\"void main(){\",\"vec2 dxy = pixelSize / resolution;\",\"vec2 coord = dxy * floor( vUv / dxy );\",\"gl_FragColor = texture2D(tDiffuse, coord);\",\"}\"].join(\"\\n\")};const RGBShiftShader={uniforms:{tDiffuse:{value:null},amount:{value:5e-3},angle:{value:0}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform sampler2D tDiffuse;\",\"uniform float amount;\",\"uniform float angle;\",\"varying vec2 vUv;\",\"void main() {\",\"\tvec2 offset = amount * vec2( cos(angle), sin(angle));\",\"\tvec4 cr = texture2D(tDiffuse, vUv + offset);\",\"\tvec4 cga = texture2D(tDiffuse, vUv);\",\"\tvec4 cb = texture2D(tDiffuse, vUv - offset);\",\"\tgl_FragColor = vec4(cr.r, cga.g, cb.b, cga.a);\",\"}\"].join(\"\\n\")};const SepiaShader={uniforms:{tDiffuse:{value:null},amount:{value:1}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform float amount;\",\"uniform sampler2D tDiffuse;\",\"varying vec2 vUv;\",\"void main() {\",\"\tvec4 color = texture2D( tDiffuse, vUv );\",\"\tvec3 c = color.rgb;\",\"\tcolor.r = dot( c, vec3( 1.0 - 0.607 * amount, 0.769 * amount, 0.189 * amount ) );\",\"\tcolor.g = dot( c, vec3( 0.349 * amount, 1.0 - 0.314 * amount, 0.168 * amount ) );\",\"\tcolor.b = dot( c, vec3( 0.272 * amount, 0.534 * amount, 1.0 - 0.869 * amount ) );\",\"\tgl_FragColor = vec4( min( vec3( 1.0 ), color.rgb ), color.a );\",\"}\"].join(\"\\n\")};const SobelOperatorShader={uniforms:{tDiffuse:{value:null},resolution:{value:/*@__PURE__*/new Vector2()}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform sampler2D tDiffuse;\",\"uniform vec2 resolution;\",\"varying vec2 vUv;\",\"void main() {\",\"\tvec2 texel = vec2( 1.0 / resolution.x, 1.0 / resolution.y );\",// kernel definition (in glsl matrices are filled in column-major order)\n\"\tconst mat3 Gx = mat3( -1, -2, -1, 0, 0, 0, 1, 2, 1 );\",// x direction kernel\n\"\tconst mat3 Gy = mat3( -1, 0, 1, -2, 0, 2, -1, 0, 1 );\",// y direction kernel\n// fetch the 3x3 neighbourhood of a fragment\n// first column\n\"\tfloat tx0y0 = texture2D( tDiffuse, vUv + texel * vec2( -1, -1 ) ).r;\",\"\tfloat tx0y1 = texture2D( tDiffuse, vUv + texel * vec2( -1, 0 ) ).r;\",\"\tfloat tx0y2 = texture2D( tDiffuse, vUv + texel * vec2( -1, 1 ) ).r;\",// second column\n\"\tfloat tx1y0 = texture2D( tDiffuse, vUv + texel * vec2( 0, -1 ) ).r;\",\"\tfloat tx1y1 = texture2D( tDiffuse, vUv + texel * vec2( 0, 0 ) ).r;\",\"\tfloat tx1y2 = texture2D( tDiffuse, vUv + texel * vec2( 0, 1 ) ).r;\",// third column\n\"\tfloat tx2y0 = texture2D( tDiffuse, vUv + texel * vec2( 1, -1 ) ).r;\",\"\tfloat tx2y1 = texture2D( tDiffuse, vUv + texel * vec2( 1, 0 ) ).r;\",\"\tfloat tx2y2 = texture2D( tDiffuse, vUv + texel * vec2( 1, 1 ) ).r;\",// gradient value in x direction\n\"\tfloat valueGx = Gx[0][0] * tx0y0 + Gx[1][0] * tx1y0 + Gx[2][0] * tx2y0 + \",\"\t\tGx[0][1] * tx0y1 + Gx[1][1] * tx1y1 + Gx[2][1] * tx2y1 + \",\"\t\tGx[0][2] * tx0y2 + Gx[1][2] * tx1y2 + Gx[2][2] * tx2y2; \",// gradient value in y direction\n\"\tfloat valueGy = Gy[0][0] * tx0y0 + Gy[1][0] * tx1y0 + Gy[2][0] * tx2y0 + \",\"\t\tGy[0][1] * tx0y1 + Gy[1][1] * tx1y1 + Gy[2][1] * tx2y1 + \",\"\t\tGy[0][2] * tx0y2 + Gy[1][2] * tx1y2 + Gy[2][2] * tx2y2; \",// magnitute of the total gradient\n\"\tfloat G = sqrt( ( valueGx * valueGx ) + ( valueGy * valueGy ) );\",\"\tgl_FragColor = vec4( vec3( G ), 1 );\",\"}\"].join(\"\\n\")};let _SubsurfaceScatteringShader;function get(){if(_SubsurfaceScatteringShader)return _SubsurfaceScatteringShader;const meshphong_frag_head=ShaderChunk[\"meshphong_frag\"].slice(0,ShaderChunk[\"meshphong_frag\"].indexOf(\"void main() {\"));const meshphong_frag_body=ShaderChunk[\"meshphong_frag\"].slice(ShaderChunk[\"meshphong_frag\"].indexOf(\"void main() {\"));_SubsurfaceScatteringShader={uniforms:UniformsUtils.merge([ShaderLib[\"phong\"].uniforms,{thicknessMap:{value:null},thicknessColor:{value:new Color(16777215)},thicknessDistortion:{value:0.1},thicknessAmbient:{value:0},thicknessAttenuation:{value:0.1},thicknessPower:{value:2},thicknessScale:{value:10}}]),vertexShader:/* glsl */`\n #define USE_UV\n ${ShaderChunk[\"meshphong_vert\"]}\n `,fragmentShader:/* glsl */`\n #define USE_UV',\n #define SUBSURFACE',\n\n ${meshphong_frag_head}\n\n uniform sampler2D thicknessMap;\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n \tvec3 thickness = thicknessColor * texture2D(thicknessMap, uv).r;\n \tvec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n \tfloat scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n \tvec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n \treflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n\n ${meshphong_frag_body.replace(\"#include \",ShaderChunk[\"lights_fragment_begin\"].replace(/RE_Direct\\( directLight, geometry, material, reflectedLight \\);/g,/* glsl */`\n RE_Direct( directLight, geometry, material, reflectedLight );\n\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n `))}\n `};return _SubsurfaceScatteringShader;}const SubsurfaceScatteringShader={get uniforms(){return get().uniforms;},set uniforms(value){get().uniforms=value;},get vertexShader(){return get().vertexShader;},set vertexShader(value){get().vertexShader=value;},get fragmentShader(){return get().vertexShader;},set fragmentShader(value){get().vertexShader=value;}};const TechnicolorShader={uniforms:{tDiffuse:{value:null}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform sampler2D tDiffuse;\",\"varying vec2 vUv;\",\"void main() {\",\"\tvec4 tex = texture2D( tDiffuse, vec2( vUv.x, vUv.y ) );\",\"\tvec4 newTex = vec4(tex.r, (tex.g + tex.b) * .5, (tex.g + tex.b) * .5, 1.0);\",\"\tgl_FragColor = newTex;\",\"}\"].join(\"\\n\")};const ToonShader1={uniforms:{uDirLightPos:{value:/*@__PURE__*/new Vector3()},uDirLightColor:{value:/*@__PURE__*/new Color(15658734)},uAmbientLightColor:{value:/*@__PURE__*/new Color(328965)},uBaseColor:{value:/*@__PURE__*/new Color(16777215)}},vertexShader:/*@__PURE__*/[\"varying vec3 vNormal;\",\"varying vec3 vRefract;\",\"void main() {\",\"\tvec4 worldPosition = modelMatrix * vec4( position, 1.0 );\",\"\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\",\"\tvec3 worldNormal = normalize ( mat3( modelMatrix[0].xyz, modelMatrix[1].xyz, modelMatrix[2].xyz ) * normal );\",\"\tvNormal = normalize( normalMatrix * normal );\",\"\tvec3 I = worldPosition.xyz - cameraPosition;\",\"\tvRefract = refract( normalize( I ), worldNormal, 1.02 );\",\"\tgl_Position = projectionMatrix * mvPosition;\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform vec3 uBaseColor;\",\"uniform vec3 uDirLightPos;\",\"uniform vec3 uDirLightColor;\",\"uniform vec3 uAmbientLightColor;\",\"varying vec3 vNormal;\",\"varying vec3 vRefract;\",\"void main() {\",\"\tfloat directionalLightWeighting = max( dot( normalize( vNormal ), uDirLightPos ), 0.0);\",\"\tvec3 lightWeighting = uAmbientLightColor + uDirLightColor * directionalLightWeighting;\",\"\tfloat intensity = smoothstep( - 0.5, 1.0, pow( length(lightWeighting), 20.0 ) );\",\"\tintensity += length(lightWeighting) * 0.2;\",\"\tfloat cameraWeighting = dot( normalize( vNormal ), vRefract );\",\"\tintensity += pow( 1.0 - length( cameraWeighting ), 6.0 );\",\"\tintensity = intensity * 0.2 + 0.3;\",\"\tif ( intensity < 0.50 ) {\",\"\t\tgl_FragColor = vec4( 2.0 * intensity * uBaseColor, 1.0 );\",\"\t} else {\",\"\t\tgl_FragColor = vec4( 1.0 - 2.0 * ( 1.0 - intensity ) * ( 1.0 - uBaseColor ), 1.0 );\",\"}\",\"}\"].join(\"\\n\")};const ToonShader2={uniforms:{uDirLightPos:{value:/*@__PURE__*/new Vector3()},uDirLightColor:{value:/*@__PURE__*/new Color(15658734)},uAmbientLightColor:{value:/*@__PURE__*/new Color(328965)},uBaseColor:{value:/*@__PURE__*/new Color(15658734)},uLineColor1:{value:/*@__PURE__*/new Color(8421504)},uLineColor2:{value:/*@__PURE__*/new Color(0)},uLineColor3:{value:/*@__PURE__*/new Color(0)},uLineColor4:{value:/*@__PURE__*/new Color(0)}},vertexShader:/*@__PURE__*/[\"varying vec3 vNormal;\",\"void main() {\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"\tvNormal = normalize( normalMatrix * normal );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform vec3 uBaseColor;\",\"uniform vec3 uLineColor1;\",\"uniform vec3 uLineColor2;\",\"uniform vec3 uLineColor3;\",\"uniform vec3 uLineColor4;\",\"uniform vec3 uDirLightPos;\",\"uniform vec3 uDirLightColor;\",\"uniform vec3 uAmbientLightColor;\",\"varying vec3 vNormal;\",\"void main() {\",\"\tfloat camera = max( dot( normalize( vNormal ), vec3( 0.0, 0.0, 1.0 ) ), 0.4);\",\"\tfloat light = max( dot( normalize( vNormal ), uDirLightPos ), 0.0);\",\"\tgl_FragColor = vec4( uBaseColor, 1.0 );\",\"\tif ( length(uAmbientLightColor + uDirLightColor * light) < 1.00 ) {\",\"\t\tgl_FragColor *= vec4( uLineColor1, 1.0 );\",\"\t}\",\"\tif ( length(uAmbientLightColor + uDirLightColor * camera) < 0.50 ) {\",\"\t\tgl_FragColor *= vec4( uLineColor2, 1.0 );\",\"\t}\",\"}\"].join(\"\\n\")};const ToonShaderHatching={uniforms:{uDirLightPos:{value:/*@__PURE__*/new Vector3()},uDirLightColor:{value:/*@__PURE__*/new Color(15658734)},uAmbientLightColor:{value:/*@__PURE__*/new Color(328965)},uBaseColor:{value:/*@__PURE__*/new Color(16777215)},uLineColor1:{value:/*@__PURE__*/new Color(0)},uLineColor2:{value:/*@__PURE__*/new Color(0)},uLineColor3:{value:/*@__PURE__*/new Color(0)},uLineColor4:{value:/*@__PURE__*/new Color(0)}},vertexShader:/*@__PURE__*/[\"varying vec3 vNormal;\",\"void main() {\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"\tvNormal = normalize( normalMatrix * normal );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform vec3 uBaseColor;\",\"uniform vec3 uLineColor1;\",\"uniform vec3 uLineColor2;\",\"uniform vec3 uLineColor3;\",\"uniform vec3 uLineColor4;\",\"uniform vec3 uDirLightPos;\",\"uniform vec3 uDirLightColor;\",\"uniform vec3 uAmbientLightColor;\",\"varying vec3 vNormal;\",\"void main() {\",\"\tfloat directionalLightWeighting = max( dot( normalize(vNormal), uDirLightPos ), 0.0);\",\"\tvec3 lightWeighting = uAmbientLightColor + uDirLightColor * directionalLightWeighting;\",\"\tgl_FragColor = vec4( uBaseColor, 1.0 );\",\"\tif ( length(lightWeighting) < 1.00 ) {\",\"\t\tif ( mod(gl_FragCoord.x + gl_FragCoord.y, 10.0) == 0.0) {\",\"\t\t\tgl_FragColor = vec4( uLineColor1, 1.0 );\",\"\t\t}\",\"\t}\",\"\tif ( length(lightWeighting) < 0.75 ) {\",\"\t\tif (mod(gl_FragCoord.x - gl_FragCoord.y, 10.0) == 0.0) {\",\"\t\t\tgl_FragColor = vec4( uLineColor2, 1.0 );\",\"\t\t}\",\"\t}\",\"\tif ( length(lightWeighting) < 0.50 ) {\",\"\t\tif (mod(gl_FragCoord.x + gl_FragCoord.y - 5.0, 10.0) == 0.0) {\",\"\t\t\tgl_FragColor = vec4( uLineColor3, 1.0 );\",\"\t\t}\",\"\t}\",\"\tif ( length(lightWeighting) < 0.3465 ) {\",\"\t\tif (mod(gl_FragCoord.x - gl_FragCoord.y - 5.0, 10.0) == 0.0) {\",\"\t\t\tgl_FragColor = vec4( uLineColor4, 1.0 );\",\"\t}\",\"\t}\",\"}\"].join(\"\\n\")};const ToonShaderDotted={uniforms:{uDirLightPos:{value:/*@__PURE__*/new Vector3()},uDirLightColor:{value:/*@__PURE__*/new Color(15658734)},uAmbientLightColor:{value:/*@__PURE__*/new Color(328965)},uBaseColor:{value:/*@__PURE__*/new Color(16777215)},uLineColor1:{value:/*@__PURE__*/new Color(0)}},vertexShader:/*@__PURE__*/[\"varying vec3 vNormal;\",\"void main() {\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"\tvNormal = normalize( normalMatrix * normal );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform vec3 uBaseColor;\",\"uniform vec3 uLineColor1;\",\"uniform vec3 uLineColor2;\",\"uniform vec3 uLineColor3;\",\"uniform vec3 uLineColor4;\",\"uniform vec3 uDirLightPos;\",\"uniform vec3 uDirLightColor;\",\"uniform vec3 uAmbientLightColor;\",\"varying vec3 vNormal;\",\"void main() {\",\"float directionalLightWeighting = max( dot( normalize(vNormal), uDirLightPos ), 0.0);\",\"vec3 lightWeighting = uAmbientLightColor + uDirLightColor * directionalLightWeighting;\",\"gl_FragColor = vec4( uBaseColor, 1.0 );\",\"if ( length(lightWeighting) < 1.00 ) {\",\"\t\tif ( ( mod(gl_FragCoord.x, 4.001) + mod(gl_FragCoord.y, 4.0) ) > 6.00 ) {\",\"\t\t\tgl_FragColor = vec4( uLineColor1, 1.0 );\",\"\t\t}\",\"\t}\",\"\tif ( length(lightWeighting) < 0.50 ) {\",\"\t\tif ( ( mod(gl_FragCoord.x + 2.0, 4.001) + mod(gl_FragCoord.y + 2.0, 4.0) ) > 6.00 ) {\",\"\t\t\tgl_FragColor = vec4( uLineColor1, 1.0 );\",\"\t\t}\",\"\t}\",\"}\"].join(\"\\n\")};const TriangleBlurShader={uniforms:{texture:{value:null},delta:{value:/*@__PURE__*/new Vector2(1,1)}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"#include \",\"#define ITERATIONS 10.0\",\"uniform sampler2D texture;\",\"uniform vec2 delta;\",\"varying vec2 vUv;\",\"void main() {\",\"\tvec4 color = vec4( 0.0 );\",\"\tfloat total = 0.0;\",// randomize the lookup values to hide the fixed number of samples\n\"\tfloat offset = rand( vUv );\",\"\tfor ( float t = -ITERATIONS; t <= ITERATIONS; t ++ ) {\",\"\t\tfloat percent = ( t + offset - 0.5 ) / ITERATIONS;\",\"\t\tfloat weight = 1.0 - abs( percent );\",\"\t\tcolor += texture2D( texture, vUv + delta * percent ) * weight;\",\"\t\ttotal += weight;\",\"\t}\",\"\tgl_FragColor = color / total;\",\"}\"].join(\"\\n\")};const VerticalBlurShader={uniforms:{tDiffuse:{value:null},v:{value:1/512}},vertexShader:/* glsl */`\n varying vec2 vUv;\n\n void main() {\n\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n }\n `,fragmentShader:/* glsl */`\n\n uniform sampler2D tDiffuse;\n uniform float v;\n\n varying vec2 vUv;\n\n void main() {\n\n vec4 sum = vec4( 0.0 );\n\n sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 4.0 * v ) ) * 0.051;\n sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 3.0 * v ) ) * 0.0918;\n sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 2.0 * v ) ) * 0.12245;\n sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 1.0 * v ) ) * 0.1531;\n sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633;\n sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 1.0 * v ) ) * 0.1531;\n sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 2.0 * v ) ) * 0.12245;\n sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 3.0 * v ) ) * 0.0918;\n sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 4.0 * v ) ) * 0.051;\n\n gl_FragColor = sum;\n\n }\n `};const VerticalTiltShiftShader={uniforms:{tDiffuse:{value:null},v:{value:1/512},r:{value:0.35}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform sampler2D tDiffuse;\",\"uniform float v;\",\"uniform float r;\",\"varying vec2 vUv;\",\"void main() {\",\"\tvec4 sum = vec4( 0.0 );\",\"\tfloat vv = v * abs( r - vUv.y );\",\"\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 4.0 * vv ) ) * 0.051;\",\"\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 3.0 * vv ) ) * 0.0918;\",\"\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 2.0 * vv ) ) * 0.12245;\",\"\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 1.0 * vv ) ) * 0.1531;\",\"\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633;\",\"\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 1.0 * vv ) ) * 0.1531;\",\"\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 2.0 * vv ) ) * 0.12245;\",\"\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 3.0 * vv ) ) * 0.0918;\",\"\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 4.0 * vv ) ) * 0.051;\",\"\tgl_FragColor = sum;\",\"}\"].join(\"\\n\")};const VignetteShader={uniforms:{tDiffuse:{value:null},offset:{value:1},darkness:{value:1}},vertexShader:/*@__PURE__*/[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = uv;\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform float offset;\",\"uniform float darkness;\",\"uniform sampler2D tDiffuse;\",\"varying vec2 vUv;\",\"void main() {\",// Eskil's vignette\n\"\tvec4 texel = texture2D( tDiffuse, vUv );\",\"\tvec2 uv = ( vUv - vec2( 0.5 ) ) * vec2( offset );\",\"\tgl_FragColor = vec4( mix( texel.rgb, vec3( 1.0 - darkness ), dot( uv, uv ) ), texel.a );\",/*\n \t\t// alternative version from glfx.js\n \t\t// this one makes more \"dusty\" look (as opposed to \"burned\")\n \n \t\t\"\tvec4 color = texture2D( tDiffuse, vUv );\",\n \t\t\"\tfloat dist = distance( vUv, vec2( 0.5 ) );\",\n \t\t\"\tcolor.rgb *= smoothstep( 0.8, offset * 0.799, dist *( darkness + offset ) );\",\n \t\t\"\tgl_FragColor = color;\",\n \t\t*/\"}\"].join(\"\\n\")};const VolumeRenderShader1={uniforms:{u_size:{value:/*@__PURE__*/new Vector3(1,1,1)},u_renderstyle:{value:0},u_renderthreshold:{value:0.5},u_clim:{value:/*@__PURE__*/new Vector2(1,1)},u_data:{value:null},u_cmdata:{value:null}},vertexShader:/*@__PURE__*/[\"\t\tvarying vec4 v_nearpos;\",\"\t\tvarying vec4 v_farpos;\",\"\t\tvarying vec3 v_position;\",\"\t\tvoid main() {\",// Prepare transforms to map to \"camera view\". See also:\n// https://threejs.org/docs/#api/renderers/webgl/WebGLProgram\n\"\t\t\t\tmat4 viewtransformf = modelViewMatrix;\",\"\t\t\t\tmat4 viewtransformi = inverse(modelViewMatrix);\",// Project local vertex coordinate to camera position. Then do a step\n// backward (in cam coords) to the near clipping plane, and project back. Do\n// the same for the far clipping plane. This gives us all the information we\n// need to calculate the ray and truncate it to the viewing cone.\n\"\t\t\t\tvec4 position4 = vec4(position, 1.0);\",\"\t\t\t\tvec4 pos_in_cam = viewtransformf * position4;\",// Intersection of ray and near clipping plane (z = -1 in clip coords)\n\"\t\t\t\tpos_in_cam.z = -pos_in_cam.w;\",\"\t\t\t\tv_nearpos = viewtransformi * pos_in_cam;\",// Intersection of ray and far clipping plane (z = +1 in clip coords)\n\"\t\t\t\tpos_in_cam.z = pos_in_cam.w;\",\"\t\t\t\tv_farpos = viewtransformi * pos_in_cam;\",// Set varyings and output pos\n\"\t\t\t\tv_position = position;\",\"\t\t\t\tgl_Position = projectionMatrix * viewMatrix * modelMatrix * position4;\",\"\t\t}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"\t\tprecision highp float;\",\"\t\tprecision mediump sampler3D;\",\"\t\tuniform vec3 u_size;\",\"\t\tuniform int u_renderstyle;\",\"\t\tuniform float u_renderthreshold;\",\"\t\tuniform vec2 u_clim;\",\"\t\tuniform sampler3D u_data;\",\"\t\tuniform sampler2D u_cmdata;\",\"\t\tvarying vec3 v_position;\",\"\t\tvarying vec4 v_nearpos;\",\"\t\tvarying vec4 v_farpos;\",// The maximum distance through our rendering volume is sqrt(3).\n\"\t\tconst int MAX_STEPS = 887;\t// 887 for 512^3, 1774 for 1024^3\",\"\t\tconst int REFINEMENT_STEPS = 4;\",\"\t\tconst float relative_step_size = 1.0;\",\"\t\tconst vec4 ambient_color = vec4(0.2, 0.4, 0.2, 1.0);\",\"\t\tconst vec4 diffuse_color = vec4(0.8, 0.2, 0.2, 1.0);\",\"\t\tconst vec4 specular_color = vec4(1.0, 1.0, 1.0, 1.0);\",\"\t\tconst float shininess = 40.0;\",\"\t\tvoid cast_mip(vec3 start_loc, vec3 step, int nsteps, vec3 view_ray);\",\"\t\tvoid cast_iso(vec3 start_loc, vec3 step, int nsteps, vec3 view_ray);\",\"\t\tfloat sample1(vec3 texcoords);\",\"\t\tvec4 apply_colormap(float val);\",\"\t\tvec4 add_lighting(float val, vec3 loc, vec3 step, vec3 view_ray);\",\"\t\tvoid main() {\",// Normalize clipping plane info\n\"\t\t\t\tvec3 farpos = v_farpos.xyz / v_farpos.w;\",\"\t\t\t\tvec3 nearpos = v_nearpos.xyz / v_nearpos.w;\",// Calculate unit vector pointing in the view direction through this fragment.\n\"\t\t\t\tvec3 view_ray = normalize(nearpos.xyz - farpos.xyz);\",// Compute the (negative) distance to the front surface or near clipping plane.\n// v_position is the back face of the cuboid, so the initial distance calculated in the dot\n// product below is the distance from near clip plane to the back of the cuboid\n\"\t\t\t\tfloat distance = dot(nearpos - v_position, view_ray);\",\"\t\t\t\tdistance = max(distance, min((-0.5 - v_position.x) / view_ray.x,\",\"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(u_size.x - 0.5 - v_position.x) / view_ray.x));\",\"\t\t\t\tdistance = max(distance, min((-0.5 - v_position.y) / view_ray.y,\",\"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(u_size.y - 0.5 - v_position.y) / view_ray.y));\",\"\t\t\t\tdistance = max(distance, min((-0.5 - v_position.z) / view_ray.z,\",\"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(u_size.z - 0.5 - v_position.z) / view_ray.z));\",// Now we have the starting position on the front surface\n\"\t\t\t\tvec3 front = v_position + view_ray * distance;\",// Decide how many steps to take\n\"\t\t\t\tint nsteps = int(-distance / relative_step_size + 0.5);\",\"\t\t\t\tif ( nsteps < 1 )\",\"\t\t\t\t\t\tdiscard;\",// Get starting location and step vector in texture coordinates\n\"\t\t\t\tvec3 step = ((v_position - front) / u_size) / float(nsteps);\",\"\t\t\t\tvec3 start_loc = front / u_size;\",// For testing: show the number of steps. This helps to establish\n// whether the rays are correctly oriented\n//'gl_FragColor = vec4(0.0, float(nsteps) / 1.0 / u_size.x, 1.0, 1.0);',\n//'return;',\n\"\t\t\t\tif (u_renderstyle == 0)\",\"\t\t\t\t\t\tcast_mip(start_loc, step, nsteps, view_ray);\",\"\t\t\t\telse if (u_renderstyle == 1)\",\"\t\t\t\t\t\tcast_iso(start_loc, step, nsteps, view_ray);\",\"\t\t\t\tif (gl_FragColor.a < 0.05)\",\"\t\t\t\t\t\tdiscard;\",\"\t\t}\",\"\t\tfloat sample1(vec3 texcoords) {\",\"\t\t\t\t/* Sample float value from a 3D texture. Assumes intensity data. */\",\"\t\t\t\treturn texture(u_data, texcoords.xyz).r;\",\"\t\t}\",\"\t\tvec4 apply_colormap(float val) {\",\"\t\t\t\tval = (val - u_clim[0]) / (u_clim[1] - u_clim[0]);\",\"\t\t\t\treturn texture2D(u_cmdata, vec2(val, 0.5));\",\"\t\t}\",\"\t\tvoid cast_mip(vec3 start_loc, vec3 step, int nsteps, vec3 view_ray) {\",\"\t\t\t\tfloat max_val = -1e6;\",\"\t\t\t\tint max_i = 100;\",\"\t\t\t\tvec3 loc = start_loc;\",// Enter the raycasting loop. In WebGL 1 the loop index cannot be compared with\n// non-constant expression. So we use a hard-coded max, and an additional condition\n// inside the loop.\n\"\t\t\t\tfor (int iter=0; iter= nsteps)\",\"\t\t\t\t\t\t\t\tbreak;\",// Sample from the 3D texture\n\"\t\t\t\t\t\tfloat val = sample1(loc);\",// Apply MIP operation\n\"\t\t\t\t\t\tif (val > max_val) {\",\"\t\t\t\t\t\t\t\tmax_val = val;\",\"\t\t\t\t\t\t\t\tmax_i = iter;\",\"\t\t\t\t\t\t}\",// Advance location deeper into the volume\n\"\t\t\t\t\t\tloc += step;\",\"\t\t\t\t}\",// Refine location, gives crispier images\n\"\t\t\t\tvec3 iloc = start_loc + step * (float(max_i) - 0.5);\",\"\t\t\t\tvec3 istep = step / float(REFINEMENT_STEPS);\",\"\t\t\t\tfor (int i=0; i= nsteps)\",\"\t\t\t\t\t\t\t\tbreak;\",// Sample from the 3D texture\n\"\t\t\t\t\t\tfloat val = sample1(loc);\",\"\t\t\t\t\t\tif (val > low_threshold) {\",// Take the last interval in smaller steps\n\"\t\t\t\t\t\t\t\tvec3 iloc = loc - 0.5 * step;\",\"\t\t\t\t\t\t\t\tvec3 istep = step / float(REFINEMENT_STEPS);\",\"\t\t\t\t\t\t\t\tfor (int i=0; i u_renderthreshold) {\",\"\t\t\t\t\t\t\t\t\t\t\t\tgl_FragColor = add_lighting(val, iloc, dstep, view_ray);\",\"\t\t\t\t\t\t\t\t\t\t\t\treturn;\",\"\t\t\t\t\t\t\t\t\t\t}\",\"\t\t\t\t\t\t\t\t\t\tiloc += istep;\",\"\t\t\t\t\t\t\t\t}\",\"\t\t\t\t\t\t}\",// Advance location deeper into the volume\n\"\t\t\t\t\t\tloc += step;\",\"\t\t\t\t}\",\"\t\t}\",\"\t\tvec4 add_lighting(float val, vec3 loc, vec3 step, vec3 view_ray)\",\"\t\t{\",// Calculate color by incorporating lighting\n// View direction\n\"\t\t\t\tvec3 V = normalize(view_ray);\",// calculate normal vector from gradient\n\"\t\t\t\tvec3 N;\",\"\t\t\t\tfloat val1, val2;\",\"\t\t\t\tval1 = sample1(loc + vec3(-step[0], 0.0, 0.0));\",\"\t\t\t\tval2 = sample1(loc + vec3(+step[0], 0.0, 0.0));\",\"\t\t\t\tN[0] = val1 - val2;\",\"\t\t\t\tval = max(max(val1, val2), val);\",\"\t\t\t\tval1 = sample1(loc + vec3(0.0, -step[1], 0.0));\",\"\t\t\t\tval2 = sample1(loc + vec3(0.0, +step[1], 0.0));\",\"\t\t\t\tN[1] = val1 - val2;\",\"\t\t\t\tval = max(max(val1, val2), val);\",\"\t\t\t\tval1 = sample1(loc + vec3(0.0, 0.0, -step[2]));\",\"\t\t\t\tval2 = sample1(loc + vec3(0.0, 0.0, +step[2]));\",\"\t\t\t\tN[2] = val1 - val2;\",\"\t\t\t\tval = max(max(val1, val2), val);\",\"\t\t\t\tfloat gm = length(N); // gradient magnitude\",\"\t\t\t\tN = normalize(N);\",// Flip normal so it points towards viewer\n\"\t\t\t\tfloat Nselect = float(dot(N, V) > 0.0);\",\"\t\t\t\tN = (2.0 * Nselect - 1.0) * N;\t// ==\tNselect * N - (1.0-Nselect)*N;\",// Init colors\n\"\t\t\t\tvec4 ambient_color = vec4(0.0, 0.0, 0.0, 0.0);\",\"\t\t\t\tvec4 diffuse_color = vec4(0.0, 0.0, 0.0, 0.0);\",\"\t\t\t\tvec4 specular_color = vec4(0.0, 0.0, 0.0, 0.0);\",// note: could allow multiple lights\n\"\t\t\t\tfor (int i=0; i<1; i++)\",\"\t\t\t\t{\",// Get light direction (make sure to prevent zero devision)\n\"\t\t\t\t\t\tvec3 L = normalize(view_ray);\t//lightDirs[i];\",\"\t\t\t\t\t\tfloat lightEnabled = float( length(L) > 0.0 );\",\"\t\t\t\t\t\tL = normalize(L + (1.0 - lightEnabled));\",// Calculate lighting properties\n\"\t\t\t\t\t\tfloat lambertTerm = clamp(dot(N, L), 0.0, 1.0);\",\"\t\t\t\t\t\tvec3 H = normalize(L+V); // Halfway vector\",\"\t\t\t\t\t\tfloat specularTerm = pow(max(dot(H, N), 0.0), shininess);\",// Calculate mask\n\"\t\t\t\t\t\tfloat mask1 = lightEnabled;\",// Calculate colors\n\"\t\t\t\t\t\tambient_color +=\tmask1 * ambient_color;\t// * gl_LightSource[i].ambient;\",\"\t\t\t\t\t\tdiffuse_color +=\tmask1 * lambertTerm;\",\"\t\t\t\t\t\tspecular_color += mask1 * specularTerm * specular_color;\",\"\t\t\t\t}\",// Calculate final color by componing different components\n\"\t\t\t\tvec4 final_color;\",\"\t\t\t\tvec4 color = apply_colormap(val);\",\"\t\t\t\tfinal_color = color * (ambient_color + diffuse_color) + specular_color;\",\"\t\t\t\tfinal_color.a = color.a;\",\"\t\t\t\treturn final_color;\",\"\t\t}\"].join(\"\\n\")};const WaterRefractionShader={uniforms:{color:{value:null},time:{value:0},tDiffuse:{value:null},tDudv:{value:null},textureMatrix:{value:null}},vertexShader:/*@__PURE__*/[\"uniform mat4 textureMatrix;\",\"varying vec2 vUv;\",\"varying vec4 vUvRefraction;\",\"void main() {\",\"\tvUv = uv;\",\"\tvUvRefraction = textureMatrix * vec4( position, 1.0 );\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:/*@__PURE__*/[\"uniform vec3 color;\",\"uniform float time;\",\"uniform sampler2D tDiffuse;\",\"uniform sampler2D tDudv;\",\"varying vec2 vUv;\",\"varying vec4 vUvRefraction;\",\"float blendOverlay( float base, float blend ) {\",\"\treturn( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );\",\"}\",\"vec3 blendOverlay( vec3 base, vec3 blend ) {\",\"\treturn vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ),blendOverlay( base.b, blend.b ) );\",\"}\",\"void main() {\",\" float waveStrength = 0.1;\",\" float waveSpeed = 0.03;\",// simple distortion (ripple) via dudv map (see https://www.youtube.com/watch?v=6B7IF6GOu7s)\n\"\tvec2 distortedUv = texture2D( tDudv, vec2( vUv.x + time * waveSpeed, vUv.y ) ).rg * waveStrength;\",\"\tdistortedUv = vUv.xy + vec2( distortedUv.x, distortedUv.y + time * waveSpeed );\",\"\tvec2 distortion = ( texture2D( tDudv, distortedUv ).rg * 2.0 - 1.0 ) * waveStrength;\",// new uv coords\n\" vec4 uv = vec4( vUvRefraction );\",\" uv.xy += distortion;\",\"\tvec4 base = texture2DProj( tDiffuse, uv );\",\"\tgl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );\",\"}\"].join(\"\\n\")};class HTMLMesh extends Mesh{constructor(dom){const texture=new HTMLTexture(dom);const geometry2=new PlaneGeometry(texture.image.width*1e-3,texture.image.height*1e-3);const material2=new MeshBasicMaterial({map:texture,toneMapped:false,transparent:true});super(geometry2,material2);function onEvent(event){material2.map.dispatchDOMEvent(event);}this.addEventListener(\"mousedown\",onEvent);this.addEventListener(\"mousemove\",onEvent);this.addEventListener(\"mouseup\",onEvent);this.addEventListener(\"click\",onEvent);this.dispose=function(){geometry2.dispose();material2.dispose();material2.map.dispose();canvases.delete(dom);this.removeEventListener(\"mousedown\",onEvent);this.removeEventListener(\"mousemove\",onEvent);this.removeEventListener(\"mouseup\",onEvent);this.removeEventListener(\"click\",onEvent);};}}class HTMLTexture extends CanvasTexture{constructor(dom){super(html2canvas(dom));this.dom=dom;this.anisotropy=16;if(\"colorSpace\"in this)this.colorSpace=\"srgb\";else this.encoding=3001;this.minFilter=LinearFilter;this.magFilter=LinearFilter;const observer=new MutationObserver(()=>{if(!this.scheduleUpdate){this.scheduleUpdate=setTimeout(()=>this.update(),16);}});const config={attributes:true,childList:true,subtree:true,characterData:true};observer.observe(dom,config);this.observer=observer;}dispatchDOMEvent(event){if(event.data){htmlevent(this.dom,event.type,event.data.x,event.data.y);}}update(){this.image=html2canvas(this.dom);this.needsUpdate=true;this.scheduleUpdate=null;}dispose(){if(this.observer){this.observer.disconnect();}this.scheduleUpdate=clearTimeout(this.scheduleUpdate);super.dispose();}}const canvases=/*@__PURE__*/ /* @__PURE__ */new WeakMap();function html2canvas(element){const range=document.createRange();const color=new Color();function Clipper(context2){const clips=[];let isClipping=false;function doClip(){if(isClipping){isClipping=false;context2.restore();}if(clips.length===0)return;let minX=-Infinity,minY=-Infinity;let maxX=Infinity,maxY=Infinity;for(let i2=0;i2parseFloat(element2[property]));const position=(value-min)/(max-min)*(width-height);buildRectPath(x,y+height/4,width,height/2,height/4);context.fillStyle=accentTextColor;context.strokeStyle=accentColor;context.lineWidth=1;context.fill();context.stroke();buildRectPath(x,y+height/4,position+height/2,height/2,height/4);context.fillStyle=accentColor;context.fill();buildRectPath(x+position,y,height,height,height/2);context.fillStyle=accentColor;context.fill();}if(element2.type===\"color\"||element2.type===\"text\"||element2.type===\"number\"){clipper.add({x,y,width,height});drawText(style,x+parseInt(style.paddingLeft),y+parseInt(style.paddingTop),element2.value);clipper.remove();}}}const isClipping=style.overflow===\"auto\"||style.overflow===\"hidden\";if(isClipping)clipper.add({x,y,width,height});for(let i2=0;i2rect2.left&&xrect2.top&&yparseFloat(element2[property]));const width=rect2.width;const offsetX=x-rect2.x;const proportion=offsetX/width;element2.value=min+(max-min)*proportion;element2.dispatchEvent(new InputEvent(\"input\",{bubbles:true}));}}for(let i2=0;i20){const intersection=intersects[0];const object=intersection.object;const uv=intersection.uv;_event.type=event.type;_event.data.set(uv.x,1-uv.y);object.dispatchEvent(_event);}}element.addEventListener(\"pointerdown\",onPointerEvent);element.addEventListener(\"pointerup\",onPointerEvent);element.addEventListener(\"pointermove\",onPointerEvent);element.addEventListener(\"mousedown\",onPointerEvent);element.addEventListener(\"mouseup\",onPointerEvent);element.addEventListener(\"mousemove\",onPointerEvent);element.addEventListener(\"click\",onPointerEvent);const events={move:\"mousemove\",select:\"click\",selectstart:\"mousedown\",selectend:\"mouseup\"};function onXRControllerEvent(event){const controller=event.target;tempMatrix.identity().extractRotation(controller.matrixWorld);raycaster.ray.origin.setFromMatrixPosition(controller.matrixWorld);raycaster.ray.direction.set(0,0,-1).applyMatrix4(tempMatrix);const intersections=raycaster.intersectObjects(scope.children,false);if(intersections.length>0){const intersection=intersections[0];const object=intersection.object;const uv=intersection.uv;_event.type=events[event.type];_event.data.set(uv.x,1-uv.y);object.dispatchEvent(_event);}}const controller1=renderer.xr.getController(0);controller1.addEventListener(\"move\",onXRControllerEvent);controller1.addEventListener(\"select\",onXRControllerEvent);controller1.addEventListener(\"selectstart\",onXRControllerEvent);controller1.addEventListener(\"selectend\",onXRControllerEvent);const controller2=renderer.xr.getController(1);controller2.addEventListener(\"move\",onXRControllerEvent);controller2.addEventListener(\"select\",onXRControllerEvent);controller2.addEventListener(\"selectstart\",onXRControllerEvent);controller2.addEventListener(\"selectend\",onXRControllerEvent);}}class SelectionHelper{constructor(selectionBox,renderer,cssClassName){this.element=document.createElement(\"div\");this.element.classList.add(cssClassName);this.element.style.pointerEvents=\"none\";this.renderer=renderer;this.startPoint=new Vector2();this.pointTopLeft=new Vector2();this.pointBottomRight=new Vector2();this.isDown=false;this.renderer.domElement.addEventListener(\"pointerdown\",event=>{this.isDown=true;this.onSelectStart(event);});this.renderer.domElement.addEventListener(\"pointermove\",event=>{if(this.isDown){this.onSelectMove(event);}});this.renderer.domElement.addEventListener(\"pointerup\",event=>{this.isDown=false;this.onSelectOver(event);});}onSelectStart(event){this.renderer.domElement.parentElement.appendChild(this.element);this.element.style.left=`${event.clientX}px`;this.element.style.top=`${event.clientY}px`;this.element.style.width=\"0px\";this.element.style.height=\"0px\";this.startPoint.x=event.clientX;this.startPoint.y=event.clientY;}onSelectMove(event){this.pointBottomRight.x=Math.max(this.startPoint.x,event.clientX);this.pointBottomRight.y=Math.max(this.startPoint.y,event.clientY);this.pointTopLeft.x=Math.min(this.startPoint.x,event.clientX);this.pointTopLeft.y=Math.min(this.startPoint.y,event.clientY);this.element.style.left=`${this.pointTopLeft.x}px`;this.element.style.top=`${this.pointTopLeft.y}px`;this.element.style.width=`${this.pointBottomRight.x-this.pointTopLeft.x}px`;this.element.style.height=`${this.pointBottomRight.y-this.pointTopLeft.y}px`;}onSelectOver(){this.element.parentElement.removeChild(this.element);}}const frustum=/*@__PURE__*/new Frustum();const center=/*@__PURE__*/new Vector3();const tmpPoint=/*@__PURE__*/new Vector3();const vecNear=/*@__PURE__*/new Vector3();const vecTopLeft=/*@__PURE__*/new Vector3();const vecTopRight=/*@__PURE__*/new Vector3();const vecDownRight=/*@__PURE__*/new Vector3();const vecDownLeft=/*@__PURE__*/new Vector3();const vecFarTopLeft=/*@__PURE__*/new Vector3();const vecFarTopRight=/*@__PURE__*/new Vector3();const vecFarDownRight=/*@__PURE__*/new Vector3();const vecFarDownLeft=/*@__PURE__*/new Vector3();const vectemp1=/*@__PURE__*/new Vector3();const vectemp2=/*@__PURE__*/new Vector3();const vectemp3=/*@__PURE__*/new Vector3();class SelectionBox{constructor(camera,scene,deep){this.camera=camera;this.scene=scene;this.startPoint=new Vector3();this.endPoint=new Vector3();this.collection=[];this.deep=deep||Number.MAX_VALUE;}select(startPoint,endPoint){this.startPoint=startPoint||this.startPoint;this.endPoint=endPoint||this.endPoint;this.collection=[];this.updateFrustum(this.startPoint,this.endPoint);this.searchChildInFrustum(frustum,this.scene);return this.collection;}updateFrustum(startPoint,endPoint){startPoint=startPoint||this.startPoint;endPoint=endPoint||this.endPoint;if(startPoint.x===endPoint.x){endPoint.x+=Number.EPSILON;}if(startPoint.y===endPoint.y){endPoint.y+=Number.EPSILON;}this.camera.updateProjectionMatrix();this.camera.updateMatrixWorld();if(this.camera.isPerspectiveCamera){tmpPoint.copy(startPoint);tmpPoint.x=Math.min(startPoint.x,endPoint.x);tmpPoint.y=Math.max(startPoint.y,endPoint.y);endPoint.x=Math.max(startPoint.x,endPoint.x);endPoint.y=Math.min(startPoint.y,endPoint.y);vecNear.setFromMatrixPosition(this.camera.matrixWorld);vecTopLeft.copy(tmpPoint);vecTopRight.set(endPoint.x,tmpPoint.y,0);vecDownRight.copy(endPoint);vecDownLeft.set(tmpPoint.x,endPoint.y,0);vecTopLeft.unproject(this.camera);vecTopRight.unproject(this.camera);vecDownRight.unproject(this.camera);vecDownLeft.unproject(this.camera);vectemp1.copy(vecTopLeft).sub(vecNear);vectemp2.copy(vecTopRight).sub(vecNear);vectemp3.copy(vecDownRight).sub(vecNear);vectemp1.normalize();vectemp2.normalize();vectemp3.normalize();vectemp1.multiplyScalar(this.deep);vectemp2.multiplyScalar(this.deep);vectemp3.multiplyScalar(this.deep);vectemp1.add(vecNear);vectemp2.add(vecNear);vectemp3.add(vecNear);var planes=frustum.planes;planes[0].setFromCoplanarPoints(vecNear,vecTopLeft,vecTopRight);planes[1].setFromCoplanarPoints(vecNear,vecTopRight,vecDownRight);planes[2].setFromCoplanarPoints(vecDownRight,vecDownLeft,vecNear);planes[3].setFromCoplanarPoints(vecDownLeft,vecTopLeft,vecNear);planes[4].setFromCoplanarPoints(vecTopRight,vecDownRight,vecDownLeft);planes[5].setFromCoplanarPoints(vectemp3,vectemp2,vectemp1);planes[5].normal.multiplyScalar(-1);}else if(this.camera.isOrthographicCamera){const left=Math.min(startPoint.x,endPoint.x);const top=Math.max(startPoint.y,endPoint.y);const right=Math.max(startPoint.x,endPoint.x);const down=Math.min(startPoint.y,endPoint.y);vecTopLeft.set(left,top,-1);vecTopRight.set(right,top,-1);vecDownRight.set(right,down,-1);vecDownLeft.set(left,down,-1);vecFarTopLeft.set(left,top,1);vecFarTopRight.set(right,top,1);vecFarDownRight.set(right,down,1);vecFarDownLeft.set(left,down,1);vecTopLeft.unproject(this.camera);vecTopRight.unproject(this.camera);vecDownRight.unproject(this.camera);vecDownLeft.unproject(this.camera);vecFarTopLeft.unproject(this.camera);vecFarTopRight.unproject(this.camera);vecFarDownRight.unproject(this.camera);vecFarDownLeft.unproject(this.camera);var planes=frustum.planes;planes[0].setFromCoplanarPoints(vecTopLeft,vecFarTopLeft,vecFarTopRight);planes[1].setFromCoplanarPoints(vecTopRight,vecFarTopRight,vecFarDownRight);planes[2].setFromCoplanarPoints(vecFarDownRight,vecFarDownLeft,vecDownLeft);planes[3].setFromCoplanarPoints(vecFarDownLeft,vecFarTopLeft,vecTopLeft);planes[4].setFromCoplanarPoints(vecTopRight,vecDownRight,vecDownLeft);planes[5].setFromCoplanarPoints(vecFarDownRight,vecFarTopRight,vecFarTopLeft);planes[5].normal.multiplyScalar(-1);}else{console.error(\"THREE.SelectionBox: Unsupported camera type.\");}}searchChildInFrustum(frustum2,object){if(object.isMesh||object.isLine||object.isPoints){if(object.material!==void 0){if(object.geometry.boundingSphere===null)object.geometry.computeBoundingSphere();center.copy(object.geometry.boundingSphere.center);center.applyMatrix4(object.matrixWorld);if(frustum2.containsPoint(center)){this.collection.push(object);}}}if(object.children.length>0){for(let x=0;x0){meshes.push(mesh);meshMap.set(mesh,body);}}function handleInstancedMesh(mesh,mass,shape){const array=mesh.instanceMatrix.array;const bodies=[];for(let i2=0;i20){mesh.instanceMatrix.setUsage(35048);meshes.push(mesh);meshMap.set(mesh,bodies);}}function setMeshPosition(mesh,position,index=0){if(mesh.isInstancedMesh){const bodies=meshMap.get(mesh);const body=bodies[index];body.setAngularVelocity(new AmmoLib.btVector3(0,0,0));body.setLinearVelocity(new AmmoLib.btVector3(0,0,0));worldTransform.setIdentity();worldTransform.setOrigin(new AmmoLib.btVector3(position.x,position.y,position.z));body.setWorldTransform(worldTransform);}else if(mesh.isMesh){const body=meshMap.get(mesh);body.setAngularVelocity(new AmmoLib.btVector3(0,0,0));body.setLinearVelocity(new AmmoLib.btVector3(0,0,0));worldTransform.setIdentity();worldTransform.setOrigin(new AmmoLib.btVector3(position.x,position.y,position.z));body.setWorldTransform(worldTransform);}}let lastTime=0;function step(){const time=performance.now();if(lastTime>0){const delta=(time-lastTime)/1e3;world2.stepSimulation(delta,10);}lastTime=time;for(let i2=0,l=meshes.length;i2 1.00 ) {\",\"\t\tgl_FragColor = texture2D( mapLeft, uv );\",\"\t} else {\",\"\t\tgl_FragColor = texture2D( mapRight, uv );\",\"\t}\",\"\t#include \",`\t#include <${parseInt(REVISION.replace(/\\D+/g,\"\"))>=154?\"colorspace_fragment\":\"encodings_fragment\"}>`,\"}\"].join(\"\\n\")});const mesh=new Mesh(new PlaneGeometry(2,2),_material);_scene.add(mesh);this.setSize=function(width,height){renderer.setSize(width,height);const pixelRatio=renderer.getPixelRatio();_renderTargetL.setSize(width*pixelRatio,height*pixelRatio);_renderTargetR.setSize(width*pixelRatio,height*pixelRatio);};this.render=function(scene,camera){if(scene.matrixWorldAutoUpdate===true)scene.updateMatrixWorld();if(camera.parent===null&&camera.matrixWorldAutoUpdate===true)camera.updateMatrixWorld();_stereo.update(camera);renderer.setRenderTarget(_renderTargetL);renderer.clear();renderer.render(scene,_stereo.cameraL);renderer.setRenderTarget(_renderTargetR);renderer.clear();renderer.render(scene,_stereo.cameraR);renderer.setRenderTarget(null);renderer.render(_scene,_camera);};}}class PeppersGhostEffect{constructor(renderer){const scope=this;scope.cameraDistance=15;scope.reflectFromAbove=false;let _halfWidth,_width,_height;const _cameraF=new PerspectiveCamera();const _cameraB=new PerspectiveCamera();const _cameraL=new PerspectiveCamera();const _cameraR=new PerspectiveCamera();const _position2=new Vector3();const _quaternion2=new Quaternion();const _scale2=new Vector3();renderer.autoClear=false;this.setSize=function(width,height){_halfWidth=width/2;if(width\",\"#include \",\"#include \",\"#include \",\"#include \",\"#include \",\"#include \",\"#include \",\"uniform float outlineThickness;\",\"vec4 calculateOutline( vec4 pos, vec3 normal, vec4 skinned ) {\",\"\tfloat thickness = outlineThickness;\",\"\tconst float ratio = 1.0;\",// TODO: support outline thickness ratio for each vertex\n\"\tvec4 pos2 = projectionMatrix * modelViewMatrix * vec4( skinned.xyz + normal, 1.0 );\",// NOTE: subtract pos2 from pos because BackSide objectNormal is negative\n\"\tvec4 norm = normalize( pos - pos2 );\",\"\treturn pos + norm * thickness * pos.w * ratio;\",\"}\",\"void main() {\",\"\t#include \",\"\t#include \",\"\t#include \",\"\t#include \",\"\t#include \",\"\t#include \",\"\t#include \",\"\t#include \",\"\t#include \",\"\t#include \",\"\tvec3 outlineNormal = - objectNormal;\",// the outline material is always rendered with BackSide\n\"\tgl_Position = calculateOutline( gl_Position, outlineNormal, vec4( transformed, 1.0 ) );\",\"\t#include \",\"\t#include \",\"\t#include \",\"}\"].join(\"\\n\");const fragmentShader=[\"#include \",\"#include \",\"#include \",\"#include \",\"uniform vec3 outlineColor;\",\"uniform float outlineAlpha;\",\"void main() {\",\"\t#include \",\"\t#include \",\"\tgl_FragColor = vec4( outlineColor, outlineAlpha );\",\"\t#include \",`\t#include <${parseInt(REVISION.replace(/\\D+/g,\"\"))>=154?\"colorspace_fragment\":\"encodings_fragment\"}>`,\"\t#include \",\"\t#include \",\"}\"].join(\"\\n\");function createMaterial(){return new ShaderMaterial({type:\"OutlineEffect\",uniforms:UniformsUtils.merge([UniformsLib[\"fog\"],UniformsLib[\"displacementmap\"],uniformsOutline]),vertexShader,fragmentShader,side:BackSide});}function getOutlineMaterialFromCache(originalMaterial){let data=cache[originalMaterial.uuid];if(data===void 0){data={material:createMaterial(),used:true,keepAlive:defaultKeepAlive,count:0};cache[originalMaterial.uuid]=data;}data.used=true;return data.material;}function getOutlineMaterial(originalMaterial){const outlineMaterial=getOutlineMaterialFromCache(originalMaterial);originalMaterials[outlineMaterial.uuid]=originalMaterial;updateOutlineMaterial(outlineMaterial,originalMaterial);return outlineMaterial;}function isCompatible(object){const geometry2=object.geometry;const hasNormals=geometry2!==void 0&&geometry2.attributes.normal!==void 0;return object.isMesh===true&&object.material!==void 0&&hasNormals===true;}function setOutlineMaterial(object){if(isCompatible(object)===false)return;if(Array.isArray(object.material)){for(let i2=0,il=object.material.length;i2removeThresholdCount){delete cache[key];}}else{cache[key].used=false;cache[key].count=0;}}}this.render=function(scene,camera){if(this.enabled===false){renderer.render(scene,camera);return;}const currentAutoClear=renderer.autoClear;renderer.autoClear=this.autoClear;renderer.render(scene,camera);renderer.autoClear=currentAutoClear;this.renderOutline(scene,camera);};this.renderOutline=function(scene,camera){const currentAutoClear=renderer.autoClear;const currentSceneAutoUpdate=scene.matrixWorldAutoUpdate;const currentSceneBackground=scene.background;const currentShadowMapEnabled=renderer.shadowMap.enabled;scene.matrixWorldAutoUpdate=false;scene.background=null;renderer.autoClear=false;renderer.shadowMap.enabled=false;scene.traverse(setOutlineMaterial);renderer.render(scene,camera);scene.traverse(restoreOriginalMaterial);cleanupCache();scene.matrixWorldAutoUpdate=currentSceneAutoUpdate;scene.background=currentSceneBackground;renderer.autoClear=currentAutoClear;renderer.shadowMap.enabled=currentShadowMapEnabled;};this.autoClear=renderer.autoClear;this.domElement=renderer.domElement;this.shadowMap=renderer.shadowMap;this.clear=function(color,depth,stencil){renderer.clear(color,depth,stencil);};this.getPixelRatio=function(){return renderer.getPixelRatio();};this.setPixelRatio=function(value){renderer.setPixelRatio(value);};this.getSize=function(target){return renderer.getSize(target);};this.setSize=function(width,height,updateStyle){renderer.setSize(width,height,updateStyle);};this.setViewport=function(x,y,width,height){renderer.setViewport(x,y,width,height);};this.setScissor=function(x,y,width,height){renderer.setScissor(x,y,width,height);};this.setScissorTest=function(boolean){renderer.setScissorTest(boolean);};this.setRenderTarget=function(renderTarget){renderer.setRenderTarget(renderTarget);};}}class AnaglyphEffect{constructor(renderer,width=512,height=512){this.colorMatrixLeft=new Matrix3().fromArray([0.4561,-0.0400822,-0.0152161,0.500484,-0.0378246,-0.0205971,0.176381,-0.0157589,-546856e-8]);this.colorMatrixRight=new Matrix3().fromArray([-0.0434706,0.378476,-0.0721527,-0.0879388,0.73364,-0.112961,-155529e-8,-0.0184503,1.2264]);const _camera=new OrthographicCamera(-1,1,1,-1,0,1);const _scene=new Scene();const _stereo=new StereoCamera();const _params={minFilter:LinearFilter,magFilter:NearestFilter,format:RGBAFormat};const _renderTargetL=new WebGLRenderTarget(width,height,_params);const _renderTargetR=new WebGLRenderTarget(width,height,_params);const _material=new ShaderMaterial({uniforms:{mapLeft:{value:_renderTargetL.texture},mapRight:{value:_renderTargetR.texture},colorMatrixLeft:{value:this.colorMatrixLeft},colorMatrixRight:{value:this.colorMatrixRight}},vertexShader:[\"varying vec2 vUv;\",\"void main() {\",\"\tvUv = vec2( uv.x, uv.y );\",\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\"}\"].join(\"\\n\"),fragmentShader:[\"uniform sampler2D mapLeft;\",\"uniform sampler2D mapRight;\",\"varying vec2 vUv;\",\"uniform mat3 colorMatrixLeft;\",\"uniform mat3 colorMatrixRight;\",\"void main() {\",\"\tvec2 uv = vUv;\",\"\tvec4 colorL = texture2D( mapLeft, uv );\",\"\tvec4 colorR = texture2D( mapRight, uv );\",\"\tvec3 color = clamp(\",\"\t\t\tcolorMatrixLeft * colorL.rgb +\",\"\t\t\tcolorMatrixRight * colorR.rgb, 0., 1. );\",\"\tgl_FragColor = vec4(\",\"\t\t\tcolor.r, color.g, color.b,\",\"\t\t\tmax( colorL.a, colorR.a ) );\",\"\t#include \",`\t#include <${parseInt(REVISION.replace(/\\D+/g,\"\"))>=154?\"colorspace_fragment\":\"encodings_fragment\"}>`,\"}\"].join(\"\\n\")});const _mesh2=new Mesh(new PlaneGeometry(2,2),_material);_scene.add(_mesh2);this.setSize=function(width2,height2){renderer.setSize(width2,height2);const pixelRatio=renderer.getPixelRatio();_renderTargetL.setSize(width2*pixelRatio,height2*pixelRatio);_renderTargetR.setSize(width2*pixelRatio,height2*pixelRatio);};this.render=function(scene,camera){const currentRenderTarget=renderer.getRenderTarget();if(scene.matrixWorldAutoUpdate===true)scene.updateMatrixWorld();if(camera.parent===null&&camera.matrixWorldAutoUpdate===true)camera.updateMatrixWorld();_stereo.update(camera);renderer.setRenderTarget(_renderTargetL);renderer.clear();renderer.render(scene,_stereo.cameraL);renderer.setRenderTarget(_renderTargetR);renderer.clear();renderer.render(scene,_stereo.cameraR);renderer.setRenderTarget(null);renderer.render(_scene,_camera);renderer.setRenderTarget(currentRenderTarget);};this.dispose=function(){_renderTargetL.dispose();_renderTargetR.dispose();_mesh2.geometry.dispose();_mesh2.material.dispose();};}}class AsciiEffect{constructor(renderer,charSet=\" .:-=+*#%@\",options={}){const fResolution=options[\"resolution\"]||0.15;const iScale=options[\"scale\"]||1;const bColor=options[\"color\"]||false;const bAlpha=options[\"alpha\"]||false;const bBlock=options[\"block\"]||false;const bInvert=options[\"invert\"]||false;const strResolution=options[\"strResolution\"]||\"low\";let width,height;const domElement=document.createElement(\"div\");domElement.style.cursor=\"default\";const oAscii=document.createElement(\"table\");domElement.appendChild(oAscii);let iWidth,iHeight;let oImg;this.setSize=function(w,h){width=w;height=h;renderer.setSize(w,h);initAsciiSize();};this.render=function(scene,camera){renderer.render(scene,camera);asciifyImage(oAscii);};this.domElement=domElement;function initAsciiSize(){iWidth=Math.floor(width*fResolution);iHeight=Math.floor(height*fResolution);oCanvas.width=iWidth;oCanvas.height=iHeight;oImg=renderer.domElement;if(oImg.style.backgroundColor){oAscii.rows[0].cells[0].style.backgroundColor=oImg.style.backgroundColor;oAscii.rows[0].cells[0].style.color=oImg.style.color;}oAscii.cellSpacing=0;oAscii.cellPadding=0;const oStyle=oAscii.style;oStyle.whiteSpace=\"pre\";oStyle.margin=\"0px\";oStyle.padding=\"0px\";oStyle.letterSpacing=fLetterSpacing+\"px\";oStyle.fontFamily=strFont;oStyle.fontSize=fFontSize+\"px\";oStyle.lineHeight=fLineHeight+\"px\";oStyle.textAlign=\"left\";oStyle.textDecoration=\"none\";}const aDefaultCharList=\" .,:;i1tfLCG08@\".split(\"\");const aDefaultColorCharList=\" CGO08@\".split(\"\");const strFont=\"courier new, monospace\";const oCanvasImg=renderer.domElement;const oCanvas=document.createElement(\"canvas\");if(!oCanvas.getContext){return;}const oCtx=oCanvas.getContext(\"2d\");if(!oCtx.getImageData){return;}let aCharList=bColor?aDefaultColorCharList:aDefaultCharList;if(charSet)aCharList=charSet;const fFontSize=2/fResolution*iScale;const fLineHeight=2/fResolution*iScale;let fLetterSpacing=0;if(strResolution==\"low\"){switch(iScale){case 1:fLetterSpacing=-1;break;case 2:case 3:fLetterSpacing=-2.1;break;case 4:fLetterSpacing=-3.1;break;case 5:fLetterSpacing=-4.15;break;}}if(strResolution==\"medium\"){switch(iScale){case 1:fLetterSpacing=0;break;case 2:fLetterSpacing=-1;break;case 3:fLetterSpacing=-1.04;break;case 4:case 5:fLetterSpacing=-2.1;break;}}if(strResolution==\"high\"){switch(iScale){case 1:case 2:fLetterSpacing=0;break;case 3:case 4:case 5:fLetterSpacing=-1;break;}}function asciifyImage(oAscii2){oCtx.clearRect(0,0,iWidth,iHeight);oCtx.drawImage(oCanvasImg,0,0,iWidth,iHeight);const oImgData=oCtx.getImageData(0,0,iWidth,iHeight).data;let strChars=\"\";for(let y=0;y\"+strThisChar+\"\";}else{strChars+=strThisChar;}}strChars+=\"
\";}oAscii2.innerHTML=`${strChars}`;}}}class StereoEffect{constructor(renderer){const _stereo=new StereoCamera();_stereo.aspect=0.5;const size2=new Vector2();this.setEyeSeparation=function(eyeSep){_stereo.eyeSep=eyeSep;};this.setSize=function(width,height){renderer.setSize(width,height);};this.render=function(scene,camera){if(scene.matrixWorldAutoUpdate===true)scene.updateMatrixWorld();if(camera.parent===null&&camera.matrixWorldAutoUpdate===true)camera.updateMatrixWorld();_stereo.update(camera);renderer.getSize(size2);if(renderer.autoClear)renderer.clear();renderer.setScissorTest(true);renderer.setScissor(0,0,size2.width/2,size2.height);renderer.setViewport(0,0,size2.width/2,size2.height);renderer.render(scene,_stereo.cameraL);renderer.setScissor(size2.width/2,0,size2.width/2,size2.height);renderer.setViewport(size2.width/2,0,size2.width/2,size2.height);renderer.render(scene,_stereo.cameraR);renderer.setScissorTest(false);};}}function findSpan(p,u,U){const n=U.length-p-1;if(u>=U[n]){return n-1;}if(u<=U[p]){return p;}let low=p;let high=n;let mid=Math.floor((low+high)/2);while(u=U[mid+1]){if(u=k){a2[s2][0]=a2[s1][0]/ndu[pk+1][rk];d=a2[s2][0]*ndu[rk][pk];}const j1=rk>=-1?1:-rk;const j2=r2-1<=pk?k-1:p-r2;for(let j3=j1;j3<=j2;++j3){a2[s2][j3]=(a2[s1][j3]-a2[s1][j3-1])/ndu[pk+1][rk+j3];d+=a2[s2][j3]*ndu[rk+j3][pk];}if(r2<=pk){a2[s2][k]=-a2[s1][k-1]/ndu[pk+1][r2];d+=a2[s2][k]*ndu[r2][pk];}ders[k][r2]=d;const j=s1;s1=s2;s2=j;}}let r=p;for(let k=1;k<=n;++k){for(let j=0;j<=p;++j){ders[k][j]*=r;}r*=p-k;}return ders;}function calcBSplineDerivatives(p,U,P,u,nd){const du=nd texture, model->geometry )\n// and details the connection type\nparseConnections(){const connectionMap=/* @__PURE__ */new Map();if(\"Connections\"in fbxTree){const rawConnections=fbxTree.Connections.connections;rawConnections.forEach(function(rawConnection){const fromID=rawConnection[0];const toID=rawConnection[1];const relationship=rawConnection[2];if(!connectionMap.has(fromID)){connectionMap.set(fromID,{parents:[],children:[]});}const parentRelationship={ID:toID,relationship};connectionMap.get(fromID).parents.push(parentRelationship);if(!connectionMap.has(toID)){connectionMap.set(toID,{parents:[],children:[]});}const childRelationship={ID:fromID,relationship};connectionMap.get(toID).children.push(childRelationship);});}return connectionMap;}// Parse FBXTree.Objects.Video for embedded image data\n// These images are connected to textures in FBXTree.Objects.Textures\n// via FBXTree.Connections.\nparseImages(){const images={};const blobs={};if(\"Video\"in fbxTree.Objects){const videoNodes=fbxTree.Objects.Video;for(const nodeID in videoNodes){const videoNode=videoNodes[nodeID];const id=parseInt(nodeID);images[id]=videoNode.RelativeFilename||videoNode.Filename;if(\"Content\"in videoNode){const arrayBufferContent=videoNode.Content instanceof ArrayBuffer&&videoNode.Content.byteLength>0;const base64Content=typeof videoNode.Content===\"string\"&&videoNode.Content!==\"\";if(arrayBufferContent||base64Content){const image=this.parseImage(videoNodes[nodeID]);blobs[videoNode.RelativeFilename||videoNode.Filename]=image;}}}}for(const id in images){const filename=images[id];if(blobs[filename]!==void 0)images[id]=blobs[filename];else images[id]=images[id].split(\"\\\\\").pop();}return images;}// Parse embedded image data in FBXTree.Video.Content\nparseImage(videoNode){const content=videoNode.Content;const fileName=videoNode.RelativeFilename||videoNode.Filename;const extension=fileName.slice(fileName.lastIndexOf(\".\")+1).toLowerCase();let type;switch(extension){case\"bmp\":type=\"image/bmp\";break;case\"jpg\":case\"jpeg\":type=\"image/jpeg\";break;case\"png\":type=\"image/png\";break;case\"tif\":type=\"image/tiff\";break;case\"tga\":if(this.manager.getHandler(\".tga\")===null){console.warn(\"FBXLoader: TGA loader not found, skipping \",fileName);}type=\"image/tga\";break;default:console.warn('FBXLoader: Image type \"'+extension+'\" is not supported.');return;}if(typeof content===\"string\"){return\"data:\"+type+\";base64,\"+content;}else{const array=new Uint8Array(content);return window.URL.createObjectURL(new Blob([array],{type}));}}// Parse nodes in FBXTree.Objects.Texture\n// These contain details such as UV scaling, cropping, rotation etc and are connected\n// to images in FBXTree.Objects.Video\nparseTextures(images){const textureMap=/* @__PURE__ */new Map();if(\"Texture\"in fbxTree.Objects){const textureNodes=fbxTree.Objects.Texture;for(const nodeID in textureNodes){const texture=this.parseTexture(textureNodes[nodeID],images);textureMap.set(parseInt(nodeID),texture);}}return textureMap;}// Parse individual node in FBXTree.Objects.Texture\nparseTexture(textureNode,images){const texture=this.loadTexture(textureNode,images);texture.ID=textureNode.id;texture.name=textureNode.attrName;const wrapModeU=textureNode.WrapModeU;const wrapModeV=textureNode.WrapModeV;const valueU=wrapModeU!==void 0?wrapModeU.value:0;const valueV=wrapModeV!==void 0?wrapModeV.value:0;texture.wrapS=valueU===0?RepeatWrapping:ClampToEdgeWrapping;texture.wrapT=valueV===0?RepeatWrapping:ClampToEdgeWrapping;if(\"Scaling\"in textureNode){const values=textureNode.Scaling.value;texture.repeat.x=values[0];texture.repeat.y=values[1];}return texture;}// load a texture specified as a blob or data URI, or via an external URL using TextureLoader\nloadTexture(textureNode,images){let fileName;const currentPath=this.textureLoader.path;const children=connections.get(textureNode.id).children;if(children!==void 0&&children.length>0&&images[children[0].ID]!==void 0){fileName=images[children[0].ID];if(fileName.indexOf(\"blob:\")===0||fileName.indexOf(\"data:\")===0){this.textureLoader.setPath(void 0);}}let texture;const extension=textureNode.FileName.slice(-3).toLowerCase();if(extension===\"tga\"){const loader=this.manager.getHandler(\".tga\");if(loader===null){console.warn(\"FBXLoader: TGA loader not found, creating placeholder texture for\",textureNode.RelativeFilename);texture=new Texture();}else{loader.setPath(this.textureLoader.path);texture=loader.load(fileName);}}else if(extension===\"psd\"){console.warn(\"FBXLoader: PSD textures are not supported, creating placeholder texture for\",textureNode.RelativeFilename);texture=new Texture();}else{texture=this.textureLoader.load(fileName);}this.textureLoader.setPath(currentPath);return texture;}// Parse nodes in FBXTree.Objects.Material\nparseMaterials(textureMap){const materialMap=/* @__PURE__ */new Map();if(\"Material\"in fbxTree.Objects){const materialNodes=fbxTree.Objects.Material;for(const nodeID in materialNodes){const material2=this.parseMaterial(materialNodes[nodeID],textureMap);if(material2!==null)materialMap.set(parseInt(nodeID),material2);}}return materialMap;}// Parse single node in FBXTree.Objects.Material\n// Materials are connected to texture maps in FBXTree.Objects.Textures\n// FBX format currently only supports Lambert and Phong shading models\nparseMaterial(materialNode,textureMap){const ID=materialNode.id;const name=materialNode.attrName;let type=materialNode.ShadingModel;if(typeof type===\"object\"){type=type.value;}if(!connections.has(ID))return null;const parameters=this.parseParameters(materialNode,textureMap,ID);let material2;switch(type.toLowerCase()){case\"phong\":material2=new MeshPhongMaterial();break;case\"lambert\":material2=new MeshLambertMaterial();break;default:console.warn('THREE.FBXLoader: unknown material type \"%s\". Defaulting to MeshPhongMaterial.',type);material2=new MeshPhongMaterial();break;}material2.setValues(parameters);material2.name=name;return material2;}// Parse FBX material and return parameters suitable for a three.js material\n// Also parse the texture map and return any textures associated with the material\nparseParameters(materialNode,textureMap,ID){const parameters={};if(materialNode.BumpFactor){parameters.bumpScale=materialNode.BumpFactor.value;}if(materialNode.Diffuse){parameters.color=new Color().fromArray(materialNode.Diffuse.value);}else if(materialNode.DiffuseColor&&(materialNode.DiffuseColor.type===\"Color\"||materialNode.DiffuseColor.type===\"ColorRGB\")){parameters.color=new Color().fromArray(materialNode.DiffuseColor.value);}if(materialNode.DisplacementFactor){parameters.displacementScale=materialNode.DisplacementFactor.value;}if(materialNode.Emissive){parameters.emissive=new Color().fromArray(materialNode.Emissive.value);}else if(materialNode.EmissiveColor&&(materialNode.EmissiveColor.type===\"Color\"||materialNode.EmissiveColor.type===\"ColorRGB\")){parameters.emissive=new Color().fromArray(materialNode.EmissiveColor.value);}if(materialNode.EmissiveFactor){parameters.emissiveIntensity=parseFloat(materialNode.EmissiveFactor.value);}if(materialNode.Opacity){parameters.opacity=parseFloat(materialNode.Opacity.value);}if(parameters.opacity<1){parameters.transparent=true;}if(materialNode.ReflectionFactor){parameters.reflectivity=materialNode.ReflectionFactor.value;}if(materialNode.Shininess){parameters.shininess=materialNode.Shininess.value;}if(materialNode.Specular){parameters.specular=new Color().fromArray(materialNode.Specular.value);}else if(materialNode.SpecularColor&&materialNode.SpecularColor.type===\"Color\"){parameters.specular=new Color().fromArray(materialNode.SpecularColor.value);}const scope=this;connections.get(ID).children.forEach(function(child){const type=child.relationship;switch(type){case\"Bump\":parameters.bumpMap=scope.getTexture(textureMap,child.ID);break;case\"Maya|TEX_ao_map\":parameters.aoMap=scope.getTexture(textureMap,child.ID);break;case\"DiffuseColor\":case\"Maya|TEX_color_map\":parameters.map=scope.getTexture(textureMap,child.ID);if(parameters.map!==void 0){if(\"colorSpace\"in parameters.map)parameters.map.colorSpace=\"srgb\";else parameters.map.encoding=3001;}break;case\"DisplacementColor\":parameters.displacementMap=scope.getTexture(textureMap,child.ID);break;case\"EmissiveColor\":parameters.emissiveMap=scope.getTexture(textureMap,child.ID);if(parameters.emissiveMap!==void 0){if(\"colorSpace\"in parameters.emissiveMap)parameters.emissiveMap.colorSpace=\"srgb\";else parameters.emissiveMap.encoding=3001;}break;case\"NormalMap\":case\"Maya|TEX_normal_map\":parameters.normalMap=scope.getTexture(textureMap,child.ID);break;case\"ReflectionColor\":parameters.envMap=scope.getTexture(textureMap,child.ID);if(parameters.envMap!==void 0){parameters.envMap.mapping=EquirectangularReflectionMapping;if(\"colorSpace\"in parameters.envMap)parameters.envMap.colorSpace=\"srgb\";else parameters.envMap.encoding=3001;}break;case\"SpecularColor\":parameters.specularMap=scope.getTexture(textureMap,child.ID);if(parameters.specularMap!==void 0){if(\"colorSpace\"in parameters.specularMap)parameters.specularMap.colorSpace=\"srgb\";else parameters.specularMap.encoding=3001;}break;case\"TransparentColor\":case\"TransparencyFactor\":parameters.alphaMap=scope.getTexture(textureMap,child.ID);parameters.transparent=true;break;case\"AmbientColor\":case\"ShininessExponent\":case\"SpecularFactor\":case\"VectorDisplacementColor\":default:console.warn(\"THREE.FBXLoader: %s map is not supported in three.js, skipping texture.\",type);break;}});return parameters;}// get a texture from the textureMap for use by a material.\ngetTexture(textureMap,id){if(\"LayeredTexture\"in fbxTree.Objects&&id in fbxTree.Objects.LayeredTexture){console.warn(\"THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer.\");id=connections.get(id).children[0].ID;}return textureMap.get(id);}// Parse nodes in FBXTree.Objects.Deformer\n// Deformer node can contain skinning or Vertex Cache animation data, however only skinning is supported here\n// Generates map of Skeleton-like objects for use later when generating and binding skeletons.\nparseDeformers(){const skeletons={};const morphTargets={};if(\"Deformer\"in fbxTree.Objects){const DeformerNodes=fbxTree.Objects.Deformer;for(const nodeID in DeformerNodes){const deformerNode=DeformerNodes[nodeID];const relationships=connections.get(parseInt(nodeID));if(deformerNode.attrType===\"Skin\"){const skeleton=this.parseSkeleton(relationships,DeformerNodes);skeleton.ID=nodeID;if(relationships.parents.length>1){console.warn(\"THREE.FBXLoader: skeleton attached to more than one geometry is not supported.\");}skeleton.geometryID=relationships.parents[0].ID;skeletons[nodeID]=skeleton;}else if(deformerNode.attrType===\"BlendShape\"){const morphTarget={id:nodeID};morphTarget.rawTargets=this.parseMorphTargets(relationships,DeformerNodes);morphTarget.id=nodeID;if(relationships.parents.length>1){console.warn(\"THREE.FBXLoader: morph target attached to more than one geometry is not supported.\");}morphTargets[nodeID]=morphTarget;}}}return{skeletons,morphTargets};}// Parse single nodes in FBXTree.Objects.Deformer\n// The top level skeleton node has type 'Skin' and sub nodes have type 'Cluster'\n// Each skin node represents a skeleton and each cluster node represents a bone\nparseSkeleton(relationships,deformerNodes){const rawBones=[];relationships.children.forEach(function(child){const boneNode=deformerNodes[child.ID];if(boneNode.attrType!==\"Cluster\")return;const rawBone={ID:child.ID,indices:[],weights:[],transformLink:new Matrix4().fromArray(boneNode.TransformLink.a)// transform: new Matrix4().fromArray( boneNode.Transform.a ),\n// linkMode: boneNode.Mode,\n};if(\"Indexes\"in boneNode){rawBone.indices=boneNode.Indexes.a;rawBone.weights=boneNode.Weights.a;}rawBones.push(rawBone);});return{rawBones,bones:[]};}// The top level morph deformer node has type \"BlendShape\" and sub nodes have type \"BlendShapeChannel\"\nparseMorphTargets(relationships,deformerNodes){const rawMorphTargets=[];for(let i2=0;i21){material2=materials;}else if(materials.length>0){material2=materials[0];}else{material2=new MeshPhongMaterial({color:13421772});materials.push(material2);}if(\"color\"in geometry2.attributes){materials.forEach(function(material3){material3.vertexColors=true;});}if(geometry2.FBX_Deformer){model=new SkinnedMesh(geometry2,material2);model.normalizeSkinWeights();}else{model=new Mesh(geometry2,material2);}return model;}createCurve(relationships,geometryMap){const geometry2=relationships.children.reduce(function(geo,child){if(geometryMap.has(child.ID))geo=geometryMap.get(child.ID);return geo;},null);const material2=new LineBasicMaterial({color:3342591,linewidth:1});return new Line(geometry2,material2);}// parse the model node for transform data\ngetTransformData(model,modelNode){const transformData={};if(\"InheritType\"in modelNode)transformData.inheritType=parseInt(modelNode.InheritType.value);if(\"RotationOrder\"in modelNode)transformData.eulerOrder=getEulerOrder(modelNode.RotationOrder.value);else transformData.eulerOrder=\"ZYX\";if(\"Lcl_Translation\"in modelNode)transformData.translation=modelNode.Lcl_Translation.value;if(\"PreRotation\"in modelNode)transformData.preRotation=modelNode.PreRotation.value;if(\"Lcl_Rotation\"in modelNode)transformData.rotation=modelNode.Lcl_Rotation.value;if(\"PostRotation\"in modelNode)transformData.postRotation=modelNode.PostRotation.value;if(\"Lcl_Scaling\"in modelNode)transformData.scale=modelNode.Lcl_Scaling.value;if(\"ScalingOffset\"in modelNode)transformData.scalingOffset=modelNode.ScalingOffset.value;if(\"ScalingPivot\"in modelNode)transformData.scalingPivot=modelNode.ScalingPivot.value;if(\"RotationOffset\"in modelNode)transformData.rotationOffset=modelNode.RotationOffset.value;if(\"RotationPivot\"in modelNode)transformData.rotationPivot=modelNode.RotationPivot.value;model.userData.transformData=transformData;}setLookAtProperties(model,modelNode){if(\"LookAtProperty\"in modelNode){const children=connections.get(model.ID).children;children.forEach(function(child){if(child.relationship===\"LookAtProperty\"){const lookAtTarget=fbxTree.Objects.Model[child.ID];if(\"Lcl_Translation\"in lookAtTarget){const pos=lookAtTarget.Lcl_Translation.value;if(model.target!==void 0){model.target.position.fromArray(pos);sceneGraph.add(model.target);}else{model.lookAt(new Vector3().fromArray(pos));}}}});}}bindSkeleton(skeletons,geometryMap,modelMap){const bindMatrices=this.parsePoseNodes();for(const ID in skeletons){const skeleton=skeletons[ID];const parents=connections.get(parseInt(skeleton.ID)).parents;parents.forEach(function(parent){if(geometryMap.has(parent.ID)){const geoID=parent.ID;const geoRelationships=connections.get(geoID);geoRelationships.parents.forEach(function(geoConnParent){if(modelMap.has(geoConnParent.ID)){const model=modelMap.get(geoConnParent.ID);model.bind(new Skeleton(skeleton.bones),bindMatrices[geoConnParent.ID]);}});}});}}parsePoseNodes(){const bindMatrices={};if(\"Pose\"in fbxTree.Objects){const BindPoseNode=fbxTree.Objects.Pose;for(const nodeID in BindPoseNode){if(BindPoseNode[nodeID].attrType===\"BindPose\"&&BindPoseNode[nodeID].NbPoseNodes>0){const poseNodes=BindPoseNode[nodeID].PoseNode;if(Array.isArray(poseNodes)){poseNodes.forEach(function(poseNode){bindMatrices[poseNode.Node]=new Matrix4().fromArray(poseNode.Matrix.a);});}else{bindMatrices[poseNodes.Node]=new Matrix4().fromArray(poseNodes.Matrix.a);}}}}return bindMatrices;}// Parse ambient color in FBXTree.GlobalSettings - if it's not set to black (default), create an ambient light\ncreateAmbientLight(){if(\"GlobalSettings\"in fbxTree&&\"AmbientColor\"in fbxTree.GlobalSettings){const ambientColor=fbxTree.GlobalSettings.AmbientColor.value;const r=ambientColor[0];const g=ambientColor[1];const b2=ambientColor[2];if(r!==0||g!==0||b2!==0){const color=new Color(r,g,b2);sceneGraph.add(new AmbientLight(color,1));}}}}let GeometryParser$1=class GeometryParser{// Parse nodes in FBXTree.Objects.Geometry\nparse(deformers){const geometryMap=/* @__PURE__ */new Map();if(\"Geometry\"in fbxTree.Objects){const geoNodes=fbxTree.Objects.Geometry;for(const nodeID in geoNodes){const relationships=connections.get(parseInt(nodeID));const geo=this.parseGeometry(relationships,geoNodes[nodeID],deformers);geometryMap.set(parseInt(nodeID),geo);}}return geometryMap;}// Parse single node in FBXTree.Objects.Geometry\nparseGeometry(relationships,geoNode,deformers){switch(geoNode.attrType){case\"Mesh\":return this.parseMeshGeometry(relationships,geoNode,deformers);case\"NurbsCurve\":return this.parseNurbsGeometry(geoNode);}}// Parse single node mesh geometry in FBXTree.Objects.Geometry\nparseMeshGeometry(relationships,geoNode,deformers){const skeletons=deformers.skeletons;const morphTargets=[];const modelNodes=relationships.parents.map(function(parent){return fbxTree.Objects.Model[parent.ID];});if(modelNodes.length===0)return;const skeleton=relationships.children.reduce(function(skeleton2,child){if(skeletons[child.ID]!==void 0)skeleton2=skeletons[child.ID];return skeleton2;},null);relationships.children.forEach(function(child){if(deformers.morphTargets[child.ID]!==void 0){morphTargets.push(deformers.morphTargets[child.ID]);}});const modelNode=modelNodes[0];const transformData={};if(\"RotationOrder\"in modelNode)transformData.eulerOrder=getEulerOrder(modelNode.RotationOrder.value);if(\"InheritType\"in modelNode)transformData.inheritType=parseInt(modelNode.InheritType.value);if(\"GeometricTranslation\"in modelNode)transformData.translation=modelNode.GeometricTranslation.value;if(\"GeometricRotation\"in modelNode)transformData.rotation=modelNode.GeometricRotation.value;if(\"GeometricScaling\"in modelNode)transformData.scale=modelNode.GeometricScaling.value;const transform=generateTransform(transformData);return this.genGeometry(geoNode,skeleton,morphTargets,transform);}// Generate a BufferGeometry from a node in FBXTree.Objects.Geometry\ngenGeometry(geoNode,skeleton,morphTargets,preTransform){const geo=new BufferGeometry();if(geoNode.attrName)geo.name=geoNode.attrName;const geoInfo=this.parseGeoNode(geoNode,skeleton);const buffers=this.genBuffers(geoInfo);const positionAttribute=new Float32BufferAttribute(buffers.vertex,3);positionAttribute.applyMatrix4(preTransform);geo.setAttribute(\"position\",positionAttribute);if(buffers.colors.length>0){geo.setAttribute(\"color\",new Float32BufferAttribute(buffers.colors,3));}if(skeleton){geo.setAttribute(\"skinIndex\",new Uint16BufferAttribute(buffers.weightsIndices,4));geo.setAttribute(\"skinWeight\",new Float32BufferAttribute(buffers.vertexWeights,4));geo.FBX_Deformer=skeleton;}if(buffers.normal.length>0){const normalMatrix=new Matrix3().getNormalMatrix(preTransform);const normalAttribute=new Float32BufferAttribute(buffers.normal,3);normalAttribute.applyNormalMatrix(normalMatrix);geo.setAttribute(\"normal\",normalAttribute);}buffers.uvs.forEach(function(uvBuffer,i2){let name=\"uv\"+(i2+1).toString();if(i2===0){name=\"uv\";}geo.setAttribute(name,new Float32BufferAttribute(buffers.uvs[i2],2));});if(geoInfo.material&&geoInfo.material.mappingType!==\"AllSame\"){let prevMaterialIndex=buffers.materialIndex[0];let startIndex=0;buffers.materialIndex.forEach(function(currentIndex,i2){if(currentIndex!==prevMaterialIndex){geo.addGroup(startIndex,i2-startIndex,prevMaterialIndex);prevMaterialIndex=currentIndex;startIndex=i2;}});if(geo.groups.length>0){const lastGroup=geo.groups[geo.groups.length-1];const lastIndex=lastGroup.start+lastGroup.count;if(lastIndex!==buffers.materialIndex.length){geo.addGroup(lastIndex,buffers.materialIndex.length-lastIndex,prevMaterialIndex);}}if(geo.groups.length===0){geo.addGroup(0,buffers.materialIndex.length,buffers.materialIndex[0]);}}this.addMorphTargets(geo,geoNode,morphTargets,preTransform);return geo;}parseGeoNode(geoNode,skeleton){const geoInfo={};geoInfo.vertexPositions=geoNode.Vertices!==void 0?geoNode.Vertices.a:[];geoInfo.vertexIndices=geoNode.PolygonVertexIndex!==void 0?geoNode.PolygonVertexIndex.a:[];if(geoNode.LayerElementColor){geoInfo.color=this.parseVertexColors(geoNode.LayerElementColor[0]);}if(geoNode.LayerElementMaterial){geoInfo.material=this.parseMaterialIndices(geoNode.LayerElementMaterial[0]);}if(geoNode.LayerElementNormal){geoInfo.normal=this.parseNormals(geoNode.LayerElementNormal[0]);}if(geoNode.LayerElementUV){geoInfo.uv=[];let i2=0;while(geoNode.LayerElementUV[i2]){if(geoNode.LayerElementUV[i2].UV){geoInfo.uv.push(this.parseUVs(geoNode.LayerElementUV[i2]));}i2++;}}geoInfo.weightTable={};if(skeleton!==null){geoInfo.skeleton=skeleton;skeleton.rawBones.forEach(function(rawBone,i2){rawBone.indices.forEach(function(index,j){if(geoInfo.weightTable[index]===void 0)geoInfo.weightTable[index]=[];geoInfo.weightTable[index].push({id:i2,weight:rawBone.weights[j]});});});}return geoInfo;}genBuffers(geoInfo){const buffers={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]};let polygonIndex=0;let faceLength=0;let displayedWeightsWarning=false;let facePositionIndexes=[];let faceNormals=[];let faceColors=[];let faceUVs=[];let faceWeights=[];let faceWeightIndices=[];const scope=this;geoInfo.vertexIndices.forEach(function(vertexIndex,polygonVertexIndex){let materialIndex;let endOfFace=false;if(vertexIndex<0){vertexIndex=vertexIndex^-1;endOfFace=true;}let weightIndices=[];let weights=[];facePositionIndexes.push(vertexIndex*3,vertexIndex*3+1,vertexIndex*3+2);if(geoInfo.color){const data=getData(polygonVertexIndex,polygonIndex,vertexIndex,geoInfo.color);faceColors.push(data[0],data[1],data[2]);}if(geoInfo.skeleton){if(geoInfo.weightTable[vertexIndex]!==void 0){geoInfo.weightTable[vertexIndex].forEach(function(wt){weights.push(wt.weight);weightIndices.push(wt.id);});}if(weights.length>4){if(!displayedWeightsWarning){console.warn(\"THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights.\");displayedWeightsWarning=true;}const wIndex=[0,0,0,0];const Weight=[0,0,0,0];weights.forEach(function(weight,weightIndex){let currentWeight=weight;let currentIndex=weightIndices[weightIndex];Weight.forEach(function(comparedWeight,comparedWeightIndex,comparedWeightArray){if(currentWeight>comparedWeight){comparedWeightArray[comparedWeightIndex]=currentWeight;currentWeight=comparedWeight;const tmp=wIndex[comparedWeightIndex];wIndex[comparedWeightIndex]=currentIndex;currentIndex=tmp;}});});weightIndices=wIndex;weights=Weight;}while(weights.length<4){weights.push(0);weightIndices.push(0);}for(let i2=0;i2<4;++i2){faceWeights.push(weights[i2]);faceWeightIndices.push(weightIndices[i2]);}}if(geoInfo.normal){const data=getData(polygonVertexIndex,polygonIndex,vertexIndex,geoInfo.normal);faceNormals.push(data[0],data[1],data[2]);}if(geoInfo.material&&geoInfo.material.mappingType!==\"AllSame\"){materialIndex=getData(polygonVertexIndex,polygonIndex,vertexIndex,geoInfo.material)[0];}if(geoInfo.uv){geoInfo.uv.forEach(function(uv,i2){const data=getData(polygonVertexIndex,polygonIndex,vertexIndex,uv);if(faceUVs[i2]===void 0){faceUVs[i2]=[];}faceUVs[i2].push(data[0]);faceUVs[i2].push(data[1]);});}faceLength++;if(endOfFace){scope.genFace(buffers,geoInfo,facePositionIndexes,materialIndex,faceNormals,faceColors,faceUVs,faceWeights,faceWeightIndices,faceLength);polygonIndex++;faceLength=0;facePositionIndexes=[];faceNormals=[];faceColors=[];faceUVs=[];faceWeights=[];faceWeightIndices=[];}});return buffers;}// Generate data for a single face in a geometry. If the face is a quad then split it into 2 tris\ngenFace(buffers,geoInfo,facePositionIndexes,materialIndex,faceNormals,faceColors,faceUVs,faceWeights,faceWeightIndices,faceLength){for(let i2=2;i21){console.warn(\"THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.\");}const layer=layersMap.get(children[0].ID);rawClips[nodeID]={name:rawStacks[nodeID].attrName,layer};}return rawClips;}addClip(rawClip){let tracks=[];const scope=this;rawClip.layer.forEach(function(rawTracks){tracks=tracks.concat(scope.generateTracks(rawTracks));});return new AnimationClip(rawClip.name,-1,tracks);}generateTracks(rawTracks){const tracks=[];let initialPosition=new Vector3();let initialRotation=new Quaternion();let initialScale=new Vector3();if(rawTracks.transform)rawTracks.transform.decompose(initialPosition,initialRotation,initialScale);initialPosition=initialPosition.toArray();initialRotation=new Euler().setFromQuaternion(initialRotation,rawTracks.eulerOrder).toArray();initialScale=initialScale.toArray();if(rawTracks.T!==void 0&&Object.keys(rawTracks.T.curves).length>0){const positionTrack=this.generateVectorTrack(rawTracks.modelName,rawTracks.T.curves,initialPosition,\"position\");if(positionTrack!==void 0)tracks.push(positionTrack);}if(rawTracks.R!==void 0&&Object.keys(rawTracks.R.curves).length>0){const rotationTrack=this.generateRotationTrack(rawTracks.modelName,rawTracks.R.curves,initialRotation,rawTracks.preRotation,rawTracks.postRotation,rawTracks.eulerOrder);if(rotationTrack!==void 0)tracks.push(rotationTrack);}if(rawTracks.S!==void 0&&Object.keys(rawTracks.S.curves).length>0){const scaleTrack=this.generateVectorTrack(rawTracks.modelName,rawTracks.S.curves,initialScale,\"scale\");if(scaleTrack!==void 0)tracks.push(scaleTrack);}if(rawTracks.DeformPercent!==void 0){const morphTrack=this.generateMorphTrack(rawTracks);if(morphTrack!==void 0)tracks.push(morphTrack);}return tracks;}generateVectorTrack(modelName,curves,initialValue,type){const times=this.getTimesForAllAxes(curves);const values=this.getKeyframeTrackValues(times,curves,initialValue);return new VectorKeyframeTrack(modelName+\".\"+type,times,values);}generateRotationTrack(modelName,curves,initialValue,preRotation,postRotation,eulerOrder){if(curves.x!==void 0){this.interpolateRotations(curves.x);curves.x.values=curves.x.values.map(MathUtils.degToRad);}if(curves.y!==void 0){this.interpolateRotations(curves.y);curves.y.values=curves.y.values.map(MathUtils.degToRad);}if(curves.z!==void 0){this.interpolateRotations(curves.z);curves.z.values=curves.z.values.map(MathUtils.degToRad);}const times=this.getTimesForAllAxes(curves);const values=this.getKeyframeTrackValues(times,curves,initialValue);if(preRotation!==void 0){preRotation=preRotation.map(MathUtils.degToRad);preRotation.push(eulerOrder);preRotation=new Euler().fromArray(preRotation);preRotation=new Quaternion().setFromEuler(preRotation);}if(postRotation!==void 0){postRotation=postRotation.map(MathUtils.degToRad);postRotation.push(eulerOrder);postRotation=new Euler().fromArray(postRotation);postRotation=new Quaternion().setFromEuler(postRotation).invert();}const quaternion=new Quaternion();const euler=new Euler();const quaternionValues=[];for(let i2=0;i21){let targetIndex=1;let lastValue=times[0];for(let i2=1;i2=180){const numSubIntervals=absoluteSpan/180;const step=valuesSpan/numSubIntervals;let nextValue=initialValue+step;const initialTime=curve.times[i2-1];const timeSpan=curve.times[i2]-initialTime;const interval=timeSpan/numSubIntervals;let nextTime=initialTime+interval;const interpolatedTimes=[];const interpolatedValues=[];while(nextTime1){name=attrs[1].replace(/^(\\w+)::/,\"\");type=attrs[2];}return{id,name,type};}parseNodeProperty(line,property,contentLine){let propName=property[1].replace(/^\"/,\"\").replace(/\"$/,\"\").trim();let propValue=property[2].replace(/^\"/,\"\").replace(/\"$/,\"\").trim();if(propName===\"Content\"&&propValue===\",\"){propValue=contentLine.replace(/\"/g,\"\").replace(/,$/,\"\").trim();}const currentNode=this.getCurrentNode();const parentName=currentNode.name;if(parentName===\"Properties70\"){this.parseNodeSpecialProperty(line,propName,propValue);return;}if(propName===\"C\"){const connProps=propValue.split(\",\").slice(1);const from=parseInt(connProps[0]);const to=parseInt(connProps[1]);let rest=propValue.split(\",\").slice(3);rest=rest.map(function(elem){return elem.trim().replace(/^\"/,\"\");});propName=\"connections\";propValue=[from,to];append(propValue,rest);if(currentNode[propName]===void 0){currentNode[propName]=[];}}if(propName===\"Node\")currentNode.id=propValue;if(propName in currentNode&&Array.isArray(currentNode[propName])){currentNode[propName].push(propValue);}else{if(propName!==\"a\")currentNode[propName]=propValue;else currentNode.a=propValue;}this.setCurrentProp(currentNode,propName);if(propName===\"a\"&&propValue.slice(-1)!==\",\"){currentNode.a=parseNumberArray(propValue);}}parseNodePropertyContinued(line){const currentNode=this.getCurrentNode();currentNode.a+=line;if(line.slice(-1)!==\",\"){currentNode.a=parseNumberArray(currentNode.a);}}// parse \"Property70\"\nparseNodeSpecialProperty(line,propName,propValue){const props=propValue.split('\",').map(function(prop){return prop.trim().replace(/^\\\"/,\"\").replace(/\\s/,\"_\");});const innerPropName=props[0];const innerPropType1=props[1];const innerPropType2=props[2];const innerPropFlag=props[3];let innerPropValue=props[4];switch(innerPropType1){case\"int\":case\"enum\":case\"bool\":case\"ULongLong\":case\"double\":case\"Number\":case\"FieldOfView\":innerPropValue=parseFloat(innerPropValue);break;case\"Color\":case\"ColorRGB\":case\"Vector3D\":case\"Lcl_Translation\":case\"Lcl_Rotation\":case\"Lcl_Scaling\":innerPropValue=parseNumberArray(innerPropValue);break;}this.getPrevNode()[innerPropName]={type:innerPropType1,type2:innerPropType2,flag:innerPropFlag,value:innerPropValue};this.setCurrentProp(this.getPrevNode(),innerPropName);}}class BinaryParser{parse(buffer){const reader=new BinaryReader(buffer);reader.skip(23);const version2=reader.getUint32();if(version2<6400){throw new Error(\"THREE.FBXLoader: FBX version not supported, FileVersion: \"+version2);}const allNodes=new FBXTree();while(!this.endOfContent(reader)){const node=this.parseNode(reader,version2);if(node!==null)allNodes.add(node.name,node);}return allNodes;}// Check if reader has reached the end of content.\nendOfContent(reader){if(reader.size()%16===0){return(reader.getOffset()+160+16&~15)>=reader.size();}else{return reader.getOffset()+160+16>=reader.size();}}// recursively parse nodes until the end of the file is reached\nparseNode(reader,version2){const node={};const endOffset=version2>=7500?reader.getUint64():reader.getUint32();const numProperties=version2>=7500?reader.getUint64():reader.getUint32();version2>=7500?reader.getUint64():reader.getUint32();const nameLen=reader.getUint8();const name=reader.getString(nameLen);if(endOffset===0)return null;const propertyList=[];for(let i2=0;i20?propertyList[0]:\"\";const attrName=propertyList.length>1?propertyList[1]:\"\";const attrType=propertyList.length>2?propertyList[2]:\"\";node.singleProperty=numProperties===1&&reader.getOffset()===endOffset?true:false;while(endOffset>reader.getOffset()){const subNode=this.parseNode(reader,version2);if(subNode!==null)this.parseSubNode(name,node,subNode);}node.propertyList=propertyList;if(typeof id===\"number\")node.id=id;if(attrName!==\"\")node.attrName=attrName;if(attrType!==\"\")node.attrType=attrType;if(name!==\"\")node.name=name;return node;}parseSubNode(name,node,subNode){if(subNode.singleProperty===true){const value=subNode.propertyList[0];if(Array.isArray(value)){node[subNode.name]=subNode;subNode.a=value;}else{node[subNode.name]=value;}}else if(name===\"Connections\"&&subNode.name===\"C\"){const array=[];subNode.propertyList.forEach(function(property,i2){if(i2!==0)array.push(property);});if(node.connections===void 0){node.connections=[];}node.connections.push(array);}else if(subNode.name===\"Properties70\"){const keys=Object.keys(subNode);keys.forEach(function(key){node[key]=subNode[key];});}else if(name===\"Properties70\"&&subNode.name===\"P\"){let innerPropName=subNode.propertyList[0];let innerPropType1=subNode.propertyList[1];const innerPropType2=subNode.propertyList[2];const innerPropFlag=subNode.propertyList[3];let innerPropValue;if(innerPropName.indexOf(\"Lcl \")===0)innerPropName=innerPropName.replace(\"Lcl \",\"Lcl_\");if(innerPropType1.indexOf(\"Lcl \")===0)innerPropType1=innerPropType1.replace(\"Lcl \",\"Lcl_\");if(innerPropType1===\"Color\"||innerPropType1===\"ColorRGB\"||innerPropType1===\"Vector\"||innerPropType1===\"Vector3D\"||innerPropType1.indexOf(\"Lcl_\")===0){innerPropValue=[subNode.propertyList[4],subNode.propertyList[5],subNode.propertyList[6]];}else{innerPropValue=subNode.propertyList[4];}node[innerPropName]={type:innerPropType1,type2:innerPropType2,flag:innerPropFlag,value:innerPropValue};}else if(node[subNode.name]===void 0){if(typeof subNode.id===\"number\"){node[subNode.name]={};node[subNode.name][subNode.id]=subNode;}else{node[subNode.name]=subNode;}}else{if(subNode.name===\"PoseNode\"){if(!Array.isArray(node[subNode.name])){node[subNode.name]=[node[subNode.name]];}node[subNode.name].push(subNode);}else if(node[subNode.name][subNode.id]===void 0){node[subNode.name][subNode.id]=subNode;}}}parseProperty(reader){const type=reader.getString(1);let length;switch(type){case\"C\":return reader.getBoolean();case\"D\":return reader.getFloat64();case\"F\":return reader.getFloat32();case\"I\":return reader.getInt32();case\"L\":return reader.getInt64();case\"R\":length=reader.getUint32();return reader.getArrayBuffer(length);case\"S\":length=reader.getUint32();return reader.getString(length);case\"Y\":return reader.getInt16();case\"b\":case\"c\":case\"d\":case\"f\":case\"i\":case\"l\":const arrayLength=reader.getUint32();const encoding=reader.getUint32();const compressedLength=reader.getUint32();if(encoding===0){switch(type){case\"b\":case\"c\":return reader.getBooleanArray(arrayLength);case\"d\":return reader.getFloat64Array(arrayLength);case\"f\":return reader.getFloat32Array(arrayLength);case\"i\":return reader.getInt32Array(arrayLength);case\"l\":return reader.getInt64Array(arrayLength);}}const data=unzlibSync(new Uint8Array(reader.getArrayBuffer(compressedLength)));const reader2=new BinaryReader(data.buffer);switch(type){case\"b\":case\"c\":return reader2.getBooleanArray(arrayLength);case\"d\":return reader2.getFloat64Array(arrayLength);case\"f\":return reader2.getFloat32Array(arrayLength);case\"i\":return reader2.getInt32Array(arrayLength);case\"l\":return reader2.getInt64Array(arrayLength);}default:throw new Error(\"THREE.FBXLoader: Unknown property type \"+type);}}}class BinaryReader{constructor(buffer,littleEndian){this.dv=new DataView(buffer);this.offset=0;this.littleEndian=littleEndian!==void 0?littleEndian:true;}getOffset(){return this.offset;}size(){return this.dv.buffer.byteLength;}skip(length){this.offset+=length;}// seems like true/false representation depends on exporter.\n// true: 1 or 'Y'(=0x59), false: 0 or 'T'(=0x54)\n// then sees LSB.\ngetBoolean(){return(this.getUint8()&1)===1;}getBooleanArray(size2){const a2=[];for(let i2=0;i2=0)a2=a2.slice(0,nullByte);return LoaderUtils.decodeText(new Uint8Array(a2));}}class FBXTree{add(key,val){this[key]=val;}}function isFbxFormatBinary(buffer){const CORRECT=\"Kaydara FBX Binary \\0\";return buffer.byteLength>=CORRECT.length&&CORRECT===convertArrayBufferToString(buffer,0,CORRECT.length);}function isFbxFormatASCII(text){const CORRECT=[\"K\",\"a\",\"y\",\"d\",\"a\",\"r\",\"a\",\"\\\\\",\"F\",\"B\",\"X\",\"\\\\\",\"B\",\"i\",\"n\",\"a\",\"r\",\"y\",\"\\\\\",\"\\\\\"];let cursor=0;function read2(offset){const result=text[offset-1];text=text.slice(cursor+offset);cursor++;return result;}for(let i2=0;i2 XYZ extrinsic\n\"YZX\",// -> XZY extrinsic\n\"XZY\",// -> YZX extrinsic\n\"ZXY\",// -> YXZ extrinsic\n\"YXZ\",// -> ZXY extrinsic\n\"XYZ\"// -> ZYX extrinsic\n//'SphericXYZ', // not possible to support\n];if(order===6){console.warn(\"THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect.\");return enums[0];}return enums[order];}function parseNumberArray(value){const array=value.split(\",\").map(function(val){return parseFloat(val);});return array;}function convertArrayBufferToString(buffer,from,to){if(from===void 0)from=0;if(to===void 0)to=buffer.byteLength;return LoaderUtils.decodeText(new Uint8Array(buffer,from,to));}function append(a2,b2){for(let i2=0,j=a2.length,l=b2.length;i2{if(typeof response!==\"string\")throw new Error(\"unsupported data type\");const json=JSON.parse(response);const font=this.parse(json);if(onLoad)onLoad(font);},onProgress,onError);}loadAsync(url,onProgress){return super.loadAsync(url,onProgress);}parse(json){return new Font(json);}}class Font{constructor(data){__publicField(this,\"data\");this.data=data;}generateShapes(text,size2=100,_options){const shapes=[];const options={letterSpacing:0,lineHeight:1,..._options};const paths=createPaths(text,size2,this.data,options);for(let p=0,pl=paths.length;p256||header2.colormap_size!==24||header2.colormap_type!==1){console.error(\"THREE.TGALoader: Invalid type colormap data for indexed type.\");}break;case TGA_TYPE_RGB:case TGA_TYPE_GREY:case TGA_TYPE_RLE_RGB:case TGA_TYPE_RLE_GREY:if(header2.colormap_type){console.error(\"THREE.TGALoader: Invalid type colormap data for colormap type.\");}break;case TGA_TYPE_NO_DATA:console.error(\"THREE.TGALoader: No data.\");default:console.error('THREE.TGALoader: Invalid type \"%s\".',header2.image_type);}if(header2.width<=0||header2.height<=0){console.error(\"THREE.TGALoader: Invalid image size.\");}if(header2.pixel_size!==8&&header2.pixel_size!==16&&header2.pixel_size!==24&&header2.pixel_size!==32){console.error('THREE.TGALoader: Invalid pixel size \"%s\".',header2.pixel_size);}}function tgaParse(use_rle2,use_pal2,header2,offset2,data){let pixel_data,palettes;const pixel_size=header2.pixel_size>>3;const pixel_total=header2.width*header2.height*pixel_size;if(use_pal2){palettes=data.subarray(offset2,offset2+=header2.colormap_length*(header2.colormap_size>>3));}if(use_rle2){pixel_data=new Uint8Array(pixel_total);let c,count,i2;let shift=0;const pixels=new Uint8Array(pixel_size);while(shift>7;imageData2[(x+width*y)*4+1]=(color&992)>>2;imageData2[(x+width*y)*4+2]=(color&31)>>3;imageData2[(x+width*y)*4+3]=color&32768?0:255;}}return imageData2;}function tgaGetImageData24bits(imageData2,y_start,y_step,y_end,x_start,x_step,x_end,image){let i2=0,x,y;const width=header.width;for(y=y_start;y!==y_end;y+=y_step){for(x=x_start;x!==x_end;x+=x_step,i2+=3){imageData2[(x+width*y)*4+3]=255;imageData2[(x+width*y)*4+2]=image[i2+0];imageData2[(x+width*y)*4+1]=image[i2+1];imageData2[(x+width*y)*4+0]=image[i2+2];}}return imageData2;}function tgaGetImageData32bits(imageData2,y_start,y_step,y_end,x_start,x_step,x_end,image){let i2=0,x,y;const width=header.width;for(y=y_start;y!==y_end;y+=y_step){for(x=x_start;x!==x_end;x+=x_step,i2+=4){imageData2[(x+width*y)*4+2]=image[i2+0];imageData2[(x+width*y)*4+1]=image[i2+1];imageData2[(x+width*y)*4+0]=image[i2+2];imageData2[(x+width*y)*4+3]=image[i2+3];}}return imageData2;}function tgaGetImageDataGrey8bits(imageData2,y_start,y_step,y_end,x_start,x_step,x_end,image){let color,i2=0,x,y;const width=header.width;for(y=y_start;y!==y_end;y+=y_step){for(x=x_start;x!==x_end;x+=x_step,i2++){color=image[i2];imageData2[(x+width*y)*4+0]=color;imageData2[(x+width*y)*4+1]=color;imageData2[(x+width*y)*4+2]=color;imageData2[(x+width*y)*4+3]=255;}}return imageData2;}function tgaGetImageDataGrey16bits(imageData2,y_start,y_step,y_end,x_start,x_step,x_end,image){let i2=0,x,y;const width=header.width;for(y=y_start;y!==y_end;y+=y_step){for(x=x_start;x!==x_end;x+=x_step,i2+=2){imageData2[(x+width*y)*4+0]=image[i2+0];imageData2[(x+width*y)*4+1]=image[i2+0];imageData2[(x+width*y)*4+2]=image[i2+0];imageData2[(x+width*y)*4+3]=image[i2+1];}}return imageData2;}function getTgaRGBA(data,width,height,image,palette){let x_start,y_start,x_step,y_step,x_end,y_end;switch((header.flags&TGA_ORIGIN_MASK)>>TGA_ORIGIN_SHIFT){default:case TGA_ORIGIN_UL:x_start=0;x_step=1;x_end=width;y_start=0;y_step=1;y_end=height;break;case TGA_ORIGIN_BL:x_start=0;x_step=1;x_end=width;y_start=height-1;y_step=-1;y_end=-1;break;case TGA_ORIGIN_UR:x_start=width-1;x_step=-1;x_end=-1;y_start=0;y_step=1;y_end=height;break;case TGA_ORIGIN_BR:x_start=width-1;x_step=-1;x_end=-1;y_start=height-1;y_step=-1;y_end=-1;break;}if(use_grey){switch(header.pixel_size){case 8:tgaGetImageDataGrey8bits(data,y_start,y_step,y_end,x_start,x_step,x_end,image);break;case 16:tgaGetImageDataGrey16bits(data,y_start,y_step,y_end,x_start,x_step,x_end,image);break;default:console.error(\"THREE.TGALoader: Format not supported.\");break;}}else{switch(header.pixel_size){case 8:tgaGetImageData8bits(data,y_start,y_step,y_end,x_start,x_step,x_end,image,palette);break;case 16:tgaGetImageData16bits(data,y_start,y_step,y_end,x_start,x_step,x_end,image);break;case 24:tgaGetImageData24bits(data,y_start,y_step,y_end,x_start,x_step,x_end,image);break;case 32:tgaGetImageData32bits(data,y_start,y_step,y_end,x_start,x_step,x_end,image);break;default:console.error(\"THREE.TGALoader: Format not supported.\");break;}}return data;}const TGA_TYPE_NO_DATA=0,TGA_TYPE_INDEXED=1,TGA_TYPE_RGB=2,TGA_TYPE_GREY=3,TGA_TYPE_RLE_INDEXED=9,TGA_TYPE_RLE_RGB=10,TGA_TYPE_RLE_GREY=11,TGA_ORIGIN_MASK=48,TGA_ORIGIN_SHIFT=4,TGA_ORIGIN_BL=0,TGA_ORIGIN_BR=1,TGA_ORIGIN_UL=2,TGA_ORIGIN_UR=3;if(buffer.length<19)console.error(\"THREE.TGALoader: Not enough data to contain header.\");let offset=0;const content=new Uint8Array(buffer),header={id_length:content[offset++],colormap_type:content[offset++],image_type:content[offset++],colormap_index:content[offset++]|content[offset++]<<8,colormap_length:content[offset++]|content[offset++]<<8,colormap_size:content[offset++],origin:[content[offset++]|content[offset++]<<8,content[offset++]|content[offset++]<<8],width:content[offset++]|content[offset++]<<8,height:content[offset++]|content[offset++]<<8,pixel_size:content[offset++],flags:content[offset++]};tgaCheckHeader(header);if(header.id_length+offset>buffer.length){console.error(\"THREE.TGALoader: No data.\");}offset+=header.id_length;let use_rle=false,use_pal=false,use_grey=false;switch(header.image_type){case TGA_TYPE_RLE_INDEXED:use_rle=true;use_pal=true;break;case TGA_TYPE_INDEXED:use_pal=true;break;case TGA_TYPE_RLE_RGB:use_rle=true;break;case TGA_TYPE_RGB:break;case TGA_TYPE_RLE_GREY:use_rle=true;use_grey=true;break;case TGA_TYPE_GREY:use_grey=true;break;}const imageData=new Uint8Array(header.width*header.height*4);const result=tgaParse(use_rle,use_pal,header,offset,content);getTgaRGBA(imageData,header.width,header.height,result.pixel_data,result.palettes);return{data:imageData,width:header.width,height:header.height,flipY:true,generateMipmaps:true,minFilter:LinearMipmapLinearFilter};}}class Data3DTexture extends Texture{constructor(data=null,width=1,height=1,depth=1){super(null);this.isData3DTexture=true;this.image={data,width,height,depth};this.magFilter=NearestFilter;this.minFilter=NearestFilter;this.wrapR=ClampToEdgeWrapping;this.generateMipmaps=false;this.flipY=false;this.unpackAlignment=1;}}class LUTCubeLoader extends Loader{load(url,onLoad,onProgress,onError){const loader=new FileLoader(this.manager);loader.setPath(this.path);loader.setResponseType(\"text\");loader.load(url,text=>{try{onLoad(this.parse(text));}catch(e){if(onError){onError(e);}else{console.error(e);}this.manager.itemError(url);}},onProgress,onError);}parse(str){str=str.replace(/^#.*?(\\n|\\r)/gm,\"\").replace(/^\\s*?(\\n|\\r)/gm,\"\").trim();let title=null;let size2=null;const domainMin=new Vector3(0,0,0);const domainMax=new Vector3(1,1,1);const lines=str.split(/[\\n\\r]+/g);let data=null;let currIndex=0;for(let i2=0,l=lines.length;i21||r<0||g>1||g<0||b2>1||b2<0){throw new Error(\"LUTCubeLoader : Non normalized values not supported.\");}data[currIndex+0]=r*255;data[currIndex+1]=g*255;data[currIndex+2]=b2*255;data[currIndex+3]=255;currIndex+=4;}}const texture=new DataTexture();texture.image.data=data;texture.image.width=size2;texture.image.height=size2*size2;texture.type=UnsignedByteType;texture.magFilter=LinearFilter;texture.minFilter=LinearFilter;texture.wrapS=ClampToEdgeWrapping;texture.wrapT=ClampToEdgeWrapping;texture.generateMipmaps=false;texture.needsUpdate=true;const texture3D=new Data3DTexture();texture3D.image.data=data;texture3D.image.width=size2;texture3D.image.height=size2;texture3D.image.depth=size2;texture3D.type=UnsignedByteType;texture3D.magFilter=LinearFilter;texture3D.minFilter=LinearFilter;texture3D.wrapS=ClampToEdgeWrapping;texture3D.wrapT=ClampToEdgeWrapping;texture3D.wrapR=ClampToEdgeWrapping;texture3D.generateMipmaps=false;texture3D.needsUpdate=true;return{title,size:size2,domainMin,domainMax,texture,texture3D};}}class NRRDLoader extends Loader{constructor(manager){super(manager);}load(url,onLoad,onProgress,onError){const scope=this;const loader=new FileLoader(scope.manager);loader.setPath(scope.path);loader.setResponseType(\"arraybuffer\");loader.setRequestHeader(scope.requestHeader);loader.setWithCredentials(scope.withCredentials);loader.load(url,function(data){try{onLoad(scope.parse(data));}catch(e){if(onError){onError(e);}else{console.error(e);}scope.manager.itemError(url);}},onProgress,onError);}parse(data){let _data=data;let _dataPointer=0;const _nativeLittleEndian=new Int8Array(new Int16Array([1]).buffer)[0]>0;const _littleEndian=true;const headerObject={};function scan(type,chunks){if(chunks===void 0||chunks===null){chunks=1;}let _chunkSize=1;let _array_type=Uint8Array;switch(type){case\"uchar\":break;case\"schar\":_array_type=Int8Array;break;case\"ushort\":_array_type=Uint16Array;_chunkSize=2;break;case\"sshort\":_array_type=Int16Array;_chunkSize=2;break;case\"uint\":_array_type=Uint32Array;_chunkSize=4;break;case\"sint\":_array_type=Int32Array;_chunkSize=4;break;case\"float\":_array_type=Float32Array;_chunkSize=4;break;case\"complex\":_array_type=Float64Array;_chunkSize=8;break;case\"double\":_array_type=Float64Array;_chunkSize=8;break;}let _bytes2=new _array_type(_data.slice(_dataPointer,_dataPointer+=chunks*_chunkSize));if(_nativeLittleEndian!=_littleEndian){_bytes2=flipEndianness(_bytes2,_chunkSize);}if(chunks==1){return _bytes2[0];}return _bytes2;}function flipEndianness(array,chunkSize){const u8=new Uint8Array(array.buffer,array.byteOffset,array.byteLength);for(let i3=0;i3k;j--,k++){const tmp=u8[k];u8[k]=u8[j];u8[j]=tmp;}}return array;}function parseHeader(header){let data2,field,fn,i3,l,m,_i,_len;const lines=header.split(/\\r?\\n/);for(_i=0,_len=lines.length;_i<_len;_i++){l=lines[_i];if(l.match(/NRRD\\d+/)){headerObject.isNrrd=true;}else if(l.match(/^#/));else if(m=l.match(/(.*):(.*)/)){field=m[1].trim();data2=m[2].trim();fn=_fieldFunctions[field];if(fn){fn.call(headerObject,data2);}else{headerObject[field]=data2;}}}if(!headerObject.isNrrd){throw new Error(\"Not an NRRD file\");}if(headerObject.encoding===\"bz2\"||headerObject.encoding===\"bzip2\"){throw new Error(\"Bzip is not supported\");}if(!headerObject.vectors){headerObject.vectors=[new Vector3(1,0,0),new Vector3(0,1,0),new Vector3(0,0,1)];if(headerObject.spacings){for(i3=0;i3<=2;i3++){if(!isNaN(headerObject.spacings[i3])){headerObject.vectors[i3].multiplyScalar(headerObject.spacings[i3]);}}}}}function parseDataAsText(data2,start,end){let number=\"\";start=start||0;end=end||data2.length;let value;const lengthOfTheResult=headerObject.sizes.reduce(function(previous,current){return previous*current;},1);let base=10;if(headerObject.encoding===\"hex\"){base=16;}const result=new headerObject.__array(lengthOfTheResult);let resultIndex=0;let parsingFunction=parseInt;if(headerObject.__array===Float32Array||headerObject.__array===Float64Array){parsingFunction=parseFloat;}for(let i3=start;i313)&&value!==32){number+=String.fromCharCode(value);}else{if(number!==\"\"){result[resultIndex]=parsingFunction(number,base);resultIndex++;}number=\"\";}}if(number!==\"\"){result[resultIndex]=parsingFunction(number,base);resultIndex++;}return result;}const _bytes=scan(\"uchar\",data.byteLength);const _length=_bytes.length;let _header=null;let _data_start=0;let i2;for(i2=1;i2<_length;i2++){if(_bytes[i2-1]==10&&_bytes[i2]==10){_header=this.parseChars(_bytes,0,i2-2);_data_start=i2+1;break;}}parseHeader(_header);_data=_bytes.subarray(_data_start);if(headerObject.encoding.substring(0,2)===\"gz\"){_data=gunzipSync(new Uint8Array(_data));}else if(headerObject.encoding===\"ascii\"||headerObject.encoding===\"text\"||headerObject.encoding===\"txt\"||headerObject.encoding===\"hex\"){_data=parseDataAsText(_data);}else if(headerObject.encoding===\"raw\"){const _copy=new Uint8Array(_data.length);for(let i3=0;i3<_data.length;i3++){_copy[i3]=_data[i3];}_data=_copy;}_data=_data.buffer;const volume=new Volume();volume.header=headerObject;volume.data=new headerObject.__array(_data);const min_max=volume.computeMinMax();const min=min_max[0];const max=min_max[1];volume.windowLow=min;volume.windowHigh=max;volume.dimensions=[headerObject.sizes[0],headerObject.sizes[1],headerObject.sizes[2]];volume.xLength=volume.dimensions[0];volume.yLength=volume.dimensions[1];volume.zLength=volume.dimensions[2];const spacingX=new Vector3(headerObject.vectors[0][0],headerObject.vectors[0][1],headerObject.vectors[0][2]).length();const spacingY=new Vector3(headerObject.vectors[1][0],headerObject.vectors[1][1],headerObject.vectors[1][2]).length();const spacingZ=new Vector3(headerObject.vectors[2][0],headerObject.vectors[2][1],headerObject.vectors[2][2]).length();volume.spacing=[spacingX,spacingY,spacingZ];volume.matrix=new Matrix4();let _spaceX=1;let _spaceY=1;const _spaceZ=1;if(headerObject.space==\"left-posterior-superior\"){_spaceX=-1;_spaceY=-1;}else if(headerObject.space===\"left-anterior-superior\"){_spaceX=-1;}if(!headerObject.vectors){volume.matrix.set(_spaceX,0,0,0,0,_spaceY,0,0,0,0,_spaceZ,0,0,0,0,1);}else{const v=headerObject.vectors;volume.matrix.set(_spaceX*v[0][0],_spaceX*v[1][0],_spaceX*v[2][0],0,_spaceY*v[0][1],_spaceY*v[1][1],_spaceY*v[2][1],0,_spaceZ*v[0][2],_spaceZ*v[1][2],_spaceZ*v[2][2],0,0,0,0,1);}volume.inverseMatrix=new Matrix4();volume.inverseMatrix.copy(volume.matrix).invert();volume.RASDimensions=new Vector3(volume.xLength,volume.yLength,volume.zLength).applyMatrix4(volume.matrix).round().toArray().map(Math.abs);if(volume.lowerThreshold===-Infinity){volume.lowerThreshold=min;}if(volume.upperThreshold===Infinity){volume.upperThreshold=max;}return volume;}parseChars(array,start,end){if(start===void 0){start=0;}if(end===void 0){end=array.length;}let output=\"\";let i2=0;for(i2=start;i2>5&31)/31;b2=(packedColor>>10&31)/31;}else{r=defaultR;g=defaultG;b2=defaultB;}}for(let i2=1;i2<=3;i2++){const vertexstart=start+i2*12;const componentIdx=face*3*3+(i2-1)*3;vertices[componentIdx]=reader.getFloat32(vertexstart,true);vertices[componentIdx+1]=reader.getFloat32(vertexstart+4,true);vertices[componentIdx+2]=reader.getFloat32(vertexstart+8,true);normals[componentIdx]=normalX;normals[componentIdx+1]=normalY;normals[componentIdx+2]=normalZ;if(hasColors){colors[componentIdx]=r;colors[componentIdx+1]=g;colors[componentIdx+2]=b2;}}}geometry2.setAttribute(\"position\",new BufferAttribute(vertices,3));geometry2.setAttribute(\"normal\",new BufferAttribute(normals,3));if(hasColors){geometry2.setAttribute(\"color\",new BufferAttribute(colors,3));geometry2.hasColors=true;geometry2.alpha=alpha;}return geometry2;}function parseASCII(data2){const geometry2=new BufferGeometry();const patternSolid=/solid([\\s\\S]*?)endsolid/g;const patternFace=/facet([\\s\\S]*?)endfacet/g;let faceCounter=0;const patternFloat=/[\\s]+([+-]?(?:\\d*)(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)/.source;const patternVertex=new RegExp(\"vertex\"+patternFloat+patternFloat+patternFloat,\"g\");const patternNormal=new RegExp(\"normal\"+patternFloat+patternFloat+patternFloat,\"g\");const vertices=[];const normals=[];const normal=new Vector3();let result;let groupCount=0;let startVertex=0;let endVertex=0;while((result=patternSolid.exec(data2))!==null){startVertex=endVertex;const solid=result[0];while((result=patternFace.exec(solid))!==null){let vertexCountPerFace=0;let normalCountPerFace=0;const text=result[0];while((result=patternNormal.exec(text))!==null){normal.x=parseFloat(result[1]);normal.y=parseFloat(result[2]);normal.z=parseFloat(result[3]);normalCountPerFace++;}while((result=patternVertex.exec(text))!==null){vertices.push(parseFloat(result[1]),parseFloat(result[2]),parseFloat(result[3]));normals.push(normal.x,normal.y,normal.z);vertexCountPerFace++;endVertex++;}if(normalCountPerFace!==1){console.error(\"THREE.STLLoader: Something isn't right with the normal of face number \"+faceCounter);}if(vertexCountPerFace!==3){console.error(\"THREE.STLLoader: Something isn't right with the vertices of face number \"+faceCounter);}faceCounter++;}const start=startVertex;const count=endVertex-startVertex;geometry2.addGroup(start,count,groupCount);groupCount++;}geometry2.setAttribute(\"position\",new Float32BufferAttribute(vertices,3));geometry2.setAttribute(\"normal\",new Float32BufferAttribute(normals,3));return geometry2;}function ensureString(buffer){if(typeof buffer!==\"string\"){return LoaderUtils.decodeText(new Uint8Array(buffer));}return buffer;}function ensureBinary(buffer){if(typeof buffer===\"string\"){const array_buffer=new Uint8Array(buffer.length);for(let i2=0;i2=0?line.substring(0,pos):line;key=key.toLowerCase();let value=pos>=0?line.substring(pos+1):\"\";value=value.trim();if(key===\"newmtl\"){info={name:value};materialsInfo[value]=info;}else{if(key===\"ka\"||key===\"kd\"||key===\"ks\"||key===\"ke\"){const ss=value.split(delimiter_pattern,3);info[key]=[parseFloat(ss[0]),parseFloat(ss[1]),parseFloat(ss[2])];}else{info[key]=value;}}}const materialCreator=new MaterialCreator(this.resourcePath||path,this.materialOptions);materialCreator.setCrossOrigin(this.crossOrigin);materialCreator.setManager(this.manager);materialCreator.setMaterials(materialsInfo);return materialCreator;}}class MaterialCreator{constructor(baseUrl=\"\",options={}){this.baseUrl=baseUrl;this.options=options;this.materialsInfo={};this.materials={};this.materialsArray=[];this.nameLookup={};this.crossOrigin=\"anonymous\";this.side=this.options.side!==void 0?this.options.side:FrontSide;this.wrap=this.options.wrap!==void 0?this.options.wrap:RepeatWrapping;}setCrossOrigin(value){this.crossOrigin=value;return this;}setManager(value){this.manager=value;}setMaterials(materialsInfo){this.materialsInfo=this.convert(materialsInfo);this.materials={};this.materialsArray=[];this.nameLookup={};}convert(materialsInfo){if(!this.options)return materialsInfo;const converted={};for(const mn in materialsInfo){const mat=materialsInfo[mn];const covmat={};converted[mn]=covmat;for(const prop in mat){let save=true;let value=mat[prop];const lprop=prop.toLowerCase();switch(lprop){case\"kd\":case\"ka\":case\"ks\":if(this.options&&this.options.normalizeRGB){value=[value[0]/255,value[1]/255,value[2]/255];}if(this.options&&this.options.ignoreZeroRGBs){if(value[0]===0&&value[1]===0&&value[2]===0){save=false;}}break;}if(save){covmat[lprop]=value;}}}return converted;}preload(){for(const mn in this.materialsInfo){this.create(mn);}}getIndex(materialName){return this.nameLookup[materialName];}getAsArray(){let index=0;for(const mn in this.materialsInfo){this.materialsArray[index]=this.create(mn);this.nameLookup[mn]=index;index++;}return this.materialsArray;}create(materialName){if(this.materials[materialName]===void 0){this.createMaterial_(materialName);}return this.materials[materialName];}createMaterial_(materialName){const scope=this;const mat=this.materialsInfo[materialName];const params={name:materialName,side:this.side};function resolveURL(baseUrl,url){if(typeof url!==\"string\"||url===\"\")return\"\";if(/^https?:\\/\\//i.test(url))return url;return baseUrl+url;}function setMapForType(mapType,value){if(params[mapType])return;const texParams=scope.getTextureParams(value,params);const map=scope.loadTexture(resolveURL(scope.baseUrl,texParams.url));map.repeat.copy(texParams.scale);map.offset.copy(texParams.offset);map.wrapS=scope.wrap;map.wrapT=scope.wrap;params[mapType]=map;}for(const prop in mat){const value=mat[prop];let n;if(value===\"\")continue;switch(prop.toLowerCase()){case\"kd\":params.color=new Color().fromArray(value);break;case\"ks\":params.specular=new Color().fromArray(value);break;case\"ke\":params.emissive=new Color().fromArray(value);break;case\"map_kd\":setMapForType(\"map\",value);break;case\"map_ks\":setMapForType(\"specularMap\",value);break;case\"map_ke\":setMapForType(\"emissiveMap\",value);break;case\"norm\":setMapForType(\"normalMap\",value);break;case\"map_bump\":case\"bump\":setMapForType(\"bumpMap\",value);break;case\"map_d\":setMapForType(\"alphaMap\",value);params.transparent=true;break;case\"ns\":params.shininess=parseFloat(value);break;case\"d\":n=parseFloat(value);if(n<1){params.opacity=n;params.transparent=true;}break;case\"tr\":n=parseFloat(value);if(this.options&&this.options.invertTrProperty)n=1-n;if(n>0){params.opacity=1-n;params.transparent=true;}break;}}this.materials[materialName]=new MeshPhongMaterial(params);return this.materials[materialName];}getTextureParams(value,matParams){const texParams={scale:new Vector2(1,1),offset:new Vector2(0,0)};const items=value.split(/\\s+/);let pos;pos=items.indexOf(\"-bm\");if(pos>=0){matParams.bumpScale=parseFloat(items[pos+1]);items.splice(pos,2);}pos=items.indexOf(\"-s\");if(pos>=0){texParams.scale.set(parseFloat(items[pos+1]),parseFloat(items[pos+2]));items.splice(pos,4);}pos=items.indexOf(\"-o\");if(pos>=0){texParams.offset.set(parseFloat(items[pos+1]),parseFloat(items[pos+2]));items.splice(pos,4);}texParams.url=items.join(\" \").trim();return texParams;}loadTexture(url,mapping,onLoad,onProgress,onError){const manager=this.manager!==void 0?this.manager:DefaultLoadingManager;let loader=manager.getHandler(url);if(loader===null){loader=new TextureLoader(manager);}if(loader.setCrossOrigin)loader.setCrossOrigin(this.crossOrigin);const texture=loader.load(url,onLoad,onProgress,onError);if(mapping!==void 0)texture.mapping=mapping;return texture;}}var XLoader=/*@__PURE__*/function(){var classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError(\"Cannot call a class as a function\");}};var createClass=function(){function defineProperties(target,props){for(let i2=0;i21&&arguments[1]!==void 0?arguments[1]:0;if(!_arg){return;}for(let i2=_start2;i2<_arg.length;i2++){switch(i2){case 0:this.url=_arg[i2];break;case 1:this.options=_arg[i2];break;}}if(this.options===void 0){this.options={};}}},{key:\"load\",value:function load(_arg,onLoad,onProgress,onError){var _this=this;this._setArgOption(_arg);var loader=new FileLoader(this.manager);loader.setPath(this.path);loader.setResponseType(\"arraybuffer\");loader.setRequestHeader(this.requestHeader);loader.setWithCredentials(this.withCredentials);loader.load(this.url,function(response){try{_this.parse(response,onLoad);}catch(e){if(onError){onError(e);}else{console.error(e);}_this.manager.itemError(_this.url);}},onProgress,onError);}},{key:\"_readLine\",value:function _readLine(line){var readed=0;while(true){var find=-1;find=line.indexOf(\"//\",readed);if(find===-1){find=line.indexOf(\"#\",readed);}if(find>-1&&find<2){var foundNewLine=-1;foundNewLine=line.indexOf(\"\\r\\n\",readed);if(foundNewLine>0){readed=foundNewLine+2;}else{foundNewLine=line.indexOf(\"\\r\",readed);if(foundNewLine>0){readed=foundNewLine+1;}else{readed=line.indexOf(\"\\n\",readed)+1;}}}else{break;}}return line.substr(readed);}},{key:\"_readLine\",value:function _readLine(line){var readed=0;while(true){var find=-1;find=line.indexOf(\"//\",readed);if(find===-1){find=line.indexOf(\"#\",readed);}if(find>-1&&find<2){var foundNewLine=-1;foundNewLine=line.indexOf(\"\\r\\n\",readed);if(foundNewLine>0){readed=foundNewLine+2;}else{foundNewLine=line.indexOf(\"\\r\",readed);if(foundNewLine>0){readed=foundNewLine+1;}else{readed=line.indexOf(\"\\n\",readed)+1;}}}else{break;}}return line.substr(readed);}},{key:\"_isBinary\",value:function _isBinary(binData){var reader=new DataView(binData);var face_size=32/8*3+32/8*3*3+16/8;var n_faces=reader.getUint32(80,true);var expect=80+32/8+n_faces*face_size;if(expect===reader.byteLength){return true;}var fileLength=reader.byteLength;for(let index=0;index127){return true;}}return false;}},{key:\"_ensureBinary\",value:function _ensureBinary(buf){if(typeof buf===\"string\"){var array_buffer=new Uint8Array(buf.length);for(let i2=0;i20&&findEnd>find1){var _currentObject={};_currentObject.children=[];var nameData=this._readLine(this._data.substr(endRead,find1-endRead-1)).trim();var word=nameData.split(/ /g);if(word.length>0){_currentObject.type=word[0];if(word.length>=2){_currentObject.name=word[1];}else{_currentObject.name=word[0]+this.Hierarchies.children.length;}}else{_currentObject.name=nameData;_currentObject.type=\"\";}if(_currentObject.type===\"Animation\"){_currentObject.data=this._data.substr(findNext,findEnd-findNext).trim();var refs=this._hierarchieParse(_currentObject,findEnd+1);endRead=refs.end;_currentObject.children=refs.parent.children;}else{var DataEnder=this._data.lastIndexOf(\";\",findNext>0?Math.min(findNext,findEnd):findEnd);_currentObject.data=this._data.substr(find1,DataEnder-find1).trim();if(findNext<=0||findEnd0||!this._currentObject.worked){setTimeout(function(){_this2._mainloop();},1);}else{setTimeout(function(){_this2.onLoad({models:_this2.Meshes,animations:_this2.animations});},1);}}},{key:\"_mainProc\",value:function _mainProc(){var breakFlag=false;while(true){if(!this._currentObject.worked){switch(this._currentObject.type){case\"template\":break;case\"AnimTicksPerSecond\":this.animTicksPerSecond=parseInt(this._currentObject.data);break;case\"Frame\":this._setFrame();break;case\"FrameTransformMatrix\":this._setFrameTransformMatrix();break;case\"Mesh\":this._changeRoot();this._currentGeo={};this._currentGeo.name=this._currentObject.name.trim();this._currentGeo.parentName=this._getParentName(this._currentObject).trim();this._currentGeo.VertexSetedBoneCount=[];this._currentGeo.GeometryData={vertices:[],normals:[],uvs:[],skinIndices:[],skinWeights:[],indices:[],materialIndices:[]};this._currentGeo.Materials=[];this._currentGeo.normalVectors=[];this._currentGeo.BoneInfs=[];this._currentGeo.baseFrame=this._currentFrame;this._makeBoneFrom_CurrentFrame();this._readVertexDatas();breakFlag=true;break;case\"MeshNormals\":this._readVertexDatas();break;case\"MeshTextureCoords\":this._setMeshTextureCoords();break;case\"VertexDuplicationIndices\":break;case\"MeshMaterialList\":this._setMeshMaterialList();break;case\"Material\":this._setMaterial();break;case\"SkinWeights\":this._setSkinWeights();break;case\"AnimationSet\":this._changeRoot();this._currentAnime={};this._currentAnime.name=this._currentObject.name.trim();this._currentAnime.AnimeFrames=[];break;case\"Animation\":if(this._currentAnimeFrames){this._currentAnime.AnimeFrames.push(this._currentAnimeFrames);}this._currentAnimeFrames=new XAnimationInfo();this._currentAnimeFrames.boneName=this._currentObject.data.trim();break;case\"AnimationKey\":this._readAnimationKey();breakFlag=true;break;}this._currentObject.worked=true;}if(this._currentObject.children.length>0){this._currentObject=this._currentObject.children.shift();if(this.debug){console.log(\"processing \"+this._currentObject.name);}if(breakFlag)break;}else{if(this._currentObject.worked){if(this._currentObject.parent&&!this._currentObject.parent.parent){this._changeRoot();}}if(this._currentObject.parent){this._currentObject=this._currentObject.parent;}else{breakFlag=true;}if(breakFlag)break;}}return;}},{key:\"_changeRoot\",value:function _changeRoot(){if(this._currentGeo!=null&&this._currentGeo.name){this._makeOutputGeometry();}this._currentGeo={};if(this._currentAnime!=null&&this._currentAnime.name){if(this._currentAnimeFrames){this._currentAnime.AnimeFrames.push(this._currentAnimeFrames);this._currentAnimeFrames=null;}this._makeOutputAnimation();}this._currentAnime={};}},{key:\"_getParentName\",value:function _getParentName(_obj2){if(_obj2.parent){if(_obj2.parent.name){return _obj2.parent.name;}else{return this._getParentName(_obj2.parent);}}else{return\"\";}}},{key:\"_setFrame\",value:function _setFrame(){this._nowFrameName=this._currentObject.name.trim();this._currentFrame={};this._currentFrame.name=this._nowFrameName;this._currentFrame.children=[];if(this._currentObject.parent&&this._currentObject.parent.name){this._currentFrame.parentName=this._currentObject.parent.name;}this.frameHierarchie.push(this._nowFrameName);this.HieStack[this._nowFrameName]=this._currentFrame;}},{key:\"_setFrameTransformMatrix\",value:function _setFrameTransformMatrix(){this._currentFrame.FrameTransformMatrix=new Matrix4();var data=this._currentObject.data.split(\",\");this._ParseMatrixData(this._currentFrame.FrameTransformMatrix,data);this._makeBoneFrom_CurrentFrame();}},{key:\"_makeBoneFrom_CurrentFrame\",value:function _makeBoneFrom_CurrentFrame(){if(!this._currentFrame.FrameTransformMatrix){return;}var b2=new Bone();b2.name=this._currentFrame.name;b2.applyMatrix4(this._currentFrame.FrameTransformMatrix);b2.matrixWorld=b2.matrix;b2.FrameTransformMatrix=this._currentFrame.FrameTransformMatrix;this._currentFrame.putBone=b2;if(this._currentFrame.parentName){for(let frame in this.HieStack){if(this.HieStack[frame].name===this._currentFrame.parentName){this.HieStack[frame].putBone.add(this._currentFrame.putBone);}}}}},{key:\"_readVertexDatas\",value:function _readVertexDatas(){var endRead=0;var mode=0;var mode_local=0;var maxLength=0;while(true){var changeMode=false;if(mode_local===0){var refO=this._readInt1(endRead);endRead=refO.endRead;mode_local=1;maxLength=this._currentObject.data.indexOf(\";;\",endRead)+1;if(maxLength<=0){maxLength=this._currentObject.data.length;}}else{var find=0;switch(mode){case 0:find=this._currentObject.data.indexOf(\",\",endRead)+1;break;case 1:find=this._currentObject.data.indexOf(\";,\",endRead)+1;break;}if(find===0||find>maxLength){find=maxLength;mode_local=0;changeMode=true;}switch(this._currentObject.type){case\"Mesh\":switch(mode){case 0:this._readVertex1(this._currentObject.data.substr(endRead,find-endRead));break;case 1:this._readFace1(this._currentObject.data.substr(endRead,find-endRead));break;}break;case\"MeshNormals\":switch(mode){case 0:this._readNormalVector1(this._currentObject.data.substr(endRead,find-endRead));break;}break;}endRead=find+1;if(changeMode){mode++;}}if(endRead>=this._currentObject.data.length){break;}}}},{key:\"_readInt1\",value:function _readInt1(start){var find=this._currentObject.data.indexOf(\";\",start);return{refI:parseInt(this._currentObject.data.substr(start,find-start)),endRead:find+1};}},{key:\"_readVertex1\",value:function _readVertex1(line){var data=this._readLine(line.trim()).substr(0,line.length-2).split(\";\");this._currentGeo.GeometryData.vertices.push(parseFloat(data[0]),parseFloat(data[1]),parseFloat(data[2]));this._currentGeo.GeometryData.skinIndices.push(0,0,0,0);this._currentGeo.GeometryData.skinWeights.push(1,0,0,0);this._currentGeo.VertexSetedBoneCount.push(0);}},{key:\"_readFace1\",value:function _readFace1(line){var data=this._readLine(line.trim()).substr(2,line.length-4).split(\",\");this._currentGeo.GeometryData.indices.push(parseInt(data[0],10),parseInt(data[1],10),parseInt(data[2],10));}},{key:\"_readNormalVector1\",value:function _readNormalVector1(line){var data=this._readLine(line.trim()).substr(0,line.length-2).split(\";\");this._currentGeo.GeometryData.normals.push(parseFloat(data[0]),parseFloat(data[1]),parseFloat(data[2]));}},{key:\"_buildGeometry\",value:function _buildGeometry(){var bufferGeometry=new BufferGeometry();var position=[];var normals=[];var uvs=[];var skinIndices=[];var skinWeights=[];var data=this._currentGeo.GeometryData;for(let i2=0,l=data.indices.length;i2=this._currentObject.data.length){break;}}}},{key:\"_setMeshMaterialList\",value:function _setMeshMaterialList(){var endRead=0;var mode=0;var mode_local=0;while(true){if(mode_local<2){var refO=this._readInt1(endRead);endRead=refO.endRead;mode_local++;}else{var find=this._currentObject.data.indexOf(\";\",endRead);if(find===-1){find=this._currentObject.data.length;mode=3;mode_local=0;}var line=this._currentObject.data.substr(endRead,find-endRead);var data=this._readLine(line.trim()).split(\",\");for(let i2=0;i2=this._currentObject.data.length||mode>=3){break;}}}},{key:\"_setMaterial\",value:function _setMaterial(){var _nowMat=new MeshPhongMaterial({color:Math.random()*16777215});_nowMat.side=FrontSide;_nowMat.name=this._currentObject.name;var endRead=0;var find=this._currentObject.data.indexOf(\";;\",endRead);var line=this._currentObject.data.substr(endRead,find-endRead);var data=this._readLine(line.trim()).split(\";\");_nowMat.color.r=parseFloat(data[0]);_nowMat.color.g=parseFloat(data[1]);_nowMat.color.b=parseFloat(data[2]);endRead=find+2;find=this._currentObject.data.indexOf(\";\",endRead);line=this._currentObject.data.substr(endRead,find-endRead);_nowMat.shininess=parseFloat(this._readLine(line));endRead=find+1;find=this._currentObject.data.indexOf(\";;\",endRead);line=this._currentObject.data.substr(endRead,find-endRead);var data2=this._readLine(line.trim()).split(\";\");_nowMat.specular.r=parseFloat(data2[0]);_nowMat.specular.g=parseFloat(data2[1]);_nowMat.specular.b=parseFloat(data2[2]);endRead=find+2;find=this._currentObject.data.indexOf(\";;\",endRead);if(find===-1){find=this._currentObject.data.length;}line=this._currentObject.data.substr(endRead,find-endRead);var data3=this._readLine(line.trim()).split(\";\");_nowMat.emissive.r=parseFloat(data3[0]);_nowMat.emissive.g=parseFloat(data3[1]);_nowMat.emissive.b=parseFloat(data3[2]);var localObject=null;while(true){if(this._currentObject.children.length>0){localObject=this._currentObject.children.shift();if(this.debug){console.log(\"processing \"+localObject.name);}var fileName=localObject.data.substr(1,localObject.data.length-2);switch(localObject.type){case\"TextureFilename\":_nowMat.map=this.texloader.load(fileName);break;case\"BumpMapFilename\":_nowMat.bumpMap=this.texloader.load(fileName);_nowMat.bumpScale=0.05;break;case\"NormalMapFilename\":_nowMat.normalMap=this.texloader.load(fileName);_nowMat.normalScale=new Vector2(2,2);break;case\"EmissiveMapFilename\":_nowMat.emissiveMap=this.texloader.load(fileName);break;case\"LightMapFilename\":_nowMat.lightMap=this.texloader.load(fileName);break;}}else{break;}}this._currentGeo.Materials.push(_nowMat);}},{key:\"_setSkinWeights\",value:function _setSkinWeights(){var boneInf=new XboneInf();var endRead=0;var find=this._currentObject.data.indexOf(\";\",endRead);var line=this._currentObject.data.substr(endRead,find-endRead);endRead=find+1;boneInf.boneName=line.substr(1,line.length-2);boneInf.BoneIndex=this._currentGeo.BoneInfs.length;find=this._currentObject.data.indexOf(\";\",endRead);endRead=find+1;find=this._currentObject.data.indexOf(\";\",endRead);line=this._currentObject.data.substr(endRead,find-endRead);var data=this._readLine(line.trim()).split(\",\");for(let i2=0;i20){for(let i2=0;i2<_bones.length;i2++){if(this.HieStack[frame].parentName===_bones[i2].name){_bones[i2].add(b2);b2.parent=i2;break;}}}_bones.push(b2);}}}},{key:\"_makeOutputGeometry\",value:function _makeOutputGeometry(){var mesh=null;if(this._currentGeo.BoneInfs.length>0){var putBones=[];this._makePutBoneList(this._currentGeo.baseFrame.parentName,putBones);for(let bi=0;bi4){console.log(\"warn! over 4 bone weight! :\"+nowVertexID);}}}for(let sk=0;sk0)tracks.push(new VectorKeyframeTrack(name+\".position\",times,positionData));if(quaternionData.length>0){tracks.push(new QuaternionKeyframeTrack(name+\".quaternion\",times,quaternionData));}if(scaleData.length>0)tracks.push(new VectorKeyframeTrack(name+\".scale\",times,scaleData));return tracks;}function transformAnimationData(keyframes,property,defaultValue){let keyframe;let empty=true;let i2,l;for(i2=0,l=keyframes.length;i2=0){const keyframe=keyframes[i2];if(keyframe.value[property]!==null)return keyframe;i2--;}return null;}function getNext(keyframes,i2,property){while(i2>>0)+2);extension=extension.toLowerCase();switch(extension){case\"tga\":loader=tgaLoader;break;default:loader=textureLoader;}return loader;}function buildMaterial(data){const effect=getEffect(data.url);const technique=effect.profile.technique;let material2;switch(technique.type){case\"phong\":case\"blinn\":material2=new MeshPhongMaterial();break;case\"lambert\":material2=new MeshLambertMaterial();break;default:material2=new MeshBasicMaterial();break;}material2.name=data.name||\"\";function getTexture(textureObject){const sampler=effect.profile.samplers[textureObject.id];let image=null;if(sampler!==void 0){const surface=effect.profile.surfaces[sampler.source];image=getImage(surface.init_from);}else{console.warn(\"THREE.ColladaLoader: Undefined sampler. Access image directly (see #12530).\");image=getImage(textureObject.id);}if(image!==null){const loader=getTextureLoader(image);if(loader!==void 0){const texture=loader.load(image);const extra=textureObject.extra;if(extra!==void 0&&extra.technique!==void 0&&isEmpty(extra.technique)===false){const technique2=extra.technique;texture.wrapS=technique2.wrapU?RepeatWrapping:ClampToEdgeWrapping;texture.wrapT=technique2.wrapV?RepeatWrapping:ClampToEdgeWrapping;texture.offset.set(technique2.offsetU||0,technique2.offsetV||0);texture.repeat.set(technique2.repeatU||1,technique2.repeatV||1);}else{texture.wrapS=RepeatWrapping;texture.wrapT=RepeatWrapping;}return texture;}else{console.warn(\"THREE.ColladaLoader: Loader for texture %s not found.\",image);return null;}}else{console.warn(\"THREE.ColladaLoader: Couldn't create texture with ID:\",textureObject.id);return null;}}const parameters=technique.parameters;for(const key in parameters){const parameter=parameters[key];switch(key){case\"diffuse\":if(parameter.color)material2.color.fromArray(parameter.color);if(parameter.texture)material2.map=getTexture(parameter.texture);break;case\"specular\":if(parameter.color&&material2.specular)material2.specular.fromArray(parameter.color);if(parameter.texture)material2.specularMap=getTexture(parameter.texture);break;case\"bump\":if(parameter.texture)material2.normalMap=getTexture(parameter.texture);break;case\"ambient\":if(parameter.texture)material2.lightMap=getTexture(parameter.texture);break;case\"shininess\":if(parameter.float&&material2.shininess)material2.shininess=parameter.float;break;case\"emission\":if(parameter.color&&material2.emissive)material2.emissive.fromArray(parameter.color);if(parameter.texture)material2.emissiveMap=getTexture(parameter.texture);break;}}let transparent=parameters[\"transparent\"];let transparency=parameters[\"transparency\"];if(transparency===void 0&&transparent){transparency={float:1};}if(transparent===void 0&&transparency){transparent={opaque:\"A_ONE\",data:{color:[1,1,1,1]}};}if(transparent&&transparency){if(transparent.data.texture){material2.transparent=true;}else{const color=transparent.data.color;switch(transparent.opaque){case\"A_ONE\":material2.opacity=color[3]*transparency.float;break;case\"RGB_ZERO\":material2.opacity=1-color[0]*transparency.float;break;case\"A_ZERO\":material2.opacity=1-color[3]*transparency.float;break;case\"RGB_ONE\":material2.opacity=color[0]*transparency.float;break;default:console.warn('THREE.ColladaLoader: Invalid opaque type \"%s\" of transparent tag.',transparent.opaque);}if(material2.opacity<1)material2.transparent=true;}}if(technique.extra!==void 0&&technique.extra.technique!==void 0){const techniques=technique.extra.technique;for(const k in techniques){const v=techniques[k];switch(k){case\"double_sided\":material2.side=v===1?DoubleSide:FrontSide;break;case\"bump\":material2.normalMap=getTexture(v.texture);material2.normalScale=new Vector2(1,1);break;}}}return material2;}function getMaterial2(id){return getBuild(library.materials[id],buildMaterial);}function parseCamera(xml2){const data={name:xml2.getAttribute(\"name\")};for(let i2=0,l=xml2.childNodes.length;i20?semantic+set:semantic;primitive.inputs[inputname]={id,offset};primitive.stride=Math.max(primitive.stride,offset+1);if(semantic===\"TEXCOORD\")primitive.hasUV=true;break;case\"vcount\":primitive.vcount=parseInts(child.textContent);break;case\"p\":primitive.p=parseInts(child.textContent);break;}}return primitive;}function groupPrimitives(primitives){const build={};for(let i2=0;i20&&count20){geometry2.setAttribute(\"position\",new Float32BufferAttribute(position2.array,position2.stride));}if(normal.array.length>0){geometry2.setAttribute(\"normal\",new Float32BufferAttribute(normal.array,normal.stride));}if(color.array.length>0)geometry2.setAttribute(\"color\",new Float32BufferAttribute(color.array,color.stride));if(uv.array.length>0)geometry2.setAttribute(\"uv\",new Float32BufferAttribute(uv.array,uv.stride));if(uv2.array.length>0)geometry2.setAttribute(\"uv2\",new Float32BufferAttribute(uv2.array,uv2.stride));if(skinIndex.array.length>0){geometry2.setAttribute(\"skinIndex\",new Float32BufferAttribute(skinIndex.array,skinIndex.stride));}if(skinWeight.array.length>0){geometry2.setAttribute(\"skinWeight\",new Float32BufferAttribute(skinWeight.array,skinWeight.stride));}build.data=geometry2;build.type=primitives[0].type;build.materialKeys=materialKeys;return build;}function buildGeometryData(primitive,source,offset,array){const indices=primitive.p;const stride=primitive.stride;const vcount=primitive.vcount;function pushVector(i2){let index=indices[i2+offset]*sourceStride;const length=index+sourceStride;for(;index4){for(let k=1,kl=count2-2;k<=kl;k++){const a2=index+stride*0;const b2=index+stride*k;const c=index+stride*(k+1);pushVector(a2);pushVector(b2);pushVector(c);}}index+=stride*count2;}}else{for(let i2=0,l=indices.length;i2=data.limits.max){data.static=true;}data.middlePosition=(data.limits.min+data.limits.max)/2;return data;}function parseKinematicsLink(xml2){const data={sid:xml2.getAttribute(\"sid\"),name:xml2.getAttribute(\"name\")||\"\",attachments:[],transforms:[]};for(let i2=0;i2joint.limits.max||value{var freeGlobal=typeof global==\"object\"&&global&&global.Object===Object&&global;const freeGlobal$1=freeGlobal;var freeSelf=typeof self==\"object\"&&self&&self.Object===Object&&self;var root=freeGlobal$1||freeSelf||Function(\"return this\")();const root$1=root;var Symbol$1=root$1.Symbol;const Symbol$2=Symbol$1;var objectProto$j=Object.prototype;var hasOwnProperty$g=objectProto$j.hasOwnProperty;var nativeObjectToString$1=objectProto$j.toString;var symToStringTag$1=Symbol$2?Symbol$2.toStringTag:void 0;function getRawTag(value){var isOwn=hasOwnProperty$g.call(value,symToStringTag$1),tag=value[symToStringTag$1];try{value[symToStringTag$1]=void 0;var unmasked=true;}catch(e){}var result=nativeObjectToString$1.call(value);if(unmasked){if(isOwn){value[symToStringTag$1]=tag;}else{delete value[symToStringTag$1];}}return result;}var objectProto$i=Object.prototype;var nativeObjectToString=objectProto$i.toString;function objectToString(value){return nativeObjectToString.call(value);}var nullTag=\"[object Null]\",undefinedTag=\"[object Undefined]\";var symToStringTag=Symbol$2?Symbol$2.toStringTag:void 0;function baseGetTag(value){if(value==null){return value===void 0?undefinedTag:nullTag;}return symToStringTag&&symToStringTag in Object(value)?getRawTag(value):objectToString(value);}function isObjectLike(value){return value!=null&&typeof value==\"object\";}var symbolTag$3=\"[object Symbol]\";function isSymbol(value){return typeof value==\"symbol\"||isObjectLike(value)&&baseGetTag(value)==symbolTag$3;}function arrayMap(array,iteratee){var index=-1,length=array==null?0:array.length,result=Array(length);while(++index0){if(++count>=HOT_COUNT){return arguments[0];}}else{count=0;}return func.apply(void 0,arguments);};}function constant(value){return function(){return value;};}var defineProperty=function(){try{var func=getNative(Object,\"defineProperty\");func({},\"\",{});return func;}catch(e){}}();const defineProperty$1=defineProperty;var baseSetToString=!defineProperty$1?identity:function(func,string){return defineProperty$1(func,\"toString\",{configurable:true,enumerable:false,value:constant(string),writable:true});};const baseSetToString$1=baseSetToString;var setToString=shortOut(baseSetToString$1);const setToString$1=setToString;function arrayEach(array,iteratee){var index=-1,length=array==null?0:array.length;while(++index-1;}var MAX_SAFE_INTEGER$1=9007199254740991;var reIsUint=/^(?:0|[1-9]\\d*)$/;function isIndex(value,length){var type=typeof value;length=length==null?MAX_SAFE_INTEGER$1:length;return!!length&&(type==\"number\"||type!=\"symbol\"&&reIsUint.test(value))&&value>-1&&value%1==0&&value-1&&value%1==0&&value<=MAX_SAFE_INTEGER;}function isArrayLike(value){return value!=null&&isLength(value.length)&&!isFunction(value);}function isIterateeCall(value,index,object){if(!isObject(object)){return false;}var type=typeof index;if(type==\"number\"?isArrayLike(object)&&isIndex(index,object.length):type==\"string\"&&index in object){return eq(object[index],value);}return false;}function createAssigner(assigner){return baseRest(function(object,sources){var index=-1,length=sources.length,customizer=length>1?sources[length-1]:void 0,guard=length>2?sources[2]:void 0;customizer=assigner.length>3&&typeof customizer==\"function\"?(length--,customizer):void 0;if(guard&&isIterateeCall(sources[0],sources[1],guard)){customizer=length<3?void 0:customizer;length=1;}object=Object(object);while(++index-1;}function listCacheSet(key,value){var data=this.__data__,index=assocIndexOf(data,key);if(index<0){++this.size;data.push([key,value]);}else{data[index][1]=value;}return this;}function ListCache(entries){var index=-1,length=entries==null?0:entries.length;this.clear();while(++index0&&predicate(value)){if(depth>1){baseFlatten(value,depth-1,predicate,isStrict,result);}else{arrayPush(result,value);}}else if(!isStrict){result[result.length]=value;}}return result;}function flatten(array){var length=array==null?0:array.length;return length?baseFlatten(array,1):[];}var getPrototype=overArg(Object.getPrototypeOf,Object);const getPrototype$1=getPrototype;function baseSlice(array,start,end){var index=-1,length=array.length;if(start<0){start=-start>length?0:length+start;}end=end>length?length:end;if(end<0){end+=length;}length=start>end?0:end-start>>>0;start>>>=0;var result=Array(length);while(++indexarrLength)){return false;}var arrStacked=stack.get(array);var othStacked=stack.get(other);if(arrStacked&&othStacked){return arrStacked==other&&othStacked==array;}var index=-1,result=true,seen=bitmask&COMPARE_UNORDERED_FLAG$3?new SetCache():void 0;stack.set(array,other);stack.set(other,array);while(++index2?sources[2]:void 0;if(guard&&isIterateeCall(sources[0],sources[1],guard)){length=1;}while(++index=LARGE_ARRAY_SIZE$1){includes2=cacheHas;isCommon=false;values2=new SetCache(values2);}outer:while(++index-1?iterable[iteratee?collection[index]:index]:void 0;};}var nativeMax$2=Math.max;function findIndex(array,predicate,fromIndex){var length=array==null?0:array.length;if(!length){return-1;}var index=fromIndex==null?0:toInteger(fromIndex);if(index<0){index=nativeMax$2(length+index,0);}return baseFindIndex(array,baseIteratee(predicate),index);}var find=createFind(findIndex);const find$1=find;function head(array){return array&&array.length?array[0]:void 0;}function baseMap(collection,iteratee){var index=-1,result=isArrayLike(collection)?Array(collection.length):[];baseEach$1(collection,function(value,key,collection2){result[++index]=iteratee(value,key,collection2);});return result;}function map(collection,iteratee){var func=isArray$1(collection)?arrayMap:baseMap;return func(collection,baseIteratee(iteratee));}function flatMap(collection,iteratee){return baseFlatten(map(collection,iteratee),1);}var objectProto$2=Object.prototype;var hasOwnProperty$2=objectProto$2.hasOwnProperty;var groupBy=createAggregator(function(result,value,key){if(hasOwnProperty$2.call(result,key)){result[key].push(value);}else{baseAssignValue(result,key,[value]);}});const groupBy$1=groupBy;var objectProto$1=Object.prototype;var hasOwnProperty$1=objectProto$1.hasOwnProperty;function baseHas(object,key){return object!=null&&hasOwnProperty$1.call(object,key);}function has(object,path){return object!=null&&hasPath(object,path,baseHas);}var stringTag=\"[object String]\";function isString(value){return typeof value==\"string\"||!isArray$1(value)&&isObjectLike(value)&&baseGetTag(value)==stringTag;}function baseValues(object,props){return arrayMap(props,function(key){return object[key];});}function values(object){return object==null?[]:baseValues(object,keys(object));}var nativeMax$1=Math.max;function includes(collection,value,fromIndex,guard){collection=isArrayLike(collection)?collection:values(collection);fromIndex=fromIndex&&!guard?toInteger(fromIndex):0;var length=collection.length;if(fromIndex<0){fromIndex=nativeMax$1(length+fromIndex,0);}return isString(collection)?fromIndex<=length&&collection.indexOf(value,fromIndex)>-1:!!length&&baseIndexOf(collection,value,fromIndex)>-1;}var nativeMax=Math.max;function indexOf(array,value,fromIndex){var length=array==null?0:array.length;if(!length){return-1;}var index=fromIndex==null?0:toInteger(fromIndex);if(index<0){index=nativeMax(length+index,0);}return baseIndexOf(array,value,index);}var mapTag=\"[object Map]\",setTag=\"[object Set]\";var objectProto=Object.prototype;var hasOwnProperty=objectProto.hasOwnProperty;function isEmpty(value){if(value==null){return true;}if(isArrayLike(value)&&(isArray$1(value)||typeof value==\"string\"||typeof value.splice==\"function\"||isBuffer$1(value)||isTypedArray$1(value)||isArguments$1(value))){return!value.length;}var tag=getTag$1(value);if(tag==mapTag||tag==setTag){return!value.size;}if(isPrototype(value)){return!baseKeys(value).length;}for(var key in value){if(hasOwnProperty.call(value,key)){return false;}}return true;}var regexpTag=\"[object RegExp]\";function baseIsRegExp(value){return isObjectLike(value)&&baseGetTag(value)==regexpTag;}var nodeIsRegExp=nodeUtil$1&&nodeUtil$1.isRegExp;var isRegExp=nodeIsRegExp?baseUnary(nodeIsRegExp):baseIsRegExp;const isRegExp$1=isRegExp;function isUndefined(value){return value===void 0;}var FUNC_ERROR_TEXT=\"Expected a function\";function negate(predicate){if(typeof predicate!=\"function\"){throw new TypeError(FUNC_ERROR_TEXT);}return function(){var args=arguments;switch(args.length){case 0:return!predicate.call(this);case 1:return!predicate.call(this,args[0]);case 2:return!predicate.call(this,args[0],args[1]);case 3:return!predicate.call(this,args[0],args[1],args[2]);}return!predicate.apply(this,args);};}function baseSet(object,path,value,customizer){if(!isObject(object)){return object;}path=castPath(path,object);var index=-1,length=path.length,lastIndex=length-1,nested=object;while(nested!=null&&++index=LARGE_ARRAY_SIZE){var set=iteratee?null:createSet$1(array);if(set){return setToArray(set);}isCommon=false;includes2=cacheHas;seen=new SetCache();}else{seen=iteratee?[]:result;}outer:while(++index{prod.accept(visitor);});}}class NonTerminal extends AbstractProduction{constructor(options){super([]);this.idx=1;assign$1(this,pickBy(options,v=>v!==void 0));}set definition(definition){}get definition(){if(this.referencedRule!==void 0){return this.referencedRule.definition;}return[];}accept(visitor){visitor.visit(this);}}class Rule extends AbstractProduction{constructor(options){super(options.definition);this.orgText=\"\";assign$1(this,pickBy(options,v=>v!==void 0));}}class Alternative extends AbstractProduction{constructor(options){super(options.definition);this.ignoreAmbiguities=false;assign$1(this,pickBy(options,v=>v!==void 0));}}class Option extends AbstractProduction{constructor(options){super(options.definition);this.idx=1;assign$1(this,pickBy(options,v=>v!==void 0));}}class RepetitionMandatory extends AbstractProduction{constructor(options){super(options.definition);this.idx=1;assign$1(this,pickBy(options,v=>v!==void 0));}}class RepetitionMandatoryWithSeparator extends AbstractProduction{constructor(options){super(options.definition);this.idx=1;assign$1(this,pickBy(options,v=>v!==void 0));}}class Repetition extends AbstractProduction{constructor(options){super(options.definition);this.idx=1;assign$1(this,pickBy(options,v=>v!==void 0));}}class RepetitionWithSeparator extends AbstractProduction{constructor(options){super(options.definition);this.idx=1;assign$1(this,pickBy(options,v=>v!==void 0));}}class Alternation extends AbstractProduction{get definition(){return this._definition;}set definition(value){this._definition=value;}constructor(options){super(options.definition);this.idx=1;this.ignoreAmbiguities=false;this.hasPredicates=false;assign$1(this,pickBy(options,v=>v!==void 0));}}class Terminal{constructor(options){this.idx=1;assign$1(this,pickBy(options,v=>v!==void 0));}accept(visitor){visitor.visit(this);}}function serializeGrammar(topRules){return map(topRules,serializeProduction);}function serializeProduction(node){function convertDefinition(definition){return map(definition,serializeProduction);}if(node instanceof NonTerminal){const serializedNonTerminal={type:\"NonTerminal\",name:node.nonTerminalName,idx:node.idx};if(isString(node.label)){serializedNonTerminal.label=node.label;}return serializedNonTerminal;}else if(node instanceof Alternative){return{type:\"Alternative\",definition:convertDefinition(node.definition)};}else if(node instanceof Option){return{type:\"Option\",idx:node.idx,definition:convertDefinition(node.definition)};}else if(node instanceof RepetitionMandatory){return{type:\"RepetitionMandatory\",idx:node.idx,definition:convertDefinition(node.definition)};}else if(node instanceof RepetitionMandatoryWithSeparator){return{type:\"RepetitionMandatoryWithSeparator\",idx:node.idx,separator:serializeProduction(new Terminal({terminalType:node.separator})),definition:convertDefinition(node.definition)};}else if(node instanceof RepetitionWithSeparator){return{type:\"RepetitionWithSeparator\",idx:node.idx,separator:serializeProduction(new Terminal({terminalType:node.separator})),definition:convertDefinition(node.definition)};}else if(node instanceof Repetition){return{type:\"Repetition\",idx:node.idx,definition:convertDefinition(node.definition)};}else if(node instanceof Alternation){return{type:\"Alternation\",idx:node.idx,definition:convertDefinition(node.definition)};}else if(node instanceof Terminal){const serializedTerminal={type:\"Terminal\",name:node.terminalType.name,label:tokenLabel$1(node.terminalType),idx:node.idx};if(isString(node.label)){serializedTerminal.terminalLabel=node.label;}const pattern=node.terminalType.PATTERN;if(node.terminalType.PATTERN){serializedTerminal.pattern=isRegExp$1(pattern)?pattern.source:pattern;}return serializedTerminal;}else if(node instanceof Rule){return{type:\"Rule\",name:node.name,orgText:node.orgText,definition:convertDefinition(node.definition)};}else{throw Error(\"non exhaustive match\");}}class GAstVisitor{visit(node){const nodeAny=node;switch(nodeAny.constructor){case NonTerminal:return this.visitNonTerminal(nodeAny);case Alternative:return this.visitAlternative(nodeAny);case Option:return this.visitOption(nodeAny);case RepetitionMandatory:return this.visitRepetitionMandatory(nodeAny);case RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(nodeAny);case RepetitionWithSeparator:return this.visitRepetitionWithSeparator(nodeAny);case Repetition:return this.visitRepetition(nodeAny);case Alternation:return this.visitAlternation(nodeAny);case Terminal:return this.visitTerminal(nodeAny);case Rule:return this.visitRule(nodeAny);default:throw Error(\"non exhaustive match\");}}/* c8 ignore next */visitNonTerminal(node){}/* c8 ignore next */visitAlternative(node){}/* c8 ignore next */visitOption(node){}/* c8 ignore next */visitRepetition(node){}/* c8 ignore next */visitRepetitionMandatory(node){}/* c8 ignore next 3 */visitRepetitionMandatoryWithSeparator(node){}/* c8 ignore next */visitRepetitionWithSeparator(node){}/* c8 ignore next */visitAlternation(node){}/* c8 ignore next */visitTerminal(node){}/* c8 ignore next */visitRule(node){}}function isSequenceProd(prod){return prod instanceof Alternative||prod instanceof Option||prod instanceof Repetition||prod instanceof RepetitionMandatory||prod instanceof RepetitionMandatoryWithSeparator||prod instanceof RepetitionWithSeparator||prod instanceof Terminal||prod instanceof Rule;}function isOptionalProd(prod,alreadyVisited=[]){const isDirectlyOptional=prod instanceof Option||prod instanceof Repetition||prod instanceof RepetitionWithSeparator;if(isDirectlyOptional){return true;}if(prod instanceof Alternation){return some(prod.definition,subProd=>{return isOptionalProd(subProd,alreadyVisited);});}else if(prod instanceof NonTerminal&&includes(alreadyVisited,prod)){return false;}else if(prod instanceof AbstractProduction){if(prod instanceof NonTerminal){alreadyVisited.push(prod);}return every(prod.definition,subProd=>{return isOptionalProd(subProd,alreadyVisited);});}else{return false;}}function isBranchingProd(prod){return prod instanceof Alternation;}function getProductionDslName(prod){if(prod instanceof NonTerminal){return\"SUBRULE\";}else if(prod instanceof Option){return\"OPTION\";}else if(prod instanceof Alternation){return\"OR\";}else if(prod instanceof RepetitionMandatory){return\"AT_LEAST_ONE\";}else if(prod instanceof RepetitionMandatoryWithSeparator){return\"AT_LEAST_ONE_SEP\";}else if(prod instanceof RepetitionWithSeparator){return\"MANY_SEP\";}else if(prod instanceof Repetition){return\"MANY\";}else if(prod instanceof Terminal){return\"CONSUME\";}else{throw Error(\"non exhaustive match\");}}class RestWalker{walk(prod,prevRest=[]){forEach(prod.definition,(subProd,index)=>{const currRest=drop(prod.definition,index+1);if(subProd instanceof NonTerminal){this.walkProdRef(subProd,currRest,prevRest);}else if(subProd instanceof Terminal){this.walkTerminal(subProd,currRest,prevRest);}else if(subProd instanceof Alternative){this.walkFlat(subProd,currRest,prevRest);}else if(subProd instanceof Option){this.walkOption(subProd,currRest,prevRest);}else if(subProd instanceof RepetitionMandatory){this.walkAtLeastOne(subProd,currRest,prevRest);}else if(subProd instanceof RepetitionMandatoryWithSeparator){this.walkAtLeastOneSep(subProd,currRest,prevRest);}else if(subProd instanceof RepetitionWithSeparator){this.walkManySep(subProd,currRest,prevRest);}else if(subProd instanceof Repetition){this.walkMany(subProd,currRest,prevRest);}else if(subProd instanceof Alternation){this.walkOr(subProd,currRest,prevRest);}else{throw Error(\"non exhaustive match\");}});}walkTerminal(terminal,currRest,prevRest){}walkProdRef(refProd,currRest,prevRest){}walkFlat(flatProd,currRest,prevRest){const fullOrRest=currRest.concat(prevRest);this.walk(flatProd,fullOrRest);}walkOption(optionProd,currRest,prevRest){const fullOrRest=currRest.concat(prevRest);this.walk(optionProd,fullOrRest);}walkAtLeastOne(atLeastOneProd,currRest,prevRest){const fullAtLeastOneRest=[new Option({definition:atLeastOneProd.definition})].concat(currRest,prevRest);this.walk(atLeastOneProd,fullAtLeastOneRest);}walkAtLeastOneSep(atLeastOneSepProd,currRest,prevRest){const fullAtLeastOneSepRest=restForRepetitionWithSeparator(atLeastOneSepProd,currRest,prevRest);this.walk(atLeastOneSepProd,fullAtLeastOneSepRest);}walkMany(manyProd,currRest,prevRest){const fullManyRest=[new Option({definition:manyProd.definition})].concat(currRest,prevRest);this.walk(manyProd,fullManyRest);}walkManySep(manySepProd,currRest,prevRest){const fullManySepRest=restForRepetitionWithSeparator(manySepProd,currRest,prevRest);this.walk(manySepProd,fullManySepRest);}walkOr(orProd,currRest,prevRest){const fullOrRest=currRest.concat(prevRest);forEach(orProd.definition,alt=>{const prodWrapper=new Alternative({definition:[alt]});this.walk(prodWrapper,fullOrRest);});}}function restForRepetitionWithSeparator(repSepProd,currRest,prevRest){const repSepRest=[new Option({definition:[new Terminal({terminalType:repSepProd.separator})].concat(repSepProd.definition)})];const fullRepSepRest=repSepRest.concat(currRest,prevRest);return fullRepSepRest;}function first(prod){if(prod instanceof NonTerminal){return first(prod.referencedRule);}else if(prod instanceof Terminal){return firstForTerminal(prod);}else if(isSequenceProd(prod)){return firstForSequence(prod);}else if(isBranchingProd(prod)){return firstForBranching(prod);}else{throw Error(\"non exhaustive match\");}}function firstForSequence(prod){let firstSet=[];const seq=prod.definition;let nextSubProdIdx=0;let hasInnerProdsRemaining=seq.length>nextSubProdIdx;let currSubProd;let isLastInnerProdOptional=true;while(hasInnerProdsRemaining&&isLastInnerProdOptional){currSubProd=seq[nextSubProdIdx];isLastInnerProdOptional=isOptionalProd(currSubProd);firstSet=firstSet.concat(first(currSubProd));nextSubProdIdx=nextSubProdIdx+1;hasInnerProdsRemaining=seq.length>nextSubProdIdx;}return uniq(firstSet);}function firstForBranching(prod){const allAlternativesFirsts=map(prod.definition,innerProd=>{return first(innerProd);});return uniq(flatten(allAlternativesFirsts));}function firstForTerminal(terminal){return[terminal.terminalType];}const IN=\"_~IN~_\";class ResyncFollowsWalker extends RestWalker{constructor(topProd){super();this.topProd=topProd;this.follows={};}startWalking(){this.walk(this.topProd);return this.follows;}walkTerminal(terminal,currRest,prevRest){}walkProdRef(refProd,currRest,prevRest){const followName=buildBetweenProdsFollowPrefix(refProd.referencedRule,refProd.idx)+this.topProd.name;const fullRest=currRest.concat(prevRest);const restProd=new Alternative({definition:fullRest});const t_in_topProd_follows=first(restProd);this.follows[followName]=t_in_topProd_follows;}}function computeAllProdsFollows(topProductions){const reSyncFollows={};forEach(topProductions,topProd=>{const currRefsFollow=new ResyncFollowsWalker(topProd).startWalking();assign$1(reSyncFollows,currRefsFollow);});return reSyncFollows;}function buildBetweenProdsFollowPrefix(inner,occurenceInParent){return inner.name+occurenceInParent+IN;}function cc(char){return char.charCodeAt(0);}function insertToSet(item,set){if(Array.isArray(item)){item.forEach(function(subItem){set.push(subItem);});}else{set.push(item);}}function addFlag(flagObj,flagKey){if(flagObj[flagKey]===true){throw\"duplicate flag \"+flagKey;}flagObj[flagKey];flagObj[flagKey]=true;}function ASSERT_EXISTS(obj){if(obj===void 0){throw Error(\"Internal Error - Should never get here!\");}return true;}function ASSERT_NEVER_REACH_HERE(){throw Error(\"Internal Error - Should never get here!\");}function isCharacter(obj){return obj[\"type\"]===\"Character\";}const digitsCharCodes=[];for(let i2=cc(\"0\");i2<=cc(\"9\");i2++){digitsCharCodes.push(i2);}const wordCharCodes=[cc(\"_\")].concat(digitsCharCodes);for(let i2=cc(\"a\");i2<=cc(\"z\");i2++){wordCharCodes.push(i2);}for(let i2=cc(\"A\");i2<=cc(\"Z\");i2++){wordCharCodes.push(i2);}const whitespaceCodes=[cc(\" \"),cc(\"\\f\"),cc(\"\\n\"),cc(\"\\r\"),cc(\"\t\"),cc(\"\\v\"),cc(\"\t\"),cc(\" \"),cc(\" \"),cc(\" \"),cc(\" \"),cc(\" \"),cc(\" \"),cc(\" \"),cc(\" \"),cc(\" \"),cc(\" \"),cc(\" \"),cc(\" \"),cc(\" \"),cc(\"\\u2028\"),cc(\"\\u2029\"),cc(\" \"),cc(\" \"),cc(\" \"),cc(\"\\uFEFF\")];const hexDigitPattern=/[0-9a-fA-F]/;const decimalPattern=/[0-9]/;const decimalPatternNoZero=/[1-9]/;class RegExpParser{constructor(){this.idx=0;this.input=\"\";this.groupIdx=0;}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx};}restoreState(newState){this.idx=newState.idx;this.input=newState.input;this.groupIdx=newState.groupIdx;}pattern(input){this.idx=0;this.input=input;this.groupIdx=0;this.consumeChar(\"/\");const value=this.disjunction();this.consumeChar(\"/\");const flags={type:\"Flags\",loc:{begin:this.idx,end:input.length},global:false,ignoreCase:false,multiLine:false,unicode:false,sticky:false};while(this.isRegExpFlag()){switch(this.popChar()){case\"g\":addFlag(flags,\"global\");break;case\"i\":addFlag(flags,\"ignoreCase\");break;case\"m\":addFlag(flags,\"multiLine\");break;case\"u\":addFlag(flags,\"unicode\");break;case\"y\":addFlag(flags,\"sticky\");break;}}if(this.idx!==this.input.length){throw Error(\"Redundant input: \"+this.input.substring(this.idx));}return{type:\"Pattern\",flags,value,loc:this.loc(0)};}disjunction(){const alts=[];const begin=this.idx;alts.push(this.alternative());while(this.peekChar()===\"|\"){this.consumeChar(\"|\");alts.push(this.alternative());}return{type:\"Disjunction\",value:alts,loc:this.loc(begin)};}alternative(){const terms=[];const begin=this.idx;while(this.isTerm()){terms.push(this.term());}return{type:\"Alternative\",value:terms,loc:this.loc(begin)};}term(){if(this.isAssertion()){return this.assertion();}else{return this.atom();}}assertion(){const begin=this.idx;switch(this.popChar()){case\"^\":return{type:\"StartAnchor\",loc:this.loc(begin)};case\"$\":return{type:\"EndAnchor\",loc:this.loc(begin)};case\"\\\\\":switch(this.popChar()){case\"b\":return{type:\"WordBoundary\",loc:this.loc(begin)};case\"B\":return{type:\"NonWordBoundary\",loc:this.loc(begin)};}throw Error(\"Invalid Assertion Escape\");case\"(\":this.consumeChar(\"?\");let type;switch(this.popChar()){case\"=\":type=\"Lookahead\";break;case\"!\":type=\"NegativeLookahead\";break;}ASSERT_EXISTS(type);const disjunction=this.disjunction();this.consumeChar(\")\");return{type,value:disjunction,loc:this.loc(begin)};}return ASSERT_NEVER_REACH_HERE();}quantifier(isBacktracking=false){let range=void 0;const begin=this.idx;switch(this.popChar()){case\"*\":range={atLeast:0,atMost:Infinity};break;case\"+\":range={atLeast:1,atMost:Infinity};break;case\"?\":range={atLeast:0,atMost:1};break;case\"{\":const atLeast=this.integerIncludingZero();switch(this.popChar()){case\"}\":range={atLeast,atMost:atLeast};break;case\",\":let atMost;if(this.isDigit()){atMost=this.integerIncludingZero();range={atLeast,atMost};}else{range={atLeast,atMost:Infinity};}this.consumeChar(\"}\");break;}if(isBacktracking===true&&range===void 0){return void 0;}ASSERT_EXISTS(range);break;}if(isBacktracking===true&&range===void 0){return void 0;}if(ASSERT_EXISTS(range)){if(this.peekChar(0)===\"?\"){this.consumeChar(\"?\");range.greedy=false;}else{range.greedy=true;}range.type=\"Quantifier\";range.loc=this.loc(begin);return range;}}atom(){let atom;const begin=this.idx;switch(this.peekChar()){case\".\":atom=this.dotAll();break;case\"\\\\\":atom=this.atomEscape();break;case\"[\":atom=this.characterClass();break;case\"(\":atom=this.group();break;}if(atom===void 0&&this.isPatternCharacter()){atom=this.patternCharacter();}if(ASSERT_EXISTS(atom)){atom.loc=this.loc(begin);if(this.isQuantifier()){atom.quantifier=this.quantifier();}return atom;}}dotAll(){this.consumeChar(\".\");return{type:\"Set\",complement:true,value:[cc(\"\\n\"),cc(\"\\r\"),cc(\"\\u2028\"),cc(\"\\u2029\")]};}atomEscape(){this.consumeChar(\"\\\\\");switch(this.peekChar()){case\"1\":case\"2\":case\"3\":case\"4\":case\"5\":case\"6\":case\"7\":case\"8\":case\"9\":return this.decimalEscapeAtom();case\"d\":case\"D\":case\"s\":case\"S\":case\"w\":case\"W\":return this.characterClassEscape();case\"f\":case\"n\":case\"r\":case\"t\":case\"v\":return this.controlEscapeAtom();case\"c\":return this.controlLetterEscapeAtom();case\"0\":return this.nulCharacterAtom();case\"x\":return this.hexEscapeSequenceAtom();case\"u\":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom();}}decimalEscapeAtom(){const value=this.positiveInteger();return{type:\"GroupBackReference\",value};}characterClassEscape(){let set;let complement=false;switch(this.popChar()){case\"d\":set=digitsCharCodes;break;case\"D\":set=digitsCharCodes;complement=true;break;case\"s\":set=whitespaceCodes;break;case\"S\":set=whitespaceCodes;complement=true;break;case\"w\":set=wordCharCodes;break;case\"W\":set=wordCharCodes;complement=true;break;}if(ASSERT_EXISTS(set)){return{type:\"Set\",value:set,complement};}}controlEscapeAtom(){let escapeCode;switch(this.popChar()){case\"f\":escapeCode=cc(\"\\f\");break;case\"n\":escapeCode=cc(\"\\n\");break;case\"r\":escapeCode=cc(\"\\r\");break;case\"t\":escapeCode=cc(\"\t\");break;case\"v\":escapeCode=cc(\"\\v\");break;}if(ASSERT_EXISTS(escapeCode)){return{type:\"Character\",value:escapeCode};}}controlLetterEscapeAtom(){this.consumeChar(\"c\");const letter=this.popChar();if(/[a-zA-Z]/.test(letter)===false){throw Error(\"Invalid \");}const letterCode=letter.toUpperCase().charCodeAt(0)-64;return{type:\"Character\",value:letterCode};}nulCharacterAtom(){this.consumeChar(\"0\");return{type:\"Character\",value:cc(\"\\0\")};}hexEscapeSequenceAtom(){this.consumeChar(\"x\");return this.parseHexDigits(2);}regExpUnicodeEscapeSequenceAtom(){this.consumeChar(\"u\");return this.parseHexDigits(4);}identityEscapeAtom(){const escapedChar=this.popChar();return{type:\"Character\",value:cc(escapedChar)};}classPatternCharacterAtom(){switch(this.peekChar()){case\"\\n\":case\"\\r\":case\"\\u2028\":case\"\\u2029\":case\"\\\\\":case\"]\":throw Error(\"TBD\");default:const nextChar=this.popChar();return{type:\"Character\",value:cc(nextChar)};}}characterClass(){const set=[];let complement=false;this.consumeChar(\"[\");if(this.peekChar(0)===\"^\"){this.consumeChar(\"^\");complement=true;}while(this.isClassAtom()){const from=this.classAtom();from.type===\"Character\";if(isCharacter(from)&&this.isRangeDash()){this.consumeChar(\"-\");const to=this.classAtom();to.type===\"Character\";if(isCharacter(to)){if(to.value=this.input.length){throw Error(\"Unexpected end of input\");}this.idx++;}loc(begin){return{begin,end:this.idx};}}class BaseRegExpVisitor{visitChildren(node){for(const key in node){const child=node[key];if(node.hasOwnProperty(key)){if(child.type!==void 0){this.visit(child);}else if(Array.isArray(child)){child.forEach(subChild=>{this.visit(subChild);},this);}}}}visit(node){switch(node.type){case\"Pattern\":this.visitPattern(node);break;case\"Flags\":this.visitFlags(node);break;case\"Disjunction\":this.visitDisjunction(node);break;case\"Alternative\":this.visitAlternative(node);break;case\"StartAnchor\":this.visitStartAnchor(node);break;case\"EndAnchor\":this.visitEndAnchor(node);break;case\"WordBoundary\":this.visitWordBoundary(node);break;case\"NonWordBoundary\":this.visitNonWordBoundary(node);break;case\"Lookahead\":this.visitLookahead(node);break;case\"NegativeLookahead\":this.visitNegativeLookahead(node);break;case\"Character\":this.visitCharacter(node);break;case\"Set\":this.visitSet(node);break;case\"Group\":this.visitGroup(node);break;case\"GroupBackReference\":this.visitGroupBackReference(node);break;case\"Quantifier\":this.visitQuantifier(node);break;}this.visitChildren(node);}visitPattern(node){}visitFlags(node){}visitDisjunction(node){}visitAlternative(node){}// Assertion\nvisitStartAnchor(node){}visitEndAnchor(node){}visitWordBoundary(node){}visitNonWordBoundary(node){}visitLookahead(node){}visitNegativeLookahead(node){}// atoms\nvisitCharacter(node){}visitSet(node){}visitGroup(node){}visitGroupBackReference(node){}visitQuantifier(node){}}let regExpAstCache={};const regExpParser=new RegExpParser();function getRegExpAst(regExp){const regExpStr=regExp.toString();if(regExpAstCache.hasOwnProperty(regExpStr)){return regExpAstCache[regExpStr];}else{const regExpAst=regExpParser.pattern(regExpStr);regExpAstCache[regExpStr]=regExpAst;return regExpAst;}}function clearRegExpParserCache(){regExpAstCache={};}const complementErrorMessage=\"Complement Sets are not supported for first char optimization\";const failedOptimizationPrefixMsg='Unable to use \"first char\" lexer optimizations:\\n';function getOptimizedStartCodesIndices(regExp,ensureOptimizations=false){try{const ast=getRegExpAst(regExp);const firstChars=firstCharOptimizedIndices(ast.value,{},ast.flags.ignoreCase);return firstChars;}catch(e){if(e.message===complementErrorMessage){if(ensureOptimizations){PRINT_WARNING(`${failedOptimizationPrefixMsg}\tUnable to optimize: < ${regExp.toString()} >\n\tComplement Sets cannot be automatically optimized.\n\tThis will disable the lexer's first char optimizations.\n\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);}}else{let msgSuffix=\"\";if(ensureOptimizations){msgSuffix=\"\\n\tThis will disable the lexer's first char optimizations.\\n\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.\";}PRINT_ERROR(`${failedOptimizationPrefixMsg}\n\tFailed parsing: < ${regExp.toString()} >\n\tUsing the @chevrotain/regexp-to-ast library\n\tPlease open an issue at: https://github.com/chevrotain/chevrotain/issues`+msgSuffix);}}return[];}function firstCharOptimizedIndices(ast,result,ignoreCase){switch(ast.type){case\"Disjunction\":for(let i2=0;i2{if(typeof code===\"number\"){addOptimizedIdxToResult(code,result,ignoreCase);}else{const range=code;if(ignoreCase===true){for(let rangeCode=range.from;rangeCode<=range.to;rangeCode++){addOptimizedIdxToResult(rangeCode,result,ignoreCase);}}else{for(let rangeCode=range.from;rangeCode<=range.to&&rangeCode=minOptimizationVal){const minUnOptVal=range.from>=minOptimizationVal?range.from:minOptimizationVal;const maxUnOptVal=range.to;const minOptIdx=charCodeToOptimizedIndex(minUnOptVal);const maxOptIdx=charCodeToOptimizedIndex(maxUnOptVal);for(let currOptIdx=minOptIdx;currOptIdx<=maxOptIdx;currOptIdx++){result[currOptIdx]=currOptIdx;}}}}});break;case\"Group\":firstCharOptimizedIndices(atom.value,result,ignoreCase);break;default:throw Error(\"Non Exhaustive Match\");}const isOptionalQuantifier=atom.quantifier!==void 0&&atom.quantifier.atLeast===0;if(// A group may be optional due to empty contents /(?:)/\n// or if everything inside it is optional /((a)?)/\natom.type===\"Group\"&&isWholeOptional(atom)===false||// If this term is not a group it may only be optional if it has an optional quantifier\natom.type!==\"Group\"&&isOptionalQuantifier===false){break;}}break;default:throw Error(\"non exhaustive match!\");}return values(result);}function addOptimizedIdxToResult(code,result,ignoreCase){const optimizedCharIdx=charCodeToOptimizedIndex(code);result[optimizedCharIdx]=optimizedCharIdx;if(ignoreCase===true){handleIgnoreCase(code,result);}}function handleIgnoreCase(code,result){const char=String.fromCharCode(code);const upperChar=char.toUpperCase();if(upperChar!==char){const optimizedCharIdx=charCodeToOptimizedIndex(upperChar.charCodeAt(0));result[optimizedCharIdx]=optimizedCharIdx;}else{const lowerChar=char.toLowerCase();if(lowerChar!==char){const optimizedCharIdx=charCodeToOptimizedIndex(lowerChar.charCodeAt(0));result[optimizedCharIdx]=optimizedCharIdx;}}}function findCode(setNode,targetCharCodes){return find$1(setNode.value,codeOrRange=>{if(typeof codeOrRange===\"number\"){return includes(targetCharCodes,codeOrRange);}else{const range=codeOrRange;return find$1(targetCharCodes,targetCode=>range.from<=targetCode&&targetCode<=range.to)!==void 0;}});}function isWholeOptional(ast){const quantifier=ast.quantifier;if(quantifier&&quantifier.atLeast===0){return true;}if(!ast.value){return false;}return isArray$1(ast.value)?every(ast.value,isWholeOptional):isWholeOptional(ast.value);}class CharCodeFinder extends BaseRegExpVisitor{constructor(targetCharCodes){super();this.targetCharCodes=targetCharCodes;this.found=false;}visitChildren(node){if(this.found===true){return;}switch(node.type){case\"Lookahead\":this.visitLookahead(node);return;case\"NegativeLookahead\":this.visitNegativeLookahead(node);return;}super.visitChildren(node);}visitCharacter(node){if(includes(this.targetCharCodes,node.value)){this.found=true;}}visitSet(node){if(node.complement){if(findCode(node,this.targetCharCodes)===void 0){this.found=true;}}else{if(findCode(node,this.targetCharCodes)!==void 0){this.found=true;}}}}function canMatchCharCode(charCodes,pattern){if(pattern instanceof RegExp){const ast=getRegExpAst(pattern);const charCodeFinder=new CharCodeFinder(charCodes);charCodeFinder.visit(ast);return charCodeFinder.found;}else{return find$1(pattern,char=>{return includes(charCodes,char.charCodeAt(0));})!==void 0;}}const PATTERN=\"PATTERN\";const DEFAULT_MODE=\"defaultMode\";const MODES=\"modes\";let SUPPORT_STICKY=typeof new RegExp(\"(?:)\").sticky===\"boolean\";function analyzeTokenTypes(tokenTypes,options){options=defaults$1(options,{useSticky:SUPPORT_STICKY,debug:false,safeMode:false,positionTracking:\"full\",lineTerminatorCharacters:[\"\\r\",\"\\n\"],tracer:(msg,action)=>action()});const tracer=options.tracer;tracer(\"initCharCodeToOptimizedIndexMap\",()=>{initCharCodeToOptimizedIndexMap();});let onlyRelevantTypes;tracer(\"Reject Lexer.NA\",()=>{onlyRelevantTypes=reject(tokenTypes,currType=>{return currType[PATTERN]===Lexer2.NA;});});let hasCustom=false;let allTransformedPatterns;tracer(\"Transform Patterns\",()=>{hasCustom=false;allTransformedPatterns=map(onlyRelevantTypes,currType=>{const currPattern=currType[PATTERN];if(isRegExp$1(currPattern)){const regExpSource=currPattern.source;if(regExpSource.length===1&&// only these regExp meta characters which can appear in a length one regExp\nregExpSource!==\"^\"&®ExpSource!==\"$\"&®ExpSource!==\".\"&&!currPattern.ignoreCase){return regExpSource;}else if(regExpSource.length===2&®ExpSource[0]===\"\\\\\"&&// not a meta character\n!includes([\"d\",\"D\",\"s\",\"S\",\"t\",\"r\",\"n\",\"t\",\"0\",\"c\",\"b\",\"B\",\"f\",\"v\",\"w\",\"W\"],regExpSource[1])){return regExpSource[1];}else{return options.useSticky?addStickyFlag(currPattern):addStartOfInput(currPattern);}}else if(isFunction(currPattern)){hasCustom=true;return{exec:currPattern};}else if(typeof currPattern===\"object\"){hasCustom=true;return currPattern;}else if(typeof currPattern===\"string\"){if(currPattern.length===1){return currPattern;}else{const escapedRegExpString=currPattern.replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\");const wrappedRegExp=new RegExp(escapedRegExpString);return options.useSticky?addStickyFlag(wrappedRegExp):addStartOfInput(wrappedRegExp);}}else{throw Error(\"non exhaustive match\");}});});let patternIdxToType;let patternIdxToGroup;let patternIdxToLongerAltIdxArr;let patternIdxToPushMode;let patternIdxToPopMode;tracer(\"misc mapping\",()=>{patternIdxToType=map(onlyRelevantTypes,currType=>currType.tokenTypeIdx);patternIdxToGroup=map(onlyRelevantTypes,clazz=>{const groupName=clazz.GROUP;if(groupName===Lexer2.SKIPPED){return void 0;}else if(isString(groupName)){return groupName;}else if(isUndefined(groupName)){return false;}else{throw Error(\"non exhaustive match\");}});patternIdxToLongerAltIdxArr=map(onlyRelevantTypes,clazz=>{const longerAltType=clazz.LONGER_ALT;if(longerAltType){const longerAltIdxArr=isArray$1(longerAltType)?map(longerAltType,type=>indexOf(onlyRelevantTypes,type)):[indexOf(onlyRelevantTypes,longerAltType)];return longerAltIdxArr;}});patternIdxToPushMode=map(onlyRelevantTypes,clazz=>clazz.PUSH_MODE);patternIdxToPopMode=map(onlyRelevantTypes,clazz=>has(clazz,\"POP_MODE\"));});let patternIdxToCanLineTerminator;tracer(\"Line Terminator Handling\",()=>{const lineTerminatorCharCodes=getCharCodes(options.lineTerminatorCharacters);patternIdxToCanLineTerminator=map(onlyRelevantTypes,tokType=>false);if(options.positionTracking!==\"onlyOffset\"){patternIdxToCanLineTerminator=map(onlyRelevantTypes,tokType=>{if(has(tokType,\"LINE_BREAKS\")){return!!tokType.LINE_BREAKS;}else{return checkLineBreaksIssues(tokType,lineTerminatorCharCodes)===false&&canMatchCharCode(lineTerminatorCharCodes,tokType.PATTERN);}});}});let patternIdxToIsCustom;let patternIdxToShort;let emptyGroups;let patternIdxToConfig;tracer(\"Misc Mapping #2\",()=>{patternIdxToIsCustom=map(onlyRelevantTypes,isCustomPattern);patternIdxToShort=map(allTransformedPatterns,isShortPattern);emptyGroups=reduce(onlyRelevantTypes,(acc,clazz)=>{const groupName=clazz.GROUP;if(isString(groupName)&&!(groupName===Lexer2.SKIPPED)){acc[groupName]=[];}return acc;},{});patternIdxToConfig=map(allTransformedPatterns,(x,idx)=>{return{pattern:allTransformedPatterns[idx],longerAlt:patternIdxToLongerAltIdxArr[idx],canLineTerminator:patternIdxToCanLineTerminator[idx],isCustom:patternIdxToIsCustom[idx],short:patternIdxToShort[idx],group:patternIdxToGroup[idx],push:patternIdxToPushMode[idx],pop:patternIdxToPopMode[idx],tokenTypeIdx:patternIdxToType[idx],tokenType:onlyRelevantTypes[idx]};});});let canBeOptimized=true;let charCodeToPatternIdxToConfig=[];if(!options.safeMode){tracer(\"First Char Optimization\",()=>{charCodeToPatternIdxToConfig=reduce(onlyRelevantTypes,(result,currTokType,idx)=>{if(typeof currTokType.PATTERN===\"string\"){const charCode=currTokType.PATTERN.charCodeAt(0);const optimizedIdx=charCodeToOptimizedIndex(charCode);addToMapOfArrays(result,optimizedIdx,patternIdxToConfig[idx]);}else if(isArray$1(currTokType.START_CHARS_HINT)){let lastOptimizedIdx;forEach(currTokType.START_CHARS_HINT,charOrInt=>{const charCode=typeof charOrInt===\"string\"?charOrInt.charCodeAt(0):charOrInt;const currOptimizedIdx=charCodeToOptimizedIndex(charCode);if(lastOptimizedIdx!==currOptimizedIdx){lastOptimizedIdx=currOptimizedIdx;addToMapOfArrays(result,currOptimizedIdx,patternIdxToConfig[idx]);}});}else if(isRegExp$1(currTokType.PATTERN)){if(currTokType.PATTERN.unicode){canBeOptimized=false;if(options.ensureOptimizations){PRINT_ERROR(`${failedOptimizationPrefixMsg}\tUnable to analyze < ${currTokType.PATTERN.toString()} > pattern.\n\tThe regexp unicode flag is not currently supported by the regexp-to-ast library.\n\tThis will disable the lexer's first char optimizations.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);}}else{const optimizedCodes=getOptimizedStartCodesIndices(currTokType.PATTERN,options.ensureOptimizations);if(isEmpty(optimizedCodes)){canBeOptimized=false;}forEach(optimizedCodes,code=>{addToMapOfArrays(result,code,patternIdxToConfig[idx]);});}}else{if(options.ensureOptimizations){PRINT_ERROR(`${failedOptimizationPrefixMsg}\tTokenType: <${currTokType.name}> is using a custom token pattern without providing parameter.\n\tThis will disable the lexer's first char optimizations.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`);}canBeOptimized=false;}return result;},[]);});}return{emptyGroups,patternIdxToConfig,charCodeToPatternIdxToConfig,hasCustom,canBeOptimized};}function validatePatterns(tokenTypes,validModesNames){let errors=[];const missingResult=findMissingPatterns(tokenTypes);errors=errors.concat(missingResult.errors);const invalidResult=findInvalidPatterns(missingResult.valid);const validTokenTypes=invalidResult.valid;errors=errors.concat(invalidResult.errors);errors=errors.concat(validateRegExpPattern(validTokenTypes));errors=errors.concat(findInvalidGroupType(validTokenTypes));errors=errors.concat(findModesThatDoNotExist(validTokenTypes,validModesNames));errors=errors.concat(findUnreachablePatterns(validTokenTypes));return errors;}function validateRegExpPattern(tokenTypes){let errors=[];const withRegExpPatterns=filter(tokenTypes,currTokType=>isRegExp$1(currTokType[PATTERN]));errors=errors.concat(findEndOfInputAnchor(withRegExpPatterns));errors=errors.concat(findStartOfInputAnchor(withRegExpPatterns));errors=errors.concat(findUnsupportedFlags(withRegExpPatterns));errors=errors.concat(findDuplicatePatterns(withRegExpPatterns));errors=errors.concat(findEmptyMatchRegExps(withRegExpPatterns));return errors;}function findMissingPatterns(tokenTypes){const tokenTypesWithMissingPattern=filter(tokenTypes,currType=>{return!has(currType,PATTERN);});const errors=map(tokenTypesWithMissingPattern,currType=>{return{message:\"Token Type: ->\"+currType.name+\"<- missing static 'PATTERN' property\",type:LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[currType]};});const valid=difference$1(tokenTypes,tokenTypesWithMissingPattern);return{errors,valid};}function findInvalidPatterns(tokenTypes){const tokenTypesWithInvalidPattern=filter(tokenTypes,currType=>{const pattern=currType[PATTERN];return!isRegExp$1(pattern)&&!isFunction(pattern)&&!has(pattern,\"exec\")&&!isString(pattern);});const errors=map(tokenTypesWithInvalidPattern,currType=>{return{message:\"Token Type: ->\"+currType.name+\"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.\",type:LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[currType]};});const valid=difference$1(tokenTypes,tokenTypesWithInvalidPattern);return{errors,valid};}const end_of_input=/[^\\\\][$]/;function findEndOfInputAnchor(tokenTypes){class EndAnchorFinder extends BaseRegExpVisitor{constructor(){super(...arguments);this.found=false;}visitEndAnchor(node){this.found=true;}}const invalidRegex=filter(tokenTypes,currType=>{const pattern=currType.PATTERN;try{const regexpAst=getRegExpAst(pattern);const endAnchorVisitor=new EndAnchorFinder();endAnchorVisitor.visit(regexpAst);return endAnchorVisitor.found;}catch(e){return end_of_input.test(pattern.source);}});const errors=map(invalidRegex,currType=>{return{message:\"Unexpected RegExp Anchor Error:\\n\tToken Type: ->\"+currType.name+\"<- static 'PATTERN' cannot contain end of input anchor '$'\\n\tSee chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\tfor details.\",type:LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[currType]};});return errors;}function findEmptyMatchRegExps(tokenTypes){const matchesEmptyString=filter(tokenTypes,currType=>{const pattern=currType.PATTERN;return pattern.test(\"\");});const errors=map(matchesEmptyString,currType=>{return{message:\"Token Type: ->\"+currType.name+\"<- static 'PATTERN' must not match an empty string\",type:LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[currType]};});return errors;}const start_of_input=/[^\\\\[][\\^]|^\\^/;function findStartOfInputAnchor(tokenTypes){class StartAnchorFinder extends BaseRegExpVisitor{constructor(){super(...arguments);this.found=false;}visitStartAnchor(node){this.found=true;}}const invalidRegex=filter(tokenTypes,currType=>{const pattern=currType.PATTERN;try{const regexpAst=getRegExpAst(pattern);const startAnchorVisitor=new StartAnchorFinder();startAnchorVisitor.visit(regexpAst);return startAnchorVisitor.found;}catch(e){return start_of_input.test(pattern.source);}});const errors=map(invalidRegex,currType=>{return{message:\"Unexpected RegExp Anchor Error:\\n\tToken Type: ->\"+currType.name+\"<- static 'PATTERN' cannot contain start of input anchor '^'\\n\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\tfor details.\",type:LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[currType]};});return errors;}function findUnsupportedFlags(tokenTypes){const invalidFlags=filter(tokenTypes,currType=>{const pattern=currType[PATTERN];return pattern instanceof RegExp&&(pattern.multiline||pattern.global);});const errors=map(invalidFlags,currType=>{return{message:\"Token Type: ->\"+currType.name+\"<- static 'PATTERN' may NOT contain global('g') or multiline('m')\",type:LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[currType]};});return errors;}function findDuplicatePatterns(tokenTypes){const found=[];let identicalPatterns=map(tokenTypes,outerType=>{return reduce(tokenTypes,(result,innerType)=>{if(outerType.PATTERN.source===innerType.PATTERN.source&&!includes(found,innerType)&&innerType.PATTERN!==Lexer2.NA){found.push(innerType);result.push(innerType);return result;}return result;},[]);});identicalPatterns=compact(identicalPatterns);const duplicatePatterns=filter(identicalPatterns,currIdenticalSet=>{return currIdenticalSet.length>1;});const errors=map(duplicatePatterns,setOfIdentical=>{const tokenTypeNames=map(setOfIdentical,currType=>{return currType.name;});const dupPatternSrc=head(setOfIdentical).PATTERN;return{message:`The same RegExp pattern ->${dupPatternSrc}<-has been used in all of the following Token Types: ${tokenTypeNames.join(\", \")} <-`,type:LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:setOfIdentical};});return errors;}function findInvalidGroupType(tokenTypes){const invalidTypes=filter(tokenTypes,clazz=>{if(!has(clazz,\"GROUP\")){return false;}const group=clazz.GROUP;return group!==Lexer2.SKIPPED&&group!==Lexer2.NA&&!isString(group);});const errors=map(invalidTypes,currType=>{return{message:\"Token Type: ->\"+currType.name+\"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String\",type:LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[currType]};});return errors;}function findModesThatDoNotExist(tokenTypes,validModes){const invalidModes=filter(tokenTypes,clazz=>{return clazz.PUSH_MODE!==void 0&&!includes(validModes,clazz.PUSH_MODE);});const errors=map(invalidModes,tokType=>{const msg=`Token Type: ->${tokType.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${tokType.PUSH_MODE}<-which does not exist`;return{message:msg,type:LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[tokType]};});return errors;}function findUnreachablePatterns(tokenTypes){const errors=[];const canBeTested=reduce(tokenTypes,(result,tokType,idx)=>{const pattern=tokType.PATTERN;if(pattern===Lexer2.NA){return result;}if(isString(pattern)){result.push({str:pattern,idx,tokenType:tokType});}else if(isRegExp$1(pattern)&&noMetaChar(pattern)){result.push({str:pattern.source,idx,tokenType:tokType});}return result;},[]);forEach(tokenTypes,(tokType,testIdx)=>{forEach(canBeTested,({str,idx,tokenType})=>{if(testIdx${tokenType.name}<- can never be matched.\nBecause it appears AFTER the Token Type ->${tokType.name}<-in the lexer's definition.\nSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;errors.push({message:msg,type:LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[tokType,tokenType]});}});});return errors;}function testTokenType(str,pattern){if(isRegExp$1(pattern)){const regExpArray=pattern.exec(str);return regExpArray!==null&®ExpArray.index===0;}else if(isFunction(pattern)){return pattern(str,0,[],{});}else if(has(pattern,\"exec\")){return pattern.exec(str,0,[],{});}else if(typeof pattern===\"string\"){return pattern===str;}else{throw Error(\"non exhaustive match\");}}function noMetaChar(regExp){const metaChars=[\".\",\"\\\\\",\"[\",\"]\",\"|\",\"^\",\"$\",\"(\",\")\",\"?\",\"*\",\"+\",\"{\"];return find$1(metaChars,char=>regExp.source.indexOf(char)!==-1)===void 0;}function addStartOfInput(pattern){const flags=pattern.ignoreCase?\"i\":\"\";return new RegExp(`^(?:${pattern.source})`,flags);}function addStickyFlag(pattern){const flags=pattern.ignoreCase?\"iy\":\"y\";return new RegExp(`${pattern.source}`,flags);}function performRuntimeChecks(lexerDefinition,trackLines,lineTerminatorCharacters){const errors=[];if(!has(lexerDefinition,DEFAULT_MODE)){errors.push({message:\"A MultiMode Lexer cannot be initialized without a <\"+DEFAULT_MODE+\"> property in its definition\\n\",type:LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE});}if(!has(lexerDefinition,MODES)){errors.push({message:\"A MultiMode Lexer cannot be initialized without a <\"+MODES+\"> property in its definition\\n\",type:LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY});}if(has(lexerDefinition,MODES)&&has(lexerDefinition,DEFAULT_MODE)&&!has(lexerDefinition.modes,lexerDefinition.defaultMode)){errors.push({message:`A MultiMode Lexer cannot be initialized with a ${DEFAULT_MODE}: <${lexerDefinition.defaultMode}>which does not exist\n`,type:LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST});}if(has(lexerDefinition,MODES)){forEach(lexerDefinition.modes,(currModeValue,currModeName)=>{forEach(currModeValue,(currTokType,currIdx)=>{if(isUndefined(currTokType)){errors.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${currModeName}> at index: <${currIdx}>\n`,type:LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED});}else if(has(currTokType,\"LONGER_ALT\")){const longerAlt=isArray$1(currTokType.LONGER_ALT)?currTokType.LONGER_ALT:[currTokType.LONGER_ALT];forEach(longerAlt,currLongerAlt=>{if(!isUndefined(currLongerAlt)&&!includes(currModeValue,currLongerAlt)){errors.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${currLongerAlt.name}> on token <${currTokType.name}> outside of mode <${currModeName}>\n`,type:LexerDefinitionErrorType.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE});}});}});});}return errors;}function performWarningRuntimeChecks(lexerDefinition,trackLines,lineTerminatorCharacters){const warnings=[];let hasAnyLineBreak=false;const allTokenTypes=compact(flatten(values(lexerDefinition.modes)));const concreteTokenTypes=reject(allTokenTypes,currType=>currType[PATTERN]===Lexer2.NA);const terminatorCharCodes=getCharCodes(lineTerminatorCharacters);if(trackLines){forEach(concreteTokenTypes,tokType=>{const currIssue=checkLineBreaksIssues(tokType,terminatorCharCodes);if(currIssue!==false){const message=buildLineBreakIssueMessage(tokType,currIssue);const warningDescriptor={message,type:currIssue.issue,tokenType:tokType};warnings.push(warningDescriptor);}else{if(has(tokType,\"LINE_BREAKS\")){if(tokType.LINE_BREAKS===true){hasAnyLineBreak=true;}}else{if(canMatchCharCode(terminatorCharCodes,tokType.PATTERN)){hasAnyLineBreak=true;}}}});}if(trackLines&&!hasAnyLineBreak){warnings.push({message:\"Warning: No LINE_BREAKS Found.\\n\tThis Lexer has been defined to track line and column information,\\n\tBut none of the Token Types can be identified as matching a line terminator.\\n\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS \\n\tfor details.\",type:LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS});}return warnings;}function cloneEmptyGroups(emptyGroups){const clonedResult={};const groupKeys=keys(emptyGroups);forEach(groupKeys,currKey=>{const currGroupValue=emptyGroups[currKey];if(isArray$1(currGroupValue)){clonedResult[currKey]=[];}else{throw Error(\"non exhaustive match\");}});return clonedResult;}function isCustomPattern(tokenType){const pattern=tokenType.PATTERN;if(isRegExp$1(pattern)){return false;}else if(isFunction(pattern)){return true;}else if(has(pattern,\"exec\")){return true;}else if(isString(pattern)){return false;}else{throw Error(\"non exhaustive match\");}}function isShortPattern(pattern){if(isString(pattern)&&pattern.length===1){return pattern.charCodeAt(0);}else{return false;}}const LineTerminatorOptimizedTester={// implements /\\n|\\r\\n?/g.test\ntest:function(text){const len=text.length;for(let i2=this.lastIndex;i2 Token Type\n\t Root cause: ${details.errMsg}.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;}else if(details.issue===LexerDefinitionErrorType.CUSTOM_LINE_BREAK){return`Warning: A Custom Token Pattern should specify the option.\n\tThe problem is in the <${tokType.name}> Token Type\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;}else{throw Error(\"non exhaustive match\");}}function getCharCodes(charsOrCodes){const charCodes=map(charsOrCodes,numOrString=>{if(isString(numOrString)){return numOrString.charCodeAt(0);}else{return numOrString;}});return charCodes;}function addToMapOfArrays(map2,key,value){if(map2[key]===void 0){map2[key]=[value];}else{map2[key].push(value);}}const minOptimizationVal=256;let charCodeToOptimizedIdxMap=[];function charCodeToOptimizedIndex(charCode){return charCode255?255+~~(i2/255):i2;}}}function tokenStructuredMatcher(tokInstance,tokConstructor){const instanceType=tokInstance.tokenTypeIdx;if(instanceType===tokConstructor.tokenTypeIdx){return true;}else{return tokConstructor.isParent===true&&tokConstructor.categoryMatchesMap[instanceType]===true;}}function tokenStructuredMatcherNoCategories(token,tokType){return token.tokenTypeIdx===tokType.tokenTypeIdx;}let tokenShortNameIdx=1;const tokenIdxToClass={};function augmentTokenTypes(tokenTypes){const tokenTypesAndParents=expandCategories(tokenTypes);assignTokenDefaultProps(tokenTypesAndParents);assignCategoriesMapProp(tokenTypesAndParents);assignCategoriesTokensProp(tokenTypesAndParents);forEach(tokenTypesAndParents,tokType=>{tokType.isParent=tokType.categoryMatches.length>0;});}function expandCategories(tokenTypes){let result=clone2(tokenTypes);let categories=tokenTypes;let searching=true;while(searching){categories=compact(flatten(map(categories,currTokType=>currTokType.CATEGORIES)));const newCategories=difference$1(categories,result);result=result.concat(newCategories);if(isEmpty(newCategories)){searching=false;}else{categories=newCategories;}}return result;}function assignTokenDefaultProps(tokenTypes){forEach(tokenTypes,currTokType=>{if(!hasShortKeyProperty(currTokType)){tokenIdxToClass[tokenShortNameIdx]=currTokType;currTokType.tokenTypeIdx=tokenShortNameIdx++;}if(hasCategoriesProperty(currTokType)&&!isArray$1(currTokType.CATEGORIES)){currTokType.CATEGORIES=[currTokType.CATEGORIES];}if(!hasCategoriesProperty(currTokType)){currTokType.CATEGORIES=[];}if(!hasExtendingTokensTypesProperty(currTokType)){currTokType.categoryMatches=[];}if(!hasExtendingTokensTypesMapProperty(currTokType)){currTokType.categoryMatchesMap={};}});}function assignCategoriesTokensProp(tokenTypes){forEach(tokenTypes,currTokType=>{currTokType.categoryMatches=[];forEach(currTokType.categoryMatchesMap,(val,key)=>{currTokType.categoryMatches.push(tokenIdxToClass[key].tokenTypeIdx);});});}function assignCategoriesMapProp(tokenTypes){forEach(tokenTypes,currTokType=>{singleAssignCategoriesToksMap([],currTokType);});}function singleAssignCategoriesToksMap(path,nextNode){forEach(path,pathNode=>{nextNode.categoryMatchesMap[pathNode.tokenTypeIdx]=true;});forEach(nextNode.CATEGORIES,nextCategory=>{const newPath=path.concat(nextNode);if(!includes(newPath,nextCategory)){singleAssignCategoriesToksMap(newPath,nextCategory);}});}function hasShortKeyProperty(tokType){return has(tokType,\"tokenTypeIdx\");}function hasCategoriesProperty(tokType){return has(tokType,\"CATEGORIES\");}function hasExtendingTokensTypesProperty(tokType){return has(tokType,\"categoryMatches\");}function hasExtendingTokensTypesMapProperty(tokType){return has(tokType,\"categoryMatchesMap\");}function isTokenType(tokType){return has(tokType,\"tokenTypeIdx\");}const defaultLexerErrorProvider={buildUnableToPopLexerModeMessage(token){return`Unable to pop Lexer Mode after encountering Token ->${token.image}<- The Mode Stack is empty`;},buildUnexpectedCharactersMessage(fullText,startOffset,length,line,column){return`unexpected character: ->${fullText.charAt(startOffset)}<- at offset: ${startOffset}, skipped ${length} characters.`;}};var LexerDefinitionErrorType;(function(LexerDefinitionErrorType2){LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"MISSING_PATTERN\"]=0]=\"MISSING_PATTERN\";LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"INVALID_PATTERN\"]=1]=\"INVALID_PATTERN\";LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"EOI_ANCHOR_FOUND\"]=2]=\"EOI_ANCHOR_FOUND\";LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"UNSUPPORTED_FLAGS_FOUND\"]=3]=\"UNSUPPORTED_FLAGS_FOUND\";LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"DUPLICATE_PATTERNS_FOUND\"]=4]=\"DUPLICATE_PATTERNS_FOUND\";LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"INVALID_GROUP_TYPE_FOUND\"]=5]=\"INVALID_GROUP_TYPE_FOUND\";LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"PUSH_MODE_DOES_NOT_EXIST\"]=6]=\"PUSH_MODE_DOES_NOT_EXIST\";LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE\"]=7]=\"MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE\";LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY\"]=8]=\"MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY\";LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST\"]=9]=\"MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST\";LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED\"]=10]=\"LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED\";LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"SOI_ANCHOR_FOUND\"]=11]=\"SOI_ANCHOR_FOUND\";LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"EMPTY_MATCH_PATTERN\"]=12]=\"EMPTY_MATCH_PATTERN\";LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"NO_LINE_BREAKS_FLAGS\"]=13]=\"NO_LINE_BREAKS_FLAGS\";LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"UNREACHABLE_PATTERN\"]=14]=\"UNREACHABLE_PATTERN\";LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"IDENTIFY_TERMINATOR\"]=15]=\"IDENTIFY_TERMINATOR\";LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"CUSTOM_LINE_BREAK\"]=16]=\"CUSTOM_LINE_BREAK\";LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE\"]=17]=\"MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE\";})(LexerDefinitionErrorType||(LexerDefinitionErrorType={}));const DEFAULT_LEXER_CONFIG={deferDefinitionErrorsHandling:false,positionTracking:\"full\",lineTerminatorsPattern:/\\n|\\r\\n?/g,lineTerminatorCharacters:[\"\\n\",\"\\r\"],ensureOptimizations:false,safeMode:false,errorMessageProvider:defaultLexerErrorProvider,traceInitPerf:false,skipValidations:false,recoveryEnabled:true};Object.freeze(DEFAULT_LEXER_CONFIG);class Lexer2{constructor(lexerDefinition,config=DEFAULT_LEXER_CONFIG){this.lexerDefinition=lexerDefinition;this.lexerDefinitionErrors=[];this.lexerDefinitionWarning=[];this.patternIdxToConfig={};this.charCodeToPatternIdxToConfig={};this.modes=[];this.emptyGroups={};this.trackStartLines=true;this.trackEndLines=true;this.hasCustom=false;this.canModeBeOptimized={};this.TRACE_INIT=(phaseDesc,phaseImpl)=>{if(this.traceInitPerf===true){this.traceInitIndent++;const indent=new Array(this.traceInitIndent+1).join(\"\t\");if(this.traceInitIndent <${phaseDesc}>`);}const{time,value}=timer(phaseImpl);const traceMethod=time>10?console.warn:console.log;if(this.traceInitIndent time: ${time}ms`);}this.traceInitIndent--;return value;}else{return phaseImpl();}};if(typeof config===\"boolean\"){throw Error(\"The second argument to the Lexer constructor is now an ILexerConfig Object.\\na boolean 2nd argument is no longer supported\");}this.config=assign$1({},DEFAULT_LEXER_CONFIG,config);const traceInitVal=this.config.traceInitPerf;if(traceInitVal===true){this.traceInitMaxIdent=Infinity;this.traceInitPerf=true;}else if(typeof traceInitVal===\"number\"){this.traceInitMaxIdent=traceInitVal;this.traceInitPerf=true;}this.traceInitIndent=-1;this.TRACE_INIT(\"Lexer Constructor\",()=>{let actualDefinition;let hasOnlySingleMode=true;this.TRACE_INIT(\"Lexer Config handling\",()=>{if(this.config.lineTerminatorsPattern===DEFAULT_LEXER_CONFIG.lineTerminatorsPattern){this.config.lineTerminatorsPattern=LineTerminatorOptimizedTester;}else{if(this.config.lineTerminatorCharacters===DEFAULT_LEXER_CONFIG.lineTerminatorCharacters){throw Error(\"Error: Missing property on the Lexer config.\\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS\");}}if(config.safeMode&&config.ensureOptimizations){throw Error('\"safeMode\" and \"ensureOptimizations\" flags are mutually exclusive.');}this.trackStartLines=/full|onlyStart/i.test(this.config.positionTracking);this.trackEndLines=/full/i.test(this.config.positionTracking);if(isArray$1(lexerDefinition)){actualDefinition={modes:{defaultMode:clone2(lexerDefinition)},defaultMode:DEFAULT_MODE};}else{hasOnlySingleMode=false;actualDefinition=clone2(lexerDefinition);}});if(this.config.skipValidations===false){this.TRACE_INIT(\"performRuntimeChecks\",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(performRuntimeChecks(actualDefinition,this.trackStartLines,this.config.lineTerminatorCharacters));});this.TRACE_INIT(\"performWarningRuntimeChecks\",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(performWarningRuntimeChecks(actualDefinition,this.trackStartLines,this.config.lineTerminatorCharacters));});}actualDefinition.modes=actualDefinition.modes?actualDefinition.modes:{};forEach(actualDefinition.modes,(currModeValue,currModeName)=>{actualDefinition.modes[currModeName]=reject(currModeValue,currTokType=>isUndefined(currTokType));});const allModeNames=keys(actualDefinition.modes);forEach(actualDefinition.modes,(currModDef,currModName)=>{this.TRACE_INIT(`Mode: <${currModName}> processing`,()=>{this.modes.push(currModName);if(this.config.skipValidations===false){this.TRACE_INIT(`validatePatterns`,()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(validatePatterns(currModDef,allModeNames));});}if(isEmpty(this.lexerDefinitionErrors)){augmentTokenTypes(currModDef);let currAnalyzeResult;this.TRACE_INIT(`analyzeTokenTypes`,()=>{currAnalyzeResult=analyzeTokenTypes(currModDef,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:config.positionTracking,ensureOptimizations:config.ensureOptimizations,safeMode:config.safeMode,tracer:this.TRACE_INIT});});this.patternIdxToConfig[currModName]=currAnalyzeResult.patternIdxToConfig;this.charCodeToPatternIdxToConfig[currModName]=currAnalyzeResult.charCodeToPatternIdxToConfig;this.emptyGroups=assign$1({},this.emptyGroups,currAnalyzeResult.emptyGroups);this.hasCustom=currAnalyzeResult.hasCustom||this.hasCustom;this.canModeBeOptimized[currModName]=currAnalyzeResult.canBeOptimized;}});});this.defaultMode=actualDefinition.defaultMode;if(!isEmpty(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){const allErrMessages=map(this.lexerDefinitionErrors,error=>{return error.message;});const allErrMessagesString=allErrMessages.join(\"-----------------------\\n\");throw new Error(\"Errors detected in definition of Lexer:\\n\"+allErrMessagesString);}forEach(this.lexerDefinitionWarning,warningDescriptor=>{PRINT_WARNING(warningDescriptor.message);});this.TRACE_INIT(\"Choosing sub-methods implementations\",()=>{if(SUPPORT_STICKY){this.chopInput=identity;this.match=this.matchWithTest;}else{this.updateLastIndex=noop;this.match=this.matchWithExec;}if(hasOnlySingleMode){this.handleModes=noop;}if(this.trackStartLines===false){this.computeNewColumn=identity;}if(this.trackEndLines===false){this.updateTokenEndLineColumnLocation=noop;}if(/full/i.test(this.config.positionTracking)){this.createTokenInstance=this.createFullToken;}else if(/onlyStart/i.test(this.config.positionTracking)){this.createTokenInstance=this.createStartOnlyToken;}else if(/onlyOffset/i.test(this.config.positionTracking)){this.createTokenInstance=this.createOffsetOnlyToken;}else{throw Error(`Invalid config option: \"${this.config.positionTracking}\"`);}if(this.hasCustom){this.addToken=this.addTokenUsingPush;this.handlePayload=this.handlePayloadWithCustom;}else{this.addToken=this.addTokenUsingMemberAccess;this.handlePayload=this.handlePayloadNoCustom;}});this.TRACE_INIT(\"Failed Optimization Warnings\",()=>{const unOptimizedModes=reduce(this.canModeBeOptimized,(cannotBeOptimized,canBeOptimized,modeName)=>{if(canBeOptimized===false){cannotBeOptimized.push(modeName);}return cannotBeOptimized;},[]);if(config.ensureOptimizations&&!isEmpty(unOptimizedModes)){throw Error(`Lexer Modes: < ${unOptimizedModes.join(\", \")} > cannot be optimized.\n\t Disable the \"ensureOptimizations\" lexer config flag to silently ignore this and run the lexer in an un-optimized mode.\n\t Or inspect the console log for details on how to resolve these issues.`);}});this.TRACE_INIT(\"clearRegExpParserCache\",()=>{clearRegExpParserCache();});this.TRACE_INIT(\"toFastProperties\",()=>{toFastProperties(this);});});}tokenize(text,initialMode=this.defaultMode){if(!isEmpty(this.lexerDefinitionErrors)){const allErrMessages=map(this.lexerDefinitionErrors,error=>{return error.message;});const allErrMessagesString=allErrMessages.join(\"-----------------------\\n\");throw new Error(\"Unable to Tokenize because Errors detected in definition of Lexer:\\n\"+allErrMessagesString);}return this.tokenizeInternal(text,initialMode);}// There is quite a bit of duplication between this and \"tokenizeInternalLazy\"\n// This is intentional due to performance considerations.\n// this method also used quite a bit of `!` none null assertions because it is too optimized\n// for `tsc` to always understand it is \"safe\"\ntokenizeInternal(text,initialMode){let i2,j,k,matchAltImage,longerAlt,matchedImage,payload,altPayload,imageLength,group,tokType,newToken,errLength,msg,match;const orgText=text;const orgLength=orgText.length;let offset=0;let matchedTokensIndex=0;const guessedNumberOfTokens=this.hasCustom?0:Math.floor(text.length/10);const matchedTokens=new Array(guessedNumberOfTokens);const errors=[];let line=this.trackStartLines?1:void 0;let column=this.trackStartLines?1:void 0;const groups=cloneEmptyGroups(this.emptyGroups);const trackLines=this.trackStartLines;const lineTerminatorPattern=this.config.lineTerminatorsPattern;let currModePatternsLength=0;let patternIdxToConfig=[];let currCharCodeToPatternIdxToConfig=[];const modeStack=[];const emptyArray=[];Object.freeze(emptyArray);let getPossiblePatterns;function getPossiblePatternsSlow(){return patternIdxToConfig;}function getPossiblePatternsOptimized(charCode){const optimizedCharIdx=charCodeToOptimizedIndex(charCode);const possiblePatterns=currCharCodeToPatternIdxToConfig[optimizedCharIdx];if(possiblePatterns===void 0){return emptyArray;}else{return possiblePatterns;}}const pop_mode=popToken=>{if(modeStack.length===1&&// if we have both a POP_MODE and a PUSH_MODE this is in-fact a \"transition\"\n// So no error should occur.\npopToken.tokenType.PUSH_MODE===void 0){const msg2=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(popToken);errors.push({offset:popToken.startOffset,line:popToken.startLine,column:popToken.startColumn,length:popToken.image.length,message:msg2});}else{modeStack.pop();const newMode=last(modeStack);patternIdxToConfig=this.patternIdxToConfig[newMode];currCharCodeToPatternIdxToConfig=this.charCodeToPatternIdxToConfig[newMode];currModePatternsLength=patternIdxToConfig.length;const modeCanBeOptimized=this.canModeBeOptimized[newMode]&&this.config.safeMode===false;if(currCharCodeToPatternIdxToConfig&&modeCanBeOptimized){getPossiblePatterns=getPossiblePatternsOptimized;}else{getPossiblePatterns=getPossiblePatternsSlow;}}};function push_mode(newMode){modeStack.push(newMode);currCharCodeToPatternIdxToConfig=this.charCodeToPatternIdxToConfig[newMode];patternIdxToConfig=this.patternIdxToConfig[newMode];currModePatternsLength=patternIdxToConfig.length;currModePatternsLength=patternIdxToConfig.length;const modeCanBeOptimized=this.canModeBeOptimized[newMode]&&this.config.safeMode===false;if(currCharCodeToPatternIdxToConfig&&modeCanBeOptimized){getPossiblePatterns=getPossiblePatternsOptimized;}else{getPossiblePatterns=getPossiblePatternsSlow;}}push_mode.call(this,initialMode);let currConfig;const recoveryEnabled=this.config.recoveryEnabled;while(offsetmatchedImage.length){matchedImage=matchAltImage;payload=altPayload;currConfig=longerAltConfig;break;}}}break;}}if(matchedImage!==null){imageLength=matchedImage.length;group=currConfig.group;if(group!==void 0){tokType=currConfig.tokenTypeIdx;newToken=this.createTokenInstance(matchedImage,offset,tokType,currConfig.tokenType,line,column,imageLength);this.handlePayload(newToken,payload);if(group===false){matchedTokensIndex=this.addToken(matchedTokens,matchedTokensIndex,newToken);}else{groups[group].push(newToken);}}text=this.chopInput(text,imageLength);offset=offset+imageLength;column=this.computeNewColumn(column,imageLength);if(trackLines===true&&currConfig.canLineTerminator===true){let numOfLTsInMatch=0;let foundTerminator;let lastLTEndOffset;lineTerminatorPattern.lastIndex=0;do{foundTerminator=lineTerminatorPattern.test(matchedImage);if(foundTerminator===true){lastLTEndOffset=lineTerminatorPattern.lastIndex-1;numOfLTsInMatch++;}}while(foundTerminator===true);if(numOfLTsInMatch!==0){line=line+numOfLTsInMatch;column=imageLength-lastLTEndOffset;this.updateTokenEndLineColumnLocation(newToken,group,lastLTEndOffset,numOfLTsInMatch,line,column,imageLength);}}this.handleModes(currConfig,pop_mode,push_mode,newToken);}else{const errorStartOffset=offset;const errorLine=line;const errorColumn=column;let foundResyncPoint=recoveryEnabled===false;while(foundResyncPoint===false&&offset ${tokenLabel(expected)} <--`:`token of type --> ${expected.name} <--`;const msg=`Expecting ${expectedMsg} but found --> '${actual.image}' <--`;return msg;},buildNotAllInputParsedMessage({firstRedundant,ruleName}){return\"Redundant input, expecting EOF but found: \"+firstRedundant.image;},buildNoViableAltMessage({expectedPathsPerAlt,actual,previous,customUserDescription,ruleName}){const errPrefix=\"Expecting: \";const actualText=head(actual).image;const errSuffix=\"\\nbut found: '\"+actualText+\"'\";if(customUserDescription){return errPrefix+customUserDescription+errSuffix;}else{const allLookAheadPaths=reduce(expectedPathsPerAlt,(result,currAltPaths)=>result.concat(currAltPaths),[]);const nextValidTokenSequences=map(allLookAheadPaths,currPath=>`[${map(currPath,currTokenType=>tokenLabel(currTokenType)).join(\", \")}]`);const nextValidSequenceItems=map(nextValidTokenSequences,(itemMsg,idx)=>` ${idx+1}. ${itemMsg}`);const calculatedDescription=`one of these possible Token sequences:\n${nextValidSequenceItems.join(\"\\n\")}`;return errPrefix+calculatedDescription+errSuffix;}},buildEarlyExitMessage({expectedIterationPaths,actual,customUserDescription,ruleName}){const errPrefix=\"Expecting: \";const actualText=head(actual).image;const errSuffix=\"\\nbut found: '\"+actualText+\"'\";if(customUserDescription){return errPrefix+customUserDescription+errSuffix;}else{const nextValidTokenSequences=map(expectedIterationPaths,currPath=>`[${map(currPath,currTokenType=>tokenLabel(currTokenType)).join(\",\")}]`);const calculatedDescription=`expecting at least one iteration which starts with one of these possible Token sequences::\n <${nextValidTokenSequences.join(\" ,\")}>`;return errPrefix+calculatedDescription+errSuffix;}}};Object.freeze(defaultParserErrorProvider);const defaultGrammarResolverErrorProvider={buildRuleNotFoundError(topLevelRule,undefinedRule){const msg=\"Invalid grammar, reference to a rule which is not defined: ->\"+undefinedRule.nonTerminalName+\"<-\\ninside top level rule: ->\"+topLevelRule.name+\"<-\";return msg;}};const defaultGrammarValidatorErrorProvider={buildDuplicateFoundError(topLevelRule,duplicateProds){function getExtraProductionArgument2(prod){if(prod instanceof Terminal){return prod.terminalType.name;}else if(prod instanceof NonTerminal){return prod.nonTerminalName;}else{return\"\";}}const topLevelName=topLevelRule.name;const duplicateProd=head(duplicateProds);const index=duplicateProd.idx;const dslName=getProductionDslName(duplicateProd);const extraArgument=getExtraProductionArgument2(duplicateProd);const hasExplicitIndex=index>0;let msg=`->${dslName}${hasExplicitIndex?index:\"\"}<- ${extraArgument?`with argument: ->${extraArgument}<-`:\"\"}\n appears more than once (${duplicateProds.length} times) in the top level rule: ->${topLevelName}<-. \n For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES \n `;msg=msg.replace(/[ \\t]+/g,\" \");msg=msg.replace(/\\s\\s+/g,\"\\n\");return msg;},buildNamespaceConflictError(rule){const errMsg=`Namespace conflict found in grammar.\nThe grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${rule.name}>.\nTo resolve this make sure each Terminal and Non-Terminal names are unique\nThis is easy to accomplish by using the convention that Terminal names start with an uppercase letter\nand Non-Terminal names start with a lower case letter.`;return errMsg;},buildAlternationPrefixAmbiguityError(options){const pathMsg=map(options.prefixPath,currTok=>tokenLabel(currTok)).join(\", \");const occurrence=options.alternation.idx===0?\"\":options.alternation.idx;const errMsg=`Ambiguous alternatives: <${options.ambiguityIndices.join(\" ,\")}> due to common lookahead prefix\nin inside <${options.topLevelRule.name}> Rule,\n<${pathMsg}> may appears as a prefix path in all these alternatives.\nSee: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX\nFor Further details.`;return errMsg;},buildAlternationAmbiguityError(options){const pathMsg=map(options.prefixPath,currtok=>tokenLabel(currtok)).join(\", \");const occurrence=options.alternation.idx===0?\"\":options.alternation.idx;let currMessage=`Ambiguous Alternatives Detected: <${options.ambiguityIndices.join(\" ,\")}> in inside <${options.topLevelRule.name}> Rule,\n<${pathMsg}> may appears as a prefix path in all these alternatives.\n`;currMessage=currMessage+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES\nFor Further details.`;return currMessage;},buildEmptyRepetitionError(options){let dslName=getProductionDslName(options.repetition);if(options.repetition.idx!==0){dslName+=options.repetition.idx;}const errMsg=`The repetition <${dslName}> within Rule <${options.topLevelRule.name}> can never consume any tokens.\nThis could lead to an infinite loop.`;return errMsg;},// TODO: remove - `errors_public` from nyc.config.js exclude\n// once this method is fully removed from this file\nbuildTokenNameError(options){return\"deprecated\";},buildEmptyAlternationError(options){const errMsg=`Ambiguous empty alternative: <${options.emptyChoiceIdx+1}> in inside <${options.topLevelRule.name}> Rule.\nOnly the last alternative may be an empty alternative.`;return errMsg;},buildTooManyAlternativesError(options){const errMsg=`An Alternation cannot have more than 256 alternatives:\n inside <${options.topLevelRule.name}> Rule.\n has ${options.alternation.definition.length+1} alternatives.`;return errMsg;},buildLeftRecursionError(options){const ruleName=options.topLevelRule.name;const pathNames=map(options.leftRecursionPath,currRule=>currRule.name);const leftRecursivePath=`${ruleName} --> ${pathNames.concat([ruleName]).join(\" --> \")}`;const errMsg=`Left Recursion found in grammar.\nrule: <${ruleName}> can be invoked from itself (directly or indirectly)\nwithout consuming any Tokens. The grammar path that causes this is: \n ${leftRecursivePath}\n To fix this refactor your grammar to remove the left recursion.\nsee: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`;return errMsg;},// TODO: remove - `errors_public` from nyc.config.js exclude\n// once this method is fully removed from this file\nbuildInvalidRuleNameError(options){return\"deprecated\";},buildDuplicateRuleNameError(options){let ruleName;if(options.topLevelRule instanceof Rule){ruleName=options.topLevelRule.name;}else{ruleName=options.topLevelRule;}const errMsg=`Duplicate definition, rule: ->${ruleName}<- is already defined in the grammar: ->${options.grammarName}<-`;return errMsg;}};function resolveGrammar$1(topLevels,errMsgProvider){const refResolver=new GastRefResolverVisitor(topLevels,errMsgProvider);refResolver.resolveRefs();return refResolver.errors;}class GastRefResolverVisitor extends GAstVisitor{constructor(nameToTopRule,errMsgProvider){super();this.nameToTopRule=nameToTopRule;this.errMsgProvider=errMsgProvider;this.errors=[];}resolveRefs(){forEach(values(this.nameToTopRule),prod=>{this.currTopLevel=prod;prod.accept(this);});}visitNonTerminal(node){const ref=this.nameToTopRule[node.nonTerminalName];if(!ref){const msg=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,node);this.errors.push({message:msg,type:ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:node.nonTerminalName});}else{node.referencedRule=ref;}}}class AbstractNextPossibleTokensWalker extends RestWalker{constructor(topProd,path){super();this.topProd=topProd;this.path=path;this.possibleTokTypes=[];this.nextProductionName=\"\";this.nextProductionOccurrence=0;this.found=false;this.isAtEndOfPath=false;}startWalking(){this.found=false;if(this.path.ruleStack[0]!==this.topProd.name){throw Error(\"The path does not start with the walker's top Rule!\");}this.ruleStack=clone2(this.path.ruleStack).reverse();this.occurrenceStack=clone2(this.path.occurrenceStack).reverse();this.ruleStack.pop();this.occurrenceStack.pop();this.updateExpectedNext();this.walk(this.topProd);return this.possibleTokTypes;}walk(prod,prevRest=[]){if(!this.found){super.walk(prod,prevRest);}}walkProdRef(refProd,currRest,prevRest){if(refProd.referencedRule.name===this.nextProductionName&&refProd.idx===this.nextProductionOccurrence){const fullRest=currRest.concat(prevRest);this.updateExpectedNext();this.walk(refProd.referencedRule,fullRest);}}updateExpectedNext(){if(isEmpty(this.ruleStack)){this.nextProductionName=\"\";this.nextProductionOccurrence=0;this.isAtEndOfPath=true;}else{this.nextProductionName=this.ruleStack.pop();this.nextProductionOccurrence=this.occurrenceStack.pop();}}}class NextAfterTokenWalker extends AbstractNextPossibleTokensWalker{constructor(topProd,path){super(topProd,path);this.path=path;this.nextTerminalName=\"\";this.nextTerminalOccurrence=0;this.nextTerminalName=this.path.lastTok.name;this.nextTerminalOccurrence=this.path.lastTokOccurrence;}walkTerminal(terminal,currRest,prevRest){if(this.isAtEndOfPath&&terminal.terminalType.name===this.nextTerminalName&&terminal.idx===this.nextTerminalOccurrence&&!this.found){const fullRest=currRest.concat(prevRest);const restProd=new Alternative({definition:fullRest});this.possibleTokTypes=first(restProd);this.found=true;}}}class AbstractNextTerminalAfterProductionWalker extends RestWalker{constructor(topRule,occurrence){super();this.topRule=topRule;this.occurrence=occurrence;this.result={token:void 0,occurrence:void 0,isEndOfRule:void 0};}startWalking(){this.walk(this.topRule);return this.result;}}class NextTerminalAfterManyWalker extends AbstractNextTerminalAfterProductionWalker{walkMany(manyProd,currRest,prevRest){if(manyProd.idx===this.occurrence){const firstAfterMany=head(currRest.concat(prevRest));this.result.isEndOfRule=firstAfterMany===void 0;if(firstAfterMany instanceof Terminal){this.result.token=firstAfterMany.terminalType;this.result.occurrence=firstAfterMany.idx;}}else{super.walkMany(manyProd,currRest,prevRest);}}}class NextTerminalAfterManySepWalker extends AbstractNextTerminalAfterProductionWalker{walkManySep(manySepProd,currRest,prevRest){if(manySepProd.idx===this.occurrence){const firstAfterManySep=head(currRest.concat(prevRest));this.result.isEndOfRule=firstAfterManySep===void 0;if(firstAfterManySep instanceof Terminal){this.result.token=firstAfterManySep.terminalType;this.result.occurrence=firstAfterManySep.idx;}}else{super.walkManySep(manySepProd,currRest,prevRest);}}}class NextTerminalAfterAtLeastOneWalker extends AbstractNextTerminalAfterProductionWalker{walkAtLeastOne(atLeastOneProd,currRest,prevRest){if(atLeastOneProd.idx===this.occurrence){const firstAfterAtLeastOne=head(currRest.concat(prevRest));this.result.isEndOfRule=firstAfterAtLeastOne===void 0;if(firstAfterAtLeastOne instanceof Terminal){this.result.token=firstAfterAtLeastOne.terminalType;this.result.occurrence=firstAfterAtLeastOne.idx;}}else{super.walkAtLeastOne(atLeastOneProd,currRest,prevRest);}}}class NextTerminalAfterAtLeastOneSepWalker extends AbstractNextTerminalAfterProductionWalker{walkAtLeastOneSep(atleastOneSepProd,currRest,prevRest){if(atleastOneSepProd.idx===this.occurrence){const firstAfterfirstAfterAtLeastOneSep=head(currRest.concat(prevRest));this.result.isEndOfRule=firstAfterfirstAfterAtLeastOneSep===void 0;if(firstAfterfirstAfterAtLeastOneSep instanceof Terminal){this.result.token=firstAfterfirstAfterAtLeastOneSep.terminalType;this.result.occurrence=firstAfterfirstAfterAtLeastOneSep.idx;}}else{super.walkAtLeastOneSep(atleastOneSepProd,currRest,prevRest);}}}function possiblePathsFrom(targetDef,maxLength,currPath=[]){currPath=clone2(currPath);let result=[];let i2=0;function remainingPathWith(nextDef){return nextDef.concat(drop(targetDef,i2+1));}function getAlternativesForProd(definition){const alternatives=possiblePathsFrom(remainingPathWith(definition),maxLength,currPath);return result.concat(alternatives);}while(currPath.length{if(isEmpty(currAlt.definition)===false){result=getAlternativesForProd(currAlt.definition);}});return result;}else if(prod instanceof Terminal){currPath.push(prod.terminalType);}else{throw Error(\"non exhaustive match\");}i2++;}result.push({partialPath:currPath,suffixDef:drop(targetDef,i2)});return result;}function nextPossibleTokensAfter(initialDef,tokenVector,tokMatcher,maxLookAhead){const EXIT_NON_TERMINAL=\"EXIT_NONE_TERMINAL\";const EXIT_NON_TERMINAL_ARR=[EXIT_NON_TERMINAL];const EXIT_ALTERNATIVE=\"EXIT_ALTERNATIVE\";let foundCompletePath=false;const tokenVectorLength=tokenVector.length;const minimalAlternativesIndex=tokenVectorLength-maxLookAhead-1;const result=[];const possiblePaths=[];possiblePaths.push({idx:-1,def:initialDef,ruleStack:[],occurrenceStack:[]});while(!isEmpty(possiblePaths)){const currPath=possiblePaths.pop();if(currPath===EXIT_ALTERNATIVE){if(foundCompletePath&&last(possiblePaths).idx<=minimalAlternativesIndex){possiblePaths.pop();}continue;}const currDef=currPath.def;const currIdx=currPath.idx;const currRuleStack=currPath.ruleStack;const currOccurrenceStack=currPath.occurrenceStack;if(isEmpty(currDef)){continue;}const prod=currDef[0];if(prod===EXIT_NON_TERMINAL){const nextPath={idx:currIdx,def:drop(currDef),ruleStack:dropRight(currRuleStack),occurrenceStack:dropRight(currOccurrenceStack)};possiblePaths.push(nextPath);}else if(prod instanceof Terminal){if(currIdx=0;i2--){const currAlt=prod.definition[i2];const currAltPath={idx:currIdx,def:currAlt.definition.concat(drop(currDef)),ruleStack:currRuleStack,occurrenceStack:currOccurrenceStack};possiblePaths.push(currAltPath);possiblePaths.push(EXIT_ALTERNATIVE);}}else if(prod instanceof Alternative){possiblePaths.push({idx:currIdx,def:prod.definition.concat(drop(currDef)),ruleStack:currRuleStack,occurrenceStack:currOccurrenceStack});}else if(prod instanceof Rule){possiblePaths.push(expandTopLevelRule(prod,currIdx,currRuleStack,currOccurrenceStack));}else{throw Error(\"non exhaustive match\");}}return result;}function expandTopLevelRule(topRule,currIdx,currRuleStack,currOccurrenceStack){const newRuleStack=clone2(currRuleStack);newRuleStack.push(topRule.name);const newCurrOccurrenceStack=clone2(currOccurrenceStack);newCurrOccurrenceStack.push(1);return{idx:currIdx,def:topRule.definition,ruleStack:newRuleStack,occurrenceStack:newCurrOccurrenceStack};}var PROD_TYPE;(function(PROD_TYPE2){PROD_TYPE2[PROD_TYPE2[\"OPTION\"]=0]=\"OPTION\";PROD_TYPE2[PROD_TYPE2[\"REPETITION\"]=1]=\"REPETITION\";PROD_TYPE2[PROD_TYPE2[\"REPETITION_MANDATORY\"]=2]=\"REPETITION_MANDATORY\";PROD_TYPE2[PROD_TYPE2[\"REPETITION_MANDATORY_WITH_SEPARATOR\"]=3]=\"REPETITION_MANDATORY_WITH_SEPARATOR\";PROD_TYPE2[PROD_TYPE2[\"REPETITION_WITH_SEPARATOR\"]=4]=\"REPETITION_WITH_SEPARATOR\";PROD_TYPE2[PROD_TYPE2[\"ALTERNATION\"]=5]=\"ALTERNATION\";})(PROD_TYPE||(PROD_TYPE={}));function getProdType(prod){if(prod instanceof Option||prod===\"Option\"){return PROD_TYPE.OPTION;}else if(prod instanceof Repetition||prod===\"Repetition\"){return PROD_TYPE.REPETITION;}else if(prod instanceof RepetitionMandatory||prod===\"RepetitionMandatory\"){return PROD_TYPE.REPETITION_MANDATORY;}else if(prod instanceof RepetitionMandatoryWithSeparator||prod===\"RepetitionMandatoryWithSeparator\"){return PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR;}else if(prod instanceof RepetitionWithSeparator||prod===\"RepetitionWithSeparator\"){return PROD_TYPE.REPETITION_WITH_SEPARATOR;}else if(prod instanceof Alternation||prod===\"Alternation\"){return PROD_TYPE.ALTERNATION;}else{throw Error(\"non exhaustive match\");}}function buildLookaheadFuncForOr(occurrence,ruleGrammar,maxLookahead,hasPredicates,dynamicTokensEnabled,laFuncBuilder){const lookAheadPaths=getLookaheadPathsForOr(occurrence,ruleGrammar,maxLookahead);const tokenMatcher2=areTokenCategoriesNotUsed(lookAheadPaths)?tokenStructuredMatcherNoCategories:tokenStructuredMatcher;return laFuncBuilder(lookAheadPaths,hasPredicates,tokenMatcher2,dynamicTokensEnabled);}function buildLookaheadFuncForOptionalProd(occurrence,ruleGrammar,k,dynamicTokensEnabled,prodType,lookaheadBuilder){const lookAheadPaths=getLookaheadPathsForOptionalProd(occurrence,ruleGrammar,prodType,k);const tokenMatcher2=areTokenCategoriesNotUsed(lookAheadPaths)?tokenStructuredMatcherNoCategories:tokenStructuredMatcher;return lookaheadBuilder(lookAheadPaths[0],tokenMatcher2,dynamicTokensEnabled);}function buildAlternativesLookAheadFunc(alts,hasPredicates,tokenMatcher2,dynamicTokensEnabled){const numOfAlts=alts.length;const areAllOneTokenLookahead=every(alts,currAlt=>{return every(currAlt,currPath=>{return currPath.length===1;});});if(hasPredicates){return function(orAlts){const predicates=map(orAlts,currAlt=>currAlt.GATE);for(let t2=0;t2{return flatten(currAlt);});const choiceToAlt=reduce(singleTokenAlts,(result,currAlt,idx)=>{forEach(currAlt,currTokType=>{if(!has(result,currTokType.tokenTypeIdx)){result[currTokType.tokenTypeIdx]=idx;}forEach(currTokType.categoryMatches,currExtendingType=>{if(!has(result,currExtendingType)){result[currExtendingType]=idx;}});});return result;},{});return function(){const nextToken=this.LA(1);return choiceToAlt[nextToken.tokenTypeIdx];};}else{return function(){for(let t2=0;t2{return currPath.length===1;});const numOfPaths=alt.length;if(areAllOneTokenLookahead&&!dynamicTokensEnabled){const singleTokensTypes=flatten(alt);if(singleTokensTypes.length===1&&isEmpty(singleTokensTypes[0].categoryMatches)){const expectedTokenType=singleTokensTypes[0];const expectedTokenUniqueKey=expectedTokenType.tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===expectedTokenUniqueKey;};}else{const choiceToAlt=reduce(singleTokensTypes,(result,currTokType,idx)=>{result[currTokType.tokenTypeIdx]=true;forEach(currTokType.categoryMatches,currExtendingType=>{result[currExtendingType]=true;});return result;},[]);return function(){const nextToken=this.LA(1);return choiceToAlt[nextToken.tokenTypeIdx]===true;};}}else{return function(){nextPath:for(let j=0;jpossiblePathsFrom([currAlt],1));const finalResult=initializeArrayOfArrays(partialAlts.length);const altsHashes=map(partialAlts,currAltPaths=>{const dict={};forEach(currAltPaths,item=>{const keys2=pathToHashKeys(item.partialPath);forEach(keys2,currKey=>{dict[currKey]=true;});});return dict;});let newData=partialAlts;for(let pathLength=1;pathLength<=k;pathLength++){const currDataset=newData;newData=initializeArrayOfArrays(currDataset.length);for(let altIdx=0;altIdx{const prefixKeys2=pathToHashKeys(item.partialPath);forEach(prefixKeys2,key=>{altsHashes[altIdx][key]=true;});});}}}}return finalResult;}function getLookaheadPathsForOr(occurrence,ruleGrammar,k,orProd){const visitor=new InsideDefinitionFinderVisitor(occurrence,PROD_TYPE.ALTERNATION,orProd);ruleGrammar.accept(visitor);return lookAheadSequenceFromAlternatives(visitor.result,k);}function getLookaheadPathsForOptionalProd(occurrence,ruleGrammar,prodType,k){const insideDefVisitor=new InsideDefinitionFinderVisitor(occurrence,prodType);ruleGrammar.accept(insideDefVisitor);const insideDef=insideDefVisitor.result;const afterDefWalker=new RestDefinitionFinderWalker(ruleGrammar,occurrence,prodType);const afterDef=afterDefWalker.startWalking();const insideFlat=new Alternative({definition:insideDef});const afterFlat=new Alternative({definition:afterDef});return lookAheadSequenceFromAlternatives([insideFlat,afterFlat],k);}function containsPath(alternative,searchPath){compareOtherPath:for(let i2=0;i2{const otherTokType=other[idx];return tokType===otherTokType||otherTokType.categoryMatchesMap[tokType.tokenTypeIdx];});}function areTokenCategoriesNotUsed(lookAheadPaths){return every(lookAheadPaths,singleAltPaths=>every(singleAltPaths,singlePath=>every(singlePath,token=>isEmpty(token.categoryMatches))));}function validateLookahead(options){const lookaheadValidationErrorMessages=options.lookaheadStrategy.validate({rules:options.rules,tokenTypes:options.tokenTypes,grammarName:options.grammarName});return map(lookaheadValidationErrorMessages,errorMessage=>Object.assign({type:ParserDefinitionErrorType.CUSTOM_LOOKAHEAD_VALIDATION},errorMessage));}function validateGrammar$1(topLevels,tokenTypes,errMsgProvider,grammarName){const duplicateErrors=flatMap(topLevels,currTopLevel=>validateDuplicateProductions(currTopLevel,errMsgProvider));const termsNamespaceConflictErrors=checkTerminalAndNoneTerminalsNameSpace(topLevels,tokenTypes,errMsgProvider);const tooManyAltsErrors=flatMap(topLevels,curRule=>validateTooManyAlts(curRule,errMsgProvider));const duplicateRulesError=flatMap(topLevels,curRule=>validateRuleDoesNotAlreadyExist(curRule,topLevels,grammarName,errMsgProvider));return duplicateErrors.concat(termsNamespaceConflictErrors,tooManyAltsErrors,duplicateRulesError);}function validateDuplicateProductions(topLevelRule,errMsgProvider){const collectorVisitor2=new OccurrenceValidationCollector();topLevelRule.accept(collectorVisitor2);const allRuleProductions=collectorVisitor2.allProductions;const productionGroups=groupBy$1(allRuleProductions,identifyProductionForDuplicates);const duplicates=pickBy(productionGroups,currGroup=>{return currGroup.length>1;});const errors=map(values(duplicates),currDuplicates=>{const firstProd=head(currDuplicates);const msg=errMsgProvider.buildDuplicateFoundError(topLevelRule,currDuplicates);const dslName=getProductionDslName(firstProd);const defError={message:msg,type:ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:topLevelRule.name,dslName,occurrence:firstProd.idx};const param=getExtraProductionArgument(firstProd);if(param){defError.parameter=param;}return defError;});return errors;}function identifyProductionForDuplicates(prod){return`${getProductionDslName(prod)}_#_${prod.idx}_#_${getExtraProductionArgument(prod)}`;}function getExtraProductionArgument(prod){if(prod instanceof Terminal){return prod.terminalType.name;}else if(prod instanceof NonTerminal){return prod.nonTerminalName;}else{return\"\";}}class OccurrenceValidationCollector extends GAstVisitor{constructor(){super(...arguments);this.allProductions=[];}visitNonTerminal(subrule){this.allProductions.push(subrule);}visitOption(option){this.allProductions.push(option);}visitRepetitionWithSeparator(manySep){this.allProductions.push(manySep);}visitRepetitionMandatory(atLeastOne){this.allProductions.push(atLeastOne);}visitRepetitionMandatoryWithSeparator(atLeastOneSep){this.allProductions.push(atLeastOneSep);}visitRepetition(many){this.allProductions.push(many);}visitAlternation(or){this.allProductions.push(or);}visitTerminal(terminal){this.allProductions.push(terminal);}}function validateRuleDoesNotAlreadyExist(rule,allRules,className,errMsgProvider){const errors=[];const occurrences=reduce(allRules,(result,curRule)=>{if(curRule.name===rule.name){return result+1;}return result;},0);if(occurrences>1){const errMsg=errMsgProvider.buildDuplicateRuleNameError({topLevelRule:rule,grammarName:className});errors.push({message:errMsg,type:ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:rule.name});}return errors;}function validateRuleIsOverridden(ruleName,definedRulesNames,className){const errors=[];let errMsg;if(!includes(definedRulesNames,ruleName)){errMsg=`Invalid rule override, rule: ->${ruleName}<- cannot be overridden in the grammar: ->${className}<-as it is not defined in any of the super grammars `;errors.push({message:errMsg,type:ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName});}return errors;}function validateNoLeftRecursion(topRule,currRule,errMsgProvider,path=[]){const errors=[];const nextNonTerminals=getFirstNoneTerminal(currRule.definition);if(isEmpty(nextNonTerminals)){return[];}else{const ruleName=topRule.name;const foundLeftRecursion=includes(nextNonTerminals,topRule);if(foundLeftRecursion){errors.push({message:errMsgProvider.buildLeftRecursionError({topLevelRule:topRule,leftRecursionPath:path}),type:ParserDefinitionErrorType.LEFT_RECURSION,ruleName});}const validNextSteps=difference$1(nextNonTerminals,path.concat([topRule]));const errorsFromNextSteps=flatMap(validNextSteps,currRefRule=>{const newPath=clone2(path);newPath.push(currRefRule);return validateNoLeftRecursion(topRule,currRefRule,errMsgProvider,newPath);});return errors.concat(errorsFromNextSteps);}}function getFirstNoneTerminal(definition){let result=[];if(isEmpty(definition)){return result;}const firstProd=head(definition);if(firstProd instanceof NonTerminal){result.push(firstProd.referencedRule);}else if(firstProd instanceof Alternative||firstProd instanceof Option||firstProd instanceof RepetitionMandatory||firstProd instanceof RepetitionMandatoryWithSeparator||firstProd instanceof RepetitionWithSeparator||firstProd instanceof Repetition){result=result.concat(getFirstNoneTerminal(firstProd.definition));}else if(firstProd instanceof Alternation){result=flatten(map(firstProd.definition,currSubDef=>getFirstNoneTerminal(currSubDef.definition)));}else if(firstProd instanceof Terminal);else{throw Error(\"non exhaustive match\");}const isFirstOptional=isOptionalProd(firstProd);const hasMore=definition.length>1;if(isFirstOptional&&hasMore){const rest=drop(definition);return result.concat(getFirstNoneTerminal(rest));}else{return result;}}class OrCollector extends GAstVisitor{constructor(){super(...arguments);this.alternations=[];}visitAlternation(node){this.alternations.push(node);}}function validateEmptyOrAlternative(topLevelRule,errMsgProvider){const orCollector=new OrCollector();topLevelRule.accept(orCollector);const ors=orCollector.alternations;const errors=flatMap(ors,currOr=>{const exceptLast=dropRight(currOr.definition);return flatMap(exceptLast,(currAlternative,currAltIdx)=>{const possibleFirstInAlt=nextPossibleTokensAfter([currAlternative],[],tokenStructuredMatcher,1);if(isEmpty(possibleFirstInAlt)){return[{message:errMsgProvider.buildEmptyAlternationError({topLevelRule,alternation:currOr,emptyChoiceIdx:currAltIdx}),type:ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:topLevelRule.name,occurrence:currOr.idx,alternative:currAltIdx+1}];}else{return[];}});});return errors;}function validateAmbiguousAlternationAlternatives(topLevelRule,globalMaxLookahead,errMsgProvider){const orCollector=new OrCollector();topLevelRule.accept(orCollector);let ors=orCollector.alternations;ors=reject(ors,currOr=>currOr.ignoreAmbiguities===true);const errors=flatMap(ors,currOr=>{const currOccurrence=currOr.idx;const actualMaxLookahead=currOr.maxLookahead||globalMaxLookahead;const alternatives=getLookaheadPathsForOr(currOccurrence,topLevelRule,actualMaxLookahead,currOr);const altsAmbiguityErrors=checkAlternativesAmbiguities(alternatives,currOr,topLevelRule,errMsgProvider);const altsPrefixAmbiguityErrors=checkPrefixAlternativesAmbiguities(alternatives,currOr,topLevelRule,errMsgProvider);return altsAmbiguityErrors.concat(altsPrefixAmbiguityErrors);});return errors;}class RepetitionCollector extends GAstVisitor{constructor(){super(...arguments);this.allProductions=[];}visitRepetitionWithSeparator(manySep){this.allProductions.push(manySep);}visitRepetitionMandatory(atLeastOne){this.allProductions.push(atLeastOne);}visitRepetitionMandatoryWithSeparator(atLeastOneSep){this.allProductions.push(atLeastOneSep);}visitRepetition(many){this.allProductions.push(many);}}function validateTooManyAlts(topLevelRule,errMsgProvider){const orCollector=new OrCollector();topLevelRule.accept(orCollector);const ors=orCollector.alternations;const errors=flatMap(ors,currOr=>{if(currOr.definition.length>255){return[{message:errMsgProvider.buildTooManyAlternativesError({topLevelRule,alternation:currOr}),type:ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:topLevelRule.name,occurrence:currOr.idx}];}else{return[];}});return errors;}function validateSomeNonEmptyLookaheadPath(topLevelRules,maxLookahead,errMsgProvider){const errors=[];forEach(topLevelRules,currTopRule=>{const collectorVisitor2=new RepetitionCollector();currTopRule.accept(collectorVisitor2);const allRuleProductions=collectorVisitor2.allProductions;forEach(allRuleProductions,currProd=>{const prodType=getProdType(currProd);const actualMaxLookahead=currProd.maxLookahead||maxLookahead;const currOccurrence=currProd.idx;const paths=getLookaheadPathsForOptionalProd(currOccurrence,currTopRule,prodType,actualMaxLookahead);const pathsInsideProduction=paths[0];if(isEmpty(flatten(pathsInsideProduction))){const errMsg=errMsgProvider.buildEmptyRepetitionError({topLevelRule:currTopRule,repetition:currProd});errors.push({message:errMsg,type:ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:currTopRule.name});}});});return errors;}function checkAlternativesAmbiguities(alternatives,alternation,rule,errMsgProvider){const foundAmbiguousPaths=[];const identicalAmbiguities=reduce(alternatives,(result,currAlt,currAltIdx)=>{if(alternation.definition[currAltIdx].ignoreAmbiguities===true){return result;}forEach(currAlt,currPath=>{const altsCurrPathAppearsIn=[currAltIdx];forEach(alternatives,(currOtherAlt,currOtherAltIdx)=>{if(currAltIdx!==currOtherAltIdx&&containsPath(currOtherAlt,currPath)&&// ignore (skip) ambiguities with this \"other\" alternative\nalternation.definition[currOtherAltIdx].ignoreAmbiguities!==true){altsCurrPathAppearsIn.push(currOtherAltIdx);}});if(altsCurrPathAppearsIn.length>1&&!containsPath(foundAmbiguousPaths,currPath)){foundAmbiguousPaths.push(currPath);result.push({alts:altsCurrPathAppearsIn,path:currPath});}});return result;},[]);const currErrors=map(identicalAmbiguities,currAmbDescriptor=>{const ambgIndices=map(currAmbDescriptor.alts,currAltIdx=>currAltIdx+1);const currMessage=errMsgProvider.buildAlternationAmbiguityError({topLevelRule:rule,alternation,ambiguityIndices:ambgIndices,prefixPath:currAmbDescriptor.path});return{message:currMessage,type:ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:rule.name,occurrence:alternation.idx,alternatives:currAmbDescriptor.alts};});return currErrors;}function checkPrefixAlternativesAmbiguities(alternatives,alternation,rule,errMsgProvider){const pathsAndIndices=reduce(alternatives,(result,currAlt,idx)=>{const currPathsAndIdx=map(currAlt,currPath=>{return{idx,path:currPath};});return result.concat(currPathsAndIdx);},[]);const errors=compact(flatMap(pathsAndIndices,currPathAndIdx=>{const alternativeGast=alternation.definition[currPathAndIdx.idx];if(alternativeGast.ignoreAmbiguities===true){return[];}const targetIdx=currPathAndIdx.idx;const targetPath=currPathAndIdx.path;const prefixAmbiguitiesPathsAndIndices=filter(pathsAndIndices,searchPathAndIdx=>{return(// ignore (skip) ambiguities with this \"other\" alternative\nalternation.definition[searchPathAndIdx.idx].ignoreAmbiguities!==true&&searchPathAndIdx.idx{const ambgIndices=[currAmbPathAndIdx.idx+1,targetIdx+1];const occurrence=alternation.idx===0?\"\":alternation.idx;const message=errMsgProvider.buildAlternationPrefixAmbiguityError({topLevelRule:rule,alternation,ambiguityIndices:ambgIndices,prefixPath:currAmbPathAndIdx.path});return{message,type:ParserDefinitionErrorType.AMBIGUOUS_PREFIX_ALTS,ruleName:rule.name,occurrence,alternatives:ambgIndices};});return currPathPrefixErrors;}));return errors;}function checkTerminalAndNoneTerminalsNameSpace(topLevels,tokenTypes,errMsgProvider){const errors=[];const tokenNames=map(tokenTypes,currToken=>currToken.name);forEach(topLevels,currRule=>{const currRuleName=currRule.name;if(includes(tokenNames,currRuleName)){const errMsg=errMsgProvider.buildNamespaceConflictError(currRule);errors.push({message:errMsg,type:ParserDefinitionErrorType.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:currRuleName});}});return errors;}function resolveGrammar(options){const actualOptions=defaults$1(options,{errMsgProvider:defaultGrammarResolverErrorProvider});const topRulesTable={};forEach(options.rules,rule=>{topRulesTable[rule.name]=rule;});return resolveGrammar$1(topRulesTable,actualOptions.errMsgProvider);}function validateGrammar(options){options=defaults$1(options,{errMsgProvider:defaultGrammarValidatorErrorProvider});return validateGrammar$1(options.rules,options.tokenTypes,options.errMsgProvider,options.grammarName);}const MISMATCHED_TOKEN_EXCEPTION=\"MismatchedTokenException\";const NO_VIABLE_ALT_EXCEPTION=\"NoViableAltException\";const EARLY_EXIT_EXCEPTION=\"EarlyExitException\";const NOT_ALL_INPUT_PARSED_EXCEPTION=\"NotAllInputParsedException\";const RECOGNITION_EXCEPTION_NAMES=[MISMATCHED_TOKEN_EXCEPTION,NO_VIABLE_ALT_EXCEPTION,EARLY_EXIT_EXCEPTION,NOT_ALL_INPUT_PARSED_EXCEPTION];Object.freeze(RECOGNITION_EXCEPTION_NAMES);function isRecognitionException(error){return includes(RECOGNITION_EXCEPTION_NAMES,error.name);}class RecognitionException extends Error{constructor(message,token){super(message);this.token=token;this.resyncedTokens=[];Object.setPrototypeOf(this,new.target.prototype);if(Error.captureStackTrace){Error.captureStackTrace(this,this.constructor);}}}class MismatchedTokenException extends RecognitionException{constructor(message,token,previousToken){super(message,token);this.previousToken=previousToken;this.name=MISMATCHED_TOKEN_EXCEPTION;}}class NoViableAltException extends RecognitionException{constructor(message,token,previousToken){super(message,token);this.previousToken=previousToken;this.name=NO_VIABLE_ALT_EXCEPTION;}}class NotAllInputParsedException extends RecognitionException{constructor(message,token){super(message,token);this.name=NOT_ALL_INPUT_PARSED_EXCEPTION;}}class EarlyExitException extends RecognitionException{constructor(message,token,previousToken){super(message,token);this.previousToken=previousToken;this.name=EARLY_EXIT_EXCEPTION;}}const EOF_FOLLOW_KEY={};const IN_RULE_RECOVERY_EXCEPTION=\"InRuleRecoveryException\";class InRuleRecoveryException extends Error{constructor(message){super(message);this.name=IN_RULE_RECOVERY_EXCEPTION;}}class Recoverable{initRecoverable(config){this.firstAfterRepMap={};this.resyncFollows={};this.recoveryEnabled=has(config,\"recoveryEnabled\")?config.recoveryEnabled:DEFAULT_PARSER_CONFIG.recoveryEnabled;if(this.recoveryEnabled){this.attemptInRepetitionRecovery=attemptInRepetitionRecovery;}}getTokenToInsert(tokType){const tokToInsert=createTokenInstance(tokType,\"\",NaN,NaN,NaN,NaN,NaN,NaN);tokToInsert.isInsertedInRecovery=true;return tokToInsert;}canTokenTypeBeInsertedInRecovery(tokType){return true;}canTokenTypeBeDeletedInRecovery(tokType){return true;}tryInRepetitionRecovery(grammarRule,grammarRuleArgs,lookAheadFunc,expectedTokType){const reSyncTokType=this.findReSyncTokenType();const savedLexerState=this.exportLexerState();const resyncedTokens=[];let passedResyncPoint=false;const nextTokenWithoutResync=this.LA(1);let currToken=this.LA(1);const generateErrorMessage=()=>{const previousToken=this.LA(0);const msg=this.errorMessageProvider.buildMismatchTokenMessage({expected:expectedTokType,actual:nextTokenWithoutResync,previous:previousToken,ruleName:this.getCurrRuleFullName()});const error=new MismatchedTokenException(msg,nextTokenWithoutResync,this.LA(0));error.resyncedTokens=dropRight(resyncedTokens);this.SAVE_ERROR(error);};while(!passedResyncPoint){if(this.tokenMatcher(currToken,expectedTokType)){generateErrorMessage();return;}else if(lookAheadFunc.call(this)){generateErrorMessage();grammarRule.apply(this,grammarRuleArgs);return;}else if(this.tokenMatcher(currToken,reSyncTokType)){passedResyncPoint=true;}else{currToken=this.SKIP_TOKEN();this.addToResyncTokens(currToken,resyncedTokens);}}this.importLexerState(savedLexerState);}shouldInRepetitionRecoveryBeTried(expectTokAfterLastMatch,nextTokIdx,notStuck){if(notStuck===false){return false;}if(this.tokenMatcher(this.LA(1),expectTokAfterLastMatch)){return false;}if(this.isBackTracking()){return false;}if(this.canPerformInRuleRecovery(expectTokAfterLastMatch,this.getFollowsForInRuleRecovery(expectTokAfterLastMatch,nextTokIdx))){return false;}return true;}// Error Recovery functionality\ngetFollowsForInRuleRecovery(tokType,tokIdxInRule){const grammarPath=this.getCurrentGrammarPath(tokType,tokIdxInRule);const follows=this.getNextPossibleTokenTypes(grammarPath);return follows;}tryInRuleRecovery(expectedTokType,follows){if(this.canRecoverWithSingleTokenInsertion(expectedTokType,follows)){const tokToInsert=this.getTokenToInsert(expectedTokType);return tokToInsert;}if(this.canRecoverWithSingleTokenDeletion(expectedTokType)){const nextTok=this.SKIP_TOKEN();this.consumeToken();return nextTok;}throw new InRuleRecoveryException(\"sad sad panda\");}canPerformInRuleRecovery(expectedToken,follows){return this.canRecoverWithSingleTokenInsertion(expectedToken,follows)||this.canRecoverWithSingleTokenDeletion(expectedToken);}canRecoverWithSingleTokenInsertion(expectedTokType,follows){if(!this.canTokenTypeBeInsertedInRecovery(expectedTokType)){return false;}if(isEmpty(follows)){return false;}const mismatchedTok=this.LA(1);const isMisMatchedTokInFollows=find$1(follows,possibleFollowsTokType=>{return this.tokenMatcher(mismatchedTok,possibleFollowsTokType);})!==void 0;return isMisMatchedTokInFollows;}canRecoverWithSingleTokenDeletion(expectedTokType){if(!this.canTokenTypeBeDeletedInRecovery(expectedTokType)){return false;}const isNextTokenWhatIsExpected=this.tokenMatcher(this.LA(2),expectedTokType);return isNextTokenWhatIsExpected;}isInCurrentRuleReSyncSet(tokenTypeIdx){const followKey=this.getCurrFollowKey();const currentRuleReSyncSet=this.getFollowSetFromFollowKey(followKey);return includes(currentRuleReSyncSet,tokenTypeIdx);}findReSyncTokenType(){const allPossibleReSyncTokTypes=this.flattenFollowSet();let nextToken=this.LA(1);let k=2;while(true){const foundMatch=find$1(allPossibleReSyncTokTypes,resyncTokType=>{const canMatch=tokenMatcher(nextToken,resyncTokType);return canMatch;});if(foundMatch!==void 0){return foundMatch;}nextToken=this.LA(k);k++;}}getCurrFollowKey(){if(this.RULE_STACK.length===1){return EOF_FOLLOW_KEY;}const currRuleShortName=this.getLastExplicitRuleShortName();const currRuleIdx=this.getLastExplicitRuleOccurrenceIndex();const prevRuleShortName=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(currRuleShortName),idxInCallingRule:currRuleIdx,inRule:this.shortRuleNameToFullName(prevRuleShortName)};}buildFullFollowKeyStack(){const explicitRuleStack=this.RULE_STACK;const explicitOccurrenceStack=this.RULE_OCCURRENCE_STACK;return map(explicitRuleStack,(ruleName,idx)=>{if(idx===0){return EOF_FOLLOW_KEY;}return{ruleName:this.shortRuleNameToFullName(ruleName),idxInCallingRule:explicitOccurrenceStack[idx],inRule:this.shortRuleNameToFullName(explicitRuleStack[idx-1])};});}flattenFollowSet(){const followStack=map(this.buildFullFollowKeyStack(),currKey=>{return this.getFollowSetFromFollowKey(currKey);});return flatten(followStack);}getFollowSetFromFollowKey(followKey){if(followKey===EOF_FOLLOW_KEY){return[EOF];}const followName=followKey.ruleName+followKey.idxInCallingRule+IN+followKey.inRule;return this.resyncFollows[followName];}// It does not make any sense to include a virtual EOF token in the list of resynced tokens\n// as EOF does not really exist and thus does not contain any useful information (line/column numbers)\naddToResyncTokens(token,resyncTokens){if(!this.tokenMatcher(token,EOF)){resyncTokens.push(token);}return resyncTokens;}reSyncTo(tokType){const resyncedTokens=[];let nextTok=this.LA(1);while(this.tokenMatcher(nextTok,tokType)===false){nextTok=this.SKIP_TOKEN();this.addToResyncTokens(nextTok,resyncedTokens);}return dropRight(resyncedTokens);}attemptInRepetitionRecovery(prodFunc,args,lookaheadFunc,dslMethodIdx,prodOccurrence,nextToksWalker,notStuck){}getCurrentGrammarPath(tokType,tokIdxInRule){const pathRuleStack=this.getHumanReadableRuleStack();const pathOccurrenceStack=clone2(this.RULE_OCCURRENCE_STACK);const grammarPath={ruleStack:pathRuleStack,occurrenceStack:pathOccurrenceStack,lastTok:tokType,lastTokOccurrence:tokIdxInRule};return grammarPath;}getHumanReadableRuleStack(){return map(this.RULE_STACK,currShortName=>this.shortRuleNameToFullName(currShortName));}}function attemptInRepetitionRecovery(prodFunc,args,lookaheadFunc,dslMethodIdx,prodOccurrence,nextToksWalker,notStuck){const key=this.getKeyForAutomaticLookahead(dslMethodIdx,prodOccurrence);let firstAfterRepInfo=this.firstAfterRepMap[key];if(firstAfterRepInfo===void 0){const currRuleName=this.getCurrRuleFullName();const ruleGrammar=this.getGAstProductions()[currRuleName];const walker=new nextToksWalker(ruleGrammar,prodOccurrence);firstAfterRepInfo=walker.startWalking();this.firstAfterRepMap[key]=firstAfterRepInfo;}let expectTokAfterLastMatch=firstAfterRepInfo.token;let nextTokIdx=firstAfterRepInfo.occurrence;const isEndOfRule=firstAfterRepInfo.isEndOfRule;if(this.RULE_STACK.length===1&&isEndOfRule&&expectTokAfterLastMatch===void 0){expectTokAfterLastMatch=EOF;nextTokIdx=1;}if(expectTokAfterLastMatch===void 0||nextTokIdx===void 0){return;}if(this.shouldInRepetitionRecoveryBeTried(expectTokAfterLastMatch,nextTokIdx,notStuck)){this.tryInRepetitionRecovery(prodFunc,args,lookaheadFunc,expectTokAfterLastMatch);}}const BITS_FOR_METHOD_TYPE=4;const BITS_FOR_OCCURRENCE_IDX=8;const OR_IDX=1<validateNoLeftRecursion(currTopRule,currTopRule,defaultGrammarValidatorErrorProvider));}validateEmptyOrAlternatives(rules){return flatMap(rules,currTopRule=>validateEmptyOrAlternative(currTopRule,defaultGrammarValidatorErrorProvider));}validateAmbiguousAlternationAlternatives(rules,maxLookahead){return flatMap(rules,currTopRule=>validateAmbiguousAlternationAlternatives(currTopRule,maxLookahead,defaultGrammarValidatorErrorProvider));}validateSomeNonEmptyLookaheadPath(rules,maxLookahead){return validateSomeNonEmptyLookaheadPath(rules,maxLookahead,defaultGrammarValidatorErrorProvider);}buildLookaheadForAlternation(options){return buildLookaheadFuncForOr(options.prodOccurrence,options.rule,options.maxLookahead,options.hasPredicates,options.dynamicTokensEnabled,buildAlternativesLookAheadFunc);}buildLookaheadForOptional(options){return buildLookaheadFuncForOptionalProd(options.prodOccurrence,options.rule,options.maxLookahead,options.dynamicTokensEnabled,getProdType(options.prodType),buildSingleAlternativeLookaheadFunction);}}class LooksAhead{initLooksAhead(config){this.dynamicTokensEnabled=has(config,\"dynamicTokensEnabled\")?config.dynamicTokensEnabled:DEFAULT_PARSER_CONFIG.dynamicTokensEnabled;this.maxLookahead=has(config,\"maxLookahead\")?config.maxLookahead:DEFAULT_PARSER_CONFIG.maxLookahead;this.lookaheadStrategy=has(config,\"lookaheadStrategy\")?config.lookaheadStrategy:new LLkLookaheadStrategy({maxLookahead:this.maxLookahead});this.lookAheadFuncsCache=/* @__PURE__ */new Map();}preComputeLookaheadFunctions(rules){forEach(rules,currRule=>{this.TRACE_INIT(`${currRule.name} Rule Lookahead`,()=>{const{alternation,repetition,option,repetitionMandatory,repetitionMandatoryWithSeparator,repetitionWithSeparator}=collectMethods(currRule);forEach(alternation,currProd=>{const prodIdx=currProd.idx===0?\"\":currProd.idx;this.TRACE_INIT(`${getProductionDslName(currProd)}${prodIdx}`,()=>{const laFunc=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:currProd.idx,rule:currRule,maxLookahead:currProd.maxLookahead||this.maxLookahead,hasPredicates:currProd.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled});const key=getKeyForAutomaticLookahead(this.fullRuleNameToShort[currRule.name],OR_IDX,currProd.idx);this.setLaFuncCache(key,laFunc);});});forEach(repetition,currProd=>{this.computeLookaheadFunc(currRule,currProd.idx,MANY_IDX,\"Repetition\",currProd.maxLookahead,getProductionDslName(currProd));});forEach(option,currProd=>{this.computeLookaheadFunc(currRule,currProd.idx,OPTION_IDX,\"Option\",currProd.maxLookahead,getProductionDslName(currProd));});forEach(repetitionMandatory,currProd=>{this.computeLookaheadFunc(currRule,currProd.idx,AT_LEAST_ONE_IDX,\"RepetitionMandatory\",currProd.maxLookahead,getProductionDslName(currProd));});forEach(repetitionMandatoryWithSeparator,currProd=>{this.computeLookaheadFunc(currRule,currProd.idx,AT_LEAST_ONE_SEP_IDX,\"RepetitionMandatoryWithSeparator\",currProd.maxLookahead,getProductionDslName(currProd));});forEach(repetitionWithSeparator,currProd=>{this.computeLookaheadFunc(currRule,currProd.idx,MANY_SEP_IDX,\"RepetitionWithSeparator\",currProd.maxLookahead,getProductionDslName(currProd));});});});}computeLookaheadFunc(rule,prodOccurrence,prodKey,prodType,prodMaxLookahead,dslMethodName){this.TRACE_INIT(`${dslMethodName}${prodOccurrence===0?\"\":prodOccurrence}`,()=>{const laFunc=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence,rule,maxLookahead:prodMaxLookahead||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType});const key=getKeyForAutomaticLookahead(this.fullRuleNameToShort[rule.name],prodKey,prodOccurrence);this.setLaFuncCache(key,laFunc);});}// this actually returns a number, but it is always used as a string (object prop key)\ngetKeyForAutomaticLookahead(dslMethodIdx,occurrence){const currRuleShortName=this.getLastExplicitRuleShortName();return getKeyForAutomaticLookahead(currRuleShortName,dslMethodIdx,occurrence);}getLaFuncFromCache(key){return this.lookAheadFuncsCache.get(key);}/* istanbul ignore next */setLaFuncCache(key,value){this.lookAheadFuncsCache.set(key,value);}}class DslMethodsCollectorVisitor extends GAstVisitor{constructor(){super(...arguments);this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]};}reset(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]};}visitOption(option){this.dslMethods.option.push(option);}visitRepetitionWithSeparator(manySep){this.dslMethods.repetitionWithSeparator.push(manySep);}visitRepetitionMandatory(atLeastOne){this.dslMethods.repetitionMandatory.push(atLeastOne);}visitRepetitionMandatoryWithSeparator(atLeastOneSep){this.dslMethods.repetitionMandatoryWithSeparator.push(atLeastOneSep);}visitRepetition(many){this.dslMethods.repetition.push(many);}visitAlternation(or){this.dslMethods.alternation.push(or);}}const collectorVisitor=new DslMethodsCollectorVisitor();function collectMethods(rule){collectorVisitor.reset();rule.accept(collectorVisitor);const dslMethods=collectorVisitor.dslMethods;collectorVisitor.reset();return dslMethods;}function setNodeLocationOnlyOffset(currNodeLocation,newLocationInfo){if(isNaN(currNodeLocation.startOffset)===true){currNodeLocation.startOffset=newLocationInfo.startOffset;currNodeLocation.endOffset=newLocationInfo.endOffset;}else if(currNodeLocation.endOffsetcurrDefError.msg);throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>:\n\t${errorMessages.join(\"\\n\\n\").replace(/\\n/g,\"\\n\t\")}`);}}};derivedConstructor.prototype=semanticProto;derivedConstructor.prototype.constructor=derivedConstructor;derivedConstructor._RULE_NAMES=ruleNames;return derivedConstructor;}function createBaseVisitorConstructorWithDefaults(grammarName,ruleNames,baseConstructor){const derivedConstructor=function(){};defineNameProp(derivedConstructor,grammarName+\"BaseSemanticsWithDefaults\");const withDefaultsProto=Object.create(baseConstructor.prototype);forEach(ruleNames,ruleName=>{withDefaultsProto[ruleName]=defaultVisit;});derivedConstructor.prototype=withDefaultsProto;derivedConstructor.prototype.constructor=derivedConstructor;return derivedConstructor;}var CstVisitorDefinitionError;(function(CstVisitorDefinitionError2){CstVisitorDefinitionError2[CstVisitorDefinitionError2[\"REDUNDANT_METHOD\"]=0]=\"REDUNDANT_METHOD\";CstVisitorDefinitionError2[CstVisitorDefinitionError2[\"MISSING_METHOD\"]=1]=\"MISSING_METHOD\";})(CstVisitorDefinitionError||(CstVisitorDefinitionError={}));function validateVisitor(visitorInstance,ruleNames){const missingErrors=validateMissingCstMethods(visitorInstance,ruleNames);return missingErrors;}function validateMissingCstMethods(visitorInstance,ruleNames){const missingRuleNames=filter(ruleNames,currRuleName=>{return isFunction(visitorInstance[currRuleName])===false;});const errors=map(missingRuleNames,currRuleName=>{return{msg:`Missing visitor method: <${currRuleName}> on ${visitorInstance.constructor.name} CST Visitor.`,type:CstVisitorDefinitionError.MISSING_METHOD,methodName:currRuleName};});return compact(errors);}class TreeBuilder{initTreeBuilder(config){this.CST_STACK=[];this.outputCst=config.outputCst;this.nodeLocationTracking=has(config,\"nodeLocationTracking\")?config.nodeLocationTracking:DEFAULT_PARSER_CONFIG.nodeLocationTracking;if(!this.outputCst){this.cstInvocationStateUpdate=noop;this.cstFinallyStateUpdate=noop;this.cstPostTerminal=noop;this.cstPostNonTerminal=noop;this.cstPostRule=noop;}else{if(/full/i.test(this.nodeLocationTracking)){if(this.recoveryEnabled){this.setNodeLocationFromToken=setNodeLocationFull;this.setNodeLocationFromNode=setNodeLocationFull;this.cstPostRule=noop;this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery;}else{this.setNodeLocationFromToken=noop;this.setNodeLocationFromNode=noop;this.cstPostRule=this.cstPostRuleFull;this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular;}}else if(/onlyOffset/i.test(this.nodeLocationTracking)){if(this.recoveryEnabled){this.setNodeLocationFromToken=setNodeLocationOnlyOffset;this.setNodeLocationFromNode=setNodeLocationOnlyOffset;this.cstPostRule=noop;this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery;}else{this.setNodeLocationFromToken=noop;this.setNodeLocationFromNode=noop;this.cstPostRule=this.cstPostRuleOnlyOffset;this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular;}}else if(/none/i.test(this.nodeLocationTracking)){this.setNodeLocationFromToken=noop;this.setNodeLocationFromNode=noop;this.cstPostRule=noop;this.setInitialNodeLocation=noop;}else{throw Error(`Invalid config option: \"${config.nodeLocationTracking}\"`);}}}setInitialNodeLocationOnlyOffsetRecovery(cstNode){cstNode.location={startOffset:NaN,endOffset:NaN};}setInitialNodeLocationOnlyOffsetRegular(cstNode){cstNode.location={// without error recovery the starting Location of a new CstNode is guaranteed\n// To be the next Token's startOffset (for valid inputs).\n// For invalid inputs there won't be any CSTOutput so this potential\n// inaccuracy does not matter\nstartOffset:this.LA(1).startOffset,endOffset:NaN};}setInitialNodeLocationFullRecovery(cstNode){cstNode.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN};}/**\n * @see setInitialNodeLocationOnlyOffsetRegular for explanation why this work\n \n * @param cstNode\n */setInitialNodeLocationFullRegular(cstNode){const nextToken=this.LA(1);cstNode.location={startOffset:nextToken.startOffset,startLine:nextToken.startLine,startColumn:nextToken.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN};}cstInvocationStateUpdate(fullRuleName){const cstNode={name:fullRuleName,children:/* @__PURE__ */Object.create(null)};this.setInitialNodeLocation(cstNode);this.CST_STACK.push(cstNode);}cstFinallyStateUpdate(){this.CST_STACK.pop();}cstPostRuleFull(ruleCstNode){const prevToken=this.LA(0);const loc=ruleCstNode.location;if(loc.startOffset<=prevToken.startOffset===true){loc.endOffset=prevToken.endOffset;loc.endLine=prevToken.endLine;loc.endColumn=prevToken.endColumn;}else{loc.startOffset=NaN;loc.startLine=NaN;loc.startColumn=NaN;}}cstPostRuleOnlyOffset(ruleCstNode){const prevToken=this.LA(0);const loc=ruleCstNode.location;if(loc.startOffset<=prevToken.startOffset===true){loc.endOffset=prevToken.endOffset;}else{loc.startOffset=NaN;}}cstPostTerminal(key,consumedToken){const rootCst=this.CST_STACK[this.CST_STACK.length-1];addTerminalToCst(rootCst,consumedToken,key);this.setNodeLocationFromToken(rootCst.location,consumedToken);}cstPostNonTerminal(ruleCstResult,ruleName){const preCstNode=this.CST_STACK[this.CST_STACK.length-1];addNoneTerminalToCst(preCstNode,ruleName,ruleCstResult);this.setNodeLocationFromNode(preCstNode.location,ruleCstResult.location);}getBaseCstVisitorConstructor(){if(isUndefined(this.baseCstVisitorConstructor)){const newBaseCstVisitorConstructor=createBaseSemanticVisitorConstructor(this.className,keys(this.gastProductionsCache));this.baseCstVisitorConstructor=newBaseCstVisitorConstructor;return newBaseCstVisitorConstructor;}return this.baseCstVisitorConstructor;}getBaseCstVisitorConstructorWithDefaults(){if(isUndefined(this.baseCstVisitorWithDefaultsConstructor)){const newConstructor=createBaseVisitorConstructorWithDefaults(this.className,keys(this.gastProductionsCache),this.getBaseCstVisitorConstructor());this.baseCstVisitorWithDefaultsConstructor=newConstructor;return newConstructor;}return this.baseCstVisitorWithDefaultsConstructor;}getLastExplicitRuleShortName(){const ruleStack=this.RULE_STACK;return ruleStack[ruleStack.length-1];}getPreviousExplicitRuleShortName(){const ruleStack=this.RULE_STACK;return ruleStack[ruleStack.length-2];}getLastExplicitRuleOccurrenceIndex(){const occurrenceStack=this.RULE_OCCURRENCE_STACK;return occurrenceStack[occurrenceStack.length-1];}}class LexerAdapter{initLexerAdapter(){this.tokVector=[];this.tokVectorLength=0;this.currIdx=-1;}set input(newInput){if(this.selfAnalysisDone!==true){throw Error(`Missing invocation at the end of the Parser's constructor.`);}this.reset();this.tokVector=newInput;this.tokVectorLength=newInput.length;}get input(){return this.tokVector;}// skips a token and returns the next token\nSKIP_TOKEN(){if(this.currIdx<=this.tokVector.length-2){this.consumeToken();return this.LA(1);}else{return END_OF_FILE;}}// Lexer (accessing Token vector) related methods which can be overridden to implement lazy lexers\n// or lexers dependent on parser context.\nLA(howMuch){const soughtIdx=this.currIdx+howMuch;if(soughtIdx<0||this.tokVectorLength<=soughtIdx){return END_OF_FILE;}else{return this.tokVector[soughtIdx];}}consumeToken(){this.currIdx++;}exportLexerState(){return this.currIdx;}importLexerState(newState){this.currIdx=newState;}resetLexerState(){this.currIdx=-1;}moveToTerminatedState(){this.currIdx=this.tokVector.length-1;}getLexerPosition(){return this.exportLexerState();}}class RecognizerApi{ACTION(impl){return impl.call(this);}consume(idx,tokType,options){return this.consumeInternal(tokType,idx,options);}subrule(idx,ruleToCall,options){return this.subruleInternal(ruleToCall,idx,options);}option(idx,actionORMethodDef){return this.optionInternal(actionORMethodDef,idx);}or(idx,altsOrOpts){return this.orInternal(altsOrOpts,idx);}many(idx,actionORMethodDef){return this.manyInternal(idx,actionORMethodDef);}atLeastOne(idx,actionORMethodDef){return this.atLeastOneInternal(idx,actionORMethodDef);}CONSUME(tokType,options){return this.consumeInternal(tokType,0,options);}CONSUME1(tokType,options){return this.consumeInternal(tokType,1,options);}CONSUME2(tokType,options){return this.consumeInternal(tokType,2,options);}CONSUME3(tokType,options){return this.consumeInternal(tokType,3,options);}CONSUME4(tokType,options){return this.consumeInternal(tokType,4,options);}CONSUME5(tokType,options){return this.consumeInternal(tokType,5,options);}CONSUME6(tokType,options){return this.consumeInternal(tokType,6,options);}CONSUME7(tokType,options){return this.consumeInternal(tokType,7,options);}CONSUME8(tokType,options){return this.consumeInternal(tokType,8,options);}CONSUME9(tokType,options){return this.consumeInternal(tokType,9,options);}SUBRULE(ruleToCall,options){return this.subruleInternal(ruleToCall,0,options);}SUBRULE1(ruleToCall,options){return this.subruleInternal(ruleToCall,1,options);}SUBRULE2(ruleToCall,options){return this.subruleInternal(ruleToCall,2,options);}SUBRULE3(ruleToCall,options){return this.subruleInternal(ruleToCall,3,options);}SUBRULE4(ruleToCall,options){return this.subruleInternal(ruleToCall,4,options);}SUBRULE5(ruleToCall,options){return this.subruleInternal(ruleToCall,5,options);}SUBRULE6(ruleToCall,options){return this.subruleInternal(ruleToCall,6,options);}SUBRULE7(ruleToCall,options){return this.subruleInternal(ruleToCall,7,options);}SUBRULE8(ruleToCall,options){return this.subruleInternal(ruleToCall,8,options);}SUBRULE9(ruleToCall,options){return this.subruleInternal(ruleToCall,9,options);}OPTION(actionORMethodDef){return this.optionInternal(actionORMethodDef,0);}OPTION1(actionORMethodDef){return this.optionInternal(actionORMethodDef,1);}OPTION2(actionORMethodDef){return this.optionInternal(actionORMethodDef,2);}OPTION3(actionORMethodDef){return this.optionInternal(actionORMethodDef,3);}OPTION4(actionORMethodDef){return this.optionInternal(actionORMethodDef,4);}OPTION5(actionORMethodDef){return this.optionInternal(actionORMethodDef,5);}OPTION6(actionORMethodDef){return this.optionInternal(actionORMethodDef,6);}OPTION7(actionORMethodDef){return this.optionInternal(actionORMethodDef,7);}OPTION8(actionORMethodDef){return this.optionInternal(actionORMethodDef,8);}OPTION9(actionORMethodDef){return this.optionInternal(actionORMethodDef,9);}OR(altsOrOpts){return this.orInternal(altsOrOpts,0);}OR1(altsOrOpts){return this.orInternal(altsOrOpts,1);}OR2(altsOrOpts){return this.orInternal(altsOrOpts,2);}OR3(altsOrOpts){return this.orInternal(altsOrOpts,3);}OR4(altsOrOpts){return this.orInternal(altsOrOpts,4);}OR5(altsOrOpts){return this.orInternal(altsOrOpts,5);}OR6(altsOrOpts){return this.orInternal(altsOrOpts,6);}OR7(altsOrOpts){return this.orInternal(altsOrOpts,7);}OR8(altsOrOpts){return this.orInternal(altsOrOpts,8);}OR9(altsOrOpts){return this.orInternal(altsOrOpts,9);}MANY(actionORMethodDef){this.manyInternal(0,actionORMethodDef);}MANY1(actionORMethodDef){this.manyInternal(1,actionORMethodDef);}MANY2(actionORMethodDef){this.manyInternal(2,actionORMethodDef);}MANY3(actionORMethodDef){this.manyInternal(3,actionORMethodDef);}MANY4(actionORMethodDef){this.manyInternal(4,actionORMethodDef);}MANY5(actionORMethodDef){this.manyInternal(5,actionORMethodDef);}MANY6(actionORMethodDef){this.manyInternal(6,actionORMethodDef);}MANY7(actionORMethodDef){this.manyInternal(7,actionORMethodDef);}MANY8(actionORMethodDef){this.manyInternal(8,actionORMethodDef);}MANY9(actionORMethodDef){this.manyInternal(9,actionORMethodDef);}MANY_SEP(options){this.manySepFirstInternal(0,options);}MANY_SEP1(options){this.manySepFirstInternal(1,options);}MANY_SEP2(options){this.manySepFirstInternal(2,options);}MANY_SEP3(options){this.manySepFirstInternal(3,options);}MANY_SEP4(options){this.manySepFirstInternal(4,options);}MANY_SEP5(options){this.manySepFirstInternal(5,options);}MANY_SEP6(options){this.manySepFirstInternal(6,options);}MANY_SEP7(options){this.manySepFirstInternal(7,options);}MANY_SEP8(options){this.manySepFirstInternal(8,options);}MANY_SEP9(options){this.manySepFirstInternal(9,options);}AT_LEAST_ONE(actionORMethodDef){this.atLeastOneInternal(0,actionORMethodDef);}AT_LEAST_ONE1(actionORMethodDef){return this.atLeastOneInternal(1,actionORMethodDef);}AT_LEAST_ONE2(actionORMethodDef){this.atLeastOneInternal(2,actionORMethodDef);}AT_LEAST_ONE3(actionORMethodDef){this.atLeastOneInternal(3,actionORMethodDef);}AT_LEAST_ONE4(actionORMethodDef){this.atLeastOneInternal(4,actionORMethodDef);}AT_LEAST_ONE5(actionORMethodDef){this.atLeastOneInternal(5,actionORMethodDef);}AT_LEAST_ONE6(actionORMethodDef){this.atLeastOneInternal(6,actionORMethodDef);}AT_LEAST_ONE7(actionORMethodDef){this.atLeastOneInternal(7,actionORMethodDef);}AT_LEAST_ONE8(actionORMethodDef){this.atLeastOneInternal(8,actionORMethodDef);}AT_LEAST_ONE9(actionORMethodDef){this.atLeastOneInternal(9,actionORMethodDef);}AT_LEAST_ONE_SEP(options){this.atLeastOneSepFirstInternal(0,options);}AT_LEAST_ONE_SEP1(options){this.atLeastOneSepFirstInternal(1,options);}AT_LEAST_ONE_SEP2(options){this.atLeastOneSepFirstInternal(2,options);}AT_LEAST_ONE_SEP3(options){this.atLeastOneSepFirstInternal(3,options);}AT_LEAST_ONE_SEP4(options){this.atLeastOneSepFirstInternal(4,options);}AT_LEAST_ONE_SEP5(options){this.atLeastOneSepFirstInternal(5,options);}AT_LEAST_ONE_SEP6(options){this.atLeastOneSepFirstInternal(6,options);}AT_LEAST_ONE_SEP7(options){this.atLeastOneSepFirstInternal(7,options);}AT_LEAST_ONE_SEP8(options){this.atLeastOneSepFirstInternal(8,options);}AT_LEAST_ONE_SEP9(options){this.atLeastOneSepFirstInternal(9,options);}RULE(name,implementation,config=DEFAULT_RULE_CONFIG){if(includes(this.definedRulesNames,name)){const errMsg=defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:name,grammarName:this.className});const error={message:errMsg,type:ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:name};this.definitionErrors.push(error);}this.definedRulesNames.push(name);const ruleImplementation=this.defineRule(name,implementation,config);this[name]=ruleImplementation;return ruleImplementation;}OVERRIDE_RULE(name,impl,config=DEFAULT_RULE_CONFIG){const ruleErrors=validateRuleIsOverridden(name,this.definedRulesNames,this.className);this.definitionErrors=this.definitionErrors.concat(ruleErrors);const ruleImplementation=this.defineRule(name,impl,config);this[name]=ruleImplementation;return ruleImplementation;}BACKTRACK(grammarRule,args){return function(){this.isBackTrackingStack.push(1);const orgState=this.saveRecogState();try{grammarRule.apply(this,args);return true;}catch(e){if(isRecognitionException(e)){return false;}else{throw e;}}finally{this.reloadRecogState(orgState);this.isBackTrackingStack.pop();}};}// GAST export APIs\ngetGAstProductions(){return this.gastProductionsCache;}getSerializedGastProductions(){return serializeGrammar(values(this.gastProductionsCache));}}class RecognizerEngine{initRecognizerEngine(tokenVocabulary,config){this.className=this.constructor.name;this.shortRuleNameToFull={};this.fullRuleNameToShort={};this.ruleShortNameIdx=256;this.tokenMatcher=tokenStructuredMatcherNoCategories;this.subruleIdx=0;this.definedRulesNames=[];this.tokensMap={};this.isBackTrackingStack=[];this.RULE_STACK=[];this.RULE_OCCURRENCE_STACK=[];this.gastProductionsCache={};if(has(config,\"serializedGrammar\")){throw Error(\"The Parser's configuration can no longer contain a property.\\n\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0\\n\tFor Further details.\");}if(isArray$1(tokenVocabulary)){if(isEmpty(tokenVocabulary)){throw Error(\"A Token Vocabulary cannot be empty.\\n\tNote that the first argument for the parser constructor\\n\tis no longer a Token vector (since v4.0).\");}if(typeof tokenVocabulary[0].startOffset===\"number\"){throw Error(\"The Parser constructor no longer accepts a token vector as the first argument.\\n\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0\\n\tFor Further details.\");}}if(isArray$1(tokenVocabulary)){this.tokensMap=reduce(tokenVocabulary,(acc,tokType)=>{acc[tokType.name]=tokType;return acc;},{});}else if(has(tokenVocabulary,\"modes\")&&every(flatten(values(tokenVocabulary.modes)),isTokenType)){const allTokenTypes2=flatten(values(tokenVocabulary.modes));const uniqueTokens=uniq(allTokenTypes2);this.tokensMap=reduce(uniqueTokens,(acc,tokType)=>{acc[tokType.name]=tokType;return acc;},{});}else if(isObject(tokenVocabulary)){this.tokensMap=clone2(tokenVocabulary);}else{throw new Error(\" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition\");}this.tokensMap[\"EOF\"]=EOF;const allTokenTypes=has(tokenVocabulary,\"modes\")?flatten(values(tokenVocabulary.modes)):values(tokenVocabulary);const noTokenCategoriesUsed=every(allTokenTypes,tokenConstructor=>isEmpty(tokenConstructor.categoryMatches));this.tokenMatcher=noTokenCategoriesUsed?tokenStructuredMatcherNoCategories:tokenStructuredMatcher;augmentTokenTypes(values(this.tokensMap));}defineRule(ruleName,impl,config){if(this.selfAnalysisDone){throw Error(`Grammar rule <${ruleName}> may not be defined after the 'performSelfAnalysis' method has been called'\nMake sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);}const resyncEnabled=has(config,\"resyncEnabled\")?config.resyncEnabled:DEFAULT_RULE_CONFIG.resyncEnabled;const recoveryValueFunc=has(config,\"recoveryValueFunc\")?config.recoveryValueFunc:DEFAULT_RULE_CONFIG.recoveryValueFunc;const shortName=this.ruleShortNameIdx<{return predicate.call(this)&&orgLookaheadFunction.call(this);};}}else{action=actionORMethodDef;}if(lookAheadFunc.call(this)===true){return action.call(this);}return void 0;}atLeastOneInternal(prodOccurrence,actionORMethodDef){const laKey=this.getKeyForAutomaticLookahead(AT_LEAST_ONE_IDX,prodOccurrence);return this.atLeastOneInternalLogic(prodOccurrence,actionORMethodDef,laKey);}atLeastOneInternalLogic(prodOccurrence,actionORMethodDef,key){let lookAheadFunc=this.getLaFuncFromCache(key);let action;if(typeof actionORMethodDef!==\"function\"){action=actionORMethodDef.DEF;const predicate=actionORMethodDef.GATE;if(predicate!==void 0){const orgLookaheadFunction=lookAheadFunc;lookAheadFunc=()=>{return predicate.call(this)&&orgLookaheadFunction.call(this);};}}else{action=actionORMethodDef;}if(lookAheadFunc.call(this)===true){let notStuck=this.doSingleRepetition(action);while(lookAheadFunc.call(this)===true&¬Stuck===true){notStuck=this.doSingleRepetition(action);}}else{throw this.raiseEarlyExitException(prodOccurrence,PROD_TYPE.REPETITION_MANDATORY,actionORMethodDef.ERR_MSG);}this.attemptInRepetitionRecovery(this.atLeastOneInternal,[prodOccurrence,actionORMethodDef],lookAheadFunc,AT_LEAST_ONE_IDX,prodOccurrence,NextTerminalAfterAtLeastOneWalker);}atLeastOneSepFirstInternal(prodOccurrence,options){const laKey=this.getKeyForAutomaticLookahead(AT_LEAST_ONE_SEP_IDX,prodOccurrence);this.atLeastOneSepFirstInternalLogic(prodOccurrence,options,laKey);}atLeastOneSepFirstInternalLogic(prodOccurrence,options,key){const action=options.DEF;const separator=options.SEP;const firstIterationLookaheadFunc=this.getLaFuncFromCache(key);if(firstIterationLookaheadFunc.call(this)===true){action.call(this);const separatorLookAheadFunc=()=>{return this.tokenMatcher(this.LA(1),separator);};while(this.tokenMatcher(this.LA(1),separator)===true){this.CONSUME(separator);action.call(this);}this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[prodOccurrence,separator,separatorLookAheadFunc,action,NextTerminalAfterAtLeastOneSepWalker],separatorLookAheadFunc,AT_LEAST_ONE_SEP_IDX,prodOccurrence,NextTerminalAfterAtLeastOneSepWalker);}else{throw this.raiseEarlyExitException(prodOccurrence,PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,options.ERR_MSG);}}manyInternal(prodOccurrence,actionORMethodDef){const laKey=this.getKeyForAutomaticLookahead(MANY_IDX,prodOccurrence);return this.manyInternalLogic(prodOccurrence,actionORMethodDef,laKey);}manyInternalLogic(prodOccurrence,actionORMethodDef,key){let lookaheadFunction=this.getLaFuncFromCache(key);let action;if(typeof actionORMethodDef!==\"function\"){action=actionORMethodDef.DEF;const predicate=actionORMethodDef.GATE;if(predicate!==void 0){const orgLookaheadFunction=lookaheadFunction;lookaheadFunction=()=>{return predicate.call(this)&&orgLookaheadFunction.call(this);};}}else{action=actionORMethodDef;}let notStuck=true;while(lookaheadFunction.call(this)===true&¬Stuck===true){notStuck=this.doSingleRepetition(action);}this.attemptInRepetitionRecovery(this.manyInternal,[prodOccurrence,actionORMethodDef],lookaheadFunction,MANY_IDX,prodOccurrence,NextTerminalAfterManyWalker,// The notStuck parameter is only relevant when \"attemptInRepetitionRecovery\"\n// is invoked from manyInternal, in the MANY_SEP case and AT_LEAST_ONE[_SEP]\n// An infinite loop cannot occur as:\n// - Either the lookahead is guaranteed to consume something (Single Token Separator)\n// - AT_LEAST_ONE by definition is guaranteed to consume something (or error out).\nnotStuck);}manySepFirstInternal(prodOccurrence,options){const laKey=this.getKeyForAutomaticLookahead(MANY_SEP_IDX,prodOccurrence);this.manySepFirstInternalLogic(prodOccurrence,options,laKey);}manySepFirstInternalLogic(prodOccurrence,options,key){const action=options.DEF;const separator=options.SEP;const firstIterationLaFunc=this.getLaFuncFromCache(key);if(firstIterationLaFunc.call(this)===true){action.call(this);const separatorLookAheadFunc=()=>{return this.tokenMatcher(this.LA(1),separator);};while(this.tokenMatcher(this.LA(1),separator)===true){this.CONSUME(separator);action.call(this);}this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[prodOccurrence,separator,separatorLookAheadFunc,action,NextTerminalAfterManySepWalker],separatorLookAheadFunc,MANY_SEP_IDX,prodOccurrence,NextTerminalAfterManySepWalker);}}repetitionSepSecondInternal(prodOccurrence,separator,separatorLookAheadFunc,action,nextTerminalAfterWalker){while(separatorLookAheadFunc()){this.CONSUME(separator);action.call(this);}this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[prodOccurrence,separator,separatorLookAheadFunc,action,nextTerminalAfterWalker],separatorLookAheadFunc,AT_LEAST_ONE_SEP_IDX,prodOccurrence,nextTerminalAfterWalker);}doSingleRepetition(action){const beforeIteration=this.getLexerPosition();action.call(this);const afterIteration=this.getLexerPosition();return afterIteration>beforeIteration;}orInternal(altsOrOpts,occurrence){const laKey=this.getKeyForAutomaticLookahead(OR_IDX,occurrence);const alts=isArray$1(altsOrOpts)?altsOrOpts:altsOrOpts.DEF;const laFunc=this.getLaFuncFromCache(laKey);const altIdxToTake=laFunc.call(this,alts);if(altIdxToTake!==void 0){const chosenAlternative=alts[altIdxToTake];return chosenAlternative.ALT.call(this);}this.raiseNoAltException(occurrence,altsOrOpts.ERR_MSG);}ruleFinallyStateUpdate(){this.RULE_STACK.pop();this.RULE_OCCURRENCE_STACK.pop();this.cstFinallyStateUpdate();if(this.RULE_STACK.length===0&&this.isAtEndOfInput()===false){const firstRedundantTok=this.LA(1);const errMsg=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:firstRedundantTok,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new NotAllInputParsedException(errMsg,firstRedundantTok));}}subruleInternal(ruleToCall,idx,options){let ruleResult;try{const args=options!==void 0?options.ARGS:void 0;this.subruleIdx=idx;ruleResult=ruleToCall.apply(this,args);this.cstPostNonTerminal(ruleResult,options!==void 0&&options.LABEL!==void 0?options.LABEL:ruleToCall.ruleName);return ruleResult;}catch(e){throw this.subruleInternalError(e,options,ruleToCall.ruleName);}}subruleInternalError(e,options,ruleName){if(isRecognitionException(e)&&e.partialCstResult!==void 0){this.cstPostNonTerminal(e.partialCstResult,options!==void 0&&options.LABEL!==void 0?options.LABEL:ruleName);delete e.partialCstResult;}throw e;}consumeInternal(tokType,idx,options){let consumedToken;try{const nextToken=this.LA(1);if(this.tokenMatcher(nextToken,tokType)===true){this.consumeToken();consumedToken=nextToken;}else{this.consumeInternalError(tokType,nextToken,options);}}catch(eFromConsumption){consumedToken=this.consumeInternalRecovery(tokType,idx,eFromConsumption);}this.cstPostTerminal(options!==void 0&&options.LABEL!==void 0?options.LABEL:tokType.name,consumedToken);return consumedToken;}consumeInternalError(tokType,nextToken,options){let msg;const previousToken=this.LA(0);if(options!==void 0&&options.ERR_MSG){msg=options.ERR_MSG;}else{msg=this.errorMessageProvider.buildMismatchTokenMessage({expected:tokType,actual:nextToken,previous:previousToken,ruleName:this.getCurrRuleFullName()});}throw this.SAVE_ERROR(new MismatchedTokenException(msg,nextToken,previousToken));}consumeInternalRecovery(tokType,idx,eFromConsumption){if(this.recoveryEnabled&&// TODO: more robust checking of the exception type. Perhaps Typescript extending expressions?\neFromConsumption.name===\"MismatchedTokenException\"&&!this.isBackTracking()){const follows=this.getFollowsForInRuleRecovery(tokType,idx);try{return this.tryInRuleRecovery(tokType,follows);}catch(eFromInRuleRecovery){if(eFromInRuleRecovery.name===IN_RULE_RECOVERY_EXCEPTION){throw eFromConsumption;}else{throw eFromInRuleRecovery;}}}else{throw eFromConsumption;}}saveRecogState(){const savedErrors=this.errors;const savedRuleStack=clone2(this.RULE_STACK);return{errors:savedErrors,lexerState:this.exportLexerState(),RULE_STACK:savedRuleStack,CST_STACK:this.CST_STACK};}reloadRecogState(newState){this.errors=newState.errors;this.importLexerState(newState.lexerState);this.RULE_STACK=newState.RULE_STACK;}ruleInvocationStateUpdate(shortName,fullName,idxInCallingRule){this.RULE_OCCURRENCE_STACK.push(idxInCallingRule);this.RULE_STACK.push(shortName);this.cstInvocationStateUpdate(fullName);}isBackTracking(){return this.isBackTrackingStack.length!==0;}getCurrRuleFullName(){const shortName=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[shortName];}shortRuleNameToFullName(shortName){return this.shortRuleNameToFull[shortName];}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),EOF);}reset(){this.resetLexerState();this.subruleIdx=0;this.isBackTrackingStack=[];this.errors=[];this.RULE_STACK=[];this.CST_STACK=[];this.RULE_OCCURRENCE_STACK=[];}}class ErrorHandler{initErrorHandler(config){this._errors=[];this.errorMessageProvider=has(config,\"errorMessageProvider\")?config.errorMessageProvider:DEFAULT_PARSER_CONFIG.errorMessageProvider;}SAVE_ERROR(error){if(isRecognitionException(error)){error.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:clone2(this.RULE_OCCURRENCE_STACK)};this._errors.push(error);return error;}else{throw Error(\"Trying to save an Error which is not a RecognitionException\");}}get errors(){return clone2(this._errors);}set errors(newErrors){this._errors=newErrors;}// TODO: consider caching the error message computed information\nraiseEarlyExitException(occurrence,prodType,userDefinedErrMsg){const ruleName=this.getCurrRuleFullName();const ruleGrammar=this.getGAstProductions()[ruleName];const lookAheadPathsPerAlternative=getLookaheadPathsForOptionalProd(occurrence,ruleGrammar,prodType,this.maxLookahead);const insideProdPaths=lookAheadPathsPerAlternative[0];const actualTokens=[];for(let i2=1;i2<=this.maxLookahead;i2++){actualTokens.push(this.LA(i2));}const msg=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:insideProdPaths,actual:actualTokens,previous:this.LA(0),customUserDescription:userDefinedErrMsg,ruleName});throw this.SAVE_ERROR(new EarlyExitException(msg,this.LA(1),this.LA(0)));}// TODO: consider caching the error message computed information\nraiseNoAltException(occurrence,errMsgTypes){const ruleName=this.getCurrRuleFullName();const ruleGrammar=this.getGAstProductions()[ruleName];const lookAheadPathsPerAlternative=getLookaheadPathsForOr(occurrence,ruleGrammar,this.maxLookahead);const actualTokens=[];for(let i2=1;i2<=this.maxLookahead;i2++){actualTokens.push(this.LA(i2));}const previousToken=this.LA(0);const errMsg=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:lookAheadPathsPerAlternative,actual:actualTokens,previous:previousToken,customUserDescription:errMsgTypes,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new NoViableAltException(errMsg,this.LA(1),previousToken));}}class ContentAssist{initContentAssist(){}computeContentAssist(startRuleName,precedingInput){const startRuleGast=this.gastProductionsCache[startRuleName];if(isUndefined(startRuleGast)){throw Error(`Rule ->${startRuleName}<- does not exist in this grammar.`);}return nextPossibleTokensAfter([startRuleGast],precedingInput,this.tokenMatcher,this.maxLookahead);}// TODO: should this be a member method or a utility? it does not have any state or usage of 'this'...\n// TODO: should this be more explicitly part of the public API?\ngetNextPossibleTokenTypes(grammarPath){const topRuleName=head(grammarPath.ruleStack);const gastProductions=this.getGAstProductions();const topProduction=gastProductions[topRuleName];const nextPossibleTokenTypes=new NextAfterTokenWalker(topProduction,grammarPath).startWalking();return nextPossibleTokenTypes;}}const RECORDING_NULL_OBJECT={description:\"This Object indicates the Parser is during Recording Phase\"};Object.freeze(RECORDING_NULL_OBJECT);const HANDLE_SEPARATOR=true;const MAX_METHOD_IDX=Math.pow(2,BITS_FOR_OCCURRENCE_IDX)-1;const RFT=createToken2({name:\"RECORDING_PHASE_TOKEN\",pattern:Lexer2.NA});augmentTokenTypes([RFT]);const RECORDING_PHASE_TOKEN=createTokenInstance(RFT,\"This IToken indicates the Parser is in Recording Phase\\n\tSee: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details\",// Using \"-1\" instead of NaN (as in EOF) because an actual number is less likely to\n// cause errors if the output of LA or CONSUME would be (incorrectly) used during the recording phase.\n-1,-1,-1,-1,-1,-1);Object.freeze(RECORDING_PHASE_TOKEN);const RECORDING_PHASE_CSTNODE={name:\"This CSTNode indicates the Parser is in Recording Phase\\n\tSee: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details\",children:{}};class GastRecorder{initGastRecorder(config){this.recordingProdStack=[];this.RECORDING_PHASE=false;}enableRecording(){this.RECORDING_PHASE=true;this.TRACE_INIT(\"Enable Recording\",()=>{for(let i2=0;i2<10;i2++){const idx=i2>0?i2:\"\";this[`CONSUME${idx}`]=function(arg1,arg2){return this.consumeInternalRecord(arg1,i2,arg2);};this[`SUBRULE${idx}`]=function(arg1,arg2){return this.subruleInternalRecord(arg1,i2,arg2);};this[`OPTION${idx}`]=function(arg1){return this.optionInternalRecord(arg1,i2);};this[`OR${idx}`]=function(arg1){return this.orInternalRecord(arg1,i2);};this[`MANY${idx}`]=function(arg1){this.manyInternalRecord(i2,arg1);};this[`MANY_SEP${idx}`]=function(arg1){this.manySepFirstInternalRecord(i2,arg1);};this[`AT_LEAST_ONE${idx}`]=function(arg1){this.atLeastOneInternalRecord(i2,arg1);};this[`AT_LEAST_ONE_SEP${idx}`]=function(arg1){this.atLeastOneSepFirstInternalRecord(i2,arg1);};}this[`consume`]=function(idx,arg1,arg2){return this.consumeInternalRecord(arg1,idx,arg2);};this[`subrule`]=function(idx,arg1,arg2){return this.subruleInternalRecord(arg1,idx,arg2);};this[`option`]=function(idx,arg1){return this.optionInternalRecord(arg1,idx);};this[`or`]=function(idx,arg1){return this.orInternalRecord(arg1,idx);};this[`many`]=function(idx,arg1){this.manyInternalRecord(idx,arg1);};this[`atLeastOne`]=function(idx,arg1){this.atLeastOneInternalRecord(idx,arg1);};this.ACTION=this.ACTION_RECORD;this.BACKTRACK=this.BACKTRACK_RECORD;this.LA=this.LA_RECORD;});}disableRecording(){this.RECORDING_PHASE=false;this.TRACE_INIT(\"Deleting Recording methods\",()=>{const that=this;for(let i2=0;i2<10;i2++){const idx=i2>0?i2:\"\";delete that[`CONSUME${idx}`];delete that[`SUBRULE${idx}`];delete that[`OPTION${idx}`];delete that[`OR${idx}`];delete that[`MANY${idx}`];delete that[`MANY_SEP${idx}`];delete that[`AT_LEAST_ONE${idx}`];delete that[`AT_LEAST_ONE_SEP${idx}`];}delete that[`consume`];delete that[`subrule`];delete that[`option`];delete that[`or`];delete that[`many`];delete that[`atLeastOne`];delete that.ACTION;delete that.BACKTRACK;delete that.LA;});}// Parser methods are called inside an ACTION?\n// Maybe try/catch/finally on ACTIONS while disabling the recorders state changes?\n// @ts-expect-error -- noop place holder\nACTION_RECORD(impl){}// Executing backtracking logic will break our recording logic assumptions\nBACKTRACK_RECORD(grammarRule,args){return()=>true;}// LA is part of the official API and may be used for custom lookahead logic\n// by end users who may forget to wrap it in ACTION or inside a GATE\nLA_RECORD(howMuch){return END_OF_FILE;}topLevelRuleRecord(name,def){try{const newTopLevelRule=new Rule({definition:[],name});newTopLevelRule.name=name;this.recordingProdStack.push(newTopLevelRule);def.call(this);this.recordingProdStack.pop();return newTopLevelRule;}catch(originalError){if(originalError.KNOWN_RECORDER_ERROR!==true){try{originalError.message=originalError.message+'\\n\t This error was thrown during the \"grammar recording phase\" For more info see:\\n\thttps://chevrotain.io/docs/guide/internals.html#grammar-recording';}catch(mutabilityError){throw originalError;}}throw originalError;}}// Implementation of parsing DSL\noptionInternalRecord(actionORMethodDef,occurrence){return recordProd.call(this,Option,actionORMethodDef,occurrence);}atLeastOneInternalRecord(occurrence,actionORMethodDef){recordProd.call(this,RepetitionMandatory,actionORMethodDef,occurrence);}atLeastOneSepFirstInternalRecord(occurrence,options){recordProd.call(this,RepetitionMandatoryWithSeparator,options,occurrence,HANDLE_SEPARATOR);}manyInternalRecord(occurrence,actionORMethodDef){recordProd.call(this,Repetition,actionORMethodDef,occurrence);}manySepFirstInternalRecord(occurrence,options){recordProd.call(this,RepetitionWithSeparator,options,occurrence,HANDLE_SEPARATOR);}orInternalRecord(altsOrOpts,occurrence){return recordOrProd.call(this,altsOrOpts,occurrence);}subruleInternalRecord(ruleToCall,occurrence,options){assertMethodIdxIsValid(occurrence);if(!ruleToCall||has(ruleToCall,\"ruleName\")===false){const error=new Error(` argument is invalid expecting a Parser method reference but got: <${JSON.stringify(ruleToCall)}>\n inside top level rule: <${this.recordingProdStack[0].name}>`);error.KNOWN_RECORDER_ERROR=true;throw error;}const prevProd=last(this.recordingProdStack);const ruleName=ruleToCall.ruleName;const newNoneTerminal=new NonTerminal({idx:occurrence,nonTerminalName:ruleName,label:options===null||options===void 0?void 0:options.LABEL,// The resolving of the `referencedRule` property will be done once all the Rule's GASTs have been created\nreferencedRule:void 0});prevProd.definition.push(newNoneTerminal);return this.outputCst?RECORDING_PHASE_CSTNODE:RECORDING_NULL_OBJECT;}consumeInternalRecord(tokType,occurrence,options){assertMethodIdxIsValid(occurrence);if(!hasShortKeyProperty(tokType)){const error=new Error(` argument is invalid expecting a TokenType reference but got: <${JSON.stringify(tokType)}>\n inside top level rule: <${this.recordingProdStack[0].name}>`);error.KNOWN_RECORDER_ERROR=true;throw error;}const prevProd=last(this.recordingProdStack);const newNoneTerminal=new Terminal({idx:occurrence,terminalType:tokType,label:options===null||options===void 0?void 0:options.LABEL});prevProd.definition.push(newNoneTerminal);return RECORDING_PHASE_TOKEN;}}function recordProd(prodConstructor,mainProdArg,occurrence,handleSep=false){assertMethodIdxIsValid(occurrence);const prevProd=last(this.recordingProdStack);const grammarAction=isFunction(mainProdArg)?mainProdArg:mainProdArg.DEF;const newProd=new prodConstructor({definition:[],idx:occurrence});if(handleSep){newProd.separator=mainProdArg.SEP;}if(has(mainProdArg,\"MAX_LOOKAHEAD\")){newProd.maxLookahead=mainProdArg.MAX_LOOKAHEAD;}this.recordingProdStack.push(newProd);grammarAction.call(this);prevProd.definition.push(newProd);this.recordingProdStack.pop();return RECORDING_NULL_OBJECT;}function recordOrProd(mainProdArg,occurrence){assertMethodIdxIsValid(occurrence);const prevProd=last(this.recordingProdStack);const hasOptions=isArray$1(mainProdArg)===false;const alts=hasOptions===false?mainProdArg:mainProdArg.DEF;const newOrProd=new Alternation({definition:[],idx:occurrence,ignoreAmbiguities:hasOptions&&mainProdArg.IGNORE_AMBIGUITIES===true});if(has(mainProdArg,\"MAX_LOOKAHEAD\")){newOrProd.maxLookahead=mainProdArg.MAX_LOOKAHEAD;}const hasPredicates=some(alts,currAlt=>isFunction(currAlt.GATE));newOrProd.hasPredicates=hasPredicates;prevProd.definition.push(newOrProd);forEach(alts,currAlt=>{const currAltFlat=new Alternative({definition:[]});newOrProd.definition.push(currAltFlat);if(has(currAlt,\"IGNORE_AMBIGUITIES\")){currAltFlat.ignoreAmbiguities=currAlt.IGNORE_AMBIGUITIES;}else if(has(currAlt,\"GATE\")){currAltFlat.ignoreAmbiguities=true;}this.recordingProdStack.push(currAltFlat);currAlt.ALT.call(this);this.recordingProdStack.pop();});return RECORDING_NULL_OBJECT;}function getIdxSuffix(idx){return idx===0?\"\":`${idx}`;}function assertMethodIdxIsValid(idx){if(idx<0||idx>MAX_METHOD_IDX){const error=new Error(// The stack trace will contain all the needed details\n`Invalid DSL Method idx value: <${idx}>\n\tIdx value must be a none negative value smaller than ${MAX_METHOD_IDX+1}`);error.KNOWN_RECORDER_ERROR=true;throw error;}}class PerformanceTracer{initPerformanceTracer(config){if(has(config,\"traceInitPerf\")){const userTraceInitPerf=config.traceInitPerf;const traceIsNumber=typeof userTraceInitPerf===\"number\";this.traceInitMaxIdent=traceIsNumber?userTraceInitPerf:Infinity;this.traceInitPerf=traceIsNumber?userTraceInitPerf>0:userTraceInitPerf;}else{this.traceInitMaxIdent=0;this.traceInitPerf=DEFAULT_PARSER_CONFIG.traceInitPerf;}this.traceInitIndent=-1;}TRACE_INIT(phaseDesc,phaseImpl){if(this.traceInitPerf===true){this.traceInitIndent++;const indent=new Array(this.traceInitIndent+1).join(\"\t\");if(this.traceInitIndent <${phaseDesc}>`);}const{time,value}=timer(phaseImpl);const traceMethod=time>10?console.warn:console.log;if(this.traceInitIndent time: ${time}ms`);}this.traceInitIndent--;return value;}else{return phaseImpl();}}}function applyMixins(derivedCtor,baseCtors){baseCtors.forEach(baseCtor=>{const baseProto=baseCtor.prototype;Object.getOwnPropertyNames(baseProto).forEach(propName=>{if(propName===\"constructor\"){return;}const basePropDescriptor=Object.getOwnPropertyDescriptor(baseProto,propName);if(basePropDescriptor&&(basePropDescriptor.get||basePropDescriptor.set)){Object.defineProperty(derivedCtor.prototype,propName,basePropDescriptor);}else{derivedCtor.prototype[propName]=baseCtor.prototype[propName];}});});}const END_OF_FILE=createTokenInstance(EOF,\"\",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(END_OF_FILE);const DEFAULT_PARSER_CONFIG=Object.freeze({recoveryEnabled:false,maxLookahead:3,dynamicTokensEnabled:false,outputCst:true,errorMessageProvider:defaultParserErrorProvider,nodeLocationTracking:\"none\",traceInitPerf:false,skipValidations:false});const DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:()=>void 0,resyncEnabled:true});var ParserDefinitionErrorType;(function(ParserDefinitionErrorType2){ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"INVALID_RULE_NAME\"]=0]=\"INVALID_RULE_NAME\";ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"DUPLICATE_RULE_NAME\"]=1]=\"DUPLICATE_RULE_NAME\";ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"INVALID_RULE_OVERRIDE\"]=2]=\"INVALID_RULE_OVERRIDE\";ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"DUPLICATE_PRODUCTIONS\"]=3]=\"DUPLICATE_PRODUCTIONS\";ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"UNRESOLVED_SUBRULE_REF\"]=4]=\"UNRESOLVED_SUBRULE_REF\";ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"LEFT_RECURSION\"]=5]=\"LEFT_RECURSION\";ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"NONE_LAST_EMPTY_ALT\"]=6]=\"NONE_LAST_EMPTY_ALT\";ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"AMBIGUOUS_ALTS\"]=7]=\"AMBIGUOUS_ALTS\";ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"CONFLICT_TOKENS_RULES_NAMESPACE\"]=8]=\"CONFLICT_TOKENS_RULES_NAMESPACE\";ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"INVALID_TOKEN_NAME\"]=9]=\"INVALID_TOKEN_NAME\";ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"NO_NON_EMPTY_LOOKAHEAD\"]=10]=\"NO_NON_EMPTY_LOOKAHEAD\";ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"AMBIGUOUS_PREFIX_ALTS\"]=11]=\"AMBIGUOUS_PREFIX_ALTS\";ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"TOO_MANY_ALTS\"]=12]=\"TOO_MANY_ALTS\";ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"CUSTOM_LOOKAHEAD_VALIDATION\"]=13]=\"CUSTOM_LOOKAHEAD_VALIDATION\";})(ParserDefinitionErrorType||(ParserDefinitionErrorType={}));class Parser2{/**\n * @deprecated use the **instance** method with the same name instead\n */static performSelfAnalysis(parserInstance){throw Error(\"The **static** `performSelfAnalysis` method has been deprecated.\t\\nUse the **instance** method with the same name instead.\");}performSelfAnalysis(){this.TRACE_INIT(\"performSelfAnalysis\",()=>{let defErrorsMsgs;this.selfAnalysisDone=true;const className=this.className;this.TRACE_INIT(\"toFastProps\",()=>{toFastProperties(this);});this.TRACE_INIT(\"Grammar Recording\",()=>{try{this.enableRecording();forEach(this.definedRulesNames,currRuleName=>{const wrappedRule=this[currRuleName];const originalGrammarAction=wrappedRule[\"originalGrammarAction\"];let recordedRuleGast;this.TRACE_INIT(`${currRuleName} Rule`,()=>{recordedRuleGast=this.topLevelRuleRecord(currRuleName,originalGrammarAction);});this.gastProductionsCache[currRuleName]=recordedRuleGast;});}finally{this.disableRecording();}});let resolverErrors=[];this.TRACE_INIT(\"Grammar Resolving\",()=>{resolverErrors=resolveGrammar({rules:values(this.gastProductionsCache)});this.definitionErrors=this.definitionErrors.concat(resolverErrors);});this.TRACE_INIT(\"Grammar Validations\",()=>{if(isEmpty(resolverErrors)&&this.skipValidations===false){const validationErrors=validateGrammar({rules:values(this.gastProductionsCache),tokenTypes:values(this.tokensMap),errMsgProvider:defaultGrammarValidatorErrorProvider,grammarName:className});const lookaheadValidationErrors=validateLookahead({lookaheadStrategy:this.lookaheadStrategy,rules:values(this.gastProductionsCache),tokenTypes:values(this.tokensMap),grammarName:className});this.definitionErrors=this.definitionErrors.concat(validationErrors,lookaheadValidationErrors);}});if(isEmpty(this.definitionErrors)){if(this.recoveryEnabled){this.TRACE_INIT(\"computeAllProdsFollows\",()=>{const allFollows=computeAllProdsFollows(values(this.gastProductionsCache));this.resyncFollows=allFollows;});}this.TRACE_INIT(\"ComputeLookaheadFunctions\",()=>{var _a2,_b2;(_b2=(_a2=this.lookaheadStrategy).initialize)===null||_b2===void 0?void 0:_b2.call(_a2,{rules:values(this.gastProductionsCache)});this.preComputeLookaheadFunctions(values(this.gastProductionsCache));});}if(!Parser2.DEFER_DEFINITION_ERRORS_HANDLING&&!isEmpty(this.definitionErrors)){defErrorsMsgs=map(this.definitionErrors,defError=>defError.message);throw new Error(`Parser Definition Errors detected:\n ${defErrorsMsgs.join(\"\\n-------------------------------\\n\")}`);}});}constructor(tokenVocabulary,config){this.definitionErrors=[];this.selfAnalysisDone=false;const that=this;that.initErrorHandler(config);that.initLexerAdapter();that.initLooksAhead(config);that.initRecognizerEngine(tokenVocabulary,config);that.initRecoverable(config);that.initTreeBuilder(config);that.initContentAssist();that.initGastRecorder(config);that.initPerformanceTracer(config);if(has(config,\"ignoredIssues\")){throw new Error(\"The IParserConfig property has been deprecated.\\n\tPlease use the flag on the relevant DSL method instead.\\n\tSee: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES\\n\tFor further details.\");}this.skipValidations=has(config,\"skipValidations\")?config.skipValidations:DEFAULT_PARSER_CONFIG.skipValidations;}}Parser2.DEFER_DEFINITION_ERRORS_HANDLING=false;applyMixins(Parser2,[Recoverable,LooksAhead,TreeBuilder,LexerAdapter,RecognizerEngine,RecognizerApi,ErrorHandler,ContentAssist,GastRecorder,PerformanceTracer]);class CstParser2 extends Parser2{constructor(tokenVocabulary,config=DEFAULT_PARSER_CONFIG){const configClone=clone2(config);configClone.outputCst=true;super(tokenVocabulary,configClone);}}return{CstParser:CstParser2,Lexer:Lexer2,createToken:createToken2};})();class VRMLLoader extends Loader{constructor(manager){super(manager);}load(url,onLoad,onProgress,onError){const scope=this;const path=scope.path===\"\"?LoaderUtils.extractUrlBase(url):scope.path;const loader=new FileLoader(scope.manager);loader.setPath(scope.path);loader.setRequestHeader(scope.requestHeader);loader.setWithCredentials(scope.withCredentials);loader.load(url,function(text){try{onLoad(scope.parse(text,path));}catch(e){if(onError){onError(e);}else{console.error(e);}scope.manager.itemError(url);}},onProgress,onError);}parse(data,path){const nodeMap={};function generateVRMLTree(data2){const tokenData=createTokens();const lexer=new VRMLLexer(tokenData.tokens);const parser=new VRMLParser(tokenData.tokenVocabulary);const visitor=createVisitor(parser.getBaseCstVisitorConstructor());const lexingResult=lexer.lex(data2);parser.input=lexingResult.tokens;const cstOutput=parser.vrml();if(parser.errors.length>0){console.error(parser.errors);throw Error(\"THREE.VRMLLoader: Parsing errors detected.\");}const ast=visitor.visit(cstOutput);return ast;}function createTokens(){const RouteIdentifier=createToken({name:\"RouteIdentifier\",pattern:/[^\\x30-\\x39\\0-\\x20\\x22\\x27\\x23\\x2b\\x2c\\x2d\\x2e\\x5b\\x5d\\x5c\\x7b\\x7d][^\\0-\\x20\\x22\\x27\\x23\\x2b\\x2c\\x2d\\x2e\\x5b\\x5d\\x5c\\x7b\\x7d]*[\\.][^\\x30-\\x39\\0-\\x20\\x22\\x27\\x23\\x2b\\x2c\\x2d\\x2e\\x5b\\x5d\\x5c\\x7b\\x7d][^\\0-\\x20\\x22\\x27\\x23\\x2b\\x2c\\x2d\\x2e\\x5b\\x5d\\x5c\\x7b\\x7d]*/});const Identifier=createToken({name:\"Identifier\",pattern:/[^\\x30-\\x39\\0-\\x20\\x22\\x27\\x23\\x2b\\x2c\\x2d\\x2e\\x5b\\x5d\\x5c\\x7b\\x7d][^\\0-\\x20\\x22\\x27\\x23\\x2b\\x2c\\x2d\\x2e\\x5b\\x5d\\x5c\\x7b\\x7d]*/,longer_alt:RouteIdentifier});const nodeTypes=[\"Anchor\",\"Billboard\",\"Collision\",\"Group\",\"Transform\",// grouping nodes\n\"Inline\",\"LOD\",\"Switch\",// special groups\n\"AudioClip\",\"DirectionalLight\",\"PointLight\",\"Script\",\"Shape\",\"Sound\",\"SpotLight\",\"WorldInfo\",// common nodes\n\"CylinderSensor\",\"PlaneSensor\",\"ProximitySensor\",\"SphereSensor\",\"TimeSensor\",\"TouchSensor\",\"VisibilitySensor\",// sensors\n\"Box\",\"Cone\",\"Cylinder\",\"ElevationGrid\",\"Extrusion\",\"IndexedFaceSet\",\"IndexedLineSet\",\"PointSet\",\"Sphere\",// geometries\n\"Color\",\"Coordinate\",\"Normal\",\"TextureCoordinate\",// geometric properties\n\"Appearance\",\"FontStyle\",\"ImageTexture\",\"Material\",\"MovieTexture\",\"PixelTexture\",\"TextureTransform\",// appearance\n\"ColorInterpolator\",\"CoordinateInterpolator\",\"NormalInterpolator\",\"OrientationInterpolator\",\"PositionInterpolator\",\"ScalarInterpolator\",// interpolators\n\"Background\",\"Fog\",\"NavigationInfo\",\"Viewpoint\",// bindable nodes\n\"Text\"// Text must be placed at the end of the regex so there are no matches for TextureTransform and TextureCoordinate\n];const Version=createToken({name:\"Version\",pattern:/#VRML.*/,longer_alt:Identifier});const NodeName=createToken({name:\"NodeName\",pattern:new RegExp(nodeTypes.join(\"|\")),longer_alt:Identifier});const DEF=createToken({name:\"DEF\",pattern:/DEF/,longer_alt:Identifier});const USE=createToken({name:\"USE\",pattern:/USE/,longer_alt:Identifier});const ROUTE=createToken({name:\"ROUTE\",pattern:/ROUTE/,longer_alt:Identifier});const TO=createToken({name:\"TO\",pattern:/TO/,longer_alt:Identifier});const StringLiteral=createToken({name:\"StringLiteral\",pattern:/\"(?:[^\\\\\"\\n\\r]|\\\\[bfnrtv\"\\\\/]|\\\\u[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])*\"/});const HexLiteral=createToken({name:\"HexLiteral\",pattern:/0[xX][0-9a-fA-F]+/});const NumberLiteral=createToken({name:\"NumberLiteral\",pattern:/[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?/});const TrueLiteral=createToken({name:\"TrueLiteral\",pattern:/TRUE/});const FalseLiteral=createToken({name:\"FalseLiteral\",pattern:/FALSE/});const NullLiteral=createToken({name:\"NullLiteral\",pattern:/NULL/});const LSquare=createToken({name:\"LSquare\",pattern:/\\[/});const RSquare=createToken({name:\"RSquare\",pattern:/]/});const LCurly=createToken({name:\"LCurly\",pattern:/{/});const RCurly=createToken({name:\"RCurly\",pattern:/}/});const Comment=createToken({name:\"Comment\",pattern:/#.*/,group:Lexer.SKIPPED});const WhiteSpace=createToken({name:\"WhiteSpace\",pattern:/[ ,\\s]/,group:Lexer.SKIPPED});const tokens=[WhiteSpace,// keywords appear before the Identifier\nNodeName,DEF,USE,ROUTE,TO,TrueLiteral,FalseLiteral,NullLiteral,// the Identifier must appear after the keywords because all keywords are valid identifiers\nVersion,Identifier,RouteIdentifier,StringLiteral,HexLiteral,NumberLiteral,LSquare,RSquare,LCurly,RCurly,Comment];const tokenVocabulary={};for(let i2=0,l=tokens.length;i23){paintFaces(skyGeometry,radius,skyAngle,toColorArray(skyColor),true);skyMaterial.vertexColors=true;}else{skyMaterial.color.setRGB(skyColor[0],skyColor[1],skyColor[2]);}const sky=new Mesh(skyGeometry,skyMaterial);group.add(sky);}if(groundColor){if(groundColor.length>0){const groundGeometry=new SphereGeometry(radius,32,16,0,2*Math.PI,0.5*Math.PI,1.5*Math.PI);const groundMaterial=new MeshBasicMaterial({fog:false,side:BackSide,vertexColors:true,depthWrite:false,depthTest:false});paintFaces(groundGeometry,radius,groundAngle,toColorArray(groundColor),false);const ground=new Mesh(groundGeometry,groundMaterial);group.add(ground);}}group.renderOrder=-Infinity;return group;}function buildShapeNode(node){const fields=node.fields;let material2=new MeshBasicMaterial({color:0});let geometry2;for(let i2=0,l=fields.length;i20)material2.transparent=true;}else{material2=new MeshBasicMaterial({color:0});}break;case\"texture\":const textureNode=fieldValues[0];if(textureNode!==null){if(textureNode.name===\"ImageTexture\"||textureNode.name===\"PixelTexture\"){material2.map=getNode(textureNode);}}break;case\"textureTransform\":if(fieldValues[0]!==null){transformData=getNode(fieldValues[0]);}break;default:console.warn(\"THREE.VRMLLoader: Unknown field:\",fieldName);break;}}if(material2.map){if(material2.map.__type){switch(material2.map.__type){case TEXTURE_TYPE.INTENSITY_ALPHA:material2.opacity=1;break;case TEXTURE_TYPE.RGB:material2.color.set(16777215);break;case TEXTURE_TYPE.RGBA:material2.color.set(16777215);material2.opacity=1;break;}delete material2.map.__type;}if(transformData){material2.map.center.copy(transformData.center);material2.map.rotation=transformData.rotation;material2.map.repeat.copy(transformData.scale);material2.map.offset.copy(transformData.translation);}}return material2;}function buildMaterialNode(node){const materialData={};const fields=node.fields;for(let i2=0,l=fields.length;i20){const triangulatedColorIndex=triangulateFaceIndex(colorIndex,ccw);colorAttribute=computeAttributeFromIndexedData(triangulatedCoordIndex,triangulatedColorIndex,color,3);}else{colorAttribute=toNonIndexedAttribute(triangulatedCoordIndex,new Float32BufferAttribute(color,3));}}else{if(colorIndex&&colorIndex.length>0){const flattenFaceColors=flattenData(color,colorIndex);const triangulatedFaceColors=triangulateFaceData(flattenFaceColors,coordIndex);colorAttribute=computeAttributeFromFaceData(triangulatedCoordIndex,triangulatedFaceColors);}else{const triangulatedFaceColors=triangulateFaceData(color,coordIndex);colorAttribute=computeAttributeFromFaceData(triangulatedCoordIndex,triangulatedFaceColors);}}}if(normal){if(normalPerVertex===true){if(normalIndex&&normalIndex.length>0){const triangulatedNormalIndex=triangulateFaceIndex(normalIndex,ccw);normalAttribute=computeAttributeFromIndexedData(triangulatedCoordIndex,triangulatedNormalIndex,normal,3);}else{normalAttribute=toNonIndexedAttribute(triangulatedCoordIndex,new Float32BufferAttribute(normal,3));}}else{if(normalIndex&&normalIndex.length>0){const flattenFaceNormals=flattenData(normal,normalIndex);const triangulatedFaceNormals=triangulateFaceData(flattenFaceNormals,coordIndex);normalAttribute=computeAttributeFromFaceData(triangulatedCoordIndex,triangulatedFaceNormals);}else{const triangulatedFaceNormals=triangulateFaceData(normal,coordIndex);normalAttribute=computeAttributeFromFaceData(triangulatedCoordIndex,triangulatedFaceNormals);}}}else{normalAttribute=computeNormalAttribute(triangulatedCoordIndex,coord,creaseAngle);}if(texCoord){if(texCoordIndex&&texCoordIndex.length>0){const triangulatedTexCoordIndex=triangulateFaceIndex(texCoordIndex,ccw);uvAttribute=computeAttributeFromIndexedData(triangulatedCoordIndex,triangulatedTexCoordIndex,texCoord,2);}else{uvAttribute=toNonIndexedAttribute(triangulatedCoordIndex,new Float32BufferAttribute(texCoord,2));}}const geometry2=new BufferGeometry();const positionAttribute=toNonIndexedAttribute(triangulatedCoordIndex,new Float32BufferAttribute(coord,3));geometry2.setAttribute(\"position\",positionAttribute);geometry2.setAttribute(\"normal\",normalAttribute);if(colorAttribute)geometry2.setAttribute(\"color\",colorAttribute);if(uvAttribute)geometry2.setAttribute(\"uv\",uvAttribute);geometry2._solid=solid;geometry2._type=\"mesh\";return geometry2;}function buildIndexedLineSetNode(node){let color,coord;let colorIndex,coordIndex;let colorPerVertex=true;const fields=node.fields;for(let i2=0,l=fields.length;i20){const expandedColorIndex=expandLineIndex(colorIndex);colorAttribute=computeAttributeFromIndexedData(expandedLineIndex,expandedColorIndex,color,3);}else{colorAttribute=toNonIndexedAttribute(expandedLineIndex,new Float32BufferAttribute(color,3));}}else{if(colorIndex.length>0){const flattenLineColors=flattenData(color,colorIndex);const expandedLineColors=expandLineData(flattenLineColors,coordIndex);colorAttribute=computeAttributeFromLineData(expandedLineIndex,expandedLineColors);}else{const expandedLineColors=expandLineData(color,coordIndex);colorAttribute=computeAttributeFromLineData(expandedLineIndex,expandedLineColors);}}}const geometry2=new BufferGeometry();const positionAttribute=toNonIndexedAttribute(expandedLineIndex,new Float32BufferAttribute(coord,3));geometry2.setAttribute(\"position\",positionAttribute);if(colorAttribute)geometry2.setAttribute(\"color\",colorAttribute);geometry2._type=\"line\";return geometry2;}function buildPointSetNode(node){let color,coord;const fields=node.fields;for(let i2=0,l=fields.length;i2=l){i2+=3;start=i2+1;}}return indices;}function triangulateFaceData(data2,index){const triangulatedData=[];let start=0;for(let i2=0,l=index.length;i2=l){i2+=3;start++;}}return triangulatedData;}function flattenData(data2,index){const flattenData2=[];for(let i2=0,l=index.length;i2=l){i2+=2;}}return indices;}function expandLineData(data2,index){const triangulatedData=[];let start=0;for(let i2=0,l=index.length;i2=l){i2+=2;start++;}}return triangulatedData;}const vA=new Vector3();const vB=new Vector3();const vC=new Vector3();const uvA=new Vector2();const uvB=new Vector2();const uvC=new Vector2();function computeAttributeFromIndexedData(coordIndex,index,data2,itemSize){const array=[];for(let i2=0,l=coordIndex.length;i2thresholdB.y){t2=Math.abs(thresholdA.y-position.y)/Math.abs(thresholdA.y-thresholdB.y);break;}}else{if(position.y>=thresholdA.y&&position.y0){console.error(lexingResult.errors);throw Error(\"THREE.VRMLLexer: Lexing errors detected.\");}return lexingResult;}}class VRMLParser extends CstParser{constructor(tokenVocabulary){super(tokenVocabulary);const $=this;const Version=tokenVocabulary[\"Version\"];const LCurly=tokenVocabulary[\"LCurly\"];const RCurly=tokenVocabulary[\"RCurly\"];const LSquare=tokenVocabulary[\"LSquare\"];const RSquare=tokenVocabulary[\"RSquare\"];const Identifier=tokenVocabulary[\"Identifier\"];const RouteIdentifier=tokenVocabulary[\"RouteIdentifier\"];const StringLiteral=tokenVocabulary[\"StringLiteral\"];const HexLiteral=tokenVocabulary[\"HexLiteral\"];const NumberLiteral=tokenVocabulary[\"NumberLiteral\"];const TrueLiteral=tokenVocabulary[\"TrueLiteral\"];const FalseLiteral=tokenVocabulary[\"FalseLiteral\"];const NullLiteral=tokenVocabulary[\"NullLiteral\"];const DEF=tokenVocabulary[\"DEF\"];const USE=tokenVocabulary[\"USE\"];const ROUTE=tokenVocabulary[\"ROUTE\"];const TO=tokenVocabulary[\"TO\"];const NodeName=tokenVocabulary[\"NodeName\"];$.RULE(\"vrml\",function(){$.SUBRULE($.version);$.AT_LEAST_ONE(function(){$.SUBRULE($.node);});$.MANY(function(){$.SUBRULE($.route);});});$.RULE(\"version\",function(){$.CONSUME(Version);});$.RULE(\"node\",function(){$.OPTION(function(){$.SUBRULE($.def);});$.CONSUME(NodeName);$.CONSUME(LCurly);$.MANY(function(){$.SUBRULE($.field);});$.CONSUME(RCurly);});$.RULE(\"field\",function(){$.CONSUME(Identifier);$.OR2([{ALT:function(){$.SUBRULE($.singleFieldValue);}},{ALT:function(){$.SUBRULE($.multiFieldValue);}}]);});$.RULE(\"def\",function(){$.CONSUME(DEF);$.OR([{ALT:function(){$.CONSUME(Identifier);}},{ALT:function(){$.CONSUME(NodeName);}}]);});$.RULE(\"use\",function(){$.CONSUME(USE);$.OR([{ALT:function(){$.CONSUME(Identifier);}},{ALT:function(){$.CONSUME(NodeName);}}]);});$.RULE(\"singleFieldValue\",function(){$.AT_LEAST_ONE(function(){$.OR([{ALT:function(){$.SUBRULE($.node);}},{ALT:function(){$.SUBRULE($.use);}},{ALT:function(){$.CONSUME(StringLiteral);}},{ALT:function(){$.CONSUME(HexLiteral);}},{ALT:function(){$.CONSUME(NumberLiteral);}},{ALT:function(){$.CONSUME(TrueLiteral);}},{ALT:function(){$.CONSUME(FalseLiteral);}},{ALT:function(){$.CONSUME(NullLiteral);}}]);});});$.RULE(\"multiFieldValue\",function(){$.CONSUME(LSquare);$.MANY(function(){$.OR([{ALT:function(){$.SUBRULE($.node);}},{ALT:function(){$.SUBRULE($.use);}},{ALT:function(){$.CONSUME(StringLiteral);}},{ALT:function(){$.CONSUME(HexLiteral);}},{ALT:function(){$.CONSUME(NumberLiteral);}},{ALT:function(){$.CONSUME(NullLiteral);}}]);});$.CONSUME(RSquare);});$.RULE(\"route\",function(){$.CONSUME(ROUTE);$.CONSUME(RouteIdentifier);$.CONSUME(TO);$.CONSUME2(RouteIdentifier);});this.performSelfAnalysis();}}class Face2{constructor(a2,b2,c){this.a=a2;this.b=b2;this.c=c;this.normal=new Vector3();}}const TEXTURE_TYPE={INTENSITY:1,INTENSITY_ALPHA:2,RGB:3,RGBA:4};class WorkerPool{constructor(pool=4){this.pool=pool;this.queue=[];this.workers=[];this.workersResolve=[];this.workerStatus=0;}_initWorker(workerId){if(!this.workers[workerId]){const worker=this.workerCreator();worker.addEventListener(\"message\",this._onMessage.bind(this,workerId));this.workers[workerId]=worker;}}_getIdleWorker(){for(let i2=0;i2{const workerId=this._getIdleWorker();if(workerId!==-1){this._initWorker(workerId);this.workerStatus|=1<worker.terminate());this.workersResolve.length=0;this.workers.length=0;this.queue.length=0;this.workerStatus=0;}}class CompressedArrayTexture extends CompressedTexture{constructor(mipmaps,width,height,depth,format,type){super(mipmaps,width,height,format,type);this.isCompressedArrayTexture=true;this.image.depth=depth;this.wrapR=ClampToEdgeWrapping;}}const _taskCache$3=/*@__PURE__*/ /* @__PURE__ */new WeakMap();let _activeLoaders=0;let _zstd;const _KTX2Loader=class extends Loader{constructor(manager){super(manager);this.transcoderPath=\"\";this.transcoderBinary=null;this.transcoderPending=null;this.workerPool=new WorkerPool();this.workerSourceURL=\"\";this.workerConfig=null;if(typeof MSC_TRANSCODER!==\"undefined\"){console.warn('THREE.KTX2Loader: Please update to latest \"basis_transcoder\". \"msc_basis_transcoder\" is no longer supported in three.js r125+.');}}setTranscoderPath(path){this.transcoderPath=path;return this;}setWorkerLimit(num){this.workerPool.setWorkerLimit(num);return this;}detectSupport(renderer){this.workerConfig={astcSupported:renderer.extensions.has(\"WEBGL_compressed_texture_astc\"),etc1Supported:renderer.extensions.has(\"WEBGL_compressed_texture_etc1\"),etc2Supported:renderer.extensions.has(\"WEBGL_compressed_texture_etc\"),dxtSupported:renderer.extensions.has(\"WEBGL_compressed_texture_s3tc\"),bptcSupported:renderer.extensions.has(\"EXT_texture_compression_bptc\"),pvrtcSupported:renderer.extensions.has(\"WEBGL_compressed_texture_pvrtc\")||renderer.extensions.has(\"WEBKIT_WEBGL_compressed_texture_pvrtc\")};if(renderer.capabilities.isWebGL2){this.workerConfig.etc1Supported=false;}return this;}init(){if(!this.transcoderPending){const jsLoader=new FileLoader(this.manager);jsLoader.setPath(this.transcoderPath);jsLoader.setWithCredentials(this.withCredentials);const jsContent=jsLoader.loadAsync(\"basis_transcoder.js\");const binaryLoader=new FileLoader(this.manager);binaryLoader.setPath(this.transcoderPath);binaryLoader.setResponseType(\"arraybuffer\");binaryLoader.setWithCredentials(this.withCredentials);const binaryContent=binaryLoader.loadAsync(\"basis_transcoder.wasm\");this.transcoderPending=Promise.all([jsContent,binaryContent]).then(([jsContent2,binaryContent2])=>{const fn=_KTX2Loader.BasisWorker.toString();const body=[\"/* constants */\",\"let _EngineFormat = \"+JSON.stringify(_KTX2Loader.EngineFormat),\"let _TranscoderFormat = \"+JSON.stringify(_KTX2Loader.TranscoderFormat),\"let _BasisFormat = \"+JSON.stringify(_KTX2Loader.BasisFormat),\"/* basis_transcoder.js */\",jsContent2,\"/* worker */\",fn.substring(fn.indexOf(\"{\")+1,fn.lastIndexOf(\"}\"))].join(\"\\n\");this.workerSourceURL=URL.createObjectURL(new Blob([body]));this.transcoderBinary=binaryContent2;this.workerPool.setWorkerCreator(()=>{const worker=new Worker(this.workerSourceURL);const transcoderBinary=this.transcoderBinary.slice(0);worker.postMessage({type:\"init\",config:this.workerConfig,transcoderBinary},[transcoderBinary]);return worker;});});if(_activeLoaders>0){console.warn(\"THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances.\");}_activeLoaders++;}return this.transcoderPending;}load(url,onLoad,onProgress,onError){if(this.workerConfig===null){throw new Error(\"THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.\");}const loader=new FileLoader(this.manager);loader.setResponseType(\"arraybuffer\");loader.setWithCredentials(this.withCredentials);loader.load(url,buffer=>{if(_taskCache$3.has(buffer)){const cachedTask=_taskCache$3.get(buffer);return cachedTask.promise.then(onLoad).catch(onError);}this._createTexture(buffer).then(texture=>onLoad?onLoad(texture):null).catch(onError);},onProgress,onError);}_createTextureFrom(transcodeResult,container){const{mipmaps,width,height,format,type,error,dfdTransferFn,dfdFlags}=transcodeResult;if(type===\"error\")return Promise.reject(error);const texture=container.layerCount>1?new CompressedArrayTexture(mipmaps,width,height,container.layerCount,format,UnsignedByteType):new CompressedTexture(mipmaps,width,height,format,UnsignedByteType);texture.minFilter=mipmaps.length===1?LinearFilter:LinearMipmapLinearFilter;texture.magFilter=LinearFilter;texture.generateMipmaps=false;texture.needsUpdate=true;if(\"colorSpace\"in texture)texture.colorSpace=dfdTransferFn===KHR_DF_TRANSFER_SRGB?\"srgb\":\"srgb-linear\";else texture.encoding=dfdTransferFn===KHR_DF_TRANSFER_SRGB?3001:3e3;texture.premultiplyAlpha=!!(dfdFlags&KHR_DF_FLAG_ALPHA_PREMULTIPLIED);return texture;}/**\n * @param {ArrayBuffer} buffer\n * @param {object?} config\n * @return {Promise}\n */async _createTexture(buffer,config={}){const container=read(new Uint8Array(buffer));if(container.vkFormat!==VK_FORMAT_UNDEFINED){return createDataTexture(container);}const taskConfig=config;const texturePending=this.init().then(()=>{return this.workerPool.postMessage({type:\"transcode\",buffer,taskConfig},[buffer]);}).then(e=>this._createTextureFrom(e.data,container));_taskCache$3.set(buffer,{promise:texturePending});return texturePending;}dispose(){this.workerPool.dispose();if(this.workerSourceURL)URL.revokeObjectURL(this.workerSourceURL);_activeLoaders--;return this;}};let KTX2Loader=_KTX2Loader;/* CONSTANTS */ /*@__PURE__*/__publicField(KTX2Loader,\"BasisFormat\",{ETC1S:0,UASTC_4x4:1});/*@__PURE__*/__publicField(KTX2Loader,\"TranscoderFormat\",{ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16});/*@__PURE__*/__publicField(KTX2Loader,\"EngineFormat\",{RGBAFormat,RGBA_ASTC_4x4_Format,RGBA_BPTC_Format,RGBA_ETC2_EAC_Format,RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT5_Format,RGB_ETC1_Format,RGB_ETC2_Format,RGB_PVRTC_4BPPV1_Format,RGB_S3TC_DXT1_Format});/* WEB WORKER */ /*@__PURE__*/__publicField(KTX2Loader,\"BasisWorker\",function(){let config;let transcoderPending;let BasisModule;const EngineFormat=_EngineFormat;const TranscoderFormat=_TranscoderFormat;const BasisFormat=_BasisFormat;self.addEventListener(\"message\",function(e){const message=e.data;switch(message.type){case\"init\":config=message.config;init2(message.transcoderBinary);break;case\"transcode\":transcoderPending.then(()=>{try{const{width,height,hasAlpha,mipmaps,format,dfdTransferFn,dfdFlags}=transcode(message.buffer);const buffers=[];for(let i2=0;i2{BasisModule={wasmBinary,onRuntimeInitialized:resolve};BASIS(BasisModule);}).then(()=>{BasisModule.initializeBasis();if(BasisModule.KTX2File===void 0){console.warn(\"THREE.KTX2Loader: Please update Basis Universal transcoder.\");}});}function transcode(buffer){const ktx2File=new BasisModule.KTX2File(new Uint8Array(buffer));function cleanup(){ktx2File.close();ktx2File.delete();}if(!ktx2File.isValid()){cleanup();throw new Error(\"THREE.KTX2Loader:\tInvalid or unsupported .ktx2 file\");}const basisFormat=ktx2File.isUASTC()?BasisFormat.UASTC_4x4:BasisFormat.ETC1S;const width=ktx2File.getWidth();const height=ktx2File.getHeight();const layers=ktx2File.getLayers()||1;const levels=ktx2File.getLevels();const hasAlpha=ktx2File.getHasAlpha();const dfdTransferFn=ktx2File.getDFDTransferFunc();const dfdFlags=ktx2File.getDFDFlags();const{transcoderFormat,engineFormat}=getTranscoderFormat(basisFormat,width,height,hasAlpha);if(!width||!height||!levels){cleanup();throw new Error(\"THREE.KTX2Loader:\tInvalid texture\");}if(!ktx2File.startTranscoding()){cleanup();throw new Error(\"THREE.KTX2Loader: .startTranscoding failed\");}const mipmaps=[];for(let mip=0;mip{const zstd=new ZSTDDecoder();await zstd.init();resolve(zstd);});}levelData=(await _zstd).decode(level.levelData,level.uncompressedByteLength);}else{throw new Error(\"THREE.KTX2Loader: Unsupported supercompressionScheme.\");}if(TYPE_MAP[vkFormat]===FloatType){view=new Float32Array(levelData.buffer,levelData.byteOffset,levelData.byteLength/Float32Array.BYTES_PER_ELEMENT);}else if(TYPE_MAP[vkFormat]===HalfFloatType){view=new Uint16Array(levelData.buffer,levelData.byteOffset,levelData.byteLength/Uint16Array.BYTES_PER_ELEMENT);}else{view=levelData;}const texture=pixelDepth===0?new DataTexture(view,pixelWidth,pixelHeight):new Data3DTexture(view,pixelWidth,pixelHeight,pixelDepth);texture.type=TYPE_MAP[vkFormat];texture.format=FORMAT_MAP[vkFormat];texture.encoding=ENCODING_MAP[vkFormat]||3e3;texture.needsUpdate=true;return Promise.resolve(texture);}class LottieLoader extends Loader{setQuality(value){this._quality=value;}load(url,onLoad,onProgress,onError){const quality=this._quality||1;const texture=new CanvasTexture();texture.minFilter=NearestFilter;const loader=new FileLoader(this.manager);loader.setPath(this.path);loader.setWithCredentials(this.withCredentials);loader.load(url,function(text){const data=JSON.parse(text);const container=document.createElement(\"div\");container.style.width=data.w+\"px\";container.style.height=data.h+\"px\";document.body.appendChild(container);const animation=bodymovin.loadAnimation({container,animType:\"canvas\",loop:true,autoplay:true,animationData:data,rendererSettings:{dpr:quality}});texture.animation=animation;texture.image=animation.container;animation.addEventListener(\"enterFrame\",function(){texture.needsUpdate=true;});container.style.display=\"none\";if(onLoad!==void 0){onLoad(texture);}},onProgress,onError);return texture;}}const{parseBuffer}=/*@__PURE__*/(()=>{var TINF_OK=0;var TINF_DATA_ERROR=-3;function Tree(){this.table=new Uint16Array(16);this.trans=new Uint16Array(288);}function Data(source,dest){this.source=source;this.sourceIndex=0;this.tag=0;this.bitcount=0;this.dest=dest;this.destLen=0;this.ltree=new Tree();this.dtree=new Tree();}var sltree=new Tree();var sdtree=new Tree();var length_bits=new Uint8Array(30);var length_base=new Uint16Array(30);var dist_bits=new Uint8Array(30);var dist_base=new Uint16Array(30);var clcidx=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);var code_tree=new Tree();var lengths=new Uint8Array(288+32);function tinf_build_bits_base(bits,base,delta,first){var i2,sum;for(i2=0;i2>>=1;return bit;}function tinf_read_bits(d,num,base){if(!num){return base;}while(d.bitcount<24){d.tag|=d.source[d.sourceIndex++]<>>16-num;d.tag>>>=num;d.bitcount-=num;return val+base;}function tinf_decode_symbol(d,t2){while(d.bitcount<24){d.tag|=d.source[d.sourceIndex++]<>>=1;++len;sum+=t2.table[len];cur-=t2.table[len];}while(cur>=0);d.tag=tag;d.bitcount-=len;return t2.trans[sum+cur];}function tinf_decode_trees(d,lt,dt){var hlit,hdist,hclen;var i2,num,length;hlit=tinf_read_bits(d,5,257);hdist=tinf_read_bits(d,5,1);hclen=tinf_read_bits(d,4,4);for(i2=0;i2<19;++i2){lengths[i2]=0;}for(i2=0;i28){d.sourceIndex--;d.bitcount-=8;}length=d.source[d.sourceIndex+1];length=256*length+d.source[d.sourceIndex];invlength=d.source[d.sourceIndex+3];invlength=256*invlength+d.source[d.sourceIndex+2];if(length!==(~invlength&65535)){return TINF_DATA_ERROR;}d.sourceIndex+=4;for(i2=length;i2;--i2){d.dest[d.destLen++]=d.source[d.sourceIndex++];}d.bitcount=0;return TINF_OK;}function tinf_uncompress(source,dest){var d=new Data(source,dest);var bfinal,btype,res;do{bfinal=tinf_getbit(d);btype=tinf_read_bits(d,2,0);switch(btype){case 0:res=tinf_inflate_uncompressed_block(d);break;case 1:res=tinf_inflate_block_data(d,sltree,sdtree);break;case 2:tinf_decode_trees(d,d.ltree,d.dtree);res=tinf_inflate_block_data(d,d.ltree,d.dtree);break;default:res=TINF_DATA_ERROR;}if(res!==TINF_OK){throw new Error(\"Data error\");}}while(!bfinal);if(d.destLenthis.x2){this.x2=x;}}if(typeof y===\"number\"){if(isNaN(this.y1)||isNaN(this.y2)){this.y1=y;this.y2=y;}if(ythis.y2){this.y2=y;}}};BoundingBox.prototype.addX=function(x){this.addPoint(x,null);};BoundingBox.prototype.addY=function(y){this.addPoint(null,y);};BoundingBox.prototype.addBezier=function(x0,y0,x1,y1,x2,y2,x,y){var p0=[x0,y0];var p1=[x1,y1];var p2=[x2,y2];var p3=[x,y];this.addPoint(x0,y0);this.addPoint(x,y);for(var i2=0;i2<=1;i2++){var b2=6*p0[i2]-12*p1[i2]+6*p2[i2];var a2=-3*p0[i2]+9*p1[i2]-9*p2[i2]+3*p3[i2];var c=3*p1[i2]-3*p0[i2];if(a2===0){if(b2===0){continue;}var t2=-c/b2;if(0=0&&i3>0){s+=\" \";}s+=floatToString(v);}return s;}var d=\"\";for(var i2=0;i2\";return svg;};Path2.prototype.toDOMElement=function(decimalPlaces){var temporaryPath=this.toPathData(decimalPlaces);var newPath=document.createElementNS(\"http://www.w3.org/2000/svg\",\"path\");newPath.setAttribute(\"d\",temporaryPath);return newPath;};function fail(message){throw new Error(message);}function argument(predicate,message){if(!predicate){fail(message);}}var check={fail,argument,assert:argument};var LIMIT16=32768;var LIMIT32=2147483648;var decode={};var encode={};var sizeOf={};function constant(v){return function(){return v;};}encode.BYTE=function(v){check.argument(v>=0&&v<=255,\"Byte value should be between 0 and 255.\");return[v];};sizeOf.BYTE=constant(1);encode.CHAR=function(v){return[v.charCodeAt(0)];};sizeOf.CHAR=constant(1);encode.CHARARRAY=function(v){if(typeof v===\"undefined\"){v=\"\";console.warn(\"Undefined CHARARRAY encountered and treated as an empty string. This is probably caused by a missing glyph name.\");}var b2=[];for(var i2=0;i2>8&255,v&255];};sizeOf.USHORT=constant(2);encode.SHORT=function(v){if(v>=LIMIT16){v=-(2*LIMIT16-v);}return[v>>8&255,v&255];};sizeOf.SHORT=constant(2);encode.UINT24=function(v){return[v>>16&255,v>>8&255,v&255];};sizeOf.UINT24=constant(3);encode.ULONG=function(v){return[v>>24&255,v>>16&255,v>>8&255,v&255];};sizeOf.ULONG=constant(4);encode.LONG=function(v){if(v>=LIMIT32){v=-(2*LIMIT32-v);}return[v>>24&255,v>>16&255,v>>8&255,v&255];};sizeOf.LONG=constant(4);encode.FIXED=encode.ULONG;sizeOf.FIXED=sizeOf.ULONG;encode.FWORD=encode.SHORT;sizeOf.FWORD=sizeOf.SHORT;encode.UFWORD=encode.USHORT;sizeOf.UFWORD=sizeOf.USHORT;encode.LONGDATETIME=function(v){return[0,0,0,0,v>>24&255,v>>16&255,v>>8&255,v&255];};sizeOf.LONGDATETIME=constant(8);encode.TAG=function(v){check.argument(v.length===4,\"Tag should be exactly 4 ASCII characters.\");return[v.charCodeAt(0),v.charCodeAt(1),v.charCodeAt(2),v.charCodeAt(3)];};sizeOf.TAG=constant(4);encode.Card8=encode.BYTE;sizeOf.Card8=sizeOf.BYTE;encode.Card16=encode.USHORT;sizeOf.Card16=sizeOf.USHORT;encode.OffSize=encode.BYTE;sizeOf.OffSize=sizeOf.BYTE;encode.SID=encode.USHORT;sizeOf.SID=sizeOf.USHORT;encode.NUMBER=function(v){if(v>=-107&&v<=107){return[v+139];}else if(v>=108&&v<=1131){v=v-108;return[(v>>8)+247,v&255];}else if(v>=-1131&&v<=-108){v=-v-108;return[(v>>8)+251,v&255];}else if(v>=-32768&&v<=32767){return encode.NUMBER16(v);}else{return encode.NUMBER32(v);}};sizeOf.NUMBER=function(v){return encode.NUMBER(v).length;};encode.NUMBER16=function(v){return[28,v>>8&255,v&255];};sizeOf.NUMBER16=constant(3);encode.NUMBER32=function(v){return[29,v>>24&255,v>>16&255,v>>8&255,v&255];};sizeOf.NUMBER32=constant(5);encode.REAL=function(v){var value=v.toString();var m=/\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/.exec(value);if(m){var epsilon=parseFloat(\"1e\"+((m[2]?+m[2]:0)+m[1].length));value=(Math.round(v*epsilon)/epsilon).toString();}var nibbles=\"\";for(var i2=0,ii=value.length;i2>8&255;b2[b2.length]=codepoint&255;}return b2;};sizeOf.UTF16=function(v){return v.length*2;};var eightBitMacEncodings={// Python: 'mac_croatian'\n\"x-mac-croatian\":\"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈Ć«Č… ÀÃÕŒœĐ—“”‘’÷◊©⁄€‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ\",// Python: 'mac_cyrillic'\n\"x-mac-cyrillic\":\"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю\",// http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/GAELIC.TXT\n\"x-mac-gaelic\":\"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØḂ±≤≥ḃĊċḊḋḞḟĠġṀæøṁṖṗɼƒſṠ«»… ÀÃÕŒœ–—“”‘’ṡẛÿŸṪ€‹›Ŷŷṫ·Ỳỳ⁊ÂÊÁËÈÍÎÏÌÓÔ♣ÒÚÛÙıÝýŴŵẄẅẀẁẂẃ\",// Python: 'mac_greek'\n\"x-mac-greek\":\"Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦€ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ­\",// Python: 'mac_iceland'\n\"x-mac-icelandic\":\"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\",// http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/INUIT.TXT\n\"x-mac-inuit\":\"ᐃᐄᐅᐆᐊᐋᐱᐲᐳᐴᐸᐹᑉᑎᑏᑐᑑᑕᑖᑦᑭᑮᑯᑰᑲᑳᒃᒋᒌᒍᒎᒐᒑ°ᒡᒥᒦ•¶ᒧ®©™ᒨᒪᒫᒻᓂᓃᓄᓅᓇᓈᓐᓯᓰᓱᓲᓴᓵᔅᓕᓖᓗᓘᓚᓛᓪᔨᔩᔪᔫᔭ… ᔮᔾᕕᕖᕗ–—“”‘’ᕘᕙᕚᕝᕆᕇᕈᕉᕋᕌᕐᕿᖀᖁᖂᖃᖄᖅᖏᖐᖑᖒᖓᖔᖕᙱᙲᙳᙴᙵᙶᖖᖠᖡᖢᖣᖤᖥᖦᕼŁł\",// Python: 'mac_latin2'\n\"x-mac-ce\":\"ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ\",// Python: 'mac_roman'\nmacintosh:\"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\",// Python: 'mac_romanian'\n\"x-mac-romanian\":\"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂȘ∞±≤≥¥µ∂∑∏π∫ªºΩăș¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›Țț‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\",// Python: 'mac_turkish'\n\"x-mac-turkish\":\"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙˆ˜¯˘˙˚¸˝˛ˇ\"};decode.MACSTRING=function(dataView,offset,dataLength,encoding){var table2=eightBitMacEncodings[encoding];if(table2===void 0){return void 0;}var result=\"\";for(var i2=0;i2=128){c=table2[c];if(c===void 0){return void 0;}}result[i2]=c;}return result;};sizeOf.MACSTRING=function(str,encoding){var b2=encode.MACSTRING(str,encoding);if(b2!==void 0){return b2.length;}else{return 0;}};function isByteEncodable(value){return value>=-128&&value<=127;}function encodeVarDeltaRunAsZeroes(deltas,pos,result){var runLength=0;var numDeltas=deltas.length;while(pos>8&255,val+256&255);}return pos;}encode.VARDELTAS=function(deltas){var pos=0;var result=[];while(pos=-128&&value<=127){pos=encodeVarDeltaRunAsBytes(deltas,pos,result);}else{pos=encodeVarDeltaRunAsWords(deltas,pos,result);}}return result;};encode.INDEX=function(l){var offset=1;var offsets=[offset];var data=[];for(var i2=0;i2>8;d[o+1]=offset&255;d=d.concat(subtables[i$1]);}return d;};sizeOf.TABLE=function(table2){var numBytes=0;var length=table2.fields.length;for(var i2=0;i20){return new Parser2(this.data,this.offset+structOffset).parseStruct(description);}return void 0;};Parser2.prototype.parsePointer32=function(description){var structOffset=this.parseOffset32();if(structOffset>0){return new Parser2(this.data,this.offset+structOffset).parseStruct(description);}return void 0;};Parser2.prototype.parseListOfLists=function(itemCallback){var offsets=this.parseOffset16List();var count=offsets.length;var relativeOffset=this.relativeOffset;var list=new Array(count);for(var i2=0;i2>1;p.skip(\"uShort\",3);cmap2.glyphIndexMap={};var endCountParser=new parse.Parser(data,start+offset+14);var startCountParser=new parse.Parser(data,start+offset+16+segCount*2);var idDeltaParser=new parse.Parser(data,start+offset+16+segCount*4);var idRangeOffsetParser=new parse.Parser(data,start+offset+16+segCount*6);var glyphIndexOffset=start+offset+16+segCount*8;for(var i2=0;i2=0;i2-=1){var platformId=parse.getUShort(data,start+4+i2*8);var encodingId=parse.getUShort(data,start+4+i2*8+2);if(platformId===3&&(encodingId===0||encodingId===1||encodingId===10)||platformId===0&&(encodingId===0||encodingId===1||encodingId===2||encodingId===3||encodingId===4)){offset=parse.getULong(data,start+4+i2*8+4);break;}}if(offset===-1){throw new Error(\"No valid cmap sub-tables found.\");}var p=new parse.Parser(data,start+offset);cmap2.format=p.parseUShort();if(cmap2.format===12){parseCmapTableFormat12(cmap2,p);}else if(cmap2.format===4){parseCmapTableFormat4(cmap2,p,data,start,offset);}else{throw new Error(\"Only format 4 and 12 cmap tables are supported (found format \"+cmap2.format+\").\");}return cmap2;}function addSegment(t2,code,glyphIndex){t2.segments.push({end:code,start:code,delta:-(code-glyphIndex),offset:0,glyphIndex});}function addTerminatorSegment(t2){t2.segments.push({end:65535,start:65535,delta:1,offset:0});}function makeCmapTable(glyphs){var isPlan0Only=true;var i2;for(i2=glyphs.length-1;i2>0;i2-=1){var g=glyphs.get(i2);if(g.unicode>65535){console.log(\"Adding CMAP format 12 (needed!)\");isPlan0Only=false;break;}}var cmapTable=[{name:\"version\",type:\"USHORT\",value:0},{name:\"numTables\",type:\"USHORT\",value:isPlan0Only?1:2},// CMAP 4 header\n{name:\"platformID\",type:\"USHORT\",value:3},{name:\"encodingID\",type:\"USHORT\",value:1},{name:\"offset\",type:\"ULONG\",value:isPlan0Only?12:12+8}];if(!isPlan0Only){cmapTable=cmapTable.concat([// CMAP 12 header\n{name:\"cmap12PlatformID\",type:\"USHORT\",value:3},// We encode only for PlatformID = 3 (Windows) because it is supported everywhere\n{name:\"cmap12EncodingID\",type:\"USHORT\",value:10},{name:\"cmap12Offset\",type:\"ULONG\",value:0}]);}cmapTable=cmapTable.concat([// CMAP 4 Subtable\n{name:\"format\",type:\"USHORT\",value:4},{name:\"cmap4Length\",type:\"USHORT\",value:0},{name:\"language\",type:\"USHORT\",value:0},{name:\"segCountX2\",type:\"USHORT\",value:0},{name:\"searchRange\",type:\"USHORT\",value:0},{name:\"entrySelector\",type:\"USHORT\",value:0},{name:\"rangeShift\",type:\"USHORT\",value:0}]);var t2=new table.Table(\"cmap\",cmapTable);t2.segments=[];for(i2=0;i2>4;var n2=b2&15;if(n1===eof){break;}s+=lookup[n1];if(n2===eof){break;}s+=lookup[n2];}return parseFloat(s);}function parseOperand(parser,b0){var b1;var b2;var b3;var b4;if(b0===28){b1=parser.parseByte();b2=parser.parseByte();return b1<<8|b2;}if(b0===29){b1=parser.parseByte();b2=parser.parseByte();b3=parser.parseByte();b4=parser.parseByte();return b1<<24|b2<<16|b3<<8|b4;}if(b0===30){return parseFloatOperand(parser);}if(b0>=32&&b0<=246){return b0-139;}if(b0>=247&&b0<=250){b1=parser.parseByte();return(b0-247)*256+b1+108;}if(b0>=251&&b0<=254){b1=parser.parseByte();return-(b0-251)*256-b1-108;}throw new Error(\"Invalid b0 \"+b0);}function entriesToObject(entries){var o={};for(var i2=0;i2>1;stack.length=0;haveWidth=true;}function parse2(code2){var b1;var b2;var b3;var b4;var codeIndex;var subrCode;var jpx;var jpy;var c3x;var c3y;var c4x;var c4y;var i2=0;while(i21&&!haveWidth){width=stack.shift()+nominalWidthX;haveWidth=true;}y+=stack.pop();newContour(x,y);break;case 5:while(stack.length>0){x+=stack.shift();y+=stack.shift();p.lineTo(x,y);}break;case 6:while(stack.length>0){x+=stack.shift();p.lineTo(x,y);if(stack.length===0){break;}y+=stack.shift();p.lineTo(x,y);}break;case 7:while(stack.length>0){y+=stack.shift();p.lineTo(x,y);if(stack.length===0){break;}x+=stack.shift();p.lineTo(x,y);}break;case 8:while(stack.length>0){c1x=x+stack.shift();c1y=y+stack.shift();c2x=c1x+stack.shift();c2y=c1y+stack.shift();x=c2x+stack.shift();y=c2y+stack.shift();p.curveTo(c1x,c1y,c2x,c2y,x,y);}break;case 10:codeIndex=stack.pop()+subrsBias;subrCode=subrs[codeIndex];if(subrCode){parse2(subrCode);}break;case 11:return;case 12:v=code2[i2];i2+=1;switch(v){case 35:c1x=x+stack.shift();c1y=y+stack.shift();c2x=c1x+stack.shift();c2y=c1y+stack.shift();jpx=c2x+stack.shift();jpy=c2y+stack.shift();c3x=jpx+stack.shift();c3y=jpy+stack.shift();c4x=c3x+stack.shift();c4y=c3y+stack.shift();x=c4x+stack.shift();y=c4y+stack.shift();stack.shift();p.curveTo(c1x,c1y,c2x,c2y,jpx,jpy);p.curveTo(c3x,c3y,c4x,c4y,x,y);break;case 34:c1x=x+stack.shift();c1y=y;c2x=c1x+stack.shift();c2y=c1y+stack.shift();jpx=c2x+stack.shift();jpy=c2y;c3x=jpx+stack.shift();c3y=c2y;c4x=c3x+stack.shift();c4y=y;x=c4x+stack.shift();p.curveTo(c1x,c1y,c2x,c2y,jpx,jpy);p.curveTo(c3x,c3y,c4x,c4y,x,y);break;case 36:c1x=x+stack.shift();c1y=y+stack.shift();c2x=c1x+stack.shift();c2y=c1y+stack.shift();jpx=c2x+stack.shift();jpy=c2y;c3x=jpx+stack.shift();c3y=c2y;c4x=c3x+stack.shift();c4y=c3y+stack.shift();x=c4x+stack.shift();p.curveTo(c1x,c1y,c2x,c2y,jpx,jpy);p.curveTo(c3x,c3y,c4x,c4y,x,y);break;case 37:c1x=x+stack.shift();c1y=y+stack.shift();c2x=c1x+stack.shift();c2y=c1y+stack.shift();jpx=c2x+stack.shift();jpy=c2y+stack.shift();c3x=jpx+stack.shift();c3y=jpy+stack.shift();c4x=c3x+stack.shift();c4y=c3y+stack.shift();if(Math.abs(c4x-x)>Math.abs(c4y-y)){x=c4x+stack.shift();}else{y=c4y+stack.shift();}p.curveTo(c1x,c1y,c2x,c2y,jpx,jpy);p.curveTo(c3x,c3y,c4x,c4y,x,y);break;default:console.log(\"Glyph \"+glyph.index+\": unknown operator 1200\"+v);stack.length=0;}break;case 14:if(stack.length>0&&!haveWidth){width=stack.shift()+nominalWidthX;haveWidth=true;}if(open){p.closePath();open=false;}break;case 18:parseStems();break;case 19:case 20:parseStems();i2+=nStems+7>>3;break;case 21:if(stack.length>2&&!haveWidth){width=stack.shift()+nominalWidthX;haveWidth=true;}y+=stack.pop();x+=stack.pop();newContour(x,y);break;case 22:if(stack.length>1&&!haveWidth){width=stack.shift()+nominalWidthX;haveWidth=true;}x+=stack.pop();newContour(x,y);break;case 23:parseStems();break;case 24:while(stack.length>2){c1x=x+stack.shift();c1y=y+stack.shift();c2x=c1x+stack.shift();c2y=c1y+stack.shift();x=c2x+stack.shift();y=c2y+stack.shift();p.curveTo(c1x,c1y,c2x,c2y,x,y);}x+=stack.shift();y+=stack.shift();p.lineTo(x,y);break;case 25:while(stack.length>6){x+=stack.shift();y+=stack.shift();p.lineTo(x,y);}c1x=x+stack.shift();c1y=y+stack.shift();c2x=c1x+stack.shift();c2y=c1y+stack.shift();x=c2x+stack.shift();y=c2y+stack.shift();p.curveTo(c1x,c1y,c2x,c2y,x,y);break;case 26:if(stack.length%2){x+=stack.shift();}while(stack.length>0){c1x=x;c1y=y+stack.shift();c2x=c1x+stack.shift();c2y=c1y+stack.shift();x=c2x;y=c2y+stack.shift();p.curveTo(c1x,c1y,c2x,c2y,x,y);}break;case 27:if(stack.length%2){y+=stack.shift();}while(stack.length>0){c1x=x+stack.shift();c1y=y;c2x=c1x+stack.shift();c2y=c1y+stack.shift();x=c2x+stack.shift();y=c2y;p.curveTo(c1x,c1y,c2x,c2y,x,y);}break;case 28:b1=code2[i2];b2=code2[i2+1];stack.push((b1<<24|b2<<16)>>16);i2+=2;break;case 29:codeIndex=stack.pop()+font.gsubrsBias;subrCode=font.gsubrs[codeIndex];if(subrCode){parse2(subrCode);}break;case 30:while(stack.length>0){c1x=x;c1y=y+stack.shift();c2x=c1x+stack.shift();c2y=c1y+stack.shift();x=c2x+stack.shift();y=c2y+(stack.length===1?stack.shift():0);p.curveTo(c1x,c1y,c2x,c2y,x,y);if(stack.length===0){break;}c1x=x+stack.shift();c1y=y;c2x=c1x+stack.shift();c2y=c1y+stack.shift();y=c2y+stack.shift();x=c2x+(stack.length===1?stack.shift():0);p.curveTo(c1x,c1y,c2x,c2y,x,y);}break;case 31:while(stack.length>0){c1x=x+stack.shift();c1y=y;c2x=c1x+stack.shift();c2y=c1y+stack.shift();y=c2y+stack.shift();x=c2x+(stack.length===1?stack.shift():0);p.curveTo(c1x,c1y,c2x,c2y,x,y);if(stack.length===0){break;}c1x=x;c1y=y+stack.shift();c2x=c1x+stack.shift();c2y=c1y+stack.shift();x=c2x+stack.shift();y=c2y+(stack.length===1?stack.shift():0);p.curveTo(c1x,c1y,c2x,c2y,x,y);}break;default:if(v<32){console.log(\"Glyph \"+glyph.index+\": unknown operator \"+v);}else if(v<247){stack.push(v-139);}else if(v<251){b1=code2[i2];i2+=1;stack.push((v-247)*256+b1+108);}else if(v<255){b1=code2[i2];i2+=1;stack.push(-(v-251)*256-b1-108);}else{b1=code2[i2];b2=code2[i2+1];b3=code2[i2+2];b4=code2[i2+3];i2+=4;stack.push((b1<<24|b2<<16|b3<<8|b4)/65536);}}}}parse2(code);glyph.advanceWidth=width;return p;}function parseCFFFDSelect(data,start,nGlyphs,fdArrayCount){var fdSelect=[];var fdIndex;var parser=new parse.Parser(data,start);var format=parser.parseCard8();if(format===0){for(var iGid=0;iGid=fdArrayCount){throw new Error(\"CFF table CID Font FDSelect has bad FD index value \"+fdIndex+\" (FD count \"+fdArrayCount+\")\");}fdSelect.push(fdIndex);}}else if(format===3){var nRanges=parser.parseCard16();var first=parser.parseCard16();if(first!==0){throw new Error(\"CFF Table CID Font FDSelect format 3 range has bad initial GID \"+first);}var next;for(var iRange=0;iRange=fdArrayCount){throw new Error(\"CFF table CID Font FDSelect has bad FD index value \"+fdIndex+\" (FD count \"+fdArrayCount+\")\");}if(next>nGlyphs){throw new Error(\"CFF Table CID Font FDSelect format 3 range has bad GID \"+next);}for(;first=0){sid=i2;}i2=strings.indexOf(s);if(i2>=0){sid=i2+cffStandardStrings.length;}else{sid=cffStandardStrings.length+strings.length;strings.push(s);}return sid;}function makeHeader(){return new table.Record(\"Header\",[{name:\"major\",type:\"Card8\",value:1},{name:\"minor\",type:\"Card8\",value:0},{name:\"hdrSize\",type:\"Card8\",value:4},{name:\"major\",type:\"Card8\",value:1}]);}function makeNameIndex(fontNames){var t2=new table.Record(\"Name INDEX\",[{name:\"names\",type:\"INDEX\",value:[]}]);t2.names=[];for(var i2=0;i2=range.begin&&unicode=1){os22.ulCodePageRange1=p.parseULong();os22.ulCodePageRange2=p.parseULong();}if(os22.version>=2){os22.sxHeight=p.parseShort();os22.sCapHeight=p.parseShort();os22.usDefaultChar=p.parseUShort();os22.usBreakChar=p.parseUShort();os22.usMaxContent=p.parseUShort();}return os22;}function makeOS2Table(options){return new table.Table(\"OS/2\",[{name:\"version\",type:\"USHORT\",value:3},{name:\"xAvgCharWidth\",type:\"SHORT\",value:0},{name:\"usWeightClass\",type:\"USHORT\",value:0},{name:\"usWidthClass\",type:\"USHORT\",value:0},{name:\"fsType\",type:\"USHORT\",value:0},{name:\"ySubscriptXSize\",type:\"SHORT\",value:650},{name:\"ySubscriptYSize\",type:\"SHORT\",value:699},{name:\"ySubscriptXOffset\",type:\"SHORT\",value:0},{name:\"ySubscriptYOffset\",type:\"SHORT\",value:140},{name:\"ySuperscriptXSize\",type:\"SHORT\",value:650},{name:\"ySuperscriptYSize\",type:\"SHORT\",value:699},{name:\"ySuperscriptXOffset\",type:\"SHORT\",value:0},{name:\"ySuperscriptYOffset\",type:\"SHORT\",value:479},{name:\"yStrikeoutSize\",type:\"SHORT\",value:49},{name:\"yStrikeoutPosition\",type:\"SHORT\",value:258},{name:\"sFamilyClass\",type:\"SHORT\",value:0},{name:\"bFamilyType\",type:\"BYTE\",value:0},{name:\"bSerifStyle\",type:\"BYTE\",value:0},{name:\"bWeight\",type:\"BYTE\",value:0},{name:\"bProportion\",type:\"BYTE\",value:0},{name:\"bContrast\",type:\"BYTE\",value:0},{name:\"bStrokeVariation\",type:\"BYTE\",value:0},{name:\"bArmStyle\",type:\"BYTE\",value:0},{name:\"bLetterform\",type:\"BYTE\",value:0},{name:\"bMidline\",type:\"BYTE\",value:0},{name:\"bXHeight\",type:\"BYTE\",value:0},{name:\"ulUnicodeRange1\",type:\"ULONG\",value:0},{name:\"ulUnicodeRange2\",type:\"ULONG\",value:0},{name:\"ulUnicodeRange3\",type:\"ULONG\",value:0},{name:\"ulUnicodeRange4\",type:\"ULONG\",value:0},{name:\"achVendID\",type:\"CHARARRAY\",value:\"XXXX\"},{name:\"fsSelection\",type:\"USHORT\",value:0},{name:\"usFirstCharIndex\",type:\"USHORT\",value:0},{name:\"usLastCharIndex\",type:\"USHORT\",value:0},{name:\"sTypoAscender\",type:\"SHORT\",value:0},{name:\"sTypoDescender\",type:\"SHORT\",value:0},{name:\"sTypoLineGap\",type:\"SHORT\",value:0},{name:\"usWinAscent\",type:\"USHORT\",value:0},{name:\"usWinDescent\",type:\"USHORT\",value:0},{name:\"ulCodePageRange1\",type:\"ULONG\",value:0},{name:\"ulCodePageRange2\",type:\"ULONG\",value:0},{name:\"sxHeight\",type:\"SHORT\",value:0},{name:\"sCapHeight\",type:\"SHORT\",value:0},{name:\"usDefaultChar\",type:\"USHORT\",value:0},{name:\"usBreakChar\",type:\"USHORT\",value:0},{name:\"usMaxContext\",type:\"USHORT\",value:0}],options);}var os2={parse:parseOS2Table,make:makeOS2Table,unicodeRanges,getUnicodeRange};function parsePostTable(data,start){var post2={};var p=new parse.Parser(data,start);post2.version=p.parseVersion();post2.italicAngle=p.parseFixed();post2.underlinePosition=p.parseShort();post2.underlineThickness=p.parseShort();post2.isFixedPitch=p.parseULong();post2.minMemType42=p.parseULong();post2.maxMemType42=p.parseULong();post2.minMemType1=p.parseULong();post2.maxMemType1=p.parseULong();switch(post2.version){case 1:post2.names=standardNames.slice();break;case 2:post2.numberOfGlyphs=p.parseUShort();post2.glyphNameIndex=new Array(post2.numberOfGlyphs);for(var i2=0;i2=standardNames.length){var nameLength=p.parseChar();post2.names.push(p.parseString(nameLength));}}break;case 2.5:post2.numberOfGlyphs=p.parseUShort();post2.offset=new Array(post2.numberOfGlyphs);for(var i$2=0;i$2r2.value.tag){return 1;}else{return-1;}});sfnt2.fields=sfnt2.fields.concat(recordFields);sfnt2.fields=sfnt2.fields.concat(tableFields);return sfnt2;}function metricsForChar(font,chars,notFoundMetrics){for(var i2=0;i20){var glyph=font.glyphs.get(glyphIndex);return glyph.getMetrics();}}return notFoundMetrics;}function average(vs){var sum=0;for(var i2=0;i2unicode||firstCharIndex===void 0){if(unicode>0){firstCharIndex=unicode;}}if(lastCharIndex 123 are reserved for internal usage\");}if(glyph.name===\".notdef\"){continue;}var metrics=glyph.getMetrics();xMins.push(metrics.xMin);yMins.push(metrics.yMin);xMaxs.push(metrics.xMax);yMaxs.push(metrics.yMax);leftSideBearings.push(metrics.leftSideBearing);rightSideBearings.push(metrics.rightSideBearing);advanceWidths.push(glyph.advanceWidth);}var globals={xMin:Math.min.apply(null,xMins),yMin:Math.min.apply(null,yMins),xMax:Math.max.apply(null,xMaxs),yMax:Math.max.apply(null,yMaxs),advanceWidthMax:Math.max.apply(null,advanceWidths),advanceWidthAvg:average(advanceWidths),minLeftSideBearing:Math.min.apply(null,leftSideBearings),maxLeftSideBearing:Math.max.apply(null,leftSideBearings),minRightSideBearing:Math.min.apply(null,rightSideBearings)};globals.ascender=font.ascender;globals.descender=font.descender;var headTable=head.make({flags:3,// 00000011 (baseline for font at y=0; left sidebearing point at x=0)\nunitsPerEm:font.unitsPerEm,xMin:globals.xMin,yMin:globals.yMin,xMax:globals.xMax,yMax:globals.yMax,lowestRecPPEM:3,createdTimestamp:font.createdTimestamp});var hheaTable=hhea.make({ascender:globals.ascender,descender:globals.descender,advanceWidthMax:globals.advanceWidthMax,minLeftSideBearing:globals.minLeftSideBearing,minRightSideBearing:globals.minRightSideBearing,xMaxExtent:globals.maxLeftSideBearing+(globals.xMax-globals.xMin),numberOfHMetrics:font.glyphs.length});var maxpTable=maxp.make(font.glyphs.length);var os2Table=os2.make(Object.assign({xAvgCharWidth:Math.round(globals.advanceWidthAvg),usFirstCharIndex:firstCharIndex,usLastCharIndex:lastCharIndex,ulUnicodeRange1,ulUnicodeRange2,ulUnicodeRange3,ulUnicodeRange4,// See http://typophile.com/node/13081 for more info on vertical metrics.\n// We get metrics for typical characters (such as \"x\" for xHeight).\n// We provide some fallback characters if characters are unavailable: their\n// ordering was chosen experimentally.\nsTypoAscender:globals.ascender,sTypoDescender:globals.descender,sTypoLineGap:0,usWinAscent:globals.yMax,usWinDescent:Math.abs(globals.yMin),ulCodePageRange1:1,// FIXME: hard-code Latin 1 support for now\nsxHeight:metricsForChar(font,\"xyvw\",{yMax:Math.round(globals.ascender/2)}).yMax,sCapHeight:metricsForChar(font,\"HIKLEFJMNTZBDPRAGOQSUVWXY\",globals).yMax,usDefaultChar:font.hasChar(\" \")?32:0,// Use space as the default character, if available.\nusBreakChar:font.hasChar(\" \")?32:0// Use space as the break character, if available.\n},font.tables.os2));var hmtxTable=hmtx.make(font.glyphs);var cmapTable=cmap.make(font.glyphs);var englishFamilyName=font.getEnglishName(\"fontFamily\");var englishStyleName=font.getEnglishName(\"fontSubfamily\");var englishFullName=englishFamilyName+\" \"+englishStyleName;var postScriptName=font.getEnglishName(\"postScriptName\");if(!postScriptName){postScriptName=englishFamilyName.replace(/\\s/g,\"\")+\"-\"+englishStyleName;}var names={};for(var n in font.names){names[n]=font.names[n];}if(!names.uniqueID){names.uniqueID={en:font.getEnglishName(\"manufacturer\")+\":\"+englishFullName};}if(!names.postScriptName){names.postScriptName={en:postScriptName};}if(!names.preferredFamily){names.preferredFamily=font.names.fontFamily;}if(!names.preferredSubfamily){names.preferredSubfamily=font.names.fontSubfamily;}var languageTags=[];var nameTable=_name.make(names,languageTags);var ltagTable=languageTags.length>0?ltag.make(languageTags):void 0;var postTable=post.make();var cffTable=cff.make(font.glyphs,{version:font.getEnglishName(\"version\"),fullName:englishFullName,familyName:englishFamilyName,weightName:englishStyleName,postScriptName,unitsPerEm:font.unitsPerEm,fontBBox:[0,globals.yMin,globals.ascender,globals.advanceWidthMax]});var metaTable=font.metas&&Object.keys(font.metas).length>0?meta.make(font.metas):void 0;var tables=[headTable,hheaTable,maxpTable,os2Table,nameTable,cmapTable,postTable,cffTable,hmtxTable];if(ltagTable){tables.push(ltagTable);}if(font.tables.gsub){tables.push(gsub.make(font.tables.gsub));}if(metaTable){tables.push(metaTable);}var sfntTable=makeSfntTable(tables);var bytes=sfntTable.encode();var checkSum=computeCheckSum(bytes);var tableFields=sfntTable.fields;var checkSumAdjusted=false;for(var i$1=0;i$1>>1;var val=arr[imid].tag;if(val===tag){return imid;}else if(val>>1;var val=arr[imid];if(val===value){return imid;}else if(val>>1;range=ranges[imid];var start=range.start;if(start===value){return range;}else if(start0){range=ranges[imin-1];if(value>range.end){return 0;}return range;}}function Layout(font,tableName){this.font=font;this.tableName=tableName;}Layout.prototype={/**\n * Binary search an object by \"tag\" property\n * @instance\n * @function searchTag\n * @memberof opentype.Layout\n * @param {Array} arr\n * @param {string} tag\n * @return {number}\n */searchTag,/**\n * Binary search in a list of numbers\n * @instance\n * @function binSearch\n * @memberof opentype.Layout\n * @param {Array} arr\n * @param {number} value\n * @return {number}\n */binSearch,/**\n * Get or create the Layout table (GSUB, GPOS etc).\n * @param {boolean} create - Whether to create a new one.\n * @return {Object} The GSUB or GPOS table.\n */getTable:function(create){var layout=this.font.tables[this.tableName];if(!layout&&create){layout=this.font.tables[this.tableName]=this.createDefaultTable();}return layout;},/**\n * Returns all scripts in the substitution table.\n * @instance\n * @return {Array}\n */getScriptNames:function(){var layout=this.getTable();if(!layout){return[];}return layout.scripts.map(function(script){return script.tag;});},/**\n * Returns the best bet for a script name.\n * Returns 'DFLT' if it exists.\n * If not, returns 'latn' if it exists.\n * If neither exist, returns undefined.\n */getDefaultScriptName:function(){var layout=this.getTable();if(!layout){return;}var hasLatn=false;for(var i2=0;i2=0){return scripts[pos].script;}else if(create){var scr={tag:script,script:{defaultLangSys:{reserved:0,reqFeatureIndex:65535,featureIndexes:[]},langSysRecords:[]}};scripts.splice(-1-pos,0,scr);return scr.script;}}},/**\n * Returns a language system table\n * @instance\n * @param {string} [script='DFLT']\n * @param {string} [language='dlft']\n * @param {boolean} create - forces the creation of this langSysTable if it doesn't exist.\n * @return {Object}\n */getLangSysTable:function(script,language,create){var scriptTable=this.getScriptTable(script,create);if(scriptTable){if(!language||language===\"dflt\"||language===\"DFLT\"){return scriptTable.defaultLangSys;}var pos=searchTag(scriptTable.langSysRecords,language);if(pos>=0){return scriptTable.langSysRecords[pos].langSys;}else if(create){var langSysRecord={tag:language,langSys:{reserved:0,reqFeatureIndex:65535,featureIndexes:[]}};scriptTable.langSysRecords.splice(-1-pos,0,langSysRecord);return langSysRecord.langSys;}}},/**\n * Get a specific feature table.\n * @instance\n * @param {string} [script='DFLT']\n * @param {string} [language='dlft']\n * @param {string} feature - One of the codes listed at https://www.microsoft.com/typography/OTSPEC/featurelist.htm\n * @param {boolean} create - forces the creation of the feature table if it doesn't exist.\n * @return {Object}\n */getFeatureTable:function(script,language,feature,create){var langSysTable2=this.getLangSysTable(script,language,create);if(langSysTable2){var featureRecord;var featIndexes=langSysTable2.featureIndexes;var allFeatures=this.font.tables[this.tableName].features;for(var i2=0;i2=allFeatures[index-1].tag,\"Features must be added in alphabetical order.\");featureRecord={tag:feature,feature:{params:0,lookupListIndexes:[]}};allFeatures.push(featureRecord);featIndexes.push(index);return featureRecord.feature;}}},/**\n * Get the lookup tables of a given type for a script/language/feature.\n * @instance\n * @param {string} [script='DFLT']\n * @param {string} [language='dlft']\n * @param {string} feature - 4-letter feature code\n * @param {number} lookupType - 1 to 9\n * @param {boolean} create - forces the creation of the lookup table if it doesn't exist, with no subtables.\n * @return {Object[]}\n */getLookupTables:function(script,language,feature,lookupType,create){var featureTable=this.getFeatureTable(script,language,feature,create);var tables=[];if(featureTable){var lookupTable;var lookupListIndexes=featureTable.lookupListIndexes;var allLookups=this.font.tables[this.tableName].lookups;for(var i2=0;i2=0?index:-1;case 2:var range=searchRange(coverageTable.ranges,glyphIndex);return range?range.index+glyphIndex-range.start:-1;}},/**\n * Returns the list of glyph indexes of a coverage table.\n * Format 1: the list is stored raw\n * Format 2: compact list as range records.\n * @instance\n * @param {Object} coverageTable\n * @return {Array}\n */expandCoverage:function(coverageTable){if(coverageTable.format===1){return coverageTable.glyphs;}else{var glyphs=[];var ranges=coverageTable.ranges;for(var i2=0;i21,'Multiple: \"by\" must be an array of two or more ids');var lookupTable=this.getLookupTables(script,language,feature,2,true)[0];var subtable=getSubstFormat(lookupTable,1,{// lookup type 2 subtable, format 1, coverage format 1\nsubstFormat:1,coverage:{format:1,glyphs:[]},sequences:[]});check.assert(subtable.coverage.format===1,\"Multiple: unable to modify coverage table format \"+subtable.coverage.format);var coverageGlyph=substitution.sub;var pos=this.binSearch(subtable.coverage.glyphs,coverageGlyph);if(pos<0){pos=-1-pos;subtable.coverage.glyphs.splice(pos,0,coverageGlyph);subtable.sequences.splice(pos,0,0);}subtable.sequences[pos]=substitution.by;};Substitution.prototype.addAlternate=function(feature,substitution,script,language){var lookupTable=this.getLookupTables(script,language,feature,3,true)[0];var subtable=getSubstFormat(lookupTable,1,{// lookup type 3 subtable, format 1, coverage format 1\nsubstFormat:1,coverage:{format:1,glyphs:[]},alternateSets:[]});check.assert(subtable.coverage.format===1,\"Alternate: unable to modify coverage table format \"+subtable.coverage.format);var coverageGlyph=substitution.sub;var pos=this.binSearch(subtable.coverage.glyphs,coverageGlyph);if(pos<0){pos=-1-pos;subtable.coverage.glyphs.splice(pos,0,coverageGlyph);subtable.alternateSets.splice(pos,0,0);}subtable.alternateSets[pos]=substitution.by;};Substitution.prototype.addLigature=function(feature,ligature,script,language){var lookupTable=this.getLookupTables(script,language,feature,4,true)[0];var subtable=lookupTable.subtables[0];if(!subtable){subtable={// lookup type 4 subtable, format 1, coverage format 1\nsubstFormat:1,coverage:{format:1,glyphs:[]},ligatureSets:[]};lookupTable.subtables[0]=subtable;}check.assert(subtable.coverage.format===1,\"Ligature: unable to modify coverage table format \"+subtable.coverage.format);var coverageGlyph=ligature.sub[0];var ligComponents=ligature.sub.slice(1);var ligatureTable={ligGlyph:ligature.by,components:ligComponents};var pos=this.binSearch(subtable.coverage.glyphs,coverageGlyph);if(pos>=0){var ligatureSet=subtable.ligatureSets[pos];for(var i2=0;i20){v=p.parseByte();if((flag&sameBitMask)===0){v=-v;}v=previousValue+v;}else{if((flag&sameBitMask)>0){v=previousValue;}else{v=previousValue+p.parseShort();}}return v;}function parseGlyph(glyph,data,start){var p=new parse.Parser(data,start);glyph.numberOfContours=p.parseShort();glyph._xMin=p.parseShort();glyph._yMin=p.parseShort();glyph._xMax=p.parseShort();glyph._yMax=p.parseShort();var flags;var flag;if(glyph.numberOfContours>0){var endPointIndices=glyph.endPointIndices=[];for(var i2=0;i20){var repeatCount=p.parseByte();for(var j=0;j0){var points=[];var point;if(numberOfCoordinates>0){for(var i$3=0;i$3=0;points.push(point);}var px=0;for(var i$4=0;i$40){if((flags&2)>0){component.dx=p.parseShort();component.dy=p.parseShort();}else{component.matchedPoints=[p.parseUShort(),p.parseUShort()];}}else{if((flags&2)>0){component.dx=p.parseChar();component.dy=p.parseChar();}else{component.matchedPoints=[p.parseByte(),p.parseByte()];}}if((flags&8)>0){component.xScale=component.yScale=p.parseF2Dot14();}else if((flags&64)>0){component.xScale=p.parseF2Dot14();component.yScale=p.parseF2Dot14();}else if((flags&128)>0){component.xScale=p.parseF2Dot14();component.scale01=p.parseF2Dot14();component.scale10=p.parseF2Dot14();component.yScale=p.parseF2Dot14();}glyph.components.push(component);moreComponents=!!(flags&32);}if(flags&256){glyph.instructionLength=p.parseUShort();glyph.instructions=[];for(var i$6=0;i$6glyph.points.length-1||component.matchedPoints[1]>componentGlyph.points.length-1){throw Error(\"Matched points out of range in \"+glyph.name);}var firstPt=glyph.points[component.matchedPoints[0]];var secondPt=componentGlyph.points[component.matchedPoints[1]];var transform={xScale:component.xScale,scale01:component.scale01,scale10:component.scale10,yScale:component.yScale,dx:0,dy:0};secondPt=transformPoints([secondPt],transform)[0];transform.dx=firstPt.x-secondPt.x;transform.dy=firstPt.y-secondPt.y;transformedPoints=transformPoints(componentGlyph.points,transform);}glyph.points=glyph.points.concat(transformedPoints);}}}return getPath(glyph.points);}function parseGlyfTableAll(data,start,loca2,font){var glyphs=new glyphset.GlyphSet(font);for(var i2=0;i22){return;}var font=this.font;var prepState=this._prepState;if(!prepState||prepState.ppem!==ppem){var fpgmState=this._fpgmState;if(!fpgmState){State.prototype=defaultState;fpgmState=this._fpgmState=new State(\"fpgm\",font.tables.fpgm);fpgmState.funcs=[];fpgmState.font=font;if(exports.DEBUG){console.log(\"---EXEC FPGM---\");fpgmState.step=-1;}try{exec(fpgmState);}catch(e){console.log(\"Hinting error in FPGM:\"+e);this._errorState=3;return;}}State.prototype=fpgmState;prepState=this._prepState=new State(\"prep\",font.tables.prep);prepState.ppem=ppem;var oCvt=font.tables.cvt;if(oCvt){var cvt=prepState.cvt=new Array(oCvt.length);var scale=ppem/font.unitsPerEm;for(var c=0;c1){return;}try{return execGlyph(glyph,prepState);}catch(e){if(this._errorState<1){console.log(\"Hinting error:\"+e);console.log(\"Note: further hinting errors are silenced\");}this._errorState=1;return void 0;}};execGlyph=function(glyph,prepState){var xScale=prepState.ppem/prepState.font.unitsPerEm;var yScale=xScale;var components=glyph.components;var contours;var gZone;var state;State.prototype=prepState;if(!components){state=new State(\"glyf\",glyph.instructions);if(exports.DEBUG){console.log(\"---EXEC GLYPH---\");state.step=-1;}execComponent(glyph,state,xScale,yScale);gZone=state.gZone;}else{var font=prepState.font;gZone=[];contours=[];for(var i2=0;i2=176&&ins<=183){ip+=ins-176+1;}else if(ins>=184&&ins<=191){ip+=(ins-184+1)*2;}else if(handleElse&&nesting===1&&ins===27){break;}}while(nesting>0);state.ip=ip;}function SVTCA(v,state){if(exports.DEBUG){console.log(state.step,\"SVTCA[\"+v.axis+\"]\");}state.fv=state.pv=state.dpv=v;}function SPVTCA(v,state){if(exports.DEBUG){console.log(state.step,\"SPVTCA[\"+v.axis+\"]\");}state.pv=state.dpv=v;}function SFVTCA(v,state){if(exports.DEBUG){console.log(state.step,\"SFVTCA[\"+v.axis+\"]\");}state.fv=v;}function SPVTL(a2,state){var stack=state.stack;var p2i=stack.pop();var p1i=stack.pop();var p2=state.z2[p2i];var p1=state.z1[p1i];if(exports.DEBUG){console.log(\"SPVTL[\"+a2+\"]\",p2i,p1i);}var dx;var dy;if(!a2){dx=p1.x-p2.x;dy=p1.y-p2.y;}else{dx=p2.y-p1.y;dy=p1.x-p2.x;}state.pv=state.dpv=getUnitVector(dx,dy);}function SFVTL(a2,state){var stack=state.stack;var p2i=stack.pop();var p1i=stack.pop();var p2=state.z2[p2i];var p1=state.z1[p1i];if(exports.DEBUG){console.log(\"SFVTL[\"+a2+\"]\",p2i,p1i);}var dx;var dy;if(!a2){dx=p1.x-p2.x;dy=p1.y-p2.y;}else{dx=p2.y-p1.y;dy=p1.x-p2.x;}state.fv=getUnitVector(dx,dy);}function SPVFS(state){var stack=state.stack;var y=stack.pop();var x=stack.pop();if(exports.DEBUG){console.log(state.step,\"SPVFS[]\",y,x);}state.pv=state.dpv=getUnitVector(x,y);}function SFVFS(state){var stack=state.stack;var y=stack.pop();var x=stack.pop();if(exports.DEBUG){console.log(state.step,\"SPVFS[]\",y,x);}state.fv=getUnitVector(x,y);}function GPV(state){var stack=state.stack;var pv=state.pv;if(exports.DEBUG){console.log(state.step,\"GPV[]\");}stack.push(pv.x*16384);stack.push(pv.y*16384);}function GFV(state){var stack=state.stack;var fv=state.fv;if(exports.DEBUG){console.log(state.step,\"GFV[]\");}stack.push(fv.x*16384);stack.push(fv.y*16384);}function SFVTPV(state){state.fv=state.pv;if(exports.DEBUG){console.log(state.step,\"SFVTPV[]\");}}function ISECT(state){var stack=state.stack;var pa0i=stack.pop();var pa1i=stack.pop();var pb0i=stack.pop();var pb1i=stack.pop();var pi=stack.pop();var z0=state.z0;var z1=state.z1;var pa0=z0[pa0i];var pa1=z0[pa1i];var pb0=z1[pb0i];var pb1=z1[pb1i];var p=state.z2[pi];if(exports.DEBUG){console.log(\"ISECT[], \",pa0i,pa1i,pb0i,pb1i,pi);}var x1=pa0.x;var y1=pa0.y;var x2=pa1.x;var y2=pa1.y;var x3=pb0.x;var y3=pb0.y;var x4=pb1.x;var y4=pb1.y;var div=(x1-x2)*(y3-y4)-(y1-y2)*(x3-x4);var f1=x1*y2-y1*x2;var f2=x3*y4-y3*x4;p.x=(f1*(x3-x4)-f2*(x1-x2))/div;p.y=(f1*(y3-y4)-f2*(y1-y2))/div;}function SRP0(state){state.rp0=state.stack.pop();if(exports.DEBUG){console.log(state.step,\"SRP0[]\",state.rp0);}}function SRP1(state){state.rp1=state.stack.pop();if(exports.DEBUG){console.log(state.step,\"SRP1[]\",state.rp1);}}function SRP2(state){state.rp2=state.stack.pop();if(exports.DEBUG){console.log(state.step,\"SRP2[]\",state.rp2);}}function SZP0(state){var n=state.stack.pop();if(exports.DEBUG){console.log(state.step,\"SZP0[]\",n);}state.zp0=n;switch(n){case 0:if(!state.tZone){initTZone(state);}state.z0=state.tZone;break;case 1:state.z0=state.gZone;break;default:throw new Error(\"Invalid zone pointer\");}}function SZP1(state){var n=state.stack.pop();if(exports.DEBUG){console.log(state.step,\"SZP1[]\",n);}state.zp1=n;switch(n){case 0:if(!state.tZone){initTZone(state);}state.z1=state.tZone;break;case 1:state.z1=state.gZone;break;default:throw new Error(\"Invalid zone pointer\");}}function SZP2(state){var n=state.stack.pop();if(exports.DEBUG){console.log(state.step,\"SZP2[]\",n);}state.zp2=n;switch(n){case 0:if(!state.tZone){initTZone(state);}state.z2=state.tZone;break;case 1:state.z2=state.gZone;break;default:throw new Error(\"Invalid zone pointer\");}}function SZPS(state){var n=state.stack.pop();if(exports.DEBUG){console.log(state.step,\"SZPS[]\",n);}state.zp0=state.zp1=state.zp2=n;switch(n){case 0:if(!state.tZone){initTZone(state);}state.z0=state.z1=state.z2=state.tZone;break;case 1:state.z0=state.z1=state.z2=state.gZone;break;default:throw new Error(\"Invalid zone pointer\");}}function SLOOP(state){state.loop=state.stack.pop();if(exports.DEBUG){console.log(state.step,\"SLOOP[]\",state.loop);}}function RTG(state){if(exports.DEBUG){console.log(state.step,\"RTG[]\");}state.round=roundToGrid;}function RTHG(state){if(exports.DEBUG){console.log(state.step,\"RTHG[]\");}state.round=roundToHalfGrid;}function SMD(state){var d=state.stack.pop();if(exports.DEBUG){console.log(state.step,\"SMD[]\",d);}state.minDis=d/64;}function ELSE(state){if(exports.DEBUG){console.log(state.step,\"ELSE[]\");}skip(state,false);}function JMPR(state){var o=state.stack.pop();if(exports.DEBUG){console.log(state.step,\"JMPR[]\",o);}state.ip+=o-1;}function SCVTCI(state){var n=state.stack.pop();if(exports.DEBUG){console.log(state.step,\"SCVTCI[]\",n);}state.cvCutIn=n/64;}function DUP(state){var stack=state.stack;if(exports.DEBUG){console.log(state.step,\"DUP[]\");}stack.push(stack[stack.length-1]);}function POP(state){if(exports.DEBUG){console.log(state.step,\"POP[]\");}state.stack.pop();}function CLEAR(state){if(exports.DEBUG){console.log(state.step,\"CLEAR[]\");}state.stack.length=0;}function SWAP(state){var stack=state.stack;var a2=stack.pop();var b2=stack.pop();if(exports.DEBUG){console.log(state.step,\"SWAP[]\");}stack.push(a2);stack.push(b2);}function DEPTH(state){var stack=state.stack;if(exports.DEBUG){console.log(state.step,\"DEPTH[]\");}stack.push(stack.length);}function LOOPCALL(state){var stack=state.stack;var fn=stack.pop();var c=stack.pop();if(exports.DEBUG){console.log(state.step,\"LOOPCALL[]\",fn,c);}var cip=state.ip;var cprog=state.prog;state.prog=state.funcs[fn];for(var i2=0;i21?\"loop \"+(state.loop-loop)+\": \":\"\")+\"SHP[\"+(a2?\"rp1\":\"rp2\")+\"]\",pi);}}state.loop=1;}function SHC(a2,state){var stack=state.stack;var rpi=a2?state.rp1:state.rp2;var rp=(a2?state.z0:state.z1)[rpi];var fv=state.fv;var pv=state.pv;var ci=stack.pop();var sp=state.z2[state.contours[ci]];var p=sp;if(exports.DEBUG){console.log(state.step,\"SHC[\"+a2+\"]\",ci);}var d=pv.distance(rp,rp,false,true);do{if(p!==rp){fv.setRelative(p,p,d,pv);}p=p.nextPointOnContour;}while(p!==sp);}function SHZ(a2,state){var stack=state.stack;var rpi=a2?state.rp1:state.rp2;var rp=(a2?state.z0:state.z1)[rpi];var fv=state.fv;var pv=state.pv;var e=stack.pop();if(exports.DEBUG){console.log(state.step,\"SHZ[\"+a2+\"]\",e);}var z;switch(e){case 0:z=state.tZone;break;case 1:z=state.gZone;break;default:throw new Error(\"Invalid zone\");}var p;var d=pv.distance(rp,rp,false,true);var pLen=z.length-2;for(var i2=0;i21?\"loop \"+(state.loop-loop)+\": \":\"\")+\"SHPIX[]\",pi,d);}fv.setRelative(p,p,d);fv.touch(p);}state.loop=1;}function IP(state){var stack=state.stack;var rp1i=state.rp1;var rp2i=state.rp2;var loop=state.loop;var rp1=state.z0[rp1i];var rp2=state.z1[rp2i];var fv=state.fv;var pv=state.dpv;var z2=state.z2;while(loop--){var pi=stack.pop();var p=z2[pi];if(exports.DEBUG){console.log(state.step,(state.loop>1?\"loop \"+(state.loop-loop)+\": \":\"\")+\"IP[]\",pi,rp1i,\"<->\",rp2i);}fv.interpolate(p,rp1,rp2,pv);fv.touch(p);}state.loop=1;}function MSIRP(a2,state){var stack=state.stack;var d=stack.pop()/64;var pi=stack.pop();var p=state.z1[pi];var rp0=state.z0[state.rp0];var fv=state.fv;var pv=state.pv;fv.setRelative(p,rp0,d,pv);fv.touch(p);if(exports.DEBUG){console.log(state.step,\"MSIRP[\"+a2+\"]\",d,pi);}state.rp1=state.rp0;state.rp2=pi;if(a2){state.rp0=pi;}}function ALIGNRP(state){var stack=state.stack;var rp0i=state.rp0;var rp0=state.z0[rp0i];var loop=state.loop;var fv=state.fv;var pv=state.pv;var z1=state.z1;while(loop--){var pi=stack.pop();var p=z1[pi];if(exports.DEBUG){console.log(state.step,(state.loop>1?\"loop \"+(state.loop-loop)+\": \":\"\")+\"ALIGNRP[]\",pi);}fv.setRelative(p,rp0,0,pv);fv.touch(p);}state.loop=1;}function RTDG(state){if(exports.DEBUG){console.log(state.step,\"RTDG[]\");}state.round=roundToDoubleGrid;}function MIAP(round,state){var stack=state.stack;var n=stack.pop();var pi=stack.pop();var p=state.z0[pi];var fv=state.fv;var pv=state.pv;var cv=state.cvt[n];if(exports.DEBUG){console.log(state.step,\"MIAP[\"+round+\"]\",n,\"(\",cv,\")\",pi);}var d=pv.distance(p,HPZero);if(round){if(Math.abs(d-cv)\",d);}state.stack.push(Math.round(d*64));}function MPPEM(state){if(exports.DEBUG){console.log(state.step,\"MPPEM[]\");}state.stack.push(state.ppem);}function FLIPON(state){if(exports.DEBUG){console.log(state.step,\"FLIPON[]\");}state.autoFlip=true;}function LT(state){var stack=state.stack;var e2=stack.pop();var e1=stack.pop();if(exports.DEBUG){console.log(state.step,\"LT[]\",e2,e1);}stack.push(e1e2?1:0);}function GTEQ(state){var stack=state.stack;var e2=stack.pop();var e1=stack.pop();if(exports.DEBUG){console.log(state.step,\"GTEQ[]\",e2,e1);}stack.push(e1>=e2?1:0);}function EQ(state){var stack=state.stack;var e2=stack.pop();var e1=stack.pop();if(exports.DEBUG){console.log(state.step,\"EQ[]\",e2,e1);}stack.push(e2===e1?1:0);}function NEQ(state){var stack=state.stack;var e2=stack.pop();var e1=stack.pop();if(exports.DEBUG){console.log(state.step,\"NEQ[]\",e2,e1);}stack.push(e2!==e1?1:0);}function ODD(state){var stack=state.stack;var n=stack.pop();if(exports.DEBUG){console.log(state.step,\"ODD[]\",n);}stack.push(Math.trunc(n)%2?1:0);}function EVEN(state){var stack=state.stack;var n=stack.pop();if(exports.DEBUG){console.log(state.step,\"EVEN[]\",n);}stack.push(Math.trunc(n)%2?0:1);}function IF(state){var test=state.stack.pop();if(exports.DEBUG){console.log(state.step,\"IF[]\",test);}if(!test){skip(state,true);if(exports.DEBUG){console.log(state.step,\"EIF[]\");}}}function EIF(state){if(exports.DEBUG){console.log(state.step,\"EIF[]\");}}function AND(state){var stack=state.stack;var e2=stack.pop();var e1=stack.pop();if(exports.DEBUG){console.log(state.step,\"AND[]\",e2,e1);}stack.push(e2&&e1?1:0);}function OR(state){var stack=state.stack;var e2=stack.pop();var e1=stack.pop();if(exports.DEBUG){console.log(state.step,\"OR[]\",e2,e1);}stack.push(e2||e1?1:0);}function NOT(state){var stack=state.stack;var e=stack.pop();if(exports.DEBUG){console.log(state.step,\"NOT[]\",e);}stack.push(e?0:1);}function DELTAP123(b2,state){var stack=state.stack;var n=stack.pop();var fv=state.fv;var pv=state.pv;var ppem=state.ppem;var base=state.deltaBase+(b2-1)*16;var ds=state.deltaShift;var z0=state.z0;if(exports.DEBUG){console.log(state.step,\"DELTAP[\"+b2+\"]\",n,stack);}for(var i2=0;i2>4);if(appem!==ppem){continue;}var mag=(arg&15)-8;if(mag>=0){mag++;}if(exports.DEBUG){console.log(state.step,\"DELTAPFIX\",pi,\"by\",mag*ds);}var p=z0[pi];fv.setRelative(p,p,mag*ds,pv);}}function SDB(state){var stack=state.stack;var n=stack.pop();if(exports.DEBUG){console.log(state.step,\"SDB[]\",n);}state.deltaBase=n;}function SDS(state){var stack=state.stack;var n=stack.pop();if(exports.DEBUG){console.log(state.step,\"SDS[]\",n);}state.deltaShift=Math.pow(0.5,n);}function ADD(state){var stack=state.stack;var n2=stack.pop();var n1=stack.pop();if(exports.DEBUG){console.log(state.step,\"ADD[]\",n2,n1);}stack.push(n1+n2);}function SUB(state){var stack=state.stack;var n2=stack.pop();var n1=stack.pop();if(exports.DEBUG){console.log(state.step,\"SUB[]\",n2,n1);}stack.push(n1-n2);}function DIV(state){var stack=state.stack;var n2=stack.pop();var n1=stack.pop();if(exports.DEBUG){console.log(state.step,\"DIV[]\",n2,n1);}stack.push(n1*64/n2);}function MUL(state){var stack=state.stack;var n2=stack.pop();var n1=stack.pop();if(exports.DEBUG){console.log(state.step,\"MUL[]\",n2,n1);}stack.push(n1*n2/64);}function ABS(state){var stack=state.stack;var n=stack.pop();if(exports.DEBUG){console.log(state.step,\"ABS[]\",n);}stack.push(Math.abs(n));}function NEG(state){var stack=state.stack;var n=stack.pop();if(exports.DEBUG){console.log(state.step,\"NEG[]\",n);}stack.push(-n);}function FLOOR(state){var stack=state.stack;var n=stack.pop();if(exports.DEBUG){console.log(state.step,\"FLOOR[]\",n);}stack.push(Math.floor(n/64)*64);}function CEILING(state){var stack=state.stack;var n=stack.pop();if(exports.DEBUG){console.log(state.step,\"CEILING[]\",n);}stack.push(Math.ceil(n/64)*64);}function ROUND(dt,state){var stack=state.stack;var n=stack.pop();if(exports.DEBUG){console.log(state.step,\"ROUND[]\");}stack.push(state.round(n/64)*64);}function WCVTF(state){var stack=state.stack;var v=stack.pop();var l=stack.pop();if(exports.DEBUG){console.log(state.step,\"WCVTF[]\",v,l);}state.cvt[l]=v*state.ppem/state.font.unitsPerEm;}function DELTAC123(b2,state){var stack=state.stack;var n=stack.pop();var ppem=state.ppem;var base=state.deltaBase+(b2-1)*16;var ds=state.deltaShift;if(exports.DEBUG){console.log(state.step,\"DELTAC[\"+b2+\"]\",n,stack);}for(var i2=0;i2>4);if(appem!==ppem){continue;}var mag=(arg&15)-8;if(mag>=0){mag++;}var delta=mag*ds;if(exports.DEBUG){console.log(state.step,\"DELTACFIX\",c,\"by\",delta);}state.cvt[c]+=delta;}}function SROUND(state){var n=state.stack.pop();if(exports.DEBUG){console.log(state.step,\"SROUND[]\",n);}state.round=roundSuper;var period;switch(n&192){case 0:period=0.5;break;case 64:period=1;break;case 128:period=2;break;default:throw new Error(\"invalid SROUND value\");}state.srPeriod=period;switch(n&48){case 0:state.srPhase=0;break;case 16:state.srPhase=0.25*period;break;case 32:state.srPhase=0.5*period;break;case 48:state.srPhase=0.75*period;break;default:throw new Error(\"invalid SROUND value\");}n&=15;if(n===0){state.srThreshold=0;}else{state.srThreshold=(n/8-0.5)*period;}}function S45ROUND(state){var n=state.stack.pop();if(exports.DEBUG){console.log(state.step,\"S45ROUND[]\",n);}state.round=roundSuper;var period;switch(n&192){case 0:period=Math.sqrt(2)/2;break;case 64:period=Math.sqrt(2);break;case 128:period=2*Math.sqrt(2);break;default:throw new Error(\"invalid S45ROUND value\");}state.srPeriod=period;switch(n&48){case 0:state.srPhase=0;break;case 16:state.srPhase=0.25*period;break;case 32:state.srPhase=0.5*period;break;case 48:state.srPhase=0.75*period;break;default:throw new Error(\"invalid S45ROUND value\");}n&=15;if(n===0){state.srThreshold=0;}else{state.srThreshold=(n/8-0.5)*period;}}function ROFF(state){if(exports.DEBUG){console.log(state.step,\"ROFF[]\");}state.round=roundOff;}function RUTG(state){if(exports.DEBUG){console.log(state.step,\"RUTG[]\");}state.round=roundUpToGrid;}function RDTG(state){if(exports.DEBUG){console.log(state.step,\"RDTG[]\");}state.round=roundDownToGrid;}function SCANCTRL(state){var n=state.stack.pop();if(exports.DEBUG){console.log(state.step,\"SCANCTRL[]\",n);}}function SDPVTL(a2,state){var stack=state.stack;var p2i=stack.pop();var p1i=stack.pop();var p2=state.z2[p2i];var p1=state.z1[p1i];if(exports.DEBUG){console.log(state.step,\"SDPVTL[\"+a2+\"]\",p2i,p1i);}var dx;var dy;if(!a2){dx=p1.x-p2.x;dy=p1.y-p2.y;}else{dx=p2.y-p1.y;dy=p1.x-p2.x;}state.dpv=getUnitVector(dx,dy);}function GETINFO(state){var stack=state.stack;var sel=stack.pop();var r=0;if(exports.DEBUG){console.log(state.step,\"GETINFO[]\",sel);}if(sel&1){r=35;}if(sel&32){r|=4096;}stack.push(r);}function ROLL(state){var stack=state.stack;var a2=stack.pop();var b2=stack.pop();var c=stack.pop();if(exports.DEBUG){console.log(state.step,\"ROLL[]\");}stack.push(b2);stack.push(a2);stack.push(c);}function MAX(state){var stack=state.stack;var e2=stack.pop();var e1=stack.pop();if(exports.DEBUG){console.log(state.step,\"MAX[]\",e2,e1);}stack.push(Math.max(e1,e2));}function MIN(state){var stack=state.stack;var e2=stack.pop();var e1=stack.pop();if(exports.DEBUG){console.log(state.step,\"MIN[]\",e2,e1);}stack.push(Math.min(e1,e2));}function SCANTYPE(state){var n=state.stack.pop();if(exports.DEBUG){console.log(state.step,\"SCANTYPE[]\",n);}}function INSTCTRL(state){var s=state.stack.pop();var v=state.stack.pop();if(exports.DEBUG){console.log(state.step,\"INSTCTRL[]\",s,v);}switch(s){case 1:state.inhibitGridFit=!!v;return;case 2:state.ignoreCvt=!!v;return;default:throw new Error(\"invalid INSTCTRL[] selector\");}}function PUSHB(n,state){var stack=state.stack;var prog=state.prog;var ip=state.ip;if(exports.DEBUG){console.log(state.step,\"PUSHB[\"+n+\"]\");}for(var i2=0;i2=0?1:-1;d=Math.abs(d);if(indirect){cv=state.cvt[cvte];if(ro&&Math.abs(d-cv)\":\"_\")+(ro?\"R\":\"_\")+(dt===0?\"Gr\":dt===1?\"Bl\":dt===2?\"Wh\":\"\")+\"]\",indirect?cvte+\"(\"+state.cvt[cvte]+\",\"+cv+\")\":\"\",pi,\"(d =\",od,\"->\",sign*d,\")\");}state.rp1=state.rp0;state.rp2=pi;if(setRp0){state.rp0=pi;}}instructionTable=[/* 0x00 */SVTCA.bind(void 0,yUnitVector),/* 0x01 */SVTCA.bind(void 0,xUnitVector),/* 0x02 */SPVTCA.bind(void 0,yUnitVector),/* 0x03 */SPVTCA.bind(void 0,xUnitVector),/* 0x04 */SFVTCA.bind(void 0,yUnitVector),/* 0x05 */SFVTCA.bind(void 0,xUnitVector),/* 0x06 */SPVTL.bind(void 0,0),/* 0x07 */SPVTL.bind(void 0,1),/* 0x08 */SFVTL.bind(void 0,0),/* 0x09 */SFVTL.bind(void 0,1),/* 0x0A */SPVFS,/* 0x0B */SFVFS,/* 0x0C */GPV,/* 0x0D */GFV,/* 0x0E */SFVTPV,/* 0x0F */ISECT,/* 0x10 */SRP0,/* 0x11 */SRP1,/* 0x12 */SRP2,/* 0x13 */SZP0,/* 0x14 */SZP1,/* 0x15 */SZP2,/* 0x16 */SZPS,/* 0x17 */SLOOP,/* 0x18 */RTG,/* 0x19 */RTHG,/* 0x1A */SMD,/* 0x1B */ELSE,/* 0x1C */JMPR,/* 0x1D */SCVTCI,/* 0x1E */void 0,// TODO SSWCI\n/* 0x1F */void 0,// TODO SSW\n/* 0x20 */DUP,/* 0x21 */POP,/* 0x22 */CLEAR,/* 0x23 */SWAP,/* 0x24 */DEPTH,/* 0x25 */CINDEX,/* 0x26 */MINDEX,/* 0x27 */void 0,// TODO ALIGNPTS\n/* 0x28 */void 0,/* 0x29 */void 0,// TODO UTP\n/* 0x2A */LOOPCALL,/* 0x2B */CALL,/* 0x2C */FDEF,/* 0x2D */void 0,// ENDF (eaten by FDEF)\n/* 0x2E */MDAP.bind(void 0,0),/* 0x2F */MDAP.bind(void 0,1),/* 0x30 */IUP.bind(void 0,yUnitVector),/* 0x31 */IUP.bind(void 0,xUnitVector),/* 0x32 */SHP.bind(void 0,0),/* 0x33 */SHP.bind(void 0,1),/* 0x34 */SHC.bind(void 0,0),/* 0x35 */SHC.bind(void 0,1),/* 0x36 */SHZ.bind(void 0,0),/* 0x37 */SHZ.bind(void 0,1),/* 0x38 */SHPIX,/* 0x39 */IP,/* 0x3A */MSIRP.bind(void 0,0),/* 0x3B */MSIRP.bind(void 0,1),/* 0x3C */ALIGNRP,/* 0x3D */RTDG,/* 0x3E */MIAP.bind(void 0,0),/* 0x3F */MIAP.bind(void 0,1),/* 0x40 */NPUSHB,/* 0x41 */NPUSHW,/* 0x42 */WS,/* 0x43 */RS,/* 0x44 */WCVTP,/* 0x45 */RCVT,/* 0x46 */GC.bind(void 0,0),/* 0x47 */GC.bind(void 0,1),/* 0x48 */void 0,// TODO SCFS\n/* 0x49 */MD.bind(void 0,0),/* 0x4A */MD.bind(void 0,1),/* 0x4B */MPPEM,/* 0x4C */void 0,// TODO MPS\n/* 0x4D */FLIPON,/* 0x4E */void 0,// TODO FLIPOFF\n/* 0x4F */void 0,// TODO DEBUG\n/* 0x50 */LT,/* 0x51 */LTEQ,/* 0x52 */GT,/* 0x53 */GTEQ,/* 0x54 */EQ,/* 0x55 */NEQ,/* 0x56 */ODD,/* 0x57 */EVEN,/* 0x58 */IF,/* 0x59 */EIF,/* 0x5A */AND,/* 0x5B */OR,/* 0x5C */NOT,/* 0x5D */DELTAP123.bind(void 0,1),/* 0x5E */SDB,/* 0x5F */SDS,/* 0x60 */ADD,/* 0x61 */SUB,/* 0x62 */DIV,/* 0x63 */MUL,/* 0x64 */ABS,/* 0x65 */NEG,/* 0x66 */FLOOR,/* 0x67 */CEILING,/* 0x68 */ROUND.bind(void 0,0),/* 0x69 */ROUND.bind(void 0,1),/* 0x6A */ROUND.bind(void 0,2),/* 0x6B */ROUND.bind(void 0,3),/* 0x6C */void 0,// TODO NROUND[ab]\n/* 0x6D */void 0,// TODO NROUND[ab]\n/* 0x6E */void 0,// TODO NROUND[ab]\n/* 0x6F */void 0,// TODO NROUND[ab]\n/* 0x70 */WCVTF,/* 0x71 */DELTAP123.bind(void 0,2),/* 0x72 */DELTAP123.bind(void 0,3),/* 0x73 */DELTAC123.bind(void 0,1),/* 0x74 */DELTAC123.bind(void 0,2),/* 0x75 */DELTAC123.bind(void 0,3),/* 0x76 */SROUND,/* 0x77 */S45ROUND,/* 0x78 */void 0,// TODO JROT[]\n/* 0x79 */void 0,// TODO JROF[]\n/* 0x7A */ROFF,/* 0x7B */void 0,/* 0x7C */RUTG,/* 0x7D */RDTG,/* 0x7E */POP,// actually SANGW, supposed to do only a pop though\n/* 0x7F */POP,// actually AA, supposed to do only a pop though\n/* 0x80 */void 0,// TODO FLIPPT\n/* 0x81 */void 0,// TODO FLIPRGON\n/* 0x82 */void 0,// TODO FLIPRGOFF\n/* 0x83 */void 0,/* 0x84 */void 0,/* 0x85 */SCANCTRL,/* 0x86 */SDPVTL.bind(void 0,0),/* 0x87 */SDPVTL.bind(void 0,1),/* 0x88 */GETINFO,/* 0x89 */void 0,// TODO IDEF\n/* 0x8A */ROLL,/* 0x8B */MAX,/* 0x8C */MIN,/* 0x8D */SCANTYPE,/* 0x8E */INSTCTRL,/* 0x8F */void 0,/* 0x90 */void 0,/* 0x91 */void 0,/* 0x92 */void 0,/* 0x93 */void 0,/* 0x94 */void 0,/* 0x95 */void 0,/* 0x96 */void 0,/* 0x97 */void 0,/* 0x98 */void 0,/* 0x99 */void 0,/* 0x9A */void 0,/* 0x9B */void 0,/* 0x9C */void 0,/* 0x9D */void 0,/* 0x9E */void 0,/* 0x9F */void 0,/* 0xA0 */void 0,/* 0xA1 */void 0,/* 0xA2 */void 0,/* 0xA3 */void 0,/* 0xA4 */void 0,/* 0xA5 */void 0,/* 0xA6 */void 0,/* 0xA7 */void 0,/* 0xA8 */void 0,/* 0xA9 */void 0,/* 0xAA */void 0,/* 0xAB */void 0,/* 0xAC */void 0,/* 0xAD */void 0,/* 0xAE */void 0,/* 0xAF */void 0,/* 0xB0 */PUSHB.bind(void 0,1),/* 0xB1 */PUSHB.bind(void 0,2),/* 0xB2 */PUSHB.bind(void 0,3),/* 0xB3 */PUSHB.bind(void 0,4),/* 0xB4 */PUSHB.bind(void 0,5),/* 0xB5 */PUSHB.bind(void 0,6),/* 0xB6 */PUSHB.bind(void 0,7),/* 0xB7 */PUSHB.bind(void 0,8),/* 0xB8 */PUSHW.bind(void 0,1),/* 0xB9 */PUSHW.bind(void 0,2),/* 0xBA */PUSHW.bind(void 0,3),/* 0xBB */PUSHW.bind(void 0,4),/* 0xBC */PUSHW.bind(void 0,5),/* 0xBD */PUSHW.bind(void 0,6),/* 0xBE */PUSHW.bind(void 0,7),/* 0xBF */PUSHW.bind(void 0,8),/* 0xC0 */MDRP_MIRP.bind(void 0,0,0,0,0,0),/* 0xC1 */MDRP_MIRP.bind(void 0,0,0,0,0,1),/* 0xC2 */MDRP_MIRP.bind(void 0,0,0,0,0,2),/* 0xC3 */MDRP_MIRP.bind(void 0,0,0,0,0,3),/* 0xC4 */MDRP_MIRP.bind(void 0,0,0,0,1,0),/* 0xC5 */MDRP_MIRP.bind(void 0,0,0,0,1,1),/* 0xC6 */MDRP_MIRP.bind(void 0,0,0,0,1,2),/* 0xC7 */MDRP_MIRP.bind(void 0,0,0,0,1,3),/* 0xC8 */MDRP_MIRP.bind(void 0,0,0,1,0,0),/* 0xC9 */MDRP_MIRP.bind(void 0,0,0,1,0,1),/* 0xCA */MDRP_MIRP.bind(void 0,0,0,1,0,2),/* 0xCB */MDRP_MIRP.bind(void 0,0,0,1,0,3),/* 0xCC */MDRP_MIRP.bind(void 0,0,0,1,1,0),/* 0xCD */MDRP_MIRP.bind(void 0,0,0,1,1,1),/* 0xCE */MDRP_MIRP.bind(void 0,0,0,1,1,2),/* 0xCF */MDRP_MIRP.bind(void 0,0,0,1,1,3),/* 0xD0 */MDRP_MIRP.bind(void 0,0,1,0,0,0),/* 0xD1 */MDRP_MIRP.bind(void 0,0,1,0,0,1),/* 0xD2 */MDRP_MIRP.bind(void 0,0,1,0,0,2),/* 0xD3 */MDRP_MIRP.bind(void 0,0,1,0,0,3),/* 0xD4 */MDRP_MIRP.bind(void 0,0,1,0,1,0),/* 0xD5 */MDRP_MIRP.bind(void 0,0,1,0,1,1),/* 0xD6 */MDRP_MIRP.bind(void 0,0,1,0,1,2),/* 0xD7 */MDRP_MIRP.bind(void 0,0,1,0,1,3),/* 0xD8 */MDRP_MIRP.bind(void 0,0,1,1,0,0),/* 0xD9 */MDRP_MIRP.bind(void 0,0,1,1,0,1),/* 0xDA */MDRP_MIRP.bind(void 0,0,1,1,0,2),/* 0xDB */MDRP_MIRP.bind(void 0,0,1,1,0,3),/* 0xDC */MDRP_MIRP.bind(void 0,0,1,1,1,0),/* 0xDD */MDRP_MIRP.bind(void 0,0,1,1,1,1),/* 0xDE */MDRP_MIRP.bind(void 0,0,1,1,1,2),/* 0xDF */MDRP_MIRP.bind(void 0,0,1,1,1,3),/* 0xE0 */MDRP_MIRP.bind(void 0,1,0,0,0,0),/* 0xE1 */MDRP_MIRP.bind(void 0,1,0,0,0,1),/* 0xE2 */MDRP_MIRP.bind(void 0,1,0,0,0,2),/* 0xE3 */MDRP_MIRP.bind(void 0,1,0,0,0,3),/* 0xE4 */MDRP_MIRP.bind(void 0,1,0,0,1,0),/* 0xE5 */MDRP_MIRP.bind(void 0,1,0,0,1,1),/* 0xE6 */MDRP_MIRP.bind(void 0,1,0,0,1,2),/* 0xE7 */MDRP_MIRP.bind(void 0,1,0,0,1,3),/* 0xE8 */MDRP_MIRP.bind(void 0,1,0,1,0,0),/* 0xE9 */MDRP_MIRP.bind(void 0,1,0,1,0,1),/* 0xEA */MDRP_MIRP.bind(void 0,1,0,1,0,2),/* 0xEB */MDRP_MIRP.bind(void 0,1,0,1,0,3),/* 0xEC */MDRP_MIRP.bind(void 0,1,0,1,1,0),/* 0xED */MDRP_MIRP.bind(void 0,1,0,1,1,1),/* 0xEE */MDRP_MIRP.bind(void 0,1,0,1,1,2),/* 0xEF */MDRP_MIRP.bind(void 0,1,0,1,1,3),/* 0xF0 */MDRP_MIRP.bind(void 0,1,1,0,0,0),/* 0xF1 */MDRP_MIRP.bind(void 0,1,1,0,0,1),/* 0xF2 */MDRP_MIRP.bind(void 0,1,1,0,0,2),/* 0xF3 */MDRP_MIRP.bind(void 0,1,1,0,0,3),/* 0xF4 */MDRP_MIRP.bind(void 0,1,1,0,1,0),/* 0xF5 */MDRP_MIRP.bind(void 0,1,1,0,1,1),/* 0xF6 */MDRP_MIRP.bind(void 0,1,1,0,1,2),/* 0xF7 */MDRP_MIRP.bind(void 0,1,1,0,1,3),/* 0xF8 */MDRP_MIRP.bind(void 0,1,1,1,0,0),/* 0xF9 */MDRP_MIRP.bind(void 0,1,1,1,0,1),/* 0xFA */MDRP_MIRP.bind(void 0,1,1,1,0,2),/* 0xFB */MDRP_MIRP.bind(void 0,1,1,1,0,3),/* 0xFC */MDRP_MIRP.bind(void 0,1,1,1,1,0),/* 0xFD */MDRP_MIRP.bind(void 0,1,1,1,1,1),/* 0xFE */MDRP_MIRP.bind(void 0,1,1,1,1,2),/* 0xFF */MDRP_MIRP.bind(void 0,1,1,1,1,3)];function Token(char){this.char=char;this.state={};this.activeState=null;}function ContextRange(startIndex,endOffset,contextName){this.contextName=contextName;this.startIndex=startIndex;this.endOffset=endOffset;}function ContextChecker(contextName,checkStart,checkEnd){this.contextName=contextName;this.openRange=null;this.ranges=[];this.checkStart=checkStart;this.checkEnd=checkEnd;}function ContextParams(context,currentIndex){this.context=context;this.index=currentIndex;this.length=context.length;this.current=context[currentIndex];this.backtrack=context.slice(0,currentIndex);this.lookahead=context.slice(currentIndex+1);}function Event(eventId){this.eventId=eventId;this.subscribers=[];}function initializeCoreEvents(events){var this$1$1=this;var coreEvents=[\"start\",\"end\",\"next\",\"newToken\",\"contextStart\",\"contextEnd\",\"insertToken\",\"removeToken\",\"removeRange\",\"replaceToken\",\"replaceRange\",\"composeRUD\",\"updateContextsRanges\"];coreEvents.forEach(function(eventId){Object.defineProperty(this$1$1.events,eventId,{value:new Event(eventId)});});if(!!events){coreEvents.forEach(function(eventId){var event=events[eventId];if(typeof event===\"function\"){this$1$1.events[eventId].subscribe(event);}});}var requiresContextUpdate=[\"insertToken\",\"removeToken\",\"removeRange\",\"replaceToken\",\"replaceRange\",\"composeRUD\"];requiresContextUpdate.forEach(function(eventId){this$1$1.events[eventId].subscribe(this$1$1.updateContextsRanges);});}function Tokenizer(events){this.tokens=[];this.registeredContexts={};this.contextCheckers=[];this.events={};this.registeredModifiers=[];initializeCoreEvents.call(this,events);}Token.prototype.setState=function(key,value){this.state[key]=value;this.activeState={key,value:this.state[key]};return this.activeState;};Token.prototype.getState=function(stateId){return this.state[stateId]||null;};Tokenizer.prototype.inboundIndex=function(index){return index>=0&&index0&&offset<=this.lookahead.length:return this.lookahead[offset-1];default:return null;}};Tokenizer.prototype.rangeToText=function(range){if(range instanceof ContextRange){return this.getRangeTokens(range).map(function(token){return token.char;}).join(\"\");}};Tokenizer.prototype.getText=function(){return this.tokens.map(function(token){return token.char;}).join(\"\");};Tokenizer.prototype.getContext=function(contextName){var context=this.registeredContexts[contextName];return!!context?context:null;};Tokenizer.prototype.on=function(eventName,eventHandler){var event=this.events[eventName];if(!!event){return event.subscribe(eventHandler);}else{return null;}};Tokenizer.prototype.dispatch=function(eventName,args){var this$1$1=this;var event=this.events[eventName];if(event instanceof Event){event.subscribers.forEach(function(subscriber){subscriber.apply(this$1$1,args||[]);});}};Tokenizer.prototype.registerContextChecker=function(contextName,contextStartCheck,contextEndCheck){if(!!this.getContext(contextName)){return{FAIL:\"context name '\"+contextName+\"' is already registered.\"};}if(typeof contextStartCheck!==\"function\"){return{FAIL:\"missing context start check.\"};}if(typeof contextEndCheck!==\"function\"){return{FAIL:\"missing context end check.\"};}var contextCheckers=new ContextChecker(contextName,contextStartCheck,contextEndCheck);this.registeredContexts[contextName]=contextCheckers;this.contextCheckers.push(contextCheckers);return contextCheckers;};Tokenizer.prototype.getRangeTokens=function(range){var endIndex=range.startIndex+range.endOffset;return[].concat(this.tokens.slice(range.startIndex,endIndex));};Tokenizer.prototype.getContextRanges=function(contextName){var context=this.getContext(contextName);if(!!context){return context.ranges;}else{return{FAIL:\"context checker '\"+contextName+\"' is not registered.\"};}};Tokenizer.prototype.resetContextsRanges=function(){var registeredContexts=this.registeredContexts;for(var contextName in registeredContexts){if(registeredContexts.hasOwnProperty(contextName)){var context=registeredContexts[contextName];context.ranges=[];}}};Tokenizer.prototype.updateContextsRanges=function(){this.resetContextsRanges();var chars=this.tokens.map(function(token){return token.char;});for(var i2=0;i2=range.start&&glyphIndex<=range.end){var offset=glyphIndex-range.start;return range.index+offset;}}break;default:return-1;}return-1;}function singleSubstitutionFormat1(glyphIndex,subtable){var substituteIndex=lookupCoverage(glyphIndex,subtable.coverage);if(substituteIndex===-1){return null;}return glyphIndex+subtable.deltaGlyphId;}function singleSubstitutionFormat2(glyphIndex,subtable){var substituteIndex=lookupCoverage(glyphIndex,subtable.coverage);if(substituteIndex===-1){return null;}return subtable.substitute[substituteIndex];}function lookupCoverageList(coverageList,contextParams){var lookupList=[];for(var i2=0;i2=0;i2--){var prevChar=backtrack[i2];var isolated=isIsolatedArabicChar(prevChar);var tashkeel=isTashkeelArabicChar(prevChar);if(!isolated&&!tashkeel){return true;}if(isolated){return false;}}return false;}function willConnectNext(charContextParams){if(isIsolatedArabicChar(charContextParams.current)){return false;}for(var i2=0;i20);}assertNamePresent(\"fontFamily\");assertNamePresent(\"weightName\");assertNamePresent(\"manufacturer\");assertNamePresent(\"copyright\");assertNamePresent(\"version\");assert(this.unitsPerEm>0);};Font2.prototype.toTables=function(){return sfnt.fontToTable(this);};Font2.prototype.toBuffer=function(){console.warn(\"Font.toBuffer is deprecated. Use Font.toArrayBuffer instead.\");return this.toArrayBuffer();};Font2.prototype.toArrayBuffer=function(){var sfntTable=this.toTables();var bytes=sfntTable.encode();var buffer=new ArrayBuffer(bytes.length);var intArray=new Uint8Array(buffer);for(var i2=0;i2=1.2){gdef2.markGlyphSets=p.parsePointer(markGlyphSets);}return gdef2;}var gdef={parse:parseGDEFTable};var subtableParsers$1=new Array(10);subtableParsers$1[1]=function parseLookup1(){var start=this.offset+this.relativeOffset;var posformat=this.parseUShort();if(posformat===1){return{posFormat:1,coverage:this.parsePointer(Parser2.coverage),value:this.parseValueRecord()};}else if(posformat===2){return{posFormat:2,coverage:this.parsePointer(Parser2.coverage),values:this.parseValueRecordList()};}check.assert(false,\"0x\"+start.toString(16)+\": GPOS lookup type 1 format must be 1 or 2.\");};subtableParsers$1[2]=function parseLookup2(){var start=this.offset+this.relativeOffset;var posFormat=this.parseUShort();check.assert(posFormat===1||posFormat===2,\"0x\"+start.toString(16)+\": GPOS lookup type 2 format must be 1 or 2.\");var coverage=this.parsePointer(Parser2.coverage);var valueFormat1=this.parseUShort();var valueFormat2=this.parseUShort();if(posFormat===1){return{posFormat,coverage,valueFormat1,valueFormat2,pairSets:this.parseList(Parser2.pointer(Parser2.list(function(){return{// pairValueRecord\nsecondGlyph:this.parseUShort(),value1:this.parseValueRecord(valueFormat1),value2:this.parseValueRecord(valueFormat2)};})))};}else if(posFormat===2){var classDef1=this.parsePointer(Parser2.classDef);var classDef2=this.parsePointer(Parser2.classDef);var class1Count=this.parseUShort();var class2Count=this.parseUShort();return{// Class Pair Adjustment\nposFormat,coverage,valueFormat1,valueFormat2,classDef1,classDef2,class1Count,class2Count,classRecords:this.parseList(class1Count,Parser2.list(class2Count,function(){return{value1:this.parseValueRecord(valueFormat1),value2:this.parseValueRecord(valueFormat2)};}))};}};subtableParsers$1[3]=function parseLookup3(){return{error:\"GPOS Lookup 3 not supported\"};};subtableParsers$1[4]=function parseLookup4(){return{error:\"GPOS Lookup 4 not supported\"};};subtableParsers$1[5]=function parseLookup5(){return{error:\"GPOS Lookup 5 not supported\"};};subtableParsers$1[6]=function parseLookup6(){return{error:\"GPOS Lookup 6 not supported\"};};subtableParsers$1[7]=function parseLookup7(){return{error:\"GPOS Lookup 7 not supported\"};};subtableParsers$1[8]=function parseLookup8(){return{error:\"GPOS Lookup 8 not supported\"};};subtableParsers$1[9]=function parseLookup9(){return{error:\"GPOS Lookup 9 not supported\"};};function parseGposTable(data,start){start=start||0;var p=new Parser2(data,start);var tableVersion=p.parseVersion(1);check.argument(tableVersion===1||tableVersion===1.1,\"Unsupported GPOS table version \"+tableVersion);if(tableVersion===1){return{version:tableVersion,scripts:p.parseScriptList(),features:p.parseFeatureList(),lookups:p.parseLookupList(subtableParsers$1)};}else{return{version:tableVersion,scripts:p.parseScriptList(),features:p.parseFeatureList(),lookups:p.parseLookupList(subtableParsers$1),variations:p.parseFeatureVariationsList()};}}var subtableMakers$1=new Array(10);function makeGposTable(gpos2){return new table.Table(\"GPOS\",[{name:\"version\",type:\"ULONG\",value:65536},{name:\"scripts\",type:\"TABLE\",value:new table.ScriptList(gpos2.scripts)},{name:\"features\",type:\"TABLE\",value:new table.FeatureList(gpos2.features)},{name:\"lookups\",type:\"TABLE\",value:new table.LookupList(gpos2.lookups,subtableMakers$1)}]);}var gpos={parse:parseGposTable,make:makeGposTable};function parseWindowsKernTable(p){var pairs={};p.skip(\"uShort\");var subtableVersion=p.parseUShort();check.argument(subtableVersion===0,\"Unsupported kern sub-table version.\");p.skip(\"uShort\",2);var nPairs=p.parseUShort();p.skip(\"uShort\",3);for(var i2=0;i21){console.warn(\"Only the first kern subtable is supported.\");}p.skip(\"uLong\");var coverage=p.parseUShort();var subtableVersion=coverage&255;p.skip(\"uShort\");if(subtableVersion===0){var nPairs=p.parseUShort();p.skip(\"uShort\",3);for(var i2=0;i20;i2--){const command=p[i2];const result2={type:command.type};if(command.x2!==void 0&&command.y2!==void 0){result2.x1=command.x2;result2.y1=command.y2;result2.x2=command.x1;result2.y2=command.y1;}else if(command.x1!==void 0&&command.y1!==void 0){result2.x1=command.x1;result2.y1=command.y1;}result2.x=p[i2-1].x;result2.y=p[i2-1].y;reversed.push(result2);}});return reversed;}return convert(parseBuffer(arraybuffer),this.reversed);}}class RGBELoader extends DataTextureLoader{constructor(manager){super(manager);this.type=HalfFloatType;}// adapted from http://www.graphics.cornell.edu/~bjw/rgbe.html\nparse(buffer){const RGBE_RETURN_FAILURE=-1,rgbe_read_error=1,rgbe_write_error=2,rgbe_format_error=3,rgbe_memory_error=4,rgbe_error=function(rgbe_error_code,msg){switch(rgbe_error_code){case rgbe_read_error:console.error(\"THREE.RGBELoader Read Error: \"+(msg||\"\"));break;case rgbe_write_error:console.error(\"THREE.RGBELoader Write Error: \"+(msg||\"\"));break;case rgbe_format_error:console.error(\"THREE.RGBELoader Bad File Format: \"+(msg||\"\"));break;default:case rgbe_memory_error:console.error(\"THREE.RGBELoader: Error: \"+(msg||\"\"));}return RGBE_RETURN_FAILURE;},RGBE_VALID_PROGRAMTYPE=1,RGBE_VALID_FORMAT=2,RGBE_VALID_DIMENSIONS=4,NEWLINE=\"\\n\",fgets=function(buffer2,lineLimit,consume){const chunkSize=128;lineLimit=!lineLimit?1024:lineLimit;let p=buffer2.pos,i2=-1,len=0,s=\"\",chunk=String.fromCharCode.apply(null,new Uint16Array(buffer2.subarray(p,p+chunkSize)));while(0>(i2=chunk.indexOf(NEWLINE))&&len=buffer2.byteLength||!(line=fgets(buffer2))){return rgbe_error(rgbe_read_error,\"no header found\");}if(!(match=line.match(magic_token_re))){return rgbe_error(rgbe_format_error,\"bad initial token\");}header.valid|=RGBE_VALID_PROGRAMTYPE;header.programtype=match[1];header.string+=line+\"\\n\";while(true){line=fgets(buffer2);if(false===line)break;header.string+=line+\"\\n\";if(\"#\"===line.charAt(0)){header.comments+=line+\"\\n\";continue;}if(match=line.match(gamma_re)){header.gamma=parseFloat(match[1]);}if(match=line.match(exposure_re)){header.exposure=parseFloat(match[1]);}if(match=line.match(format_re)){header.valid|=RGBE_VALID_FORMAT;header.format=match[1];}if(match=line.match(dimensions_re)){header.valid|=RGBE_VALID_DIMENSIONS;header.height=parseInt(match[1],10);header.width=parseInt(match[2],10);}if(header.valid&RGBE_VALID_FORMAT&&header.valid&RGBE_VALID_DIMENSIONS)break;}if(!(header.valid&RGBE_VALID_FORMAT)){return rgbe_error(rgbe_format_error,\"missing format specifier\");}if(!(header.valid&RGBE_VALID_DIMENSIONS)){return rgbe_error(rgbe_format_error,\"missing image size specifier\");}return header;},RGBE_ReadPixels_RLE=function(buffer2,w,h){const scanline_width=w;if(// run length encoding is not allowed so read flat\nscanline_width<8||scanline_width>32767||// this file is not run length encoded\n2!==buffer2[0]||2!==buffer2[1]||buffer2[2]&128){return new Uint8Array(buffer2);}if(scanline_width!==(buffer2[2]<<8|buffer2[3])){return rgbe_error(rgbe_format_error,\"wrong scanline width\");}const data_rgba=new Uint8Array(4*w*h);if(!data_rgba.length){return rgbe_error(rgbe_memory_error,\"unable to allocate buffer space\");}let offset=0,pos=0;const ptr_end=4*scanline_width;const rgbeStart=new Uint8Array(4);const scanline_buffer=new Uint8Array(ptr_end);let num_scanlines=h;while(num_scanlines>0&&posbuffer2.byteLength){return rgbe_error(rgbe_read_error);}rgbeStart[0]=buffer2[pos++];rgbeStart[1]=buffer2[pos++];rgbeStart[2]=buffer2[pos++];rgbeStart[3]=buffer2[pos++];if(2!=rgbeStart[0]||2!=rgbeStart[1]||(rgbeStart[2]<<8|rgbeStart[3])!=scanline_width){return rgbe_error(rgbe_format_error,\"bad rgbe scanline format\");}let ptr=0,count;while(ptr128;if(isEncodedRun)count-=128;if(0===count||ptr+count>ptr_end){return rgbe_error(rgbe_format_error,\"bad scanline data\");}if(isEncodedRun){const byteValue=buffer2[pos++];for(let i2=0;i20)this.length=this.keys[this.keys.length-1].time;else this.length=0;if(!this.fps)return;for(let j=0;j=j/this.fps){this._accelTable[j]=i2;break;}}}};this.parseFromThree=function(data){var fps=data.fps;this.target=data.node;var track=data.hierarchy[0].keys;for(let i2=0;i2time){key0=this.keys[i2];key1=this.keys[i2+1];break;}else if(this.keys[i2].time4)pairs.length=4;var sum=0;for(let i2=0;i2<4;i2++){sum+=pairs[i2].w*pairs[i2].w;}sum=Math.sqrt(sum);for(let i2=0;i2<4;i2++){pairs[i2].w=pairs[i2].w/sum;indexes[i2]=pairs[i2].i;weights[i2]=pairs[i2].w;}}function findMatchingBone(root,name){if(root.name.indexOf(\"bone_\"+name)==0)return root;for(let i2 in root.children){var ret=findMatchingBone(root.children[i2],name);if(ret)return ret;}return void 0;}class aiMesh{constructor(){this.mPrimitiveTypes=0;this.mNumVertices=0;this.mNumFaces=0;this.mNumBones=0;this.mMaterialIndex=0;this.mVertices=[];this.mNormals=[];this.mTangents=[];this.mBitangents=[];this.mColors=[[]];this.mTextureCoords=[[]];this.mFaces=[];this.mBones=[];this.hookupSkeletons=function(scene){if(this.mBones.length==0)return;var allBones=[];var offsetMatrix=[];var skeletonRoot=scene.findNode(this.mBones[0].mName);while(skeletonRoot.mParent&&skeletonRoot.mParent.isBone){skeletonRoot=skeletonRoot.mParent;}var threeSkeletonRoot=skeletonRoot.toTHREE(scene);var threeSkeletonRootBone=cloneTreeToBones(threeSkeletonRoot,scene);this.threeNode.add(threeSkeletonRootBone);for(let i2=0;i20){geometry2.setAttribute(\"normal\",new BufferAttribute(this.mNormalBuffer,3));}if(this.mColorBuffer&&this.mColorBuffer.length>0){geometry2.setAttribute(\"color\",new BufferAttribute(this.mColorBuffer,4));}if(this.mTexCoordsBuffers[0]&&this.mTexCoordsBuffers[0].length>0){geometry2.setAttribute(\"uv\",new BufferAttribute(new Float32Array(this.mTexCoordsBuffers[0]),2));}if(this.mTexCoordsBuffers[1]&&this.mTexCoordsBuffers[1].length>0){geometry2.setAttribute(\"uv1\",new BufferAttribute(new Float32Array(this.mTexCoordsBuffers[1]),2));}if(this.mTangentBuffer&&this.mTangentBuffer.length>0){geometry2.setAttribute(\"tangents\",new BufferAttribute(this.mTangentBuffer,3));}if(this.mBitangentBuffer&&this.mBitangentBuffer.length>0){geometry2.setAttribute(\"bitangents\",new BufferAttribute(this.mBitangentBuffer,3));}if(this.mBones.length>0){var weights=[];var bones=[];for(let i2=0;i20){mesh=new SkinnedMesh(geometry2,mat);mesh.normalizeSkinWeights();}this.threeNode=mesh;return mesh;};}}class aiFace{constructor(){this.mNumIndices=0;this.mIndices=[];}}class aiVector3D{constructor(){this.x=0;this.y=0;this.z=0;this.toTHREE=function(){return new Vector3(this.x,this.y,this.z);};}}class aiColor3D{constructor(){this.r=0;this.g=0;this.b=0;this.a=0;this.toTHREE=function(){return new Color(this.r,this.g,this.b);};}}class aiQuaternion{constructor(){this.x=0;this.y=0;this.z=0;this.w=0;this.toTHREE=function(){return new Quaternion(this.x,this.y,this.z,this.w);};}}class aiVertexWeight{constructor(){this.mVertexId=0;this.mWeight=0;}}class aiString{constructor(){this.data=[];this.toString=function(){var str=\"\";this.data.forEach(function(i2){str+=String.fromCharCode(i2);});return str.replace(/[^\\x20-\\x7E]+/g,\"\");};}}class aiVectorKey{constructor(){this.mTime=0;this.mValue=null;}}class aiQuatKey{constructor(){this.mTime=0;this.mValue=null;}}class aiNode{constructor(){this.mName=\"\";this.mTransformation=[];this.mNumChildren=0;this.mNumMeshes=0;this.mMeshes=[];this.mChildren=[];this.toTHREE=function(scene){if(this.threeNode)return this.threeNode;var o=new Object3D();o.name=this.mName;o.matrix=this.mTransformation.toTHREE();for(let i2=0;i20){var a2=this.mAnimations[0].toTHREE(this);}return{object:o,animation:a2};};}}class aiMatrix4{constructor(){this.elements=[[],[],[],[]];this.toTHREE=function(){var m=new Matrix4();for(let i2=0;i2<4;++i2){for(let i22=0;i22<4;++i22){m.elements[i2*4+i22]=this.elements[i22][i2];}}return m;};}}var littleEndian=true;function readFloat(dataview){var val=dataview.getFloat32(dataview.readOffset,littleEndian);dataview.readOffset+=4;return val;}function Read_double(dataview){var val=dataview.getFloat64(dataview.readOffset,littleEndian);dataview.readOffset+=8;return val;}function Read_uint8_t(dataview){var val=dataview.getUint8(dataview.readOffset);dataview.readOffset+=1;return val;}function Read_uint16_t(dataview){var val=dataview.getUint16(dataview.readOffset,littleEndian);dataview.readOffset+=2;return val;}function Read_unsigned_int(dataview){var val=dataview.getUint32(dataview.readOffset,littleEndian);dataview.readOffset+=4;return val;}function Read_uint32_t(dataview){var val=dataview.getUint32(dataview.readOffset,littleEndian);dataview.readOffset+=4;return val;}function Read_aiVector3D(stream){var v=new aiVector3D();v.x=readFloat(stream);v.y=readFloat(stream);v.z=readFloat(stream);return v;}function Read_aiColor3D(stream){var c=new aiColor3D();c.r=readFloat(stream);c.g=readFloat(stream);c.b=readFloat(stream);return c;}function Read_aiQuaternion(stream){var v=new aiQuaternion();v.w=readFloat(stream);v.x=readFloat(stream);v.y=readFloat(stream);v.z=readFloat(stream);return v;}function Read_aiString(stream){var s=new aiString();var stringlengthbytes=Read_unsigned_int(stream);stream.ReadBytes(s.data,1,stringlengthbytes);return s.toString();}function Read_aiVertexWeight(stream){var w=new aiVertexWeight();w.mVertexId=Read_unsigned_int(stream);w.mWeight=readFloat(stream);return w;}function Read_aiMatrix4x4(stream){var m=new aiMatrix4();for(let i2=0;i2<4;++i2){for(let i22=0;i22<4;++i22){m.elements[i2][i22]=readFloat(stream);}}return m;}function Read_aiVectorKey(stream){var v=new aiVectorKey();v.mTime=Read_double(stream);v.mValue=Read_aiVector3D(stream);return v;}function Read_aiQuatKey(stream){var v=new aiQuatKey();v.mTime=Read_double(stream);v.mValue=Read_aiQuaternion(stream);return v;}function ReadArray_aiVertexWeight(stream,data,size2){for(let i2=0;i20;compressed=Read_uint16_t(stream)>0;if(shortened)throw\"Shortened binaries are not supported!\";stream.Seek(256,aiOrigin_CUR);stream.Seek(128,aiOrigin_CUR);stream.Seek(64,aiOrigin_CUR);if(compressed){var uncompressedSize=Read_uint32_t(stream);var compressedSize=stream.FileSize()-stream.Tell();var compressedData=[];stream.Read(compressedData,1,compressedSize);var uncompressedData=[];uncompress(uncompressedData,uncompressedSize,compressedData,compressedSize);var buff=new ArrayBuffer(uncompressedData);ReadBinaryScene(buff,pScene);}else{ReadBinaryScene(stream,pScene);}return pScene.toTHREE();}return InternReadFile(buffer);}}class MDDLoader extends Loader{constructor(manager){super(manager);}load(url,onLoad,onProgress,onError){const scope=this;const loader=new FileLoader(this.manager);loader.setPath(this.path);loader.setResponseType(\"arraybuffer\");loader.load(url,function(data){onLoad(scope.parse(data));},onProgress,onError);}parse(data){const view=new DataView(data);const totalFrames=view.getUint32(0);const totalPoints=view.getUint32(4);let offset=8;const times=new Float32Array(totalFrames);const values=new Float32Array(totalFrames*totalFrames).fill(0);for(let i2=0;i2>3;const HUF_ENCBITS=16;const HUF_DECBITS=14;const HUF_ENCSIZE=(1<>3]&1<<(i2&7)){lut[k++]=i2;}}var n=k-1;while(k>lc&(1<0;--i2){var nc=c+hufTableBuffer[i2]>>1;hufTableBuffer[i2]=c;c=nc;}for(var i2=0;i20)hcode[i2]=l|hufTableBuffer[l]++<<6;}}function hufUnpackEncTable(uInt8Array2,inDataView,inOffset,ni,im,iM,hcode){var p=inOffset;var c=0;var lc=0;for(;im<=iM;im++){if(p.value-inOffset.value>ni)return false;getBits(6,c,lc,uInt8Array2,p);var l=getBitsReturn.l;c=getBitsReturn.c;lc=getBitsReturn.lc;hcode[im]=l;if(l==LONG_ZEROCODE_RUN){if(p.value-inOffset.value>ni){throw\"Something wrong with hufUnpackEncTable\";}getBits(8,c,lc,uInt8Array2,p);var zerun=getBitsReturn.l+SHORTEST_LONG_RUN;c=getBitsReturn.c;lc=getBitsReturn.lc;if(im+zerun>iM+1){throw\"Something wrong with hufUnpackEncTable\";}while(zerun--)hcode[im++]=0;im--;}else if(l>=SHORT_ZEROCODE_RUN){var zerun=l-SHORT_ZEROCODE_RUN+2;if(im+zerun>iM+1){throw\"Something wrong with hufUnpackEncTable\";}while(zerun--)hcode[im++]=0;im--;}}hufCanonicalCodeTable(hcode);}function hufLength(code){return code&63;}function hufCode(code){return code>>6;}function hufBuildDecTable(hcode,im,iM,hdecod){for(;im<=iM;im++){var c=hufCode(hcode[im]);var l=hufLength(hcode[im]);if(c>>l){throw\"Invalid table entry\";}if(l>HUF_DECBITS){var pl=hdecod[c>>l-HUF_DECBITS];if(pl.len){throw\"Invalid table entry\";}pl.lit++;if(pl.p){var p=pl.p;pl.p=new Array(pl.lit);for(var i2=0;i20;i2--){var pl=hdecod[(c<>lc;var cs=new Uint8Array([cs])[0];if(outBufferOffset.value+cs>outBufferEndOffset){return false;}var s=outBuffer[outBufferOffset.value-1];while(cs-->0){outBuffer[outBufferOffset.value++]=s;}}else if(outBufferOffset.value32767?ref-65536:ref;}const wdec14Return={a:0,b:0};function wdec14(l,h){var ls=Int16(l);var hs=Int16(h);var hi=hs;var ai=ls+(hi&1)+(hi>>1);var as=ai;var bs=ai-hi;wdec14Return.a=as;wdec14Return.b=bs;}function wdec16(l,h){var m=UInt16(l);var d=UInt16(h);var bb=m-(d>>1)&MOD_MASK;var aa=d+bb-A_OFFSET&MOD_MASK;wdec14Return.a=aa;wdec14Return.b=bb;}function wav2Decode(buffer2,j,nx,ox,ny,oy,mx){var w14=mx<1<<14;var n=nx>ny?ny:nx;var p=1;var p2;while(p<=n)p<<=1;p>>=1;p2=p;p>>=1;while(p>=1){var py=0;var ey=py+oy*(ny-p2);var oy1=oy*p;var oy2=oy*p2;var ox1=ox*p;var ox2=ox*p2;var i00,i01,i10,i11;for(;py<=ey;py+=oy2){var px=py;var ex=py+ox*(nx-p2);for(;px<=ex;px+=ox2){var p01=px+ox1;var p10=px+oy1;var p11=p10+ox1;if(w14){wdec14(buffer2[px+j],buffer2[p10+j]);i00=wdec14Return.a;i10=wdec14Return.b;wdec14(buffer2[p01+j],buffer2[p11+j]);i01=wdec14Return.a;i11=wdec14Return.b;wdec14(i00,i01);buffer2[px+j]=wdec14Return.a;buffer2[p01+j]=wdec14Return.b;wdec14(i10,i11);buffer2[p10+j]=wdec14Return.a;buffer2[p11+j]=wdec14Return.b;}else{wdec16(buffer2[px+j],buffer2[p10+j]);i00=wdec14Return.a;i10=wdec14Return.b;wdec16(buffer2[p01+j],buffer2[p11+j]);i01=wdec14Return.a;i11=wdec14Return.b;wdec16(i00,i01);buffer2[px+j]=wdec14Return.a;buffer2[p01+j]=wdec14Return.b;wdec16(i10,i11);buffer2[p10+j]=wdec14Return.a;buffer2[p11+j]=wdec14Return.b;}}if(nx&p){var p10=px+oy1;if(w14)wdec14(buffer2[px+j],buffer2[p10+j]);else wdec16(buffer2[px+j],buffer2[p10+j]);i00=wdec14Return.a;buffer2[p10+j]=wdec14Return.b;buffer2[px+j]=i00;}}if(ny&p){var px=py;var ex=py+ox*(nx-p2);for(;px<=ex;px+=ox2){var p01=px+ox1;if(w14)wdec14(buffer2[px+j],buffer2[p01+j]);else wdec16(buffer2[px+j],buffer2[p01+j]);i00=wdec14Return.a;buffer2[p01+j]=wdec14Return.b;buffer2[px+j]=i00;}}p2=p;p>>=1;}return py;}function hufDecode(encodingTable,decodingTable,uInt8Array2,inDataView,inOffset,ni,rlc,no,outBuffer,outOffset){var c=0;var lc=0;var outBufferEndOffset=no;var inOffsetEnd=Math.trunc(inOffset.value+(ni+7)/8);while(inOffset.value=HUF_DECBITS){var index=c>>lc-HUF_DECBITS&HUF_DECMASK;var pl=decodingTable[index];if(pl.len){lc-=pl.len;getCode(pl.lit,rlc,c,lc,uInt8Array2,inDataView,inOffset,outBuffer,outOffset,outBufferEndOffset);c=getCodeReturn.c;lc=getCodeReturn.lc;}else{if(!pl.p){throw\"hufDecode issues\";}var j;for(j=0;j=l){if(hufCode(encodingTable[pl.p[j]])==(c>>lc-l&(1<>=i2;lc-=i2;while(lc>0){var pl=decodingTable[c<=HUF_ENCSIZE||iM<0||iM>=HUF_ENCSIZE){throw\"Something wrong with HUF_ENCSIZE\";}var freq=new Array(HUF_ENCSIZE);var hdec=new Array(HUF_DECSIZE);hufClearDecTable(hdec);var ni=nCompressed-(inOffset.value-initialInOffset);hufUnpackEncTable(uInt8Array2,inDataView,inOffset,ni,im,iM,freq);if(nBits>8*(nCompressed-(inOffset.value-initialInOffset))){throw\"Something wrong with hufUncompress\";}hufBuildDecTable(freq,im,iM,hdec);hufDecode(freq,hdec,uInt8Array2,inDataView,inOffset,nBits,iM,nRaw,outBuffer,outOffset);}function applyLut(lut,data,nData){for(var i2=0;i2stop)break;out[s++]=source[t1++];if(s>stop)break;out[s++]=source[t2++];}}function decodeRunLength(source){var size2=source.byteLength;var out=new Array();var p=0;var reader=new DataView(source);while(size2>0){var l=reader.getInt8(p++);if(l<0){var count=-l;size2-=count+1;for(var i2=0;i2>8==255){dctComp+=acValue&255;}else{halfZigBlock[dctComp]=acValue;dctComp++;}currAcComp.value++;}}function unZigZag(src,dst){dst[0]=decodeFloat16(src[0]);dst[1]=decodeFloat16(src[1]);dst[2]=decodeFloat16(src[5]);dst[3]=decodeFloat16(src[6]);dst[4]=decodeFloat16(src[14]);dst[5]=decodeFloat16(src[15]);dst[6]=decodeFloat16(src[27]);dst[7]=decodeFloat16(src[28]);dst[8]=decodeFloat16(src[2]);dst[9]=decodeFloat16(src[4]);dst[10]=decodeFloat16(src[7]);dst[11]=decodeFloat16(src[13]);dst[12]=decodeFloat16(src[16]);dst[13]=decodeFloat16(src[26]);dst[14]=decodeFloat16(src[29]);dst[15]=decodeFloat16(src[42]);dst[16]=decodeFloat16(src[3]);dst[17]=decodeFloat16(src[8]);dst[18]=decodeFloat16(src[12]);dst[19]=decodeFloat16(src[17]);dst[20]=decodeFloat16(src[25]);dst[21]=decodeFloat16(src[30]);dst[22]=decodeFloat16(src[41]);dst[23]=decodeFloat16(src[43]);dst[24]=decodeFloat16(src[9]);dst[25]=decodeFloat16(src[11]);dst[26]=decodeFloat16(src[18]);dst[27]=decodeFloat16(src[24]);dst[28]=decodeFloat16(src[31]);dst[29]=decodeFloat16(src[40]);dst[30]=decodeFloat16(src[44]);dst[31]=decodeFloat16(src[53]);dst[32]=decodeFloat16(src[10]);dst[33]=decodeFloat16(src[19]);dst[34]=decodeFloat16(src[23]);dst[35]=decodeFloat16(src[32]);dst[36]=decodeFloat16(src[39]);dst[37]=decodeFloat16(src[45]);dst[38]=decodeFloat16(src[52]);dst[39]=decodeFloat16(src[54]);dst[40]=decodeFloat16(src[20]);dst[41]=decodeFloat16(src[22]);dst[42]=decodeFloat16(src[33]);dst[43]=decodeFloat16(src[38]);dst[44]=decodeFloat16(src[46]);dst[45]=decodeFloat16(src[51]);dst[46]=decodeFloat16(src[55]);dst[47]=decodeFloat16(src[60]);dst[48]=decodeFloat16(src[21]);dst[49]=decodeFloat16(src[34]);dst[50]=decodeFloat16(src[37]);dst[51]=decodeFloat16(src[47]);dst[52]=decodeFloat16(src[50]);dst[53]=decodeFloat16(src[56]);dst[54]=decodeFloat16(src[59]);dst[55]=decodeFloat16(src[61]);dst[56]=decodeFloat16(src[35]);dst[57]=decodeFloat16(src[36]);dst[58]=decodeFloat16(src[48]);dst[59]=decodeFloat16(src[49]);dst[60]=decodeFloat16(src[57]);dst[61]=decodeFloat16(src[58]);dst[62]=decodeFloat16(src[62]);dst[63]=decodeFloat16(src[63]);}function dctInverse(data){const a2=0.5*Math.cos(3.14159/4);const b2=0.5*Math.cos(3.14159/16);const c=0.5*Math.cos(3.14159/8);const d=0.5*Math.cos(3*3.14159/16);const e=0.5*Math.cos(5*3.14159/16);const f=0.5*Math.cos(3*3.14159/8);const g=0.5*Math.cos(7*3.14159/16);var alpha=new Array(4);var beta=new Array(4);var theta=new Array(4);var gamma=new Array(4);for(var row=0;row<8;++row){var rowPtr=row*8;alpha[0]=c*data[rowPtr+2];alpha[1]=f*data[rowPtr+2];alpha[2]=c*data[rowPtr+6];alpha[3]=f*data[rowPtr+6];beta[0]=b2*data[rowPtr+1]+d*data[rowPtr+3]+e*data[rowPtr+5]+g*data[rowPtr+7];beta[1]=d*data[rowPtr+1]-g*data[rowPtr+3]-b2*data[rowPtr+5]-e*data[rowPtr+7];beta[2]=e*data[rowPtr+1]-b2*data[rowPtr+3]+g*data[rowPtr+5]+d*data[rowPtr+7];beta[3]=g*data[rowPtr+1]-e*data[rowPtr+3]+d*data[rowPtr+5]-b2*data[rowPtr+7];theta[0]=a2*(data[rowPtr+0]+data[rowPtr+4]);theta[3]=a2*(data[rowPtr+0]-data[rowPtr+4]);theta[1]=alpha[0]+alpha[3];theta[2]=alpha[1]-alpha[2];gamma[0]=theta[0]+theta[1];gamma[1]=theta[3]+theta[2];gamma[2]=theta[3]-theta[2];gamma[3]=theta[0]-theta[1];data[rowPtr+0]=gamma[0]+beta[0];data[rowPtr+1]=gamma[1]+beta[1];data[rowPtr+2]=gamma[2]+beta[2];data[rowPtr+3]=gamma[3]+beta[3];data[rowPtr+4]=gamma[3]-beta[3];data[rowPtr+5]=gamma[2]-beta[2];data[rowPtr+6]=gamma[1]-beta[1];data[rowPtr+7]=gamma[0]-beta[0];}for(var column=0;column<8;++column){alpha[0]=c*data[16+column];alpha[1]=f*data[16+column];alpha[2]=c*data[48+column];alpha[3]=f*data[48+column];beta[0]=b2*data[8+column]+d*data[24+column]+e*data[40+column]+g*data[56+column];beta[1]=d*data[8+column]-g*data[24+column]-b2*data[40+column]-e*data[56+column];beta[2]=e*data[8+column]-b2*data[24+column]+g*data[40+column]+d*data[56+column];beta[3]=g*data[8+column]-e*data[24+column]+d*data[40+column]-b2*data[56+column];theta[0]=a2*(data[column]+data[32+column]);theta[3]=a2*(data[column]-data[32+column]);theta[1]=alpha[0]+alpha[3];theta[2]=alpha[1]-alpha[2];gamma[0]=theta[0]+theta[1];gamma[1]=theta[3]+theta[2];gamma[2]=theta[3]-theta[2];gamma[3]=theta[0]-theta[1];data[0+column]=gamma[0]+beta[0];data[8+column]=gamma[1]+beta[1];data[16+column]=gamma[2]+beta[2];data[24+column]=gamma[3]+beta[3];data[32+column]=gamma[3]-beta[3];data[40+column]=gamma[2]-beta[2];data[48+column]=gamma[1]-beta[1];data[56+column]=gamma[0]-beta[0];}}function csc709Inverse(data){for(var i2=0;i2<64;++i2){var y=data[0][i2];var cb2=data[1][i2];var cr=data[2][i2];data[0][i2]=y+1.5747*cr;data[1][i2]=y-0.1873*cb2-0.4682*cr;data[2][i2]=y+1.8556*cb2;}}function convertToHalf(src,dst,idx){for(var i2=0;i2<64;++i2){dst[idx+i2]=DataUtils.toHalfFloat(toLinear(src[i2]));}}function toLinear(float){if(float<=1){return Math.sign(float)*Math.pow(Math.abs(float),2.2);}else{return Math.sign(float)*Math.pow(logBase,Math.abs(float)-1);}}function uncompressRAW(info){return new DataView(info.array.buffer,info.offset.value,info.size);}function uncompressRLE(info){var compressed=info.viewer.buffer.slice(info.offset.value,info.offset.value+info.size);var rawBuffer=new Uint8Array(decodeRunLength(compressed));var tmpBuffer=new Uint8Array(rawBuffer.length);predictor(rawBuffer);interleaveScalar(rawBuffer,tmpBuffer);return new DataView(tmpBuffer.buffer);}function uncompressZIP(info){var compressed=info.array.slice(info.offset.value,info.offset.value+info.size);var rawBuffer=unzlibSync(compressed);var tmpBuffer=new Uint8Array(rawBuffer.length);predictor(rawBuffer);interleaveScalar(rawBuffer,tmpBuffer);return new DataView(tmpBuffer.buffer);}function uncompressPIZ(info){var inDataView=info.viewer;var inOffset={value:info.offset.value};var outBuffer=new Uint16Array(info.width*info.scanlineBlockSize*(info.channels*info.type));var bitmap=new Uint8Array(BITMAP_SIZE);var outBufferEnd=0;var pizChannelData=new Array(info.channels);for(var i2=0;i2=BITMAP_SIZE){throw\"Something is wrong with PIZ_COMPRESSION BITMAP_SIZE\";}if(minNonZero<=maxNonZero){for(var i2=0;i20){var name=parseNullTerminatedString(inDataView.buffer,inOffset);var value=parseUint8(inDataView,inOffset);var compression=value>>2&3;var csc=(value>>4)-1;var index=new Int8Array([csc])[0];var type=parseUint8(inDataView,inOffset);channelRules.push({name,index,type,compression});ruleSize-=name.length+3;}var channels=EXRHeader.channels;var channelData=new Array(info.channels);for(var i2=0;i2=0){cscSet.idx[rule.index]=offset2;}cd.offset=offset2;}}}if(dwaHeader.acCompressedSize>0){switch(dwaHeader.acCompression){case STATIC_HUFFMAN:var acBuffer=new Uint16Array(dwaHeader.totalAcUncompressedCount);hufUncompress(info.array,inDataView,inOffset,dwaHeader.acCompressedSize,acBuffer,dwaHeader.totalAcUncompressedCount);break;case DEFLATE:var compressed=info.array.slice(inOffset.value,inOffset.value+dwaHeader.totalAcUncompressedCount);var data=unzlibSync(compressed);var acBuffer=new Uint16Array(data.buffer);inOffset.value+=dwaHeader.totalAcUncompressedCount;break;}}if(dwaHeader.dcCompressedSize>0){var zlibInfo={array:info.array,offset:inOffset,size:dwaHeader.dcCompressedSize};var dcBuffer=new Uint16Array(uncompressZIP(zlibInfo).buffer);inOffset.value+=dwaHeader.dcCompressedSize;}if(dwaHeader.rleRawSize>0){var compressed=info.array.slice(inOffset.value,inOffset.value+dwaHeader.rleCompressedSize);var data=unzlibSync(compressed);var rleBuffer=decodeRunLength(data.buffer);inOffset.value+=dwaHeader.rleCompressedSize;}var outBufferEnd=0;var rowOffsets=new Array(channelData.length);for(var i2=0;i2>10,fraction=binary&1023;return(binary>>15?-1:1)*(exponent?exponent===31?fraction?NaN:Infinity:Math.pow(2,exponent-15)*(1+fraction/1024):6103515625e-14*(fraction/1024));}function parseUint16(dataView,offset2){var Uint16=dataView.getUint16(offset2.value,true);offset2.value+=INT16_SIZE;return Uint16;}function parseFloat16(buffer2,offset2){return decodeFloat16(parseUint16(buffer2,offset2));}function parseChlist(dataView,buffer2,offset2,size2){var startOffset=offset2.value;var channels=[];while(offset2.valueEXRDecoder.height?EXRDecoder.height-line:EXRDecoder.scanlineBlockSize;const isCompressed=EXRDecoder.size=EXRDecoder.height)break;for(let channelID=0;channelID0){geometry2.setAttribute(\"color\",new Float32BufferAttribute(colors,3));}return geometry2;}}class VTKLoader extends Loader{constructor(manager){super(manager);}load(url,onLoad,onProgress,onError){const scope=this;const loader=new FileLoader(scope.manager);loader.setPath(scope.path);loader.setResponseType(\"arraybuffer\");loader.setRequestHeader(scope.requestHeader);loader.setWithCredentials(scope.withCredentials);loader.load(url,function(text){try{onLoad(scope.parse(text));}catch(e){if(onError){onError(e);}else{console.error(e);}scope.manager.itemError(url);}},onProgress,onError);}parse(data){function parseASCII(data2){var indices=[];var positions=[];var colors=[];var normals=[];var result;var patWord=/^[^\\d.\\s-]+/;var pat3Floats=/(\\-?\\d+\\.?[\\d\\-\\+e]*)\\s+(\\-?\\d+\\.?[\\d\\-\\+e]*)\\s+(\\-?\\d+\\.?[\\d\\-\\+e]*)/g;var patConnectivity=/^(\\d+)\\s+([\\s\\d]*)/;var patPOINTS=/^POINTS /;var patPOLYGONS=/^POLYGONS /;var patTRIANGLE_STRIPS=/^TRIANGLE_STRIPS /;var patPOINT_DATA=/^POINT_DATA[ ]+(\\d+)/;var patCELL_DATA=/^CELL_DATA[ ]+(\\d+)/;var patCOLOR_SCALARS=/^COLOR_SCALARS[ ]+(\\w+)[ ]+3/;var patNORMALS=/^NORMALS[ ]+(\\w+)[ ]+(\\w+)/;var inPointsSection=false;var inPolygonsSection=false;var inTriangleStripSection=false;var inPointDataSection=false;var inCellDataSection=false;var inColorSection=false;var inNormalsSection=false;var lines=data2.split(\"\\n\");for(var i2 in lines){var line=lines[i2].trim();if(line.indexOf(\"DATASET\")===0){var dataset=line.split(\" \")[1];if(dataset!==\"POLYDATA\")throw new Error(\"Unsupported DATASET type: \"+dataset);}else if(inPointsSection){while((result=pat3Floats.exec(line))!==null){if(patWord.exec(line)!==null)break;var x=parseFloat(result[1]);var y=parseFloat(result[2]);var z=parseFloat(result[3]);positions.push(x,y,z);}}else if(inPolygonsSection){if((result=patConnectivity.exec(line))!==null){var numVertices=parseInt(result[1]);var inds=result[2].split(/\\s+/);if(numVertices>=3){var i0=parseInt(inds[0]);var i1,i22;var k=1;for(var j=0;j=3){var i0,i1,i22;for(var j=0;j=buffer.byteLength){break;}}var geometry2=new BufferGeometry();geometry2.setIndex(new BufferAttribute(indices,1));geometry2.setAttribute(\"position\",new BufferAttribute(points,3));if(normals.length===points.length){geometry2.setAttribute(\"normal\",new BufferAttribute(normals,3));}return geometry2;}function Float32Concat(first,second){const firstLength=first.length,result=new Float32Array(firstLength+second.length);result.set(first);result.set(second,firstLength);return result;}function Int32Concat(first,second){var firstLength=first.length,result=new Int32Array(firstLength+second.length);result.set(first);result.set(second,firstLength);return result;}function parseXML(stringFile){function xmlToJson(xml){var obj={};if(xml.nodeType===1){if(xml.attributes){if(xml.attributes.length>0){obj[\"attributes\"]={};for(var j2=0;j20){throw new Error(\"Invalid string. Length must be a multiple of 4\");}placeHolders=b64[len2-2]===\"=\"?2:b64[len2-1]===\"=\"?1:0;arr2=new Arr(len2*3/4-placeHolders);l=placeHolders>0?len2-4:len2;var L=0;for(i3=0,j2=0;i3>16;arr2[L++]=(tmp&65280)>>8;arr2[L++]=tmp&255;}if(placeHolders===2){tmp=revLookup[b64.charCodeAt(i3)]<<2|revLookup[b64.charCodeAt(i3+1)]>>4;arr2[L++]=tmp&255;}else if(placeHolders===1){tmp=revLookup[b64.charCodeAt(i3)]<<10|revLookup[b64.charCodeAt(i3+1)]<<4|revLookup[b64.charCodeAt(i3+2)]>>2;arr2[L++]=tmp>>8&255;arr2[L++]=tmp&255;}return arr2;}function parseDataArray(ele,compressed2){var numBytes=0;if(json.attributes.header_type===\"UInt64\"){numBytes=8;}else if(json.attributes.header_type===\"UInt32\"){numBytes=4;}if(ele.attributes.format===\"binary\"&&compressed2){var rawData,content,byteData,blocks,cSizeStart,headerSize,padding,dataOffsets,currentOffset;if(ele.attributes.type===\"Float32\"){var txt=new Float32Array();}else if(ele.attributes.type===\"Int64\"){var txt=new Int32Array();}rawData=ele[\"#text\"];byteData=Base64toByteArray(rawData);blocks=byteData[0];for(var i3=1;i30?3-headerSize%3:0;headerSize=headerSize+padding;dataOffsets=[];currentOffset=headerSize;dataOffsets.push(currentOffset);cSizeStart=3*numBytes;for(var i3=0;i30){arr[dataArrayIndex].text=parseDataArray(arr[dataArrayIndex],compressed);}dataArrayIndex++;}switch(sections[sectionIndex]){case\"PointData\":var numberOfPoints=parseInt(piece.attributes.NumberOfPoints);var normalsName=section.attributes.Normals;if(numberOfPoints>0){for(var i2=0,len=arr.length;i20){var components=section.DataArray.attributes.NumberOfComponents;points=new Float32Array(numberOfPoints*components);points.set(section.DataArray.text,0);}break;case\"Strips\":var numberOfStrips=parseInt(piece.attributes.NumberOfStrips);if(numberOfStrips>0){var connectivity=new Int32Array(section.DataArray[0].text.length);var offset=new Int32Array(section.DataArray[1].text.length);connectivity.set(section.DataArray[0].text,0);offset.set(section.DataArray[1].text,0);var size2=numberOfStrips+connectivity.length;indices=new Uint32Array(3*size2-9*numberOfStrips);var indicesIndex=0;for(var i2=0,len=numberOfStrips;i20)len0=offset[i2-1];}for(var j=0,len1=offset[i2],len0=0;j0)len0=offset[i2-1];}}}break;case\"Polys\":var numberOfPolys=parseInt(piece.attributes.NumberOfPolys);if(numberOfPolys>0){var connectivity=new Int32Array(section.DataArray[0].text.length);var offset=new Int32Array(section.DataArray[1].text.length);connectivity.set(section.DataArray[0].text,0);offset.set(section.DataArray[1].text,0);var size2=numberOfPolys+connectivity.length;indices=new Uint32Array(3*size2-9*numberOfPolys);var indicesIndex=0,connectivityIndex=0;var i2=0,len=numberOfPolys,len0=0;while(i2{try{onLoad(this.parse(text));}catch(e){if(onError){onError(e);}else{console.error(e);}this.manager.itemError(url);}},onProgress,onError);}parse(str){str=str.replace(/^#.*?(\\n|\\r)/gm,\"\").replace(/^\\s*?(\\n|\\r)/gm,\"\").trim();const lines=str.split(/[\\n\\r]+/g);const gridLines=lines[0].trim().split(/\\s+/g).map(e=>parseFloat(e));const gridStep=gridLines[1]-gridLines[0];const size2=gridLines.length;for(let i2=1,l=gridLines.length;i2>8&255,value>>16&255,value>>24&255);}function loadARGBMip(buffer2,dataOffset2,width,height){const dataLength=width*height*4;const srcBuffer=new Uint8Array(buffer2,dataOffset2,dataLength);const byteArray=new Uint8Array(dataLength);let dst=0;let src=0;for(let y=0;y>1,1);height=Math.max(height>>1,1);}}return dds;}}class PVRLoader extends CompressedTextureLoader{constructor(manager){super(manager);}parse(buffer,loadMipmaps){const headerLengthInt=13;const header=new Uint32Array(buffer,0,headerLengthInt);const pvrDatas={buffer,header,loadMipmaps};if(header[0]===55727696){return _parseV3(pvrDatas);}else if(header[11]===559044176){return _parseV2(pvrDatas);}else{console.error(\"THREE.PVRLoader: Unknown PVR format.\");}}}function _parseV3(pvrDatas){const header=pvrDatas.header;let bpp,format;const metaLen=header[12],pixelFormat=header[2],height=header[6],width=header[7],numFaces=header[10],numMipmaps=header[11];switch(pixelFormat){case 0:bpp=2;format=RGB_PVRTC_2BPPV1_Format;break;case 1:bpp=2;format=RGBA_PVRTC_2BPPV1_Format;break;case 2:bpp=4;format=RGB_PVRTC_4BPPV1_Format;break;case 3:bpp=4;format=RGBA_PVRTC_4BPPV1_Format;break;default:console.error(\"THREE.PVRLoader: Unsupported PVR format:\",pixelFormat);}pvrDatas.dataPtr=52+metaLen;pvrDatas.bpp=bpp;pvrDatas.format=format;pvrDatas.width=width;pvrDatas.height=height;pvrDatas.numSurfaces=numFaces;pvrDatas.numMipmaps=numMipmaps;pvrDatas.isCubemap=numFaces===6;return _extract(pvrDatas);}function _parseV2(pvrDatas){const header=pvrDatas.header;const headerLength=header[0],height=header[1],width=header[2],numMipmaps=header[3],flags=header[4],bitmaskAlpha=header[10],numSurfs=header[12];const TYPE_MASK=255;const PVRTC_2=24,PVRTC_4=25;const formatFlags=flags&TYPE_MASK;let bpp,format;const _hasAlpha=bitmaskAlpha>0;if(formatFlags===PVRTC_4){format=_hasAlpha?RGBA_PVRTC_4BPPV1_Format:RGB_PVRTC_4BPPV1_Format;bpp=4;}else if(formatFlags===PVRTC_2){format=_hasAlpha?RGBA_PVRTC_2BPPV1_Format:RGB_PVRTC_2BPPV1_Format;bpp=2;}else{console.error(\"THREE.PVRLoader: Unknown PVR format:\",formatFlags);}pvrDatas.dataPtr=headerLength;pvrDatas.bpp=bpp;pvrDatas.format=format;pvrDatas.width=width;pvrDatas.height=height;pvrDatas.numSurfaces=numSurfs;pvrDatas.numMipmaps=numMipmaps+1;pvrDatas.isCubemap=numSurfs===6;return _extract(pvrDatas);}function _extract(pvrDatas){const pvr={mipmaps:[],width:pvrDatas.width,height:pvrDatas.height,format:pvrDatas.format,mipmapCount:pvrDatas.numMipmaps,isCubemap:pvrDatas.isCubemap};const buffer=pvrDatas.buffer;let dataOffset=pvrDatas.dataPtr,dataSize=0,blockSize=0,blockWidth=0,blockHeight=0,widthBlocks=0,heightBlocks=0;const bpp=pvrDatas.bpp,numSurfs=pvrDatas.numSurfaces;if(bpp===2){blockWidth=8;blockHeight=4;}else{blockWidth=4;blockHeight=4;}blockSize=blockWidth*blockHeight*bpp/8;pvr.mipmaps.length=pvrDatas.numMipmaps*numSurfs;let mipLevel=0;while(mipLevel>mipLevel,sHeight=pvrDatas.height>>mipLevel;widthBlocks=sWidth/blockWidth;heightBlocks=sHeight/blockHeight;if(widthBlocks<2)widthBlocks=2;if(heightBlocks<2)heightBlocks=2;dataSize=widthBlocks*heightBlocks*blockSize;for(let surfIndex=0;surfIndex0){line.extruding=delta(state.e,line.e)>0;if(currentLayer==void 0||line.z!=currentLayer.z){newLayer(line);}}addSegment(state,line);state=line;}else if(cmd===\"G2\"||cmd===\"G3\");else if(cmd===\"G90\"){state.relative=false;}else if(cmd===\"G91\"){state.relative=true;}else if(cmd===\"G92\"){let line=state;line.x=args.x!==void 0?args.x:line.x;line.y=args.y!==void 0?args.y:line.y;line.z=args.z!==void 0?args.z:line.z;line.e=args.e!==void 0?args.e:line.e;state=line;}else;}function addObject(vertex,extruding,i2){let geometry2=new BufferGeometry();geometry2.setAttribute(\"position\",new Float32BufferAttribute(vertex,3));let segments=new LineSegments(geometry2,extruding?extrudingMaterial:pathMaterial);segments.name=\"layer\"+i2;object.add(segments);}const object=new Group();object.name=\"gcode\";if(this.splitLayer){for(let i2=0;i2{if(_taskCache$2.has(buffer)){const cachedTask=_taskCache$2.get(buffer);return cachedTask.promise.then(onLoad).catch(onError);}this._createTexture([buffer]).then(function(_texture){texture.copy(_texture);texture.needsUpdate=true;if(onLoad)onLoad(texture);}).catch(onError);},onProgress,onError);return texture;}/** Low-level transcoding API, exposed for use by KTX2Loader. */parseInternalAsync(options){const{levels}=options;const buffers=/* @__PURE__ */new Set();for(let i2=0;i2}\n */_createTexture(buffers,config={}){let worker;let taskID;const taskConfig=config;let taskCost=0;for(let i2=0;i2{worker=_worker;taskID=this.workerNextTaskID++;return new Promise((resolve,reject)=>{worker._callbacks[taskID]={resolve,reject};worker.postMessage({type:\"transcode\",id:taskID,buffers,taskConfig},buffers);});}).then(message=>{const{mipmaps,width,height,format}=message;const texture=new CompressedTexture(mipmaps,width,height,format,UnsignedByteType);texture.minFilter=mipmaps.length===1?LinearFilter:LinearMipmapLinearFilter;texture.magFilter=LinearFilter;texture.generateMipmaps=false;texture.needsUpdate=true;return texture;});texturePending.catch(()=>true).then(()=>{if(worker&&taskID){worker._taskLoad-=taskCost;delete worker._callbacks[taskID];}});_taskCache$2.set(buffers[0],{promise:texturePending});return texturePending;}_initTranscoder(){if(!this.transcoderPending){const jsLoader=new FileLoader(this.manager);jsLoader.setPath(this.transcoderPath);jsLoader.setWithCredentials(this.withCredentials);const jsContent=new Promise((resolve,reject)=>{jsLoader.load(\"basis_transcoder.js\",resolve,void 0,reject);});const binaryLoader=new FileLoader(this.manager);binaryLoader.setPath(this.transcoderPath);binaryLoader.setResponseType(\"arraybuffer\");binaryLoader.setWithCredentials(this.withCredentials);const binaryContent=new Promise((resolve,reject)=>{binaryLoader.load(\"basis_transcoder.wasm\",resolve,void 0,reject);});this.transcoderPending=Promise.all([jsContent,binaryContent]).then(([jsContent2,binaryContent2])=>{const fn=_BasisTextureLoader.BasisWorker.toString();const body=[\"/* constants */\",\"let _EngineFormat = \"+JSON.stringify(_BasisTextureLoader.EngineFormat),\"let _TranscoderFormat = \"+JSON.stringify(_BasisTextureLoader.TranscoderFormat),\"let _BasisFormat = \"+JSON.stringify(_BasisTextureLoader.BasisFormat),\"/* basis_transcoder.js */\",jsContent2,\"/* worker */\",fn.substring(fn.indexOf(\"{\")+1,fn.lastIndexOf(\"}\"))].join(\"\\n\");this.workerSourceURL=URL.createObjectURL(new Blob([body]));this.transcoderBinary=binaryContent2;});}return this.transcoderPending;}_allocateWorker(taskCost){return this._initTranscoder().then(()=>{if(this.workerPool.lengthb2._taskLoad?-1:1;});}const worker=this.workerPool[this.workerPool.length-1];worker._taskLoad+=taskCost;return worker;});}dispose(){for(let i2=0;i2{try{const{width,height,hasAlpha,mipmaps,format}=message.taskConfig.lowLevel?transcodeLowLevel(message.taskConfig):transcode(message.buffers[0]);const buffers=[];for(let i2=0;i2{BasisModule={wasmBinary,onRuntimeInitialized:resolve};BASIS(BasisModule);}).then(()=>{BasisModule.initializeBasis();});}function transcodeLowLevel(taskConfig){const{basisFormat,width,height,hasAlpha}=taskConfig;const{transcoderFormat,engineFormat}=getTranscoderFormat(basisFormat,width,height,hasAlpha);const blockByteLength=BasisModule.getBytesPerBlockOrPixel(transcoderFormat);assert(BasisModule.isFormatSupported(transcoderFormat),\"THREE.BasisTextureLoader: Unsupported format.\");const mipmaps=[];if(basisFormat===BasisFormat.ETC1S){const transcoder=new BasisModule.LowLevelETC1SImageTranscoder();const{endpointCount,endpointsData,selectorCount,selectorsData,tablesData}=taskConfig.globalData;try{let ok;ok=transcoder.decodePalettes(endpointCount,endpointsData,selectorCount,selectorsData);assert(ok,\"THREE.BasisTextureLoader: decodePalettes() failed.\");ok=transcoder.decodeTables(tablesData);assert(ok,\"THREE.BasisTextureLoader: decodeTables() failed.\");for(let i2=0;i2=chunk.end){return 0;}this.position=chunk.cur;try{const next=this.readChunk(data);chunk.cur+=next.size;return next.id;}catch(e){this.debugMessage(\"Unable to read chunk at \"+this.position);return 0;}}/**\n * Reset dataview position.\n *\n * @method resetPosition\n */resetPosition(){this.position-=6;}/**\n * Read byte value.\n *\n * @method readByte\n * @param {DataView} data Dataview to read data from.\n * @return {Number} Data read from the dataview.\n */readByte(data){const v=data.getUint8(this.position,true);this.position+=1;return v;}/**\n * Read 32 bit float value.\n *\n * @method readFloat\n * @param {DataView} data Dataview to read data from.\n * @return {Number} Data read from the dataview.\n */readFloat(data){try{const v=data.getFloat32(this.position,true);this.position+=4;return v;}catch(e){this.debugMessage(e+\" \"+this.position+\" \"+data.byteLength);}}/**\n * Read 32 bit signed integer value.\n *\n * @method readInt\n * @param {DataView} data Dataview to read data from.\n * @return {Number} Data read from the dataview.\n */readInt(data){const v=data.getInt32(this.position,true);this.position+=4;return v;}/**\n * Read 16 bit signed integer value.\n *\n * @method readShort\n * @param {DataView} data Dataview to read data from.\n * @return {Number} Data read from the dataview.\n */readShort(data){const v=data.getInt16(this.position,true);this.position+=2;return v;}/**\n * Read 64 bit unsigned integer value.\n *\n * @method readDWord\n * @param {DataView} data Dataview to read data from.\n * @return {Number} Data read from the dataview.\n */readDWord(data){const v=data.getUint32(this.position,true);this.position+=4;return v;}/**\n * Read 32 bit unsigned integer value.\n *\n * @method readWord\n * @param {DataView} data Dataview to read data from.\n * @return {Number} Data read from the dataview.\n */readWord(data){const v=data.getUint16(this.position,true);this.position+=2;return v;}/**\n * Read string value.\n *\n * @method readString\n * @param {DataView} data Dataview to read data from.\n * @param {Number} maxLength Max size of the string to be read.\n * @return {String} Data read from the dataview.\n */readString(data,maxLength){let s=\"\";for(let i2=0;i2\n #include \n #include \n #include \n #include \n\n void main() {\n #include \n\n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\n gl_Position = projectionMatrix * mvPosition;\n\n // Transform the line segment ends and control points into camera clip space\n vec4 c0 = projectionMatrix * modelViewMatrix * vec4(control0, 1.0);\n vec4 c1 = projectionMatrix * modelViewMatrix * vec4(control1, 1.0);\n vec4 p0 = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n vec4 p1 = projectionMatrix * modelViewMatrix * vec4(position + direction, 1.0);\n\n c0.xy /= c0.w;\n c1.xy /= c1.w;\n p0.xy /= p0.w;\n p1.xy /= p1.w;\n\n // Get the direction of the segment and an orthogonal vector\n vec2 dir = p1.xy - p0.xy;\n vec2 norm = vec2(-dir.y, dir.x);\n\n // Get control point directions from the line\n vec2 c0dir = c0.xy - p1.xy;\n vec2 c1dir = c1.xy - p1.xy;\n\n // If the vectors to the controls points are pointed in different directions away\n // from the line segment then the line should not be drawn.\n float d0 = dot(normalize(norm), normalize(c0dir));\n float d1 = dot(normalize(norm), normalize(c1dir));\n discardFlag = float(sign(d0) != sign(d1));\n\n #include \n #include \n #include \n }\n `,fragmentShader:/* glsl */`\n uniform vec3 diffuse;\n uniform float opacity;\n varying float discardFlag;\n\n #include \n #include \n #include \n #include \n #include \n\n void main() {\n if (discardFlag > 0.5) discard;\n\n #include \n vec3 outgoingLight = vec3(0.0);\n vec4 diffuseColor = vec4(diffuse, opacity);\n #include \n #include \n outgoingLight = diffuseColor.rgb; // simple shader\n gl_FragColor = vec4(outgoingLight, diffuseColor.a);\n #include \n #include <${parseInt(REVISION.replace(/\\D+/g,\"\"))>=154?\"colorspace_fragment\":\"encodings_fragment\"}>\n #include \n #include \n }\n `});Object.defineProperties(this,{opacity:{get:function(){return this.uniforms.opacity.value;},set:function(value){this.uniforms.opacity.value=value;}},color:{get:function(){return this.uniforms.diffuse.value;}}});this.setValues(parameters);this.isLDrawConditionalLineMaterial=true;}}class ConditionalLineSegments extends LineSegments{constructor(geometry2,material2){super(geometry2,material2);this.isConditionalLine=true;}}function generateFaceNormals(faces){for(let i2=0,l=faces.length;i2d1){[d0,d1]=[d1,d0];}info.distances.push(d0,d1);}}for(let i2=0,l=faces.length;i2d1){[d0,d1]=[d1,d0];}let found=false;for(let i3=0,l2=distances.length;i3=distances[i3]&&d1<=distances[i3+1]){found=true;break;}}if(found){continue;}}}const info={index,tri};halfEdgeList[hash]=info;}}while(true){let halfEdge=null;for(const key in halfEdgeList){halfEdge=halfEdgeList[key];break;}if(halfEdge===null){break;}const queue=[halfEdge];while(queue.length>0){const tri=queue.pop().tri;const vertices=tri.vertices;const vertNormals=tri.normals;const faceNormal=tri.faceNormal;const vertCount=vertices.length;for(let i2=0;i2=this.lineLength;}setToEnd(){this.currentCharIndex=this.lineLength;}getLineNumberString(){return this.lineNumber>=0?\" at line \"+this.lineNumber:\"\";}}class LDrawParsedCache{constructor(loader){this.loader=loader;this._cache={};}cloneResult(original){const result={};result.faces=original.faces.map(face=>{return{colorCode:face.colorCode,material:face.material,vertices:face.vertices.map(v=>v.clone()),normals:face.normals.map(()=>null),faceNormal:null};});result.conditionalSegments=original.conditionalSegments.map(face=>{return{colorCode:face.colorCode,material:face.material,vertices:face.vertices.map(v=>v.clone()),controlPoints:face.controlPoints.map(v=>v.clone())};});result.lineSegments=original.lineSegments.map(face=>{return{colorCode:face.colorCode,material:face.material,vertices:face.vertices.map(v=>v.clone())};});result.type=original.type;result.category=original.category;result.keywords=original.keywords;result.subobjects=original.subobjects;result.totalFaces=original.totalFaces;result.startingConstructionStep=original.startingConstructionStep;result.materials=original.materials;result.group=null;return result;}async fetchData(fileName){let triedLowerCase=false;let locationState=FILE_LOCATION_AS_IS;while(locationState!==FILE_LOCATION_NOT_FOUND){let subobjectURL=fileName;switch(locationState){case FILE_LOCATION_AS_IS:locationState=locationState+1;break;case FILE_LOCATION_TRY_PARTS:subobjectURL=\"parts/\"+subobjectURL;locationState=locationState+1;break;case FILE_LOCATION_TRY_P:subobjectURL=\"p/\"+subobjectURL;locationState=locationState+1;break;case FILE_LOCATION_TRY_MODELS:subobjectURL=\"models/\"+subobjectURL;locationState=locationState+1;break;case FILE_LOCATION_TRY_RELATIVE:subobjectURL=fileName.substring(0,fileName.lastIndexOf(\"/\")+1)+subobjectURL;locationState=locationState+1;break;case FILE_LOCATION_TRY_ABSOLUTE:if(triedLowerCase){locationState=FILE_LOCATION_NOT_FOUND;}else{fileName=fileName.toLowerCase();subobjectURL=fileName;triedLowerCase=true;locationState=FILE_LOCATION_AS_IS;}break;}const loader=this.loader;const fileLoader=new FileLoader(loader.manager);fileLoader.setPath(loader.partsLibraryPath);fileLoader.setRequestHeader(loader.requestHeader);fileLoader.setWithCredentials(loader.withCredentials);try{const text=await fileLoader.loadAsync(subobjectURL);return text;}catch(e){continue;}}throw new Error('LDrawLoader: Subobject \"'+fileName+'\" could not be loaded.');}parse(text,fileName=null){const loader=this.loader;const faces=[];const lineSegments=[];const conditionalSegments=[];const subobjects=[];const materials={};const getLocalMaterial=colorCode=>{return materials[colorCode]||null;};let type=\"Model\";let category=null;let keywords=null;let totalFaces=0;if(text.indexOf(\"\\r\\n\")!==-1){text=text.replace(/\\r\\n/g,\"\\n\");}const lines=text.split(\"\\n\");const numLines=lines.length;let parsingEmbeddedFiles=false;let currentEmbeddedFileName=null;let currentEmbeddedText=null;let bfcCertified=false;let bfcCCW=true;let bfcInverted=false;let bfcCull=true;let startingConstructionStep=false;for(let lineIndex=0;lineIndex0){if(!keywords){keywords=[];}newKeywords.forEach(function(keyword){keywords.push(keyword.trim());});}break;case\"FILE\":if(lineIndex>0){parsingEmbeddedFiles=true;currentEmbeddedFileName=lp.getRemainingString();currentEmbeddedText=\"\";bfcCertified=false;bfcCCW=true;}break;case\"BFC\":while(!lp.isAtTheEnd()){const token=lp.getToken();switch(token){case\"CERTIFY\":case\"NOCERTIFY\":bfcCertified=token===\"CERTIFY\";bfcCCW=true;break;case\"CW\":case\"CCW\":bfcCCW=token===\"CCW\";break;case\"INVERTNEXT\":bfcInverted=true;break;case\"CLIP\":case\"NOCLIP\":bfcCull=token===\"CLIP\";break;default:console.warn('THREE.LDrawLoader: BFC directive \"'+token+'\" is unknown.');break;}}break;case\"STEP\":startingConstructionStep=true;break;}}break;case\"1\":colorCode=lp.getToken();material2=getLocalMaterial(colorCode);const posX=parseFloat(lp.getToken());const posY=parseFloat(lp.getToken());const posZ=parseFloat(lp.getToken());const m0=parseFloat(lp.getToken());const m1=parseFloat(lp.getToken());const m2=parseFloat(lp.getToken());const m3=parseFloat(lp.getToken());const m4=parseFloat(lp.getToken());const m5=parseFloat(lp.getToken());const m6=parseFloat(lp.getToken());const m7=parseFloat(lp.getToken());const m8=parseFloat(lp.getToken());const matrix2=new Matrix4().set(m0,m1,m2,posX,m3,m4,m5,posY,m6,m7,m8,posZ,0,0,0,1);let fileName2=lp.getRemainingString().trim().replace(/\\\\/g,\"/\");if(loader.fileMap[fileName2]){fileName2=loader.fileMap[fileName2];}else{if(fileName2.startsWith(\"s/\")){fileName2=\"parts/\"+fileName2;}else if(fileName2.startsWith(\"48/\")){fileName2=\"p/\"+fileName2;}}subobjects.push({material:material2,colorCode,matrix:matrix2,fileName:fileName2,inverted:bfcInverted,startingConstructionStep});bfcInverted=false;break;case\"2\":colorCode=lp.getToken();material2=getLocalMaterial(colorCode);v0=lp.getVector();v12=lp.getVector();segment={material:material2,colorCode,vertices:[v0,v12]};lineSegments.push(segment);break;case\"5\":colorCode=lp.getToken();material2=getLocalMaterial(colorCode);v0=lp.getVector();v12=lp.getVector();c0=lp.getVector();c1=lp.getVector();segment={material:material2,colorCode,vertices:[v0,v12],controlPoints:[c0,c1]};conditionalSegments.push(segment);break;case\"3\":colorCode=lp.getToken();material2=getLocalMaterial(colorCode);ccw=bfcCCW;doubleSided=!bfcCertified||!bfcCull;if(ccw===true){v0=lp.getVector();v12=lp.getVector();v2=lp.getVector();}else{v2=lp.getVector();v12=lp.getVector();v0=lp.getVector();}faces.push({material:material2,colorCode,faceNormal:null,vertices:[v0,v12,v2],normals:[null,null,null]});totalFaces++;if(doubleSided===true){faces.push({material:material2,colorCode,faceNormal:null,vertices:[v2,v12,v0],normals:[null,null,null]});totalFaces++;}break;case\"4\":colorCode=lp.getToken();material2=getLocalMaterial(colorCode);ccw=bfcCCW;doubleSided=!bfcCertified||!bfcCull;if(ccw===true){v0=lp.getVector();v12=lp.getVector();v2=lp.getVector();v3=lp.getVector();}else{v3=lp.getVector();v2=lp.getVector();v12=lp.getVector();v0=lp.getVector();}faces.push({material:material2,colorCode,faceNormal:null,vertices:[v0,v12,v2,v3],normals:[null,null,null,null]});totalFaces+=2;if(doubleSided===true){faces.push({material:material2,colorCode,faceNormal:null,vertices:[v3,v2,v12,v0],normals:[null,null,null,null]});totalFaces+=2;}break;default:throw new Error('LDrawLoader: Unknown line type \"'+lineType+'\"'+lp.getLineNumberString()+\".\");}}if(parsingEmbeddedFiles){this.setData(currentEmbeddedFileName,currentEmbeddedText);}return{faces,conditionalSegments,lineSegments,type,category,keywords,subobjects,totalFaces,startingConstructionStep,materials,fileName,group:null};}// returns an (optionally cloned) instance of the data\ngetData(fileName,clone2=true){const key=fileName.toLowerCase();const result=this._cache[key];if(result===null||result instanceof Promise){return null;}if(clone2){return this.cloneResult(result);}else{return result;}}// kicks off a fetch and parse of the requested data if it hasn't already been loaded. Returns when\n// the data is ready to use and can be retrieved synchronously with \"getData\".\nasync ensureDataLoaded(fileName){const key=fileName.toLowerCase();if(!(key in this._cache)){this._cache[key]=this.fetchData(fileName).then(text=>{const info=this.parse(text,fileName);this._cache[key]=info;return info;});}await this._cache[key];}// sets the data in the cache from parsed data\nsetData(fileName,text){const key=fileName.toLowerCase();this._cache[key]=this.parse(text,fileName);}}function getMaterialFromCode(colorCode,parentColorCode,materialHierarchy,forEdge){const isPassthrough=!forEdge&&colorCode===MAIN_COLOUR_CODE||forEdge&&colorCode===MAIN_EDGE_COLOUR_CODE;if(isPassthrough){colorCode=parentColorCode;}return materialHierarchy[colorCode]||null;}class LDrawPartsGeometryCache{constructor(loader){this.loader=loader;this.parseCache=new LDrawParsedCache(loader);this._cache={};}// Convert the given file information into a mesh by processing subobjects.\nasync processIntoMesh(info){const loader=this.loader;const parseCache=this.parseCache;const faceMaterials=/* @__PURE__ */new Set();const processInfoSubobjects=async(info2,subobject=null)=>{const subobjects=info2.subobjects;const promises=[];for(let i2=0,l=subobjects.length;i2{const subobjectInfo=parseCache.getData(subobject2.fileName,false);if(!isPrimitiveType(subobjectInfo.type)){return this.loadModel(subobject2.fileName).catch(error=>{console.warn(error);return null;});}return processInfoSubobjects(parseCache.getData(subobject2.fileName),subobject2);});promises.push(promise);}const group2=new Group();group2.userData.category=info2.category;group2.userData.keywords=info2.keywords;info2.group=group2;const subobjectInfos=await Promise.all(promises);for(let i2=0,l=subobjectInfos.length;i21;generateFaceNormals(info.faces);smoothNormals(info.faces,info.lineSegments,checkSubSegments);}const group=info.group;if(info.faces.length>0){group.add(createObject(info.faces,3,false,info.totalFaces));}if(info.lineSegments.length>0){group.add(createObject(info.lineSegments,2));}if(info.conditionalSegments.length>0){group.add(createObject(info.conditionalSegments,2,true));}return group;}hasCachedModel(fileName){return fileName!==null&&fileName.toLowerCase()in this._cache;}async getCachedModel(fileName){if(fileName!==null&&this.hasCachedModel(fileName)){const key=fileName.toLowerCase();const group=await this._cache[key];return group.clone();}else{return null;}}// Loads and parses the model with the given file name. Returns a cached copy if available.\nasync loadModel(fileName){const parseCache=this.parseCache;const key=fileName.toLowerCase();if(this.hasCachedModel(fileName)){return this.getCachedModel(fileName);}else{await parseCache.ensureDataLoaded(fileName);const info=parseCache.getData(fileName);const promise=this.processIntoMesh(info);if(this.hasCachedModel(fileName)){return this.getCachedModel(fileName);}if(isPartType(info.type)){this._cache[key]=promise;}const group=await promise;return group.clone();}}// parses the given model text into a renderable object. Returns cached copy if available.\nasync parseModel(text){const parseCache=this.parseCache;const info=parseCache.parse(text);if(isPartType(info.type)&&this.hasCachedModel(info.fileName)){return this.getCachedModel(info.fileName);}return this.processIntoMesh(info);}}function sortByMaterial(a2,b2){if(a2.colorCode===b2.colorCode){return 0;}if(a2.colorCode0){bufferGeometry.addGroup(index0,Infinity,materials.length-1);}bufferGeometry.setAttribute(\"position\",new BufferAttribute(positions,3));if(normals!==null){bufferGeometry.setAttribute(\"normal\",new BufferAttribute(normals,3));}let object3d=null;if(elementSize===2){if(isConditionalSegments){object3d=new ConditionalLineSegments(bufferGeometry,materials.length===1?materials[0]:materials);}else{object3d=new LineSegments(bufferGeometry,materials.length===1?materials[0]:materials);}}else if(elementSize===3){object3d=new Mesh(bufferGeometry,materials.length===1?materials[0]:materials);}if(isConditionalSegments){object3d.isConditionalLine=true;const controlArray0=new Float32Array(elements.length*3*2);const controlArray1=new Float32Array(elements.length*3*2);const directionArray=new Float32Array(elements.length*3*2);for(let i2=0,l=elements.length;i2{this.partsCache.parseModel(text,this.materialLibrary).then(group=>{this.applyMaterialsToMesh(group,MAIN_COLOUR_CODE,this.materialLibrary,true);this.computeConstructionSteps(group);onLoad(group);}).catch(onError);},onProgress,onError);}parse(text,onLoad){this.partsCache.parseModel(text,this.materialLibrary).then(group=>{this.computeConstructionSteps(group);onLoad(group);});}setMaterials(materials){this.materialLibrary={};this.materials=[];for(let i2=0,l=materials.length;i2{if(c.isMesh||c.isLineSegments){if(Array.isArray(c.material)){for(let i2=0,l=c.material.length;i2{if(c.isGroup){if(c.userData.startingConstructionStep){stepNumber++;}c.userData.constructionStep=stepNumber;}});model.userData.numConstructionSteps=stepNumber+1;}}class SVGLoader extends Loader{constructor(manager){super(manager);this.defaultDPI=90;this.defaultUnit=\"px\";}load(url,onLoad,onProgress,onError){const scope=this;const loader=new FileLoader(scope.manager);loader.setPath(scope.path);loader.setRequestHeader(scope.requestHeader);loader.setWithCredentials(scope.withCredentials);loader.load(url,function(text){try{onLoad(scope.parse(text));}catch(e){if(onError){onError(e);}else{console.error(e);}scope.manager.itemError(url);}},onProgress,onError);}parse(text){const scope=this;function parseNode(node,style){if(node.nodeType!==1)return;const transform=getNodeTransform(node);let traverseChildNodes=true;let path=null;switch(node.nodeName){case\"svg\":break;case\"style\":parseCSSStylesheet(node);break;case\"g\":style=parseStyle(node,style);break;case\"path\":style=parseStyle(node,style);if(node.hasAttribute(\"d\"))path=parsePathNode(node);break;case\"rect\":style=parseStyle(node,style);path=parseRectNode(node);break;case\"polygon\":style=parseStyle(node,style);path=parsePolygonNode(node);break;case\"polyline\":style=parseStyle(node,style);path=parsePolylineNode(node);break;case\"circle\":style=parseStyle(node,style);path=parseCircleNode(node);break;case\"ellipse\":style=parseStyle(node,style);path=parseEllipseNode(node);break;case\"line\":style=parseStyle(node,style);path=parseLineNode(node);break;case\"defs\":traverseChildNodes=false;break;case\"mask\":traverseChildNodes=false;break;case\"use\":style=parseStyle(node,style);const usedNodeId=node.href.baseVal.substring(1);const usedNode=node.viewportElement.getElementById(usedNodeId);if(usedNode){parseNode(usedNode,style);}else{console.warn(\"SVGLoader: 'use node' references non-existent node id: \"+usedNodeId);}break;}if(path){if(style.fill!==void 0&&style.fill!==\"none\"){path.color.setStyle(style.fill);}transformPath(path,currentTransform);paths.push(path);path.userData={node,style};}if(traverseChildNodes){const nodes=node.childNodes;for(let i2=0;i20){currentTransform.copy(transformStack[transformStack.length-1]);}else{currentTransform.identity();}}}function parsePathNode(node){const path=new ShapePath();const point=new Vector2();const control=new Vector2();const firstPoint=new Vector2();let isFirstPoint=true;let doSetFirstPoint=false;const d=node.getAttribute(\"d\");const commands=d.match(/[a-df-z][^a-df-z]*/gi);for(let i2=0,l=commands.length;i20){point.copy(firstPoint);path.currentPath.currentPoint.copy(point);isFirstPoint=true;}break;default:console.warn(command);}doSetFirstPoint=false;}return path;}function parseCSSStylesheet(node){if(!node.sheet||!node.sheet.cssRules||!node.sheet.cssRules.length)return;for(let i2=0;i2i3.trim());for(let j=0;j1){const s=Math.sqrt(cr);rx=s*rx;ry=s*ry;rxs=rx*rx;rys=ry*ry;}const dq=rxs*y1ps+rys*x1ps;const pq=(rxs*rys-dq)/dq;let q=Math.sqrt(Math.max(0,pq));if(large_arc_flag===sweep_flag)q=-q;const cxp=q*rx*y1p/ry;const cyp=-q*ry*x1p/rx;const cx=Math.cos(x_axis_rotation)*cxp-Math.sin(x_axis_rotation)*cyp+(start.x+end.x)/2;const cy=Math.sin(x_axis_rotation)*cxp+Math.cos(x_axis_rotation)*cyp+(start.y+end.y)/2;const theta=svgAngle(1,0,(x1p-cxp)/rx,(y1p-cyp)/ry);const delta=svgAngle((x1p-cxp)/rx,(y1p-cyp)/ry,(-x1p-cxp)/rx,(-y1p-cyp)/ry)%(Math.PI*2);path.currentPath.absellipse(cx,cy,rx,ry,theta,theta+delta,sweep_flag===0,x_axis_rotation);}function svgAngle(ux,uy,vx,vy){const dot=ux*vx+uy*vy;const len=Math.sqrt(ux*ux+uy*uy)*Math.sqrt(vx*vx+vy*vy);let ang=Math.acos(Math.max(-1,Math.min(1,dot/len)));if(ux*vy-uy*vx<0)ang=-ang;return ang;}function parseRectNode(node){const x=parseFloatWithUnits(node.getAttribute(\"x\")||0);const y=parseFloatWithUnits(node.getAttribute(\"y\")||0);const rx=parseFloatWithUnits(node.getAttribute(\"rx\")||node.getAttribute(\"ry\")||0);const ry=parseFloatWithUnits(node.getAttribute(\"ry\")||node.getAttribute(\"rx\")||0);const w=parseFloatWithUnits(node.getAttribute(\"width\"));const h=parseFloatWithUnits(node.getAttribute(\"height\"));const bci=1-0.551915024494;const path=new ShapePath();path.moveTo(x+rx,y);path.lineTo(x+w-rx,y);if(rx!==0||ry!==0){path.bezierCurveTo(x+w-rx*bci,y,x+w,y+ry*bci,x+w,y+ry);}path.lineTo(x+w,y+h-ry);if(rx!==0||ry!==0){path.bezierCurveTo(x+w,y+h-ry*bci,x+w-rx*bci,y+h,x+w-rx,y+h);}path.lineTo(x+rx,y+h);if(rx!==0||ry!==0){path.bezierCurveTo(x+rx*bci,y+h,x,y+h-ry*bci,x,y+h-ry);}path.lineTo(x,y+ry);if(rx!==0||ry!==0){path.bezierCurveTo(x,y+ry*bci,x+rx*bci,y,x+rx,y);}return path;}function parsePolygonNode(node){function iterator(match,a2,b2){const x=parseFloatWithUnits(a2);const y=parseFloatWithUnits(b2);if(index===0){path.moveTo(x,y);}else{path.lineTo(x,y);}index++;}const regex=/(-?[\\d\\.?]+)[,|\\s](-?[\\d\\.?]+)/g;const path=new ShapePath();let index=0;node.getAttribute(\"points\").replace(regex,iterator);path.currentPath.autoClose=true;return path;}function parsePolylineNode(node){function iterator(match,a2,b2){const x=parseFloatWithUnits(a2);const y=parseFloatWithUnits(b2);if(index===0){path.moveTo(x,y);}else{path.lineTo(x,y);}index++;}const regex=/(-?[\\d\\.?]+)[,|\\s](-?[\\d\\.?]+)/g;const path=new ShapePath();let index=0;node.getAttribute(\"points\").replace(regex,iterator);path.currentPath.autoClose=false;return path;}function parseCircleNode(node){const x=parseFloatWithUnits(node.getAttribute(\"cx\")||0);const y=parseFloatWithUnits(node.getAttribute(\"cy\")||0);const r=parseFloatWithUnits(node.getAttribute(\"r\")||0);const subpath=new Path();subpath.absarc(x,y,r,0,Math.PI*2);const path=new ShapePath();path.subPaths.push(subpath);return path;}function parseEllipseNode(node){const x=parseFloatWithUnits(node.getAttribute(\"cx\")||0);const y=parseFloatWithUnits(node.getAttribute(\"cy\")||0);const rx=parseFloatWithUnits(node.getAttribute(\"rx\")||0);const ry=parseFloatWithUnits(node.getAttribute(\"ry\")||0);const subpath=new Path();subpath.absellipse(x,y,rx,ry,0,Math.PI*2);const path=new ShapePath();path.subPaths.push(subpath);return path;}function parseLineNode(node){const x1=parseFloatWithUnits(node.getAttribute(\"x1\")||0);const y1=parseFloatWithUnits(node.getAttribute(\"y1\")||0);const x2=parseFloatWithUnits(node.getAttribute(\"x2\")||0);const y2=parseFloatWithUnits(node.getAttribute(\"y2\")||0);const path=new ShapePath();path.moveTo(x1,y1);path.lineTo(x2,y2);path.currentPath.autoClose=false;return path;}function parseStyle(node,style){style=Object.assign({},style);let stylesheetStyles={};if(node.hasAttribute(\"class\")){const classSelectors=node.getAttribute(\"class\").split(/\\s/).filter(Boolean).map(i2=>i2.trim());for(let i2=0;i20){transform.premultiply(transformStack[transformStack.length-1]);}currentTransform.copy(transform);transformStack.push(transform);return transform;}function parseNodeTransform(node){const transform=new Matrix3();const currentTransform2=tempTransform0;if(node.nodeName===\"use\"&&(node.hasAttribute(\"x\")||node.hasAttribute(\"y\"))){const tx=parseFloatWithUnits(node.getAttribute(\"x\"));const ty=parseFloatWithUnits(node.getAttribute(\"y\"));transform.translate(tx,ty);}if(node.hasAttribute(\"transform\")){const transformsTexts=node.getAttribute(\"transform\").split(\")\");for(let tIndex=transformsTexts.length-1;tIndex>=0;tIndex--){const transformText=transformsTexts[tIndex].trim();if(transformText===\"\")continue;const openParPos=transformText.indexOf(\"(\");const closeParPos=transformText.length;if(openParPos>0&&openParPos=1){const tx=array[0];let ty=tx;if(array.length>=2){ty=array[1];}currentTransform2.translate(tx,ty);}break;case\"rotate\":if(array.length>=1){let angle=0;let cx=0;let cy=0;angle=-array[0]*Math.PI/180;if(array.length>=3){cx=array[1];cy=array[2];}tempTransform1.identity().translate(-cx,-cy);tempTransform2.identity().rotate(angle);tempTransform3.multiplyMatrices(tempTransform2,tempTransform1);tempTransform1.identity().translate(cx,cy);currentTransform2.multiplyMatrices(tempTransform1,tempTransform3);}break;case\"scale\":if(array.length>=1){const scaleX=array[0];let scaleY=scaleX;if(array.length>=2){scaleY=array[1];}currentTransform2.scale(scaleX,scaleY);}break;case\"skewX\":if(array.length===1){currentTransform2.set(1,Math.tan(array[0]*Math.PI/180),0,0,1,0,0,0,1);}break;case\"skewY\":if(array.length===1){currentTransform2.set(1,0,0,Math.tan(array[0]*Math.PI/180),1,0,0,0,1);}break;case\"matrix\":if(array.length===6){currentTransform2.set(array[0],array[2],array[4],array[1],array[3],array[5],0,0,1);}break;}}transform.premultiply(currentTransform2);}}return transform;}function transformPath(path,m){function transfVec2(v2){tempV3.set(v2.x,v2.y,1).applyMatrix3(m);v2.set(tempV3.x,tempV3.y);}const isRotated=isTransformRotated(m);const subPaths=path.subPaths;for(let i2=0,n=subPaths.length;i2=1||t2<0||t2>1){return null;}else if(nom1===0&&denom===0){for(let i2=0;i2<2;i2++){classifyPoint(i2===0?b0:b1,a0,a1);if(classifyResult.loc==IntersectionLocationType.ORIGIN){const point=i2===0?b0:b1;return{x:point.x,y:point.y,t:classifyResult.t};}else if(classifyResult.loc==IntersectionLocationType.BETWEEN){const x=+(x1+classifyResult.t*(x2-x1)).toPrecision(10);const y=+(y1+classifyResult.t*(y2-y1)).toPrecision(10);return{x,y,t:classifyResult.t};}}return null;}else{for(let i2=0;i2<2;i2++){classifyPoint(i2===0?b0:b1,a0,a1);if(classifyResult.loc==IntersectionLocationType.ORIGIN){const point=i2===0?b0:b1;return{x:point.x,y:point.y,t:classifyResult.t};}}const x=+(x1+t1*(x2-x1)).toPrecision(10);const y=+(y1+t1*(y2-y1)).toPrecision(10);return{x,y,t:t1};}}function classifyPoint(p,edgeStart,edgeEnd){const ax=edgeEnd.x-edgeStart.x;const ay=edgeEnd.y-edgeStart.y;const bx=p.x-edgeStart.x;const by=p.y-edgeStart.y;const sa=ax*by-bx*ay;if(p.x===edgeStart.x&&p.y===edgeStart.y){classifyResult.loc=IntersectionLocationType.ORIGIN;classifyResult.t=0;return;}if(p.x===edgeEnd.x&&p.y===edgeEnd.y){classifyResult.loc=IntersectionLocationType.DESTINATION;classifyResult.t=1;return;}if(sa<-Number.EPSILON){classifyResult.loc=IntersectionLocationType.LEFT;return;}if(sa>Number.EPSILON){classifyResult.loc=IntersectionLocationType.RIGHT;return;}if(ax*bx<0||ay*by<0){classifyResult.loc=IntersectionLocationType.BEHIND;return;}if(Math.sqrt(ax*ax+ay*ay)i2.t<=intersection.t+Number.EPSILON&&i2.t>=intersection.t-Number.EPSILON)===void 0){intersectionsRaw.push(intersection);intersections.push(new Vector2(intersection.x,intersection.y));}}}return intersections;}function getScanlineIntersections(scanline,boundingBox,paths){const center2=new Vector2();boundingBox.getCenter(center2);const allIntersections=[];paths.forEach(path=>{if(path.boundingBox.containsPoint(center2)){const intersections=getIntersections(scanline,path.points);intersections.forEach(p=>{allIntersections.push({identifier:path.identifier,isCW:path.isCW,point:p});});}});allIntersections.sort((i1,i2)=>{return i1.point.x-i2.point.x;});return allIntersections;}function isHoleTo(simplePath,allPaths,scanlineMinX2,scanlineMaxX2,_fillRule){if(_fillRule===null||_fillRule===void 0||_fillRule===\"\"){_fillRule=\"nonzero\";}const centerBoundingBox=new Vector2();simplePath.boundingBox.getCenter(centerBoundingBox);const scanline=[new Vector2(scanlineMinX2,centerBoundingBox.y),new Vector2(scanlineMaxX2,centerBoundingBox.y)];const scanlineIntersections=getScanlineIntersections(scanline,simplePath.boundingBox,allPaths);scanlineIntersections.sort((i1,i22)=>{return i1.point.x-i22.point.x;});const baseIntersections=[];const otherIntersections=[];scanlineIntersections.forEach(i3=>{if(i3.identifier===simplePath.identifier){baseIntersections.push(i3);}else{otherIntersections.push(i3);}});const firstXOfPath=baseIntersections[0].point.x;const stack=[];let i2=0;while(i20&&stack[stack.length-1]===otherIntersections[i2].identifier){stack.pop();}else{stack.push(otherIntersections[i2].identifier);}i2++;}stack.push(simplePath.identifier);if(_fillRule===\"evenodd\"){const isHole=stack.length%2===0?true:false;const isHoleFor=stack[stack.length-2];return{identifier:simplePath.identifier,isHole,for:isHoleFor};}else if(_fillRule===\"nonzero\"){let isHole=true;let isHoleFor=null;let lastCWValue=null;for(let i3=0;i3{const points=p.getPoints();let maxY=-BIGNUMBER;let minY=BIGNUMBER;let maxX=-BIGNUMBER;let minX=BIGNUMBER;for(let i2=0;i2maxY){maxY=p2.y;}if(p2.ymaxX){maxX=p2.x;}if(p2.x=minX){scanlineMinX=minX-1;}return{curves:p.curves,points,isCW:ShapeUtils.isClockWise(points),identifier:identifier++,boundingBox:new Box2(new Vector2(minX,minY),new Vector2(maxX,maxY))};});simplePaths=simplePaths.filter(sp=>sp.points.length>1);const isAHole=simplePaths.map(p=>isHoleTo(p,simplePaths,scanlineMinX,scanlineMaxX,shapePath.userData.style.fillRule));const shapesToReturn=[];simplePaths.forEach(p=>{const amIAHole=isAHole[p.identifier];if(!amIAHole.isHole){const shape=new Shape();shape.curves=p.curves;const holes=isAHole.filter(h=>h.isHole&&h.for===p.identifier);holes.forEach(h=>{const hole=simplePaths[h.identifier];const path=new Path();path.curves=hole.curves;shape.holes.push(path);});shapesToReturn.push(shape);}});return shapesToReturn;}static getStrokeStyle(width,color,lineJoin,lineCap,miterLimit){width=width!==void 0?width:1;color=color!==void 0?color:\"#000\";lineJoin=lineJoin!==void 0?lineJoin:\"miter\";lineCap=lineCap!==void 0?lineCap:\"butt\";miterLimit=miterLimit!==void 0?miterLimit:4;return{strokeColor:color,strokeWidth:width,strokeLineJoin:lineJoin,strokeLineCap:lineCap,strokeMiterLimit:miterLimit};}static pointsToStroke(points,style,arcDivisions,minDistance){const vertices=[];const normals=[];const uvs=[];if(SVGLoader.pointsToStrokeWithBuffers(points,style,arcDivisions,minDistance,vertices,normals,uvs)===0){return null;}const geometry2=new BufferGeometry();geometry2.setAttribute(\"position\",new Float32BufferAttribute(vertices,3));geometry2.setAttribute(\"normal\",new Float32BufferAttribute(normals,3));geometry2.setAttribute(\"uv\",new Float32BufferAttribute(uvs,2));return geometry2;}static pointsToStrokeWithBuffers(points,style,arcDivisions,minDistance,vertices,normals,uvs,vertexOffset){const tempV2_1=new Vector2();const tempV2_2=new Vector2();const tempV2_3=new Vector2();const tempV2_4=new Vector2();const tempV2_5=new Vector2();const tempV2_6=new Vector2();const tempV2_7=new Vector2();const lastPointL=new Vector2();const lastPointR=new Vector2();const point0L=new Vector2();const point0R=new Vector2();const currentPointL=new Vector2();const currentPointR=new Vector2();const nextPointL=new Vector2();const nextPointR=new Vector2();const innerPoint=new Vector2();const outerPoint=new Vector2();arcDivisions=arcDivisions!==void 0?arcDivisions:12;minDistance=minDistance!==void 0?minDistance:1e-3;vertexOffset=vertexOffset!==void 0?vertexOffset:0;points=removeDuplicatedPoints(points);const numPoints=points.length;if(numPoints<2)return 0;const isClosed=points[0].equals(points[numPoints-1]);let currentPoint;let previousPoint=points[0];let nextPoint;const strokeWidth2=style.strokeWidth/2;const deltaU=1/(numPoints-1);let u0=0,u1;let innerSideModified;let joinIsOnLeftSide;let isMiter;let initialJoinIsOnLeftSide=false;let numVertices=0;let currentCoordinate=vertexOffset*3;let currentCoordinateUV=vertexOffset*2;getNormal(points[0],points[1],tempV2_1).multiplyScalar(strokeWidth2);lastPointL.copy(points[0]).sub(tempV2_1);lastPointR.copy(points[0]).add(tempV2_1);point0L.copy(lastPointL);point0R.copy(lastPointR);for(let iPoint=1;iPoint=minDistance){newPoints.push(points2[i2]);}}newPoints.push(points2[points2.length-1]);return newPoints;}}}const _taskCache$1=/*@__PURE__*/ /* @__PURE__ */new WeakMap();class Rhino3dmLoader extends Loader{constructor(manager){super(manager);this.libraryPath=\"\";this.libraryPending=null;this.libraryBinary=null;this.libraryConfig={};this.url=\"\";this.workerLimit=4;this.workerPool=[];this.workerNextTaskID=1;this.workerSourceURL=\"\";this.workerConfig={};this.materials=[];}setLibraryPath(path){this.libraryPath=path;return this;}setWorkerLimit(workerLimit){this.workerLimit=workerLimit;return this;}load(url,onLoad,onProgress,onError){const loader=new FileLoader(this.manager);loader.setPath(this.path);loader.setResponseType(\"arraybuffer\");loader.setRequestHeader(this.requestHeader);this.url=url;loader.load(url,buffer=>{if(_taskCache$1.has(buffer)){const cachedTask=_taskCache$1.get(buffer);return cachedTask.promise.then(onLoad).catch(onError);}this.decodeObjects(buffer,url).then(onLoad).catch(onError);},onProgress,onError);}debug(){console.log(\"Task load: \",this.workerPool.map(worker=>worker._taskLoad));}decodeObjects(buffer,url){let worker;let taskID;const taskCost=buffer.byteLength;const objectPending=this._getWorker(taskCost).then(_worker=>{worker=_worker;taskID=this.workerNextTaskID++;return new Promise((resolve,reject)=>{worker._callbacks[taskID]={resolve,reject};worker.postMessage({type:\"decode\",id:taskID,buffer},[buffer]);});}).then(message=>this._createGeometry(message.data));objectPending.catch(()=>true).then(()=>{if(worker&&taskID){this._releaseTask(worker,taskID);}});_taskCache$1.set(buffer,{url,promise:objectPending});return objectPending;}parse(data,onLoad,onError){this.decodeObjects(data,\"\").then(onLoad).catch(onError);}_compareMaterials(material2){const mat={};mat.name=material2.name;mat.color={};mat.color.r=material2.color.r;mat.color.g=material2.color.g;mat.color.b=material2.color.b;mat.type=material2.type;for(let i2=0;i20?true:false,opacity:1-material2.transparency});const textureLoader=new TextureLoader();for(let i2=0;i2=0){const rMaterial=materials[attributes.materialIndex];let material2=this._createMaterial(rMaterial);material2=this._compareMaterials(material2);_object=this._createObject(obj,material2);}else{const material2=this._createMaterial();_object=this._createObject(obj,material2);}if(_object===void 0){continue;}const layer=data.layers[attributes.layerIndex];_object.visible=layer?data.layers[attributes.layerIndex].visible:true;if(attributes.isInstanceDefinitionObject){instanceDefinitionObjects.push(_object);}else{object.add(_object);}break;}}for(let i2=0;i2{jsLoader.load(\"rhino3dm.js\",resolve,void 0,reject);});const binaryLoader=new FileLoader(this.manager);binaryLoader.setPath(this.libraryPath);binaryLoader.setResponseType(\"arraybuffer\");const binaryContent=new Promise((resolve,reject)=>{binaryLoader.load(\"rhino3dm.wasm\",resolve,void 0,reject);});this.libraryPending=Promise.all([jsContent,binaryContent]).then(([jsContent2,binaryContent2])=>{this.libraryConfig.wasmBinary=binaryContent2;const fn=Rhino3dmWorker.toString();const body=[\"/* rhino3dm.js */\",jsContent2,\"/* worker */\",fn.substring(fn.indexOf(\"{\")+1,fn.lastIndexOf(\"}\"))].join(\"\\n\");this.workerSourceURL=URL.createObjectURL(new Blob([body]));});}return this.libraryPending;}_getWorker(taskCost){return this._initLibrary().then(()=>{if(this.workerPool.lengthb2._taskLoad?-1:1;});}const worker=this.workerPool[this.workerPool.length-1];worker._taskLoad+=taskCost;return worker;});}_releaseTask(worker,taskID){worker._taskLoad-=worker._taskCosts[taskID];delete worker._callbacks[taskID];delete worker._taskCosts[taskID];}dispose(){for(let i2=0;i2{rhino=RhinoModule;});break;case\"decode\":const buffer=message.buffer;libraryPending.then(()=>{const data=decodeObjects(rhino,buffer);self.postMessage({type:\"decode\",id:message.id,data});});break;}};function decodeObjects(rhino2,buffer){const arr=new Uint8Array(buffer);const doc=rhino2.File3dm.fromByteArray(arr);const objects=[];const materials=[];const layers=[];const views=[];const namedViews=[];const groups=[];const objs=doc.objects();const cnt=objs.count;for(let i2=0;i20){mesh.compact();geometry2=mesh.toThreejsJSON();faces.delete();}mesh.delete();break;case rhino.ObjectType.Extrusion:mesh=_geometry.getMesh(rhino.MeshType.Any);if(mesh){geometry2=mesh.toThreejsJSON();mesh.delete();}break;case rhino.ObjectType.TextDot:geometry2=extractProperties(_geometry);break;case rhino.ObjectType.Light:geometry2=extractProperties(_geometry);break;case rhino.ObjectType.InstanceReference:geometry2=extractProperties(_geometry);geometry2.xform=extractProperties(_geometry.xform);geometry2.xform.array=_geometry.xform.toFloatArray(true);break;case rhino.ObjectType.SubD:_geometry.subdivide(3);mesh=rhino.Mesh.createFromSubDControlNet(_geometry);if(mesh){geometry2=mesh.toThreejsJSON();mesh.delete();}break;default:console.warn(`THREE.3DMLoader: TODO: Implement ${objectType.constructor.name}`);break;}if(geometry2){attributes=extractProperties(_attributes);attributes.geometry=extractProperties(_geometry);if(_attributes.groupCount>0){attributes.groupIds=_attributes.getGroupList();}if(_attributes.userStringCount>0){attributes.userStrings=_attributes.getUserStrings();}if(_geometry.userStringCount>0){attributes.geometry.userStrings=_geometry.getUserStrings();}attributes.drawColor=_attributes.drawColor(doc);objectType=objectType.constructor.name;objectType=objectType.substring(11,objectType.length);return{geometry:geometry2,attributes,objectType};}else{console.warn(`THREE.3DMLoader: ${objectType.constructor.name} has no associated mesh geometry.`);}}function extractProperties(object){const result={};for(const property in object){const value=object[property];if(typeof value!==\"function\"){if(typeof value===\"object\"&&value!==null&&value.hasOwnProperty(\"constructor\")){result[property]={name:value.constructor.name,value:value.value};}else{result[property]=value;}}}return result;}function curveToPoints(curve,pointLimit){let pointCount=pointLimit;let rc=[];const ts=[];if(curve instanceof rhino.LineCurve){return[curve.pointAtStart,curve.pointAtEnd];}if(curve instanceof rhino.PolylineCurve){pointCount=curve.pointCount;for(let i2=0;i2curve.pointAt(t2));return rc;}}const _object_pattern=/^[og]\\s*(.+)?/;const _material_library_pattern=/^mtllib /;const _material_use_pattern=/^usemtl /;const _map_use_pattern=/^usemap /;const _vA=/*@__PURE__*/new Vector3();const _vB=/*@__PURE__*/new Vector3();const _vC=/*@__PURE__*/new Vector3();const _ab=/*@__PURE__*/new Vector3();const _cb=/*@__PURE__*/new Vector3();function ParserState(){const state={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(name,fromDeclaration){if(this.object&&this.object.fromDeclaration===false){this.object.name=name;this.object.fromDeclaration=fromDeclaration!==false;return;}const previousMaterial=this.object&&typeof this.object.currentMaterial===\"function\"?this.object.currentMaterial():void 0;if(this.object&&typeof this.object._finalize===\"function\"){this.object._finalize(true);}this.object={name:name||\"\",fromDeclaration:fromDeclaration!==false,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:false},materials:[],smooth:true,startMaterial:function(name2,libraries){const previous=this._finalize(false);if(previous&&(previous.inherited||previous.groupCount<=0)){this.materials.splice(previous.index,1);}const material2={index:this.materials.length,name:name2||\"\",mtllib:Array.isArray(libraries)&&libraries.length>0?libraries[libraries.length-1]:\"\",smooth:previous!==void 0?previous.smooth:this.smooth,groupStart:previous!==void 0?previous.groupEnd:0,groupEnd:-1,groupCount:-1,inherited:false,clone:function(index){const cloned={index:typeof index===\"number\"?index:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:false};cloned.clone=this.clone.bind(cloned);return cloned;}};this.materials.push(material2);return material2;},currentMaterial:function(){if(this.materials.length>0){return this.materials[this.materials.length-1];}return void 0;},_finalize:function(end){const lastMultiMaterial=this.currentMaterial();if(lastMultiMaterial&&lastMultiMaterial.groupEnd===-1){lastMultiMaterial.groupEnd=this.geometry.vertices.length/3;lastMultiMaterial.groupCount=lastMultiMaterial.groupEnd-lastMultiMaterial.groupStart;lastMultiMaterial.inherited=false;}if(end&&this.materials.length>1){for(let mi=this.materials.length-1;mi>=0;mi--){if(this.materials[mi].groupCount<=0){this.materials.splice(mi,1);}}}if(end&&this.materials.length===0){this.materials.push({name:\"\",smooth:this.smooth});}return lastMultiMaterial;}};if(previousMaterial&&previousMaterial.name&&typeof previousMaterial.clone===\"function\"){const declared=previousMaterial.clone(0);declared.inherited=true;this.object.materials.push(declared);}this.objects.push(this.object);},finalize:function(){if(this.object&&typeof this.object._finalize===\"function\"){this.object._finalize(true);}},parseVertexIndex:function(value,len){const index=parseInt(value,10);return(index>=0?index-1:index+len/3)*3;},parseNormalIndex:function(value,len){const index=parseInt(value,10);return(index>=0?index-1:index+len/3)*3;},parseUVIndex:function(value,len){const index=parseInt(value,10);return(index>=0?index-1:index+len/2)*2;},addVertex:function(a2,b2,c){const src=this.vertices;const dst=this.object.geometry.vertices;dst.push(src[a2+0],src[a2+1],src[a2+2]);dst.push(src[b2+0],src[b2+1],src[b2+2]);dst.push(src[c+0],src[c+1],src[c+2]);},addVertexPoint:function(a2){const src=this.vertices;const dst=this.object.geometry.vertices;dst.push(src[a2+0],src[a2+1],src[a2+2]);},addVertexLine:function(a2){const src=this.vertices;const dst=this.object.geometry.vertices;dst.push(src[a2+0],src[a2+1],src[a2+2]);},addNormal:function(a2,b2,c){const src=this.normals;const dst=this.object.geometry.normals;dst.push(src[a2+0],src[a2+1],src[a2+2]);dst.push(src[b2+0],src[b2+1],src[b2+2]);dst.push(src[c+0],src[c+1],src[c+2]);},addFaceNormal:function(a2,b2,c){const src=this.vertices;const dst=this.object.geometry.normals;_vA.fromArray(src,a2);_vB.fromArray(src,b2);_vC.fromArray(src,c);_cb.subVectors(_vC,_vB);_ab.subVectors(_vA,_vB);_cb.cross(_ab);_cb.normalize();dst.push(_cb.x,_cb.y,_cb.z);dst.push(_cb.x,_cb.y,_cb.z);dst.push(_cb.x,_cb.y,_cb.z);},addColor:function(a2,b2,c){const src=this.colors;const dst=this.object.geometry.colors;if(src[a2]!==void 0)dst.push(src[a2+0],src[a2+1],src[a2+2]);if(src[b2]!==void 0)dst.push(src[b2+0],src[b2+1],src[b2+2]);if(src[c]!==void 0)dst.push(src[c+0],src[c+1],src[c+2]);},addUV:function(a2,b2,c){const src=this.uvs;const dst=this.object.geometry.uvs;dst.push(src[a2+0],src[a2+1]);dst.push(src[b2+0],src[b2+1]);dst.push(src[c+0],src[c+1]);},addDefaultUV:function(){const dst=this.object.geometry.uvs;dst.push(0,0);dst.push(0,0);dst.push(0,0);},addUVLine:function(a2){const src=this.uvs;const dst=this.object.geometry.uvs;dst.push(src[a2+0],src[a2+1]);},addFace:function(a2,b2,c,ua,ub,uc,na,nb,nc){const vLen=this.vertices.length;let ia=this.parseVertexIndex(a2,vLen);let ib=this.parseVertexIndex(b2,vLen);let ic=this.parseVertexIndex(c,vLen);this.addVertex(ia,ib,ic);this.addColor(ia,ib,ic);if(na!==void 0&&na!==\"\"){const nLen=this.normals.length;ia=this.parseNormalIndex(na,nLen);ib=this.parseNormalIndex(nb,nLen);ic=this.parseNormalIndex(nc,nLen);this.addNormal(ia,ib,ic);}else{this.addFaceNormal(ia,ib,ic);}if(ua!==void 0&&ua!==\"\"){const uvLen=this.uvs.length;ia=this.parseUVIndex(ua,uvLen);ib=this.parseUVIndex(ub,uvLen);ic=this.parseUVIndex(uc,uvLen);this.addUV(ia,ib,ic);this.object.geometry.hasUVIndices=true;}else{this.addDefaultUV();}},addPointGeometry:function(vertices){this.object.geometry.type=\"Points\";const vLen=this.vertices.length;for(let vi=0,l=vertices.length;vi=7){state.colors.push(parseFloat(data[4]),parseFloat(data[5]),parseFloat(data[6]));}else{state.colors.push(void 0,void 0,void 0);}break;case\"vn\":state.normals.push(parseFloat(data[1]),parseFloat(data[2]),parseFloat(data[3]));break;case\"vt\":state.uvs.push(parseFloat(data[1]),parseFloat(data[2]));break;}}else if(lineFirstChar===\"f\"){const lineData=line.substr(1).trim();const vertexData=lineData.split(/\\s+/);const faceVertices=[];for(let j=0,jl=vertexData.length;j0){const vertexParts=vertex.split(\"/\");faceVertices.push(vertexParts);}}const v12=faceVertices[0];for(let j=1,jl=faceVertices.length-1;j1){const value=result[1].trim().toLowerCase();state.object.smooth=value!==\"0\"&&value!==\"off\";}else{state.object.smooth=true;}const material2=state.object.currentMaterial();if(material2)material2.smooth=state.object.smooth;}else{if(line===\"\\0\")continue;console.warn('THREE.OBJLoader: Unexpected line: \"'+line+'\"');}}state.finalize();const container=new Group();container.materialLibraries=[].concat(state.materialLibraries);const hasPrimitives=!(state.objects.length===1&&state.objects[0].geometry.vertices.length===0);if(hasPrimitives===true){for(let i2=0,l=state.objects.length;i20){buffergeometry.setAttribute(\"normal\",new Float32BufferAttribute(geometry2.normals,3));}if(geometry2.colors.length>0){hasVertexColors=true;buffergeometry.setAttribute(\"color\",new Float32BufferAttribute(geometry2.colors,3));}if(geometry2.hasUVIndices===true){buffergeometry.setAttribute(\"uv\",new Float32BufferAttribute(geometry2.uvs,2));}const createdMaterials=[];for(let mi=0,miLen=materials.length;mi1){for(let mi=0,miLen=materials.length;mi0){const material2=new PointsMaterial({size:1,sizeAttenuation:false});const buffergeometry=new BufferGeometry();buffergeometry.setAttribute(\"position\",new Float32BufferAttribute(state.vertices,3));if(state.colors.length>0&&state.colors[0]!==void 0){buffergeometry.setAttribute(\"color\",new Float32BufferAttribute(state.colors,3));material2.vertexColors=true;}const points=new Points(buffergeometry,material2);container.add(points);}}return container;}}class AMFLoader extends Loader{constructor(manager){super(manager);}load(url,onLoad,onProgress,onError){const scope=this;const loader=new FileLoader(scope.manager);loader.setPath(scope.path);loader.setResponseType(\"arraybuffer\");loader.setRequestHeader(scope.requestHeader);loader.setWithCredentials(scope.withCredentials);loader.load(url,function(text){try{onLoad(scope.parse(text));}catch(e){if(onError){onError(e);}else{console.error(e);}scope.manager.itemError(url);}},onProgress,onError);}parse(data){function loadDocument(data2){let view=new DataView(data2);const magic=String.fromCharCode(view.getUint8(0),view.getUint8(1));if(magic===\"PK\"){let zip=null;let file=null;console.log(\"THREE.AMFLoader: Loading Zip\");try{zip=unzipSync(new Uint8Array(data2));}catch(e){if(e instanceof ReferenceError){console.log(\"THREE.AMFLoader: fflate missing and file is compressed.\");return null;}}for(file in zip){if(file.toLowerCase().substr(-4)===\".amf\"){break;}}console.log(\"THREE.AMFLoader: Trying to load file asset: \"+file);view=new DataView(zip[file].buffer);}const fileText=LoaderUtils.decodeText(view);const xmlData2=new DOMParser().parseFromString(fileText,\"application/xml\");if(xmlData2.documentElement.nodeName.toLowerCase()!==\"amf\"){console.log(\"THREE.AMFLoader: Error loading AMF - no AMF document found.\");return null;}return xmlData2;}function loadDocumentScale(node){let scale=1;let unit=\"millimeter\";if(node.documentElement.attributes.unit!==void 0){unit=node.documentElement.attributes.unit.value.toLowerCase();}const scaleUnits={millimeter:1,inch:25.4,feet:304.8,meter:1e3,micron:1e-3};if(scaleUnits[unit]!==void 0){scale=scaleUnits[unit];}console.log(\"THREE.AMFLoader: Unit scale: \"+scale);return scale;}function loadMaterials(node){let matName=\"AMF Material\";const matId=node.attributes.id.textContent;let color={r:1,g:1,b:1,a:1};let loadedMaterial=null;for(let i3=0;i3} url - url(s) to animation(.vmd) file(s)\n * @param {SkinnedMesh|THREE.Camera} object - tracks will be fitting to this object\n * @param {function} onLoad\n * @param {function} onProgress\n * @param {function} onError\n */loadAnimation(url,object,onLoad,onProgress,onError){const builder=this.animationBuilder;this.loadVMD(url,function(vmd){onLoad(object.isCamera?builder.buildCameraAnimation(vmd):builder.build(vmd,object));},onProgress,onError);}/**\n * Loads mode file and motion file(s) as an object containing\n * a SkinnedMesh and a AnimationClip.\n * Tracks of AnimationClip are fitting to the model.\n *\n * @param {string} modelUrl - url to Model(.pmd or .pmx) file\n * @param {string|Array{string}} vmdUrl - url(s) to animation(.vmd) file\n * @param {function} onLoad\n * @param {function} onProgress\n * @param {function} onError\n */loadWithAnimation(modelUrl,vmdUrl,onLoad,onProgress,onError){const scope=this;this.load(modelUrl,function(mesh){scope.loadAnimation(vmdUrl,mesh,function(animation){onLoad({mesh,animation});},onProgress,onError);},onProgress,onError);}// Load MMD assets as Object data parsed by MMDParser\n/**\n * Loads .pmd file as an Object.\n *\n * @param {string} url - url to .pmd file\n * @param {function} onLoad\n * @param {function} onProgress\n * @param {function} onError\n */loadPMD(url,onLoad,onProgress,onError){const parser=this._getParser();this.loader.setMimeType(void 0).setPath(this.path).setResponseType(\"arraybuffer\").setRequestHeader(this.requestHeader).setWithCredentials(this.withCredentials).load(url,function(buffer){onLoad(parser.parsePmd(buffer,true));},onProgress,onError);}/**\n * Loads .pmx file as an Object.\n *\n * @param {string} url - url to .pmx file\n * @param {function} onLoad\n * @param {function} onProgress\n * @param {function} onError\n */loadPMX(url,onLoad,onProgress,onError){const parser=this._getParser();this.loader.setMimeType(void 0).setPath(this.path).setResponseType(\"arraybuffer\").setRequestHeader(this.requestHeader).setWithCredentials(this.withCredentials).load(url,function(buffer){onLoad(parser.parsePmx(buffer,true));},onProgress,onError);}/**\n * Loads .vmd file as an Object. If two or more files are specified\n * they'll be merged.\n *\n * @param {string|Array} url - url(s) to .vmd file(s)\n * @param {function} onLoad\n * @param {function} onProgress\n * @param {function} onError\n */loadVMD(url,onLoad,onProgress,onError){const urls=Array.isArray(url)?url:[url];const vmds=[];const vmdNum=urls.length;const parser=this._getParser();this.loader.setMimeType(void 0).setPath(this.animationPath).setResponseType(\"arraybuffer\").setRequestHeader(this.requestHeader).setWithCredentials(this.withCredentials);for(let i2=0,il=urls.length;i2=j?v.skinIndices[j]:0);}for(let j=0;j<4;j++){skinWeights.push(v.skinWeights.length-1>=j?v.skinWeights[j]:0);}}for(let i2=0;i2=0){link.limitation=new Vector3(1,0,0);}param.links.push(link);}iks.push(param);}}else{for(let i2=0;i2}\n */build(data,geometry2){const materials=[];const textures={};this.textureLoader.setCrossOrigin(this.crossOrigin);for(let i2=0;i20?true:false;params.morphTargets=geometry2.morphTargets.length>0?true:false;params.fog=true;params.blending=CustomBlending;params.blendSrc=SrcAlphaFactor;params.blendDst=OneMinusSrcAlphaFactor;params.blendSrcAlpha=SrcAlphaFactor;params.blendDstAlpha=DstAlphaFactor;if(data.metadata.format===\"pmx\"&&(material2.flag&1)===1){params.side=DoubleSide;}else{params.side=params.opacity===1?FrontSide:DoubleSide;}if(data.metadata.format===\"pmd\"){if(material2.fileName){const fileName=material2.fileName;const fileNames=fileName.split(\"*\");params.map=this._loadTexture(fileNames[0],textures);if(fileNames.length>1){const extension=fileNames[1].slice(-4).toLowerCase();params.envMap=this._loadTexture(fileNames[1],textures);params.combine=extension===\".sph\"?MultiplyOperation:AddOperation;}}const toonFileName=material2.toonIndex===-1?\"toon00.bmp\":data.toonTextures[material2.toonIndex].fileName;params.gradientMap=this._loadTexture(toonFileName,textures,{isToonTexture:true,isDefaultToonTexture:this._isDefaultToonTexture(toonFileName)});params.userData.outlineParameters={thickness:material2.edgeFlag===1?3e-3:0,color:[0,0,0],alpha:1,visible:material2.edgeFlag===1};}else{if(material2.textureIndex!==-1){params.map=this._loadTexture(data.textures[material2.textureIndex],textures);}if(material2.envTextureIndex!==-1&&(material2.envFlag===1||material2.envFlag==2)){params.envMap=this._loadTexture(data.textures[material2.envTextureIndex],textures);params.combine=material2.envFlag===1?MultiplyOperation:AddOperation;}let toonFileName,isDefaultToon;if(material2.toonIndex===-1||material2.toonFlag!==0){toonFileName=\"toon\"+(\"0\"+(material2.toonIndex+1)).slice(-2)+\".bmp\";isDefaultToon=true;}else{toonFileName=data.textures[material2.toonIndex];isDefaultToon=false;}params.gradientMap=this._loadTexture(toonFileName,textures,{isToonTexture:true,isDefaultToonTexture:isDefaultToon});params.userData.outlineParameters={thickness:material2.edgeSize/300,// TODO: better calculation?\ncolor:material2.edgeColor.slice(0,3),alpha:material2.edgeColor[3],visible:(material2.flag&16)!==0&&material2.edgeSize>0};}if(params.map!==void 0){if(!params.transparent){this._checkImageTransparency(params.map,geometry2,i2);}params.emissive.multiplyScalar(0.2);}materials.push(new MeshToonMaterial(params));}if(data.metadata.format===\"pmx\"){let checkAlphaMorph=function(elements,materials2){for(let i2=0,il=elements.length;i22){times=times.slice();values=values.slice();interpolations=interpolations.slice();const stride=values.length/times.length;const interpolateStride=interpolations.length/times.length;let index=1;for(let aheadIndex=2,endIndex=times.length;aheadIndexindex){times[index]=times[aheadIndex];for(let i2=0;i20)offset_stroke_mask+=4;if((controlpoint_mask&byte)>0)offset_controlpoint_mask+=4;}offset=offset+28+offset_stroke_mask+4;const num_control_points=data.getInt32(offset,true);const positions=new Float32Array(num_control_points*3);const quaternions=new Float32Array(num_control_points*4);offset=offset+4;for(let j=0,k=0;j({Light:{uniforms:{mainTex:{value:new TextureLoader().setPath(\"./textures/tiltbrush/\").loader.load(\"Light.webp\")},alphaTest:{value:0.067},emission_gain:{value:0.45},alpha:{value:1}},vertexShader:`\n\t\t\tprecision highp float;\n\t\t\tprecision highp int;\n\n\t\t\tattribute vec2 uv;\n\t\t\tattribute vec4 color;\n\t\t\tattribute vec3 position;\n\n\t\t\tuniform mat4 modelMatrix;\n\t\t\tuniform mat4 modelViewMatrix;\n\t\t\tuniform mat4 projectionMatrix;\n\t\t\tuniform mat4 viewMatrix;\n\t\t\tuniform mat3 normalMatrix;\n\t\t\tuniform vec3 cameraPosition;\n\n\t\t\tvarying vec2 vUv;\n\t\t\tvarying vec3 vColor;\n\n\t\t\t${common.colors.LinearToSrgb}\n\t\t\t${common.colors.hsv}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvUv = uv;\n\n\t\t\t\tvColor = lookup(color.rgb);\n\n\t\t\t\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\n\t\t\t\tgl_Position = projectionMatrix * mvPosition;\n\n\t\t\t}\n\t\t`,fragmentShader:`\n\t\t\tprecision highp float;\n\t\t\tprecision highp int;\n\n\t\t\tuniform float emission_gain;\n\n\t\t\tuniform sampler2D mainTex;\n\t\t\tuniform float alphaTest;\n\n\t\t\tvarying vec2 vUv;\n\t\t\tvarying vec3 vColor;\n\n\t\t\t${common.colors.BloomColor}\n\t\t\t${common.colors.SrgbToLinear}\n\n\t\t\tvoid main(){\n\t\t\t\tvec4 col = texture2D(mainTex, vUv);\n\t\t\t\tvec3 color = vColor;\n\t\t\t\tcolor = BloomColor(color, emission_gain);\n\t\t\t\tcolor = color * col.rgb;\n\t\t\t\tcolor = color * col.a;\n\t\t\t\tcolor = SrgbToLinear(color);\n\t\t\t\tgl_FragColor = vec4(color, 1.0);\n\t\t\t}\n\t\t`,side:2,transparent:true,depthFunc:2,depthWrite:true,depthTest:false,blending:5,blendDst:201,blendDstAlpha:201,blendEquation:100,blendEquationAlpha:100,blendSrc:201,blendSrcAlpha:201}});function getMaterial(GUID){const name=BRUSH_LIST_ARRAY[GUID];switch(name){case\"Light\":return new RawShaderMaterial(shaders().Light);default:return new MeshBasicMaterial({vertexColors:true,side:DoubleSide});}}const _taskCache=/*@__PURE__*/ /* @__PURE__ */new WeakMap();class DRACOLoader extends Loader{constructor(manager){super(manager);this.decoderPath=\"\";this.decoderConfig={};this.decoderBinary=null;this.decoderPending=null;this.workerLimit=4;this.workerPool=[];this.workerNextTaskID=1;this.workerSourceURL=\"\";this.defaultAttributeIDs={position:\"POSITION\",normal:\"NORMAL\",color:\"COLOR\",uv:\"TEX_COORD\"};this.defaultAttributeTypes={position:\"Float32Array\",normal:\"Float32Array\",color:\"Float32Array\",uv:\"Float32Array\"};}setDecoderPath(path){this.decoderPath=path;return this;}setDecoderConfig(config){this.decoderConfig=config;return this;}setWorkerLimit(workerLimit){this.workerLimit=workerLimit;return this;}load(url,onLoad,onProgress,onError){const loader=new FileLoader(this.manager);loader.setPath(this.path);loader.setResponseType(\"arraybuffer\");loader.setRequestHeader(this.requestHeader);loader.setWithCredentials(this.withCredentials);loader.load(url,buffer=>{const taskConfig={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:false};this.decodeGeometry(buffer,taskConfig).then(onLoad).catch(onError);},onProgress,onError);}/** @deprecated Kept for backward-compatibility with previous DRACOLoader versions. */decodeDracoFile(buffer,callback,attributeIDs,attributeTypes){const taskConfig={attributeIDs:attributeIDs||this.defaultAttributeIDs,attributeTypes:attributeTypes||this.defaultAttributeTypes,useUniqueIDs:!!attributeIDs};this.decodeGeometry(buffer,taskConfig).then(callback);}decodeGeometry(buffer,taskConfig){for(const attribute in taskConfig.attributeTypes){const type=taskConfig.attributeTypes[attribute];if(type.BYTES_PER_ELEMENT!==void 0){taskConfig.attributeTypes[attribute]=type.name;}}const taskKey=JSON.stringify(taskConfig);if(_taskCache.has(buffer)){const cachedTask=_taskCache.get(buffer);if(cachedTask.key===taskKey){return cachedTask.promise;}else if(buffer.byteLength===0){throw new Error(\"THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.\");}}let worker;const taskID=this.workerNextTaskID++;const taskCost=buffer.byteLength;const geometryPending=this._getWorker(taskID,taskCost).then(_worker=>{worker=_worker;return new Promise((resolve,reject)=>{worker._callbacks[taskID]={resolve,reject};worker.postMessage({type:\"decode\",id:taskID,taskConfig,buffer},[buffer]);});}).then(message=>this._createGeometry(message.geometry));geometryPending.catch(()=>true).then(()=>{if(worker&&taskID){this._releaseTask(worker,taskID);}});_taskCache.set(buffer,{key:taskKey,promise:geometryPending});return geometryPending;}_createGeometry(geometryData){const geometry2=new BufferGeometry();if(geometryData.index){geometry2.setIndex(new BufferAttribute(geometryData.index.array,1));}for(let i2=0;i2{loader.load(url,resolve,void 0,reject);});}preload(){this._initDecoder();return this;}_initDecoder(){if(this.decoderPending)return this.decoderPending;const useJS=typeof WebAssembly!==\"object\"||this.decoderConfig.type===\"js\";const librariesPending=[];if(useJS){librariesPending.push(this._loadLibrary(\"draco_decoder.js\",\"text\"));}else{librariesPending.push(this._loadLibrary(\"draco_wasm_wrapper.js\",\"text\"));librariesPending.push(this._loadLibrary(\"draco_decoder.wasm\",\"arraybuffer\"));}this.decoderPending=Promise.all(librariesPending).then(libraries=>{const jsContent=libraries[0];if(!useJS){this.decoderConfig.wasmBinary=libraries[1];}const fn=DRACOWorker.toString();const body=[\"/* draco decoder */\",jsContent,\"\",\"/* worker */\",fn.substring(fn.indexOf(\"{\")+1,fn.lastIndexOf(\"}\"))].join(\"\\n\");this.workerSourceURL=URL.createObjectURL(new Blob([body]));});return this.decoderPending;}_getWorker(taskID,taskCost){return this._initDecoder().then(()=>{if(this.workerPool.lengthb2._taskLoad?-1:1;});}const worker=this.workerPool[this.workerPool.length-1];worker._taskCosts[taskID]=taskCost;worker._taskLoad+=taskCost;return worker;});}_releaseTask(worker,taskID){worker._taskLoad-=worker._taskCosts[taskID];delete worker._callbacks[taskID];delete worker._taskCosts[taskID];}debug(){console.log(\"Task load: \",this.workerPool.map(worker=>worker._taskLoad));}dispose(){for(let i2=0;i2{const draco=module2.draco;const decoder=new draco.Decoder();const decoderBuffer=new draco.DecoderBuffer();decoderBuffer.Init(new Int8Array(buffer),buffer.byteLength);try{const geometry2=decodeGeometry(draco,decoder,decoderBuffer,taskConfig);const buffers=geometry2.attributes.map(attr=>attr.array.buffer);if(geometry2.index)buffers.push(geometry2.index.array.buffer);self.postMessage({type:\"decode\",id:message.id,geometry:geometry2},buffers);}catch(error){console.error(error);self.postMessage({type:\"error\",id:message.id,error:error.message});}finally{draco.destroy(decoderBuffer);draco.destroy(decoder);}});break;}};function decodeGeometry(draco,decoder,decoderBuffer,taskConfig){const attributeIDs=taskConfig.attributeIDs;const attributeTypes=taskConfig.attributeTypes;let dracoGeometry;let decodingStatus;const geometryType=decoder.GetEncodedGeometryType(decoderBuffer);if(geometryType===draco.TRIANGULAR_MESH){dracoGeometry=new draco.Mesh();decodingStatus=decoder.DecodeBufferToMesh(decoderBuffer,dracoGeometry);}else if(geometryType===draco.POINT_CLOUD){dracoGeometry=new draco.PointCloud();decodingStatus=decoder.DecodeBufferToPointCloud(decoderBuffer,dracoGeometry);}else{throw new Error(\"THREE.DRACOLoader: Unexpected geometry type.\");}if(!decodingStatus.ok()||dracoGeometry.ptr===0){throw new Error(\"THREE.DRACOLoader: Decoding failed: \"+decodingStatus.error_msg());}const geometry2={index:null,attributes:[]};for(const attributeName in attributeIDs){const attributeType=self[attributeTypes[attributeName]];let attribute;let attributeID;if(taskConfig.useUniqueIDs){attributeID=attributeIDs[attributeName];attribute=decoder.GetAttributeByUniqueId(dracoGeometry,attributeID);}else{attributeID=decoder.GetAttributeId(dracoGeometry,draco[attributeIDs[attributeName]]);if(attributeID===-1)continue;attribute=decoder.GetAttribute(dracoGeometry,attributeID);}geometry2.attributes.push(decodeAttribute(draco,decoder,dracoGeometry,attributeName,attributeType,attribute));}if(geometryType===draco.TRIANGULAR_MESH){geometry2.index=decodeIndex(draco,decoder,dracoGeometry);}draco.destroy(dracoGeometry);return geometry2;}function decodeIndex(draco,decoder,dracoGeometry){const numFaces=dracoGeometry.num_faces();const numIndices=numFaces*3;const byteLength=numIndices*4;const ptr=draco._malloc(byteLength);decoder.GetTrianglesUInt32Array(dracoGeometry,byteLength,ptr);const index=new Uint32Array(draco.HEAPF32.buffer,ptr,numIndices).slice();draco._free(ptr);return{array:index,itemSize:1};}function decodeAttribute(draco,decoder,dracoGeometry,attributeName,attributeType,attribute){const numComponents=attribute.num_components();const numPoints=dracoGeometry.num_points();const numValues=numPoints*numComponents;const byteLength=numValues*attributeType.BYTES_PER_ELEMENT;const dataType=getDracoDataType(draco,attributeType);const ptr=draco._malloc(byteLength);decoder.GetAttributeDataArrayForAllPoints(dracoGeometry,attribute,dataType,byteLength,ptr);const array=new attributeType(draco.HEAPF32.buffer,ptr,numValues).slice();draco._free(ptr);return{name:attributeName,array,itemSize:numComponents};}function getDracoDataType(draco,attributeType){switch(attributeType){case Float32Array:return draco.DT_FLOAT32;case Int8Array:return draco.DT_INT8;case Int16Array:return draco.DT_INT16;case Int32Array:return draco.DT_INT32;case Uint8Array:return draco.DT_UINT8;case Uint16Array:return draco.DT_UINT16;case Uint32Array:return draco.DT_UINT32;}}}class HDRCubeTextureLoader extends Loader{constructor(manager){super(manager);this.hdrLoader=new RGBELoader();this.type=HalfFloatType;}load(urls,onLoad,onProgress,onError){if(!Array.isArray(urls)){console.warn(\"THREE.HDRCubeTextureLoader signature has changed. Use .setDataType() instead.\");this.setDataType(urls);urls=onLoad;onLoad=onProgress;onProgress=onError;onError=arguments[4];}const texture=new CubeTexture();texture.type=this.type;switch(texture.type){case FloatType:case HalfFloatType:if(\"colorSpace\"in texture)texture.colorSpace=\"srgb-linear\";else texture.encoding=3e3;texture.minFilter=LinearFilter;texture.magFilter=LinearFilter;texture.generateMipmaps=false;break;}const scope=this;let loaded=0;function loadHDRData(i2,onLoad2,onProgress2,onError2){new FileLoader(scope.manager).setPath(scope.path).setResponseType(\"arraybuffer\").setWithCredentials(scope.withCredentials).load(urls[i2],function(buffer){loaded++;const texData=scope.hdrLoader.parse(buffer);if(!texData)return;if(texData.data!==void 0){const dataTexture=new DataTexture(texData.data,texData.width,texData.height);dataTexture.type=texture.type;dataTexture.encoding=texture.encoding;dataTexture.format=texture.format;dataTexture.minFilter=texture.minFilter;dataTexture.magFilter=texture.magFilter;dataTexture.generateMipmaps=texture.generateMipmaps;texture.images[i2]=dataTexture;}if(loaded===6){texture.needsUpdate=true;if(onLoad2)onLoad2(texture);}},onProgress2,onError2);}for(let i2=0;i2>7&1),indicesType=flags>>6&1,bigEndian=(flags>>5&1)===1,attributesNumber=flags&31;let valuesNumber=0,indicesNumber=0;if(bigEndian){valuesNumber=(array[2]<<16)+(array[3]<<8)+array[4];indicesNumber=(array[5]<<16)+(array[6]<<8)+array[7];}else{valuesNumber=array[2]+(array[3]<<8)+(array[4]<<16);indicesNumber=array[5]+(array[6]<<8)+(array[7]<<16);}if(version2===0){throw new Error(\"PRWM decoder: Invalid format version: 0\");}else if(version2!==1){throw new Error(\"PRWM decoder: Unsupported format version: \"+version2);}if(!indexedGeometry){if(indicesType!==0){throw new Error(\"PRWM decoder: Indices type must be set to 0 for non-indexed geometries\");}else if(indicesNumber!==0){throw new Error(\"PRWM decoder: Number of indices must be set to 0 for non-indexed geometries\");}}let pos=8;const attributes={};for(let i2=0;i2>7&1;const cardinality=(flags>>4&3)+1;const encodingType=flags&15;const arrayType=InvertedEncodingTypes[encodingType];pos++;pos=Math.ceil(pos/4)*4;const values=copyFromBuffer(buffer,arrayType,pos,cardinality*valuesNumber,bigEndian);pos+=arrayType.BYTES_PER_ELEMENT*cardinality*valuesNumber;attributes[attributeName]={type:attributeType,cardinality,values};}pos=Math.ceil(pos/4)*4;let indices=null;if(indexedGeometry){indices=copyFromBuffer(buffer,indicesType===1?Uint32Array:Uint16Array,pos,indicesNumber,bigEndian);}return{version:version2,attributes,indices};}class PRWMLoader extends Loader{constructor(manager){super(manager);}load(url,onLoad,onProgress,onError){const scope=this;const loader=new FileLoader(scope.manager);loader.setPath(scope.path);loader.setResponseType(\"arraybuffer\");loader.setRequestHeader(scope.requestHeader);loader.setWithCredentials(scope.withCredentials);url=url.replace(/\\*/g,isBigEndianPlatform()?\"be\":\"le\");loader.load(url,function(arrayBuffer){try{onLoad(scope.parse(arrayBuffer));}catch(e){if(onError){onError(e);}else{console.error(e);}scope.manager.itemError(url);}},onProgress,onError);}parse(arrayBuffer){const data=decodePrwm(arrayBuffer),attributesKey=Object.keys(data.attributes),bufferGeometry=new BufferGeometry();for(let i2=0;i2>3)]>>7-((i2&7)<<0)&1,cj=3*j;bf[qi]=p[cj];bf[qi+1]=p[cj+1];bf[qi+2]=p[cj+2];bf[qi+3]=j>2)]>>6-((i2&3)<<1)&3,cj=3*j;bf[qi]=p[cj];bf[qi+1]=p[cj+1];bf[qi+2]=p[cj+2];bf[qi+3]=j>1)]>>4-((i2&1)<<2)&15,cj=3*j;bf[qi]=p[cj];bf[qi+1]=p[cj+1];bf[qi+2]=p[cj+2];bf[qi+3]=j>>3)]>>>7-(x&7)&1),al=gr==tr*255?0:255;bf32[to+x]=al<<24|gr<<16|gr<<8|gr;}}else if(depth==2){for(var x=0;x>>2)]>>>6-((x&3)<<1)&3),al=gr==tr*85?0:255;bf32[to+x]=al<<24|gr<<16|gr<<8|gr;}}else if(depth==4){for(var x=0;x>>1)]>>>4-((x&1)<<2)&15),al=gr==tr*17?0:255;bf32[to+x]=al<<24|gr<<16|gr<<8|gr;}}else if(depth==8){for(var x=0;x>>2<<5);while(i2==0){i2=n(N,d,1);m=n(N,d+1,2);d+=3;if(m==0){if((d&7)!=0)d+=8-(d&7);var D=(d>>>3)+4,q=N[D-4]|N[D-3]<<8;if(Z)W=H.H.W(W,w+q);W.set(new R2(N.buffer,N.byteOffset+D,q),w);d=D+q<<3;w+=q;continue;}if(Z)W=H.H.W(W,w+(1<<17));if(m==1){v=b2.J;C=b2.h;X=(1<<9)-1;u=(1<<5)-1;}if(m==2){J=A(N,d,5)+257;h=A(N,d+5,5)+1;Q=A(N,d+10,4)+4;d+=14;var j=1;for(var c=0;c<38;c+=2){b2.Q[c]=0;b2.Q[c+1]=0;}for(var c=0;cj)j=K;}d+=3*Q;M(b2.Q,j);I(b2.Q,j,b2.u);v=b2.w;C=b2.d;d=l(b2.u,(1<>>4;if(p>>>8==0){W[w++]=p;}else if(p==256){break;}else{var z=w+p-254;if(p>264){var _=b2.q[p-257];z=w+(_>>>3)+A(N,d,_&7);d+=_&7;}var $=C[e(N,d)&u];d+=$&15;var s=$>>>4,Y=b2.c[s],a2=(Y>>>4)+n(N,d,Y&15);d+=Y&15;while(w>>4;if(b2<=15){A[I]=b2;I++;}else{var Z=0,m=0;if(b2==16){m=3+l(V,n,2);n+=2;Z=A[I-1];}else if(b2==17){m=3+l(V,n,3);n+=3;}else if(b2==18){m=11+l(V,n,7);n+=7;}var J=I+m;while(I>>1;while(An)n=M;A++;}while(A>1,I=N[l+1],e=M<<4|I,b2=W-I,Z=N[l]<>>15-W;R2[J]=e;Z++;}}}};H.H.l=function(N,W){var R2=H.H.m.r,V=15-W;for(var n=0;n>>V;}};H.H.M=function(N,W,R2){R2=R2<<(W&7);var V=W>>>3;N[V]|=R2;N[V+1]|=R2>>>8;};H.H.I=function(N,W,R2){R2=R2<<(W&7);var V=W>>>3;N[V]|=R2;N[V+1]|=R2>>>8;N[V+2]|=R2>>>16;};H.H.e=function(N,W,R2){return(N[W>>>3]|N[(W>>>3)+1]<<8)>>>(W&7)&(1<>>3]|N[(W>>>3)+1]<<8|N[(W>>>3)+2]<<16)>>>(W&7)&(1<>>3]|N[(W>>>3)+1]<<8|N[(W>>>3)+2]<<16)>>>(W&7);};H.H.i=function(N,W){return(N[W>>>3]|N[(W>>>3)+1]<<8|N[(W>>>3)+2]<<16|N[(W>>>3)+3]<<24)>>>(W&7);};H.H.m=function(){var N=Uint16Array,W=Uint32Array;return{K:new N(16),j:new N(16),X:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],S:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],T:[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0],q:new N(32),p:[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,65535,65535],z:[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0],c:new W(32),J:new N(512),_:[],h:new N(32),$:[],w:new N(32768),C:[],v:[],d:new N(32768),D:[],u:new N(512),Q:[],r:new N(1<<15),s:new W(286),Y:new W(30),a:new W(19),t:new W(15e3),k:new N(1<<16),g:new N(1<<15)};}();(function(){var N=H.H.m,W=1<<15;for(var R2=0;R2>>1|(V&1431655765)<<1;V=(V&3435973836)>>>2|(V&858993459)<<2;V=(V&4042322160)>>>4|(V&252645135)<<4;V=(V&4278255360)>>>8|(V&16711935)<<8;N.r[R2]=(V>>>16|V<<16)>>>17;}function n(A,l,M){while(l--!=0)A.push(0,M);}for(var R2=0;R2<32;R2++){N.q[R2]=N.S[R2]<<3|N.T[R2];N.c[R2]=N.p[R2]<<4|N.z[R2];}n(N._,144,8);n(N._,255-143,9);n(N._,279-255,7);n(N._,287-279,8);H.H.n(N._,9);H.H.A(N._,9,N.J);H.H.l(N._,9);n(N.$,32,5);H.H.n(N.$,5);H.H.A(N.$,5,N.h);H.H.l(N.$,5);n(N.Q,19,0);n(N.C,286,0);n(N.D,30,0);n(N.v,320,0);})();return H.H.N;}();UPNG.decode._readInterlace=function(data,out){var w=out.width,h=out.height;var bpp=UPNG.decode._getBPP(out),cbpp=bpp>>3,bpl=Math.ceil(w*bpp/8);var img=new Uint8Array(h*bpl);var di=0;var starting_row=[0,0,4,0,2,0,1];var starting_col=[0,4,0,2,0,1,0];var row_increment=[8,8,8,4,4,2,2];var col_increment=[8,8,4,4,2,2,1];var pass=0;while(pass<7){var ri=row_increment[pass],ci=col_increment[pass];var sw=0,sh=0;var cr=starting_row[pass];while(cr>3];val=val>>7-(cdi&7)&1;img[row*bpl+(col>>3)]|=val<<7-((col&7)<<0);}if(bpp==2){val=data[cdi>>3];val=val>>6-(cdi&7)&3;img[row*bpl+(col>>2)]|=val<<6-((col&3)<<1);}if(bpp==4){val=data[cdi>>3];val=val>>4-(cdi&7)&15;img[row*bpl+(col>>1)]|=val<<4-((col&1)<<2);}if(bpp>=8){var ii=row*bpl+col*cbpp;for(var j=0;j>3)+j];}cdi+=bpp;col+=ci;}y++;row+=ri;}if(sw*sh!=0)di+=sh*(1+bpll);pass=pass+1;}return img;};UPNG.decode._getBPP=function(out){var noc=[1,null,3,1,2,null,4][out.ctype];return noc*out.depth;};UPNG.decode._filterZero=function(data,out,off,w,h){var bpp=UPNG.decode._getBPP(out),bpl=Math.ceil(w*bpp/8),paeth=UPNG.decode._paeth;bpp=Math.ceil(bpp/8);var i2,di,type=data[off],x=0;if(type>1)data[off]=[0,0,1][type-2];if(type==3)for(x=bpp;x>>1)&255;for(var y=0;y>>1);for(;x>>1);}else{for(;x>8&255;buff[p+1]=n&255;},readUint:function(buff,p){return buff[p]*(256*256*256)+(buff[p+1]<<16|buff[p+2]<<8|buff[p+3]);},writeUint:function(buff,p,n){buff[p]=n>>24&255;buff[p+1]=n>>16&255;buff[p+2]=n>>8&255;buff[p+3]=n&255;},readASCII:function(buff,p,l){var s=\"\";for(var i2=0;i2=0&&yoff>=0){si=y*sw+x<<2;ti=(yoff+y)*tw+xoff+x<<2;}else{si=(-yoff+y)*sw-xoff+x<<2;ti=y*tw+x<<2;}if(mode==0){tb[ti]=sb[si];tb[ti+1]=sb[si+1];tb[ti+2]=sb[si+2];tb[ti+3]=sb[si+3];}else if(mode==1){var fa=sb[si+3]*(1/255),fr=sb[si]*fa,fg=sb[si+1]*fa,fb=sb[si+2]*fa;var ba=tb[ti+3]*(1/255),br=tb[ti]*ba,bg=tb[ti+1]*ba,bb=tb[ti+2]*ba;var ifa=1-fa,oa=fa+ba*ifa,ioa=oa==0?0:1/oa;tb[ti+3]=255*oa;tb[ti+0]=(fr+br*ifa)*ioa;tb[ti+1]=(fg+bg*ifa)*ioa;tb[ti+2]=(fb+bb*ifa)*ioa;}else if(mode==2){var fa=sb[si+3],fr=sb[si],fg=sb[si+1],fb=sb[si+2];var ba=tb[ti+3],br=tb[ti],bg=tb[ti+1],bb=tb[ti+2];if(fa==ba&&fr==br&&fg==bg&&fb==bb){tb[ti]=0;tb[ti+1]=0;tb[ti+2]=0;tb[ti+3]=0;}else{tb[ti]=fr;tb[ti+1]=fg;tb[ti+2]=fb;tb[ti+3]=fa;}}else if(mode==3){var fa=sb[si+3],fr=sb[si],fg=sb[si+1],fb=sb[si+2];var ba=tb[ti+3],br=tb[ti],bg=tb[ti+1],bb=tb[ti+2];if(fa==ba&&fr==br&&fg==bg&&fb==bb)continue;if(fa<220&&ba>20)return false;}}}return true;};}class RGBMLoader extends DataTextureLoader{constructor(manager){super(manager);this.type=HalfFloatType;this.maxRange=7;}setDataType(value){this.type=value;return this;}setMaxRange(value){this.maxRange=value;return this;}loadCubemap(urls,onLoad,onProgress,onError){const texture=new CubeTexture();let loaded=0;const scope=this;function loadTexture(i2){scope.load(urls[i2],function(image){texture.images[i2]=image;loaded++;if(loaded===6){texture.needsUpdate=true;if(onLoad)onLoad(texture);}},void 0,onError);}for(let i2=0;i2>0&255)/255;const g=(hex>>8&255)/255;const b2=(hex>>16&255)/255;if(r>0||g>0||b2>0)hasColors=true;const index=x+y*offsety+z*offsetz;if(array[index+1]===0||x===size2.x-1)add(px,x,z,-y,r,g,b2);if(array[index-1]===0||x===0)add(nx,x,z,-y,r,g,b2);if(array[index+offsety]===0||y===size2.y-1)add(ny,x,z,-y,r,g,b2);if(array[index-offsety]===0||y===0)add(py,x,z,-y,r,g,b2);if(array[index+offsetz]===0||z===size2.z-1)add(pz,x,z,-y,r,g,b2);if(array[index-offsetz]===0||z===0)add(nz,x,z,-y,r,g,b2);}const geometry2=new BufferGeometry();geometry2.setAttribute(\"position\",new Float32BufferAttribute(vertices,3));geometry2.computeVertexNormals();const material2=new MeshStandardMaterial();if(hasColors){geometry2.setAttribute(\"color\",new Float32BufferAttribute(colors,3));material2.vertexColors=true;}super(geometry2,material2);}}class VOXData3DTexture extends Data3DTexture{constructor(chunk){const data=chunk.data;const size2=chunk.size;const offsety=size2.x;const offsetz=size2.x*size2.y;const array=new Uint8Array(size2.x*size2.y*size2.z);for(let j=0;joutLength)throw new Error(\"Output buffer is not large enough\");if(inPtr+ctrl>inLength)throw new Error(\"Invalid compressed data\");do{outData[outPtr++]=inData[inPtr++];}while(--ctrl);}else{len=ctrl>>5;ref=outPtr-((ctrl&31)<<8)-1;if(inPtr>=inLength)throw new Error(\"Invalid compressed data\");if(len===7){len+=inData[inPtr++];if(inPtr>=inLength)throw new Error(\"Invalid compressed data\");}ref-=inData[inPtr++];if(outPtr+len+2>outLength)throw new Error(\"Output buffer is not large enough\");if(ref<0)throw new Error(\"Invalid compressed data\");if(ref>=outPtr)throw new Error(\"Invalid compressed data\");do{outData[outPtr++]=outData[ref++];}while(--len+2);}}while(inPtr>16&255;const g=rgb>>8&255;const b2=rgb>>0&255;color.push(r/255,g/255,b2/255);}if(offset.normal_x!==void 0){normal.push(parseFloat(line[offset.normal_x]));normal.push(parseFloat(line[offset.normal_y]));normal.push(parseFloat(line[offset.normal_z]));}}}if(PCDheader.data===\"binary_compressed\"){const sizes=new Uint32Array(data.slice(PCDheader.headerLen,PCDheader.headerLen+8));const compressedSize=sizes[0];const decompressedSize=sizes[1];const decompressed=decompressLZF(new Uint8Array(data,PCDheader.headerLen+8,compressedSize),decompressedSize);const dataview=new DataView(decompressed.buffer);const offset=PCDheader.offset;for(let i2=0;i20)geometry2.setAttribute(\"position\",new Float32BufferAttribute(position,3));if(normal.length>0)geometry2.setAttribute(\"normal\",new Float32BufferAttribute(normal,3));if(color.length>0)geometry2.setAttribute(\"color\",new Float32BufferAttribute(color,3));geometry2.computeBoundingSphere();const material2=new PointsMaterial({size:5e-3});if(color.length>0){material2.vertexColors=true;}else{material2.color.setHex(Math.random()*16777215);}const mesh=new Points(geometry2,material2);let name=url.split(\"\").reverse().join(\"\");name=/([^\\/]*)/.exec(name);name=name[1].split(\"\").reverse().join(\"\");mesh.name=name;return mesh;}}class LWO2Parser{constructor(IFFParser2){this.IFF=IFFParser2;}parseBlock(){this.IFF.debugger.offset=this.IFF.reader.offset;this.IFF.debugger.closeForms();const blockID=this.IFF.reader.getIDTag();let length=this.IFF.reader.getUint32();if(length>this.IFF.reader.dv.byteLength-this.IFF.reader.offset){this.IFF.reader.offset-=4;length=this.IFF.reader.getUint16();}this.IFF.debugger.dataOffset=this.IFF.reader.offset;this.IFF.debugger.length=length;switch(blockID){case\"FORM\":this.IFF.parseForm(length);break;case\"ICON\":case\"VMPA\":case\"BBOX\":case\"NORM\":case\"PRE \":case\"POST\":case\"KEY \":case\"SPAN\":case\"TIME\":case\"CLRS\":case\"CLRA\":case\"FILT\":case\"DITH\":case\"CONT\":case\"BRIT\":case\"SATR\":case\"HUE \":case\"GAMM\":case\"NEGA\":case\"IFLT\":case\"PFLT\":case\"PROJ\":case\"AXIS\":case\"AAST\":case\"PIXB\":case\"AUVO\":case\"STCK\":case\"PROC\":case\"VALU\":case\"FUNC\":case\"PNAM\":case\"INAM\":case\"GRST\":case\"GREN\":case\"GRPT\":case\"FKEY\":case\"IKEY\":case\"CSYS\":case\"OPAQ\":case\"CMAP\":case\"NLOC\":case\"NZOM\":case\"NVER\":case\"NSRV\":case\"NVSK\":case\"NCRD\":case\"WRPW\":case\"WRPH\":case\"NMOD\":case\"NSEL\":case\"NPRW\":case\"NPLA\":case\"NODS\":case\"VERS\":case\"ENUM\":case\"TAG \":case\"OPAC\":case\"CGMD\":case\"CGTY\":case\"CGST\":case\"CGEN\":case\"CGTS\":case\"CGTE\":case\"OSMP\":case\"OMDE\":case\"OUTR\":case\"FLAG\":case\"TRNL\":case\"GLOW\":case\"GVAL\":case\"SHRP\":case\"RFOP\":case\"RSAN\":case\"TROP\":case\"RBLR\":case\"TBLR\":case\"CLRH\":case\"CLRF\":case\"ADTR\":case\"LINE\":case\"ALPH\":case\"VCOL\":case\"ENAB\":this.IFF.debugger.skipped=true;this.IFF.reader.skip(length);break;case\"SURF\":this.IFF.parseSurfaceLwo2(length);break;case\"CLIP\":this.IFF.parseClipLwo2(length);break;case\"IPIX\":case\"IMIP\":case\"IMOD\":case\"AMOD\":case\"IINV\":case\"INCR\":case\"IAXS\":case\"IFOT\":case\"ITIM\":case\"IWRL\":case\"IUTI\":case\"IINX\":case\"IINY\":case\"IINZ\":case\"IREF\":if(length===4)this.IFF.currentNode[blockID]=this.IFF.reader.getInt32();else this.IFF.reader.skip(length);break;case\"OTAG\":this.IFF.parseObjectTag();break;case\"LAYR\":this.IFF.parseLayer(length);break;case\"PNTS\":this.IFF.parsePoints(length);break;case\"VMAP\":this.IFF.parseVertexMapping(length);break;case\"AUVU\":case\"AUVN\":this.IFF.reader.skip(length-1);this.IFF.reader.getVariableLengthIndex();break;case\"POLS\":this.IFF.parsePolygonList(length);break;case\"TAGS\":this.IFF.parseTagStrings(length);break;case\"PTAG\":this.IFF.parsePolygonTagMapping(length);break;case\"VMAD\":this.IFF.parseVertexMapping(length,true);break;case\"DESC\":this.IFF.currentForm.description=this.IFF.reader.getString();break;case\"TEXT\":case\"CMNT\":case\"NCOM\":this.IFF.currentForm.comment=this.IFF.reader.getString();break;case\"NAME\":this.IFF.currentForm.channelName=this.IFF.reader.getString();break;case\"WRAP\":this.IFF.currentForm.wrap={w:this.IFF.reader.getUint16(),h:this.IFF.reader.getUint16()};break;case\"IMAG\":const index=this.IFF.reader.getVariableLengthIndex();this.IFF.currentForm.imageIndex=index;break;case\"OREF\":this.IFF.currentForm.referenceObject=this.IFF.reader.getString();break;case\"ROID\":this.IFF.currentForm.referenceObjectID=this.IFF.reader.getUint32();break;case\"SSHN\":this.IFF.currentSurface.surfaceShaderName=this.IFF.reader.getString();break;case\"AOVN\":this.IFF.currentSurface.surfaceCustomAOVName=this.IFF.reader.getString();break;case\"NSTA\":this.IFF.currentForm.disabled=this.IFF.reader.getUint16();break;case\"NRNM\":this.IFF.currentForm.realName=this.IFF.reader.getString();break;case\"NNME\":this.IFF.currentForm.refName=this.IFF.reader.getString();this.IFF.currentSurface.nodes[this.IFF.currentForm.refName]=this.IFF.currentForm;break;case\"INME\":if(!this.IFF.currentForm.nodeName)this.IFF.currentForm.nodeName=[];this.IFF.currentForm.nodeName.push(this.IFF.reader.getString());break;case\"IINN\":if(!this.IFF.currentForm.inputNodeName)this.IFF.currentForm.inputNodeName=[];this.IFF.currentForm.inputNodeName.push(this.IFF.reader.getString());break;case\"IINM\":if(!this.IFF.currentForm.inputName)this.IFF.currentForm.inputName=[];this.IFF.currentForm.inputName.push(this.IFF.reader.getString());break;case\"IONM\":if(!this.IFF.currentForm.inputOutputName)this.IFF.currentForm.inputOutputName=[];this.IFF.currentForm.inputOutputName.push(this.IFF.reader.getString());break;case\"FNAM\":this.IFF.currentForm.fileName=this.IFF.reader.getString();break;case\"CHAN\":if(length===4)this.IFF.currentForm.textureChannel=this.IFF.reader.getIDTag();else this.IFF.reader.skip(length);break;case\"SMAN\":const maxSmoothingAngle=this.IFF.reader.getFloat32();this.IFF.currentSurface.attributes.smooth=maxSmoothingAngle<0?false:true;break;case\"COLR\":this.IFF.currentSurface.attributes.Color={value:this.IFF.reader.getFloat32Array(3)};this.IFF.reader.skip(2);break;case\"LUMI\":this.IFF.currentSurface.attributes.Luminosity={value:this.IFF.reader.getFloat32()};this.IFF.reader.skip(2);break;case\"SPEC\":this.IFF.currentSurface.attributes.Specular={value:this.IFF.reader.getFloat32()};this.IFF.reader.skip(2);break;case\"DIFF\":this.IFF.currentSurface.attributes.Diffuse={value:this.IFF.reader.getFloat32()};this.IFF.reader.skip(2);break;case\"REFL\":this.IFF.currentSurface.attributes.Reflection={value:this.IFF.reader.getFloat32()};this.IFF.reader.skip(2);break;case\"GLOS\":this.IFF.currentSurface.attributes.Glossiness={value:this.IFF.reader.getFloat32()};this.IFF.reader.skip(2);break;case\"TRAN\":this.IFF.currentSurface.attributes.opacity=this.IFF.reader.getFloat32();this.IFF.reader.skip(2);break;case\"BUMP\":this.IFF.currentSurface.attributes.bumpStrength=this.IFF.reader.getFloat32();this.IFF.reader.skip(2);break;case\"SIDE\":this.IFF.currentSurface.attributes.side=this.IFF.reader.getUint16();break;case\"RIMG\":this.IFF.currentSurface.attributes.reflectionMap=this.IFF.reader.getVariableLengthIndex();break;case\"RIND\":this.IFF.currentSurface.attributes.refractiveIndex=this.IFF.reader.getFloat32();this.IFF.reader.skip(2);break;case\"TIMG\":this.IFF.currentSurface.attributes.refractionMap=this.IFF.reader.getVariableLengthIndex();break;case\"IMAP\":this.IFF.reader.skip(2);break;case\"TMAP\":this.IFF.debugger.skipped=true;this.IFF.reader.skip(length);break;case\"IUVI\":this.IFF.currentNode.UVChannel=this.IFF.reader.getString(length);break;case\"IUTL\":this.IFF.currentNode.widthWrappingMode=this.IFF.reader.getUint32();break;case\"IVTL\":this.IFF.currentNode.heightWrappingMode=this.IFF.reader.getUint32();break;case\"BLOK\":break;default:this.IFF.parseUnknownCHUNK(blockID,length);}if(blockID!=\"FORM\"){this.IFF.debugger.node=1;this.IFF.debugger.nodeID=blockID;this.IFF.debugger.log();}if(this.IFF.reader.offset>=this.IFF.currentFormEnd){this.IFF.currentForm=this.IFF.parentForm;}}}class LWO3Parser{constructor(IFFParser2){this.IFF=IFFParser2;}parseBlock(){this.IFF.debugger.offset=this.IFF.reader.offset;this.IFF.debugger.closeForms();const blockID=this.IFF.reader.getIDTag();const length=this.IFF.reader.getUint32();this.IFF.debugger.dataOffset=this.IFF.reader.offset;this.IFF.debugger.length=length;switch(blockID){case\"FORM\":this.IFF.parseForm(length);break;case\"ICON\":case\"VMPA\":case\"BBOX\":case\"NORM\":case\"PRE \":case\"POST\":case\"KEY \":case\"SPAN\":case\"TIME\":case\"CLRS\":case\"CLRA\":case\"FILT\":case\"DITH\":case\"CONT\":case\"BRIT\":case\"SATR\":case\"HUE \":case\"GAMM\":case\"NEGA\":case\"IFLT\":case\"PFLT\":case\"PROJ\":case\"AXIS\":case\"AAST\":case\"PIXB\":case\"STCK\":case\"VALU\":case\"PNAM\":case\"INAM\":case\"GRST\":case\"GREN\":case\"GRPT\":case\"FKEY\":case\"IKEY\":case\"CSYS\":case\"OPAQ\":case\"CMAP\":case\"NLOC\":case\"NZOM\":case\"NVER\":case\"NSRV\":case\"NCRD\":case\"NMOD\":case\"NSEL\":case\"NPRW\":case\"NPLA\":case\"VERS\":case\"ENUM\":case\"TAG \":case\"CGMD\":case\"CGTY\":case\"CGST\":case\"CGEN\":case\"CGTS\":case\"CGTE\":case\"OSMP\":case\"OMDE\":case\"OUTR\":case\"FLAG\":case\"TRNL\":case\"SHRP\":case\"RFOP\":case\"RSAN\":case\"TROP\":case\"RBLR\":case\"TBLR\":case\"CLRH\":case\"CLRF\":case\"ADTR\":case\"GLOW\":case\"LINE\":case\"ALPH\":case\"VCOL\":case\"ENAB\":this.IFF.debugger.skipped=true;this.IFF.reader.skip(length);break;case\"IPIX\":case\"IMIP\":case\"IMOD\":case\"AMOD\":case\"IINV\":case\"INCR\":case\"IAXS\":case\"IFOT\":case\"ITIM\":case\"IWRL\":case\"IUTI\":case\"IINX\":case\"IINY\":case\"IINZ\":case\"IREF\":if(length===4)this.IFF.currentNode[blockID]=this.IFF.reader.getInt32();else this.IFF.reader.skip(length);break;case\"OTAG\":this.IFF.parseObjectTag();break;case\"LAYR\":this.IFF.parseLayer(length);break;case\"PNTS\":this.IFF.parsePoints(length);break;case\"VMAP\":this.IFF.parseVertexMapping(length);break;case\"POLS\":this.IFF.parsePolygonList(length);break;case\"TAGS\":this.IFF.parseTagStrings(length);break;case\"PTAG\":this.IFF.parsePolygonTagMapping(length);break;case\"VMAD\":this.IFF.parseVertexMapping(length,true);break;case\"DESC\":this.IFF.currentForm.description=this.IFF.reader.getString();break;case\"TEXT\":case\"CMNT\":case\"NCOM\":this.IFF.currentForm.comment=this.IFF.reader.getString();break;case\"NAME\":this.IFF.currentForm.channelName=this.IFF.reader.getString();break;case\"WRAP\":this.IFF.currentForm.wrap={w:this.IFF.reader.getUint16(),h:this.IFF.reader.getUint16()};break;case\"IMAG\":const index=this.IFF.reader.getVariableLengthIndex();this.IFF.currentForm.imageIndex=index;break;case\"OREF\":this.IFF.currentForm.referenceObject=this.IFF.reader.getString();break;case\"ROID\":this.IFF.currentForm.referenceObjectID=this.IFF.reader.getUint32();break;case\"SSHN\":this.IFF.currentSurface.surfaceShaderName=this.IFF.reader.getString();break;case\"AOVN\":this.IFF.currentSurface.surfaceCustomAOVName=this.IFF.reader.getString();break;case\"NSTA\":this.IFF.currentForm.disabled=this.IFF.reader.getUint16();break;case\"NRNM\":this.IFF.currentForm.realName=this.IFF.reader.getString();break;case\"NNME\":this.IFF.currentForm.refName=this.IFF.reader.getString();this.IFF.currentSurface.nodes[this.IFF.currentForm.refName]=this.IFF.currentForm;break;case\"INME\":if(!this.IFF.currentForm.nodeName)this.IFF.currentForm.nodeName=[];this.IFF.currentForm.nodeName.push(this.IFF.reader.getString());break;case\"IINN\":if(!this.IFF.currentForm.inputNodeName)this.IFF.currentForm.inputNodeName=[];this.IFF.currentForm.inputNodeName.push(this.IFF.reader.getString());break;case\"IINM\":if(!this.IFF.currentForm.inputName)this.IFF.currentForm.inputName=[];this.IFF.currentForm.inputName.push(this.IFF.reader.getString());break;case\"IONM\":if(!this.IFF.currentForm.inputOutputName)this.IFF.currentForm.inputOutputName=[];this.IFF.currentForm.inputOutputName.push(this.IFF.reader.getString());break;case\"FNAM\":this.IFF.currentForm.fileName=this.IFF.reader.getString();break;case\"CHAN\":if(length===4)this.IFF.currentForm.textureChannel=this.IFF.reader.getIDTag();else this.IFF.reader.skip(length);break;case\"SMAN\":const maxSmoothingAngle=this.IFF.reader.getFloat32();this.IFF.currentSurface.attributes.smooth=maxSmoothingAngle<0?false:true;break;case\"COLR\":this.IFF.currentSurface.attributes.Color={value:this.IFF.reader.getFloat32Array(3)};this.IFF.reader.skip(2);break;case\"LUMI\":this.IFF.currentSurface.attributes.Luminosity={value:this.IFF.reader.getFloat32()};this.IFF.reader.skip(2);break;case\"SPEC\":this.IFF.currentSurface.attributes.Specular={value:this.IFF.reader.getFloat32()};this.IFF.reader.skip(2);break;case\"DIFF\":this.IFF.currentSurface.attributes.Diffuse={value:this.IFF.reader.getFloat32()};this.IFF.reader.skip(2);break;case\"REFL\":this.IFF.currentSurface.attributes.Reflection={value:this.IFF.reader.getFloat32()};this.IFF.reader.skip(2);break;case\"GLOS\":this.IFF.currentSurface.attributes.Glossiness={value:this.IFF.reader.getFloat32()};this.IFF.reader.skip(2);break;case\"TRAN\":this.IFF.currentSurface.attributes.opacity=this.IFF.reader.getFloat32();this.IFF.reader.skip(2);break;case\"BUMP\":this.IFF.currentSurface.attributes.bumpStrength=this.IFF.reader.getFloat32();this.IFF.reader.skip(2);break;case\"SIDE\":this.IFF.currentSurface.attributes.side=this.IFF.reader.getUint16();break;case\"RIMG\":this.IFF.currentSurface.attributes.reflectionMap=this.IFF.reader.getVariableLengthIndex();break;case\"RIND\":this.IFF.currentSurface.attributes.refractiveIndex=this.IFF.reader.getFloat32();this.IFF.reader.skip(2);break;case\"TIMG\":this.IFF.currentSurface.attributes.refractionMap=this.IFF.reader.getVariableLengthIndex();break;case\"IMAP\":this.IFF.currentSurface.attributes.imageMapIndex=this.IFF.reader.getUint32();break;case\"IUVI\":this.IFF.currentNode.UVChannel=this.IFF.reader.getString(length);break;case\"IUTL\":this.IFF.currentNode.widthWrappingMode=this.IFF.reader.getUint32();break;case\"IVTL\":this.IFF.currentNode.heightWrappingMode=this.IFF.reader.getUint32();break;default:this.IFF.parseUnknownCHUNK(blockID,length);}if(blockID!=\"FORM\"){this.IFF.debugger.node=1;this.IFF.debugger.nodeID=blockID;this.IFF.debugger.log();}if(this.IFF.reader.offset>=this.IFF.currentFormEnd){this.IFF.currentForm=this.IFF.parentForm;}}}class IFFParser{constructor(){this.debugger=new Debugger();}parse(buffer){this.reader=new DataViewReader(buffer);this.tree={materials:{},layers:[],tags:[],textures:[]};this.currentLayer=this.tree;this.currentForm=this.tree;this.parseTopForm();if(this.tree.format===void 0)return;if(this.tree.format===\"LWO2\"){this.parser=new LWO2Parser(this);while(!this.reader.endOfFile())this.parser.parseBlock();}else if(this.tree.format===\"LWO3\"){this.parser=new LWO3Parser(this);while(!this.reader.endOfFile())this.parser.parseBlock();}this.debugger.offset=this.reader.offset;this.debugger.closeForms();return this.tree;}parseTopForm(){this.debugger.offset=this.reader.offset;var topForm=this.reader.getIDTag();if(topForm!==\"FORM\"){console.warn(\"LWOLoader: Top-level FORM missing.\");return;}var length=this.reader.getUint32();this.debugger.dataOffset=this.reader.offset;this.debugger.length=length;var type=this.reader.getIDTag();if(type===\"LWO2\"){this.tree.format=type;}else if(type===\"LWO3\"){this.tree.format=type;}this.debugger.node=0;this.debugger.nodeID=type;this.debugger.log();return;}///\n// FORM PARSING METHODS\n///\n// Forms are organisational and can contain any number of sub chunks and sub forms\n// FORM ::= 'FORM'[ID4], length[U4], type[ID4], ( chunk[CHUNK] | form[FORM] ) * }\nparseForm(length){var type=this.reader.getIDTag();switch(type){case\"ISEQ\":case\"ANIM\":case\"STCC\":case\"VPVL\":case\"VPRM\":case\"NROT\":case\"WRPW\":case\"WRPH\":case\"FUNC\":case\"FALL\":case\"OPAC\":case\"GRAD\":case\"ENVS\":case\"VMOP\":case\"VMBG\":case\"OMAX\":case\"STEX\":case\"CKBG\":case\"CKEY\":case\"VMLA\":case\"VMLB\":this.debugger.skipped=true;this.skipForm(length);break;case\"META\":case\"NNDS\":case\"NODS\":case\"NDTA\":case\"ADAT\":case\"AOVS\":case\"BLOK\":case\"IBGC\":case\"IOPC\":case\"IIMG\":case\"TXTR\":this.debugger.length=4;this.debugger.skipped=true;break;case\"IFAL\":case\"ISCL\":case\"IPOS\":case\"IROT\":case\"IBMP\":case\"IUTD\":case\"IVTD\":this.parseTextureNodeAttribute(type);break;case\"ENVL\":this.parseEnvelope(length);break;case\"CLIP\":if(this.tree.format===\"LWO2\"){this.parseForm(length);}else{this.parseClip(length);}break;case\"STIL\":this.parseImage();break;case\"XREF\":this.reader.skip(8);this.currentForm.referenceTexture={index:this.reader.getUint32(),refName:this.reader.getString()// internal unique ref\n};break;case\"IMST\":this.parseImageStateForm(length);break;case\"SURF\":this.parseSurfaceForm(length);break;case\"VALU\":this.parseValueForm(length);break;case\"NTAG\":this.parseSubNode(length);break;case\"ATTR\":case\"SATR\":this.setupForm(\"attributes\",length);break;case\"NCON\":this.parseConnections(length);break;case\"SSHA\":this.parentForm=this.currentForm;this.currentForm=this.currentSurface;this.setupForm(\"surfaceShader\",length);break;case\"SSHD\":this.setupForm(\"surfaceShaderData\",length);break;case\"ENTR\":this.parseEntryForm(length);break;case\"IMAP\":this.parseImageMap(length);break;case\"TAMP\":this.parseXVAL(\"amplitude\",length);break;case\"TMAP\":this.setupForm(\"textureMap\",length);break;case\"CNTR\":this.parseXVAL3(\"center\",length);break;case\"SIZE\":this.parseXVAL3(\"scale\",length);break;case\"ROTA\":this.parseXVAL3(\"rotation\",length);break;default:this.parseUnknownForm(type,length);}this.debugger.node=0;this.debugger.nodeID=type;this.debugger.log();}setupForm(type,length){if(!this.currentForm)this.currentForm=this.currentNode;this.currentFormEnd=this.reader.offset+length;this.parentForm=this.currentForm;if(!this.currentForm[type]){this.currentForm[type]={};this.currentForm=this.currentForm[type];}else{console.warn(\"LWOLoader: form already exists on parent: \",type,this.currentForm);this.currentForm=this.currentForm[type];}}skipForm(length){this.reader.skip(length-4);}parseUnknownForm(type,length){console.warn(\"LWOLoader: unknown FORM encountered: \"+type,length);printBuffer(this.reader.dv.buffer,this.reader.offset,length-4);this.reader.skip(length-4);}parseSurfaceForm(length){this.reader.skip(8);var name=this.reader.getString();var surface={attributes:{},// LWO2 style non-node attributes will go here\nconnections:{},name,inputName:name,nodes:{},source:this.reader.getString()};this.tree.materials[name]=surface;this.currentSurface=surface;this.parentForm=this.tree.materials;this.currentForm=surface;this.currentFormEnd=this.reader.offset+length;}parseSurfaceLwo2(length){var name=this.reader.getString();var surface={attributes:{},// LWO2 style non-node attributes will go here\nconnections:{},name,nodes:{},source:this.reader.getString()};this.tree.materials[name]=surface;this.currentSurface=surface;this.parentForm=this.tree.materials;this.currentForm=surface;this.currentFormEnd=this.reader.offset+length;}parseSubNode(length){this.reader.skip(8);var name=this.reader.getString();var node={name};this.currentForm=node;this.currentNode=node;this.currentFormEnd=this.reader.offset+length;}// collect attributes from all nodes at the top level of a surface\nparseConnections(length){this.currentFormEnd=this.reader.offset+length;this.parentForm=this.currentForm;this.currentForm=this.currentSurface.connections;}// surface node attribute data, e.g. specular, roughness etc\nparseEntryForm(length){this.reader.skip(8);var name=this.reader.getString();this.currentForm=this.currentNode.attributes;this.setupForm(name,length);}// parse values from material - doesn't match up to other LWO3 data types\n// sub form of entry form\nparseValueForm(){this.reader.skip(8);var valueType=this.reader.getString();if(valueType===\"double\"){this.currentForm.value=this.reader.getUint64();}else if(valueType===\"int\"){this.currentForm.value=this.reader.getUint32();}else if(valueType===\"vparam\"){this.reader.skip(24);this.currentForm.value=this.reader.getFloat64();}else if(valueType===\"vparam3\"){this.reader.skip(24);this.currentForm.value=this.reader.getFloat64Array(3);}}// holds various data about texture node image state\n// Data other thanmipMapLevel unknown\nparseImageStateForm(){this.reader.skip(8);this.currentForm.mipMapLevel=this.reader.getFloat32();}// LWO2 style image data node OR LWO3 textures defined at top level in editor (not as SURF node)\nparseImageMap(length){this.currentFormEnd=this.reader.offset+length;this.parentForm=this.currentForm;if(!this.currentForm.maps)this.currentForm.maps=[];var map={};this.currentForm.maps.push(map);this.currentForm=map;this.reader.skip(10);}parseTextureNodeAttribute(type){this.reader.skip(28);this.reader.skip(20);switch(type){case\"ISCL\":this.currentNode.scale=this.reader.getFloat32Array(3);break;case\"IPOS\":this.currentNode.position=this.reader.getFloat32Array(3);break;case\"IROT\":this.currentNode.rotation=this.reader.getFloat32Array(3);break;case\"IFAL\":this.currentNode.falloff=this.reader.getFloat32Array(3);break;case\"IBMP\":this.currentNode.amplitude=this.reader.getFloat32();break;case\"IUTD\":this.currentNode.uTiles=this.reader.getFloat32();break;case\"IVTD\":this.currentNode.vTiles=this.reader.getFloat32();break;}this.reader.skip(2);}// ENVL forms are currently ignored\nparseEnvelope(length){this.reader.skip(length-4);}///\n// CHUNK PARSING METHODS\n///\n// clips can either be defined inside a surface node, or at the top\n// level and they have a different format in each case\nparseClip(length){var tag=this.reader.getIDTag();if(tag===\"FORM\"){this.reader.skip(16);this.currentNode.fileName=this.reader.getString();return;}this.reader.setOffset(this.reader.offset-4);this.currentFormEnd=this.reader.offset+length;this.parentForm=this.currentForm;this.reader.skip(8);var texture={index:this.reader.getUint32()};this.tree.textures.push(texture);this.currentForm=texture;}parseClipLwo2(length){var texture={index:this.reader.getUint32(),fileName:\"\"};while(true){var tag=this.reader.getIDTag();var n_length=this.reader.getUint16();if(tag===\"STIL\"){texture.fileName=this.reader.getString();break;}if(n_length>=length){break;}}this.tree.textures.push(texture);this.currentForm=texture;}parseImage(){this.reader.skip(8);this.currentForm.fileName=this.reader.getString();}parseXVAL(type,length){var endOffset=this.reader.offset+length-4;this.reader.skip(8);this.currentForm[type]=this.reader.getFloat32();this.reader.setOffset(endOffset);}parseXVAL3(type,length){var endOffset=this.reader.offset+length-4;this.reader.skip(8);this.currentForm[type]={x:this.reader.getFloat32(),y:this.reader.getFloat32(),z:this.reader.getFloat32()};this.reader.setOffset(endOffset);}// Tags associated with an object\n// OTAG { type[ID4], tag-string[S0] }\nparseObjectTag(){if(!this.tree.objectTags)this.tree.objectTags={};this.tree.objectTags[this.reader.getIDTag()]={tagString:this.reader.getString()};}// Signals the start of a new layer. All the data chunks which follow will be included in this layer until another layer chunk is encountered.\n// LAYR: number[U2], flags[U2], pivot[VEC12], name[S0], parent[U2]\nparseLayer(length){var layer={number:this.reader.getUint16(),flags:this.reader.getUint16(),// If the least significant bit of flags is set, the layer is hidden.\npivot:this.reader.getFloat32Array(3),// Note: this seems to be superflous, as the geometry is translated when pivot is present\nname:this.reader.getString()};this.tree.layers.push(layer);this.currentLayer=layer;var parsedLength=16+stringOffset(this.currentLayer.name);this.currentLayer.parent=parsedLength -x and switch material FrontSide -> BackSide\nparsePoints(length){this.currentPoints=[];for(var i2=0;i20&&offset=this.size())return true;return false;}skip(length){this.offset+=length;}getUint8(){var value=this.dv.getUint8(this.offset);this.offset+=1;return value;}getUint16(){var value=this.dv.getUint16(this.offset);this.offset+=2;return value;}getInt32(){var value=this.dv.getInt32(this.offset,false);this.offset+=4;return value;}getUint32(){var value=this.dv.getUint32(this.offset,false);this.offset+=4;return value;}getUint64(){var low,high;high=this.getUint32();low=this.getUint32();return high*4294967296+low;}getFloat32(){var value=this.dv.getFloat32(this.offset,false);this.offset+=4;return value;}getFloat32Array(size2){var a2=[];for(var i2=0;i2 ( ${this.dataOffset+this.length} )`,this.node==0?\" {\":\"\",this.skipped?\"SKIPPED\":\"\",this.node==0&&this.skipped?\"}\":\"\");if(this.node==0&&!this.skipped){this.depth+=1;this.formList.push(this.dataOffset+this.length);}this.skipped=false;}closeForms(){if(!this.active)return;for(var i2=this.formList.length-1;i2>=0;i2--){if(this.offset>=this.formList[i2]){this.depth-=1;console.log(\"| \".repeat(this.depth)+\"}\");this.formList.splice(-1,1);}}}}function isEven(num){return num%2;}function stringOffset(string){return string.length+1+(isEven(string.length+1)?1:0);}function printBuffer(buffer,from,to){console.log(new TextDecoder().decode(new Uint8Array(buffer,from,to)));}let _lwoTree;class LWOLoader extends Loader{constructor(manager,parameters={}){super(manager);this.resourcePath=parameters.resourcePath!==void 0?parameters.resourcePath:\"\";}load(url,onLoad,onProgress,onError){const scope=this;const path=scope.path===\"\"?extractParentUrl(url,\"Objects\"):scope.path;const modelName=url.split(path).pop().split(\".\")[0];const loader=new FileLoader(this.manager);loader.setPath(scope.path);loader.setResponseType(\"arraybuffer\");loader.load(url,function(buffer){try{onLoad(scope.parse(buffer,path,modelName));}catch(e){if(onError){onError(e);}else{console.error(e);}scope.manager.itemError(url);}},onProgress,onError);}parse(iffBuffer,path,modelName){_lwoTree=new IFFParser().parse(iffBuffer);const textureLoader=new TextureLoader(this.manager).setPath(this.resourcePath||path).setCrossOrigin(this.crossOrigin);return new LWOTreeParser(textureLoader).parse(modelName);}}class LWOTreeParser{constructor(textureLoader){this.textureLoader=textureLoader;}parse(modelName){this.materials=new MaterialParser(this.textureLoader).parse();this.defaultLayerName=modelName;this.meshes=this.parseLayers();return{materials:this.materials,meshes:this.meshes};}parseLayers(){const meshes=[];const finalMeshes=[];const geometryParser=new GeometryParser2();const scope=this;_lwoTree.layers.forEach(function(layer){const geometry2=geometryParser.parse(layer.geometry,layer);const mesh=scope.parseMesh(geometry2,layer);meshes[layer.number]=mesh;if(layer.parent===-1)finalMeshes.push(mesh);else meshes[layer.parent].add(mesh);});this.applyPivots(finalMeshes);return finalMeshes;}parseMesh(geometry2,layer){let mesh;const materials=this.getMaterials(geometry2.userData.matNames,layer.geometry.type);this.duplicateUVs(geometry2,materials);if(layer.geometry.type===\"points\")mesh=new Points(geometry2,materials);else if(layer.geometry.type===\"lines\")mesh=new LineSegments(geometry2,materials);else mesh=new Mesh(geometry2,materials);if(layer.name)mesh.name=layer.name;else mesh.name=this.defaultLayerName+\"_layer_\"+layer.number;mesh.userData.pivot=layer.pivot;return mesh;}// TODO: may need to be reversed in z to convert LWO to three.js coordinates\napplyPivots(meshes){meshes.forEach(function(mesh){mesh.traverse(function(child){const pivot=child.userData.pivot;child.position.x+=pivot[0];child.position.y+=pivot[1];child.position.z+=pivot[2];if(child.parent){const parentPivot=child.parent.userData.pivot;child.position.x-=parentPivot[0];child.position.y-=parentPivot[1];child.position.z-=parentPivot[2];}});});}getMaterials(namesArray,type){const materials=[];const scope=this;namesArray.forEach(function(name,i2){materials[i2]=scope.getMaterialByName(name);});if(type===\"points\"||type===\"lines\"){materials.forEach(function(mat,i2){const spec={color:mat.color};if(type===\"points\"){spec.size=0.1;spec.map=mat.map;spec.morphTargets=mat.morphTargets;materials[i2]=new PointsMaterial(spec);}else if(type===\"lines\"){materials[i2]=new LineBasicMaterial(spec);}});}const filtered=materials.filter(Boolean);if(filtered.length===1)return filtered[0];return materials;}getMaterialByName(name){return this.materials.filter(function(m){return m.name===name;})[0];}// If the material has an aoMap, duplicate UVs\nduplicateUVs(geometry2,materials){let duplicateUVs=false;if(!Array.isArray(materials)){if(materials.aoMap)duplicateUVs=true;}else{materials.forEach(function(material2){if(material2.aoMap)duplicateUVs=true;});}if(!duplicateUVs)return;geometry2.setAttribute(\"uv2\",new BufferAttribute(geometry2.attributes.uv.array,2));}}class MaterialParser{constructor(textureLoader){this.textureLoader=textureLoader;}parse(){const materials=[];this.textures={};for(const name in _lwoTree.materials){if(_lwoTree.format===\"LWO3\"){materials.push(this.parseMaterial(_lwoTree.materials[name],name,_lwoTree.textures));}else if(_lwoTree.format===\"LWO2\"){materials.push(this.parseMaterialLwo2(_lwoTree.materials[name],name,_lwoTree.textures));}}return materials;}parseMaterial(materialData,name,textures){let params={name,side:this.getSide(materialData.attributes),flatShading:this.getSmooth(materialData.attributes)};const connections2=this.parseConnections(materialData.connections,materialData.nodes);const maps=this.parseTextureNodes(connections2.maps);this.parseAttributeImageMaps(connections2.attributes,textures,maps,materialData.maps);const attributes=this.parseAttributes(connections2.attributes,maps);this.parseEnvMap(connections2,maps,attributes);params=Object.assign(maps,params);params=Object.assign(params,attributes);const materialType=this.getMaterialType(connections2.attributes);return new materialType(params);}parseMaterialLwo2(materialData,name){let params={name,side:this.getSide(materialData.attributes),flatShading:this.getSmooth(materialData.attributes)};const attributes=this.parseAttributes(materialData.attributes,{});params=Object.assign(params,attributes);return new MeshPhongMaterial(params);}// Note: converting from left to right handed coords by switching x -> -x in vertices, and\n// then switching mat FrontSide -> BackSide\n// NB: this means that FrontSide and BackSide have been switched!\ngetSide(attributes){if(!attributes.side)return BackSide;switch(attributes.side){case 0:case 1:return BackSide;case 2:return FrontSide;case 3:return DoubleSide;}}getSmooth(attributes){if(!attributes.smooth)return true;return!attributes.smooth;}parseConnections(connections2,nodes){const materialConnections={maps:{}};const inputName=connections2.inputName;const inputNodeName=connections2.inputNodeName;const nodeName=connections2.nodeName;const scope=this;inputName.forEach(function(name,index){if(name===\"Material\"){const matNode=scope.getNodeByRefName(inputNodeName[index],nodes);materialConnections.attributes=matNode.attributes;materialConnections.envMap=matNode.fileName;materialConnections.name=inputNodeName[index];}});nodeName.forEach(function(name,index){if(name===materialConnections.name){materialConnections.maps[inputName[index]]=scope.getNodeByRefName(inputNodeName[index],nodes);}});return materialConnections;}getNodeByRefName(refName,nodes){for(const name in nodes){if(nodes[name].refName===refName)return nodes[name];}}parseTextureNodes(textureNodes){const maps={};for(const name in textureNodes){const node=textureNodes[name];const path=node.fileName;if(!path)return;const texture=this.loadTexture(path);if(node.widthWrappingMode!==void 0)texture.wrapS=this.getWrappingType(node.widthWrappingMode);if(node.heightWrappingMode!==void 0)texture.wrapT=this.getWrappingType(node.heightWrappingMode);switch(name){case\"Color\":maps.map=texture;break;case\"Roughness\":maps.roughnessMap=texture;maps.roughness=0.5;break;case\"Specular\":maps.specularMap=texture;maps.specular=16777215;break;case\"Luminous\":maps.emissiveMap=texture;maps.emissive=8421504;break;case\"Luminous Color\":maps.emissive=8421504;break;case\"Metallic\":maps.metalnessMap=texture;maps.metalness=0.5;break;case\"Transparency\":case\"Alpha\":maps.alphaMap=texture;maps.transparent=true;break;case\"Normal\":maps.normalMap=texture;if(node.amplitude!==void 0)maps.normalScale=new Vector2(node.amplitude,node.amplitude);break;case\"Bump\":maps.bumpMap=texture;break;}}if(maps.roughnessMap&&maps.specularMap)delete maps.specularMap;return maps;}// maps can also be defined on individual material attributes, parse those here\n// This occurs on Standard (Phong) surfaces\nparseAttributeImageMaps(attributes,textures,maps){for(const name in attributes){const attribute=attributes[name];if(attribute.maps){const mapData=attribute.maps[0];const path=this.getTexturePathByIndex(mapData.imageIndex,textures);if(!path)return;const texture=this.loadTexture(path);if(mapData.wrap!==void 0)texture.wrapS=this.getWrappingType(mapData.wrap.w);if(mapData.wrap!==void 0)texture.wrapT=this.getWrappingType(mapData.wrap.h);switch(name){case\"Color\":maps.map=texture;break;case\"Diffuse\":maps.aoMap=texture;break;case\"Roughness\":maps.roughnessMap=texture;maps.roughness=1;break;case\"Specular\":maps.specularMap=texture;maps.specular=16777215;break;case\"Luminosity\":maps.emissiveMap=texture;maps.emissive=8421504;break;case\"Metallic\":maps.metalnessMap=texture;maps.metalness=1;break;case\"Transparency\":case\"Alpha\":maps.alphaMap=texture;maps.transparent=true;break;case\"Normal\":maps.normalMap=texture;break;case\"Bump\":maps.bumpMap=texture;break;}}}}parseAttributes(attributes,maps){const params={};if(attributes.Color&&!maps.map){params.color=new Color().fromArray(attributes.Color.value);}else{params.color=new Color();}if(attributes.Transparency&&attributes.Transparency.value!==0){params.opacity=1-attributes.Transparency.value;params.transparent=true;}if(attributes[\"Bump Height\"])params.bumpScale=attributes[\"Bump Height\"].value*0.1;if(attributes[\"Refraction Index\"])params.refractionRatio=1/attributes[\"Refraction Index\"].value;this.parsePhysicalAttributes(params,attributes,maps);this.parseStandardAttributes(params,attributes,maps);this.parsePhongAttributes(params,attributes,maps);return params;}parsePhysicalAttributes(params,attributes){if(attributes.Clearcoat&&attributes.Clearcoat.value>0){params.clearcoat=attributes.Clearcoat.value;if(attributes[\"Clearcoat Gloss\"]){params.clearcoatRoughness=0.5*(1-attributes[\"Clearcoat Gloss\"].value);}}}parseStandardAttributes(params,attributes,maps){if(attributes.Luminous){params.emissiveIntensity=attributes.Luminous.value;if(attributes[\"Luminous Color\"]&&!maps.emissive){params.emissive=new Color().fromArray(attributes[\"Luminous Color\"].value);}else{params.emissive=new Color(8421504);}}if(attributes.Roughness&&!maps.roughnessMap)params.roughness=attributes.Roughness.value;if(attributes.Metallic&&!maps.metalnessMap)params.metalness=attributes.Metallic.value;}parsePhongAttributes(params,attributes,maps){if(attributes.Diffuse)params.color.multiplyScalar(attributes.Diffuse.value);if(attributes.Reflection){params.reflectivity=attributes.Reflection.value;params.combine=AddOperation;}if(attributes.Luminosity){params.emissiveIntensity=attributes.Luminosity.value;if(!maps.emissiveMap&&!maps.map){params.emissive=params.color;}else{params.emissive=new Color(8421504);}}if(!attributes.Roughness&&attributes.Specular&&!maps.specularMap){if(attributes[\"Color Highlight\"]){params.specular=new Color().setScalar(attributes.Specular.value).lerp(params.color.clone().multiplyScalar(attributes.Specular.value),attributes[\"Color Highlight\"].value);}else{params.specular=new Color().setScalar(attributes.Specular.value);}}if(params.specular&&attributes.Glossiness){params.shininess=7+Math.pow(2,attributes.Glossiness.value*12+2);}}parseEnvMap(connections2,maps,attributes){if(connections2.envMap){const envMap=this.loadTexture(connections2.envMap);if(attributes.transparent&&attributes.opacity<0.999){envMap.mapping=EquirectangularRefractionMapping;if(attributes.reflectivity!==void 0){delete attributes.reflectivity;delete attributes.combine;}if(attributes.metalness!==void 0){delete attributes.metalness;}}else{envMap.mapping=EquirectangularReflectionMapping;}maps.envMap=envMap;}}// get texture defined at top level by its index\ngetTexturePathByIndex(index){let fileName=\"\";if(!_lwoTree.textures)return fileName;_lwoTree.textures.forEach(function(texture){if(texture.index===index)fileName=texture.fileName;});return fileName;}loadTexture(path){if(!path)return null;const texture=this.textureLoader.load(path,void 0,void 0,function(){console.warn(\"LWOLoader: non-standard resource hierarchy. Use `resourcePath` parameter to specify root content directory.\");});return texture;}// 0 = Reset, 1 = Repeat, 2 = Mirror, 3 = Edge\ngetWrappingType(num){switch(num){case 0:console.warn('LWOLoader: \"Reset\" texture wrapping type is not supported in three.js');return ClampToEdgeWrapping;case 1:return RepeatWrapping;case 2:return MirroredRepeatWrapping;case 3:return ClampToEdgeWrapping;}}getMaterialType(nodeData){if(nodeData.Clearcoat&&nodeData.Clearcoat.value>0)return MeshPhysicalMaterial;if(nodeData.Roughness)return MeshStandardMaterial;return MeshPhongMaterial;}}class GeometryParser2{parse(geoData,layer){const geometry2=new BufferGeometry();geometry2.setAttribute(\"position\",new Float32BufferAttribute(geoData.points,3));const indices=this.splitIndices(geoData.vertexIndices,geoData.polygonDimensions);geometry2.setIndex(indices);this.parseGroups(geometry2,geoData);geometry2.computeVertexNormals();this.parseUVs(geometry2,layer,indices);this.parseMorphTargets(geometry2,layer,indices);geometry2.translate(-layer.pivot[0],-layer.pivot[1],-layer.pivot[2]);return geometry2;}// split quads into tris\nsplitIndices(indices,polygonDimensions){const remappedIndices=[];let i2=0;polygonDimensions.forEach(function(dim){if(dim<4){for(let k=0;k4){for(let k=1;k0){let currentIndex;if(indexPairs[tags[materialIndex]]){currentIndex=indexPairs[tags[materialIndex]];}else{currentIndex=indexNum;indexPairs[tags[materialIndex]]=indexNum;matNames[indexNum]=tags[materialIndex];}geometry2.addGroup(prevStart,currentCount,currentIndex);}geometry2.userData.matNames=matNames;}splitMaterialIndices(polygonDimensions,indices){const remappedIndices=[];polygonDimensions.forEach(function(dim,i2){if(dim<=3){remappedIndices.push(indices[i2*2],indices[i2*2+1]);}else if(dim===4){remappedIndices.push(indices[i2*2],indices[i2*2+1],indices[i2*2],indices[i2*2+1]);}else{for(let k=0;k=header.elements[currentElement].count){currentElement++;currentElementCount=0;}const element=parseASCIIElement(header.elements[currentElement].properties,line);handleElement(buffer,header.elements[currentElement].name,element);currentElementCount++;}return postProcess(buffer);}function postProcess(buffer){let geometry3=new BufferGeometry();if(buffer.indices.length>0){geometry3.setIndex(buffer.indices);}geometry3.setAttribute(\"position\",new Float32BufferAttribute(buffer.vertices,3));if(buffer.normals.length>0){geometry3.setAttribute(\"normal\",new Float32BufferAttribute(buffer.normals,3));}if(buffer.uvs.length>0){geometry3.setAttribute(\"uv\",new Float32BufferAttribute(buffer.uvs,2));}if(buffer.colors.length>0){geometry3.setAttribute(\"color\",new Float32BufferAttribute(buffer.colors,3));}if(buffer.faceVertexUvs.length>0){geometry3=geometry3.toNonIndexed();geometry3.setAttribute(\"uv\",new Float32BufferAttribute(buffer.faceVertexUvs,2));}geometry3.computeBoundingSphere();return geometry3;}function handleElement(buffer,elementName,element){if(elementName===\"vertex\"){buffer.vertices.push(element.x,element.y,element.z);if(\"nx\"in element&&\"ny\"in element&&\"nz\"in element){buffer.normals.push(element.nx,element.ny,element.nz);}if(\"s\"in element&&\"t\"in element){buffer.uvs.push(element.s,element.t);}if(\"red\"in element&&\"green\"in element&&\"blue\"in element){buffer.colors.push(element.red/255,element.green/255,element.blue/255);}}else if(elementName===\"face\"){const vertex_indices=element.vertex_indices||element.vertex_index;const texcoord=element.texcoord;if(vertex_indices.length===3){buffer.indices.push(vertex_indices[0],vertex_indices[1],vertex_indices[2]);if(texcoord&&texcoord.length===6){buffer.faceVertexUvs.push(texcoord[0],texcoord[1]);buffer.faceVertexUvs.push(texcoord[2],texcoord[3]);buffer.faceVertexUvs.push(texcoord[4],texcoord[5]);}}else if(vertex_indices.length===4){buffer.indices.push(vertex_indices[0],vertex_indices[1],vertex_indices[3]);buffer.indices.push(vertex_indices[1],vertex_indices[2],vertex_indices[3]);}}}function binaryRead(dataview,at,type,little_endian){switch(type){case\"int8\":case\"char\":return[dataview.getInt8(at),1];case\"uint8\":case\"uchar\":return[dataview.getUint8(at),1];case\"int16\":case\"short\":return[dataview.getInt16(at,little_endian),2];case\"uint16\":case\"ushort\":return[dataview.getUint16(at,little_endian),2];case\"int32\":case\"int\":return[dataview.getInt32(at,little_endian),4];case\"uint32\":case\"uint\":return[dataview.getUint32(at,little_endian),4];case\"float32\":case\"float\":return[dataview.getFloat32(at,little_endian),4];case\"float64\":case\"double\":return[dataview.getFloat64(at,little_endian),8];}}function binaryReadElement(dataview,at,properties,little_endian){const element={};let result,read2=0;for(let i2=0;i2\n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\n\t\t\t\tuniform float linewidth;\n\t\t\t\tuniform vec2 resolution;\n\n\t\t\t\tattribute vec3 instanceStart;\n\t\t\t\tattribute vec3 instanceEnd;\n\n\t\t\t\tattribute vec3 instanceColorStart;\n\t\t\t\tattribute vec3 instanceColorEnd;\n\n\t\t\t\t#ifdef WORLD_UNITS\n\n\t\t\t\t\tvarying vec4 worldPos;\n\t\t\t\t\tvarying vec3 worldStart;\n\t\t\t\t\tvarying vec3 worldEnd;\n\n\t\t\t\t\t#ifdef USE_DASH\n\n\t\t\t\t\t\tvarying vec2 vUv;\n\n\t\t\t\t\t#endif\n\n\t\t\t\t#else\n\n\t\t\t\t\tvarying vec2 vUv;\n\n\t\t\t\t#endif\n\n\t\t\t\t#ifdef USE_DASH\n\n\t\t\t\t\tuniform float dashScale;\n\t\t\t\t\tattribute float instanceDistanceStart;\n\t\t\t\t\tattribute float instanceDistanceEnd;\n\t\t\t\t\tvarying float vLineDistance;\n\n\t\t\t\t#endif\n\n\t\t\t\tvoid trimSegment( const in vec4 start, inout vec4 end ) {\n\n\t\t\t\t\t// trim end segment so it terminates between the camera plane and the near plane\n\n\t\t\t\t\t// conservative estimate of the near plane\n\t\t\t\t\tfloat a = projectionMatrix[ 2 ][ 2 ]; // 3nd entry in 3th column\n\t\t\t\t\tfloat b = projectionMatrix[ 3 ][ 2 ]; // 3nd entry in 4th column\n\t\t\t\t\tfloat nearEstimate = - 0.5 * b / a;\n\n\t\t\t\t\tfloat alpha = ( nearEstimate - start.z ) / ( end.z - start.z );\n\n\t\t\t\t\tend.xyz = mix( start.xyz, end.xyz, alpha );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\t#ifdef USE_COLOR\n\n\t\t\t\t\t\tvColor.xyz = ( position.y < 0.5 ) ? instanceColorStart : instanceColorEnd;\n\n\t\t\t\t\t#endif\n\n\t\t\t\t\t#ifdef USE_DASH\n\n\t\t\t\t\t\tvLineDistance = ( position.y < 0.5 ) ? dashScale * instanceDistanceStart : dashScale * instanceDistanceEnd;\n\t\t\t\t\t\tvUv = uv;\n\n\t\t\t\t\t#endif\n\n\t\t\t\t\tfloat aspect = resolution.x / resolution.y;\n\n\t\t\t\t\t// camera space\n\t\t\t\t\tvec4 start = modelViewMatrix * vec4( instanceStart, 1.0 );\n\t\t\t\t\tvec4 end = modelViewMatrix * vec4( instanceEnd, 1.0 );\n\n\t\t\t\t\t#ifdef WORLD_UNITS\n\n\t\t\t\t\t\tworldStart = start.xyz;\n\t\t\t\t\t\tworldEnd = end.xyz;\n\n\t\t\t\t\t#else\n\n\t\t\t\t\t\tvUv = uv;\n\n\t\t\t\t\t#endif\n\n\t\t\t\t\t// special case for perspective projection, and segments that terminate either in, or behind, the camera plane\n\t\t\t\t\t// clearly the gpu firmware has a way of addressing this issue when projecting into ndc space\n\t\t\t\t\t// but we need to perform ndc-space calculations in the shader, so we must address this issue directly\n\t\t\t\t\t// perhaps there is a more elegant solution -- WestLangley\n\n\t\t\t\t\tbool perspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 ); // 4th entry in the 3rd column\n\n\t\t\t\t\tif ( perspective ) {\n\n\t\t\t\t\t\tif ( start.z < 0.0 && end.z >= 0.0 ) {\n\n\t\t\t\t\t\t\ttrimSegment( start, end );\n\n\t\t\t\t\t\t} else if ( end.z < 0.0 && start.z >= 0.0 ) {\n\n\t\t\t\t\t\t\ttrimSegment( end, start );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// clip space\n\t\t\t\t\tvec4 clipStart = projectionMatrix * start;\n\t\t\t\t\tvec4 clipEnd = projectionMatrix * end;\n\n\t\t\t\t\t// ndc space\n\t\t\t\t\tvec3 ndcStart = clipStart.xyz / clipStart.w;\n\t\t\t\t\tvec3 ndcEnd = clipEnd.xyz / clipEnd.w;\n\n\t\t\t\t\t// direction\n\t\t\t\t\tvec2 dir = ndcEnd.xy - ndcStart.xy;\n\n\t\t\t\t\t// account for clip-space aspect ratio\n\t\t\t\t\tdir.x *= aspect;\n\t\t\t\t\tdir = normalize( dir );\n\n\t\t\t\t\t#ifdef WORLD_UNITS\n\n\t\t\t\t\t\t// get the offset direction as perpendicular to the view vector\n\t\t\t\t\t\tvec3 worldDir = normalize( end.xyz - start.xyz );\n\t\t\t\t\t\tvec3 offset;\n\t\t\t\t\t\tif ( position.y < 0.5 ) {\n\n\t\t\t\t\t\t\toffset = normalize( cross( start.xyz, worldDir ) );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\toffset = normalize( cross( end.xyz, worldDir ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// sign flip\n\t\t\t\t\t\tif ( position.x < 0.0 ) offset *= - 1.0;\n\n\t\t\t\t\t\tfloat forwardOffset = dot( worldDir, vec3( 0.0, 0.0, 1.0 ) );\n\n\t\t\t\t\t\t// don't extend the line if we're rendering dashes because we\n\t\t\t\t\t\t// won't be rendering the endcaps\n\t\t\t\t\t\t#ifndef USE_DASH\n\n\t\t\t\t\t\t\t// extend the line bounds to encompass endcaps\n\t\t\t\t\t\t\tstart.xyz += - worldDir * linewidth * 0.5;\n\t\t\t\t\t\t\tend.xyz += worldDir * linewidth * 0.5;\n\n\t\t\t\t\t\t\t// shift the position of the quad so it hugs the forward edge of the line\n\t\t\t\t\t\t\toffset.xy -= dir * forwardOffset;\n\t\t\t\t\t\t\toffset.z += 0.5;\n\n\t\t\t\t\t\t#endif\n\n\t\t\t\t\t\t// endcaps\n\t\t\t\t\t\tif ( position.y > 1.0 || position.y < 0.0 ) {\n\n\t\t\t\t\t\t\toffset.xy += dir * 2.0 * forwardOffset;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// adjust for linewidth\n\t\t\t\t\t\toffset *= linewidth * 0.5;\n\n\t\t\t\t\t\t// set the world position\n\t\t\t\t\t\tworldPos = ( position.y < 0.5 ) ? start : end;\n\t\t\t\t\t\tworldPos.xyz += offset;\n\n\t\t\t\t\t\t// project the worldpos\n\t\t\t\t\t\tvec4 clip = projectionMatrix * worldPos;\n\n\t\t\t\t\t\t// shift the depth of the projected points so the line\n\t\t\t\t\t\t// segments overlap neatly\n\t\t\t\t\t\tvec3 clipPose = ( position.y < 0.5 ) ? ndcStart : ndcEnd;\n\t\t\t\t\t\tclip.z = clipPose.z * clip.w;\n\n\t\t\t\t\t#else\n\n\t\t\t\t\t\tvec2 offset = vec2( dir.y, - dir.x );\n\t\t\t\t\t\t// undo aspect ratio adjustment\n\t\t\t\t\t\tdir.x /= aspect;\n\t\t\t\t\t\toffset.x /= aspect;\n\n\t\t\t\t\t\t// sign flip\n\t\t\t\t\t\tif ( position.x < 0.0 ) offset *= - 1.0;\n\n\t\t\t\t\t\t// endcaps\n\t\t\t\t\t\tif ( position.y < 0.0 ) {\n\n\t\t\t\t\t\t\toffset += - dir;\n\n\t\t\t\t\t\t} else if ( position.y > 1.0 ) {\n\n\t\t\t\t\t\t\toffset += dir;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// adjust for linewidth\n\t\t\t\t\t\toffset *= linewidth;\n\n\t\t\t\t\t\t// adjust for clip-space to screen-space conversion // maybe resolution should be based on viewport ...\n\t\t\t\t\t\toffset /= resolution.y;\n\n\t\t\t\t\t\t// select end\n\t\t\t\t\t\tvec4 clip = ( position.y < 0.5 ) ? clipStart : clipEnd;\n\n\t\t\t\t\t\t// back to clip space\n\t\t\t\t\t\toffset *= clip.w;\n\n\t\t\t\t\t\tclip.xy += offset;\n\n\t\t\t\t\t#endif\n\n\t\t\t\t\tgl_Position = clip;\n\n\t\t\t\t\tvec4 mvPosition = ( position.y < 0.5 ) ? start : end; // this is an approximation\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,fragmentShader:/* glsl */`\n\t\t\t\tuniform vec3 diffuse;\n\t\t\t\tuniform float opacity;\n\t\t\t\tuniform float linewidth;\n\n\t\t\t\t#ifdef USE_DASH\n\n\t\t\t\t\tuniform float dashOffset;\n\t\t\t\t\tuniform float dashSize;\n\t\t\t\t\tuniform float gapSize;\n\n\t\t\t\t#endif\n\n\t\t\t\tvarying float vLineDistance;\n\n\t\t\t\t#ifdef WORLD_UNITS\n\n\t\t\t\t\tvarying vec4 worldPos;\n\t\t\t\t\tvarying vec3 worldStart;\n\t\t\t\t\tvarying vec3 worldEnd;\n\n\t\t\t\t\t#ifdef USE_DASH\n\n\t\t\t\t\t\tvarying vec2 vUv;\n\n\t\t\t\t\t#endif\n\n\t\t\t\t#else\n\n\t\t\t\t\tvarying vec2 vUv;\n\n\t\t\t\t#endif\n\n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\t\t\t\t#include \n\n\t\t\t\tvec2 closestLineToLine(vec3 p1, vec3 p2, vec3 p3, vec3 p4) {\n\n\t\t\t\t\tfloat mua;\n\t\t\t\t\tfloat mub;\n\n\t\t\t\t\tvec3 p13 = p1 - p3;\n\t\t\t\t\tvec3 p43 = p4 - p3;\n\n\t\t\t\t\tvec3 p21 = p2 - p1;\n\n\t\t\t\t\tfloat d1343 = dot( p13, p43 );\n\t\t\t\t\tfloat d4321 = dot( p43, p21 );\n\t\t\t\t\tfloat d1321 = dot( p13, p21 );\n\t\t\t\t\tfloat d4343 = dot( p43, p43 );\n\t\t\t\t\tfloat d2121 = dot( p21, p21 );\n\n\t\t\t\t\tfloat denom = d2121 * d4343 - d4321 * d4321;\n\n\t\t\t\t\tfloat numer = d1343 * d4321 - d1321 * d4343;\n\n\t\t\t\t\tmua = numer / denom;\n\t\t\t\t\tmua = clamp( mua, 0.0, 1.0 );\n\t\t\t\t\tmub = ( d1343 + d4321 * ( mua ) ) / d4343;\n\t\t\t\t\tmub = clamp( mub, 0.0, 1.0 );\n\n\t\t\t\t\treturn vec2( mua, mub );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\t#include \n\n\t\t\t\t\t#ifdef USE_DASH\n\n\t\t\t\t\t\tif ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps\n\n\t\t\t\t\t\tif ( mod( vLineDistance + dashOffset, dashSize + gapSize ) > dashSize ) discard; // todo - FIX\n\n\t\t\t\t\t#endif\n\n\t\t\t\t\tfloat alpha = opacity;\n\n\t\t\t\t\t#ifdef WORLD_UNITS\n\n\t\t\t\t\t\t// Find the closest points on the view ray and the line segment\n\t\t\t\t\t\tvec3 rayEnd = normalize( worldPos.xyz ) * 1e5;\n\t\t\t\t\t\tvec3 lineDir = worldEnd - worldStart;\n\t\t\t\t\t\tvec2 params = closestLineToLine( worldStart, worldEnd, vec3( 0.0, 0.0, 0.0 ), rayEnd );\n\n\t\t\t\t\t\tvec3 p1 = worldStart + lineDir * params.x;\n\t\t\t\t\t\tvec3 p2 = rayEnd * params.y;\n\t\t\t\t\t\tvec3 delta = p1 - p2;\n\t\t\t\t\t\tfloat len = length( delta );\n\t\t\t\t\t\tfloat norm = len / linewidth;\n\n\t\t\t\t\t\t#ifndef USE_DASH\n\n\t\t\t\t\t\t\t#ifdef USE_ALPHA_TO_COVERAGE\n\n\t\t\t\t\t\t\t\tfloat dnorm = fwidth( norm );\n\t\t\t\t\t\t\t\talpha = 1.0 - smoothstep( 0.5 - dnorm, 0.5 + dnorm, norm );\n\n\t\t\t\t\t\t\t#else\n\n\t\t\t\t\t\t\t\tif ( norm > 0.5 ) {\n\n\t\t\t\t\t\t\t\t\tdiscard;\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t#endif\n\n\t\t\t\t\t\t#endif\n\n\t\t\t\t\t#else\n\n\t\t\t\t\t\t#ifdef USE_ALPHA_TO_COVERAGE\n\n\t\t\t\t\t\t\t// artifacts appear on some hardware if a derivative is taken within a conditional\n\t\t\t\t\t\t\tfloat a = vUv.x;\n\t\t\t\t\t\t\tfloat b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0;\n\t\t\t\t\t\t\tfloat len2 = a * a + b * b;\n\t\t\t\t\t\t\tfloat dlen = fwidth( len2 );\n\n\t\t\t\t\t\t\tif ( abs( vUv.y ) > 1.0 ) {\n\n\t\t\t\t\t\t\t\talpha = 1.0 - smoothstep( 1.0 - dlen, 1.0 + dlen, len2 );\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\tif ( abs( vUv.y ) > 1.0 ) {\n\n\t\t\t\t\t\t\t\tfloat a = vUv.x;\n\t\t\t\t\t\t\t\tfloat b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0;\n\t\t\t\t\t\t\t\tfloat len2 = a * a + b * b;\n\n\t\t\t\t\t\t\t\tif ( len2 > 1.0 ) discard;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t#endif\n\n\t\t\t\t\t#endif\n\n\t\t\t\t\tvec4 diffuseColor = vec4( diffuse, alpha );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t\tgl_FragColor = vec4( diffuseColor.rgb, alpha );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include <${parseInt(REVISION.replace(/\\D+/g,\"\"))>=154?\"colorspace_fragment\":\"encodings_fragment\"}>\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,clipping:true// required for clipping support\n});this.isLineMaterial=true;Object.defineProperties(this,{color:{enumerable:true,get:function(){return this.uniforms.diffuse.value;},set:function(value){this.uniforms.diffuse.value=value;}},worldUnits:{enumerable:true,get:function(){return\"WORLD_UNITS\"in this.defines;},set:function(value){if(value===true){this.defines.WORLD_UNITS=\"\";}else{delete this.defines.WORLD_UNITS;}}},linewidth:{enumerable:true,get:function(){return this.uniforms.linewidth.value;},set:function(value){this.uniforms.linewidth.value=value;}},dashed:{enumerable:true,get:function(){return Boolean(\"USE_DASH\"in this.defines);},set(value){if(Boolean(value)!==Boolean(\"USE_DASH\"in this.defines)){this.needsUpdate=true;}if(value===true){this.defines.USE_DASH=\"\";}else{delete this.defines.USE_DASH;}}},dashScale:{enumerable:true,get:function(){return this.uniforms.dashScale.value;},set:function(value){this.uniforms.dashScale.value=value;}},dashSize:{enumerable:true,get:function(){return this.uniforms.dashSize.value;},set:function(value){this.uniforms.dashSize.value=value;}},dashOffset:{enumerable:true,get:function(){return this.uniforms.dashOffset.value;},set:function(value){this.uniforms.dashOffset.value=value;}},gapSize:{enumerable:true,get:function(){return this.uniforms.gapSize.value;},set:function(value){this.uniforms.gapSize.value=value;}},opacity:{enumerable:true,get:function(){return this.uniforms.opacity.value;},set:function(value){this.uniforms.opacity.value=value;}},resolution:{enumerable:true,get:function(){return this.uniforms.resolution.value;},set:function(value){this.uniforms.resolution.value.copy(value);}},alphaToCoverage:{enumerable:true,get:function(){return Boolean(\"USE_ALPHA_TO_COVERAGE\"in this.defines);},set:function(value){if(Boolean(value)!==Boolean(\"USE_ALPHA_TO_COVERAGE\"in this.defines)){this.needsUpdate=true;}if(value===true){this.defines.USE_ALPHA_TO_COVERAGE=\"\";this.extensions.derivatives=true;}else{delete this.defines.USE_ALPHA_TO_COVERAGE;this.extensions.derivatives=false;}}}});this.setValues(parameters);}}const _start$1=/*@__PURE__*/new Vector3();const _end$1=/*@__PURE__*/new Vector3();class Wireframe extends Mesh{constructor(geometry2=new LineSegmentsGeometry(),material2=new LineMaterial({color:Math.random()*16777215})){super(geometry2,material2);this.isWireframe=true;this.type=\"Wireframe\";}// for backwards-compatibility, but could be a method of LineSegmentsGeometry...\ncomputeLineDistances(){const geometry2=this.geometry;const instanceStart=geometry2.attributes.instanceStart;const instanceEnd=geometry2.attributes.instanceEnd;const lineDistances=new Float32Array(2*instanceStart.count);for(let i2=0,j=0,l=instanceStart.count;i2near&&_end4.z>near;if(isBehindCameraNear){continue;}if(_start4.z>near){const deltaDist=_start4.z-_end4.z;const t2=(_start4.z-near)/deltaDist;_start4.lerp(_end4,t2);}else if(_end4.z>near){const deltaDist=_end4.z-_start4.z;const t2=(_end4.z-near)/deltaDist;_end4.lerp(_start4,t2);}_start4.applyMatrix4(projectionMatrix);_end4.applyMatrix4(projectionMatrix);_start4.multiplyScalar(1/_start4.w);_end4.multiplyScalar(1/_end4.w);_start4.x*=resolution.x/2;_start4.y*=resolution.y/2;_end4.x*=resolution.x/2;_end4.y*=resolution.y/2;_line.start.copy(_start4);_line.start.z=0;_line.end.copy(_end4);_line.end.z=0;const param=_line.closestPointToPointParameter(_ssOrigin3,true);_line.at(param,_closestPoint);const zPos=MathUtils.lerp(_start4.z,_end4.z,param);const isInClipSpace=zPos>=-1&&zPos<=1;const isInside=_ssOrigin3.distanceTo(_closestPoint)<_lineWidth*0.5;if(isInClipSpace&&isInside){_line.start.fromBufferAttribute(instanceStart,i2);_line.end.fromBufferAttribute(instanceEnd,i2);_line.start.applyMatrix4(matrixWorld);_line.end.applyMatrix4(matrixWorld);const pointOnLine=new Vector3();const point=new Vector3();_ray.distanceSqToSegment(_line.start,_line.end,point,pointOnLine);intersects.push({point,pointOnLine,distance:_ray.origin.distanceTo(point),object:lineSegments,face:null,faceIndex:i2,uv:null,uv2:null});}}}class LineSegments2 extends Mesh{constructor(geometry2=new LineSegmentsGeometry(),material2=new LineMaterial({color:Math.random()*16777215})){super(geometry2,material2);this.isLineSegments2=true;this.type=\"LineSegments2\";}// for backwards-compatibility, but could be a method of LineSegmentsGeometry...\ncomputeLineDistances(){const geometry2=this.geometry;const instanceStart=geometry2.attributes.instanceStart;const instanceEnd=geometry2.attributes.instanceEnd;const lineDistances=new Float32Array(2*instanceStart.count);for(let i2=0,j=0,l=instanceStart.count;i21)c.multiplyScalar(1/max);this.children[0].material.color.copy(this.material.color);}this.matrixWorld.extractRotation(this.light.matrixWorld).scale(this.scale).copyPosition(this.light.matrixWorld);this.children[0].matrixWorld.copy(this.matrixWorld);}dispose(){this.geometry.dispose();this.material.dispose();this.children[0].geometry.dispose();this.children[0].material.dispose();}}class RectAreaLightUniformsLib{static init(){const LTC_MAT_1=[1,0,0,2e-5,1,0,0,503905e-9,1,0,0,201562e-8,1,0,0,453516e-8,1,0,0,806253e-8,1,0,0,0.0125978,1,0,0,0.018141,1,0,0,0.0246924,1,0,0,0.0322525,1,0,0,0.0408213,1,0,0,0.0503999,1,0,0,0.0609894,1,0,0,0.0725906,1,0,0,0.0852058,1,0,0,0.0988363,1,0,0,0.113484,1,0,0,0.129153,1,0,0,0.145839,1,0,0,0.163548,1,0,0,0.182266,1,0,0,0.201942,1,0,0,0.222314,1,0,0,0.241906,1,0,0,0.262314,1,0,0,0.285754,1,0,0,0.310159,1,0,0,0.335426,1,0,0,0.361341,1,0,0,0.387445,1,0,0,0.412784,1,0,0,0.438197,1,0,0,0.466966,1,0,0,0.49559,1,0,0,0.523448,1,0,0,0.549938,1,0,0,0.57979,1,0,0,0.608746,1,0,0,0.636185,1,0,0,0.664748,1,0,0,0.69313,1,0,0,0.71966,1,0,0,0.747662,1,0,0,0.774023,1,0,0,0.799775,1,0,0,0.825274,1,0,0,0.849156,1,0,0,0.873248,1,0,0,0.89532,1,0,0,0.917565,1,0,0,0.937863,1,0,0,0.958139,1,0,0,0.976563,1,0,0,0.994658,1,0,0,1.0112,1,0,0,1.02712,1,0,0,1.04189,1,0,0,1.05568,1,0,0,1.06877,1,0,0,1.08058,1,0,0,1.09194,1,0,0,1.10191,1,0,0,1.11161,1,0,0,1.1199,1,0,0,1.12813,0.999547,-448815e-12,0.0224417,199902e-10,0.999495,-113079e-10,0.0224406,503651e-9,0.999496,-452317e-10,0.0224406,201461e-8,0.999496,-101772e-9,0.0224406,453287e-8,0.999495,-180928e-9,0.0224406,805845e-8,0.999497,-282702e-9,0.0224406,0.0125914,0.999496,-407096e-9,0.0224406,0.0181319,0.999498,-554114e-9,0.0224406,0.02468,0.999499,-723768e-9,0.0224406,0.0322363,0.999495,-916058e-9,0.0224405,0.0408009,0.999499,-113101e-8,0.0224408,0.050375,0.999494,-136863e-8,0.0224405,0.0609586,0.999489,-162896e-8,0.0224401,0.0725537,0.999489,-191201e-8,0.0224414,0.0851619,0.999498,-221787e-8,0.0224413,0.0987867,0.999492,-254642e-8,0.0224409,0.113426,0.999507,-289779e-8,0.0224417,0.129088,0.999494,-32716e-7,0.0224386,0.145767,0.999546,-36673e-7,0.0224424,0.163472,0.999543,-408166e-8,0.0224387,0.182182,0.999499,-450056e-8,0.0224338,0.201843,0.999503,-483661e-8,0.0224203,0.222198,0.999546,-452928e-8,0.022315,0.241714,0.999508,-587403e-8,0.0224329,0.262184,0.999509,-638806e-8,0.0224271,0.285609,0.999501,-691028e-8,0.0224166,0.309998,0.999539,-741979e-8,0.0223989,0.335262,0.999454,-786282e-8,0.0223675,0.361154,0.999529,-811928e-8,0.0222828,0.387224,0.999503,-799941e-8,0.0221063,0.41252,0.999561,-952753e-8,0.0223057,0.438006,0.999557,-99134e-7,0.0222065,0.466735,0.999541,-0.0100935,0.0220402,0.495332,0.999562,-996821e-8,0.0218067,0.523197,0.999556,-0.0105031,0.0217096,0.550223,0.999561,-0.0114191,0.0217215,0.579498,0.999588,-0.0111818,0.0213357,0.608416,0.999633,-0.0107725,0.0208689,0.635965,0.999527,-0.0121671,0.0210149,0.664476,0.999508,-0.0116005,0.020431,0.692786,0.999568,-0.0115604,0.0199791,0.719709,0.999671,-0.0121117,0.0197415,0.74737,0.999688,-0.0110769,0.0188846,0.773692,0.99962,-0.0122368,0.0188452,0.799534,0.999823,-0.0110325,0.0178001,0.825046,0.999599,-0.0114923,0.0174221,0.849075,0.999619,-0.0105923,0.0164345,0.872999,0.999613,-0.0105988,0.0158227,0.895371,0.99964,-979861e-8,0.0148131,0.917364,0.99977,-967238e-8,0.0140721,0.938002,0.999726,-869175e-8,0.0129543,0.957917,0.99973,-866872e-8,0.0122329,0.976557,0.999773,-731956e-8,0.0108958,0.994459,0.999811,-756027e-8,0.0102715,1.01118,0.999862,-583732e-8,878781e-8,1.02701,0.999835,-631438e-8,827529e-8,1.04186,0.999871,-450785e-8,674583e-8,1.05569,0.999867,-486079e-8,621041e-8,1.06861,0.999939,-322072e-8,478301e-8,1.08064,0.999918,-318199e-8,406395e-8,1.09181,1.00003,-193348e-8,280682e-8,1.10207,0.999928,-153729e-8,198741e-8,1.11152,0.999933,-623666e-9,917714e-9,1.12009,1,-102387e-11,907581e-12,1.12813,0.997866,-896716e-12,0.0448334,199584e-10,0.997987,-225945e-10,0.0448389,502891e-9,0.997987,-903781e-10,0.0448388,201156e-8,0.997985,-203351e-9,0.0448388,452602e-8,0.997986,-361514e-9,0.0448388,804629e-8,0.997987,-56487e-8,0.0448389,0.0125724,0.997988,-813423e-9,0.0448389,0.0181045,0.997984,-110718e-8,0.0448387,0.0246427,0.997985,-144616e-8,0.0448388,0.0321875,0.997987,-183038e-8,0.044839,0.0407392,0.997983,-225987e-8,0.0448387,0.0502986,0.997991,-273467e-8,0.0448389,0.0608667,0.997984,-325481e-8,0.0448384,0.0724444,0.998002,-382043e-8,0.044839,0.0850348,0.997997,-443145e-8,0.0448396,0.0986372,0.998007,-508796e-8,0.0448397,0.113255,0.998008,-578985e-8,0.04484,0.128891,0.998003,-653683e-8,0.0448384,0.145548,0.997983,-732713e-8,0.0448358,0.163221,0.997985,-815454e-8,0.0448358,0.181899,0.998005,-898985e-8,0.0448286,0.201533,0.998026,-964404e-8,0.0447934,0.221821,0.998055,-922677e-8,0.044611,0.241282,0.99804,-0.0117361,0.0448245,0.261791,0.998048,-0.0127628,0.0448159,0.285181,0.998088,-0.0138055,0.0447996,0.30954,0.998058,-0.0148206,0.0447669,0.334751,0.998099,-0.0156998,0.044697,0.36061,0.998116,-0.0161976,0.0445122,0.386603,0.998195,-0.015945,0.0441711,0.411844,0.998168,-0.0183947,0.0444255,0.43773,0.998184,-0.0197913,0.0443809,0.466009,0.998251,-0.0201426,0.0440689,0.494574,0.998305,-0.0198847,0.0435632,0.522405,0.998273,-0.0210577,0.043414,0.549967,0.998254,-0.0227901,0.0433943,0.578655,0.998349,-0.0223108,0.0426529,0.60758,0.99843,-0.0223088,0.042,0.635524,0.998373,-0.0241141,0.0418987,0.663621,0.998425,-0.0231446,0.0408118,0.691906,0.998504,-0.0233684,0.0400565,0.719339,0.998443,-0.0241652,0.0394634,0.74643,0.99848,-0.0228715,0.0380002,0.773086,0.998569,-0.023519,0.0372322,0.798988,0.998619,-0.0223108,0.0356468,0.824249,0.998594,-0.0223105,0.034523,0.848808,0.998622,-0.0213426,0.0328887,0.87227,0.998669,-0.0207912,0.0314374,0.895157,0.998705,-0.0198416,0.0296925,0.916769,0.998786,-0.0189168,0.0279634,0.937773,0.998888,-0.0178811,0.0261597,0.957431,0.99906,-0.0166845,0.0242159,0.976495,0.999038,-0.0155464,0.0222638,0.994169,0.999237,-0.0141349,0.0201967,1.01112,0.999378,-0.0129324,0.0181744,1.02692,0.999433,-0.0113192,0.0159898,1.04174,0.999439,-0.0101244,0.0140385,1.05559,0.999614,-837456e-8,0.0117826,1.06852,0.999722,-721769e-8,983745e-8,1.08069,0.999817,-554067e-8,769002e-8,1.09176,0.99983,-426961e-8,5782e-6,1.10211,0.999964,-273904e-8,374503e-8,1.11152,1.00001,-136739e-8,187176e-8,1.12031,0.999946,393227e-10,-28919e-9,1.12804,0.995847,-13435e-10,0.0671785,19916e-9,0.995464,-338387e-10,0.0671527,501622e-9,0.99547,-135355e-9,0.0671531,200649e-8,0.995471,-30455e-8,0.0671532,451461e-8,0.99547,-541423e-9,0.0671531,8026e-6,0.995471,-84598e-8,0.0671531,0.0125407,0.99547,-121823e-8,0.0671531,0.0180589,0.99547,-165817e-8,0.0671531,0.0245806,0.995463,-216583e-8,0.0671526,0.0321062,0.995468,-274127e-8,0.0671527,0.0406366,0.995474,-338447e-8,0.0671534,0.0501717,0.995473,-409554e-8,0.0671533,0.0607131,0.995478,-487451e-8,0.0671531,0.0722618,0.995476,-572148e-8,0.0671532,0.0848191,0.995477,-663658e-8,0.0671539,0.0983882,0.995498,-761986e-8,0.0671541,0.112972,0.995509,-867094e-8,0.0671542,0.128568,0.995509,-978951e-8,0.0671531,0.145183,0.995503,-0.0109725,0.0671491,0.162808,0.995501,-0.012211,0.0671465,0.181441,0.99553,-0.0134565,0.0671371,0.201015,0.99555,-0.014391,0.0670831,0.221206,0.99558,-0.014351,0.0668883,0.240813,0.995577,-0.0173997,0.0671055,0.261257,0.995602,-0.0191111,0.0671178,0.284467,0.995623,-0.0206705,0.0670946,0.308765,0.995658,-0.022184,0.0670472,0.333905,0.995705,-0.0234832,0.0669417,0.359677,0.995719,-0.0241933,0.0666714,0.385554,0.995786,-0.0243539,0.066266,0.410951,0.995887,-0.0271866,0.0664367,0.437163,0.995944,-0.0296012,0.0664931,0.464842,0.996004,-0.0301045,0.0660105,0.49332,0.996128,-0.0298311,0.0652694,0.521131,0.996253,-0.0316426,0.0650739,0.549167,0.996244,-0.0339043,0.0649433,0.57737,0.996309,-0.033329,0.0638926,0.606073,0.996417,-0.0338935,0.0630849,0.634527,0.996372,-0.0353104,0.0625083,0.66256,0.996542,-0.0348942,0.0611986,0.690516,0.996568,-0.0351614,0.060069,0.718317,0.996711,-0.0354317,0.0588522,0.74528,0.996671,-0.0349513,0.0571902,0.772061,0.996865,-0.0345622,0.0555321,0.798089,0.996802,-0.0342566,0.0537816,0.823178,0.996992,-0.0330862,0.0516095,0.847949,0.996944,-0.0324666,0.0495537,0.871431,0.997146,-0.0309544,0.0470302,0.894357,0.997189,-0.0299372,0.0446043,0.916142,0.997471,-0.0281389,0.0418812,0.937193,0.997515,-0.0268702,0.0391823,0.957,0.997812,-0.0247166,0.0361338,0.975936,0.998027,-0.0233525,0.0333945,0.99391,0.998233,-0.0209839,0.0301917,1.01075,0.998481,-0.0194309,0.027271,1.02669,0.998859,-0.0169728,0.0240162,1.04173,0.99894,-0.0152322,0.0210517,1.05551,0.999132,-0.0127497,0.0178632,1.06856,0.999369,-0.0108282,0.014787,1.08054,0.999549,-845886e-8,0.0116185,1.09185,0.999805,-63937e-7,867209e-8,1.10207,0.99985,-414582e-8,566823e-8,1.1117,0.999912,-207443e-8,277562e-8,1.12022,1.00001,870226e-10,-53766e-9,1.12832,0.991943,-178672e-11,0.0893382,198384e-10,0.991952,-450183e-10,0.089339,499849e-9,0.991956,-180074e-9,0.0893394,19994e-7,0.991955,-405167e-9,0.0893393,449867e-8,0.991953,-720298e-9,0.0893391,799764e-8,0.991955,-112548e-8,0.0893393,0.0124964,0.991957,-16207e-7,0.0893395,0.0179951,0.991958,-220601e-8,0.0893396,0.0244939,0.991947,-288137e-8,0.0893385,0.0319929,0.991962,-364693e-8,0.0893399,0.0404933,0.991965,-450264e-8,0.0893399,0.049995,0.99198,-544862e-8,0.0893411,0.0604995,0.99197,-648491e-8,0.0893397,0.0720074,0.991976,-761164e-8,0.089341,0.0845207,0.99198,-882891e-8,0.0893405,0.0980413,0.991982,-0.0101367,0.0893396,0.112571,0.992008,-0.011535,0.0893415,0.128115,0.992026,-0.0130228,0.0893414,0.144672,0.992064,-0.0145966,0.0893418,0.162241,0.992041,-0.0162421,0.0893359,0.180801,0.992086,-0.0178888,0.0893214,0.200302,0.992157,-0.0190368,0.0892401,0.220332,0.992181,-0.0195584,0.0890525,0.240144,0.992175,-0.0227257,0.0892153,0.260728,0.99221,-0.0254195,0.089304,0.283473,0.99222,-0.0274883,0.0892703,0.307673,0.992317,-0.0294905,0.0892027,0.332729,0.992374,-0.0311861,0.0890577,0.358387,0.992505,-0.0320656,0.0886994,0.384102,0.992568,-0.0329715,0.0883198,0.409767,0.992675,-0.036006,0.0883602,0.436145,0.992746,-0.0392897,0.0884591,0.463217,0.992873,-0.0399337,0.0878287,0.491557,0.992934,-0.040231,0.0870108,0.519516,0.993091,-0.0422013,0.0865857,0.547741,0.993259,-0.0443503,0.0861937,0.575792,0.993455,-0.0446368,0.0851187,0.604233,0.993497,-0.0454299,0.0840576,0.632925,0.993694,-0.0463296,0.0829671,0.660985,0.993718,-0.0470619,0.0817185,0.688714,0.993973,-0.0468838,0.0800294,0.716743,0.994207,-0.046705,0.0781286,0.74377,0.994168,-0.0469698,0.0763337,0.77042,0.9945,-0.0456816,0.0738184,0.796659,0.994356,-0.0455518,0.0715545,0.821868,0.994747,-0.0439488,0.0686085,0.846572,0.994937,-0.0430056,0.065869,0.870435,0.995142,-0.0413414,0.0626446,0.893272,0.995451,-0.0396521,0.05929,0.915376,0.995445,-0.0378453,0.0558503,0.936196,0.995967,-0.0355219,0.0520949,0.956376,0.996094,-0.0335146,0.048377,0.975327,0.996622,-0.030682,0.0442575,0.993471,0.996938,-0.0285504,0.0404693,1.01052,0.997383,-0.0253399,0.0360903,1.02637,0.997714,-0.0231651,0.0322176,1.04139,0.998249,-0.0198138,0.0278433,1.05542,0.998596,-0.0174337,0.0238759,1.06846,0.998946,-0.0141349,0.0195944,1.08056,0.99928,-0.0115603,0.0156279,1.09181,0.999507,-839065e-8,0.0114607,1.10213,0.999697,-5666e-6,763325e-8,1.11169,0.999869,-269902e-8,364946e-8,1.12042,1.00001,623836e-10,-319288e-10,1.12832,0.987221,-222675e-11,0.111332,197456e-10,0.98739,-561116e-10,0.111351,497563e-9,0.987448,-224453e-9,0.111357,199031e-8,0.987441,-505019e-9,0.111357,44782e-7,0.987442,-897816e-9,0.111357,796129e-8,0.987442,-140284e-8,0.111357,0.0124396,0.987444,-202012e-8,0.111357,0.0179132,0.987442,-274964e-8,0.111357,0.0243824,0.987446,-359147e-8,0.111357,0.0318474,0.987435,-454562e-8,0.111356,0.0403086,0.987461,-561225e-8,0.111358,0.0497678,0.987458,-679125e-8,0.111358,0.0602239,0.987443,-80828e-7,0.111356,0.0716792,0.987476,-94872e-7,0.111358,0.0841364,0.98749,-0.0110044,0.111361,0.097597,0.987508,-0.0126344,0.111362,0.112062,0.987494,-0.0143767,0.111357,0.127533,0.987526,-0.0162307,0.111359,0.144015,0.987558,-0.0181912,0.111361,0.161502,0.987602,-0.0202393,0.111355,0.179979,0.987692,-0.022273,0.111346,0.199386,0.987702,-0.0235306,0.111215,0.219183,0.987789,-0.0247628,0.111061,0.239202,0.987776,-0.0280668,0.111171,0.259957,0.987856,-0.0316751,0.111327,0.282198,0.987912,-0.0342468,0.111282,0.306294,0.988,-0.0367205,0.111198,0.331219,0.988055,-0.0387766,0.110994,0.356708,0.988241,-0.0397722,0.110547,0.382234,0.988399,-0.0416076,0.110198,0.408227,0.988539,-0.0448192,0.110137,0.434662,0.988661,-0.0483793,0.110143,0.461442,0.988967,-0.0495895,0.109453,0.489318,0.989073,-0.0506797,0.108628,0.517516,0.989274,-0.0526953,0.108003,0.545844,0.989528,-0.054578,0.107255,0.573823,0.989709,-0.0561503,0.106294,0.601944,0.989991,-0.056866,0.104896,0.630855,0.990392,-0.0572914,0.103336,0.658925,0.990374,-0.0586224,0.10189,0.686661,0.990747,-0.0584764,0.099783,0.714548,0.991041,-0.0582662,0.0974309,0.74186,0.991236,-0.0584118,0.0951678,0.768422,0.991585,-0.0573055,0.0921581,0.794817,0.991984,-0.0564241,0.0891167,0.820336,0.9921,-0.0553608,0.085805,0.84493,0.992749,-0.0533816,0.0820354,0.868961,0.99288,-0.0518661,0.0782181,0.891931,0.993511,-0.0492492,0.0738935,0.914186,0.993617,-0.0471956,0.0696402,0.93532,0.99411,-0.044216,0.0649659,0.95543,0.994595,-0.0416654,0.0603177,0.974685,0.994976,-0.0384314,0.0553493,0.992807,0.995579,-0.0353491,0.0503942,1.00996,0.996069,-0.0319787,0.0452123,1.02606,0.996718,-0.028472,0.0400112,1.04114,0.997173,-0.0250789,0.0349456,1.05517,0.997818,-0.0213326,0.029653,1.0683,0.998318,-0.0178509,0.024549,1.0805,0.998853,-0.0141118,0.0194197,1.09177,0.999218,-0.0105914,0.0143869,1.1022,0.999594,-693474e-8,943517e-8,1.11175,0.99975,-340478e-8,464051e-8,1.12056,1.00001,109172e-9,-112821e-9,1.12853,0.983383,-266524e-11,0.133358,196534e-10,0.981942,-671009e-10,0.133162,494804e-9,0.981946,-268405e-9,0.133163,197923e-8,0.981944,-603912e-9,0.133163,445326e-8,0.981941,-107362e-8,0.133162,791693e-8,0.981946,-167755e-8,0.133163,0.0123703,0.981944,-241569e-8,0.133162,0.0178135,0.981945,-328807e-8,0.133163,0.0242466,0.981945,-429472e-8,0.133162,0.03167,0.981955,-543573e-8,0.133164,0.0400846,0.981951,-671105e-8,0.133163,0.0494901,0.981968,-812092e-8,0.133165,0.0598886,0.981979,-966541e-8,0.133166,0.0712811,0.981996,-0.0113446,0.133168,0.083669,0.982014,-0.0131585,0.133169,0.0970533,0.982011,-0.0151073,0.133167,0.111438,0.982062,-0.0171906,0.133172,0.126826,0.9821,-0.0194067,0.133175,0.143215,0.982149,-0.0217502,0.133176,0.160609,0.982163,-0.0241945,0.133173,0.178981,0.982247,-0.0265907,0.133148,0.198249,0.982291,-0.027916,0.132974,0.217795,0.982396,-0.0299663,0.132868,0.238042,0.982456,-0.0334544,0.132934,0.258901,0.982499,-0.0378636,0.133137,0.280639,0.982617,-0.0409274,0.133085,0.304604,0.98274,-0.0438523,0.132985,0.329376,0.982944,-0.0462288,0.132728,0.354697,0.98308,-0.0475995,0.132228,0.380102,0.983391,-0.0501901,0.131924,0.406256,0.983514,-0.0535899,0.131737,0.432735,0.98373,-0.0571858,0.131567,0.459359,0.984056,-0.0592353,0.130932,0.486637,0.984234,-0.0610488,0.130092,0.51509,0.984748,-0.0630758,0.12923,0.543461,0.985073,-0.0647398,0.128174,0.571376,0.985195,-0.0671941,0.127133,0.599414,0.985734,-0.0681345,0.125576,0.628134,0.986241,-0.0686089,0.123639,0.656399,0.986356,-0.0698511,0.121834,0.684258,0.986894,-0.0700931,0.119454,0.711818,0.987382,-0.0698321,0.116718,0.739511,0.988109,-0.0693975,0.113699,0.766267,0.988363,-0.0689584,0.110454,0.792456,0.989112,-0.0672353,0.106602,0.81813,0.989241,-0.0662034,0.10267,0.842889,0.990333,-0.0638938,0.0981381,0.867204,0.990591,-0.0618534,0.0935388,0.89038,0.991106,-0.0593117,0.088553,0.912576,0.991919,-0.0562676,0.0832187,0.934118,0.992111,-0.0534085,0.0778302,0.954254,0.992997,-0.0495459,0.0720453,0.973722,0.993317,-0.0463707,0.0663458,0.991949,0.994133,-0.0421245,0.0601883,1.00936,0.994705,-0.0384977,0.0542501,1.02559,0.995495,-0.0340956,0.0479862,1.04083,0.996206,-0.030105,0.041887,1.05497,0.996971,-0.0256095,0.0355355,1.06824,0.997796,-0.0213932,0.0293655,1.08056,0.998272,-0.0169612,0.0232926,1.09182,0.998857,-0.0126756,0.0172786,1.10219,0.99939,-832486e-8,0.0113156,1.11192,0.999752,-410826e-8,557892e-8,1.12075,1,150957e-9,-119101e-9,1.12885,0.975169,-309397e-11,0.154669,195073e-10,0.975439,-779608e-10,0.154712,491534e-9,0.975464,-311847e-9,0.154716,196617e-8,0.975464,-701656e-9,0.154716,442387e-8,0.975462,-12474e-7,0.154715,78647e-7,0.975461,-194906e-8,0.154715,0.0122886,0.975464,-280667e-8,0.154715,0.0176959,0.975468,-382025e-8,0.154716,0.0240867,0.975471,-498985e-8,0.154716,0.0314612,0.975472,-631541e-8,0.154717,0.0398199,0.975486,-779719e-8,0.154718,0.0491639,0.975489,-943505e-8,0.154718,0.0594932,0.975509,-0.0112295,0.154721,0.0708113,0.97554,-0.0131802,0.154724,0.0831176,0.975557,-0.0152876,0.154726,0.096415,0.975585,-0.0175512,0.154728,0.110705,0.975605,-0.0199713,0.154729,0.125992,0.975645,-0.0225447,0.154729,0.142272,0.975711,-0.0252649,0.154735,0.159549,0.975788,-0.0280986,0.154736,0.177805,0.975872,-0.0308232,0.154704,0.196911,0.975968,-0.0324841,0.154525,0.216324,0.976063,-0.0351281,0.154432,0.236628,0.976157,-0.0388618,0.15446,0.257539,0.976204,-0.0437704,0.154665,0.278975,0.976358,-0.047514,0.154652,0.302606,0.976571,-0.0508638,0.154535,0.327204,0.976725,-0.0534995,0.154221,0.352276,0.977013,-0.0555547,0.153737,0.377696,0.977294,-0.0586728,0.153403,0.403855,0.977602,-0.0622715,0.15312,0.430333,0.977932,-0.0658166,0.152755,0.456855,0.978241,-0.0689877,0.152233,0.483668,0.978602,-0.0712805,0.15132,0.512097,0.979234,-0.0732775,0.150235,0.540455,0.97977,-0.075163,0.148978,0.568486,0.979995,-0.0778026,0.147755,0.596524,0.98078,-0.0791854,0.146019,0.624825,0.981628,-0.0799666,0.143906,0.653403,0.982067,-0.0808532,0.141561,0.681445,0.98271,-0.0816024,0.139025,0.708918,0.983734,-0.0812511,0.135764,0.736594,0.98431,-0.0806201,0.132152,0.763576,0.985071,-0.0801605,0.12846,0.789797,0.98618,-0.0784208,0.124084,0.815804,0.986886,-0.0766643,0.1193,0.840869,0.987485,-0.0747744,0.114236,0.864952,0.988431,-0.0716701,0.108654,0.888431,0.988886,-0.0691609,0.102994,0.910963,0.990024,-0.0654048,0.0967278,0.932629,0.990401,-0.0619765,0.090384,0.95313,0.991093,-0.0579296,0.0837885,0.972587,0.992018,-0.0536576,0.0770171,0.991184,0.992536,-0.0493719,0.0701486,1.00863,0.993421,-0.0444813,0.062953,1.02494,0.993928,-0.040008,0.0560455,1.04017,0.994994,-0.0347982,0.04856,1.05463,0.995866,-0.0301017,0.0416152,1.06807,0.996916,-0.0248225,0.0342597,1.08039,0.997766,-0.0199229,0.0271668,1.09177,0.998479,-0.0147422,0.0201387,1.10235,0.99921,-980173e-8,0.0131944,1.11206,0.999652,-47426e-7,640712e-8,1.12104,0.999998,891673e-10,-10379e-8,1.12906,0.967868,-351885e-11,0.175947,193569e-10,0.968001,-886733e-10,0.175972,487782e-9,0.96801,-354697e-9,0.175973,195115e-8,0.968012,-798063e-9,0.175974,439006e-8,0.968011,-141879e-8,0.175973,780461e-8,0.968011,-221686e-8,0.175973,0.0121948,0.968016,-319231e-8,0.175974,0.0175607,0.968019,-434515e-8,0.175974,0.0239027,0.968018,-567538e-8,0.175974,0.0312208,0.968033,-718308e-8,0.175977,0.0395158,0.968049,-886836e-8,0.175979,0.0487885,0.968047,-0.0107312,0.175978,0.0590394,0.968072,-0.0127719,0.175981,0.0702705,0.968108,-0.0149905,0.175986,0.0824836,0.968112,-0.0173866,0.175985,0.0956783,0.968173,-0.0199611,0.175993,0.109862,0.96827,-0.0227128,0.176008,0.125033,0.968292,-0.025639,0.17601,0.141193,0.968339,-0.0287299,0.176007,0.158336,0.968389,-0.0319399,0.176001,0.176441,0.968501,-0.034941,0.175962,0.195359,0.968646,-0.0370812,0.175793,0.214686,0.968789,-0.0402329,0.175708,0.234973,0.96886,-0.0442601,0.1757,0.255871,0.969013,-0.049398,0.175876,0.277238,0.969242,-0.0539932,0.17594,0.300326,0.969419,-0.0577299,0.175781,0.324702,0.969763,-0.0605643,0.175432,0.349527,0.970093,-0.0634488,0.174992,0.374976,0.970361,-0.0670589,0.174611,0.401097,0.970825,-0.0708246,0.174226,0.427496,0.971214,-0.0742871,0.173684,0.453858,0.971622,-0.0782608,0.173186,0.480637,0.972175,-0.0813151,0.172288,0.508655,0.972944,-0.0832678,0.170979,0.536973,0.973595,-0.0855964,0.169573,0.565138,0.974345,-0.0882163,0.168152,0.593222,0.975233,-0.0901671,0.166314,0.621201,0.976239,-0.0912111,0.163931,0.649919,0.977289,-0.0916959,0.161106,0.678011,0.978076,-0.0927061,0.158272,0.705717,0.979533,-0.0925562,0.15475,0.733228,0.980335,-0.0918159,0.150638,0.760454,0.981808,-0.0908508,0.146201,0.786918,0.983061,-0.0896172,0.141386,0.812953,0.984148,-0.0871588,0.135837,0.838281,0.985047,-0.0850624,0.130135,0.862594,0.986219,-0.0818541,0.123882,0.88633,0.987043,-0.0784523,0.117126,0.908952,0.988107,-0.0749601,0.110341,0.930744,0.988955,-0.0703548,0.102885,0.951728,0.989426,-0.0662798,0.0954167,0.971166,0.990421,-0.0610834,0.0876331,0.989984,0.991032,-0.0562936,0.0797785,1.00765,0.992041,-0.0508154,0.0718166,1.02434,0.992794,-0.0454045,0.0637125,1.03976,0.993691,-0.0398194,0.0555338,1.05418,0.994778,-0.0341482,0.0473388,1.06772,0.995915,-0.028428,0.0391016,1.08028,0.997109,-0.022642,0.0309953,1.09185,0.998095,-0.0168738,0.0230288,1.10247,0.998985,-0.0111274,0.0150722,1.11229,0.999581,-543881e-8,740605e-8,1.12131,1.00003,162239e-9,-105549e-9,1.12946,0.959505,-393734e-11,0.196876,191893e-10,0.959599,-992157e-10,0.196895,483544e-9,0.959641,-396868e-9,0.196903,19342e-7,0.959599,-892948e-9,0.196895,435193e-8,0.959603,-158747e-8,0.196896,77368e-7,0.959604,-248042e-8,0.196896,0.0120888,0.959605,-357184e-8,0.196896,0.0174082,0.959605,-486169e-8,0.196896,0.0236949,0.959613,-635008e-8,0.196897,0.0309497,0.959619,-803696e-8,0.196898,0.0391725,0.959636,-992255e-8,0.196901,0.0483649,0.959634,-0.0120067,0.1969,0.0585266,0.959675,-0.0142898,0.196906,0.0696609,0.959712,-0.0167717,0.196911,0.0817678,0.959752,-0.0194524,0.196918,0.0948494,0.959807,-0.0223321,0.196925,0.10891,0.959828,-0.0254091,0.196924,0.123947,0.959906,-0.0286815,0.196934,0.139968,0.960005,-0.0321371,0.196944,0.156968,0.960071,-0.0357114,0.196936,0.17491,0.960237,-0.0389064,0.196882,0.193597,0.960367,-0.041623,0.196731,0.21285,0.960562,-0.0452655,0.196654,0.233075,0.960735,-0.0496207,0.196643,0.253941,0.960913,-0.0549379,0.196774,0.275278,0.961121,-0.0603414,0.196893,0.297733,0.96139,-0.0644244,0.196717,0.321877,0.961818,-0.067556,0.196314,0.346476,0.962175,-0.0712709,0.195917,0.371907,0.96255,-0.0752848,0.1955,0.397916,0.963164,-0.0792073,0.195026,0.424229,0.963782,-0.0828225,0.194424,0.450637,0.964306,-0.0873119,0.193831,0.477288,0.964923,-0.0911051,0.192973,0.504716,0.966048,-0.093251,0.19151,0.533053,0.967024,-0.0958983,0.190013,0.561366,0.968038,-0.09835,0.188253,0.589464,0.969152,-0.100754,0.186257,0.617433,0.970557,-0.102239,0.183775,0.645801,0.972104,-0.102767,0.180645,0.674278,0.973203,-0.103492,0.177242,0.702004,0.975123,-0.103793,0.17345,0.729529,0.97641,-0.102839,0.168886,0.756712,0.978313,-0.101687,0.163892,0.783801,0.980036,-0.100314,0.158439,0.809671,0.981339,-0.097836,0.152211,0.835402,0.982794,-0.0950006,0.145679,0.860081,0.984123,-0.0920994,0.138949,0.883757,0.984918,-0.0878641,0.131283,0.90685,0.985999,-0.083939,0.123464,0.928786,0.987151,-0.0791234,0.115324,0.94983,0.987827,-0.0739332,0.106854,0.96962,0.988806,-0.0688088,0.0982691,0.98861,0.989588,-0.0628962,0.0893456,1.00667,0.990438,-0.0573146,0.0805392,1.02344,0.991506,-0.0509433,0.0713725,1.03933,0.992492,-0.0448724,0.0623732,1.05378,0.993663,-0.0383497,0.0530838,1.06747,0.994956,-0.0319593,0.0439512,1.08007,0.99634,-0.025401,0.0347803,1.09182,0.99761,-0.0189687,0.0257954,1.1025,0.99863,-0.0124441,0.0169893,1.11247,0.99947,-614003e-8,829498e-8,1.12151,1.00008,216624e-9,-146107e-9,1.12993,0.950129,-434955e-11,0.217413,190081e-10,0.950264,-10957e-8,0.217444,47884e-8,0.9503,-438299e-9,0.217451,191543e-8,0.950246,-986124e-9,0.21744,430951e-8,0.950246,-175311e-8,0.21744,766137e-8,0.950245,-273923e-8,0.21744,0.011971,0.950253,-394453e-8,0.217441,0.0172385,0.950258,-536897e-8,0.217442,0.0234641,0.950267,-701262e-8,0.217444,0.030648,0.950277,-887551e-8,0.217446,0.038791,0.950284,-0.0109576,0.217446,0.0478931,0.950312,-0.0132591,0.217451,0.0579568,0.950334,-0.01578,0.217454,0.0689821,0.950378,-0.0185204,0.217462,0.0809714,0.950417,-0.0214803,0.217467,0.0939265,0.950488,-0.0246594,0.217479,0.10785,0.950534,-0.0280565,0.217483,0.122743,0.950633,-0.0316685,0.217498,0.138611,0.950698,-0.0354787,0.217499,0.155442,0.950844,-0.0394003,0.217507,0.173208,0.950999,-0.0426812,0.217419,0.191605,0.951221,-0.0461302,0.217317,0.21084,0.951412,-0.0502131,0.217238,0.230945,0.951623,-0.0549183,0.21722,0.251745,0.951867,-0.0604493,0.217306,0.273001,0.952069,-0.0665189,0.217466,0.294874,0.952459,-0.0709179,0.217266,0.318732,0.952996,-0.0746112,0.216891,0.34318,0.953425,-0.0789252,0.216503,0.36849,0.953885,-0.0833293,0.216042,0.394373,0.954617,-0.087371,0.215469,0.420505,0.955429,-0.0914054,0.214802,0.446907,0.956068,-0.0961671,0.214146,0.473522,0.957094,-0.10048,0.213286,0.50052,0.958372,-0.103248,0.211796,0.528715,0.959654,-0.106033,0.21016,0.557065,0.961305,-0.108384,0.208149,0.585286,0.962785,-0.111122,0.206024,0.613334,0.964848,-0.112981,0.203442,0.641334,0.966498,-0.113717,0.19996,0.669955,0.968678,-0.114121,0.196105,0.698094,0.970489,-0.114524,0.191906,0.725643,0.972903,-0.113792,0.186963,0.752856,0.974701,-0.112406,0.181343,0.780013,0.976718,-0.110685,0.175185,0.806268,0.978905,-0.108468,0.168535,0.832073,0.980267,-0.105061,0.161106,0.857149,0.981967,-0.101675,0.153387,0.881145,0.983063,-0.0974492,0.145199,0.904255,0.984432,-0.0925815,0.136527,0.926686,0.985734,-0.0877983,0.127584,0.947901,0.986228,-0.081884,0.118125,0.968111,0.98719,-0.0761208,0.108594,0.98719,0.988228,-0.0698196,0.0989996,1.00559,0.989046,-0.0632739,0.0890074,1.02246,0.990242,-0.056522,0.0790832,1.03841,0.991252,-0.0495272,0.0689182,1.05347,0.992542,-0.0425373,0.0588592,1.06724,0.994096,-0.0353198,0.0486833,1.08009,0.995593,-0.028235,0.0385977,1.09177,0.99711,-0.0209511,0.0286457,1.10274,0.998263,-0.0139289,0.0188497,1.11262,0.999254,-67359e-7,9208e-6,1.12191,0.999967,141846e-9,-657764e-10,1.13024,0.935608,-474692e-11,0.236466,187817e-10,0.93996,-11971e-8,0.237568,473646e-9,0.939959,-478845e-9,0.237567,18946e-7,0.939954,-10774e-7,0.237566,426284e-8,0.939956,-191538e-8,0.237566,757842e-8,0.939954,-299277e-8,0.237566,0.0118413,0.93996,-430961e-8,0.237567,0.0170518,0.939969,-586589e-8,0.237569,0.02321,0.939982,-766166e-8,0.237572,0.0303164,0.939987,-969686e-8,0.237572,0.0383711,0.939997,-0.0119715,0.237574,0.0473751,0.940031,-0.0144858,0.237581,0.0573298,0.940073,-0.0172399,0.237589,0.0682366,0.94012,-0.0202335,0.237598,0.080097,0.940162,-0.0234663,0.237604,0.0929116,0.940237,-0.0269387,0.237615,0.106686,0.940328,-0.0306489,0.237632,0.121421,0.940419,-0.0345917,0.237645,0.137115,0.940522,-0.0387481,0.237654,0.153766,0.940702,-0.0429906,0.237661,0.17133,0.940871,-0.0465089,0.237561,0.189502,0.941103,-0.050531,0.23748,0.208616,0.941369,-0.0550657,0.237423,0.228595,0.941641,-0.0601337,0.237399,0.249287,0.941903,-0.0658804,0.237443,0.270467,0.942224,-0.0722674,0.237597,0.292024,0.942633,-0.0771788,0.237419,0.315272,0.943172,-0.0815623,0.237068,0.339579,0.943691,-0.0863973,0.236682,0.364717,0.944382,-0.0911536,0.236213,0.390435,0.945392,-0.0952967,0.235562,0.416425,0.946185,-0.0998948,0.234832,0.442772,0.947212,-0.104796,0.234114,0.469347,0.948778,-0.10928,0.233222,0.496162,0.950149,-0.113081,0.231845,0.523978,0.951989,-0.115893,0.230005,0.552295,0.953921,-0.11846,0.227862,0.580569,0.955624,-0.12115,0.225439,0.608698,0.958234,-0.123373,0.222635,0.636696,0.960593,-0.124519,0.219093,0.665208,0.963201,-0.124736,0.214749,0.693557,0.965642,-0.125012,0.210059,0.721334,0.968765,-0.124661,0.204935,0.748613,0.971753,-0.122996,0.198661,0.776224,0.973751,-0.120998,0.191823,0.802461,0.976709,-0.118583,0.184359,0.828399,0.977956,-0.115102,0.176437,0.853693,0.979672,-0.111077,0.167681,0.877962,0.981816,-0.10688,0.158872,0.901564,0.98238,-0.101469,0.149398,0.924057,0.983964,-0.0960013,0.139436,0.945751,0.984933,-0.0899626,0.12943,0.966272,0.985694,-0.0832973,0.11894,0.985741,0.986822,-0.0767082,0.108349,1.00407,0.987725,-0.0693614,0.0976026,1.02154,0.98877,-0.06211,0.086652,1.03757,0.990129,-0.0544143,0.0756182,1.05296,0.991337,-0.046744,0.0645753,1.06683,0.992978,-0.0387931,0.0534683,1.0798,0.994676,-0.030973,0.0424137,1.09181,0.99645,-0.0230311,0.0314035,1.10286,0.997967,-0.0152065,0.0206869,1.11291,0.99922,-744837e-8,0.010155,1.12237,1.00002,240209e-9,-752767e-10,1.13089,0.922948,-515351e-11,0.255626,186069e-10,0.928785,-129623e-9,0.257244,468009e-9,0.928761,-51849e-8,0.257237,187202e-8,0.928751,-11666e-7,0.257235,421204e-8,0.928751,-207395e-8,0.257234,74881e-7,0.928754,-324055e-8,0.257235,0.0117002,0.92876,-466639e-8,0.257236,0.0168486,0.928763,-635149e-8,0.257237,0.0229334,0.928774,-829584e-8,0.257239,0.029955,0.928791,-0.0104995,0.257243,0.0379139,0.928804,-0.0129623,0.257245,0.0468108,0.928847,-0.0156846,0.257255,0.0566473,0.92889,-0.0186661,0.257263,0.0674246,0.928924,-0.0219067,0.257268,0.0791433,0.928989,-0.0254066,0.257282,0.0918076,0.92909,-0.0291651,0.257301,0.105419,0.92918,-0.0331801,0.257316,0.119978,0.92929,-0.0374469,0.257332,0.135491,0.929453,-0.041939,0.257357,0.151948,0.929586,-0.0464612,0.257347,0.169275,0.929858,-0.0503426,0.257269,0.187257,0.930125,-0.0548409,0.257199,0.206204,0.930403,-0.0598063,0.257149,0.22601,0.930726,-0.0652437,0.257122,0.246561,0.931098,-0.0712376,0.257153,0.267618,0.931396,-0.0777506,0.257237,0.288993,0.931947,-0.0832374,0.257124,0.311527,0.932579,-0.0883955,0.25683,0.335697,0.933194,-0.0937037,0.256444,0.360634,0.934013,-0.0987292,0.255939,0.386126,0.935307,-0.103215,0.255282,0.412018,0.936374,-0.108234,0.254538,0.438292,0.93776,-0.113234,0.253728,0.464805,0.939599,-0.118013,0.25275,0.491464,0.941036,-0.122661,0.251404,0.518751,0.94337,-0.125477,0.249435,0.547133,0.945318,-0.128374,0.247113,0.575456,0.947995,-0.130996,0.244441,0.60372,0.950818,-0.133438,0.241352,0.63174,0.954378,-0.135004,0.237849,0.659971,0.957151,-0.135313,0.233188,0.688478,0.960743,-0.13521,0.228001,0.716767,0.964352,-0.135007,0.222249,0.744349,0.967273,-0.133523,0.21542,0.771786,0.969767,-0.131155,0.208039,0.798639,0.973195,-0.128492,0.200076,0.824774,0.975557,-0.125094,0.191451,0.850222,0.977692,-0.120578,0.18184,0.874761,0.98026,-0.115882,0.172102,0.898497,0.981394,-0.110372,0.161859,0.921636,0.982386,-0.10415,0.15108,0.943467,0.983783,-0.0978128,0.140407,0.964045,0.98422,-0.0906171,0.129058,0.98398,0.985447,-0.0832921,0.117614,1.00276,0.986682,-0.0754412,0.10585,1.02047,0.987326,-0.0673885,0.0940943,1.03678,0.988707,-0.0592565,0.0822093,1.05218,0.990185,-0.050717,0.070192,1.06652,0.991866,-0.0423486,0.0582081,1.07965,0.993897,-0.0336118,0.0460985,1.09188,0.995841,-0.0252178,0.0342737,1.10307,0.997605,-0.0164893,0.0224829,1.11324,0.999037,-817112e-8,0.0110647,1.12262,1.00003,291686e-9,-168673e-9,1.13139,0.915304,-552675e-11,0.275999,183285e-10,0.91668,-139285e-9,0.276414,461914e-9,0.916664,-55713e-8,0.276409,184763e-8,0.916653,-125354e-8,0.276406,415715e-8,0.916651,-222851e-8,0.276405,739053e-8,0.916655,-348205e-8,0.276406,0.0115478,0.916653,-501414e-8,0.276405,0.0166291,0.916667,-682478e-8,0.276409,0.0226346,0.91668,-891398e-8,0.276412,0.0295648,0.91669,-0.0112817,0.276413,0.0374199,0.916727,-0.013928,0.276422,0.0462016,0.916759,-0.0168528,0.276429,0.0559101,0.916793,-0.0200558,0.276436,0.0665466,0.916849,-0.0235373,0.276448,0.0781139,0.916964,-0.0272973,0.276474,0.0906156,0.917047,-0.0313344,0.276491,0.104051,0.917152,-0.0356465,0.276511,0.118424,0.917286,-0.0402271,0.276533,0.133736,0.917469,-0.0450408,0.276564,0.149978,0.917686,-0.0497872,0.276563,0.167057,0.917953,-0.0540937,0.276493,0.184846,0.918228,-0.0590709,0.276437,0.203614,0.918572,-0.0644277,0.276398,0.223212,0.918918,-0.0702326,0.276362,0.243584,0.919356,-0.076484,0.276383,0.264465,0.919842,-0.0830808,0.276434,0.285701,0.920451,-0.0892972,0.276407,0.307559,0.921113,-0.095016,0.276128,0.331501,0.921881,-0.100771,0.275754,0.356207,0.923027,-0.106029,0.275254,0.381477,0.924364,-0.111029,0.274595,0.40722,0.925818,-0.116345,0.273841,0.433385,0.92746,-0.121424,0.272913,0.459848,0.929167,-0.12657,0.271837,0.486493,0.931426,-0.131581,0.270575,0.513432,0.934001,-0.135038,0.268512,0.541502,0.936296,-0.138039,0.266135,0.569658,0.939985,-0.140687,0.263271,0.598375,0.943516,-0.143247,0.260058,0.626563,0.94782,-0.145135,0.256138,0.654711,0.951023,-0.145733,0.251154,0.683285,0.955338,-0.145554,0.245562,0.711831,0.959629,-0.145008,0.239265,0.739573,0.963123,-0.144003,0.232064,0.767027,0.966742,-0.141289,0.224036,0.794359,0.969991,-0.138247,0.215305,0.820361,0.973403,-0.134786,0.206051,0.846548,0.975317,-0.129966,0.195914,0.871541,0.977647,-0.12471,0.185184,0.895313,0.980137,-0.119086,0.174161,0.918398,0.981031,-0.112297,0.162792,0.940679,0.982037,-0.105372,0.150952,0.961991,0.983164,-0.097821,0.138921,0.981913,0.983757,-0.0897245,0.126611,1.00109,0.985036,-0.0815974,0.114228,1.01902,0.986289,-0.0727725,0.101389,1.03604,0.987329,-0.0639323,0.0886476,1.05149,0.989193,-0.0548109,0.0756837,1.06619,0.990716,-0.045687,0.0627581,1.07948,0.992769,-0.0364315,0.0498337,1.09172,0.99524,-0.0271761,0.0370305,1.1033,0.997154,-0.0179609,0.0243959,1.11353,0.998845,-878063e-8,0.0119567,1.12319,1.00002,259038e-9,-108146e-9,1.13177,0.903945,-591681e-11,0.295126,181226e-10,0.903668,-148672e-9,0.295037,455367e-9,0.903677,-594683e-9,0.29504,182145e-8,0.903673,-133805e-8,0.295039,409831e-8,0.903666,-237872e-8,0.295036,728584e-8,0.903668,-371676e-8,0.295037,0.0113842,0.903679,-535212e-8,0.29504,0.0163936,0.903684,-728479e-8,0.295041,0.0223141,0.903698,-951473e-8,0.295044,0.0291462,0.903718,-0.0120419,0.295049,0.0368904,0.903754,-0.0148664,0.295058,0.0455477,0.903801,-0.017988,0.29507,0.0551194,0.903851,-0.0214064,0.295082,0.0656058,0.903921,-0.0251219,0.295097,0.0770109,0.904002,-0.0291337,0.295116,0.0893354,0.904111,-0.033441,0.29514,0.102583,0.904246,-0.0380415,0.295169,0.116755,0.904408,-0.0429258,0.295202,0.131853,0.904637,-0.0480468,0.295245,0.147869,0.904821,-0.0529208,0.295214,0.164658,0.905163,-0.0577748,0.295185,0.182274,0.905469,-0.0631763,0.295143,0.200828,0.905851,-0.068917,0.295112,0.2202,0.906322,-0.0750861,0.295104,0.240372,0.906761,-0.0815855,0.295086,0.261082,0.90735,-0.0882138,0.295095,0.282123,0.908087,-0.095082,0.295139,0.303563,0.908826,-0.101488,0.29492,0.327028,0.909832,-0.107577,0.294577,0.351464,0.911393,-0.113033,0.294115,0.376497,0.912804,-0.118629,0.293446,0.402115,0.914081,-0.124232,0.292581,0.428111,0.91637,-0.129399,0.29166,0.454442,0.91814,-0.134892,0.290422,0.481024,0.921179,-0.140069,0.289194,0.507924,0.924544,-0.144431,0.287421,0.535557,0.927995,-0.147498,0.284867,0.563984,0.931556,-0.150197,0.281722,0.5923,0.935777,-0.152711,0.278207,0.620832,0.940869,-0.154836,0.274148,0.649069,0.945994,-0.155912,0.269057,0.677746,0.949634,-0.155641,0.262799,0.706293,0.955032,-0.154809,0.256097,0.734278,0.95917,-0.153678,0.248618,0.761751,0.962931,-0.151253,0.239794,0.789032,0.966045,-0.147625,0.230281,0.815422,0.96971,-0.143964,0.220382,0.841787,0.972747,-0.139464,0.209846,0.867446,0.975545,-0.133459,0.198189,0.892004,0.978381,-0.127424,0.186362,0.915458,0.979935,-0.120506,0.173964,0.937948,0.980948,-0.11282,0.161429,0.959732,0.982234,-0.104941,0.148557,0.980118,0.982767,-0.0962905,0.135508,0.999463,0.983544,-0.0873625,0.122338,1.01756,0.984965,-0.0783447,0.108669,1.03492,0.986233,-0.0684798,0.0949911,1.05087,0.987796,-0.0590867,0.0811386,1.0656,0.989885,-0.0489145,0.0673099,1.0794,0.991821,-0.0391,0.0535665,1.09174,0.99448,-0.029087,0.0397529,1.10341,0.996769,-0.019114,0.0261463,1.11383,0.998641,-947007e-8,0.0128731,1.1237,0.999978,446316e-9,-169093e-9,1.13253,0.888362,-627064e-11,0.312578,178215e-10,0.889988,-157791e-9,0.313148,448451e-9,0.889825,-631076e-9,0.313092,179356e-8,0.88984,-141994e-8,0.313097,403554e-8,0.889828,-25243e-7,0.313092,717429e-8,0.889831,-394421e-8,0.313093,0.0112099,0.889831,-567962e-8,0.313093,0.0161425,0.889844,-773051e-8,0.313096,0.0219724,0.889858,-0.0100968,0.3131,0.0286999,0.889882,-0.0127786,0.313106,0.0363256,0.889918,-0.0157757,0.313116,0.0448509,0.889967,-0.0190878,0.313129,0.0542758,0.89003,-0.022715,0.313145,0.0646032,0.890108,-0.0266566,0.313165,0.0758339,0.890218,-0.0309131,0.313193,0.0879729,0.890351,-0.0354819,0.313226,0.101019,0.89051,-0.0403613,0.313263,0.114979,0.890672,-0.0455385,0.313294,0.129848,0.890882,-0.0509444,0.313333,0.145616,0.891189,-0.0559657,0.313324,0.162122,0.891457,-0.0613123,0.313281,0.179524,0.891856,-0.0671488,0.313281,0.197855,0.892312,-0.0732732,0.313268,0.216991,0.892819,-0.0797865,0.313263,0.236924,0.893369,-0.0865269,0.313247,0.257433,0.894045,-0.0931592,0.313205,0.278215,0.894884,-0.100532,0.313276,0.299467,0.895832,-0.107716,0.313205,0.322276,0.897043,-0.114099,0.312873,0.34642,0.898515,-0.119941,0.312331,0.371187,0.900191,-0.126044,0.311731,0.396656,0.90188,-0.131808,0.310859,0.422488,0.904359,-0.137289,0.309857,0.448744,0.906923,-0.142991,0.308714,0.475239,0.910634,-0.148253,0.307465,0.501983,0.914502,-0.153332,0.305774,0.529254,0.919046,-0.156646,0.303156,0.557709,0.923194,-0.159612,0.299928,0.586267,0.928858,-0.162027,0.296245,0.614925,0.934464,-0.164203,0.291832,0.643187,0.939824,-0.165602,0.286565,0.671601,0.944582,-0.165383,0.280073,0.700213,0.949257,-0.164439,0.272891,0.728432,0.954389,-0.162953,0.264771,0.756082,0.958595,-0.161007,0.255927,0.78369,0.962138,-0.157243,0.245769,0.810769,0.966979,-0.152872,0.235127,0.836999,0.969566,-0.148209,0.22347,0.862684,0.972372,-0.142211,0.211147,0.887847,0.975916,-0.135458,0.198606,0.911843,0.978026,-0.128398,0.185498,0.934795,0.979686,-0.120313,0.17171,0.956787,0.980748,-0.11166,0.158159,0.978046,0.981622,-0.103035,0.144399,0.997693,0.982356,-0.0930328,0.13001,1.01642,0.983308,-0.0834627,0.115778,1.03366,0.985037,-0.0732249,0.101327,1.05014,0.986493,-0.0628145,0.086554,1.06507,0.988484,-0.0526556,0.0720413,1.07907,0.991051,-0.0415744,0.0571151,1.09189,0.993523,-0.0314275,0.0426643,1.10369,0.99628,-0.0203603,0.0279325,1.11423,0.998344,-0.0102446,0.0138182,1.12421,0.999997,42612e-8,-193628e-9,1.1333,0.871555,-660007e-11,0.329176,174749e-10,0.875255,-166579e-9,0.330571,441051e-9,0.875644,-666394e-9,0.330718,176441e-8,0.875159,-149903e-8,0.330536,396899e-8,0.87516,-266493e-8,0.330536,7056e-6,0.875158,-416393e-8,0.330535,0.0110251,0.87516,-599598e-8,0.330535,0.0158764,0.875163,-816108e-8,0.330536,0.0216101,0.875174,-0.0106591,0.330538,0.0282266,0.875199,-0.0134899,0.330545,0.0357266,0.875257,-0.0166538,0.330563,0.0441117,0.875304,-0.0201501,0.330575,0.0533821,0.875373,-0.0239785,0.330595,0.0635395,0.875464,-0.0281389,0.330619,0.0745872,0.875565,-0.0326301,0.330645,0.0865255,0.875691,-0.0374516,0.330676,0.0993599,0.875897,-0.0425993,0.330733,0.113093,0.876091,-0.0480576,0.330776,0.127722,0.876353,-0.0537216,0.330826,0.143227,0.876649,-0.0589807,0.330809,0.159462,0.877034,-0.0647865,0.330819,0.176642,0.877443,-0.0709789,0.330817,0.194702,0.877956,-0.0774782,0.330832,0.213577,0.878499,-0.0843175,0.330822,0.233246,0.879144,-0.0912714,0.330804,0.253512,0.879982,-0.0980824,0.330766,0.274137,0.88097,-0.105823,0.330864,0.295209,0.882051,-0.113671,0.330896,0.317226,0.883397,-0.120303,0.330545,0.341068,0.884987,-0.12667,0.330068,0.365613,0.886789,-0.133118,0.329418,0.390807,0.889311,-0.139024,0.328683,0.416494,0.891995,-0.144971,0.327729,0.442618,0.895106,-0.150747,0.326521,0.469131,0.899527,-0.156283,0.325229,0.495921,0.90504,-0.161707,0.32378,0.523162,0.909875,-0.165661,0.32122,0.55092,0.91561,-0.168755,0.317942,0.579928,0.921225,-0.171193,0.313983,0.608539,0.927308,-0.17319,0.309636,0.636854,0.933077,-0.174819,0.304262,0.66523,0.938766,-0.175002,0.297563,0.693609,0.943667,-0.173946,0.289613,0.722157,0.949033,-0.172221,0.281227,0.750021,0.953765,-0.169869,0.271545,0.777466,0.95804,-0.166578,0.261034,0.804853,0.962302,-0.161761,0.249434,0.831569,0.966544,-0.156636,0.237484,0.857779,0.969372,-0.150784,0.224395,0.883051,0.972486,-0.143672,0.210786,0.907864,0.975853,-0.135772,0.196556,0.931223,0.977975,-0.127942,0.182307,0.954061,0.979122,-0.118347,0.167607,0.97531,0.980719,-0.109112,0.152739,0.995666,0.981223,-0.0991789,0.137932,1.01475,0.98216,-0.0883553,0.122692,1.03253,0.983379,-0.0780825,0.107493,1.04917,0.985434,-0.0665646,0.0917791,1.06464,0.987332,-0.0557714,0.0764949,1.07896,0.990004,-0.0442805,0.060721,1.09199,0.992975,-0.0331676,0.0452284,1.10393,0.995811,-0.0219547,0.0297934,1.11476,0.9982,-0.0107613,0.0146415,1.12484,1.00002,248678e-9,-14555e-8,1.13413,0.859519,-693595e-11,0.347264,171673e-10,0.859843,-17503e-8,0.347394,433219e-9,0.859656,-700076e-9,0.347319,173277e-8,0.859671,-157517e-8,0.347325,389875e-8,0.859669,-280028e-8,0.347324,693112e-8,0.85967,-43754e-7,0.347324,0.01083,0.859665,-630049e-8,0.347321,0.0155954,0.859685,-85755e-7,0.347328,0.0212278,0.859694,-0.0112003,0.347329,0.0277273,0.859718,-0.0141747,0.347336,0.0350946,0.85976,-0.0174988,0.347348,0.0433314,0.85982,-0.0211722,0.347366,0.0524384,0.859892,-0.0251941,0.347387,0.0624168,0.860006,-0.0295649,0.347422,0.0732708,0.860122,-0.0342825,0.347453,0.0849999,0.860282,-0.0393462,0.347499,0.0976102,0.860482,-0.0447513,0.347554,0.111104,0.860719,-0.0504775,0.347614,0.125479,0.860998,-0.0563577,0.347666,0.140703,0.861322,-0.0619473,0.347662,0.156681,0.861724,-0.0681277,0.347684,0.173597,0.862198,-0.0746567,0.347709,0.191371,0.862733,-0.0815234,0.347727,0.209976,0.863371,-0.0886643,0.347744,0.229351,0.86414,-0.0957908,0.347734,0.24934,0.865138,-0.102912,0.34772,0.269797,0.866182,-0.110924,0.3478,0.290654,0.867436,-0.119223,0.347911,0.312074,0.869087,-0.126197,0.347649,0.335438,0.870859,-0.133145,0.347222,0.359732,0.872997,-0.139869,0.346645,0.38467,0.875939,-0.146089,0.345935,0.41019,0.879012,-0.152334,0.345012,0.436218,0.883353,-0.15821,0.343924,0.462641,0.888362,-0.164097,0.342636,0.489449,0.895026,-0.169528,0.341351,0.516629,0.900753,-0.174408,0.339115,0.544109,0.906814,-0.17751,0.335809,0.572857,0.912855,-0.180101,0.331597,0.601554,0.919438,-0.182116,0.32698,0.630198,0.925962,-0.183494,0.321449,0.658404,0.931734,-0.184159,0.314595,0.686625,0.93762,-0.18304,0.306462,0.71531,0.943858,-0.181323,0.297514,0.744272,0.948662,-0.178683,0.287447,0.771462,0.953299,-0.175379,0.276166,0.798593,0.957346,-0.170395,0.263758,0.8256,0.962565,-0.165042,0.251019,0.852575,0.966075,-0.158655,0.237011,0.878316,0.969048,-0.151707,0.222518,0.90329,0.972423,-0.143271,0.207848,0.927745,0.975833,-0.134824,0.192463,0.950859,0.977629,-0.125444,0.1768,0.972947,0.978995,-0.114949,0.161033,0.993263,0.980533,-0.104936,0.145523,1.01337,0.980745,-0.0935577,0.129799,1.03128,0.981814,-0.0822956,0.113486,1.04825,0.983943,-0.0710082,0.0972925,1.06405,0.986141,-0.0587931,0.0808138,1.0785,0.988878,-0.0472755,0.0644915,1.09204,0.992132,-0.0349128,0.0478128,1.10413,0.9953,-0.0232407,0.031621,1.11527,0.998117,-0.0112713,0.0154935,1.12551,1.00003,339743e-9,-195763e-9,1.13504,0.845441,-729126e-11,0.364305,169208e-10,0.843588,-183164e-9,0.363506,425067e-9,0.843412,-73253e-8,0.36343,169999e-8,0.843401,-164818e-8,0.363426,382495e-8,0.843399,-293008e-8,0.363425,679993e-8,0.843401,-457822e-8,0.363425,0.010625,0.843394,-659249e-8,0.363421,0.0153002,0.843398,-897282e-8,0.363421,0.0208258,0.843415,-0.0117191,0.363426,0.0272024,0.843438,-0.0148312,0.363432,0.0344305,0.843483,-0.018309,0.363447,0.0425116,0.84356,-0.0221521,0.363472,0.0514471,0.843646,-0.0263597,0.363499,0.061238,0.843743,-0.0309315,0.363527,0.0718873,0.84388,-0.0358658,0.363569,0.0833969,0.844079,-0.0411624,0.363631,0.0957742,0.844279,-0.0468128,0.363688,0.109015,0.844549,-0.0527923,0.363761,0.123124,0.844858,-0.0588204,0.363817,0.138044,0.84522,-0.0647573,0.36383,0.153755,0.845669,-0.0713181,0.363879,0.170394,0.846155,-0.0781697,0.363908,0.187861,0.846789,-0.0853913,0.363969,0.206176,0.847502,-0.0928086,0.363999,0.225244,0.8484,-0.10005,0.363997,0.244926,0.849461,-0.107615,0.364008,0.265188,0.850562,-0.115814,0.364055,0.28587,0.851962,-0.124334,0.364179,0.306926,0.854326,-0.131995,0.364233,0.329605,0.856295,-0.139338,0.363856,0.35359,0.858857,-0.146346,0.363347,0.37831,0.862428,-0.152994,0.362807,0.403722,0.866203,-0.159463,0.361963,0.429537,0.871629,-0.165623,0.36112,0.456,0.877365,-0.171649,0.359917,0.482773,0.883744,-0.177151,0.35848,0.509705,0.890693,-0.182381,0.356523,0.537215,0.897278,-0.186076,0.3533,0.565493,0.903958,-0.188602,0.349095,0.594293,0.910908,-0.190755,0.344215,0.623165,0.918117,-0.192063,0.338606,0.651573,0.924644,-0.192758,0.331544,0.679869,0.931054,-0.192238,0.323163,0.708668,0.937303,-0.190035,0.313529,0.737201,0.943387,-0.187162,0.303152,0.764977,0.948494,-0.183876,0.29146,0.792683,0.952546,-0.178901,0.277917,0.819228,0.958077,-0.173173,0.264753,0.846559,0.962462,-0.16645,0.25002,0.872962,0.966569,-0.159452,0.234873,0.898729,0.969108,-0.15074,0.218752,0.923126,0.973072,-0.141523,0.202673,0.947278,0.975452,-0.132075,0.186326,0.969938,0.977784,-0.121257,0.169396,0.991325,0.97899,-0.110182,0.153044,1.01123,0.979777,-0.0989634,0.136485,1.0299,0.980865,-0.0865894,0.119343,1.04727,0.982432,-0.0746115,0.102452,1.06341,0.984935,-0.0621822,0.0852423,1.07834,0.987776,-0.0495694,0.0678546,1.092,0.99103,-0.0372386,0.0506917,1.1043,0.99474,-0.0244353,0.0333316,1.11576,0.997768,-0.0121448,0.0164348,1.12617,1.00003,31774e-8,-169504e-9,1.13598,0.825551,-756799e-11,0.378425,165099e-10,0.82664,-190922e-9,0.378923,416504e-9,0.826323,-763495e-9,0.378779,16656e-7,0.826359,-171789e-8,0.378795,374768e-8,0.82636,-305402e-8,0.378795,666259e-8,0.826368,-477185e-8,0.378798,0.0104104,0.826364,-687131e-8,0.378795,0.0149912,0.826368,-935232e-8,0.378795,0.0204054,0.826376,-0.0122146,0.378797,0.0266532,0.826399,-0.0154581,0.378803,0.0337355,0.82646,-0.0190825,0.378824,0.0416537,0.826525,-0.0230873,0.378846,0.0504091,0.826614,-0.0274719,0.378876,0.0600032,0.82674,-0.0322355,0.378917,0.0704393,0.826888,-0.0373766,0.378964,0.0817195,0.827078,-0.0428936,0.379024,0.0938492,0.827318,-0.0487778,0.379099,0.106828,0.82764,-0.0549935,0.379199,0.120659,0.827926,-0.0611058,0.379227,0.13526,0.828325,-0.0675054,0.379275,0.150713,0.828801,-0.0743455,0.379332,0.167034,0.8294,-0.0815523,0.379415,0.184209,0.830094,-0.0890779,0.379495,0.202203,0.8309,-0.096736,0.379555,0.220945,0.831943,-0.104135,0.379577,0.240306,0.833037,-0.112106,0.379604,0.260317,0.834278,-0.120554,0.379668,0.2808,0.836192,-0.129128,0.3799,0.301654,0.838671,-0.137541,0.380109,0.323502,0.840939,-0.14523,0.379809,0.347176,0.844575,-0.15248,0.379593,0.371706,0.848379,-0.159607,0.37909,0.39688,0.853616,-0.166267,0.378617,0.422702,0.858921,-0.172698,0.377746,0.448919,0.865324,-0.178823,0.376749,0.475661,0.872207,-0.184542,0.375363,0.502599,0.880018,-0.189836,0.373657,0.529914,0.88694,-0.194294,0.370673,0.557683,0.894779,-0.197022,0.36662,0.586848,0.902242,-0.199108,0.36138,0.615831,0.909914,-0.200398,0.355434,0.644478,0.917088,-0.20094,0.348173,0.672905,0.923888,-0.200671,0.339482,0.701327,0.930495,-0.198773,0.32956,0.730101,0.937247,-0.195394,0.318363,0.758383,0.943108,-0.191956,0.306323,0.786539,0.948296,-0.187227,0.292576,0.813637,0.953472,-0.181165,0.278234,0.840793,0.958485,-0.174119,0.263054,0.867712,0.962714,-0.166564,0.246756,0.893635,0.966185,-0.158181,0.229945,0.919028,0.970146,-0.148275,0.212633,0.943413,0.973491,-0.138157,0.195229,0.966627,0.975741,-0.127574,0.178048,0.988817,0.977238,-0.11554,0.160312,1.00924,0.978411,-0.10364,0.142857,1.02845,0.979811,-0.0913122,0.125317,1.04648,0.98116,-0.0782558,0.107627,1.06284,0.983543,-0.0655957,0.0895862,1.07798,0.986789,-0.0520411,0.0713756,1.092,0.990292,-0.0389727,0.053228,1.10484,0.994187,-0.025808,0.0351945,1.11642,0.997499,-0.0126071,0.0173198,1.12703,0.999999,275604e-9,-148602e-9,1.13674,0.81075,-78735e-10,0.394456,161829e-10,0.808692,-198293e-9,0.393453,407564e-9,0.80846,-792877e-9,0.39334,162965e-8,0.808595,-178416e-8,0.393407,366711e-8,0.808597,-317182e-8,0.393408,651934e-8,0.808598,-495589e-8,0.393408,0.0101866,0.808591,-713627e-8,0.393403,0.0146689,0.808592,-971285e-8,0.393402,0.0199667,0.80861,-0.0126855,0.393407,0.0260803,0.808633,-0.0160538,0.393413,0.0330107,0.80868,-0.0198175,0.393429,0.0407589,0.808748,-0.0239758,0.393453,0.0493264,0.808854,-0.0285286,0.39349,0.0587161,0.808992,-0.0334748,0.39354,0.0689304,0.809141,-0.0388116,0.393588,0.0799707,0.809352,-0.0445375,0.39366,0.0918432,0.809608,-0.0506427,0.393742,0.104549,0.809915,-0.0570708,0.393834,0.118085,0.810253,-0.0633526,0.393885,0.132377,0.810687,-0.0700966,0.393953,0.147537,0.811233,-0.0772274,0.394047,0.163543,0.811865,-0.0847629,0.394148,0.180394,0.812648,-0.0925663,0.394265,0.198051,0.813583,-0.100416,0.394363,0.216443,0.814683,-0.108119,0.394402,0.235502,0.815948,-0.11644,0.394489,0.255242,0.817278,-0.125036,0.394542,0.275441,0.819605,-0.133655,0.39486,0.296094,0.822256,-0.142682,0.395248,0.317309,0.825349,-0.150756,0.395241,0.340516,0.829605,-0.158392,0.395285,0.364819,0.83391,-0.165801,0.394922,0.389736,0.839808,-0.172677,0.394691,0.415409,0.845708,-0.179448,0.394006,0.441546,0.853025,-0.185746,0.393279,0.46832,0.859666,-0.191684,0.391655,0.495302,0.86789,-0.197146,0.390068,0.52262,0.875845,-0.201904,0.38727,0.550336,0.882634,-0.205023,0.382688,0.578825,0.891076,-0.207098,0.377543,0.608103,0.900589,-0.208474,0.371752,0.63723,0.90791,-0.209068,0.364016,0.665769,0.915971,-0.208655,0.355593,0.694428,0.923455,-0.20729,0.345439,0.723224,0.931514,-0.203821,0.334099,0.751925,0.937885,-0.19986,0.321069,0.780249,0.943136,-0.194993,0.306571,0.8077,0.948818,-0.189132,0.291556,0.83497,0.954433,-0.181617,0.275745,0.86188,0.959078,-0.173595,0.258695,0.888562,0.962705,-0.164855,0.240825,0.914008,0.966753,-0.155129,0.22268,0.939145,0.970704,-0.144241,0.204542,0.963393,0.973367,-0.133188,0.185927,0.985983,0.975984,-0.121146,0.167743,1.00704,0.976994,-0.108366,0.149218,1.02715,0.978485,-0.0956746,0.13131,1.0455,0.980074,-0.0820733,0.112513,1.06221,0.98225,-0.0684061,0.0938323,1.07782,0.98553,-0.0549503,0.0749508,1.09199,0.989529,-0.0407857,0.055848,1.10508,0.993536,-0.0271978,0.0368581,1.11684,0.997247,-0.0132716,0.0181845,1.12789,1,431817e-9,-198809e-9,1.13792,0.785886,-812608e-11,0.405036,157669e-10,0.790388,-205278e-9,0.407355,398297e-9,0.790145,-820824e-9,0.407231,159263e-8,0.790135,-184681e-8,0.407226,358336e-8,0.790119,-328316e-8,0.407218,637039e-8,0.790126,-512988e-8,0.40722,99539e-7,0.79013,-738684e-8,0.407221,0.0143339,0.790135,-0.0100538,0.407221,0.0195107,0.790134,-0.0131306,0.407217,0.0254848,0.79016,-0.0166169,0.407224,0.0322572,0.790197,-0.020512,0.407236,0.0398284,0.790273,-0.0248157,0.407263,0.0482014,0.790381,-0.029527,0.407304,0.0573777,0.790521,-0.0346446,0.407355,0.0673602,0.790704,-0.0401665,0.40742,0.0781522,0.790925,-0.0460896,0.407499,0.0897582,0.791195,-0.0524017,0.407589,0.10218,0.791522,-0.0590121,0.407691,0.11541,0.791878,-0.0654876,0.407748,0.12939,0.792361,-0.0725207,0.407849,0.144237,0.792942,-0.0799844,0.407963,0.159924,0.79362,-0.0877896,0.408087,0.176425,0.794529,-0.0958451,0.408259,0.193733,0.795521,-0.103827,0.408362,0.211756,0.796778,-0.111937,0.408482,0.230524,0.798027,-0.120521,0.408547,0.249967,0.799813,-0.129242,0.408721,0.269926,0.802387,-0.138048,0.409148,0.290338,0.805279,-0.147301,0.409641,0.311193,0.809251,-0.155895,0.410154,0.333611,0.813733,-0.163942,0.410297,0.357615,0.819081,-0.171666,0.410373,0.382339,0.825427,-0.178905,0.410348,0.407828,0.83172,-0.185812,0.409486,0.434034,0.83877,-0.192318,0.408776,0.460493,0.845817,-0.198249,0.407176,0.487346,0.854664,-0.204034,0.405719,0.514832,0.863495,-0.208908,0.403282,0.542401,0.871883,-0.212765,0.399293,0.570683,0.88065,-0.214911,0.393803,0.599947,0.89004,-0.216214,0.387536,0.62932,0.898476,-0.216745,0.379846,0.658319,0.906738,-0.216387,0.370625,0.687138,0.914844,-0.215053,0.360139,0.71601,0.923877,-0.212007,0.348849,0.745124,0.931925,-0.207481,0.335639,0.773366,0.938054,-0.202418,0.320798,0.801636,0.943895,-0.196507,0.304772,0.829055,0.949468,-0.189009,0.288033,0.856097,0.955152,-0.180539,0.270532,0.88301,0.959403,-0.171437,0.251639,0.909296,0.963309,-0.161661,0.232563,0.934868,0.967399,-0.150425,0.213231,0.959662,0.972009,-0.138659,0.194247,0.98302,0.97433,-0.126595,0.174718,1.00517,0.975823,-0.113205,0.155518,1.02566,0.976371,-0.0996096,0.136709,1.04418,0.978705,-0.0860754,0.117571,1.06146,0.981477,-0.0714438,0.0980046,1.07777,0.984263,-0.0572304,0.0782181,1.09214,0.988423,-0.0428875,0.0584052,1.10553,0.993,-0.0282442,0.038522,1.11758,0.99704,-0.0140183,0.0190148,1.12864,0.999913,369494e-9,-145203e-9,1.13901,0.777662,-84153e-10,0.423844,154403e-10,0.770458,-211714e-9,0.419915,38845e-8,0.770716,-846888e-9,0.420055,155386e-8,0.770982,-190567e-8,0.420202,349653e-8,0.770981,-338782e-8,0.420201,621606e-8,0.77098,-529338e-8,0.4202,971274e-8,0.770983,-762223e-8,0.4202,0.0139867,0.770985,-0.0103741,0.420198,0.0190381,0.770996,-0.0135489,0.4202,0.0248677,0.771029,-0.0171461,0.420212,0.0314764,0.771052,-0.0211647,0.420215,0.0388648,0.771131,-0.0256048,0.420245,0.047036,0.771235,-0.0304647,0.420284,0.0559911,0.771383,-0.0357436,0.420341,0.0657346,0.771591,-0.0414392,0.420423,0.0762694,0.771819,-0.0475462,0.420506,0.0875984,0.772123,-0.0540506,0.420617,0.099727,0.772464,-0.060797,0.42072,0.112637,0.772855,-0.0675393,0.420799,0.126313,0.773317,-0.0748323,0.420893,0.140824,0.773981,-0.0825681,0.421058,0.15617,0.774746,-0.0906307,0.421226,0.172322,0.77566,-0.0988982,0.421397,0.189253,0.776837,-0.106994,0.421569,0.206912,0.778097,-0.115528,0.421704,0.225359,0.779588,-0.124317,0.421849,0.24447,0.781574,-0.133139,0.422097,0.264156,0.784451,-0.142179,0.422615,0.284318,0.787682,-0.15165,0.423269,0.304902,0.792433,-0.160771,0.424396,0.3265,0.797359,-0.169166,0.424772,0.35014,0.803986,-0.177149,0.425475,0.374768,0.809504,-0.184745,0.424996,0.399928,0.815885,-0.19173,0.424247,0.425796,0.823513,-0.198525,0.423515,0.452287,0.832549,-0.204709,0.422787,0.479321,0.841653,-0.210447,0.421187,0.506718,0.850401,-0.215501,0.418519,0.53432,0.859854,-0.219752,0.414715,0.56242,0.869364,-0.222305,0.409462,0.591558,0.878837,-0.223744,0.402926,0.621074,0.888636,-0.224065,0.395043,0.650538,0.898132,-0.223742,0.38564,0.679538,0.907181,-0.222308,0.375378,0.708674,0.915621,-0.219837,0.363212,0.737714,0.9239,-0.215233,0.349313,0.767014,0.931644,-0.209592,0.334162,0.795133,0.938887,-0.203644,0.317943,0.823228,0.945282,-0.196349,0.300581,0.850822,0.950758,-0.18742,0.282195,0.877594,0.956146,-0.177879,0.262481,0.904564,0.960355,-0.167643,0.242487,0.930741,0.965256,-0.156671,0.222668,0.955868,0.968029,-0.144123,0.201907,0.979869,0.97251,-0.131305,0.18202,1.00291,0.974925,-0.118335,0.161909,1.02392,0.975402,-0.103714,0.142129,1.0433,0.976987,-0.089415,0.122447,1.06089,0.979677,-0.0748858,0.102248,1.07713,0.983184,-0.0596086,0.0814851,1.09218,0.987466,-0.0447671,0.0609484,1.10585,0.992348,-0.0295217,0.0401835,1.11829,0.996674,-0.0143917,0.0198163,1.12966,1.00003,321364e-9,-149983e-9,1.1402,0.757901,-869074e-11,0.436176,151011e-10,0.751195,-217848e-9,0.432317,378533e-9,0.751178,-871373e-9,0.432307,15141e-7,0.751195,-196061e-8,0.432317,34068e-7,0.751198,-348552e-8,0.432318,605659e-8,0.751195,-544599e-8,0.432315,946353e-8,0.751207,-784203e-8,0.43232,0.013628,0.751213,-0.0106732,0.43232,0.0185499,0.751221,-0.0139393,0.432319,0.0242302,0.751244,-0.0176398,0.432325,0.0306694,0.7513,-0.0217743,0.432348,0.0378698,0.751358,-0.0263412,0.432367,0.0458321,0.751458,-0.0313396,0.432404,0.0545587,0.751608,-0.0367682,0.432464,0.0640543,0.7518,-0.0426246,0.43254,0.0743222,0.752065,-0.0489031,0.432645,0.0853668,0.752376,-0.0555828,0.432762,0.0971911,0.752715,-0.0623861,0.432859,0.109768,0.753137,-0.069415,0.432958,0.123126,0.753676,-0.0770039,0.433099,0.137308,0.754345,-0.084971,0.433272,0.15229,0.755235,-0.0932681,0.433504,0.168075,0.756186,-0.10171,0.433693,0.184625,0.757363,-0.110019,0.433857,0.201897,0.75884,-0.11887,0.434102,0.220014,0.760467,-0.127881,0.434306,0.238778,0.762969,-0.136766,0.434751,0.258172,0.765823,-0.14612,0.43529,0.278062,0.769676,-0.15566,0.436236,0.298437,0.774909,-0.165177,0.437754,0.319532,0.77994,-0.17402,0.438343,0.342505,0.785757,-0.182201,0.438609,0.366693,0.792487,-0.190104,0.438762,0.391668,0.80038,-0.197438,0.438795,0.417494,0.808494,-0.204365,0.438226,0.443933,0.817695,-0.210714,0.437283,0.470929,0.828111,-0.216651,0.436087,0.498569,0.837901,-0.221804,0.433717,0.526165,0.847813,-0.226318,0.430133,0.554155,0.858314,-0.229297,0.425213,0.582822,0.868891,-0.230999,0.418576,0.612847,0.878941,-0.231155,0.410405,0.642445,0.888809,-0.230935,0.400544,0.672024,0.898089,-0.229343,0.389613,0.701366,0.908081,-0.226886,0.377197,0.730763,0.916819,-0.222676,0.363397,0.759642,0.924968,-0.216835,0.347437,0.788775,0.932906,-0.210245,0.32995,0.817135,0.940025,-0.202992,0.312262,0.844912,0.946101,-0.19436,0.293313,0.872164,0.952835,-0.184125,0.273638,0.899443,0.957347,-0.173657,0.252385,0.926389,0.961434,-0.162204,0.231038,0.951947,0.965522,-0.14979,0.209834,0.976751,0.969412,-0.136307,0.188821,1.00022,0.973902,-0.122527,0.168013,1.02229,0.974045,-0.108213,0.147634,1.04199,0.975775,-0.0927397,0.12705,1.06019,0.978383,-0.0778212,0.106309,1.07711,0.98211,-0.0621216,0.0849279,1.09245,0.986517,-0.0463847,0.0633519,1.10651,0.991696,-0.0309353,0.0419698,1.11903,0.996349,-0.0150914,0.0206272,1.13073,1.00003,442449e-9,-231396e-9,1.14146,0.727498,-885074e-11,0.441528,145832e-10,0.730897,-223525e-9,0.443589,368298e-9,0.730796,-893996e-9,0.443528,147303e-8,0.730805,-201149e-8,0.443533,331433e-8,0.730814,-357596e-8,0.443538,589222e-8,0.730815,-558734e-8,0.443538,920678e-8,0.730822,-804544e-8,0.44354,0.0132582,0.730836,-0.0109501,0.443545,0.0180468,0.730848,-0.0143008,0.443546,0.0235732,0.730871,-0.0180969,0.443552,0.0298382,0.730915,-0.022338,0.443567,0.0368438,0.730982,-0.0270225,0.443591,0.044591,0.731076,-0.0321491,0.443627,0.0530831,0.731245,-0.0377166,0.443699,0.0623243,0.73144,-0.0437216,0.443777,0.0723181,0.7317,-0.0501576,0.443881,0.0830691,0.732034,-0.0569942,0.444014,0.0945809,0.732388,-0.0638756,0.444113,0.106825,0.732853,-0.071203,0.444247,0.119859,0.733473,-0.0790076,0.444442,0.13369,0.734195,-0.0871937,0.444645,0.148304,0.735069,-0.095696,0.444877,0.163702,0.736169,-0.10426,0.445133,0.179861,0.73747,-0.112853,0.44537,0.196778,0.738991,-0.12199,0.445651,0.214496,0.740865,-0.131153,0.445958,0.232913,0.743637,-0.140245,0.446548,0.251977,0.746797,-0.149722,0.447246,0.271551,0.751517,-0.159341,0.448656,0.291774,0.756156,-0.169106,0.449866,0.312455,0.761519,-0.178436,0.450919,0.334552,0.768295,-0.186904,0.451776,0.358491,0.776613,-0.195117,0.452832,0.383446,0.783966,-0.202695,0.45249,0.408945,0.793542,-0.20985,0.452587,0.435364,0.803192,-0.216403,0.451852,0.462336,0.813892,-0.22251,0.450708,0.48987,0.824968,-0.227676,0.4486,0.517697,0.835859,-0.232443,0.445156,0.545975,0.846825,-0.235775,0.440351,0.574483,0.858085,-0.237897,0.433641,0.604246,0.868825,-0.238074,0.425354,0.634101,0.879638,-0.237661,0.415383,0.664201,0.889966,-0.236186,0.404136,0.693918,0.899479,-0.233599,0.390917,0.723481,0.908769,-0.229737,0.376352,0.75258,0.917966,-0.223836,0.360372,0.781764,0.926304,-0.217067,0.342551,0.811139,0.934626,-0.209309,0.324238,0.839585,0.941841,-0.20071,0.304484,0.867044,0.94789,-0.190602,0.283607,0.894579,0.954196,-0.179253,0.262205,0.921743,0.958383,-0.167646,0.239847,0.948026,0.963119,-0.155073,0.218078,0.973296,0.966941,-0.141426,0.195899,0.998135,0.970836,-0.126849,0.174121,1.02021,0.973301,-0.112296,0.153052,1.04085,0.97448,-0.0964965,0.131733,1.05946,0.977045,-0.080489,0.10997,1.07693,0.980751,-0.064844,0.0881657,1.09254,0.985475,-0.0481938,0.0657987,1.10697,0.991089,-0.0319185,0.0435215,1.12004,0.996122,-0.0158088,0.0214779,1.13173,1.00001,372455e-9,-200295e-9,1.14291,0.708622,-907597e-11,0.45304,141962e-10,0.711162,-228911e-9,0.454662,358052e-9,0.709812,-914446e-9,0.453797,143034e-8,0.709865,-205819e-8,0.453834,321935e-8,0.709864,-365894e-8,0.453833,572331e-8,0.709855,-571692e-8,0.453826,894278e-8,0.709862,-823201e-8,0.453828,0.012878,0.709875,-0.011204,0.453832,0.0175295,0.709896,-0.0146323,0.453839,0.0228978,0.709925,-0.0185163,0.453847,0.0289839,0.709974,-0.0228551,0.453866,0.0357894,0.710045,-0.0276473,0.453892,0.0433161,0.710133,-0.032891,0.453924,0.0515665,0.710292,-0.0385851,0.453992,0.0605458,0.710485,-0.0447254,0.45407,0.0702574,0.710769,-0.0513051,0.454192,0.0807077,0.711106,-0.0582733,0.454329,0.091896,0.711516,-0.0652866,0.45446,0.103814,0.712071,-0.0728426,0.454653,0.116508,0.712676,-0.0808307,0.45484,0.129968,0.713476,-0.0892216,0.455096,0.144206,0.714377,-0.0979047,0.455346,0.159212,0.715579,-0.106531,0.455647,0.174973,0.716977,-0.115492,0.455961,0.191504,0.71862,-0.124821,0.456315,0.208835,0.72084,-0.134079,0.4568,0.226869,0.723786,-0.143427,0.457521,0.245582,0.727464,-0.153061,0.458475,0.264957,0.732771,-0.162768,0.460239,0.284948,0.736515,-0.172627,0.460899,0.30522,0.743519,-0.182487,0.463225,0.326717,0.750041,-0.191295,0.464027,0.350113,0.758589,-0.199746,0.465227,0.374782,0.767703,-0.207584,0.465877,0.400226,0.777484,-0.214973,0.465996,0.426442,0.788792,-0.221796,0.466019,0.453688,0.800194,-0.228038,0.465083,0.481246,0.811234,-0.233346,0.462506,0.509086,0.822859,-0.238073,0.459257,0.537338,0.835082,-0.241764,0.454863,0.566108,0.846332,-0.244241,0.448163,0.595126,0.858355,-0.244736,0.439709,0.625574,0.87034,-0.244278,0.429837,0.65617,0.881027,-0.24255,0.418002,0.686029,0.891007,-0.239912,0.404325,0.716039,0.900874,-0.236133,0.389222,0.745518,0.911072,-0.230672,0.373269,0.775026,0.920359,-0.22356,0.355083,0.804521,0.928604,-0.215591,0.335533,0.834045,0.937175,-0.206503,0.315278,0.861612,0.942825,-0.196684,0.293653,0.889131,0.949805,-0.185116,0.271503,0.916853,0.955535,-0.172703,0.248821,0.943541,0.959843,-0.159978,0.225591,0.970132,0.964393,-0.146375,0.202719,0.994709,0.968008,-0.131269,0.179928,1.0186,0.971013,-0.11569,0.158007,1.03928,0.973334,-0.1003,0.13624,1.05887,0.975775,-0.0833352,0.1138,1.07652,0.979579,-0.0668981,0.0913141,1.09297,0.984323,-0.0500902,0.0683051,1.10734,0.990351,-0.0332377,0.0451771,1.12084,0.995823,-0.0161491,0.0221705,1.13296,1.0001,234083e-9,-108712e-9,1.14441,0.683895,-924677e-11,0.46015,137429e-10,0.68833,-233383e-9,0.463134,346865e-9,0.688368,-933547e-9,0.463159,138748e-8,0.688367,-210049e-8,0.463159,312187e-8,0.688369,-373415e-8,0.463159,555004e-8,0.688377,-583449e-8,0.463163,867216e-8,0.688386,-840128e-8,0.463166,0.0124884,0.688398,-0.0114343,0.463169,0.0169993,0.688418,-0.0149329,0.463175,0.0222054,0.688453,-0.0188964,0.463188,0.028108,0.688515,-0.0233239,0.463214,0.0347085,0.68857,-0.0282136,0.463231,0.0420091,0.688679,-0.033564,0.463276,0.0500132,0.688854,-0.0393733,0.463356,0.0587255,0.689038,-0.0456354,0.46343,0.0681476,0.689321,-0.0523433,0.463553,0.0782897,0.689662,-0.059412,0.463693,0.0891501,0.690188,-0.0665736,0.4639,0.100735,0.690755,-0.0743106,0.464107,0.113074,0.691405,-0.0824722,0.464329,0.126161,0.692198,-0.0910484,0.464585,0.140007,0.693196,-0.0998778,0.464893,0.154612,0.69454,-0.108651,0.465285,0.169984,0.695921,-0.117855,0.465596,0.186106,0.697749,-0.12734,0.466056,0.203034,0.700375,-0.136714,0.466771,0.220703,0.703395,-0.146386,0.467579,0.239062,0.707904,-0.156096,0.469067,0.258188,0.711673,-0.165904,0.469851,0.277759,0.717489,-0.175812,0.471815,0.297935,0.724051,-0.185931,0.47389,0.318916,0.731965,-0.195238,0.47587,0.341591,0.741151,-0.204021,0.477523,0.366062,0.751416,-0.212113,0.478881,0.391396,0.761848,-0.21979,0.479226,0.417599,0.771886,-0.2267,0.478495,0.444401,0.783998,-0.232991,0.477622,0.472084,0.796523,-0.238645,0.475833,0.500193,0.808851,-0.243396,0.472568,0.52865,0.821191,-0.247226,0.467857,0.557362,0.834261,-0.250102,0.461871,0.586768,0.846762,-0.251056,0.453543,0.617085,0.859867,-0.250604,0.443494,0.647659,0.871948,-0.248783,0.431711,0.678119,0.882967,-0.245855,0.417911,0.708399,0.892826,-0.242168,0.401993,0.738256,0.90332,-0.237062,0.385371,0.767999,0.913633,-0.22997,0.366837,0.798191,0.922774,-0.221687,0.346372,0.827756,0.931371,-0.212345,0.325682,0.856425,0.938929,-0.20206,0.303665,0.884299,0.944821,-0.190981,0.280786,0.912023,0.951792,-0.178065,0.2573,0.939669,0.957712,-0.164634,0.233448,0.96655,0.961912,-0.150863,0.209504,0.992366,0.966382,-0.13577,0.18597,1.01633,0.969588,-0.119593,0.162905,1.03843,0.971777,-0.103203,0.14053,1.05841,0.97433,-0.0865888,0.117909,1.07632,0.978686,-0.0690829,0.0944101,1.09326,0.983281,-0.0516568,0.0705671,1.10796,0.989562,-0.034558,0.0468592,1.12182,0.995465,-0.0167808,0.0229846,1.1342,0.999991,373016e-9,-235606e-9,1.1459,0.662251,-939016e-11,0.468575,132714e-10,0.666634,-237624e-9,0.471675,335842e-9,0.666411,-950385e-9,0.471516,134321e-8,0.666399,-213833e-8,0.471509,302221e-8,0.666386,-38014e-7,0.471499,537283e-8,0.666405,-593958e-8,0.471511,839533e-8,0.666406,-855253e-8,0.471508,0.0120898,0.666428,-0.0116401,0.471519,0.0164569,0.666444,-0.0152015,0.471522,0.0214971,0.66649,-0.0192362,0.471543,0.027212,0.666537,-0.0237428,0.471558,0.033603,0.666617,-0.0287198,0.471591,0.0406728,0.666718,-0.0341647,0.471631,0.0484238,0.666889,-0.0400759,0.47171,0.0568621,0.667104,-0.0464479,0.471805,0.0659915,0.667374,-0.0532677,0.471923,0.0758178,0.667772,-0.0603805,0.472098,0.0863425,0.668371,-0.0677392,0.472363,0.0975917,0.668971,-0.0756028,0.472596,0.109567,0.669696,-0.0839293,0.472869,0.122272,0.670481,-0.0926683,0.473126,0.135718,0.6715,-0.1016,0.473442,0.149914,0.672911,-0.110566,0.47389,0.164882,0.674512,-0.119984,0.474354,0.180602,0.67651,-0.129574,0.474922,0.19711,0.679292,-0.139106,0.475764,0.214371,0.682798,-0.148993,0.476886,0.232405,0.686955,-0.158737,0.478179,0.251153,0.691406,-0.168754,0.479432,0.270436,0.697438,-0.178703,0.481481,0.290374,0.704761,-0.188955,0.484143,0.311044,0.713599,-0.198814,0.487007,0.333003,0.723194,-0.207869,0.488962,0.357144,0.732601,-0.216189,0.489815,0.382169,0.744193,-0.22398,0.490888,0.408227,0.754907,-0.231156,0.490355,0.434928,0.767403,-0.23747,0.489548,0.462599,0.78107,-0.243503,0.488274,0.490908,0.793893,-0.248114,0.484843,0.519421,0.807296,-0.25222,0.4803,0.548561,0.820529,-0.255265,0.474097,0.577772,0.833716,-0.256741,0.466041,0.607782,0.848403,-0.25637,0.456547,0.638807,0.860755,-0.254804,0.443946,0.670058,0.874012,-0.251834,0.430852,0.700749,0.885619,-0.247867,0.414903,0.731446,0.896069,-0.242634,0.397276,0.761191,0.906266,-0.236093,0.378535,0.791053,0.916759,-0.227543,0.358038,0.821298,0.92523,-0.21783,0.335705,0.850747,0.93436,-0.207534,0.313797,0.879258,0.941631,-0.195983,0.289671,0.907734,0.947564,-0.183567,0.265319,0.935206,0.953681,-0.169345,0.240815,0.962739,0.960008,-0.154909,0.216119,0.989227,0.964145,-0.140161,0.192096,1.01465,0.968171,-0.123411,0.167855,1.03737,0.969859,-0.106525,0.144817,1.05767,0.972666,-0.0891023,0.12149,1.0761,0.977055,-0.0718094,0.0975306,1.09336,0.982527,-0.0534213,0.0730217,1.10878,0.989001,-0.0355579,0.0483366,1.12285,0.99512,-0.0176383,0.023938,1.13548,1.00007,368831e-9,-211581e-9,1.14744,0.651047,-960845e-11,0.484101,12922e-9,0.644145,-241347e-9,0.478968,324578e-9,0.64396,-965142e-9,0.478831,129798e-8,0.64396,-217154e-8,0.47883,292046e-8,0.643968,-386049e-8,0.478835,519202e-8,0.643974,-603186e-8,0.478838,81128e-7,0.643977,-86854e-7,0.478836,0.011683,0.643982,-0.0118207,0.478834,0.0159031,0.644024,-0.0154374,0.478856,0.0207743,0.644059,-0.0195343,0.478868,0.0262975,0.644122,-0.0241103,0.478896,0.0324747,0.644207,-0.0291638,0.478933,0.039309,0.64432,-0.0346919,0.478981,0.0468029,0.644481,-0.0406919,0.479053,0.0549614,0.644722,-0.047159,0.479169,0.0637909,0.645013,-0.0540748,0.479302,0.0732974,0.645503,-0.0612001,0.479541,0.0834898,0.646117,-0.0687303,0.479829,0.0943873,0.646707,-0.0767846,0.480061,0.105991,0.647431,-0.0852465,0.480343,0.11831,0.64831,-0.0940719,0.48066,0.131348,0.649486,-0.103056,0.481083,0.14514,0.650864,-0.112261,0.481528,0.159676,0.652604,-0.121852,0.482102,0.174979,0.654825,-0.131505,0.482813,0.191079,0.657876,-0.141189,0.483876,0.207927,0.661339,-0.151239,0.48499,0.225586,0.665463,-0.161091,0.486279,0.243947,0.670542,-0.171235,0.487968,0.262957,0.677361,-0.181347,0.49053,0.282781,0.685672,-0.191679,0.493862,0.303311,0.694551,-0.201781,0.49699,0.324607,0.703753,-0.211164,0.498884,0.347916,0.713703,-0.219675,0.500086,0.372628,0.725911,-0.227836,0.501554,0.398694,0.73862,-0.23533,0.502193,0.425529,0.752118,-0.241786,0.501811,0.453209,0.76579,-0.247865,0.500185,0.481381,0.779568,-0.252696,0.497159,0.51011,0.793991,-0.256802,0.492765,0.539322,0.808182,-0.259942,0.486827,0.569078,0.821698,-0.261703,0.478386,0.598818,0.836009,-0.262006,0.468772,0.629762,0.849824,-0.260333,0.456352,0.661366,0.863888,-0.257398,0.442533,0.69295,0.876585,-0.253264,0.426573,0.723608,0.888665,-0.248026,0.408964,0.754378,0.899537,-0.241487,0.389677,0.784761,0.9094,-0.233463,0.368516,0.814688,0.920166,-0.223397,0.346624,0.845009,0.928899,-0.21255,0.322717,0.874431,0.937156,-0.200869,0.298698,0.902922,0.943861,-0.188387,0.273491,0.931356,0.949557,-0.174341,0.247866,0.958854,0.955862,-0.158994,0.222496,0.986098,0.961721,-0.143664,0.197522,1.01229,0.965976,-0.127412,0.17302,1.03571,0.968652,-0.109798,0.148954,1.05699,0.971084,-0.0916787,0.125044,1.07587,0.975584,-0.0739634,0.100577,1.09372,0.98122,-0.055322,0.0753666,1.10948,0.988253,-0.0366825,0.0498899,1.12394,0.99482,-0.0180389,0.024611,1.13694,1.00001,229839e-9,-188283e-9,1.14919,0.613867,-964198e-11,0.479449,123452e-10,0.621485,-244534e-9,0.485399,313091e-9,0.621429,-978202e-9,0.485353,125245e-8,0.62112,-220004e-8,0.485114,281687e-8,0.621119,-39111e-7,0.485112,500783e-8,0.621122,-611091e-8,0.485112,782498e-8,0.621133,-879922e-8,0.485117,0.0112687,0.621152,-0.0119756,0.485125,0.0153394,0.621183,-0.0156396,0.485139,0.0200382,0.621227,-0.0197898,0.485158,0.0253663,0.621298,-0.0244253,0.485192,0.0313261,0.621388,-0.0295441,0.485233,0.0379204,0.621507,-0.0351432,0.485286,0.0451523,0.621693,-0.0412198,0.485378,0.0530277,0.621933,-0.0477673,0.485495,0.0615522,0.622232,-0.0547574,0.485635,0.0707316,0.622809,-0.0619417,0.485943,0.0805883,0.623407,-0.069625,0.486232,0.0911267,0.62406,-0.077796,0.486516,0.102354,0.624835,-0.0863731,0.486838,0.114279,0.625758,-0.095251,0.487188,0.126902,0.627043,-0.104299,0.487695,0.140285,0.628438,-0.113724,0.488163,0.154397,0.630325,-0.123417,0.488858,0.169267,0.632801,-0.133137,0.489754,0.184941,0.635784,-0.143052,0.490815,0.20136,0.639406,-0.153132,0.492048,0.218643,0.643872,-0.163143,0.49363,0.236615,0.6499,-0.17333,0.496009,0.255449,0.657201,-0.183622,0.498994,0.275006,0.666221,-0.194019,0.502888,0.295354,0.674419,-0.204192,0.505459,0.316244,0.683729,-0.21406,0.507771,0.33849,0.695584,-0.222854,0.510245,0.363166,0.708583,-0.231315,0.512293,0.389071,0.721233,-0.238911,0.512747,0.415737,0.735134,-0.245657,0.512482,0.443331,0.750179,-0.251879,0.511526,0.471891,0.765073,-0.256911,0.508935,0.500892,0.779794,-0.261144,0.504341,0.530294,0.794801,-0.264316,0.498515,0.560144,0.810339,-0.266276,0.491015,0.590213,0.824818,-0.266981,0.481126,0.620865,0.839375,-0.265778,0.468685,0.652687,0.853043,-0.262748,0.453925,0.684759,0.867335,-0.258474,0.437912,0.716209,0.88037,-0.253187,0.419648,0.747508,0.891711,-0.246476,0.39982,0.77797,0.902896,-0.238735,0.37879,0.808586,0.913601,-0.22885,0.355891,0.838843,0.923019,-0.217656,0.331773,0.869014,0.933432,-0.205539,0.307356,0.898512,0.939691,-0.192595,0.281321,0.9269,0.946938,-0.178945,0.255441,0.955297,0.952372,-0.163587,0.229013,0.983231,0.95909,-0.147214,0.203179,1.00971,0.963675,-0.13064,0.17792,1.03438,0.968247,-0.113121,0.152898,1.05625,0.97001,-0.0945824,0.128712,1.07598,0.974458,-0.0755648,0.103349,1.094,0.980168,-0.0571998,0.0776731,1.1104,0.987295,-0.0377994,0.0514445,1.12491,0.994432,-0.0186417,0.025429,1.13851,0.999975,542714e-9,-282356e-9,1.15108,0.592656,-980249e-11,0.486018,119532e-10,0.598467,-247275e-9,0.490781,301531e-9,0.597934,-988317e-9,0.490343,120517e-8,0.597903,-222366e-8,0.490319,27116e-7,0.597913,-395315e-8,0.490327,482077e-8,0.597919,-617653e-8,0.490329,753264e-8,0.597936,-889375e-8,0.490339,0.0108478,0.597956,-0.0121043,0.490347,0.0147668,0.597992,-0.0158073,0.490365,0.0192905,0.598032,-0.0200017,0.490382,0.0244204,0.598109,-0.0246865,0.49042,0.0301593,0.598215,-0.0298594,0.490474,0.03651,0.59833,-0.0355167,0.490524,0.0434757,0.598525,-0.0416559,0.490624,0.0510629,0.598778,-0.0482692,0.490753,0.0592781,0.599135,-0.0553114,0.49094,0.0681304,0.599802,-0.062542,0.491328,0.0776467,0.600361,-0.0703638,0.491598,0.0878184,0.60101,-0.0786256,0.491882,0.0986573,0.601811,-0.0872962,0.492232,0.11018,0.602861,-0.0962284,0.492684,0.1224,0.604167,-0.10538,0.493213,0.135354,0.605693,-0.114896,0.493799,0.149034,0.607682,-0.124654,0.494576,0.163469,0.610672,-0.13456,0.4959,0.178747,0.613313,-0.144581,0.496713,0.194723,0.617603,-0.154703,0.498499,0.211617,0.622174,-0.16489,0.500188,0.229183,0.628855,-0.175164,0.503072,0.247786,0.636963,-0.185565,0.506798,0.267116,0.644866,-0.195911,0.509719,0.28702,0.653741,-0.206104,0.512776,0.307763,0.664942,-0.216447,0.516812,0.329631,0.67633,-0.22552,0.519181,0.353515,0.690012,-0.234316,0.521681,0.379226,0.704243,-0.242032,0.523129,0.405901,0.719396,-0.249172,0.523768,0.433585,0.734471,-0.255543,0.522541,0.462085,0.750539,-0.260697,0.520217,0.491233,0.766365,-0.26501,0.516293,0.521094,0.781677,-0.268409,0.509708,0.551014,0.797132,-0.270399,0.501944,0.581463,0.812655,-0.271247,0.492025,0.612402,0.828592,-0.270708,0.480424,0.643798,0.844044,-0.268085,0.465955,0.67682,0.857305,-0.263459,0.448425,0.708496,0.87114,-0.258151,0.430243,0.74046,0.884936,-0.251171,0.410578,0.771583,0.895772,-0.243305,0.38862,0.802234,0.906961,-0.234037,0.365214,0.833179,0.917775,-0.222714,0.34116,0.86353,0.927883,-0.210175,0.31572,0.893557,0.936617,-0.196925,0.289159,0.922976,0.943384,-0.182788,0.261996,0.951606,0.949713,-0.167965,0.235324,0.979958,0.955818,-0.151109,0.208408,1.00765,0.961344,-0.133834,0.182591,1.03329,0.965469,-0.115987,0.156958,1.0557,0.968693,-0.09746,0.132239,1.07583,0.973165,-0.0778514,0.106195,1.09451,0.979387,-0.0585067,0.0797669,1.11137,0.98671,-0.0390409,0.0530263,1.12643,0.994093,-0.019408,0.0263163,1.14016,1.00002,540029e-9,-194487e-9,1.15299,0.574483,-989066e-11,0.494533,114896e-10,0.574478,-249127e-9,0.494528,289403e-9,0.574607,-996811e-9,0.494637,115797e-8,0.574396,-224241e-8,0.494458,260498e-8,0.574377,-398632e-8,0.49444,463102e-8,0.574386,-622836e-8,0.494445,723623e-8,0.574401,-89683e-7,0.494453,0.010421,0.574419,-0.0122056,0.49446,0.0141859,0.574459,-0.0159396,0.494481,0.0185322,0.574525,-0.0201692,0.49452,0.0234617,0.574587,-0.0248924,0.494547,0.0289762,0.574697,-0.0301074,0.494604,0.0350797,0.574853,-0.0358114,0.494688,0.0417767,0.575027,-0.041999,0.494772,0.0490718,0.575294,-0.0486618,0.494915,0.0569728,0.575733,-0.0557148,0.495173,0.0654955,0.576356,-0.0630489,0.495537,0.0746612,0.576944,-0.0709285,0.495836,0.0844615,0.57765,-0.0792723,0.496177,0.0949142,0.578491,-0.0880167,0.496563,0.10603,0.579639,-0.0969462,0.497096,0.117841,0.580989,-0.10622,0.497684,0.130367,0.582587,-0.115861,0.498337,0.143609,0.584951,-0.125605,0.499414,0.157625,0.587602,-0.135608,0.500518,0.172413,0.59076,-0.145742,0.501767,0.187999,0.594992,-0.155934,0.503542,0.20445,0.600656,-0.166303,0.506135,0.221764,0.607816,-0.176681,0.509542,0.24002,0.61522,-0.187071,0.51263,0.258992,0.623702,-0.197465,0.516021,0.278773,0.634192,-0.207816,0.520422,0.299377,0.644936,-0.218183,0.524073,0.320802,0.657888,-0.2278,0.528049,0.34384,0.670666,-0.236747,0.52986,0.36916,0.685626,-0.24484,0.531892,0.395867,0.701304,-0.252071,0.532727,0.423488,0.717727,-0.258714,0.532146,0.452201,0.733914,-0.264211,0.529883,0.481579,0.750529,-0.26859,0.5259,0.511558,0.76747,-0.272046,0.51999,0.542042,0.785189,-0.274225,0.513083,0.572799,0.800954,-0.275189,0.502936,0.603816,0.816962,-0.274946,0.490921,0.635461,0.83336,-0.272695,0.47684,0.6676,0.848143,-0.268223,0.459405,0.70051,0.861818,-0.262768,0.440319,0.732902,0.876828,-0.255872,0.420123,0.765084,0.889312,-0.247703,0.398379,0.796391,0.900412,-0.238381,0.374496,0.827333,0.912251,-0.227783,0.349874,0.858385,0.921792,-0.214832,0.323181,0.888652,0.931273,-0.200949,0.296624,0.917763,0.940295,-0.186537,0.269211,0.947878,0.946812,-0.171538,0.241447,0.977016,0.953588,-0.155254,0.213829,1.00501,0.958841,-0.137156,0.186807,1.03179,0.963746,-0.118699,0.160706,1.05502,0.966468,-0.0998358,0.135504,1.07568,0.971178,-0.0805186,0.109131,1.09479,0.97831,-0.0599348,0.0818293,1.1123,0.985886,-0.0399661,0.0545872,1.12771,0.994021,-0.0198682,0.0269405,1.14186,1.00009,271022e-9,-12989e-8,1.15514,0.538716,-990918e-11,0.486732,109675e-10,0.550656,-250642e-9,0.497518,277412e-9,0.55057,-100265e-8,0.497441,110974e-8,0.550903,-225672e-8,0.497733,249779e-8,0.550568,-401046e-8,0.497438,443906e-8,0.550574,-626613e-8,0.49744,693637e-8,0.550591,-90226e-7,0.497449,998921e-8,0.550623,-0.0122795,0.497469,0.0135984,0.550667,-0.0160361,0.497495,0.0177654,0.550724,-0.0202908,0.497526,0.0224915,0.550792,-0.0250421,0.497557,0.0277795,0.550918,-0.0302878,0.49763,0.0336334,0.551058,-0.0360241,0.497701,0.0400573,0.551276,-0.0422473,0.497824,0.0470585,0.551551,-0.0489441,0.497977,0.0546433,0.552074,-0.0559596,0.498312,0.0628367,0.552681,-0.0633978,0.498679,0.071646,0.553324,-0.0713176,0.499031,0.0810746,0.554011,-0.0797268,0.499365,0.091129,0.55488,-0.0885238,0.499779,0.101837,0.556171,-0.0974417,0.500444,0.113239,0.557498,-0.106841,0.501025,0.125316,0.559299,-0.116533,0.501864,0.138128,0.561647,-0.126298,0.502967,0.151695,0.564347,-0.136388,0.504129,0.16604,0.567863,-0.146576,0.505713,0.181207,0.572569,-0.156832,0.507953,0.197259,0.578919,-0.167323,0.511186,0.214258,0.585387,-0.177712,0.514042,0.232038,0.593134,-0.188184,0.517484,0.250733,0.603295,-0.198717,0.522345,0.270454,0.613854,-0.209177,0.526751,0.290807,0.626092,-0.219644,0.531595,0.312202,0.637868,-0.229494,0.534721,0.334435,0.652458,-0.238718,0.538304,0.359184,0.666985,-0.247061,0.539875,0.385637,0.683301,-0.254652,0.541042,0.41328,0.69998,-0.261376,0.540735,0.441903,0.717824,-0.267085,0.539139,0.471609,0.734617,-0.271465,0.534958,0.501446,0.753663,-0.27528,0.53032,0.532571,0.770512,-0.277617,0.522134,0.563641,0.787356,-0.278525,0.51206,0.595067,0.806252,-0.278512,0.50119,0.627226,0.822061,-0.277023,0.486791,0.659402,0.838959,-0.273175,0.470467,0.692874,0.85379,-0.267238,0.450688,0.725702,0.868268,-0.260327,0.429741,0.75832,0.881994,-0.251946,0.407223,0.790189,0.893885,-0.242432,0.383214,0.821625,0.905118,-0.231904,0.357297,0.853011,0.916045,-0.219545,0.330733,0.883773,0.927614,-0.205378,0.303916,0.914435,0.936005,-0.190388,0.275941,0.944502,0.944533,-0.1749,0.247493,0.974439,0.950758,-0.158588,0.218996,1.00286,0.957078,-0.141027,0.191559,1.0304,0.962448,-0.121507,0.164457,1.05466,0.964993,-0.102068,0.138636,1.0761,0.970017,-0.0822598,0.111861,1.09541,0.97661,-0.062033,0.0843438,1.11317,0.985073,-0.0409832,0.0558496,1.12911,0.993515,-0.020146,0.0275331,1.1438,1.00006,27329e-8,-107883e-9,1.15736,0.525324,-999341e-11,0.498153,105385e-10,0.526513,-251605e-9,0.499277,265329e-9,0.526517,-100641e-8,0.499282,10613e-7,0.526588,-226466e-8,0.499337,238823e-8,0.526539,-40255e-7,0.499302,424535e-8,0.526547,-628954e-8,0.499306,663364e-8,0.526561,-905628e-8,0.499313,955337e-8,0.526593,-0.0123253,0.499334,0.0130054,0.526642,-0.0160957,0.499365,0.0169911,0.5267,-0.0203661,0.499396,0.0215122,0.526792,-0.0251347,0.499451,0.0265718,0.526904,-0.0303985,0.499511,0.0321732,0.527079,-0.0361554,0.499617,0.0383231,0.527285,-0.0423982,0.499731,0.045026,0.527602,-0.0491121,0.499924,0.0522936,0.528166,-0.0561127,0.500306,0.0601528,0.52879,-0.0635988,0.5007,0.0686059,0.529421,-0.071581,0.501048,0.0776518,0.530144,-0.0799854,0.501421,0.0873148,0.531062,-0.0888032,0.501884,0.0976084,0.532374,-0.0977643,0.50259,0.108588,0.533828,-0.107197,0.50329,0.120234,0.53581,-0.116887,0.504312,0.132602,0.538063,-0.126755,0.505365,0.145721,0.5409,-0.136819,0.506668,0.159617,0.544882,-0.147117,0.508731,0.174369,0.550238,-0.157446,0.511601,0.190028,0.556038,-0.167988,0.514431,0.206587,0.563031,-0.178364,0.517808,0.224046,0.571543,-0.189007,0.521937,0.242503,0.582255,-0.199546,0.527415,0.261977,0.59272,-0.210084,0.531682,0.282162,0.605648,-0.220448,0.537123,0.303426,0.61785,-0.230593,0.540664,0.325323,0.632223,-0.240238,0.544467,0.348993,0.648819,-0.24887,0.547594,0.375462,0.665825,-0.256657,0.54912,0.403024,0.683389,-0.263711,0.549294,0.431773,0.701495,-0.269666,0.547649,0.461494,0.719197,-0.274169,0.543786,0.491623,0.737906,-0.278124,0.538644,0.522994,0.756652,-0.280632,0.531057,0.554775,0.775279,-0.281741,0.521972,0.586441,0.792688,-0.281652,0.509613,0.618596,0.811894,-0.280345,0.496497,0.651462,0.827938,-0.277128,0.47968,0.684023,0.844837,-0.271646,0.460688,0.718024,0.859239,-0.264397,0.438872,0.751207,0.874088,-0.256144,0.41577,0.784232,0.887693,-0.246311,0.391369,0.816191,0.899402,-0.235497,0.365872,0.847828,0.910973,-0.223631,0.338618,0.87934,0.92204,-0.209874,0.310803,0.910325,0.930987,-0.194265,0.281802,0.940695,0.94,-0.178125,0.252836,0.970958,0.948018,-0.161479,0.224239,1.00078,0.955141,-0.144038,0.195857,1.0288,0.960513,-0.124915,0.168487,1.05371,0.963964,-0.104284,0.141495,1.07596,0.968713,-0.0838732,0.114437,1.09628,0.975524,-0.0635579,0.0863105,1.11448,0.98431,-0.042291,0.0574774,1.13069,0.992916,-0.0209131,0.0284343,1.14568,0.999926,743097e-9,-379265e-9,1.15955,0.501042,-998428e-11,0.498726,100306e-10,0.502992,-252112e-9,0.500665,253283e-9,0.502417,-100791e-8,0.500092,101259e-8,0.502965,-226919e-8,0.500621,227978e-8,0.502318,-403109e-8,0.499994,405011e-8,0.502333,-629832e-8,0.500005,632868e-8,0.502362,-906907e-8,0.500027,911446e-8,0.502369,-0.0123423,0.500023,0.0124078,0.50243,-0.0161178,0.500066,0.016211,0.502493,-0.0203937,0.500103,0.0205256,0.502592,-0.0251684,0.500166,0.0253548,0.502707,-0.0304389,0.50023,0.0307029,0.502881,-0.0362015,0.500335,0.0365753,0.503124,-0.0424507,0.500488,0.0429798,0.503443,-0.0491582,0.500686,0.0499268,0.504083,-0.0561476,0.501155,0.0574541,0.504668,-0.0636846,0.501524,0.0655408,0.505319,-0.0716834,0.501904,0.0742072,0.50609,-0.0800925,0.502321,0.0834699,0.507122,-0.0888425,0.502896,0.0933603,0.508414,-0.097855,0.503603,0.10391,0.509955,-0.107304,0.504416,0.115113,0.512061,-0.116921,0.505565,0.127054,0.514419,-0.12689,0.506732,0.139709,0.517529,-0.136934,0.508338,0.153173,0.522085,-0.147327,0.510987,0.167528,0.526986,-0.157612,0.513527,0.182708,0.533122,-0.168213,0.516717,0.198881,0.540807,-0.178688,0.520832,0.215986,0.550687,-0.189511,0.52632,0.234335,0.560567,-0.199998,0.531009,0.253375,0.571698,-0.210652,0.535839,0.273499,0.584364,-0.220917,0.541091,0.294355,0.599066,-0.23137,0.546875,0.316525,0.614148,-0.241206,0.551306,0.339671,0.631157,-0.250379,0.555187,0.36531,0.647919,-0.258397,0.556595,0.392767,0.666112,-0.265528,0.556949,0.421397,0.686158,-0.271827,0.556617,0.451433,0.704838,-0.27674,0.552975,0.482131,0.723957,-0.280733,0.547814,0.513458,0.74262,-0.283359,0.53997,0.545446,0.762009,-0.284541,0.530422,0.57775,0.781314,-0.284507,0.518546,0.610434,0.799116,-0.283309,0.504178,0.643178,0.817604,-0.280378,0.48843,0.676248,0.83459,-0.275619,0.469457,0.709698,0.850974,-0.26856,0.447698,0.744245,0.866747,-0.260094,0.424791,0.777695,0.881412,-0.249929,0.399913,0.810392,0.8936,-0.239137,0.37308,0.842872,0.905943,-0.226818,0.345705,0.874677,0.916408,-0.213699,0.31706,0.906257,0.927215,-0.198428,0.288444,0.936881,0.935625,-0.181643,0.258329,0.96795,0.944076,-0.164386,0.228488,0.998216,0.951229,-0.146339,0.199763,1.02689,0.958793,-0.127709,0.172153,1.0535,0.963219,-0.107244,0.144989,1.07646,0.967562,-0.0857764,0.11685,1.09675,0.974866,-0.0645377,0.0880571,1.11576,0.983353,-0.0431732,0.0587352,1.13227,0.992503,-0.0218356,0.0294181,1.1478,1.00003,605203e-9,-231013e-9,1.16207,0.482935,-101177e-10,0.504695,968142e-11,0.477554,-251521e-9,0.499071,240676e-9,0.477904,-100683e-8,0.499436,96342e-8,0.478368,-226636e-8,0.499899,21687e-7,0.477977,-402719e-8,0.499513,385384e-8,0.477993,-629226e-8,0.499525,60221e-7,0.478011,-906011e-8,0.499536,867289e-8,0.478051,-0.0123305,0.499566,0.0118074,0.478089,-0.016102,0.499587,0.0154269,0.478171,-0.0203736,0.499645,0.0195341,0.478254,-0.025143,0.499692,0.0241318,0.47839,-0.0304071,0.499779,0.0292247,0.478588,-0.0361631,0.499911,0.0348196,0.478812,-0.0424023,0.500046,0.0409231,0.479208,-0.0490724,0.500326,0.047552,0.479841,-0.0560722,0.500805,0.0547377,0.480392,-0.0636125,0.501152,0.0624607,0.481068,-0.0716134,0.501561,0.0707473,0.481898,-0.0800062,0.502054,0.0796118,0.483022,-0.0886568,0.502728,0.0890974,0.484332,-0.0977553,0.503479,0.0992099,0.486126,-0.107173,0.504546,0.10999,0.488066,-0.11677,0.50557,0.121476,0.490521,-0.126725,0.506849,0.133672,0.494232,-0.136793,0.50911,0.146731,0.498302,-0.147116,0.511345,0.160577,0.503565,-0.157446,0.514344,0.175335,0.510902,-0.168121,0.518824,0.191207,0.519263,-0.178799,0.523666,0.208058,0.528204,-0.189407,0.528296,0.225875,0.538854,-0.200145,0.533724,0.244782,0.551278,-0.210701,0.539833,0.264753,0.565222,-0.221303,0.546131,0.285745,0.579403,-0.231688,0.551496,0.307592,0.595469,-0.241718,0.556809,0.330582,0.610929,-0.250992,0.559641,0.354995,0.629433,-0.259602,0.562379,0.382471,0.648504,-0.267038,0.563676,0.411126,0.66756,-0.273388,0.562092,0.440924,0.689143,-0.278788,0.560807,0.472118,0.709056,-0.282783,0.555701,0.503774,0.729855,-0.285836,0.548698,0.536364,0.748954,-0.287078,0.538544,0.56895,0.768373,-0.287133,0.526711,0.601991,0.78827,-0.285839,0.512511,0.635403,0.807465,-0.283238,0.496323,0.668797,0.825194,-0.27906,0.477638,0.702584,0.842203,-0.272286,0.456253,0.736393,0.857749,-0.263854,0.432412,0.77096,0.874799,-0.253943,0.407806,0.80489,0.887497,-0.24237,0.38033,0.83771,0.89966,-0.230278,0.352446,0.870376,0.911753,-0.21646,0.323268,0.902256,0.923011,-0.202071,0.294314,0.933306,0.932375,-0.185519,0.264104,0.965177,0.940537,-0.167604,0.234035,0.996303,0.948904,-0.149068,0.20412,1.0261,0.955263,-0.129539,0.175431,1.05304,0.960303,-0.109932,0.148116,1.07617,0.965512,-0.0880572,0.119693,1.09742,0.973466,-0.0660548,0.0901619,1.11721,0.98284,-0.0439228,0.0599875,1.13436,0.992216,-0.0219588,0.0298975,1.15006,0.999946,119402e-9,-208547e-10,1.16471,0.447827,-100414e-10,0.491543,914833e-11,0.454778,-251257e-9,0.499172,22891e-8,0.453519,-100342e-8,0.497787,914184e-9,0.45357,-225776e-8,0.497847,205701e-8,0.453578,-401371e-8,0.497855,365705e-8,0.45357,-627107e-8,0.497841,571453e-8,0.453598,-902968e-8,0.497864,823019e-8,0.453627,-0.0122888,0.497882,0.0112049,0.453684,-0.0160475,0.497923,0.0146405,0.453764,-0.0203044,0.49798,0.0185394,0.453866,-0.0250576,0.498049,0.0229054,0.453996,-0.0303028,0.49813,0.0277424,0.454196,-0.0360379,0.498267,0.0330587,0.454457,-0.0422521,0.498445,0.0388613,0.454926,-0.0488393,0.498812,0.0451767,0.455525,-0.0558653,0.499272,0.0520153,0.456074,-0.0633772,0.499625,0.0593754,0.456752,-0.0713606,0.500049,0.0672751,0.457648,-0.07971,0.500615,0.0757447,0.458849,-0.0883032,0.501399,0.0848231,0.46029,-0.0974095,0.502293,0.0945135,0.462,-0.106729,0.503301,0.104848,0.464121,-0.116354,0.504533,0.115884,0.466889,-0.126214,0.506172,0.127652,0.470744,-0.136324,0.508667,0.14024,0.47488,-0.146595,0.510995,0.153673,0.480845,-0.157027,0.514832,0.168053,0.488262,-0.167658,0.519506,0.183508,0.496547,-0.178343,0.524347,0.199948,0.506254,-0.188916,0.52983,0.217503,0.517961,-0.199975,0.536357,0.236272,0.531484,-0.210624,0.543641,0.256096,0.545496,-0.221227,0.550048,0.277085,0.559497,-0.231568,0.555076,0.298615,0.575752,-0.241698,0.560541,0.321547,0.591999,-0.251172,0.564156,0.345602,0.610654,-0.260178,0.567607,0.371851,0.630484,-0.268094,0.56923,0.40076,0.651807,-0.274661,0.569779,0.430801,0.67239,-0.280331,0.566791,0.461939,0.693024,-0.284501,0.562007,0.493854,0.715473,-0.287852,0.555791,0.526992,0.736323,-0.28929,0.546345,0.560102,0.755771,-0.289405,0.534,0.593543,0.775424,-0.2881,0.519114,0.627256,0.795447,-0.285562,0.502543,0.661464,0.815319,-0.281416,0.484773,0.695206,0.831769,-0.275523,0.463445,0.729044,0.849464,-0.267516,0.440269,0.764069,0.866775,-0.257584,0.415049,0.799089,0.881252,-0.245817,0.388049,0.831948,0.894209,-0.233127,0.35889,0.865526,0.906922,-0.219579,0.329915,0.89818,0.919686,-0.204491,0.300441,0.930013,0.929044,-0.188962,0.269445,0.962061,0.938393,-0.171079,0.238402,0.994214,0.94661,-0.15199,0.208204,1.02533,0.953095,-0.131953,0.178653,1.0529,0.958644,-0.111233,0.150684,1.0771,0.963925,-0.0903098,0.122359,1.09855,0.971995,-0.0680505,0.0923342,1.11874,0.981658,-0.0448512,0.0614195,1.13635,0.991649,-0.0221931,0.0303582,1.15238,0.999985,393403e-9,-111086e-9,1.16772,0.396806,-971563e-11,0.457671,842355e-11,0.429186,-249421e-9,0.495017,21625e-8,0.429324,-998052e-9,0.495173,865322e-9,0.429175,-224487e-8,0.494999,194637e-8,0.429129,-399041e-8,0.494952,346004e-8,0.429153,-623476e-8,0.494974,540684e-8,0.429168,-89773e-7,0.494983,778714e-8,0.429207,-0.0122175,0.495012,0.0106022,0.429257,-0.0159542,0.495047,0.0138535,0.429338,-0.0201864,0.495106,0.0175443,0.429431,-0.0249104,0.495165,0.0216774,0.429587,-0.0301252,0.495279,0.0262594,0.429796,-0.0358249,0.495432,0.0312968,0.430065,-0.0419972,0.495621,0.0367985,0.430588,-0.0485144,0.496061,0.042798,0.43113,-0.0555028,0.496472,0.0492914,0.431743,-0.0629852,0.496904,0.0562907,0.432448,-0.0709256,0.497369,0.0638056,0.433414,-0.0791942,0.498032,0.071885,0.434638,-0.0877346,0.498854,0.0805517,0.43611,-0.0968056,0.499812,0.0898047,0.437859,-0.106002,0.500891,0.0997142,0.440017,-0.115648,0.502198,0.110289,0.443236,-0.125427,0.504389,0.121644,0.44697,-0.135492,0.506809,0.133769,0.451689,-0.145746,0.509858,0.146787,0.45811,-0.156219,0.514247,0.160793,0.465305,-0.166834,0.518816,0.175791,0.474085,-0.177546,0.524331,0.191906,0.484808,-0.188262,0.53104,0.209199,0.49732,-0.199346,0.538511,0.227825,0.509693,-0.209951,0.544554,0.247269,0.524367,-0.220533,0.551616,0.267978,0.539228,-0.231082,0.557368,0.289672,0.55644,-0.241342,0.563782,0.31268,0.574204,-0.250964,0.568851,0.33651,0.593388,-0.260306,0.57312,0.362219,0.613358,-0.268667,0.574916,0.390322,0.634512,-0.275591,0.575053,0.420478,0.65563,-0.281328,0.572404,0.451614,0.678265,-0.285948,0.568893,0.484112,0.70011,-0.289408,0.561878,0.517348,0.723005,-0.291328,0.55359,0.551355,0.743744,-0.291418,0.541099,0.585109,0.763949,-0.290252,0.526489,0.619487,0.784186,-0.287648,0.509496,0.65404,0.804304,-0.283782,0.491484,0.688649,0.823629,-0.278067,0.470517,0.723133,0.84094,-0.270588,0.44705,0.757163,0.857852,-0.261188,0.421252,0.792816,0.874934,-0.249313,0.394191,0.827248,0.888709,-0.236492,0.365359,0.861074,0.902589,-0.222185,0.336016,0.894417,0.914201,-0.207314,0.30527,0.926825,0.925978,-0.191146,0.274532,0.9595,0.93512,-0.174135,0.243393,0.991583,0.943656,-0.155231,0.212414,1.02356,0.951719,-0.134403,0.182005,1.05239,0.957164,-0.113023,0.153043,1.07754,0.962656,-0.0914493,0.124186,1.09984,0.970695,-0.0694179,0.0941654,1.12,0.980749,-0.0466199,0.0629671,1.13849,0.991205,-0.0227032,0.0311146,1.15494,0.999884,632388e-9,-254483e-9,1.1706,0.379821,-957289e-11,0.460637,789337e-11,0.405188,-247483e-9,0.491396,204064e-9,0.404796,-989434e-9,0.490914,815853e-9,0.40483,-222607e-8,0.490949,183559e-8,0.40473,-395723e-8,0.49084,326332e-8,0.404731,-618287e-8,0.490836,509945e-8,0.404768,-890258e-8,0.490871,734463e-8,0.404791,-0.0121156,0.490883,999992e-8,0.404857,-0.0158214,0.490938,0.0130676,0.404943,-0.0200178,0.491004,0.0165503,0.405059,-0.0247027,0.491093,0.0204521,0.405213,-0.0298729,0.491205,0.0247788,0.405399,-0.0355226,0.491333,0.0295373,0.405731,-0.0416352,0.491604,0.034741,0.406303,-0.0480807,0.492116,0.0404255,0.406814,-0.0550458,0.492506,0.0465732,0.407404,-0.0624652,0.492926,0.0532058,0.408149,-0.0702958,0.493442,0.0603442,0.409128,-0.0784623,0.494136,0.0680297,0.410408,-0.087007,0.495054,0.0762786,0.411813,-0.0959639,0.495962,0.0851046,0.413735,-0.105075,0.497257,0.0945878,0.416137,-0.114646,0.498882,0.104725,0.41934,-0.124394,0.501132,0.11563,0.423326,-0.134328,0.503883,0.127325,0.428419,-0.14458,0.50747,0.139911,0.43484,-0.154979,0.511964,0.153481,0.442641,-0.165628,0.517328,0.168114,0.452511,-0.176365,0.524258,0.183995,0.463473,-0.187298,0.531248,0.200953,0.475564,-0.198244,0.538367,0.219176,0.488664,-0.208938,0.545175,0.238514,0.504073,-0.219599,0.553227,0.259129,0.520832,-0.230378,0.560653,0.280997,0.538455,-0.240703,0.567523,0.303821,0.55709,-0.250548,0.573287,0.327948,0.576646,-0.259964,0.577795,0.353362,0.596705,-0.268721,0.580077,0.380336,0.618053,-0.276054,0.58018,0.4101,0.640303,-0.282176,0.578747,0.44161,0.662365,-0.286931,0.574294,0.474106,0.684542,-0.290521,0.567035,0.507549,0.707984,-0.292672,0.558687,0.541853,0.730913,-0.293189,0.547606,0.576581,0.752948,-0.292199,0.533471,0.61172,0.773452,-0.289508,0.516395,0.646339,0.794715,-0.285716,0.497873,0.682131,0.814251,-0.280051,0.476845,0.716396,0.833057,-0.272873,0.453449,0.751503,0.84959,-0.263982,0.427857,0.786085,0.867022,-0.252745,0.400335,0.821355,0.882277,-0.239655,0.371304,0.85646,0.895375,-0.225386,0.340397,0.890828,0.909347,-0.209587,0.310005,0.923532,0.921885,-0.193433,0.2796,0.956419,0.932127,-0.176135,0.247276,0.989445,0.941869,-0.157872,0.216186,1.02221,0.949735,-0.137577,0.185602,1.05195,0.956617,-0.115285,0.155767,1.07822,0.961974,-0.0928418,0.126103,1.10149,0.96972,-0.0700592,0.0956758,1.12207,0.98012,-0.0474671,0.0643269,1.1408,0.990825,-0.0238113,0.0320863,1.1577,0.999876,381574e-9,-812203e-10,1.17403,0.367636,-961342e-11,0.469176,753287e-11,0.380377,-244772e-9,0.485434,191797e-9,0.380416,-978857e-9,0.485475,767015e-9,0.380376,-220165e-8,0.485435,172522e-8,0.380419,-391408e-8,0.485487,306734e-8,0.380438,-611549e-8,0.485505,479332e-8,0.380462,-880558e-8,0.485525,690391e-8,0.380496,-0.0119837,0.485551,940039e-8,0.38056,-0.0156487,0.485605,0.0122848,0.38064,-0.0197988,0.485666,0.0155601,0.380767,-0.0244324,0.48577,0.0192313,0.380909,-0.0295444,0.485871,0.0233032,0.381142,-0.0351321,0.48606,0.0277861,0.381472,-0.0411535,0.486336,0.0326939,0.382015,-0.0475408,0.486833,0.0380565,0.382523,-0.0544395,0.487231,0.0438615,0.383129,-0.061784,0.487683,0.0501332,0.383952,-0.0695085,0.488313,0.0568996,0.38498,-0.0775819,0.489077,0.0641952,0.386331,-0.0860443,0.490113,0.0720324,0.387788,-0.0948406,0.491099,0.0804379,0.389808,-0.103899,0.492566,0.0894899,0.39252,-0.113313,0.494601,0.0992098,0.395493,-0.123007,0.496619,0.109641,0.399826,-0.132859,0.499912,0.120919,0.405341,-0.143077,0.504061,0.133107,0.411932,-0.153465,0.508905,0.146263,0.420591,-0.164108,0.515482,0.160544,0.43101,-0.174893,0.523191,0.176123,0.441881,-0.185839,0.53026,0.192757,0.453919,-0.196633,0.537295,0.210535,0.468715,-0.207611,0.546156,0.229886,0.485182,-0.218517,0.555173,0.250543,0.501926,-0.229249,0.562728,0.27221,0.51785,-0.239481,0.567494,0.294892,0.536947,-0.249395,0.573889,0.318987,0.557115,-0.259,0.578831,0.344348,0.577966,-0.268075,0.582055,0.371223,0.599489,-0.276115,0.583307,0.399834,0.62479,-0.282523,0.583902,0.431415,0.647504,-0.287663,0.57953,0.464301,0.670601,-0.291538,0.573103,0.498123,0.693539,-0.293842,0.563731,0.532662,0.717385,-0.294681,0.553169,0.567925,0.741533,-0.293717,0.539908,0.603502,0.762142,-0.291156,0.521902,0.639074,0.783014,-0.28719,0.502815,0.674439,0.805158,-0.281773,0.482598,0.710497,0.823646,-0.274682,0.458949,0.7456,0.841879,-0.266184,0.433129,0.781085,0.859515,-0.255682,0.406064,0.816,0.875335,-0.242849,0.376509,0.851074,0.890147,-0.228329,0.345502,0.886473,0.903144,-0.212491,0.31428,0.920751,0.916618,-0.195695,0.282994,0.954606,0.927953,-0.178267,0.251091,0.988402,0.937414,-0.159549,0.219107,1.02141,0.946823,-0.140022,0.18896,1.05167,0.954651,-0.118154,0.158667,1.07819,0.959955,-0.0946636,0.128808,1.1025,0.96858,-0.0711792,0.0973787,1.12391,0.97938,-0.0475046,0.0650965,1.14322,0.990498,-0.024059,0.0326267,1.16077,0.999844,-512408e-10,112444e-9,1.17727,0.316912,-934977e-11,0.425996,695559e-11,0.356423,-241372e-9,0.479108,179562e-9,0.356272,-965292e-9,0.478897,71811e-8,0.356262,-217182e-8,0.478894,161574e-8,0.356265,-386092e-8,0.478895,287261e-8,0.356278,-60324e-7,0.478905,448907e-8,0.356293,-868565e-8,0.478914,646572e-8,0.356346,-0.0118207,0.478965,880438e-8,0.356395,-0.0154355,0.479001,0.0115066,0.356484,-0.019529,0.479075,0.0145762,0.356609,-0.0240991,0.47918,0.018018,0.356766,-0.0291413,0.479305,0.0218379,0.357009,-0.0346498,0.479512,0.0260454,0.357424,-0.0405462,0.479909,0.0306657,0.357899,-0.0468825,0.480337,0.0357054,0.358424,-0.0536887,0.480771,0.0411728,0.359041,-0.0609416,0.481242,0.0470841,0.359903,-0.0685239,0.481943,0.0534831,0.360932,-0.0764883,0.482741,0.0603795,0.362196,-0.0848364,0.483688,0.0678028,0.363847,-0.0935002,0.484947,0.0758086,0.365972,-0.102471,0.486588,0.0844173,0.368741,-0.111751,0.488787,0.0937199,0.372146,-0.121334,0.491405,0.103732,0.377114,-0.131147,0.495604,0.114608,0.38226,-0.141213,0.499436,0.126345,0.389609,-0.151632,0.505334,0.139116,0.397925,-0.162073,0.51168,0.152995,0.407824,-0.172819,0.518876,0.168071,0.420014,-0.183929,0.527639,0.184495,0.434266,-0.195032,0.537588,0.20232,0.447352,-0.205792,0.544379,0.221189,0.463726,-0.216704,0.553422,0.241616,0.481406,-0.227531,0.562074,0.263298,0.498707,-0.238017,0.568227,0.286116,0.518039,-0.247936,0.574473,0.3101,0.538277,-0.257437,0.579191,0.335401,0.561166,-0.266829,0.584807,0.362246,0.583189,-0.275329,0.586476,0.390609,0.606024,-0.28234,0.585578,0.420998,0.632419,-0.287924,0.584496,0.454357,0.656128,-0.291972,0.577766,0.488233,0.679953,-0.29456,0.56875,0.523248,0.704654,-0.295816,0.558388,0.559168,0.729016,-0.295157,0.544826,0.595326,0.752062,-0.292779,0.528273,0.631864,0.773138,-0.288681,0.508482,0.667793,0.794869,-0.283358,0.487341,0.704035,0.815101,-0.27608,0.46354,0.739925,0.834212,-0.26767,0.438672,0.775539,0.852368,-0.257397,0.411239,0.810895,0.870207,-0.245689,0.3829,0.846472,0.884063,-0.231452,0.351496,0.881788,0.898284,-0.215561,0.31895,0.917438,0.912964,-0.198208,0.287367,0.952422,0.924666,-0.180426,0.254487,0.987551,0.934429,-0.161525,0.222226,1.02142,0.943485,-0.141197,0.191143,1.05218,0.9521,-0.120085,0.161112,1.07937,0.957876,-0.0975881,0.130982,1.10403,0.966943,-0.0726842,0.0990553,1.12616,0.978313,-0.0483705,0.0662818,1.14619,0.990048,-0.0239072,0.0329243,1.16413,0.999984,461885e-9,-772859e-10,1.18099,0.321287,-935049e-11,0.455413,659662e-11,0.332595,-237513e-9,0.471437,167562e-9,0.332729,-949964e-9,0.471618,670192e-9,0.332305,-213618e-8,0.471028,150712e-8,0.332326,-379765e-8,0.471055,267959e-8,0.332344,-593353e-8,0.471072,418751e-8,0.332356,-854349e-8,0.471077,603172e-8,0.332403,-0.0116268,0.471121,821362e-8,0.332461,-0.0151824,0.47117,0.0107357,0.332552,-0.0192088,0.471251,0.0136014,0.332657,-0.0237024,0.47133,0.0168152,0.332835,-0.0286615,0.471487,0.0203853,0.333083,-0.0340765,0.471708,0.0243212,0.333547,-0.0398563,0.47219,0.0286518,0.333989,-0.0460916,0.472587,0.0333763,0.334532,-0.0527897,0.473054,0.0385084,0.335167,-0.0599284,0.473568,0.0440638,0.33608,-0.0673514,0.474362,0.0500962,0.337146,-0.0752237,0.475231,0.0566022,0.338462,-0.083418,0.476282,0.0636272,0.34014,-0.0919382,0.477615,0.0712153,0.342341,-0.100741,0.479404,0.079417,0.345088,-0.109905,0.481618,0.0882631,0.349049,-0.119369,0.485081,0.0978851,0.353939,-0.129033,0.489317,0.108336,0.359893,-0.139038,0.494309,0.119698,0.366945,-0.149411,0.499983,0.132024,0.375814,-0.159843,0.507185,0.145558,0.387112,-0.170664,0.516392,0.160433,0.40023,-0.181897,0.526519,0.176648,0.412555,-0.192785,0.53423,0.193922,0.427023,-0.203663,0.542741,0.212662,0.443685,-0.214695,0.552066,0.232944,0.461499,-0.225561,0.560762,0.254495,0.480975,-0.236257,0.569421,0.277531,0.501,-0.24639,0.576101,0.301724,0.521691,-0.256101,0.581493,0.327112,0.543478,-0.265289,0.585221,0.353917,0.566094,-0.273938,0.587614,0.381941,0.589578,-0.281679,0.587991,0.41172,0.614583,-0.287655,0.585928,0.444148,0.641813,-0.292228,0.582092,0.478617,0.666189,-0.295172,0.57398,0.51397,0.690475,-0.29648,0.561676,0.550118,0.715543,-0.296203,0.548758,0.586933,0.740405,-0.293999,0.532792,0.62384,0.762183,-0.28998,0.512735,0.660723,0.786069,-0.28478,0.492402,0.69807,0.806812,-0.277568,0.469058,0.734422,0.826987,-0.268951,0.443017,0.770946,0.844588,-0.259049,0.415501,0.80699,0.863725,-0.2471,0.387328,0.842107,0.879137,-0.234157,0.356108,0.878078,0.894634,-0.218719,0.324315,0.914058,0.909162,-0.201293,0.291813,0.949922,0.92072,-0.18267,0.258474,0.985337,0.93158,-0.163212,0.225593,1.0205,0.941238,-0.142771,0.193986,1.05273,0.949293,-0.120956,0.163392,1.08075,0.956226,-0.0985743,0.132934,1.10559,0.96546,-0.075118,0.101255,1.12823,0.977403,-0.0497921,0.0675441,1.149,0.989648,-0.0241574,0.0334681,1.16765,1.00001,5762e-7,-184807e-9,1.18519,0.303474,-916603e-11,0.4542,61243e-10,0.308894,-232869e-9,0.462306,155592e-9,0.309426,-931661e-9,0.463093,622499e-9,0.308643,-20949e-7,0.461933,139979e-8,0.308651,-37242e-7,0.461941,248874e-8,0.308662,-581873e-8,0.46195,388933e-8,0.308687,-837818e-8,0.461974,560247e-8,0.308728,-0.0114016,0.462011,762948e-8,0.308789,-0.0148884,0.462067,997326e-8,0.308882,-0.0188369,0.462151,0.0126375,0.309007,-0.0232436,0.462263,0.0156271,0.30918,-0.0281054,0.462417,0.0189498,0.309442,-0.0334065,0.462667,0.0226167,0.309901,-0.0390589,0.463162,0.0266614,0.310331,-0.0452042,0.463555,0.0310715,0.310858,-0.0517735,0.464019,0.0358698,0.311576,-0.0587359,0.464669,0.0410848,0.312436,-0.0660383,0.465406,0.0467453,0.313526,-0.0737266,0.466339,0.0528718,0.314903,-0.0817574,0.467504,0.0595039,0.316814,-0.090167,0.469226,0.0666888,0.318965,-0.0987555,0.470981,0.0744658,0.322077,-0.107792,0.473814,0.082912,0.325947,-0.117098,0.477241,0.0920846,0.331008,-0.126602,0.48184,0.102137,0.337893,-0.136619,0.488334,0.113135,0.345106,-0.146838,0.494415,0.12511,0.355111,-0.157357,0.503275,0.138356,0.365095,-0.167955,0.510966,0.152686,0.378344,-0.179157,0.521508,0.16856,0.391599,-0.190143,0.530455,0.18561,0.407786,-0.20123,0.541275,0.204308,0.425294,-0.212456,0.551784,0.224623,0.444021,-0.223568,0.561493,0.246172,0.463418,-0.234154,0.569886,0.268979,0.484077,-0.244546,0.577116,0.293411,0.505513,-0.254301,0.582914,0.318936,0.527672,-0.263564,0.587208,0.345856,0.550565,-0.272332,0.589277,0.374054,0.573656,-0.280011,0.588426,0.403276,0.59827,-0.286924,0.587504,0.43474,0.624731,-0.291994,0.583401,0.468767,0.652396,-0.295159,0.576997,0.504411,0.67732,-0.296954,0.565863,0.54114,0.703147,-0.296877,0.552316,0.57816,0.728715,-0.295147,0.536773,0.616124,0.752448,-0.291275,0.51771,0.653885,0.775169,-0.285905,0.496087,0.691537,0.799307,-0.279064,0.474232,0.729251,0.819482,-0.270294,0.447676,0.766267,0.837659,-0.260032,0.419656,0.802616,0.856903,-0.248497,0.391328,0.838583,0.873325,-0.235252,0.360285,0.874711,0.889788,-0.221126,0.329215,0.91077,0.904486,-0.204304,0.296392,0.94653,0.917711,-0.185562,0.262159,0.983828,0.928969,-0.165635,0.229142,1.01955,0.939707,-0.14442,0.19673,1.05317,0.948167,-0.122147,0.165095,1.0823,0.955222,-0.099098,0.13451,1.10791,0.964401,-0.0755332,0.102476,1.1312,0.976605,-0.0513817,0.0689667,1.15218,0.989085,-0.0258499,0.034506,1.17129,0.999908,617773e-9,-271268e-9,1.18961,0.285803,-905752e-11,0.452348,572272e-11,0.284689,-22732e-8,0.450581,143626e-9,0.285263,-910214e-9,0.451482,575099e-9,0.285302,-204784e-8,0.451553,129395e-8,0.285318,-364057e-8,0.451574,23006e-7,0.28533,-568813e-8,0.451585,359547e-8,0.285361,-819001e-8,0.451618,517934e-8,0.285397,-0.0111458,0.45165,7054e-6,0.285447,-0.0145536,0.451688,922167e-8,0.285527,-0.0184127,0.451758,0.0116869,0.285688,-0.0227207,0.451929,0.0144555,0.28584,-0.0274712,0.452055,0.0175341,0.286136,-0.0326278,0.452369,0.0209406,0.286574,-0.0381792,0.452853,0.0246965,0.287012,-0.0441879,0.453272,0.0287996,0.287542,-0.0506096,0.453752,0.033268,0.288299,-0.0573634,0.454488,0.0381504,0.289186,-0.0645458,0.455294,0.0434447,0.290302,-0.0720405,0.456301,0.0491973,0.291776,-0.0799046,0.457648,0.0554453,0.29372,-0.088117,0.459483,0.0622311,0.296052,-0.0965328,0.461571,0.0695992,0.299563,-0.105409,0.465085,0.077658,0.30335,-0.114553,0.468506,0.0864176,0.309167,-0.123917,0.474423,0.0961078,0.31529,-0.13381,0.47995,0.106643,0.324163,-0.144021,0.488592,0.118322,0.333272,-0.154382,0.496461,0.131133,0.344224,-0.165015,0.50562,0.145208,0.357733,-0.176168,0.516719,0.16073,0.373046,-0.187468,0.528513,0.177807,0.38788,-0.198488,0.537713,0.196072,0.405133,-0.209545,0.547999,0.21605,0.423845,-0.220724,0.55759,0.237484,0.443777,-0.231518,0.566246,0.26039,0.464824,-0.242035,0.574326,0.284835,0.486635,-0.251898,0.58037,0.310518,0.51012,-0.261304,0.58568,0.337678,0.535301,-0.270384,0.590197,0.366242,0.559193,-0.27841,0.590569,0.395873,0.583544,-0.285325,0.588161,0.426857,0.608834,-0.291113,0.584249,0.459477,0.635753,-0.294882,0.57763,0.494734,0.664367,-0.297088,0.569479,0.532023,0.689688,-0.297364,0.555064,0.569629,0.715732,-0.295949,0.539522,0.608124,0.741307,-0.292259,0.521613,0.646231,0.764949,-0.287063,0.49969,0.684938,0.788599,-0.28012,0.476747,0.723548,0.81048,-0.27153,0.45116,0.761135,0.831372,-0.261289,0.424101,0.798916,0.850092,-0.249559,0.39443,0.835952,0.867777,-0.236348,0.363849,0.871606,0.884632,-0.221569,0.332477,0.907843,0.90047,-0.20618,0.300667,0.944187,0.914524,-0.188771,0.266552,0.981371,0.926892,-0.168362,0.232349,1.01841,0.937951,-0.146761,0.199359,1.05308,0.947236,-0.123813,0.1675,1.0839,0.954367,-0.099984,0.136166,1.11047,0.963907,-0.0759278,0.103808,1.13414,0.976218,-0.0511367,0.0697061,1.15575,0.988772,-0.0267415,0.0352529,1.17531,0.999888,-520778e-9,289926e-9,1.19389,0.263546,-883274e-11,0.441896,526783e-11,0.262352,-221849e-9,0.439889,132311e-9,0.262325,-886683e-9,0.439848,528824e-9,0.26228,-199476e-8,0.439765,118975e-8,0.262372,-354671e-8,0.439922,211568e-8,0.26239,-554141e-8,0.439941,330652e-8,0.262412,-797888e-8,0.439961,476346e-8,0.262453,-0.0108584,0.440002,648818e-8,0.262528,-0.0141788,0.440085,84835e-7,0.262615,-0.017938,0.440166,0.0107533,0.262744,-0.0221346,0.440291,0.0133044,0.262939,-0.026762,0.440493,0.0161445,0.263277,-0.0317573,0.440889,0.0192974,0.26368,-0.0371832,0.441338,0.0227699,0.264106,-0.0430371,0.441753,0.0265698,0.264624,-0.0493035,0.442227,0.0307178,0.265378,-0.0558669,0.442985,0.0352616,0.266253,-0.0628718,0.443795,0.0401968,0.267478,-0.0701569,0.445008,0.04559,0.269062,-0.077845,0.446599,0.0514539,0.270926,-0.0857941,0.448349,0.0578382,0.273693,-0.0940773,0.451221,0.0648363,0.276746,-0.102704,0.454097,0.0724389,0.281693,-0.111735,0.459517,0.0808744,0.287335,-0.121004,0.46531,0.0901551,0.29448,-0.130734,0.472605,0.100371,0.30257,-0.140777,0.480251,0.111644,0.312465,-0.15111,0.489444,0.124111,0.324856,-0.16189,0.500919,0.137979,0.33774,-0.172946,0.511317,0.153163,0.35255,-0.184152,0.522684,0.169817,0.367786,-0.19522,0.53248,0.187886,0.385474,-0.20632,0.543326,0.207634,0.404976,-0.217744,0.554109,0.229165,0.425203,-0.228691,0.563395,0.252068,0.446704,-0.239299,0.571565,0.276471,0.468951,-0.249348,0.577935,0.302323,0.493487,-0.258933,0.584309,0.329882,0.517861,-0.268009,0.58773,0.358525,0.543309,-0.276238,0.589612,0.388585,0.569704,-0.28356,0.589294,0.419787,0.594871,-0.289497,0.585137,0.452114,0.622555,-0.294452,0.580356,0.486466,0.651167,-0.296918,0.57185,0.523079,0.677332,-0.297647,0.558428,0.5611,0.703718,-0.296321,0.542232,0.599592,0.730262,-0.293339,0.524541,0.639138,0.754304,-0.288036,0.502691,0.677978,0.778051,-0.281018,0.479212,0.716537,0.801557,-0.272414,0.454071,0.75586,0.822559,-0.262419,0.425952,0.794477,0.843051,-0.250702,0.397313,0.832664,0.86232,-0.237264,0.366534,0.869876,0.879044,-0.222716,0.334816,0.906973,0.896362,-0.206827,0.303143,0.943558,0.910342,-0.189659,0.269699,0.979759,0.924119,-0.171108,0.236411,1.01718,0.935374,-0.149579,0.202224,1.05289,0.944295,-0.126295,0.16989,1.08496,0.952227,-0.101511,0.138089,1.11256,0.962041,-0.0766392,0.105053,1.1375,0.97528,-0.0511967,0.070329,1.15983,0.988476,-0.025463,0.0351268,1.17987,0.999962,286808e-10,145564e-10,1.19901,0.227089,-841413e-11,0.404216,472707e-11,0.239725,-215083e-9,0.426708,120833e-9,0.239904,-860718e-9,0.427028,483555e-9,0.239911,-193661e-8,0.427039,108806e-8,0.239914,-344276e-8,0.42704,193457e-8,0.239933,-537907e-8,0.427064,302363e-8,0.239944,-774482e-8,0.427065,435604e-8,0.239993,-0.01054,0.427122,593398e-8,0.240052,-0.0137626,0.427179,775987e-8,0.240148,-0.0174115,0.427279,983854e-8,0.240278,-0.021484,0.42741,0.0121763,0.240472,-0.0259729,0.427618,0.0147827,0.240839,-0.0308131,0.428086,0.0176837,0.241201,-0.0360893,0.428482,0.0208775,0.241626,-0.0417723,0.428907,0.0243821,0.242207,-0.0478337,0.42952,0.0282228,0.24298,-0.0542199,0.430332,0.0324333,0.243881,-0.0610015,0.431222,0.0370252,0.245123,-0.0680874,0.432512,0.0420535,0.24667,-0.0755482,0.434088,0.0475414,0.248779,-0.0832873,0.436323,0.0535542,0.251665,-0.0913546,0.439509,0.0601716,0.255305,-0.0998489,0.443478,0.0674282,0.260049,-0.108576,0.448713,0.0754673,0.266192,-0.117754,0.455524,0.084339,0.273158,-0.127294,0.4627,0.0941683,0.282131,-0.137311,0.472068,0.10515,0.293332,-0.147736,0.483565,0.117402,0.304667,-0.158357,0.493702,0.130824,0.317785,-0.169274,0.504708,0.145724,0.333245,-0.180595,0.517107,0.16215,0.349843,-0.191892,0.528849,0.180149,0.367944,-0.203168,0.540301,0.199746,0.387579,-0.214443,0.551514,0.221047,0.408247,-0.225624,0.560906,0.243981,0.43014,-0.236422,0.56959,0.268513,0.452669,-0.24654,0.576098,0.294409,0.476196,-0.256157,0.580925,0.322002,0.501157,-0.265289,0.584839,0.351052,0.527632,-0.273671,0.587614,0.3812,0.555754,-0.281254,0.589119,0.412994,0.581682,-0.287448,0.585204,0.445498,0.608196,-0.292614,0.579006,0.479505,0.635661,-0.296068,0.571297,0.514643,0.664999,-0.297395,0.560855,0.552213,0.691039,-0.296645,0.544525,0.591365,0.7179,-0.293785,0.526535,0.630883,0.744059,-0.289089,0.50545,0.670932,0.76863,-0.282239,0.482514,0.710904,0.793273,-0.273688,0.457246,0.750259,0.814731,-0.26328,0.428872,0.78948,0.835603,-0.251526,0.399384,0.828597,0.85489,-0.238339,0.368811,0.866892,0.872828,-0.223607,0.336617,0.90563,0.889462,-0.207538,0.303997,0.943538,0.904929,-0.190297,0.270812,0.980591,0.919101,-0.172034,0.237453,1.01935,0.930536,-0.152058,0.204431,1.05498,0.941223,-0.129515,0.172495,1.08717,0.94982,-0.104263,0.140175,1.11551,0.960592,-0.0781944,0.106465,1.14098,0.974629,-0.051688,0.0711592,1.16418,0.98811,-0.0253929,0.0354432,1.18465,1.00004,804378e-9,-330876e-9,1.20462,0.214668,-821282e-11,0.406619,433582e-11,0.218053,-208144e-9,0.413025,109887e-9,0.217987,-832212e-9,0.412901,439362e-9,0.217971,-187246e-8,0.412876,988623e-9,0.217968,-332855e-8,0.41286,175772e-8,0.217985,-520055e-8,0.412882,274729e-8,0.218014,-748814e-8,0.412916,395842e-8,0.218054,-0.0101901,0.412957,539274e-8,0.218106,-0.0133057,0.413005,705348e-8,0.218217,-0.0168342,0.413139,894581e-8,0.218338,-0.0207707,0.413258,0.0110754,0.21855,-0.0251001,0.413509,0.0134551,0.218913,-0.0297861,0.413992,0.0161081,0.219265,-0.0348956,0.414383,0.0190307,0.219696,-0.0403909,0.414839,0.0222458,0.220329,-0.0462003,0.415567,0.025792,0.220989,-0.0524208,0.41621,0.0296637,0.222027,-0.058948,0.417385,0.0339323,0.223301,-0.0658208,0.418779,0.0386055,0.224988,-0.0730347,0.420665,0.0437355,0.227211,-0.0805274,0.423198,0.0493844,0.230131,-0.088395,0.426566,0.0556135,0.233908,-0.0966208,0.43091,0.0624829,0.239092,-0.105223,0.437148,0.0701636,0.245315,-0.11424,0.444302,0.0786949,0.253166,-0.12368,0.453262,0.0882382,0.262374,-0.133569,0.463211,0.0988682,0.273145,-0.143836,0.474271,0.110727,0.285512,-0.154577,0.4863,0.123945,0.299512,-0.165501,0.498817,0.138581,0.314287,-0.176698,0.510341,0.154676,0.331083,-0.188066,0.522583,0.172459,0.349615,-0.199597,0.534879,0.191979,0.369318,-0.210843,0.546083,0.21309,0.390377,-0.222068,0.5562,0.235998,0.412411,-0.233059,0.564704,0.260518,0.435715,-0.24357,0.572314,0.286795,0.461196,-0.253356,0.579395,0.314559,0.485587,-0.262362,0.581985,0.343581,0.511908,-0.270895,0.584347,0.374367,0.539798,-0.278452,0.58505,0.406015,0.567974,-0.284877,0.583344,0.439168,0.594303,-0.290124,0.577348,0.473005,0.622951,-0.294183,0.570751,0.508534,0.652404,-0.296389,0.561541,0.544764,0.679291,-0.296605,0.546426,0.582927,0.706437,-0.294095,0.528599,0.622681,0.734485,-0.28978,0.508676,0.663567,0.758841,-0.283363,0.484768,0.704092,0.78537,-0.275015,0.460434,0.745101,0.807315,-0.264689,0.432166,0.784712,0.8271,-0.252597,0.401807,0.824241,0.849191,-0.239154,0.371458,0.863803,0.867046,-0.224451,0.338873,0.903063,0.8852,-0.208342,0.306175,0.942763,0.901771,-0.190684,0.272759,0.981559,0.915958,-0.172105,0.239306,1.02048,0.928046,-0.152214,0.206071,1.05765,0.939961,-0.130247,0.17367,1.08999,0.948711,-0.10672,0.142201,1.11829,0.959305,-0.0808688,0.108454,1.14467,0.973009,-0.0539145,0.0728109,1.16839,0.987631,-0.0262947,0.0360625,1.19004,0.999978,132758e-8,-559424e-9,1.21058,0.193925,-793421e-11,0.391974,392537e-11,0.196746,-200315e-9,0.397675,991033e-10,0.19667,-801099e-9,0.397521,396342e-9,0.196633,-180246e-8,0.397445,891829e-9,0.196654,-320443e-8,0.397482,158582e-8,0.196659,-500647e-8,0.39748,247867e-8,0.196683,-72086e-7,0.397506,357167e-8,0.196728,-981001e-8,0.397562,486675e-8,0.196792,-0.0128096,0.397633,636707e-8,0.19689,-0.0162055,0.397746,807752e-8,0.197017,-0.0199943,0.397884,0.0100052,0.19729,-0.024139,0.39827,0.0121691,0.197583,-0.0286671,0.398639,0.0145755,0.197927,-0.0335858,0.399034,0.0172355,0.198383,-0.0388806,0.399554,0.0201718,0.199002,-0.0444736,0.400289,0.0234194,0.199739,-0.0504583,0.401111,0.026984,0.200784,-0.056729,0.402349,0.0309217,0.202075,-0.0633643,0.403841,0.0352496,0.203898,-0.0703247,0.406076,0.0400313,0.206199,-0.0775565,0.408841,0.0453282,0.209252,-0.085184,0.41259,0.0511794,0.213638,-0.0931994,0.418288,0.0577459,0.21881,-0.101617,0.424681,0.0650508,0.225642,-0.11052,0.433429,0.0732759,0.233717,-0.119772,0.442897,0.0824683,0.242823,-0.129505,0.452888,0.0927484,0.254772,-0.139906,0.466407,0.104417,0.266603,-0.150402,0.477413,0.117211,0.28073,-0.161395,0.490519,0.131598,0.295399,-0.172465,0.50201,0.147407,0.312705,-0.183982,0.515311,0.165031,0.331335,-0.195532,0.52786,0.184336,0.351037,-0.206971,0.5392,0.205361,0.372175,-0.218117,0.54941,0.228043,0.394548,-0.229327,0.558642,0.25267,0.419598,-0.240052,0.567861,0.279071,0.443922,-0.249937,0.573332,0.306882,0.471495,-0.259407,0.58013,0.33661,0.496769,-0.267749,0.580564,0.367328,0.524951,-0.275524,0.581696,0.399753,0.55318,-0.282148,0.579885,0.433134,0.581577,-0.287533,0.575471,0.467534,0.609231,-0.291612,0.567445,0.502943,0.637478,-0.293911,0.557657,0.53871,0.667795,-0.295096,0.546535,0.576568,0.694272,-0.294073,0.529561,0.614929,0.722937,-0.290386,0.510561,0.655909,0.749682,-0.284481,0.487846,0.697663,0.774754,-0.276188,0.462487,0.738515,0.799301,-0.266215,0.43481,0.779802,0.820762,-0.254116,0.404879,0.820045,0.843231,-0.240393,0.374559,0.860294,0.861857,-0.225503,0.341582,0.900965,0.880815,-0.209382,0.308778,0.941727,0.89766,-0.19155,0.275232,0.980916,0.912926,-0.172346,0.240938,1.02162,0.926391,-0.151799,0.207223,1.0597,0.938429,-0.129968,0.17484,1.09291,0.947834,-0.10651,0.142984,1.12248,0.958432,-0.0824098,0.109902,1.149,0.972402,-0.0565242,0.0744454,1.1733,0.987191,-0.028427,0.0373794,1.19538,0.999975,385685e-10,-4203e-8,1.21676,0.178114,-766075e-11,0.385418,354027e-11,0.176074,-191966e-9,0.381002,887135e-10,0.17601,-767549e-9,0.380861,354715e-9,0.17598,-172696e-8,0.380798,798168e-9,0.175994,-307012e-8,0.380824,141928e-8,0.176017,-479684e-8,0.380858,221859e-8,0.176019,-690648e-8,0.380839,319714e-8,0.176072,-939888e-8,0.380913,43572e-7,0.176131,-0.0122726,0.380979,5702e-6,0.176239,-0.0155264,0.38112,723689e-8,0.176371,-0.0191551,0.381272,896907e-8,0.176638,-0.023117,0.381669,0.0109194,0.176912,-0.0274633,0.382015,0.0130903,0.177279,-0.032173,0.382476,0.0154949,0.17774,-0.0372219,0.383041,0.0181669,0.178344,-0.0426132,0.38378,0.0211209,0.179153,-0.0483309,0.384773,0.0243899,0.180197,-0.0543447,0.386076,0.0280062,0.181581,-0.0607122,0.387809,0.032004,0.18344,-0.0673855,0.390205,0.036453,0.186139,-0.0743989,0.393944,0.0414162,0.189432,-0.0817731,0.39832,0.0469394,0.193795,-0.0895464,0.404188,0.0531442,0.199641,-0.0978264,0.4121,0.0601374,0.206679,-0.106499,0.421425,0.0680078,0.214865,-0.115654,0.431504,0.076919,0.224406,-0.125268,0.442526,0.0868835,0.235876,-0.135475,0.455465,0.0981875,0.248335,-0.146023,0.4681,0.110759,0.262868,-0.157016,0.482069,0.124885,0.278962,-0.168245,0.496182,0.140645,0.295082,-0.17958,0.507401,0.157838,0.313738,-0.191227,0.520252,0.17695,0.333573,-0.202718,0.531708,0.197817,0.356433,-0.214424,0.544509,0.220785,0.378853,-0.225492,0.55373,0.245306,0.402717,-0.236236,0.561348,0.271593,0.428375,-0.246568,0.568538,0.299776,0.454724,-0.255941,0.573462,0.329433,0.482291,-0.264511,0.576356,0.360598,0.509706,-0.272129,0.576446,0.393204,0.538805,-0.278979,0.575298,0.427227,0.568919,-0.284528,0.572154,0.462157,0.596804,-0.288801,0.564691,0.497997,0.625987,-0.291334,0.555134,0.534467,0.656414,-0.292722,0.545051,0.571736,0.683916,-0.292185,0.528813,0.610158,0.711809,-0.290043,0.51106,0.649061,0.739547,-0.285246,0.490103,0.690081,0.766914,-0.277647,0.465523,0.732554,0.791375,-0.267603,0.437718,0.773982,0.814772,-0.256109,0.40882,0.81609,0.836691,-0.242281,0.377823,0.856849,0.856984,-0.227155,0.34496,0.898363,0.876332,-0.210395,0.311335,0.939471,0.894988,-0.192612,0.277703,0.980799,0.911113,-0.173236,0.243019,1.02215,0.924092,-0.152258,0.209037,1.06139,0.936828,-0.129575,0.175909,1.09635,0.946869,-0.10594,0.143852,1.12707,0.958284,-0.081318,0.110289,1.15419,0.972325,-0.0556133,0.0747232,1.17909,0.986878,-0.0297899,0.0383149,1.20163,0.999936,-197169e-8,912402e-9,1.22338,0.151174,-720365e-11,0.351531,309789e-11,0.155594,-18279e-8,0.361806,78608e-9,0.156099,-731569e-9,0.362982,314615e-9,0.156053,-164578e-8,0.362869,707845e-9,0.156093,-29261e-7,0.362961,125884e-8,0.156099,-457155e-8,0.362959,196783e-8,0.15612,-658224e-8,0.362982,283622e-8,0.156168,-895774e-8,0.363048,386625e-8,0.156221,-0.0116962,0.363101,506109e-8,0.156324,-0.0147973,0.363241,642675e-8,0.156476,-0.0182503,0.363448,797175e-8,0.156731,-0.0220266,0.36384,971484e-8,0.156994,-0.026176,0.364179,0.0116575,0.157341,-0.0306701,0.36462,0.0138207,0.157867,-0.0354591,0.365364,0.0162356,0.15846,-0.0406141,0.366111,0.0189092,0.159308,-0.0460519,0.367248,0.021885,0.160426,-0.0518096,0.368767,0.0252004,0.161877,-0.0578906,0.370745,0.0288825,0.163995,-0.0642812,0.373831,0.0330139,0.16655,-0.0710067,0.377366,0.0376283,0.170237,-0.0781522,0.382799,0.0428493,0.175096,-0.0857172,0.389915,0.0487324,0.181069,-0.0938025,0.398487,0.0554214,0.188487,-0.102363,0.408799,0.0630189,0.197029,-0.111343,0.419991,0.071634,0.206684,-0.120812,0.431455,0.0812797,0.218698,-0.131033,0.445746,0.0923651,0.230726,-0.141373,0.457471,0.104545,0.245516,-0.152387,0.472388,0.118449,0.261551,-0.163628,0.486671,0.133923,0.277437,-0.174814,0.49762,0.150849,0.296662,-0.186713,0.51162,0.169924,0.31795,-0.198513,0.525435,0.190848,0.339422,-0.210119,0.536267,0.213504,0.362143,-0.221354,0.545982,0.237947,0.387198,-0.23224,0.555364,0.264427,0.412349,-0.24257,0.561489,0.292519,0.439274,-0.252284,0.566903,0.322561,0.466779,-0.261023,0.569614,0.353952,0.496011,-0.26899,0.571589,0.387278,0.524964,-0.275498,0.570325,0.421356,0.556518,-0.281449,0.568792,0.457314,0.584363,-0.285526,0.560268,0.493199,0.614214,-0.28844,0.55205,0.530276,0.645684,-0.289777,0.541906,0.56855,0.673446,-0.289722,0.526464,0.606927,0.701924,-0.287792,0.509872,0.645945,0.73037,-0.284315,0.490649,0.685564,0.757405,-0.278804,0.467964,0.726511,0.784025,-0.269543,0.441468,0.768601,0.808255,-0.258117,0.41216,0.811321,0.830739,-0.244728,0.380606,0.853496,0.851914,-0.229428,0.348111,0.895374,0.872586,-0.212508,0.314732,0.937674,0.891581,-0.194025,0.280338,0.979869,0.907641,-0.174711,0.245203,1.02253,0.922233,-0.153509,0.21077,1.06371,0.935878,-0.130418,0.177399,1.09972,0.946338,-0.105558,0.144507,1.13124,0.957265,-0.080059,0.110508,1.15973,0.971668,-0.0539766,0.0742311,1.18515,0.9866,-0.0277101,0.0375224,1.20858,1.00021,-515531e-9,135226e-9,1.23135,0.137468,-686011e-11,0.345041,273315e-11,0.13703,-173378e-9,0.343936,690761e-10,0.136986,-693048e-9,0.34383,276126e-9,0.136964,-155931e-8,0.343761,621337e-9,0.137003,-277211e-8,0.343863,110494e-8,0.137012,-433103e-8,0.343868,172744e-8,0.137043,-623606e-8,0.343916,249022e-8,0.13709,-84868e-7,0.343986,339559e-8,0.137145,-0.0110814,0.344045,444687e-8,0.137242,-0.0140187,0.344177,565007e-8,0.137431,-0.0172713,0.344491,701868e-8,0.137644,-0.0208605,0.344805,856042e-8,0.13791,-0.024792,0.345172,0.0102863,0.138295,-0.0290461,0.345734,0.0122185,0.138764,-0.0335957,0.346371,0.0143771,0.139415,-0.038467,0.347298,0.0167894,0.140272,-0.0436176,0.348527,0.0194895,0.141457,-0.0491016,0.350276,0.0225043,0.14303,-0.0548764,0.352646,0.0258962,0.145289,-0.0610096,0.356206,0.0297168,0.148502,-0.0674777,0.361488,0.0340562,0.152188,-0.074345,0.367103,0.0389534,0.157359,-0.0817442,0.375247,0.0445541,0.16379,-0.0896334,0.385064,0.0509535,0.171376,-0.098005,0.396082,0.0582611,0.179901,-0.106817,0.407418,0.06654,0.189892,-0.116239,0.420031,0.075994,0.201838,-0.12627,0.434321,0.0867239,0.214311,-0.136701,0.447631,0.0987517,0.228902,-0.147616,0.462046,0.112353,0.245107,-0.158871,0.476942,0.127605,0.262292,-0.170261,0.490285,0.144469,0.281215,-0.182017,0.503783,0.163282,0.301058,-0.193729,0.515505,0.183873,0.322752,-0.205512,0.52682,0.206466,0.347547,-0.217214,0.539473,0.231194,0.370969,-0.227966,0.546625,0.257288,0.397533,-0.238555,0.55472,0.285789,0.42398,-0.248278,0.559468,0.315746,0.452928,-0.257422,0.564095,0.347724,0.482121,-0.265306,0.565426,0.380922,0.510438,-0.272043,0.563205,0.415639,0.541188,-0.277614,0.561087,0.451702,0.571667,-0.281927,0.554922,0.48845,0.602432,-0.285015,0.546838,0.526442,0.634126,-0.286512,0.537415,0.564896,0.662816,-0.286388,0.522906,0.604037,0.692411,-0.284734,0.507003,0.643795,0.720946,-0.281297,0.488398,0.68298,0.748293,-0.276262,0.466353,0.723466,0.776931,-0.269978,0.443573,0.764565,0.801065,-0.260305,0.415279,0.805838,0.825843,-0.247426,0.384773,0.849985,0.84807,-0.232437,0.352555,0.893174,0.869122,-0.215806,0.318642,0.936564,0.888963,-0.197307,0.28381,0.980253,0.905547,-0.177203,0.247888,1.02463,0.918554,-0.155542,0.212904,1.06714,0.931395,-0.131948,0.1787,1.10451,0.941749,-0.106723,0.145902,1.13694,0.954551,-0.0804939,0.111193,1.1666,0.970279,-0.0534239,0.0744697,1.19249,0.986117,-0.0257452,0.0368788,1.21665,0.999938,190634e-8,-10291e-7,1.23981,0.118493,-647439e-11,0.32272,23772e-10,0.118765,-163023e-9,0.323456,598573e-10,0.118772,-65212e-8,0.323477,239447e-9,0.118843,-146741e-8,0.323657,538881e-9,0.118804,-260846e-8,0.323553,95826e-8,0.118826,-407576e-8,0.323595,149845e-8,0.118846,-586826e-8,0.323617,216047e-8,0.118886,-798578e-8,0.32367,294679e-8,0.118947,-0.0104273,0.323753,386124e-8,0.119055,-0.0131909,0.323922,490999e-8,0.119241,-0.0162444,0.324251,610804e-8,0.11944,-0.0196339,0.324544,745805e-8,0.119739,-0.0233378,0.325026,897805e-8,0.12011,-0.0273179,0.325586,0.0106895,0.120571,-0.0316143,0.326231,0.0126073,0.12124,-0.0361939,0.327264,0.0147654,0.122162,-0.0410511,0.328733,0.0172001,0.123378,-0.0462233,0.330659,0.0199375,0.125183,-0.0517109,0.333754,0.0230498,0.127832,-0.0575652,0.338507,0.026597,0.130909,-0.0637441,0.343666,0.0306345,0.135221,-0.0704302,0.351063,0.035273,0.14082,-0.0776364,0.360604,0.0406137,0.146781,-0.0852293,0.369638,0.0466788,0.155121,-0.0935351,0.3827,0.0537628,0.16398,-0.102234,0.39522,0.0617985,0.173926,-0.111465,0.40793,0.07097,0.185137,-0.121296,0.42105,0.0813426,0.19826,-0.13169,0.435735,0.0931596,0.212938,-0.142614,0.450932,0.106547,0.229046,-0.153884,0.465726,0.121575,0.246246,-0.165382,0.479461,0.138286,0.264637,-0.176806,0.492106,0.15666,0.284959,-0.188793,0.504774,0.17728,0.308157,-0.200763,0.518805,0.19988,0.330951,-0.21239,0.528231,0.224293,0.3549,-0.223521,0.536376,0.250541,0.381502,-0.234169,0.544846,0.278902,0.409529,-0.244077,0.551717,0.309227,0.437523,-0.253363,0.55517,0.341426,0.467624,-0.261659,0.557772,0.37518,0.497268,-0.268498,0.556442,0.41007,0.528294,-0.274018,0.553915,0.446445,0.559053,-0.278169,0.549153,0.483779,0.589329,-0.281229,0.539878,0.522249,0.622503,-0.282902,0.53162,0.561754,0.652382,-0.282815,0.518119,0.601544,0.681847,-0.281247,0.502187,0.641574,0.712285,-0.277986,0.484824,0.682633,0.740094,-0.273017,0.463483,0.723426,0.768478,-0.266692,0.441299,0.763747,0.794556,-0.258358,0.415238,0.805565,0.819408,-0.248807,0.386912,0.847254,0.843411,-0.236214,0.356165,0.891091,0.862397,-0.219794,0.320562,0.936174,0.883113,-0.201768,0.285322,0.982562,0.90023,-0.181672,0.249713,1.02862,0.915192,-0.159279,0.214546,1.07163,0.928458,-0.134725,0.180285,1.10995,0.94069,-0.10913,0.147119,1.14354,0.953409,-0.0821315,0.112492,1.17372,0.969537,-0.0542677,0.0752014,1.20043,0.985612,-0.0259096,0.0370361,1.22528,0.999835,298198e-8,-151801e-8,1.24959,0.10097,-602574e-11,0.300277,202619e-11,0.101577,-152164e-9,0.302077,511662e-10,0.101572,-608889e-9,0.302066,204751e-9,0.101566,-136997e-8,0.302047,460753e-9,0.101592,-243557e-8,0.302114,819497e-9,0.101608,-38053e-7,0.30214,128154e-8,0.101627,-547906e-8,0.30216,18483e-7,0.101669,-745647e-8,0.302224,252223e-8,0.101732,-973615e-8,0.302318,330716e-8,0.101844,-0.0123097,0.302513,421061e-8,0.102025,-0.0151681,0.30285,524481e-8,0.102224,-0.0183334,0.303166,64154e-7,0.102515,-0.0217819,0.303654,774063e-8,0.102886,-0.0255067,0.304243,92398e-7,0.103395,-0.029514,0.305089,0.0109339,0.104109,-0.0337912,0.306301,0.0128561,0.105074,-0.0383565,0.30798,0.0150338,0.10654,-0.0432132,0.310726,0.0175228,0.108478,-0.0484244,0.314351,0.0203648,0.111015,-0.0539339,0.319032,0.0236325,0.114682,-0.0598885,0.32605,0.0274188,0.11911,-0.0663375,0.334109,0.0317905,0.124736,-0.0733011,0.344013,0.0368502,0.131479,-0.0807744,0.355358,0.0427104,0.139283,-0.0888204,0.367614,0.0494788,0.148054,-0.0973394,0.380072,0.0572367,0.159037,-0.10665,0.395678,0.0662704,0.169794,-0.116221,0.40795,0.0763192,0.18314,-0.126632,0.423546,0.087956,0.197515,-0.137383,0.438213,0.101042,0.213514,-0.148641,0.453248,0.115827,0.23065,-0.160117,0.46688,0.132283,0.249148,-0.171807,0.479962,0.150644,0.270219,-0.183695,0.494618,0.171073,0.292338,-0.195574,0.506937,0.193378,0.314999,-0.207205,0.516463,0.217585,0.340991,-0.218955,0.528123,0.24428,0.367982,-0.229917,0.537025,0.272784,0.39432,-0.239737,0.541627,0.302742,0.423364,-0.249048,0.546466,0.335112,0.453751,-0.257329,0.549466,0.369032,0.48416,-0.264623,0.549503,0.404577,0.515262,-0.270411,0.547008,0.441337,0.547036,-0.274581,0.542249,0.479162,0.576614,-0.277266,0.533015,0.517904,0.611143,-0.279144,0.525512,0.558508,0.640989,-0.279001,0.51154,0.598995,0.671182,-0.277324,0.495641,0.639935,0.700848,-0.273908,0.477526,0.681017,0.729862,-0.269063,0.457955,0.722764,0.758273,-0.262282,0.434846,0.764349,0.784121,-0.254281,0.409203,0.806206,0.809798,-0.24505,0.382694,0.848617,0.834953,-0.233861,0.354034,0.892445,0.856817,-0.221308,0.321764,0.936263,0.877609,-0.205996,0.288118,0.982401,0.897489,-0.186702,0.253277,1.02975,0.913792,-0.164618,0.217963,1.07488,0.92785,-0.140023,0.183221,1.11487,0.940378,-0.11328,0.149385,1.14947,0.95273,-0.0853958,0.114152,1.1807,0.969059,-0.0568698,0.0769845,1.20912,0.985574,-0.0276502,0.0381186,1.23498,0.999943,239052e-8,-126861e-8,1.25987,0.0852715,-560067e-11,0.279021,171162e-11,0.0854143,-140871e-9,0.279483,430516e-10,0.0854191,-563385e-9,0.2795,172184e-9,0.0854188,-126753e-8,0.279493,387464e-9,0.0854229,-225337e-8,0.279501,68918e-8,0.0854443,-352086e-8,0.279549,107803e-8,0.0854697,-506962e-8,0.279591,155536e-8,0.0855093,-689873e-8,0.279652,212354e-8,0.0855724,-900821e-8,0.279752,278703e-8,0.0856991,-0.0113799,0.280011,35551e-7,0.085855,-0.0140314,0.280297,443449e-8,0.0860682,-0.016963,0.280682,543636e-8,0.086344,-0.0201438,0.281159,65788e-7,0.0867426,-0.0235999,0.281886,787977e-8,0.087239,-0.0273069,0.282745,93606e-7,0.0879815,-0.031269,0.284139,0.011056,0.0891258,-0.035531,0.28647,0.0130065,0.0906909,-0.0400947,0.289708,0.0152495,0.0927624,-0.0449638,0.293904,0.0178454,0.0958376,-0.0502427,0.300471,0.0208915,0.0995827,-0.0559514,0.30806,0.0244247,0.104526,-0.0622152,0.317874,0.0285721,0.110532,-0.0690046,0.329332,0.0334227,0.117385,-0.0763068,0.341217,0.0390466,0.12522,-0.084184,0.353968,0.0455786,0.134037,-0.0925248,0.366797,0.0530773,0.144014,-0.101487,0.380209,0.0617424,0.156013,-0.111273,0.395956,0.071777,0.168872,-0.121431,0.41053,0.0830905,0.183089,-0.132105,0.425073,0.0959341,0.198763,-0.143286,0.439833,0.110448,0.216159,-0.154841,0.454507,0.126769,0.234859,-0.166588,0.468368,0.14495,0.255879,-0.178626,0.482846,0.165233,0.27677,-0.190218,0.493489,0.187217,0.301184,-0.202227,0.506549,0.211659,0.325852,-0.213764,0.5158,0.237922,0.352824,-0.22487,0.525442,0.26632,0.380882,-0.235246,0.532487,0.296691,0.410137,-0.244847,0.537703,0.329179,0.439787,-0.253122,0.540361,0.363135,0.472291,-0.260517,0.542734,0.399222,0.501856,-0.266519,0.538826,0.436352,0.534816,-0.270905,0.535152,0.474505,0.565069,-0.273826,0.525979,0.513988,0.597154,-0.275333,0.516394,0.554852,0.630473,-0.275314,0.506206,0.596592,0.660574,-0.273323,0.489769,0.638117,0.692015,-0.270008,0.472578,0.680457,0.720647,-0.265001,0.452134,0.723008,0.750528,-0.258311,0.430344,0.765954,0.777568,-0.250046,0.405624,0.809012,0.80387,-0.240114,0.378339,0.852425,0.828439,-0.228737,0.349877,0.895346,0.851472,-0.216632,0.318968,0.940695,0.873906,-0.202782,0.287489,0.987235,0.89467,-0.187059,0.254394,1.03348,0.912281,-0.168818,0.221294,1.07812,0.927358,-0.146494,0.18675,1.11928,0.940385,-0.120009,0.152322,1.15609,0.952672,-0.0917183,0.117514,1.18875,0.968496,-0.0620321,0.0797405,1.21821,0.985236,-0.0314945,0.0402383,1.24523,0.99998,-575153e-9,110644e-9,1.27133,0.0702429,-512222e-11,0.255273,140947e-11,0.0702981,-128826e-9,0.255469,354488e-10,0.0703691,-515562e-9,0.255727,141874e-9,0.0703805,-116e-5,0.255754,31929e-8,0.0703961,-206224e-8,0.255813,567999e-9,0.0704102,-322223e-8,0.255839,88871e-8,0.0704298,-463928e-8,0.255863,128272e-8,0.0704759,-631375e-8,0.255953,175283e-8,0.0705434,-824317e-8,0.256079,230342e-8,0.0706693,-0.010412,0.25636,29443e-7,0.0708189,-0.0128439,0.256647,368031e-8,0.0710364,-0.0155177,0.257084,452614e-8,0.0713223,-0.0184374,0.257637,549706e-8,0.0717182,-0.0216002,0.258416,661246e-8,0.072321,-0.0249966,0.259699,790147e-8,0.0731446,-0.0286566,0.261475,93884e-7,0.0743352,-0.0325888,0.264132,0.0111186,0.0760676,-0.036843,0.26815,0.013145,0.078454,-0.0414292,0.273636,0.0155251,0.0818618,-0.0464634,0.281653,0.0183525,0.0857382,-0.0519478,0.289992,0.0216642,0.0908131,-0.0579836,0.30066,0.0255956,0.0967512,-0.0645124,0.312204,0.0301954,0.103717,-0.0716505,0.325001,0.0356017,0.111596,-0.0793232,0.338129,0.041896,0.120933,-0.087645,0.352853,0.0492447,0.130787,-0.096492,0.366192,0.0576749,0.142311,-0.105973,0.380864,0.0673969,0.155344,-0.116182,0.396575,0.0785899,0.169535,-0.126815,0.411443,0.0912377,0.185173,-0.138015,0.426256,0.105607,0.201755,-0.149325,0.439607,0.121551,0.221334,-0.161207,0.455467,0.139608,0.241461,-0.173162,0.469096,0.159591,0.26294,-0.18504,0.481014,0.18156,0.286776,-0.196881,0.493291,0.205781,0.311596,-0.208311,0.503556,0.231819,0.338667,-0.219671,0.513268,0.260274,0.366021,-0.230451,0.519414,0.290862,0.395875,-0.240131,0.526766,0.323196,0.425564,-0.248566,0.52905,0.357071,0.457094,-0.256195,0.530796,0.393262,0.488286,-0.262331,0.528703,0.430797,0.522291,-0.267141,0.52727,0.470231,0.554172,-0.270411,0.519848,0.510477,0.586427,-0.271986,0.510307,0.551594,0.619638,-0.27192,0.499158,0.593849,0.650656,-0.269817,0.483852,0.636314,0.68284,-0.266267,0.467515,0.679679,0.714356,-0.26113,0.44931,0.723884,0.742717,-0.254067,0.425789,0.767245,0.770894,-0.245652,0.401144,0.811819,0.797358,-0.235554,0.374224,0.856315,0.823377,-0.223896,0.346167,0.901077,0.847456,-0.210865,0.316056,0.946502,0.870697,-0.196574,0.284503,0.993711,0.891068,-0.180814,0.251628,1.04134,0.909267,-0.163314,0.219065,1.08609,0.925653,-0.143304,0.186446,1.12702,0.940017,-0.121322,0.153416,1.16371,0.952398,-0.0973872,0.120334,1.19712,0.967568,-0.0698785,0.08352,1.22791,0.984772,-0.0390031,0.0439209,1.25672,1.00026,-70087e-7,315668e-8,1.28428,0.0556653,-459654e-11,0.227325,112556e-11,0.0565238,-116382e-9,0.230826,284985e-10,0.0565717,-465666e-9,0.231026,114036e-9,0.0565859,-104773e-8,0.231079,256656e-9,0.0565761,-186255e-8,0.231025,45663e-8,0.0565913,-291002e-8,0.231058,714664e-9,0.0566108,-418998e-8,0.231085,103224e-8,0.0566532,-570206e-8,0.231169,141202e-8,0.0567473,-743666e-8,0.231417,186018e-8,0.0568567,-940298e-8,0.231661,238264e-8,0.0569859,-0.0115991,0.231895,298699e-8,0.0572221,-0.0140096,0.232456,368957e-8,0.057519,-0.0166508,0.233096,450303e-8,0.0579534,-0.01951,0.234094,544945e-8,0.0585922,-0.0225991,0.235629,655564e-8,0.0595647,-0.0259416,0.238106,785724e-8,0.0609109,-0.0295661,0.241557,939127e-8,0.0628751,-0.0335126,0.246652,0.0112198,0.0656908,-0.0378604,0.254091,0.0134168,0.0691347,-0.0426543,0.262666,0.0160374,0.0732165,-0.0478967,0.272029,0.0191514,0.0782863,-0.0536716,0.283007,0.0228597,0.0843973,-0.0600683,0.295732,0.0272829,0.0913598,-0.0670095,0.308779,0.032484,0.0994407,-0.0745516,0.322886,0.0385886,0.108189,-0.082712,0.336408,0.0457133,0.118574,-0.0914927,0.351692,0.0539832,0.129989,-0.100854,0.366502,0.0635162,0.142722,-0.110837,0.381675,0.0744386,0.156654,-0.121353,0.3963,0.0868483,0.172151,-0.132414,0.411477,0.100963,0.188712,-0.143809,0.42508,0.116795,0.208093,-0.155765,0.441328,0.134715,0.227936,-0.167608,0.454328,0.154396,0.249495,-0.179579,0.467235,0.176179,0.27362,-0.191488,0.480248,0.200193,0.296371,-0.202618,0.487886,0.225775,0.324234,-0.214133,0.499632,0.25441,0.353049,-0.225212,0.509532,0.285077,0.381785,-0.234875,0.514265,0.317047,0.414038,-0.244205,0.521282,0.351874,0.445251,-0.252145,0.522931,0.388279,0.476819,-0.258433,0.520947,0.425825,0.509209,-0.263411,0.517669,0.465104,0.542759,-0.266732,0.512841,0.505741,0.574822,-0.268263,0.503317,0.547611,0.609324,-0.268489,0.493035,0.590953,0.641772,-0.266941,0.478816,0.63488,0.674049,-0.263297,0.462863,0.679072,0.705071,-0.257618,0.442931,0.723487,0.734709,-0.250625,0.421299,0.768708,0.763704,-0.24179,0.397085,0.814375,0.791818,-0.231115,0.370577,0.859907,0.817439,-0.21922,0.34232,0.906715,0.843202,-0.205658,0.312627,0.953943,0.866639,-0.190563,0.280933,1.00185,0.888129,-0.173978,0.248393,1.05105,0.907239,-0.155485,0.216007,1.09704,0.923893,-0.134782,0.183233,1.13857,0.938882,-0.11249,0.150376,1.17539,0.952464,-0.0890706,0.117177,1.20924,0.968529,-0.0646523,0.0813095,1.24055,0.984763,-0.038606,0.0439378,1.27018,1.00053,-0.01238,598668e-8,1.29873,0.0437928,-409594e-11,0.204012,879224e-12,0.0440166,-103395e-9,0.205049,221946e-10,0.0440529,-413633e-9,0.205225,887981e-10,0.0440493,-930594e-9,0.2052,199858e-9,0.0439884,-165352e-8,0.204901,355495e-9,0.0440716,-25849e-7,0.205255,556983e-9,0.0440968,-372222e-8,0.205311,805326e-9,0.0441359,-506478e-8,0.205391,110333e-8,0.0442231,-660384e-8,0.205638,145768e-8,0.0443254,-835246e-8,0.205877,187275e-8,0.0444832,-0.0102992,0.20627,235938e-8,0.0447001,-0.0124449,0.206796,29299e-7,0.0450168,-0.0147935,0.207593,36005e-7,0.0454816,-0.017336,0.208819,439246e-8,0.0462446,-0.0201156,0.211036,533864e-8,0.0473694,-0.0231568,0.214388,646984e-8,0.0490191,-0.0264941,0.219357,783856e-8,0.0512776,-0.030184,0.226061,950182e-8,0.0541279,-0.0342661,0.234094,0.0115156,0.0578989,-0.0388539,0.244297,0.0139687,0.0620835,-0.0438735,0.254457,0.0169015,0.0673497,-0.04951,0.266706,0.0204554,0.0731759,-0.0556263,0.278753,0.0246606,0.0803937,-0.0624585,0.29309,0.0297126,0.0879287,-0.0697556,0.305856,0.0355868,0.0970669,-0.0778795,0.321059,0.0425768,0.106508,-0.0863541,0.333873,0.05056,0.11776,-0.0955935,0.349008,0.0598972,0.130081,-0.105438,0.363776,0.0706314,0.144454,-0.115899,0.380112,0.0828822,0.1596,-0.126827,0.394843,0.0967611,0.176097,-0.138161,0.409033,0.112381,0.194726,-0.149904,0.424257,0.129952,0.213944,-0.161675,0.436945,0.149333,0.235516,-0.173659,0.450176,0.170892,0.260564,-0.185963,0.466305,0.194984,0.285183,-0.197582,0.477328,0.220805,0.311095,-0.208697,0.486566,0.248694,0.338924,-0.219519,0.494811,0.279015,0.369757,-0.229766,0.504065,0.311725,0.3996,-0.238879,0.507909,0.345844,0.430484,-0.246802,0.509805,0.381749,0.46413,-0.253924,0.511436,0.420251,0.497077,-0.259319,0.508787,0.459957,0.530434,-0.263297,0.50394,0.501356,0.565725,-0.265619,0.49804,0.544252,0.599254,-0.265842,0.487346,0.587856,0.631251,-0.263978,0.472975,0.631969,0.663972,-0.26043,0.457135,0.677471,0.697724,-0.255358,0.439844,0.723744,0.727725,-0.248308,0.417872,0.770653,0.756417,-0.239181,0.39273,0.817357,0.785419,-0.22814,0.367839,0.864221,0.81266,-0.215681,0.339449,0.912701,0.839391,-0.201623,0.309279,0.962419,0.86366,-0.185624,0.278029,1.0122,0.885028,-0.16797,0.245294,1.06186,0.904639,-0.148336,0.212689,1.10934,0.922048,-0.12637,0.179616,1.15063,0.936952,-0.102928,0.146749,1.18885,0.951895,-0.0785268,0.112733,1.22352,0.967198,-0.0530153,0.0760056,1.25681,0.984405,-0.02649,0.0383183,1.28762,1.00021,70019e-8,-20039e-8,1.31656,0.0325964,-355447e-11,0.176706,655682e-12,0.0329333,-899174e-10,0.178527,165869e-10,0.0329181,-359637e-9,0.178453,663498e-10,0.0329085,-808991e-9,0.178383,149332e-9,0.0329181,-143826e-8,0.178394,265873e-9,0.0329425,-224678e-8,0.178517,416597e-9,0.0329511,-323575e-8,0.17849,603299e-9,0.033011,-439875e-8,0.178695,829422e-9,0.0330733,-574059e-8,0.178843,109908e-8,0.0331857,-725896e-8,0.179176,141933e-8,0.0333445,-895289e-8,0.179618,17999e-7,0.0335674,-0.0108219,0.180238,225316e-8,0.033939,-0.0128687,0.181417,279765e-8,0.0345239,-0.015114,0.183395,34564e-7,0.0354458,-0.017596,0.186616,425864e-8,0.0368313,-0.0203524,0.191547,524936e-8,0.0386115,-0.0234105,0.197508,647033e-8,0.0410303,-0.0268509,0.205395,798121e-8,0.0442245,-0.0307481,0.215365,98557e-7,0.0478659,-0.0350863,0.225595,0.0121417,0.0522416,-0.0399506,0.236946,0.0149385,0.0574513,-0.045357,0.249442,0.0183189,0.0631208,-0.0512863,0.261222,0.0223644,0.0701124,-0.0579273,0.275418,0.0272418,0.0777331,-0.0650652,0.288989,0.0329458,0.0862709,-0.0728813,0.302546,0.0396819,0.096103,-0.081363,0.317164,0.04757,0.106976,-0.0904463,0.331733,0.0567012,0.119175,-0.100105,0.34661,0.067202,0.132919,-0.110375,0.362249,0.0792588,0.147727,-0.121115,0.376978,0.0928672,0.163618,-0.132299,0.390681,0.108228,0.182234,-0.143887,0.406571,0.125502,0.201809,-0.155827,0.42042,0.144836,0.225041,-0.168357,0.438411,0.166706,0.247621,-0.18004,0.450368,0.189909,0.27097,-0.191536,0.460083,0.215251,0.296658,-0.203024,0.469765,0.243164,0.325892,-0.214056,0.481837,0.273388,0.35406,-0.224104,0.487474,0.305344,0.384372,-0.233489,0.492773,0.339741,0.41749,-0.241874,0.498451,0.376287,0.45013,-0.248834,0.499632,0.414195,0.481285,-0.254658,0.495233,0.454077,0.519183,-0.259367,0.496401,0.496352,0.551544,-0.261818,0.487686,0.538798,0.587349,-0.262964,0.479453,0.583626,0.621679,-0.262128,0.467709,0.629451,0.654991,-0.258998,0.452123,0.67566,0.686873,-0.254119,0.433495,0.723248,0.719801,-0.246946,0.413657,0.771156,0.750355,-0.237709,0.390366,0.81989,0.780033,-0.226549,0.364947,0.868601,0.809254,-0.214186,0.337256,0.920034,0.836576,-0.199639,0.307395,0.971706,0.861774,-0.183169,0.275431,1.02479,0.885707,-0.165111,0.243431,1.07837,0.904742,-0.144363,0.210921,1.12783,0.915604,-0.121305,0.17647,1.17254,0.930959,-0.0962119,0.143106,1.21012,0.948404,-0.069969,0.108112,1.24474,0.967012,-0.0427586,0.0708478,1.27718,0.984183,-0.0147043,0.032335,1.3083,0.999577,0.0142165,-726867e-8,1.3382,0.0229227,-299799e-11,0.148623,462391e-12,0.0232194,-758796e-10,0.15054,117033e-10,0.0232315,-303636e-9,0.15063,468397e-10,0.0232354,-683189e-9,0.150624,105472e-9,0.0232092,-12136e-7,0.150445,187744e-9,0.0232523,-189765e-8,0.150679,294847e-9,0.0232828,-273247e-8,0.150789,428013e-9,0.0233371,-371287e-8,0.150995,591134e-9,0.0234015,-484794e-8,0.15118,787642e-9,0.023514,-612877e-8,0.151562,102547e-8,0.023679,-756125e-8,0.152116,131351e-8,0.0239559,-914651e-8,0.153162,166594e-8,0.0244334,-0.010904,0.155133,210182e-8,0.025139,-0.0128615,0.158035,264406e-8,0.0262598,-0.0150628,0.162751,332923e-8,0.0277875,-0.0175532,0.168944,419773e-8,0.0298472,-0.0203981,0.176835,530034e-8,0.0325444,-0.023655,0.186686,669777e-8,0.0355581,-0.0272982,0.196248,842661e-8,0.0392841,-0.0314457,0.207352,0.0105854,0.0436815,-0.0361157,0.219279,0.0132458,0.0485272,-0.0412932,0.230728,0.0164736,0.0541574,-0.0470337,0.242994,0.0203715,0.0609479,-0.0535002,0.257042,0.0250953,0.0685228,-0.0605409,0.27102,0.0306856,0.0768042,-0.0680553,0.28406,0.037193,0.0864844,-0.0765011,0.299186,0.0449795,0.0969415,-0.0852674,0.3132,0.0538316,0.108478,-0.0947333,0.327138,0.0641149,0.121705,-0.10481,0.342345,0.0759185,0.136743,-0.115474,0.358472,0.0894116,0.152986,-0.126536,0.374067,0.104562,0.170397,-0.138061,0.388267,0.121632,0.191392,-0.150203,0.406467,0.140996,0.211566,-0.161751,0.418641,0.161696,0.233567,-0.173407,0.430418,0.184557,0.257769,-0.185397,0.44277,0.210092,0.28531,-0.197048,0.457191,0.237827,0.311726,-0.20784,0.464712,0.267253,0.340537,-0.218345,0.472539,0.299332,0.372921,-0.228306,0.482331,0.333988,0.402924,-0.236665,0.484378,0.369722,0.434475,-0.244097,0.484717,0.407836,0.469736,-0.250547,0.487093,0.448465,0.505045,-0.25511,0.485575,0.490263,0.540262,-0.258444,0.481225,0.534495,0.576347,-0.259903,0.473481,0.579451,0.608656,-0.259572,0.4603,0.625604,0.646679,-0.257908,0.450341,0.674511,0.679902,-0.253663,0.431561,0.723269,0.714159,-0.247419,0.412684,0.773263,0.745345,-0.239122,0.389388,0.824182,0.778248,-0.228837,0.365361,0.876634,0.807208,-0.216197,0.337667,0.92945,0.835019,-0.201772,0.307197,0.985261,0.860261,-0.185291,0.274205,1.04299,0.877601,-0.165809,0.240178,1.09816,0.898211,-0.143897,0.207571,1.14694,0.915789,-0.119513,0.174904,1.19008,0.931831,-0.0932919,0.141423,1.2297,0.949244,-0.0656528,0.105603,1.26553,0.967527,-0.0370262,0.0679551,1.29986,0.984139,-730117e-8,0.0283133,1.33252,0.999713,0.0234648,-0.0121785,1.36397,0.0152135,-245447e-11,0.122795,304092e-12,0.0151652,-615778e-10,0.122399,76292e-10,0.0151181,-245948e-9,0.122023,304802e-10,0.0151203,-553394e-9,0.12203,686634e-10,0.015125,-983841e-9,0.122037,122463e-9,0.0151427,-153774e-8,0.12214,192706e-9,0.0151708,-22103e-7,0.122237,281219e-9,0.0152115,-300741e-8,0.12238,390804e-9,0.0152877,-392494e-8,0.1227,526317e-9,0.015412,-496597e-8,0.123244,69443e-8,0.0156201,-613314e-8,0.124228,90547e-8,0.0159658,-744113e-8,0.125945,11732e-7,0.0165674,-892546e-8,0.129098,151888e-8,0.017487,-0.010627,0.133865,197007e-8,0.018839,-0.0126043,0.140682,25637e-7,0.020554,-0.0148814,0.148534,333637e-8,0.0226727,-0.0175123,0.157381,433738e-8,0.0251879,-0.0205266,0.166685,561664e-8,0.0283635,-0.0240319,0.177796,725563e-8,0.0318694,-0.0279432,0.188251,928811e-8,0.0361044,-0.0324313,0.200038,0.011835,0.0406656,-0.0373527,0.210685,0.0149146,0.0463846,-0.0430132,0.224182,0.0187254,0.0525696,-0.0491013,0.23634,0.0232283,0.0598083,-0.0559175,0.250013,0.0286521,0.0679437,-0.0633657,0.263981,0.0350634,0.0771181,-0.0714602,0.278072,0.0425882,0.0881273,-0.0803502,0.29511,0.0514487,0.0996628,-0.0896903,0.309976,0.0615766,0.112702,-0.099644,0.325611,0.0732139,0.126488,-0.109829,0.339321,0.0862324,0.142625,-0.120859,0.35574,0.101275,0.15953,-0.131956,0.369845,0.117892,0.176991,-0.143145,0.38146,0.136205,0.199715,-0.155292,0.40052,0.157252,0.220787,-0.167066,0.412055,0.179966,0.243697,-0.178396,0.423133,0.204418,0.272106,-0.190433,0.439524,0.232141,0.297637,-0.201265,0.447041,0.261109,0.325273,-0.211834,0.454488,0.292627,0.357219,-0.221889,0.465004,0.326669,0.387362,-0.230729,0.468527,0.362426,0.423131,-0.23924,0.475836,0.401533,0.45543,-0.246067,0.475017,0.441902,0.493393,-0.251557,0.478017,0.484239,0.526253,-0.255571,0.4709,0.528586,0.560554,-0.257752,0.463167,0.574346,0.599306,-0.258076,0.456452,0.621655,0.634541,-0.256471,0.443725,0.670492,0.668907,-0.253283,0.428719,0.721943,0.705619,-0.247562,0.411348,0.772477,0.739034,-0.240626,0.388939,0.8264,0.771408,-0.231493,0.36425,0.881702,0.803312,-0.220125,0.337321,0.9385,0.828457,-0.206645,0.305364,0.997437,0.854819,-0.190664,0.273715,1.05693,0.878666,-0.171429,0.242218,1.11251,0.898404,-0.149235,0.209556,1.16398,0.917416,-0.12435,0.176863,1.21014,0.933133,-0.0972703,0.142775,1.25178,0.95066,-0.0683607,0.106735,1.29028,0.968589,-0.0378724,0.0681609,1.32703,0.984776,-605712e-8,0.0273966,1.36158,0.99994,0.0263276,-0.0138124,1.3943,867437e-8,-186005e-11,0.0928979,173682e-12,864003e-8,-466389e-10,0.0925237,435505e-11,864593e-8,-186594e-9,0.0925806,174322e-10,864095e-8,-419639e-9,0.0924903,392862e-10,863851e-8,-746272e-9,0.0924589,702598e-10,868531e-8,-116456e-8,0.0929,111188e-9,869667e-8,-167711e-8,0.0928529,163867e-9,874332e-8,-228051e-8,0.0930914,23104e-8,882709e-8,-297864e-8,0.0935679,31741e-8,898874e-8,-377557e-8,0.0946165,430186e-9,929346e-8,-469247e-8,0.0967406,580383e-9,978271e-8,-575491e-8,0.100084,783529e-9,0.0105746,-701514e-8,0.105447,106304e-8,0.0116949,-851797e-8,0.112494,144685e-8,0.0130419,-0.0102757,0.119876,196439e-8,0.0148375,-0.012381,0.129034,266433e-8,0.0168725,-0.01482,0.137812,358364e-8,0.0193689,-0.0176563,0.147696,478132e-8,0.0222691,-0.0209211,0.157795,631721e-8,0.0256891,-0.0246655,0.168431,826346e-8,0.0294686,-0.0288597,0.178587,0.0106714,0.0340412,-0.0336441,0.190251,0.0136629,0.0393918,-0.039033,0.202999,0.0173272,0.0453947,-0.0450087,0.215655,0.0217448,0.0521936,-0.0515461,0.228686,0.0269941,0.0600279,-0.058817,0.242838,0.033272,0.0692398,-0.0667228,0.258145,0.0406457,0.0793832,-0.0752401,0.273565,0.0492239,0.0902297,-0.0841851,0.287735,0.0590105,0.102014,-0.0936479,0.301161,0.0702021,0.116054,-0.103967,0.317438,0.0832001,0.13191,-0.114622,0.334166,0.0977951,0.148239,-0.125452,0.348192,0.113985,0.165809,-0.136453,0.361094,0.131928,0.184616,-0.147648,0.373534,0.151811,0.207491,-0.159607,0.39101,0.174476,0.230106,-0.171119,0.402504,0.198798,0.257036,-0.182906,0.418032,0.225796,0.281172,-0.193605,0.425468,0.254027,0.312034,-0.204771,0.440379,0.285713,0.340402,-0.214988,0.445406,0.319196,0.370231,-0.224711,0.44968,0.35537,0.407105,-0.233516,0.460747,0.393838,0.439037,-0.240801,0.460624,0.433747,0.47781,-0.24762,0.465957,0.477234,0.510655,-0.251823,0.460054,0.52044,0.550584,-0.255552,0.459172,0.567853,0.585872,-0.257036,0.450311,0.615943,0.620466,-0.257535,0.437763,0.667693,0.660496,-0.255248,0.426639,0.718988,0.695578,-0.251141,0.409185,0.772503,0.732176,-0.244718,0.39015,0.827023,0.760782,-0.236782,0.362594,0.885651,0.79422,-0.225923,0.33711,0.943756,0.824521,-0.213855,0.308272,1.00874,0.854964,-0.197723,0.278529,1.06764,0.878065,-0.179209,0.246208,1.12836,0.899834,-0.157569,0.21329,1.18318,0.918815,-0.133206,0.181038,1.23161,0.934934,-0.106545,0.146993,1.27644,0.952115,-0.0780574,0.111175,1.31842,0.96906,-0.0478279,0.0728553,1.35839,0.985178,-0.0160014,0.032579,1.39697,1.00039,0.0173126,-95256e-7,1.43312,384146e-8,-124311e-11,0.0613583,778271e-13,390023e-8,-314043e-10,0.0622919,196626e-11,389971e-8,-125622e-9,0.0622632,787379e-11,389491e-8,-282352e-9,0.0620659,1778e-8,391618e-8,-502512e-9,0.0624687,320918e-10,392662e-8,-784458e-9,0.0625113,515573e-10,396053e-8,-112907e-8,0.0628175,778668e-10,401911e-8,-153821e-8,0.0633286,113811e-9,414994e-8,-20208e-7,0.0646443,16445e-8,441223e-8,-260007e-8,0.0673886,237734e-9,484427e-8,-33097e-7,0.0716528,345929e-9,549109e-8,-418966e-8,0.0774998,505987e-9,636293e-8,-527331e-8,0.0844758,739208e-9,746566e-8,-660428e-8,0.0921325,107347e-8,876625e-8,-818826e-8,0.0997067,153691e-8,0.0103125,-0.0100811,0.107433,217153e-8,0.0123309,-0.0123643,0.117088,303427e-8,0.0146274,-0.0150007,0.126438,416018e-8,0.0172295,-0.0180531,0.135672,561513e-8,0.0204248,-0.0215962,0.146244,7478e-6,0.0241597,-0.0256234,0.157481,981046e-8,0.0284693,-0.0302209,0.169125,0.0127148,0.033445,-0.0353333,0.181659,0.0162453,0.0391251,-0.0410845,0.1944,0.0205417,0.0454721,-0.0473451,0.207082,0.0256333,0.0530983,-0.0542858,0.221656,0.0317036,0.0615356,-0.0618384,0.236036,0.0388319,0.0703363,-0.0697631,0.248398,0.046974,0.0810391,-0.0784757,0.263611,0.0565246,0.0920144,-0.0873488,0.275857,0.0671724,0.105584,-0.0973652,0.292555,0.0798105,0.119506,-0.107271,0.306333,0.0935945,0.134434,-0.117608,0.318888,0.109106,0.153399,-0.128938,0.337552,0.127074,0.171258,-0.139944,0.349955,0.14643,0.191059,-0.151288,0.361545,0.168,0.215069,-0.163018,0.378421,0.192082,0.237838,-0.174226,0.38879,0.217838,0.266965,-0.186063,0.405857,0.246931,0.292827,-0.196909,0.414146,0.277505,0.324352,-0.207473,0.426955,0.310711,0.354427,-0.217713,0.433429,0.346794,0.389854,-0.227183,0.443966,0.385237,0.420749,-0.235131,0.44471,0.424955,0.459597,-0.242786,0.451729,0.468446,0.495316,-0.248767,0.45072,0.513422,0.534903,-0.253351,0.450924,0.560618,0.572369,-0.256277,0.445266,0.609677,0.612383,-0.2576,0.438798,0.660995,0.644037,-0.256931,0.421693,0.713807,0.686749,-0.254036,0.4109,0.767616,0.719814,-0.249785,0.390151,0.82533,0.754719,-0.244283,0.367847,0.888311,0.792022,-0.235076,0.345013,0.948177,0.822404,-0.225061,0.316193,1.01661,0.853084,-0.211113,0.287013,1.08075,0.879871,-0.19449,0.255424,1.14501,0.901655,-0.174023,0.222879,1.20203,0.919957,-0.1509,0.18989,1.25698,0.938412,-0.124923,0.15606,1.30588,0.953471,-0.0968139,0.120512,1.3529,0.970451,-0.066734,0.0828515,1.3986,0.985522,-0.034734,0.0424458,1.44148,1.00099,-102222e-8,678929e-9,1.48398,965494e-9,-627338e-12,0.0306409,197672e-13,99168e-8,-158573e-10,0.0314638,499803e-12,991068e-9,-634012e-10,0.031363,200682e-11,974567e-9,-14144e-8,0.03036,457312e-11,998079e-9,-252812e-9,0.031496,860131e-11,102243e-8,-396506e-9,0.0319955,148288e-10,107877e-8,-577593e-9,0.0331376,249141e-10,121622e-8,-816816e-9,0.0359396,423011e-10,14455e-7,-113761e-8,0.0399652,724613e-10,178791e-8,-156959e-8,0.0450556,123929e-9,225668e-8,-214064e-8,0.0508025,208531e-9,285627e-8,-287655e-8,0.0568443,341969e-9,35991e-7,-380271e-8,0.0630892,544158e-9,455524e-8,-496264e-8,0.0702204,842423e-9,569143e-8,-63793e-7,0.0773426,126704e-8,716928e-8,-813531e-8,0.0860839,186642e-8,885307e-8,-0.0101946,0.0944079,267014e-8,0.0109316,-0.0126386,0.103951,374033e-8,0.0133704,-0.0154876,0.113786,51304e-7,0.0161525,-0.0187317,0.123477,688858e-8,0.0194267,-0.0224652,0.133986,910557e-8,0.0230967,-0.0265976,0.143979,0.0118074,0.0273627,-0.0312848,0.154645,0.0151266,0.0323898,-0.0365949,0.166765,0.0191791,0.0379225,-0.0422914,0.177932,0.0239236,0.0447501,-0.0487469,0.19167,0.0296568,0.0519391,-0.0556398,0.203224,0.0362924,0.0599464,-0.0631646,0.215652,0.0440585,0.0702427,-0.0714308,0.232089,0.0531619,0.0806902,-0.0800605,0.245258,0.0634564,0.0923194,-0.0892815,0.258609,0.0752481,0.106938,-0.09931,0.276654,0.0888914,0.121238,-0.109575,0.289847,0.104055,0.138817,-0.120461,0.307566,0.121266,0.15595,-0.131209,0.320117,0.139944,0.178418,-0.143049,0.339677,0.161591,0.197875,-0.154074,0.349886,0.184303,0.224368,-0.166307,0.369352,0.210669,0.252213,-0.178051,0.386242,0.238895,0.277321,-0.189335,0.395294,0.269182,0.310332,-0.200683,0.412148,0.302508,0.338809,-0.210856,0.418266,0.337264,0.372678,-0.220655,0.428723,0.374881,0.405632,-0.230053,0.433887,0.415656,0.442293,-0.237993,0.439911,0.457982,0.477256,-0.244897,0.440175,0.502831,0.515592,-0.250657,0.441079,0.550277,0.550969,-0.255459,0.435219,0.601102,0.592883,-0.257696,0.432882,0.651785,0.629092,-0.259894,0.421054,0.708961,0.672033,-0.258592,0.41177,0.763806,0.709147,-0.256525,0.395267,0.824249,0.745367,-0.254677,0.375013,0.8951,0.784715,-0.247892,0.353906,0.959317,0.818107,-0.240162,0.327801,1.03153,0.847895,-0.229741,0.298821,1.10601,0.879603,-0.213084,0.269115,1.164,0.902605,-0.195242,0.236606,1.22854,0.922788,-0.174505,0.203442,1.29017,0.944831,-0.150169,0.169594,1.34157,0.959656,-0.124099,0.135909,1.3956,0.972399,-0.0960626,0.0990563,1.45128,0.986549,-0.0657097,0.0602348,1.50312,1.00013,-0.0333558,0.0186694,1.55364,619747e-11,-1e-7,778326e-8,796756e-16,237499e-13,-999999e-13,282592e-10,114596e-15,100292e-11,-166369e-11,250354e-9,677492e-14,350752e-11,-637769e-11,357289e-9,631655e-13,826445e-11,-174689e-10,516179e-9,31851e-11,242481e-10,-450868e-10,10223e-7,130577e-11,455631e-10,-89044e-9,144302e-8,374587e-11,971222e-10,-178311e-9,241912e-8,102584e-10,171403e-9,-313976e-9,354938e-8,236481e-10,292747e-9,-520026e-9,513765e-8,496014e-10,789827e-9,-118187e-8,0.0238621,139056e-9,114093e-8,-171827e-8,0.0286691,244093e-9,176119e-8,-249667e-8,0.0368565,420623e-9,22233e-7,-333742e-8,0.0400469,65673e-8,343382e-8,-481976e-8,0.0535751,109323e-8,427602e-8,-600755e-8,0.057099,155268e-8,461435e-8,-737637e-8,0.0551084,215031e-8,695698e-8,-971401e-8,0.0715767,316529e-8,867619e-8,-0.0120943,0.0793314,436995e-8,0.0106694,-0.0148202,0.0869391,58959e-7,0.0140351,-0.0183501,0.101572,798757e-8,0.0168939,-0.022006,0.11018,0.0104233,0.020197,-0.0261568,0.119041,0.0134167,0.0254702,-0.0312778,0.135404,0.0173009,0.0298384,-0.0362469,0.1437,0.0215428,0.035159,-0.042237,0.15512,0.0268882,0.0427685,-0.0488711,0.17128,0.033235,0.0494848,-0.0557997,0.181813,0.0404443,0.0592394,-0.0635578,0.198745,0.0490043,0.0681463,-0.071838,0.210497,0.0588239,0.0804753,-0.0809297,0.228864,0.0702835,0.0942205,-0.0906488,0.247008,0.0834012,0.106777,-0.100216,0.258812,0.0975952,0.124471,-0.110827,0.278617,0.114162,0.138389,-0.121193,0.287049,0.131983,0.159543,-0.13253,0.307151,0.152541,0.176432,-0.143611,0.31564,0.174673,0.201723,-0.15548,0.33538,0.199842,0.229721,-0.167166,0.355256,0.227097,0.250206,-0.178238,0.360047,0.256014,0.282118,-0.189905,0.378761,0.28855,0.312821,-0.201033,0.39181,0.323348,0.341482,-0.211584,0.397716,0.360564,0.377368,-0.221314,0.410141,0.400004,0.418229,-0.230474,0.423485,0.442371,0.444881,-0.239443,0.418874,0.488796,0.488899,-0.245987,0.427545,0.535012,0.520317,-0.253948,0.422147,0.589678,0.568566,-0.256616,0.42719,0.637683,0.599607,-0.26376,0.415114,0.703363,0.64222,-0.268687,0.408715,0.771363,0.685698,-0.2694,0.399722,0.83574,0.732327,-0.266642,0.388651,0.897764,0.769873,-0.267712,0.369198,0.983312,0.806733,-0.263479,0.346802,1.06222,0.843466,-0.254575,0.321368,1.13477,0.873008,-0.242749,0.29211,1.20712,0.908438,-0.22725,0.262143,1.27465,0.936321,-0.207621,0.228876,1.33203,0.950353,-0.187932,0.19484,1.40439,0.96442,-0.165154,0.163178,1.4732,0.979856,-0.139302,0.127531,1.53574,0.982561,-0.11134,0.0903457,1.59982,0.996389,-0.0808124,0.0489007,1.6577];const LTC_MAT_2=[1,0,0,0,1,791421e-36,0,0,1,104392e-29,0,0,1,349405e-26,0,0,1,109923e-23,0,0,1,947414e-22,0,0,1,359627e-20,0,0,1,772053e-19,0,0,1,108799e-17,0,0,1,110655e-16,0,0,1,865818e-16,0,0,0.999998,545037e-15,0,0,0.999994,285095e-14,0,0,0.999989,126931e-13,0,0,0.999973,489938e-13,0,0,0.999947,166347e-12,0,0,0.999894,502694e-12,0,0,0.999798,136532e-11,0,0,0.999617,335898e-11,0,0,0.999234,752126e-11,0,0,0.998258,152586e-10,0,0,0.99504,266207e-10,0,0,0.980816,236802e-10,0,0,0.967553,207684e-11,0,0,0.966877,403733e-11,0,0,0.965752,741174e-11,0,0,0.96382,127746e-10,0,0,0.960306,202792e-10,0,0,0.953619,280232e-10,0,0,0.941103,278816e-10,0,0,0.926619,160221e-10,0,0,0.920983,235164e-10,0,0,0.912293,311924e-10,0,0.0158731,0.899277,348118e-10,0,0.0476191,0.880884,26041e-9,0,0.0793651,0.870399,338726e-10,0,0.111111,0.856138,392906e-10,0,0.142857,0.837436,372874e-10,0,0.174603,0.820973,392558e-10,0,0.206349,0.803583,434658e-10,0,0.238095,0.782168,40256e-9,0,0.269841,0.764107,448159e-10,0,0.301587,0.743092,457627e-10,0,0.333333,0.721626,455314e-10,0,0.365079,0.700375,477335e-10,0,0.396825,0.677334,461072e-10,0,0.428571,0.655702,484393e-10,0,0.460317,0.632059,464583e-10,0,0.492064,0.610125,483923e-10,0,0.52381,0.58653,464342e-10,0,0.555556,0.564508,477033e-10,0,0.587302,0.541405,459263e-10,0,0.619048,0.519556,46412e-9,0,0.650794,0.497292,448913e-10,0,0.68254,0.475898,445789e-10,0,0.714286,0.454722,433496e-10,0,0.746032,0.434042,423054e-10,0,0.777778,0.414126,413737e-10,0,0.809524,0.394387,397265e-10,0,0.84127,0.375841,390709e-10,0,0.873016,0.357219,369938e-10,0,0.904762,0.340084,365618e-10,0,0.936508,0.322714,342533e-10,0,0.968254,0.306974,339596e-10,0,1,1,101524e-23,0,0,1,10292e-22,0,0,1,130908e-23,0,0,1,473331e-23,0,0,1,625319e-22,0,0,1,107932e-20,0,0,1,163779e-19,0,0,1,203198e-18,0,0,1,204717e-17,0,0,0.999999,168995e-16,0,0,0.999998,115855e-15,0,0,0.999996,66947e-14,0,0,0.999991,330863e-14,0,0,0.999983,141737e-13,0,0,0.999968,532626e-13,0,0,0.99994,177431e-12,0,0,0.999891,528835e-12,0,0,0.999797,142169e-11,0,0,0.999617,347057e-11,0,0,0.999227,77231e-10,0,0,0.998239,155753e-10,0,0,0.994937,268495e-10,0,0,0.980225,213742e-10,0,0,0.967549,21631e-10,0,0,0.966865,417989e-11,0,0,0.965739,763341e-11,0,0,0.963794,130892e-10,0,0,0.960244,206456e-10,0,0,0.953495,282016e-10,0,148105e-9,0.940876,271581e-10,0,2454e-6,0.926569,164159e-10,0,867491e-8,0.920905,239521e-10,0,0.01956,0.912169,315127e-10,0,0.035433,0.899095,346626e-10,0,0.056294,0.882209,290223e-10,0,0.0818191,0.870272,342992e-10,0,0.111259,0.855977,394164e-10,0,0.142857,0.837431,372343e-10,0,0.174603,0.820826,396691e-10,0,0.206349,0.803408,435395e-10,0,0.238095,0.782838,419579e-10,0,0.269841,0.763941,450953e-10,0,0.301587,0.742904,455847e-10,0,0.333333,0.721463,458833e-10,0,0.365079,0.700197,477159e-10,0,0.396825,0.677501,470641e-10,0,0.428571,0.655527,484732e-10,0,0.460317,0.6324,476834e-10,0,0.492064,0.609964,484213e-10,0,0.52381,0.586839,475541e-10,0,0.555556,0.564353,476951e-10,0,0.587302,0.541589,467611e-10,0,0.619048,0.519413,463493e-10,0,0.650794,0.497337,453994e-10,0,0.68254,0.475797,445308e-10,0,0.714286,0.454659,435787e-10,0,0.746032,0.434065,424839e-10,0,0.777778,0.414018,41436e-9,0,0.809524,0.39455,401902e-10,0,0.84127,0.375742,390813e-10,0,0.873016,0.357501,377116e-10,0,0.904762,0.339996,36535e-9,0,0.936508,0.323069,351265e-10,0,0.968254,0.306897,339112e-10,0,1,1,10396e-19,0,0,1,104326e-20,0,0,1,110153e-20,0,0,1,144668e-20,0,0,1,34528e-19,0,0,1,175958e-19,0,0,1,12627e-17,0,0,1,936074e-18,0,0,1,645742e-17,0,0,0.999998,401228e-16,0,0,0.999997,222338e-15,0,0,0.999995,10967e-13,0,0,0.999991,482132e-14,0,0,0.999981,189434e-13,0,0,0.999967,667716e-13,0,0,0.999938,212066e-12,0,0,0.999886,60977e-11,0,0,0.999792,159504e-11,0,0,0.999608,381191e-11,0,0,0.999209,833727e-11,0,0,0.998179,165288e-10,0,0,0.994605,274387e-10,0,0,0.979468,167316e-10,0,0,0.967529,242877e-11,0,0,0.966836,461696e-11,0,0,0.96569,830977e-11,0,0,0.963706,140427e-10,0,244659e-11,0.960063,217353e-10,0,760774e-9,0.953113,286606e-10,0,367261e-8,0.940192,247691e-10,0,940263e-8,0.927731,195814e-10,0,0.018333,0.920669,252531e-10,0,0.0306825,0.911799,324277e-10,0,0.0465556,0.89857,340982e-10,0,0.0659521,0.883283,319622e-10,0,0.0887677,0.86989,35548e-9,0,0.114784,0.855483,397143e-10,0,0.143618,0.837987,391665e-10,0,0.174606,0.820546,411306e-10,0,0.206349,0.802878,436753e-10,0,0.238095,0.783402,444e-7,0,0.269841,0.763439,458726e-10,0,0.301587,0.742925,467097e-10,0,0.333333,0.721633,478887e-10,0,0.365079,0.69985,481251e-10,0,0.396825,0.67783,491811e-10,0,0.428571,0.655126,488199e-10,0,0.460318,0.632697,496025e-10,0,0.492064,0.609613,48829e-9,0,0.52381,0.587098,492754e-10,0,0.555556,0.564119,482625e-10,0,0.587302,0.541813,482807e-10,0,0.619048,0.519342,471552e-10,0,0.650794,0.497514,466765e-10,0,0.68254,0.475879,455582e-10,0,0.714286,0.454789,446007e-10,0,0.746032,0.434217,435382e-10,0,0.777778,0.414086,421753e-10,0,0.809524,0.394744,412093e-10,0,0.84127,0.375782,396634e-10,0,0.873016,0.357707,386419e-10,0,0.904762,0.340038,370345e-10,0,0.936508,0.323284,359725e-10,0,0.968254,0.306954,3436e-8,0,1,1,599567e-19,0,0,1,600497e-19,0,0,1,614839e-19,0,0,1,686641e-19,0,0,1,972658e-19,0,0,1,221271e-18,0,0,1,833195e-18,0,0,1,403601e-17,0,0,0.999999,206001e-16,0,0,0.999998,101739e-15,0,0,0.999997,470132e-15,0,0,0.999993,200436e-14,0,0,0.999988,783682e-14,0,0,0.999979,280338e-13,0,0,0.999962,917033e-13,0,0,0.999933,274514e-12,0,0,0.999881,753201e-12,0,0,0.999783,189826e-11,0,0,0.999594,440279e-11,0,0,0.999178,93898e-10,0,0,0.998073,181265e-10,0,0,0.993993,280487e-10,0,0,0.979982,149422e-10,0,0,0.968145,378481e-11,0,0,0.966786,53771e-10,0,0,0.965611,947508e-11,0,388934e-10,0.963557,156616e-10,0,9693e-7,0.959752,235144e-10,0,370329e-8,0.952461,291568e-10,0,868428e-8,0.940193,240102e-10,0,0.0161889,0.929042,231235e-10,0,0.0263948,0.920266,273968e-10,0,0.0394088,0.911178,337915e-10,0,0.0552818,0.897873,333629e-10,0,0.0740138,0.884053,351405e-10,0,0.0955539,0.869455,378034e-10,0,0.119795,0.854655,399378e-10,0,0.14656,0.838347,419108e-10,0,0.175573,0.820693,440831e-10,0,0.206388,0.802277,445599e-10,0,0.238095,0.783634,472691e-10,0,0.269841,0.763159,476984e-10,0,0.301587,0.742914,491487e-10,0,0.333333,0.721662,502312e-10,0,0.365079,0.699668,502817e-10,0,0.396825,0.677839,51406e-9,0,0.428571,0.655091,511095e-10,0,0.460317,0.632665,516067e-10,0,0.492064,0.609734,512255e-10,0,0.52381,0.587043,510263e-10,0,0.555556,0.564298,50565e-9,0,0.587302,0.541769,497951e-10,0,0.619048,0.519529,492698e-10,0,0.650794,0.497574,482066e-10,0,0.68254,0.476028,473689e-10,0,0.714286,0.454961,461941e-10,0,0.746032,0.434341,450618e-10,0,0.777778,0.414364,438355e-10,0,0.809524,0.394832,424196e-10,0,0.84127,0.376109,412563e-10,0,0.873016,0.35779,396226e-10,0,0.904762,0.340379,384886e-10,0,0.936508,0.323385,368214e-10,0,0.968254,0.307295,356636e-10,0,1,1,106465e-17,0,0,1,106555e-17,0,0,1,107966e-17,0,0,1,114601e-17,0,0,1,137123e-17,0,0,1,21243e-16,0,0,0.999999,489653e-17,0,0,0.999999,160283e-16,0,0,0.999998,62269e-15,0,0,0.999997,251859e-15,0,0,0.999996,996192e-15,0,0,0.999992,374531e-14,0,0,0.999986,132022e-13,0,0,0.999975,433315e-13,0,0,0.999959,131956e-12,0,0,0.999927,372249e-12,0,0,0.999871,972461e-12,0,0,0.999771,235343e-11,0,0,0.999572,52768e-10,0,0,0.999133,109237e-10,0,0,0.997912,203675e-10,0,0,0.993008,279396e-10,0,0,0.980645,139604e-10,0,0,0.970057,646596e-11,0,0,0.966717,65089e-10,0,474145e-10,0.965497,111863e-10,0,89544e-8,0.96334,179857e-10,0,32647e-7,0.959294,259045e-10,0,75144e-7,0.951519,292327e-10,0,0.0138734,0.940517,249769e-10,0,0.0224952,0.93014,26803e-9,0,0.0334828,0.91972,303656e-10,0,0.0468973,0.910294,353323e-10,0,0.0627703,0.897701,351002e-10,0,0.0811019,0.884522,388104e-10,0,0.10186,0.869489,412932e-10,0,0.124985,0.853983,415781e-10,0,0.150372,0.838425,454066e-10,0,0.177868,0.820656,471624e-10,0,0.207245,0.801875,475243e-10,0,0.238143,0.783521,505621e-10,0,0.269841,0.763131,50721e-9,0,0.301587,0.74261,523293e-10,0,0.333333,0.72148,528699e-10,0,0.365079,0.699696,538677e-10,0,0.396825,0.677592,539255e-10,0,0.428571,0.65525,546367e-10,0,0.460317,0.632452,541348e-10,0,0.492064,0.609903,544976e-10,0,0.52381,0.586928,536201e-10,0,0.555556,0.564464,535185e-10,0,0.587302,0.541801,524949e-10,0,0.619048,0.519681,51812e-9,0,0.650794,0.497685,507687e-10,0,0.68254,0.47622,496243e-10,0,0.714286,0.455135,485714e-10,0,0.746032,0.4346,471847e-10,0,0.777778,0.414564,459294e-10,0,0.809524,0.395165,444705e-10,0,0.84127,0.376333,430772e-10,0,0.873016,0.358197,416229e-10,0,0.904762,0.34064,401019e-10,0,0.936508,0.323816,386623e-10,0,0.968254,0.307581,370933e-10,0,1,1,991541e-17,0,0,1,992077e-17,0,0,1,100041e-16,0,0,1,10385e-15,0,0,1,115777e-16,0,0,1,150215e-16,0,0,0.999999,254738e-16,0,0,0.999999,598822e-16,0,0,0.999998,179597e-15,0,0,0.999997,602367e-15,0,0,0.999994,206835e-14,0,0,0.99999,694952e-14,0,0,0.999984,223363e-13,0,0,0.999972,678578e-13,0,0,0.999952,193571e-12,0,0,0.999919,516594e-12,0,0,0.99986,128739e-11,0,0,0.999753,299298e-11,0,0,0.999546,648258e-11,0,0,0.999074,129985e-10,0,0,0.997671,232176e-10,0,0,0.991504,256701e-10,0,0,0.981148,131141e-10,0,0,0.971965,869048e-11,0,280182e-10,0.966624,808301e-11,0,695475e-9,0.965344,135235e-10,0,265522e-8,0.963048,210592e-10,0,622975e-8,0.958673,287473e-10,0,0.0116234,0.950262,281379e-10,0,0.018976,0.940836,271089e-10,0,0.0283844,0.930996,30926e-9,0,0.0399151,0.919848,348359e-10,0,0.0536063,0.909136,366092e-10,0,0.0694793,0.897554,384162e-10,0,0.0875342,0.884691,430971e-10,0,0.107749,0.869414,447803e-10,0,0.130087,0.853462,452858e-10,0,0.154481,0.838187,495769e-10,0,0.180833,0.820381,502709e-10,0,0.209005,0.801844,522713e-10,0,0.238791,0.783061,541505e-10,0,0.269869,0.763205,553712e-10,0,0.301587,0.742362,564909e-10,0,0.333333,0.721393,572646e-10,0,0.365079,0.699676,581012e-10,0,0.396825,0.677395,58096e-9,0,0.428571,0.655208,585766e-10,0,0.460317,0.632451,583602e-10,0,0.492064,0.609839,580234e-10,0,0.52381,0.587093,577161e-10,0,0.555556,0.564467,568447e-10,0,0.587302,0.542043,563166e-10,0,0.619048,0.519826,55156e-9,0,0.650794,0.497952,541682e-10,0,0.68254,0.476477,528971e-10,0,0.714286,0.455412,514952e-10,0,0.746032,0.434926,502222e-10,0,0.777778,0.4149,485779e-10,0,0.809524,0.395552,472242e-10,0,0.84127,0.376712,454891e-10,0,0.873016,0.358622,440924e-10,0,0.904762,0.341048,422984e-10,0,0.936508,0.324262,408582e-10,0,0.968254,0.308013,390839e-10,0,1,1,613913e-16,0,0,1,614145e-16,0,0,1,617708e-16,0,0,1,633717e-16,0,0,1,681648e-16,0,0,1,808291e-16,0,0,1,114608e-15,0,0,0.999998,210507e-15,0,0,0.999997,499595e-15,0,0,0.999995,139897e-14,0,0,0.999994,419818e-14,0,0,0.999988,127042e-13,0,0,0.999979,375153e-13,0,0,0.999965,106206e-12,0,0,0.999945,285381e-12,0,0,0.999908,723611e-12,0,0,0.999846,17255e-10,0,0,0.999733,386104e-11,0,0,0.999511,808493e-11,0,0,0.998993,156884e-10,0,0,0.997326,265538e-10,0,0,0.989706,206466e-10,0,0,0.981713,130756e-10,0,70005e-10,0.973636,106473e-10,0,464797e-9,0.966509,10194e-9,0,201743e-8,0.965149,165881e-10,0,497549e-8,0.962669,249147e-10,0,953262e-8,0.95786,317449e-10,0,0.0158211,0.949334,281045e-10,0,0.0239343,0.941041,303263e-10,0,0.0339372,0.931575,356754e-10,0,0.0458738,0.920102,397075e-10,0,0.059772,0.908002,384886e-10,0,0.075645,0.897269,43027e-9,0,0.0934929,0.884559,479925e-10,0,0.113302,0.869161,48246e-9,0,0.135045,0.853342,509505e-10,0,0.158678,0.837633,542846e-10,0,0.184136,0.820252,554139e-10,0,0.211325,0.801872,581412e-10,0,0.240113,0.782418,585535e-10,0,0.270306,0.7631,610923e-10,0,0.301594,0.742183,613678e-10,0,0.333333,0.721098,627275e-10,0,0.365079,0.699512,629413e-10,0,0.396825,0.677372,636351e-10,0,0.428571,0.655059,633555e-10,0,0.460317,0.632567,636513e-10,0,0.492064,0.609784,628965e-10,0,0.52381,0.587237,625546e-10,0,0.555556,0.564525,615825e-10,0,0.587302,0.542181,605048e-10,0,0.619048,0.520017,596329e-10,0,0.650794,0.498204,581516e-10,0,0.68254,0.476742,569186e-10,0,0.714286,0.455803,553833e-10,0,0.746032,0.435251,537807e-10,0,0.777778,0.415374,522025e-10,0,0.809524,0.395921,503421e-10,0,0.84127,0.377253,488211e-10,0,0.873016,0.359021,468234e-10,0,0.904762,0.341637,453269e-10,0,0.936508,0.3247,433014e-10,0,0.968254,0.308625,418007e-10,0,1,1,286798e-15,0,0,1,286877e-15,0,0,1,288094e-15,0,0,1,293506e-15,0,0,1,309262e-15,0,0,0.999999,348593e-15,0,0,0.999999,444582e-15,0,0,0.999998,688591e-15,0,0,0.999996,134391e-14,0,0,0.999993,317438e-14,0,0,0.999989,835609e-14,0,0,0.999983,228677e-13,0,0,0.999974,623361e-13,0,0,0.999959,165225e-12,0,0,0.999936,419983e-12,0,0,0.999896,101546e-11,0,0,0.99983,232376e-11,0,0,0.999709,50156e-10,0,0,0.999469,10167e-9,0,0,0.998886,190775e-10,0,0,0.996819,300511e-10,0,0,0.988837,185092e-10,0,168222e-12,0.982178,134622e-10,0,259622e-9,0.975017,125961e-10,0,142595e-8,0.967101,13507e-9,0,382273e-8,0.964905,205003e-10,0,764164e-8,0.96218,29546e-9,0,0.0130121,0.956821,343738e-10,0,0.0200253,0.948829,305063e-10,0,0.0287452,0.941092,346487e-10,0,0.039218,0.931883,412061e-10,0,0.0514748,0.920211,444651e-10,0,0.0655351,0.907307,431252e-10,0,0.0814082,0.89684,490382e-10,0,0.0990939,0.884119,53334e-9,0,0.118583,0.869148,54114e-9,0,0.139856,0.853377,578536e-10,0,0.162882,0.836753,592285e-10,0,0.187615,0.820063,622787e-10,0,0.213991,0.801694,645492e-10,0,0.241918,0.782116,65353e-9,0,0.271267,0.762673,674344e-10,0,0.301847,0.742133,682788e-10,0,0.333333,0.720779,691959e-10,0,0.365079,0.699386,696817e-10,0,0.396826,0.67732,699583e-10,0,0.428572,0.654888,698447e-10,0,0.460318,0.632499,694063e-10,0,0.492064,0.609825,691612e-10,0,0.52381,0.587287,681576e-10,0,0.555556,0.564743,674138e-10,0,0.587302,0.542409,661617e-10,0,0.619048,0.520282,647785e-10,0,0.650794,0.498506,633836e-10,0,0.68254,0.477102,615905e-10,0,0.714286,0.456167,601013e-10,0,0.746032,0.435728,581457e-10,0,0.777778,0.415809,564215e-10,0,0.809524,0.396517,544997e-10,0,0.84127,0.377737,525061e-10,0,0.873016,0.359698,506831e-10,0,0.904762,0.342164,48568e-9,0,0.936508,0.325417,467826e-10,0,0.968254,0.309186,446736e-10,0,1,1,109018e-14,0,0,1,10904e-13,0,0,1,109393e-14,0,0,1,11095e-13,0,0,1,1154e-12,0,0,1,126089e-14,0,0,0.999999,15059e-13,0,0,0.999997,207899e-14,0,0,0.999994,348164e-14,0,0,0.999993,705728e-14,0,0,0.999987,163692e-13,0,0,0.999981,406033e-13,0,0,0.999969,10245e-11,0,0,0.999953,255023e-12,0,0,0.999925,61511e-11,0,0,0.999881,142218e-11,0,0,0.99981,313086e-11,0,0,0.99968,653119e-11,0,0,0.999418,12832e-9,0,0,0.998748,232497e-10,0,0,0.996066,329522e-10,0,0,0.988379,179613e-10,0,108799e-9,0.982567,143715e-10,0,921302e-9,0.976097,148096e-10,0,280738e-8,0.968475,178905e-10,0,596622e-8,0.964606,253921e-10,0,0.0105284,0.961564,348623e-10,0,0.0165848,0.955517,357612e-10,0,0.0242,0.948381,343493e-10,0,0.03342,0.941095,405849e-10,0,0.0442777,0.931923,475394e-10,0,0.0567958,0.91996,484328e-10,0,0.0709879,0.907419,502146e-10,0,0.086861,0.89618,561654e-10,0,0.104415,0.88337,587612e-10,0,0.123643,0.869046,618057e-10,0,0.144531,0.853278,657392e-10,0,0.167057,0.836091,66303e-9,0,0.191188,0.819644,704445e-10,0,0.216878,0.801246,714071e-10,0,0.244062,0.782031,740093e-10,0,0.272649,0.762066,74685e-9,0,0.302509,0.741964,766647e-10,0,0.333442,0.720554,766328e-10,0,0.365079,0.699098,777857e-10,0,0.396826,0.677189,774633e-10,0,0.428572,0.65484,776235e-10,0,0.460318,0.632496,770316e-10,0,0.492064,0.609908,762669e-10,0,0.52381,0.587312,753972e-10,0,0.555556,0.564938,739994e-10,0,0.587302,0.542577,728382e-10,0,0.619048,0.52062,71112e-9,0,0.650794,0.498819,694004e-10,0,0.68254,0.477555,675575e-10,0,0.714286,0.456568,653449e-10,0,0.746032,0.436278,636068e-10,0,0.777778,0.41637,613466e-10,0,0.809524,0.397144,594177e-10,0,0.84127,0.378412,570987e-10,0,0.873016,0.360376,550419e-10,0,0.904762,0.342906,527422e-10,0,0.936508,0.326136,506544e-10,0,0.968254,0.30997,484307e-10,0,1,1,354014e-14,0,0,1,354073e-14,0,0,1,354972e-14,0,0,1,358929e-14,0,0,1,370093e-14,0,0,0.999999,396194e-14,0,0,0.999998,453352e-14,0,0,0.999997,578828e-14,0,0,0.999994,863812e-14,0,0,0.999991,153622e-13,0,0,0.999985,316356e-13,0,0,0.999977,712781e-13,0,0,0.999964,166725e-12,0,0,0.999945,390501e-12,0,0,0.999912,895622e-12,0,0,0.999866,198428e-11,0,0,0.999786,421038e-11,0,0,0.999647,850239e-11,0,0,0.999356,162059e-10,0,0,0.998563,282652e-10,0,0,0.994928,336309e-10,0,244244e-10,0.987999,178458e-10,0,523891e-9,0.982893,159162e-10,0,194729e-8,0.977044,178056e-10,0,451099e-8,0.969972,230624e-10,0,835132e-8,0.964237,313922e-10,0,0.013561,0.960791,406145e-10,0,0.0202056,0.954292,372796e-10,0,0.0283321,0.948052,403199e-10,0,0.0379739,0.940938,479537e-10,0,0.0491551,0.931689,545292e-10,0,0.0618918,0.91987,54038e-9,0,0.0761941,0.907665,589909e-10,0,0.0920672,0.895281,642651e-10,0,0.109511,0.882621,659707e-10,0,0.12852,0.86873,709973e-10,0,0.149085,0.853008,742221e-10,0,0.171189,0.835944,761754e-10,0,0.194809,0.818949,797052e-10,0,0.21991,0.800951,812434e-10,0,0.246447,0.781847,838075e-10,0,0.274352,0.761649,84501e-9,0,0.303535,0.74152,860258e-10,0,0.333857,0.720495,866233e-10,0,0.365104,0.698742,868326e-10,0,0.396826,0.677096,87133e-9,0,0.428572,0.654782,863497e-10,0,0.460318,0.632335,860206e-10,0,0.492064,0.610031,849337e-10,0,0.52381,0.587457,838279e-10,0,0.555556,0.56513,82309e-9,0,0.587302,0.542877,803542e-10,0,0.619048,0.5209,786928e-10,0,0.650794,0.499291,765171e-10,0,0.68254,0.477971,744753e-10,0,0.714286,0.457221,72209e-9,0,0.746032,0.436803,697448e-10,0,0.777778,0.417083,675333e-10,0,0.809524,0.397749,648058e-10,0,0.84127,0.379177,625759e-10,0,0.873016,0.361061,598584e-10,0,0.904762,0.343713,575797e-10,0,0.936508,0.326894,549999e-10,0,0.968254,0.310816,527482e-10,0,1,1,10153e-12,0,0,1,101544e-13,0,0,1,101751e-13,0,0,1,102662e-13,0,0,1,10521e-12,0,0,0.999999,111049e-13,0,0,0.999999,123408e-13,0,0,0.999996,14924e-12,0,0,0.999992,204471e-13,0,0,0.999989,326539e-13,0,0,0.99998,603559e-13,0,0,0.999971,123936e-12,0,0,0.999955,269058e-12,0,0,0.999933,593604e-12,0,0,0.999901,129633e-11,0,0,0.999847,275621e-11,0,0,0.999761,564494e-11,0,0,0.999607,110485e-10,0,0,0.999282,204388e-10,0,0,0.99831,341084e-10,0,22038e-11,0.993288,294949e-10,0,242388e-9,0.987855,192736e-10,0,12503e-7,0.983167,182383e-10,0,32745e-7,0.977908,218633e-10,0,646321e-8,0.971194,290662e-10,0,0.0109133,0.963867,386401e-10,0,0.0166927,0.95982,462827e-10,0,0.0238494,0.953497,420705e-10,0,0.0324178,0.947621,477743e-10,0,0.0424225,0.940611,568258e-10,0,0.0538808,0.931174,618061e-10,0,0.0668047,0.919919,627098e-10,0,0.0812014,0.907856,694714e-10,0,0.0970745,0.894509,735008e-10,0,0.114424,0.881954,763369e-10,0,0.133246,0.868309,821896e-10,0,0.153534,0.852511,83769e-9,0,0.175275,0.835821,881615e-10,0,0.198453,0.817981,896368e-10,0,0.223042,0.800504,930906e-10,0,0.249009,0.78141,945056e-10,0,0.276304,0.761427,963605e-10,0,0.304862,0.74094,968088e-10,0,0.334584,0.720233,981481e-10,0,0.365322,0.698592,979122e-10,0,0.396826,0.676763,981057e-10,0,0.428571,0.654808,973956e-10,0,0.460318,0.632326,962619e-10,0,0.492064,0.610049,952996e-10,0,0.52381,0.58763,933334e-10,0,0.555556,0.565261,917573e-10,0,0.587302,0.543244,896636e-10,0,0.619048,0.521273,873304e-10,0,0.650794,0.499818,852648e-10,0,0.68254,0.478536,823961e-10,0,0.714286,0.457826,79939e-9,0,0.746032,0.437549,77126e-9,0,0.777778,0.41776,743043e-10,0,0.809524,0.39863,716426e-10,0,0.84127,0.379954,686456e-10,0,0.873016,0.362025,660514e-10,0,0.904762,0.344581,630755e-10,0,0.936508,0.327909,605439e-10,0,0.968254,0.311736,576345e-10,0,1,1,263344e-13,0,0,1,263373e-13,0,0,1,263815e-13,0,0,1,265753e-13,0,0,1,271132e-13,0,0,0.999999,283279e-13,0,0,0.999997,30833e-12,0,0,0.999995,358711e-13,0,0,0.999992,461266e-13,0,0,0.999985,67574e-12,0,0,0.999977,11358e-11,0,0,0.999966,213657e-12,0,0,0.999948,431151e-12,0,0,0.999923,896656e-12,0,0,0.999884,186603e-11,0,0,0.999826,381115e-11,0,0,0.999732,754184e-11,0,0,0.999561,143192e-10,0,0,0.999191,257061e-10,0,0,0.997955,405724e-10,0,744132e-10,0.992228,276537e-10,0,716477e-9,0.987638,208885e-10,0,22524e-7,0.983395,215226e-10,0,484816e-8,0.978614,270795e-10,0,860962e-8,0.972389,365282e-10,0,0.0136083,0.964392,474747e-10,0,0.0198941,0.95861,509141e-10,0,0.0275023,0.952806,48963e-9,0,0.0364584,0.94712,571119e-10,0,0.04678,0.940104,671704e-10,0,0.0584799,0.930398,687586e-10,0,0.0715665,0.919866,738161e-10,0,0.086045,0.907853,813235e-10,0,0.101918,0.894078,834582e-10,0,0.119186,0.881177,892093e-10,0,0.137845,0.867575,944548e-10,0,0.157891,0.852107,969607e-10,0,0.179316,0.835502,101456e-9,0,0.202106,0.81756,103256e-9,0,0.226243,0.79984,106954e-9,0,0.251704,0.780998,108066e-9,0,0.278451,0.761132,110111e-9,0,0.306436,0.740429,110459e-9,0,0.335586,0.719836,111219e-9,0,0.365796,0.698467,11145e-8,0,0.3969,0.676446,110393e-9,0,0.428571,0.654635,110035e-9,0,0.460318,0.632411,108548e-9,0,0.492064,0.609986,106963e-9,0,0.52381,0.587872,105238e-9,0,0.555556,0.565528,102665e-9,0,0.587302,0.543563,100543e-9,0,0.619048,0.52176,976182e-10,0,0.650794,0.500188,947099e-10,0,0.68254,0.479204,919929e-10,0,0.714286,0.458413,886139e-10,0,0.746032,0.438314,857839e-10,0,0.777778,0.418573,82411e-9,0,0.809524,0.39947,792211e-10,0,0.84127,0.380892,759546e-10,0,0.873016,0.362953,727571e-10,0,0.904762,0.345601,695738e-10,0,0.936508,0.328895,664907e-10,0,0.968254,0.312808,634277e-10,0,1,1,628647e-13,0,0,1,628705e-13,0,0,1,629587e-13,0,0,1,633441e-13,0,0,0.999999,644087e-13,0,0,0.999998,667856e-13,0,0,0.999997,715889e-13,0,0,0.999995,809577e-13,0,0,0.999989,992764e-13,0,0,0.999983,135834e-12,0,0,0.999974,210482e-12,0,0,0.999959,365215e-12,0,0,0.999939,686693e-12,0,0,0.999911,13472e-10,0,0,0.999868,26731e-10,0,0,0.999804,524756e-11,0,0,0.9997,100403e-10,0,0,0.99951,185019e-10,0,0,0.999078,322036e-10,0,620676e-11,0.997428,470002e-10,0,341552e-9,0.99162,287123e-10,0,143727e-8,0.987479,234706e-10,0,349201e-8,0.983582,260083e-10,0,66242e-7,0.979186,337927e-10,0,0.0109113,0.97325,454689e-10,0,0.0164064,0.965221,573759e-10,0,0.0231463,0.957262,544114e-10,0,0.0311571,0.952211,587006e-10,0,0.0404572,0.946631,692256e-10,0,0.0510592,0.939391,787819e-10,0,0.0629723,0.929795,792368e-10,0,0.0762025,0.91965,875075e-10,0,0.090753,0.907737,950903e-10,0,0.106626,0.893899,972963e-10,0,0.123822,0.880239,10459e-8,0,0.142337,0.866562,107689e-9,0,0.16217,0.85164,113081e-9,0,0.183314,0.835021,116636e-9,0,0.20576,0.817311,120074e-9,0,0.229496,0.798845,121921e-9,0,0.254502,0.780479,12475e-8,0,0.280753,0.760694,125255e-9,0,0.308212,0.740142,126719e-9,0,0.336825,0.719248,12636e-8,0,0.366517,0.698209,126712e-9,0,0.397167,0.676398,125769e-9,0,0.428578,0.654378,124432e-9,0,0.460318,0.632484,123272e-9,0,0.492064,0.610113,12085e-8,0,0.52381,0.587931,118411e-9,0,0.555556,0.565872,11569e-8,0,0.587302,0.543814,112521e-9,0,0.619048,0.522265,109737e-9,0,0.650794,0.500835,106228e-9,0,0.68254,0.479818,102591e-9,0,0.714286,0.459258,991288e-10,0,0.746032,0.439061,952325e-10,0,0.777778,0.419552,91895e-9,0,0.809524,0.400399,879051e-10,0,0.84127,0.381976,844775e-10,0,0.873016,0.364009,806316e-10,0,0.904762,0.346761,771848e-10,0,0.936508,0.330049,735429e-10,0,0.968254,0.314018,702103e-10,0,1,1,139968e-12,0,0,1,139979e-12,0,0,1,140145e-12,0,0,1,14087e-11,0,0,0.999999,142865e-12,0,0,0.999998,147279e-12,0,0,0.999997,156057e-12,0,0,0.999992,17276e-11,0,0,0.999989,204352e-12,0,0,0.99998,26494e-11,0,0,0.999969,383435e-12,0,0,0.999953,618641e-12,0,0,0.999929,108755e-11,0,0,0.999898,201497e-11,0,0,0.999849,381346e-11,0,0,0.999778,719815e-11,0,0,0.999661,133215e-10,0,0,0.999451,238313e-10,0,0,0.998936,401343e-10,0,113724e-9,0.99662,517346e-10,0,820171e-9,0.991094,304323e-10,0,238143e-8,0.987487,281757e-10,0,493527e-8,0.983731,320048e-10,0,856859e-8,0.979647,423905e-10,0,0.0133393,0.973837,562935e-10,0,0.0192863,0.96584,677442e-10,0,0.0264369,0.956309,623073e-10,0,0.03481,0.951523,704131e-10,0,0.0444184,0.946003,836594e-10,0,0.0552713,0.938454,911736e-10,0,0.0673749,0.929279,938264e-10,0,0.0807329,0.919239,103754e-9,0,0.0953479,0.907293,109928e-9,0,0.111221,0.893936,115257e-9,0,0.128352,0.879674,122265e-9,0,0.14674,0.865668,125733e-9,0,0.166382,0.850998,132305e-9,0,0.187276,0.834498,134844e-9,0,0.209413,0.816903,139276e-9,0,0.232786,0.798235,140984e-9,0,0.257382,0.779724,14378e-8,0,0.283181,0.760251,144623e-9,0,0.310156,0.739808,145228e-9,0,0.338269,0.718762,14539e-8,0,0.367461,0.697815,144432e-9,0,0.397646,0.67631,143893e-9,0,0.428685,0.654278,141846e-9,0,0.460318,0.632347,13935e-8,0,0.492064,0.610296,137138e-9,0,0.52381,0.588039,133806e-9,0,0.555556,0.566218,130755e-9,0,0.587302,0.544346,127128e-9,0,0.619048,0.522701,123002e-9,0,0.650794,0.501542,119443e-9,0,0.68254,0.480508,115055e-9,0,0.714286,0.460092,111032e-9,0,0.746032,0.440021,106635e-9,0,0.777778,0.420446,102162e-9,0,0.809524,0.401512,98184e-9,0,0.84127,0.38299,936497e-10,0,0.873016,0.365232,89813e-9,0,0.904762,0.347865,853073e-10,0,0.936508,0.331342,817068e-10,0,0.968254,0.315202,773818e-10,0,1,1,29368e-11,0,0,1,2937e-10,0,0,1,293998e-12,0,0,1,295298e-12,0,0,0.999999,298865e-12,0,0,0.999998,3067e-10,0,0,0.999995,322082e-12,0,0,0.999992,350767e-12,0,0,0.999986,403538e-12,0,0,0.999976,501372e-12,0,0,0.999964,68562e-11,0,0,0.999945,10374e-10,0,0,0.999919,171269e-11,0,0,0.999882,300175e-11,0,0,0.999829,542144e-11,0,0,0.999749,984182e-11,0,0,0.99962,176213e-10,0,0,0.999382,305995e-10,0,138418e-10,0.998751,496686e-10,0,389844e-9,0.995344,510733e-10,0,150343e-8,0.990768,345829e-10,0,352451e-8,0.987464,342841e-10,0,655379e-8,0.983846,399072e-10,0,0.0106554,0.980007,533219e-10,0,0.0158723,0.974494,696992e-10,0,0.0222333,0.96622,776754e-10,0,0.029758,0.956273,747718e-10,0,0.0384596,0.950952,864611e-10,0,0.0483473,0.945215,100464e-9,0,0.0594266,0.937287,103729e-9,0,0.0717019,0.928649,111665e-9,0,0.0851752,0.918791,12353e-8,0,0.0998479,0.906685,127115e-9,0,0.115721,0.893706,13628e-8,0,0.132794,0.879248,142427e-9,0,0.151067,0.864685,148091e-9,0,0.170538,0.850032,153517e-9,0,0.191204,0.833853,157322e-9,0,0.213063,0.816353,161086e-9,0,0.236107,0.797834,164111e-9,0,0.260329,0.778831,165446e-9,0,0.285714,0.759756,167492e-9,0,0.312243,0.739419,166928e-9,0,0.339887,0.718491,167e-6,0,0.368604,0.697392,165674e-9,0,0.398329,0.676102,163815e-9,0,0.428961,0.654243,162003e-9,0,0.460331,0.632176,158831e-9,0,0.492064,0.610407,155463e-9,0,0.52381,0.588394,152062e-9,0,0.555556,0.56645,147665e-9,0,0.587302,0.5449,14375e-8,0,0.619048,0.523276,138905e-9,0,0.650794,0.502179,134189e-9,0,0.68254,0.481359,129392e-9,0,0.714286,0.46092,124556e-9,0,0.746032,0.441084,11957e-8,0,0.777778,0.421517,114652e-9,0,0.809524,0.402721,109688e-9,0,0.84127,0.384222,104667e-9,0,0.873016,0.366534,999633e-10,0,0.904762,0.349205,950177e-10,0,0.936508,0.332702,907301e-10,0,0.968254,0.316599,859769e-10,0,1,1,585473e-12,0,0,1,585507e-12,0,0,1,58602e-11,0,0,0.999999,588259e-12,0,0,0.999999,594381e-12,0,0,0.999998,607754e-12,0,0,0.999995,633729e-12,0,0,0.99999,68137e-11,0,0,0.999984,767003e-12,0,0,0.999973,921212e-12,0,0,0.999959,120218e-11,0,0,0.999936,172024e-11,0,0,0.999907,268088e-11,0,0,0.999866,445512e-11,0,0,0.999806,768481e-11,0,0,0.999716,1342e-8,0,0,0.999576,232473e-10,0,0,0.9993,391694e-10,0,129917e-9,0.998498,608429e-10,0,845035e-9,0.994132,489743e-10,0,237616e-8,0.99031,384644e-10,0,484456e-8,0.987409,421768e-10,0,832472e-8,0.983981,504854e-10,0,0.0128643,0.980268,671028e-10,0,0.0184947,0.974875,852749e-10,0,0.025237,0.966063,85531e-9,0,0.0331046,0.956779,900588e-10,0,0.0421067,0.950259,10577e-8,0,0.0522487,0.944239,119458e-9,0,0.0635343,0.936341,122164e-9,0,0.0759654,0.928047,134929e-9,0,0.0895434,0.918065,145544e-9,0,0.104269,0.906267,150531e-9,0,0.120142,0.893419,161652e-9,0,0.137163,0.878758,16593e-8,0,0.15533,0.863699,174014e-9,0,0.174645,0.848876,177877e-9,0,0.195106,0.833032,184049e-9,0,0.21671,0.815557,186088e-9,0,0.239454,0.797323,19054e-8,0,0.263332,0.778124,191765e-9,0,0.288336,0.758929,192535e-9,0,0.314451,0.738979,192688e-9,0,0.341658,0.718213,191522e-9,0,0.369924,0.696947,190491e-9,0,0.399202,0.675807,187913e-9,0,0.429416,0.654147,184451e-9,0,0.460447,0.63229,181442e-9,0,0.492064,0.610499,177139e-9,0,0.523809,0.588747,172596e-9,0,0.555555,0.566783,167457e-9,0,0.587301,0.545359,162518e-9,0,0.619048,0.523984,156818e-9,0,0.650794,0.502917,151884e-9,0,0.68254,0.482294,145514e-9,0,0.714286,0.461945,140199e-9,0,0.746032,0.442133,134101e-9,0,0.777778,0.422705,128374e-9,0,0.809524,0.403916,122996e-9,0,0.84127,0.38554,116808e-9,0,0.873016,0.367909,111973e-9,0,0.904762,0.350651,105938e-9,0,0.936508,0.334208,101355e-9,0,0.968254,0.318123,957629e-10,0,1,1,111633e-11,0,0,1,111639e-11,0,0,1,111725e-11,0,0,1,112096e-11,0,0,0.999999,11311e-10,0,0,0.999997,115315e-11,0,0,0.999995,11956e-10,0,0,0.999989,127239e-11,0,0,0.999981,140772e-11,0,0,0.999969,164541e-11,0,0,0.999952,206607e-11,0,0,0.999928,281783e-11,0,0,0.999895,416835e-11,0,0,0.999848,658728e-11,0,0,0.999781,108648e-10,0,0,0.999682,182579e-10,0,0,0.999523,306003e-10,0,159122e-10,0.999205,499862e-10,0,391184e-9,0.998131,73306e-9,0,147534e-8,0.993334,513229e-10,0,34227e-7,0.99016,467783e-10,0,632232e-8,0.987321,523413e-10,0,0.0102295,0.984099,64267e-9,0,0.0151794,0.980432,843042e-10,0,0.0211947,0.974976,102819e-9,0,0.0282899,0.966429,996234e-10,0,0.0364739,0.957633,111074e-9,0,0.0457522,0.949422,128644e-9,0,0.0561278,0.943045,140076e-9,0,0.0676023,0.935448,146349e-9,0,0.0801762,0.927225,161854e-9,0,0.0938499,0.917033,169135e-9,0,0.108623,0.905762,179987e-9,0,0.124496,0.892879,189832e-9,0,0.141469,0.878435,195881e-9,0,0.159541,0.863114,20466e-8,0,0.178713,0.84776,209473e-9,0,0.198985,0.832084,214861e-9,0,0.220355,0.814915,217695e-9,0,0.242823,0.796711,220313e-9,0,0.266385,0.777603,22313e-8,0,0.291036,0.757991,222471e-9,0,0.316767,0.738371,222869e-9,0,0.343563,0.717872,221243e-9,0,0.371402,0.696619,218089e-9,0,0.400248,0.675379,21562e-8,0,0.430047,0.65411,21169e-8,0,0.460709,0.63241,206947e-9,0,0.492079,0.61046,201709e-9,0,0.52381,0.58903,196753e-9,0,0.555556,0.567267,189637e-9,0,0.587302,0.545886,184735e-9,0,0.619048,0.524714,177257e-9,0,0.650794,0.503789,171424e-9,0,0.68254,0.483204,164688e-9,0,0.714286,0.462976,157172e-9,0,0.746032,0.443294,151341e-9,0,0.777778,0.423988,143737e-9,0,0.809524,0.405325,138098e-9,0,0.84127,0.386981,130698e-9,0,0.873016,0.369436,125276e-9,0,0.904762,0.35219,118349e-9,0,0.936508,0.335804,11312e-8,0,0.968254,0.319749,106687e-9,0,1,1,204685e-11,0,0,1,204694e-11,0,0,1,204831e-11,0,0,0.999999,205428e-11,0,0,0.999999,207056e-11,0,0,0.999997,210581e-11,0,0,0.999993,21732e-10,0,0,0.999987,229365e-11,0,0,0.999979,250243e-11,0,0,0.999965,286127e-11,0,0,0.999947,348028e-11,0,0,0.999918,455588e-11,0,0,0.999881,643303e-11,0,0,0.999828,970064e-11,0,0,0.999753,153233e-10,0,0,0.999642,24793e-9,0,0,0.999464,402032e-10,0,122947e-9,0.999089,635852e-10,0,807414e-9,0.997567,857026e-10,0,227206e-8,0.992903,594912e-10,0,462812e-8,0.990011,578515e-10,0,794162e-8,0.987192,65399e-9,0,0.0122534,0.98418,819675e-10,0,0.0175888,0.980491,105514e-9,0,0.0239635,0.974779,121532e-9,0,0.031387,0.96675,119144e-9,0,0.0398644,0.958248,136125e-9,0,0.0493982,0.948884,155408e-9,0,0.0599896,0.941673,162281e-9,0,0.0716382,0.934521,176754e-9,0,0.0843437,0.926205,192873e-9,0,0.0981056,0.916089,200038e-9,0,0.112923,0.904963,213624e-9,0,0.128796,0.892089,221834e-9,0,0.145725,0.878028,232619e-9,0,0.163709,0.86249,238632e-9,0,0.182749,0.846587,247002e-9,0,0.202847,0.830988,250702e-9,0,0.224001,0.814165,255562e-9,0,0.246214,0.796135,257505e-9,0,0.269482,0.777052,258625e-9,0,0.293805,0.757201,258398e-9,0,0.319176,0.737655,256714e-9,0,0.345587,0.717477,255187e-9,0,0.373021,0.696433,251792e-9,0,0.401454,0.675084,247223e-9,0,0.430844,0.653907,242213e-9,0,0.461125,0.632561,237397e-9,0,0.492187,0.610658,229313e-9,0,0.52381,0.589322,224402e-9,0,0.555556,0.567857,216116e-9,0,0.587302,0.54652,209124e-9,0,0.619048,0.525433,201601e-9,0,0.650794,0.504679,192957e-9,0,0.68254,0.484203,186052e-9,0,0.714286,0.464203,177672e-9,0,0.746032,0.444549,170005e-9,0,0.777778,0.425346,162401e-9,0,0.809524,0.406706,1544e-7,0,0.84127,0.388576,147437e-9,0,0.873016,0.37094,139493e-9,0,0.904762,0.353996,133219e-9,0,0.936508,0.337391,125573e-9,0,0.968254,0.321648,119867e-9,0,1,1,362511e-11,0,0,1,362525e-11,0,0,1,362739e-11,0,0,0.999999,363673e-11,0,0,0.999998,366214e-11,0,0,0.999996,371698e-11,0,0,0.999992,382116e-11,0,0,0.999986,400554e-11,0,0,0.999976,432058e-11,0,0,0.999961,485194e-11,0,0,0.999938,574808e-11,0,0,0.999908,726643e-11,0,0,0.999865,984707e-11,0,0,0.999807,142217e-10,0,0,0.999723,215581e-10,0,0,0.999602,336114e-10,0,119113e-10,0.999398,527353e-10,0,355813e-9,0.998946,805809e-10,0,137768e-8,0.996647,942908e-10,0,322469e-8,0.992298,668733e-10,0,597897e-8,0.989802,716564e-10,0,968903e-8,0.987019,821355e-10,0,0.0143845,0.984219,104555e-9,0,0.0200831,0.980425,131245e-9,0,0.0267948,0.974241,139613e-9,0,0.034525,0.967006,145931e-9,0,0.0432757,0.95893,167153e-9,0,0.0530471,0.949157,188146e-9,0,0.0638386,0.94062,194625e-9,0,0.0756487,0.933509,213721e-9,0,0.0884762,0.925088,229616e-9,0,0.10232,0.915178,239638e-9,0,0.117178,0.904093,254814e-9,0,0.133051,0.891337,263685e-9,0,0.149939,0.877326,274789e-9,0,0.167841,0.861794,280534e-9,0,0.18676,0.845758,289534e-9,0,0.206696,0.829792,294446e-9,0,0.22765,0.813037,296877e-9,0,0.249625,0.795285,300217e-9,0,0.27262,0.776323,299826e-9,0,0.296636,0.756673,299787e-9,0,0.321671,0.736856,297867e-9,0,0.347718,0.716883,294052e-9,0,0.374768,0.696089,289462e-9,0,0.402804,0.67505,285212e-9,0,0.431796,0.653509,27653e-8,0,0.461695,0.63258,271759e-9,0,0.49242,0.61104,262811e-9,0,0.523822,0.589567,255151e-9,0,0.555556,0.568322,246434e-9,0,0.587302,0.547235,237061e-9,0,0.619048,0.52616,228343e-9,0,0.650794,0.505716,219236e-9,0,0.68254,0.485274,209595e-9,0,0.714286,0.465411,201011e-9,0,0.746032,0.445854,19109e-8,0,0.777778,0.426911,182897e-9,0,0.809524,0.408222,173569e-9,0,0.84127,0.390307,165496e-9,0,0.873016,0.372624,156799e-9,0,0.904762,0.355804,14917e-8,0,0.936508,0.33924,140907e-9,0,0.968254,0.323534,134062e-9,0,1,1,622487e-11,0,0,1,62251e-10,0,0,1,622837e-11,0,0,0.999999,624259e-11,0,0,0.999998,628127e-11,0,0,0.999996,636451e-11,0,0,0.999991,65218e-10,0,0,0.999984,679782e-11,0,0,0.999973,726361e-11,0,0,0.999955,803644e-11,0,0,0.999931,931397e-11,0,0,0.999896,114299e-10,0,0,0.999847,149402e-10,0,0,0.999784,207461e-10,0,0,0.999692,302493e-10,0,0,0.999554,454957e-10,0,997275e-10,0.999326,690762e-10,0,724813e-9,0.998757,101605e-9,0,20972e-7,0.995367,958745e-10,0,432324e-8,0.99209,832808e-10,0,746347e-8,0.989517,887601e-10,0,0.0115534,0.987008,10564e-8,0,0.0166134,0.98421,133179e-9,0,0.0226552,0.98021,161746e-9,0,0.0296838,0.973676,161821e-9,0,0.0377016,0.967052,178635e-9,0,0.0467079,0.959385,206765e-9,0,0.0567013,0.949461,22476e-8,0,0.0676796,0.939578,23574e-8,0,0.0796403,0.932416,25893e-8,0,0.0925812,0.923759,271228e-9,0,0.106501,0.914223,289165e-9,0,0.121397,0.902942,301156e-9,0,0.13727,0.890419,313852e-9,0,0.15412,0.876639,324408e-9,0,0.171946,0.861316,33249e-8,0,0.190751,0.84496,338497e-9,0,0.210537,0.828427,345861e-9,0,0.231305,0.811871,347863e-9,0,0.253057,0.794397,350225e-9,0,0.275797,0.775726,349915e-9,0,0.299525,0.75617,347297e-9,0,0.324242,0.736091,344232e-9,0,0.349947,0.716213,340835e-9,0,0.376633,0.695736,332369e-9,0,0.404289,0.674961,327943e-9,0,0.432895,0.653518,318533e-9,0,0.462415,0.632574,310391e-9,0,0.492788,0.61134,300755e-9,0,0.523909,0.590017,290506e-9,0,0.555556,0.568752,280446e-9,0,0.587302,0.548061,269902e-9,0,0.619048,0.52711,258815e-9,0,0.650794,0.506682,248481e-9,0,0.68254,0.486524,237141e-9,0,0.714286,0.466812,226872e-9,0,0.746032,0.44732,216037e-9,0,0.777778,0.428473,205629e-9,0,0.809524,0.409921,195691e-9,0,0.84127,0.392028,185457e-9,0,0.873016,0.374606,176436e-9,0,0.904762,0.357601,166508e-9,0,0.936508,0.341348,158385e-9,0,0.968254,0.32542,149203e-9,0,1,1,103967e-10,0,0,1,10397e-9,0,0,1,104019e-10,0,0,0.999999,104231e-10,0,0,0.999998,104806e-10,0,0,0.999995,106042e-10,0,0,0.999991,108366e-10,0,0,0.999982,112415e-10,0,0,0.999968,119174e-10,0,0,0.99995,130227e-10,0,0,0.999922,148176e-10,0,0,0.999884,177303e-10,0,0,0.99983,224564e-10,0,0,0.999758,300966e-10,0,0,0.999654,423193e-10,0,549083e-11,0.999503,614848e-10,0,296087e-9,0.999237,903576e-10,0,123144e-8,0.998491,1271e-7,0,295954e-8,0.994594,107754e-9,0,555829e-8,0.99178,103025e-9,0,907209e-8,0.989265,11154e-8,0,0.0135257,0.986998,136296e-9,0,0.0189327,0.984137,169154e-9,0,0.0252993,0.979798,196671e-9,0,0.0326272,0.97337,196678e-9,0,0.0409157,0.967239,223121e-9,0,0.0501623,0.959543,253809e-9,0,0.0603638,0.949466,265972e-9,0,0.0715171,0.939074,288372e-9,0,0.0836187,0.931118,310983e-9,0,0.0966657,0.922525,325561e-9,0,0.110656,0.912983,345725e-9,0,0.125588,0.901617,3556e-7,0,0.141461,0.889487,374012e-9,0,0.158275,0.875787,383445e-9,0,0.176031,0.860654,393972e-9,0,0.19473,0.844417,400311e-9,0,0.214374,0.82741,405004e-9,0,0.234967,0.810545,407378e-9,0,0.256512,0.793312,407351e-9,0,0.279011,0.774847,406563e-9,0,0.302468,0.755621,404903e-9,0,0.326887,0.735511,397486e-9,0,0.352266,0.715435,39357e-8,0,0.378605,0.695403,384739e-9,0,0.405897,0.674681,376108e-9,0,0.43413,0.65359,365997e-9,0,0.463277,0.632471,354957e-9,0,0.493295,0.61151,343593e-9,0,0.524106,0.59064,331841e-9,0,0.555561,0.569386,318891e-9,0,0.587302,0.548785,3072e-7,0,0.619048,0.528146,29361e-8,0,0.650794,0.507872,281709e-9,0,0.68254,0.487805,268627e-9,0,0.714286,0.468196,255887e-9,0,0.746032,0.448922,243997e-9,0,0.777778,0.430093,231662e-9,0,0.809524,0.411845,220339e-9,0,0.84127,0.393808,208694e-9,0,0.873016,0.376615,198045e-9,0,0.904762,0.359655,187375e-9,0,0.936508,0.343452,177371e-9,0,0.968254,0.32765,167525e-9,0,1,1,169351e-10,0,0,1,169356e-10,0,0,1,169427e-10,0,0,0.999999,169736e-10,0,0,0.999998,170575e-10,0,0,0.999995,172372e-10,0,0,0.99999,175739e-10,0,0,0.999979,181568e-10,0,0,0.999966,191206e-10,0,0,0.999944,20677e-9,0,0,0.999912,231644e-10,0,0,0.999869,271268e-10,0,0,0.999811,334272e-10,0,0,0.99973,433979e-10,0,0,0.999617,590083e-10,0,680315e-10,0.999445,829497e-10,0,612796e-9,0.999138,118019e-9,0,187408e-8,0.998095,156712e-9,0,395791e-8,0.993919,125054e-9,0,692144e-8,0.991333,126091e-9,0,0.0107962,0.989226,144912e-9,0,0.0155986,0.986954,175737e-9,0,0.0213364,0.983982,213883e-9,0,0.0280114,0.979128,234526e-9,0,0.0356226,0.973327,243725e-9,0,0.0441668,0.967416,2773e-7,0,0.0536399,0.959729,308799e-9,0,0.0640376,0.949758,322447e-9,0,0.0753554,0.939173,350021e-9,0,0.0875893,0.9296,370089e-9,0,0.100736,0.921181,391365e-9,0,0.114793,0.91164,413636e-9,0,0.129759,0.900435,427068e-9,0,0.145632,0.888183,441046e-9,0,0.162412,0.874772,454968e-9,0,0.180101,0.859566,461882e-9,0,0.1987,0.843579,471556e-9,0,0.218213,0.826453,474335e-9,0,0.238641,0.809164,477078e-9,0,0.259989,0.792179,47755e-8,0,0.282262,0.773866,472573e-9,0,0.305464,0.754944,469765e-9,0,0.329599,0.735133,462371e-9,0,0.35467,0.714858,453674e-9,0,0.380678,0.694829,443888e-9,0,0.407622,0.674453,432052e-9,0,0.435493,0.653685,420315e-9,0,0.464275,0.632666,406829e-9,0,0.493938,0.611676,392234e-9,0,0.524422,0.591193,379208e-9,0,0.555624,0.570145,36319e-8,0,0.587302,0.549566,349111e-9,0,0.619048,0.529278,334166e-9,0,0.650794,0.509026,318456e-9,0,0.68254,0.489186,30449e-8,0,0.714286,0.469662,289051e-9,0,0.746032,0.450691,275494e-9,0,0.777778,0.431841,261437e-9,0,0.809524,0.413752,247846e-9,0,0.84127,0.395951,235085e-9,0,0.873016,0.378633,222245e-9,0,0.904762,0.36194,210533e-9,0,0.936508,0.345599,198494e-9,0,0.968254,0.329999,188133e-9,0,1,1,269663e-10,0,0,1,26967e-9,0,0,1,269772e-10,0,0,0.999999,270214e-10,0,0,0.999998,271415e-10,0,0,0.999994,27398e-9,0,0,0.999988,278771e-10,0,0,0.999977,287019e-10,0,0,0.999961,300544e-10,0,0,0.999937,322138e-10,0,0,0.999904,356163e-10,0,0,0.999854,409465e-10,0,0,0.99979,492651e-10,0,0,0.999699,621722e-10,0,88288e-11,0.999572,819715e-10,0,223369e-9,0.999381,111689e-9,0,105414e-8,0.999016,153862e-9,0,26493e-7,0.997437,187667e-9,0,508608e-8,0.993545,155672e-9,0,840554e-8,0.991135,161455e-9,0,0.012629,0.989157,188241e-9,0,0.0177661,0.986874,226229e-9,0,0.0238198,0.983714,268668e-9,0,0.0307887,0.978301,277109e-9,0,0.0386688,0.973227,303446e-9,0,0.0474554,0.967317,341851e-9,0,0.0571428,0.959477,370885e-9,0,0.0677256,0.950012,392753e-9,0,0.0791988,0.939484,42781e-8,0,0.0915576,0.928135,443866e-9,0,0.104798,0.919819,472959e-9,0,0.118918,0.910049,491551e-9,0,0.133915,0.899181,512616e-9,0,0.149788,0.886881,523563e-9,0,0.166537,0.87359,540183e-9,0,0.184164,0.858613,547386e-9,0,0.202669,0.842809,554809e-9,0,0.222056,0.825727,558316e-9,0,0.242329,0.808086,557824e-9,0,0.263492,0.790728,556346e-9,0,0.285551,0.772987,552672e-9,0,0.30851,0.7541,543738e-9,0,0.332376,0.734669,536107e-9,0,0.357153,0.714411,523342e-9,0,0.382845,0.694196,512238e-9,0,0.409454,0.674252,497465e-9,0,0.436977,0.65357,481096e-9,0,0.465404,0.632999,467054e-9,0,0.494713,0.611994,448771e-9,0,0.524864,0.591604,431889e-9,0,0.555779,0.571134,415238e-9,0,0.587302,0.550528,396369e-9,0,0.619048,0.530292,379477e-9,0,0.650794,0.510364,361488e-9,0,0.68254,0.490749,343787e-9,0,0.714286,0.471266,327822e-9,0,0.746032,0.452462,310626e-9,0,0.777778,0.433907,295352e-9,0,0.809524,0.415659,279179e-9,0,0.84127,0.398138,264685e-9,0,0.873016,0.380833,249905e-9,0,0.904762,0.364247,236282e-9,0,0.936508,0.348041,222905e-9,0,0.968254,0.332389,210522e-9,0,1,1,420604e-10,0,0,1,420614e-10,0,0,1,420757e-10,0,0,0.999999,42138e-9,0,0,0.999997,423067e-10,0,0,0.999993,426668e-10,0,0,0.999986,433372e-10,0,0,0.999974,444857e-10,0,0,0.999956,463554e-10,0,0,0.99993,493105e-10,0,0,0.999892,539077e-10,0,0,0.999838,610005e-10,0,0,0.999767,718822e-10,0,0,0.999666,884581e-10,0,365471e-10,0.999525,113398e-9,0,485623e-9,0.999311,150043e-9,0,162096e-8,0.998865,200063e-9,0,355319e-8,0.996278,211014e-9,0,633818e-8,0.992956,189672e-9,0,0.0100043,0.991017,210262e-9,0,0.0145648,0.989055,244292e-9,0,0.0200237,0.986741,290481e-9,0,0.0263798,0.983288,334303e-9,0,0.033629,0.977784,340307e-9,0,0.0417652,0.973037,377864e-9,0,0.0507821,0.967181,4239e-7,0,0.060673,0.958971,443854e-9,0,0.0714314,0.950093,483039e-9,0,0.0830518,0.939552,517934e-9,0,0.0955288,0.927678,539449e-9,0,0.108859,0.918278,568604e-9,0,0.123038,0.908449,588505e-9,0,0.138065,0.897713,612473e-9,0,0.153938,0.885533,625575e-9,0,0.170657,0.872131,63854e-8,0,0.188224,0.857517,647034e-9,0,0.20664,0.841796,65209e-8,0,0.225909,0.824726,6544e-7,0,0.246035,0.807297,655744e-9,0,0.267022,0.789058,646716e-9,0,0.288878,0.77189,643898e-9,0,0.311607,0.753082,629973e-9,0,0.335216,0.7341,621564e-9,0,0.359713,0.714094,605171e-9,0,0.385103,0.693839,588752e-9,0,0.41139,0.673891,573294e-9,0,0.438576,0.653565,552682e-9,0,0.466656,0.633326,533446e-9,0,0.495617,0.612582,514635e-9,0,0.525431,0.59205,49303e-8,0,0.556041,0.571918,471842e-9,0,0.587338,0.551572,451713e-9,0,0.619048,0.531553,430049e-9,0,0.650794,0.51175,410445e-9,0,0.68254,0.49238,390098e-9,0,0.714286,0.473143,370033e-9,0,0.746032,0.45423,351205e-9,0,0.777778,0.435963,332049e-9,0,0.809524,0.41787,315021e-9,0,0.84127,0.400387,297315e-9,0,0.873016,0.383332,281385e-9,0,0.904762,0.366665,265397e-9,0,0.936508,0.350633,250601e-9,0,0.968254,0.334964,23589e-8,0,1,1,643736e-10,0,0,1,64375e-9,0,0,1,643947e-10,0,0,0.999999,64481e-9,0,0,0.999997,647143e-10,0,0,0.999994,652119e-10,0,0,0.999985,661359e-10,0,0,0.999972,677116e-10,0,0,0.999952,702599e-10,0,0,0.999922,742517e-10,0,0,0.99988,803906e-10,0,0,0.99982,897315e-10,0,0,0.999741,103838e-9,0,0,0.999629,12496e-8,0,149024e-9,0.999474,156161e-9,0,861027e-9,0.999229,201034e-9,0,231198e-8,0.998662,259069e-9,0,458147e-8,0.995299,245439e-9,0,770895e-8,0.992732,24498e-8,0,0.0117126,0.990847,273211e-9,0,0.0165989,0.988911,316492e-9,0,0.0223674,0.98654,37161e-8,0,0.0290135,0.982636,410352e-9,0,0.0365309,0.977346,421756e-9,0,0.0449117,0.972909,475578e-9,0,0.0541481,0.966821,522482e-9,0,0.0642326,0.958686,545008e-9,0,0.075158,0.949754,589286e-9,0,0.0869181,0.939184,619995e-9,0,0.0995074,0.927505,654266e-9,0,0.112922,0.916606,682362e-9,0,0.127157,0.906707,704286e-9,0,0.142212,0.895937,725909e-9,0,0.158085,0.883913,743939e-9,0,0.174776,0.870642,755157e-9,0,0.192287,0.856241,764387e-9,0,0.210619,0.84069,771032e-9,0,0.229775,0.823728,765906e-9,0,0.249761,0.806481,767604e-9,0,0.270582,0.787924,754385e-9,0,0.292243,0.770588,749668e-9,0,0.314753,0.751991,731613e-9,0,0.338118,0.733407,717655e-9,0,0.362347,0.713688,700604e-9,0,0.387447,0.693595,678765e-9,0,0.413424,0.673426,657042e-9,0,0.440284,0.65359,635892e-9,0,0.468027,0.633576,611569e-9,0,0.496645,0.613144,586011e-9,0,0.526122,0.592711,563111e-9,0,0.556417,0.572722,537699e-9,0,0.587451,0.552762,512556e-9,0,0.619048,0.532985,489757e-9,0,0.650794,0.513219,464139e-9,0,0.68254,0.493992,442193e-9,0,0.714286,0.47509,418629e-9,0,0.746032,0.456287,397045e-9,0,0.777778,0.438152,375504e-9,0,0.809524,0.420294,35492e-8,0,0.84127,0.402749,335327e-9,0,0.873016,0.385879,316422e-9,0,0.904762,0.369352,298333e-9,0,0.936508,0.353301,281417e-9,0,0.968254,0.337781,265203e-9,0,1,1,968267e-10,0,0,1,968284e-10,0,0,1,968556e-10,0,0,0.999999,969733e-10,0,0,0.999997,972913e-10,0,0,0.999993,979688e-10,0,0,0.999984,992239e-10,0,0,0.999969,101356e-9,0,0,0.999946,104784e-9,0,0,0.999913,110111e-9,0,0,0.999868,118217e-9,0,0,0.999801,130396e-9,0,0,0.999712,148523e-9,0,124907e-10,0.999589,175233e-9,0,355405e-9,0.999416,213999e-9,0,13528e-7,0.999136,268529e-9,0,312557e-8,0.998367,333088e-9,0,573045e-8,0.994701,304757e-9,0,919397e-8,0.992497,318031e-9,0,0.0135261,0.990608,353863e-9,0,0.0187278,0.988715,409044e-9,0,0.0247947,0.986241,472967e-9,0,0.0317196,0.981696,495104e-9,0,0.039494,0.977097,532873e-9,0,0.0481087,0.972583,594447e-9,0,0.0575549,0.966142,636867e-9,0,0.0678242,0.95823,669899e-9,0,0.0789089,0.949677,719499e-9,0,0.0908023,0.939226,750584e-9,0,0.103499,0.927501,793183e-9,0,0.116993,0.915199,81995e-8,0,0.131282,0.90498,847654e-9,0,0.146364,0.894243,868929e-9,0,0.162237,0.882154,884278e-9,0,0.178902,0.869161,898108e-9,0,0.196358,0.854751,901254e-9,0,0.21461,0.839368,90679e-8,0,0.23366,0.822874,901541e-9,0,0.253512,0.805514,897297e-9,0,0.274174,0.78716,881856e-9,0,0.29565,0.769061,870032e-9,0,0.31795,0.751,851719e-9,0,0.341081,0.732614,830671e-9,0,0.365053,0.713171,806569e-9,0,0.389874,0.693472,78338e-8,0,0.415553,0.673528,756404e-9,0,0.442098,0.653397,726872e-9,0,0.469512,0.633781,700494e-9,0,0.497794,0.613877,67105e-8,0,0.526935,0.593506,640361e-9,0,0.556908,0.573667,613502e-9,0,0.587657,0.553932,583177e-9,0,0.61906,0.534345,554375e-9,0,0.650794,0.515042,527811e-9,0,0.68254,0.495674,499367e-9,0,0.714286,0.477132,47429e-8,0,0.746032,0.458609,447726e-9,0,0.777778,0.440354,424205e-9,0,0.809524,0.422765,399549e-9,0,0.84127,0.405472,378315e-9,0,0.873016,0.388482,355327e-9,0,0.904762,0.372191,336122e-9,0,0.936508,0.356099,315247e-9,0,0.968254,0.340737,29794e-8,0,1,1,143327e-9,0,0,1,14333e-8,0,0,1,143366e-9,0,0,0.999999,143524e-9,0,0,0.999996,143952e-9,0,0,0.999991,144862e-9,0,0,0.999981,146544e-9,0,0,0.999966,149391e-9,0,0,0.999941,153946e-9,0,0,0.999905,160971e-9,0,0,0.999852,171562e-9,0,0,0.99978,18729e-8,0,0,0.999681,210386e-9,0,826239e-10,0.999546,243906e-9,0,664807e-9,0.999352,291739e-9,0,196192e-8,0.999027,357419e-9,0,405941e-8,0.997886,422349e-9,0,699664e-8,0.99419,385008e-9,0,0.0107896,0.99214,409775e-9,0,0.0154415,0.990274,456418e-9,0,0.0209488,0.988455,527008e-9,0,0.0273037,0.985804,597685e-9,0,0.0344969,0.98103,613124e-9,0,0.0425183,0.976674,668321e-9,0,0.0513575,0.972021,736985e-9,0,0.0610046,0.965274,773789e-9,0,0.0714508,0.958046,830852e-9,0,0.0826877,0.949333,875766e-9,0,0.0947085,0.939135,917088e-9,0,0.107507,0.927119,952244e-9,0,0.121078,0.91469,990626e-9,0,0.135419,0.903006,101304e-8,0,0.150526,0.892368,103834e-8,0,0.166399,0.880231,105002e-8,0,0.183038,0.867432,106331e-8,0,0.200443,0.853208,106783e-8,0,0.218618,0.837956,106458e-8,0,0.237566,0.821772,105945e-8,0,0.257291,0.804328,104685e-8,0,0.2778,0.786465,103178e-8,0,0.2991,0.768004,101077e-8,0,0.321199,0.74972,985504e-9,0,0.344106,0.731682,962893e-9,0,0.36783,0.712813,932146e-9,0,0.392383,0.693139,89871e-8,0,0.417774,0.673566,869678e-9,0,0.444013,0.653483,835525e-9,0,0.471107,0.633891,799853e-9,0,0.49906,0.614433,766838e-9,0,0.527869,0.594586,732227e-9,0,0.557517,0.574769,696442e-9,0,0.587966,0.555149,663935e-9,0,0.61913,0.535898,629826e-9,0,0.650794,0.516753,596486e-9,0,0.68254,0.497816,567078e-9,0,0.714286,0.479034,534399e-9,0,0.746032,0.460975,507013e-9,0,0.777778,0.442935,477421e-9,0,0.809524,0.425263,451101e-9,0,0.84127,0.408248,424964e-9,0,0.873016,0.391339,39993e-8,0,0.904762,0.37513,377619e-9,0,0.936508,0.359172,354418e-9,0,0.968254,0.343876,334823e-9,0,1,1,209042e-9,0,0,1,209045e-9,0,0,1,209093e-9,0,0,0.999999,209304e-9,0,0,0.999996,209871e-9,0,0,0.999991,211078e-9,0,0,0.999979,213304e-9,0,0,0.999963,217061e-9,0,0,0.999933,223042e-9,0,0,0.999894,232206e-9,0,0,0.999837,245901e-9,0,0,0.999756,266023e-9,0,102927e-11,0.999648,295204e-9,0,233468e-9,0.999499,336958e-9,0,108237e-8,0.999283,395563e-9,0,268832e-8,0.998896,473785e-9,0,511138e-8,0.997006,520008e-9,0,837705e-8,0.993819,497261e-9,0,0.0124928,0.991632,523722e-9,0,0.0174561,0.989875,587258e-9,0,0.0232596,0.988109,676329e-9,0,0.0298932,0.985155,747701e-9,0,0.0373453,0.980479,768803e-9,0,0.0456045,0.976271,841054e-9,0,0.0546593,0.971347,911469e-9,0,0.0644994,0.964528,953057e-9,0,0.0751152,0.957632,102221e-8,0,0.0864981,0.948681,106122e-8,0,0.0986407,0.938716,111857e-8,0,0.111537,0.926629,114762e-8,0,0.125182,0.914025,118995e-8,0,0.139571,0.901026,121228e-8,0,0.154703,0.890358,123946e-8,0,0.170576,0.878283,12527e-7,0,0.18719,0.865459,125536e-8,0,0.204547,0.851407,126134e-8,0,0.222648,0.836276,124759e-8,0,0.241498,0.820436,124443e-8,0,0.261101,0.803253,122071e-8,0,0.281465,0.785562,120107e-8,0,0.302595,0.76718,117762e-8,0,0.324501,0.748551,114289e-8,0,0.347192,0.730564,110872e-8,0,0.370679,0.712253,107636e-8,0,0.394973,0.692867,103646e-8,0,0.420085,0.673695,996793e-9,0,0.446027,0.653912,95675e-8,0,0.47281,0.634129,916739e-9,0,0.500441,0.615004,874401e-9,0,0.528921,0.595587,833411e-9,0,0.558244,0.575965,794556e-9,0,0.588384,0.5566,75196e-8,0,0.619281,0.537428,716381e-9,0,0.650795,0.518623,676558e-9,0,0.68254,0.499964,64074e-8,0,0.714286,0.481356,605984e-9,0,0.746032,0.463279,570256e-9,0,0.777778,0.445673,540138e-9,0,0.809524,0.428032,507299e-9,0,0.84127,0.411112,479553e-9,0,0.873016,0.394444,450737e-9,0,0.904762,0.378247,424269e-9,0,0.936508,0.362415,399111e-9,0,0.968254,0.347103,375274e-9,0,1,1,300729e-9,0,0,1,300733e-9,0,0,1,300797e-9,0,0,0.999998,301072e-9,0,0,0.999996,301817e-9,0,0,0.999989,303398e-9,0,0,0.999977,306309e-9,0,0,0.999958,311209e-9,0,0,0.999927,318975e-9,0,0,0.999884,330804e-9,0,0,0.99982,34834e-8,0,0,0.999733,373854e-9,0,326995e-10,0.999613,410424e-9,0,477174e-9,0.999447,462047e-9,0,161099e-8,0.999204,533322e-9,0,353153e-8,0.998725,624964e-9,0,627965e-8,0.995871,631786e-9,0,98693e-7,0.993194,632017e-9,0,0.0143011,0.991541,68923e-8,0,0.019568,0.989773,766892e-9,0,0.0256593,0.987647,863668e-9,0,0.0325625,0.984193,922089e-9,0,0.0402647,0.980016,970749e-9,0,0.0487532,0.975859,106027e-8,0,0.058016,0.970514,112239e-8,0,0.0680419,0.963625,117212e-8,0,0.0788208,0.956959,125211e-8,0,0.0903439,0.947956,129411e-8,0,0.102604,0.93809,135879e-8,0,0.115594,0.92659,139309e-8,0,0.129309,0.913829,143253e-8,0,0.143745,0.90005,145809e-8,0,0.158901,0.888129,14748e-7,0,0.174774,0.87607,148756e-8,0,0.191365,0.863461,148714e-8,0,0.208674,0.849594,148892e-8,0,0.226705,0.834531,146496e-8,0,0.245461,0.81903,14579e-7,0,0.264947,0.802122,143039e-8,0,0.28517,0.78445,139717e-8,0,0.306137,0.766434,136312e-8,0,0.327857,0.747816,132597e-8,0,0.350341,0.729519,128323e-8,0,0.373598,0.711454,123803e-8,0,0.397642,0.692699,119097e-8,0,0.422485,0.673723,114565e-8,0,0.448139,0.654386,109552e-8,0,0.474619,0.634673,104553e-8,0,0.501933,0.615554,99985e-8,0,0.530089,0.596462,948207e-9,0,0.559087,0.577385,902299e-9,0,0.588913,0.558257,856448e-9,0,0.619525,0.5392,810395e-9,0,0.650826,0.520543,768558e-9,0,0.68254,0.502206,7239e-7,0,0.714286,0.48402,685794e-9,0,0.746032,0.465779,64471e-8,0,0.777778,0.448455,609583e-9,0,0.809524,0.431091,57227e-8,0,0.84127,0.414147,54042e-8,0,0.873016,0.39765,506545e-9,0,0.904762,0.381576,477635e-9,0,0.936508,0.365881,448446e-9,0,0.968254,0.350582,421424e-9,0,1,1,427144e-9,0,0,1,427151e-9,0,0,1,427232e-9,0,0,0.999998,42759e-8,0,0,0.999995,428555e-9,0,0,0.999988,430603e-9,0,0,0.999976,434368e-9,0,0,0.999952,440688e-9,0,0,0.999919,450667e-9,0,0,0.999871,46578e-8,0,0,0.999801,488024e-9,0,0,0.999704,520092e-9,0,129791e-9,0.999572,565553e-9,0,821056e-9,0.999389,628906e-9,0,225241e-8,0.999114,714911e-9,0,449109e-8,0.998488,819218e-9,0,756249e-8,0.995234,80415e-8,0,0.0114716,0.993021,830181e-9,0,0.0162131,0.991407,902645e-9,0,0.021776,0.989625,996934e-9,0,0.0281471,0.987064,109707e-8,0,0.0353118,0.983265,114353e-8,0,0.0432562,0.979535,12272e-7,0,0.0519665,0.975224,132642e-8,0,0.0614298,0.969574,138092e-8,0,0.0716348,0.963021,145896e-8,0,0.0825709,0.956046,152834e-8,0,0.094229,0.947136,158217e-8,0,0.106602,0.937313,16347e-7,0,0.119682,0.926073,168383e-8,0,0.133465,0.913121,171627e-8,0,0.147947,0.899165,174229e-8,0,0.163125,0.885891,176137e-8,0,0.178998,0.873783,176406e-8,0,0.195566,0.861331,176156e-8,0,0.21283,0.847569,175346e-8,0,0.230793,0.832785,172753e-8,0,0.249459,0.817442,170204e-8,0,0.268832,0.800613,166576e-8,0,0.28892,0.783597,162909e-8,0,0.30973,0.76571,15826e-7,0,0.331271,0.747021,153106e-8,0,0.353554,0.728593,148036e-8,0,0.37659,0.710661,142808e-8,0,0.400391,0.692426,136906e-8,0,0.424973,0.673623,131066e-8,0,0.450347,0.65494,125569e-8,0,0.476531,0.635448,119517e-8,0,0.503535,0.616221,113828e-8,0,0.531372,0.597531,10816e-7,0,0.560047,0.578795,102673e-8,0,0.589554,0.559892,970985e-9,0,0.619869,0.541307,919773e-9,0,0.650923,0.522608,868479e-9,0,0.68254,0.504484,82137e-8,0,0.714286,0.486603,772916e-9,0,0.746032,0.468802,730353e-9,0,0.777778,0.451172,684955e-9,0,0.809524,0.434348,647565e-9,0,0.84127,0.417445,605863e-9,0,0.873016,0.401077,571885e-9,0,0.904762,0.385039,536034e-9,0,0.936508,0.369483,504227e-9,0,0.968254,0.354272,473165e-9,0,1,1,599525e-9,0,0,1,599533e-9,0,0,1,599639e-9,0,0,0.999998,600097e-9,0,0,0.999994,601336e-9,0,0,0.999987,603958e-9,0,0,0.999972,608775e-9,0,0,0.999949,616842e-9,0,0,0.999912,629534e-9,0,0,0.999857,648658e-9,0,0,0.999781,676615e-9,0,538873e-11,0.999674,716574e-9,0,308602e-9,0.999528,772641e-9,0,127003e-8,0.999326,849806e-9,0,300783e-8,0.999009,952682e-9,0,556637e-8,0.998112,106394e-8,0,895889e-8,0.994496,102228e-8,0,0.0131827,0.992806,108586e-8,0,0.0182277,0.991211,11759e-7,0,0.0240795,0.989415,128955e-8,0,0.030723,0.986499,139038e-8,0,0.0381418,0.982679,144539e-8,0,0.046321,0.978839,153954e-8,0,0.0552459,0.974295,164417e-8,0,0.0649034,0.968784,171517e-8,0,0.0752814,0.962324,180282e-8,0,0.0863693,0.954956,186387e-8,0,0.0981578,0.94624,193817e-8,0,0.110639,0.936517,198156e-8,0,0.123806,0.925186,203042e-8,0,0.137655,0.91252,20664e-7,0,0.15218,0.898441,207822e-8,0,0.16738,0.884394,20992e-7,0,0.183253,0.871273,208748e-8,0,0.199799,0.859057,208686e-8,0,0.21702,0.845243,205519e-8,0,0.234918,0.830723,202868e-8,0,0.253496,0.815801,199501e-8,0,0.272761,0.79914,194193e-8,0,0.292719,0.782372,188824e-8,0,0.313377,0.76482,183695e-8,0,0.334745,0.746586,177418e-8,0,0.356833,0.7281,170628e-8,0,0.379654,0.709842,164063e-8,0,0.403221,0.692019,157355e-8,0,0.427548,0.67364,150262e-8,0,0.452651,0.655277,143473e-8,0,0.478545,0.636438,136371e-8,0,0.505246,0.617364,129911e-8,0,0.532768,0.598603,123014e-8,0,0.561122,0.580195,116587e-8,0,0.590309,0.561786,110398e-8,0,0.620318,0.543377,104148e-8,0,0.651102,0.525093,983984e-9,0,0.682545,0.506791,92667e-8,0,0.714286,0.489291,874326e-9,0,0.746032,0.471811,821734e-9,0,0.777778,0.454435,774698e-9,0,0.809524,0.437493,727302e-9,0,0.84127,0.420977,684039e-9,0,0.873016,0.404729,64373e-8,0,0.904762,0.388756,60285e-8,0,0.936508,0.373344,56765e-8,0,0.968254,0.358191,531929e-9,0,1,1,832169e-9,0,0,1,832178e-9,0,0,1,83231e-8,0,0,0.999998,832893e-9,0,0,0.999995,834465e-9,0,0,0.999985,837791e-9,0,0,0.999969,843893e-9,0,0,0.999944,854086e-9,0,0,0.999903,870071e-9,0,0,0.999843,894042e-9,0,0,0.999759,928865e-9,0,531805e-10,0.999643,978242e-9,0,579365e-9,0.99948,104684e-8,0,182774e-8,0.999255,114012e-8,0,387804e-8,0.998885,126188e-8,0,675709e-8,0.997405,135888e-8,0,0.010468,0.99424,133626e-8,0,0.0150018,0.992458,140905e-8,0,0.0203443,0.990929,152305e-8,0,0.0264786,0.989116,165882e-8,0,0.0333875,0.985624,174128e-8,0,0.0410536,0.982003,182108e-8,0,0.0494609,0.978336,194498e-8,0,0.0585941,0.973184,202708e-8,0,0.0684396,0.9678,212166e-8,0,0.0789851,0.961348,221366e-8,0,0.0902199,0.953841,228219e-8,0,0.102134,0.94534,235662e-8,0,0.114721,0.935552,240572e-8,0,0.127972,0.924064,244405e-8,0,0.141884,0.911827,247557e-8,0,0.156451,0.897731,248374e-8,0,0.171672,0.883409,249863e-8,0,0.187545,0.868625,246688e-8,0,0.20407,0.856529,246523e-8,0,0.221249,0.842999,242368e-8,0,0.239083,0.828505,237354e-8,0,0.257578,0.813825,232588e-8,0,0.276738,0.797813,226731e-8,0,0.296569,0.781097,219704e-8,0,0.31708,0.764038,212394e-8,0,0.338281,0.746067,204786e-8,0,0.360181,0.727687,196728e-8,0,0.382794,0.709571,188779e-8,0,0.406133,0.691503,180532e-8,0,0.430213,0.673673,171849e-8,0,0.45505,0.655732,164147e-8,0,0.480662,0.637399,155858e-8,0,0.507065,0.618616,147641e-8,0,0.534278,0.60005,140125e-8,0,0.562313,0.581713,132441e-8,0,0.59118,0.563546,125014e-8,0,0.620875,0.545605,118249e-8,0,0.651373,0.527559,11116e-7,0,0.682593,0.509764,104979e-8,0,0.714286,0.49193,985977e-9,0,0.746032,0.475011,928592e-9,0,0.777778,0.457878,873466e-9,0,0.809524,0.440979,819585e-9,0,0.84127,0.424613,772365e-9,0,0.873016,0.408549,722195e-9,0,0.904762,0.392771,680014e-9,0,0.936508,0.377317,636797e-9,0,0.968254,0.362352,598318e-9,0,1,1,114313e-8,0,0,1,114314e-8,0,0,0.999999,114331e-8,0,0,0.999998,114404e-8,0,0,0.999994,114601e-8,0,0,0.999984,115019e-8,0,0,0.999967,115784e-8,0,0,0.999937,11706e-7,0,0,0.999894,119054e-8,0,0,0.999828,122031e-8,0,0,0.999735,126331e-8,0,169263e-9,0.999606,132382e-8,0,949167e-9,0.999426,14071e-7,0,249668e-8,0.999173,151895e-8,0,486392e-8,0.99873,166102e-8,0,806323e-8,0.996243,17023e-7,0,0.0120895,0.993779,172782e-8,0,0.0169288,0.9919,18108e-7,0,0.0225633,0.990524,196028e-8,0,0.028974,0.98868,212014e-8,0,0.036142,0.984663,217598e-8,0,0.044049,0.981457,230563e-8,0,0.0526781,0.977608,243966e-8,0,0.0620137,0.972215,251336e-8,0,0.0720418,0.966798,26285e-7,0,0.0827499,0.960241,271409e-8,0,0.0941271,0.952489,278381e-8,0,0.106164,0.944127,285399e-8,0,0.118852,0.934282,290994e-8,0,0.132185,0.923271,294558e-8,0,0.146157,0.910803,296269e-8,0,0.160766,0.896705,296803e-8,0,0.176007,0.88238,296637e-8,0,0.19188,0.867116,293163e-8,0,0.208385,0.853636,289418e-8,0,0.225523,0.840469,284663e-8,0,0.243296,0.82639,278594e-8,0,0.261709,0.811759,271618e-8,0,0.280767,0.796113,263187e-8,0,0.300476,0.779518,254589e-8,0,0.320845,0.763142,246003e-8,0,0.341883,0.745464,236529e-8,0,0.363601,0.727491,226536e-8,0,0.386011,0.709414,216375e-8,0,0.409128,0.691396,207127e-8,0,0.432967,0.67368,197106e-8,0,0.457545,0.656049,187022e-8,0,0.482881,0.638188,177605e-8,0,0.508992,0.620177,168482e-8,0,0.535899,0.601506,158909e-8,0,0.563619,0.58362,150583e-8,0,0.592165,0.565496,141791e-8,0,0.621544,0.54789,133693e-8,0,0.651743,0.530323,126038e-8,0,0.682709,0.512795,118556e-8,0,0.714286,0.495199,111527e-8,0,0.746032,0.478101,10489e-7,0,0.777778,0.461511,984264e-9,0,0.809524,0.444879,92591e-8,0,0.84127,0.428424,866582e-9,0,0.873016,0.412495,814463e-9,0,0.904762,0.396975,764498e-9,0,0.936508,0.381614,715967e-9,0,0.968254,0.366732,672483e-9,0,1,1,155501e-8,0,0,1,155503e-8,0,0,1,155524e-8,0,0,0.999998,155615e-8,0,0,0.999994,15586e-7,0,0,0.999983,156379e-8,0,0,0.999963,15733e-7,0,0,0.999932,158911e-8,0,0,0.999882,161376e-8,0,0,0.99981,165041e-8,0,100875e-10,0.999708,170304e-8,0,367658e-9,0.999565,177658e-8,0,14234e-7,0.999368,187688e-8,0,327939e-8,0.999081,200989e-8,0,596629e-8,0.99852,217177e-8,0,94852e-7,0.99549,21745e-7,0,0.013824,0.993252,222357e-8,0,0.0189642,0.991727,235022e-8,0,0.0248856,0.989951,250561e-8,0,0.0315669,0.988029,268829e-8,0,0.0389882,0.984029,27496e-7,0,0.0471302,0.980683,289793e-8,0,0.0559754,0.976554,303315e-8,0,0.0655081,0.97139,313257e-8,0,0.0757138,0.965544,323656e-8,0,0.08658,0.95912,333432e-8,0,0.0980954,0.951183,34039e-7,0,0.110251,0.942974,347515e-8,0,0.123038,0.932642,350381e-8,0,0.13645,0.922158,354519e-8,0,0.150482,0.909404,353851e-8,0,0.165129,0.896071,35435e-7,0,0.18039,0.881206,349936e-8,0,0.196263,0.866077,347256e-8,0,0.212748,0.85093,3415e-6,0,0.229847,0.837703,333367e-8,0,0.247561,0.823878,3249e-6,0,0.265895,0.809449,316347e-8,0,0.284854,0.794379,306351e-8,0,0.304445,0.778138,29499e-7,0,0.324675,0.761997,284099e-8,0,0.345555,0.744938,272104e-8,0,0.367095,0.727212,260715e-8,0,0.389309,0.709549,248855e-8,0,0.41221,0.691704,236783e-8,0,0.435814,0.673689,225178e-8,0,0.460138,0.656453,213765e-8,0,0.485203,0.639128,202178e-8,0,0.511028,0.621512,191443e-8,0,0.537634,0.603598,180977e-8,0,0.565041,0.58559,170456e-8,0,0.593268,0.567852,160927e-8,0,0.622327,0.5503,151395e-8,0,0.652217,0.533033,142499e-8,0,0.682907,0.515942,133955e-8,0,0.714296,0.498814,12602e-7,0,0.746032,0.481595,118188e-8,0,0.777778,0.465117,111171e-8,0,0.809524,0.448865,104091e-8,0,0.84127,0.432711,976618e-9,0,0.873016,0.416822,91859e-8,0,0.904762,0.401272,857704e-9,0,0.936508,0.386226,807172e-9,0,0.968254,0.371321,75464e-8,0,1,1,209596e-8,0,0,1,209598e-8,0,0,1,209624e-8,0,0,0.999997,209736e-8,0,0,0.999991,210039e-8,0,0,0.999979,210678e-8,0,0,0.999959,211847e-8,0,0,0.999925,21379e-7,0,0,0.99987,216809e-8,0,0,0.999791,221281e-8,0,681487e-10,0.999677,227669e-8,0,658161e-9,0.999521,236533e-8,0,200635e-8,0.999301,248514e-8,0,41779e-7,0.998977,264185e-8,0,718648e-8,0.998191,281695e-8,0,0.0110239,0.994801,278518e-8,0,0.015672,0.993091,288774e-8,0,0.0211091,0.991571,303931e-8,0,0.0273123,0.9897,321643e-8,0,0.034259,0.987023,337332e-8,0,0.0419282,0.983289,346146e-8,0,0.0502998,0.979892,363704e-8,0,0.0593562,0.975111,373601e-8,0,0.069081,0.970351,38842e-7,0,0.0794598,0.964131,397053e-8,0,0.0904798,0.957747,408078e-8,0,0.10213,0.949536,413533e-8,0,0.1144,0.941372,420305e-8,0,0.127284,0.931049,422815e-8,0,0.140772,0.920647,425048e-8,0,0.154862,0.908033,42281e-7,0,0.169548,0.895028,422026e-8,0,0.184828,0.879968,415042e-8,0,0.200701,0.864875,408821e-8,0,0.217167,0.84918,400909e-8,0,0.234227,0.834934,391178e-8,0,0.251884,0.821397,380066e-8,0,0.270141,0.807135,367974e-8,0,0.289004,0.792363,355172e-8,0,0.308479,0.776661,3411e-6,0,0.328575,0.760705,328123e-8,0,0.349301,0.744408,314003e-8,0,0.370668,0.726994,29906e-7,0,0.392689,0.709598,285034e-8,0,0.415379,0.692112,271179e-8,0,0.438754,0.674435,257185e-8,0,0.46283,0.65676,243425e-8,0,0.48763,0.639982,230351e-8,0,0.513173,0.622983,21777e-7,0,0.539482,0.605471,204991e-8,0,0.566579,0.58796,193759e-8,0,0.594488,0.570463,181976e-8,0,0.623226,0.553058,171497e-8,0,0.6528,0.535894,161109e-8,0,0.683198,0.519089,151394e-8,0,0.714354,0.502454,142122e-8,0,0.746032,0.485681,133488e-8,0,0.777778,0.468935,124975e-8,0,0.809524,0.452951,117309e-8,0,0.84127,0.437139,110155e-8,0,0.873016,0.421446,103124e-8,0,0.904762,0.405951,966387e-9,0,0.936508,0.391003,908119e-9,0,0.968254,0.376198,848057e-9,0,1,1,280076e-8,0,0,1,280078e-8,0,0,0.999999,280109e-8,0,0,0.999997,280246e-8,0,0,0.999992,280616e-8,0,0,0.999979,281396e-8,0,0,0.999956,282822e-8,0,0,0.999916,285186e-8,0,0,0.999857,28885e-7,0,0,0.999768,294259e-8,0,196026e-9,0.999645,301946e-8,0,104842e-8,0.99947,312541e-8,0,270199e-8,0.999229,326733e-8,0,519449e-8,0.998852,344992e-8,0,852602e-8,0.997558,361052e-8,0,0.0126804,0.994417,35898e-7,0,0.017635,0.992824,372393e-8,0,0.023365,0.991344,390695e-8,0,0.0298456,0.989337,410392e-8,0,0.0370529,0.985811,420987e-8,0,0.0449651,0.982772,437488e-8,0,0.0535615,0.979001,455069e-8,0,0.0628243,0.974102,464462e-8,0,0.0727368,0.969197,480577e-8,0,0.0832844,0.962759,487818e-8,0,0.0944545,0.956207,498176e-8,0,0.106236,0.947909,503392e-8,0,0.118619,0.939596,507474e-8,0,0.131595,0.929642,509798e-8,0,0.145159,0.918807,508476e-8,0,0.159305,0.906921,505634e-8,0,0.174028,0.893312,498845e-8,0,0.189327,0.878933,49133e-7,0,0.2052,0.863986,48259e-7,0,0.221647,0.847936,470848e-8,0,0.23867,0.832253,456889e-8,0,0.25627,0.818619,442726e-8,0,0.274453,0.804788,427677e-8,0,0.293222,0.790241,411906e-8,0,0.312585,0.775162,394833e-8,0,0.33255,0.759463,377366e-8,0,0.353126,0.743598,361026e-8,0,0.374324,0.72697,343627e-8,0,0.396158,0.709646,326422e-8,0,0.418641,0.69277,309717e-8,0,0.44179,0.675371,29356e-7,0,0.465624,0.657863,277712e-8,0,0.490163,0.640772,261738e-8,0,0.515429,0.624441,24737e-7,0,0.541445,0.607497,233125e-8,0,0.568236,0.590438,218994e-8,0,0.595828,0.573224,20664e-7,0,0.624242,0.556168,193526e-8,0,0.653496,0.539232,182463e-8,0,0.683588,0.522352,170735e-8,0,0.714482,0.506172,160555e-8,0,0.746032,0.489842,150451e-8,0,0.777778,0.473463,140938e-8,0,0.809524,0.457266,132568e-8,0,0.84127,0.441609,12376e-7,0,0.873016,0.426348,116265e-8,0,0.904762,0.411002,108935e-8,0,0.936508,0.396045,101946e-8,0,0.968254,0.381448,955665e-9,0,1,1,37121e-7,0,0,1,371213e-8,0,0,1,371251e-8,0,0,0.999997,371417e-8,0,0,0.99999,371863e-8,0,0,0.999977,372807e-8,0,0,0.99995,374529e-8,0,0,0.999908,37738e-7,0,0,0.999843,381789e-8,0,123596e-10,0.999745,388273e-8,0,407442e-9,0.999608,397443e-8,0,15447e-7,0.999415,409998e-8,0,351385e-8,0.999143,426662e-8,0,63316e-7,0.9987,447625e-8,0,998679e-8,0.996363,455323e-8,0,0.0144569,0.994021,461052e-8,0,0.0197151,0.992372,476359e-8,0,0.0257344,0.991007,499101e-8,0,0.0324882,0.988767,51972e-7,0,0.0399517,0.984872,528407e-8,0,0.0481022,0.982004,548926e-8,0,0.0569191,0.977714,564385e-8,0,0.0663839,0.973076,57693e-7,0,0.0764801,0.967565,58924e-7,0,0.0871928,0.961384,599629e-8,0,0.0985095,0.954435,605998e-8,0,0.110419,0.946303,61133e-7,0,0.122912,0.937662,612028e-8,0,0.13598,0.927867,612209e-8,0,0.149617,0.916475,604813e-8,0,0.163817,0.90541,603088e-8,0,0.178577,0.891591,592218e-8,0,0.193894,0.877573,578854e-8,0,0.209767,0.862511,566648e-8,0,0.226196,0.846861,551481e-8,0,0.243182,0.83068,533754e-8,0,0.260728,0.815725,515487e-8,0,0.278837,0.802321,49655e-7,0,0.297515,0.787826,475421e-8,0,0.316768,0.773454,456002e-8,0,0.336605,0.758224,434727e-8,0,0.357034,0.74265,414444e-8,0,0.378067,0.726729,393738e-8,0,0.399717,0.710155,373575e-8,0,0.421998,0.693312,353736e-8,0,0.444928,0.67653,334368e-8,0,0.468523,0.659444,315981e-8,0,0.492806,0.642051,297809e-8,0,0.517798,0.625758,280592e-8,0,0.543525,0.609615,264254e-8,0,0.570012,0.592919,248459e-8,0,0.597288,0.576298,233327e-8,0,0.625379,0.559489,219519e-8,0,0.654307,0.542891,205441e-8,0,0.684084,0.526255,193385e-8,0,0.714693,0.509853,180745e-8,0,0.746044,0.494131,169817e-8,0,0.777778,0.478114,15913e-7,0,0.809524,0.462274,148981e-8,0,0.84127,0.446412,139537e-8,0,0.873016,0.431274,130984e-8,0,0.904762,0.41635,122403e-8,0,0.936508,0.401476,114809e-8,0,0.968254,0.386993,107563e-8,0,1,1,488216e-8,0,0,1,48822e-7,0,0,1,488265e-8,0,0,0.999997,488463e-8,0,0,0.999988,488999e-8,0,0,0.999974,490129e-8,0,0,0.999946,492191e-8,0,0,0.999897,495598e-8,0,0,0.999825,500855e-8,0,744791e-10,0.999718,508559e-8,0,712744e-9,0.999565,5194e-6,0,215249e-8,0.999352,534147e-8,0,444576e-8,0.999046,553523e-8,0,759218e-8,0.998492,577016e-8,0,0.0115714,0.995564,578487e-8,0,0.0163557,0.993339,586414e-8,0,0.021915,0.991834,606002e-8,0,0.0282201,0.990496,633312e-8,0,0.0352433,0.987826,651941e-8,0,0.042959,0.98383,660842e-8,0,0.0513439,0.98109,685523e-8,0,0.0603772,0.976131,695778e-8,0,0.0700402,0.971922,714236e-8,0,0.0803163,0.965901,721437e-8,0,0.0911908,0.959606,732017e-8,0,0.102651,0.952504,735788e-8,0,0.114686,0.944365,738493e-8,0,0.127286,0.935652,737969e-8,0,0.140443,0.925813,733612e-8,0,0.154151,0.914397,723094e-8,0,0.168405,0.903257,714002e-8,0,0.183201,0.890015,700149e-8,0,0.198536,0.876014,682813e-8,0,0.214409,0.861436,665567e-8,0,0.23082,0.845752,644526e-8,0,0.24777,0.829169,621635e-8,0,0.265263,0.813435,597789e-8,0,0.283301,0.799701,575694e-8,0,0.301889,0.785726,549866e-8,0,0.321035,0.77152,52503e-7,0,0.340746,0.75683,499619e-8,0,0.361032,0.741951,47543e-7,0,0.381904,0.726367,45084e-7,0,0.403374,0.710537,426784e-8,0,0.425457,0.693965,403487e-8,0,0.448169,0.677724,38075e-7,0,0.47153,0.66117,359431e-8,0,0.495561,0.644274,338354e-8,0,0.520284,0.627449,318163e-8,0,0.545725,0.611645,299672e-8,0,0.571911,0.595614,281016e-8,0,0.598873,0.579426,264252e-8,0,0.62664,0.563016,247509e-8,0,0.655239,0.546728,232647e-8,0,0.684692,0.530539,217803e-8,0,0.714999,0.514164,204216e-8,0,0.746106,0.498344,191403e-8,0,0.777778,0.482957,179203e-8,0,0.809524,0.467336,167695e-8,0,0.84127,0.451994,157567e-8,0,0.873016,0.436514,147113e-8,0,0.904762,0.42178,138034e-8,0,0.936508,0.407271,129219e-8,0,0.968254,0.392822,12098e-7,0,1,1,637427e-8,0,0,1,637431e-8,0,0,0.999999,637485e-8,0,0,0.999996,637721e-8,0,0,0.999987,638357e-8,0,0,0.999971,6397e-6,0,0,0.999939,642142e-8,0,0,0.999888,646177e-8,0,0,0.999807,652387e-8,0,207916e-9,0.999689,661454e-8,0,112051e-8,0.99952,674155e-8,0,287719e-8,0.999283,691313e-8,0,550145e-8,0.998936,713598e-8,0,897928e-8,0.998165,738501e-8,0,0.0132829,0.994847,734388e-8,0,0.01838,0.993182,749991e-8,0,0.0242381,0.991665,77246e-7,0,0.030826,0.989708,797579e-8,0,0.0381152,0.986663,813011e-8,0,0.0460794,0.983288,830365e-8,0,0.0546951,0.980104,853496e-8,0,0.0639411,0.974855,861045e-8,0,0.0737988,0.97045,879133e-8,0,0.0842516,0.964509,886377e-8,0,0.0952848,0.957594,890346e-8,0,0.106886,0.950546,893289e-8,0,0.119044,0.942225,890074e-8,0,0.131749,0.933365,886826e-8,0,0.144994,0.923202,87316e-7,0,0.158772,0.912605,863082e-8,0,0.173078,0.901099,847403e-8,0,0.187908,0.888177,825838e-8,0,0.203261,0.873955,801834e-8,0,0.219134,0.860091,779026e-8,0,0.235527,0.84434,752478e-8,0,0.252443,0.828517,724074e-8,0,0.269883,0.81239,693769e-8,0,0.287851,0.79721,664817e-8,0,0.306352,0.783489,634763e-8,0,0.325393,0.769514,604221e-8,0,0.344981,0.755419,573568e-8,0,0.365126,0.741083,544359e-8,0,0.385839,0.726059,515515e-8,0,0.407132,0.710809,487139e-8,0,0.42902,0.695052,459846e-8,0,0.45152,0.678886,433412e-8,0,0.474651,0.663042,407981e-8,0,0.498433,0.646634,384264e-8,0,0.52289,0.630117,360897e-8,0,0.548048,0.613804,338863e-8,0,0.573936,0.598338,318486e-8,0,0.600584,0.582687,298377e-8,0,0.628027,0.566809,280082e-8,0,0.656295,0.550817,262255e-8,0,0.685417,0.534937,245835e-8,0,0.715406,0.519151,230574e-8,0,0.74624,0.503118,21549e-7,0,0.777778,0.487723,202008e-8,0,0.809524,0.472725,189355e-8,0,0.84127,0.457599,177108e-8,0,0.873016,0.442558,165843e-8,0,0.904762,0.427624,155494e-8,0,0.936508,0.413171,145273e-8,0,0.968254,0.399122,136454e-8,0,1,1,826496e-8,0,0,1,826499e-8,0,0,1,826564e-8,0,0,0.999996,826842e-8,0,0,0.999987,827589e-8,0,0,0.999967,829167e-8,0,0,0.999933,832037e-8,0,0,0.999876,836768e-8,0,109338e-10,0.999786,844031e-8,0,427145e-9,0.999655,854603e-8,0,16384e-7,0.999468,869337e-8,0,372392e-8,0.999203,8891e-6,0,668513e-8,0.998803,914387e-8,0,0.0104968,0.99748,935838e-8,0,0.015125,0.994446,933309e-8,0,0.0205338,0.99292,953084e-8,0,0.0266884,0.991414,97893e-7,0,0.0335565,0.989049,0.0100228,0,0.0411086,0.98582,0.0101664,0,0.0493181,0.982441,0.0103582,0,0.0581613,0.978595,0.0105292,0,0.0676169,0.973495,0.0106274,0,0.0776661,0.968405,0.0107261,0,0.0882926,0.962717,0.0108234,0,0.0994817,0.955478,0.0108102,0,0.111221,0.948275,0.0107914,0,0.123499,0.940006,0.0107161,0,0.136308,0.930831,0.0106309,0,0.149639,0.920648,0.0104083,0,0.163485,0.910205,0.0102312,0,0.177843,0.898445,0.0100051,0,0.192707,0.885986,971928e-8,0,0.208077,0.872204,940747e-8,0,0.22395,0.858436,91085e-7,0,0.240326,0.843454,876595e-8,0,0.257208,0.827437,839794e-8,0,0.274596,0.811488,803692e-8,0,0.292496,0.796039,767352e-8,0,0.310911,0.781083,73097e-7,0,0.329849,0.767642,694032e-8,0,0.349316,0.753901,657476e-8,0,0.369323,0.740131,622699e-8,0,0.38988,0.725845,58838e-7,0,0.410999,0.710991,555586e-8,0,0.432696,0.696002,523089e-8,0,0.454987,0.680461,492494e-8,0,0.47789,0.664875,463464e-8,0,0.501426,0.649273,435422e-8,0,0.52562,0.63302,40875e-7,0,0.550498,0.61705,384075e-8,0,0.576089,0.601154,359557e-8,0,0.602427,0.586008,337636e-8,0,0.629544,0.570699,316019e-8,0,0.657479,0.555166,296033e-8,0,0.686264,0.539645,277552e-8,0,0.715924,0.524159,259499e-8,0,0.746459,0.508682,243257e-8,0,0.777789,0.493163,227851e-8,0,0.809524,0.478004,213083e-8,0,0.84127,0.46347,199502e-8,0,0.873016,0.448778,186967e-8,0,0.904762,0.434105,174732e-8,0,0.936508,0.419576,163861e-8,0,0.968254,0.405541,153341e-8,0,1,1,0.0106462,0,0,1,0.0106462,0,0,0.999999,0.010647,0,0,0.999995,0.0106502,0,0,0.999985,0.0106589,0,0,0.999964,0.0106773,0,0,0.999925,0.0107106,0,0,0.999861,0.0107655,0,712986e-10,0.999763,0.0108497,0,743959e-9,0.999616,0.0109716,0,227361e-8,0.999408,0.0111408,0,46983e-7,0.999112,0.0113659,0,800158e-8,0.998637,0.0116475,0,0.0121493,0.996223,0.0117231,0,0.0171023,0.994006,0.0118064,0,0.0228218,0.992444,0.0120254,0,0.0292711,0.991028,0.0123314,0,0.036417,0.98803,0.0124954,0,0.0442295,0.984816,0.0126538,0,0.0526815,0.981399,0.0128537,0,0.0617492,0.977085,0.0129694,0,0.0714114,0.972154,0.013091,0,0.0816495,0.966617,0.0131166,0,0.0924472,0.960628,0.0131583,0,0.10379,0.953295,0.0131094,0,0.115665,0.94575,0.0129966,0,0.128062,0.937654,0.0128796,0,0.140972,0.927716,0.0126477,0,0.154387,0.917932,0.0123889,0,0.168301,0.907719,0.012131,0,0.182709,0.89584,0.0118013,0,0.197608,0.883526,0.0114145,0,0.212994,0.870301,0.0110075,0,0.228867,0.856272,0.0106019,0,0.245227,0.842251,0.0101938,0,0.262074,0.826466,973254e-8,0,0.279412,0.810859,92846e-7,0,0.297244,0.795051,883304e-8,0,0.315575,0.780053,840272e-8,0,0.334412,0.76575,796438e-8,0,0.35376,0.752298,752526e-8,0,0.373631,0.739153,711486e-8,0,0.394034,0.725514,670361e-8,0,0.414983,0.711473,632656e-8,0,0.436491,0.696936,595206e-8,0,0.458575,0.682126,559191e-8,0,0.481253,0.667027,525362e-8,0,0.504547,0.651875,493805e-8,0,0.528481,0.636463,462848e-8,0,0.553081,0.620641,433936e-8,0,0.578377,0.604931,407e-5,0,0.604404,0.589549,380864e-8,0,0.631197,0.574712,357049e-8,0,0.658795,0.559775,334466e-8,0,0.687238,0.544514,312505e-8,0,0.716559,0.529555,293199e-8,0,0.746776,0.514402,274204e-8,0,0.777849,0.499302,256647e-8,0,0.809524,0.484114,239901e-8,0,0.84127,0.469308,225148e-8,0,0.873016,0.455133,210178e-8,0,0.904762,0.440939,19727e-7,0,0.936508,0.426627,184382e-8,0,0.968254,0.412509,172548e-8,0,1,1,0.013628,0,0,1,0.0136281,0,0,0.999999,0.0136289,0,0,0.999995,0.0136327,0,0,0.999983,0.0136427,0,0,0.99996,0.0136638,0,0,0.999917,0.0137022,0,0,0.999846,0.0137652,0,204597e-9,0.999736,0.0138615,0,116837e-8,0.999573,0.0140007,0,303325e-8,0.99934,0.0141927,0,580613e-8,0.999004,0.0144457,0,945626e-8,0.998407,0.0147489,0,0.0139421,0.995464,0.014731,0,0.0192202,0.993328,0.0148283,0,0.0252495,0.991799,0.0150797,0,0.0319921,0.990397,0.0154316,0,0.0394138,0.986835,0.0155005,0,0.0474843,0.983938,0.0157308,0,0.0561763,0.980154,0.0158753,0,0.0654661,0.975659,0.0159581,0,0.0753326,0.970171,0.0159832,0,0.0857571,0.964803,0.0160084,0,0.0967236,0.958366,0.0159484,0,0.108218,0.950613,0.0158001,0,0.120227,0.942874,0.0155845,0,0.132741,0.935005,0.0154292,0,0.145751,0.924991,0.0150742,0,0.159249,0.914814,0.0146757,0,0.17323,0.904743,0.0143097,0,0.187687,0.893216,0.0138695,0,0.202619,0.880769,0.0133706,0,0.218021,0.868136,0.0128606,0,0.233894,0.85469,0.0123403,0,0.250238,0.840593,0.0118091,0,0.267052,0.825808,0.011253,0,0.284341,0.81009,0.0107099,0,0.302106,0.79504,0.0101636,0,0.320354,0.779757,964041e-8,0,0.33909,0.764697,911896e-8,0,0.358322,0.750913,859533e-8,0,0.378059,0.738175,811592e-8,0,0.398311,0.725242,764504e-8,0,0.41909,0.711864,718885e-8,0,0.440412,0.698009,675843e-8,0,0.462292,0.683841,634984e-8,0,0.484748,0.669391,595502e-8,0,0.507802,0.654731,558671e-8,0,0.531477,0.639805,523578e-8,0,0.555802,0.624789,490834e-8,0,0.580805,0.609325,459448e-8,0,0.606522,0.593975,430342e-8,0,0.63299,0.578983,403019e-8,0,0.66025,0.564442,37707e-7,0,0.688346,0.549835,35316e-7,0,0.717319,0.535039,330255e-8,0,0.7472,0.520403,308932e-8,0,0.777982,0.505687,289335e-8,0,0.809524,0.490939,270818e-8,0,0.84127,0.476233,25343e-7,0,0.873016,0.461624,237097e-8,0,0.904762,0.447833,222065e-8,0,0.936508,0.433992,207561e-8,0,0.968254,0.420147,194955e-8,0,1,1,0.0173415,0,0,1,0.0173416,0,0,0.999999,0.0173426,0,0,0.999995,0.0173468,0,0,0.999983,0.0173582,0,0,0.999954,0.0173822,0,0,0.999908,0.0174258,0,669501e-11,0.999828,0.0174973,0,427399e-9,0.999705,0.0176063,0,171019e-8,0.999524,0.0177631,0,39248e-7,0.999263,0.0179781,0,705382e-8,0.998878,0.018258,0,0.0110552,0.998012,0.0185551,0,0.0158812,0.994614,0.0184264,0,0.0214852,0.993132,0.0186385,0,0.0278239,0.991563,0.0189067,0,0.0348585,0.989298,0.0191577,0,0.0425544,0.986036,0.0192522,0,0.050881,0.982558,0.0194063,0,0.059811,0.978531,0.019486,0,0.0693209,0.974198,0.0195847,0,0.0793895,0.968148,0.0194749,0,0.0899984,0.962565,0.0194277,0,0.101132,0.956041,0.0192991,0,0.112775,0.947749,0.0189893,0,0.124917,0.94018,0.018704,0,0.137547,0.93165,0.0183458,0,0.150655,0.921798,0.0178775,0,0.164236,0.911573,0.0173618,0,0.178281,0.901569,0.0168482,0,0.192788,0.890341,0.016265,0,0.207752,0.877835,0.0156199,0,0.223171,0.865472,0.0149516,0,0.239044,0.852905,0.0143274,0,0.255371,0.838906,0.0136643,0,0.272153,0.824888,0.0129903,0,0.289393,0.809977,0.0123218,0,0.307093,0.794697,0.0116572,0,0.325259,0.780028,0.0110307,0,0.343896,0.765124,0.0104236,0,0.363012,0.750411,98219e-7,0,0.382617,0.737264,924397e-8,0,0.402719,0.724799,868719e-8,0,0.423332,0.712253,816476e-8,0,0.444469,0.699267,767262e-8,0,0.466146,0.685618,719746e-8,0,0.488383,0.671736,673916e-8,0,0.511199,0.657777,631937e-8,0,0.534618,0.643497,592411e-8,0,0.558668,0.62889,553928e-8,0,0.58338,0.614299,51934e-7,0,0.608787,0.599197,485985e-8,0,0.634929,0.584175,454357e-8,0,0.661849,0.569541,425787e-8,0,0.689594,0.555193,397905e-8,0,0.718211,0.540947,372364e-8,0,0.747742,0.526593,348599e-8,0,0.778205,0.512335,326103e-8,0,0.80953,0.498017,305137e-8,0,0.84127,0.483609,285485e-8,0,0.873016,0.469368,267472e-8,0,0.904762,0.455037,249945e-8,0,0.936508,0.441493,234792e-8,0,0.968254,0.428147,219936e-8,0,1,1,0.0219422,0,0,1,0.0219423,0,0,0.999998,0.0219434,0,0,0.999993,0.0219481,0,0,0.999981,0.021961,0,0,0.999949,0.0219879,0,0,0.999896,0.0220367,0,593194e-10,0.999808,0.0221167,0,75364e-8,0.99967,0.0222383,0,237884e-8,0.999466,0.0224125,0,495612e-8,0.999174,0.0226495,0,844887e-8,0.998725,0.0229525,0,0.0128058,0.996979,0.0231123,0,0.0179742,0.994317,0.0230742,0,0.0239047,0.992781,0.0232895,0,0.0305526,0.991191,0.0235734,0,0.0378786,0.987787,0.0236152,0,0.0458475,0.985092,0.0237994,0,0.0544287,0.981121,0.0238553,0,0.0635952,0.976924,0.0238706,0,0.0733233,0.97218,0.0238704,0,0.0835922,0.965956,0.0236598,0,0.0943839,0.959998,0.0234735,0,0.105682,0.953245,0.0232277,0,0.117474,0.944445,0.0226973,0,0.129747,0.937087,0.0223527,0,0.142491,0.928341,0.0218144,0,0.155697,0.9184,0.0211516,0,0.169358,0.907959,0.0204553,0,0.183469,0.89808,0.0197673,0,0.198024,0.887047,0.0189915,0,0.21302,0.875221,0.0182082,0,0.228455,0.86269,0.0173584,0,0.244329,0.850735,0.0165718,0,0.260639,0.837545,0.0157524,0,0.277389,0.823639,0.0149482,0,0.29458,0.809699,0.0141431,0,0.312216,0.794797,0.0133527,0,0.3303,0.780578,0.0126193,0,0.34884,0.766019,0.0118914,0,0.367842,0.751447,0.0111839,0,0.387315,0.737275,0.010514,0,0.40727,0.724545,987277e-8,0,0.427717,0.712644,926569e-8,0,0.448671,0.700432,869029e-8,0,0.470149,0.687664,814691e-8,0,0.492167,0.674288,763012e-8,0,0.514746,0.660966,714437e-8,0,0.537911,0.647264,668457e-8,0,0.561688,0.633431,626581e-8,0,0.586108,0.619133,585593e-8,0,0.611206,0.604935,548188e-8,0,0.637022,0.590236,513288e-8,0,0.663599,0.575473,47906e-7,0,0.690989,0.561228,448895e-8,0,0.719242,0.547054,420233e-8,0,0.748411,0.533175,392869e-8,0,0.778531,0.519163,367445e-8,0,0.809583,0.505328,344097e-8,0,0.84127,0.491446,322003e-8,0,0.873016,0.477356,301283e-8,0,0.904762,0.46356,282592e-8,0,0.936508,0.449623,264956e-8,0,0.968254,0.436068,246956e-8,0,1,1,0.0276135,0,0,1,0.0276136,0,0,0.999998,0.0276148,0,0,0.999993,0.0276201,0,0,0.999976,0.0276342,0,0,0.999945,0.027664,0,0,0.999884,0.0277179,0,18679e-8,0.999784,0.027806,0,119607e-8,0.99963,0.0279394,0,318407e-8,0.999401,0.0281295,0,613601e-8,0.999066,0.0283858,0,999963e-8,0.998524,0.0287027,0,0.0147164,0.995702,0.0286256,0,0.0202295,0.993593,0.0286733,0,0.0264876,0.992067,0.0288989,0,0.0334452,0.990548,0.0292135,0,0.0410621,0.986775,0.0291296,0,0.0493032,0.984054,0.0293099,0,0.0581381,0.979481,0.0291881,0,0.0675397,0.975297,0.0291598,0,0.0774848,0.96981,0.028954,0,0.0879528,0.963524,0.028628,0,0.0989258,0.957398,0.0283135,0,0.110388,0.950088,0.0278469,0,0.122327,0.941538,0.0271798,0,0.134729,0.933332,0.0265388,0,0.147587,0.924392,0.0257776,0,0.160889,0.914581,0.024916,0,0.174631,0.904347,0.0240242,0,0.188806,0.894324,0.0231229,0,0.203409,0.883724,0.022153,0,0.218437,0.872207,0.0211355,0,0.233888,0.859927,0.0201048,0,0.249761,0.848373,0.0191263,0,0.266056,0.836023,0.0181306,0,0.282774,0.82289,0.0171718,0,0.299917,0.809324,0.0162196,0,0.317488,0.795361,0.0152622,0,0.335493,0.781253,0.01439,0,0.353936,0.767338,0.013533,0,0.372825,0.753156,0.0127244,0,0.392168,0.739122,0.0119454,0,0.411976,0.725358,0.0112054,0,0.432259,0.712949,0.010487,0,0.453032,0.701621,984032e-8,0,0.47431,0.689703,921495e-8,0,0.496111,0.677216,862492e-8,0,0.518456,0.664217,806882e-8,0,0.541367,0.65137,755922e-8,0,0.564872,0.638,705705e-8,0,0.589001,0.62453,661266e-8,0,0.613789,0.610601,618432e-8,0,0.639277,0.59676,578033e-8,0,0.66551,0.582433,540927e-8,0,0.692539,0.568026,506104e-8,0,0.720422,0.55414,47353e-7,0,0.749216,0.540178,442889e-8,0,0.778974,0.526513,414363e-8,0,0.809711,0.512954,388237e-8,0,0.84127,0.499403,362875e-8,0,0.873016,0.486026,340827e-8,0,0.904762,0.472345,318598e-8,0,0.936508,0.458828,297635e-8,0,0.968254,0.445379,279447e-8,0,1,1,0.0345716,0,0,1,0.0345717,0,0,0.999999,0.034573,0,0,0.999991,0.0345787,0,0,0.999974,0.0345941,0,0,0.999937,0.0346263,0,188589e-11,0.999869,0.0346847,0,409238e-9,0.999757,0.0347798,0,17674e-7,0.999582,0.0349233,0,413658e-8,0.999322,0.0351265,0,747408e-8,0.998939,0.0353967,0,0.0117157,0.998219,0.0357018,0,0.0167966,0.994974,0.0354726,0,0.0226572,0.993201,0.0355621,0,0.0292445,0.991573,0.0357641,0,0.0365123,0.989301,0.0359252,0,0.0444203,0.985712,0.0358017,0,0.0529334,0.982411,0.0358353,0,0.0620214,0.977827,0.035617,0,0.0716574,0.973278,0.0354398,0,0.0818186,0.967397,0.0350483,0,0.0924846,0.960696,0.0344795,0,0.103638,0.954349,0.0339861,0,0.115263,0.946066,0.0331323,0,0.127348,0.938012,0.032359,0,0.13988,0.929413,0.0314413,0,0.152849,0.920355,0.0304103,0,0.166248,0.910586,0.0292785,0,0.18007,0.900609,0.0281391,0,0.194308,0.890093,0.0269103,0,0.208958,0.880013,0.0257269,0,0.224018,0.869001,0.0244671,0,0.239485,0.85751,0.0232252,0,0.255359,0.84582,0.0220117,0,0.271638,0.834383,0.0208274,0,0.288324,0.822158,0.0196628,0,0.305419,0.809056,0.0185306,0,0.322927,0.795832,0.0174174,0,0.340851,0.782547,0.0163758,0,0.359199,0.7689,0.015391,0,0.377975,0.755526,0.0144488,0,0.397189,0.741681,0.0135372,0,0.416851,0.728178,0.0126957,0,0.436971,0.714642,0.0118812,0,0.457564,0.702756,0.0111165,0,0.478644,0.69175,0.0104145,0,0.500229,0.680159,974439e-8,0,0.522339,0.668073,911926e-8,0,0.544997,0.655405,851393e-8,0,0.56823,0.642921,797637e-8,0,0.592068,0.629993,745119e-8,0,0.616546,0.616828,696972e-8,0,0.641705,0.603305,652425e-8,0,0.66759,0.589833,610188e-8,0,0.694255,0.575945,570834e-8,0,0.72176,0.561745,533384e-8,0,0.750168,0.548277,500001e-8,0,0.779545,0.534467,467582e-8,0,0.809933,0.521032,438092e-8,0,0.841272,0.507877,410348e-8,0,0.873016,0.494654,383618e-8,0,0.904762,0.481592,358699e-8,0,0.936508,0.468509,337281e-8,0,0.968254,0.455293,316196e-8,0,1,1,0.0430698,0,0,1,0.0430699,0,0,0.999998,0.0430713,0,0,0.999991,0.0430773,0,0,0.99997,0.0430936,0,0,0.999928,0.0431277,0,406396e-10,0.999852,0.0431893,0,744376e-9,0.999724,0.0432895,0,24806e-7,0.999527,0.0434397,0,524779e-8,0.99923,0.0436507,0,898164e-8,0.998783,0.0439255,0,0.0136083,0.997507,0.0441104,0,0.0190582,0.994418,0.0438225,0,0.0252694,0.992864,0.0439396,0,0.0321879,0.991127,0.0440962,0,0.039767,0.987331,0.0438408,0,0.0479667,0.984819,0.0438991,0,0.056752,0.980384,0.0435906,0,0.0660929,0.975846,0.0432543,0,0.075963,0.970748,0.0428293,0,0.0863398,0.964303,0.042153,0,0.0972035,0.95772,0.0414111,0,0.108537,0.950747,0.0405893,0,0.120325,0.942533,0.0394887,0,0.132554,0.934045,0.0383544,0,0.145215,0.924942,0.037057,0,0.158296,0.915811,0.0356993,0,0.17179,0.90612,0.0342401,0,0.185691,0.896434,0.0328078,0,0.199993,0.886021,0.031288,0,0.214691,0.876081,0.0297776,0,0.229782,0.865608,0.0282334,0,0.245265,0.854924,0.026749,0,0.261138,0.843607,0.02526,0,0.277401,0.832456,0.0238214,0,0.294056,0.821342,0.0224682,0,0.311104,0.809303,0.0211297,0,0.328548,0.796468,0.0198387,0,0.346394,0.784046,0.0186227,0,0.364645,0.771262,0.0174561,0,0.38331,0.758118,0.0163806,0,0.402396,0.745075,0.0153287,0,0.421912,0.731926,0.0143647,0,0.44187,0.71863,0.0134363,0,0.462283,0.705414,0.0125603,0,0.483165,0.693792,0.0117508,0,0.504535,0.683108,0.0110016,0,0.52641,0.67183,0.0102757,0,0.548816,0.66015,962044e-8,0,0.571776,0.647907,898031e-8,0,0.595323,0.635734,840811e-8,0,0.619489,0.623208,786211e-8,0,0.644317,0.610438,734953e-8,0,0.669852,0.597345,687688e-8,0,0.696148,0.584138,643469e-8,0,0.723267,0.5707,602236e-8,0,0.75128,0.556966,56324e-7,0,0.780258,0.543607,528277e-8,0,0.810268,0.530213,493999e-8,0,0.841311,0.516912,462265e-8,0,0.873016,0.503916,43307e-7,0,0.904762,0.491146,406858e-8,0,0.936508,0.478439,381436e-8,0,0.968254,0.465834,358003e-8,0,1,1,0.0534039,0,0,1,0.053404,0,0,0.999998,0.0534055,0,0,0.999989,0.0534116,0,0,0.999968,0.0534283,0,0,0.999918,0.0534633,0,155895e-9,0.99983,0.0535262,0,120914e-8,0.999685,0.0536281,0,334944e-8,0.999461,0.0537799,0,653077e-8,0.999119,0.0539902,0,0.0106718,0.998582,0.0542524,0,0.0156907,0.995919,0.0540318,0,0.0215147,0.993735,0.0538914,0,0.0280801,0.992126,0.0539557,0,0.0353323,0.990266,0.0540401,0,0.0432247,0.986317,0.0536064,0,0.0517172,0.983213,0.0534425,0,0.0607754,0.978303,0.0528622,0,0.0703698,0.973665,0.0523363,0,0.0804742,0.968091,0.0516165,0,0.0910667,0.961026,0.0505434,0,0.102128,0.954333,0.049523,0,0.113641,0.946372,0.0481698,0,0.125591,0.938254,0.0467674,0,0.137965,0.929516,0.0452341,0,0.150754,0.920106,0.0435083,0,0.163947,0.910899,0.0417399,0,0.177537,0.901532,0.0399389,0,0.191516,0.891919,0.0380901,0,0.205881,0.882006,0.0362341,0,0.220626,0.871965,0.0343444,0,0.235749,0.862145,0.0324832,0,0.251248,0.852058,0.0306681,0,0.267121,0.84161,0.0289097,0,0.283368,0.830806,0.0272079,0,0.299992,0.820476,0.0256089,0,0.316992,0.809514,0.0240394,0,0.334374,0.797865,0.0225379,0,0.35214,0.785621,0.0211235,0,0.370296,0.773765,0.0197908,0,0.388849,0.761629,0.0185235,0,0.407807,0.748891,0.0173358,0,0.427178,0.736437,0.0162305,0,0.446974,0.723707,0.0151778,0,0.467207,0.710606,0.0141791,0,0.487892,0.698019,0.0132592,0,0.509046,0.686203,0.0123887,0,0.530687,0.675692,0.0115976,0,0.552839,0.664826,0.0108325,0,0.575527,0.65349,0.0101348,0,0.59878,0.641774,947756e-8,0,0.622634,0.629794,886058e-8,0,0.647128,0.617647,828526e-8,0,0.672308,0.60534,775312e-8,0,0.698231,0.592718,726033e-8,0,0.724958,0.579746,679731e-8,0,0.752563,0.566763,636111e-8,0,0.781127,0.553515,595228e-8,0,0.810733,0.540118,556876e-8,0,0.841426,0.527325,523051e-8,0,0.873016,0.514265,490712e-8,0,0.904762,0.501406,460297e-8,0,0.936508,0.488922,431247e-8,0,0.968254,0.476541,40472e-7,0,1,1,0.0659184,0,0,1,0.0659185,0,0,0.999998,0.06592,0,0,0.999988,0.0659259,0,0,0.999963,0.0659423,0,0,0.999907,0.0659764,0,374198e-9,0.999806,0.0660376,0,182071e-8,0.999639,0.0661361,0,43894e-7,0.999378,0.0662814,0,800055e-8,0.998985,0.0664779,0,0.0125594,0.998285,0.0666914,0,0.0179786,0.995071,0.0661989,0,0.0241822,0.993172,0.0660454,0,0.031106,0.991438,0.0660105,0,0.0386952,0.988428,0.0656875,0,0.0469032,0.985218,0.0652913,0,0.0556905,0.981128,0.0647107,0,0.065023,0.976015,0.0638491,0,0.0748717,0.97097,0.062993,0,0.0852112,0.964582,0.0617927,0,0.0960199,0.957383,0.0603626,0,0.107279,0.949969,0.0588128,0,0.118971,0.941843,0.0570274,0,0.131084,0.933624,0.0551885,0,0.143604,0.924543,0.053122,0,0.156521,0.914919,0.0508897,0,0.169825,0.905773,0.0486418,0,0.18351,0.896434,0.0463364,0,0.197569,0.887195,0.0440623,0,0.211997,0.877706,0.0417799,0,0.226789,0.867719,0.03945,0,0.241944,0.858587,0.037243,0,0.257458,0.849317,0.0350956,0,0.273331,0.839585,0.0329852,0,0.289563,0.829856,0.0310028,0,0.306154,0.819589,0.0290953,0,0.323108,0.809714,0.0272738,0,0.340426,0.79934,0.0255631,0,0.358113,0.788224,0.0239175,0,0.376175,0.776619,0.0223831,0,0.394616,0.76521,0.0209298,0,0.413445,0.753716,0.0195786,0,0.432671,0.741564,0.0183001,0,0.452305,0.729413,0.0171259,0,0.472358,0.717146,0.0159933,0,0.492845,0.70436,0.0149495,0,0.513783,0.69219,0.0139681,0,0.535189,0.680289,0.0130577,0,0.557087,0.669611,0.0122198,0,0.5795,0.659113,0.0114174,0,0.602459,0.648148,0.0106729,0,0.625997,0.636905,998997e-8,0,0.650154,0.625154,934313e-8,0,0.674976,0.613481,874839e-8,0,0.700518,0.60154,818265e-8,0,0.726845,0.58943,766889e-8,0,0.754032,0.576828,717153e-8,0,0.782167,0.564194,672696e-8,0,0.811344,0.551501,630863e-8,0,0.841644,0.538635,592177e-8,0,0.873016,0.525724,554888e-8,0,0.904762,0.513209,520225e-8,0,0.936508,0.500457,488231e-8,0,0.968254,0.48799,457153e-8,0,1,1,0.0810131,0,0,1,0.0810133,0,0,0.999997,0.0810145,0,0,0.999985,0.08102,0,0,0.999956,0.0810347,0,195026e-10,0.999893,0.0810656,0,719316e-9,0.999777,0.0811205,0,259774e-8,0.999583,0.081208,0,561807e-8,0.999281,0.0813343,0,967472e-8,0.998813,0.0814969,0,0.0146627,0.997597,0.0815217,0,0.0204902,0.994379,0.0808502,0,0.0270802,0.992744,0.0806792,0,0.0343674,0.990745,0.0804589,0,0.0422974,0.986646,0.0796107,0,0.0508242,0.983611,0.0790913,0,0.0599087,0.978869,0.0780746,0,0.0695175,0.973475,0.0768218,0,0.0796223,0.967845,0.0754926,0,0.0901983,0.960778,0.0737063,0,0.101224,0.953333,0.0718052,0,0.112682,0.945274,0.0695946,0,0.124555,0.936955,0.0672492,0,0.136831,0.928319,0.0647732,0,0.149496,0.919075,0.0620947,0,0.162542,0.909114,0.0591816,0,0.175958,0.900137,0.0563917,0,0.189739,0.891069,0.0535392,0,0.203877,0.882262,0.0507642,0,0.218368,0.873232,0.0479793,0,0.233208,0.864042,0.045226,0,0.248393,0.855002,0.0425413,0,0.263923,0.846569,0.0400126,0,0.279796,0.837714,0.0375269,0,0.296012,0.828918,0.0352027,0,0.312573,0.819783,0.0330011,0,0.329479,0.810129,0.0308908,0,0.346734,0.800866,0.0289112,0,0.364342,0.79093,0.0270255,0,0.382307,0.780593,0.0252758,0,0.400637,0.769511,0.0236178,0,0.419337,0.758558,0.0220652,0,0.438418,0.747632,0.0206289,0,0.457889,0.736146,0.0192873,0,0.477761,0.724093,0.0180333,0,0.49805,0.71234,0.0168264,0,0.51877,0.700201,0.015746,0,0.53994,0.687949,0.0147027,0,0.561581,0.676163,0.0137512,0,0.583718,0.665001,0.0128655,0,0.60638,0.65472,0.0120366,0,0.629599,0.644213,0.0112604,0,0.653415,0.633382,0.0105413,0,0.677874,0.62212,986498e-8,0,0.70303,0.610631,923308e-8,0,0.728948,0.599078,864206e-8,0,0.755706,0.587519,811784e-8,0,0.783396,0.575505,761237e-8,0,0.812121,0.563148,713949e-8,0,0.841989,0.550828,668379e-8,0,0.873035,0.538458,627715e-8,0,0.904762,0.525905,588336e-8,0,0.936508,0.513517,552687e-8,0,0.968254,0.501395,519681e-8,0,1,1,0.0991506,0,0,1,0.0991504,0,0,0.999996,0.0991515,0,0,0.999984,0.0991558,0,0,0.999947,0.0991672,0,114389e-9,0.999874,0.0991912,0,121503e-8,0.999739,0.0992331,0,356108e-8,0.999514,0.0992983,0,705578e-8,0.999159,0.0993877,0,0.011574,0.998586,0.0994837,0,0.017003,0.995731,0.0988425,0,0.0232484,0.993384,0.098276,0,0.0302318,0.991615,0.0979269,0,0.0378884,0.989029,0.0973432,0,0.0461641,0.985373,0.0963539,0,0.0550136,0.981278,0.0952306,0,0.0643988,0.975777,0.0936233,0,0.0742868,0.970526,0.0920219,0,0.0846501,0.963755,0.0898912,0,0.0954644,0.956676,0.0876064,0,0.106709,0.948099,0.0847751,0,0.118367,0.939718,0.0818638,0,0.130423,0.931305,0.078857,0,0.142862,0.922342,0.0756127,0,0.155674,0.912842,0.0721473,0,0.168849,0.903304,0.0686195,0,0.182378,0.89411,0.0650589,0,0.196255,0.885512,0.0616022,0,0.210473,0.877193,0.0582434,0,0.225027,0.86877,0.0548979,0,0.239915,0.860267,0.0516095,0,0.255132,0.851915,0.048468,0,0.270678,0.843912,0.0454447,0,0.286551,0.83604,0.0425612,0,0.302751,0.828245,0.0398752,0,0.31928,0.820159,0.0373198,0,0.336138,0.81167,0.034916,0,0.35333,0.802659,0.0326402,0,0.370858,0.793921,0.0304901,0,0.388728,0.784713,0.0284857,0,0.406944,0.774946,0.0266186,0,0.425515,0.76448,0.0248593,0,0.444449,0.753793,0.0232114,0,0.463756,0.743506,0.0217039,0,0.483447,0.732555,0.0202841,0,0.503535,0.720965,0.0189648,0,0.524036,0.709422,0.0177189,0,0.544968,0.697756,0.0165626,0,0.56635,0.685565,0.015483,0,0.588208,0.673987,0.0144892,0,0.610569,0.66244,0.0135607,0,0.633466,0.651675,0.0126956,0,0.656936,0.641598,0.0118788,0,0.681025,0.63121,0.0111261,0,0.705788,0.620514,0.010437,0,0.731289,0.609366,978747e-8,0,0.757606,0.598137,917257e-8,0,0.784834,0.586966,859778e-8,0,0.813085,0.575549,806803e-8,0,0.842485,0.563797,757294e-8,0,0.87313,0.551758,710592e-8,0,0.904762,0.539894,66841e-7,0,0.936508,0.527901,627901e-8,0,0.968254,0.515819,590506e-8,0,1,1,0.120864,0,0,1,0.120864,0,0,0.999996,0.120864,0,0,0.99998,0.120867,0,0,0.99994,0.120872,0,323781e-9,0.999852,0.120884,0,188693e-8,0.999693,0.120903,0,473489e-8,0.999426,0.120929,0,872704e-8,0.999002,0.120955,0,0.0137237,0.998235,0.120918,0,0.0196068,0.994608,0.119764,0,0.0262803,0.992997,0.119265,0,0.0336657,0.990968,0.11863,0,0.0416987,0.987002,0.117261,0,0.0503261,0.983524,0.116009,0,0.0595035,0.97875,0.114252,0,0.0691935,0.972652,0.11193,0,0.0793645,0.966613,0.109555,0,0.0899894,0.959275,0.106612,0,0.101045,0.951272,0.103375,0,0.112512,0.942323,0.0996594,0,0.124372,0.933679,0.0958841,0,0.136611,0.924822,0.0919265,0,0.149216,0.915742,0.0878061,0,0.162176,0.906348,0.0834894,0,0.175482,0.896883,0.079085,0,0.189125,0.88774,0.0746745,0,0.203098,0.87986,0.0705773,0,0.217396,0.871998,0.0665005,0,0.232015,0.864325,0.0625413,0,0.24695,0.856685,0.0586781,0,0.2622,0.84925,0.0550063,0,0.277761,0.841719,0.0514727,0,0.293634,0.834755,0.0481398,0,0.309819,0.827853,0.0450172,0,0.326315,0.820888,0.0420969,0,0.343126,0.813616,0.0393702,0,0.360254,0.805767,0.0367771,0,0.377701,0.797338,0.0343274,0,0.395474,0.789122,0.0320529,0,0.413577,0.780601,0.0299485,0,0.432018,0.771424,0.0279812,0,0.450804,0.761502,0.0261054,0,0.469944,0.751166,0.0243942,0,0.489451,0.741276,0.0228087,0,0.509337,0.730898,0.0213265,0,0.529617,0.719878,0.0199307,0,0.550307,0.708379,0.0186574,0,0.571428,0.697165,0.0174446,0,0.593003,0.685554,0.0163144,0,0.615059,0.673631,0.015276,0,0.637628,0.662385,0.0143003,0,0.660746,0.651059,0.0134112,0,0.68446,0.640451,0.0125794,0,0.70882,0.630536,0.011793,0,0.733893,0.620316,0.0110547,0,0.759756,0.609722,0.0103668,0,0.786505,0.598804,973009e-8,0,0.814259,0.587871,912812e-8,0,0.843157,0.577121,858916e-8,0,0.87334,0.566019,807333e-8,0,0.904762,0.554664,759687e-8,0,0.936508,0.543101,714759e-8,0,0.968254,0.531558,673418e-8,0,1,1,0.146767,0,0,1,0.146767,0,0,0.999997,0.146767,0,0,0.999977,0.146765,0,320658e-11,0.999929,0.146762,0,682576e-9,0.999823,0.146753,0,276402e-8,0.999633,0.146735,0,614771e-8,0.999314,0.146699,0,0.0106613,0.998796,0.14662,0,0.0161546,0.997124,0.146107,0,0.0225063,0.994062,0.144857,0,0.0296198,0.992154,0.144011,0,0.037417,0.989186,0.142712,0,0.0458348,0.985279,0.140926,0,0.0548211,0.980826,0.13885,0,0.0643326,0.975056,0.136168,0,0.074333,0.969005,0.133217,0,0.0847917,0.961554,0.12959,0,0.0956828,0.954206,0.125886,0,0.106984,0.945046,0.121335,0,0.118675,0.935678,0.116492,0,0.130741,0.926748,0.111635,0,0.143166,0.917764,0.106625,0,0.155939,0.908358,0.101325,0,0.169049,0.899219,0.0960249,0,0.182487,0.890089,0.0906527,0,0.196245,0.881488,0.0853905,0,0.210317,0.874031,0.0804177,0,0.224697,0.866932,0.0756005,0,0.23938,0.859976,0.0709019,0,0.254364,0.853375,0.0664391,0,0.269646,0.846971,0.0622012,0,0.285223,0.840483,0.058129,0,0.301096,0.833969,0.0542762,0,0.317265,0.82806,0.0507042,0,0.333729,0.822128,0.047368,0,0.350491,0.815989,0.044272,0,0.367554,0.809336,0.0413444,0,0.38492,0.802177,0.038601,0,0.402594,0.79441,0.0360227,0,0.420582,0.786573,0.0336383,0,0.438891,0.778619,0.0314321,0,0.457527,0.77,0.029362,0,0.476499,0.760698,0.0274102,0,0.49582,0.750932,0.0256146,0,0.5155,0.740993,0.023974,0,0.535555,0.731159,0.0224182,0,0.556,0.720836,0.0209889,0,0.576855,0.709913,0.0196411,0,0.598143,0.698415,0.0183824,0,0.619888,0.68745,0.0172222,0,0.642123,0.676154,0.0161509,0,0.664883,0.664383,0.0151397,0,0.688211,0.6533,0.0141873,0,0.71216,0.642072,0.0133105,0,0.736792,0.631412,0.0124932,0,0.762186,0.621622,0.0117408,0,0.788439,0.611681,0.0110358,0,0.815672,0.60142,0.0103775,0,0.844034,0.59083,975623e-8,0,0.873699,0.580254,918084e-8,0,0.904765,0.569841,864721e-8,0,0.936508,0.559224,815731e-8,0,0.968254,0.548315,767924e-8,0,1,1,0.177563,0,0,1,0.177563,0,0,0.999994,0.177562,0,0,0.999972,0.177555,0,664171e-10,0.999914,0.177536,0,12276e-7,0.999787,0.177496,0,388025e-8,0.999556,0.17742,0,783463e-8,0.999165,0.177285,0,0.0128953,0.9985,0.177037,0,0.0189053,0.995388,0.175634,0,0.025742,0.993102,0.174375,0,0.033309,0.990992,0.173121,0,0.0415298,0.986932,0.170896,0,0.0503425,0.982786,0.16847,0,0.0596964,0.977592,0.165455,0,0.0695498,0.971075,0.161676,0,0.0798676,0.963967,0.157458,0,0.0906201,0.956397,0.152836,0,0.101783,0.947489,0.147467,0,0.113333,0.937564,0.14145,0,0.125254,0.928182,0.135383,0,0.137529,0.919027,0.129212,0,0.150144,0.909618,0.12276,0,0.163088,0.900492,0.116273,0,0.176351,0.891671,0.1098,0,0.189924,0.883146,0.103362,0,0.203799,0.875151,0.0970799,0,0.21797,0.868338,0.0911732,0,0.232433,0.862033,0.0854966,0,0.247182,0.856107,0.0800691,0,0.262216,0.850644,0.0749618,0,0.27753,0.845261,0.070079,0,0.293124,0.839885,0.0654321,0,0.308997,0.834609,0.0610975,0,0.325149,0.829083,0.0569741,0,0.341581,0.82404,0.0531736,0,0.358294,0.818968,0.049665,0,0.37529,0.813496,0.0463856,0,0.392573,0.807533,0.0433217,0,0.410148,0.80099,0.0404402,0,0.428019,0.793891,0.0377578,0,0.446192,0.786281,0.0352616,0,0.464676,0.778773,0.0329577,0,0.483478,0.770737,0.030808,0,0.502608,0.762094,0.0287964,0,0.522079,0.752898,0.0269254,0,0.541905,0.743306,0.0251926,0,0.5621,0.733416,0.023595,0,0.582684,0.723742,0.0221155,0,0.603677,0.713542,0.0207435,0,0.625106,0.702755,0.019434,0,0.646998,0.691484,0.0182046,0,0.66939,0.680531,0.0170771,0,0.692324,0.66953,0.0160339,0,0.715849,0.658126,0.0150677,0,0.740028,0.646933,0.0141551,0,0.764937,0.636107,0.0133179,0,0.790673,0.625271,0.0125284,0,0.817358,0.615225,0.0117937,0,0.84515,0.605678,0.0111181,0,0.874244,0.59583,0.0104759,0,0.904828,0.585704,986672e-8,0,0.936508,0.575413,929712e-8,0,0.968254,0.565373,876713e-8,0,1,1,0.214058,0,0,0.999999,0.214058,0,0,0.999994,0.214055,0,0,0.999966,0.214039,0,259642e-9,0.999893,0.213998,0,200075e-8,0.999737,0.21391,0,527775e-8,0.999449,0.213745,0,983959e-8,0.99896,0.213458,0,0.0154755,0.9979,0.212855,0,0.0220249,0.994278,0.210779,0,0.0293654,0.992254,0.20926,0,0.0374021,0.98881,0.206908,0,0.0460604,0.984715,0.204009,0,0.0552802,0.979738,0.200471,0,0.0650127,0.972884,0.195813,0,0.0752175,0.965996,0.190856,0,0.0858612,0.957974,0.185077,0,0.0969155,0.949155,0.17868,0,0.108356,0.939288,0.171513,0,0.120163,0.928996,0.163838,0,0.132319,0.919563,0.156246,0,0.144808,0.910004,0.148359,0,0.157618,0.900791,0.140417,0,0.170737,0.892135,0.132569,0,0.184155,0.883803,0.124741,0,0.197866,0.876034,0.117091,0,0.211861,0.869219,0.109835,0,0.226134,0.863062,0.102859,0,0.240682,0.857795,0.0962928,0,0.255499,0.853009,0.0900725,0,0.270583,0.848603,0.0842101,0,0.285931,0.844335,0.0786527,0,0.301542,0.840208,0.0734397,0,0.317415,0.836035,0.0685334,0,0.33355,0.83172,0.0639275,0,0.349948,0.827135,0.0595909,0,0.36661,0.822797,0.0556204,0,0.383539,0.818387,0.0519394,0,0.400738,0.813565,0.0485317,0,0.41821,0.808142,0.0453138,0,0.435961,0.802212,0.0423354,0,0.453997,0.79573,0.0395553,0,0.472324,0.788741,0.036988,0,0.490951,0.781093,0.0345688,0,0.509887,0.773597,0.0323297,0,0.529144,0.765622,0.0302719,0,0.548735,0.757083,0.0283477,0,0.568674,0.747992,0.0265562,0,0.588979,0.738591,0.0248844,0,0.609671,0.728719,0.0233342,0,0.630773,0.719146,0.0219081,0,0.652314,0.709165,0.0205711,0,0.674328,0.69875,0.0193248,0,0.696854,0.687884,0.0181582,0,0.719942,0.676818,0.0170746,0,0.743651,0.666247,0.0160718,0,0.768057,0.655284,0.0151262,0,0.793253,0.64401,0.0142561,0,0.819363,0.633353,0.0134327,0,0.846547,0.622674,0.012653,0,0.875017,0.612265,0.0119354,0,0.905021,0.602455,0.0112533,0,0.936508,0.593147,0.0106234,0,0.968254,0.583592,0.0100213,0,1,1,0.25717,0,0,1,0.25717,0,0,0.999992,0.257164,0,0,0.999958,0.257135,0,641715e-9,0.999864,0.25706,0,305314e-8,0.999666,0.256897,0,700975e-8,0.999302,0.256596,0,0.0122194,0.998663,0.25607,0,0.0184622,0.995607,0.254123,0,0.0255773,0.993094,0.252081,0,0.0334439,0.9907,0.249867,0,0.0419696,0.98594,0.246118,0,0.0510823,0.981214,0.242049,0,0.0607242,0.974966,0.236869,0,0.0708486,0.967589,0.230724,0,0.081417,0.95915,0.223635,0,0.0923974,0.950257,0.21596,0,0.103763,0.940165,0.207296,0,0.115491,0.929396,0.197901,0,0.127562,0.919288,0.188437,0,0.13996,0.909428,0.178762,0,0.15267,0.900105,0.169072,0,0.165679,0.891418,0.159478,0,0.178979,0.883347,0.15002,0,0.192558,0.875992,0.140813,0,0.20641,0.869466,0.13196,0,0.220529,0.863699,0.123501,0,0.234907,0.858553,0.115436,0,0.249542,0.854379,0.107901,0,0.264428,0.850894,0.10088,0,0.279564,0.847632,0.0942296,0,0.294947,0.844571,0.0879861,0,0.310575,0.84163,0.0821534,0,0.326448,0.838542,0.0766409,0,0.342566,0.835412,0.0715322,0,0.358929,0.831899,0.0666883,0,0.37554,0.828177,0.0622175,0,0.392399,0.82416,0.0580452,0,0.409511,0.820393,0.054267,0,0.426878,0.816068,0.0507172,0,0.444506,0.811201,0.0474041,0,0.4624,0.805785,0.0443174,0,0.480566,0.799878,0.0414562,0,0.499013,0.793469,0.0388147,0,0.517749,0.786473,0.0363453,0,0.536785,0.778874,0.0340225,0,0.556134,0.771277,0.0318599,0,0.575809,0.763426,0.0298859,0,0.595827,0.755044,0.0280357,0,0.616207,0.746161,0.0262979,0,0.636973,0.737124,0.0247295,0,0.65815,0.72761,0.0232514,0,0.679772,0.717822,0.0218755,0,0.701876,0.708279,0.0205942,0,0.724509,0.698333,0.0193947,0,0.74773,0.68802,0.0182717,0,0.771609,0.677321,0.0172044,0,0.79624,0.666504,0.0162122,0,0.821743,0.656184,0.0152924,0,0.84828,0.64556,0.0144326,0,0.876069,0.634636,0.0136157,0,0.905404,0.624124,0.0128612,0,0.936508,0.613914,0.0121435,0,0.968254,0.603589,0.0114887,0,1,1,0.307946,0,0,0.999999,0.307945,0,0,0.999988,0.307934,0,204479e-10,0.999944,0.307886,0,127833e-8,0.999824,0.307756,0,445047e-8,0.999565,0.30748,0,914673e-8,0.999085,0.306966,0,0.0150498,0.998103,0.306004,0,0.0219367,0.994249,0.303028,0,0.0296485,0.991807,0.300435,0,0.038068,0.987773,0.296554,0,0.0471062,0.982673,0.2916,0,0.0566942,0.976623,0.285641,0,0.0667768,0.968757,0.27815,0,0.0773099,0.959849,0.269529,0,0.088257,0.950663,0.260248,0,0.0995879,0.940129,0.249704,0,0.111277,0.92895,0.238291,0,0.123304,0.917996,0.226501,0,0.13565,0.907813,0.214669,0,0.148299,0.898305,0.202835,0,0.161237,0.889626,0.191158,0,0.174455,0.88175,0.179695,0,0.187941,0.874715,0.168548,0,0.201687,0.868746,0.15792,0,0.215687,0.863703,0.147807,0,0.229933,0.859315,0.138149,0,0.24442,0.855538,0.128993,0,0.259145,0.852428,0.120414,0,0.274103,0.850168,0.112498,0,0.289293,0.848132,0.105054,0,0.304711,0.846291,0.0981087,0,0.320357,0.844431,0.0915942,0,0.33623,0.842493,0.0855056,0,0.35233,0.840368,0.0798204,0,0.368658,0.83798,0.0745097,0,0.385214,0.83523,0.0695424,0,0.402002,0.832091,0.0649092,0,0.419023,0.828667,0.0606291,0,0.436282,0.824805,0.0566523,0,0.453782,0.820988,0.0530229,0,0.471529,0.816635,0.0496364,0,0.489528,0.811725,0.0464658,0,0.507788,0.806316,0.0435082,0,0.526317,0.800469,0.0407873,0,0.545124,0.794107,0.038255,0,0.564221,0.787218,0.0358825,0,0.583621,0.779872,0.0336785,0,0.603341,0.772097,0.0316379,0,0.623397,0.764484,0.0297379,0,0.643812,0.756428,0.0279581,0,0.664611,0.748022,0.0263153,0,0.685824,0.739268,0.0247799,0,0.707488,0.73024,0.0233385,0,0.729646,0.720893,0.0220035,0,0.752354,0.71119,0.0207555,0,0.77568,0.701791,0.0195843,0,0.799715,0.692184,0.0184891,0,0.824574,0.682258,0.0174541,0,0.850417,0.67206,0.0164873,0,0.877466,0.661717,0.0155959,0,0.90604,0.651462,0.0147519,0,0.936528,0.641467,0.0139727,0,0.968254,0.631229,0.0132363,0,1,1,0.367573,0,0,0.999999,0.367571,0,0,0.999984,0.367553,0,183382e-9,0.999925,0.367473,0,225254e-8,0.999759,0.367259,0,628165e-8,0.99941,0.366801,0,0.0117858,0.998739,0.365946,0,0.0184359,0.995529,0.363191,0,0.0260114,0.992875,0.360171,0,0.0343581,0.989135,0.355981,0,0.0433637,0.984166,0.350401,0,0.0529438,0.977871,0.343348,0,0.0630334,0.96951,0.334341,0,0.0735805,0.959964,0.323862,0,0.0845437,0.950162,0.312521,0,0.095889,0.938882,0.299577,0,0.107588,0.926992,0.285573,0,0.119617,0.915589,0.271212,0,0.131957,0.904791,0.256611,0,0.144591,0.895177,0.242224,0,0.157503,0.886403,0.227952,0,0.170682,0.878957,0.214192,0,0.184117,0.872418,0.200795,0,0.197799,0.867029,0.188015,0,0.21172,0.862835,0.175975,0,0.225873,0.859411,0.164526,0,0.240253,0.856655,0.153693,0,0.254854,0.854519,0.14352,0,0.269673,0.852828,0.13397,0,0.284707,0.851412,0.124984,0,0.299953,0.850609,0.116748,0,0.315408,0.849855,0.10905,0,0.331073,0.849017,0.101839,0,0.346946,0.848079,0.0951359,0,0.363028,0.846911,0.0888774,0,0.379318,0.845445,0.0830375,0,0.395818,0.84362,0.0775844,0,0.41253,0.841411,0.0725054,0,0.429457,0.838768,0.0677691,0,0.446602,0.835801,0.0634016,0,0.463968,0.832341,0.0593095,0,0.481561,0.828424,0.0555121,0,0.499386,0.824312,0.052024,0,0.51745,0.819918,0.0487865,0,0.535761,0.815072,0.0457801,0,0.554328,0.809863,0.0430184,0,0.573162,0.804164,0.0404245,0,0.592275,0.798034,0.0380146,0,0.611681,0.791436,0.0357436,0,0.631398,0.784498,0.0336475,0,0.651445,0.777125,0.0316666,0,0.671845,0.769365,0.0298122,0,0.692628,0.761579,0.0281001,0,0.713827,0.753746,0.0265049,0,0.735484,0.745573,0.0250067,0,0.75765,0.737083,0.0236026,0,0.78039,0.728545,0.0223302,0,0.803789,0.719691,0.0211243,0,0.82796,0.710569,0.0199983,0,0.853056,0.701216,0.0189569,0,0.879298,0.692094,0.0179702,0,0.907014,0.682909,0.0170418,0,0.936691,0.673509,0.0161732,0,0.968254,0.663863,0.0153406,0,1,1,0.437395,0,0,0.999998,0.437394,0,0,0.99998,0.437363,0,616704e-9,0.999891,0.437232,0,367925e-8,0.999656,0.436877,0,867446e-8,0.999148,0.436121,0,0.0150679,0.997959,0.434564,0,0.022531,0.993464,0.430134,0,0.0308507,0.990606,0.426077,0,0.0398805,0.985027,0.419397,0,0.0495148,0.978491,0.41118,0,0.0596749,0.969643,0.40048,0,0.0703001,0.959189,0.38769,0,0.0813427,0.948223,0.373575,0,0.0927641,0.935955,0.357622,0,0.104533,0.923237,0.34043,0,0.116624,0.911074,0.322735,0,0.129015,0.899724,0.30479,0,0.141687,0.890189,0.287392,0,0.154626,0.881796,0.270248,0,0.167818,0.874781,0.253659,0,0.181252,0.869166,0.237786,0,0.194918,0.864725,0.222618,0,0.208807,0.861565,0.208356,0,0.222913,0.859284,0.194867,0,0.237229,0.857677,0.18212,0,0.25175,0.856714,0.17018,0,0.266473,0.856155,0.158969,0,0.281392,0.8558,0.148413,0,0.296505,0.855672,0.138578,0,0.311811,0.855538,0.129345,0,0.327306,0.855689,0.120861,0,0.342991,0.855767,0.112969,0,0.358864,0.855618,0.105593,0,0.374925,0.85525,0.0987451,0,0.391176,0.854583,0.0923727,0,0.407616,0.853534,0.0864143,0,0.424249,0.852061,0.0808338,0,0.441076,0.850253,0.0756771,0,0.4581,0.848004,0.0708612,0,0.475324,0.845333,0.0663784,0,0.492754,0.842376,0.0622631,0,0.510394,0.838956,0.0584112,0,0.528251,0.835121,0.0548328,0,0.546331,0.830842,0.0514838,0,0.564644,0.826212,0.048355,0,0.583198,0.821522,0.0454714,0,0.602005,0.816551,0.0428263,0,0.621078,0.811211,0.0403612,0,0.640434,0.805479,0.038039,0,0.660089,0.799409,0.0358739,0,0.680066,0.79306,0.0338727,0,0.70039,0.786395,0.0319985,0,0.721094,0.779416,0.030241,0,0.742215,0.77214,0.0285951,0,0.7638,0.764636,0.0270747,0,0.785912,0.756836,0.0256354,0,0.808628,0.749315,0.0243027,0,0.832055,0.741561,0.0230497,0,0.856338,0.733589,0.0218801,0,0.88169,0.725479,0.020784,0,0.908441,0.717255,0.0197702,0,0.937125,0.708829,0.0188168,0,0.968254,0.700191,0.0179113,0,1,1,0.518937,0,0,0.999998,0.518933,0,0,0.999967,0.518883,0,147741e-8,0.999832,0.51866,0,573221e-8,0.999466,0.518057,0,0.011826,0.998644,0.516752,0,0.0192116,0.994458,0.512347,0,0.027573,0.991223,0.507675,0,0.0367099,0.985515,0.500188,0,0.046487,0.978308,0.490408,0,0.0568071,0.968359,0.477357,0,0.0675984,0.95682,0.461752,0,0.0788059,0.943929,0.443796,0,0.090386,0.930224,0.423893,0,0.102304,0.916514,0.402682,0,0.114532,0.903653,0.380914,0,0.127047,0.892315,0.359212,0,0.139828,0.882942,0.338102,0,0.152861,0.875438,0.31773,0,0.16613,0.869642,0.298186,0,0.179624,0.865304,0.279491,0,0.193332,0.862382,0.261804,0,0.207247,0.860666,0.245146,0,0.22136,0.859788,0.229406,0,0.235666,0.859608,0.214605,0,0.250158,0.859912,0.200691,0,0.264832,0.86053,0.187623,0,0.279684,0.861368,0.17539,0,0.294711,0.862237,0.163901,0,0.309911,0.863127,0.153175,0,0.32528,0.863923,0.143147,0,0.340819,0.864567,0.133781,0,0.356524,0.865013,0.125042,0,0.372397,0.86539,0.116952,0,0.388438,0.865591,0.109476,0,0.404645,0.865517,0.102542,0,0.421022,0.865084,0.0960688,0,0.437569,0.864309,0.0900499,0,0.454287,0.863151,0.0844328,0,0.471181,0.861649,0.0792218,0,0.488253,0.859742,0.0743482,0,0.505507,0.857446,0.0697963,0,0.522947,0.854757,0.0655364,0,0.54058,0.851783,0.061608,0,0.558412,0.848516,0.0579701,0,0.576449,0.844897,0.0545742,0,0.594701,0.840956,0.0514167,0,0.613178,0.836676,0.0484598,0,0.631892,0.832075,0.0456934,0,0.650856,0.827191,0.0431178,0,0.670088,0.822295,0.0407718,0,0.689606,0.817294,0.0386032,0,0.709434,0.812013,0.0365675,0,0.7296,0.806465,0.0346547,0,0.750138,0.800691,0.0328717,0,0.771093,0.794709,0.031211,0,0.792519,0.788493,0.0296504,0,0.814488,0.782049,0.0281782,0,0.837097,0.775403,0.0267965,0,0.860481,0.76857,0.0255002,0,0.884842,0.761536,0.0242759,0,0.910494,0.754303,0.0231142,0,0.937985,0.74692,0.0220305,0,0.968254,0.739745,0.0210192,0,1,1,0.613914,0,0,0.999996,0.613907,0,963597e-10,0.999942,0.613814,0,301247e-8,0.999704,0.613407,0,870385e-8,0.999046,0.612302,0,0.0160714,0.995516,0.608266,0,0.0245899,0.991726,0.602863,0,0.0339681,0.985157,0.593956,0,0.0440254,0.97642,0.581748,0,0.0546409,0.964404,0.565183,0,0.0657284,0.950601,0.545273,0,0.0772246,0.935158,0.522129,0,0.0890812,0.919364,0.496782,0,0.10126,0.904754,0.470571,0,0.113731,0.89176,0.444037,0,0.126469,0.881492,0.418322,0,0.139454,0.873656,0.393522,0,0.15267,0.868053,0.369795,0,0.166101,0.864336,0.347171,0,0.179736,0.862259,0.325737,0,0.193565,0.861556,0.305532,0,0.207578,0.861776,0.286416,0,0.221769,0.862661,0.268355,0,0.23613,0.864015,0.251334,0,0.250656,0.865711,0.235352,0,0.265343,0.867519,0.220302,0,0.280187,0.869351,0.206161,0,0.295183,0.871144,0.192908,0,0.31033,0.872839,0.180505,0,0.325624,0.874307,0.168848,0,0.341065,0.875667,0.158021,0,0.35665,0.876758,0.147877,0,0.37238,0.87764,0.138441,0,0.388253,0.878237,0.129627,0,0.404269,0.878563,0.121415,0,0.42043,0.878572,0.113741,0,0.436735,0.87842,0.106652,0,0.453187,0.878057,0.100097,0,0.469786,0.877413,0.0940128,0,0.486536,0.87646,0.0883462,0,0.503439,0.875233,0.0830924,0,0.520498,0.8737,0.0781975,0,0.537717,0.871873,0.07364,0,0.555102,0.86978,0.0694103,0,0.572657,0.867405,0.0654696,0,0.59039,0.864751,0.0617914,0,0.608307,0.861818,0.0583491,0,0.626419,0.858645,0.0551443,0,0.644733,0.855307,0.0521894,0,0.663264,0.851736,0.0494334,0,0.682025,0.847927,0.0468504,0,0.701032,0.843888,0.0444261,0,0.720308,0.839629,0.0421497,0,0.739875,0.835158,0.0400082,0,0.759764,0.830509,0.0380076,0,0.780014,0.825714,0.0361488,0,0.800673,0.820729,0.0343956,0,0.821803,0.815751,0.0327781,0,0.843492,0.810752,0.031275,0,0.86586,0.805587,0.0298542,0,0.889087,0.800317,0.0285397,0,0.913466,0.79489,0.0272948,0,0.93952,0.789314,0.0261139,0,0.96835,0.783593,0.0249938,0,1,1,0.724258,0,0,0.999992,0.724243,0,726889e-9,0.99987,0.724044,0,569574e-8,0.999336,0.72317,0,0.0131702,0.996271,0.719432,0,0.0220738,0.991159,0.712576,0,0.0319405,0.982465,0.700927,0,0.0425202,0.97049,0.684297,0,0.0536599,0.953973,0.661244,0,0.065258,0.935546,0.633804,0,0.0772427,0.916596,0.603071,0,0.0895616,0.899353,0.57105,0,0.102175,0.885216,0.539206,0,0.11505,0.875076,0.508714,0,0.128164,0.868334,0.479571,0,0.141495,0.864414,0.451796,0,0.155026,0.862678,0.425328,0,0.168745,0.862835,0.400352,0,0.182639,0.864067,0.376532,0,0.196699,0.866086,0.35391,0,0.210915,0.868557,0.332424,0,0.225282,0.871271,0.312053,0,0.239792,0.874058,0.292764,0,0.25444,0.8768,0.27453,0,0.269223,0.87939,0.257297,0,0.284135,0.8819,0.24114,0,0.299174,0.884187,0.225934,0,0.314337,0.886262,0.211669,0,0.329622,0.888119,0.198311,0,0.345026,0.889709,0.185783,0,0.360549,0.891054,0.174063,0,0.376189,0.892196,0.163143,0,0.391946,0.893101,0.152952,0,0.407819,0.893803,0.143475,0,0.423808,0.894277,0.134647,0,0.439914,0.894532,0.126434,0,0.456137,0.894576,0.1188,0,0.472479,0.894393,0.111694,0,0.48894,0.893976,0.105069,0,0.505523,0.893346,0.0989077,0,0.52223,0.892502,0.0931724,0,0.539064,0.891441,0.0878276,0,0.556028,0.890276,0.082903,0,0.573125,0.888972,0.0783505,0,0.590361,0.887469,0.0741083,0,0.607741,0.885785,0.0701633,0,0.62527,0.883914,0.0664835,0,0.642957,0.881872,0.0630567,0,0.660809,0.879651,0.0598527,0,0.678836,0.877267,0.0568615,0,0.69705,0.874717,0.05406,0,0.715465,0.872012,0.0514378,0,0.734098,0.869157,0.0489805,0,0.752968,0.866155,0.0466727,0,0.772101,0.863014,0.0445056,0,0.791529,0.859748,0.0424733,0,0.81129,0.856416,0.0405957,0,0.831438,0.852958,0.0388273,0,0.852044,0.849382,0.0371619,0,0.87321,0.845694,0.0355959,0,0.89509,0.841893,0.0341155,0,0.917932,0.837981,0.0327141,0,0.942204,0.833963,0.0313856,0,0.968981,0.829847,0.0301275,0,1,1,0.85214,0,0,0.999969,0.852095,0,279627e-8,0.999483,0.851408,0,0.0107635,0.994545,0.84579,0,0.0206454,0.986188,0.835231,0,0.0315756,0.969847,0.814687,0,0.0432021,0.945951,0.783735,0,0.0553396,0.91917,0.746074,0,0.0678766,0.895488,0.706938,0,0.0807395,0.878232,0.669534,0,0.0938767,0.868252,0.635168,0,0.10725,0.863873,0.603069,0,0.120832,0.863369,0.572514,0,0.134598,0.86545,0.543169,0,0.148533,0.868803,0.514578,0,0.16262,0.872794,0.486762,0,0.176849,0.87702,0.459811,0,0.19121,0.881054,0.433654,0,0.205694,0.884974,0.408574,0,0.220294,0.888587,0.384525,0,0.235005,0.891877,0.36156,0,0.24982,0.894793,0.339661,0,0.264737,0.89743,0.318913,0,0.279751,0.899796,0.299302,0,0.294859,0.901943,0.280843,0,0.310058,0.903858,0.263481,0,0.325346,0.905574,0.247197,0,0.340721,0.907069,0.231915,0,0.356181,0.908379,0.217614,0,0.371725,0.90952,0.20425,0,0.387353,0.910483,0.191758,0,0.403063,0.91128,0.180092,0,0.418854,0.911936,0.169222,0,0.434727,0.912454,0.159098,0,0.450682,0.912835,0.149668,0,0.466718,0.913078,0.140884,0,0.482837,0.913192,0.132709,0,0.499038,0.913175,0.125095,0,0.515324,0.91304,0.118012,0,0.531695,0.912781,0.111417,0,0.548153,0.91241,0.105281,0,0.5647,0.911924,0.0995691,0,0.581338,0.911331,0.0942531,0,0.59807,0.910637,0.0893076,0,0.6149,0.90984,0.0846998,0,0.63183,0.908941,0.0804044,0,0.648865,0.907944,0.0763984,0,0.666011,0.906857,0.0726638,0,0.683273,0.90568,0.0691783,0,0.700659,0.904416,0.0659222,0,0.718176,0.903067,0.0628782,0,0.735834,0.901637,0.0600307,0,0.753646,0.900128,0.0573647,0,0.771625,0.898544,0.0548668,0,0.78979,0.89689,0.052527,0,0.808162,0.895165,0.0503306,0,0.826771,0.893371,0.0482668,0,0.845654,0.891572,0.0463605,0,0.864863,0.889763,0.0445998,0,0.884472,0.887894,0.0429451,0,0.904592,0.885967,0.0413884,0,0.925407,0.883984,0.0399225,0,0.947271,0.881945,0.0385405,0,0.97105,0.879854,0.0372362,0,1,0.999804,0.995833,0,0,0.938155,0.933611,0,0.0158731,0.864755,0.854311,0,0.0317461,0.888594,0.865264,0,0.0476191,0.905575,0.863922,0,0.0634921,0.915125,0.850558,0,0.0793651,0.920665,0.829254,0,0.0952381,0.924073,0.802578,0,0.111111,0.926304,0.772211,0,0.126984,0.927829,0.739366,0,0.142857,0.928924,0.705033,0,0.15873,0.92973,0.670019,0,0.174603,0.930339,0.634993,0,0.190476,0.930811,0.600485,0,0.206349,0.931191,0.566897,0,0.222222,0.93149,0.534485,0,0.238095,0.931737,0.503429,0,0.253968,0.931939,0.473811,0,0.269841,0.932108,0.445668,0,0.285714,0.93225,0.418993,0,0.301587,0.932371,0.393762,0,0.31746,0.932474,0.369939,0,0.333333,0.932562,0.347479,0,0.349206,0.932638,0.326336,0,0.365079,0.932703,0.306462,0,0.380952,0.93276,0.287805,0,0.396825,0.932809,0.270313,0,0.412698,0.932851,0.253933,0,0.428571,0.932887,0.23861,0,0.444444,0.932917,0.224289,0,0.460317,0.932943,0.210917,0,0.47619,0.932965,0.19844,0,0.492063,0.932982,0.186807,0,0.507937,0.932995,0.175966,0,0.52381,0.933005,0.165869,0,0.539683,0.933011,0.156468,0,0.555556,0.933013,0.147719,0,0.571429,0.933013,0.139579,0,0.587302,0.93301,0.132007,0,0.603175,0.933004,0.124965,0,0.619048,0.932994,0.118416,0,0.634921,0.932982,0.112326,0,0.650794,0.932968,0.106663,0,0.666667,0.93295,0.101397,0,0.68254,0.932931,0.0964993,0,0.698413,0.932908,0.0919438,0,0.714286,0.932883,0.0877057,0,0.730159,0.932856,0.0837623,0,0.746032,0.932827,0.0800921,0,0.761905,0.932796,0.0766754,0,0.777778,0.932762,0.0734936,0,0.793651,0.932727,0.0705296,0,0.809524,0.932689,0.0677676,0,0.825397,0.93265,0.0651929,0,0.84127,0.932609,0.0627917,0,0.857143,0.932565,0.0605515,0,0.873016,0.932521,0.0584606,0,0.888889,0.932474,0.0565082,0,0.904762,0.932427,0.0546841,0,0.920635,0.932377,0.0529793,0,0.936508,0.932326,0.0513851,0,0.952381,0.932274,0.0498936,0,0.968254,0.93222,0.0484975,0,0.984127,0.932164,0.0471899,0,1];const ltc_float_1=new Float32Array(LTC_MAT_1);const ltc_float_2=new Float32Array(LTC_MAT_2);UniformsLib.LTC_FLOAT_1=new DataTexture(ltc_float_1,64,64,RGBAFormat,FloatType,UVMapping,ClampToEdgeWrapping,ClampToEdgeWrapping,LinearFilter,NearestFilter,1);UniformsLib.LTC_FLOAT_2=new DataTexture(ltc_float_2,64,64,RGBAFormat,FloatType,UVMapping,ClampToEdgeWrapping,ClampToEdgeWrapping,LinearFilter,NearestFilter,1);UniformsLib.LTC_FLOAT_1.needsUpdate=true;UniformsLib.LTC_FLOAT_2.needsUpdate=true;const ltc_half_1=new Uint16Array(LTC_MAT_1.length);LTC_MAT_1.forEach(function(x,index){ltc_half_1[index]=DataUtils.toHalfFloat(x);});const ltc_half_2=new Uint16Array(LTC_MAT_2.length);LTC_MAT_2.forEach(function(x,index){ltc_half_2[index]=DataUtils.toHalfFloat(x);});UniformsLib.LTC_HALF_1=new DataTexture(ltc_half_1,64,64,RGBAFormat,HalfFloatType,UVMapping,ClampToEdgeWrapping,ClampToEdgeWrapping,LinearFilter,NearestFilter,1);UniformsLib.LTC_HALF_2=new DataTexture(ltc_half_2,64,64,RGBAFormat,HalfFloatType,UVMapping,ClampToEdgeWrapping,ClampToEdgeWrapping,LinearFilter,NearestFilter,1);UniformsLib.LTC_HALF_1.needsUpdate=true;UniformsLib.LTC_HALF_2.needsUpdate=true;}}class LightProbeGenerator{// https://www.ppsloan.org/publications/StupidSH36.pdf\nstatic fromCubeTexture(cubeTexture){let totalWeight=0;const coord=new Vector3();const dir=new Vector3();const color=new Color();const shBasis=[0,0,0,0,0,0,0,0,0];const sh=new SphericalHarmonics3();const shCoefficients=sh.coefficients;for(let faceIndex=0;faceIndex<6;faceIndex++){const image=cubeTexture.image[faceIndex];const width=image.width;const height=image.height;const canvas=document.createElement(\"canvas\");canvas.width=width;canvas.height=height;const context=canvas.getContext(\"2d\");context.drawImage(image,0,0,width,height);const imageData=context.getImageData(0,0,width,height);const data=imageData.data;const imageWidth=imageData.width;const pixelSize=2/imageWidth;for(let i2=0,il=data.length;i20){for(let i2=0;i20){this.normalsNeedUpdate=true;}}computeFlatVertexNormals(){this.computeFaceNormals();for(let f=0,fl=this.faces.length;f0){this.normalsNeedUpdate=true;}}computeMorphNormals(){for(let f=0,fl=this.faces.length;f=0;i2--){const idx=faceIndicesToRemove[i2];this.faces.splice(idx,1);for(let j=0,jl=this.faceVertexUvs.length;j0;const hasFaceVertexNormal=face.vertexNormals.length>0;const hasFaceColor=face.color.r!==1||face.color.g!==1||face.color.b!==1;const hasFaceVertexColor=face.vertexColors.length>0;let faceType=0;faceType=setBit(faceType,0,0);faceType=setBit(faceType,1,hasMaterial);faceType=setBit(faceType,2,hasFaceUv);faceType=setBit(faceType,3,hasFaceVertexUv);faceType=setBit(faceType,4,hasFaceNormal);faceType=setBit(faceType,5,hasFaceVertexNormal);faceType=setBit(faceType,6,hasFaceColor);faceType=setBit(faceType,7,hasFaceVertexColor);faces.push(faceType);faces.push(face.a,face.b,face.c);faces.push(face.materialIndex);if(hasFaceVertexUv){const faceVertexUvs=this.faceVertexUvs[0][i2];faces.push(getUvIndex(faceVertexUvs[0]),getUvIndex(faceVertexUvs[1]),getUvIndex(faceVertexUvs[2]));}if(hasFaceNormal){faces.push(getNormalIndex(face.normal));}if(hasFaceVertexNormal){const vertexNormals=face.vertexNormals;faces.push(getNormalIndex(vertexNormals[0]),getNormalIndex(vertexNormals[1]),getNormalIndex(vertexNormals[2]));}if(hasFaceColor){faces.push(getColorIndex(face.color));}if(hasFaceVertexColor){const vertexColors=face.vertexColors;faces.push(getColorIndex(vertexColors[0]),getColorIndex(vertexColors[1]),getColorIndex(vertexColors[2]));}}function setBit(value,position,enabled){return enabled?value|1<0)data.data.colors=colors;if(uvs.length>0)data.data.uvs=[uvs];data.data.faces=faces;return data;}clone(){return new Geometry().copy(this);}copy(source){this.vertices=[];this.colors=[];this.faces=[];this.faceVertexUvs=[[]];this.morphTargets=[];this.morphNormals=[];this.skinWeights=[];this.skinIndices=[];this.lineDistances=[];this.boundingBox=null;this.boundingSphere=null;this.name=source.name;const vertices=source.vertices;for(let i2=0,il=vertices.length;i20){const normals=new Float32Array(geometry2.normals.length*3);buffergeometry.setAttribute(\"normal\",new BufferAttribute(normals,3).copyVector3sArray(geometry2.normals));}if(geometry2.colors.length>0){const colors=new Float32Array(geometry2.colors.length*3);buffergeometry.setAttribute(\"color\",new BufferAttribute(colors,3).copyColorsArray(geometry2.colors));}if(geometry2.uvs.length>0){const uvs=new Float32Array(geometry2.uvs.length*2);buffergeometry.setAttribute(\"uv\",new BufferAttribute(uvs,2).copyVector2sArray(geometry2.uvs));}if(geometry2.uvs2.length>0){const uvs2=new Float32Array(geometry2.uvs2.length*2);buffergeometry.setAttribute(\"uv2\",new BufferAttribute(uvs2,2).copyVector2sArray(geometry2.uvs2));}buffergeometry.groups=geometry2.groups;for(let name in geometry2.morphTargets){const array=[];const morphTargets=geometry2.morphTargets[name];for(let i2=0,l=morphTargets.length;i20){const skinIndices=new Float32BufferAttribute(geometry2.skinIndices.length*4,4);buffergeometry.setAttribute(\"skinIndex\",skinIndices.copyVector4sArray(geometry2.skinIndices));}if(geometry2.skinWeights.length>0){const skinWeights=new Float32BufferAttribute(geometry2.skinWeights.length*4,4);buffergeometry.setAttribute(\"skinWeight\",skinWeights.copyVector4sArray(geometry2.skinWeights));}if(geometry2.boundingSphere!==null){buffergeometry.boundingSphere=geometry2.boundingSphere.clone();}if(geometry2.boundingBox!==null){buffergeometry.boundingBox=geometry2.boundingBox.clone();}return buffergeometry;}computeTangents(){console.error(\"THREE.Geometry: .computeTangents() has been removed.\");}computeLineDistances(){console.error(\"THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.\");}applyMatrix(matrix2){console.warn(\"THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4().\");return this.applyMatrix4(matrix2);}dispose(){this.dispatchEvent({type:\"dispose\"});}}class DirectGeometry{constructor(){this.vertices=[];this.normals=[];this.colors=[];this.uvs=[];this.uvs2=[];this.groups=[];this.morphTargets={};this.skinWeights=[];this.skinIndices=[];this.boundingBox=null;this.boundingSphere=null;this.verticesNeedUpdate=false;this.normalsNeedUpdate=false;this.colorsNeedUpdate=false;this.uvsNeedUpdate=false;this.groupsNeedUpdate=false;}computeGroups(geometry2){const groups=[];let group,i2;let materialIndex=void 0;const faces=geometry2.faces;for(i2=0;i20;const hasFaceVertexUv2=faceVertexUvs[1]&&faceVertexUvs[1].length>0;const morphTargets=geometry2.morphTargets;const morphTargetsLength=morphTargets.length;let morphTargetsPosition;if(morphTargetsLength>0){morphTargetsPosition=[];for(let i2=0;i20){morphTargetsNormal=[];for(let i2=0;i20&&faces.length===0){console.error(\"THREE.DirectGeometry: Faceless geometries are not supported.\");}for(let i2=0;i2{if(generated)return generated;const wasm_base=\"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\";const wasm_simd=\"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\";const detector=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]);const wasmpack=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]);if(typeof WebAssembly!==\"object\"){return{supported:false};}let wasm=wasm_base;if(WebAssembly.validate(detector)){wasm=wasm_simd;}let instance;const promise=WebAssembly.instantiate(unpack(wasm),{}).then(result=>{instance=result.instance;instance.exports.__wasm_call_ctors();});function unpack(data){const result=new Uint8Array(data.length);for(let i2=0;i296?ch-71:ch>64?ch-65:ch>47?ch+4:ch>46?63:62;}let write=0;for(let i2=0;i2.init\"), init);\n if (getTransferables) {\n getTransferables = rehydrate((\"<\" + name + \">.getTransferables\"), getTransferables);\n }\n\n // Initialize the module and store its value\n var value = null;\n if (typeof init === 'function') {\n value = init.apply(void 0, dependencies);\n } else {\n console.error('worker module init function failed to rehydrate');\n }\n modules[id] = {\n id: id,\n value: value,\n getTransferables: getTransferables\n };\n callback(value);\n } catch(err) {\n if (!(err && err.noLog)) {\n console.error(err);\n }\n callback(err);\n }\n }\n\n // Handle messages for calling a registered module's result function\n function callModule(ref, callback) {\n var ref$1;\n\n var id = ref.id;\n var args = ref.args;\n if (!modules[id] || typeof modules[id].value !== 'function') {\n callback(new Error((\"Worker module \" + id + \": not found or its 'init' did not return a function\")));\n }\n try {\n var result = (ref$1 = modules[id]).value.apply(ref$1, args);\n if (result && typeof result.then === 'function') {\n result.then(handleResult, function (rej) { return callback(rej instanceof Error ? rej : new Error('' + rej)); });\n } else {\n handleResult(result);\n }\n } catch(err) {\n callback(err);\n }\n function handleResult(result) {\n try {\n var tx = modules[id].getTransferables && modules[id].getTransferables(result);\n if (!tx || !Array.isArray(tx) || !tx.length) {\n tx = undefined; //postMessage is very picky about not passing null or empty transferables\n }\n callback(result, tx);\n } catch(err) {\n console.error(err);\n callback(err);\n }\n }\n }\n\n function rehydrate(name, str) {\n var result = void 0;\n self.troikaDefine = function (r) { return result = r; };\n var url = URL.createObjectURL(\n new Blob(\n [(\"/** \" + (name.replace(/\\*/g, '')) + \" **/\\n\\ntroikaDefine(\\n\" + str + \"\\n)\")],\n {type: 'application/javascript'}\n )\n );\n try {\n importScripts(url);\n } catch(err) {\n console.error(err);\n }\n URL.revokeObjectURL(url);\n delete self.troikaDefine;\n return result\n }\n\n // Handler for all messages within the worker\n self.addEventListener('message', function (e) {\n var ref = e.data;\n var messageId = ref.messageId;\n var action = ref.action;\n var data = ref.data;\n try {\n // Module registration\n if (action === 'registerModule') {\n registerModule(data, function (result) {\n if (result instanceof Error) {\n postMessage({\n messageId: messageId,\n success: false,\n error: result.message\n });\n } else {\n postMessage({\n messageId: messageId,\n success: true,\n result: {isCallable: typeof result === 'function'}\n });\n }\n });\n }\n // Invocation\n if (action === 'callModule') {\n callModule(data, function (result, transferables) {\n if (result instanceof Error) {\n postMessage({\n messageId: messageId,\n success: false,\n error: result.message\n });\n } else {\n postMessage({\n messageId: messageId,\n success: true,\n result: result\n }, transferables || undefined);\n }\n });\n }\n } catch(err) {\n postMessage({\n messageId: messageId,\n success: false,\n error: err.stack\n });\n }\n });\n}\n\n/**\n * Fallback for `defineWorkerModule` that behaves identically but runs in the main\n * thread, for when the execution environment doesn't support web workers or they\n * are disallowed due to e.g. CSP security restrictions.\n */\nfunction defineMainThreadModule(options) {\n var moduleFunc = function() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return moduleFunc._getInitResult().then(function (initResult) {\n if (typeof initResult === 'function') {\n return initResult.apply(void 0, args)\n } else {\n throw new Error('Worker module function was called but `init` did not return a callable function')\n }\n })\n };\n moduleFunc._getInitResult = function() {\n // We can ignore getTransferables in main thread. TODO workerId?\n var dependencies = options.dependencies;\n var init = options.init;\n\n // Resolve dependencies\n dependencies = Array.isArray(dependencies) ? dependencies.map(function (dep) { return dep && dep._getInitResult ? dep._getInitResult() : dep; }\n ) : [];\n\n // Invoke init with the resolved dependencies\n var initPromise = Promise.all(dependencies).then(function (deps) {\n return init.apply(null, deps)\n });\n\n // Cache the resolved promise for subsequent calls\n moduleFunc._getInitResult = function () { return initPromise; };\n\n return initPromise\n };\n return moduleFunc\n}\n\nvar supportsWorkers = function () {\n var supported = false;\n\n // Only attempt worker initialization in browsers; elsewhere it would just be\n // noise e.g. loading into a Node environment for SSR.\n if (typeof window !== 'undefined' && typeof window.document !== 'undefined') {\n try {\n // TODO additional checks for things like importScripts within the worker?\n // Would need to be an async check.\n var worker = new Worker(\n URL.createObjectURL(new Blob([''], { type: 'application/javascript' }))\n );\n worker.terminate();\n supported = true;\n } catch (err) {\n if (typeof process !== 'undefined' && process.env.NODE_ENV === 'test') ; else {\n console.log(\n (\"Troika createWorkerModule: web workers not allowed; falling back to main thread execution. Cause: [\" + (err.message) + \"]\")\n );\n }\n }\n }\n\n // Cached result\n supportsWorkers = function () { return supported; };\n return supported\n};\n\nvar _workerModuleId = 0;\nvar _messageId = 0;\nvar _allowInitAsString = false;\nvar workers = Object.create(null);\nvar registeredModules = Object.create(null); //workerId -> Set\nvar openRequests = Object.create(null);\n\n\n/**\n * Define a module of code that will be executed with a web worker. This provides a simple\n * interface for moving chunks of logic off the main thread, and managing their dependencies\n * among one another.\n *\n * @param {object} options\n * @param {function} options.init\n * @param {array} [options.dependencies]\n * @param {function} [options.getTransferables]\n * @param {string} [options.name]\n * @param {string} [options.workerId]\n * @return {function(...[*]): {then}}\n */\nfunction defineWorkerModule(options) {\n if ((!options || typeof options.init !== 'function') && !_allowInitAsString) {\n throw new Error('requires `options.init` function')\n }\n var dependencies = options.dependencies;\n var init = options.init;\n var getTransferables = options.getTransferables;\n var workerId = options.workerId;\n\n if (!supportsWorkers()) {\n return defineMainThreadModule(options)\n }\n\n if (workerId == null) {\n workerId = '#default';\n }\n var id = \"workerModule\" + (++_workerModuleId);\n var name = options.name || id;\n var registrationPromise = null;\n\n dependencies = dependencies && dependencies.map(function (dep) {\n // Wrap raw functions as worker modules with no dependencies\n if (typeof dep === 'function' && !dep.workerModuleData) {\n _allowInitAsString = true;\n dep = defineWorkerModule({\n workerId: workerId,\n name: (\"<\" + name + \"> function dependency: \" + (dep.name)),\n init: (\"function(){return (\\n\" + (stringifyFunction(dep)) + \"\\n)}\")\n });\n _allowInitAsString = false;\n }\n // Grab postable data for worker modules\n if (dep && dep.workerModuleData) {\n dep = dep.workerModuleData;\n }\n return dep\n });\n\n function moduleFunc() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Register this module if needed\n if (!registrationPromise) {\n registrationPromise = callWorker(workerId,'registerModule', moduleFunc.workerModuleData);\n var unregister = function () {\n registrationPromise = null;\n registeredModules[workerId].delete(unregister);\n }\n ;(registeredModules[workerId] || (registeredModules[workerId] = new Set())).add(unregister);\n }\n\n // Invoke the module, returning a promise\n return registrationPromise.then(function (ref) {\n var isCallable = ref.isCallable;\n\n if (isCallable) {\n return callWorker(workerId,'callModule', {id: id, args: args})\n } else {\n throw new Error('Worker module function was called but `init` did not return a callable function')\n }\n })\n }\n moduleFunc.workerModuleData = {\n isWorkerModule: true,\n id: id,\n name: name,\n dependencies: dependencies,\n init: stringifyFunction(init),\n getTransferables: getTransferables && stringifyFunction(getTransferables)\n };\n return moduleFunc\n}\n\n/**\n * Terminate an active Worker by a workerId that was passed to defineWorkerModule.\n * This only terminates the Worker itself; the worker module will remain available\n * and if you call it again its Worker will be respawned.\n * @param {string} workerId\n */\nfunction terminateWorker(workerId) {\n // Unregister all modules that were registered in that worker\n if (registeredModules[workerId]) {\n registeredModules[workerId].forEach(function (unregister) {\n unregister();\n });\n }\n // Terminate the Worker object\n if (workers[workerId]) {\n workers[workerId].terminate();\n delete workers[workerId];\n }\n}\n\n/**\n * Stringifies a function into a form that can be deserialized in the worker\n * @param fn\n */\nfunction stringifyFunction(fn) {\n var str = fn.toString();\n // If it was defined in object method/property format, it needs to be modified\n if (!/^function/.test(str) && /^\\w+\\s*\\(/.test(str)) {\n str = 'function ' + str;\n }\n return str\n}\n\n\nfunction getWorker(workerId) {\n var worker = workers[workerId];\n if (!worker) {\n // Bootstrap the worker's content\n var bootstrap = stringifyFunction(workerBootstrap);\n\n // Create the worker from the bootstrap function content\n worker = workers[workerId] = new Worker(\n URL.createObjectURL(\n new Blob(\n [(\"/** Worker Module Bootstrap: \" + (workerId.replace(/\\*/g, '')) + \" **/\\n\\n;(\" + bootstrap + \")()\")],\n {type: 'application/javascript'}\n )\n )\n );\n\n // Single handler for response messages from the worker\n worker.onmessage = function (e) {\n var response = e.data;\n var msgId = response.messageId;\n var callback = openRequests[msgId];\n if (!callback) {\n throw new Error('WorkerModule response with empty or unknown messageId')\n }\n delete openRequests[msgId];\n callback(response);\n };\n }\n return worker\n}\n\n// Issue a call to the worker with a callback to handle the response\nfunction callWorker(workerId, action, data) {\n return new Promise(function (resolve, reject) {\n var messageId = ++_messageId;\n openRequests[messageId] = function (response) {\n if (response.success) {\n resolve(response.result);\n } else {\n reject(new Error((\"Error in worker \" + action + \" call: \" + (response.error))));\n }\n };\n getWorker(workerId).postMessage({\n messageId: messageId,\n action: action,\n data: data\n });\n })\n}\n\nexport { defineWorkerModule, stringifyFunction, terminateWorker };\n","function SDFGenerator() {\nvar exports = (function (exports) {\n\n /**\n * Find the point on a quadratic bezier curve at t where t is in the range [0, 1]\n */\n function pointOnQuadraticBezier (x0, y0, x1, y1, x2, y2, t, pointOut) {\n var t2 = 1 - t;\n pointOut.x = t2 * t2 * x0 + 2 * t2 * t * x1 + t * t * x2;\n pointOut.y = t2 * t2 * y0 + 2 * t2 * t * y1 + t * t * y2;\n }\n\n /**\n * Find the point on a cubic bezier curve at t where t is in the range [0, 1]\n */\n function pointOnCubicBezier (x0, y0, x1, y1, x2, y2, x3, y3, t, pointOut) {\n var t2 = 1 - t;\n pointOut.x = t2 * t2 * t2 * x0 + 3 * t2 * t2 * t * x1 + 3 * t2 * t * t * x2 + t * t * t * x3;\n pointOut.y = t2 * t2 * t2 * y0 + 3 * t2 * t2 * t * y1 + 3 * t2 * t * t * y2 + t * t * t * y3;\n }\n\n /**\n * Parse a path string into its constituent line/curve commands, invoking a callback for each.\n * @param {string} pathString - An SVG-like path string to parse; should only contain commands: M/L/Q/C/Z\n * @param {function(\n * command: 'L'|'Q'|'C',\n * startX: number,\n * startY: number,\n * endX: number,\n * endY: number,\n * ctrl1X?: number,\n * ctrl1Y?: number,\n * ctrl2X?: number,\n * ctrl2Y?: number\n * )} commandCallback - A callback function that will be called once for each parsed path command, passing the\n * command identifier (only L/Q/C commands) and its numeric arguments.\n */\n function forEachPathCommand(pathString, commandCallback) {\n var segmentRE = /([MLQCZ])([^MLQCZ]*)/g;\n var match, firstX, firstY, prevX, prevY;\n while ((match = segmentRE.exec(pathString))) {\n var args = match[2]\n .replace(/^\\s*|\\s*$/g, '')\n .split(/[,\\s]+/)\n .map(function (v) { return parseFloat(v); });\n switch (match[1]) {\n case 'M':\n prevX = firstX = args[0];\n prevY = firstY = args[1];\n break\n case 'L':\n if (args[0] !== prevX || args[1] !== prevY) { // yup, some fonts have zero-length line commands\n commandCallback('L', prevX, prevY, (prevX = args[0]), (prevY = args[1]));\n }\n break\n case 'Q': {\n commandCallback('Q', prevX, prevY, (prevX = args[2]), (prevY = args[3]), args[0], args[1]);\n break\n }\n case 'C': {\n commandCallback('C', prevX, prevY, (prevX = args[4]), (prevY = args[5]), args[0], args[1], args[2], args[3]);\n break\n }\n case 'Z':\n if (prevX !== firstX || prevY !== firstY) {\n commandCallback('L', prevX, prevY, firstX, firstY);\n }\n break\n }\n }\n }\n\n /**\n * Convert a path string to a series of straight line segments\n * @param {string} pathString - An SVG-like path string to parse; should only contain commands: M/L/Q/C/Z\n * @param {function(x1:number, y1:number, x2:number, y2:number)} segmentCallback - A callback\n * function that will be called once for every line segment\n * @param {number} [curvePoints] - How many straight line segments to use when approximating a\n * bezier curve in the path. Defaults to 16.\n */\n function pathToLineSegments (pathString, segmentCallback, curvePoints) {\n if ( curvePoints === void 0 ) curvePoints = 16;\n\n var tempPoint = { x: 0, y: 0 };\n forEachPathCommand(pathString, function (command, startX, startY, endX, endY, ctrl1X, ctrl1Y, ctrl2X, ctrl2Y) {\n switch (command) {\n case 'L':\n segmentCallback(startX, startY, endX, endY);\n break\n case 'Q': {\n var prevCurveX = startX;\n var prevCurveY = startY;\n for (var i = 1; i < curvePoints; i++) {\n pointOnQuadraticBezier(\n startX, startY,\n ctrl1X, ctrl1Y,\n endX, endY,\n i / (curvePoints - 1),\n tempPoint\n );\n segmentCallback(prevCurveX, prevCurveY, tempPoint.x, tempPoint.y);\n prevCurveX = tempPoint.x;\n prevCurveY = tempPoint.y;\n }\n break\n }\n case 'C': {\n var prevCurveX$1 = startX;\n var prevCurveY$1 = startY;\n for (var i$1 = 1; i$1 < curvePoints; i$1++) {\n pointOnCubicBezier(\n startX, startY,\n ctrl1X, ctrl1Y,\n ctrl2X, ctrl2Y,\n endX, endY,\n i$1 / (curvePoints - 1),\n tempPoint\n );\n segmentCallback(prevCurveX$1, prevCurveY$1, tempPoint.x, tempPoint.y);\n prevCurveX$1 = tempPoint.x;\n prevCurveY$1 = tempPoint.y;\n }\n break\n }\n }\n });\n }\n\n var viewportQuadVertex = \"precision highp float;attribute vec2 aUV;varying vec2 vUV;void main(){vUV=aUV;gl_Position=vec4(mix(vec2(-1.0),vec2(1.0),aUV),0.0,1.0);}\";\n\n var copyTexFragment = \"precision highp float;uniform sampler2D tex;varying vec2 vUV;void main(){gl_FragColor=texture2D(tex,vUV);}\";\n\n var cache = new WeakMap();\n\n var glContextParams = {\n premultipliedAlpha: false,\n preserveDrawingBuffer: true,\n antialias: false,\n depth: false,\n };\n\n /**\n * This is a little helper library for WebGL. It assists with state management for a GL context.\n * It's pretty tightly wrapped to the needs of this package, not very general-purpose.\n *\n * @param { WebGLRenderingContext | HTMLCanvasElement | OffscreenCanvas } glOrCanvas - the GL context to wrap\n * @param { ({gl, getExtension, withProgram, withTexture, withTextureFramebuffer, handleContextLoss}) => void } callback\n */\n function withWebGLContext (glOrCanvas, callback) {\n var gl = glOrCanvas.getContext ? glOrCanvas.getContext('webgl', glContextParams) : glOrCanvas;\n var wrapper = cache.get(gl);\n if (!wrapper) {\n var isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext;\n var extensions = {};\n var programs = {};\n var textures = {};\n var textureUnit = -1;\n var framebufferStack = [];\n\n gl.canvas.addEventListener('webglcontextlost', function (e) {\n handleContextLoss();\n e.preventDefault();\n }, false);\n\n function getExtension (name) {\n var ext = extensions[name];\n if (!ext) {\n ext = extensions[name] = gl.getExtension(name);\n if (!ext) {\n throw new Error((name + \" not supported\"))\n }\n }\n return ext\n }\n\n function compileShader (src, type) {\n var shader = gl.createShader(type);\n gl.shaderSource(shader, src);\n gl.compileShader(shader);\n // const status = gl.getShaderParameter(shader, gl.COMPILE_STATUS)\n // if (!status && !gl.isContextLost()) {\n // throw new Error(gl.getShaderInfoLog(shader).trim())\n // }\n return shader\n }\n\n function withProgram (name, vert, frag, func) {\n if (!programs[name]) {\n var attributes = {};\n var uniforms = {};\n var program = gl.createProgram();\n gl.attachShader(program, compileShader(vert, gl.VERTEX_SHADER));\n gl.attachShader(program, compileShader(frag, gl.FRAGMENT_SHADER));\n gl.linkProgram(program);\n\n programs[name] = {\n program: program,\n transaction: function transaction (func) {\n gl.useProgram(program);\n func({\n setUniform: function setUniform (type, name) {\n var values = [], len = arguments.length - 2;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\n\n var uniformLoc = uniforms[name] || (uniforms[name] = gl.getUniformLocation(program, name));\n gl[(\"uniform\" + type)].apply(gl, [ uniformLoc ].concat( values ));\n },\n\n setAttribute: function setAttribute (name, size, usage, instancingDivisor, data) {\n var attr = attributes[name];\n if (!attr) {\n attr = attributes[name] = {\n buf: gl.createBuffer(), // TODO should we destroy our buffers?\n loc: gl.getAttribLocation(program, name),\n data: null\n };\n }\n gl.bindBuffer(gl.ARRAY_BUFFER, attr.buf);\n gl.vertexAttribPointer(attr.loc, size, gl.FLOAT, false, 0, 0);\n gl.enableVertexAttribArray(attr.loc);\n if (isWebGL2) {\n gl.vertexAttribDivisor(attr.loc, instancingDivisor);\n } else {\n getExtension('ANGLE_instanced_arrays').vertexAttribDivisorANGLE(attr.loc, instancingDivisor);\n }\n if (data !== attr.data) {\n gl.bufferData(gl.ARRAY_BUFFER, data, usage);\n attr.data = data;\n }\n }\n });\n }\n };\n }\n\n programs[name].transaction(func);\n }\n\n function withTexture (name, func) {\n textureUnit++;\n try {\n gl.activeTexture(gl.TEXTURE0 + textureUnit);\n var texture = textures[name];\n if (!texture) {\n texture = textures[name] = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n }\n gl.bindTexture(gl.TEXTURE_2D, texture);\n func(texture, textureUnit);\n } finally {\n textureUnit--;\n }\n }\n\n function withTextureFramebuffer (texture, textureUnit, func) {\n var framebuffer = gl.createFramebuffer();\n framebufferStack.push(framebuffer);\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n gl.activeTexture(gl.TEXTURE0 + textureUnit);\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n try {\n func(framebuffer);\n } finally {\n gl.deleteFramebuffer(framebuffer);\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebufferStack[--framebufferStack.length - 1] || null);\n }\n }\n\n function handleContextLoss () {\n extensions = {};\n programs = {};\n textures = {};\n textureUnit = -1;\n framebufferStack.length = 0;\n }\n\n cache.set(gl, wrapper = {\n gl: gl,\n isWebGL2: isWebGL2,\n getExtension: getExtension,\n withProgram: withProgram,\n withTexture: withTexture,\n withTextureFramebuffer: withTextureFramebuffer,\n handleContextLoss: handleContextLoss,\n });\n }\n callback(wrapper);\n }\n\n\n function renderImageData(glOrCanvas, imageData, x, y, width, height, channels, framebuffer) {\n if ( channels === void 0 ) channels = 15;\n if ( framebuffer === void 0 ) framebuffer = null;\n\n withWebGLContext(glOrCanvas, function (ref) {\n var gl = ref.gl;\n var withProgram = ref.withProgram;\n var withTexture = ref.withTexture;\n\n withTexture('copy', function (tex, texUnit) {\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, imageData);\n withProgram('copy', viewportQuadVertex, copyTexFragment, function (ref) {\n var setUniform = ref.setUniform;\n var setAttribute = ref.setAttribute;\n\n setAttribute('aUV', 2, gl.STATIC_DRAW, 0, new Float32Array([0, 0, 2, 0, 0, 2]));\n setUniform('1i', 'image', texUnit);\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer || null);\n gl.disable(gl.BLEND);\n gl.colorMask(channels & 8, channels & 4, channels & 2, channels & 1);\n gl.viewport(x, y, width, height);\n gl.scissor(x, y, width, height);\n gl.drawArrays(gl.TRIANGLES, 0, 3);\n });\n });\n });\n }\n\n /**\n * Resizing a canvas clears its contents; this utility copies the previous contents over.\n * @param canvas\n * @param newWidth\n * @param newHeight\n */\n function resizeWebGLCanvasWithoutClearing(canvas, newWidth, newHeight) {\n var width = canvas.width;\n var height = canvas.height;\n withWebGLContext(canvas, function (ref) {\n var gl = ref.gl;\n\n var data = new Uint8Array(width * height * 4);\n gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, data);\n canvas.width = newWidth;\n canvas.height = newHeight;\n renderImageData(gl, data, 0, 0, width, height);\n });\n }\n\n var webglUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n withWebGLContext: withWebGLContext,\n renderImageData: renderImageData,\n resizeWebGLCanvasWithoutClearing: resizeWebGLCanvasWithoutClearing\n });\n\n function generate$2 (sdfWidth, sdfHeight, path, viewBox, maxDistance, sdfExponent) {\n if ( sdfExponent === void 0 ) sdfExponent = 1;\n\n var textureData = new Uint8Array(sdfWidth * sdfHeight);\n\n var viewBoxWidth = viewBox[2] - viewBox[0];\n var viewBoxHeight = viewBox[3] - viewBox[1];\n\n // Decompose all paths into straight line segments and add them to an index\n var segments = [];\n pathToLineSegments(path, function (x1, y1, x2, y2) {\n segments.push({\n x1: x1, y1: y1, x2: x2, y2: y2,\n minX: Math.min(x1, x2),\n minY: Math.min(y1, y2),\n maxX: Math.max(x1, x2),\n maxY: Math.max(y1, y2)\n });\n });\n\n // Sort segments by maxX, this will let us short-circuit some loops below\n segments.sort(function (a, b) { return a.maxX - b.maxX; });\n\n // For each target SDF texel, find the distance from its center to its nearest line segment,\n // map that distance to an alpha value, and write that alpha to the texel\n for (var sdfX = 0; sdfX < sdfWidth; sdfX++) {\n for (var sdfY = 0; sdfY < sdfHeight; sdfY++) {\n var signedDist = findNearestSignedDistance(\n viewBox[0] + viewBoxWidth * (sdfX + 0.5) / sdfWidth,\n viewBox[1] + viewBoxHeight * (sdfY + 0.5) / sdfHeight\n );\n\n // Use an exponential scale to ensure the texels very near the glyph path have adequate\n // precision, while allowing the distance field to cover the entire texture, given that\n // there are only 8 bits available. Formula visualized: https://www.desmos.com/calculator/uiaq5aqiam\n var alpha = Math.pow((1 - Math.abs(signedDist) / maxDistance), sdfExponent) / 2;\n if (signedDist < 0) {\n alpha = 1 - alpha;\n }\n\n alpha = Math.max(0, Math.min(255, Math.round(alpha * 255))); //clamp\n textureData[sdfY * sdfWidth + sdfX] = alpha;\n }\n }\n\n return textureData\n\n /**\n * For a given x/y, search the index for the closest line segment and return\n * its signed distance. Negative = inside, positive = outside, zero = on edge\n * @param x\n * @param y\n * @returns {number}\n */\n function findNearestSignedDistance (x, y) {\n var closestDistSq = Infinity;\n var closestDist = Infinity;\n\n for (var i = segments.length; i--;) {\n var seg = segments[i];\n if (seg.maxX + closestDist <= x) { break } //sorting by maxX means no more can be closer, so we can short-circuit\n if (x + closestDist > seg.minX && y - closestDist < seg.maxY && y + closestDist > seg.minY) {\n var distSq = absSquareDistanceToLineSegment(x, y, seg.x1, seg.y1, seg.x2, seg.y2);\n if (distSq < closestDistSq) {\n closestDistSq = distSq;\n closestDist = Math.sqrt(closestDistSq);\n }\n }\n }\n\n // Flip to negative distance if inside the poly\n if (isPointInPoly(x, y)) {\n closestDist = -closestDist;\n }\n return closestDist\n }\n\n /**\n * Determine whether the given point lies inside or outside the glyph. Uses a simple\n * winding-number ray casting algorithm using a ray pointing east from the point.\n */\n function isPointInPoly (x, y) {\n var winding = 0;\n for (var i = segments.length; i--;) {\n var seg = segments[i];\n if (seg.maxX <= x) { break } //sorting by maxX means no more can cross, so we can short-circuit\n var intersects = ((seg.y1 > y) !== (seg.y2 > y)) && (x < (seg.x2 - seg.x1) * (y - seg.y1) / (seg.y2 - seg.y1) + seg.x1);\n if (intersects) {\n winding += seg.y1 < seg.y2 ? 1 : -1;\n }\n }\n return winding !== 0\n }\n }\n\n function generateIntoCanvas$2(sdfWidth, sdfHeight, path, viewBox, maxDistance, sdfExponent, canvas, x, y, channel) {\n if ( sdfExponent === void 0 ) sdfExponent = 1;\n if ( x === void 0 ) x = 0;\n if ( y === void 0 ) y = 0;\n if ( channel === void 0 ) channel = 0;\n\n generateIntoFramebuffer$1(sdfWidth, sdfHeight, path, viewBox, maxDistance, sdfExponent, canvas, null, x, y, channel);\n }\n\n function generateIntoFramebuffer$1 (sdfWidth, sdfHeight, path, viewBox, maxDistance, sdfExponent, glOrCanvas, framebuffer, x, y, channel) {\n if ( sdfExponent === void 0 ) sdfExponent = 1;\n if ( x === void 0 ) x = 0;\n if ( y === void 0 ) y = 0;\n if ( channel === void 0 ) channel = 0;\n\n var data = generate$2(sdfWidth, sdfHeight, path, viewBox, maxDistance, sdfExponent);\n // Expand single-channel data to rbga\n var rgbaData = new Uint8Array(data.length * 4);\n for (var i = 0; i < data.length; i++) {\n rgbaData[i * 4 + channel] = data[i];\n }\n renderImageData(glOrCanvas, rgbaData, x, y, sdfWidth, sdfHeight, 1 << (3 - channel), framebuffer);\n }\n\n /**\n * Find the absolute distance from a point to a line segment at closest approach\n */\n function absSquareDistanceToLineSegment (x, y, lineX0, lineY0, lineX1, lineY1) {\n var ldx = lineX1 - lineX0;\n var ldy = lineY1 - lineY0;\n var lengthSq = ldx * ldx + ldy * ldy;\n var t = lengthSq ? Math.max(0, Math.min(1, ((x - lineX0) * ldx + (y - lineY0) * ldy) / lengthSq)) : 0;\n var dx = x - (lineX0 + t * ldx);\n var dy = y - (lineY0 + t * ldy);\n return dx * dx + dy * dy\n }\n\n var javascript = /*#__PURE__*/Object.freeze({\n __proto__: null,\n generate: generate$2,\n generateIntoCanvas: generateIntoCanvas$2,\n generateIntoFramebuffer: generateIntoFramebuffer$1\n });\n\n var mainVertex = \"precision highp float;uniform vec4 uGlyphBounds;attribute vec2 aUV;attribute vec4 aLineSegment;varying vec4 vLineSegment;varying vec2 vGlyphXY;void main(){vLineSegment=aLineSegment;vGlyphXY=mix(uGlyphBounds.xy,uGlyphBounds.zw,aUV);gl_Position=vec4(mix(vec2(-1.0),vec2(1.0),aUV),0.0,1.0);}\";\n\n var mainFragment = \"precision highp float;uniform vec4 uGlyphBounds;uniform float uMaxDistance;uniform float uExponent;varying vec4 vLineSegment;varying vec2 vGlyphXY;float absDistToSegment(vec2 point,vec2 lineA,vec2 lineB){vec2 lineDir=lineB-lineA;float lenSq=dot(lineDir,lineDir);float t=lenSq==0.0 ? 0.0 : clamp(dot(point-lineA,lineDir)/lenSq,0.0,1.0);vec2 linePt=lineA+t*lineDir;return distance(point,linePt);}void main(){vec4 seg=vLineSegment;vec2 p=vGlyphXY;float dist=absDistToSegment(p,seg.xy,seg.zw);float val=pow(1.0-clamp(dist/uMaxDistance,0.0,1.0),uExponent)*0.5;bool crossing=(seg.y>p.y!=seg.w>p.y)&&(p.x<(seg.z-seg.x)*(p.y-seg.y)/(seg.w-seg.y)+seg.x);bool crossingUp=crossing&&vLineSegment.y bool\n\n function validateSupport (glOrCanvas) {\n if (!isTestingSupport && !isSupported(glOrCanvas)) {\n throw new Error('WebGL generation not supported')\n }\n }\n\n function generate$1 (sdfWidth, sdfHeight, path, viewBox, maxDistance, sdfExponent, glOrCanvas) {\n if ( sdfExponent === void 0 ) sdfExponent = 1;\n if ( glOrCanvas === void 0 ) glOrCanvas = null;\n\n if (!glOrCanvas) {\n glOrCanvas = implicitContext;\n if (!glOrCanvas) {\n var canvas = typeof OffscreenCanvas === 'function'\n ? new OffscreenCanvas(1, 1)\n : typeof document !== 'undefined'\n ? document.createElement('canvas')\n : null;\n if (!canvas) {\n throw new Error('OffscreenCanvas or DOM canvas not supported')\n }\n glOrCanvas = implicitContext = canvas.getContext('webgl', { depth: false });\n }\n }\n\n validateSupport(glOrCanvas);\n\n var rgbaData = new Uint8Array(sdfWidth * sdfHeight * 4); //not Uint8ClampedArray, cuz Safari\n\n // Render into a background texture framebuffer\n withWebGLContext(glOrCanvas, function (ref) {\n var gl = ref.gl;\n var withTexture = ref.withTexture;\n var withTextureFramebuffer = ref.withTextureFramebuffer;\n\n withTexture('readable', function (texture, textureUnit) {\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, sdfWidth, sdfHeight, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n\n withTextureFramebuffer(texture, textureUnit, function (framebuffer) {\n generateIntoFramebuffer(\n sdfWidth,\n sdfHeight,\n path,\n viewBox,\n maxDistance,\n sdfExponent,\n gl,\n framebuffer,\n 0,\n 0,\n 0 // red channel\n );\n gl.readPixels(0, 0, sdfWidth, sdfHeight, gl.RGBA, gl.UNSIGNED_BYTE, rgbaData);\n });\n });\n });\n\n // Throw away all but the red channel\n var data = new Uint8Array(sdfWidth * sdfHeight);\n for (var i = 0, j = 0; i < rgbaData.length; i += 4) {\n data[j++] = rgbaData[i];\n }\n\n return data\n }\n\n function generateIntoCanvas$1(sdfWidth, sdfHeight, path, viewBox, maxDistance, sdfExponent, canvas, x, y, channel) {\n if ( sdfExponent === void 0 ) sdfExponent = 1;\n if ( x === void 0 ) x = 0;\n if ( y === void 0 ) y = 0;\n if ( channel === void 0 ) channel = 0;\n\n generateIntoFramebuffer(sdfWidth, sdfHeight, path, viewBox, maxDistance, sdfExponent, canvas, null, x, y, channel);\n }\n\n function generateIntoFramebuffer (sdfWidth, sdfHeight, path, viewBox, maxDistance, sdfExponent, glOrCanvas, framebuffer, x, y, channel) {\n if ( sdfExponent === void 0 ) sdfExponent = 1;\n if ( x === void 0 ) x = 0;\n if ( y === void 0 ) y = 0;\n if ( channel === void 0 ) channel = 0;\n\n // Verify support\n validateSupport(glOrCanvas);\n\n // Compute path segments\n var lineSegmentCoords = [];\n pathToLineSegments(path, function (x1, y1, x2, y2) {\n lineSegmentCoords.push(x1, y1, x2, y2);\n });\n lineSegmentCoords = new Float32Array(lineSegmentCoords);\n\n withWebGLContext(glOrCanvas, function (ref) {\n var gl = ref.gl;\n var isWebGL2 = ref.isWebGL2;\n var getExtension = ref.getExtension;\n var withProgram = ref.withProgram;\n var withTexture = ref.withTexture;\n var withTextureFramebuffer = ref.withTextureFramebuffer;\n var handleContextLoss = ref.handleContextLoss;\n\n withTexture('rawDistances', function (intermediateTexture, intermediateTextureUnit) {\n if (sdfWidth !== intermediateTexture._lastWidth || sdfHeight !== intermediateTexture._lastHeight) {\n gl.texImage2D(\n gl.TEXTURE_2D, 0, gl.RGBA,\n intermediateTexture._lastWidth = sdfWidth,\n intermediateTexture._lastHeight = sdfHeight,\n 0, gl.RGBA, gl.UNSIGNED_BYTE, null\n );\n }\n\n // Unsigned distance pass\n withProgram('main', mainVertex, mainFragment, function (ref) {\n var setAttribute = ref.setAttribute;\n var setUniform = ref.setUniform;\n\n // Init extensions\n var instancingExtension = !isWebGL2 && getExtension('ANGLE_instanced_arrays');\n var blendMinMaxExtension = !isWebGL2 && getExtension('EXT_blend_minmax');\n\n // Init/update attributes\n setAttribute('aUV', 2, gl.STATIC_DRAW, 0, viewportUVs);\n setAttribute('aLineSegment', 4, gl.DYNAMIC_DRAW, 1, lineSegmentCoords);\n\n // Init/update uniforms\n setUniform.apply(void 0, [ '4f', 'uGlyphBounds' ].concat( viewBox ));\n setUniform('1f', 'uMaxDistance', maxDistance);\n setUniform('1f', 'uExponent', sdfExponent);\n\n // Render initial unsigned distance / winding number info to a texture\n withTextureFramebuffer(intermediateTexture, intermediateTextureUnit, function (framebuffer) {\n gl.enable(gl.BLEND);\n gl.colorMask(true, true, true, true);\n gl.viewport(0, 0, sdfWidth, sdfHeight);\n gl.scissor(0, 0, sdfWidth, sdfHeight);\n gl.blendFunc(gl.ONE, gl.ONE);\n // Red+Green channels are incremented (FUNC_ADD) for segment-ray crossings to give a \"winding number\".\n // Alpha holds the closest (MAX) unsigned distance.\n gl.blendEquationSeparate(gl.FUNC_ADD, isWebGL2 ? gl.MAX : blendMinMaxExtension.MAX_EXT);\n gl.clear(gl.COLOR_BUFFER_BIT);\n if (isWebGL2) {\n gl.drawArraysInstanced(gl.TRIANGLES, 0, 3, lineSegmentCoords.length / 4);\n } else {\n instancingExtension.drawArraysInstancedANGLE(gl.TRIANGLES, 0, 3, lineSegmentCoords.length / 4);\n }\n // Debug\n // const debug = new Uint8Array(sdfWidth * sdfHeight * 4)\n // gl.readPixels(0, 0, sdfWidth, sdfHeight, gl.RGBA, gl.UNSIGNED_BYTE, debug)\n // console.log('intermediate texture data: ', debug)\n });\n });\n\n // Use the data stored in the texture to apply inside/outside and write to the output framebuffer rect+channel.\n withProgram('post', viewportQuadVertex, postFragment, function (program) {\n program.setAttribute('aUV', 2, gl.STATIC_DRAW, 0, viewportUVs);\n program.setUniform('1i', 'tex', intermediateTextureUnit);\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n gl.disable(gl.BLEND);\n gl.colorMask(channel === 0, channel === 1, channel === 2, channel === 3);\n gl.viewport(x, y, sdfWidth, sdfHeight);\n gl.scissor(x, y, sdfWidth, sdfHeight);\n gl.drawArrays(gl.TRIANGLES, 0, 3);\n });\n });\n\n // Handle context loss occurring during any of the above calls\n if (gl.isContextLost()) {\n handleContextLoss();\n throw new Error('webgl context lost')\n }\n });\n }\n\n function isSupported (glOrCanvas) {\n var key = (!glOrCanvas || glOrCanvas === implicitContext) ? NULL_OBJECT : (glOrCanvas.canvas || glOrCanvas);\n var supported = supportByCanvas.get(key);\n if (supported === undefined) {\n isTestingSupport = true;\n var failReason = null;\n try {\n // Since we can't detect all failure modes up front, let's just do a trial run of a\n // simple path and compare what we get back to the correct expected result. This will\n // also serve to prime the shader compilation.\n var expectedResult = [\n 97, 106, 97, 61,\n 99, 137, 118, 80,\n 80, 118, 137, 99,\n 61, 97, 106, 97\n ];\n var testResult = generate$1(\n 4,\n 4,\n 'M8,8L16,8L24,24L16,24Z',\n [0, 0, 32, 32],\n 24,\n 1,\n glOrCanvas\n );\n supported = testResult && expectedResult.length === testResult.length &&\n testResult.every(function (val, i) { return val === expectedResult[i]; });\n if (!supported) {\n failReason = 'bad trial run results';\n console.info(expectedResult, testResult);\n }\n } catch (err) {\n // TODO if it threw due to webgl context loss, should we maybe leave isSupported as null and try again later?\n supported = false;\n failReason = err.message;\n }\n if (failReason) {\n console.warn('WebGL SDF generation not supported:', failReason);\n }\n isTestingSupport = false;\n supportByCanvas.set(key, supported);\n }\n return supported\n }\n\n var webgl = /*#__PURE__*/Object.freeze({\n __proto__: null,\n generate: generate$1,\n generateIntoCanvas: generateIntoCanvas$1,\n generateIntoFramebuffer: generateIntoFramebuffer,\n isSupported: isSupported\n });\n\n /**\n * Generate an SDF texture image for a 2D path.\n *\n * @param {number} sdfWidth - width of the SDF output image in pixels.\n * @param {number} sdfHeight - height of the SDF output image in pixels.\n * @param {string} path - an SVG-like path string describing the glyph; should only contain commands: M/L/Q/C/Z.\n * @param {number[]} viewBox - [minX, minY, maxX, maxY] in font units aligning with the texture's edges.\n * @param {number} maxDistance - the maximum distance from the glyph path in font units that will be encoded; defaults\n * to half the maximum viewBox dimension.\n * @param {number} [sdfExponent] - specifies an exponent for encoding the SDF's distance values; higher exponents\n * will give greater precision nearer the glyph's path.\n * @return {Uint8Array}\n */\n function generate(\n sdfWidth,\n sdfHeight,\n path,\n viewBox,\n maxDistance,\n sdfExponent\n ) {\n if ( maxDistance === void 0 ) maxDistance = Math.max(viewBox[2] - viewBox[0], viewBox[3] - viewBox[1]) / 2;\n if ( sdfExponent === void 0 ) sdfExponent = 1;\n\n try {\n return generate$1.apply(webgl, arguments)\n } catch(e) {\n console.info('WebGL SDF generation failed, falling back to JS', e);\n return generate$2.apply(javascript, arguments)\n }\n }\n\n /**\n * Generate an SDF texture image for a 2D path, inserting the result into a WebGL `canvas` at a given x/y position\n * and color channel. This is generally much faster than calling `generate` because it does not require reading pixels\n * back from the GPU->CPU -- the `canvas` can be used directly as a WebGL texture image, so it all stays on the GPU.\n *\n * @param {number} sdfWidth - width of the SDF output image in pixels.\n * @param {number} sdfHeight - height of the SDF output image in pixels.\n * @param {string} path - an SVG-like path string describing the glyph; should only contain commands: M/L/Q/C/Z.\n * @param {number[]} viewBox - [minX, minY, maxX, maxY] in font units aligning with the texture's edges.\n * @param {number} maxDistance - the maximum distance from the glyph path in font units that will be encoded; defaults\n * to half the maximum viewBox dimension.\n * @param {number} [sdfExponent] - specifies an exponent for encoding the SDF's distance values; higher exponents\n * will give greater precision nearer the glyph's path.\n * @param {HTMLCanvasElement|OffscreenCanvas} canvas - a WebGL-enabled canvas into which the SDF will be rendered.\n * Only the relevant rect/channel will be modified, the rest will be preserved. To avoid unpredictable results\n * due to shared GL context state, this canvas should be dedicated to use by this library alone.\n * @param {number} x - the x position at which to render the SDF.\n * @param {number} y - the y position at which to render the SDF.\n * @param {number} channel - the color channel index (0-4) into which the SDF will be rendered.\n * @return {Uint8Array}\n */\n function generateIntoCanvas(\n sdfWidth,\n sdfHeight,\n path,\n viewBox,\n maxDistance,\n sdfExponent,\n canvas,\n x,\n y,\n channel\n ) {\n if ( maxDistance === void 0 ) maxDistance = Math.max(viewBox[2] - viewBox[0], viewBox[3] - viewBox[1]) / 2;\n if ( sdfExponent === void 0 ) sdfExponent = 1;\n if ( x === void 0 ) x = 0;\n if ( y === void 0 ) y = 0;\n if ( channel === void 0 ) channel = 0;\n\n try {\n return generateIntoCanvas$1.apply(webgl, arguments)\n } catch(e) {\n console.info('WebGL SDF generation failed, falling back to JS', e);\n return generateIntoCanvas$2.apply(javascript, arguments)\n }\n }\n\n exports.forEachPathCommand = forEachPathCommand;\n exports.generate = generate;\n exports.generateIntoCanvas = generateIntoCanvas;\n exports.javascript = javascript;\n exports.pathToLineSegments = pathToLineSegments;\n exports.webgl = webgl;\n exports.webglUtils = webglUtils;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n}({}));\nreturn exports\n}\n\nexport { SDFGenerator as default };\n","function bidiFactory() {\nvar bidi = (function (exports) {\n\n // Bidi character types data, auto generated\n var DATA = {\n \"R\": \"13k,1a,2,3,3,2+1j,ch+16,a+1,5+2,2+n,5,a,4,6+16,4+3,h+1b,4mo,179q,2+9,2+11,2i9+7y,2+68,4,3+4,5+13,4+3,2+4k,3+29,8+cf,1t+7z,w+17,3+3m,1t+3z,16o1+5r,8+30,8+mc,29+1r,29+4v,75+73\",\n \"EN\": \"1c+9,3d+1,6,187+9,513,4+5,7+9,sf+j,175h+9,qw+q,161f+1d,4xt+a,25i+9\",\n \"ES\": \"17,2,6dp+1,f+1,av,16vr,mx+1,4o,2\",\n \"ET\": \"z+2,3h+3,b+1,ym,3e+1,2o,p4+1,8,6u,7c,g6,1wc,1n9+4,30+1b,2n,6d,qhx+1,h0m,a+1,49+2,63+1,4+1,6bb+3,12jj\",\n \"AN\": \"16o+5,2j+9,2+1,35,ed,1ff2+9,87+u\",\n \"CS\": \"18,2+1,b,2u,12k,55v,l,17v0,2,3,53,2+1,b\",\n \"B\": \"a,3,f+2,2v,690\",\n \"S\": \"9,2,k\",\n \"WS\": \"c,k,4f4,1vk+a,u,1j,335\",\n \"ON\": \"x+1,4+4,h+5,r+5,r+3,z,5+3,2+1,2+1,5,2+2,3+4,o,w,ci+1,8+d,3+d,6+8,2+g,39+1,9,6+1,2,33,b8,3+1,3c+1,7+1,5r,b,7h+3,sa+5,2,3i+6,jg+3,ur+9,2v,ij+1,9g+9,7+a,8m,4+1,49+x,14u,2+2,c+2,e+2,e+2,e+1,i+n,e+e,2+p,u+2,e+2,36+1,2+3,2+1,b,2+2,6+5,2,2,2,h+1,5+4,6+3,3+f,16+2,5+3l,3+81,1y+p,2+40,q+a,m+13,2r+ch,2+9e,75+hf,3+v,2+2w,6e+5,f+6,75+2a,1a+p,2+2g,d+5x,r+b,6+3,4+o,g,6+1,6+2,2k+1,4,2j,5h+z,1m+1,1e+f,t+2,1f+e,d+3,4o+3,2s+1,w,535+1r,h3l+1i,93+2,2s,b+1,3l+x,2v,4g+3,21+3,kz+1,g5v+1,5a,j+9,n+v,2,3,2+8,2+1,3+2,2,3,46+1,4+4,h+5,r+5,r+a,3h+2,4+6,b+4,78,1r+24,4+c,4,1hb,ey+6,103+j,16j+c,1ux+7,5+g,fsh,jdq+1t,4,57+2e,p1,1m,1m,1m,1m,4kt+1,7j+17,5+2r,d+e,3+e,2+e,2+10,m+4,w,1n+5,1q,4z+5,4b+rb,9+c,4+c,4+37,d+2g,8+b,l+b,5+1j,9+9,7+13,9+t,3+1,27+3c,2+29,2+3q,d+d,3+4,4+2,6+6,a+o,8+6,a+2,e+6,16+42,2+1i\",\n \"BN\": \"0+8,6+d,2s+5,2+p,e,4m9,1kt+2,2b+5,5+5,17q9+v,7k,6p+8,6+1,119d+3,440+7,96s+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+75,6p+2rz,1ben+1,1ekf+1,1ekf+1\",\n \"NSM\": \"lc+33,7o+6,7c+18,2,2+1,2+1,2,21+a,1d+k,h,2u+6,3+5,3+1,2+3,10,v+q,2k+a,1n+8,a,p+3,2+8,2+2,2+4,18+2,3c+e,2+v,1k,2,5+7,5,4+6,b+1,u,1n,5+3,9,l+1,r,3+1,1m,5+1,5+1,3+2,4,v+1,4,c+1,1m,5+4,2+1,5,l+1,n+5,2,1n,3,2+3,9,8+1,c+1,v,1q,d,1f,4,1m+2,6+2,2+3,8+1,c+1,u,1n,g+1,l+1,t+1,1m+1,5+3,9,l+1,u,21,8+2,2,2j,3+6,d+7,2r,3+8,c+5,23+1,s,2,2,1k+d,2+4,2+1,6+a,2+z,a,2v+3,2+5,2+1,3+1,q+1,5+2,h+3,e,3+1,7,g,jk+2,qb+2,u+2,u+1,v+1,1t+1,2+6,9,3+a,a,1a+2,3c+1,z,3b+2,5+1,a,7+2,64+1,3,1n,2+6,2,2,3+7,7+9,3,1d+g,1s+3,1d,2+4,2,6,15+8,d+1,x+3,3+1,2+2,1l,2+1,4,2+2,1n+7,3+1,49+2,2+c,2+6,5,7,4+1,5j+1l,2+4,k1+w,2db+2,3y,2p+v,ff+3,30+1,n9x+3,2+9,x+1,29+1,7l,4,5,q+1,6,48+1,r+h,e,13+7,q+a,1b+2,1d,3+3,3+1,14,1w+5,3+1,3+1,d,9,1c,1g,2+2,3+1,6+1,2,17+1,9,6n,3,5,fn5,ki+f,h+f,r2,6b,46+4,1af+2,2+1,6+3,15+2,5,4m+1,fy+3,as+1,4a+a,4x,1j+e,1l+2,1e+3,3+1,1y+2,11+4,2+7,1r,d+1,1h+8,b+3,3,2o+2,3,2+1,7,4h,4+7,m+1,1m+1,4,12+6,4+4,5g+7,3+2,2,o,2d+5,2,5+1,2+1,6n+3,7+1,2+1,s+1,2e+7,3,2+1,2z,2,3+5,2,2u+2,3+3,2+4,78+8,2+1,75+1,2,5,41+3,3+1,5,x+5,3+1,15+5,3+3,9,a+5,3+2,1b+c,2+1,bb+6,2+5,2d+l,3+6,2+1,2+1,3f+5,4,2+1,2+6,2,21+1,4,2,9o+1,f0c+4,1o+6,t5,1s+3,2a,f5l+1,43t+2,i+7,3+6,v+3,45+2,1j0+1i,5+1d,9,f,n+4,2+e,11t+6,2+g,3+6,2+1,2+4,7a+6,c6+3,15t+6,32+6,gzhy+6n\",\n \"AL\": \"16w,3,2,e+1b,z+2,2+2s,g+1,8+1,b+m,2+t,s+2i,c+e,4h+f,1d+1e,1bwe+dp,3+3z,x+c,2+1,35+3y,2rm+z,5+7,b+5,dt+l,c+u,17nl+27,1t+27,4x+6n,3+d\",\n \"LRO\": \"6ct\",\n \"RLO\": \"6cu\",\n \"LRE\": \"6cq\",\n \"RLE\": \"6cr\",\n \"PDF\": \"6cs\",\n \"LRI\": \"6ee\",\n \"RLI\": \"6ef\",\n \"FSI\": \"6eg\",\n \"PDI\": \"6eh\"\n };\n\n var TYPES = {};\n var TYPES_TO_NAMES = {};\n TYPES.L = 1; //L is the default\n TYPES_TO_NAMES[1] = 'L';\n Object.keys(DATA).forEach(function (type, i) {\n TYPES[type] = 1 << (i + 1);\n TYPES_TO_NAMES[TYPES[type]] = type;\n });\n Object.freeze(TYPES);\n\n var ISOLATE_INIT_TYPES = TYPES.LRI | TYPES.RLI | TYPES.FSI;\n var STRONG_TYPES = TYPES.L | TYPES.R | TYPES.AL;\n var NEUTRAL_ISOLATE_TYPES = TYPES.B | TYPES.S | TYPES.WS | TYPES.ON | TYPES.FSI | TYPES.LRI | TYPES.RLI | TYPES.PDI;\n var BN_LIKE_TYPES = TYPES.BN | TYPES.RLE | TYPES.LRE | TYPES.RLO | TYPES.LRO | TYPES.PDF;\n var TRAILING_TYPES = TYPES.S | TYPES.WS | TYPES.B | ISOLATE_INIT_TYPES | TYPES.PDI | BN_LIKE_TYPES;\n\n var map = null;\n\n function parseData () {\n if (!map) {\n //const start = performance.now()\n map = new Map();\n var loop = function ( type ) {\n if (DATA.hasOwnProperty(type)) {\n var lastCode = 0;\n DATA[type].split(',').forEach(function (range) {\n var ref = range.split('+');\n var skip = ref[0];\n var step = ref[1];\n skip = parseInt(skip, 36);\n step = step ? parseInt(step, 36) : 0;\n map.set(lastCode += skip, TYPES[type]);\n for (var i = 0; i < step; i++) {\n map.set(++lastCode, TYPES[type]);\n }\n });\n }\n };\n\n for (var type in DATA) loop( type );\n //console.log(`char types parsed in ${performance.now() - start}ms`)\n }\n }\n\n /**\n * @param {string} char\n * @return {number}\n */\n function getBidiCharType (char) {\n parseData();\n return map.get(char.codePointAt(0)) || TYPES.L\n }\n\n function getBidiCharTypeName(char) {\n return TYPES_TO_NAMES[getBidiCharType(char)]\n }\n\n // Bidi bracket pairs data, auto generated\n var data$1 = {\n \"pairs\": \"14>1,1e>2,u>2,2wt>1,1>1,1ge>1,1wp>1,1j>1,f>1,hm>1,1>1,u>1,u6>1,1>1,+5,28>1,w>1,1>1,+3,b8>1,1>1,+3,1>3,-1>-1,3>1,1>1,+2,1s>1,1>1,x>1,th>1,1>1,+2,db>1,1>1,+3,3>1,1>1,+2,14qm>1,1>1,+1,4q>1,1e>2,u>2,2>1,+1\",\n \"canonical\": \"6f1>-6dx,6dy>-6dx,6ec>-6ed,6ee>-6ed,6ww>2jj,-2ji>2jj,14r4>-1e7l,1e7m>-1e7l,1e7m>-1e5c,1e5d>-1e5b,1e5c>-14qx,14qy>-14qx,14vn>-1ecg,1ech>-1ecg,1edu>-1ecg,1eci>-1ecg,1eda>-1ecg,1eci>-1ecg,1eci>-168q,168r>-168q,168s>-14ye,14yf>-14ye\"\n };\n\n /**\n * Parses an string that holds encoded codepoint mappings, e.g. for bracket pairs or\n * mirroring characters, as encoded by scripts/generateBidiData.js. Returns an object\n * holding the `map`, and optionally a `reverseMap` if `includeReverse:true`.\n * @param {string} encodedString\n * @param {boolean} includeReverse - true if you want reverseMap in the output\n * @return {{map: Map, reverseMap?: Map}}\n */\n function parseCharacterMap (encodedString, includeReverse) {\n var radix = 36;\n var lastCode = 0;\n var map = new Map();\n var reverseMap = includeReverse && new Map();\n var prevPair;\n encodedString.split(',').forEach(function visit(entry) {\n if (entry.indexOf('+') !== -1) {\n for (var i = +entry; i--;) {\n visit(prevPair);\n }\n } else {\n prevPair = entry;\n var ref = entry.split('>');\n var a = ref[0];\n var b = ref[1];\n a = String.fromCodePoint(lastCode += parseInt(a, radix));\n b = String.fromCodePoint(lastCode += parseInt(b, radix));\n map.set(a, b);\n includeReverse && reverseMap.set(b, a);\n }\n });\n return { map: map, reverseMap: reverseMap }\n }\n\n var openToClose, closeToOpen, canonical;\n\n function parse$1 () {\n if (!openToClose) {\n //const start = performance.now()\n var ref = parseCharacterMap(data$1.pairs, true);\n var map = ref.map;\n var reverseMap = ref.reverseMap;\n openToClose = map;\n closeToOpen = reverseMap;\n canonical = parseCharacterMap(data$1.canonical, false).map;\n //console.log(`brackets parsed in ${performance.now() - start}ms`)\n }\n }\n\n function openingToClosingBracket (char) {\n parse$1();\n return openToClose.get(char) || null\n }\n\n function closingToOpeningBracket (char) {\n parse$1();\n return closeToOpen.get(char) || null\n }\n\n function getCanonicalBracket (char) {\n parse$1();\n return canonical.get(char) || null\n }\n\n // Local type aliases\n var TYPE_L = TYPES.L;\n var TYPE_R = TYPES.R;\n var TYPE_EN = TYPES.EN;\n var TYPE_ES = TYPES.ES;\n var TYPE_ET = TYPES.ET;\n var TYPE_AN = TYPES.AN;\n var TYPE_CS = TYPES.CS;\n var TYPE_B = TYPES.B;\n var TYPE_S = TYPES.S;\n var TYPE_ON = TYPES.ON;\n var TYPE_BN = TYPES.BN;\n var TYPE_NSM = TYPES.NSM;\n var TYPE_AL = TYPES.AL;\n var TYPE_LRO = TYPES.LRO;\n var TYPE_RLO = TYPES.RLO;\n var TYPE_LRE = TYPES.LRE;\n var TYPE_RLE = TYPES.RLE;\n var TYPE_PDF = TYPES.PDF;\n var TYPE_LRI = TYPES.LRI;\n var TYPE_RLI = TYPES.RLI;\n var TYPE_FSI = TYPES.FSI;\n var TYPE_PDI = TYPES.PDI;\n\n /**\n * @typedef {object} GetEmbeddingLevelsResult\n * @property {{start, end, level}[]} paragraphs\n * @property {Uint8Array} levels\n */\n\n /**\n * This function applies the Bidirectional Algorithm to a string, returning the resolved embedding levels\n * in a single Uint8Array plus a list of objects holding each paragraph's start and end indices and resolved\n * base embedding level.\n *\n * @param {string} string - The input string\n * @param {\"ltr\"|\"rtl\"|\"auto\"} [baseDirection] - Use \"ltr\" or \"rtl\" to force a base paragraph direction,\n * otherwise a direction will be chosen automatically from each paragraph's contents.\n * @return {GetEmbeddingLevelsResult}\n */\n function getEmbeddingLevels (string, baseDirection) {\n var MAX_DEPTH = 125;\n\n // Start by mapping all characters to their unicode type, as a bitmask integer\n var charTypes = new Uint32Array(string.length);\n for (var i = 0; i < string.length; i++) {\n charTypes[i] = getBidiCharType(string[i]);\n }\n\n var charTypeCounts = new Map(); //will be cleared at start of each paragraph\n function changeCharType(i, type) {\n var oldType = charTypes[i];\n charTypes[i] = type;\n charTypeCounts.set(oldType, charTypeCounts.get(oldType) - 1);\n if (oldType & NEUTRAL_ISOLATE_TYPES) {\n charTypeCounts.set(NEUTRAL_ISOLATE_TYPES, charTypeCounts.get(NEUTRAL_ISOLATE_TYPES) - 1);\n }\n charTypeCounts.set(type, (charTypeCounts.get(type) || 0) + 1);\n if (type & NEUTRAL_ISOLATE_TYPES) {\n charTypeCounts.set(NEUTRAL_ISOLATE_TYPES, (charTypeCounts.get(NEUTRAL_ISOLATE_TYPES) || 0) + 1);\n }\n }\n\n var embedLevels = new Uint8Array(string.length);\n var isolationPairs = new Map(); //init->pdi and pdi->init\n\n // === 3.3.1 The Paragraph Level ===\n // 3.3.1 P1: Split the text into paragraphs\n var paragraphs = []; // [{start, end, level}, ...]\n var paragraph = null;\n for (var i$1 = 0; i$1 < string.length; i$1++) {\n if (!paragraph) {\n paragraphs.push(paragraph = {\n start: i$1,\n end: string.length - 1,\n // 3.3.1 P2-P3: Determine the paragraph level\n level: baseDirection === 'rtl' ? 1 : baseDirection === 'ltr' ? 0 : determineAutoEmbedLevel(i$1, false)\n });\n }\n if (charTypes[i$1] & TYPE_B) {\n paragraph.end = i$1;\n paragraph = null;\n }\n }\n\n var FORMATTING_TYPES = TYPE_RLE | TYPE_LRE | TYPE_RLO | TYPE_LRO | ISOLATE_INIT_TYPES | TYPE_PDI | TYPE_PDF | TYPE_B;\n var nextEven = function (n) { return n + ((n & 1) ? 1 : 2); };\n var nextOdd = function (n) { return n + ((n & 1) ? 2 : 1); };\n\n // Everything from here on will operate per paragraph.\n for (var paraIdx = 0; paraIdx < paragraphs.length; paraIdx++) {\n paragraph = paragraphs[paraIdx];\n var statusStack = [{\n _level: paragraph.level,\n _override: 0, //0=neutral, 1=L, 2=R\n _isolate: 0 //bool\n }];\n var stackTop = (void 0);\n var overflowIsolateCount = 0;\n var overflowEmbeddingCount = 0;\n var validIsolateCount = 0;\n charTypeCounts.clear();\n\n // === 3.3.2 Explicit Levels and Directions ===\n for (var i$2 = paragraph.start; i$2 <= paragraph.end; i$2++) {\n var charType = charTypes[i$2];\n stackTop = statusStack[statusStack.length - 1];\n\n // Set initial counts\n charTypeCounts.set(charType, (charTypeCounts.get(charType) || 0) + 1);\n if (charType & NEUTRAL_ISOLATE_TYPES) {\n charTypeCounts.set(NEUTRAL_ISOLATE_TYPES, (charTypeCounts.get(NEUTRAL_ISOLATE_TYPES) || 0) + 1);\n }\n\n // Explicit Embeddings: 3.3.2 X2 - X3\n if (charType & FORMATTING_TYPES) { //prefilter all formatters\n if (charType & (TYPE_RLE | TYPE_LRE)) {\n embedLevels[i$2] = stackTop._level; // 5.2\n var level = (charType === TYPE_RLE ? nextOdd : nextEven)(stackTop._level);\n if (level <= MAX_DEPTH && !overflowIsolateCount && !overflowEmbeddingCount) {\n statusStack.push({\n _level: level,\n _override: 0,\n _isolate: 0\n });\n } else if (!overflowIsolateCount) {\n overflowEmbeddingCount++;\n }\n }\n\n // Explicit Overrides: 3.3.2 X4 - X5\n else if (charType & (TYPE_RLO | TYPE_LRO)) {\n embedLevels[i$2] = stackTop._level; // 5.2\n var level$1 = (charType === TYPE_RLO ? nextOdd : nextEven)(stackTop._level);\n if (level$1 <= MAX_DEPTH && !overflowIsolateCount && !overflowEmbeddingCount) {\n statusStack.push({\n _level: level$1,\n _override: (charType & TYPE_RLO) ? TYPE_R : TYPE_L,\n _isolate: 0\n });\n } else if (!overflowIsolateCount) {\n overflowEmbeddingCount++;\n }\n }\n\n // Isolates: 3.3.2 X5a - X5c\n else if (charType & ISOLATE_INIT_TYPES) {\n // X5c - FSI becomes either RLI or LRI\n if (charType & TYPE_FSI) {\n charType = determineAutoEmbedLevel(i$2 + 1, true) === 1 ? TYPE_RLI : TYPE_LRI;\n }\n\n embedLevels[i$2] = stackTop._level;\n if (stackTop._override) {\n changeCharType(i$2, stackTop._override);\n }\n var level$2 = (charType === TYPE_RLI ? nextOdd : nextEven)(stackTop._level);\n if (level$2 <= MAX_DEPTH && overflowIsolateCount === 0 && overflowEmbeddingCount === 0) {\n validIsolateCount++;\n statusStack.push({\n _level: level$2,\n _override: 0,\n _isolate: 1,\n _isolInitIndex: i$2\n });\n } else {\n overflowIsolateCount++;\n }\n }\n\n // Terminating Isolates: 3.3.2 X6a\n else if (charType & TYPE_PDI) {\n if (overflowIsolateCount > 0) {\n overflowIsolateCount--;\n } else if (validIsolateCount > 0) {\n overflowEmbeddingCount = 0;\n while (!statusStack[statusStack.length - 1]._isolate) {\n statusStack.pop();\n }\n // Add to isolation pairs bidirectional mapping:\n var isolInitIndex = statusStack[statusStack.length - 1]._isolInitIndex;\n if (isolInitIndex != null) {\n isolationPairs.set(isolInitIndex, i$2);\n isolationPairs.set(i$2, isolInitIndex);\n }\n statusStack.pop();\n validIsolateCount--;\n }\n stackTop = statusStack[statusStack.length - 1];\n embedLevels[i$2] = stackTop._level;\n if (stackTop._override) {\n changeCharType(i$2, stackTop._override);\n }\n }\n\n\n // Terminating Embeddings and Overrides: 3.3.2 X7\n else if (charType & TYPE_PDF) {\n if (overflowIsolateCount === 0) {\n if (overflowEmbeddingCount > 0) {\n overflowEmbeddingCount--;\n } else if (!stackTop._isolate && statusStack.length > 1) {\n statusStack.pop();\n stackTop = statusStack[statusStack.length - 1];\n }\n }\n embedLevels[i$2] = stackTop._level; // 5.2\n }\n\n // End of Paragraph: 3.3.2 X8\n else if (charType & TYPE_B) {\n embedLevels[i$2] = paragraph.level;\n }\n }\n\n // Non-formatting characters: 3.3.2 X6\n else {\n embedLevels[i$2] = stackTop._level;\n // NOTE: This exclusion of BN seems to go against what section 5.2 says, but is required for test passage\n if (stackTop._override && charType !== TYPE_BN) {\n changeCharType(i$2, stackTop._override);\n }\n }\n }\n\n // === 3.3.3 Preparations for Implicit Processing ===\n\n // Remove all RLE, LRE, RLO, LRO, PDF, and BN characters: 3.3.3 X9\n // Note: Due to section 5.2, we won't remove them, but we'll use the BN_LIKE_TYPES bitset to\n // easily ignore them all from here on out.\n\n // 3.3.3 X10\n // Compute the set of isolating run sequences as specified by BD13\n var levelRuns = [];\n var currentRun = null;\n for (var i$3 = paragraph.start; i$3 <= paragraph.end; i$3++) {\n var charType$1 = charTypes[i$3];\n if (!(charType$1 & BN_LIKE_TYPES)) {\n var lvl = embedLevels[i$3];\n var isIsolInit = charType$1 & ISOLATE_INIT_TYPES;\n var isPDI = charType$1 === TYPE_PDI;\n if (currentRun && lvl === currentRun._level) {\n currentRun._end = i$3;\n currentRun._endsWithIsolInit = isIsolInit;\n } else {\n levelRuns.push(currentRun = {\n _start: i$3,\n _end: i$3,\n _level: lvl,\n _startsWithPDI: isPDI,\n _endsWithIsolInit: isIsolInit\n });\n }\n }\n }\n var isolatingRunSeqs = []; // [{seqIndices: [], sosType: L|R, eosType: L|R}]\n for (var runIdx = 0; runIdx < levelRuns.length; runIdx++) {\n var run = levelRuns[runIdx];\n if (!run._startsWithPDI || (run._startsWithPDI && !isolationPairs.has(run._start))) {\n var seqRuns = [currentRun = run];\n for (var pdiIndex = (void 0); currentRun && currentRun._endsWithIsolInit && (pdiIndex = isolationPairs.get(currentRun._end)) != null;) {\n for (var i$4 = runIdx + 1; i$4 < levelRuns.length; i$4++) {\n if (levelRuns[i$4]._start === pdiIndex) {\n seqRuns.push(currentRun = levelRuns[i$4]);\n break\n }\n }\n }\n // build flat list of indices across all runs:\n var seqIndices = [];\n for (var i$5 = 0; i$5 < seqRuns.length; i$5++) {\n var run$1 = seqRuns[i$5];\n for (var j = run$1._start; j <= run$1._end; j++) {\n seqIndices.push(j);\n }\n }\n // determine the sos/eos types:\n var firstLevel = embedLevels[seqIndices[0]];\n var prevLevel = paragraph.level;\n for (var i$6 = seqIndices[0] - 1; i$6 >= 0; i$6--) {\n if (!(charTypes[i$6] & BN_LIKE_TYPES)) { //5.2\n prevLevel = embedLevels[i$6];\n break\n }\n }\n var lastIndex = seqIndices[seqIndices.length - 1];\n var lastLevel = embedLevels[lastIndex];\n var nextLevel = paragraph.level;\n if (!(charTypes[lastIndex] & ISOLATE_INIT_TYPES)) {\n for (var i$7 = lastIndex + 1; i$7 <= paragraph.end; i$7++) {\n if (!(charTypes[i$7] & BN_LIKE_TYPES)) { //5.2\n nextLevel = embedLevels[i$7];\n break\n }\n }\n }\n isolatingRunSeqs.push({\n _seqIndices: seqIndices,\n _sosType: Math.max(prevLevel, firstLevel) % 2 ? TYPE_R : TYPE_L,\n _eosType: Math.max(nextLevel, lastLevel) % 2 ? TYPE_R : TYPE_L\n });\n }\n }\n\n // The next steps are done per isolating run sequence\n for (var seqIdx = 0; seqIdx < isolatingRunSeqs.length; seqIdx++) {\n var ref = isolatingRunSeqs[seqIdx];\n var seqIndices$1 = ref._seqIndices;\n var sosType = ref._sosType;\n var eosType = ref._eosType;\n /**\n * All the level runs in an isolating run sequence have the same embedding level.\n * \n * DO NOT change any `embedLevels[i]` within the current scope.\n */\n var embedDirection = ((embedLevels[seqIndices$1[0]]) & 1) ? TYPE_R : TYPE_L;\n\n // === 3.3.4 Resolving Weak Types ===\n\n // W1 + 5.2. Search backward from each NSM to the first character in the isolating run sequence whose\n // bidirectional type is not BN, and set the NSM to ON if it is an isolate initiator or PDI, and to its\n // type otherwise. If the NSM is the first non-BN character, change the NSM to the type of sos.\n if (charTypeCounts.get(TYPE_NSM)) {\n for (var si = 0; si < seqIndices$1.length; si++) {\n var i$8 = seqIndices$1[si];\n if (charTypes[i$8] & TYPE_NSM) {\n var prevType = sosType;\n for (var sj = si - 1; sj >= 0; sj--) {\n if (!(charTypes[seqIndices$1[sj]] & BN_LIKE_TYPES)) { //5.2 scan back to first non-BN\n prevType = charTypes[seqIndices$1[sj]];\n break\n }\n }\n changeCharType(i$8, (prevType & (ISOLATE_INIT_TYPES | TYPE_PDI)) ? TYPE_ON : prevType);\n }\n }\n }\n\n // W2. Search backward from each instance of a European number until the first strong type (R, L, AL, or sos)\n // is found. If an AL is found, change the type of the European number to Arabic number.\n if (charTypeCounts.get(TYPE_EN)) {\n for (var si$1 = 0; si$1 < seqIndices$1.length; si$1++) {\n var i$9 = seqIndices$1[si$1];\n if (charTypes[i$9] & TYPE_EN) {\n for (var sj$1 = si$1 - 1; sj$1 >= -1; sj$1--) {\n var prevCharType = sj$1 === -1 ? sosType : charTypes[seqIndices$1[sj$1]];\n if (prevCharType & STRONG_TYPES) {\n if (prevCharType === TYPE_AL) {\n changeCharType(i$9, TYPE_AN);\n }\n break\n }\n }\n }\n }\n }\n\n // W3. Change all ALs to R\n if (charTypeCounts.get(TYPE_AL)) {\n for (var si$2 = 0; si$2 < seqIndices$1.length; si$2++) {\n var i$10 = seqIndices$1[si$2];\n if (charTypes[i$10] & TYPE_AL) {\n changeCharType(i$10, TYPE_R);\n }\n }\n }\n\n // W4. A single European separator between two European numbers changes to a European number. A single common\n // separator between two numbers of the same type changes to that type.\n if (charTypeCounts.get(TYPE_ES) || charTypeCounts.get(TYPE_CS)) {\n for (var si$3 = 1; si$3 < seqIndices$1.length - 1; si$3++) {\n var i$11 = seqIndices$1[si$3];\n if (charTypes[i$11] & (TYPE_ES | TYPE_CS)) {\n var prevType$1 = 0, nextType = 0;\n for (var sj$2 = si$3 - 1; sj$2 >= 0; sj$2--) {\n prevType$1 = charTypes[seqIndices$1[sj$2]];\n if (!(prevType$1 & BN_LIKE_TYPES)) { //5.2\n break\n }\n }\n for (var sj$3 = si$3 + 1; sj$3 < seqIndices$1.length; sj$3++) {\n nextType = charTypes[seqIndices$1[sj$3]];\n if (!(nextType & BN_LIKE_TYPES)) { //5.2\n break\n }\n }\n if (prevType$1 === nextType && (charTypes[i$11] === TYPE_ES ? prevType$1 === TYPE_EN : (prevType$1 & (TYPE_EN | TYPE_AN)))) {\n changeCharType(i$11, prevType$1);\n }\n }\n }\n }\n\n // W5. A sequence of European terminators adjacent to European numbers changes to all European numbers.\n if (charTypeCounts.get(TYPE_EN)) {\n for (var si$4 = 0; si$4 < seqIndices$1.length; si$4++) {\n var i$12 = seqIndices$1[si$4];\n if (charTypes[i$12] & TYPE_EN) {\n for (var sj$4 = si$4 - 1; sj$4 >= 0 && (charTypes[seqIndices$1[sj$4]] & (TYPE_ET | BN_LIKE_TYPES)); sj$4--) {\n changeCharType(seqIndices$1[sj$4], TYPE_EN);\n }\n for (si$4++; si$4 < seqIndices$1.length && (charTypes[seqIndices$1[si$4]] & (TYPE_ET | BN_LIKE_TYPES | TYPE_EN)); si$4++) {\n if (charTypes[seqIndices$1[si$4]] !== TYPE_EN) {\n changeCharType(seqIndices$1[si$4], TYPE_EN);\n }\n }\n }\n }\n }\n\n // W6. Otherwise, separators and terminators change to Other Neutral.\n if (charTypeCounts.get(TYPE_ET) || charTypeCounts.get(TYPE_ES) || charTypeCounts.get(TYPE_CS)) {\n for (var si$5 = 0; si$5 < seqIndices$1.length; si$5++) {\n var i$13 = seqIndices$1[si$5];\n if (charTypes[i$13] & (TYPE_ET | TYPE_ES | TYPE_CS)) {\n changeCharType(i$13, TYPE_ON);\n // 5.2 transform adjacent BNs too:\n for (var sj$5 = si$5 - 1; sj$5 >= 0 && (charTypes[seqIndices$1[sj$5]] & BN_LIKE_TYPES); sj$5--) {\n changeCharType(seqIndices$1[sj$5], TYPE_ON);\n }\n for (var sj$6 = si$5 + 1; sj$6 < seqIndices$1.length && (charTypes[seqIndices$1[sj$6]] & BN_LIKE_TYPES); sj$6++) {\n changeCharType(seqIndices$1[sj$6], TYPE_ON);\n }\n }\n }\n }\n\n // W7. Search backward from each instance of a European number until the first strong type (R, L, or sos)\n // is found. If an L is found, then change the type of the European number to L.\n // NOTE: implemented in single forward pass for efficiency\n if (charTypeCounts.get(TYPE_EN)) {\n for (var si$6 = 0, prevStrongType = sosType; si$6 < seqIndices$1.length; si$6++) {\n var i$14 = seqIndices$1[si$6];\n var type = charTypes[i$14];\n if (type & TYPE_EN) {\n if (prevStrongType === TYPE_L) {\n changeCharType(i$14, TYPE_L);\n }\n } else if (type & STRONG_TYPES) {\n prevStrongType = type;\n }\n }\n }\n\n // === 3.3.5 Resolving Neutral and Isolate Formatting Types ===\n\n if (charTypeCounts.get(NEUTRAL_ISOLATE_TYPES)) {\n // N0. Process bracket pairs in an isolating run sequence sequentially in the logical order of the text\n // positions of the opening paired brackets using the logic given below. Within this scope, bidirectional\n // types EN and AN are treated as R.\n var R_TYPES_FOR_N_STEPS = (TYPE_R | TYPE_EN | TYPE_AN);\n var STRONG_TYPES_FOR_N_STEPS = R_TYPES_FOR_N_STEPS | TYPE_L;\n\n // * Identify the bracket pairs in the current isolating run sequence according to BD16.\n var bracketPairs = [];\n {\n var openerStack = [];\n for (var si$7 = 0; si$7 < seqIndices$1.length; si$7++) {\n // NOTE: for any potential bracket character we also test that it still carries a NI\n // type, as that may have been changed earlier. This doesn't seem to be explicitly\n // called out in the spec, but is required for passage of certain tests.\n if (charTypes[seqIndices$1[si$7]] & NEUTRAL_ISOLATE_TYPES) {\n var char = string[seqIndices$1[si$7]];\n var oppositeBracket = (void 0);\n // Opening bracket\n if (openingToClosingBracket(char) !== null) {\n if (openerStack.length < 63) {\n openerStack.push({ char: char, seqIndex: si$7 });\n } else {\n break\n }\n }\n // Closing bracket\n else if ((oppositeBracket = closingToOpeningBracket(char)) !== null) {\n for (var stackIdx = openerStack.length - 1; stackIdx >= 0; stackIdx--) {\n var stackChar = openerStack[stackIdx].char;\n if (stackChar === oppositeBracket ||\n stackChar === closingToOpeningBracket(getCanonicalBracket(char)) ||\n openingToClosingBracket(getCanonicalBracket(stackChar)) === char\n ) {\n bracketPairs.push([openerStack[stackIdx].seqIndex, si$7]);\n openerStack.length = stackIdx; //pop the matching bracket and all following\n break\n }\n }\n }\n }\n }\n bracketPairs.sort(function (a, b) { return a[0] - b[0]; });\n }\n // * For each bracket-pair element in the list of pairs of text positions\n for (var pairIdx = 0; pairIdx < bracketPairs.length; pairIdx++) {\n var ref$1 = bracketPairs[pairIdx];\n var openSeqIdx = ref$1[0];\n var closeSeqIdx = ref$1[1];\n // a. Inspect the bidirectional types of the characters enclosed within the bracket pair.\n // b. If any strong type (either L or R) matching the embedding direction is found, set the type for both\n // brackets in the pair to match the embedding direction.\n var foundStrongType = false;\n var useStrongType = 0;\n for (var si$8 = openSeqIdx + 1; si$8 < closeSeqIdx; si$8++) {\n var i$15 = seqIndices$1[si$8];\n if (charTypes[i$15] & STRONG_TYPES_FOR_N_STEPS) {\n foundStrongType = true;\n var lr = (charTypes[i$15] & R_TYPES_FOR_N_STEPS) ? TYPE_R : TYPE_L;\n if (lr === embedDirection) {\n useStrongType = lr;\n break\n }\n }\n }\n // c. Otherwise, if there is a strong type it must be opposite the embedding direction. Therefore, test\n // for an established context with a preceding strong type by checking backwards before the opening paired\n // bracket until the first strong type (L, R, or sos) is found.\n // 1. If the preceding strong type is also opposite the embedding direction, context is established, so\n // set the type for both brackets in the pair to that direction.\n // 2. Otherwise set the type for both brackets in the pair to the embedding direction.\n if (foundStrongType && !useStrongType) {\n useStrongType = sosType;\n for (var si$9 = openSeqIdx - 1; si$9 >= 0; si$9--) {\n var i$16 = seqIndices$1[si$9];\n if (charTypes[i$16] & STRONG_TYPES_FOR_N_STEPS) {\n var lr$1 = (charTypes[i$16] & R_TYPES_FOR_N_STEPS) ? TYPE_R : TYPE_L;\n if (lr$1 !== embedDirection) {\n useStrongType = lr$1;\n } else {\n useStrongType = embedDirection;\n }\n break\n }\n }\n }\n if (useStrongType) {\n charTypes[seqIndices$1[openSeqIdx]] = charTypes[seqIndices$1[closeSeqIdx]] = useStrongType;\n // * Any number of characters that had original bidirectional character type NSM prior to the application\n // of W1 that immediately follow a paired bracket which changed to L or R under N0 should change to match\n // the type of their preceding bracket.\n if (useStrongType !== embedDirection) {\n for (var si$10 = openSeqIdx + 1; si$10 < seqIndices$1.length; si$10++) {\n if (!(charTypes[seqIndices$1[si$10]] & BN_LIKE_TYPES)) {\n if (getBidiCharType(string[seqIndices$1[si$10]]) & TYPE_NSM) {\n charTypes[seqIndices$1[si$10]] = useStrongType;\n }\n break\n }\n }\n }\n if (useStrongType !== embedDirection) {\n for (var si$11 = closeSeqIdx + 1; si$11 < seqIndices$1.length; si$11++) {\n if (!(charTypes[seqIndices$1[si$11]] & BN_LIKE_TYPES)) {\n if (getBidiCharType(string[seqIndices$1[si$11]]) & TYPE_NSM) {\n charTypes[seqIndices$1[si$11]] = useStrongType;\n }\n break\n }\n }\n }\n }\n }\n\n // N1. A sequence of NIs takes the direction of the surrounding strong text if the text on both sides has the\n // same direction.\n // N2. Any remaining NIs take the embedding direction.\n for (var si$12 = 0; si$12 < seqIndices$1.length; si$12++) {\n if (charTypes[seqIndices$1[si$12]] & NEUTRAL_ISOLATE_TYPES) {\n var niRunStart = si$12, niRunEnd = si$12;\n var prevType$2 = sosType; //si === 0 ? sosType : (charTypes[seqIndices[si - 1]] & R_TYPES_FOR_N_STEPS) ? TYPE_R : TYPE_L\n for (var si2 = si$12 - 1; si2 >= 0; si2--) {\n if (charTypes[seqIndices$1[si2]] & BN_LIKE_TYPES) {\n niRunStart = si2; //5.2 treat BNs adjacent to NIs as NIs\n } else {\n prevType$2 = (charTypes[seqIndices$1[si2]] & R_TYPES_FOR_N_STEPS) ? TYPE_R : TYPE_L;\n break\n }\n }\n var nextType$1 = eosType;\n for (var si2$1 = si$12 + 1; si2$1 < seqIndices$1.length; si2$1++) {\n if (charTypes[seqIndices$1[si2$1]] & (NEUTRAL_ISOLATE_TYPES | BN_LIKE_TYPES)) {\n niRunEnd = si2$1;\n } else {\n nextType$1 = (charTypes[seqIndices$1[si2$1]] & R_TYPES_FOR_N_STEPS) ? TYPE_R : TYPE_L;\n break\n }\n }\n for (var sj$7 = niRunStart; sj$7 <= niRunEnd; sj$7++) {\n charTypes[seqIndices$1[sj$7]] = prevType$2 === nextType$1 ? prevType$2 : embedDirection;\n }\n si$12 = niRunEnd;\n }\n }\n }\n }\n\n // === 3.3.6 Resolving Implicit Levels ===\n\n for (var i$17 = paragraph.start; i$17 <= paragraph.end; i$17++) {\n var level$3 = embedLevels[i$17];\n var type$1 = charTypes[i$17];\n // I2. For all characters with an odd (right-to-left) embedding level, those of type L, EN or AN go up one level.\n if (level$3 & 1) {\n if (type$1 & (TYPE_L | TYPE_EN | TYPE_AN)) {\n embedLevels[i$17]++;\n }\n }\n // I1. For all characters with an even (left-to-right) embedding level, those of type R go up one level\n // and those of type AN or EN go up two levels.\n else {\n if (type$1 & TYPE_R) {\n embedLevels[i$17]++;\n } else if (type$1 & (TYPE_AN | TYPE_EN)) {\n embedLevels[i$17] += 2;\n }\n }\n\n // 5.2: Resolve any LRE, RLE, LRO, RLO, PDF, or BN to the level of the preceding character if there is one,\n // and otherwise to the base level.\n if (type$1 & BN_LIKE_TYPES) {\n embedLevels[i$17] = i$17 === 0 ? paragraph.level : embedLevels[i$17 - 1];\n }\n\n // 3.4 L1.1-4: Reset the embedding level of segment/paragraph separators, and any sequence of whitespace or\n // isolate formatting characters preceding them or the end of the paragraph, to the paragraph level.\n // NOTE: this will also need to be applied to each individual line ending after line wrapping occurs.\n if (i$17 === paragraph.end || getBidiCharType(string[i$17]) & (TYPE_S | TYPE_B)) {\n for (var j$1 = i$17; j$1 >= 0 && (getBidiCharType(string[j$1]) & TRAILING_TYPES); j$1--) {\n embedLevels[j$1] = paragraph.level;\n }\n }\n }\n }\n\n // DONE! The resolved levels can then be used, after line wrapping, to flip runs of characters\n // according to section 3.4 Reordering Resolved Levels\n return {\n levels: embedLevels,\n paragraphs: paragraphs\n }\n\n function determineAutoEmbedLevel (start, isFSI) {\n // 3.3.1 P2 - P3\n for (var i = start; i < string.length; i++) {\n var charType = charTypes[i];\n if (charType & (TYPE_R | TYPE_AL)) {\n return 1\n }\n if ((charType & (TYPE_B | TYPE_L)) || (isFSI && charType === TYPE_PDI)) {\n return 0\n }\n if (charType & ISOLATE_INIT_TYPES) {\n var pdi = indexOfMatchingPDI(i);\n i = pdi === -1 ? string.length : pdi;\n }\n }\n return 0\n }\n\n function indexOfMatchingPDI (isolateStart) {\n // 3.1.2 BD9\n var isolationLevel = 1;\n for (var i = isolateStart + 1; i < string.length; i++) {\n var charType = charTypes[i];\n if (charType & TYPE_B) {\n break\n }\n if (charType & TYPE_PDI) {\n if (--isolationLevel === 0) {\n return i\n }\n } else if (charType & ISOLATE_INIT_TYPES) {\n isolationLevel++;\n }\n }\n return -1\n }\n }\n\n // Bidi mirrored chars data, auto generated\n var data = \"14>1,j>2,t>2,u>2,1a>g,2v3>1,1>1,1ge>1,1wd>1,b>1,1j>1,f>1,ai>3,-2>3,+1,8>1k0,-1jq>1y7,-1y6>1hf,-1he>1h6,-1h5>1ha,-1h8>1qi,-1pu>1,6>3u,-3s>7,6>1,1>1,f>1,1>1,+2,3>1,1>1,+13,4>1,1>1,6>1eo,-1ee>1,3>1mg,-1me>1mk,-1mj>1mi,-1mg>1mi,-1md>1,1>1,+2,1>10k,-103>1,1>1,4>1,5>1,1>1,+10,3>1,1>8,-7>8,+1,-6>7,+1,a>1,1>1,u>1,u6>1,1>1,+5,26>1,1>1,2>1,2>2,8>1,7>1,4>1,1>1,+5,b8>1,1>1,+3,1>3,-2>1,2>1,1>1,+2,c>1,3>1,1>1,+2,h>1,3>1,a>1,1>1,2>1,3>1,1>1,d>1,f>1,3>1,1a>1,1>1,6>1,7>1,13>1,k>1,1>1,+19,4>1,1>1,+2,2>1,1>1,+18,m>1,a>1,1>1,lk>1,1>1,4>1,2>1,f>1,3>1,1>1,+3,db>1,1>1,+3,3>1,1>1,+2,14qm>1,1>1,+1,6>1,4j>1,j>2,t>2,u>2,2>1,+1\";\n\n var mirrorMap;\n\n function parse () {\n if (!mirrorMap) {\n //const start = performance.now()\n var ref = parseCharacterMap(data, true);\n var map = ref.map;\n var reverseMap = ref.reverseMap;\n // Combine both maps into one\n reverseMap.forEach(function (value, key) {\n map.set(key, value);\n });\n mirrorMap = map;\n //console.log(`mirrored chars parsed in ${performance.now() - start}ms`)\n }\n }\n\n function getMirroredCharacter (char) {\n parse();\n return mirrorMap.get(char) || null\n }\n\n /**\n * Given a string and its resolved embedding levels, build a map of indices to replacement chars\n * for any characters in right-to-left segments that have defined mirrored characters.\n * @param string\n * @param embeddingLevels\n * @param [start]\n * @param [end]\n * @return {Map}\n */\n function getMirroredCharactersMap(string, embeddingLevels, start, end) {\n var strLen = string.length;\n start = Math.max(0, start == null ? 0 : +start);\n end = Math.min(strLen - 1, end == null ? strLen - 1 : +end);\n\n var map = new Map();\n for (var i = start; i <= end; i++) {\n if (embeddingLevels[i] & 1) { //only odd (rtl) levels\n var mirror = getMirroredCharacter(string[i]);\n if (mirror !== null) {\n map.set(i, mirror);\n }\n }\n }\n return map\n }\n\n /**\n * Given a start and end denoting a single line within a string, and a set of precalculated\n * bidi embedding levels, produce a list of segments whose ordering should be flipped, in sequence.\n * @param {string} string - the full input string\n * @param {GetEmbeddingLevelsResult} embeddingLevelsResult - the result object from getEmbeddingLevels\n * @param {number} [start] - first character in a subset of the full string\n * @param {number} [end] - last character in a subset of the full string\n * @return {number[][]} - the list of start/end segments that should be flipped, in order.\n */\n function getReorderSegments(string, embeddingLevelsResult, start, end) {\n var strLen = string.length;\n start = Math.max(0, start == null ? 0 : +start);\n end = Math.min(strLen - 1, end == null ? strLen - 1 : +end);\n\n var segments = [];\n embeddingLevelsResult.paragraphs.forEach(function (paragraph) {\n var lineStart = Math.max(start, paragraph.start);\n var lineEnd = Math.min(end, paragraph.end);\n if (lineStart < lineEnd) {\n // Local slice for mutation\n var lineLevels = embeddingLevelsResult.levels.slice(lineStart, lineEnd + 1);\n\n // 3.4 L1.4: Reset any sequence of whitespace characters and/or isolate formatting characters at the\n // end of the line to the paragraph level.\n for (var i = lineEnd; i >= lineStart && (getBidiCharType(string[i]) & TRAILING_TYPES); i--) {\n lineLevels[i] = paragraph.level;\n }\n\n // L2. From the highest level found in the text to the lowest odd level on each line, including intermediate levels\n // not actually present in the text, reverse any contiguous sequence of characters that are at that level or higher.\n var maxLevel = paragraph.level;\n var minOddLevel = Infinity;\n for (var i$1 = 0; i$1 < lineLevels.length; i$1++) {\n var level = lineLevels[i$1];\n if (level > maxLevel) { maxLevel = level; }\n if (level < minOddLevel) { minOddLevel = level | 1; }\n }\n for (var lvl = maxLevel; lvl >= minOddLevel; lvl--) {\n for (var i$2 = 0; i$2 < lineLevels.length; i$2++) {\n if (lineLevels[i$2] >= lvl) {\n var segStart = i$2;\n while (i$2 + 1 < lineLevels.length && lineLevels[i$2 + 1] >= lvl) {\n i$2++;\n }\n if (i$2 > segStart) {\n segments.push([segStart + lineStart, i$2 + lineStart]);\n }\n }\n }\n }\n }\n });\n return segments\n }\n\n /**\n * @param {string} string\n * @param {GetEmbeddingLevelsResult} embedLevelsResult\n * @param {number} [start]\n * @param {number} [end]\n * @return {string} the new string with bidi segments reordered\n */\n function getReorderedString(string, embedLevelsResult, start, end) {\n var indices = getReorderedIndices(string, embedLevelsResult, start, end);\n var chars = [].concat( string );\n indices.forEach(function (charIndex, i) {\n chars[i] = (\n (embedLevelsResult.levels[charIndex] & 1) ? getMirroredCharacter(string[charIndex]) : null\n ) || string[charIndex];\n });\n return chars.join('')\n }\n\n /**\n * @param {string} string\n * @param {GetEmbeddingLevelsResult} embedLevelsResult\n * @param {number} [start]\n * @param {number} [end]\n * @return {number[]} an array with character indices in their new bidi order\n */\n function getReorderedIndices(string, embedLevelsResult, start, end) {\n var segments = getReorderSegments(string, embedLevelsResult, start, end);\n // Fill an array with indices\n var indices = [];\n for (var i = 0; i < string.length; i++) {\n indices[i] = i;\n }\n // Reverse each segment in order\n segments.forEach(function (ref) {\n var start = ref[0];\n var end = ref[1];\n\n var slice = indices.slice(start, end + 1);\n for (var i = slice.length; i--;) {\n indices[end - i] = slice[i];\n }\n });\n return indices\n }\n\n exports.closingToOpeningBracket = closingToOpeningBracket;\n exports.getBidiCharType = getBidiCharType;\n exports.getBidiCharTypeName = getBidiCharTypeName;\n exports.getCanonicalBracket = getCanonicalBracket;\n exports.getEmbeddingLevels = getEmbeddingLevels;\n exports.getMirroredCharacter = getMirroredCharacter;\n exports.getMirroredCharactersMap = getMirroredCharactersMap;\n exports.getReorderSegments = getReorderSegments;\n exports.getReorderedIndices = getReorderedIndices;\n exports.getReorderedString = getReorderedString;\n exports.openingToClosingBracket = openingToClosingBracket;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n}({}));\nreturn bidi}\n\nexport default bidiFactory;\n","import { ShaderChunk, UniformsUtils, MeshDepthMaterial, RGBADepthPacking, MeshDistanceMaterial, ShaderLib, Matrix4, Vector3, Mesh, CylinderGeometry, Vector2, MeshStandardMaterial, DoubleSide } from 'three';\n\n/**\n * Regular expression for matching the `void main() {` opener line in GLSL.\n * @type {RegExp}\n */\nconst voidMainRegExp = /\\bvoid\\s+main\\s*\\(\\s*\\)\\s*{/g;\n\n/**\n * Recursively expands all `#include ` statements within string of shader code.\n * Copied from three's WebGLProgram#parseIncludes for external use.\n *\n * @param {string} source - The GLSL source code to evaluate\n * @return {string} The GLSL code with all includes expanded\n */\nfunction expandShaderIncludes( source ) {\n const pattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n function replace(match, include) {\n let chunk = ShaderChunk[include];\n return chunk ? expandShaderIncludes(chunk) : match\n }\n return source.replace( pattern, replace )\n}\n\n/*\n * This is a direct copy of MathUtils.generateUUID from Three.js, to preserve compatibility with three\n * versions before 0.113.0 as it was changed from Math to MathUtils in that version.\n * https://github.com/mrdoob/three.js/blob/dd8b5aa3b270c17096b90945cd2d6d1b13aaec53/src/math/MathUtils.js#L16\n */\n\nconst _lut = [];\n\nfor (let i = 0; i < 256; i++) {\n _lut[i] = (i < 16 ? '0' : '') + (i).toString(16);\n}\n\nfunction generateUUID() {\n\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n\n const d0 = Math.random() * 0xffffffff | 0;\n const d1 = Math.random() * 0xffffffff | 0;\n const d2 = Math.random() * 0xffffffff | 0;\n const d3 = Math.random() * 0xffffffff | 0;\n const uuid = _lut[d0 & 0xff] + _lut[d0 >> 8 & 0xff] + _lut[d0 >> 16 & 0xff] + _lut[d0 >> 24 & 0xff] + '-' +\n _lut[d1 & 0xff] + _lut[d1 >> 8 & 0xff] + '-' + _lut[d1 >> 16 & 0x0f | 0x40] + _lut[d1 >> 24 & 0xff] + '-' +\n _lut[d2 & 0x3f | 0x80] + _lut[d2 >> 8 & 0xff] + '-' + _lut[d2 >> 16 & 0xff] + _lut[d2 >> 24 & 0xff] +\n _lut[d3 & 0xff] + _lut[d3 >> 8 & 0xff] + _lut[d3 >> 16 & 0xff] + _lut[d3 >> 24 & 0xff];\n\n // .toUpperCase() here flattens concatenated strings to save heap memory space.\n return uuid.toUpperCase()\n\n}\n\n// Local assign polyfill to avoid importing troika-core\nconst assign = Object.assign || function(/*target, ...sources*/) {\n let target = arguments[0];\n for (let i = 1, len = arguments.length; i < len; i++) {\n let source = arguments[i];\n if (source) {\n for (let prop in source) {\n if (Object.prototype.hasOwnProperty.call(source, prop)) {\n target[prop] = source[prop];\n }\n }\n }\n }\n return target\n};\n\n\nconst epoch = Date.now();\nconst CONSTRUCTOR_CACHE = new WeakMap();\nconst SHADER_UPGRADE_CACHE = new Map();\n\n// Material ids must be integers, but we can't access the increment from Three's `Material` module,\n// so let's choose a sufficiently large starting value that should theoretically never collide.\nlet materialInstanceId = 1e10;\n\n/**\n * A utility for creating a custom shader material derived from another material's\n * shaders. This allows you to inject custom shader logic and transforms into the\n * builtin ThreeJS materials without having to recreate them from scratch.\n *\n * @param {THREE.Material} baseMaterial - the original material to derive from\n *\n * @param {Object} options - How the base material should be modified.\n * @param {Object} options.defines - Custom `defines` for the material\n * @param {Object} options.extensions - Custom `extensions` for the material, e.g. `{derivatives: true}`\n * @param {Object} options.uniforms - Custom `uniforms` for use in the modified shader. These can\n * be accessed and manipulated via the resulting material's `uniforms` property, just like\n * in a ShaderMaterial. You do not need to repeat the base material's own uniforms here.\n * @param {String} options.timeUniform - If specified, a uniform of this name will be injected into\n * both shaders, and it will automatically be updated on each render frame with a number of\n * elapsed milliseconds. The \"zero\" epoch time is not significant so don't rely on this as a\n * true calendar time.\n * @param {String} options.vertexDefs - Custom GLSL code to inject into the vertex shader's top-level\n * definitions, above the `void main()` function.\n * @param {String} options.vertexMainIntro - Custom GLSL code to inject at the top of the vertex\n * shader's `void main` function.\n * @param {String} options.vertexMainOutro - Custom GLSL code to inject at the end of the vertex\n * shader's `void main` function.\n * @param {String} options.vertexTransform - Custom GLSL code to manipulate the `position`, `normal`,\n * and/or `uv` vertex attributes. This code will be wrapped within a standalone function with\n * those attributes exposed by their normal names as read/write values.\n * @param {String} options.fragmentDefs - Custom GLSL code to inject into the fragment shader's top-level\n * definitions, above the `void main()` function.\n * @param {String} options.fragmentMainIntro - Custom GLSL code to inject at the top of the fragment\n * shader's `void main` function.\n * @param {String} options.fragmentMainOutro - Custom GLSL code to inject at the end of the fragment\n * shader's `void main` function. You can manipulate `gl_FragColor` here but keep in mind it goes\n * after any of ThreeJS's color postprocessing shader chunks (tonemapping, fog, etc.), so if you\n * want those to apply to your changes use `fragmentColorTransform` instead.\n * @param {String} options.fragmentColorTransform - Custom GLSL code to manipulate the `gl_FragColor`\n * output value. Will be injected near the end of the `void main` function, but before any\n * of ThreeJS's color postprocessing shader chunks (tonemapping, fog, etc.), and before the\n * `fragmentMainOutro`.\n * @param {function<{vertexShader,fragmentShader}>:{vertexShader,fragmentShader}} options.customRewriter - A function\n * for performing custom rewrites of the full shader code. Useful if you need to do something\n * special that's not covered by the other builtin options. This function will be executed before\n * any other transforms are applied.\n * @param {boolean} options.chained - Set to `true` to prototype-chain the derived material to the base\n * material, rather than the default behavior of copying it. This allows the derived material to\n * automatically pick up changes made to the base material and its properties. This can be useful\n * where the derived material is hidden from the user as an implementation detail, allowing them\n * to work with the original material like normal. But it can result in unexpected behavior if not\n * handled carefully.\n *\n * @return {THREE.Material}\n *\n * The returned material will also have two new methods, `getDepthMaterial()` and `getDistanceMaterial()`,\n * which can be called to get a variant of the derived material for use in shadow casting. If the\n * target mesh is expected to cast shadows, then you can assign these to the mesh's `customDepthMaterial`\n * (for directional and spot lights) and/or `customDistanceMaterial` (for point lights) properties to\n * allow the cast shadow to honor your derived shader's vertex transforms and discarded fragments. These\n * will also set a custom `#define IS_DEPTH_MATERIAL` or `#define IS_DISTANCE_MATERIAL` that you can look\n * for in your derived shaders with `#ifdef` to customize their behavior for the depth or distance\n * scenarios, e.g. skipping antialiasing or expensive shader logic.\n */\nfunction createDerivedMaterial(baseMaterial, options) {\n // Generate a key that is unique to the content of these `options`. We'll use this\n // throughout for caching and for generating the upgraded shader code. This increases\n // the likelihood that the resulting shaders will line up across multiple calls so\n // their GL programs can be shared and cached.\n const optionsKey = getKeyForOptions(options);\n\n // First check to see if we've already derived from this baseMaterial using this\n // unique set of options, and if so reuse the constructor to avoid some allocations.\n let ctorsByDerivation = CONSTRUCTOR_CACHE.get(baseMaterial);\n if (!ctorsByDerivation) {\n CONSTRUCTOR_CACHE.set(baseMaterial, (ctorsByDerivation = Object.create(null)));\n }\n if (ctorsByDerivation[optionsKey]) {\n return new ctorsByDerivation[optionsKey]()\n }\n\n const privateBeforeCompileProp = `_onBeforeCompile${optionsKey}`;\n\n // Private onBeforeCompile handler that injects the modified shaders and uniforms when\n // the renderer switches to this material's program\n const onBeforeCompile = function (shaderInfo, renderer) {\n baseMaterial.onBeforeCompile.call(this, shaderInfo, renderer);\n\n // Upgrade the shaders, caching the result by incoming source code\n const cacheKey = this.customProgramCacheKey() + '|' + shaderInfo.vertexShader + '|' + shaderInfo.fragmentShader;\n let upgradedShaders = SHADER_UPGRADE_CACHE[cacheKey];\n if (!upgradedShaders) {\n const upgraded = upgradeShaders(this, shaderInfo, options, optionsKey);\n upgradedShaders = SHADER_UPGRADE_CACHE[cacheKey] = upgraded;\n }\n\n // Inject upgraded shaders and uniforms into the program\n shaderInfo.vertexShader = upgradedShaders.vertexShader;\n shaderInfo.fragmentShader = upgradedShaders.fragmentShader;\n assign(shaderInfo.uniforms, this.uniforms);\n\n // Inject auto-updating time uniform if requested\n if (options.timeUniform) {\n shaderInfo.uniforms[options.timeUniform] = {\n get value() {return Date.now() - epoch}\n };\n }\n\n // Users can still add their own handlers on top of ours\n if (this[privateBeforeCompileProp]) {\n this[privateBeforeCompileProp](shaderInfo);\n }\n };\n\n const DerivedMaterial = function DerivedMaterial() {\n return derive(options.chained ? baseMaterial : baseMaterial.clone())\n };\n\n const derive = function(base) {\n // Prototype chain to the base material\n const derived = Object.create(base, descriptor);\n\n // Store the baseMaterial for reference; this is always the original even when cloning\n Object.defineProperty(derived, 'baseMaterial', { value: baseMaterial });\n\n // Needs its own ids\n Object.defineProperty(derived, 'id', { value: materialInstanceId++ });\n derived.uuid = generateUUID();\n\n // Merge uniforms, defines, and extensions\n derived.uniforms = assign({}, base.uniforms, options.uniforms);\n derived.defines = assign({}, base.defines, options.defines);\n derived.defines[`TROIKA_DERIVED_MATERIAL_${optionsKey}`] = ''; //force a program change from the base material\n derived.extensions = assign({}, base.extensions, options.extensions);\n\n // Don't inherit EventDispatcher listeners\n derived._listeners = undefined;\n\n return derived\n };\n\n const descriptor = {\n constructor: {value: DerivedMaterial},\n isDerivedMaterial: {value: true},\n\n customProgramCacheKey: {\n writable: true,\n configurable: true,\n value: function () {\n return baseMaterial.customProgramCacheKey() + '|' + optionsKey\n }\n },\n\n onBeforeCompile: {\n get() {\n return onBeforeCompile\n },\n set(fn) {\n this[privateBeforeCompileProp] = fn;\n }\n },\n\n copy: {\n writable: true,\n configurable: true,\n value: function (source) {\n baseMaterial.copy.call(this, source);\n if (!baseMaterial.isShaderMaterial && !baseMaterial.isDerivedMaterial) {\n assign(this.extensions, source.extensions);\n assign(this.defines, source.defines);\n assign(this.uniforms, UniformsUtils.clone(source.uniforms));\n }\n return this\n }\n },\n\n clone: {\n writable: true,\n configurable: true,\n value: function () {\n const newBase = new baseMaterial.constructor();\n return derive(newBase).copy(this)\n }\n },\n\n /**\n * Utility to get a MeshDepthMaterial that will honor this derived material's vertex\n * transformations and discarded fragments.\n */\n getDepthMaterial: {\n writable: true,\n configurable: true,\n value: function() {\n let depthMaterial = this._depthMaterial;\n if (!depthMaterial) {\n depthMaterial = this._depthMaterial = createDerivedMaterial(\n baseMaterial.isDerivedMaterial\n ? baseMaterial.getDepthMaterial()\n : new MeshDepthMaterial({ depthPacking: RGBADepthPacking }),\n options\n );\n depthMaterial.defines.IS_DEPTH_MATERIAL = '';\n depthMaterial.uniforms = this.uniforms; //automatically recieve same uniform values\n }\n return depthMaterial\n }\n },\n\n /**\n * Utility to get a MeshDistanceMaterial that will honor this derived material's vertex\n * transformations and discarded fragments.\n */\n getDistanceMaterial: {\n writable: true,\n configurable: true,\n value: function() {\n let distanceMaterial = this._distanceMaterial;\n if (!distanceMaterial) {\n distanceMaterial = this._distanceMaterial = createDerivedMaterial(\n baseMaterial.isDerivedMaterial\n ? baseMaterial.getDistanceMaterial()\n : new MeshDistanceMaterial(),\n options\n );\n distanceMaterial.defines.IS_DISTANCE_MATERIAL = '';\n distanceMaterial.uniforms = this.uniforms; //automatically recieve same uniform values\n }\n return distanceMaterial\n }\n },\n\n dispose: {\n writable: true,\n configurable: true,\n value() {\n const {_depthMaterial, _distanceMaterial} = this;\n if (_depthMaterial) _depthMaterial.dispose();\n if (_distanceMaterial) _distanceMaterial.dispose();\n baseMaterial.dispose.call(this);\n }\n }\n };\n\n ctorsByDerivation[optionsKey] = DerivedMaterial;\n return new DerivedMaterial()\n}\n\n\nfunction upgradeShaders(material, {vertexShader, fragmentShader}, options, key) {\n let {\n vertexDefs,\n vertexMainIntro,\n vertexMainOutro,\n vertexTransform,\n fragmentDefs,\n fragmentMainIntro,\n fragmentMainOutro,\n fragmentColorTransform,\n customRewriter,\n timeUniform\n } = options;\n\n vertexDefs = vertexDefs || '';\n vertexMainIntro = vertexMainIntro || '';\n vertexMainOutro = vertexMainOutro || '';\n fragmentDefs = fragmentDefs || '';\n fragmentMainIntro = fragmentMainIntro || '';\n fragmentMainOutro = fragmentMainOutro || '';\n\n // Expand includes if needed\n if (vertexTransform || customRewriter) {\n vertexShader = expandShaderIncludes(vertexShader);\n }\n if (fragmentColorTransform || customRewriter) {\n // We need to be able to find postprocessing chunks after include expansion in order to\n // put them after the fragmentColorTransform, so mark them with comments first. Even if\n // this particular derivation doesn't have a fragmentColorTransform, other derivations may,\n // so we still mark them.\n fragmentShader = fragmentShader.replace(\n /^[ \\t]*#include <((?:tonemapping|encodings|fog|premultiplied_alpha|dithering)_fragment)>/gm,\n '\\n//!BEGIN_POST_CHUNK $1\\n$&\\n//!END_POST_CHUNK\\n'\n );\n fragmentShader = expandShaderIncludes(fragmentShader);\n }\n\n // Apply custom rewriter function\n if (customRewriter) {\n let res = customRewriter({vertexShader, fragmentShader});\n vertexShader = res.vertexShader;\n fragmentShader = res.fragmentShader;\n }\n\n // The fragmentColorTransform needs to go before any postprocessing chunks, so extract\n // those and re-insert them into the outro in the correct place:\n if (fragmentColorTransform) {\n let postChunks = [];\n fragmentShader = fragmentShader.replace(\n /^\\/\\/!BEGIN_POST_CHUNK[^]+?^\\/\\/!END_POST_CHUNK/gm, // [^]+? = non-greedy match of any chars including newlines\n match => {\n postChunks.push(match);\n return ''\n }\n );\n fragmentMainOutro = `${fragmentColorTransform}\\n${postChunks.join('\\n')}\\n${fragmentMainOutro}`;\n }\n\n // Inject auto-updating time uniform if requested\n if (timeUniform) {\n const code = `\\nuniform float ${timeUniform};\\n`;\n vertexDefs = code + vertexDefs;\n fragmentDefs = code + fragmentDefs;\n }\n\n // Inject a function for the vertexTransform and rename all usages of position/normal/uv\n if (vertexTransform) {\n // Hoist these defs to the very top so they work in other function defs\n vertexShader = `vec3 troika_position_${key};\nvec3 troika_normal_${key};\nvec2 troika_uv_${key};\n${vertexShader}\n`;\n vertexDefs = `${vertexDefs}\nvoid troikaVertexTransform${key}(inout vec3 position, inout vec3 normal, inout vec2 uv) {\n ${vertexTransform}\n}\n`;\n vertexMainIntro = `\ntroika_position_${key} = vec3(position);\ntroika_normal_${key} = vec3(normal);\ntroika_uv_${key} = vec2(uv);\ntroikaVertexTransform${key}(troika_position_${key}, troika_normal_${key}, troika_uv_${key});\n${vertexMainIntro}\n`;\n vertexShader = vertexShader.replace(/\\b(position|normal|uv)\\b/g, (match, match1, index, fullStr) => {\n return /\\battribute\\s+vec[23]\\s+$/.test(fullStr.substr(0, index)) ? match1 : `troika_${match1}_${key}`\n });\n\n // Three r152 introduced the MAP_UV token, replace it too if it's pointing to the main 'uv'\n // Perhaps the other textures too going forward?\n if (!(material.map && material.map.channel > 0)) {\n vertexShader = vertexShader.replace(/\\bMAP_UV\\b/g, `troika_uv_${key}`);\n }\n }\n\n // Inject defs and intro/outro snippets\n vertexShader = injectIntoShaderCode(vertexShader, key, vertexDefs, vertexMainIntro, vertexMainOutro);\n fragmentShader = injectIntoShaderCode(fragmentShader, key, fragmentDefs, fragmentMainIntro, fragmentMainOutro);\n\n return {\n vertexShader,\n fragmentShader\n }\n}\n\nfunction injectIntoShaderCode(shaderCode, id, defs, intro, outro) {\n if (intro || outro || defs) {\n shaderCode = shaderCode.replace(voidMainRegExp, `\n${defs}\nvoid troikaOrigMain${id}() {`\n );\n shaderCode += `\nvoid main() {\n ${intro}\n troikaOrigMain${id}();\n ${outro}\n}`;\n }\n return shaderCode\n}\n\n\nfunction optionsJsonReplacer(key, value) {\n return key === 'uniforms' ? undefined : typeof value === 'function' ? value.toString() : value\n}\n\nlet _idCtr = 0;\nconst optionsHashesToIds = new Map();\nfunction getKeyForOptions(options) {\n const optionsHash = JSON.stringify(options, optionsJsonReplacer);\n let id = optionsHashesToIds.get(optionsHash);\n if (id == null) {\n optionsHashesToIds.set(optionsHash, (id = ++_idCtr));\n }\n return id\n}\n\n// Copied from threejs WebGLPrograms.js so we can resolve builtin materials to their shaders\n// TODO how can we keep this from getting stale?\nconst MATERIAL_TYPES_TO_SHADERS = {\n MeshDepthMaterial: 'depth',\n MeshDistanceMaterial: 'distanceRGBA',\n MeshNormalMaterial: 'normal',\n MeshBasicMaterial: 'basic',\n MeshLambertMaterial: 'lambert',\n MeshPhongMaterial: 'phong',\n MeshToonMaterial: 'toon',\n MeshStandardMaterial: 'physical',\n MeshPhysicalMaterial: 'physical',\n MeshMatcapMaterial: 'matcap',\n LineBasicMaterial: 'basic',\n LineDashedMaterial: 'dashed',\n PointsMaterial: 'points',\n ShadowMaterial: 'shadow',\n SpriteMaterial: 'sprite'\n};\n\n/**\n * Given a Three.js `Material` instance, find the shaders/uniforms that will be\n * used to render that material.\n *\n * @param material - the Material instance\n * @return {object} - the material's shader info: `{uniforms:{}, fragmentShader:'', vertexShader:''}`\n */\nfunction getShadersForMaterial(material) {\n let builtinType = MATERIAL_TYPES_TO_SHADERS[material.type];\n return builtinType ? ShaderLib[builtinType] : material //TODO fallback for unknown type?\n}\n\n/**\n * Find all uniforms and their types within a shader code string.\n *\n * @param {string} shader - The shader code to parse\n * @return {object} mapping of uniform names to their glsl type\n */\nfunction getShaderUniformTypes(shader) {\n let uniformRE = /\\buniform\\s+(int|float|vec[234]|mat[34])\\s+([A-Za-z_][\\w]*)/g;\n let uniforms = Object.create(null);\n let match;\n while ((match = uniformRE.exec(shader)) !== null) {\n uniforms[match[2]] = match[1];\n }\n return uniforms\n}\n\n/**\n * Helper for smoothing out the `m.getInverse(x)` --> `m.copy(x).invert()` conversion\n * that happened in ThreeJS r123.\n * @param {Matrix4} srcMatrix\n * @param {Matrix4} [tgtMatrix]\n */\nfunction invertMatrix4(srcMatrix, tgtMatrix = new Matrix4()) {\n if (typeof tgtMatrix.invert === 'function') {\n tgtMatrix.copy(srcMatrix).invert();\n } else {\n tgtMatrix.getInverse(srcMatrix);\n }\n return tgtMatrix\n}\n\n/*\nInput geometry is a cylinder with r=1, height in y dimension from 0 to 1,\ndivided into a reasonable number of height segments.\n*/\n\nconst vertexDefs = `\nuniform vec3 pointA;\nuniform vec3 controlA;\nuniform vec3 controlB;\nuniform vec3 pointB;\nuniform float radius;\nvarying float bezierT;\n\nvec3 cubicBezier(vec3 p1, vec3 c1, vec3 c2, vec3 p2, float t) {\n float t2 = 1.0 - t;\n float b0 = t2 * t2 * t2;\n float b1 = 3.0 * t * t2 * t2;\n float b2 = 3.0 * t * t * t2;\n float b3 = t * t * t;\n return b0 * p1 + b1 * c1 + b2 * c2 + b3 * p2;\n}\n\nvec3 cubicBezierDerivative(vec3 p1, vec3 c1, vec3 c2, vec3 p2, float t) {\n float t2 = 1.0 - t;\n return -3.0 * p1 * t2 * t2 +\n c1 * (3.0 * t2 * t2 - 6.0 * t2 * t) +\n c2 * (6.0 * t2 * t - 3.0 * t * t) +\n 3.0 * p2 * t * t;\n}\n`;\n\nconst vertexTransform = `\nfloat t = position.y;\nbezierT = t;\nvec3 bezierCenterPos = cubicBezier(pointA, controlA, controlB, pointB, t);\nvec3 bezierDir = normalize(cubicBezierDerivative(pointA, controlA, controlB, pointB, t));\n\n// Make \"sideways\" always perpendicular to the camera ray; this ensures that any twists\n// in the cylinder occur where you won't see them: \nvec3 viewDirection = normalMatrix * vec3(0.0, 0.0, 1.0);\nif (bezierDir == viewDirection) {\n bezierDir = normalize(cubicBezierDerivative(pointA, controlA, controlB, pointB, t == 1.0 ? t - 0.0001 : t + 0.0001));\n}\nvec3 sideways = normalize(cross(bezierDir, viewDirection));\nvec3 upish = normalize(cross(sideways, bezierDir));\n\n// Build a matrix for transforming this disc in the cylinder:\nmat4 discTx;\ndiscTx[0].xyz = sideways * radius;\ndiscTx[1].xyz = bezierDir * radius;\ndiscTx[2].xyz = upish * radius;\ndiscTx[3].xyz = bezierCenterPos;\ndiscTx[3][3] = 1.0;\n\n// Apply transform, ignoring original y\nposition = (discTx * vec4(position.x, 0.0, position.z, 1.0)).xyz;\nnormal = normalize(mat3(discTx) * normal);\n`;\n\nconst fragmentDefs = `\nuniform vec3 dashing;\nvarying float bezierT;\n`;\n\nconst fragmentMainIntro = `\nif (dashing.x + dashing.y > 0.0) {\n float dashFrac = mod(bezierT - dashing.z, dashing.x + dashing.y);\n if (dashFrac > dashing.x) {\n discard;\n }\n}\n`;\n\n// Debugging: separate color for each of the 6 sides:\n// const fragmentColorTransform = `\n// float sideNum = floor(vUV.x * 6.0);\n// vec3 mixColor = sideNum < 1.0 ? vec3(1.0, 0.0, 0.0) :\n// sideNum < 2.0 ? vec3(0.0, 1.0, 1.0) :\n// sideNum < 3.0 ? vec3(1.0, 1.0, 0.0) :\n// sideNum < 4.0 ? vec3(0.0, 0.0, 1.0) :\n// sideNum < 5.0 ? vec3(0.0, 1.0, 0.0) :\n// vec3(1.0, 0.0, 1.0);\n// gl_FragColor.xyz = mix(gl_FragColor.xyz, mixColor, 0.5);\n// `\n\n\n\nfunction createBezierMeshMaterial(baseMaterial) {\n return createDerivedMaterial(\n baseMaterial,\n {\n chained: true,\n uniforms: {\n pointA: {value: new Vector3()},\n controlA: {value: new Vector3()},\n controlB: {value: new Vector3()},\n pointB: {value: new Vector3()},\n radius: {value: 0.01},\n dashing: {value: new Vector3()} //on, off, offset\n },\n vertexDefs,\n vertexTransform,\n fragmentDefs,\n fragmentMainIntro\n }\n )\n}\n\nlet geometry = null;\n\nconst defaultBaseMaterial = /*#__PURE__*/new MeshStandardMaterial({color: 0xffffff, side: DoubleSide});\n\n\n/**\n * A ThreeJS `Mesh` that bends a tube shape along a 3D cubic bezier path. The bending is done\n * by deforming a straight cylindrical geometry in the vertex shader based on a set of four\n * control point uniforms. It patches the necessary GLSL into the mesh's assigned `material`\n * automatically.\n *\n * The cubiz bezier path is determined by its four `Vector3` properties:\n * - `pointA`\n * - `controlA`\n * - `controlB`\n * - `pointB`\n *\n * The tube's radius is controlled by its `radius` property, which defaults to `0.01`.\n *\n * You can also give the tube a dashed appearance with two properties:\n *\n * - `dashArray` - an array of two numbers, defining the length of \"on\" and \"off\" parts of\n * the dash. Each is a 0-1 ratio of the entire path's length. (Actually this is the `t` length\n * used as input to the cubic bezier function, not its visible length.)\n * - `dashOffset` - offset of where the dash starts. You can animate this to make the dashes move.\n *\n * Note that the dashes will appear like a hollow tube, not solid. This will be more apparent on\n * thicker tubes.\n *\n * TODO: proper geometry bounding sphere and raycasting\n * TODO: allow control of the geometry's segment counts\n */\nclass BezierMesh extends Mesh {\n static getGeometry() {\n return geometry || (geometry =\n new CylinderGeometry(1, 1, 1, 6, 64).translate(0, 0.5, 0)\n )\n }\n\n constructor() {\n super(\n BezierMesh.getGeometry(),\n defaultBaseMaterial\n );\n\n this.pointA = new Vector3();\n this.controlA = new Vector3();\n this.controlB = new Vector3();\n this.pointB = new Vector3();\n this.radius = 0.01;\n this.dashArray = new Vector2();\n this.dashOffset = 0;\n\n // TODO - disabling frustum culling until I figure out how to customize the\n // geometry's bounding sphere that gets used\n this.frustumCulled = false;\n }\n\n // Handler for automatically wrapping the base material with our upgrades. We do the wrapping\n // lazily on _read_ rather than write to avoid unnecessary wrapping on transient values.\n get material() {\n let derivedMaterial = this._derivedMaterial;\n const baseMaterial = this._baseMaterial || this._defaultMaterial || (this._defaultMaterial = defaultBaseMaterial.clone());\n if (!derivedMaterial || derivedMaterial.baseMaterial !== baseMaterial) {\n derivedMaterial = this._derivedMaterial = createBezierMeshMaterial(baseMaterial);\n // dispose the derived material when its base material is disposed:\n baseMaterial.addEventListener('dispose', function onDispose() {\n baseMaterial.removeEventListener('dispose', onDispose);\n derivedMaterial.dispose();\n });\n }\n return derivedMaterial\n }\n set material(baseMaterial) {\n this._baseMaterial = baseMaterial;\n }\n\n // Create and update material for shadows upon request:\n get customDepthMaterial() {\n return this.material.getDepthMaterial()\n }\n get customDistanceMaterial() {\n return this.material.getDistanceMaterial()\n }\n\n onBeforeRender() {\n const {uniforms} = this.material;\n const {pointA, controlA, controlB, pointB, radius, dashArray, dashOffset} = this;\n uniforms.pointA.value.copy(pointA);\n uniforms.controlA.value.copy(controlA);\n uniforms.controlB.value.copy(controlB);\n uniforms.pointB.value.copy(pointB);\n uniforms.radius.value = radius;\n uniforms.dashing.value.set(dashArray.x, dashArray.y, dashOffset || 0);\n }\n\n raycast(/*raycaster, intersects*/) {\n // TODO - just fail for now\n }\n}\n\nexport { BezierMesh, createDerivedMaterial, expandShaderIncludes, getShaderUniformTypes, getShadersForMaterial, invertMatrix4, voidMainRegExp };\n","import { Texture, LinearFilter, Color, InstancedBufferGeometry, Sphere, Box3, BackSide, DoubleSide, InstancedBufferAttribute, PlaneGeometry, BufferGeometry, Float32BufferAttribute, Vector2, Vector4, Matrix3, Mesh, FrontSide, MeshBasicMaterial, Matrix4, Vector3 } from 'three';\nimport { terminateWorker, defineWorkerModule } from 'troika-worker-utils';\nimport createSDFGenerator from 'webgl-sdf-generator';\nimport bidiFactory from 'bidi-js';\nimport { createDerivedMaterial, voidMainRegExp } from 'troika-three-utils';\n\n/**\n * Factory function that creates a self-contained environment for processing text typesetting requests.\n *\n * It is important that this function has no closure dependencies, so that it can be easily injected\n * into the source for a Worker without requiring a build step or complex dependency loading. All its\n * dependencies must be passed in at initialization.\n *\n * @param {function} fontParser - a function that accepts an ArrayBuffer of the font data and returns\n * a standardized structure giving access to the font and its glyphs:\n * {\n * unitsPerEm: number,\n * ascender: number,\n * descender: number,\n * capHeight: number,\n * xHeight: number,\n * lineGap: number,\n * forEachGlyph(string, fontSize, letterSpacing, callback) {\n * //invokes callback for each glyph to render, passing it an object:\n * callback({\n * index: number,\n * advanceWidth: number,\n * xMin: number,\n * yMin: number,\n * xMax: number,\n * yMax: number,\n * path: string,\n * pathCommandCount: number\n * })\n * }\n * }\n * @param {object} bidi - the bidi.js implementation object\n * @param {Object} config\n * @return {Object}\n */\nfunction createTypesetter(fontParser, bidi, config) {\n\n const {\n defaultFontURL\n } = config;\n\n /**\n * Holds parsed font objects by url\n */\n const fonts = Object.create(null);\n\n const INF = Infinity;\n\n // Set of Unicode Default_Ignorable_Code_Point characters, these will not produce visible glyphs\n // eslint-disable-next-line no-misleading-character-class\n const DEFAULT_IGNORABLE_CHARS = /[\\u00AD\\u034F\\u061C\\u115F-\\u1160\\u17B4-\\u17B5\\u180B-\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u206F\\u3164\\uFE00-\\uFE0F\\uFEFF\\uFFA0\\uFFF0-\\uFFF8]/;\n\n // This regex (instead of /\\s/) allows us to select all whitespace EXCEPT for non-breaking white spaces\n const lineBreakingWhiteSpace = `[^\\\\S\\\\u00A0]`;\n\n // Incomplete set of characters that allow line breaking after them\n // In the future we may consider a full Unicode line breaking algorithm impl: https://www.unicode.org/reports/tr14\n const BREAK_AFTER_CHARS = new RegExp(`${lineBreakingWhiteSpace}|[\\\\-\\\\u007C\\\\u00AD\\\\u2010\\\\u2012-\\\\u2014\\\\u2027\\\\u2056\\\\u2E17\\\\u2E40]`);\n\n /**\n * Load a given font url\n */\n function doLoadFont(url, callback) {\n function tryLoad() {\n const onError = err => {\n console.error(`Failure loading font ${url}${url === defaultFontURL ? '' : '; trying fallback'}`, err);\n if (url !== defaultFontURL) {\n url = defaultFontURL;\n tryLoad();\n }\n };\n try {\n const request = new XMLHttpRequest();\n request.open('get', url, true);\n request.responseType = 'arraybuffer';\n request.onload = function () {\n if (request.status >= 400) {\n onError(new Error(request.statusText));\n }\n else if (request.status > 0) {\n try {\n const fontObj = fontParser(request.response);\n callback(fontObj);\n } catch (e) {\n onError(e);\n }\n }\n };\n request.onerror = onError;\n request.send();\n } catch(err) {\n onError(err);\n }\n }\n tryLoad();\n }\n\n\n /**\n * Load a given font url if needed, invoking a callback when it's loaded. If already\n * loaded, the callback will be called synchronously.\n */\n function loadFont(fontUrl, callback) {\n if (!fontUrl) fontUrl = defaultFontURL;\n let font = fonts[fontUrl];\n if (font) {\n // if currently loading font, add to callbacks, otherwise execute immediately\n if (font.pending) {\n font.pending.push(callback);\n } else {\n callback(font);\n }\n } else {\n fonts[fontUrl] = {pending: [callback]};\n doLoadFont(fontUrl, fontObj => {\n let callbacks = fonts[fontUrl].pending;\n fonts[fontUrl] = fontObj;\n callbacks.forEach(cb => cb(fontObj));\n });\n }\n }\n\n\n /**\n * Main entry point.\n * Process a text string with given font and formatting parameters, and return all info\n * necessary to render all its glyphs.\n */\n function typeset(\n {\n text='',\n font=defaultFontURL,\n sdfGlyphSize=64,\n fontSize=1,\n letterSpacing=0,\n lineHeight='normal',\n maxWidth=INF,\n direction,\n textAlign='left',\n textIndent=0,\n whiteSpace='normal',\n overflowWrap='normal',\n anchorX = 0,\n anchorY = 0,\n includeCaretPositions=false,\n chunkedBoundsSize=8192,\n colorRanges=null\n },\n callback,\n metricsOnly=false\n ) {\n const mainStart = now();\n const timings = {fontLoad: 0, typesetting: 0};\n\n // Ensure newlines are normalized\n if (text.indexOf('\\r') > -1) {\n console.info('Typesetter: got text with \\\\r chars; normalizing to \\\\n');\n text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n }\n\n // Ensure we've got numbers not strings\n fontSize = +fontSize;\n letterSpacing = +letterSpacing;\n maxWidth = +maxWidth;\n lineHeight = lineHeight || 'normal';\n textIndent = +textIndent;\n\n loadFont(font, fontObj => {\n const hasMaxWidth = isFinite(maxWidth);\n let glyphIds = null;\n let glyphPositions = null;\n let glyphData = null;\n let glyphColors = null;\n let caretPositions = null;\n let visibleBounds = null;\n let chunkedBounds = null;\n let maxLineWidth = 0;\n let renderableGlyphCount = 0;\n let canWrap = whiteSpace !== 'nowrap';\n const {ascender, descender, unitsPerEm, lineGap, capHeight, xHeight} = fontObj;\n timings.fontLoad = now() - mainStart;\n const typesetStart = now();\n\n // Find conversion between native font units and fontSize units; this will already be done\n // for the gx/gy values below but everything else we'll need to convert\n const fontSizeMult = fontSize / unitsPerEm;\n\n // Determine appropriate value for 'normal' line height based on the font's actual metrics\n // TODO this does not guarantee individual glyphs won't exceed the line height, e.g. Roboto; should we use yMin/Max instead?\n if (lineHeight === 'normal') {\n lineHeight = (ascender - descender + lineGap) / unitsPerEm;\n }\n\n // Determine line height and leading adjustments\n lineHeight = lineHeight * fontSize;\n const halfLeading = (lineHeight - (ascender - descender) * fontSizeMult) / 2;\n const topBaseline = -(ascender * fontSizeMult + halfLeading);\n const caretHeight = Math.min(lineHeight, (ascender - descender) * fontSizeMult);\n const caretBottomOffset = (ascender + descender) / 2 * fontSizeMult - caretHeight / 2;\n\n // Distribute glyphs into lines based on wrapping\n let lineXOffset = textIndent;\n let currentLine = new TextLine();\n const lines = [currentLine];\n\n fontObj.forEachGlyph(text, fontSize, letterSpacing, (glyphObj, glyphX, charIndex) => {\n const char = text.charAt(charIndex);\n const glyphWidth = glyphObj.advanceWidth * fontSizeMult;\n const curLineCount = currentLine.count;\n let nextLine;\n\n // Calc isWhitespace and isEmpty once per glyphObj\n if (!('isEmpty' in glyphObj)) {\n glyphObj.isWhitespace = !!char && new RegExp(lineBreakingWhiteSpace).test(char);\n glyphObj.canBreakAfter = !!char && BREAK_AFTER_CHARS.test(char);\n glyphObj.isEmpty = glyphObj.xMin === glyphObj.xMax || glyphObj.yMin === glyphObj.yMax || DEFAULT_IGNORABLE_CHARS.test(char);\n }\n if (!glyphObj.isWhitespace && !glyphObj.isEmpty) {\n renderableGlyphCount++;\n }\n\n // If a non-whitespace character overflows the max width, we need to soft-wrap\n if (canWrap && hasMaxWidth && !glyphObj.isWhitespace && glyphX + glyphWidth + lineXOffset > maxWidth && curLineCount) {\n // If it's the first char after a whitespace, start a new line\n if (currentLine.glyphAt(curLineCount - 1).glyphObj.canBreakAfter) {\n nextLine = new TextLine();\n lineXOffset = -glyphX;\n } else {\n // Back up looking for a whitespace character to wrap at\n for (let i = curLineCount; i--;) {\n // If we got the start of the line there's no soft break point; make hard break if overflowWrap='break-word'\n if (i === 0 && overflowWrap === 'break-word') {\n nextLine = new TextLine();\n lineXOffset = -glyphX;\n break\n }\n // Found a soft break point; move all chars since it to a new line\n else if (currentLine.glyphAt(i).glyphObj.canBreakAfter) {\n nextLine = currentLine.splitAt(i + 1);\n const adjustX = nextLine.glyphAt(0).x;\n lineXOffset -= adjustX;\n for (let j = nextLine.count; j--;) {\n nextLine.glyphAt(j).x -= adjustX;\n }\n break\n }\n }\n }\n if (nextLine) {\n currentLine.isSoftWrapped = true;\n currentLine = nextLine;\n lines.push(currentLine);\n maxLineWidth = maxWidth; //after soft wrapping use maxWidth as calculated width\n }\n }\n\n let fly = currentLine.glyphAt(currentLine.count);\n fly.glyphObj = glyphObj;\n fly.x = glyphX + lineXOffset;\n fly.width = glyphWidth;\n fly.charIndex = charIndex;\n\n // Handle hard line breaks\n if (char === '\\n') {\n currentLine = new TextLine();\n lines.push(currentLine);\n lineXOffset = -(glyphX + glyphWidth + (letterSpacing * fontSize)) + textIndent;\n }\n });\n\n // Calculate width of each line (excluding trailing whitespace) and maximum block width\n lines.forEach(line => {\n for (let i = line.count; i--;) {\n let {glyphObj, x, width} = line.glyphAt(i);\n if (!glyphObj.isWhitespace) {\n line.width = x + width;\n if (line.width > maxLineWidth) {\n maxLineWidth = line.width;\n }\n return\n }\n }\n });\n\n // Find overall position adjustments for anchoring\n let anchorXOffset = 0;\n let anchorYOffset = 0;\n if (anchorX) {\n if (typeof anchorX === 'number') {\n anchorXOffset = -anchorX;\n }\n else if (typeof anchorX === 'string') {\n anchorXOffset = -maxLineWidth * (\n anchorX === 'left' ? 0 :\n anchorX === 'center' ? 0.5 :\n anchorX === 'right' ? 1 :\n parsePercent(anchorX)\n );\n }\n }\n if (anchorY) {\n if (typeof anchorY === 'number') {\n anchorYOffset = -anchorY;\n }\n else if (typeof anchorY === 'string') {\n let height = lines.length * lineHeight;\n anchorYOffset = anchorY === 'top' ? 0 :\n anchorY === 'top-baseline' ? -topBaseline :\n anchorY === 'top-cap' ? -topBaseline - capHeight * fontSizeMult :\n anchorY === 'top-ex' ? -topBaseline - xHeight * fontSizeMult :\n anchorY === 'middle' ? height / 2 :\n anchorY === 'bottom' ? height :\n anchorY === 'bottom-baseline' ? height - halfLeading + descender * fontSizeMult :\n parsePercent(anchorY) * height;\n }\n }\n\n if (!metricsOnly) {\n // Resolve bidi levels\n const bidiLevelsResult = bidi.getEmbeddingLevels(text, direction);\n\n // Process each line, applying alignment offsets, adding each glyph to the atlas, and\n // collecting all renderable glyphs into a single collection.\n glyphIds = new Uint16Array(renderableGlyphCount);\n glyphPositions = new Float32Array(renderableGlyphCount * 2);\n glyphData = {};\n visibleBounds = [INF, INF, -INF, -INF];\n chunkedBounds = [];\n let lineYOffset = topBaseline;\n if (includeCaretPositions) {\n caretPositions = new Float32Array(text.length * 3);\n }\n if (colorRanges) {\n glyphColors = new Uint8Array(renderableGlyphCount * 3);\n }\n let renderableGlyphIndex = 0;\n let prevCharIndex = -1;\n let colorCharIndex = -1;\n let chunk;\n let currentColor;\n lines.forEach((line, lineIndex) => {\n let {count:lineGlyphCount, width:lineWidth} = line;\n\n // Ignore empty lines\n if (lineGlyphCount > 0) {\n // Count trailing whitespaces, we want to ignore these for certain things\n let trailingWhitespaceCount = 0;\n for (let i = lineGlyphCount; i-- && line.glyphAt(i).glyphObj.isWhitespace;) {\n trailingWhitespaceCount++;\n }\n\n // Apply horizontal alignment adjustments\n let lineXOffset = 0;\n let justifyAdjust = 0;\n if (textAlign === 'center') {\n lineXOffset = (maxLineWidth - lineWidth) / 2;\n } else if (textAlign === 'right') {\n lineXOffset = maxLineWidth - lineWidth;\n } else if (textAlign === 'justify' && line.isSoftWrapped) {\n // count non-trailing whitespace characters, and we'll adjust the offsets per character in the next loop\n let whitespaceCount = 0;\n for (let i = lineGlyphCount - trailingWhitespaceCount; i--;) {\n if (line.glyphAt(i).glyphObj.isWhitespace) {\n whitespaceCount++;\n }\n }\n justifyAdjust = (maxLineWidth - lineWidth) / whitespaceCount;\n }\n if (justifyAdjust || lineXOffset) {\n let justifyOffset = 0;\n for (let i = 0; i < lineGlyphCount; i++) {\n let glyphInfo = line.glyphAt(i);\n const glyphObj = glyphInfo.glyphObj;\n glyphInfo.x += lineXOffset + justifyOffset;\n // Expand non-trailing whitespaces for justify alignment\n if (justifyAdjust !== 0 && glyphObj.isWhitespace && i < lineGlyphCount - trailingWhitespaceCount) {\n justifyOffset += justifyAdjust;\n glyphInfo.width += justifyAdjust;\n }\n }\n }\n\n // Perform bidi range flipping\n const flips = bidi.getReorderSegments(\n text, bidiLevelsResult, line.glyphAt(0).charIndex, line.glyphAt(line.count - 1).charIndex\n );\n for (let fi = 0; fi < flips.length; fi++) {\n const [start, end] = flips[fi];\n // Map start/end string indices to indices in the line\n let left = Infinity, right = -Infinity;\n for (let i = 0; i < lineGlyphCount; i++) {\n if (line.glyphAt(i).charIndex >= start) { // gte to handle removed characters\n let startInLine = i, endInLine = i;\n for (; endInLine < lineGlyphCount; endInLine++) {\n let info = line.glyphAt(endInLine);\n if (info.charIndex > end) {\n break\n }\n if (endInLine < lineGlyphCount - trailingWhitespaceCount) { //don't include trailing ws in flip width\n left = Math.min(left, info.x);\n right = Math.max(right, info.x + info.width);\n }\n }\n for (let j = startInLine; j < endInLine; j++) {\n const glyphInfo = line.glyphAt(j);\n glyphInfo.x = right - (glyphInfo.x + glyphInfo.width - left);\n }\n break\n }\n }\n }\n\n // Assemble final data arrays\n let glyphObj;\n const setGlyphObj = g => glyphObj = g;\n for (let i = 0; i < lineGlyphCount; i++) {\n let glyphInfo = line.glyphAt(i);\n glyphObj = glyphInfo.glyphObj;\n const glyphId = glyphObj.index;\n\n // Replace mirrored characters in rtl\n const rtl = bidiLevelsResult.levels[glyphInfo.charIndex] & 1; //odd level means rtl\n if (rtl) {\n const mirrored = bidi.getMirroredCharacter(text[glyphInfo.charIndex]);\n if (mirrored) {\n fontObj.forEachGlyph(mirrored, 0, 0, setGlyphObj);\n }\n }\n\n // Add caret positions\n if (includeCaretPositions) {\n const {charIndex} = glyphInfo;\n const caretLeft = glyphInfo.x + anchorXOffset;\n const caretRight = glyphInfo.x + glyphInfo.width + anchorXOffset;\n caretPositions[charIndex * 3] = rtl ? caretRight : caretLeft; //start edge x\n caretPositions[charIndex * 3 + 1] = rtl ? caretLeft : caretRight; //end edge x\n caretPositions[charIndex * 3 + 2] = lineYOffset + caretBottomOffset + anchorYOffset; //common bottom y\n\n // If we skipped any chars from the previous glyph (due to ligature subs), fill in caret\n // positions for those missing char indices; currently this uses a best-guess by dividing\n // the ligature's width evenly. In the future we may try to use the font's LigatureCaretList\n // table to get better interior caret positions.\n const ligCount = charIndex - prevCharIndex;\n if (ligCount > 1) {\n fillLigatureCaretPositions(caretPositions, prevCharIndex, ligCount);\n }\n prevCharIndex = charIndex;\n }\n\n // Track current color range\n if (colorRanges) {\n const {charIndex} = glyphInfo;\n while(charIndex > colorCharIndex) {\n colorCharIndex++;\n if (colorRanges.hasOwnProperty(colorCharIndex)) {\n currentColor = colorRanges[colorCharIndex];\n }\n }\n }\n\n // Get atlas data for renderable glyphs\n if (!glyphObj.isWhitespace && !glyphObj.isEmpty) {\n const idx = renderableGlyphIndex++;\n\n // Add this glyph's path data\n if (!glyphData[glyphId]) {\n glyphData[glyphId] = {\n path: glyphObj.path,\n pathBounds: [glyphObj.xMin, glyphObj.yMin, glyphObj.xMax, glyphObj.yMax]\n };\n }\n\n // Determine final glyph position and add to glyphPositions array\n const glyphX = glyphInfo.x + anchorXOffset;\n const glyphY = lineYOffset + anchorYOffset;\n glyphPositions[idx * 2] = glyphX;\n glyphPositions[idx * 2 + 1] = glyphY;\n\n // Track total visible bounds\n const visX0 = glyphX + glyphObj.xMin * fontSizeMult;\n const visY0 = glyphY + glyphObj.yMin * fontSizeMult;\n const visX1 = glyphX + glyphObj.xMax * fontSizeMult;\n const visY1 = glyphY + glyphObj.yMax * fontSizeMult;\n if (visX0 < visibleBounds[0]) visibleBounds[0] = visX0;\n if (visY0 < visibleBounds[1]) visibleBounds[1] = visY0;\n if (visX1 > visibleBounds[2]) visibleBounds[2] = visX1;\n if (visY1 > visibleBounds[3]) visibleBounds[3] = visY1;\n\n // Track bounding rects for each chunk of N glyphs\n if (idx % chunkedBoundsSize === 0) {\n chunk = {start: idx, end: idx, rect: [INF, INF, -INF, -INF]};\n chunkedBounds.push(chunk);\n }\n chunk.end++;\n const chunkRect = chunk.rect;\n if (visX0 < chunkRect[0]) chunkRect[0] = visX0;\n if (visY0 < chunkRect[1]) chunkRect[1] = visY0;\n if (visX1 > chunkRect[2]) chunkRect[2] = visX1;\n if (visY1 > chunkRect[3]) chunkRect[3] = visY1;\n\n // Add to glyph ids array\n glyphIds[idx] = glyphId;\n\n // Add colors\n if (colorRanges) {\n const start = idx * 3;\n glyphColors[start] = currentColor >> 16 & 255;\n glyphColors[start + 1] = currentColor >> 8 & 255;\n glyphColors[start + 2] = currentColor & 255;\n }\n }\n }\n }\n\n // Increment y offset for next line\n lineYOffset -= lineHeight;\n });\n\n // Fill in remaining caret positions in case the final character was a ligature\n if (caretPositions) {\n const ligCount = text.length - prevCharIndex;\n if (ligCount > 1) {\n fillLigatureCaretPositions(caretPositions, prevCharIndex, ligCount);\n }\n }\n }\n\n // Timing stats\n timings.typesetting = now() - typesetStart;\n\n callback({\n glyphIds, //font indices for each glyph\n glyphPositions, //x,y of each glyph's origin in layout\n glyphData, //dict holding data about each glyph appearing in the text\n caretPositions, //startX,endX,bottomY caret positions for each char\n caretHeight, //height of cursor from bottom to top\n glyphColors, //color for each glyph, if color ranges supplied\n chunkedBounds, //total rects per (n=chunkedBoundsSize) consecutive glyphs\n fontSize, //calculated em height\n unitsPerEm, //font units per em\n ascender: ascender * fontSizeMult, //font ascender\n descender: descender * fontSizeMult, //font descender\n capHeight: capHeight * fontSizeMult, //font cap-height\n xHeight: xHeight * fontSizeMult, //font x-height\n lineHeight, //computed line height\n topBaseline, //y coordinate of the top line's baseline\n blockBounds: [ //bounds for the whole block of text, including vertical padding for lineHeight\n anchorXOffset,\n anchorYOffset - lines.length * lineHeight,\n anchorXOffset + maxLineWidth,\n anchorYOffset\n ],\n visibleBounds, //total bounds of visible text paths, may be larger or smaller than blockBounds\n timings\n });\n });\n }\n\n\n /**\n * For a given text string and font parameters, determine the resulting block dimensions\n * after wrapping for the given maxWidth.\n * @param args\n * @param callback\n */\n function measure(args, callback) {\n typeset(args, (result) => {\n const [x0, y0, x1, y1] = result.blockBounds;\n callback({\n width: x1 - x0,\n height: y1 - y0\n });\n }, {metricsOnly: true});\n }\n\n function parsePercent(str) {\n let match = str.match(/^([\\d.]+)%$/);\n let pct = match ? parseFloat(match[1]) : NaN;\n return isNaN(pct) ? 0 : pct / 100\n }\n\n function fillLigatureCaretPositions(caretPositions, ligStartIndex, ligCount) {\n const ligStartX = caretPositions[ligStartIndex * 3];\n const ligEndX = caretPositions[ligStartIndex * 3 + 1];\n const ligY = caretPositions[ligStartIndex * 3 + 2];\n const guessedAdvanceX = (ligEndX - ligStartX) / ligCount;\n for (let i = 0; i < ligCount; i++) {\n const startIndex = (ligStartIndex + i) * 3;\n caretPositions[startIndex] = ligStartX + guessedAdvanceX * i;\n caretPositions[startIndex + 1] = ligStartX + guessedAdvanceX * (i + 1);\n caretPositions[startIndex + 2] = ligY;\n }\n }\n\n function now() {\n return (self.performance || Date).now()\n }\n\n // Array-backed structure for a single line's glyphs data\n function TextLine() {\n this.data = [];\n }\n const textLineProps = ['glyphObj', 'x', 'width', 'charIndex'];\n TextLine.prototype = {\n width: 0,\n isSoftWrapped: false,\n get count() {\n return Math.ceil(this.data.length / textLineProps.length)\n },\n glyphAt(i) {\n let fly = TextLine.flyweight;\n fly.data = this.data;\n fly.index = i;\n return fly\n },\n splitAt(i) {\n let newLine = new TextLine();\n newLine.data = this.data.splice(i * textLineProps.length);\n return newLine\n }\n };\n TextLine.flyweight = textLineProps.reduce((obj, prop, i, all) => {\n Object.defineProperty(obj, prop, {\n get() {\n return this.data[this.index * textLineProps.length + i]\n },\n set(val) {\n this.data[this.index * textLineProps.length + i] = val;\n }\n });\n return obj\n }, {data: null, index: 0});\n\n\n return {\n typeset,\n measure,\n loadFont\n }\n}\n\nconst now = () => (self.performance || Date).now();\n\nconst mainThreadGenerator = /*#__PURE__*/ createSDFGenerator();\n\nlet warned;\n\n/**\n * Generate an SDF texture image for a single glyph path, placing the result into a webgl canvas at a\n * given location and channel. Utilizes the webgl-sdf-generator external package for GPU-accelerated SDF\n * generation when supported.\n */\nfunction generateSDF(width, height, path, viewBox, distance, exponent, canvas, x, y, channel, useWebGL = true) {\n // Allow opt-out\n if (!useWebGL) {\n return generateSDF_JS_Worker(width, height, path, viewBox, distance, exponent, canvas, x, y, channel)\n }\n\n // Attempt GPU-accelerated generation first\n return generateSDF_GL(width, height, path, viewBox, distance, exponent, canvas, x, y, channel).then(\n null,\n err => {\n // WebGL failed either due to a hard error or unexpected results; fall back to JS in workers\n if (!warned) {\n console.warn(`WebGL SDF generation failed, falling back to JS`, err);\n warned = true;\n }\n return generateSDF_JS_Worker(width, height, path, viewBox, distance, exponent, canvas, x, y, channel)\n }\n )\n}\n\nconst queue = [];\nconst chunkTimeBudget = 5; // ms\nlet timer = 0;\n\nfunction nextChunk() {\n const start = now();\n while (queue.length && now() - start < chunkTimeBudget) {\n queue.shift()();\n }\n timer = queue.length ? setTimeout(nextChunk, 0) : 0;\n}\n\n/**\n * WebGL-based implementation executed on the main thread. Requests are executed in time-bounded\n * macrotask chunks to allow render frames to execute in between.\n */\nconst generateSDF_GL = (...args) => {\n return new Promise((resolve, reject) => {\n queue.push(() => {\n const start = now();\n try {\n mainThreadGenerator.webgl.generateIntoCanvas(...args);\n resolve({ timing: now() - start });\n } catch (err) {\n reject(err);\n }\n });\n if (!timer) {\n timer = setTimeout(nextChunk, 0);\n }\n })\n};\n\nconst threadCount = 4; // how many workers to spawn\nconst idleTimeout = 2000; // workers will be terminated after being idle this many milliseconds\nconst threads = {};\nlet callNum = 0;\n\n/**\n * Fallback JS-based implementation, fanned out to a number of worker threads for parallelism\n */\nfunction generateSDF_JS_Worker(width, height, path, viewBox, distance, exponent, canvas, x, y, channel) {\n const workerId = 'TroikaTextSDFGenerator_JS_' + ((callNum++) % threadCount);\n let thread = threads[workerId];\n if (!thread) {\n thread = threads[workerId] = {\n workerModule: defineWorkerModule({\n name: workerId,\n workerId,\n dependencies: [\n createSDFGenerator,\n now\n ],\n init(_createSDFGenerator, now) {\n const generate = _createSDFGenerator().javascript.generate;\n return function (...args) {\n const start = now();\n const textureData = generate(...args);\n return {\n textureData,\n timing: now() - start\n }\n }\n },\n getTransferables(result) {\n return [result.textureData.buffer]\n }\n }),\n requests: 0,\n idleTimer: null\n };\n }\n\n thread.requests++;\n clearTimeout(thread.idleTimer);\n return thread.workerModule(width, height, path, viewBox, distance, exponent)\n .then(({ textureData, timing }) => {\n // copy result data into the canvas\n const start = now();\n // expand single-channel data into rgba\n const imageData = new Uint8Array(textureData.length * 4);\n for (let i = 0; i < textureData.length; i++) {\n imageData[i * 4 + channel] = textureData[i];\n }\n mainThreadGenerator.webglUtils.renderImageData(canvas, imageData, x, y, width, height, 1 << (3 - channel));\n timing += now() - start;\n\n // clean up workers after a while\n if (--thread.requests === 0) {\n thread.idleTimer = setTimeout(() => { terminateWorker(workerId); }, idleTimeout);\n }\n return { timing }\n })\n}\n\nfunction warmUpSDFCanvas(canvas) {\n if (!canvas._warm) {\n mainThreadGenerator.webgl.isSupported(canvas);\n canvas._warm = true;\n }\n}\n\nconst resizeWebGLCanvasWithoutClearing = mainThreadGenerator.webglUtils.resizeWebGLCanvasWithoutClearing;\n\n/*!\nCustom build of Typr.ts (https://github.com/fredli74/Typr.ts) for use in Troika text rendering.\nOriginal MIT license applies: https://github.com/fredli74/Typr.ts/blob/master/LICENSE\n*/\nfunction typrFactory(){return \"undefined\"==typeof window&&(self.window=self),function(r){var e={parse:function(r){var t=e._bin,a=new Uint8Array(r);if(\"ttcf\"==t.readASCII(a,0,4)){var n=4;t.readUshort(a,n),n+=2,t.readUshort(a,n),n+=2;var o=t.readUint(a,n);n+=4;for(var s=[],i=0;i>>t&1)&&e++;return e},e._lctf.readClassDef=function(r,t){var a=e._bin,n=[],o=a.readUshort(r,t);if(t+=2,1==o){var s=a.readUshort(r,t);t+=2;var i=a.readUshort(r,t);t+=2;for(var h=0;h0&&(o.featureParams=n+s);var i=a.readUshort(r,t);t+=2,o.tab=[];for(var h=0;h255?-1:e.CFF.glyphByUnicode(r,e.CFF.tableSE[t])},e.CFF.readEncoding=function(r,t,a){e._bin;var n=[\".notdef\"],o=r[t];if(t++,0!=o)throw \"error: unknown encoding format: \"+o;var s=r[t];t++;for(var i=0;i>4,p=15&v;if(15!=c&&l.push(c),15!=p&&l.push(p),15==p)break}for(var U=\"\",g=[0,1,2,3,4,5,6,7,8,9,\".\",\"e\",\"e-\",\"reserved\",\"-\",\"endOfNumber\"],S=0;S=s.xMax||s.yMin>=s.yMax)return null;if(s.noc>0){s.endPts=[];for(var i=0;i=1&&i.fmt<=2){f=o.readUshort(r,a);a+=2;var u=o.readUshort(r,a);a+=2;d=e._lctf.numOfOnes(f);var l=e._lctf.numOfOnes(u);if(1==i.fmt){i.pairsets=[];var v=o.readUshort(r,a);a+=2;for(var c=0;c=1&&i.fmt<=2){if(1==i.fmt)i.delta=o.readShort(r,a),a+=2;else if(2==i.fmt){var f=o.readUshort(r,a);a+=2,i.newg=o.readUshorts(r,a,f),a+=2*i.newg.length;}}else if(4==t){i.vals=[];f=o.readUshort(r,a);a+=2;for(var d=0;d>>8;if(0!=(u&=15))throw \"unknown kern table format: \"+u;t=e.kern.readFormat0(r,t,h);}return h},e.kern.parseV1=function(r,t,a,n){var o=e._bin;o.readFixed(r,t),t+=4;var s=o.readUint(r,t);t+=4;for(var i={glyph1:[],rval:[]},h=0;h>>8;if(0!=(d&=15))throw \"unknown kern table format: \"+d;t=e.kern.readFormat0(r,t,i);}return i},e.kern.readFormat0=function(r,t,a){var n=e._bin,o=-1,s=n.readUshort(r,t);t+=2,n.readUshort(r,t),t+=2,n.readUshort(r,t),t+=2,n.readUshort(r,t),t+=2;for(var i=0;i=n.map.length?0:n.map[e];if(4==n.format){for(var o=-1,s=0;se)return 0;return 65535&(0!=n.idRangeOffset[o]?n.glyphIdArray[e-n.startCount[o]+(n.idRangeOffset[o]>>1)-(n.idRangeOffset.length-o)]:e+n.idDelta[o])}if(12==n.format){if(e>n.groups[n.groups.length-1][1])return 0;for(s=0;s-1?e.U._simpleGlyph(n,a):e.U._compoGlyph(n,t,a));},e.U._simpleGlyph=function(r,t){for(var a=0;ao)){for(var v=!0,c=0,p=0;po)){for(v=!0,p=0;p>1,s.length=0,h=!0;else if(\"o3\"==x||\"o23\"==x){s.length%2!=0&&!h&&(f=s.shift()+n.nominalWidthX),i+=s.length>>1,s.length=0,h=!0;}else if(\"o4\"==x)s.length>1&&!h&&(f=s.shift()+n.nominalWidthX,h=!0),d&&e.U.P.closePath(o),v+=s.pop(),e.U.P.moveTo(o,l,v),d=!0;else if(\"o5\"==x)for(;s.length>0;)l+=s.shift(),v+=s.shift(),e.U.P.lineTo(o,l,v);else if(\"o6\"==x||\"o7\"==x)for(var P=s.length,I=\"o6\"==x,w=0;wMath.abs(y-v)?l=b+s.shift():v=y+s.shift(),e.U.P.curveTo(o,c,p,U,g,F,_),e.U.P.curveTo(o,S,m,b,y,l,v));else if(\"o14\"==x){if(s.length>0&&!h&&(f=s.shift()+a.nominalWidthX,h=!0),4==s.length){var k=s.shift(),G=s.shift(),D=s.shift(),B=s.shift(),L=e.CFF.glyphBySE(a,D),R=e.CFF.glyphBySE(a,B);e.U._drawCFF(a.CharStrings[L],t,a,n,o),t.x=k,t.y=G,e.U._drawCFF(a.CharStrings[R],t,a,n,o);}d&&(e.U.P.closePath(o),d=!1);}else if(\"o19\"==x||\"o20\"==x){s.length%2!=0&&!h&&(f=s.shift()+n.nominalWidthX),i+=s.length>>1,s.length=0,h=!0,u+=i+7>>3;}else if(\"o21\"==x)s.length>2&&!h&&(f=s.shift()+n.nominalWidthX,h=!0),v+=s.pop(),l+=s.pop(),d&&e.U.P.closePath(o),e.U.P.moveTo(o,l,v),d=!0;else if(\"o22\"==x)s.length>1&&!h&&(f=s.shift()+n.nominalWidthX,h=!0),l+=s.pop(),d&&e.U.P.closePath(o),e.U.P.moveTo(o,l,v),d=!0;else if(\"o25\"==x){for(;s.length>6;)l+=s.shift(),v+=s.shift(),e.U.P.lineTo(o,l,v);c=l+s.shift(),p=v+s.shift(),U=c+s.shift(),g=p+s.shift(),l=U+s.shift(),v=g+s.shift(),e.U.P.curveTo(o,c,p,U,g,l,v);}else if(\"o26\"==x)for(s.length%2&&(l+=s.shift());s.length>0;)c=l,p=v+s.shift(),l=U=c+s.shift(),v=(g=p+s.shift())+s.shift(),e.U.P.curveTo(o,c,p,U,g,l,v);else if(\"o27\"==x)for(s.length%2&&(v+=s.shift());s.length>0;)p=v,U=(c=l+s.shift())+s.shift(),g=p+s.shift(),l=U+s.shift(),v=g,e.U.P.curveTo(o,c,p,U,g,l,v);else if(\"o10\"==x||\"o29\"==x){var A=\"o10\"==x?n:a;if(0==s.length)console.debug(\"error: empty stack\");else {var W=s.pop(),M=A.Subrs[W+A.Bias];t.x=l,t.y=v,t.nStems=i,t.haveWidth=h,t.width=f,t.open=d,e.U._drawCFF(M,t,a,n,o),l=t.x,v=t.y,i=t.nStems,h=t.haveWidth,f=t.width,d=t.open;}}else if(\"o30\"==x||\"o31\"==x){var V=s.length,N=(T=0,\"o31\"==x);for(T+=V-(P=-3&V);T>>1|(21845&g)<<1;h=(61680&(h=(52428&h)>>>2|(13107&h)<<2))>>>4|(3855&h)<<4,c[g]=((65280&h)>>>8|(255&h)<<8)>>>1;}var w=function(r,e,t){for(var a=r.length,i=0,o=new n(e);i>>v]=s;}else for(f=new n(a),i=0;i>>15-r[i]);return f},d=new e(288);for(g=0;g<144;++g)d[g]=8;for(g=144;g<256;++g)d[g]=9;for(g=256;g<280;++g)d[g]=7;for(g=280;g<288;++g)d[g]=8;var m=new e(32);for(g=0;g<32;++g)m[g]=5;var b=w(d,9,1),p=w(m,5,1),y=function(r){for(var e=r[0],n=1;ne&&(e=r[n]);return e},L=function(r,e,n){var t=e/8|0;return (r[t]|r[t+1]<<8)>>(7&e)&n},U=function(r,e){var n=e/8|0;return (r[n]|r[n+1]<<8|r[n+2]<<16)>>(7&e)},k=[\"unexpected EOF\",\"invalid block type\",\"invalid length/literal\",\"invalid distance\",\"stream finished\",\"no stream handler\",,\"no callback\",\"invalid UTF-8 data\",\"extra field too long\",\"date not in range 1980-2099\",\"filename too long\",\"stream finishing\",\"invalid zip data\"],T=function(r,e,n){var t=new Error(e||k[r]);if(t.code=r,Error.captureStackTrace&&Error.captureStackTrace(t,T),!n)throw t;return t},O=function(r,f,u){var s=r.length;if(!s||u&&!u.l&&s<5)return f||new e(0);var c=!f||u,g=!u||u.i;u||(u={}),f||(f=new e(3*s));var h,d=function(r){var n=f.length;if(r>n){var t=new e(Math.max(2*n,r));t.set(f),f=t;}},m=u.f||0,k=u.p||0,O=u.b||0,A=u.l,x=u.d,E=u.m,D=u.n,M=8*s;do{if(!A){u.f=m=L(r,k,1);var S=L(r,k+1,3);if(k+=3,!S){var V=r[(I=((h=k)/8|0)+(7&h&&1)+4)-4]|r[I-3]<<8,_=I+V;if(_>s){g&&T(0);break}c&&d(O+V),f.set(r.subarray(I,_),O),u.b=O+=V,u.p=k=8*_;continue}if(1==S)A=b,x=p,E=9,D=5;else if(2==S){var j=L(r,k,31)+257,z=L(r,k+10,15)+4,C=j+L(r,k+5,31)+1;k+=14;for(var F=new e(C),P=new e(19),q=0;q>>4)<16)F[q++]=I;else {var K=0,N=0;for(16==I?(N=3+L(r,k,3),k+=2,K=F[q-1]):17==I?(N=3+L(r,k,7),k+=3):18==I&&(N=11+L(r,k,127),k+=7);N--;)F[q++]=K;}}var Q=F.subarray(0,j),R=F.subarray(j);E=y(Q),D=y(R),A=w(Q,E,1),x=w(R,D,1);}else T(1);if(k>M){g&&T(0);break}}c&&d(O+131072);for(var W=(1<>>4;if((k+=15&K)>M){g&&T(0);break}if(K||T(2),Z<256)f[O++]=Z;else {if(256==Z){Y=k,A=null;break}var $=Z-254;if(Z>264){var rr=a[q=Z-257];$=L(r,k,(1<>>4;er||T(3),k+=15&er;R=l[nr];if(nr>3){rr=i[nr];R+=U(r,k)&(1<M){g&&T(0);break}c&&d(O+131072);for(var tr=O+$;Or.length)&&(i=r.length);var o=new(r instanceof n?n:r instanceof t?t:e)(i-a);return o.set(r.subarray(a,i)),o}(f,0,O)},A=new e(0);var x=\"undefined\"!=typeof TextDecoder&&new TextDecoder;try{x.decode(A,{stream:!0}),1;}catch(r){}return r.convert_streams=function(r){var e=new DataView(r),n=0;function t(){var r=e.getUint16(n);return n+=2,r}function a(){var r=e.getUint32(n);return n+=4,r}function i(r){m.setUint16(b,r),b+=2;}function o(r){m.setUint32(b,r),b+=4;}for(var f={signature:a(),flavor:a(),length:a(),numTables:t(),reserved:t(),totalSfntSize:a(),majorVersion:t(),minorVersion:t(),metaOffset:a(),metaLength:a(),metaOrigLength:a(),privOffset:a(),privLength:a()},u=0;Math.pow(2,u)<=f.numTables;)u++;u--;for(var v=16*Math.pow(2,u),s=16*f.numTables-v,l=12,c=[],g=0;g {\n let [skip, step] = range.split('+');\n skip = parseInt(skip,36);\n step = step ? parseInt(step, 36) : 0;\n joiningTypeMap.set(lastCode += skip, m[type]);\n for (let i = step; i--;) {\n joiningTypeMap.set(++lastCode, m[type]);\n }\n });\n }\n }\n return joiningTypeMap.get(ch) || JT_NON_JOINING\n }\n\n const ISOL = 1, INIT = 2, FINA = 3, MEDI = 4;\n const formsToFeatures = [null, 'isol', 'init', 'fina', 'medi'];\n\n function detectJoiningForms(str) {\n // This implements the algorithm described here:\n // https://github.com/n8willis/opentype-shaping-documents/blob/master/opentype-shaping-arabic-general.md\n const joiningForms = new Uint8Array(str.length);\n let prevJoiningType = JT_NON_JOINING;\n let prevForm = ISOL;\n let prevIndex = -1;\n for (let i = 0; i < str.length; i++) {\n const code = str.codePointAt(i);\n let joiningType = getCharJoiningType(code) | 0;\n let form = ISOL;\n if (joiningType & JT_TRANSPARENT) {\n continue\n }\n if (prevJoiningType & (JT_LEFT | JT_DUAL | JT_JOIN_CAUSING)) {\n if (joiningType & (JT_RIGHT | JT_DUAL | JT_JOIN_CAUSING)) {\n form = FINA;\n // isol->init, fina->medi\n if (prevForm === ISOL || prevForm === FINA) {\n joiningForms[prevIndex]++;\n }\n }\n else if (joiningType & (JT_LEFT | JT_NON_JOINING)) {\n // medi->fina, init->isol\n if (prevForm === INIT || prevForm === MEDI) {\n joiningForms[prevIndex]--;\n }\n }\n }\n else if (prevJoiningType & (JT_RIGHT | JT_NON_JOINING)) {\n // medi->fina, init->isol\n if (prevForm === INIT || prevForm === MEDI) {\n joiningForms[prevIndex]--;\n }\n }\n prevForm = joiningForms[i] = form;\n prevJoiningType = joiningType;\n prevIndex = i;\n if (code > 0xffff) i++;\n }\n // console.log(str.split('').map(ch => ch.codePointAt(0).toString(16)))\n // console.log(str.split('').map(ch => getCharJoiningType(ch.codePointAt(0))))\n // console.log(Array.from(joiningForms).map(f => formsToFeatures[f] || 'none'))\n return joiningForms\n }\n\n function stringToGlyphs (font, str) {\n const glyphIds = [];\n for (let i = 0; i < str.length; i++) {\n const cc = str.codePointAt(i);\n if (cc > 0xffff) i++;\n glyphIds.push(Typr.U.codeToGlyph(font, cc));\n }\n\n const gsub = font['GSUB'];\n if (gsub) {\n const {lookupList, featureList} = gsub;\n let joiningForms;\n const supportedFeatures = /^(rlig|liga|mset|isol|init|fina|medi|half|pres|blws)$/;\n const usedLookups = [];\n featureList.forEach(feature => {\n if (supportedFeatures.test(feature.tag)) {\n for (let ti = 0; ti < feature.tab.length; ti++) {\n if (usedLookups[feature.tab[ti]]) continue\n usedLookups[feature.tab[ti]] = true;\n const tab = lookupList[feature.tab[ti]];\n const isJoiningFeature = /^(isol|init|fina|medi)$/.test(feature.tag);\n if (isJoiningFeature && !joiningForms) { //lazy\n joiningForms = detectJoiningForms(str);\n }\n for (let ci = 0; ci < glyphIds.length; ci++) {\n if (!joiningForms || !isJoiningFeature || formsToFeatures[joiningForms[ci]] === feature.tag) {\n Typr.U._applySubs(glyphIds, ci, tab, lookupList);\n }\n }\n }\n }\n });\n }\n\n return glyphIds\n }\n\n function firstNum(...args) {\n for (let i = 0; i < args.length; i++) {\n if (typeof args[i] === 'number') {\n return args[i]\n }\n }\n }\n\n function wrapFontObj(typrFont) {\n const glyphMap = Object.create(null);\n\n const os2 = typrFont['OS/2'];\n const hhea = typrFont.hhea;\n const unitsPerEm = typrFont.head.unitsPerEm;\n const ascender = firstNum(os2 && os2.sTypoAscender, hhea && hhea.ascender, unitsPerEm);\n\n const fontObj = {\n unitsPerEm,\n ascender,\n descender: firstNum(os2 && os2.sTypoDescender, hhea && hhea.descender, 0),\n capHeight: firstNum(os2 && os2.sCapHeight, ascender),\n xHeight: firstNum(os2 && os2.sxHeight, ascender),\n lineGap: firstNum(os2 && os2.sTypoLineGap, hhea && hhea.lineGap),\n forEachGlyph(text, fontSize, letterSpacing, callback) {\n let glyphX = 0;\n const fontScale = 1 / fontObj.unitsPerEm * fontSize;\n\n const glyphIndices = stringToGlyphs(typrFont, text);\n let charIndex = 0;\n let prevGlyphIndex = -1;\n glyphIndices.forEach((glyphIndex, i) => {\n // Typr returns a glyph index per string codepoint, with -1s in place of those that\n // were omitted due to ligature substitution. So we can track original index in the\n // string via simple increment, and skip everything else when seeing a -1.\n if (glyphIndex !== -1) {\n let glyphObj = glyphMap[glyphIndex];\n if (!glyphObj) {\n const {cmds, crds} = Typr.U.glyphToPath(typrFont, glyphIndex);\n\n // Build path string\n let path = '';\n let crdsIdx = 0;\n for (let i = 0, len = cmds.length; i < len; i++) {\n const numArgs = cmdArgLengths[cmds[i]];\n path += cmds[i];\n for (let j = 1; j <= numArgs; j++) {\n path += (j > 1 ? ',' : '') + crds[crdsIdx++];\n }\n }\n\n // Find extents - Glyf gives this in metadata but not CFF, and Typr doesn't\n // normalize the two, so it's simplest just to iterate ourselves.\n let xMin, yMin, xMax, yMax;\n if (crds.length) {\n xMin = yMin = Infinity;\n xMax = yMax = -Infinity;\n for (let i = 0, len = crds.length; i < len; i += 2) {\n let x = crds[i];\n let y = crds[i + 1];\n if (x < xMin) xMin = x;\n if (y < yMin) yMin = y;\n if (x > xMax) xMax = x;\n if (y > yMax) yMax = y;\n }\n } else {\n xMin = xMax = yMin = yMax = 0;\n }\n\n glyphObj = glyphMap[glyphIndex] = {\n index: glyphIndex,\n advanceWidth: typrFont.hmtx.aWidth[glyphIndex],\n xMin,\n yMin,\n xMax,\n yMax,\n path,\n pathCommandCount: cmds.length,\n // forEachPathCommand(callback) {\n // let argsIndex = 0\n // const argsArray = []\n // for (let i = 0, len = cmds.length; i < len; i++) {\n // const numArgs = cmdArgLengths[cmds[i]]\n // argsArray.length = 1 + numArgs\n // argsArray[0] = cmds[i]\n // for (let j = 1; j <= numArgs; j++) {\n // argsArray[j] = crds[argsIndex++]\n // }\n // callback.apply(null, argsArray)\n // }\n // }\n };\n }\n\n // Kerning\n if (prevGlyphIndex !== -1) {\n glyphX += Typr.U.getPairAdjustment(typrFont, prevGlyphIndex, glyphIndex) * fontScale;\n }\n\n callback.call(null, glyphObj, glyphX, charIndex);\n\n if (glyphObj.advanceWidth) {\n glyphX += glyphObj.advanceWidth * fontScale;\n }\n if (letterSpacing) {\n glyphX += letterSpacing * fontSize;\n }\n\n prevGlyphIndex = glyphIndex;\n }\n charIndex += (text.codePointAt(charIndex) > 0xffff ? 2 : 1);\n });\n return glyphX\n }\n };\n\n return fontObj\n }\n\n return function parse(buffer) {\n // Look to see if we have a WOFF file and convert it if so:\n const peek = new Uint8Array(buffer, 0, 4);\n const tag = Typr._bin.readASCII(peek, 0, 4);\n if (tag === 'wOFF') {\n buffer = woff2otf(buffer);\n } else if (tag === 'wOF2') {\n throw new Error('woff2 fonts not supported')\n }\n return wrapFontObj(Typr.parse(buffer)[0])\n }\n}\n\n\nconst workerModule = /*#__PURE__*/defineWorkerModule({\n name: 'Typr Font Parser',\n dependencies: [typrFactory, woff2otfFactory, parserFactory],\n init(typrFactory, woff2otfFactory, parserFactory) {\n const Typr = typrFactory();\n const woff2otf = woff2otfFactory();\n return parserFactory(Typr, woff2otf)\n }\n});\n\nconst CONFIG = {\n defaultFontURL: 'https://fonts.gstatic.com/s/roboto/v18/KFOmCnqEu92Fr1Mu4mxM.woff', //Roboto Regular\n sdfGlyphSize: 64,\n sdfMargin: 1 / 16,\n sdfExponent: 9,\n textureWidth: 2048\n};\nconst tempColor = /*#__PURE__*/new Color();\nlet hasRequested = false;\n\nfunction now$1() {\n return (self.performance || Date).now()\n}\n\n/**\n * Customizes the text builder configuration. This must be called prior to the first font processing\n * request, and applies to all fonts.\n *\n * @param {String} config.defaultFontURL - The URL of the default font to use for text processing\n * requests, in case none is specified or the specifiede font fails to load or parse.\n * Defaults to \"Roboto Regular\" from Google Fonts.\n * @param {Number} config.sdfGlyphSize - The default size of each glyph's SDF (signed distance field)\n * texture used for rendering. Must be a power-of-two number, and applies to all fonts,\n * but note that this can also be overridden per call to `getTextRenderInfo()`.\n * Larger sizes can improve the quality of glyph rendering by increasing the sharpness\n * of corners and preventing loss of very thin lines, at the expense of memory. Defaults\n * to 64 which is generally a good balance of size and quality.\n * @param {Number} config.sdfExponent - The exponent used when encoding the SDF values. A higher exponent\n * shifts the encoded 8-bit values to achieve higher precision/accuracy at texels nearer\n * the glyph's path, with lower precision further away. Defaults to 9.\n * @param {Number} config.sdfMargin - How much space to reserve in the SDF as margin outside the glyph's\n * path, as a percentage of the SDF width. A larger margin increases the quality of\n * extruded glyph outlines, but decreases the precision available for the glyph itself.\n * Defaults to 1/16th of the glyph size.\n * @param {Number} config.textureWidth - The width of the SDF texture; must be a power of 2. Defaults to\n * 2048 which is a safe maximum texture dimension according to the stats at\n * https://webglstats.com/webgl/parameter/MAX_TEXTURE_SIZE and should allow for a\n * reasonably large number of glyphs (default glyph size of 64^2 and safe texture size of\n * 2048^2, times 4 channels, allows for 4096 glyphs.) This can be increased if you need to\n * increase the glyph size and/or have an extraordinary number of glyphs.\n */\nfunction configureTextBuilder(config) {\n if (hasRequested) {\n console.warn('configureTextBuilder called after first font request; will be ignored.');\n } else {\n assign(CONFIG, config);\n }\n}\n\n/**\n * Repository for all font SDF atlas textures and their glyph mappings. There is a separate atlas for\n * each sdfGlyphSize. Each atlas has a single Texture that holds all glyphs for all fonts.\n *\n * {\n * [sdfGlyphSize]: {\n * glyphCount: number,\n * sdfGlyphSize: number,\n * sdfTexture: Texture,\n * sdfCanvas: HTMLCanvasElement,\n * contextLost: boolean,\n * glyphsByFont: Map>\n * }\n * }\n */\nconst atlases = Object.create(null);\n\n/**\n * @typedef {object} TroikaTextRenderInfo - Format of the result from `getTextRenderInfo`.\n * @property {object} parameters - The normalized input arguments to the render call.\n * @property {Texture} sdfTexture - The SDF atlas texture.\n * @property {number} sdfGlyphSize - The size of each glyph's SDF; see `configureTextBuilder`.\n * @property {number} sdfExponent - The exponent used in encoding the SDF's values; see `configureTextBuilder`.\n * @property {Float32Array} glyphBounds - List of [minX, minY, maxX, maxY] quad bounds for each glyph.\n * @property {Float32Array} glyphAtlasIndices - List holding each glyph's index in the SDF atlas.\n * @property {Uint8Array} [glyphColors] - List holding each glyph's [r, g, b] color, if `colorRanges` was supplied.\n * @property {Float32Array} [caretPositions] - A list of caret positions for all characters in the string; each is\n * three elements: the starting X, the ending X, and the bottom Y for the caret.\n * @property {number} [caretHeight] - An appropriate height for all selection carets.\n * @property {number} ascender - The font's ascender metric.\n * @property {number} descender - The font's descender metric.\n * @property {number} capHeight - The font's cap height metric, based on the height of Latin capital letters.\n * @property {number} xHeight - The font's x height metric, based on the height of Latin lowercase letters.\n * @property {number} lineHeight - The final computed lineHeight measurement.\n * @property {number} topBaseline - The y position of the top line's baseline.\n * @property {Array} blockBounds - The total [minX, minY, maxX, maxY] rect of the whole text block;\n * this can include extra vertical space beyond the visible glyphs due to lineHeight, and is\n * equivalent to the dimensions of a block-level text element in CSS.\n * @property {Array} visibleBounds - The total [minX, minY, maxX, maxY] rect of the whole text block;\n * unlike `blockBounds` this is tightly wrapped to the visible glyph paths.\n * @property {Array} chunkedBounds - List of bounding rects for each consecutive set of N glyphs,\n * in the format `{start:N, end:N, rect:[minX, minY, maxX, maxY]}`.\n * @property {object} timings - Timing info for various parts of the rendering logic including SDF\n * generation, typesetting, etc.\n * @frozen\n */\n\n/**\n * @callback getTextRenderInfo~callback\n * @param {TroikaTextRenderInfo} textRenderInfo\n */\n\n/**\n * Main entry point for requesting the data needed to render a text string with given font parameters.\n * This is an asynchronous call, performing most of the logic in a web worker thread.\n * @param {object} args\n * @param {getTextRenderInfo~callback} callback\n */\nfunction getTextRenderInfo(args, callback) {\n hasRequested = true;\n args = assign({}, args);\n const totalStart = now$1();\n\n // Apply default font here to avoid a 'null' atlas, and convert relative\n // URLs to absolute so they can be resolved in the worker\n args.font = toAbsoluteURL(args.font || CONFIG.defaultFontURL);\n\n // Normalize text to a string\n args.text = '' + args.text;\n\n args.sdfGlyphSize = args.sdfGlyphSize || CONFIG.sdfGlyphSize;\n\n // Normalize colors\n if (args.colorRanges != null) {\n let colors = {};\n for (let key in args.colorRanges) {\n if (args.colorRanges.hasOwnProperty(key)) {\n let val = args.colorRanges[key];\n if (typeof val !== 'number') {\n val = tempColor.set(val).getHex();\n }\n colors[key] = val;\n }\n }\n args.colorRanges = colors;\n }\n\n Object.freeze(args);\n\n // Init the atlas if needed\n const {textureWidth, sdfExponent} = CONFIG;\n const {sdfGlyphSize} = args;\n const glyphsPerRow = (textureWidth / sdfGlyphSize * 4);\n let atlas = atlases[sdfGlyphSize];\n if (!atlas) {\n const canvas = document.createElement('canvas');\n canvas.width = textureWidth;\n canvas.height = sdfGlyphSize * 256 / glyphsPerRow; // start tall enough to fit 256 glyphs\n atlas = atlases[sdfGlyphSize] = {\n glyphCount: 0,\n sdfGlyphSize,\n sdfCanvas: canvas,\n sdfTexture: new Texture(\n canvas,\n undefined,\n undefined,\n undefined,\n LinearFilter,\n LinearFilter\n ),\n contextLost: false,\n glyphsByFont: new Map()\n };\n atlas.sdfTexture.generateMipmaps = false;\n initContextLossHandling(atlas);\n }\n\n const {sdfTexture, sdfCanvas} = atlas;\n let fontGlyphs = atlas.glyphsByFont.get(args.font);\n if (!fontGlyphs) {\n atlas.glyphsByFont.set(args.font, fontGlyphs = new Map());\n }\n\n // Issue request to the typesetting engine in the worker\n typesetInWorker(args).then(result => {\n const {glyphIds, glyphPositions, fontSize, unitsPerEm, timings} = result;\n const neededSDFs = [];\n const glyphBounds = new Float32Array(glyphIds.length * 4);\n const fontSizeMult = fontSize / unitsPerEm;\n let boundsIdx = 0;\n let positionsIdx = 0;\n const quadsStart = now$1();\n glyphIds.forEach((glyphId, i) => {\n let glyphInfo = fontGlyphs.get(glyphId);\n\n // If this is a glyphId not seen before, add it to the atlas\n if (!glyphInfo) {\n const {path, pathBounds} = result.glyphData[glyphId];\n\n // Margin around path edges in SDF, based on a percentage of the glyph's max dimension.\n // Note we add an extra 0.5 px over the configured value because the outer 0.5 doesn't contain\n // useful interpolated values and will be ignored anyway.\n const fontUnitsMargin = Math.max(pathBounds[2] - pathBounds[0], pathBounds[3] - pathBounds[1])\n / sdfGlyphSize * (CONFIG.sdfMargin * sdfGlyphSize + 0.5);\n\n const atlasIndex = atlas.glyphCount++;\n const sdfViewBox = [\n pathBounds[0] - fontUnitsMargin,\n pathBounds[1] - fontUnitsMargin,\n pathBounds[2] + fontUnitsMargin,\n pathBounds[3] + fontUnitsMargin,\n ];\n fontGlyphs.set(glyphId, (glyphInfo = { path, atlasIndex, sdfViewBox }));\n\n // Collect those that need SDF generation\n neededSDFs.push(glyphInfo);\n }\n\n // Calculate bounds for renderable quads\n // TODO can we get this back off the main thread?\n const {sdfViewBox} = glyphInfo;\n const posX = glyphPositions[positionsIdx++];\n const posY = glyphPositions[positionsIdx++];\n glyphBounds[boundsIdx++] = posX + sdfViewBox[0] * fontSizeMult;\n glyphBounds[boundsIdx++] = posY + sdfViewBox[1] * fontSizeMult;\n glyphBounds[boundsIdx++] = posX + sdfViewBox[2] * fontSizeMult;\n glyphBounds[boundsIdx++] = posY + sdfViewBox[3] * fontSizeMult;\n\n // Convert glyphId to SDF index for the shader\n glyphIds[i] = glyphInfo.atlasIndex;\n });\n timings.quads = (timings.quads || 0) + (now$1() - quadsStart);\n\n const sdfStart = now$1();\n timings.sdf = {};\n\n // Grow the texture height by power of 2 if needed\n const currentHeight = sdfCanvas.height;\n const neededRows = Math.ceil(atlas.glyphCount / glyphsPerRow);\n const neededHeight = Math.pow(2, Math.ceil(Math.log2(neededRows * sdfGlyphSize)));\n if (neededHeight > currentHeight) {\n // Since resizing the canvas clears its render buffer, it needs special handling to copy the old contents over\n console.info(`Increasing SDF texture size ${currentHeight}->${neededHeight}`);\n resizeWebGLCanvasWithoutClearing(sdfCanvas, textureWidth, neededHeight);\n // As of Three r136 textures cannot be resized once they're allocated on the GPU, we must dispose to reallocate it\n sdfTexture.dispose();\n }\n\n Promise.all(neededSDFs.map(glyphInfo =>\n generateGlyphSDF(glyphInfo, atlas, args.gpuAccelerateSDF).then(({timing}) => {\n timings.sdf[glyphInfo.atlasIndex] = timing;\n })\n )).then(() => {\n if (neededSDFs.length && !atlas.contextLost) {\n safariPre15Workaround(atlas);\n sdfTexture.needsUpdate = true;\n }\n timings.sdfTotal = now$1() - sdfStart;\n timings.total = now$1() - totalStart;\n // console.log(`SDF - ${timings.sdfTotal}, Total - ${timings.total - timings.fontLoad}`)\n\n // Invoke callback with the text layout arrays and updated texture\n callback(Object.freeze({\n parameters: args,\n sdfTexture,\n sdfGlyphSize,\n sdfExponent,\n glyphBounds,\n glyphAtlasIndices: glyphIds,\n glyphColors: result.glyphColors,\n caretPositions: result.caretPositions,\n caretHeight: result.caretHeight,\n chunkedBounds: result.chunkedBounds,\n ascender: result.ascender,\n descender: result.descender,\n lineHeight: result.lineHeight,\n capHeight: result.capHeight,\n xHeight: result.xHeight,\n topBaseline: result.topBaseline,\n blockBounds: result.blockBounds,\n visibleBounds: result.visibleBounds,\n timings: result.timings,\n }));\n });\n });\n\n // While the typesetting request is being handled, go ahead and make sure the atlas canvas context is\n // \"warmed up\"; the first request will be the longest due to shader program compilation so this gets\n // a head start on that process before SDFs actually start getting processed.\n Promise.resolve().then(() => {\n if (!atlas.contextLost) {\n warmUpSDFCanvas(sdfCanvas);\n }\n });\n}\n\nfunction generateGlyphSDF({path, atlasIndex, sdfViewBox}, {sdfGlyphSize, sdfCanvas, contextLost}, useGPU) {\n if (contextLost) {\n // If the context is lost there's nothing we can do, just quit silently and let it\n // get regenerated when the context is restored\n return Promise.resolve({timing: -1})\n }\n const {textureWidth, sdfExponent} = CONFIG;\n const maxDist = Math.max(sdfViewBox[2] - sdfViewBox[0], sdfViewBox[3] - sdfViewBox[1]);\n const squareIndex = Math.floor(atlasIndex / 4);\n const x = squareIndex % (textureWidth / sdfGlyphSize) * sdfGlyphSize;\n const y = Math.floor(squareIndex / (textureWidth / sdfGlyphSize)) * sdfGlyphSize;\n const channel = atlasIndex % 4;\n return generateSDF(sdfGlyphSize, sdfGlyphSize, path, sdfViewBox, maxDist, sdfExponent, sdfCanvas, x, y, channel, useGPU)\n}\n\nfunction initContextLossHandling(atlas) {\n const canvas = atlas.sdfCanvas;\n\n /*\n // Begin context loss simulation\n if (!window.WebGLDebugUtils) {\n let script = document.getElementById('WebGLDebugUtilsScript')\n if (!script) {\n script = document.createElement('script')\n script.id = 'WebGLDebugUtils'\n document.head.appendChild(script)\n script.src = 'https://cdn.jsdelivr.net/gh/KhronosGroup/WebGLDeveloperTools@b42e702/src/debug/webgl-debug.js'\n }\n script.addEventListener('load', () => {\n initContextLossHandling(atlas)\n })\n return\n }\n window.WebGLDebugUtils.makeLostContextSimulatingCanvas(canvas)\n canvas.loseContextInNCalls(500)\n canvas.addEventListener('webglcontextrestored', (event) => {\n canvas.loseContextInNCalls(5000)\n })\n // End context loss simulation\n */\n\n canvas.addEventListener('webglcontextlost', (event) => {\n console.log('Context Lost', event);\n event.preventDefault();\n atlas.contextLost = true;\n });\n canvas.addEventListener('webglcontextrestored', (event) => {\n console.log('Context Restored', event);\n atlas.contextLost = false;\n // Regenerate all glyphs into the restored canvas:\n const promises = [];\n atlas.glyphsByFont.forEach(glyphMap => {\n glyphMap.forEach(glyph => {\n promises.push(generateGlyphSDF(glyph, atlas, true));\n });\n });\n Promise.all(promises).then(() => {\n safariPre15Workaround(atlas);\n atlas.sdfTexture.needsUpdate = true;\n });\n });\n}\n\n/**\n * Preload a given font and optionally pre-generate glyph SDFs for one or more character sequences.\n * This can be useful to avoid long pauses when first showing text in a scene, by preloading the\n * needed fonts and glyphs up front along with other assets.\n *\n * @param {object} options\n * @param {string} options.font - URL of the font file to preload. If not given, the default font will\n * be loaded.\n * @param {string|string[]} options.characters - One or more character sequences for which to pre-\n * generate glyph SDFs. Note that this will honor ligature substitution, so you may need\n * to specify ligature sequences in addition to their individual characters to get all\n * possible glyphs, e.g. `[\"t\", \"h\", \"th\"]` to get the \"t\" and \"h\" glyphs plus the \"th\" ligature.\n * @param {number} options.sdfGlyphSize - The size at which to prerender the SDF textures for the\n * specified `characters`.\n * @param {function} callback - A function that will be called when the preloading is complete.\n */\nfunction preloadFont({font, characters, sdfGlyphSize}, callback) {\n let text = Array.isArray(characters) ? characters.join('\\n') : '' + characters;\n getTextRenderInfo({ font, sdfGlyphSize, text }, callback);\n}\n\n\n// Local assign impl so we don't have to import troika-core\nfunction assign(toObj, fromObj) {\n for (let key in fromObj) {\n if (fromObj.hasOwnProperty(key)) {\n toObj[key] = fromObj[key];\n }\n }\n return toObj\n}\n\n// Utility for making URLs absolute\nlet linkEl;\nfunction toAbsoluteURL(path) {\n if (!linkEl) {\n linkEl = typeof document === 'undefined' ? {} : document.createElement('a');\n }\n linkEl.href = path;\n return linkEl.href\n}\n\n/**\n * Safari < v15 seems unable to use the SDF webgl canvas as a texture. This applies a workaround\n * where it reads the pixels out of that canvas and uploads them as a data texture instead, at\n * a slight performance cost.\n */\nfunction safariPre15Workaround(atlas) {\n // Use createImageBitmap support as a proxy for Safari<15, all other mainstream browsers\n // have supported it for a long while so any false positives should be minimal.\n if (typeof createImageBitmap !== 'function') {\n console.info('Safari<15: applying SDF canvas workaround');\n const {sdfCanvas, sdfTexture} = atlas;\n const {width, height} = sdfCanvas;\n const gl = atlas.sdfCanvas.getContext('webgl');\n let pixels = sdfTexture.image.data;\n if (!pixels || pixels.length !== width * height * 4) {\n pixels = new Uint8Array(width * height * 4);\n sdfTexture.image = {width, height, data: pixels};\n sdfTexture.flipY = false;\n sdfTexture.isDataTexture = true;\n }\n gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixels);\n }\n}\n\n\nconst typesetterWorkerModule = /*#__PURE__*/defineWorkerModule({\n name: 'Typesetter',\n dependencies: [\n CONFIG,\n workerModule,\n createTypesetter,\n bidiFactory\n ],\n init(config, fontParser, createTypesetter, bidiFactory) {\n const {defaultFontURL} = config;\n return createTypesetter(fontParser, bidiFactory(), { defaultFontURL })\n }\n});\n\nconst typesetInWorker = /*#__PURE__*/defineWorkerModule({\n name: 'Typesetter',\n dependencies: [\n typesetterWorkerModule,\n ],\n init(typesetter) {\n return function(args) {\n return new Promise(resolve => {\n typesetter.typeset(args, resolve);\n })\n }\n },\n getTransferables(result) {\n // Mark array buffers as transferable to avoid cloning during postMessage\n const transferables = [\n result.glyphPositions.buffer,\n result.glyphIds.buffer\n ];\n if (result.caretPositions) {\n transferables.push(result.caretPositions.buffer);\n }\n if (result.glyphColors) {\n transferables.push(result.glyphColors.buffer);\n }\n return transferables\n }\n});\n\nfunction dumpSDFTextures() {\n Object.keys(atlases).forEach(size => {\n const canvas = atlases[size].sdfCanvas;\n const {width, height} = canvas;\n console.log(\"%c.\", `\n background: url(${canvas.toDataURL()});\n background-size: ${width}px ${height}px;\n color: transparent;\n font-size: 0;\n line-height: ${height}px;\n padding-left: ${width}px;\n `);\n });\n}\n\nconst templateGeometries = {};\n\nfunction getTemplateGeometry(detail) {\n let geom = templateGeometries[detail];\n if (!geom) {\n // Geometry is two planes back-to-back, which will always be rendered FrontSide only but\n // appear as DoubleSide by default. FrontSide/BackSide are emulated using drawRange.\n // We do it this way to avoid the performance hit of two draw calls for DoubleSide materials\n // introduced by Three.js in r130 - see https://github.com/mrdoob/three.js/pull/21967\n const front = new PlaneGeometry(1, 1, detail, detail);\n const back = front.clone();\n const frontAttrs = front.attributes;\n const backAttrs = back.attributes;\n const combined = new BufferGeometry();\n const vertCount = frontAttrs.uv.count;\n for (let i = 0; i < vertCount; i++) {\n backAttrs.position.array[i * 3] *= -1; // flip position x\n backAttrs.normal.array[i * 3 + 2] *= -1; // flip normal z\n }\n ['position', 'normal', 'uv'].forEach(name => {\n combined.setAttribute(name, new Float32BufferAttribute(\n [...frontAttrs[name].array, ...backAttrs[name].array],\n frontAttrs[name].itemSize)\n );\n });\n combined.setIndex([...front.index.array, ...back.index.array.map(n => n + vertCount)]);\n combined.translate(0.5, 0.5, 0);\n geom = templateGeometries[detail] = combined;\n }\n return geom\n}\n\nconst glyphBoundsAttrName = 'aTroikaGlyphBounds';\nconst glyphIndexAttrName = 'aTroikaGlyphIndex';\nconst glyphColorAttrName = 'aTroikaGlyphColor';\n\n/**\n@class GlyphsGeometry\n\nA specialized Geometry for rendering a set of text glyphs. Uses InstancedBufferGeometry to\nrender the glyphs using GPU instancing of a single quad, rather than constructing a whole\ngeometry with vertices, for much smaller attribute arraybuffers according to this math:\n\n Where N = number of glyphs...\n\n Instanced:\n - position: 4 * 3\n - index: 2 * 3\n - normal: 4 * 3\n - uv: 4 * 2\n - glyph x/y bounds: N * 4\n - glyph indices: N * 1\n = 5N + 38\n\n Non-instanced:\n - position: N * 4 * 3\n - index: N * 2 * 3\n - normal: N * 4 * 3\n - uv: N * 4 * 2\n - glyph indices: N * 1\n = 39N\n\nA downside of this is the rare-but-possible lack of the instanced arrays extension,\nwhich we could potentially work around with a fallback non-instanced implementation.\n\n*/\nclass GlyphsGeometry extends InstancedBufferGeometry {\n constructor() {\n super();\n\n this.detail = 1;\n this.curveRadius = 0;\n\n // Define groups for rendering text outline as a separate pass; these will only\n // be used when the `material` getter returns an array, i.e. outlineWidth > 0.\n this.groups = [\n {start: 0, count: Infinity, materialIndex: 0},\n {start: 0, count: Infinity, materialIndex: 1}\n ];\n\n // Preallocate empty bounding objects\n this.boundingSphere = new Sphere();\n this.boundingBox = new Box3();\n }\n\n computeBoundingSphere () {\n // No-op; we'll sync the boundingSphere proactively when needed.\n }\n\n computeBoundingBox() {\n // No-op; we'll sync the boundingBox proactively when needed.\n }\n\n // Since our base geometry contains triangles for both front and back sides, we can emulate\n // the \"side\" by restricting the draw range.\n setSide(side) {\n const verts = this.getIndex().count;\n this.setDrawRange(side === BackSide ? verts / 2 : 0, side === DoubleSide ? verts : verts / 2);\n }\n\n set detail(detail) {\n if (detail !== this._detail) {\n this._detail = detail;\n if (typeof detail !== 'number' || detail < 1) {\n detail = 1;\n }\n let tpl = getTemplateGeometry(detail)\n ;['position', 'normal', 'uv'].forEach(attr => {\n this.attributes[attr] = tpl.attributes[attr].clone();\n });\n this.setIndex(tpl.getIndex().clone());\n }\n }\n get detail() {\n return this._detail\n }\n\n set curveRadius(r) {\n if (r !== this._curveRadius) {\n this._curveRadius = r;\n this._updateBounds();\n }\n }\n get curveRadius() {\n return this._curveRadius\n }\n\n /**\n * Update the geometry for a new set of glyphs.\n * @param {Float32Array} glyphBounds - An array holding the planar bounds for all glyphs\n * to be rendered, 4 entries for each glyph: x1,x2,y1,y1\n * @param {Float32Array} glyphAtlasIndices - An array holding the index of each glyph within\n * the SDF atlas texture.\n * @param {Array} blockBounds - An array holding the [minX, minY, maxX, maxY] across all glyphs\n * @param {Array} [chunkedBounds] - An array of objects describing bounds for each chunk of N\n * consecutive glyphs: `{start:N, end:N, rect:[minX, minY, maxX, maxY]}`. This can be\n * used with `applyClipRect` to choose an optimized `instanceCount`.\n * @param {Uint8Array} [glyphColors] - An array holding r,g,b values for each glyph.\n */\n updateGlyphs(glyphBounds, glyphAtlasIndices, blockBounds, chunkedBounds, glyphColors) {\n // Update the instance attributes\n updateBufferAttr(this, glyphBoundsAttrName, glyphBounds, 4);\n updateBufferAttr(this, glyphIndexAttrName, glyphAtlasIndices, 1);\n updateBufferAttr(this, glyphColorAttrName, glyphColors, 3);\n this._blockBounds = blockBounds;\n this._chunkedBounds = chunkedBounds;\n this.instanceCount = glyphAtlasIndices.length;\n this._updateBounds();\n }\n\n _updateBounds() {\n const bounds = this._blockBounds;\n if (bounds) {\n const { curveRadius, boundingBox: bbox } = this;\n if (curveRadius) {\n const { PI, floor, min, max, sin, cos } = Math;\n const halfPi = PI / 2;\n const twoPi = PI * 2;\n const absR = Math.abs(curveRadius);\n const leftAngle = bounds[0] / absR;\n const rightAngle = bounds[2] / absR;\n const minX = floor((leftAngle + halfPi) / twoPi) !== floor((rightAngle + halfPi) / twoPi)\n ? -absR : min(sin(leftAngle) * absR, sin(rightAngle) * absR);\n const maxX = floor((leftAngle - halfPi) / twoPi) !== floor((rightAngle - halfPi) / twoPi)\n ? absR : max(sin(leftAngle) * absR, sin(rightAngle) * absR);\n const maxZ = floor((leftAngle + PI) / twoPi) !== floor((rightAngle + PI) / twoPi)\n ? absR * 2 : max(absR - cos(leftAngle) * absR, absR - cos(rightAngle) * absR);\n bbox.min.set(minX, bounds[1], curveRadius < 0 ? -maxZ : 0);\n bbox.max.set(maxX, bounds[3], curveRadius < 0 ? 0 : maxZ);\n } else {\n bbox.min.set(bounds[0], bounds[1], 0);\n bbox.max.set(bounds[2], bounds[3], 0);\n }\n bbox.getBoundingSphere(this.boundingSphere);\n }\n }\n\n /**\n * Given a clipping rect, and the chunkedBounds from the last updateGlyphs call, choose the lowest\n * `instanceCount` that will show all glyphs within the clipped view. This is an optimization\n * for long blocks of text that are clipped, to skip vertex shader evaluation for glyphs that would\n * be clipped anyway.\n *\n * Note that since `drawElementsInstanced[ANGLE]` only accepts an instance count and not a starting\n * offset, this optimization becomes less effective as the clipRect moves closer to the end of the\n * text block. We could fix that by switching from instancing to a full geometry with a drawRange,\n * but at the expense of much larger attribute buffers (see classdoc above.)\n *\n * @param {Vector4} clipRect\n */\n applyClipRect(clipRect) {\n let count = this.getAttribute(glyphIndexAttrName).count;\n let chunks = this._chunkedBounds;\n if (chunks) {\n for (let i = chunks.length; i--;) {\n count = chunks[i].end;\n let rect = chunks[i].rect;\n // note: both rects are l-b-r-t\n if (rect[1] < clipRect.w && rect[3] > clipRect.y && rect[0] < clipRect.z && rect[2] > clipRect.x) {\n break\n }\n }\n }\n this.instanceCount = count;\n }\n}\n\n\nfunction updateBufferAttr(geom, attrName, newArray, itemSize) {\n const attr = geom.getAttribute(attrName);\n if (newArray) {\n // If length isn't changing, just update the attribute's array data\n if (attr && attr.array.length === newArray.length) {\n attr.array.set(newArray);\n attr.needsUpdate = true;\n } else {\n geom.setAttribute(attrName, new InstancedBufferAttribute(newArray, itemSize));\n // If the new attribute has a different size, we also have to (as of r117) manually clear the\n // internal cached max instance count. See https://github.com/mrdoob/three.js/issues/19706\n // It's unclear if this is a threejs bug or a truly unsupported scenario; discussion in\n // that ticket is ambiguous as to whether replacing a BufferAttribute with one of a\n // different size is supported, but https://github.com/mrdoob/three.js/pull/17418 strongly\n // implies it should be supported. It's possible we need to\n delete geom._maxInstanceCount; //for r117+, could be fragile\n geom.dispose(); //for r118+, more robust feeling, but more heavy-handed than I'd like\n }\n } else if (attr) {\n geom.deleteAttribute(attrName);\n }\n}\n\n// language=GLSL\nconst VERTEX_DEFS = `\nuniform vec2 uTroikaSDFTextureSize;\nuniform float uTroikaSDFGlyphSize;\nuniform vec4 uTroikaTotalBounds;\nuniform vec4 uTroikaClipRect;\nuniform mat3 uTroikaOrient;\nuniform bool uTroikaUseGlyphColors;\nuniform float uTroikaDistanceOffset;\nuniform float uTroikaBlurRadius;\nuniform vec2 uTroikaPositionOffset;\nuniform float uTroikaCurveRadius;\nattribute vec4 aTroikaGlyphBounds;\nattribute float aTroikaGlyphIndex;\nattribute vec3 aTroikaGlyphColor;\nvarying vec2 vTroikaGlyphUV;\nvarying vec4 vTroikaTextureUVBounds;\nvarying float vTroikaTextureChannel;\nvarying vec3 vTroikaGlyphColor;\nvarying vec2 vTroikaGlyphDimensions;\n`;\n\n// language=GLSL prefix=\"void main() {\" suffix=\"}\"\nconst VERTEX_TRANSFORM = `\nvec4 bounds = aTroikaGlyphBounds;\nbounds.xz += uTroikaPositionOffset.x;\nbounds.yw -= uTroikaPositionOffset.y;\n\nvec4 outlineBounds = vec4(\n bounds.xy - uTroikaDistanceOffset - uTroikaBlurRadius,\n bounds.zw + uTroikaDistanceOffset + uTroikaBlurRadius\n);\nvec4 clippedBounds = vec4(\n clamp(outlineBounds.xy, uTroikaClipRect.xy, uTroikaClipRect.zw),\n clamp(outlineBounds.zw, uTroikaClipRect.xy, uTroikaClipRect.zw)\n);\n\nvec2 clippedXY = (mix(clippedBounds.xy, clippedBounds.zw, position.xy) - bounds.xy) / (bounds.zw - bounds.xy);\n\nposition.xy = mix(bounds.xy, bounds.zw, clippedXY);\n\nuv = (position.xy - uTroikaTotalBounds.xy) / (uTroikaTotalBounds.zw - uTroikaTotalBounds.xy);\n\nfloat rad = uTroikaCurveRadius;\nif (rad != 0.0) {\n float angle = position.x / rad;\n position.xz = vec2(sin(angle) * rad, rad - cos(angle) * rad);\n normal.xz = vec2(sin(angle), cos(angle));\n}\n \nposition = uTroikaOrient * position;\nnormal = uTroikaOrient * normal;\n\nvTroikaGlyphUV = clippedXY.xy;\nvTroikaGlyphDimensions = vec2(bounds[2] - bounds[0], bounds[3] - bounds[1]);\n\n${''/* NOTE: it seems important to calculate the glyph's bounding texture UVs here in the\n vertex shader, rather than in the fragment shader, as the latter gives strange artifacts\n on some glyphs (those in the leftmost texture column) on some systems. The exact reason\n isn't understood but doing this here, then mix()-ing in the fragment shader, seems to work. */}\nfloat txCols = uTroikaSDFTextureSize.x / uTroikaSDFGlyphSize;\nvec2 txUvPerSquare = uTroikaSDFGlyphSize / uTroikaSDFTextureSize;\nvec2 txStartUV = txUvPerSquare * vec2(\n mod(floor(aTroikaGlyphIndex / 4.0), txCols),\n floor(floor(aTroikaGlyphIndex / 4.0) / txCols)\n);\nvTroikaTextureUVBounds = vec4(txStartUV, vec2(txStartUV) + txUvPerSquare);\nvTroikaTextureChannel = mod(aTroikaGlyphIndex, 4.0);\n`;\n\n// language=GLSL\nconst FRAGMENT_DEFS = `\nuniform sampler2D uTroikaSDFTexture;\nuniform vec2 uTroikaSDFTextureSize;\nuniform float uTroikaSDFGlyphSize;\nuniform float uTroikaSDFExponent;\nuniform float uTroikaDistanceOffset;\nuniform float uTroikaFillOpacity;\nuniform float uTroikaOutlineOpacity;\nuniform float uTroikaBlurRadius;\nuniform vec3 uTroikaStrokeColor;\nuniform float uTroikaStrokeWidth;\nuniform float uTroikaStrokeOpacity;\nuniform bool uTroikaSDFDebug;\nvarying vec2 vTroikaGlyphUV;\nvarying vec4 vTroikaTextureUVBounds;\nvarying float vTroikaTextureChannel;\nvarying vec2 vTroikaGlyphDimensions;\n\nfloat troikaSdfValueToSignedDistance(float alpha) {\n // Inverse of exponential encoding in webgl-sdf-generator\n ${''/* TODO - there's some slight inaccuracy here when dealing with interpolated alpha values; those\n are linearly interpolated where the encoding is exponential. Look into improving this by rounding\n to nearest 2 whole texels, decoding those exponential values, and linearly interpolating the result.\n */}\n float maxDimension = max(vTroikaGlyphDimensions.x, vTroikaGlyphDimensions.y);\n float absDist = (1.0 - pow(2.0 * (alpha > 0.5 ? 1.0 - alpha : alpha), 1.0 / uTroikaSDFExponent)) * maxDimension;\n float signedDist = absDist * (alpha > 0.5 ? -1.0 : 1.0);\n return signedDist;\n}\n\nfloat troikaGlyphUvToSdfValue(vec2 glyphUV) {\n vec2 textureUV = mix(vTroikaTextureUVBounds.xy, vTroikaTextureUVBounds.zw, glyphUV);\n vec4 rgba = texture2D(uTroikaSDFTexture, textureUV);\n float ch = floor(vTroikaTextureChannel + 0.5); //NOTE: can't use round() in WebGL1\n return ch == 0.0 ? rgba.r : ch == 1.0 ? rgba.g : ch == 2.0 ? rgba.b : rgba.a;\n}\n\nfloat troikaGlyphUvToDistance(vec2 uv) {\n return troikaSdfValueToSignedDistance(troikaGlyphUvToSdfValue(uv));\n}\n\nfloat troikaGetAADist() {\n ${''/*\n When the standard derivatives extension is available, we choose an antialiasing alpha threshold based\n on the potential change in the SDF's alpha from this fragment to its neighbor. This strategy maximizes \n readability and edge crispness at all sizes and screen resolutions.\n */}\n #if defined(GL_OES_standard_derivatives) || __VERSION__ >= 300\n return length(fwidth(vTroikaGlyphUV * vTroikaGlyphDimensions)) * 0.5;\n #else\n return vTroikaGlyphDimensions.x / 64.0;\n #endif\n}\n\nfloat troikaGetFragDistValue() {\n vec2 clampedGlyphUV = clamp(vTroikaGlyphUV, 0.5 / uTroikaSDFGlyphSize, 1.0 - 0.5 / uTroikaSDFGlyphSize);\n float distance = troikaGlyphUvToDistance(clampedGlyphUV);\n \n // Extrapolate distance when outside bounds:\n distance += clampedGlyphUV == vTroikaGlyphUV ? 0.0 : \n length((vTroikaGlyphUV - clampedGlyphUV) * vTroikaGlyphDimensions);\n\n ${''/* \n // TODO more refined extrapolated distance by adjusting for angle of gradient at edge...\n // This has potential but currently gives very jagged extensions, maybe due to precision issues?\n float uvStep = 1.0 / uTroikaSDFGlyphSize;\n vec2 neighbor1UV = clampedGlyphUV + (\n vTroikaGlyphUV.x != clampedGlyphUV.x ? vec2(0.0, uvStep * sign(0.5 - vTroikaGlyphUV.y)) :\n vTroikaGlyphUV.y != clampedGlyphUV.y ? vec2(uvStep * sign(0.5 - vTroikaGlyphUV.x), 0.0) :\n vec2(0.0)\n );\n vec2 neighbor2UV = clampedGlyphUV + (\n vTroikaGlyphUV.x != clampedGlyphUV.x ? vec2(0.0, uvStep * -sign(0.5 - vTroikaGlyphUV.y)) :\n vTroikaGlyphUV.y != clampedGlyphUV.y ? vec2(uvStep * -sign(0.5 - vTroikaGlyphUV.x), 0.0) :\n vec2(0.0)\n );\n float neighbor1Distance = troikaGlyphUvToDistance(neighbor1UV);\n float neighbor2Distance = troikaGlyphUvToDistance(neighbor2UV);\n float distToUnclamped = length((vTroikaGlyphUV - clampedGlyphUV) * vTroikaGlyphDimensions);\n float distToNeighbor = length((clampedGlyphUV - neighbor1UV) * vTroikaGlyphDimensions);\n float gradientAngle1 = min(asin(abs(neighbor1Distance - distance) / distToNeighbor), PI / 2.0);\n float gradientAngle2 = min(asin(abs(neighbor2Distance - distance) / distToNeighbor), PI / 2.0);\n distance += (cos(gradientAngle1) + cos(gradientAngle2)) / 2.0 * distToUnclamped;\n */}\n\n return distance;\n}\n\nfloat troikaGetEdgeAlpha(float distance, float distanceOffset, float aaDist) {\n #if defined(IS_DEPTH_MATERIAL) || defined(IS_DISTANCE_MATERIAL)\n float alpha = step(-distanceOffset, -distance);\n #else\n\n float alpha = smoothstep(\n distanceOffset + aaDist,\n distanceOffset - aaDist,\n distance\n );\n #endif\n\n return alpha;\n}\n`;\n\n// language=GLSL prefix=\"void main() {\" suffix=\"}\"\nconst FRAGMENT_TRANSFORM = `\nfloat aaDist = troikaGetAADist();\nfloat fragDistance = troikaGetFragDistValue();\nfloat edgeAlpha = uTroikaSDFDebug ?\n troikaGlyphUvToSdfValue(vTroikaGlyphUV) :\n troikaGetEdgeAlpha(fragDistance, uTroikaDistanceOffset, max(aaDist, uTroikaBlurRadius));\n\n#if !defined(IS_DEPTH_MATERIAL) && !defined(IS_DISTANCE_MATERIAL)\nvec4 fillRGBA = gl_FragColor;\nfillRGBA.a *= uTroikaFillOpacity;\nvec4 strokeRGBA = uTroikaStrokeWidth == 0.0 ? fillRGBA : vec4(uTroikaStrokeColor, uTroikaStrokeOpacity);\nif (fillRGBA.a == 0.0) fillRGBA.rgb = strokeRGBA.rgb;\ngl_FragColor = mix(fillRGBA, strokeRGBA, smoothstep(\n -uTroikaStrokeWidth - aaDist,\n -uTroikaStrokeWidth + aaDist,\n fragDistance\n));\ngl_FragColor.a *= edgeAlpha;\n#endif\n\nif (edgeAlpha == 0.0) {\n discard;\n}\n`;\n\n\n/**\n * Create a material for rendering text, derived from a baseMaterial\n */\nfunction createTextDerivedMaterial(baseMaterial) {\n const textMaterial = createDerivedMaterial(baseMaterial, {\n chained: true,\n extensions: {\n derivatives: true\n },\n uniforms: {\n uTroikaSDFTexture: {value: null},\n uTroikaSDFTextureSize: {value: new Vector2()},\n uTroikaSDFGlyphSize: {value: 0},\n uTroikaSDFExponent: {value: 0},\n uTroikaTotalBounds: {value: new Vector4(0,0,0,0)},\n uTroikaClipRect: {value: new Vector4(0,0,0,0)},\n uTroikaDistanceOffset: {value: 0},\n uTroikaOutlineOpacity: {value: 0},\n uTroikaFillOpacity: {value: 1},\n uTroikaPositionOffset: {value: new Vector2()},\n uTroikaCurveRadius: {value: 0},\n uTroikaBlurRadius: {value: 0},\n uTroikaStrokeWidth: {value: 0},\n uTroikaStrokeColor: {value: new Color()},\n uTroikaStrokeOpacity: {value: 1},\n uTroikaOrient: {value: new Matrix3()},\n uTroikaUseGlyphColors: {value: true},\n uTroikaSDFDebug: {value: false}\n },\n vertexDefs: VERTEX_DEFS,\n vertexTransform: VERTEX_TRANSFORM,\n fragmentDefs: FRAGMENT_DEFS,\n fragmentColorTransform: FRAGMENT_TRANSFORM,\n customRewriter({vertexShader, fragmentShader}) {\n let uDiffuseRE = /\\buniform\\s+vec3\\s+diffuse\\b/;\n if (uDiffuseRE.test(fragmentShader)) {\n // Replace all instances of `diffuse` with our varying\n fragmentShader = fragmentShader\n .replace(uDiffuseRE, 'varying vec3 vTroikaGlyphColor')\n .replace(/\\bdiffuse\\b/g, 'vTroikaGlyphColor');\n // Make sure the vertex shader declares the uniform so we can grab it as a fallback\n if (!uDiffuseRE.test(vertexShader)) {\n vertexShader = vertexShader.replace(\n voidMainRegExp,\n 'uniform vec3 diffuse;\\n$&\\nvTroikaGlyphColor = uTroikaUseGlyphColors ? aTroikaGlyphColor / 255.0 : diffuse;\\n'\n );\n }\n }\n return { vertexShader, fragmentShader }\n }\n });\n\n // Force transparency - TODO is this reasonable?\n textMaterial.transparent = true;\n\n Object.defineProperties(textMaterial, {\n isTroikaTextMaterial: {value: true},\n\n // WebGLShadowMap reverses the side of the shadow material by default, which fails\n // for planes, so here we force the `shadowSide` to always match the main side.\n shadowSide: {\n get() {\n return this.side\n },\n set() {\n //no-op\n }\n }\n });\n\n return textMaterial\n}\n\nconst defaultMaterial = /*#__PURE__*/ new MeshBasicMaterial({\n color: 0xffffff,\n side: DoubleSide,\n transparent: true\n});\nconst defaultStrokeColor = 0x808080;\n\nconst tempMat4 = /*#__PURE__*/ new Matrix4();\nconst tempVec3a = /*#__PURE__*/ new Vector3();\nconst tempVec3b = /*#__PURE__*/ new Vector3();\nconst tempArray = [];\nconst origin = /*#__PURE__*/ new Vector3();\nconst defaultOrient = '+x+y';\n\nfunction first(o) {\n return Array.isArray(o) ? o[0] : o\n}\n\nlet getFlatRaycastMesh = () => {\n const mesh = new Mesh(\n new PlaneGeometry(1, 1),\n defaultMaterial\n );\n getFlatRaycastMesh = () => mesh;\n return mesh\n};\nlet getCurvedRaycastMesh = () => {\n const mesh = new Mesh(\n new PlaneGeometry(1, 1, 32, 1),\n defaultMaterial\n );\n getCurvedRaycastMesh = () => mesh;\n return mesh\n};\n\nconst syncStartEvent = { type: 'syncstart' };\nconst syncCompleteEvent = { type: 'synccomplete' };\n\nconst SYNCABLE_PROPS = [\n 'font',\n 'fontSize',\n 'letterSpacing',\n 'lineHeight',\n 'maxWidth',\n 'overflowWrap',\n 'text',\n 'direction',\n 'textAlign',\n 'textIndent',\n 'whiteSpace',\n 'anchorX',\n 'anchorY',\n 'colorRanges',\n 'sdfGlyphSize'\n];\n\nconst COPYABLE_PROPS = SYNCABLE_PROPS.concat(\n 'material',\n 'color',\n 'depthOffset',\n 'clipRect',\n 'curveRadius',\n 'orientation',\n 'glyphGeometryDetail'\n);\n\n/**\n * @class Text\n *\n * A ThreeJS Mesh that renders a string of text on a plane in 3D space using signed distance\n * fields (SDF).\n */\nclass Text extends Mesh {\n constructor() {\n const geometry = new GlyphsGeometry();\n super(geometry, null);\n\n // === Text layout properties: === //\n\n /**\n * @member {string} text\n * The string of text to be rendered.\n */\n this.text = '';\n\n /**\n * @member {number|string} anchorX\n * Defines the horizontal position in the text block that should line up with the local origin.\n * Can be specified as a numeric x position in local units, a string percentage of the total\n * text block width e.g. `'25%'`, or one of the following keyword strings: 'left', 'center',\n * or 'right'.\n */\n this.anchorX = 0;\n\n /**\n * @member {number|string} anchorX\n * Defines the vertical position in the text block that should line up with the local origin.\n * Can be specified as a numeric y position in local units (note: down is negative y), a string\n * percentage of the total text block height e.g. `'25%'`, or one of the following keyword strings:\n * 'top', 'top-baseline', 'top-cap', 'top-ex', 'middle', 'bottom-baseline', or 'bottom'.\n */\n this.anchorY = 0;\n\n /**\n * @member {number} curveRadius\n * Defines a cylindrical radius along which the text's plane will be curved. Positive numbers put\n * the cylinder's centerline (oriented vertically) that distance in front of the text, for a concave\n * curvature, while negative numbers put it behind the text for a convex curvature. The centerline\n * will be aligned with the text's local origin; you can use `anchorX` to offset it.\n *\n * Since each glyph is by default rendered with a simple quad, each glyph remains a flat plane\n * internally. You can use `glyphGeometryDetail` to add more vertices for curvature inside glyphs.\n */\n this.curveRadius = 0;\n\n /**\n * @member {string} direction\n * Sets the base direction for the text. The default value of \"auto\" will choose a direction based\n * on the text's content according to the bidi spec. A value of \"ltr\" or \"rtl\" will force the direction.\n */\n this.direction = 'auto';\n\n /**\n * @member {string} font\n * URL of a custom font to be used. Font files can be in .ttf, .otf, or .woff (not .woff2) formats.\n * Defaults to the Roboto font loaded from Google Fonts.\n */\n this.font = null; //will use default from TextBuilder\n\n /**\n * @member {number} fontSize\n * The size at which to render the font in local units; corresponds to the em-box height\n * of the chosen `font`.\n */\n this.fontSize = 0.1;\n\n /**\n * @member {number} letterSpacing\n * Sets a uniform adjustment to spacing between letters after kerning is applied. Positive\n * numbers increase spacing and negative numbers decrease it.\n */\n this.letterSpacing = 0;\n\n /**\n * @member {number|string} lineHeight\n * Sets the height of each line of text, as a multiple of the `fontSize`. Defaults to 'normal'\n * which chooses a reasonable height based on the chosen font's ascender/descender metrics.\n */\n this.lineHeight = 'normal';\n\n /**\n * @member {number} maxWidth\n * The maximum width of the text block, above which text may start wrapping according to the\n * `whiteSpace` and `overflowWrap` properties.\n */\n this.maxWidth = Infinity;\n\n /**\n * @member {string} overflowWrap\n * Defines how text wraps if the `whiteSpace` property is `normal`. Can be either `'normal'`\n * to break at whitespace characters, or `'break-word'` to allow breaking within words.\n * Defaults to `'normal'`.\n */\n this.overflowWrap = 'normal';\n\n /**\n * @member {string} textAlign\n * The horizontal alignment of each line of text within the overall text bounding box.\n */\n this.textAlign = 'left';\n\n /**\n * @member {number} textIndent\n * Indentation for the first character of a line; see CSS `text-indent`.\n */\n this.textIndent = 0;\n\n /**\n * @member {string} whiteSpace\n * Defines whether text should wrap when a line reaches the `maxWidth`. Can\n * be either `'normal'` (the default), to allow wrapping according to the `overflowWrap` property,\n * or `'nowrap'` to prevent wrapping. Note that `'normal'` here honors newline characters to\n * manually break lines, making it behave more like `'pre-wrap'` does in CSS.\n */\n this.whiteSpace = 'normal';\n\n\n // === Presentation properties: === //\n\n /**\n * @member {THREE.Material} material\n * Defines a _base_ material to be used when rendering the text. This material will be\n * automatically replaced with a material derived from it, that adds shader code to\n * decrease the alpha for each fragment (pixel) outside the text glyphs, with antialiasing.\n * By default it will derive from a simple white MeshBasicMaterial, but you can use any\n * of the other mesh materials to gain other features like lighting, texture maps, etc.\n *\n * Also see the `color` shortcut property.\n */\n this.material = null;\n\n /**\n * @member {string|number|THREE.Color} color\n * This is a shortcut for setting the `color` of the text's material. You can use this\n * if you don't want to specify a whole custom `material`. Also, if you do use a custom\n * `material`, this color will only be used for this particuar Text instance, even if\n * that same material instance is shared across multiple Text objects.\n */\n this.color = null;\n\n /**\n * @member {object|null} colorRanges\n * WARNING: This API is experimental and may change.\n * This allows more fine-grained control of colors for individual or ranges of characters,\n * taking precedence over the material's `color`. Its format is an Object whose keys each\n * define a starting character index for a range, and whose values are the color for each\n * range. The color value can be a numeric hex color value, a `THREE.Color` object, or\n * any of the strings accepted by `THREE.Color`.\n */\n this.colorRanges = null;\n\n /**\n * @member {number|string} outlineWidth\n * WARNING: This API is experimental and may change.\n * The width of an outline/halo to be drawn around each text glyph using the `outlineColor` and `outlineOpacity`.\n * Can be specified as either an absolute number in local units, or as a percentage string e.g.\n * `\"12%\"` which is treated as a percentage of the `fontSize`. Defaults to `0`, which means\n * no outline will be drawn unless an `outlineOffsetX/Y` or `outlineBlur` is set.\n */\n this.outlineWidth = 0;\n\n /**\n * @member {string|number|THREE.Color} outlineColor\n * WARNING: This API is experimental and may change.\n * The color of the text outline, if `outlineWidth`/`outlineBlur`/`outlineOffsetX/Y` are set.\n * Defaults to black.\n */\n this.outlineColor = 0x000000;\n\n /**\n * @member {number} outlineOpacity\n * WARNING: This API is experimental and may change.\n * The opacity of the outline, if `outlineWidth`/`outlineBlur`/`outlineOffsetX/Y` are set.\n * Defaults to `1`.\n */\n this.outlineOpacity = 1;\n\n /**\n * @member {number|string} outlineBlur\n * WARNING: This API is experimental and may change.\n * A blur radius applied to the outer edge of the text's outline. If the `outlineWidth` is\n * zero, the blur will be applied at the glyph edge, like CSS's `text-shadow` blur radius.\n * Can be specified as either an absolute number in local units, or as a percentage string e.g.\n * `\"12%\"` which is treated as a percentage of the `fontSize`. Defaults to `0`.\n */\n this.outlineBlur = 0;\n\n /**\n * @member {number|string} outlineOffsetX\n * WARNING: This API is experimental and may change.\n * A horizontal offset for the text outline.\n * Can be specified as either an absolute number in local units, or as a percentage string e.g. `\"12%\"`\n * which is treated as a percentage of the `fontSize`. Defaults to `0`.\n */\n this.outlineOffsetX = 0;\n\n /**\n * @member {number|string} outlineOffsetY\n * WARNING: This API is experimental and may change.\n * A vertical offset for the text outline.\n * Can be specified as either an absolute number in local units, or as a percentage string e.g. `\"12%\"`\n * which is treated as a percentage of the `fontSize`. Defaults to `0`.\n */\n this.outlineOffsetY = 0;\n\n /**\n * @member {number|string} strokeWidth\n * WARNING: This API is experimental and may change.\n * The width of an inner stroke drawn inside each text glyph using the `strokeColor` and `strokeOpacity`.\n * Can be specified as either an absolute number in local units, or as a percentage string e.g. `\"12%\"`\n * which is treated as a percentage of the `fontSize`. Defaults to `0`.\n */\n this.strokeWidth = 0;\n\n /**\n * @member {string|number|THREE.Color} strokeColor\n * WARNING: This API is experimental and may change.\n * The color of the text stroke, if `strokeWidth` is greater than zero. Defaults to gray.\n */\n this.strokeColor = defaultStrokeColor;\n\n /**\n * @member {number} strokeOpacity\n * WARNING: This API is experimental and may change.\n * The opacity of the stroke, if `strokeWidth` is greater than zero. Defaults to `1`.\n */\n this.strokeOpacity = 1;\n\n /**\n * @member {number} fillOpacity\n * WARNING: This API is experimental and may change.\n * The opacity of the glyph's fill from 0 to 1. This behaves like the material's `opacity` but allows\n * giving the fill a different opacity than the `strokeOpacity`. A fillOpacity of `0` makes the\n * interior of the glyph invisible, leaving just the `strokeWidth`. Defaults to `1`.\n */\n this.fillOpacity = 1;\n\n /**\n * @member {number} depthOffset\n * This is a shortcut for setting the material's `polygonOffset` and related properties,\n * which can be useful in preventing z-fighting when this text is laid on top of another\n * plane in the scene. Positive numbers are further from the camera, negatives closer.\n */\n this.depthOffset = 0;\n\n /**\n * @member {Array} clipRect\n * If specified, defines a `[minX, minY, maxX, maxY]` of a rectangle outside of which all\n * pixels will be discarded. This can be used for example to clip overflowing text when\n * `whiteSpace='nowrap'`.\n */\n this.clipRect = null;\n\n /**\n * @member {string} orientation\n * Defines the axis plane on which the text should be laid out when the mesh has no extra\n * rotation transform. It is specified as a string with two axes: the horizontal axis with\n * positive pointing right, and the vertical axis with positive pointing up. By default this\n * is '+x+y', meaning the text sits on the xy plane with the text's top toward positive y\n * and facing positive z. A value of '+x-z' would place it on the xz plane with the text's\n * top toward negative z and facing positive y.\n */\n this.orientation = defaultOrient;\n\n /**\n * @member {number} glyphGeometryDetail\n * Controls number of vertical/horizontal segments that make up each glyph's rectangular\n * plane. Defaults to 1. This can be increased to provide more geometrical detail for custom\n * vertex shader effects, for example.\n */\n this.glyphGeometryDetail = 1;\n\n /**\n * @member {number|null} sdfGlyphSize\n * The size of each glyph's SDF (signed distance field) used for rendering. This must be a\n * power-of-two number. Defaults to 64 which is generally a good balance of size and quality\n * for most fonts. Larger sizes can improve the quality of glyph rendering by increasing\n * the sharpness of corners and preventing loss of very thin lines, at the expense of\n * increased memory footprint and longer SDF generation time.\n */\n this.sdfGlyphSize = null;\n\n /**\n * @member {boolean} gpuAccelerateSDF\n * When `true`, the SDF generation process will be GPU-accelerated with WebGL when possible,\n * making it much faster especially for complex glyphs, and falling back to a JavaScript version\n * executed in web workers when support isn't available. It should automatically detect support,\n * but it's still somewhat experimental, so you can set it to `false` to force it to use the JS\n * version if you encounter issues with it.\n */\n this.gpuAccelerateSDF = true;\n\n this.debugSDF = false;\n }\n\n /**\n * Updates the text rendering according to the current text-related configuration properties.\n * This is an async process, so you can pass in a callback function to be executed when it\n * finishes.\n * @param {function} [callback]\n */\n sync(callback) {\n if (this._needsSync) {\n this._needsSync = false;\n\n // If there's another sync still in progress, queue\n if (this._isSyncing) {\n (this._queuedSyncs || (this._queuedSyncs = [])).push(callback);\n } else {\n this._isSyncing = true;\n this.dispatchEvent(syncStartEvent);\n\n getTextRenderInfo({\n text: this.text,\n font: this.font,\n fontSize: this.fontSize || 0.1,\n letterSpacing: this.letterSpacing || 0,\n lineHeight: this.lineHeight || 'normal',\n maxWidth: this.maxWidth,\n direction: this.direction || 'auto',\n textAlign: this.textAlign,\n textIndent: this.textIndent,\n whiteSpace: this.whiteSpace,\n overflowWrap: this.overflowWrap,\n anchorX: this.anchorX,\n anchorY: this.anchorY,\n colorRanges: this.colorRanges,\n includeCaretPositions: true, //TODO parameterize\n sdfGlyphSize: this.sdfGlyphSize,\n gpuAccelerateSDF: this.gpuAccelerateSDF,\n }, textRenderInfo => {\n this._isSyncing = false;\n\n // Save result for later use in onBeforeRender\n this._textRenderInfo = textRenderInfo;\n\n // Update the geometry attributes\n this.geometry.updateGlyphs(\n textRenderInfo.glyphBounds,\n textRenderInfo.glyphAtlasIndices,\n textRenderInfo.blockBounds,\n textRenderInfo.chunkedBounds,\n textRenderInfo.glyphColors\n );\n\n // If we had extra sync requests queued up, kick it off\n const queued = this._queuedSyncs;\n if (queued) {\n this._queuedSyncs = null;\n this._needsSync = true;\n this.sync(() => {\n queued.forEach(fn => fn && fn());\n });\n }\n\n this.dispatchEvent(syncCompleteEvent);\n if (callback) {\n callback();\n }\n });\n }\n }\n }\n\n /**\n * Initiate a sync if needed - note it won't complete until next frame at the\n * earliest so if possible it's a good idea to call sync() manually as soon as\n * all the properties have been set.\n * @override\n */\n onBeforeRender(renderer, scene, camera, geometry, material, group) {\n this.sync();\n\n // This may not always be a text material, e.g. if there's a scene.overrideMaterial present\n if (material.isTroikaTextMaterial) {\n this._prepareForRender(material);\n }\n\n // We need to force the material to FrontSide to avoid the double-draw-call performance hit\n // introduced in Three.js r130: https://github.com/mrdoob/three.js/pull/21967 - The sidedness\n // is instead applied via drawRange in the GlyphsGeometry.\n material._hadOwnSide = material.hasOwnProperty('side');\n this.geometry.setSide(material._actualSide = material.side);\n material.side = FrontSide;\n }\n\n onAfterRender(renderer, scene, camera, geometry, material, group) {\n // Restore original material side\n if (material._hadOwnSide) {\n material.side = material._actualSide;\n } else {\n delete material.side; // back to inheriting from base material\n }\n }\n\n /**\n * Shortcut to dispose the geometry specific to this instance.\n * Note: we don't also dispose the derived material here because if anything else is\n * sharing the same base material it will result in a pause next frame as the program\n * is recompiled. Instead users can dispose the base material manually, like normal,\n * and we'll also dispose the derived material at that time.\n */\n dispose() {\n this.geometry.dispose();\n }\n\n /**\n * @property {TroikaTextRenderInfo|null} textRenderInfo\n * @readonly\n * The current processed rendering data for this TextMesh, returned by the TextBuilder after\n * a `sync()` call. This will be `null` initially, and may be stale for a short period until\n * the asynchrous `sync()` process completes.\n */\n get textRenderInfo() {\n return this._textRenderInfo || null\n }\n\n // Handler for automatically wrapping the base material with our upgrades. We do the wrapping\n // lazily on _read_ rather than write to avoid unnecessary wrapping on transient values.\n get material() {\n let derivedMaterial = this._derivedMaterial;\n const baseMaterial = this._baseMaterial || this._defaultMaterial || (this._defaultMaterial = defaultMaterial.clone());\n if (!derivedMaterial || derivedMaterial.baseMaterial !== baseMaterial) {\n derivedMaterial = this._derivedMaterial = createTextDerivedMaterial(baseMaterial);\n // dispose the derived material when its base material is disposed:\n baseMaterial.addEventListener('dispose', function onDispose() {\n baseMaterial.removeEventListener('dispose', onDispose);\n derivedMaterial.dispose();\n });\n }\n // If text outline is configured, render it as a preliminary draw using Three's multi-material\n // feature (see GlyphsGeometry which sets up `groups` for this purpose) Doing it with multi\n // materials ensures the layers are always rendered consecutively in a consistent order.\n // Each layer will trigger onBeforeRender with the appropriate material.\n if (this.outlineWidth || this.outlineBlur || this.outlineOffsetX || this.outlineOffsetY) {\n let outlineMaterial = derivedMaterial._outlineMtl;\n if (!outlineMaterial) {\n outlineMaterial = derivedMaterial._outlineMtl = Object.create(derivedMaterial, {\n id: {value: derivedMaterial.id + 0.1}\n });\n outlineMaterial.isTextOutlineMaterial = true;\n outlineMaterial.depthWrite = false;\n outlineMaterial.map = null; //???\n derivedMaterial.addEventListener('dispose', function onDispose() {\n derivedMaterial.removeEventListener('dispose', onDispose);\n outlineMaterial.dispose();\n });\n }\n return [\n outlineMaterial,\n derivedMaterial\n ]\n } else {\n return derivedMaterial\n }\n }\n set material(baseMaterial) {\n if (baseMaterial && baseMaterial.isTroikaTextMaterial) { //prevent double-derivation\n this._derivedMaterial = baseMaterial;\n this._baseMaterial = baseMaterial.baseMaterial;\n } else {\n this._baseMaterial = baseMaterial;\n }\n }\n\n get glyphGeometryDetail() {\n return this.geometry.detail\n }\n set glyphGeometryDetail(detail) {\n this.geometry.detail = detail;\n }\n\n get curveRadius() {\n return this.geometry.curveRadius\n }\n set curveRadius(r) {\n this.geometry.curveRadius = r;\n }\n\n // Create and update material for shadows upon request:\n get customDepthMaterial() {\n return first(this.material).getDepthMaterial()\n }\n get customDistanceMaterial() {\n return first(this.material).getDistanceMaterial()\n }\n\n _prepareForRender(material) {\n const isOutline = material.isTextOutlineMaterial;\n const uniforms = material.uniforms;\n const textInfo = this.textRenderInfo;\n if (textInfo) {\n const {sdfTexture, blockBounds} = textInfo;\n uniforms.uTroikaSDFTexture.value = sdfTexture;\n uniforms.uTroikaSDFTextureSize.value.set(sdfTexture.image.width, sdfTexture.image.height);\n uniforms.uTroikaSDFGlyphSize.value = textInfo.sdfGlyphSize;\n uniforms.uTroikaSDFExponent.value = textInfo.sdfExponent;\n uniforms.uTroikaTotalBounds.value.fromArray(blockBounds);\n uniforms.uTroikaUseGlyphColors.value = !isOutline && !!textInfo.glyphColors;\n\n let distanceOffset = 0;\n let blurRadius = 0;\n let strokeWidth = 0;\n let fillOpacity;\n let strokeOpacity;\n let strokeColor;\n let offsetX = 0;\n let offsetY = 0;\n\n if (isOutline) {\n let {outlineWidth, outlineOffsetX, outlineOffsetY, outlineBlur, outlineOpacity} = this;\n distanceOffset = this._parsePercent(outlineWidth) || 0;\n blurRadius = Math.max(0, this._parsePercent(outlineBlur) || 0);\n fillOpacity = outlineOpacity;\n offsetX = this._parsePercent(outlineOffsetX) || 0;\n offsetY = this._parsePercent(outlineOffsetY) || 0;\n } else {\n strokeWidth = Math.max(0, this._parsePercent(this.strokeWidth) || 0);\n if (strokeWidth) {\n strokeColor = this.strokeColor;\n uniforms.uTroikaStrokeColor.value.set(strokeColor == null ? defaultStrokeColor : strokeColor);\n strokeOpacity = this.strokeOpacity;\n if (strokeOpacity == null) strokeOpacity = 1;\n }\n fillOpacity = this.fillOpacity;\n }\n\n uniforms.uTroikaDistanceOffset.value = distanceOffset;\n uniforms.uTroikaPositionOffset.value.set(offsetX, offsetY);\n uniforms.uTroikaBlurRadius.value = blurRadius;\n uniforms.uTroikaStrokeWidth.value = strokeWidth;\n uniforms.uTroikaStrokeOpacity.value = strokeOpacity;\n uniforms.uTroikaFillOpacity.value = fillOpacity == null ? 1 : fillOpacity;\n uniforms.uTroikaCurveRadius.value = this.curveRadius || 0;\n\n let clipRect = this.clipRect;\n if (clipRect && Array.isArray(clipRect) && clipRect.length === 4) {\n uniforms.uTroikaClipRect.value.fromArray(clipRect);\n } else {\n // no clipping - choose a finite rect that shouldn't ever be reached by overflowing glyphs or outlines\n const pad = (this.fontSize || 0.1) * 100;\n uniforms.uTroikaClipRect.value.set(\n blockBounds[0] - pad,\n blockBounds[1] - pad,\n blockBounds[2] + pad,\n blockBounds[3] + pad\n );\n }\n this.geometry.applyClipRect(uniforms.uTroikaClipRect.value);\n }\n uniforms.uTroikaSDFDebug.value = !!this.debugSDF;\n material.polygonOffset = !!this.depthOffset;\n material.polygonOffsetFactor = material.polygonOffsetUnits = this.depthOffset || 0;\n\n // Shortcut for setting material color via `color` prop on the mesh; this is\n // applied only to the derived material to avoid mutating a shared base material.\n const color = isOutline ? (this.outlineColor || 0) : this.color;\n\n if (color == null) {\n delete material.color; //inherit from base\n } else {\n const colorObj = material.hasOwnProperty('color') ? material.color : (material.color = new Color());\n if (color !== colorObj._input || typeof color === 'object') {\n colorObj.set(colorObj._input = color);\n }\n }\n\n // base orientation\n let orient = this.orientation || defaultOrient;\n if (orient !== material._orientation) {\n let rotMat = uniforms.uTroikaOrient.value;\n orient = orient.replace(/[^-+xyz]/g, '');\n let match = orient !== defaultOrient && orient.match(/^([-+])([xyz])([-+])([xyz])$/);\n if (match) {\n let [, hSign, hAxis, vSign, vAxis] = match;\n tempVec3a.set(0, 0, 0)[hAxis] = hSign === '-' ? 1 : -1;\n tempVec3b.set(0, 0, 0)[vAxis] = vSign === '-' ? -1 : 1;\n tempMat4.lookAt(origin, tempVec3a.cross(tempVec3b), tempVec3b);\n rotMat.setFromMatrix4(tempMat4);\n } else {\n rotMat.identity();\n }\n material._orientation = orient;\n }\n }\n\n _parsePercent(value) {\n if (typeof value === 'string') {\n let match = value.match(/^(-?[\\d.]+)%$/);\n let pct = match ? parseFloat(match[1]) : NaN;\n value = (isNaN(pct) ? 0 : pct / 100) * this.fontSize;\n }\n return value\n }\n\n /**\n * Translate a point in local space to an x/y in the text plane.\n */\n localPositionToTextCoords(position, target = new Vector2()) {\n target.copy(position); //simple non-curved case is 1:1\n const r = this.curveRadius;\n if (r) { //flatten the curve\n target.x = Math.atan2(position.x, Math.abs(r) - Math.abs(position.z)) * Math.abs(r);\n }\n return target\n }\n\n /**\n * Translate a point in world space to an x/y in the text plane.\n */\n worldPositionToTextCoords(position, target = new Vector2()) {\n tempVec3a.copy(position);\n return this.localPositionToTextCoords(this.worldToLocal(tempVec3a), target)\n }\n\n /**\n * @override Custom raycasting to test against the whole text block's max rectangular bounds\n * TODO is there any reason to make this more granular, like within individual line or glyph rects?\n */\n raycast(raycaster, intersects) {\n const {textRenderInfo, curveRadius} = this;\n if (textRenderInfo) {\n const bounds = textRenderInfo.blockBounds;\n const raycastMesh = curveRadius ? getCurvedRaycastMesh() : getFlatRaycastMesh();\n const geom = raycastMesh.geometry;\n const {position, uv} = geom.attributes;\n for (let i = 0; i < uv.count; i++) {\n let x = bounds[0] + (uv.getX(i) * (bounds[2] - bounds[0]));\n const y = bounds[1] + (uv.getY(i) * (bounds[3] - bounds[1]));\n let z = 0;\n if (curveRadius) {\n z = curveRadius - Math.cos(x / curveRadius) * curveRadius;\n x = Math.sin(x / curveRadius) * curveRadius;\n }\n position.setXYZ(i, x, y, z);\n }\n geom.boundingSphere = this.geometry.boundingSphere;\n geom.boundingBox = this.geometry.boundingBox;\n raycastMesh.matrixWorld = this.matrixWorld;\n raycastMesh.material.side = this.material.side;\n tempArray.length = 0;\n raycastMesh.raycast(raycaster, tempArray);\n for (let i = 0; i < tempArray.length; i++) {\n tempArray[i].object = this;\n intersects.push(tempArray[i]);\n }\n }\n }\n\n copy(source) {\n // Prevent copying the geometry reference so we don't end up sharing attributes between instances\n const geom = this.geometry;\n super.copy(source);\n this.geometry = geom;\n\n COPYABLE_PROPS.forEach(prop => {\n this[prop] = source[prop];\n });\n return this\n }\n\n clone() {\n return new this.constructor().copy(this)\n }\n}\n\n\n// Create setters for properties that affect text layout:\nSYNCABLE_PROPS.forEach(prop => {\n const privateKey = '_private_' + prop;\n Object.defineProperty(Text.prototype, prop, {\n get() {\n return this[privateKey]\n },\n set(value) {\n if (value !== this[privateKey]) {\n this[privateKey] = value;\n this._needsSync = true;\n }\n }\n });\n});\n\n//=== Utility functions for dealing with carets and selection ranges ===//\n\n/**\n * @typedef {object} TextCaret\n * @property {number} x - x position of the caret\n * @property {number} y - y position of the caret's bottom\n * @property {number} height - height of the caret\n * @property {number} charIndex - the index in the original input string of this caret's target\n * character; the caret will be for the position _before_ that character.\n */\n\n/**\n * Given a local x/y coordinate in the text block plane, find the nearest caret position.\n * @param {TroikaTextRenderInfo} textRenderInfo - a result object from TextBuilder#getTextRenderInfo\n * @param {number} x\n * @param {number} y\n * @return {TextCaret | null}\n */\nfunction getCaretAtPoint(textRenderInfo, x, y) {\n let closestCaret = null;\n const {caretHeight} = textRenderInfo;\n const caretsByRow = groupCaretsByRow(textRenderInfo);\n\n // Find nearest row by y first\n let closestRowY = Infinity;\n caretsByRow.forEach((carets, rowY) => {\n if (Math.abs(y - (rowY + caretHeight / 2)) < Math.abs(y - (closestRowY + caretHeight / 2))) {\n closestRowY = rowY;\n }\n });\n\n // Then find closest caret by x within that row\n caretsByRow.get(closestRowY).forEach(caret => {\n if (!closestCaret || Math.abs(x - caret.x) < Math.abs(x - closestCaret.x)) {\n closestCaret = caret;\n }\n });\n return closestCaret\n}\n\n\nconst _rectsCache = new WeakMap();\n\n/**\n * Given start and end character indexes, return a list of rectangles covering all the\n * characters within that selection.\n * @param {TroikaTextRenderInfo} textRenderInfo\n * @param {number} start - index of the first char in the selection\n * @param {number} end - index of the first char after the selection\n * @return {Array<{left, top, right, bottom}> | null}\n */\nfunction getSelectionRects(textRenderInfo, start, end) {\n let rects;\n if (textRenderInfo) {\n // Check cache - textRenderInfo is frozen so it's safe to cache based on it\n let prevResult = _rectsCache.get(textRenderInfo);\n if (prevResult && prevResult.start === start && prevResult.end === end) {\n return prevResult.rects\n }\n\n const {caretPositions, caretHeight} = textRenderInfo;\n\n // Normalize\n if (end < start) {\n const s = start;\n start = end;\n end = s;\n }\n start = Math.max(start, 0);\n end = Math.min(end, caretPositions.length + 1);\n\n // Build list of rects, expanding the current rect for all characters in a run and starting\n // a new rect whenever reaching a new line or a new bidi direction\n rects = [];\n let currentRect = null;\n for (let i = start; i < end; i++) {\n const x1 = caretPositions[i * 3];\n const x2 = caretPositions[i * 3 + 1];\n const left = Math.min(x1, x2);\n const right = Math.max(x1, x2);\n const bottom = caretPositions[i * 3 + 2];\n if (!currentRect || bottom !== currentRect.bottom || left > currentRect.right || right < currentRect.left) {\n currentRect = {\n left: Infinity,\n right: -Infinity,\n bottom: bottom,\n top: bottom + caretHeight\n };\n rects.push(currentRect);\n }\n currentRect.left = Math.min(left, currentRect.left);\n currentRect.right = Math.max(right, currentRect.right);\n }\n\n // Merge any overlapping rects, e.g. those formed by adjacent bidi runs\n rects.sort((a, b) => b.bottom - a.bottom || a.left - b.left);\n for (let i = rects.length - 1; i-- > 0;) {\n const rectA = rects[i];\n const rectB = rects[i + 1];\n if (rectA.bottom === rectB.bottom && rectA.left <= rectB.right && rectA.right >= rectB.left) {\n rectB.left = Math.min(rectB.left, rectA.left);\n rectB.right = Math.max(rectB.right, rectA.right);\n rects.splice(i, 1);\n }\n }\n\n _rectsCache.set(textRenderInfo, {start, end, rects});\n }\n return rects\n}\n\nconst _caretsByRowCache = new WeakMap();\n\nfunction groupCaretsByRow(textRenderInfo) {\n // textRenderInfo is frozen so it's safe to cache based on it\n let caretsByRow = _caretsByRowCache.get(textRenderInfo);\n if (!caretsByRow) {\n const {caretPositions, caretHeight} = textRenderInfo;\n caretsByRow = new Map();\n for (let i = 0; i < caretPositions.length; i += 3) {\n const rowY = caretPositions[i + 2];\n let rowCarets = caretsByRow.get(rowY);\n if (!rowCarets) {\n caretsByRow.set(rowY, rowCarets = []);\n }\n rowCarets.push({\n x: caretPositions[i],\n y: rowY,\n height: caretHeight,\n charIndex: i / 3\n });\n // Add one more caret after the final char\n if (i + 3 >= caretPositions.length) {\n rowCarets.push({\n x: caretPositions[i + 1],\n y: rowY,\n height: caretHeight,\n charIndex: i / 3 + 1\n });\n }\n }\n }\n _caretsByRowCache.set(textRenderInfo, caretsByRow);\n return caretsByRow\n}\n\nexport { GlyphsGeometry, Text, configureTextBuilder, createTextDerivedMaterial, dumpSDFTextures, getCaretAtPoint, getSelectionRects, preloadFont, typesetterWorkerModule };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport { Text as Text$1, preloadFont } from 'troika-three-text';\nimport { useThree } from '@react-three/fiber';\nimport { suspend } from 'suspend-react';\n\n// eslint-disable-next-line prettier/prettier\nconst Text = /*@__PURE__*/React.forwardRef(({\n sdfGlyphSize = 64,\n anchorX = 'center',\n anchorY = 'middle',\n font,\n fontSize = 1,\n children,\n characters,\n onSync,\n ...props\n}, ref) => {\n const invalidate = useThree(({\n invalidate\n }) => invalidate);\n const [troikaMesh] = React.useState(() => new Text$1());\n const [nodes, text] = React.useMemo(() => {\n const n = [];\n let t = '';\n React.Children.forEach(children, child => {\n if (typeof child === 'string' || typeof child === 'number') {\n t += child;\n } else {\n n.push(child);\n }\n });\n return [n, t];\n }, [children]);\n suspend(() => new Promise(res => preloadFont({\n font,\n characters\n }, res)), ['troika-text', font, characters]);\n React.useLayoutEffect(() => void troikaMesh.sync(() => {\n invalidate();\n if (onSync) onSync(troikaMesh);\n }));\n React.useEffect(() => {\n return () => troikaMesh.dispose();\n }, [troikaMesh]);\n return /*#__PURE__*/React.createElement(\"primitive\", _extends({\n object: troikaMesh,\n ref: ref,\n font: font,\n text: text,\n anchorX: anchorX,\n anchorY: anchorY,\n fontSize: fontSize,\n sdfGlyphSize: sdfGlyphSize\n }, props), nodes);\n});\n\nexport { Text };\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n symbolTag = '[object Symbol]';\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property identifiers to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, props) {\n object = Object(object);\n return basePickBy(object, props, function(value, key) {\n return key in object;\n });\n}\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property identifiers to pick from.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, props, predicate) {\n var index = -1,\n length = props.length,\n result = {};\n\n while (++index < length) {\n var key = props[index],\n value = object[key];\n\n if (predicate(value, key)) {\n result[key] = value;\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [props] The property identifiers to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = baseRest(function(object, props) {\n return object == null ? {} : basePick(object, arrayMap(baseFlatten(props, 1), toKey));\n});\n\nmodule.exports = pick;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport * as THREE from 'three';\nimport * as React from 'react';\nimport pick from 'lodash.pick';\nimport { SkeletonUtils } from 'three-stdlib';\n\nfunction createSpread(child, {\n keys = ['near', 'far', 'color', 'distance', 'decay', 'penumbra', 'angle', 'intensity', 'skeleton', 'visible', 'castShadow', 'receiveShadow', 'morphTargetDictionary', 'morphTargetInfluences', 'name', 'geometry', 'material', 'position', 'rotation', 'scale', 'up', 'userData', 'bindMode', 'bindMatrix', 'bindMatrixInverse', 'skeleton'],\n deep,\n inject,\n castShadow,\n receiveShadow\n}) {\n let spread = pick(child, keys);\n if (deep) {\n if (spread.geometry && deep !== 'materialsOnly') spread.geometry = spread.geometry.clone();\n if (spread.material && deep !== 'geometriesOnly') spread.material = spread.material.clone();\n }\n if (inject) {\n if (typeof inject === 'function') spread = {\n ...spread,\n children: inject(child)\n };else if ( /*#__PURE__*/React.isValidElement(inject)) spread = {\n ...spread,\n children: inject\n };else spread = {\n ...spread,\n ...inject\n };\n }\n if (child instanceof THREE.Mesh) {\n if (castShadow) spread.castShadow = true;\n if (receiveShadow) spread.receiveShadow = true;\n }\n return spread;\n}\nconst Clone = /*@__PURE__*/React.forwardRef(({\n isChild = false,\n object,\n children,\n deep,\n castShadow,\n receiveShadow,\n inject,\n keys,\n ...props\n}, forwardRef) => {\n var _object;\n const config = {\n keys,\n deep,\n inject,\n castShadow,\n receiveShadow\n };\n object = React.useMemo(() => {\n if (isChild === false && !Array.isArray(object)) {\n let isSkinned = false;\n object.traverse(object => {\n if (object.isSkinnedMesh) isSkinned = true;\n });\n if (isSkinned) return SkeletonUtils.clone(object);\n }\n return object;\n }, [object, isChild]);\n\n // Deal with arrayed clones\n if (Array.isArray(object)) {\n return /*#__PURE__*/React.createElement(\"group\", _extends({}, props, {\n ref: forwardRef\n }), object.map(o => /*#__PURE__*/React.createElement(Clone, _extends({\n key: o.uuid,\n object: o\n }, config))), children);\n }\n\n // Singleton clones\n const {\n children: injectChildren,\n ...spread\n } = createSpread(object, config);\n const Element = object.type[0].toLowerCase() + object.type.slice(1);\n return /*#__PURE__*/React.createElement(Element, _extends({}, spread, props, {\n ref: forwardRef\n }), ((_object = object) == null ? void 0 : _object.children).map(child => {\n if (child.type === 'Bone') return /*#__PURE__*/React.createElement(\"primitive\", _extends({\n key: child.uuid,\n object: child\n }, config));\n return /*#__PURE__*/React.createElement(Clone, _extends({\n key: child.uuid,\n object: child\n }, config, {\n isChild: true\n }));\n }), children, injectChildren);\n});\n\nexport { Clone };\n","import { GLTFLoader, DRACOLoader, MeshoptDecoder } from 'three-stdlib';\nimport { useLoader } from '@react-three/fiber';\n\n// @ts-ignore\nlet dracoLoader = null;\nlet decoderPath = 'https://www.gstatic.com/draco/versioned/decoders/1.5.5/';\nfunction extensions(useDraco, useMeshopt, extendLoader) {\n return loader => {\n if (extendLoader) {\n extendLoader(loader);\n }\n if (useDraco) {\n if (!dracoLoader) {\n dracoLoader = new DRACOLoader();\n }\n dracoLoader.setDecoderPath(typeof useDraco === 'string' ? useDraco : decoderPath);\n loader.setDRACOLoader(dracoLoader);\n }\n if (useMeshopt) {\n loader.setMeshoptDecoder(typeof MeshoptDecoder === 'function' ? MeshoptDecoder() : MeshoptDecoder);\n }\n };\n}\nfunction useGLTF(path, useDraco = true, useMeshOpt = true, extendLoader) {\n const gltf = useLoader(GLTFLoader, path, extensions(useDraco, useMeshOpt, extendLoader));\n return gltf;\n}\nuseGLTF.preload = (path, useDraco = true, useMeshOpt = true, extendLoader) => useLoader.preload(GLTFLoader, path, extensions(useDraco, useMeshOpt, extendLoader));\nuseGLTF.clear = input => useLoader.clear(GLTFLoader, input);\nuseGLTF.setDecoderPath = path => {\n decoderPath = path;\n};\n\nexport { useGLTF };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { useThree, useFrame } from '@react-three/fiber';\nimport * as React from 'react';\nimport { OrbitControls as OrbitControls$1 } from 'three-stdlib';\n\nconst OrbitControls = /*@__PURE__*/React.forwardRef(({\n makeDefault,\n camera,\n regress,\n domElement,\n enableDamping = true,\n keyEvents = false,\n onChange,\n onStart,\n onEnd,\n ...restProps\n}, ref) => {\n const invalidate = useThree(state => state.invalidate);\n const defaultCamera = useThree(state => state.camera);\n const gl = useThree(state => state.gl);\n const events = useThree(state => state.events);\n const setEvents = useThree(state => state.setEvents);\n const set = useThree(state => state.set);\n const get = useThree(state => state.get);\n const performance = useThree(state => state.performance);\n const explCamera = camera || defaultCamera;\n const explDomElement = domElement || events.connected || gl.domElement;\n const controls = React.useMemo(() => new OrbitControls$1(explCamera), [explCamera]);\n useFrame(() => {\n if (controls.enabled) controls.update();\n }, -1);\n React.useEffect(() => {\n if (keyEvents) {\n controls.connect(keyEvents === true ? explDomElement : keyEvents);\n }\n controls.connect(explDomElement);\n return () => void controls.dispose();\n }, [keyEvents, explDomElement, regress, controls, invalidate]);\n React.useEffect(() => {\n const callback = e => {\n invalidate();\n if (regress) performance.regress();\n if (onChange) onChange(e);\n };\n const onStartCb = e => {\n if (onStart) onStart(e);\n };\n const onEndCb = e => {\n if (onEnd) onEnd(e);\n };\n controls.addEventListener('change', callback);\n controls.addEventListener('start', onStartCb);\n controls.addEventListener('end', onEndCb);\n return () => {\n controls.removeEventListener('start', onStartCb);\n controls.removeEventListener('end', onEndCb);\n controls.removeEventListener('change', callback);\n };\n }, [onChange, onStart, onEnd, controls, invalidate, setEvents]);\n React.useEffect(() => {\n if (makeDefault) {\n const old = get().controls;\n set({\n controls\n });\n return () => set({\n controls: old\n });\n }\n }, [makeDefault, controls]);\n return /*#__PURE__*/React.createElement(\"primitive\", _extends({\n ref: ref,\n object: controls,\n enableDamping: enableDamping\n }, restProps));\n});\n\nexport { OrbitControls };\n","import * as React from 'react';\nimport { useFrame } from '@react-three/fiber';\nimport mergeRefs from 'react-merge-refs';\nimport * as THREE from 'three';\n\nconst Float = /*@__PURE__*/React.forwardRef(({\n children,\n enabled = true,\n speed = 1,\n rotationIntensity = 1,\n floatIntensity = 1,\n floatingRange = [-0.1, 0.1],\n ...props\n}, forwardRef) => {\n const ref = React.useRef(null);\n const offset = React.useRef(Math.random() * 10000);\n useFrame(state => {\n var _floatingRange$, _floatingRange$2;\n if (!enabled || speed === 0) return;\n const t = offset.current + state.clock.getElapsedTime();\n ref.current.rotation.x = Math.cos(t / 4 * speed) / 8 * rotationIntensity;\n ref.current.rotation.y = Math.sin(t / 4 * speed) / 8 * rotationIntensity;\n ref.current.rotation.z = Math.sin(t / 4 * speed) / 20 * rotationIntensity;\n let yPosition = Math.sin(t / 4 * speed) / 10;\n yPosition = THREE.MathUtils.mapLinear(yPosition, -0.1, 0.1, (_floatingRange$ = floatingRange == null ? void 0 : floatingRange[0]) !== null && _floatingRange$ !== void 0 ? _floatingRange$ : -0.1, (_floatingRange$2 = floatingRange == null ? void 0 : floatingRange[1]) !== null && _floatingRange$2 !== void 0 ? _floatingRange$2 : 0.1);\n ref.current.position.y = yPosition * floatIntensity;\n ref.current.updateMatrix();\n });\n return /*#__PURE__*/React.createElement(\"group\", props, /*#__PURE__*/React.createElement(\"group\", {\n ref: mergeRefs([ref, forwardRef]),\n matrixAutoUpdate: false\n }, children));\n});\n\nexport { Float };\n","import { jsxs, jsx, Fragment } from \"react/jsx-runtime\";\nimport { memo, useRef, Suspense } from \"react\";\nimport { matriceCount, matriceWorldCount } from \"./PerfHeadless.mjs\";\nimport { useThree } from \"@react-three/fiber\";\nimport { Text } from \"@react-three/drei\";\nimport \"../index.mjs\";\nimport { colorsGraph } from \"./Perf.mjs\";\nimport * as THREE from \"three\";\nimport { useEvent } from \"@utsubo/events\";\nimport { getPerf } from \"../store.mjs\";\nconst TextHighHZ = memo(\n ({\n isPerf,\n color,\n colorBlind,\n customData: customData2,\n isMemory,\n isShadersInfo,\n metric,\n fontSize,\n offsetY = 0,\n offsetX,\n round,\n hasInstance\n }) => {\n const { width: w, height: h } = useThree((s) => s.viewport);\n const fpsRef = useRef(null);\n const fpsInstanceRef = useRef(null);\n useEvent(\"log\", function updateR3FPerfText([log, gl]) {\n var _a;\n if (!log || !fpsRef.current)\n return;\n if (customData2) {\n fpsRef.current.text = (Math.round(getPerf().customData * Math.pow(10, round)) / Math.pow(10, round)).toFixed(\n round\n );\n }\n if (!metric)\n return;\n let info = log[metric];\n if (isShadersInfo) {\n info = (_a = gl.info.programs) == null ? void 0 : _a.length;\n } else if (metric === \"matriceCount\") {\n info = matriceCount.value;\n } else if (!isPerf && gl.info.render) {\n const infos = isMemory ? gl.info.memory : gl.info.render;\n info = infos[metric];\n }\n if (metric === \"fps\") {\n fpsRef.current.color = getPerf().overclockingFps ? colorsGraph(colorBlind).overClock.toString() : `rgb(${colorsGraph(colorBlind).fps.toString()})`;\n }\n fpsRef.current.text = (Math.round(info * Math.pow(10, round)) / Math.pow(10, round)).toFixed(round);\n if (hasInstance) {\n const infosInstance = gl.info.instance;\n if (typeof infosInstance === \"undefined\" && metric !== \"matriceCount\") {\n return;\n }\n let infoInstance;\n if (metric === \"matriceCount\") {\n infoInstance = matriceWorldCount.value;\n } else {\n infoInstance = infosInstance[metric];\n }\n if (infoInstance > 0) {\n fpsRef.current.fontSize = fontSize / 1.15;\n fpsInstanceRef.current.fontSize = info > 0 ? fontSize / 1.4 : fontSize;\n fpsRef.current.position.y = h / 2 - offsetY - fontSize / 1.9;\n fpsInstanceRef.current.text = \" ±\t\" + (Math.round(infoInstance * Math.pow(10, round)) / Math.pow(10, round)).toFixed(round);\n } else {\n if (fpsInstanceRef.current.text)\n fpsInstanceRef.current.text = \"\";\n fpsRef.current.position.y = h / 2 - offsetY - fontSize;\n fpsRef.current.fontSize = fontSize;\n }\n }\n matriceCount.value -= 1;\n fpsRef.current.updateMatrix();\n fpsRef.current.matrixWorld.copy(fpsRef.current.matrix);\n });\n return /* @__PURE__ */ jsxs(Suspense, { fallback: null, children: [\n /* @__PURE__ */ jsxs(\n Text,\n {\n textAlign: \"justify\",\n matrixAutoUpdate: false,\n ref: fpsRef,\n fontSize,\n position: [-w / 2 + offsetX + fontSize, h / 2 - offsetY - fontSize, 0],\n color,\n characters: \"0123456789\",\n onUpdate: (self) => {\n self.updateMatrix();\n matriceCount.value -= 1;\n self.matrixWorld.copy(self.matrix);\n },\n children: [\n /* @__PURE__ */ jsx(\"meshBasicMaterial\", { blending: THREE.NormalBlending }),\n \"0\"\n ]\n }\n ),\n hasInstance && /* @__PURE__ */ jsx(\n Text,\n {\n textAlign: \"justify\",\n matrixAutoUpdate: false,\n ref: fpsInstanceRef,\n fontSize: 8,\n position: [-w / 2 + offsetX + fontSize, h / 2 - offsetY - fontSize * 1.15, 0],\n color: \"lightgrey\",\n characters: \"0123456789\",\n onUpdate: (self) => {\n self.updateMatrix();\n matriceCount.value -= 1;\n self.matrixWorld.copy(self.matrix);\n },\n children: /* @__PURE__ */ jsx(\"meshBasicMaterial\", { blending: THREE.NormalBlending })\n }\n )\n ] });\n }\n);\nconst TextsHighHZ = ({ colorBlind, customData: customData2, minimal, matrixUpdate }) => {\n const fontSize = 14;\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n TextHighHZ,\n {\n colorBlind,\n color: `rgb(${colorsGraph(colorBlind).fps.toString()})`,\n isPerf: true,\n metric: \"fps\",\n fontSize,\n offsetX: 140,\n round: 0\n }\n ),\n /* @__PURE__ */ jsx(\n TextHighHZ,\n {\n color: `rgb(${colorsGraph(colorBlind).cpu.toString()})`,\n isPerf: true,\n metric: \"cpu\",\n fontSize,\n offsetX: 72,\n round: 3\n }\n ),\n /* @__PURE__ */ jsx(\n TextHighHZ,\n {\n color: `rgb(${colorsGraph(colorBlind).gpu.toString()})`,\n isPerf: true,\n metric: \"gpu\",\n fontSize,\n offsetX: 10,\n round: 3\n }\n ),\n !minimal ? /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(TextHighHZ, { metric: \"calls\", fontSize, offsetX: 200, round: 0, hasInstance: true }),\n /* @__PURE__ */ jsx(TextHighHZ, { metric: \"triangles\", fontSize, offsetX: 260, round: 0, hasInstance: true }),\n /* @__PURE__ */ jsx(TextHighHZ, { isMemory: true, metric: \"geometries\", fontSize, offsetY: 30, offsetX: 0, round: 0 }),\n /* @__PURE__ */ jsx(TextHighHZ, { isMemory: true, metric: \"textures\", fontSize, offsetY: 30, offsetX: 80, round: 0 }),\n /* @__PURE__ */ jsx(TextHighHZ, { isShadersInfo: true, metric: \"programs\", fontSize, offsetY: 30, offsetX: 140, round: 0 }),\n /* @__PURE__ */ jsx(TextHighHZ, { metric: \"lines\", fontSize, offsetY: 30, offsetX: 200, round: 0, hasInstance: true }),\n /* @__PURE__ */ jsx(TextHighHZ, { metric: \"points\", fontSize, offsetY: 30, offsetX: 260, round: 0, hasInstance: true }),\n matrixUpdate && /* @__PURE__ */ jsx(\n TextHighHZ,\n {\n isPerf: true,\n metric: \"matriceCount\",\n fontSize,\n offsetY: 30,\n offsetX: 320,\n round: 0,\n hasInstance: true\n }\n )\n ] }) : null,\n customData2 && /* @__PURE__ */ jsx(\n TextHighHZ,\n {\n color: `rgb(${colorsGraph(colorBlind).custom.toString()})`,\n customData: customData2,\n fontSize,\n offsetY: 0,\n offsetX: minimal ? 200 : 320,\n round: customData2.round || 2\n }\n )\n ] });\n};\nexport {\n TextsHighHZ\n};\n//# sourceMappingURL=TextsHighHZ.mjs.map\n","import { jsxs, Fragment, jsx } from \"react/jsx-runtime\";\nimport { useMemo, useRef } from \"react\";\nimport { matriceCount, matriceWorldCount } from \"./PerfHeadless.mjs\";\nimport { Graph, Graphpc } from \"../styles.mjs\";\nimport { PauseIcon } from \"@radix-ui/react-icons\";\nimport { useFrame, Canvas } from \"@react-three/fiber\";\nimport \"../index.mjs\";\nimport { colorsGraph } from \"./Perf.mjs\";\nimport * as THREE from \"three\";\nimport { TextsHighHZ } from \"./TextsHighHZ.mjs\";\nimport { getPerf, usePerf } from \"../store.mjs\";\nconst ChartCurve = ({ colorBlind, minimal, chart = { length: 120, hz: 60 } }) => {\n const curves = useMemo(() => {\n return {\n fps: new Float32Array(chart.length * 3),\n cpu: new Float32Array(chart.length * 3),\n // mem: new Float32Array(chart.length * 3),\n gpu: new Float32Array(chart.length * 3)\n };\n }, [chart]);\n const fpsRef = useRef(null);\n const fpsMatRef = useRef(null);\n const gpuRef = useRef(null);\n const cpuRef = useRef(null);\n const dummyVec3 = useMemo(() => new THREE.Vector3(0, 0, 0), []);\n const updatePoints = (element, factor = 1, ref, viewport) => {\n let maxVal = 0;\n const { width: w, height: h } = viewport;\n const chart2 = getPerf().chart.data[element];\n if (!chart2 || chart2.length === 0) {\n return;\n }\n const padding = minimal ? 2 : 6;\n const paddingTop = minimal ? 12 : 50;\n let len = chart2.length;\n for (let i = 0; i < len; i++) {\n let id = (getPerf().chart.circularId + i + 1) % len;\n if (chart2[id] !== void 0) {\n if (chart2[id] > maxVal) {\n maxVal = chart2[id] * factor;\n }\n dummyVec3.set(padding + i / (len - 1) * (w - padding * 2) - w / 2, Math.min(100, chart2[id]) * factor / 100 * (h - padding * 2 - paddingTop) - h / 2, 0);\n dummyVec3.toArray(ref.attributes.position.array, i * 3);\n }\n }\n ref.attributes.position.needsUpdate = true;\n };\n useFrame(function updateChartCurve({ viewport }) {\n updatePoints(\"fps\", 1, fpsRef.current, viewport);\n if (fpsMatRef.current) {\n fpsMatRef.current.color.set(getPerf().overclockingFps ? colorsGraph(colorBlind).overClock.toString() : `rgb(${colorsGraph(colorBlind).fps.toString()})`);\n }\n updatePoints(\"gpu\", 5, gpuRef.current, viewport);\n updatePoints(\"cpu\", 5, cpuRef.current, viewport);\n });\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsxs(\"line\", { onUpdate: (self) => {\n self.updateMatrix();\n matriceCount.value -= 1;\n self.matrixWorld.copy(self.matrix);\n }, children: [\n /* @__PURE__ */ jsx(\"bufferGeometry\", { ref: fpsRef, children: /* @__PURE__ */ jsx(\n \"bufferAttribute\",\n {\n attach: \"attributes-position\",\n count: chart.length,\n array: curves.fps,\n itemSize: 3,\n usage: THREE.DynamicDrawUsage,\n needsUpdate: true\n }\n ) }),\n /* @__PURE__ */ jsx(\"lineBasicMaterial\", { ref: fpsMatRef, color: `rgb(${colorsGraph(colorBlind).fps.toString()})`, transparent: true, opacity: 0.5 })\n ] }),\n /* @__PURE__ */ jsxs(\"line\", { onUpdate: (self) => {\n self.updateMatrix();\n matriceCount.value -= 1;\n self.matrixWorld.copy(self.matrix);\n }, children: [\n /* @__PURE__ */ jsx(\"bufferGeometry\", { ref: gpuRef, children: /* @__PURE__ */ jsx(\n \"bufferAttribute\",\n {\n attach: \"attributes-position\",\n count: chart.length,\n array: curves.gpu,\n itemSize: 3,\n usage: THREE.DynamicDrawUsage,\n needsUpdate: true\n }\n ) }),\n /* @__PURE__ */ jsx(\"lineBasicMaterial\", { color: `rgb(${colorsGraph(colorBlind).gpu.toString()})`, transparent: true, opacity: 0.5 })\n ] }),\n /* @__PURE__ */ jsxs(\"line\", { onUpdate: (self) => {\n self.updateMatrix();\n matriceCount.value -= 1;\n self.matrixWorld.copy(self.matrix);\n }, children: [\n /* @__PURE__ */ jsx(\"bufferGeometry\", { ref: cpuRef, children: /* @__PURE__ */ jsx(\n \"bufferAttribute\",\n {\n attach: \"attributes-position\",\n count: chart.length,\n array: curves.cpu,\n itemSize: 3,\n usage: THREE.DynamicDrawUsage,\n needsUpdate: true\n }\n ) }),\n /* @__PURE__ */ jsx(\"lineBasicMaterial\", { color: `rgb(${colorsGraph(colorBlind).cpu.toString()})`, transparent: true, opacity: 0.5 })\n ] })\n ] });\n};\nconst ChartUI = ({\n colorBlind,\n chart,\n customData,\n matrixUpdate,\n showGraph = true,\n antialias = true,\n minimal\n}) => {\n const canvas = useRef(void 0);\n const paused = usePerf((state) => state.paused);\n return /* @__PURE__ */ jsxs(\n Graph,\n {\n style: {\n display: \"flex\",\n position: \"absolute\",\n height: `${minimal ? 37 : showGraph ? 100 : 60}px`,\n minWidth: `${minimal ? \"100px\" : customData ? \"370px\" : \"310px\"}`\n },\n children: [\n /* @__PURE__ */ jsx(\n Canvas,\n {\n ref: canvas,\n orthographic: true,\n dpr: antialias ? [1, 2] : 1,\n gl: {\n antialias: true,\n alpha: true,\n stencil: false,\n depth: false\n },\n onCreated: ({ scene }) => {\n scene.traverse((obj) => {\n obj.matrixWorldAutoUpdate = false;\n obj.matrixAutoUpdate = false;\n });\n },\n flat: true,\n style: {\n marginBottom: `-42px`,\n position: \"relative\",\n pointerEvents: \"none\",\n background: \"transparent !important\",\n height: `${minimal ? 37 : showGraph ? 100 : 60}px`\n },\n children: !paused ? /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(Renderer, {}),\n /* @__PURE__ */ jsx(TextsHighHZ, { customData, minimal, matrixUpdate }),\n showGraph && /* @__PURE__ */ jsx(\n ChartCurve,\n {\n colorBlind,\n minimal,\n chart\n }\n )\n ] }) : null\n }\n ),\n paused && /* @__PURE__ */ jsxs(Graphpc, { children: [\n /* @__PURE__ */ jsx(PauseIcon, {}),\n \" PAUSED\"\n ] })\n ]\n }\n );\n};\nconst Renderer = () => {\n useFrame(function updateR3FPerf({ gl, scene, camera }) {\n camera.updateMatrix();\n matriceCount.value -= 1;\n camera.matrixWorld.copy(camera.matrix);\n camera.matrixWorldInverse.copy(camera.matrixWorld).invert();\n gl.render(scene, camera);\n matriceWorldCount.value = 0;\n matriceCount.value = 0;\n }, Infinity);\n return null;\n};\nexport {\n ChartUI\n};\n//# sourceMappingURL=Graph.mjs.map\n","import { jsx } from \"react/jsx-runtime\";\nimport { useThree } from \"@react-three/fiber\";\nimport { forwardRef, useRef, useLayoutEffect } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nconst HtmlMinimal = forwardRef(({ portal, className, children, name, ...props }, ref) => {\n const gl = useThree((state) => state.gl);\n const group = useRef(null);\n const rootRef = useRef(null);\n const target = (portal == null ? void 0 : portal.current) != null ? portal.current : gl.domElement.parentNode;\n useLayoutEffect(() => {\n if (!group.current || !target)\n return;\n const el = document.createElement(\"div\");\n const root = rootRef.current = createRoot(el);\n target.appendChild(el);\n return () => {\n root.unmount();\n rootRef.current = null;\n target.removeChild(el);\n };\n }, [target]);\n useLayoutEffect(() => {\n const root = rootRef.current;\n if (!root)\n return;\n root.render(\n /* @__PURE__ */ jsx(\"div\", { ref, className, children })\n );\n });\n return /* @__PURE__ */ jsx(\"group\", { name, ...props, ref: group });\n});\nexport {\n HtmlMinimal\n};\n//# sourceMappingURL=HtmlMinimal.mjs.map\n","function estimateBytesUsed(geometry) {\n let mem = 0;\n for (let name in geometry.attributes) {\n const attr = geometry.getAttribute(name);\n mem += attr.count * attr.itemSize * attr.array.BYTES_PER_ELEMENT;\n }\n const indices = geometry.getIndex();\n mem += indices ? indices.count * indices.itemSize * indices.array.BYTES_PER_ELEMENT : 0;\n return mem;\n}\nexport {\n estimateBytesUsed\n};\n//# sourceMappingURL=estimateBytesUsed.mjs.map\n","import { jsx, jsxs, Fragment } from \"react/jsx-runtime\";\nimport { useState, useEffect } from \"react\";\nimport { ProgramsUL, ProgramConsole, PerfI, PerfB, ProgramGeo, ProgramHeader, Toggle, ProgramTitle, ToggleVisible, ProgramsULHeader, ProgramsGeoLi, ProgramsContainer } from \"../styles.mjs\";\nimport \"../index.mjs\";\nimport { VercelLogoIcon, ActivityLogIcon, TriangleDownIcon, TriangleUpIcon, LayersIcon, ImageIcon, RocketIcon, EyeOpenIcon, EyeNoneIcon, ButtonIcon, CubeIcon } from \"@radix-ui/react-icons\";\nimport { estimateBytesUsed } from \"../helpers/estimateBytesUsed.mjs\";\nimport { usePerf } from \"../store.mjs\";\nconst addTextureUniforms = (id, texture) => {\n const repeatType = (wrap) => {\n switch (wrap) {\n case 1e3:\n return \"RepeatWrapping\";\n case 1001:\n return \"ClampToEdgeWrapping\";\n case 1002:\n return \"MirroredRepeatWrapping\";\n default:\n return \"ClampToEdgeWrapping\";\n }\n };\n const encodingType = (encoding) => {\n switch (encoding) {\n case 3e3:\n return \"LinearEncoding\";\n case 3001:\n return \"sRGBEncoding\";\n case 3002:\n return \"RGBEEncoding\";\n case 3003:\n return \"LogLuvEncoding\";\n case 3004:\n return \"RGBM7Encoding\";\n case 3005:\n return \"RGBM16Encoding\";\n case 3006:\n return \"RGBDEncoding\";\n case 3007:\n return \"GammaEncoding\";\n default:\n return \"ClampToEdgeWrapping\";\n }\n };\n return {\n name: id,\n url: texture.image.currentSrc,\n encoding: encodingType(texture.encoding),\n wrapT: repeatType(texture.wrapT),\n flipY: texture.flipY.toString()\n };\n};\nconst UniformsGL = ({ program, material, setTexNumber }) => {\n const gl = usePerf((state) => state.gl);\n const [uniforms, set] = useState(null);\n useEffect(() => {\n if (gl) {\n const data = program == null ? void 0 : program.getUniforms();\n let TexCount = 0;\n const format = /* @__PURE__ */ new Map();\n data.seq.forEach((e) => {\n if (!e.id.includes(\"uTroika\") && e.id !== \"isOrthographic\" && e.id !== \"uvTransform\" && e.id !== \"lightProbe\" && e.id !== \"projectionMatrix\" && e.id !== \"viewMatrix\" && e.id !== \"normalMatrix\" && e.id !== \"modelMatrix\" && e.id !== \"modelViewMatrix\") {\n let values = [];\n let data2 = {\n name: e.id\n };\n if (e.cache) {\n e.cache.forEach((v) => {\n if (typeof v !== \"undefined\") {\n values.push(v.toString().substring(0, 4));\n }\n });\n data2.value = values.join();\n if (material[e.id] && material[e.id].image) {\n if (material[e.id].image) {\n TexCount++;\n data2.value = addTextureUniforms(e.id, material[e.id]);\n }\n }\n if (!data2.value) {\n data2.value = \"empty\";\n }\n format.set(e.id, data2);\n }\n }\n });\n if (material.uniforms) {\n Object.keys(material.uniforms).forEach((key) => {\n const uniform = material.uniforms[key];\n if (uniform.value) {\n const { value } = uniform;\n let data2 = {\n name: key\n };\n if (key.includes(\"uTroika\")) {\n return;\n }\n if (value.isTexture) {\n TexCount++;\n data2.value = addTextureUniforms(key, value);\n } else {\n let sb = JSON.stringify(value);\n try {\n sb = JSON.stringify(value);\n } catch (_err) {\n sb = value.toString();\n }\n data2.value = sb;\n }\n format.set(key, data2);\n }\n });\n }\n if (TexCount > 0) {\n setTexNumber(TexCount);\n }\n set(format);\n }\n }, []);\n return /* @__PURE__ */ jsx(ProgramsUL, { children: uniforms && Array.from(uniforms.values()).map((uniform) => {\n return /* @__PURE__ */ jsx(\"span\", { children: typeof uniform.value === \"string\" ? /* @__PURE__ */ jsx(\"li\", { children: /* @__PURE__ */ jsxs(\"span\", { children: [\n uniform.name,\n \" :\",\n \" \",\n /* @__PURE__ */ jsxs(\"b\", { children: [\n uniform.value.substring(0, 30),\n uniform.value.length > 30 ? \"...\" : \"\"\n ] })\n ] }) }) : /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\"li\", { children: /* @__PURE__ */ jsxs(\"b\", { children: [\n uniform.value.name,\n \":\"\n ] }) }),\n /* @__PURE__ */ jsxs(\"div\", { children: [\n Object.keys(uniform.value).map((key) => {\n return key !== \"name\" ? /* @__PURE__ */ jsx(\"div\", { children: key === \"url\" ? /* @__PURE__ */ jsx(\"a\", { href: uniform.value[key], target: \"_blank\", children: /* @__PURE__ */ jsx(\"img\", { src: uniform.value[key] }) }) : /* @__PURE__ */ jsxs(\"li\", { children: [\n key,\n \": \",\n /* @__PURE__ */ jsx(\"b\", { children: uniform.value[key] })\n ] }) }, key) : null;\n }),\n /* @__PURE__ */ jsxs(\n ProgramConsole,\n {\n onClick: () => {\n var _a;\n console.info(\n material[uniform.value.name] || ((_a = material == null ? void 0 : material.uniforms[uniform.value.name]) == null ? void 0 : _a.value)\n );\n },\n children: [\n \"console.info(\",\n uniform.value.name,\n \");\"\n ]\n }\n )\n ] })\n ] }) }, uniform.name);\n }) });\n};\nconst DynamicDrawCallInfo = ({ el }) => {\n usePerf((state) => state.log);\n const gl = usePerf((state) => state.gl);\n const getVal = (el2) => {\n if (!gl)\n return 0;\n const res = Math.round(\n el2.drawCounts.total / (gl.info.render.triangles + gl.info.render.lines + gl.info.render.points) * 100 * 10\n ) / 10;\n return isFinite(res) && res || 0;\n };\n return /* @__PURE__ */ jsx(Fragment, { children: el.drawCounts.total > 0 && /* @__PURE__ */ jsxs(PerfI, { style: { height: \"auto\", width: \"auto\", margin: \"0 4px\" }, children: [\n el.drawCounts.type === \"Triangle\" ? /* @__PURE__ */ jsx(VercelLogoIcon, { style: { top: \"-1px\" } }) : /* @__PURE__ */ jsx(ActivityLogIcon, { style: { top: \"-1px\" } }),\n el.drawCounts.total,\n /* @__PURE__ */ jsxs(\"small\", { children: [\n el.drawCounts.type,\n \"s\"\n ] }),\n gl && /* @__PURE__ */ jsxs(\n PerfB,\n {\n style: { bottom: \"-10px\", width: \"40px\", fontWeight: \"bold\" },\n children: [\n el.visible && !el.material.wireframe ? getVal(el) : 0,\n \"%\"\n ]\n }\n )\n ] }) });\n};\nconst ProgramUI = ({ el }) => {\n const [showProgram, setShowProgram] = useState(el.visible);\n const [toggleProgram, set] = useState(el.expand);\n const [texNumber, setTexNumber] = useState(0);\n const { meshes, program, material } = el;\n return /* @__PURE__ */ jsxs(ProgramGeo, { children: [\n /* @__PURE__ */ jsxs(\n ProgramHeader,\n {\n onClick: () => {\n el.expand = !toggleProgram;\n Object.keys(meshes).forEach((key) => {\n const mesh = meshes[key];\n mesh.material.wireframe = false;\n });\n set(!toggleProgram);\n },\n children: [\n /* @__PURE__ */ jsx(Toggle, { style: { marginRight: \"6px\" }, children: toggleProgram ? /* @__PURE__ */ jsx(\"span\", { children: /* @__PURE__ */ jsx(TriangleDownIcon, {}) }) : /* @__PURE__ */ jsx(\"span\", { children: /* @__PURE__ */ jsx(TriangleUpIcon, {}) }) }),\n program && /* @__PURE__ */ jsxs(\"span\", { children: [\n /* @__PURE__ */ jsx(ProgramTitle, { children: program.name }),\n /* @__PURE__ */ jsxs(PerfI, { style: { height: \"auto\", width: \"auto\", margin: \"0 4px\" }, children: [\n /* @__PURE__ */ jsx(LayersIcon, { style: { top: \"-1px\" } }),\n Object.keys(meshes).length,\n /* @__PURE__ */ jsx(\"small\", { children: Object.keys(meshes).length > 1 ? \"users\" : \"user\" })\n ] }),\n texNumber > 0 && /* @__PURE__ */ jsxs(PerfI, { style: { height: \"auto\", width: \"auto\", margin: \"0 4px\" }, children: [\n texNumber > 1 ? /* @__PURE__ */ jsx(ImageIcon, { style: { top: \"-1px\" } }) : /* @__PURE__ */ jsx(ImageIcon, { style: { top: \"-1px\" } }),\n texNumber,\n /* @__PURE__ */ jsx(\"small\", { children: \"tex\" })\n ] }),\n /* @__PURE__ */ jsx(DynamicDrawCallInfo, { el }),\n material.glslVersion === \"300 es\" && /* @__PURE__ */ jsxs(PerfI, { style: { height: \"auto\", width: \"auto\", margin: \"0 4px\" }, children: [\n /* @__PURE__ */ jsx(RocketIcon, { style: { top: \"-1px\" } }),\n \"300\",\n /* @__PURE__ */ jsx(\"small\", { children: \"es\" }),\n /* @__PURE__ */ jsx(PerfB, { style: { bottom: \"-10px\", width: \"40px\" }, children: \"glsl\" })\n ] })\n ] }),\n /* @__PURE__ */ jsx(\n ToggleVisible,\n {\n onPointerEnter: () => {\n Object.keys(meshes).forEach((key) => {\n const mesh = meshes[key];\n mesh.material.wireframe = true;\n });\n },\n onPointerLeave: () => {\n Object.keys(meshes).forEach((key) => {\n const mesh = meshes[key];\n mesh.material.wireframe = false;\n });\n },\n onClick: (e) => {\n e.stopPropagation();\n Object.keys(meshes).forEach((key) => {\n const mesh = meshes[key];\n const invert = !showProgram;\n mesh.visible = invert;\n el.visible = invert;\n setShowProgram(invert);\n });\n },\n children: showProgram ? /* @__PURE__ */ jsx(EyeOpenIcon, {}) : /* @__PURE__ */ jsx(EyeNoneIcon, {})\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: { maxHeight: toggleProgram ? \"9999px\" : 0, overflow: \"hidden\" },\n children: [\n /* @__PURE__ */ jsxs(ProgramsULHeader, { children: [\n /* @__PURE__ */ jsx(ButtonIcon, {}),\n \" Uniforms:\"\n ] }),\n /* @__PURE__ */ jsx(\n UniformsGL,\n {\n program,\n material,\n setTexNumber\n }\n ),\n /* @__PURE__ */ jsxs(ProgramsULHeader, { children: [\n /* @__PURE__ */ jsx(CubeIcon, {}),\n \" Geometries:\"\n ] }),\n /* @__PURE__ */ jsx(ProgramsUL, { children: meshes && Object.keys(meshes).map(\n (key) => meshes[key] && meshes[key].geometry && /* @__PURE__ */ jsxs(ProgramsGeoLi, { children: [\n /* @__PURE__ */ jsxs(\"span\", { children: [\n meshes[key].geometry.type,\n \": \"\n ] }),\n meshes[key].userData && meshes[key].userData.drawCount && /* @__PURE__ */ jsxs(\"b\", { children: [\n /* @__PURE__ */ jsxs(\"div\", { children: [\n meshes[key].userData.drawCount.count,\n /* @__PURE__ */ jsxs(\"small\", { children: [\n \" \",\n meshes[key].userData.drawCount.type,\n \"s\"\n ] })\n ] }),\n /* @__PURE__ */ jsx(\"br\", {}),\n /* @__PURE__ */ jsxs(\"div\", { children: [\n Math.round(\n estimateBytesUsed(meshes[key].geometry) / 1024 * 1e3\n ) / 1e3,\n \"Kb\",\n /* @__PURE__ */ jsx(\"small\", { children: \" memory used\" })\n ] })\n ] })\n ] }, key)\n ) }),\n /* @__PURE__ */ jsxs(\n ProgramConsole,\n {\n onClick: () => {\n console.info(material);\n },\n children: [\n \"console.info(\",\n material.type,\n \")\"\n ]\n }\n )\n ]\n }\n )\n ] });\n};\nconst ProgramsUI = () => {\n usePerf((state) => state.triggerProgramsUpdate);\n const programs = usePerf((state) => state.programs);\n return /* @__PURE__ */ jsx(ProgramsContainer, { children: programs && Array.from(programs.values()).map((el) => {\n if (!el) {\n return null;\n }\n return el ? /* @__PURE__ */ jsx(ProgramUI, { el }, el.material.uuid) : null;\n }) });\n};\nexport {\n ProgramsUI\n};\n//# sourceMappingURL=Program.mjs.map\n","import { jsxs, jsx, Fragment } from \"react/jsx-runtime\";\nimport React, { useRef } from \"react\";\nimport { ChartUI } from \"./Graph.mjs\";\nimport { LightningBoltIcon, RulerHorizontalIcon, LapTimerIcon, TextAlignJustifyIcon, VercelLogoIcon, BarChartIcon, MarginIcon, ImageIcon, ActivityLogIcon, MinusIcon, DotIcon, DropdownMenuIcon, TriangleDownIcon, TriangleUpIcon } from \"@radix-ui/react-icons\";\nimport { HtmlMinimal } from \"./HtmlMinimal.mjs\";\nimport { PerfHeadless } from \"./PerfHeadless.mjs\";\nimport { PerfB, PerfIContainer, PerfI, PerfSmallI, Toggle, ToggleContainer, ContainerScroll, PerfS } from \"../styles.mjs\";\nimport { ProgramsUI } from \"./Program.mjs\";\nimport { usePerf, setPerf } from \"../store.mjs\";\nconst colorsGraph = (colorBlind) => {\n const colors = {\n overClock: `#ff6eff`,\n fps: colorBlind ? \"100, 143, 255\" : \"238,38,110\",\n cpu: colorBlind ? \"254, 254, 98\" : \"66,226,46\",\n gpu: colorBlind ? \"254,254,254\" : \"253,151,31\",\n custom: colorBlind ? \"86,180,233\" : \"40,255,255\"\n };\n return colors;\n};\nconst DynamicUIPerf = ({ showGraph, colorBlind }) => {\n const overclockingFps = usePerf((s) => s.overclockingFps);\n const fpsLimit = usePerf((s) => s.fpsLimit);\n return /* @__PURE__ */ jsxs(\n PerfB,\n {\n style: showGraph ? {\n color: overclockingFps ? colorsGraph(colorBlind).overClock.toString() : `rgb(${colorsGraph(colorBlind).fps})`\n } : {},\n children: [\n \"FPS \",\n overclockingFps ? `${fpsLimit}🚀` : \"\"\n ]\n }\n );\n};\nconst DynamicUI = ({ showGraph, colorBlind, customData, minimal }) => {\n const gl = usePerf((state) => state.gl);\n return gl ? /* @__PURE__ */ jsxs(PerfIContainer, { children: [\n /* @__PURE__ */ jsxs(PerfI, { children: [\n /* @__PURE__ */ jsx(LightningBoltIcon, {}),\n /* @__PURE__ */ jsx(\n PerfB,\n {\n style: showGraph ? {\n color: `rgb(${colorsGraph(colorBlind).gpu.toString()})`\n } : {},\n children: \"GPU\"\n }\n ),\n /* @__PURE__ */ jsx(PerfSmallI, { children: \"ms\" })\n ] }),\n /* @__PURE__ */ jsxs(PerfI, { children: [\n /* @__PURE__ */ jsx(RulerHorizontalIcon, {}),\n /* @__PURE__ */ jsx(\n PerfB,\n {\n style: showGraph ? {\n color: `rgb(${colorsGraph(colorBlind).cpu.toString()})`\n } : {},\n children: \"CPU\"\n }\n ),\n /* @__PURE__ */ jsx(PerfSmallI, { children: \"ms\" })\n ] }),\n /* @__PURE__ */ jsxs(PerfI, { children: [\n /* @__PURE__ */ jsx(LapTimerIcon, {}),\n /* @__PURE__ */ jsx(DynamicUIPerf, { showGraph, colorBlind })\n ] }),\n !minimal && gl && /* @__PURE__ */ jsxs(PerfI, { children: [\n /* @__PURE__ */ jsx(TextAlignJustifyIcon, {}),\n /* @__PURE__ */ jsx(PerfB, { children: gl.info.render.calls === 1 ? \"call\" : \"calls\" })\n ] }),\n !minimal && gl && /* @__PURE__ */ jsxs(PerfI, { children: [\n /* @__PURE__ */ jsx(VercelLogoIcon, {}),\n /* @__PURE__ */ jsx(PerfB, { children: \"Triangles\" })\n ] }),\n customData && /* @__PURE__ */ jsxs(PerfI, { children: [\n /* @__PURE__ */ jsx(BarChartIcon, {}),\n /* @__PURE__ */ jsx(PerfB, { style: showGraph ? { color: `rgb(${colorsGraph(colorBlind).custom})` } : {}, children: customData.name }),\n customData.info && /* @__PURE__ */ jsx(PerfSmallI, { children: customData.info })\n ] })\n ] }) : null;\n};\nconst PerfUI = ({\n showGraph,\n colorBlind,\n deepAnalyze,\n customData,\n matrixUpdate,\n openByDefault,\n minimal\n}) => {\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(DynamicUI, { showGraph, colorBlind, customData, minimal }),\n !minimal && /* @__PURE__ */ jsx(\n PerfThree,\n {\n matrixUpdate,\n openByDefault,\n deepAnalyze,\n showGraph\n }\n )\n ] });\n};\nconst InfoUI = ({ matrixUpdate }) => {\n return /* @__PURE__ */ jsxs(\"div\", { children: [\n /* @__PURE__ */ jsxs(PerfI, { children: [\n /* @__PURE__ */ jsx(MarginIcon, {}),\n /* @__PURE__ */ jsx(PerfB, { children: \"Geometries\" })\n ] }),\n /* @__PURE__ */ jsxs(PerfI, { children: [\n /* @__PURE__ */ jsx(ImageIcon, {}),\n /* @__PURE__ */ jsx(PerfB, { children: \"Textures\" })\n ] }),\n /* @__PURE__ */ jsxs(PerfI, { children: [\n /* @__PURE__ */ jsx(ActivityLogIcon, {}),\n /* @__PURE__ */ jsx(PerfB, { children: \"shaders\" })\n ] }),\n /* @__PURE__ */ jsxs(PerfI, { children: [\n /* @__PURE__ */ jsx(MinusIcon, {}),\n /* @__PURE__ */ jsx(PerfB, { children: \"Lines\" })\n ] }),\n /* @__PURE__ */ jsxs(PerfI, { children: [\n /* @__PURE__ */ jsx(DotIcon, {}),\n /* @__PURE__ */ jsx(PerfB, { children: \"Points\" })\n ] }),\n matrixUpdate && /* @__PURE__ */ jsxs(PerfI, { children: [\n /* @__PURE__ */ jsx(DropdownMenuIcon, {}),\n /* @__PURE__ */ jsx(PerfB, { children: \"Matrices\" })\n ] })\n ] });\n};\nconst ToggleEl = ({ tab, title, set }) => {\n const tabStore = usePerf((s) => s.tab);\n return /* @__PURE__ */ jsx(\n Toggle,\n {\n className: `${tabStore === tab ? \" __perf_toggle_tab_active\" : \"\"}`,\n onClick: () => {\n set(true);\n setPerf({ tab });\n },\n children: /* @__PURE__ */ jsx(\"span\", { children: title })\n }\n );\n};\nconst PerfThree = ({ openByDefault, showGraph, deepAnalyze, matrixUpdate }) => {\n const [show, set] = React.useState(openByDefault);\n return /* @__PURE__ */ jsxs(\"span\", { children: [\n /* @__PURE__ */ jsx(TabContainers, { show, showGraph, matrixUpdate }),\n openByDefault && !deepAnalyze ? null : /* @__PURE__ */ jsxs(ToggleContainer, { className: \"__perf_toggle\", children: [\n deepAnalyze && /* @__PURE__ */ jsx(ToggleEl, { tab: \"programs\", title: \"Programs\", set }),\n deepAnalyze && /* @__PURE__ */ jsx(ToggleEl, { tab: \"infos\", title: \"Infos\", set }),\n /* @__PURE__ */ jsx(\n Toggle,\n {\n onClick: () => {\n set(!show);\n },\n children: show ? /* @__PURE__ */ jsxs(\"span\", { children: [\n /* @__PURE__ */ jsx(TriangleDownIcon, {}),\n \" Minimize\"\n ] }) : /* @__PURE__ */ jsxs(\"span\", { children: [\n /* @__PURE__ */ jsx(TriangleUpIcon, {}),\n \" More\"\n ] })\n }\n )\n ] })\n ] });\n};\nconst TabContainers = ({ show, showGraph, matrixUpdate }) => {\n const tab = usePerf((state) => state.tab);\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(InfoUI, { matrixUpdate }),\n show && /* @__PURE__ */ jsx(\"div\", { children: /* @__PURE__ */ jsx(ContainerScroll, { style: { marginTop: showGraph ? \"38px\" : 0 }, children: tab === \"programs\" && /* @__PURE__ */ jsx(ProgramsUI, {}) }) })\n ] });\n};\nconst Perf = ({\n showGraph = true,\n colorBlind = false,\n openByDefault = true,\n className,\n overClock = false,\n style,\n position = \"top-right\",\n chart,\n logsPerSecond,\n deepAnalyze = false,\n antialias = true,\n customData,\n matrixUpdate,\n minimal\n}) => {\n const perfContainerRef = useRef(null);\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n PerfHeadless,\n {\n logsPerSecond,\n chart,\n overClock,\n deepAnalyze,\n matrixUpdate\n }\n ),\n /* @__PURE__ */ jsx(HtmlMinimal, { name: \"r3f-perf\", children: /* @__PURE__ */ jsxs(\n PerfS,\n {\n className: (className ? \" \".concat(className) : \" \") + ` ${position ? position : \"\"} ${minimal ? \"minimal\" : \"\"}`,\n style: { minHeight: minimal ? \"37px\" : showGraph ? \"100px\" : \"60px\", ...style },\n ref: perfContainerRef,\n children: [\n /* @__PURE__ */ jsx(\n ChartUI,\n {\n perfContainerRef,\n colorBlind,\n chart,\n showGraph,\n antialias,\n customData,\n minimal,\n matrixUpdate\n }\n ),\n /* @__PURE__ */ jsx(\n PerfUI,\n {\n colorBlind,\n showGraph,\n deepAnalyze,\n openByDefault,\n customData,\n matrixUpdate,\n minimal\n }\n )\n ]\n }\n ) })\n ] });\n};\nexport {\n Perf,\n colorsGraph\n};\n//# sourceMappingURL=Perf.mjs.map\n","/**\n * postprocessing v6.33.1 build Tue Sep 19 2023\n * https://github.com/pmndrs/postprocessing\n * Copyright 2015-2023 Raoul van Rüschen\n * @license Zlib\n */\n\n// package.json\nvar version = \"6.33.1\";\n\n// src/core/Disposable.js\nvar Disposable = class {\n /**\n * Frees internal resources.\n */\n dispose() {\n }\n};\n\n// src/core/EffectComposer.js\nimport {\n DepthStencilFormat,\n DepthTexture,\n LinearFilter as LinearFilter2,\n UnsignedByteType as UnsignedByteType11,\n UnsignedIntType,\n UnsignedInt248Type,\n Vector2 as Vector216,\n WebGLRenderTarget as WebGLRenderTarget13\n} from \"three\";\n\n// src/passes/AdaptiveLuminancePass.js\nimport { NearestFilter, WebGLRenderTarget as WebGLRenderTarget3 } from \"three\";\n\n// src/materials/AdaptiveLuminanceMaterial.js\nimport { NoBlending, ShaderMaterial, Uniform } from \"three\";\n\n// src/materials/glsl/adaptive-luminance.frag\nvar adaptive_luminance_default = \"#include \\n#define packFloatToRGBA(v) packDepthToRGBA(v)\\n#define unpackRGBAToFloat(v) unpackRGBAToDepth(v)\\nuniform lowp sampler2D luminanceBuffer0;uniform lowp sampler2D luminanceBuffer1;uniform float minLuminance;uniform float deltaTime;uniform float tau;varying vec2 vUv;void main(){float l0=unpackRGBAToFloat(texture2D(luminanceBuffer0,vUv));\\n#if __VERSION__ < 300\\nfloat l1=texture2DLodEXT(luminanceBuffer1,vUv,MIP_LEVEL_1X1).r;\\n#else\\nfloat l1=textureLod(luminanceBuffer1,vUv,MIP_LEVEL_1X1).r;\\n#endif\\nl0=max(minLuminance,l0);l1=max(minLuminance,l1);float adaptedLum=l0+(l1-l0)*(1.0-exp(-deltaTime*tau));gl_FragColor=(adaptedLum==1.0)?vec4(1.0):packFloatToRGBA(adaptedLum);}\";\n\n// src/materials/glsl/common.vert\nvar common_default = \"varying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}\";\n\n// src/materials/AdaptiveLuminanceMaterial.js\nvar AdaptiveLuminanceMaterial = class extends ShaderMaterial {\n /**\n * Constructs a new adaptive luminance material.\n */\n constructor() {\n super({\n name: \"AdaptiveLuminanceMaterial\",\n defines: {\n MIP_LEVEL_1X1: \"0.0\"\n },\n uniforms: {\n luminanceBuffer0: new Uniform(null),\n luminanceBuffer1: new Uniform(null),\n minLuminance: new Uniform(0.01),\n deltaTime: new Uniform(0),\n tau: new Uniform(1)\n },\n extensions: {\n shaderTextureLOD: true\n },\n blending: NoBlending,\n toneMapped: false,\n depthWrite: false,\n depthTest: false,\n fragmentShader: adaptive_luminance_default,\n vertexShader: common_default\n });\n }\n /**\n * The primary luminance buffer that contains the downsampled average luminance.\n *\n * @type {Texture}\n */\n set luminanceBuffer0(value) {\n this.uniforms.luminanceBuffer0.value = value;\n }\n /**\n * Sets the primary luminance buffer that contains the downsampled average luminance.\n *\n * @deprecated Use luminanceBuffer0 instead.\n * @param {Texture} value - The buffer.\n */\n setLuminanceBuffer0(value) {\n this.uniforms.luminanceBuffer0.value = value;\n }\n /**\n * The secondary luminance buffer.\n *\n * @type {Texture}\n */\n set luminanceBuffer1(value) {\n this.uniforms.luminanceBuffer1.value = value;\n }\n /**\n * Sets the secondary luminance buffer.\n *\n * @deprecated Use luminanceBuffer1 instead.\n * @param {Texture} value - The buffer.\n */\n setLuminanceBuffer1(value) {\n this.uniforms.luminanceBuffer1.value = value;\n }\n /**\n * The 1x1 mipmap level.\n *\n * This level is used to identify the smallest mipmap of the primary luminance buffer.\n *\n * @type {Number}\n */\n set mipLevel1x1(value) {\n this.defines.MIP_LEVEL_1X1 = value.toFixed(1);\n this.needsUpdate = true;\n }\n /**\n * Sets the 1x1 mipmap level.\n *\n * @deprecated Use mipLevel1x1 instead.\n * @param {Number} value - The level.\n */\n setMipLevel1x1(value) {\n this.mipLevel1x1 = value;\n }\n /**\n * The delta time.\n *\n * @type {Number}\n */\n set deltaTime(value) {\n this.uniforms.deltaTime.value = value;\n }\n /**\n * Sets the delta time.\n *\n * @deprecated Use deltaTime instead.\n * @param {Number} value - The delta time.\n */\n setDeltaTime(value) {\n this.uniforms.deltaTime.value = value;\n }\n /**\n * The lowest possible luminance value.\n *\n * @type {Number}\n */\n get minLuminance() {\n return this.uniforms.minLuminance.value;\n }\n set minLuminance(value) {\n this.uniforms.minLuminance.value = value;\n }\n /**\n * Returns the lowest possible luminance value.\n *\n * @deprecated Use minLuminance instead.\n * @return {Number} The minimum luminance.\n */\n getMinLuminance() {\n return this.uniforms.minLuminance.value;\n }\n /**\n * Sets the minimum luminance.\n *\n * @deprecated Use minLuminance instead.\n * @param {Number} value - The minimum luminance.\n */\n setMinLuminance(value) {\n this.uniforms.minLuminance.value = value;\n }\n /**\n * The luminance adaptation rate.\n *\n * @type {Number}\n */\n get adaptationRate() {\n return this.uniforms.tau.value;\n }\n set adaptationRate(value) {\n this.uniforms.tau.value = value;\n }\n /**\n * Returns the luminance adaptation rate.\n *\n * @deprecated Use adaptationRate instead.\n * @return {Number} The adaptation rate.\n */\n getAdaptationRate() {\n return this.uniforms.tau.value;\n }\n /**\n * Sets the luminance adaptation rate.\n *\n * @deprecated Use adaptationRate instead.\n * @param {Number} value - The adaptation rate.\n */\n setAdaptationRate(value) {\n this.uniforms.tau.value = value;\n }\n};\n\n// src/materials/BokehMaterial.js\nimport { NoBlending as NoBlending2, ShaderMaterial as ShaderMaterial2, Uniform as Uniform2, Vector2 } from \"three\";\n\n// src/materials/glsl/convolution.bokeh.frag\nvar convolution_bokeh_default = \"#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D inputBuffer;\\n#else\\nuniform lowp sampler2D inputBuffer;\\n#endif\\n#if PASS == 1\\nuniform vec4 kernel64[32];\\n#else\\nuniform vec4 kernel16[8];\\n#endif\\nuniform lowp sampler2D cocBuffer;uniform vec2 texelSize;uniform float scale;varying vec2 vUv;void main(){\\n#ifdef FOREGROUND\\nvec2 cocNearFar=texture2D(cocBuffer,vUv).rg*scale;float coc=cocNearFar.x;\\n#else\\nfloat coc=texture2D(cocBuffer,vUv).g*scale;\\n#endif\\nif(coc==0.0){gl_FragColor=texture2D(inputBuffer,vUv);}else{\\n#ifdef FOREGROUND\\nvec2 step=texelSize*max(cocNearFar.x,cocNearFar.y);\\n#else\\nvec2 step=texelSize*coc;\\n#endif\\n#if PASS == 1\\nvec4 acc=vec4(0.0);for(int i=0;i<32;++i){vec4 kernel=kernel64[i];vec2 uv=step*kernel.xy+vUv;acc+=texture2D(inputBuffer,uv);uv=step*kernel.zw+vUv;acc+=texture2D(inputBuffer,uv);}gl_FragColor=acc/64.0;\\n#else\\nvec4 maxValue=texture2D(inputBuffer,vUv);for(int i=0;i<8;++i){vec4 kernel=kernel16[i];vec2 uv=step*kernel.xy+vUv;maxValue=max(texture2D(inputBuffer,uv),maxValue);uv=step*kernel.zw+vUv;maxValue=max(texture2D(inputBuffer,uv),maxValue);}gl_FragColor=maxValue;\\n#endif\\n}}\";\n\n// src/materials/BokehMaterial.js\nvar BokehMaterial = class extends ShaderMaterial2 {\n /**\n * Constructs a new bokeh material.\n *\n * @param {Boolean} [fill=false] - Enables or disables the bokeh highlight fill mode.\n * @param {Boolean} [foreground=false] - Determines whether this material will be applied to foreground colors.\n */\n constructor(fill = false, foreground = false) {\n super({\n name: \"BokehMaterial\",\n defines: {\n PASS: fill ? \"2\" : \"1\"\n },\n uniforms: {\n inputBuffer: new Uniform2(null),\n cocBuffer: new Uniform2(null),\n texelSize: new Uniform2(new Vector2()),\n kernel64: new Uniform2(null),\n kernel16: new Uniform2(null),\n scale: new Uniform2(1)\n },\n blending: NoBlending2,\n toneMapped: false,\n depthWrite: false,\n depthTest: false,\n fragmentShader: convolution_bokeh_default,\n vertexShader: common_default\n });\n if (foreground) {\n this.defines.FOREGROUND = \"1\";\n }\n this.generateKernel();\n }\n /**\n * The input buffer.\n *\n * @type {Texture}\n */\n set inputBuffer(value) {\n this.uniforms.inputBuffer.value = value;\n }\n /**\n * Sets the input buffer.\n *\n * @deprecated Use inputBuffer instead.\n * @param {Texture} value - The buffer.\n */\n setInputBuffer(value) {\n this.uniforms.inputBuffer.value = value;\n }\n /**\n * The circle of confusion buffer.\n *\n * @type {Texture}\n */\n set cocBuffer(value) {\n this.uniforms.cocBuffer.value = value;\n }\n /**\n * Sets the circle of confusion buffer.\n *\n * @deprecated Use cocBuffer instead.\n * @param {Texture} value - The buffer.\n */\n setCoCBuffer(value) {\n this.uniforms.cocBuffer.value = value;\n }\n /**\n * The blur scale.\n *\n * @type {Number}\n */\n get scale() {\n return this.uniforms.scale.value;\n }\n set scale(value) {\n this.uniforms.scale.value = value;\n }\n /**\n * Returns the blur scale.\n *\n * @deprecated Use scale instead.\n * @return {Number} The scale.\n */\n getScale(value) {\n return this.scale;\n }\n /**\n * Sets the blur scale.\n *\n * @deprecated Use scale instead.\n * @param {Number} value - The scale.\n */\n setScale(value) {\n this.scale = value;\n }\n /**\n * Generates the blur kernel.\n *\n * @private\n */\n generateKernel() {\n const GOLDEN_ANGLE = 2.39996323;\n const points64 = new Float64Array(128);\n const points16 = new Float64Array(32);\n let i64 = 0, i16 = 0;\n for (let i = 0, sqrt80 = Math.sqrt(80); i < 80; ++i) {\n const theta = i * GOLDEN_ANGLE;\n const r = Math.sqrt(i) / sqrt80;\n const u = r * Math.cos(theta), v3 = r * Math.sin(theta);\n if (i % 5 === 0) {\n points16[i16++] = u;\n points16[i16++] = v3;\n } else {\n points64[i64++] = u;\n points64[i64++] = v3;\n }\n }\n this.uniforms.kernel64.value = points64;\n this.uniforms.kernel16.value = points16;\n }\n /**\n * Sets the texel size.\n *\n * @deprecated Use setSize() instead.\n * @param {Number} x - The texel width.\n * @param {Number} y - The texel height.\n */\n setTexelSize(x, y) {\n this.uniforms.texelSize.value.set(x, y);\n }\n /**\n * Sets the size of this object.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n this.uniforms.texelSize.value.set(1 / width, 1 / height);\n }\n};\n\n// src/materials/BoxBlurMaterial.js\nimport { NoBlending as NoBlending3, PerspectiveCamera, ShaderMaterial as ShaderMaterial3, Uniform as Uniform3, Vector2 as Vector22 } from \"three\";\n\n// src/utils/BackCompat.js\nimport { LinearEncoding, REVISION, sRGBEncoding } from \"three\";\n\n// src/enums/BlendFunction.js\nvar BlendFunction = {\n SKIP: 9,\n SET: 30,\n ADD: 0,\n ALPHA: 1,\n AVERAGE: 2,\n COLOR: 3,\n COLOR_BURN: 4,\n COLOR_DODGE: 5,\n DARKEN: 6,\n DIFFERENCE: 7,\n DIVIDE: 8,\n DST: 9,\n EXCLUSION: 10,\n HARD_LIGHT: 11,\n HARD_MIX: 12,\n HUE: 13,\n INVERT: 14,\n INVERT_RGB: 15,\n LIGHTEN: 16,\n LINEAR_BURN: 17,\n LINEAR_DODGE: 18,\n LINEAR_LIGHT: 19,\n LUMINOSITY: 20,\n MULTIPLY: 21,\n NEGATION: 22,\n NORMAL: 23,\n OVERLAY: 24,\n PIN_LIGHT: 25,\n REFLECT: 26,\n SATURATION: 27,\n SCREEN: 28,\n SOFT_LIGHT: 29,\n SRC: 30,\n SUBTRACT: 31,\n VIVID_LIGHT: 32\n};\n\n// src/enums/ColorChannel.js\nvar ColorChannel = {\n RED: 0,\n GREEN: 1,\n BLUE: 2,\n ALPHA: 3\n};\n\n// src/enums/ColorSpace.js\nvar NoColorSpace = \"\";\nvar SRGBColorSpace = \"srgb\";\nvar LinearSRGBColorSpace = \"srgb-linear\";\nvar DisplayP3ColorSpace = \"display-p3\";\n\n// src/enums/DepthCopyMode.js\nvar DepthCopyMode = {\n FULL: 0,\n SINGLE: 1\n};\n\n// src/enums/DepthTestStrategy.js\nvar DepthTestStrategy = {\n DEFAULT: 0,\n KEEP_MAX_DEPTH: 1,\n DISCARD_MAX_DEPTH: 2\n};\n\n// src/enums/EdgeDetectionMode.js\nvar EdgeDetectionMode = {\n DEPTH: 0,\n LUMA: 1,\n COLOR: 2\n};\n\n// src/enums/EffectAttribute.js\nvar EffectAttribute = {\n NONE: 0,\n DEPTH: 1,\n CONVOLUTION: 2\n};\n\n// src/enums/EffectShaderSection.js\nvar EffectShaderSection = {\n FRAGMENT_HEAD: \"FRAGMENT_HEAD\",\n FRAGMENT_MAIN_UV: \"FRAGMENT_MAIN_UV\",\n FRAGMENT_MAIN_IMAGE: \"FRAGMENT_MAIN_IMAGE\",\n VERTEX_HEAD: \"VERTEX_HEAD\",\n VERTEX_MAIN_SUPPORT: \"VERTEX_MAIN_SUPPORT\"\n};\n\n// src/enums/GlitchMode.js\nvar GlitchMode = {\n DISABLED: 0,\n SPORADIC: 1,\n CONSTANT_MILD: 2,\n CONSTANT_WILD: 3\n};\n\n// src/enums/KernelSize.js\nvar KernelSize = {\n VERY_SMALL: 0,\n SMALL: 1,\n MEDIUM: 2,\n LARGE: 3,\n VERY_LARGE: 4,\n HUGE: 5\n};\n\n// src/enums/LUTOperation.js\nvar LUTOperation = {\n SCALE_UP: \"lut.scaleup\"\n};\n\n// src/enums/MaskFunction.js\nvar MaskFunction = {\n DISCARD: 0,\n MULTIPLY: 1,\n MULTIPLY_RGB_SET_ALPHA: 2,\n MULTIPLY_RGB: 3\n};\n\n// src/enums/PredicationMode.js\nvar PredicationMode = {\n DISABLED: 0,\n DEPTH: 1,\n CUSTOM: 2\n};\n\n// src/enums/SMAAPreset.js\nvar SMAAPreset = {\n LOW: 0,\n MEDIUM: 1,\n HIGH: 2,\n ULTRA: 3\n};\n\n// src/enums/ToneMappingMode.js\nvar ToneMappingMode = {\n REINHARD: 0,\n REINHARD2: 1,\n REINHARD2_ADAPTIVE: 2,\n OPTIMIZED_CINEON: 3,\n ACES_FILMIC: 4,\n UNCHARTED2: 5\n};\n\n// src/enums/VignetteTechnique.js\nvar VignetteTechnique = {\n DEFAULT: 0,\n ESKIL: 1\n};\n\n// src/enums/WebGLExtension.js\nvar WebGLExtension = {\n DERIVATIVES: \"derivatives\",\n FRAG_DEPTH: \"fragDepth\",\n DRAW_BUFFERS: \"drawBuffers\",\n SHADER_TEXTURE_LOD: \"shaderTextureLOD\"\n};\n\n// src/utils/BackCompat.js\nvar revision = Number(REVISION.replace(/\\D+/g, \"\"));\nvar useColorSpace = revision >= 152;\nvar encodingToColorSpace = /* @__PURE__ */ new Map([\n [LinearEncoding, LinearSRGBColorSpace],\n [sRGBEncoding, SRGBColorSpace]\n]);\nvar colorSpaceToEncoding = /* @__PURE__ */ new Map([\n [LinearSRGBColorSpace, LinearEncoding],\n [SRGBColorSpace, sRGBEncoding]\n]);\nfunction getOutputColorSpace(renderer) {\n return renderer === null ? null : useColorSpace ? renderer.outputColorSpace : encodingToColorSpace.get(renderer.outputEncoding);\n}\nfunction setTextureColorSpace(texture, colorSpace) {\n if (texture === null) {\n return;\n }\n if (useColorSpace) {\n texture.colorSpace = colorSpace;\n } else {\n texture.encoding = colorSpaceToEncoding.get(colorSpace);\n }\n}\nfunction copyTextureColorSpace(src, dest) {\n if (src === null || dest === null) {\n return;\n }\n if (useColorSpace) {\n dest.colorSpace = src.colorSpace;\n } else {\n dest.encoding = src.encoding;\n }\n}\nfunction updateFragmentShader(fragmentShader) {\n if (revision < 154) {\n return fragmentShader.replace(\"colorspace_fragment\", \"encodings_fragment\");\n }\n return fragmentShader;\n}\n\n// src/utils/orthographicDepthToViewZ.js\nfunction orthographicDepthToViewZ(depth, near, far) {\n return depth * (near - far) - near;\n}\n\n// src/utils/viewZToOrthographicDepth.js\nfunction viewZToOrthographicDepth(viewZ, near, far) {\n return Math.min(Math.max((viewZ + near) / (near - far), 0), 1);\n}\n\n// src/materials/glsl/convolution.box.frag\nvar convolution_box_default = \"#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D inputBuffer;\\n#else\\nuniform lowp sampler2D inputBuffer;\\n#endif\\n#ifdef BILATERAL\\n#include \\nuniform vec2 cameraNearFar;\\n#ifdef NORMAL_DEPTH\\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nuniform highp sampler2D normalDepthBuffer;\\n#else\\nuniform mediump sampler2D normalDepthBuffer;\\n#endif\\nfloat readDepth(const in vec2 uv){return texture2D(normalDepthBuffer,uv).a;}\\n#else\\n#if DEPTH_PACKING == 3201\\nuniform lowp sampler2D depthBuffer;\\n#elif defined(GL_FRAGMENT_PRECISION_HIGH)\\nuniform highp sampler2D depthBuffer;\\n#else\\nuniform mediump sampler2D depthBuffer;\\n#endif\\nfloat readDepth(const in vec2 uv){\\n#if DEPTH_PACKING == 3201\\nreturn unpackRGBAToDepth(texture2D(depthBuffer,uv));\\n#else\\nreturn texture2D(depthBuffer,uv).r;\\n#endif\\n}\\n#endif\\nfloat getViewZ(const in float depth){\\n#ifdef PERSPECTIVE_CAMERA\\nreturn perspectiveDepthToViewZ(depth,cameraNearFar.x,cameraNearFar.y);\\n#else\\nreturn orthographicDepthToViewZ(depth,cameraNearFar.x,cameraNearFar.y);\\n#endif\\n}\\n#ifdef PERSPECTIVE_CAMERA\\n#define linearDepth(v) viewZToOrthographicDepth(getViewZ(readDepth(v)), cameraNearFar.x, cameraNearFar.y)\\n#else\\n#define linearDepth(v) readDepth(v)\\n#endif\\n#endif\\n#define getTexel(v) texture2D(inputBuffer, v)\\n#if KERNEL_SIZE == 3\\nvarying vec2 vUv00,vUv01,vUv02;varying vec2 vUv03,vUv04,vUv05;varying vec2 vUv06,vUv07,vUv08;\\n#elif KERNEL_SIZE == 5 && MAX_VARYING_VECTORS >= 13\\nvarying vec2 vUv00,vUv01,vUv02,vUv03,vUv04;varying vec2 vUv05,vUv06,vUv07,vUv08,vUv09;varying vec2 vUv10,vUv11,vUv12,vUv13,vUv14;varying vec2 vUv15,vUv16,vUv17,vUv18,vUv19;varying vec2 vUv20,vUv21,vUv22,vUv23,vUv24;\\n#else\\nuniform vec2 texelSize;uniform float scale;varying vec2 vUv;\\n#endif\\nvoid main(){\\n#if KERNEL_SIZE == 3\\nvec4 c[]=vec4[KERNEL_SIZE_SQ](getTexel(vUv00),getTexel(vUv01),getTexel(vUv02),getTexel(vUv03),getTexel(vUv04),getTexel(vUv05),getTexel(vUv06),getTexel(vUv07),getTexel(vUv08));\\n#ifdef BILATERAL\\nfloat z[]=float[KERNEL_SIZE_SQ](linearDepth(vUv00),linearDepth(vUv01),linearDepth(vUv02),linearDepth(vUv03),linearDepth(vUv04),linearDepth(vUv05),linearDepth(vUv06),linearDepth(vUv07),linearDepth(vUv08));\\n#endif\\n#elif KERNEL_SIZE == 5 && MAX_VARYING_VECTORS >= 13\\nvec4 c[]=vec4[KERNEL_SIZE_SQ](getTexel(vUv00),getTexel(vUv01),getTexel(vUv02),getTexel(vUv03),getTexel(vUv04),getTexel(vUv05),getTexel(vUv06),getTexel(vUv07),getTexel(vUv08),getTexel(vUv09),getTexel(vUv10),getTexel(vUv11),getTexel(vUv12),getTexel(vUv13),getTexel(vUv14),getTexel(vUv15),getTexel(vUv16),getTexel(vUv17),getTexel(vUv18),getTexel(vUv19),getTexel(vUv20),getTexel(vUv21),getTexel(vUv22),getTexel(vUv23),getTexel(vUv24));\\n#ifdef BILATERAL\\nfloat z[]=float[KERNEL_SIZE_SQ](linearDepth(vUv00),linearDepth(vUv01),linearDepth(vUv02),linearDepth(vUv03),linearDepth(vUv04),linearDepth(vUv05),linearDepth(vUv06),linearDepth(vUv07),linearDepth(vUv08),linearDepth(vUv09),linearDepth(vUv10),linearDepth(vUv11),linearDepth(vUv12),linearDepth(vUv13),linearDepth(vUv14),linearDepth(vUv15),linearDepth(vUv16),linearDepth(vUv17),linearDepth(vUv18),linearDepth(vUv19),linearDepth(vUv20),linearDepth(vUv21),linearDepth(vUv22),linearDepth(vUv23),linearDepth(vUv24));\\n#endif\\n#endif\\nvec4 result=vec4(0.0);\\n#ifdef BILATERAL\\nfloat w=0.0;\\n#if KERNEL_SIZE == 3 || (KERNEL_SIZE == 5 && MAX_VARYING_VECTORS >= 13)\\nfloat centerDepth=z[KERNEL_SIZE_SQ_HALF];for(int i=0;i= 13)\\nfor(int i=0;i= 13\\nvarying vec2 vUv00,vUv01,vUv02,vUv03,vUv04;varying vec2 vUv05,vUv06,vUv07,vUv08,vUv09;varying vec2 vUv10,vUv11,vUv12,vUv13,vUv14;varying vec2 vUv15,vUv16,vUv17,vUv18,vUv19;varying vec2 vUv20,vUv21,vUv22,vUv23,vUv24;\\n#else\\nvarying vec2 vUv;\\n#endif\\nvoid main(){vec2 uv=position.xy*0.5+0.5;\\n#if KERNEL_SIZE == 3\\nvec2 s=texelSize*scale;vUv00=uv+s*vec2(-1.0,-1.0);vUv01=uv+s*vec2(0.0,-1.0);vUv02=uv+s*vec2(1.0,-1.0);vUv03=uv+s*vec2(-1.0,0.0);vUv04=uv;vUv05=uv+s*vec2(1.0,0.0);vUv06=uv+s*vec2(-1.0,1.0);vUv07=uv+s*vec2(0.0,1.0);vUv08=uv+s*vec2(1.0,1.0);\\n#elif KERNEL_SIZE == 5\\nvec2 s=texelSize*scale;vUv00=uv+s*vec2(-2.0,-2.0);vUv01=uv+s*vec2(-1.0,-2.0);vUv02=uv+s*vec2(0.0,-2.0);vUv03=uv+s*vec2(1.0,-2.0);vUv04=uv+s*vec2(2.0,-2.0);vUv05=uv+s*vec2(-2.0,-1.0);vUv06=uv+s*vec2(-1.0,-1.0);vUv07=uv+s*vec2(0.0,-1.0);vUv08=uv+s*vec2(1.0,-1.0);vUv09=uv+s*vec2(2.0,-1.0);vUv10=uv+s*vec2(-2.0,0.0);vUv11=uv+s*vec2(-1.0,0.0);vUv12=uv;vUv13=uv+s*vec2(1.0,0.0);vUv14=uv+s*vec2(2.0,0.0);vUv15=uv+s*vec2(-2.0,1.0);vUv16=uv+s*vec2(-1.0,1.0);vUv17=uv+s*vec2(0.0,1.0);vUv18=uv+s*vec2(1.0,1.0);vUv19=uv+s*vec2(2.0,1.0);vUv20=uv+s*vec2(-2.0,2.0);vUv21=uv+s*vec2(-1.0,2.0);vUv22=uv+s*vec2(0.0,2.0);vUv23=uv+s*vec2(1.0,2.0);vUv24=uv+s*vec2(2.0,2.0);\\n#else\\nvUv=uv;\\n#endif\\ngl_Position=vec4(position.xy,1.0,1.0);}\";\n\n// src/materials/BoxBlurMaterial.js\nvar BoxBlurMaterial = class extends ShaderMaterial3 {\n /**\n * Constructs a new box blur material.\n *\n * @param {Object} [options] - The options.\n * @param {Number} [options.bilateral=false] - Enables or disables bilateral blurring.\n * @param {Number} [options.kernelSize=5] - The kernel size.\n */\n constructor({ bilateral = false, kernelSize = 5 } = {}) {\n super({\n name: \"BoxBlurMaterial\",\n defines: {\n DEPTH_PACKING: \"0\",\n DISTANCE_THRESHOLD: \"0.1\"\n },\n uniforms: {\n inputBuffer: new Uniform3(null),\n depthBuffer: new Uniform3(null),\n normalDepthBuffer: new Uniform3(null),\n texelSize: new Uniform3(new Vector22()),\n cameraNearFar: new Uniform3(new Vector22()),\n scale: new Uniform3(1)\n },\n blending: NoBlending3,\n toneMapped: false,\n depthWrite: false,\n depthTest: false,\n fragmentShader: convolution_box_default,\n vertexShader: convolution_box_default2\n });\n this.bilateral = bilateral;\n this.kernelSize = kernelSize;\n this.maxVaryingVectors = 8;\n }\n /**\n * The maximum amount of varying vectors.\n *\n * Should be synced with `renderer.capabilities.maxVaryings`. Default is 8.\n *\n * @type {Number}\n */\n set maxVaryingVectors(value) {\n this.defines.MAX_VARYING_VECTORS = value.toFixed(0);\n }\n /**\n * The kernel size.\n *\n * - Must be an odd number\n * - Kernel size 3 and 5 use optimized code paths\n * - Default is 5\n *\n * @type {Number}\n */\n get kernelSize() {\n return Number(this.defines.KERNEL_SIZE);\n }\n set kernelSize(value) {\n if (value % 2 === 0) {\n throw new Error(\"The kernel size must be an odd number\");\n }\n this.defines.KERNEL_SIZE = value.toFixed(0);\n this.defines.KERNEL_SIZE_HALF = Math.floor(value / 2).toFixed(0);\n this.defines.KERNEL_SIZE_SQ = (value ** 2).toFixed(0);\n this.defines.KERNEL_SIZE_SQ_HALF = Math.floor(value ** 2 / 2).toFixed(0);\n this.defines.INV_KERNEL_SIZE_SQ = (1 / value ** 2).toFixed(6);\n this.needsUpdate = true;\n }\n /**\n * The blur scale.\n *\n * @type {Number}\n */\n get scale() {\n return this.uniforms.scale.value;\n }\n set scale(value) {\n this.uniforms.scale.value = value;\n }\n /**\n * The current near plane setting.\n *\n * @type {Number}\n * @private\n */\n get near() {\n return this.uniforms.cameraNearFar.value.x;\n }\n /**\n * The current far plane setting.\n *\n * @type {Number}\n * @private\n */\n get far() {\n return this.uniforms.cameraNearFar.value.y;\n }\n /**\n * The input buffer.\n *\n * @type {Texture}\n */\n set inputBuffer(value) {\n this.uniforms.inputBuffer.value = value;\n }\n /**\n * The depth buffer.\n *\n * @type {Texture}\n */\n set depthBuffer(value) {\n this.uniforms.depthBuffer.value = value;\n }\n /**\n * A combined normal-depth buffer. Overrides {@link depthBuffer} if set.\n *\n * @type {Texture}\n */\n set normalDepthBuffer(value) {\n this.uniforms.normalDepthBuffer.value = value;\n if (value !== null) {\n this.defines.NORMAL_DEPTH = \"1\";\n } else {\n delete this.defines.NORMAL_DEPTH;\n }\n this.needsUpdate = true;\n }\n /**\n * The depth packing strategy.\n *\n * @type {DepthPackingStrategies}\n */\n set depthPacking(value) {\n this.defines.DEPTH_PACKING = value.toFixed(0);\n this.needsUpdate = true;\n }\n /**\n * Indicates whether bilateral filtering is enabled.\n *\n * @type {Boolean}\n */\n get bilateral() {\n return this.defines.BILATERAL !== void 0;\n }\n set bilateral(value) {\n if (value !== null) {\n this.defines.BILATERAL = \"1\";\n } else {\n delete this.defines.BILATERAL;\n }\n this.needsUpdate = true;\n }\n /**\n * The bilateral filter distance threshold in world units.\n *\n * @type {Number}\n */\n get worldDistanceThreshold() {\n return -orthographicDepthToViewZ(Number(this.defines.DISTANCE_THRESHOLD), this.near, this.far);\n }\n set worldDistanceThreshold(value) {\n const threshold = viewZToOrthographicDepth(-value, this.near, this.far);\n this.defines.DISTANCE_THRESHOLD = threshold.toFixed(12);\n this.needsUpdate = true;\n }\n /**\n * Copies the settings of the given camera.\n *\n * @param {Camera} camera - A camera.\n */\n copyCameraSettings(camera) {\n if (camera) {\n this.uniforms.cameraNearFar.value.set(camera.near, camera.far);\n if (camera instanceof PerspectiveCamera) {\n this.defines.PERSPECTIVE_CAMERA = \"1\";\n } else {\n delete this.defines.PERSPECTIVE_CAMERA;\n }\n this.needsUpdate = true;\n }\n }\n /**\n * Sets the size of this object.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n this.uniforms.texelSize.value.set(1 / width, 1 / height);\n }\n};\n\n// src/materials/CircleOfConfusionMaterial.js\nimport { BasicDepthPacking, NoBlending as NoBlending4, PerspectiveCamera as PerspectiveCamera2, ShaderMaterial as ShaderMaterial4, Uniform as Uniform4 } from \"three\";\n\n// src/materials/glsl/circle-of-confusion.frag\nvar circle_of_confusion_default = \"#include \\n#include \\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nuniform highp sampler2D depthBuffer;\\n#else\\nuniform mediump sampler2D depthBuffer;\\n#endif\\nuniform float focusDistance;uniform float focusRange;uniform float cameraNear;uniform float cameraFar;varying vec2 vUv;float readDepth(const in vec2 uv){\\n#if DEPTH_PACKING == 3201\\nfloat depth=unpackRGBAToDepth(texture2D(depthBuffer,uv));\\n#else\\nfloat depth=texture2D(depthBuffer,uv).r;\\n#endif\\n#ifdef LOG_DEPTH\\nfloat d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d;\\n#endif\\nreturn depth;}void main(){float depth=readDepth(vUv);\\n#ifdef PERSPECTIVE_CAMERA\\nfloat viewZ=perspectiveDepthToViewZ(depth,cameraNear,cameraFar);float linearDepth=viewZToOrthographicDepth(viewZ,cameraNear,cameraFar);\\n#else\\nfloat linearDepth=depth;\\n#endif\\nfloat signedDistance=linearDepth-focusDistance;float magnitude=smoothstep(0.0,focusRange,abs(signedDistance));gl_FragColor.rg=magnitude*vec2(step(signedDistance,0.0),step(0.0,signedDistance));}\";\n\n// src/materials/CircleOfConfusionMaterial.js\nvar CircleOfConfusionMaterial = class extends ShaderMaterial4 {\n /**\n * Constructs a new CoC material.\n *\n * @param {Camera} camera - A camera.\n */\n constructor(camera) {\n super({\n name: \"CircleOfConfusionMaterial\",\n defines: {\n DEPTH_PACKING: \"0\"\n },\n uniforms: {\n depthBuffer: new Uniform4(null),\n focusDistance: new Uniform4(0),\n focusRange: new Uniform4(0),\n cameraNear: new Uniform4(0.3),\n cameraFar: new Uniform4(1e3)\n },\n blending: NoBlending4,\n toneMapped: false,\n depthWrite: false,\n depthTest: false,\n fragmentShader: circle_of_confusion_default,\n vertexShader: common_default\n });\n this.uniforms.focalLength = this.uniforms.focusRange;\n this.copyCameraSettings(camera);\n }\n /**\n * The current near plane setting.\n *\n * @type {Number}\n * @private\n */\n get near() {\n return this.uniforms.cameraNear.value;\n }\n /**\n * The current far plane setting.\n *\n * @type {Number}\n * @private\n */\n get far() {\n return this.uniforms.cameraFar.value;\n }\n /**\n * The depth buffer.\n *\n * @type {Texture}\n */\n set depthBuffer(value) {\n this.uniforms.depthBuffer.value = value;\n }\n /**\n * The depth packing strategy.\n *\n * @type {DepthPackingStrategies}\n */\n set depthPacking(value) {\n this.defines.DEPTH_PACKING = value.toFixed(0);\n this.needsUpdate = true;\n }\n /**\n * Sets the depth buffer.\n *\n * @deprecated Use depthBuffer and depthPacking instead.\n * @param {Texture} buffer - The depth texture.\n * @param {DepthPackingStrategies} [depthPacking=BasicDepthPacking] - The depth packing strategy.\n */\n setDepthBuffer(buffer, depthPacking = BasicDepthPacking) {\n this.depthBuffer = buffer;\n this.depthPacking = depthPacking;\n }\n /**\n * The focus distance. Range: [0.0, 1.0].\n *\n * @type {Number}\n */\n get focusDistance() {\n return this.uniforms.focusDistance.value;\n }\n set focusDistance(value) {\n this.uniforms.focusDistance.value = value;\n }\n /**\n * The focus distance in world units.\n *\n * @type {Number}\n */\n get worldFocusDistance() {\n return -orthographicDepthToViewZ(this.focusDistance, this.near, this.far);\n }\n set worldFocusDistance(value) {\n this.focusDistance = viewZToOrthographicDepth(-value, this.near, this.far);\n }\n /**\n * Returns the focus distance.\n *\n * @deprecated Use focusDistance instead.\n * @return {Number} The focus distance.\n */\n getFocusDistance(value) {\n this.uniforms.focusDistance.value = value;\n }\n /**\n * Sets the focus distance.\n *\n * @deprecated Use focusDistance instead.\n * @param {Number} value - The focus distance.\n */\n setFocusDistance(value) {\n this.uniforms.focusDistance.value = value;\n }\n /**\n * The focal length.\n *\n * @deprecated Renamed to focusRange.\n * @type {Number}\n */\n get focalLength() {\n return this.focusRange;\n }\n set focalLength(value) {\n this.focusRange = value;\n }\n /**\n * The focus range. Range: [0.0, 1.0].\n *\n * @type {Number}\n */\n get focusRange() {\n return this.uniforms.focusRange.value;\n }\n set focusRange(value) {\n this.uniforms.focusRange.value = value;\n }\n /**\n * The focus range in world units.\n *\n * @type {Number}\n */\n get worldFocusRange() {\n return -orthographicDepthToViewZ(this.focusRange, this.near, this.far);\n }\n set worldFocusRange(value) {\n this.focusRange = viewZToOrthographicDepth(-value, this.near, this.far);\n }\n /**\n * Returns the focal length.\n *\n * @deprecated Use focusRange instead.\n * @return {Number} The focal length.\n */\n getFocalLength(value) {\n return this.focusRange;\n }\n /**\n * Sets the focal length.\n *\n * @deprecated Use focusRange instead.\n * @param {Number} value - The focal length.\n */\n setFocalLength(value) {\n this.focusRange = value;\n }\n /**\n * Copies the settings of the given camera.\n *\n * @deprecated Use copyCameraSettings instead.\n * @param {Camera} camera - A camera.\n */\n adoptCameraSettings(camera) {\n this.copyCameraSettings(camera);\n }\n /**\n * Copies the settings of the given camera.\n *\n * @param {Camera} camera - A camera.\n */\n copyCameraSettings(camera) {\n if (camera) {\n this.uniforms.cameraNear.value = camera.near;\n this.uniforms.cameraFar.value = camera.far;\n if (camera instanceof PerspectiveCamera2) {\n this.defines.PERSPECTIVE_CAMERA = \"1\";\n } else {\n delete this.defines.PERSPECTIVE_CAMERA;\n }\n this.needsUpdate = true;\n }\n }\n};\n\n// src/materials/KawaseBlurMaterial.js\nimport { NoBlending as NoBlending5, ShaderMaterial as ShaderMaterial5, Uniform as Uniform5, Vector4 } from \"three\";\n\n// src/materials/glsl/convolution.kawase.frag\nvar convolution_kawase_default = \"#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D inputBuffer;\\n#else\\nuniform lowp sampler2D inputBuffer;\\n#endif\\nvarying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec4 sum=texture2D(inputBuffer,vUv0);sum+=texture2D(inputBuffer,vUv1);sum+=texture2D(inputBuffer,vUv2);sum+=texture2D(inputBuffer,vUv3);gl_FragColor=sum*0.25;\\n#include \\n}\";\n\n// src/materials/glsl/convolution.kawase.vert\nvar convolution_kawase_default2 = \"uniform vec4 texelSize;uniform float kernel;uniform float scale;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vec2 dUv=(texelSize.xy*vec2(kernel)+texelSize.zw)*scale;vUv0=vec2(uv.x-dUv.x,uv.y+dUv.y);vUv1=vec2(uv.x+dUv.x,uv.y+dUv.y);vUv2=vec2(uv.x+dUv.x,uv.y-dUv.y);vUv3=vec2(uv.x-dUv.x,uv.y-dUv.y);gl_Position=vec4(position.xy,1.0,1.0);}\";\n\n// src/materials/KawaseBlurMaterial.js\nvar kernelPresets = [\n new Float32Array([0, 0]),\n new Float32Array([0, 1, 1]),\n new Float32Array([0, 1, 1, 2]),\n new Float32Array([0, 1, 2, 2, 3]),\n new Float32Array([0, 1, 2, 3, 4, 4, 5]),\n new Float32Array([0, 1, 2, 3, 4, 5, 7, 8, 9, 10])\n];\nvar KawaseBlurMaterial = class extends ShaderMaterial5 {\n /**\n * Constructs a new convolution material.\n *\n * TODO Remove texelSize param.\n * @param {Vector4} [texelSize] - Deprecated.\n */\n constructor(texelSize = new Vector4()) {\n super({\n name: \"KawaseBlurMaterial\",\n uniforms: {\n inputBuffer: new Uniform5(null),\n texelSize: new Uniform5(new Vector4()),\n scale: new Uniform5(1),\n kernel: new Uniform5(0)\n },\n blending: NoBlending5,\n toneMapped: false,\n depthWrite: false,\n depthTest: false,\n fragmentShader: convolution_kawase_default,\n vertexShader: convolution_kawase_default2\n });\n this.fragmentShader = updateFragmentShader(this.fragmentShader);\n this.setTexelSize(texelSize.x, texelSize.y);\n this.kernelSize = KernelSize.MEDIUM;\n }\n /**\n * The input buffer.\n *\n * @type {Texture}\n */\n set inputBuffer(value) {\n this.uniforms.inputBuffer.value = value;\n }\n /**\n * Sets the input buffer.\n *\n * @deprecated Use inputBuffer instead.\n * @param {Texture} value - The input buffer.\n */\n setInputBuffer(value) {\n this.inputBuffer = value;\n }\n /**\n * The kernel sequence for the current kernel size.\n *\n * @type {Float32Array}\n */\n get kernelSequence() {\n return kernelPresets[this.kernelSize];\n }\n /**\n * The blur scale.\n *\n * @type {Number}\n */\n get scale() {\n return this.uniforms.scale.value;\n }\n set scale(value) {\n this.uniforms.scale.value = value;\n }\n /**\n * Returns the blur scale.\n *\n * @deprecated Use scale instead.\n * @return {Number} The scale.\n */\n getScale() {\n return this.uniforms.scale.value;\n }\n /**\n * Sets the blur scale.\n *\n * @deprecated Use scale instead.\n * @return {Number} value - The scale.\n */\n setScale(value) {\n this.uniforms.scale.value = value;\n }\n /**\n * Returns the kernel.\n *\n * @return {Float32Array} The kernel.\n * @deprecated Implementation detail, removed with no replacement.\n */\n getKernel() {\n return null;\n }\n /**\n * The current kernel.\n *\n * @type {Number}\n */\n get kernel() {\n return this.uniforms.kernel.value;\n }\n set kernel(value) {\n this.uniforms.kernel.value = value;\n }\n /**\n * Sets the current kernel.\n *\n * @deprecated Use kernel instead.\n * @param {Number} value - The kernel.\n */\n setKernel(value) {\n this.kernel = value;\n }\n /**\n * Sets the texel size.\n *\n * @deprecated Use setSize() instead.\n * @param {Number} x - The texel width.\n * @param {Number} y - The texel height.\n */\n setTexelSize(x, y) {\n this.uniforms.texelSize.value.set(x, y, x * 0.5, y * 0.5);\n }\n /**\n * Sets the size of this object.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n const x = 1 / width, y = 1 / height;\n this.uniforms.texelSize.value.set(x, y, x * 0.5, y * 0.5);\n }\n};\n\n// src/materials/CopyMaterial.js\nimport { NoBlending as NoBlending6, ShaderMaterial as ShaderMaterial6, Uniform as Uniform6 } from \"three\";\n\n// src/materials/glsl/copy.frag\nvar copy_default = \"#include \\n#include \\n#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D inputBuffer;\\n#else\\nuniform lowp sampler2D inputBuffer;\\n#endif\\nuniform float opacity;varying vec2 vUv;void main(){vec4 texel=texture2D(inputBuffer,vUv);gl_FragColor=opacity*texel;\\n#include \\n#include \\n}\";\n\n// src/materials/CopyMaterial.js\nvar CopyMaterial = class extends ShaderMaterial6 {\n /**\n * Constructs a new copy material.\n */\n constructor() {\n super({\n name: \"CopyMaterial\",\n uniforms: {\n inputBuffer: new Uniform6(null),\n opacity: new Uniform6(1)\n },\n blending: NoBlending6,\n toneMapped: false,\n depthWrite: false,\n depthTest: false,\n fragmentShader: copy_default,\n vertexShader: common_default\n });\n this.fragmentShader = updateFragmentShader(this.fragmentShader);\n }\n /**\n * The input buffer.\n *\n * @type {Texture}\n */\n set inputBuffer(value) {\n this.uniforms.inputBuffer.value = value;\n }\n /**\n * Sets the input buffer.\n *\n * @deprecated Use inputBuffer instead.\n * @param {Number} value - The buffer.\n */\n setInputBuffer(value) {\n this.uniforms.inputBuffer.value = value;\n }\n /**\n * Returns the opacity.\n *\n * @deprecated Use opacity instead.\n * @return {Number} The opacity.\n */\n getOpacity(value) {\n return this.uniforms.opacity.value;\n }\n /**\n * Sets the opacity.\n *\n * @deprecated Use opacity instead.\n * @param {Number} value - The opacity.\n */\n setOpacity(value) {\n this.uniforms.opacity.value = value;\n }\n};\n\n// src/materials/DepthComparisonMaterial.js\nimport { NoBlending as NoBlending7, PerspectiveCamera as PerspectiveCamera3, RGBADepthPacking, ShaderMaterial as ShaderMaterial7, Uniform as Uniform7 } from \"three\";\n\n// src/materials/glsl/depth-comparison.frag\nvar depth_comparison_default = \"#include \\n#include \\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nuniform highp sampler2D depthBuffer;\\n#else\\nuniform mediump sampler2D depthBuffer;\\n#endif\\nuniform float cameraNear;uniform float cameraFar;centroid varying float vViewZ;centroid varying vec4 vProjTexCoord;void main(){\\n#include \\nvec2 projTexCoord=(vProjTexCoord.xy/vProjTexCoord.w)*0.5+0.5;projTexCoord=clamp(projTexCoord,0.002,0.998);\\n#if DEPTH_PACKING == 3201\\nfloat fragCoordZ=unpackRGBAToDepth(texture2D(depthBuffer,projTexCoord));\\n#else\\nfloat fragCoordZ=texture2D(depthBuffer,projTexCoord).r;\\n#endif\\n#ifdef PERSPECTIVE_CAMERA\\nfloat viewZ=perspectiveDepthToViewZ(fragCoordZ,cameraNear,cameraFar);\\n#else\\nfloat viewZ=orthographicDepthToViewZ(fragCoordZ,cameraNear,cameraFar);\\n#endif\\nfloat depthTest=(-vViewZ>-viewZ)?1.0:0.0;gl_FragColor.rg=vec2(0.0,depthTest);}\";\n\n// src/materials/glsl/depth-comparison.vert\nvar depth_comparison_default2 = \"#include \\n#include \\n#include \\n#include \\nvarying float vViewZ;varying vec4 vProjTexCoord;void main(){\\n#include \\n#include \\n#include \\n#include \\n#include \\nvViewZ=mvPosition.z;vProjTexCoord=gl_Position;\\n#include \\n}\";\n\n// src/materials/DepthComparisonMaterial.js\nvar DepthComparisonMaterial = class extends ShaderMaterial7 {\n /**\n * Constructs a new depth comparison material.\n *\n * @param {Texture} [depthTexture=null] - A depth texture.\n * @param {PerspectiveCamera} [camera] - A camera.\n */\n constructor(depthTexture = null, camera) {\n super({\n name: \"DepthComparisonMaterial\",\n defines: {\n DEPTH_PACKING: \"0\"\n },\n uniforms: {\n depthBuffer: new Uniform7(null),\n cameraNear: new Uniform7(0.3),\n cameraFar: new Uniform7(1e3)\n },\n blending: NoBlending7,\n toneMapped: false,\n depthWrite: false,\n depthTest: false,\n fragmentShader: depth_comparison_default,\n vertexShader: depth_comparison_default2\n });\n this.depthBuffer = depthTexture;\n this.depthPacking = RGBADepthPacking;\n this.copyCameraSettings(camera);\n }\n /**\n * The depth buffer.\n *\n * @type {Texture}\n */\n set depthBuffer(value) {\n this.uniforms.depthBuffer.value = value;\n }\n /**\n * The depth packing strategy.\n *\n * @type {DepthPackingStrategies}\n */\n set depthPacking(value) {\n this.defines.DEPTH_PACKING = value.toFixed(0);\n this.needsUpdate = true;\n }\n /**\n * Sets the depth buffer.\n *\n * @deprecated Use depthBuffer and depthPacking instead.\n * @param {Texture} buffer - The depth texture.\n * @param {DepthPackingStrategies} [depthPacking=RGBADepthPacking] - The depth packing strategy.\n */\n setDepthBuffer(buffer, depthPacking = RGBADepthPacking) {\n this.depthBuffer = buffer;\n this.depthPacking = depthPacking;\n }\n /**\n * Copies the settings of the given camera.\n *\n * @deprecated Use copyCameraSettings instead.\n * @param {Camera} camera - A camera.\n */\n adoptCameraSettings(camera) {\n this.copyCameraSettings(camera);\n }\n /**\n * Copies the settings of the given camera.\n *\n * @param {Camera} camera - A camera.\n */\n copyCameraSettings(camera) {\n if (camera) {\n this.uniforms.cameraNear.value = camera.near;\n this.uniforms.cameraFar.value = camera.far;\n if (camera instanceof PerspectiveCamera3) {\n this.defines.PERSPECTIVE_CAMERA = \"1\";\n } else {\n delete this.defines.PERSPECTIVE_CAMERA;\n }\n this.needsUpdate = true;\n }\n }\n};\n\n// src/materials/DepthCopyMaterial.js\nimport { BasicDepthPacking as BasicDepthPacking2, NoBlending as NoBlending8, ShaderMaterial as ShaderMaterial8, Uniform as Uniform8, Vector2 as Vector23 } from \"three\";\n\n// src/materials/glsl/depth-copy.frag\nvar depth_copy_default = \"#include \\nvarying vec2 vUv;\\n#ifdef NORMAL_DEPTH\\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nuniform highp sampler2D normalDepthBuffer;\\n#else\\nuniform mediump sampler2D normalDepthBuffer;\\n#endif\\nfloat readDepth(const in vec2 uv){return texture2D(normalDepthBuffer,uv).a;}\\n#else\\n#if INPUT_DEPTH_PACKING == 3201\\nuniform lowp sampler2D depthBuffer;\\n#elif defined(GL_FRAGMENT_PRECISION_HIGH)\\nuniform highp sampler2D depthBuffer;\\n#else\\nuniform mediump sampler2D depthBuffer;\\n#endif\\nfloat readDepth(const in vec2 uv){\\n#if INPUT_DEPTH_PACKING == 3201\\nreturn unpackRGBAToDepth(texture2D(depthBuffer,uv));\\n#else\\nreturn texture2D(depthBuffer,uv).r;\\n#endif\\n}\\n#endif\\nvoid main(){\\n#if INPUT_DEPTH_PACKING == OUTPUT_DEPTH_PACKING\\ngl_FragColor=texture2D(depthBuffer,vUv);\\n#else\\nfloat depth=readDepth(vUv);\\n#if OUTPUT_DEPTH_PACKING == 3201\\ngl_FragColor=(depth==1.0)?vec4(1.0):packDepthToRGBA(depth);\\n#else\\ngl_FragColor=vec4(vec3(depth),1.0);\\n#endif\\n#endif\\n}\";\n\n// src/materials/glsl/depth-copy.vert\nvar depth_copy_default2 = \"varying vec2 vUv;\\n#if DEPTH_COPY_MODE == 1\\nuniform vec2 texelPosition;\\n#endif\\nvoid main(){\\n#if DEPTH_COPY_MODE == 1\\nvUv=texelPosition;\\n#else\\nvUv=position.xy*0.5+0.5;\\n#endif\\ngl_Position=vec4(position.xy,1.0,1.0);}\";\n\n// src/materials/DepthCopyMaterial.js\nvar DepthCopyMaterial = class extends ShaderMaterial8 {\n /**\n * Constructs a new depth copy material.\n */\n constructor() {\n super({\n name: \"DepthCopyMaterial\",\n defines: {\n INPUT_DEPTH_PACKING: \"0\",\n OUTPUT_DEPTH_PACKING: \"0\",\n DEPTH_COPY_MODE: \"0\"\n },\n uniforms: {\n depthBuffer: new Uniform8(null),\n texelPosition: new Uniform8(new Vector23())\n },\n blending: NoBlending8,\n toneMapped: false,\n depthWrite: false,\n depthTest: false,\n fragmentShader: depth_copy_default,\n vertexShader: depth_copy_default2\n });\n this.depthCopyMode = DepthCopyMode.FULL;\n }\n /**\n * The input depth buffer.\n *\n * @type {Texture}\n */\n get depthBuffer() {\n return this.uniforms.depthBuffer.value;\n }\n set depthBuffer(value) {\n this.uniforms.depthBuffer.value = value;\n }\n /**\n * The input depth packing strategy.\n *\n * @type {DepthPackingStrategies}\n */\n set inputDepthPacking(value) {\n this.defines.INPUT_DEPTH_PACKING = value.toFixed(0);\n this.needsUpdate = true;\n }\n /**\n * The output depth packing strategy.\n *\n * @type {DepthPackingStrategies}\n */\n get outputDepthPacking() {\n return Number(this.defines.OUTPUT_DEPTH_PACKING);\n }\n set outputDepthPacking(value) {\n this.defines.OUTPUT_DEPTH_PACKING = value.toFixed(0);\n this.needsUpdate = true;\n }\n /**\n * Sets the input depth buffer.\n *\n * @deprecated Use depthBuffer and inputDepthPacking instead.\n * @param {Texture} buffer - The depth texture.\n * @param {DepthPackingStrategies} [depthPacking=BasicDepthPacking] - The depth packing strategy.\n */\n setDepthBuffer(buffer, depthPacking = BasicDepthPacking2) {\n this.depthBuffer = buffer;\n this.inputDepthPacking = depthPacking;\n }\n /**\n * Returns the current input depth packing strategy.\n *\n * @deprecated\n * @return {DepthPackingStrategies} The input depth packing strategy.\n */\n getInputDepthPacking() {\n return Number(this.defines.INPUT_DEPTH_PACKING);\n }\n /**\n * Sets the input depth packing strategy.\n *\n * @deprecated Use inputDepthPacking instead.\n * @param {DepthPackingStrategies} value - The new input depth packing strategy.\n */\n setInputDepthPacking(value) {\n this.defines.INPUT_DEPTH_PACKING = value.toFixed(0);\n this.needsUpdate = true;\n }\n /**\n * Returns the current output depth packing strategy.\n *\n * @deprecated Use outputDepthPacking instead.\n * @return {DepthPackingStrategies} The output depth packing strategy.\n */\n getOutputDepthPacking() {\n return Number(this.defines.OUTPUT_DEPTH_PACKING);\n }\n /**\n * Sets the output depth packing strategy.\n *\n * @deprecated Use outputDepthPacking instead.\n * @param {DepthPackingStrategies} value - The new output depth packing strategy.\n */\n setOutputDepthPacking(value) {\n this.defines.OUTPUT_DEPTH_PACKING = value.toFixed(0);\n this.needsUpdate = true;\n }\n /**\n * The screen space position used for single-texel copy operations.\n *\n * @type {Vector2}\n */\n get texelPosition() {\n return this.uniforms.texelPosition.value;\n }\n /**\n * Returns the screen space position used for single-texel copy operations.\n *\n * @deprecated Use texelPosition instead.\n * @return {Vector2} The position.\n */\n getTexelPosition() {\n return this.uniforms.texelPosition.value;\n }\n /**\n * Sets the screen space position used for single-texel copy operations.\n *\n * @deprecated\n * @param {Vector2} value - The position.\n */\n setTexelPosition(value) {\n this.uniforms.texelPosition.value = value;\n }\n /**\n * The depth copy mode.\n *\n * @type {DepthCopyMode}\n */\n get mode() {\n return this.depthCopyMode;\n }\n set mode(value) {\n this.depthCopyMode = value;\n this.defines.DEPTH_COPY_MODE = value.toFixed(0);\n this.needsUpdate = true;\n }\n /**\n * Returns the depth copy mode.\n *\n * @deprecated Use mode instead.\n * @return {DepthCopyMode} The depth copy mode.\n */\n getMode() {\n return this.mode;\n }\n /**\n * Sets the depth copy mode.\n *\n * @deprecated Use mode instead.\n * @param {DepthCopyMode} value - The new mode.\n */\n setMode(value) {\n this.mode = value;\n }\n};\n\n// src/materials/DepthDownsamplingMaterial.js\nimport { BasicDepthPacking as BasicDepthPacking3, NoBlending as NoBlending9, ShaderMaterial as ShaderMaterial9, Uniform as Uniform9, Vector2 as Vector24 } from \"three\";\n\n// src/materials/glsl/depth-downsampling.frag\nvar depth_downsampling_default = \"#include \\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nuniform highp sampler2D depthBuffer;\\n#else\\nuniform mediump sampler2D depthBuffer;\\n#endif\\n#ifdef DOWNSAMPLE_NORMALS\\nuniform lowp sampler2D normalBuffer;\\n#endif\\nvarying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;float readDepth(const in vec2 uv){\\n#if DEPTH_PACKING == 3201\\nreturn unpackRGBAToDepth(texture2D(depthBuffer,uv));\\n#else\\nreturn texture2D(depthBuffer,uv).r;\\n#endif\\n}int findBestDepth(const in highp float samples[4]){float c=(samples[0]+samples[1]+samples[2]+samples[3])*0.25;highp float distances[]=float[4](abs(c-samples[0]),abs(c-samples[1]),abs(c-samples[2]),abs(c-samples[3]));float maxDistance=max(max(distances[0],distances[1]),max(distances[2],distances[3]));int remaining[3];int rejected[3];int i,j,k;for(i=0,j=0,k=0;i<4;++i){if(distances[i]\\n#include \\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nuniform highp sampler2D depthBuffer0;uniform highp sampler2D depthBuffer1;\\n#else\\nuniform mediump sampler2D depthBuffer0;uniform mediump sampler2D depthBuffer1;\\n#endif\\nuniform sampler2D inputBuffer;uniform vec2 cameraNearFar;float getViewZ(const in float depth){\\n#ifdef PERSPECTIVE_CAMERA\\nreturn perspectiveDepthToViewZ(depth,cameraNearFar.x,cameraNearFar.y);\\n#else\\nreturn orthographicDepthToViewZ(depth,cameraNearFar.x,cameraNearFar.y);\\n#endif\\n}varying vec2 vUv;void main(){vec2 depth;\\n#if DEPTH_PACKING_0 == 3201\\ndepth.x=unpackRGBAToDepth(texture2D(depthBuffer0,vUv));\\n#else\\ndepth.x=texture2D(depthBuffer0,vUv).r;\\n#ifdef LOG_DEPTH\\nfloat d=pow(2.0,depth.x*log2(cameraNearFar.y+1.0))-1.0;float a=cameraNearFar.y/(cameraNearFar.y-cameraNearFar.x);float b=cameraNearFar.y*cameraNearFar.x/(cameraNearFar.x-cameraNearFar.y);depth.x=a+b/d;\\n#endif\\n#endif\\n#if DEPTH_PACKING_1 == 3201\\ndepth.y=unpackRGBAToDepth(texture2D(depthBuffer1,vUv));\\n#else\\ndepth.y=texture2D(depthBuffer1,vUv).r;\\n#ifdef LOG_DEPTH\\nfloat d=pow(2.0,depth.y*log2(cameraNearFar.y+1.0))-1.0;float a=cameraNearFar.y/(cameraNearFar.y-cameraNearFar.x);float b=cameraNearFar.y*cameraNearFar.x/(cameraNearFar.x-cameraNearFar.y);depth.y=a+b/d;\\n#endif\\n#endif\\nbool isMaxDepth=(depth.x==1.0);\\n#ifdef PERSPECTIVE_CAMERA\\ndepth.x=viewZToOrthographicDepth(getViewZ(depth.x),cameraNearFar.x,cameraNearFar.y);depth.y=viewZToOrthographicDepth(getViewZ(depth.y),cameraNearFar.x,cameraNearFar.y);\\n#endif\\n#if DEPTH_TEST_STRATEGY == 0\\nbool keep=depthTest(depth.x,depth.y);\\n#elif DEPTH_TEST_STRATEGY == 1\\nbool keep=isMaxDepth||depthTest(depth.x,depth.y);\\n#else\\nbool keep=!isMaxDepth&&depthTest(depth.x,depth.y);\\n#endif\\nif(keep){gl_FragColor=texture2D(inputBuffer,vUv);}else{discard;}}\";\n\n// src/materials/DepthMaskMaterial.js\nvar DepthMaskMaterial = class extends ShaderMaterial10 {\n /**\n * Constructs a new depth mask material.\n */\n constructor() {\n super({\n name: \"DepthMaskMaterial\",\n defines: {\n DEPTH_EPSILON: \"0.0001\",\n DEPTH_PACKING_0: \"0\",\n DEPTH_PACKING_1: \"0\",\n DEPTH_TEST_STRATEGY: DepthTestStrategy.KEEP_MAX_DEPTH\n },\n uniforms: {\n inputBuffer: new Uniform10(null),\n depthBuffer0: new Uniform10(null),\n depthBuffer1: new Uniform10(null),\n cameraNearFar: new Uniform10(new Vector25(1, 1))\n },\n blending: NoBlending10,\n toneMapped: false,\n depthWrite: false,\n depthTest: false,\n fragmentShader: depth_mask_default,\n vertexShader: common_default\n });\n this.depthMode = LessDepth;\n }\n /**\n * The primary depth buffer.\n *\n * @type {Texture}\n */\n set depthBuffer0(value) {\n this.uniforms.depthBuffer0.value = value;\n }\n /**\n * The primary depth packing strategy.\n *\n * @type {DepthPackingStrategies}\n */\n set depthPacking0(value) {\n this.defines.DEPTH_PACKING_0 = value.toFixed(0);\n this.needsUpdate = true;\n }\n /**\n * Sets the base depth buffer.\n *\n * @deprecated Use depthBuffer0 and depthPacking0 instead.\n * @param {Texture} buffer - The depth texture.\n * @param {DepthPackingStrategies} [depthPacking=BasicDepthPacking] - The depth packing strategy.\n */\n setDepthBuffer0(buffer, depthPacking = BasicDepthPacking4) {\n this.depthBuffer0 = buffer;\n this.depthPacking0 = depthPacking;\n }\n /**\n * The secondary depth buffer.\n *\n * @type {Texture}\n */\n set depthBuffer1(value) {\n this.uniforms.depthBuffer1.value = value;\n }\n /**\n * The secondary depth packing strategy.\n *\n * @type {DepthPackingStrategies}\n */\n set depthPacking1(value) {\n this.defines.DEPTH_PACKING_1 = value.toFixed(0);\n this.needsUpdate = true;\n }\n /**\n * Sets the depth buffer that will be compared with the base depth buffer.\n *\n * @deprecated Use depthBuffer1 and depthPacking1 instead.\n * @param {Texture} buffer - The depth texture.\n * @param {DepthPackingStrategies} [depthPacking=BasicDepthPacking] - The depth packing strategy.\n */\n setDepthBuffer1(buffer, depthPacking = BasicDepthPacking4) {\n this.depthBuffer1 = buffer;\n this.depthPacking1 = depthPacking;\n }\n /**\n * The strategy for handling maximum depth.\n *\n * @type {DepthTestStrategy}\n */\n get maxDepthStrategy() {\n return Number(this.defines.DEPTH_TEST_STRATEGY);\n }\n set maxDepthStrategy(value) {\n this.defines.DEPTH_TEST_STRATEGY = value.toFixed(0);\n this.needsUpdate = true;\n }\n /**\n * Indicates whether maximum depth values should be preserved.\n *\n * @type {Boolean}\n * @deprecated Use maxDepthStrategy instead.\n */\n get keepFar() {\n return this.maxDepthStrategy;\n }\n set keepFar(value) {\n this.maxDepthStrategy = value ? DepthTestStrategy.KEEP_MAX_DEPTH : DepthTestStrategy.DISCARD_MAX_DEPTH;\n }\n /**\n * Returns the strategy for dealing with maximum depth values.\n *\n * @deprecated Use maxDepthStrategy instead.\n * @return {DepthTestStrategy} The strategy.\n */\n getMaxDepthStrategy() {\n return this.maxDepthStrategy;\n }\n /**\n * Sets the strategy for dealing with maximum depth values.\n *\n * @deprecated Use maxDepthStrategy instead.\n * @param {DepthTestStrategy} value - The strategy.\n */\n setMaxDepthStrategy(value) {\n this.maxDepthStrategy = value;\n }\n /**\n * A small error threshold that is used for `EqualDepth` and `NotEqualDepth` tests. Default is `1e-4`.\n *\n * @type {Number}\n */\n get epsilon() {\n return Number(this.defines.DEPTH_EPSILON);\n }\n set epsilon(value) {\n this.defines.DEPTH_EPSILON = value.toFixed(16);\n this.needsUpdate = true;\n }\n /**\n * Returns the current error threshold for depth comparisons.\n *\n * @deprecated Use epsilon instead.\n * @return {Number} The error threshold.\n */\n getEpsilon() {\n return this.epsilon;\n }\n /**\n * Sets the depth comparison error threshold.\n *\n * @deprecated Use epsilon instead.\n * @param {Number} value - The new error threshold.\n */\n setEpsilon(value) {\n this.epsilon = value;\n }\n /**\n * The depth mode.\n *\n * @see https://threejs.org/docs/#api/en/constants/Materials\n * @type {DepthModes}\n */\n get depthMode() {\n return Number(this.defines.DEPTH_MODE);\n }\n set depthMode(value) {\n let depthTest;\n switch (value) {\n case NeverDepth:\n depthTest = \"false\";\n break;\n case AlwaysDepth:\n depthTest = \"true\";\n break;\n case EqualDepth:\n depthTest = \"abs(d1 - d0) <= DEPTH_EPSILON\";\n break;\n case NotEqualDepth:\n depthTest = \"abs(d1 - d0) > DEPTH_EPSILON\";\n break;\n case LessDepth:\n depthTest = \"d0 > d1\";\n break;\n case LessEqualDepth:\n depthTest = \"d0 >= d1\";\n break;\n case GreaterEqualDepth:\n depthTest = \"d0 <= d1\";\n break;\n case GreaterDepth:\n default:\n depthTest = \"d0 < d1\";\n break;\n }\n this.defines.DEPTH_MODE = value.toFixed(0);\n this.defines[\"depthTest(d0, d1)\"] = depthTest;\n this.needsUpdate = true;\n }\n /**\n * Returns the current depth mode.\n *\n * @deprecated Use depthMode instead.\n * @return {DepthModes} The depth mode. Default is `LessDepth`.\n */\n getDepthMode() {\n return this.depthMode;\n }\n /**\n * Sets the depth mode.\n *\n * @deprecated Use depthMode instead.\n * @param {DepthModes} mode - The depth mode.\n */\n setDepthMode(mode) {\n this.depthMode = mode;\n }\n /**\n * Copies the settings of the given camera.\n *\n * @deprecated Use copyCameraSettings instead.\n * @param {Camera} camera - A camera.\n */\n adoptCameraSettings(camera) {\n this.copyCameraSettings(camera);\n }\n /**\n * Copies the settings of the given camera.\n *\n * @param {Camera} camera - A camera.\n */\n copyCameraSettings(camera) {\n if (camera) {\n this.uniforms.cameraNearFar.value.set(camera.near, camera.far);\n if (camera instanceof PerspectiveCamera4) {\n this.defines.PERSPECTIVE_CAMERA = \"1\";\n } else {\n delete this.defines.PERSPECTIVE_CAMERA;\n }\n this.needsUpdate = true;\n }\n }\n};\n\n// src/materials/DownsamplingMaterial.js\nimport { NoBlending as NoBlending11, ShaderMaterial as ShaderMaterial11, Uniform as Uniform11, Vector2 as Vector26 } from \"three\";\n\n// src/materials/glsl/convolution.downsampling.frag\nvar convolution_downsampling_default = \"#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D inputBuffer;\\n#else\\nuniform lowp sampler2D inputBuffer;\\n#endif\\n#define WEIGHT_INNER 0.125\\n#define WEIGHT_OUTER 0.0555555\\nvarying vec2 vUv;varying vec2 vUv00;varying vec2 vUv01;varying vec2 vUv02;varying vec2 vUv03;varying vec2 vUv04;varying vec2 vUv05;varying vec2 vUv06;varying vec2 vUv07;varying vec2 vUv08;varying vec2 vUv09;varying vec2 vUv10;varying vec2 vUv11;float clampToBorder(const in vec2 uv){return float(uv.s>=0.0&&uv.s<=1.0&&uv.t>=0.0&&uv.t<=1.0);}void main(){vec4 c=vec4(0.0);vec4 w=WEIGHT_INNER*vec4(clampToBorder(vUv00),clampToBorder(vUv01),clampToBorder(vUv02),clampToBorder(vUv03));c+=w.x*texture2D(inputBuffer,vUv00);c+=w.y*texture2D(inputBuffer,vUv01);c+=w.z*texture2D(inputBuffer,vUv02);c+=w.w*texture2D(inputBuffer,vUv03);w=WEIGHT_OUTER*vec4(clampToBorder(vUv04),clampToBorder(vUv05),clampToBorder(vUv06),clampToBorder(vUv07));c+=w.x*texture2D(inputBuffer,vUv04);c+=w.y*texture2D(inputBuffer,vUv05);c+=w.z*texture2D(inputBuffer,vUv06);c+=w.w*texture2D(inputBuffer,vUv07);w=WEIGHT_OUTER*vec4(clampToBorder(vUv08),clampToBorder(vUv09),clampToBorder(vUv10),clampToBorder(vUv11));c+=w.x*texture2D(inputBuffer,vUv08);c+=w.y*texture2D(inputBuffer,vUv09);c+=w.z*texture2D(inputBuffer,vUv10);c+=w.w*texture2D(inputBuffer,vUv11);c+=WEIGHT_OUTER*texture2D(inputBuffer,vUv);gl_FragColor=c;\\n#include \\n}\";\n\n// src/materials/glsl/convolution.downsampling.vert\nvar convolution_downsampling_default2 = \"uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv00;varying vec2 vUv01;varying vec2 vUv02;varying vec2 vUv03;varying vec2 vUv04;varying vec2 vUv05;varying vec2 vUv06;varying vec2 vUv07;varying vec2 vUv08;varying vec2 vUv09;varying vec2 vUv10;varying vec2 vUv11;void main(){vUv=position.xy*0.5+0.5;vUv00=vUv+texelSize*vec2(-1.0,1.0);vUv01=vUv+texelSize*vec2(1.0,1.0);vUv02=vUv+texelSize*vec2(-1.0,-1.0);vUv03=vUv+texelSize*vec2(1.0,-1.0);vUv04=vUv+texelSize*vec2(-2.0,2.0);vUv05=vUv+texelSize*vec2(0.0,2.0);vUv06=vUv+texelSize*vec2(2.0,2.0);vUv07=vUv+texelSize*vec2(-2.0,0.0);vUv08=vUv+texelSize*vec2(2.0,0.0);vUv09=vUv+texelSize*vec2(-2.0,-2.0);vUv10=vUv+texelSize*vec2(0.0,-2.0);vUv11=vUv+texelSize*vec2(2.0,-2.0);gl_Position=vec4(position.xy,1.0,1.0);}\";\n\n// src/materials/DownsamplingMaterial.js\nvar DownsamplingMaterial = class extends ShaderMaterial11 {\n /**\n * Constructs a new downsampling material.\n */\n constructor() {\n super({\n name: \"DownsamplingMaterial\",\n uniforms: {\n inputBuffer: new Uniform11(null),\n texelSize: new Uniform11(new Vector26())\n },\n blending: NoBlending11,\n toneMapped: false,\n depthWrite: false,\n depthTest: false,\n fragmentShader: convolution_downsampling_default,\n vertexShader: convolution_downsampling_default2\n });\n this.fragmentShader = updateFragmentShader(this.fragmentShader);\n }\n /**\n * The input buffer.\n *\n * @type {Texture}\n */\n set inputBuffer(value) {\n this.uniforms.inputBuffer.value = value;\n }\n /**\n * Sets the size of this object.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n this.uniforms.texelSize.value.set(1 / width, 1 / height);\n }\n};\n\n// src/materials/EdgeDetectionMaterial.js\nimport { BasicDepthPacking as BasicDepthPacking5, NoBlending as NoBlending12, REVISION as REVISION2, ShaderMaterial as ShaderMaterial12, Uniform as Uniform12, Vector2 as Vector27 } from \"three\";\n\n// src/materials/glsl/edge-detection.frag\nvar edge_detection_default = \"varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;\\n#if THREE_REVISION < 143\\n#define luminance(v) linearToRelativeLuminance(v)\\n#endif\\n#if EDGE_DETECTION_MODE != 0\\nvarying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;\\n#endif\\n#if EDGE_DETECTION_MODE == 1\\n#include \\n#endif\\n#if EDGE_DETECTION_MODE == 0 || PREDICATION_MODE == 1\\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nuniform highp sampler2D depthBuffer;\\n#else\\nuniform mediump sampler2D depthBuffer;\\n#endif\\nfloat readDepth(const in vec2 uv){\\n#if DEPTH_PACKING == 3201\\nreturn unpackRGBAToDepth(texture2D(depthBuffer,uv));\\n#else\\nreturn texture2D(depthBuffer,uv).r;\\n#endif\\n}vec3 gatherNeighbors(){float p=readDepth(vUv);float pLeft=readDepth(vUv0);float pTop=readDepth(vUv1);return vec3(p,pLeft,pTop);}\\n#elif PREDICATION_MODE == 2\\nuniform sampler2D predicationBuffer;vec3 gatherNeighbors(){float p=texture2D(predicationBuffer,vUv).r;float pLeft=texture2D(predicationBuffer,vUv0).r;float pTop=texture2D(predicationBuffer,vUv1).r;return vec3(p,pLeft,pTop);}\\n#endif\\n#if PREDICATION_MODE != 0\\nvec2 calculatePredicatedThreshold(){vec3 neighbours=gatherNeighbors();vec2 delta=abs(neighbours.xx-neighbours.yz);vec2 edges=step(PREDICATION_THRESHOLD,delta);return PREDICATION_SCALE*EDGE_THRESHOLD*(1.0-PREDICATION_STRENGTH*edges);}\\n#endif\\n#if EDGE_DETECTION_MODE != 0\\nuniform sampler2D inputBuffer;\\n#endif\\nvoid main(){\\n#if EDGE_DETECTION_MODE == 0\\nconst vec2 threshold=vec2(DEPTH_THRESHOLD);\\n#elif PREDICATION_MODE != 0\\nvec2 threshold=calculatePredicatedThreshold();\\n#else\\nconst vec2 threshold=vec2(EDGE_THRESHOLD);\\n#endif\\n#if EDGE_DETECTION_MODE == 0\\nvec3 neighbors=gatherNeighbors();vec2 delta=abs(neighbors.xx-vec2(neighbors.y,neighbors.z));vec2 edges=step(threshold,delta);if(dot(edges,vec2(1.0))==0.0){discard;}gl_FragColor=vec4(edges,0.0,1.0);\\n#elif EDGE_DETECTION_MODE == 1\\nfloat l=luminance(texture2D(inputBuffer,vUv).rgb);float lLeft=luminance(texture2D(inputBuffer,vUv0).rgb);float lTop=luminance(texture2D(inputBuffer,vUv1).rgb);vec4 delta;delta.xy=abs(l-vec2(lLeft,lTop));vec2 edges=step(threshold,delta.xy);if(dot(edges,vec2(1.0))==0.0){discard;}float lRight=luminance(texture2D(inputBuffer,vUv2).rgb);float lBottom=luminance(texture2D(inputBuffer,vUv3).rgb);delta.zw=abs(l-vec2(lRight,lBottom));vec2 maxDelta=max(delta.xy,delta.zw);float lLeftLeft=luminance(texture2D(inputBuffer,vUv4).rgb);float lTopTop=luminance(texture2D(inputBuffer,vUv5).rgb);delta.zw=abs(vec2(lLeft,lTop)-vec2(lLeftLeft,lTopTop));maxDelta=max(maxDelta.xy,delta.zw);float finalDelta=max(maxDelta.x,maxDelta.y);edges.xy*=step(finalDelta,LOCAL_CONTRAST_ADAPTATION_FACTOR*delta.xy);gl_FragColor=vec4(edges,0.0,1.0);\\n#elif EDGE_DETECTION_MODE == 2\\nvec4 delta;vec3 c=texture2D(inputBuffer,vUv).rgb;vec3 cLeft=texture2D(inputBuffer,vUv0).rgb;vec3 t=abs(c-cLeft);delta.x=max(max(t.r,t.g),t.b);vec3 cTop=texture2D(inputBuffer,vUv1).rgb;t=abs(c-cTop);delta.y=max(max(t.r,t.g),t.b);vec2 edges=step(threshold,delta.xy);if(dot(edges,vec2(1.0))==0.0){discard;}vec3 cRight=texture2D(inputBuffer,vUv2).rgb;t=abs(c-cRight);delta.z=max(max(t.r,t.g),t.b);vec3 cBottom=texture2D(inputBuffer,vUv3).rgb;t=abs(c-cBottom);delta.w=max(max(t.r,t.g),t.b);vec2 maxDelta=max(delta.xy,delta.zw);vec3 cLeftLeft=texture2D(inputBuffer,vUv4).rgb;t=abs(c-cLeftLeft);delta.z=max(max(t.r,t.g),t.b);vec3 cTopTop=texture2D(inputBuffer,vUv5).rgb;t=abs(c-cTopTop);delta.w=max(max(t.r,t.g),t.b);maxDelta=max(maxDelta.xy,delta.zw);float finalDelta=max(maxDelta.x,maxDelta.y);edges*=step(finalDelta,LOCAL_CONTRAST_ADAPTATION_FACTOR*delta.xy);gl_FragColor=vec4(edges,0.0,1.0);\\n#endif\\n}\";\n\n// src/materials/glsl/edge-detection.vert\nvar edge_detection_default2 = \"uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;\\n#if EDGE_DETECTION_MODE != 0\\nvarying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;\\n#endif\\nvoid main(){vUv=position.xy*0.5+0.5;vUv0=vUv+texelSize*vec2(-1.0,0.0);vUv1=vUv+texelSize*vec2(0.0,-1.0);\\n#if EDGE_DETECTION_MODE != 0\\nvUv2=vUv+texelSize*vec2(1.0,0.0);vUv3=vUv+texelSize*vec2(0.0,1.0);vUv4=vUv+texelSize*vec2(-2.0,0.0);vUv5=vUv+texelSize*vec2(0.0,-2.0);\\n#endif\\ngl_Position=vec4(position.xy,1.0,1.0);}\";\n\n// src/materials/EdgeDetectionMaterial.js\nvar EdgeDetectionMaterial = class extends ShaderMaterial12 {\n /**\n * Constructs a new edge detection material.\n *\n * TODO Remove parameters.\n * @param {Vector2} [texelSize] - The screen texel size.\n * @param {EdgeDetectionMode} [mode=EdgeDetectionMode.COLOR] - The edge detection mode.\n */\n constructor(texelSize = new Vector27(), mode = EdgeDetectionMode.COLOR) {\n super({\n name: \"EdgeDetectionMaterial\",\n defines: {\n THREE_REVISION: REVISION2.replace(/\\D+/g, \"\"),\n LOCAL_CONTRAST_ADAPTATION_FACTOR: \"2.0\",\n EDGE_THRESHOLD: \"0.1\",\n DEPTH_THRESHOLD: \"0.01\",\n PREDICATION_MODE: \"0\",\n PREDICATION_THRESHOLD: \"0.01\",\n PREDICATION_SCALE: \"2.0\",\n PREDICATION_STRENGTH: \"1.0\",\n DEPTH_PACKING: \"0\"\n },\n uniforms: {\n inputBuffer: new Uniform12(null),\n depthBuffer: new Uniform12(null),\n predicationBuffer: new Uniform12(null),\n texelSize: new Uniform12(texelSize)\n },\n blending: NoBlending12,\n toneMapped: false,\n depthWrite: false,\n depthTest: false,\n fragmentShader: edge_detection_default,\n vertexShader: edge_detection_default2\n });\n this.edgeDetectionMode = mode;\n }\n /**\n * The depth buffer.\n *\n * @type {Texture}\n */\n set depthBuffer(value) {\n this.uniforms.depthBuffer.value = value;\n }\n /**\n * The depth packing strategy.\n *\n * @type {DepthPackingStrategies}\n */\n set depthPacking(value) {\n this.defines.DEPTH_PACKING = value.toFixed(0);\n this.needsUpdate = true;\n }\n /**\n * Sets the depth buffer.\n *\n * @deprecated Use depthBuffer and depthPacking instead.\n * @param {Texture} buffer - The depth texture.\n * @param {DepthPackingStrategies} [depthPacking=BasicDepthPacking] - The depth packing strategy.\n */\n setDepthBuffer(buffer, depthPacking = BasicDepthPacking5) {\n this.depthBuffer = buffer;\n this.depthPacking = depthPacking;\n }\n /**\n * The edge detection mode.\n *\n * @type {EdgeDetectionMode}\n */\n get edgeDetectionMode() {\n return Number(this.defines.EDGE_DETECTION_MODE);\n }\n set edgeDetectionMode(value) {\n this.defines.EDGE_DETECTION_MODE = value.toFixed(0);\n this.needsUpdate = true;\n }\n /**\n * Returns the edge detection mode.\n *\n * @deprecated Use edgeDetectionMode instead.\n * @return {EdgeDetectionMode} The mode.\n */\n getEdgeDetectionMode() {\n return this.edgeDetectionMode;\n }\n /**\n * Sets the edge detection mode.\n *\n * @deprecated Use edgeDetectionMode instead.\n * @param {EdgeDetectionMode} value - The edge detection mode.\n */\n setEdgeDetectionMode(value) {\n this.edgeDetectionMode = value;\n }\n /**\n * The local contrast adaptation factor. Has no effect if the edge detection mode is set to DEPTH. Default is 2.0.\n *\n * If a neighbor edge has _factor_ times bigger contrast than the current edge, the edge will be discarded.\n *\n * This allows to eliminate spurious crossing edges and is based on the fact that if there is too much contrast in a\n * direction, the perceptual contrast in the other neighbors will be hidden.\n *\n * @type {Number}\n */\n get localContrastAdaptationFactor() {\n return Number(this.defines.LOCAL_CONTRAST_ADAPTATION_FACTOR);\n }\n set localContrastAdaptationFactor(value) {\n this.defines.LOCAL_CONTRAST_ADAPTATION_FACTOR = value.toFixed(\"6\");\n this.needsUpdate = true;\n }\n /**\n * Returns the local contrast adaptation factor.\n *\n * @deprecated Use localContrastAdaptationFactor instead.\n * @return {Number} The factor.\n */\n getLocalContrastAdaptationFactor() {\n return this.localContrastAdaptationFactor;\n }\n /**\n * Sets the local contrast adaptation factor. Has no effect if the edge detection mode is set to DEPTH.\n *\n * @deprecated Use localContrastAdaptationFactor instead.\n * @param {Number} value - The local contrast adaptation factor. Default is 2.0.\n */\n setLocalContrastAdaptationFactor(value) {\n this.localContrastAdaptationFactor = value;\n }\n /**\n * The edge detection threshold. Range: [0.0, 0.5].\n *\n * A lower value results in more edges being detected at the expense of performance.\n *\n * For luma- and chroma-based edge detection, 0.1 is a reasonable value and allows to catch most visible edges. 0.05\n * is a rather overkill value that allows to catch 'em all. Darker scenes may require an even lower threshold.\n *\n * If depth-based edge detection is used, the threshold will depend on the scene depth.\n *\n * @type {Number}\n */\n get edgeDetectionThreshold() {\n return Number(this.defines.EDGE_THRESHOLD);\n }\n set edgeDetectionThreshold(value) {\n this.defines.EDGE_THRESHOLD = value.toFixed(\"6\");\n this.defines.DEPTH_THRESHOLD = (value * 0.1).toFixed(\"6\");\n this.needsUpdate = true;\n }\n /**\n * Returns the edge detection threshold.\n *\n * @deprecated Use edgeDetectionThreshold instead.\n * @return {Number} The threshold.\n */\n getEdgeDetectionThreshold() {\n return this.edgeDetectionThreshold;\n }\n /**\n * Sets the edge detection threshold.\n *\n * @deprecated Use edgeDetectionThreshold instead.\n * @param {Number} value - The edge detection threshold. Range: [0.0, 0.5].\n */\n setEdgeDetectionThreshold(value) {\n this.edgeDetectionThreshold = value;\n }\n /**\n * The predication mode.\n *\n * Predicated thresholding allows to better preserve texture details and to improve edge detection using an additional\n * buffer such as a light accumulation or depth buffer.\n *\n * @type {PredicationMode}\n */\n get predicationMode() {\n return Number(this.defines.PREDICATION_MODE);\n }\n set predicationMode(value) {\n this.defines.PREDICATION_MODE = value.toFixed(0);\n this.needsUpdate = true;\n }\n /**\n * Returns the predication mode.\n *\n * @deprecated Use predicationMode instead.\n * @return {PredicationMode} The mode.\n */\n getPredicationMode() {\n return this.predicationMode;\n }\n /**\n * Sets the predication mode.\n *\n * @deprecated Use predicationMode instead.\n * @param {PredicationMode} value - The predication mode.\n */\n setPredicationMode(value) {\n this.predicationMode = value;\n }\n /**\n * The predication buffer.\n *\n * @type {Texture}\n */\n set predicationBuffer(value) {\n this.uniforms.predicationBuffer.value = value;\n }\n /**\n * Sets a custom predication buffer.\n *\n * @deprecated Use predicationBuffer instead.\n * @param {Texture} value - The predication buffer.\n */\n setPredicationBuffer(value) {\n this.uniforms.predicationBuffer.value = value;\n }\n /**\n * The predication threshold.\n *\n * @type {Number}\n */\n get predicationThreshold() {\n return Number(this.defines.PREDICATION_THRESHOLD);\n }\n set predicationThreshold(value) {\n this.defines.PREDICATION_THRESHOLD = value.toFixed(\"6\");\n this.needsUpdate = true;\n }\n /**\n * Returns the predication threshold.\n *\n * @deprecated Use predicationThreshold instead.\n * @return {Number} The threshold.\n */\n getPredicationThreshold() {\n return this.predicationThreshold;\n }\n /**\n * Sets the predication threshold.\n *\n * @deprecated Use predicationThreshold instead.\n * @param {Number} value - The threshold.\n */\n setPredicationThreshold(value) {\n this.predicationThreshold = value;\n }\n /**\n * The predication scale. Range: [1.0, 5.0].\n *\n * Determines how much the edge detection threshold should be scaled when using predication.\n *\n * @type {Boolean|Texture|Number}\n */\n get predicationScale() {\n return Number(this.defines.PREDICATION_SCALE);\n }\n set predicationScale(value) {\n this.defines.PREDICATION_SCALE = value.toFixed(\"6\");\n this.needsUpdate = true;\n }\n /**\n * Returns the predication scale.\n *\n * @deprecated Use predicationScale instead.\n * @return {Number} The scale.\n */\n getPredicationScale() {\n return this.predicationScale;\n }\n /**\n * Sets the predication scale.\n *\n * @deprecated Use predicationScale instead.\n * @param {Number} value - The scale. Range: [1.0, 5.0].\n */\n setPredicationScale(value) {\n this.predicationScale = value;\n }\n /**\n * The predication strength. Range: [0.0, 1.0].\n *\n * Determines how much the edge detection threshold should be decreased locally when using predication.\n *\n * @type {Number}\n */\n get predicationStrength() {\n return Number(this.defines.PREDICATION_STRENGTH);\n }\n set predicationStrength(value) {\n this.defines.PREDICATION_STRENGTH = value.toFixed(\"6\");\n this.needsUpdate = true;\n }\n /**\n * Returns the predication strength.\n *\n * @deprecated Use predicationStrength instead.\n * @return {Number} The strength.\n */\n getPredicationStrength() {\n return this.predicationStrength;\n }\n /**\n * Sets the predication strength.\n *\n * @deprecated Use predicationStrength instead.\n * @param {Number} value - The strength. Range: [0.0, 1.0].\n */\n setPredicationStrength(value) {\n this.predicationStrength = value;\n }\n /**\n * Sets the size of this object.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n this.uniforms.texelSize.value.set(1 / width, 1 / height);\n }\n};\n\n// src/materials/EffectMaterial.js\nimport { BasicDepthPacking as BasicDepthPacking6, NoBlending as NoBlending13, PerspectiveCamera as PerspectiveCamera5, REVISION as REVISION3, ShaderMaterial as ShaderMaterial13, Uniform as Uniform13, Vector2 as Vector28 } from \"three\";\n\n// src/materials/glsl/effect.frag\nvar effect_default = \"#include \\n#include \\n#include \\n#define packFloatToRGBA(v) packDepthToRGBA(v)\\n#define unpackRGBAToFloat(v) unpackRGBAToDepth(v)\\n#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D inputBuffer;\\n#else\\nuniform lowp sampler2D inputBuffer;\\n#endif\\n#if DEPTH_PACKING == 3201\\nuniform lowp sampler2D depthBuffer;\\n#elif defined(GL_FRAGMENT_PRECISION_HIGH)\\nuniform highp sampler2D depthBuffer;\\n#else\\nuniform mediump sampler2D depthBuffer;\\n#endif\\nuniform vec2 resolution;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float aspect;uniform float time;varying vec2 vUv;\\n#if THREE_REVISION < 143\\n#define luminance(v) linearToRelativeLuminance(v)\\n#endif\\n#if THREE_REVISION >= 137\\nvec4 sRGBToLinear(const in vec4 value){return 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#endif\\nfloat readDepth(const in vec2 uv){\\n#if DEPTH_PACKING == 3201\\nreturn unpackRGBAToDepth(texture2D(depthBuffer,uv));\\n#else\\nreturn texture2D(depthBuffer,uv).r;\\n#endif\\n}float getViewZ(const in float depth){\\n#ifdef PERSPECTIVE_CAMERA\\nreturn perspectiveDepthToViewZ(depth,cameraNear,cameraFar);\\n#else\\nreturn orthographicDepthToViewZ(depth,cameraNear,cameraFar);\\n#endif\\n}vec3 RGBToHCV(const in vec3 RGB){vec4 P=mix(vec4(RGB.bg,-1.0,2.0/3.0),vec4(RGB.gb,0.0,-1.0/3.0),step(RGB.b,RGB.g));vec4 Q=mix(vec4(P.xyw,RGB.r),vec4(RGB.r,P.yzx),step(P.x,RGB.r));float C=Q.x-min(Q.w,Q.y);float H=abs((Q.w-Q.y)/(6.0*C+EPSILON)+Q.z);return vec3(H,C,Q.x);}vec3 RGBToHSL(const in vec3 RGB){vec3 HCV=RGBToHCV(RGB);float L=HCV.z-HCV.y*0.5;float S=HCV.y/(1.0-abs(L*2.0-1.0)+EPSILON);return vec3(HCV.x,S,L);}vec3 HueToRGB(const in float H){float R=abs(H*6.0-3.0)-1.0;float G=2.0-abs(H*6.0-2.0);float B=2.0-abs(H*6.0-4.0);return clamp(vec3(R,G,B),0.0,1.0);}vec3 HSLToRGB(const in vec3 HSL){vec3 RGB=HueToRGB(HSL.x);float C=(1.0-abs(2.0*HSL.z-1.0))*HSL.y;return(RGB-0.5)*C+HSL.z;}FRAGMENT_HEAD void main(){FRAGMENT_MAIN_UV vec4 color0=texture2D(inputBuffer,UV);vec4 color1=vec4(0.0);FRAGMENT_MAIN_IMAGE gl_FragColor=color0;\\n#ifdef ENCODE_OUTPUT\\n#include \\n#endif\\n#include \\n}\";\n\n// src/materials/glsl/effect.vert\nvar effect_default2 = \"uniform vec2 resolution;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float aspect;uniform float time;varying vec2 vUv;VERTEX_HEAD void main(){vUv=position.xy*0.5+0.5;VERTEX_MAIN_SUPPORT gl_Position=vec4(position.xy,1.0,1.0);}\";\n\n// src/materials/EffectMaterial.js\nvar EffectMaterial = class extends ShaderMaterial13 {\n /**\n * Constructs a new effect material.\n *\n * @param {Map} [shaderParts] - Deprecated. Use setShaderData instead.\n * @param {Map} [defines] - Deprecated. Use setShaderData instead.\n * @param {Map} [uniforms] - Deprecated. Use setShaderData instead.\n * @param {Camera} [camera] - A camera.\n * @param {Boolean} [dithering=false] - Deprecated.\n */\n constructor(shaderParts, defines, uniforms, camera, dithering = false) {\n super({\n name: \"EffectMaterial\",\n defines: {\n THREE_REVISION: REVISION3.replace(/\\D+/g, \"\"),\n DEPTH_PACKING: \"0\",\n ENCODE_OUTPUT: \"1\"\n },\n uniforms: {\n inputBuffer: new Uniform13(null),\n depthBuffer: new Uniform13(null),\n resolution: new Uniform13(new Vector28()),\n texelSize: new Uniform13(new Vector28()),\n cameraNear: new Uniform13(0.3),\n cameraFar: new Uniform13(1e3),\n aspect: new Uniform13(1),\n time: new Uniform13(0)\n },\n blending: NoBlending13,\n toneMapped: false,\n depthWrite: false,\n depthTest: false,\n dithering\n });\n if (shaderParts) {\n this.setShaderParts(shaderParts);\n }\n if (defines) {\n this.setDefines(defines);\n }\n if (uniforms) {\n this.setUniforms(uniforms);\n }\n this.copyCameraSettings(camera);\n }\n /**\n * The input buffer.\n *\n * @type {Texture}\n */\n set inputBuffer(value) {\n this.uniforms.inputBuffer.value = value;\n }\n /**\n * Sets the input buffer.\n *\n * @deprecated Use inputBuffer instead.\n * @param {Texture} value - The input buffer.\n */\n setInputBuffer(value) {\n this.uniforms.inputBuffer.value = value;\n }\n /**\n * The depth buffer.\n *\n * @type {Texture}\n */\n get depthBuffer() {\n return this.uniforms.depthBuffer.value;\n }\n set depthBuffer(value) {\n this.uniforms.depthBuffer.value = value;\n }\n /**\n * The depth packing strategy.\n *\n * @type {DepthPackingStrategies}\n */\n get depthPacking() {\n return Number(this.defines.DEPTH_PACKING);\n }\n set depthPacking(value) {\n this.defines.DEPTH_PACKING = value.toFixed(0);\n this.needsUpdate = true;\n }\n /**\n * Sets the depth buffer.\n *\n * @deprecated Use depthBuffer and depthPacking instead.\n * @param {Texture} buffer - The depth texture.\n * @param {DepthPackingStrategies} [depthPacking=BasicDepthPacking] - The depth packing strategy.\n */\n setDepthBuffer(buffer, depthPacking = BasicDepthPacking6) {\n this.depthBuffer = buffer;\n this.depthPacking = depthPacking;\n }\n /**\n * Sets the shader data.\n *\n * @param {EffectShaderData} data - The shader data.\n * @return {EffectMaterial} This material.\n */\n setShaderData(data) {\n this.setShaderParts(data.shaderParts);\n this.setDefines(data.defines);\n this.setUniforms(data.uniforms);\n this.setExtensions(data.extensions);\n }\n /**\n * Sets the shader parts.\n *\n * @deprecated Use setShaderData instead.\n * @param {Map} shaderParts - A collection of shader snippets. See {@link EffectShaderSection}.\n * @return {EffectMaterial} This material.\n */\n setShaderParts(shaderParts) {\n this.fragmentShader = effect_default.replace(EffectShaderSection.FRAGMENT_HEAD, shaderParts.get(EffectShaderSection.FRAGMENT_HEAD) || \"\").replace(EffectShaderSection.FRAGMENT_MAIN_UV, shaderParts.get(EffectShaderSection.FRAGMENT_MAIN_UV) || \"\").replace(EffectShaderSection.FRAGMENT_MAIN_IMAGE, shaderParts.get(EffectShaderSection.FRAGMENT_MAIN_IMAGE) || \"\");\n this.vertexShader = effect_default2.replace(EffectShaderSection.VERTEX_HEAD, shaderParts.get(EffectShaderSection.VERTEX_HEAD) || \"\").replace(EffectShaderSection.VERTEX_MAIN_SUPPORT, shaderParts.get(EffectShaderSection.VERTEX_MAIN_SUPPORT) || \"\");\n this.fragmentShader = updateFragmentShader(this.fragmentShader);\n this.needsUpdate = true;\n return this;\n }\n /**\n * Sets the shader macros.\n *\n * @deprecated Use setShaderData instead.\n * @param {Map} defines - A collection of preprocessor macro definitions.\n * @return {EffectMaterial} This material.\n */\n setDefines(defines) {\n for (const entry of defines.entries()) {\n this.defines[entry[0]] = entry[1];\n }\n this.needsUpdate = true;\n return this;\n }\n /**\n * Sets the shader uniforms.\n *\n * @deprecated Use setShaderData instead.\n * @param {Map} uniforms - A collection of uniforms.\n * @return {EffectMaterial} This material.\n */\n setUniforms(uniforms) {\n for (const entry of uniforms.entries()) {\n this.uniforms[entry[0]] = entry[1];\n }\n return this;\n }\n /**\n * Sets the required shader extensions.\n *\n * @deprecated Use setShaderData instead.\n * @param {Set} extensions - A collection of extensions.\n * @return {EffectMaterial} This material.\n */\n setExtensions(extensions) {\n this.extensions = {};\n for (const extension of extensions) {\n this.extensions[extension] = true;\n }\n return this;\n }\n /**\n * Indicates whether output encoding is enabled.\n *\n * @type {Boolean}\n */\n get encodeOutput() {\n return this.defines.ENCODE_OUTPUT !== void 0;\n }\n set encodeOutput(value) {\n if (this.encodeOutput !== value) {\n if (value) {\n this.defines.ENCODE_OUTPUT = \"1\";\n } else {\n delete this.defines.ENCODE_OUTPUT;\n }\n this.needsUpdate = true;\n }\n }\n /**\n * Indicates whether output encoding is enabled.\n *\n * @deprecated Use encodeOutput instead.\n * @return {Boolean} Whether output encoding is enabled.\n */\n isOutputEncodingEnabled(value) {\n return this.encodeOutput;\n }\n /**\n * Enables or disables output encoding.\n *\n * @deprecated Use encodeOutput instead.\n * @param {Boolean} value - Whether output encoding should be enabled.\n */\n setOutputEncodingEnabled(value) {\n this.encodeOutput = value;\n }\n /**\n * The time in seconds.\n *\n * @type {Number}\n */\n get time() {\n return this.uniforms.time.value;\n }\n set time(value) {\n this.uniforms.time.value = value;\n }\n /**\n * Sets the delta time.\n *\n * @deprecated Use time instead.\n * @param {Number} value - The delta time in seconds.\n */\n setDeltaTime(value) {\n this.uniforms.time.value += value;\n }\n /**\n * Copies the settings of the given camera.\n *\n * @deprecated Use copyCameraSettings instead.\n * @param {Camera} camera - A camera.\n */\n adoptCameraSettings(camera) {\n this.copyCameraSettings(camera);\n }\n /**\n * Copies the settings of the given camera.\n *\n * @param {Camera} camera - A camera.\n */\n copyCameraSettings(camera) {\n if (camera) {\n this.uniforms.cameraNear.value = camera.near;\n this.uniforms.cameraFar.value = camera.far;\n if (camera instanceof PerspectiveCamera5) {\n this.defines.PERSPECTIVE_CAMERA = \"1\";\n } else {\n delete this.defines.PERSPECTIVE_CAMERA;\n }\n this.needsUpdate = true;\n }\n }\n /**\n * Sets the resolution.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n const uniforms = this.uniforms;\n uniforms.resolution.value.set(width, height);\n uniforms.texelSize.value.set(1 / width, 1 / height);\n uniforms.aspect.value = width / height;\n }\n /**\n * An enumeration of shader code placeholders.\n *\n * @deprecated Use EffectShaderSection instead.\n * @type {Object}\n */\n static get Section() {\n return EffectShaderSection;\n }\n};\n\n// src/materials/GaussianBlurMaterial.js\nimport { NoBlending as NoBlending14, ShaderMaterial as ShaderMaterial14, Uniform as Uniform14, Vector2 as Vector29 } from \"three\";\n\n// src/materials/glsl/convolution.gaussian.frag\nvar convolution_gaussian_default = \"#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D inputBuffer;\\n#else\\nuniform lowp sampler2D inputBuffer;\\n#endif\\nuniform vec2 kernel[STEPS];varying vec2 vOffset;varying vec2 vUv;void main(){vec4 result=texture2D(inputBuffer,vUv)*kernel[0].y;for(int i=1;i\\n}\";\n\n// src/materials/glsl/convolution.gaussian.vert\nvar convolution_gaussian_default2 = \"uniform vec2 texelSize;uniform vec2 direction;uniform float scale;varying vec2 vOffset;varying vec2 vUv;void main(){vOffset=direction*texelSize*scale;vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}\";\n\n// src/materials/GaussianBlurMaterial.js\nvar GaussianBlurMaterial = class extends ShaderMaterial14 {\n /**\n * Constructs a new convolution material.\n *\n * @param {Object} [options] - The options.\n * @param {Number} [options.kernelSize=35] - The kernel size.\n */\n constructor({ kernelSize = 35 } = {}) {\n super({\n name: \"GaussianBlurMaterial\",\n uniforms: {\n inputBuffer: new Uniform14(null),\n texelSize: new Uniform14(new Vector29()),\n direction: new Uniform14(new Vector29()),\n kernel: new Uniform14(null),\n scale: new Uniform14(1)\n },\n blending: NoBlending14,\n toneMapped: false,\n depthWrite: false,\n depthTest: false,\n fragmentShader: convolution_gaussian_default,\n vertexShader: convolution_gaussian_default2\n });\n this.fragmentShader = updateFragmentShader(this.fragmentShader);\n this._kernelSize = 0;\n this.kernelSize = kernelSize;\n }\n /**\n * The input buffer.\n *\n * @type {Texture}\n */\n set inputBuffer(value) {\n this.uniforms.inputBuffer.value = value;\n }\n /**\n * The kernel size.\n *\n * @type {Number}\n */\n get kernelSize() {\n return this._kernelSize;\n }\n set kernelSize(value) {\n this._kernelSize = value;\n this.generateKernel(value);\n }\n /**\n * The blur direction.\n *\n * @type {Vector2}\n */\n get direction() {\n return this.uniforms.direction.value;\n }\n /**\n * The blur kernel scale. Values greater than 1.0 may introduce artifacts.\n *\n * @type {Number}\n */\n get scale() {\n return this.uniforms.scale.value;\n }\n set scale(value) {\n this.uniforms.scale.value = value;\n }\n /**\n * Generates the Gauss kernel.\n *\n * @param {KernelSize} kernelSize - The kernel size. Should be an odd number.\n * @private\n */\n generateKernel(kernelSize) {\n const kernel = new GaussKernel(kernelSize);\n const steps = kernel.linearSteps;\n const kernelData = new Float64Array(steps * 2);\n for (let i = 0, j = 0; i < steps; ++i) {\n kernelData[j++] = kernel.linearOffsets[i];\n kernelData[j++] = kernel.linearWeights[i];\n }\n this.uniforms.kernel.value = kernelData;\n this.defines.STEPS = steps.toFixed(0);\n this.needsUpdate = true;\n }\n /**\n * Sets the size of this object.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n this.uniforms.texelSize.value.set(1 / width, 1 / height);\n }\n};\n\n// src/materials/GodRaysMaterial.js\nimport { NoBlending as NoBlending15, ShaderMaterial as ShaderMaterial15, Uniform as Uniform15 } from \"three\";\n\n// src/materials/glsl/convolution.god-rays.frag\nvar convolution_god_rays_default = \"#include \\n#include \\n#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D inputBuffer;\\n#else\\nuniform lowp sampler2D inputBuffer;\\n#endif\\nuniform vec2 lightPosition;uniform float exposure;uniform float decay;uniform float density;uniform float weight;uniform float clampMax;varying vec2 vUv;void main(){vec2 coord=vUv;vec2 delta=lightPosition-coord;delta*=1.0/SAMPLES_FLOAT*density;float illuminationDecay=1.0;vec4 color=vec4(0.0);for(int i=0;i\\n}\";\n\n// src/materials/GodRaysMaterial.js\nvar GodRaysMaterial = class extends ShaderMaterial15 {\n /**\n * Constructs a new god rays material.\n *\n * TODO Remove lightPosition param.\n * @param {Vector2} lightPosition - Deprecated.\n */\n constructor(lightPosition) {\n super({\n name: \"GodRaysMaterial\",\n defines: {\n SAMPLES_INT: \"60\",\n SAMPLES_FLOAT: \"60.0\"\n },\n uniforms: {\n inputBuffer: new Uniform15(null),\n lightPosition: new Uniform15(lightPosition),\n density: new Uniform15(1),\n decay: new Uniform15(1),\n weight: new Uniform15(1),\n exposure: new Uniform15(1),\n clampMax: new Uniform15(1)\n },\n blending: NoBlending15,\n toneMapped: false,\n depthWrite: false,\n depthTest: false,\n fragmentShader: convolution_god_rays_default,\n vertexShader: common_default\n });\n }\n /**\n * The input buffer.\n *\n * @type {Texture}\n */\n set inputBuffer(value) {\n this.uniforms.inputBuffer.value = value;\n }\n /**\n * Sets the input buffer.\n *\n * @deprecated Use inputBuffer instead.\n * @param {Texture} value - The input buffer.\n */\n setInputBuffer(value) {\n this.uniforms.inputBuffer.value = value;\n }\n /**\n * The screen space position of the light source.\n *\n * @type {Vector2}\n */\n get lightPosition() {\n return this.uniforms.lightPosition.value;\n }\n /**\n * Returns the screen space position of the light source.\n *\n * @deprecated Use lightPosition instead.\n * @return {Vector2} The position.\n */\n getLightPosition() {\n return this.uniforms.lightPosition.value;\n }\n /**\n * Sets the screen space position of the light source.\n *\n * @deprecated Use lightPosition instead.\n * @param {Vector2} value - The position.\n */\n setLightPosition(value) {\n this.uniforms.lightPosition.value = value;\n }\n /**\n * The density.\n *\n * @type {Number}\n */\n get density() {\n return this.uniforms.density.value;\n }\n set density(value) {\n this.uniforms.density.value = value;\n }\n /**\n * Returns the density.\n *\n * @deprecated Use density instead.\n * @return {Number} The density.\n */\n getDensity() {\n return this.uniforms.density.value;\n }\n /**\n * Sets the density.\n *\n * @deprecated Use density instead.\n * @param {Number} value - The density.\n */\n setDensity(value) {\n this.uniforms.density.value = value;\n }\n /**\n * The decay.\n *\n * @type {Number}\n */\n get decay() {\n return this.uniforms.decay.value;\n }\n set decay(value) {\n this.uniforms.decay.value = value;\n }\n /**\n * Returns the decay.\n *\n * @deprecated Use decay instead.\n * @return {Number} The decay.\n */\n getDecay() {\n return this.uniforms.decay.value;\n }\n /**\n * Sets the decay.\n *\n * @deprecated Use decay instead.\n * @param {Number} value - The decay.\n */\n setDecay(value) {\n this.uniforms.decay.value = value;\n }\n /**\n * The weight.\n *\n * @type {Number}\n */\n get weight() {\n return this.uniforms.weight.value;\n }\n set weight(value) {\n this.uniforms.weight.value = value;\n }\n /**\n * Returns the weight.\n *\n * @deprecated Use weight instead.\n * @return {Number} The weight.\n */\n getWeight() {\n return this.uniforms.weight.value;\n }\n /**\n * Sets the weight.\n *\n * @deprecated Use weight instead.\n * @param {Number} value - The weight.\n */\n setWeight(value) {\n this.uniforms.weight.value = value;\n }\n /**\n * The exposure.\n *\n * @type {Number}\n */\n get exposure() {\n return this.uniforms.exposure.value;\n }\n set exposure(value) {\n this.uniforms.exposure.value = value;\n }\n /**\n * Returns the exposure.\n *\n * @deprecated Use exposure instead.\n * @return {Number} The exposure.\n */\n getExposure() {\n return this.uniforms.exposure.value;\n }\n /**\n * Sets the exposure.\n *\n * @deprecated Use exposure instead.\n * @param {Number} value - The exposure.\n */\n setExposure(value) {\n this.uniforms.exposure.value = value;\n }\n /**\n * The maximum light intensity.\n *\n * @type {Number}\n */\n get maxIntensity() {\n return this.uniforms.clampMax.value;\n }\n set maxIntensity(value) {\n this.uniforms.clampMax.value = value;\n }\n /**\n * Returns the maximum light intensity.\n *\n * @deprecated Use maxIntensity instead.\n * @return {Number} The maximum light intensity.\n */\n getMaxIntensity() {\n return this.uniforms.clampMax.value;\n }\n /**\n * Sets the maximum light intensity.\n *\n * @deprecated Use maxIntensity instead.\n * @param {Number} value - The maximum light intensity.\n */\n setMaxIntensity(value) {\n this.uniforms.clampMax.value = value;\n }\n /**\n * The amount of samples per pixel.\n *\n * @type {Number}\n */\n get samples() {\n return Number(this.defines.SAMPLES_INT);\n }\n set samples(value) {\n const s = Math.floor(value);\n this.defines.SAMPLES_INT = s.toFixed(0);\n this.defines.SAMPLES_FLOAT = s.toFixed(1);\n this.needsUpdate = true;\n }\n /**\n * Returns the amount of samples per pixel.\n *\n * @deprecated Use samples instead.\n * @return {Number} The sample count.\n */\n getSamples() {\n return this.samples;\n }\n /**\n * Sets the amount of samples per pixel.\n *\n * @deprecated Use samples instead.\n * @param {Number} value - The sample count.\n */\n setSamples(value) {\n this.samples = value;\n }\n};\n\n// src/materials/LuminanceMaterial.js\nimport { NoBlending as NoBlending16, REVISION as REVISION4, ShaderMaterial as ShaderMaterial16, Uniform as Uniform16 } from \"three\";\n\n// src/materials/glsl/luminance.frag\nvar luminance_default = \"#include \\n#if THREE_REVISION < 143\\n#define luminance(v) linearToRelativeLuminance(v)\\n#endif\\n#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D inputBuffer;\\n#else\\nuniform lowp sampler2D inputBuffer;\\n#endif\\n#ifdef RANGE\\nuniform vec2 range;\\n#elif defined(THRESHOLD)\\nuniform float threshold;uniform float smoothing;\\n#endif\\nvarying vec2 vUv;void main(){vec4 texel=texture2D(inputBuffer,vUv);float l=luminance(texel.rgb);\\n#ifdef RANGE\\nfloat low=step(range.x,l);float high=step(l,range.y);l*=low*high;\\n#elif defined(THRESHOLD)\\nl=smoothstep(threshold,threshold+smoothing,l);\\n#endif\\n#ifdef COLOR\\ngl_FragColor=vec4(texel.rgb*l,l);\\n#else\\ngl_FragColor=vec4(l);\\n#endif\\n}\";\n\n// src/materials/LuminanceMaterial.js\nvar LuminanceMaterial = class extends ShaderMaterial16 {\n /**\n * Constructs a new luminance material.\n *\n * @param {Boolean} [colorOutput=false] - Defines whether the shader should output colors scaled with their luminance value.\n * @param {Vector2} [luminanceRange] - If provided, the shader will mask out texels that aren't in the specified luminance range.\n */\n constructor(colorOutput = false, luminanceRange = null) {\n super({\n name: \"LuminanceMaterial\",\n defines: {\n THREE_REVISION: REVISION4.replace(/\\D+/g, \"\")\n },\n uniforms: {\n inputBuffer: new Uniform16(null),\n threshold: new Uniform16(0),\n smoothing: new Uniform16(1),\n range: new Uniform16(null)\n },\n blending: NoBlending16,\n toneMapped: false,\n depthWrite: false,\n depthTest: false,\n fragmentShader: luminance_default,\n vertexShader: common_default\n });\n this.colorOutput = colorOutput;\n this.luminanceRange = luminanceRange;\n }\n /**\n * The input buffer.\n *\n * @type {Texture}\n */\n set inputBuffer(value) {\n this.uniforms.inputBuffer.value = value;\n }\n /**\n * Sets the input buffer.\n *\n * @deprecated Use inputBuffer instead.\n * @param {Texture} value - The input buffer.\n */\n setInputBuffer(value) {\n this.uniforms.inputBuffer.value = value;\n }\n /**\n * The luminance threshold.\n *\n * @type {Number}\n */\n get threshold() {\n return this.uniforms.threshold.value;\n }\n set threshold(value) {\n if (this.smoothing > 0 || value > 0) {\n this.defines.THRESHOLD = \"1\";\n } else {\n delete this.defines.THRESHOLD;\n }\n this.uniforms.threshold.value = value;\n }\n /**\n * Returns the luminance threshold.\n *\n * @deprecated Use threshold instead.\n * @return {Number} The threshold.\n */\n getThreshold() {\n return this.threshold;\n }\n /**\n * Sets the luminance threshold.\n *\n * @deprecated Use threshold instead.\n * @param {Number} value - The threshold.\n */\n setThreshold(value) {\n this.threshold = value;\n }\n /**\n * The luminance threshold smoothing.\n *\n * @type {Number}\n */\n get smoothing() {\n return this.uniforms.smoothing.value;\n }\n set smoothing(value) {\n if (this.threshold > 0 || value > 0) {\n this.defines.THRESHOLD = \"1\";\n } else {\n delete this.defines.THRESHOLD;\n }\n this.uniforms.smoothing.value = value;\n }\n /**\n * Returns the luminance threshold smoothing factor.\n *\n * @deprecated Use smoothing instead.\n * @return {Number} The smoothing factor.\n */\n getSmoothingFactor() {\n return this.smoothing;\n }\n /**\n * Sets the luminance threshold smoothing factor.\n *\n * @deprecated Use smoothing instead.\n * @param {Number} value - The smoothing factor.\n */\n setSmoothingFactor(value) {\n this.smoothing = value;\n }\n /**\n * Indicates whether the luminance threshold is enabled.\n *\n * @type {Boolean}\n * @deprecated Adjust the threshold or smoothing factor instead.\n */\n get useThreshold() {\n return this.threshold > 0 || this.smoothing > 0;\n }\n set useThreshold(value) {\n }\n /**\n * Indicates whether color output is enabled.\n *\n * @type {Boolean}\n */\n get colorOutput() {\n return this.defines.COLOR !== void 0;\n }\n set colorOutput(value) {\n if (value) {\n this.defines.COLOR = \"1\";\n } else {\n delete this.defines.COLOR;\n }\n this.needsUpdate = true;\n }\n /**\n * Indicates whether color output is enabled.\n *\n * @deprecated Use colorOutput instead.\n * @return {Boolean} Whether color output is enabled.\n */\n isColorOutputEnabled(value) {\n return this.colorOutput;\n }\n /**\n * Enables or disables color output.\n *\n * @deprecated Use colorOutput instead.\n * @param {Boolean} value - Whether color output should be enabled.\n */\n setColorOutputEnabled(value) {\n this.colorOutput = value;\n }\n /**\n * Indicates whether luminance masking is enabled.\n *\n * @type {Boolean}\n * @deprecated\n */\n get useRange() {\n return this.luminanceRange !== null;\n }\n set useRange(value) {\n this.luminanceRange = null;\n }\n /**\n * The luminance range. Set to null to disable.\n *\n * @type {Boolean}\n */\n get luminanceRange() {\n return this.uniforms.range.value;\n }\n set luminanceRange(value) {\n if (value !== null) {\n this.defines.RANGE = \"1\";\n } else {\n delete this.defines.RANGE;\n }\n this.uniforms.range.value = value;\n this.needsUpdate = true;\n }\n /**\n * Returns the current luminance range.\n *\n * @deprecated Use luminanceRange instead.\n * @return {Vector2} The luminance range.\n */\n getLuminanceRange() {\n return this.luminanceRange;\n }\n /**\n * Sets a luminance range. Set to null to disable.\n *\n * @deprecated Use luminanceRange instead.\n * @param {Vector2} value - The luminance range.\n */\n setLuminanceRange(value) {\n this.luminanceRange = value;\n }\n};\n\n// src/materials/MaskMaterial.js\nimport { NoBlending as NoBlending17, ShaderMaterial as ShaderMaterial17, Uniform as Uniform17, UnsignedByteType } from \"three\";\n\n// src/materials/glsl/mask.frag\nvar mask_default = \"#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D inputBuffer;\\n#else\\nuniform lowp sampler2D inputBuffer;\\n#endif\\n#ifdef MASK_PRECISION_HIGH\\nuniform mediump sampler2D maskTexture;\\n#else\\nuniform lowp sampler2D maskTexture;\\n#endif\\n#if MASK_FUNCTION != 0\\nuniform float strength;\\n#endif\\nvarying vec2 vUv;void main(){\\n#if COLOR_CHANNEL == 0\\nfloat mask=texture2D(maskTexture,vUv).r;\\n#elif COLOR_CHANNEL == 1\\nfloat mask=texture2D(maskTexture,vUv).g;\\n#elif COLOR_CHANNEL == 2\\nfloat mask=texture2D(maskTexture,vUv).b;\\n#else\\nfloat mask=texture2D(maskTexture,vUv).a;\\n#endif\\n#if MASK_FUNCTION == 0\\n#ifdef INVERTED\\nmask=step(mask,0.0);\\n#else\\nmask=1.0-step(mask,0.0);\\n#endif\\n#else\\nmask=clamp(mask*strength,0.0,1.0);\\n#ifdef INVERTED\\nmask=1.0-mask;\\n#endif\\n#endif\\n#if MASK_FUNCTION == 3\\nvec4 texel=texture2D(inputBuffer,vUv);gl_FragColor=vec4(mask*texel.rgb,texel.a);\\n#elif MASK_FUNCTION == 2\\ngl_FragColor=vec4(mask*texture2D(inputBuffer,vUv).rgb,mask);\\n#else\\ngl_FragColor=mask*texture2D(inputBuffer,vUv);\\n#endif\\n}\";\n\n// src/materials/MaskMaterial.js\nvar MaskMaterial = class extends ShaderMaterial17 {\n /**\n * Constructs a new mask material.\n *\n * @param {Texture} [maskTexture] - The mask texture.\n */\n constructor(maskTexture = null) {\n super({\n name: \"MaskMaterial\",\n uniforms: {\n maskTexture: new Uniform17(maskTexture),\n inputBuffer: new Uniform17(null),\n strength: new Uniform17(1)\n },\n blending: NoBlending17,\n toneMapped: false,\n depthWrite: false,\n depthTest: false,\n fragmentShader: mask_default,\n vertexShader: common_default\n });\n this.colorChannel = ColorChannel.RED;\n this.maskFunction = MaskFunction.DISCARD;\n }\n /**\n * The input buffer.\n *\n * @type {Texture}\n */\n set inputBuffer(value) {\n this.uniforms.inputBuffer.value = value;\n }\n /**\n * Sets the input buffer.\n *\n * @deprecated Use inputBuffer instead.\n * @param {Texture} value - The input buffer.\n */\n setInputBuffer(value) {\n this.uniforms.inputBuffer.value = value;\n }\n /**\n * The mask texture.\n *\n * @type {Texture}\n */\n set maskTexture(value) {\n this.uniforms.maskTexture.value = value;\n delete this.defines.MASK_PRECISION_HIGH;\n if (value.type !== UnsignedByteType) {\n this.defines.MASK_PRECISION_HIGH = \"1\";\n }\n this.needsUpdate = true;\n }\n /**\n * Sets the mask texture.\n *\n * @deprecated Use maskTexture instead.\n * @param {Texture} value - The texture.\n */\n setMaskTexture(value) {\n this.maskTexture = value;\n }\n /**\n * Sets the color channel to use for masking. Default is `ColorChannel.RED`.\n *\n * @type {ColorChannel}\n */\n set colorChannel(value) {\n this.defines.COLOR_CHANNEL = value.toFixed(0);\n this.needsUpdate = true;\n }\n /**\n * Sets the color channel to use for masking. Default is `ColorChannel.RED`.\n *\n * @deprecated Use colorChannel instead.\n * @param {ColorChannel} value - The channel.\n */\n setColorChannel(value) {\n this.colorChannel = value;\n }\n /**\n * The masking technique. Default is `MaskFunction.DISCARD`.\n *\n * @type {MaskFunction}\n */\n set maskFunction(value) {\n this.defines.MASK_FUNCTION = value.toFixed(0);\n this.needsUpdate = true;\n }\n /**\n * Sets the masking technique. Default is `MaskFunction.DISCARD`.\n *\n * @deprecated Use maskFunction instead.\n * @param {MaskFunction} value - The function.\n */\n setMaskFunction(value) {\n this.maskFunction = value;\n }\n /**\n * Indicates whether the masking is inverted.\n *\n * @type {Boolean}\n */\n get inverted() {\n return this.defines.INVERTED !== void 0;\n }\n set inverted(value) {\n if (this.inverted && !value) {\n delete this.defines.INVERTED;\n } else if (value) {\n this.defines.INVERTED = \"1\";\n }\n this.needsUpdate = true;\n }\n /**\n * Indicates whether the masking is inverted.\n *\n * @deprecated Use inverted instead.\n * @return {Boolean} Whether the masking is inverted.\n */\n isInverted() {\n return this.inverted;\n }\n /**\n * Determines whether the masking should be inverted.\n *\n * @deprecated Use inverted instead.\n * @param {Boolean} value - Whether the masking should be inverted.\n */\n setInverted(value) {\n this.inverted = value;\n }\n /**\n * The current mask strength.\n *\n * Individual mask values will be clamped to [0.0, 1.0]. Has no effect when the mask function is set to `DISCARD`.\n *\n * @type {Number}\n */\n get strength() {\n return this.uniforms.strength.value;\n }\n set strength(value) {\n this.uniforms.strength.value = value;\n }\n /**\n * Returns the current mask strength.\n *\n * @deprecated Use strength instead.\n * @return {Number} The mask strength.\n */\n getStrength() {\n return this.strength;\n }\n /**\n * Sets the mask strength.\n *\n * Has no effect when the mask function is set to `DISCARD`.\n *\n * @deprecated Use strength instead.\n * @param {Number} value - The mask strength.\n */\n setStrength(value) {\n this.strength = value;\n }\n};\n\n// src/materials/OutlineMaterial.js\nimport { NoBlending as NoBlending18, ShaderMaterial as ShaderMaterial18, Uniform as Uniform18, Vector2 as Vector210 } from \"three\";\n\n// src/materials/glsl/outline.frag\nvar outline_default = \"uniform lowp sampler2D inputBuffer;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 c0=texture2D(inputBuffer,vUv0).rg;vec2 c1=texture2D(inputBuffer,vUv1).rg;vec2 c2=texture2D(inputBuffer,vUv2).rg;vec2 c3=texture2D(inputBuffer,vUv3).rg;float d0=(c0.x-c1.x)*0.5;float d1=(c2.x-c3.x)*0.5;float d=length(vec2(d0,d1));float a0=min(c0.y,c1.y);float a1=min(c2.y,c3.y);float visibilityFactor=min(a0,a1);gl_FragColor.rg=(1.0-visibilityFactor>0.001)?vec2(d,0.0):vec2(0.0,d);}\";\n\n// src/materials/glsl/outline.vert\nvar outline_default2 = \"uniform vec2 texelSize;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vUv0=vec2(uv.x+texelSize.x,uv.y);vUv1=vec2(uv.x-texelSize.x,uv.y);vUv2=vec2(uv.x,uv.y+texelSize.y);vUv3=vec2(uv.x,uv.y-texelSize.y);gl_Position=vec4(position.xy,1.0,1.0);}\";\n\n// src/materials/OutlineMaterial.js\nvar OutlineMaterial = class extends ShaderMaterial18 {\n /**\n * Constructs a new outline material.\n *\n * TODO Remove texelSize param.\n * @param {Vector2} [texelSize] - The screen texel size.\n */\n constructor(texelSize = new Vector210()) {\n super({\n name: \"OutlineMaterial\",\n uniforms: {\n inputBuffer: new Uniform18(null),\n texelSize: new Uniform18(new Vector210())\n },\n blending: NoBlending18,\n toneMapped: false,\n depthWrite: false,\n depthTest: false,\n fragmentShader: outline_default,\n vertexShader: outline_default2\n });\n this.uniforms.texelSize.value.set(texelSize.x, texelSize.y);\n this.uniforms.maskTexture = this.uniforms.inputBuffer;\n }\n /**\n * The input buffer.\n *\n * @type {Texture}\n */\n set inputBuffer(value) {\n this.uniforms.inputBuffer.value = value;\n }\n /**\n * Sets the input buffer.\n *\n * @deprecated Use inputBuffer instead.\n * @param {Texture} value - The input buffer.\n */\n setInputBuffer(value) {\n this.uniforms.inputBuffer.value = value;\n }\n /**\n * Sets the texel size.\n *\n * @deprecated Use setSize() instead.\n * @param {Number} x - The texel width.\n * @param {Number} y - The texel height.\n */\n setTexelSize(x, y) {\n this.uniforms.texelSize.value.set(x, y);\n }\n /**\n * Sets the size of this object.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n this.uniforms.texelSize.value.set(1 / width, 1 / height);\n }\n};\n\n// src/materials/SMAAWeightsMaterial.js\nimport { NoBlending as NoBlending19, ShaderMaterial as ShaderMaterial19, Uniform as Uniform19, Vector2 as Vector211 } from \"three\";\n\n// src/materials/glsl/smaa-weights.frag\nvar smaa_weights_default = \"#define sampleLevelZeroOffset(t, coord, offset) texture2D(t, coord + offset * texelSize)\\n#if __VERSION__ < 300\\n#define round(v) floor(v + 0.5)\\n#endif\\n#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D inputBuffer;\\n#else\\nuniform lowp sampler2D inputBuffer;\\n#endif\\nuniform lowp sampler2D areaTexture;uniform lowp sampler2D searchTexture;uniform vec2 texelSize;uniform vec2 resolution;varying vec2 vUv;varying vec4 vOffset[3];varying vec2 vPixCoord;void movec(const in bvec2 c,inout vec2 variable,const in vec2 value){if(c.x){variable.x=value.x;}if(c.y){variable.y=value.y;}}void movec(const in bvec4 c,inout vec4 variable,const in vec4 value){movec(c.xy,variable.xy,value.xy);movec(c.zw,variable.zw,value.zw);}vec2 decodeDiagBilinearAccess(in vec2 e){e.r=e.r*abs(5.0*e.r-5.0*0.75);return round(e);}vec4 decodeDiagBilinearAccess(in vec4 e){e.rb=e.rb*abs(5.0*e.rb-5.0*0.75);return round(e);}vec2 searchDiag1(const in vec2 texCoord,const in vec2 dir,out vec2 e){vec4 coord=vec4(texCoord,-1.0,1.0);vec3 t=vec3(texelSize,1.0);for(int i=0;i0.9)){break;}coord.xyz=t*vec3(dir,1.0)+coord.xyz;e=texture2D(inputBuffer,coord.xy).rg;coord.w=dot(e,vec2(0.5));}return coord.zw;}vec2 searchDiag2(const in vec2 texCoord,const in vec2 dir,out vec2 e){vec4 coord=vec4(texCoord,-1.0,1.0);coord.x+=0.25*texelSize.x;vec3 t=vec3(texelSize,1.0);for(int i=0;i0.9)){break;}coord.xyz=t*vec3(dir,1.0)+coord.xyz;e=texture2D(inputBuffer,coord.xy).rg;e=decodeDiagBilinearAccess(e);coord.w=dot(e,vec2(0.5));}return coord.zw;}vec2 areaDiag(const in vec2 dist,const in vec2 e,const in float offset){vec2 texCoord=vec2(AREATEX_MAX_DISTANCE_DIAG,AREATEX_MAX_DISTANCE_DIAG)*e+dist;texCoord=AREATEX_PIXEL_SIZE*texCoord+0.5*AREATEX_PIXEL_SIZE;texCoord.x+=0.5;texCoord.y+=AREATEX_SUBTEX_SIZE*offset;return texture2D(areaTexture,texCoord).rg;}vec2 calculateDiagWeights(const in vec2 texCoord,const in vec2 e,const in vec4 subsampleIndices){vec2 weights=vec2(0.0);vec4 d;vec2 end;if(e.r>0.0){d.xz=searchDiag1(texCoord,vec2(-1.0,1.0),end);d.x+=float(end.y>0.9);}else{d.xz=vec2(0.0);}d.yw=searchDiag1(texCoord,vec2(1.0,-1.0),end);if(d.x+d.y>2.0){vec4 coords=vec4(-d.x+0.25,d.x,d.y,-d.y-0.25)*texelSize.xyxy+texCoord.xyxy;vec4 c;c.xy=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(-1,0)).rg;c.zw=sampleLevelZeroOffset(inputBuffer,coords.zw,vec2(1,0)).rg;c.yxwz=decodeDiagBilinearAccess(c.xyzw);vec2 cc=vec2(2.0)*c.xz+c.yw;movec(bvec2(step(0.9,d.zw)),cc,vec2(0.0));weights+=areaDiag(d.xy,cc,subsampleIndices.z);}d.xz=searchDiag2(texCoord,vec2(-1.0,-1.0),end);if(sampleLevelZeroOffset(inputBuffer,texCoord,vec2(1,0)).r>0.0){d.yw=searchDiag2(texCoord,vec2(1.0),end);d.y+=float(end.y>0.9);}else{d.yw=vec2(0.0);}if(d.x+d.y>2.0){vec4 coords=vec4(-d.x,-d.x,d.y,d.y)*texelSize.xyxy+texCoord.xyxy;vec4 c;c.x=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(-1,0)).g;c.y=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(0,-1)).r;c.zw=sampleLevelZeroOffset(inputBuffer,coords.zw,vec2(1,0)).gr;vec2 cc=vec2(2.0)*c.xz+c.yw;movec(bvec2(step(0.9,d.zw)),cc,vec2(0.0));weights+=areaDiag(d.xy,cc,subsampleIndices.w).gr;}return weights;}float searchLength(const in vec2 e,const in float offset){vec2 scale=SEARCHTEX_SIZE*vec2(0.5,-1.0);vec2 bias=SEARCHTEX_SIZE*vec2(offset,1.0);scale+=vec2(-1.0,1.0);bias+=vec2(0.5,-0.5);scale*=1.0/SEARCHTEX_PACKED_SIZE;bias*=1.0/SEARCHTEX_PACKED_SIZE;return texture2D(searchTexture,scale*e+bias).r;}float searchXLeft(in vec2 texCoord,const in float end){vec2 e=vec2(0.0,1.0);for(int i=0;iend&&e.g>0.8281&&e.r==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(-2.0,0.0)*texelSize+texCoord;}float offset=-(255.0/127.0)*searchLength(e,0.0)+3.25;return texelSize.x*offset+texCoord.x;}float searchXRight(vec2 texCoord,const in float end){vec2 e=vec2(0.0,1.0);for(int i=0;i0.8281&&e.r==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(2.0,0.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e,0.5)+3.25;return-texelSize.x*offset+texCoord.x;}float searchYUp(vec2 texCoord,const in float end){vec2 e=vec2(1.0,0.0);for(int i=0;iend&&e.r>0.8281&&e.g==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=-vec2(0.0,2.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e.gr,0.0)+3.25;return texelSize.y*offset+texCoord.y;}float searchYDown(vec2 texCoord,const in float end){vec2 e=vec2(1.0,0.0);for(int i=0;i0.8281&&e.g==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(0.0,2.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e.gr,0.5)+3.25;return-texelSize.y*offset+texCoord.y;}vec2 area(const in vec2 dist,const in float e1,const in float e2,const in float offset){vec2 texCoord=vec2(AREATEX_MAX_DISTANCE)*round(4.0*vec2(e1,e2))+dist;texCoord=AREATEX_PIXEL_SIZE*texCoord+0.5*AREATEX_PIXEL_SIZE;texCoord.y=AREATEX_SUBTEX_SIZE*offset+texCoord.y;return texture2D(areaTexture,texCoord).rg;}void detectHorizontalCornerPattern(inout vec2 weights,const in vec4 texCoord,const in vec2 d){\\n#if !defined(DISABLE_CORNER_DETECTION)\\nvec2 leftRight=step(d.xy,d.yx);vec2 rounding=(1.0-CORNER_ROUNDING_NORM)*leftRight;rounding/=leftRight.x+leftRight.y;vec2 factor=vec2(1.0);factor.x-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(0,1)).r;factor.x-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,1)).r;factor.y-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(0,-2)).r;factor.y-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,-2)).r;weights*=clamp(factor,0.0,1.0);\\n#endif\\n}void detectVerticalCornerPattern(inout vec2 weights,const in vec4 texCoord,const in vec2 d){\\n#if !defined(DISABLE_CORNER_DETECTION)\\nvec2 leftRight=step(d.xy,d.yx);vec2 rounding=(1.0-CORNER_ROUNDING_NORM)*leftRight;rounding/=leftRight.x+leftRight.y;vec2 factor=vec2(1.0);factor.x-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(1,0)).g;factor.x-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,1)).g;factor.y-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(-2,0)).g;factor.y-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(-2,1)).g;weights*=clamp(factor,0.0,1.0);\\n#endif\\n}void main(){vec4 weights=vec4(0.0);vec4 subsampleIndices=vec4(0.0);vec2 e=texture2D(inputBuffer,vUv).rg;if(e.g>0.0){\\n#if !defined(DISABLE_DIAG_DETECTION)\\nweights.rg=calculateDiagWeights(vUv,e,subsampleIndices);if(weights.r==-weights.g){\\n#endif\\nvec2 d;vec3 coords;coords.x=searchXLeft(vOffset[0].xy,vOffset[2].x);coords.y=vOffset[1].y;d.x=coords.x;float e1=texture2D(inputBuffer,coords.xy).r;coords.z=searchXRight(vOffset[0].zw,vOffset[2].y);d.y=coords.z;d=round(resolution.xx*d+-vPixCoord.xx);vec2 sqrtD=sqrt(abs(d));float e2=sampleLevelZeroOffset(inputBuffer,coords.zy,vec2(1,0)).r;weights.rg=area(sqrtD,e1,e2,subsampleIndices.y);coords.y=vUv.y;detectHorizontalCornerPattern(weights.rg,coords.xyzy,d);\\n#if !defined(DISABLE_DIAG_DETECTION)\\n}else{e.r=0.0;}\\n#endif\\n}if(e.r>0.0){vec2 d;vec3 coords;coords.y=searchYUp(vOffset[1].xy,vOffset[2].z);coords.x=vOffset[0].x;d.x=coords.y;float e1=texture2D(inputBuffer,coords.xy).g;coords.z=searchYDown(vOffset[1].zw,vOffset[2].w);d.y=coords.z;d=round(resolution.yy*d-vPixCoord.yy);vec2 sqrtD=sqrt(abs(d));float e2=sampleLevelZeroOffset(inputBuffer,coords.xz,vec2(0,1)).g;weights.ba=area(sqrtD,e1,e2,subsampleIndices.x);coords.x=vUv.x;detectVerticalCornerPattern(weights.ba,coords.xyxz,d);}gl_FragColor=weights;}\";\n\n// src/materials/glsl/smaa-weights.vert\nvar smaa_weights_default2 = \"uniform vec2 texelSize;uniform vec2 resolution;varying vec2 vUv;varying vec4 vOffset[3];varying vec2 vPixCoord;void main(){vUv=position.xy*0.5+0.5;vPixCoord=vUv*resolution;vOffset[0]=vUv.xyxy+texelSize.xyxy*vec4(-0.25,-0.125,1.25,-0.125);vOffset[1]=vUv.xyxy+texelSize.xyxy*vec4(-0.125,-0.25,-0.125,1.25);vOffset[2]=vec4(vOffset[0].xz,vOffset[1].yw)+vec4(-2.0,2.0,-2.0,2.0)*texelSize.xxyy*MAX_SEARCH_STEPS_FLOAT;gl_Position=vec4(position.xy,1.0,1.0);}\";\n\n// src/materials/SMAAWeightsMaterial.js\nvar SMAAWeightsMaterial = class extends ShaderMaterial19 {\n /**\n * Constructs a new SMAA weights material.\n *\n * @param {Vector2} [texelSize] - The absolute screen texel size.\n * @param {Vector2} [resolution] - The resolution.\n */\n constructor(texelSize = new Vector211(), resolution = new Vector211()) {\n super({\n name: \"SMAAWeightsMaterial\",\n defines: {\n // Configurable settings:\n MAX_SEARCH_STEPS_INT: \"16\",\n MAX_SEARCH_STEPS_FLOAT: \"16.0\",\n MAX_SEARCH_STEPS_DIAG_INT: \"8\",\n MAX_SEARCH_STEPS_DIAG_FLOAT: \"8.0\",\n CORNER_ROUNDING: \"25\",\n CORNER_ROUNDING_NORM: \"0.25\",\n // Non-configurable settings:\n AREATEX_MAX_DISTANCE: \"16.0\",\n AREATEX_MAX_DISTANCE_DIAG: \"20.0\",\n AREATEX_PIXEL_SIZE: \"(1.0 / vec2(160.0, 560.0))\",\n AREATEX_SUBTEX_SIZE: \"(1.0 / 7.0)\",\n SEARCHTEX_SIZE: \"vec2(66.0, 33.0)\",\n SEARCHTEX_PACKED_SIZE: \"vec2(64.0, 16.0)\"\n },\n uniforms: {\n inputBuffer: new Uniform19(null),\n searchTexture: new Uniform19(null),\n areaTexture: new Uniform19(null),\n resolution: new Uniform19(resolution),\n texelSize: new Uniform19(texelSize)\n },\n blending: NoBlending19,\n toneMapped: false,\n depthWrite: false,\n depthTest: false,\n fragmentShader: smaa_weights_default,\n vertexShader: smaa_weights_default2\n });\n }\n /**\n * The input buffer.\n *\n * @type {Texture}\n */\n set inputBuffer(value) {\n this.uniforms.inputBuffer.value = value;\n }\n /**\n * Sets the input buffer.\n *\n * @deprecated Use inputBuffer instead.\n * @param {Texture} value - The input buffer.\n */\n setInputBuffer(value) {\n this.uniforms.inputBuffer.value = value;\n }\n /**\n * The search lookup texture.\n *\n * @type {Texture}\n */\n get searchTexture() {\n return this.uniforms.searchTexture.value;\n }\n set searchTexture(value) {\n this.uniforms.searchTexture.value = value;\n }\n /**\n * The area lookup texture.\n *\n * @type {Texture}\n */\n get areaTexture() {\n return this.uniforms.areaTexture.value;\n }\n set areaTexture(value) {\n this.uniforms.areaTexture.value = value;\n }\n /**\n * Sets the search and area lookup textures.\n *\n * @deprecated Use searchTexture and areaTexture instead.\n * @param {Texture} search - The search lookup texture.\n * @param {Texture} area - The area lookup texture.\n */\n setLookupTextures(search, area2) {\n this.searchTexture = search;\n this.areaTexture = area2;\n }\n /**\n * The maximum amount of steps performed in the horizontal/vertical pattern searches, at each side of the pixel.\n * Range: [0, 112].\n *\n * In number of pixels, it's actually the double. So the maximum line length perfectly handled by, for example 16, is\n * 64 (perfectly means that longer lines won't look as good, but are still antialiased).\n *\n * @type {Number}\n */\n get orthogonalSearchSteps() {\n return Number(this.defines.MAX_SEARCH_STEPS_INT);\n }\n set orthogonalSearchSteps(value) {\n const s = Math.min(Math.max(value, 0), 112);\n this.defines.MAX_SEARCH_STEPS_INT = s.toFixed(\"0\");\n this.defines.MAX_SEARCH_STEPS_FLOAT = s.toFixed(\"1\");\n this.needsUpdate = true;\n }\n /**\n * Sets the maximum amount of steps performed in the horizontal/vertical pattern searches, at each side of the pixel.\n *\n * @deprecated Use orthogonalSearchSteps instead.\n * @param {Number} value - The search steps. Range: [0, 112].\n */\n setOrthogonalSearchSteps(value) {\n this.orthogonalSearchSteps = value;\n }\n /**\n * The maximum steps performed in the diagonal pattern searches, at each side of the pixel. This search\n * jumps one pixel at a time. Range: [0, 20].\n *\n * On high-end machines this search is cheap (between 0.8x and 0.9x slower for 16 steps), but it can have a\n * significant impact on older machines.\n *\n * @type {Number}\n */\n get diagonalSearchSteps() {\n return Number(this.defines.MAX_SEARCH_STEPS_DIAG_INT);\n }\n set diagonalSearchSteps(value) {\n const s = Math.min(Math.max(value, 0), 20);\n this.defines.MAX_SEARCH_STEPS_DIAG_INT = s.toFixed(\"0\");\n this.defines.MAX_SEARCH_STEPS_DIAG_FLOAT = s.toFixed(\"1\");\n this.needsUpdate = true;\n }\n /**\n * Specifies the maximum steps performed in the diagonal pattern searches, at each side of the pixel.\n *\n * @deprecated Use diagonalSearchSteps instead.\n * @param {Number} value - The search steps. Range: [0, 20].\n */\n setDiagonalSearchSteps(value) {\n this.diagonalSearchSteps = value;\n }\n /**\n * Indicates whether diagonal pattern detection is enabled.\n *\n * @type {Boolean}\n */\n get diagonalDetection() {\n return this.defines.DISABLE_DIAG_DETECTION === void 0;\n }\n set diagonalDetection(value) {\n if (value) {\n delete this.defines.DISABLE_DIAG_DETECTION;\n } else {\n this.defines.DISABLE_DIAG_DETECTION = \"1\";\n }\n this.needsUpdate = true;\n }\n /**\n * Indicates whether diagonal pattern detection is enabled.\n *\n * @deprecated Use diagonalDetection instead.\n * @return {Boolean} Whether diagonal pattern detection is enabled.\n */\n isDiagonalDetectionEnabled() {\n return this.diagonalDetection;\n }\n /**\n * Enables or disables diagonal pattern detection.\n *\n * @deprecated Use diagonalDetection instead.\n * @param {Boolean} value - Whether diagonal pattern detection should be enabled.\n */\n setDiagonalDetectionEnabled(value) {\n this.diagonalDetection = value;\n }\n /**\n * Specifies how much sharp corners will be rounded. Range: [0, 100].\n *\n * @type {Number}\n */\n get cornerRounding() {\n return Number(this.defines.CORNER_ROUNDING);\n }\n set cornerRounding(value) {\n const r = Math.min(Math.max(value, 0), 100);\n this.defines.CORNER_ROUNDING = r.toFixed(\"4\");\n this.defines.CORNER_ROUNDING_NORM = (r / 100).toFixed(\"4\");\n this.needsUpdate = true;\n }\n /**\n * Specifies how much sharp corners will be rounded.\n *\n * @deprecated Use cornerRounding instead.\n * @param {Number} value - The corner rounding amount. Range: [0, 100].\n */\n setCornerRounding(value) {\n this.cornerRounding = value;\n }\n /**\n * Indicates whether corner detection is enabled.\n *\n * @type {Number}\n */\n get cornerDetection() {\n return this.defines.DISABLE_CORNER_DETECTION === void 0;\n }\n set cornerDetection(value) {\n if (value) {\n delete this.defines.DISABLE_CORNER_DETECTION;\n } else {\n this.defines.DISABLE_CORNER_DETECTION = \"1\";\n }\n this.needsUpdate = true;\n }\n /**\n * Indicates whether corner rounding is enabled.\n *\n * @deprecated Use cornerDetection instead.\n * @return {Boolean} Whether corner rounding is enabled.\n */\n isCornerRoundingEnabled() {\n return this.cornerDetection;\n }\n /**\n * Enables or disables corner rounding.\n *\n * @deprecated Use cornerDetection instead.\n * @param {Boolean} value - Whether corner rounding should be enabled.\n */\n setCornerRoundingEnabled(value) {\n this.cornerDetection = value;\n }\n /**\n * Sets the size of this object.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n const uniforms = this.uniforms;\n uniforms.texelSize.value.set(1 / width, 1 / height);\n uniforms.resolution.value.set(width, height);\n }\n};\n\n// src/materials/SSAOMaterial.js\nimport { BasicDepthPacking as BasicDepthPacking7, Matrix4, NoBlending as NoBlending20, PerspectiveCamera as PerspectiveCamera6, ShaderMaterial as ShaderMaterial20, Uniform as Uniform20, Vector2 as Vector212 } from \"three\";\n\n// src/materials/glsl/ssao.frag\nvar ssao_default = \"#include \\n#include \\n#ifdef NORMAL_DEPTH\\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nuniform highp sampler2D normalDepthBuffer;\\n#else\\nuniform mediump sampler2D normalDepthBuffer;\\n#endif\\nfloat readDepth(const in vec2 uv){return texture2D(normalDepthBuffer,uv).a;}\\n#else\\nuniform lowp sampler2D normalBuffer;\\n#if DEPTH_PACKING == 3201\\nuniform lowp sampler2D depthBuffer;\\n#elif defined(GL_FRAGMENT_PRECISION_HIGH)\\nuniform highp sampler2D depthBuffer;\\n#else\\nuniform mediump sampler2D depthBuffer;\\n#endif\\nfloat readDepth(const in vec2 uv){\\n#if DEPTH_PACKING == 3201\\nreturn unpackRGBAToDepth(texture2D(depthBuffer,uv));\\n#else\\nreturn texture2D(depthBuffer,uv).r;\\n#endif\\n}\\n#endif\\nuniform lowp sampler2D noiseTexture;uniform mat4 inverseProjectionMatrix;uniform mat4 projectionMatrix;uniform vec2 texelSize;uniform vec2 cameraNearFar;uniform float intensity;uniform float minRadiusScale;uniform float fade;uniform float bias;uniform vec2 distanceCutoff;uniform vec2 proximityCutoff;varying vec2 vUv;varying vec2 vUv2;float getViewZ(const in float depth){\\n#ifdef PERSPECTIVE_CAMERA\\nreturn perspectiveDepthToViewZ(depth,cameraNearFar.x,cameraNearFar.y);\\n#else\\nreturn orthographicDepthToViewZ(depth,cameraNearFar.x,cameraNearFar.y);\\n#endif\\n}vec3 getViewPosition(const in vec2 screenPosition,const in float depth,const in float viewZ){vec4 clipPosition=vec4(vec3(screenPosition,depth)*2.0-1.0,1.0);float clipW=projectionMatrix[2][3]*viewZ+projectionMatrix[3][3];clipPosition*=clipW;return(inverseProjectionMatrix*clipPosition).xyz;}float getAmbientOcclusion(const in vec3 p,const in vec3 n,const in float depth,const in vec2 uv){float radiusScale=1.0-smoothstep(0.0,distanceCutoff.y,depth);radiusScale=radiusScale*(1.0-minRadiusScale)+minRadiusScale;float radius=RADIUS*radiusScale;float noise=texture2D(noiseTexture,vUv2).r;float baseAngle=noise*PI2;float rings=SPIRAL_TURNS*PI2;float occlusion=0.0;int taps=0;for(int i=0;i1.0||coords.t<0.0||coords.t>1.0){continue;}float sampleDepth=readDepth(coords);float viewZ=getViewZ(sampleDepth);\\n#ifdef PERSPECTIVE_CAMERA\\nfloat linearSampleDepth=viewZToOrthographicDepth(viewZ,cameraNearFar.x,cameraNearFar.y);\\n#else\\nfloat linearSampleDepth=sampleDepth;\\n#endif\\nfloat proximity=abs(depth-linearSampleDepth);if(proximity\\n}\";\n\n// src/materials/glsl/convolution.tilt-shift.vert\nvar convolution_tilt_shift_default2 = \"uniform vec4 texelSize;uniform float kernel;uniform float scale;uniform float aspect;uniform vec2 rotation;varying vec2 vUv;varying vec2 vUv2;varying vec2 vOffset;void main(){vec2 uv=position.xy*0.5+0.5;vUv=uv;vUv2=(uv-0.5)*2.0*vec2(aspect,1.0);vUv2=vec2(dot(rotation,vUv2),dot(rotation,vec2(vUv2.y,-vUv2.x)));vOffset=(texelSize.xy*vec2(kernel)+texelSize.zw)*scale;gl_Position=vec4(position.xy,1.0,1.0);}\";\n\n// src/materials/TiltShiftBlurMaterial.js\nvar TiltShiftBlurMaterial = class extends KawaseBlurMaterial {\n /**\n * Constructs a new tilt shift blur material.\n *\n * @param {Object} [options] - The options.\n * @param {Number} [options.offset=0.0] - The relative offset of the focus area.\n * @param {Number} [options.rotation=0.0] - The rotation of the focus area in radians.\n * @param {Number} [options.focusArea=0.4] - The relative size of the focus area.\n * @param {Number} [options.feather=0.3] - The softness of the focus area edges.\n */\n constructor({\n kernelSize = KernelSize.MEDIUM,\n offset = 0,\n rotation = 0,\n focusArea = 0.4,\n feather = 0.3\n } = {}) {\n super();\n this.fragmentShader = convolution_tilt_shift_default;\n this.vertexShader = convolution_tilt_shift_default2;\n this.kernelSize = kernelSize;\n this.fragmentShader = updateFragmentShader(this.fragmentShader);\n this.uniforms.aspect = new Uniform21(1);\n this.uniforms.rotation = new Uniform21(new Vector213());\n this.uniforms.maskParams = new Uniform21(new Vector42());\n this._offset = offset;\n this._focusArea = focusArea;\n this._feather = feather;\n this.rotation = rotation;\n this.updateParams();\n }\n /**\n * The relative offset of the focus area.\n *\n * @private\n */\n updateParams() {\n const params = this.uniforms.maskParams.value;\n const a = Math.max(this.focusArea, 0);\n const b = Math.max(a - this.feather, 0);\n params.set(\n this.offset - a,\n this.offset - b,\n this.offset + a,\n this.offset + b\n );\n }\n /**\n * The rotation of the focus area in radians.\n *\n * @type {Number}\n */\n get rotation() {\n return Math.acos(this.uniforms.rotation.value.x);\n }\n set rotation(value) {\n this.uniforms.rotation.value.set(Math.cos(value), Math.sin(value));\n }\n /**\n * The relative offset of the focus area.\n *\n * @type {Number}\n */\n get offset() {\n return this._offset;\n }\n set offset(value) {\n this._offset = value;\n this.updateParams();\n }\n /**\n * The relative size of the focus area.\n *\n * @type {Number}\n */\n get focusArea() {\n return this._focusArea;\n }\n set focusArea(value) {\n this._focusArea = value;\n this.updateParams();\n }\n /**\n * The softness of the focus area edges.\n *\n * @type {Number}\n */\n get feather() {\n return this._feather;\n }\n set feather(value) {\n this._feather = value;\n this.updateParams();\n }\n /**\n * Sets the size of this object.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n super.setSize(width, height);\n this.uniforms.aspect.value = width / height;\n }\n};\n\n// src/materials/UpsamplingMaterial.js\nimport { NoBlending as NoBlending21, ShaderMaterial as ShaderMaterial21, Uniform as Uniform22, Vector2 as Vector214 } from \"three\";\n\n// src/materials/glsl/convolution.upsampling.frag\nvar convolution_upsampling_default = \"#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D inputBuffer;uniform mediump sampler2D supportBuffer;\\n#else\\nuniform lowp sampler2D inputBuffer;uniform lowp sampler2D supportBuffer;\\n#endif\\nuniform float radius;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;varying vec2 vUv6;varying vec2 vUv7;void main(){vec4 c=vec4(0.0);c+=texture2D(inputBuffer,vUv0)*0.0625;c+=texture2D(inputBuffer,vUv1)*0.125;c+=texture2D(inputBuffer,vUv2)*0.0625;c+=texture2D(inputBuffer,vUv3)*0.125;c+=texture2D(inputBuffer,vUv)*0.25;c+=texture2D(inputBuffer,vUv4)*0.125;c+=texture2D(inputBuffer,vUv5)*0.0625;c+=texture2D(inputBuffer,vUv6)*0.125;c+=texture2D(inputBuffer,vUv7)*0.0625;vec4 baseColor=texture2D(supportBuffer,vUv);gl_FragColor=mix(baseColor,c,radius);\\n#include \\n}\";\n\n// src/materials/glsl/convolution.upsampling.vert\nvar convolution_upsampling_default2 = \"uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;varying vec2 vUv6;varying vec2 vUv7;void main(){vUv=position.xy*0.5+0.5;vUv0=vUv+texelSize*vec2(-1.0,1.0);vUv1=vUv+texelSize*vec2(0.0,1.0);vUv2=vUv+texelSize*vec2(1.0,1.0);vUv3=vUv+texelSize*vec2(-1.0,0.0);vUv4=vUv+texelSize*vec2(1.0,0.0);vUv5=vUv+texelSize*vec2(-1.0,-1.0);vUv6=vUv+texelSize*vec2(0.0,-1.0);vUv7=vUv+texelSize*vec2(1.0,-1.0);gl_Position=vec4(position.xy,1.0,1.0);}\";\n\n// src/materials/UpsamplingMaterial.js\nvar UpsamplingMaterial = class extends ShaderMaterial21 {\n /**\n * Constructs a new upsampling material.\n */\n constructor() {\n super({\n name: \"UpsamplingMaterial\",\n uniforms: {\n inputBuffer: new Uniform22(null),\n supportBuffer: new Uniform22(null),\n texelSize: new Uniform22(new Vector214()),\n radius: new Uniform22(0.85)\n },\n blending: NoBlending21,\n toneMapped: false,\n depthWrite: false,\n depthTest: false,\n fragmentShader: convolution_upsampling_default,\n vertexShader: convolution_upsampling_default2\n });\n this.fragmentShader = updateFragmentShader(this.fragmentShader);\n }\n /**\n * The input buffer.\n *\n * @type {Texture}\n */\n set inputBuffer(value) {\n this.uniforms.inputBuffer.value = value;\n }\n /**\n * A support buffer.\n *\n * @type {Texture}\n */\n set supportBuffer(value) {\n this.uniforms.supportBuffer.value = value;\n }\n /**\n * The blur radius.\n *\n * @type {Number}\n */\n get radius() {\n return this.uniforms.radius.value;\n }\n set radius(value) {\n this.uniforms.radius.value = value;\n }\n /**\n * Sets the size of this object.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n this.uniforms.texelSize.value.set(1 / width, 1 / height);\n }\n};\n\n// src/passes/CopyPass.js\nimport { LinearFilter, UnsignedByteType as UnsignedByteType2, WebGLRenderTarget as WebGLRenderTarget2 } from \"three\";\n\n// src/passes/Pass.js\nimport {\n BasicDepthPacking as BasicDepthPacking8,\n BufferAttribute,\n BufferGeometry,\n Camera,\n Material,\n Mesh,\n Scene,\n Texture,\n WebGLRenderTarget\n} from \"three\";\nvar dummyCamera = /* @__PURE__ */ new Camera();\nvar geometry = null;\nfunction getFullscreenTriangle() {\n if (geometry === null) {\n const vertices = new Float32Array([-1, -1, 0, 3, -1, 0, -1, 3, 0]);\n const uvs = new Float32Array([0, 0, 2, 0, 0, 2]);\n geometry = new BufferGeometry();\n if (geometry.setAttribute !== void 0) {\n geometry.setAttribute(\"position\", new BufferAttribute(vertices, 3));\n geometry.setAttribute(\"uv\", new BufferAttribute(uvs, 2));\n } else {\n geometry.addAttribute(\"position\", new BufferAttribute(vertices, 3));\n geometry.addAttribute(\"uv\", new BufferAttribute(uvs, 2));\n }\n }\n return geometry;\n}\nvar Pass = class _Pass {\n /**\n * Constructs a new pass.\n *\n * @param {String} [name] - The name of this pass. Does not have to be unique.\n * @param {Scene} [scene] - The scene to render. The default scene contains a single mesh that fills the screen.\n * @param {Camera} [camera] - A camera. Fullscreen effect passes don't require a camera.\n */\n constructor(name = \"Pass\", scene = new Scene(), camera = dummyCamera) {\n this.name = name;\n this.renderer = null;\n this.scene = scene;\n this.camera = camera;\n this.screen = null;\n this.rtt = true;\n this.needsSwap = true;\n this.needsDepthTexture = false;\n this.enabled = true;\n }\n /**\n * Sets the render to screen flag.\n *\n * If this flag is changed, the fullscreen material will be updated as well.\n *\n * @type {Boolean}\n */\n get renderToScreen() {\n return !this.rtt;\n }\n set renderToScreen(value) {\n if (this.rtt === value) {\n const material = this.fullscreenMaterial;\n if (material !== null) {\n material.needsUpdate = true;\n }\n this.rtt = !value;\n }\n }\n /**\n * Sets the main scene.\n *\n * @type {Scene}\n */\n set mainScene(value) {\n }\n /**\n * Sets the main camera.\n *\n * @type {Camera}\n */\n set mainCamera(value) {\n }\n /**\n * Sets the renderer\n *\n * @deprecated\n * @param {WebGLRenderer} renderer - The renderer.\n */\n setRenderer(renderer) {\n this.renderer = renderer;\n }\n /**\n * Indicates whether this pass is enabled.\n *\n * @deprecated Use enabled instead.\n * @return {Boolean} Whether this pass is enabled.\n */\n isEnabled() {\n return this.enabled;\n }\n /**\n * Enables or disables this pass.\n *\n * @deprecated Use enabled instead.\n * @param {Boolean} value - Whether the pass should be enabled.\n */\n setEnabled(value) {\n this.enabled = value;\n }\n /**\n * The fullscreen material.\n *\n * @type {Material}\n */\n get fullscreenMaterial() {\n return this.screen !== null ? this.screen.material : null;\n }\n set fullscreenMaterial(value) {\n let screen = this.screen;\n if (screen !== null) {\n screen.material = value;\n } else {\n screen = new Mesh(getFullscreenTriangle(), value);\n screen.frustumCulled = false;\n if (this.scene === null) {\n this.scene = new Scene();\n }\n this.scene.add(screen);\n this.screen = screen;\n }\n }\n /**\n * Returns the current fullscreen material.\n *\n * @deprecated Use fullscreenMaterial instead.\n * @return {Material} The current fullscreen material, or null if there is none.\n */\n getFullscreenMaterial() {\n return this.fullscreenMaterial;\n }\n /**\n * Sets the fullscreen material.\n *\n * @deprecated Use fullscreenMaterial instead.\n * @protected\n * @param {Material} value - A fullscreen material.\n */\n setFullscreenMaterial(value) {\n this.fullscreenMaterial = value;\n }\n /**\n * Returns the current depth texture.\n *\n * @return {Texture} The current depth texture, or null if there is none.\n */\n getDepthTexture() {\n return null;\n }\n /**\n * Sets the depth texture.\n *\n * This method will be called automatically by the {@link EffectComposer}.\n * You may override this method if your pass relies on the depth information of a preceding {@link RenderPass}.\n *\n * @param {Texture} depthTexture - A depth texture.\n * @param {DepthPackingStrategy} [depthPacking=BasicDepthPacking] - The depth packing.\n */\n setDepthTexture(depthTexture, depthPacking = BasicDepthPacking8) {\n }\n /**\n * Renders this pass.\n *\n * This is an abstract method that must be overridden.\n *\n * @abstract\n * @throws {Error} An error is thrown if the method is not overridden.\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\n */\n render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n throw new Error(\"Render method not implemented!\");\n }\n /**\n * Sets the size.\n *\n * You may override this method if you want to be informed about the size of the backbuffer/canvas.\n * This method is called before {@link initialize} and every time the size of the {@link EffectComposer} changes.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n }\n /**\n * Performs initialization tasks.\n *\n * This method is called when this pass is added to an {@link EffectComposer}.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {Boolean} alpha - Whether the renderer uses the alpha channel or not.\n * @param {Number} frameBufferType - The type of the main frame buffers.\n */\n initialize(renderer, alpha, frameBufferType) {\n }\n /**\n * Performs a shallow search for disposable properties and deletes them.\n *\n * The {@link EffectComposer} calls this method when it is being destroyed. You can use it independently to free\n * memory when you're certain that you don't need this pass anymore.\n */\n dispose() {\n for (const key of Object.keys(this)) {\n const property = this[key];\n const isDisposable = property instanceof WebGLRenderTarget || property instanceof Material || property instanceof Texture || property instanceof _Pass;\n if (isDisposable) {\n this[key].dispose();\n }\n }\n }\n};\n\n// src/passes/CopyPass.js\nvar CopyPass = class extends Pass {\n /**\n * Constructs a new save pass.\n *\n * @param {WebGLRenderTarget} [renderTarget] - A render target.\n * @param {Boolean} [autoResize=true] - Whether the render target size should be updated automatically.\n */\n constructor(renderTarget, autoResize = true) {\n super(\"CopyPass\");\n this.fullscreenMaterial = new CopyMaterial();\n this.needsSwap = false;\n this.renderTarget = renderTarget;\n if (renderTarget === void 0) {\n this.renderTarget = new WebGLRenderTarget2(1, 1, {\n minFilter: LinearFilter,\n magFilter: LinearFilter,\n stencilBuffer: false,\n depthBuffer: false\n });\n this.renderTarget.texture.name = \"CopyPass.Target\";\n }\n this.autoResize = autoResize;\n }\n /**\n * Enables or disables auto resizing of the render target.\n *\n * @deprecated Use autoResize instead.\n * @type {Boolean}\n */\n get resize() {\n return this.autoResize;\n }\n set resize(value) {\n this.autoResize = value;\n }\n /**\n * The output texture.\n *\n * @type {Texture}\n */\n get texture() {\n return this.renderTarget.texture;\n }\n /**\n * Returns the output texture.\n *\n * @deprecated Use texture instead.\n * @return {Texture} The texture.\n */\n getTexture() {\n return this.renderTarget.texture;\n }\n /**\n * Enables or disables auto resizing of the render target.\n *\n * @deprecated Use autoResize instead.\n * @param {Boolean} value - Whether the render target size should be updated automatically.\n */\n setAutoResizeEnabled(value) {\n this.autoResize = value;\n }\n /**\n * Saves the input buffer.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\n */\n render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n this.fullscreenMaterial.inputBuffer = inputBuffer.texture;\n renderer.setRenderTarget(this.renderToScreen ? null : this.renderTarget);\n renderer.render(this.scene, this.camera);\n }\n /**\n * Updates the size of this pass.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n if (this.autoResize) {\n this.renderTarget.setSize(width, height);\n }\n }\n /**\n * Performs initialization tasks.\n *\n * @param {WebGLRenderer} renderer - A renderer.\n * @param {Boolean} alpha - Whether the renderer uses the alpha channel.\n * @param {Number} frameBufferType - The type of the main frame buffers.\n */\n initialize(renderer, alpha, frameBufferType) {\n if (frameBufferType !== void 0) {\n this.renderTarget.texture.type = frameBufferType;\n if (frameBufferType !== UnsignedByteType2) {\n this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH = \"1\";\n } else if (getOutputColorSpace(renderer) === SRGBColorSpace) {\n setTextureColorSpace(this.renderTarget.texture, SRGBColorSpace);\n }\n }\n }\n};\n\n// src/passes/AdaptiveLuminancePass.js\nvar AdaptiveLuminancePass = class extends Pass {\n /**\n * Constructs a new adaptive luminance pass.\n *\n * @param {Texture} luminanceBuffer - A buffer that contains the current scene luminance.\n * @param {Object} [options] - The options.\n * @param {Number} [options.minLuminance=0.01] - The minimum luminance.\n * @param {Number} [options.adaptationRate=1.0] - The luminance adaptation rate.\n */\n constructor(luminanceBuffer, { minLuminance = 0.01, adaptationRate = 1 } = {}) {\n super(\"AdaptiveLuminancePass\");\n this.fullscreenMaterial = new AdaptiveLuminanceMaterial();\n this.needsSwap = false;\n this.renderTargetPrevious = new WebGLRenderTarget3(1, 1, {\n minFilter: NearestFilter,\n magFilter: NearestFilter,\n depthBuffer: false\n });\n this.renderTargetPrevious.texture.name = \"Luminance.Previous\";\n const material = this.fullscreenMaterial;\n material.luminanceBuffer0 = this.renderTargetPrevious.texture;\n material.luminanceBuffer1 = luminanceBuffer;\n material.minLuminance = minLuminance;\n material.adaptationRate = adaptationRate;\n this.renderTargetAdapted = this.renderTargetPrevious.clone();\n this.renderTargetAdapted.texture.name = \"Luminance.Adapted\";\n this.copyPass = new CopyPass(this.renderTargetPrevious, false);\n }\n /**\n * The adaptive luminance texture.\n *\n * @type {Texture}\n */\n get texture() {\n return this.renderTargetAdapted.texture;\n }\n /**\n * Returns the adaptive 1x1 luminance texture.\n *\n * @deprecated Use texture instead.\n * @return {Texture} The texture.\n */\n getTexture() {\n return this.renderTargetAdapted.texture;\n }\n /**\n * Sets the 1x1 mipmap level.\n *\n * This level is used to identify the smallest mipmap of the main luminance texture which contains the downsampled\n * average scene luminance.\n *\n * @type {Number}\n * @deprecated Use fullscreenMaterial.mipLevel1x1 instead.\n */\n set mipLevel1x1(value) {\n this.fullscreenMaterial.mipLevel1x1 = value;\n }\n /**\n * The luminance adaptation rate.\n *\n * @type {Number}\n * @deprecated Use fullscreenMaterial.adaptationRate instead.\n */\n get adaptationRate() {\n return this.fullscreenMaterial.adaptationRate;\n }\n /**\n * @type {Number}\n * @deprecated Use fullscreenMaterial.adaptationRate instead.\n */\n set adaptationRate(value) {\n this.fullscreenMaterial.adaptationRate = value;\n }\n /**\n * Renders the scene normals.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\n */\n render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n this.fullscreenMaterial.deltaTime = deltaTime;\n renderer.setRenderTarget(this.renderToScreen ? null : this.renderTargetAdapted);\n renderer.render(this.scene, this.camera);\n this.copyPass.render(renderer, this.renderTargetAdapted);\n }\n};\n\n// src/passes/BoxBlurPass.js\nimport { BasicDepthPacking as BasicDepthPacking9, UnsignedByteType as UnsignedByteType3, WebGLRenderTarget as WebGLRenderTarget4 } from \"three\";\nvar BoxBlurPass = class extends Pass {\n /**\n * Constructs a new box blur pass.\n *\n * @param {Object} [options] - The options.\n * @param {Number} [options.kernelSize=5] - Must be an odd number. The sizes 3 and 5 use optimized code paths.\n * @param {Number} [options.iterations=1] - The amount of times the blur should be applied.\n * @param {Number} [options.bilateral=false] - Enables or disables bilateral blurring.\n * @param {Number} [options.resolutionScale=1.0] - The resolution scale.\n * @param {Number} [options.resolutionX=Resolution.AUTO_SIZE] - The horizontal resolution.\n * @param {Number} [options.resolutionY=Resolution.AUTO_SIZE] - The vertical resolution.\n */\n constructor({\n kernelSize = 5,\n iterations = 1,\n bilateral = false,\n resolutionScale = 1,\n resolutionX = Resolution.AUTO_SIZE,\n resolutionY = Resolution.AUTO_SIZE\n } = {}) {\n super(\"BoxBlurPass\");\n this.needsDepthTexture = bilateral;\n this.renderTargetA = new WebGLRenderTarget4(1, 1, { depthBuffer: false });\n this.renderTargetA.texture.name = \"Blur.Target.A\";\n this.renderTargetB = new WebGLRenderTarget4(1, 1, { depthBuffer: false });\n this.renderTargetB.texture.name = \"Blur.Target.B\";\n this.blurMaterial = new BoxBlurMaterial({ bilateral, kernelSize });\n this.copyMaterial = new CopyMaterial();\n const resolution = this.resolution = new Resolution(this, resolutionX, resolutionY, resolutionScale);\n resolution.addEventListener(\"change\", (e) => this.setSize(resolution.baseWidth, resolution.baseHeight));\n this.iterations = iterations;\n }\n set mainCamera(value) {\n this.blurMaterial.copyCameraSettings(value);\n }\n /**\n * Sets the depth texture.\n *\n * @param {Texture} depthTexture - A depth texture.\n * @param {DepthPackingStrategies} [depthPacking=BasicDepthPacking] - The depth packing strategy.\n */\n setDepthTexture(depthTexture, depthPacking = BasicDepthPacking9) {\n this.blurMaterial.depthBuffer = depthTexture;\n this.blurMaterial.depthPacking = depthPacking;\n }\n /**\n * Renders the blur.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\n */\n render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n const scene = this.scene;\n const camera = this.camera;\n const renderTargetA = this.renderTargetA;\n const renderTargetB = this.renderTargetB;\n const blurMaterial = this.blurMaterial;\n this.fullscreenMaterial = blurMaterial;\n let previousBuffer = inputBuffer;\n for (let i = 0, l = Math.max(this.iterations, 1); i < l; ++i) {\n const buffer = (i & 1) === 0 ? renderTargetA : renderTargetB;\n blurMaterial.inputBuffer = previousBuffer.texture;\n renderer.setRenderTarget(buffer);\n renderer.render(scene, camera);\n previousBuffer = buffer;\n }\n this.copyMaterial.inputBuffer = previousBuffer.texture;\n this.fullscreenMaterial = this.copyMaterial;\n renderer.setRenderTarget(this.renderToScreen ? null : outputBuffer);\n renderer.render(scene, camera);\n }\n /**\n * Updates the size of this pass.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n const resolution = this.resolution;\n resolution.setBaseSize(width, height);\n const w = resolution.width, h = resolution.height;\n this.renderTargetA.setSize(w, h);\n this.renderTargetB.setSize(w, h);\n this.blurMaterial.setSize(width, height);\n }\n /**\n * Performs initialization tasks.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {Boolean} alpha - Whether the renderer uses the alpha channel or not.\n * @param {Number} frameBufferType - The type of the main frame buffers.\n */\n initialize(renderer, alpha, frameBufferType) {\n this.blurMaterial.maxVaryingVectors = renderer.capabilities.maxVaryings;\n if (frameBufferType !== void 0) {\n this.renderTargetA.texture.type = frameBufferType;\n this.renderTargetB.texture.type = frameBufferType;\n if (frameBufferType !== UnsignedByteType3) {\n this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH = \"1\";\n } else if (getOutputColorSpace(renderer) === SRGBColorSpace) {\n setTextureColorSpace(this.renderTargetA.texture, SRGBColorSpace);\n setTextureColorSpace(this.renderTargetB.texture, SRGBColorSpace);\n }\n }\n }\n};\n\n// src/passes/ClearMaskPass.js\nvar ClearMaskPass = class extends Pass {\n /**\n * Constructs a new clear mask pass.\n */\n constructor() {\n super(\"ClearMaskPass\", null, null);\n this.needsSwap = false;\n }\n /**\n * Disables the global stencil test.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\n */\n render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n const stencil = renderer.state.buffers.stencil;\n stencil.setLocked(false);\n stencil.setTest(false);\n }\n};\n\n// src/passes/ClearPass.js\nimport { Color } from \"three\";\nvar color = /* @__PURE__ */ new Color();\nvar ClearPass = class extends Pass {\n /**\n * Constructs a new clear pass.\n *\n * @param {Boolean} [color=true] - Determines whether the color buffer should be cleared.\n * @param {Boolean} [depth=true] - Determines whether the depth buffer should be cleared.\n * @param {Boolean} [stencil=false] - Determines whether the stencil buffer should be cleared.\n */\n constructor(color2 = true, depth = true, stencil = false) {\n super(\"ClearPass\", null, null);\n this.needsSwap = false;\n this.color = color2;\n this.depth = depth;\n this.stencil = stencil;\n this.overrideClearColor = null;\n this.overrideClearAlpha = -1;\n }\n /**\n * Sets the clear flags.\n *\n * @param {Boolean} color - Whether the color buffer should be cleared.\n * @param {Boolean} depth - Whether the depth buffer should be cleared.\n * @param {Boolean} stencil - Whether the stencil buffer should be cleared.\n */\n setClearFlags(color2, depth, stencil) {\n this.color = color2;\n this.depth = depth;\n this.stencil = stencil;\n }\n /**\n * Returns the override clear color. Default is null.\n *\n * @deprecated Use overrideClearColor instead.\n * @return {Color} The clear color.\n */\n getOverrideClearColor() {\n return this.overrideClearColor;\n }\n /**\n * Sets the override clear color.\n *\n * @deprecated Use overrideClearColor instead.\n * @param {Color} value - The clear color.\n */\n setOverrideClearColor(value) {\n this.overrideClearColor = value;\n }\n /**\n * Returns the override clear alpha. Default is -1.\n *\n * @deprecated Use overrideClearAlpha instead.\n * @return {Number} The clear alpha.\n */\n getOverrideClearAlpha() {\n return this.overrideClearAlpha;\n }\n /**\n * Sets the override clear alpha.\n *\n * @deprecated Use overrideClearAlpha instead.\n * @param {Number} value - The clear alpha.\n */\n setOverrideClearAlpha(value) {\n this.overrideClearAlpha = value;\n }\n /**\n * Clears the input buffer or the screen.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\n */\n render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n const overrideClearColor = this.overrideClearColor;\n const overrideClearAlpha = this.overrideClearAlpha;\n const clearAlpha = renderer.getClearAlpha();\n const hasOverrideClearColor = overrideClearColor !== null;\n const hasOverrideClearAlpha = overrideClearAlpha >= 0;\n if (hasOverrideClearColor) {\n renderer.getClearColor(color);\n renderer.setClearColor(overrideClearColor, hasOverrideClearAlpha ? overrideClearAlpha : clearAlpha);\n } else if (hasOverrideClearAlpha) {\n renderer.setClearAlpha(overrideClearAlpha);\n }\n renderer.setRenderTarget(this.renderToScreen ? null : inputBuffer);\n renderer.clear(this.color, this.depth, this.stencil);\n if (hasOverrideClearColor) {\n renderer.setClearColor(color, clearAlpha);\n } else if (hasOverrideClearAlpha) {\n renderer.setClearAlpha(clearAlpha);\n }\n }\n};\n\n// src/passes/DepthPass.js\nimport { Color as Color2, MeshDepthMaterial, NearestFilter as NearestFilter2, RGBADepthPacking as RGBADepthPacking2, WebGLRenderTarget as WebGLRenderTarget5 } from \"three\";\n\n// src/passes/RenderPass.js\nvar RenderPass = class extends Pass {\n /**\n * Constructs a new render pass.\n *\n * @param {Scene} scene - The scene to render.\n * @param {Camera} camera - The camera to use to render the scene.\n * @param {Material} [overrideMaterial=null] - An override material.\n */\n constructor(scene, camera, overrideMaterial = null) {\n super(\"RenderPass\", scene, camera);\n this.needsSwap = false;\n this.clearPass = new ClearPass();\n this.overrideMaterialManager = overrideMaterial === null ? null : new OverrideMaterialManager(overrideMaterial);\n this.ignoreBackground = false;\n this.skipShadowMapUpdate = false;\n this.selection = null;\n }\n set mainScene(value) {\n this.scene = value;\n }\n set mainCamera(value) {\n this.camera = value;\n }\n get renderToScreen() {\n return super.renderToScreen;\n }\n set renderToScreen(value) {\n super.renderToScreen = value;\n this.clearPass.renderToScreen = value;\n }\n /**\n * The current override material.\n *\n * @type {Material}\n */\n get overrideMaterial() {\n const manager = this.overrideMaterialManager;\n return manager !== null ? manager.material : null;\n }\n set overrideMaterial(value) {\n const manager = this.overrideMaterialManager;\n if (value !== null) {\n if (manager !== null) {\n manager.setMaterial(value);\n } else {\n this.overrideMaterialManager = new OverrideMaterialManager(value);\n }\n } else if (manager !== null) {\n manager.dispose();\n this.overrideMaterialManager = null;\n }\n }\n /**\n * Returns the current override material.\n *\n * @deprecated Use overrideMaterial instead.\n * @return {Material} The material.\n */\n getOverrideMaterial() {\n return this.overrideMaterial;\n }\n /**\n * Sets the override material.\n *\n * @deprecated Use overrideMaterial instead.\n * @return {Material} value - The material.\n */\n setOverrideMaterial(value) {\n this.overrideMaterial = value;\n }\n /**\n * Indicates whether the target buffer should be cleared before rendering.\n *\n * @type {Boolean}\n * @deprecated Use clearPass.enabled instead.\n */\n get clear() {\n return this.clearPass.enabled;\n }\n set clear(value) {\n this.clearPass.enabled = value;\n }\n /**\n * Returns the selection. Default is `null` (no restriction).\n *\n * @deprecated Use selection instead.\n * @return {Selection} The selection.\n */\n getSelection() {\n return this.selection;\n }\n /**\n * Sets the selection. Set to `null` to disable.\n *\n * @deprecated Use selection instead.\n * @param {Selection} value - The selection.\n */\n setSelection(value) {\n this.selection = value;\n }\n /**\n * Indicates whether the scene background is disabled.\n *\n * @deprecated Use ignoreBackground instead.\n * @return {Boolean} Whether the scene background is disabled.\n */\n isBackgroundDisabled() {\n return this.ignoreBackground;\n }\n /**\n * Enables or disables the scene background.\n *\n * @deprecated Use ignoreBackground instead.\n * @param {Boolean} value - Whether the scene background should be disabled.\n */\n setBackgroundDisabled(value) {\n this.ignoreBackground = value;\n }\n /**\n * Indicates whether the shadow map auto update is disabled.\n *\n * @deprecated Use skipShadowMapUpdate instead.\n * @return {Boolean} Whether the shadow map update is disabled.\n */\n isShadowMapDisabled() {\n return this.skipShadowMapUpdate;\n }\n /**\n * Enables or disables the shadow map auto update.\n *\n * @deprecated Use skipShadowMapUpdate instead.\n * @param {Boolean} value - Whether the shadow map auto update should be disabled.\n */\n setShadowMapDisabled(value) {\n this.skipShadowMapUpdate = value;\n }\n /**\n * Returns the clear pass.\n *\n * @deprecated Use clearPass.enabled instead.\n * @return {ClearPass} The clear pass.\n */\n getClearPass() {\n return this.clearPass;\n }\n /**\n * Renders the scene.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\n */\n render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n const scene = this.scene;\n const camera = this.camera;\n const selection = this.selection;\n const mask = camera.layers.mask;\n const background = scene.background;\n const shadowMapAutoUpdate = renderer.shadowMap.autoUpdate;\n const renderTarget = this.renderToScreen ? null : inputBuffer;\n if (selection !== null) {\n camera.layers.set(selection.getLayer());\n }\n if (this.skipShadowMapUpdate) {\n renderer.shadowMap.autoUpdate = false;\n }\n if (this.ignoreBackground || this.clearPass.overrideClearColor !== null) {\n scene.background = null;\n }\n if (this.clearPass.enabled) {\n this.clearPass.render(renderer, inputBuffer);\n }\n renderer.setRenderTarget(renderTarget);\n if (this.overrideMaterialManager !== null) {\n this.overrideMaterialManager.render(renderer, scene, camera);\n } else {\n renderer.render(scene, camera);\n }\n camera.layers.mask = mask;\n scene.background = background;\n renderer.shadowMap.autoUpdate = shadowMapAutoUpdate;\n }\n};\n\n// src/passes/DepthPass.js\nvar DepthPass = class extends Pass {\n /**\n * Constructs a new depth pass.\n *\n * @param {Scene} scene - The scene to render.\n * @param {Camera} camera - The camera to use to render the scene.\n * @param {Object} [options] - The options.\n * @param {WebGLRenderTarget} [options.renderTarget] - A custom render target.\n * @param {Number} [options.resolutionScale=1.0] - The resolution scale.\n * @param {Number} [options.resolutionX=Resolution.AUTO_SIZE] - The horizontal resolution.\n * @param {Number} [options.resolutionY=Resolution.AUTO_SIZE] - The vertical resolution.\n * @param {Number} [options.width=Resolution.AUTO_SIZE] - Deprecated. Use resolutionX instead.\n * @param {Number} [options.height=Resolution.AUTO_SIZE] - Deprecated. Use resolutionY instead.\n */\n constructor(scene, camera, {\n renderTarget,\n resolutionScale = 1,\n width = Resolution.AUTO_SIZE,\n height = Resolution.AUTO_SIZE,\n resolutionX = width,\n resolutionY = height\n } = {}) {\n super(\"DepthPass\");\n this.needsSwap = false;\n this.renderPass = new RenderPass(scene, camera, new MeshDepthMaterial({\n depthPacking: RGBADepthPacking2\n }));\n const renderPass = this.renderPass;\n renderPass.skipShadowMapUpdate = true;\n renderPass.ignoreBackground = true;\n const clearPass = renderPass.clearPass;\n clearPass.overrideClearColor = new Color2(16777215);\n clearPass.overrideClearAlpha = 1;\n this.renderTarget = renderTarget;\n if (this.renderTarget === void 0) {\n this.renderTarget = new WebGLRenderTarget5(1, 1, {\n minFilter: NearestFilter2,\n magFilter: NearestFilter2\n });\n this.renderTarget.texture.name = \"DepthPass.Target\";\n }\n const resolution = this.resolution = new Resolution(this, resolutionX, resolutionY, resolutionScale);\n resolution.addEventListener(\"change\", (e) => this.setSize(resolution.baseWidth, resolution.baseHeight));\n }\n set mainScene(value) {\n this.renderPass.mainScene = value;\n }\n set mainCamera(value) {\n this.renderPass.mainCamera = value;\n }\n /**\n * The depth texture.\n *\n * @type {Texture}\n */\n get texture() {\n return this.renderTarget.texture;\n }\n /**\n * Returns the depth texture.\n *\n * @deprecated Use texture instead.\n * @return {Texture} The texture.\n */\n getTexture() {\n return this.renderTarget.texture;\n }\n /**\n * Returns the resolution settings.\n *\n * @deprecated Use resolution instead.\n * @return {Resolution} The resolution.\n */\n getResolution() {\n return this.resolution;\n }\n /**\n * Returns the current resolution scale.\n *\n * @return {Number} The resolution scale.\n * @deprecated Use resolution instead.\n */\n getResolutionScale() {\n return this.resolution.scale;\n }\n /**\n * Sets the resolution scale.\n *\n * @param {Number} scale - The new resolution scale.\n * @deprecated Use resolution instead.\n */\n setResolutionScale(scale) {\n this.resolution.scale = scale;\n }\n /**\n * Renders the scene depth.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\n */\n render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n const renderTarget = this.renderToScreen ? null : this.renderTarget;\n this.renderPass.render(renderer, renderTarget);\n }\n /**\n * Updates the size of this pass.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n const resolution = this.resolution;\n resolution.setBaseSize(width, height);\n this.renderTarget.setSize(resolution.width, resolution.height);\n }\n};\n\n// src/passes/DepthDownsamplingPass.js\nimport { BasicDepthPacking as BasicDepthPacking10, FloatType, NearestFilter as NearestFilter3, WebGLRenderTarget as WebGLRenderTarget6 } from \"three\";\nvar DepthDownsamplingPass = class extends Pass {\n /**\n * Constructs a new depth downsampling pass.\n *\n * @param {Object} [options] - The options.\n * @param {Texture} [options.normalBuffer=null] - A texture that contains view space normals. See {@link NormalPass}.\n * @param {Number} [options.resolutionScale=0.5] - The resolution scale.\n * @param {Number} [options.resolutionX=Resolution.AUTO_SIZE] - The horizontal resolution.\n * @param {Number} [options.resolutionY=Resolution.AUTO_SIZE] - The vertical resolution.\n * @param {Number} [options.width=Resolution.AUTO_SIZE] - Deprecated. Use resolutionX instead.\n * @param {Number} [options.height=Resolution.AUTO_SIZE] - Deprecated. Use resolutionY instead.\n */\n constructor({\n normalBuffer = null,\n resolutionScale = 0.5,\n width = Resolution.AUTO_SIZE,\n height = Resolution.AUTO_SIZE,\n resolutionX = width,\n resolutionY = height\n } = {}) {\n super(\"DepthDownsamplingPass\");\n const material = new DepthDownsamplingMaterial();\n material.normalBuffer = normalBuffer;\n this.fullscreenMaterial = material;\n this.needsDepthTexture = true;\n this.needsSwap = false;\n this.renderTarget = new WebGLRenderTarget6(1, 1, {\n minFilter: NearestFilter3,\n magFilter: NearestFilter3,\n depthBuffer: false,\n type: FloatType\n });\n this.renderTarget.texture.name = \"DepthDownsamplingPass.Target\";\n this.renderTarget.texture.generateMipmaps = false;\n const resolution = this.resolution = new Resolution(this, resolutionX, resolutionY, resolutionScale);\n resolution.addEventListener(\"change\", (e) => this.setSize(resolution.baseWidth, resolution.baseHeight));\n }\n /**\n * The normal(RGB) + depth(A) texture.\n *\n * @type {Texture}\n */\n get texture() {\n return this.renderTarget.texture;\n }\n /**\n * Returns the normal(RGB) + depth(A) texture.\n *\n * @deprecated Use texture instead.\n * @return {Texture} The texture.\n */\n getTexture() {\n return this.renderTarget.texture;\n }\n /**\n * Returns the resolution settings.\n *\n * @deprecated Use resolution instead.\n * @return {Resolution} The resolution.\n */\n getResolution() {\n return this.resolution;\n }\n /**\n * Sets the depth texture.\n *\n * @param {Texture} depthTexture - A depth texture.\n * @param {DepthPackingStrategies} [depthPacking=BasicDepthPacking] - The depth packing strategy.\n */\n setDepthTexture(depthTexture, depthPacking = BasicDepthPacking10) {\n this.fullscreenMaterial.depthBuffer = depthTexture;\n this.fullscreenMaterial.depthPacking = depthPacking;\n }\n /**\n * Downsamples depth and scene normals.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\n */\n render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n renderer.setRenderTarget(this.renderToScreen ? null : this.renderTarget);\n renderer.render(this.scene, this.camera);\n }\n /**\n * Updates the size of this pass.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n const resolution = this.resolution;\n resolution.setBaseSize(width, height);\n this.renderTarget.setSize(resolution.width, resolution.height);\n this.fullscreenMaterial.setSize(width, height);\n }\n /**\n * Performs initialization tasks.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {Boolean} alpha - Whether the renderer uses the alpha channel or not.\n * @param {Number} frameBufferType - The type of the main frame buffers.\n */\n initialize(renderer, alpha, frameBufferType) {\n const gl = renderer.getContext();\n const renderable = gl.getExtension(\"EXT_color_buffer_float\") || gl.getExtension(\"EXT_color_buffer_half_float\");\n if (!renderable) {\n throw new Error(\"Rendering to float texture is not supported.\");\n }\n }\n};\n\n// src/passes/DepthPickingPass.js\nimport { FloatType as FloatType3, RGBADepthPacking as RGBADepthPacking4 } from \"three\";\n\n// src/passes/DepthCopyPass.js\nimport {\n BasicDepthPacking as BasicDepthPacking11,\n FloatType as FloatType2,\n NearestFilter as NearestFilter4,\n RGBADepthPacking as RGBADepthPacking3,\n UnsignedByteType as UnsignedByteType4,\n WebGLRenderTarget as WebGLRenderTarget7\n} from \"three\";\nvar DepthCopyPass = class extends Pass {\n /**\n * Constructs a new depth save pass.\n *\n * @param {Object} [options] - The options.\n * @param {DepthPackingStrategies} [options.depthPacking=RGBADepthPacking] - The output depth packing.\n */\n constructor({ depthPacking = RGBADepthPacking3 } = {}) {\n super(\"DepthCopyPass\");\n const material = new DepthCopyMaterial();\n material.outputDepthPacking = depthPacking;\n this.fullscreenMaterial = material;\n this.needsDepthTexture = true;\n this.needsSwap = false;\n this.renderTarget = new WebGLRenderTarget7(1, 1, {\n type: depthPacking === RGBADepthPacking3 ? UnsignedByteType4 : FloatType2,\n minFilter: NearestFilter4,\n magFilter: NearestFilter4,\n depthBuffer: false\n });\n this.renderTarget.texture.name = \"DepthCopyPass.Target\";\n }\n /**\n * The output depth texture.\n *\n * @type {Texture}\n */\n get texture() {\n return this.renderTarget.texture;\n }\n /**\n * Returns the output depth texture.\n *\n * @deprecated Use texture instead.\n * @return {Texture} The texture.\n */\n getTexture() {\n return this.renderTarget.texture;\n }\n /**\n * The output depth packing.\n *\n * @type {DepthPackingStrategies}\n */\n get depthPacking() {\n return this.fullscreenMaterial.outputDepthPacking;\n }\n /**\n * Returns the output depth packing.\n *\n * @deprecated Use depthPacking instead.\n * @return {DepthPackingStrategies} The depth packing.\n */\n getDepthPacking() {\n return this.fullscreenMaterial.outputDepthPacking;\n }\n /**\n * Sets the depth texture.\n *\n * @param {Texture} depthTexture - A depth texture.\n * @param {DepthPackingStrategies} [depthPacking=BasicDepthPacking] - The depth packing.\n */\n setDepthTexture(depthTexture, depthPacking = BasicDepthPacking11) {\n this.fullscreenMaterial.depthBuffer = depthTexture;\n this.fullscreenMaterial.inputDepthPacking = depthPacking;\n }\n /**\n * Copies depth from a depth texture.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\n */\n render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n renderer.setRenderTarget(this.renderToScreen ? null : this.renderTarget);\n renderer.render(this.scene, this.camera);\n }\n /**\n * Updates the size of this pass.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n this.renderTarget.setSize(width, height);\n }\n};\n\n// src/passes/DepthPickingPass.js\nvar unpackFactors = new Float32Array([\n 255 / 256 / 256 ** 3,\n 255 / 256 / 256 ** 2,\n 255 / 256 / 256,\n 255 / 256\n]);\nfunction unpackRGBAToDepth(packedDepth) {\n return (packedDepth[0] * unpackFactors[0] + packedDepth[1] * unpackFactors[1] + packedDepth[2] * unpackFactors[2] + packedDepth[3] * unpackFactors[3]) / 255;\n}\nvar DepthPickingPass = class extends DepthCopyPass {\n /**\n * Constructs a new depth picking pass.\n *\n * @param {Object} [options] - The options.\n * @param {DepthPackingStrategies} [options.depthPacking=RGBADepthPacking] - The depth packing.\n * @param {Number} [options.mode=DepthCopyMode.SINGLE] - The depth copy mode.\n */\n constructor({ depthPacking = RGBADepthPacking4, mode = DepthCopyMode.SINGLE } = {}) {\n super({ depthPacking });\n this.name = \"DepthPickingPass\";\n this.fullscreenMaterial.mode = mode;\n this.pixelBuffer = depthPacking === RGBADepthPacking4 ? new Uint8Array(4) : new Float32Array(4);\n this.callback = null;\n }\n /**\n * Reads depth at a specific screen position.\n *\n * Only one depth value can be picked per frame. Calling this method multiple times per frame will overwrite the\n * picking coordinates. Unresolved promises will be abandoned.\n *\n * @example\n * const ndc = new Vector3();\n * const clientRect = myViewport.getBoundingClientRect();\n * const clientX = pointerEvent.clientX - clientRect.left;\n * const clientY = pointerEvent.clientY - clientRect.top;\n * ndc.x = (clientX / myViewport.clientWidth) * 2.0 - 1.0;\n * ndc.y = -(clientY / myViewport.clientHeight) * 2.0 + 1.0;\n * const depth = await depthPickingPass.readDepth(ndc);\n * ndc.z = depth * 2.0 - 1.0;\n *\n * const worldPosition = ndc.unproject(camera);\n *\n * @param {Vector2|Vector3} ndc - Normalized device coordinates. Only X and Y are relevant.\n * @return {Promise} A promise that returns the depth on the next frame.\n */\n readDepth(ndc) {\n this.fullscreenMaterial.texelPosition.set(ndc.x * 0.5 + 0.5, ndc.y * 0.5 + 0.5);\n return new Promise((resolve) => {\n this.callback = resolve;\n });\n }\n /**\n * Copies depth and resolves depth picking promises.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\n */\n render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n const material = this.fullscreenMaterial;\n const mode = material.mode;\n if (mode === DepthCopyMode.FULL) {\n super.render(renderer);\n }\n if (this.callback !== null) {\n const renderTarget = this.renderTarget;\n const pixelBuffer = this.pixelBuffer;\n const packed = renderTarget.texture.type !== FloatType3;\n let x = 0, y = 0;\n if (mode === DepthCopyMode.SINGLE) {\n super.render(renderer);\n } else {\n const texelPosition = material.texelPosition;\n x = Math.round(texelPosition.x * renderTarget.width);\n y = Math.round(texelPosition.y * renderTarget.height);\n }\n renderer.readRenderTargetPixels(renderTarget, x, y, 1, 1, pixelBuffer);\n this.callback(packed ? unpackRGBAToDepth(pixelBuffer) : pixelBuffer[0]);\n this.callback = null;\n }\n }\n /**\n * Updates the size of this pass.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n if (this.fullscreenMaterial.mode === DepthCopyMode.FULL) {\n super.setSize(width, height);\n }\n }\n};\n\n// src/passes/EffectPass.js\nimport { BasicDepthPacking as BasicDepthPacking12, UnsignedByteType as UnsignedByteType5 } from \"three\";\nfunction prefixSubstrings(prefix, substrings, strings) {\n for (const substring of substrings) {\n const prefixed = \"$1\" + prefix + substring.charAt(0).toUpperCase() + substring.slice(1);\n const regExp = new RegExp(\"([^\\\\.])(\\\\b\" + substring + \"\\\\b)\", \"g\");\n for (const entry of strings.entries()) {\n if (entry[1] !== null) {\n strings.set(entry[0], entry[1].replace(regExp, prefixed));\n }\n }\n }\n}\nfunction integrateEffect(prefix, effect, data) {\n let fragmentShader = effect.getFragmentShader();\n let vertexShader = effect.getVertexShader();\n const mainImageExists = fragmentShader !== void 0 && /mainImage/.test(fragmentShader);\n const mainUvExists = fragmentShader !== void 0 && /mainUv/.test(fragmentShader);\n data.attributes |= effect.getAttributes();\n if (fragmentShader === void 0) {\n throw new Error(`Missing fragment shader (${effect.name})`);\n } else if (mainUvExists && (data.attributes & EffectAttribute.CONVOLUTION) !== 0) {\n throw new Error(`Effects that transform UVs are incompatible with convolution effects (${effect.name})`);\n } else if (!mainImageExists && !mainUvExists) {\n throw new Error(`Could not find mainImage or mainUv function (${effect.name})`);\n } else {\n const functionRegExp = /\\w+\\s+(\\w+)\\([\\w\\s,]*\\)\\s*{/g;\n const shaderParts = data.shaderParts;\n let fragmentHead = shaderParts.get(EffectShaderSection.FRAGMENT_HEAD) || \"\";\n let fragmentMainUv = shaderParts.get(EffectShaderSection.FRAGMENT_MAIN_UV) || \"\";\n let fragmentMainImage = shaderParts.get(EffectShaderSection.FRAGMENT_MAIN_IMAGE) || \"\";\n let vertexHead = shaderParts.get(EffectShaderSection.VERTEX_HEAD) || \"\";\n let vertexMainSupport = shaderParts.get(EffectShaderSection.VERTEX_MAIN_SUPPORT) || \"\";\n const varyings = /* @__PURE__ */ new Set();\n const names = /* @__PURE__ */ new Set();\n if (mainUvExists) {\n fragmentMainUv += `\t${prefix}MainUv(UV);\n`;\n data.uvTransformation = true;\n }\n if (vertexShader !== null && /mainSupport/.test(vertexShader)) {\n const needsUv = /mainSupport *\\([\\w\\s]*?uv\\s*?\\)/.test(vertexShader);\n vertexMainSupport += `\t${prefix}MainSupport(`;\n vertexMainSupport += needsUv ? \"vUv);\\n\" : \");\\n\";\n for (const m2 of vertexShader.matchAll(/(?:varying\\s+\\w+\\s+([\\S\\s]*?);)/g)) {\n for (const n of m2[1].split(/\\s*,\\s*/)) {\n data.varyings.add(n);\n varyings.add(n);\n names.add(n);\n }\n }\n for (const m2 of vertexShader.matchAll(functionRegExp)) {\n names.add(m2[1]);\n }\n }\n for (const m2 of fragmentShader.matchAll(functionRegExp)) {\n names.add(m2[1]);\n }\n for (const d of effect.defines.keys()) {\n names.add(d.replace(/\\([\\w\\s,]*\\)/g, \"\"));\n }\n for (const u of effect.uniforms.keys()) {\n names.add(u);\n }\n names.delete(\"while\");\n names.delete(\"for\");\n names.delete(\"if\");\n effect.uniforms.forEach((val, key) => data.uniforms.set(prefix + key.charAt(0).toUpperCase() + key.slice(1), val));\n effect.defines.forEach((val, key) => data.defines.set(prefix + key.charAt(0).toUpperCase() + key.slice(1), val));\n const shaders = /* @__PURE__ */ new Map([[\"fragment\", fragmentShader], [\"vertex\", vertexShader]]);\n prefixSubstrings(prefix, names, data.defines);\n prefixSubstrings(prefix, names, shaders);\n fragmentShader = shaders.get(\"fragment\");\n vertexShader = shaders.get(\"vertex\");\n const blendMode = effect.blendMode;\n data.blendModes.set(blendMode.blendFunction, blendMode);\n if (mainImageExists) {\n if (effect.inputColorSpace !== null && effect.inputColorSpace !== data.colorSpace) {\n fragmentMainImage += effect.inputColorSpace === SRGBColorSpace ? \"color0 = LinearTosRGB(color0);\\n\t\" : \"color0 = sRGBToLinear(color0);\\n\t\";\n }\n if (effect.outputColorSpace !== NoColorSpace) {\n data.colorSpace = effect.outputColorSpace;\n } else if (effect.inputColorSpace !== null) {\n data.colorSpace = effect.inputColorSpace;\n }\n const depthParamRegExp = /MainImage *\\([\\w\\s,]*?depth[\\w\\s,]*?\\)/;\n fragmentMainImage += `${prefix}MainImage(color0, UV, `;\n if ((data.attributes & EffectAttribute.DEPTH) !== 0 && depthParamRegExp.test(fragmentShader)) {\n fragmentMainImage += \"depth, \";\n data.readDepth = true;\n }\n fragmentMainImage += \"color1);\\n\t\";\n const blendOpacity = prefix + \"BlendOpacity\";\n data.uniforms.set(blendOpacity, blendMode.opacity);\n fragmentMainImage += `color0 = blend${blendMode.blendFunction}(color0, color1, ${blendOpacity});\n\n\t`;\n fragmentHead += `uniform float ${blendOpacity};\n\n`;\n }\n fragmentHead += fragmentShader + \"\\n\";\n if (vertexShader !== null) {\n vertexHead += vertexShader + \"\\n\";\n }\n shaderParts.set(EffectShaderSection.FRAGMENT_HEAD, fragmentHead);\n shaderParts.set(EffectShaderSection.FRAGMENT_MAIN_UV, fragmentMainUv);\n shaderParts.set(EffectShaderSection.FRAGMENT_MAIN_IMAGE, fragmentMainImage);\n shaderParts.set(EffectShaderSection.VERTEX_HEAD, vertexHead);\n shaderParts.set(EffectShaderSection.VERTEX_MAIN_SUPPORT, vertexMainSupport);\n if (effect.extensions !== null) {\n for (const extension of effect.extensions) {\n data.extensions.add(extension);\n }\n }\n }\n}\nvar EffectPass = class extends Pass {\n /**\n * Constructs a new effect pass.\n *\n * @param {Camera} camera - The main camera.\n * @param {...Effect} effects - The effects that will be rendered by this pass.\n */\n constructor(camera, ...effects) {\n super(\"EffectPass\");\n this.fullscreenMaterial = new EffectMaterial(null, null, null, camera);\n this.listener = (event) => this.handleEvent(event);\n this.effects = [];\n this.setEffects(effects);\n this.skipRendering = false;\n this.minTime = 1;\n this.maxTime = Number.POSITIVE_INFINITY;\n this.timeScale = 1;\n }\n set mainScene(value) {\n for (const effect of this.effects) {\n effect.mainScene = value;\n }\n }\n set mainCamera(value) {\n this.fullscreenMaterial.copyCameraSettings(value);\n for (const effect of this.effects) {\n effect.mainCamera = value;\n }\n }\n /**\n * Indicates whether this pass encodes its output when rendering to screen.\n *\n * @type {Boolean}\n * @deprecated Use fullscreenMaterial.encodeOutput instead.\n */\n get encodeOutput() {\n return this.fullscreenMaterial.encodeOutput;\n }\n set encodeOutput(value) {\n this.fullscreenMaterial.encodeOutput = value;\n }\n /**\n * Indicates whether dithering is enabled.\n *\n * @type {Boolean}\n */\n get dithering() {\n return this.fullscreenMaterial.dithering;\n }\n set dithering(value) {\n const material = this.fullscreenMaterial;\n material.dithering = value;\n material.needsUpdate = true;\n }\n /**\n * Sets the effects.\n *\n * @param {Effect[]} effects - The effects.\n * @protected\n */\n setEffects(effects) {\n for (const effect of this.effects) {\n effect.removeEventListener(\"change\", this.listener);\n }\n this.effects = effects.sort((a, b) => b.attributes - a.attributes);\n for (const effect of this.effects) {\n effect.addEventListener(\"change\", this.listener);\n }\n }\n /**\n * Updates the compound shader material.\n *\n * @protected\n */\n updateMaterial() {\n const data = new EffectShaderData();\n let id = 0;\n for (const effect of this.effects) {\n if (effect.blendMode.blendFunction === BlendFunction.DST) {\n data.attributes |= effect.getAttributes() & EffectAttribute.DEPTH;\n } else if ((data.attributes & effect.getAttributes() & EffectAttribute.CONVOLUTION) !== 0) {\n throw new Error(`Convolution effects cannot be merged (${effect.name})`);\n } else {\n integrateEffect(\"e\" + id++, effect, data);\n }\n }\n let fragmentHead = data.shaderParts.get(EffectShaderSection.FRAGMENT_HEAD);\n let fragmentMainImage = data.shaderParts.get(EffectShaderSection.FRAGMENT_MAIN_IMAGE);\n let fragmentMainUv = data.shaderParts.get(EffectShaderSection.FRAGMENT_MAIN_UV);\n const blendRegExp = /\\bblend\\b/g;\n for (const blendMode of data.blendModes.values()) {\n fragmentHead += blendMode.getShaderCode().replace(blendRegExp, `blend${blendMode.blendFunction}`) + \"\\n\";\n }\n if ((data.attributes & EffectAttribute.DEPTH) !== 0) {\n if (data.readDepth) {\n fragmentMainImage = \"float depth = readDepth(UV);\\n\\n\t\" + fragmentMainImage;\n }\n this.needsDepthTexture = this.getDepthTexture() === null;\n } else {\n this.needsDepthTexture = false;\n }\n if (data.colorSpace === SRGBColorSpace) {\n fragmentMainImage += \"color0 = sRGBToLinear(color0);\\n\t\";\n }\n if (data.uvTransformation) {\n fragmentMainUv = \"vec2 transformedUv = vUv;\\n\" + fragmentMainUv;\n data.defines.set(\"UV\", \"transformedUv\");\n } else {\n data.defines.set(\"UV\", \"vUv\");\n }\n data.shaderParts.set(EffectShaderSection.FRAGMENT_HEAD, fragmentHead);\n data.shaderParts.set(EffectShaderSection.FRAGMENT_MAIN_IMAGE, fragmentMainImage);\n data.shaderParts.set(EffectShaderSection.FRAGMENT_MAIN_UV, fragmentMainUv);\n for (const [key, value] of data.shaderParts) {\n if (value !== null) {\n data.shaderParts.set(key, value.trim().replace(/^#/, \"\\n#\"));\n }\n }\n this.skipRendering = id === 0;\n this.needsSwap = !this.skipRendering;\n this.fullscreenMaterial.setShaderData(data);\n }\n /**\n * Rebuilds the shader material.\n */\n recompile() {\n this.updateMaterial();\n }\n /**\n * Returns the current depth texture.\n *\n * @return {Texture} The current depth texture, or null if there is none.\n */\n getDepthTexture() {\n return this.fullscreenMaterial.depthBuffer;\n }\n /**\n * Sets the depth texture.\n *\n * @param {Texture} depthTexture - A depth texture.\n * @param {DepthPackingStrategies} [depthPacking=BasicDepthPacking] - The depth packing.\n */\n setDepthTexture(depthTexture, depthPacking = BasicDepthPacking12) {\n this.fullscreenMaterial.depthBuffer = depthTexture;\n this.fullscreenMaterial.depthPacking = depthPacking;\n for (const effect of this.effects) {\n effect.setDepthTexture(depthTexture, depthPacking);\n }\n }\n /**\n * Renders the effect.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\n */\n render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n for (const effect of this.effects) {\n effect.update(renderer, inputBuffer, deltaTime);\n }\n if (!this.skipRendering || this.renderToScreen) {\n const material = this.fullscreenMaterial;\n material.inputBuffer = inputBuffer.texture;\n material.time += deltaTime * this.timeScale;\n renderer.setRenderTarget(this.renderToScreen ? null : outputBuffer);\n renderer.render(this.scene, this.camera);\n }\n }\n /**\n * Updates the size of this pass.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n this.fullscreenMaterial.setSize(width, height);\n for (const effect of this.effects) {\n effect.setSize(width, height);\n }\n }\n /**\n * Performs initialization tasks.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {Boolean} alpha - Whether the renderer uses the alpha channel or not.\n * @param {Number} frameBufferType - The type of the main frame buffers.\n */\n initialize(renderer, alpha, frameBufferType) {\n this.renderer = renderer;\n for (const effect of this.effects) {\n effect.initialize(renderer, alpha, frameBufferType);\n }\n this.updateMaterial();\n if (frameBufferType !== void 0 && frameBufferType !== UnsignedByteType5) {\n this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH = \"1\";\n }\n }\n /**\n * Deletes disposable objects.\n */\n dispose() {\n super.dispose();\n for (const effect of this.effects) {\n effect.removeEventListener(\"change\", this.listener);\n effect.dispose();\n }\n }\n /**\n * Handles events.\n *\n * @param {Event} event - An event.\n */\n handleEvent(event) {\n switch (event.type) {\n case \"change\":\n this.recompile();\n break;\n }\n }\n};\n\n// src/passes/GaussianBlurPass.js\nimport { UnsignedByteType as UnsignedByteType6, WebGLRenderTarget as WebGLRenderTarget8 } from \"three\";\nvar GaussianBlurPass = class extends Pass {\n /**\n * Constructs a new Gaussian blur pass.\n *\n * @param {Object} [options] - The options.\n * @param {Number} [options.kernelSize=35] - The kernel size. Should be an odd number in the range [3, 1020].\n * @param {Number} [options.iterations=1] - The amount of times the blur should be applied.\n * @param {Number} [options.resolutionScale=1.0] - The resolution scale.\n * @param {Number} [options.resolutionX=Resolution.AUTO_SIZE] - The horizontal resolution.\n * @param {Number} [options.resolutionY=Resolution.AUTO_SIZE] - The vertical resolution.\n */\n constructor({\n kernelSize = 35,\n iterations = 1,\n resolutionScale = 1,\n resolutionX = Resolution.AUTO_SIZE,\n resolutionY = Resolution.AUTO_SIZE\n } = {}) {\n super(\"GaussianBlurPass\");\n this.renderTargetA = new WebGLRenderTarget8(1, 1, { depthBuffer: false });\n this.renderTargetA.texture.name = \"Blur.Target.A\";\n this.renderTargetB = this.renderTargetA.clone();\n this.renderTargetB.texture.name = \"Blur.Target.B\";\n this.blurMaterial = new GaussianBlurMaterial({ kernelSize });\n this.copyMaterial = new CopyMaterial();\n this.copyMaterial.inputBuffer = this.renderTargetB.texture;\n const resolution = this.resolution = new Resolution(this, resolutionX, resolutionY, resolutionScale);\n resolution.addEventListener(\"change\", (e) => this.setSize(resolution.baseWidth, resolution.baseHeight));\n this.iterations = iterations;\n }\n /**\n * Renders the blur.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\n */\n render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n const scene = this.scene;\n const camera = this.camera;\n const renderTargetA = this.renderTargetA;\n const renderTargetB = this.renderTargetB;\n const blurMaterial = this.blurMaterial;\n this.fullscreenMaterial = blurMaterial;\n let previousBuffer = inputBuffer;\n for (let i = 0, l = Math.max(this.iterations, 1); i < l; ++i) {\n blurMaterial.direction.set(1, 0);\n blurMaterial.inputBuffer = previousBuffer.texture;\n renderer.setRenderTarget(renderTargetA);\n renderer.render(scene, camera);\n blurMaterial.direction.set(0, 1);\n blurMaterial.inputBuffer = renderTargetA.texture;\n renderer.setRenderTarget(renderTargetB);\n renderer.render(scene, camera);\n if (i === 0 && l > 1) {\n previousBuffer = renderTargetB;\n }\n }\n this.fullscreenMaterial = this.copyMaterial;\n renderer.setRenderTarget(this.renderToScreen ? null : outputBuffer);\n renderer.render(scene, camera);\n }\n /**\n * Updates the size of this pass.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n const resolution = this.resolution;\n resolution.setBaseSize(width, height);\n const w = resolution.width, h = resolution.height;\n this.renderTargetA.setSize(w, h);\n this.renderTargetB.setSize(w, h);\n this.blurMaterial.setSize(width, height);\n }\n /**\n * Performs initialization tasks.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {Boolean} alpha - Whether the renderer uses the alpha channel or not.\n * @param {Number} frameBufferType - The type of the main frame buffers.\n */\n initialize(renderer, alpha, frameBufferType) {\n if (frameBufferType !== void 0) {\n this.renderTargetA.texture.type = frameBufferType;\n this.renderTargetB.texture.type = frameBufferType;\n if (frameBufferType !== UnsignedByteType6) {\n this.blurMaterial.defines.FRAMEBUFFER_PRECISION_HIGH = \"1\";\n this.copyMaterial.defines.FRAMEBUFFER_PRECISION_HIGH = \"1\";\n } else if (getOutputColorSpace(renderer) === SRGBColorSpace) {\n setTextureColorSpace(this.renderTargetA.texture, SRGBColorSpace);\n setTextureColorSpace(this.renderTargetB.texture, SRGBColorSpace);\n }\n }\n }\n};\n\n// src/passes/KawaseBlurPass.js\nimport { UnsignedByteType as UnsignedByteType7, WebGLRenderTarget as WebGLRenderTarget9 } from \"three\";\nvar KawaseBlurPass = class extends Pass {\n /**\n * Constructs a new Kawase blur pass.\n *\n * @param {Object} [options] - The options.\n * @param {KernelSize} [options.kernelSize=KernelSize.MEDIUM] - The blur kernel size.\n * @param {Number} [options.resolutionScale=0.5] - The resolution scale.\n * @param {Number} [options.resolutionX=Resolution.AUTO_SIZE] - The horizontal resolution.\n * @param {Number} [options.resolutionY=Resolution.AUTO_SIZE] - The vertical resolution.\n * @param {Number} [options.width=Resolution.AUTO_SIZE] - Deprecated. Use resolutionX instead.\n * @param {Number} [options.height=Resolution.AUTO_SIZE] - Deprecated. Use resolutionY instead.\n */\n constructor({\n kernelSize = KernelSize.MEDIUM,\n resolutionScale = 0.5,\n width = Resolution.AUTO_SIZE,\n height = Resolution.AUTO_SIZE,\n resolutionX = width,\n resolutionY = height\n } = {}) {\n super(\"KawaseBlurPass\");\n this.renderTargetA = new WebGLRenderTarget9(1, 1, { depthBuffer: false });\n this.renderTargetA.texture.name = \"Blur.Target.A\";\n this.renderTargetB = this.renderTargetA.clone();\n this.renderTargetB.texture.name = \"Blur.Target.B\";\n const resolution = this.resolution = new Resolution(this, resolutionX, resolutionY, resolutionScale);\n resolution.addEventListener(\"change\", (e) => this.setSize(resolution.baseWidth, resolution.baseHeight));\n this._blurMaterial = new KawaseBlurMaterial();\n this._blurMaterial.kernelSize = kernelSize;\n this.copyMaterial = new CopyMaterial();\n }\n /**\n * Returns the resolution settings.\n *\n * @deprecated Use resolution instead.\n * @return {Resolution} The resolution.\n */\n getResolution() {\n return this.resolution;\n }\n /**\n * The blur material.\n *\n * @type {KawaseBlurMaterial}\n */\n get blurMaterial() {\n return this._blurMaterial;\n }\n /**\n * The blur material.\n *\n * @type {KawaseBlurMaterial}\n * @protected\n */\n set blurMaterial(value) {\n this._blurMaterial = value;\n }\n /**\n * Indicates whether dithering is enabled.\n *\n * @type {Boolean}\n * @deprecated Use copyMaterial.dithering instead.\n */\n get dithering() {\n return this.copyMaterial.dithering;\n }\n set dithering(value) {\n this.copyMaterial.dithering = value;\n }\n /**\n * The kernel size.\n *\n * @type {KernelSize}\n * @deprecated Use blurMaterial.kernelSize instead.\n */\n get kernelSize() {\n return this.blurMaterial.kernelSize;\n }\n set kernelSize(value) {\n this.blurMaterial.kernelSize = value;\n }\n /**\n * The current width of the internal render targets.\n *\n * @type {Number}\n * @deprecated Use resolution.width instead.\n */\n get width() {\n return this.resolution.width;\n }\n /**\n * Sets the render width.\n *\n * @type {Number}\n * @deprecated Use resolution.preferredWidth instead.\n */\n set width(value) {\n this.resolution.preferredWidth = value;\n }\n /**\n * The current height of the internal render targets.\n *\n * @type {Number}\n * @deprecated Use resolution.height instead.\n */\n get height() {\n return this.resolution.height;\n }\n /**\n * Sets the render height.\n *\n * @type {Number}\n * @deprecated Use resolution.preferredHeight instead.\n */\n set height(value) {\n this.resolution.preferredHeight = value;\n }\n /**\n * The current blur scale.\n *\n * @type {Number}\n * @deprecated Use blurMaterial.scale instead.\n */\n get scale() {\n return this.blurMaterial.scale;\n }\n set scale(value) {\n this.blurMaterial.scale = value;\n }\n /**\n * Returns the current blur scale.\n *\n * @deprecated Use blurMaterial.scale instead.\n * @return {Number} The scale.\n */\n getScale() {\n return this.blurMaterial.scale;\n }\n /**\n * Sets the blur scale.\n *\n * @deprecated Use blurMaterial.scale instead.\n * @param {Number} value - The scale.\n */\n setScale(value) {\n this.blurMaterial.scale = value;\n }\n /**\n * Returns the kernel size.\n *\n * @deprecated Use blurMaterial.kernelSize instead.\n * @return {KernelSize} The kernel size.\n */\n getKernelSize() {\n return this.kernelSize;\n }\n /**\n * Sets the kernel size.\n *\n * Larger kernels require more processing power but scale well with larger render resolutions.\n *\n * @deprecated Use blurMaterial.kernelSize instead.\n * @param {KernelSize} value - The kernel size.\n */\n setKernelSize(value) {\n this.kernelSize = value;\n }\n /**\n * Returns the current resolution scale.\n *\n * @return {Number} The resolution scale.\n * @deprecated Use resolution instead.\n */\n getResolutionScale() {\n return this.resolution.scale;\n }\n /**\n * Sets the resolution scale.\n *\n * @param {Number} scale - The new resolution scale.\n * @deprecated Use resolution instead.\n */\n setResolutionScale(scale) {\n this.resolution.scale = scale;\n }\n /**\n * Renders the blur.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\n */\n render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n const scene = this.scene;\n const camera = this.camera;\n const renderTargetA = this.renderTargetA;\n const renderTargetB = this.renderTargetB;\n const material = this.blurMaterial;\n const kernelSequence = material.kernelSequence;\n let previousBuffer = inputBuffer;\n this.fullscreenMaterial = material;\n for (let i = 0, l = kernelSequence.length; i < l; ++i) {\n const buffer = (i & 1) === 0 ? renderTargetA : renderTargetB;\n material.kernel = kernelSequence[i];\n material.inputBuffer = previousBuffer.texture;\n renderer.setRenderTarget(buffer);\n renderer.render(scene, camera);\n previousBuffer = buffer;\n }\n this.fullscreenMaterial = this.copyMaterial;\n this.copyMaterial.inputBuffer = previousBuffer.texture;\n renderer.setRenderTarget(this.renderToScreen ? null : outputBuffer);\n renderer.render(scene, camera);\n }\n /**\n * Updates the size of this pass.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n const resolution = this.resolution;\n resolution.setBaseSize(width, height);\n const w = resolution.width, h = resolution.height;\n this.renderTargetA.setSize(w, h);\n this.renderTargetB.setSize(w, h);\n this.blurMaterial.setSize(width, height);\n }\n /**\n * Performs initialization tasks.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {Boolean} alpha - Whether the renderer uses the alpha channel or not.\n * @param {Number} frameBufferType - The type of the main frame buffers.\n */\n initialize(renderer, alpha, frameBufferType) {\n if (frameBufferType !== void 0) {\n this.renderTargetA.texture.type = frameBufferType;\n this.renderTargetB.texture.type = frameBufferType;\n if (frameBufferType !== UnsignedByteType7) {\n this.blurMaterial.defines.FRAMEBUFFER_PRECISION_HIGH = \"1\";\n this.copyMaterial.defines.FRAMEBUFFER_PRECISION_HIGH = \"1\";\n } else if (getOutputColorSpace(renderer) === SRGBColorSpace) {\n setTextureColorSpace(this.renderTargetA.texture, SRGBColorSpace);\n setTextureColorSpace(this.renderTargetB.texture, SRGBColorSpace);\n }\n }\n }\n /**\n * An auto sizing flag.\n *\n * @type {Number}\n * @deprecated Use {@link Resolution.AUTO_SIZE} instead.\n */\n static get AUTO_SIZE() {\n return Resolution.AUTO_SIZE;\n }\n};\n\n// src/passes/LambdaPass.js\nvar LambdaPass = class extends Pass {\n /**\n * Constructs a new lambda pass.\n *\n * @param {Function} f - A function.\n */\n constructor(f) {\n super(\"LambdaPass\", null, null);\n this.needsSwap = false;\n this.f = f;\n }\n /**\n * Executes the function.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\n */\n render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n this.f();\n }\n};\n\n// src/passes/LuminancePass.js\nimport { UnsignedByteType as UnsignedByteType8, WebGLRenderTarget as WebGLRenderTarget10 } from \"three\";\nvar LuminancePass = class extends Pass {\n /**\n * Constructs a new luminance pass.\n *\n * @param {Object} [options] - The options. See {@link LuminanceMaterial} for additional options.\n * @param {WebGLRenderTarget} [options.renderTarget] - A custom render target.\n * @param {Number} [options.resolutionScale=1.0] - The resolution scale.\n * @param {Number} [options.resolutionX=Resolution.AUTO_SIZE] - The horizontal resolution.\n * @param {Number} [options.resolutionY=Resolution.AUTO_SIZE] - The vertical resolution.\n * @param {Number} [options.width=Resolution.AUTO_SIZE] - Deprecated. Use resolutionX instead.\n * @param {Number} [options.height=Resolution.AUTO_SIZE] - Deprecated. Use resolutionY instead.\n */\n constructor({\n renderTarget,\n luminanceRange,\n colorOutput,\n resolutionScale = 1,\n width = Resolution.AUTO_SIZE,\n height = Resolution.AUTO_SIZE,\n resolutionX = width,\n resolutionY = height\n } = {}) {\n super(\"LuminancePass\");\n this.fullscreenMaterial = new LuminanceMaterial(colorOutput, luminanceRange);\n this.needsSwap = false;\n this.renderTarget = renderTarget;\n if (this.renderTarget === void 0) {\n this.renderTarget = new WebGLRenderTarget10(1, 1, { depthBuffer: false });\n this.renderTarget.texture.name = \"LuminancePass.Target\";\n }\n const resolution = this.resolution = new Resolution(this, resolutionX, resolutionY, resolutionScale);\n resolution.addEventListener(\"change\", (e) => this.setSize(resolution.baseWidth, resolution.baseHeight));\n }\n /**\n * The luminance texture.\n *\n * @type {Texture}\n */\n get texture() {\n return this.renderTarget.texture;\n }\n /**\n * Returns the luminance texture.\n *\n * @deprecated Use texture instead.\n * @return {Texture} The texture.\n */\n getTexture() {\n return this.renderTarget.texture;\n }\n /**\n * Returns the resolution settings.\n *\n * @deprecated Use resolution instead.\n * @return {Resolution} The resolution.\n */\n getResolution() {\n return this.resolution;\n }\n /**\n * Renders the luminance.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\n */\n render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n const material = this.fullscreenMaterial;\n material.inputBuffer = inputBuffer.texture;\n renderer.setRenderTarget(this.renderToScreen ? null : this.renderTarget);\n renderer.render(this.scene, this.camera);\n }\n /**\n * Updates the size of this pass.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n const resolution = this.resolution;\n resolution.setBaseSize(width, height);\n this.renderTarget.setSize(resolution.width, resolution.height);\n }\n /**\n * Performs initialization tasks.\n *\n * @param {WebGLRenderer} renderer - A renderer.\n * @param {Boolean} alpha - Whether the renderer uses the alpha channel.\n * @param {Number} frameBufferType - The type of the main frame buffers.\n */\n initialize(renderer, alpha, frameBufferType) {\n if (frameBufferType !== void 0 && frameBufferType !== UnsignedByteType8) {\n this.renderTarget.texture.type = frameBufferType;\n this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH = \"1\";\n }\n }\n};\n\n// src/passes/MaskPass.js\nvar MaskPass = class extends Pass {\n /**\n * Constructs a new mask pass.\n *\n * @param {Scene} scene - The scene to render.\n * @param {Camera} camera - The camera to use.\n */\n constructor(scene, camera) {\n super(\"MaskPass\", scene, camera);\n this.needsSwap = false;\n this.clearPass = new ClearPass(false, false, true);\n this.inverse = false;\n }\n set mainScene(value) {\n this.scene = value;\n }\n set mainCamera(value) {\n this.camera = value;\n }\n /**\n * Indicates whether the mask should be inverted.\n *\n * @type {Boolean}\n */\n get inverted() {\n return this.inverse;\n }\n set inverted(value) {\n this.inverse = value;\n }\n /**\n * Indicates whether this pass should clear the stencil buffer.\n *\n * @type {Boolean}\n * @deprecated Use clearPass.enabled instead.\n */\n get clear() {\n return this.clearPass.enabled;\n }\n set clear(value) {\n this.clearPass.enabled = value;\n }\n /**\n * Returns the internal clear pass.\n *\n * @deprecated Use clearPass.enabled instead.\n * @return {ClearPass} The clear pass.\n */\n getClearPass() {\n return this.clearPass;\n }\n /**\n * Indicates whether the mask is inverted.\n *\n * @deprecated Use inverted instead.\n * @return {Boolean} Whether the mask is inverted.\n */\n isInverted() {\n return this.inverted;\n }\n /**\n * Enables or disable mask inversion.\n *\n * @deprecated Use inverted instead.\n * @param {Boolean} value - Whether the mask should be inverted.\n */\n setInverted(value) {\n this.inverted = value;\n }\n /**\n * Renders the effect.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\n */\n render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n const context = renderer.getContext();\n const buffers = renderer.state.buffers;\n const scene = this.scene;\n const camera = this.camera;\n const clearPass = this.clearPass;\n const writeValue = this.inverted ? 0 : 1;\n const clearValue = 1 - writeValue;\n buffers.color.setMask(false);\n buffers.depth.setMask(false);\n buffers.color.setLocked(true);\n buffers.depth.setLocked(true);\n buffers.stencil.setTest(true);\n buffers.stencil.setOp(context.REPLACE, context.REPLACE, context.REPLACE);\n buffers.stencil.setFunc(context.ALWAYS, writeValue, 4294967295);\n buffers.stencil.setClear(clearValue);\n buffers.stencil.setLocked(true);\n if (this.clearPass.enabled) {\n if (this.renderToScreen) {\n clearPass.render(renderer, null);\n } else {\n clearPass.render(renderer, inputBuffer);\n clearPass.render(renderer, outputBuffer);\n }\n }\n if (this.renderToScreen) {\n renderer.setRenderTarget(null);\n renderer.render(scene, camera);\n } else {\n renderer.setRenderTarget(inputBuffer);\n renderer.render(scene, camera);\n renderer.setRenderTarget(outputBuffer);\n renderer.render(scene, camera);\n }\n buffers.color.setLocked(false);\n buffers.depth.setLocked(false);\n buffers.stencil.setLocked(false);\n buffers.stencil.setFunc(context.EQUAL, 1, 4294967295);\n buffers.stencil.setOp(context.KEEP, context.KEEP, context.KEEP);\n buffers.stencil.setLocked(true);\n }\n};\n\n// src/passes/MipmapBlurPass.js\nimport { UnsignedByteType as UnsignedByteType9, Vector2 as Vector215, WebGLRenderTarget as WebGLRenderTarget11 } from \"three\";\nvar MipmapBlurPass = class extends Pass {\n /**\n * Constructs a new mipmap blur pass.\n *\n * @param {Object} [options] - The options.\n */\n constructor() {\n super(\"MipmapBlurPass\");\n this.needsSwap = false;\n this.renderTarget = new WebGLRenderTarget11(1, 1, { depthBuffer: false });\n this.renderTarget.texture.name = \"Upsampling.Mipmap0\";\n this.downsamplingMipmaps = [];\n this.upsamplingMipmaps = [];\n this.downsamplingMaterial = new DownsamplingMaterial();\n this.upsamplingMaterial = new UpsamplingMaterial();\n this.resolution = new Vector215();\n }\n /**\n * A texture that contains the blurred result.\n *\n * @type {Texture}\n */\n get texture() {\n return this.renderTarget.texture;\n }\n /**\n * The MIP levels. Default is 8.\n *\n * @type {Number}\n */\n get levels() {\n return this.downsamplingMipmaps.length;\n }\n set levels(value) {\n if (this.levels !== value) {\n const renderTarget = this.renderTarget;\n this.dispose();\n this.downsamplingMipmaps = [];\n this.upsamplingMipmaps = [];\n for (let i = 0; i < value; ++i) {\n const mipmap = renderTarget.clone();\n mipmap.texture.name = \"Downsampling.Mipmap\" + i;\n this.downsamplingMipmaps.push(mipmap);\n }\n this.upsamplingMipmaps.push(renderTarget);\n for (let i = 1, l = value - 1; i < l; ++i) {\n const mipmap = renderTarget.clone();\n mipmap.texture.name = \"Upsampling.Mipmap\" + i;\n this.upsamplingMipmaps.push(mipmap);\n }\n this.setSize(this.resolution.x, this.resolution.y);\n }\n }\n /**\n * The blur radius.\n *\n * @type {Number}\n */\n get radius() {\n return this.upsamplingMaterial.radius;\n }\n set radius(value) {\n this.upsamplingMaterial.radius = value;\n }\n /**\n * Renders the blur.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\n */\n render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n const { scene, camera } = this;\n const { downsamplingMaterial, upsamplingMaterial } = this;\n const { downsamplingMipmaps, upsamplingMipmaps } = this;\n let previousBuffer = inputBuffer;\n this.fullscreenMaterial = downsamplingMaterial;\n for (let i = 0, l = downsamplingMipmaps.length; i < l; ++i) {\n const mipmap = downsamplingMipmaps[i];\n downsamplingMaterial.setSize(previousBuffer.width, previousBuffer.height);\n downsamplingMaterial.inputBuffer = previousBuffer.texture;\n renderer.setRenderTarget(mipmap);\n renderer.render(scene, camera);\n previousBuffer = mipmap;\n }\n this.fullscreenMaterial = upsamplingMaterial;\n for (let i = upsamplingMipmaps.length - 1; i >= 0; --i) {\n const mipmap = upsamplingMipmaps[i];\n upsamplingMaterial.setSize(previousBuffer.width, previousBuffer.height);\n upsamplingMaterial.inputBuffer = previousBuffer.texture;\n upsamplingMaterial.supportBuffer = downsamplingMipmaps[i].texture;\n renderer.setRenderTarget(mipmap);\n renderer.render(scene, camera);\n previousBuffer = mipmap;\n }\n }\n /**\n * Updates the size of this pass.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n const resolution = this.resolution;\n resolution.set(width, height);\n let w = resolution.width, h = resolution.height;\n for (let i = 0, l = this.downsamplingMipmaps.length; i < l; ++i) {\n w = Math.round(w * 0.5);\n h = Math.round(h * 0.5);\n this.downsamplingMipmaps[i].setSize(w, h);\n if (i < this.upsamplingMipmaps.length) {\n this.upsamplingMipmaps[i].setSize(w, h);\n }\n }\n }\n /**\n * Performs initialization tasks.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {Boolean} alpha - Whether the renderer uses the alpha channel or not.\n * @param {Number} frameBufferType - The type of the main frame buffers.\n */\n initialize(renderer, alpha, frameBufferType) {\n if (frameBufferType !== void 0) {\n const mipmaps = this.downsamplingMipmaps.concat(this.upsamplingMipmaps);\n for (const mipmap of mipmaps) {\n mipmap.texture.type = frameBufferType;\n }\n if (frameBufferType !== UnsignedByteType9) {\n this.downsamplingMaterial.defines.FRAMEBUFFER_PRECISION_HIGH = \"1\";\n this.upsamplingMaterial.defines.FRAMEBUFFER_PRECISION_HIGH = \"1\";\n } else if (getOutputColorSpace(renderer) === SRGBColorSpace) {\n for (const mipmap of mipmaps) {\n setTextureColorSpace(mipmap.texture, SRGBColorSpace);\n }\n }\n }\n }\n /**\n * Deletes internal render targets and textures.\n */\n dispose() {\n super.dispose();\n for (const mipmap of this.downsamplingMipmaps.concat(this.upsamplingMipmaps)) {\n mipmap.dispose();\n }\n }\n};\n\n// src/passes/NormalPass.js\nimport { Color as Color3, MeshNormalMaterial, NearestFilter as NearestFilter5, WebGLRenderTarget as WebGLRenderTarget12 } from \"three\";\nvar NormalPass = class extends Pass {\n /**\n * Constructs a new normal pass.\n *\n * @param {Scene} scene - The scene to render.\n * @param {Camera} camera - The camera to use to render the scene.\n * @param {Object} [options] - The options.\n * @param {WebGLRenderTarget} [options.renderTarget] - A custom render target.\n * @param {Number} [options.resolutionScale=1.0] - The resolution scale.\n * @param {Number} [options.resolutionX=Resolution.AUTO_SIZE] - The horizontal resolution.\n * @param {Number} [options.resolutionY=Resolution.AUTO_SIZE] - The vertical resolution.\n * @param {Number} [options.width=Resolution.AUTO_SIZE] - Deprecated. Use resolutionX instead.\n * @param {Number} [options.height=Resolution.AUTO_SIZE] - Deprecated. Use resolutionY instead.\n */\n constructor(scene, camera, {\n renderTarget,\n resolutionScale = 1,\n width = Resolution.AUTO_SIZE,\n height = Resolution.AUTO_SIZE,\n resolutionX = width,\n resolutionY = height\n } = {}) {\n super(\"NormalPass\");\n this.needsSwap = false;\n this.renderPass = new RenderPass(scene, camera, new MeshNormalMaterial());\n const renderPass = this.renderPass;\n renderPass.ignoreBackground = true;\n renderPass.skipShadowMapUpdate = true;\n const clearPass = renderPass.getClearPass();\n clearPass.overrideClearColor = new Color3(7829503);\n clearPass.overrideClearAlpha = 1;\n this.renderTarget = renderTarget;\n if (this.renderTarget === void 0) {\n this.renderTarget = new WebGLRenderTarget12(1, 1, {\n minFilter: NearestFilter5,\n magFilter: NearestFilter5\n });\n this.renderTarget.texture.name = \"NormalPass.Target\";\n }\n const resolution = this.resolution = new Resolution(this, resolutionX, resolutionY, resolutionScale);\n resolution.addEventListener(\"change\", (e) => this.setSize(resolution.baseWidth, resolution.baseHeight));\n }\n set mainScene(value) {\n this.renderPass.mainScene = value;\n }\n set mainCamera(value) {\n this.renderPass.mainCamera = value;\n }\n /**\n * The normal texture.\n *\n * @type {Texture}\n */\n get texture() {\n return this.renderTarget.texture;\n }\n /**\n * The normal texture.\n *\n * @deprecated Use texture instead.\n * @return {Texture} The texture.\n */\n getTexture() {\n return this.renderTarget.texture;\n }\n /**\n * Returns the resolution settings.\n *\n * @deprecated Use resolution instead.\n * @return {Resolution} The resolution.\n */\n getResolution() {\n return this.resolution;\n }\n /**\n * Returns the current resolution scale.\n *\n * @return {Number} The resolution scale.\n * @deprecated Use resolution.preferredWidth or resolution.preferredHeight instead.\n */\n getResolutionScale() {\n return this.resolution.scale;\n }\n /**\n * Sets the resolution scale.\n *\n * @param {Number} scale - The new resolution scale.\n * @deprecated Use resolution.preferredWidth or resolution.preferredHeight instead.\n */\n setResolutionScale(scale) {\n this.resolution.scale = scale;\n }\n /**\n * Renders the scene normals.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\n */\n render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n const renderTarget = this.renderToScreen ? null : this.renderTarget;\n this.renderPass.render(renderer, renderTarget, renderTarget);\n }\n /**\n * Updates the size of this pass.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n const resolution = this.resolution;\n resolution.setBaseSize(width, height);\n this.renderTarget.setSize(resolution.width, resolution.height);\n }\n};\n\n// src/passes/ShaderPass.js\nimport { UnsignedByteType as UnsignedByteType10 } from \"three\";\nvar ShaderPass = class extends Pass {\n /**\n * Constructs a new shader pass.\n *\n * @param {ShaderMaterial} material - A shader material.\n * @param {String} [input=\"inputBuffer\"] - The name of the input buffer uniform.\n */\n constructor(material, input = \"inputBuffer\") {\n super(\"ShaderPass\");\n this.fullscreenMaterial = material;\n this.input = input;\n }\n /**\n * Sets the name of the input buffer uniform.\n *\n * @param {String} input - The name of the input buffer uniform.\n * @deprecated Use input instead.\n */\n setInput(input) {\n this.input = input;\n }\n /**\n * Renders the effect.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\n */\n render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n const uniforms = this.fullscreenMaterial.uniforms;\n if (inputBuffer !== null && uniforms !== void 0 && uniforms[this.input] !== void 0) {\n uniforms[this.input].value = inputBuffer.texture;\n }\n renderer.setRenderTarget(this.renderToScreen ? null : outputBuffer);\n renderer.render(this.scene, this.camera);\n }\n /**\n * Performs initialization tasks.\n *\n * @param {WebGLRenderer} renderer - A renderer.\n * @param {Boolean} alpha - Whether the renderer uses the alpha channel.\n * @param {Number} frameBufferType - The type of the main frame buffers.\n */\n initialize(renderer, alpha, frameBufferType) {\n if (frameBufferType !== void 0 && frameBufferType !== UnsignedByteType10) {\n this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH = \"1\";\n }\n }\n};\n\n// src/passes/TiltShiftBlurPass.js\nvar TiltShiftBlurPass = class extends KawaseBlurPass {\n /**\n * Constructs a new Kawase blur pass.\n *\n * @param {Object} [options] - The options.\n * @param {Number} [options.offset=0.0] - The relative offset of the focus area.\n * @param {Number} [options.rotation=0.0] - The rotation of the focus area in radians.\n * @param {Number} [options.focusArea=0.4] - The relative size of the focus area.\n * @param {Number} [options.feather=0.3] - The softness of the focus area edges.\n * @param {KernelSize} [options.kernelSize=KernelSize.MEDIUM] - The blur kernel size.\n * @param {Number} [options.resolutionScale=0.5] - The resolution scale.\n * @param {Number} [options.resolutionX=Resolution.AUTO_SIZE] - The horizontal resolution.\n * @param {Number} [options.resolutionY=Resolution.AUTO_SIZE] - The vertical resolution.\n */\n constructor({\n offset = 0,\n rotation = 0,\n focusArea = 0.4,\n feather = 0.3,\n kernelSize = KernelSize.MEDIUM,\n resolutionScale = 0.5,\n resolutionX = Resolution.AUTO_SIZE,\n resolutionY = Resolution.AUTO_SIZE\n } = {}) {\n super({ kernelSize, resolutionScale, resolutionX, resolutionY });\n this.blurMaterial = new TiltShiftBlurMaterial({ kernelSize, offset, rotation, focusArea, feather });\n }\n};\n\n// src/core/Timer.js\nvar MILLISECONDS_TO_SECONDS = 1 / 1e3;\nvar SECONDS_TO_MILLISECONDS = 1e3;\nvar Timer = class {\n /**\n * Constructs a new timer.\n */\n constructor() {\n this.startTime = performance.now();\n this.previousTime = 0;\n this.currentTime = 0;\n this._delta = 0;\n this._elapsed = 0;\n this._fixedDelta = 1e3 / 60;\n this.timescale = 1;\n this.useFixedDelta = false;\n this._autoReset = false;\n }\n /**\n * Enables or disables auto reset based on page visibility.\n *\n * If enabled, the timer will be reset when the page becomes visible. This effectively pauses the timer when the page\n * is hidden. Has no effect if the API is not supported.\n *\n * @type {Boolean}\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API\n */\n get autoReset() {\n return this._autoReset;\n }\n set autoReset(value) {\n if (typeof document !== \"undefined\" && document.hidden !== void 0) {\n if (value) {\n document.addEventListener(\"visibilitychange\", this);\n } else {\n document.removeEventListener(\"visibilitychange\", this);\n }\n this._autoReset = value;\n }\n }\n get delta() {\n return this._delta * MILLISECONDS_TO_SECONDS;\n }\n get fixedDelta() {\n return this._fixedDelta * MILLISECONDS_TO_SECONDS;\n }\n set fixedDelta(value) {\n this._fixedDelta = value * SECONDS_TO_MILLISECONDS;\n }\n get elapsed() {\n return this._elapsed * MILLISECONDS_TO_SECONDS;\n }\n /**\n * Updates this timer.\n *\n * @param {Boolean} [timestamp] - The current time in milliseconds.\n */\n update(timestamp) {\n if (this.useFixedDelta) {\n this._delta = this.fixedDelta;\n } else {\n this.previousTime = this.currentTime;\n this.currentTime = (timestamp !== void 0 ? timestamp : performance.now()) - this.startTime;\n this._delta = this.currentTime - this.previousTime;\n }\n this._delta *= this.timescale;\n this._elapsed += this._delta;\n }\n /**\n * Resets this timer.\n */\n reset() {\n this._delta = 0;\n this._elapsed = 0;\n this.currentTime = performance.now() - this.startTime;\n }\n handleEvent(e) {\n if (!document.hidden) {\n this.currentTime = performance.now() - this.startTime;\n }\n }\n dispose() {\n this.autoReset = false;\n }\n};\n\n// src/core/EffectComposer.js\nvar EffectComposer = class {\n /**\n * Constructs a new effect composer.\n *\n * @param {WebGLRenderer} renderer - The renderer that should be used.\n * @param {Object} [options] - The options.\n * @param {Boolean} [options.depthBuffer=true] - Whether the main render targets should have a depth buffer.\n * @param {Boolean} [options.stencilBuffer=false] - Whether the main render targets should have a stencil buffer.\n * @param {Boolean} [options.alpha] - Deprecated. Buffers are always RGBA since three r137.\n * @param {Number} [options.multisampling=0] - The number of samples used for multisample antialiasing. Requires WebGL 2.\n * @param {Number} [options.frameBufferType] - The type of the internal frame buffers. It's recommended to use HalfFloatType if possible.\n */\n constructor(renderer = null, {\n depthBuffer = true,\n stencilBuffer = false,\n multisampling = 0,\n frameBufferType\n } = {}) {\n this.renderer = null;\n this.inputBuffer = this.createBuffer(depthBuffer, stencilBuffer, frameBufferType, multisampling);\n this.outputBuffer = this.inputBuffer.clone();\n this.copyPass = new CopyPass();\n this.depthTexture = null;\n this.passes = [];\n this.timer = new Timer();\n this.autoRenderToScreen = true;\n this.setRenderer(renderer);\n }\n /**\n * The current amount of samples used for multisample anti-aliasing.\n *\n * @type {Number}\n */\n get multisampling() {\n return this.inputBuffer.samples || 0;\n }\n /**\n * Sets the amount of MSAA samples.\n *\n * Requires WebGL 2. Set to zero to disable multisampling.\n *\n * @type {Number}\n */\n set multisampling(value) {\n const buffer = this.inputBuffer;\n const multisampling = this.multisampling;\n if (multisampling > 0 && value > 0) {\n this.inputBuffer.samples = value;\n this.outputBuffer.samples = value;\n this.inputBuffer.dispose();\n this.outputBuffer.dispose();\n } else if (multisampling !== value) {\n this.inputBuffer.dispose();\n this.outputBuffer.dispose();\n this.inputBuffer = this.createBuffer(\n buffer.depthBuffer,\n buffer.stencilBuffer,\n buffer.texture.type,\n value\n );\n this.inputBuffer.depthTexture = this.depthTexture;\n this.outputBuffer = this.inputBuffer.clone();\n }\n }\n /**\n * Returns the internal timer.\n *\n * @return {Timer} The timer.\n */\n getTimer() {\n return this.timer;\n }\n /**\n * Returns the renderer.\n *\n * @return {WebGLRenderer} The renderer.\n */\n getRenderer() {\n return this.renderer;\n }\n /**\n * Sets the renderer.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n */\n setRenderer(renderer) {\n this.renderer = renderer;\n if (renderer !== null) {\n const size = renderer.getSize(new Vector216());\n const alpha = renderer.getContext().getContextAttributes().alpha;\n const frameBufferType = this.inputBuffer.texture.type;\n if (frameBufferType === UnsignedByteType11 && getOutputColorSpace(renderer) === SRGBColorSpace) {\n setTextureColorSpace(this.inputBuffer.texture, SRGBColorSpace);\n setTextureColorSpace(this.outputBuffer.texture, SRGBColorSpace);\n this.inputBuffer.dispose();\n this.outputBuffer.dispose();\n }\n renderer.autoClear = false;\n this.setSize(size.width, size.height);\n for (const pass of this.passes) {\n pass.initialize(renderer, alpha, frameBufferType);\n }\n }\n }\n /**\n * Replaces the current renderer with the given one.\n *\n * The auto clear mechanism of the provided renderer will be disabled. If the new render size differs from the\n * previous one, all passes will be updated.\n *\n * By default, the DOM element of the current renderer will automatically be removed from its parent node and the DOM\n * element of the new renderer will take its place.\n *\n * @deprecated Use setRenderer instead.\n * @param {WebGLRenderer} renderer - The new renderer.\n * @param {Boolean} updateDOM - Indicates whether the old canvas should be replaced by the new one in the DOM.\n * @return {WebGLRenderer} The old renderer.\n */\n replaceRenderer(renderer, updateDOM = true) {\n const oldRenderer = this.renderer;\n const parent = oldRenderer.domElement.parentNode;\n this.setRenderer(renderer);\n if (updateDOM && parent !== null) {\n parent.removeChild(oldRenderer.domElement);\n parent.appendChild(renderer.domElement);\n }\n return oldRenderer;\n }\n /**\n * Creates a depth texture attachment that will be provided to all passes.\n *\n * Note: When a shader reads from a depth texture and writes to a render target that uses the same depth texture\n * attachment, the depth information will be lost. This happens even if `depthWrite` is disabled.\n *\n * @private\n * @return {DepthTexture} The depth texture.\n */\n createDepthTexture() {\n const depthTexture = this.depthTexture = new DepthTexture();\n this.inputBuffer.depthTexture = depthTexture;\n this.inputBuffer.dispose();\n if (this.inputBuffer.stencilBuffer) {\n depthTexture.format = DepthStencilFormat;\n depthTexture.type = UnsignedInt248Type;\n } else {\n depthTexture.type = UnsignedIntType;\n }\n return depthTexture;\n }\n /**\n * Deletes the current depth texture.\n *\n * @private\n */\n deleteDepthTexture() {\n if (this.depthTexture !== null) {\n this.depthTexture.dispose();\n this.depthTexture = null;\n this.inputBuffer.depthTexture = null;\n this.inputBuffer.dispose();\n for (const pass of this.passes) {\n pass.setDepthTexture(null);\n }\n }\n }\n /**\n * Creates a new render target.\n *\n * @deprecated Create buffers manually via WebGLRenderTarget instead.\n * @param {Boolean} depthBuffer - Whether the render target should have a depth buffer.\n * @param {Boolean} stencilBuffer - Whether the render target should have a stencil buffer.\n * @param {Number} type - The frame buffer type.\n * @param {Number} multisampling - The number of samples to use for antialiasing.\n * @return {WebGLRenderTarget} A new render target that equals the renderer's canvas.\n */\n createBuffer(depthBuffer, stencilBuffer, type, multisampling) {\n const renderer = this.renderer;\n const size = renderer === null ? new Vector216() : renderer.getDrawingBufferSize(new Vector216());\n const options = {\n minFilter: LinearFilter2,\n magFilter: LinearFilter2,\n stencilBuffer,\n depthBuffer,\n type\n };\n const renderTarget = new WebGLRenderTarget13(size.width, size.height, options);\n if (multisampling > 0) {\n renderTarget.ignoreDepthForMultisampleCopy = false;\n renderTarget.samples = multisampling;\n }\n if (type === UnsignedByteType11 && getOutputColorSpace(renderer) === SRGBColorSpace) {\n setTextureColorSpace(renderTarget.texture, SRGBColorSpace);\n }\n renderTarget.texture.name = \"EffectComposer.Buffer\";\n renderTarget.texture.generateMipmaps = false;\n return renderTarget;\n }\n /**\n * Can be used to change the main scene for all registered passes and effects.\n *\n * @param {Scene} scene - The scene.\n */\n setMainScene(scene) {\n for (const pass of this.passes) {\n pass.mainScene = scene;\n }\n }\n /**\n * Can be used to change the main camera for all registered passes and effects.\n *\n * @param {Camera} camera - The camera.\n */\n setMainCamera(camera) {\n for (const pass of this.passes) {\n pass.mainCamera = camera;\n }\n }\n /**\n * Adds a pass, optionally at a specific index.\n *\n * @param {Pass} pass - A new pass.\n * @param {Number} [index] - An index at which the pass should be inserted.\n */\n addPass(pass, index) {\n const passes = this.passes;\n const renderer = this.renderer;\n const drawingBufferSize = renderer.getDrawingBufferSize(new Vector216());\n const alpha = renderer.getContext().getContextAttributes().alpha;\n const frameBufferType = this.inputBuffer.texture.type;\n pass.setRenderer(renderer);\n pass.setSize(drawingBufferSize.width, drawingBufferSize.height);\n pass.initialize(renderer, alpha, frameBufferType);\n if (this.autoRenderToScreen) {\n if (passes.length > 0) {\n passes[passes.length - 1].renderToScreen = false;\n }\n if (pass.renderToScreen) {\n this.autoRenderToScreen = false;\n }\n }\n if (index !== void 0) {\n passes.splice(index, 0, pass);\n } else {\n passes.push(pass);\n }\n if (this.autoRenderToScreen) {\n passes[passes.length - 1].renderToScreen = true;\n }\n if (pass.needsDepthTexture || this.depthTexture !== null) {\n if (this.depthTexture === null) {\n const depthTexture = this.createDepthTexture();\n for (pass of passes) {\n pass.setDepthTexture(depthTexture);\n }\n } else {\n pass.setDepthTexture(this.depthTexture);\n }\n }\n }\n /**\n * Removes a pass.\n *\n * @param {Pass} pass - The pass.\n */\n removePass(pass) {\n const passes = this.passes;\n const index = passes.indexOf(pass);\n const exists = index !== -1;\n const removed = exists && passes.splice(index, 1).length > 0;\n if (removed) {\n if (this.depthTexture !== null) {\n const reducer = (a, b) => a || b.needsDepthTexture;\n const depthTextureRequired = passes.reduce(reducer, false);\n if (!depthTextureRequired) {\n if (pass.getDepthTexture() === this.depthTexture) {\n pass.setDepthTexture(null);\n }\n this.deleteDepthTexture();\n }\n }\n if (this.autoRenderToScreen) {\n if (index === passes.length) {\n pass.renderToScreen = false;\n if (passes.length > 0) {\n passes[passes.length - 1].renderToScreen = true;\n }\n }\n }\n }\n }\n /**\n * Removes all passes.\n */\n removeAllPasses() {\n const passes = this.passes;\n this.deleteDepthTexture();\n if (passes.length > 0) {\n if (this.autoRenderToScreen) {\n passes[passes.length - 1].renderToScreen = false;\n }\n this.passes = [];\n }\n }\n /**\n * Renders all enabled passes in the order in which they were added.\n *\n * @param {Number} [deltaTime] - The time since the last frame in seconds.\n */\n render(deltaTime) {\n const renderer = this.renderer;\n const copyPass = this.copyPass;\n let inputBuffer = this.inputBuffer;\n let outputBuffer = this.outputBuffer;\n let stencilTest = false;\n let context, stencil, buffer;\n if (deltaTime === void 0) {\n this.timer.update();\n deltaTime = this.timer.delta;\n }\n for (const pass of this.passes) {\n if (pass.enabled) {\n pass.render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest);\n if (pass.needsSwap) {\n if (stencilTest) {\n copyPass.renderToScreen = pass.renderToScreen;\n context = renderer.getContext();\n stencil = renderer.state.buffers.stencil;\n stencil.setFunc(context.NOTEQUAL, 1, 4294967295);\n copyPass.render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest);\n stencil.setFunc(context.EQUAL, 1, 4294967295);\n }\n buffer = inputBuffer;\n inputBuffer = outputBuffer;\n outputBuffer = buffer;\n }\n if (pass instanceof MaskPass) {\n stencilTest = true;\n } else if (pass instanceof ClearMaskPass) {\n stencilTest = false;\n }\n }\n }\n }\n /**\n * Sets the size of the buffers, passes and the renderer.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n * @param {Boolean} [updateStyle] - Determines whether the style of the canvas should be updated.\n */\n setSize(width, height, updateStyle) {\n const renderer = this.renderer;\n const currentSize = renderer.getSize(new Vector216());\n if (width === void 0 || height === void 0) {\n width = currentSize.width;\n height = currentSize.height;\n }\n if (currentSize.width !== width || currentSize.height !== height) {\n renderer.setSize(width, height, updateStyle);\n }\n const drawingBufferSize = renderer.getDrawingBufferSize(new Vector216());\n this.inputBuffer.setSize(drawingBufferSize.width, drawingBufferSize.height);\n this.outputBuffer.setSize(drawingBufferSize.width, drawingBufferSize.height);\n for (const pass of this.passes) {\n pass.setSize(drawingBufferSize.width, drawingBufferSize.height);\n }\n }\n /**\n * Resets this composer by deleting all passes and creating new buffers.\n */\n reset() {\n const autoReset = this.timer.autoReset;\n this.dispose();\n this.autoRenderToScreen = true;\n this.timer.autoReset = autoReset;\n }\n /**\n * Disposes this composer and all passes.\n */\n dispose() {\n for (const pass of this.passes) {\n pass.dispose();\n }\n this.passes = [];\n if (this.inputBuffer !== null) {\n this.inputBuffer.dispose();\n }\n if (this.outputBuffer !== null) {\n this.outputBuffer.dispose();\n }\n this.deleteDepthTexture();\n this.copyPass.dispose();\n this.timer.dispose();\n }\n};\n\n// src/core/EffectShaderData.js\nvar EffectShaderData = class {\n /**\n * Constructs new shader data.\n */\n constructor() {\n this.shaderParts = /* @__PURE__ */ new Map([\n [EffectShaderSection.FRAGMENT_HEAD, null],\n [EffectShaderSection.FRAGMENT_MAIN_UV, null],\n [EffectShaderSection.FRAGMENT_MAIN_IMAGE, null],\n [EffectShaderSection.VERTEX_HEAD, null],\n [EffectShaderSection.VERTEX_MAIN_SUPPORT, null]\n ]);\n this.defines = /* @__PURE__ */ new Map();\n this.uniforms = /* @__PURE__ */ new Map();\n this.blendModes = /* @__PURE__ */ new Map();\n this.extensions = /* @__PURE__ */ new Set();\n this.attributes = EffectAttribute.NONE;\n this.varyings = /* @__PURE__ */ new Set();\n this.uvTransformation = false;\n this.readDepth = false;\n this.colorSpace = LinearSRGBColorSpace;\n }\n};\n\n// src/core/GaussKernel.js\nfunction getCoefficients(n) {\n let result;\n if (n === 0) {\n result = new Float64Array(0);\n } else if (n === 1) {\n result = new Float64Array([1]);\n } else if (n > 1) {\n let row0 = new Float64Array(n);\n let row1 = new Float64Array(n);\n for (let y = 1; y <= n; ++y) {\n for (let x = 0; x < y; ++x) {\n row1[x] = x === 0 || x === y - 1 ? 1 : row0[x - 1] + row0[x];\n }\n result = row1;\n row1 = row0;\n row0 = result;\n }\n }\n return result;\n}\nvar GaussKernel = class {\n /**\n * Constructs a new Gauss kernel.\n *\n * @param {Number} kernelSize - The kernel size. Should be an odd number in the range [3, 1020].\n * @param {Number} [edgeBias=2] - Determines how many edge coefficients should be cut off for increased accuracy.\n */\n constructor(kernelSize, edgeBias = 2) {\n this.weights = null;\n this.offsets = null;\n this.linearWeights = null;\n this.linearOffsets = null;\n this.generate(kernelSize, edgeBias);\n }\n /**\n * The number of steps for discrete sampling.\n *\n * @type {Number}\n */\n get steps() {\n return this.offsets === null ? 0 : this.offsets.length;\n }\n /**\n * The number of steps for linear sampling.\n *\n * @type {Number}\n */\n get linearSteps() {\n return this.linearOffsets === null ? 0 : this.linearOffsets.length;\n }\n /**\n * Generates the kernel.\n *\n * @private\n * @param {Number} kernelSize - The kernel size.\n * @param {Number} edgeBias - The amount of edge coefficients to ignore.\n */\n generate(kernelSize, edgeBias) {\n if (kernelSize < 3 || kernelSize > 1020) {\n throw new Error(\"The kernel size must be in the range [3, 1020]\");\n }\n const n = kernelSize + edgeBias * 2;\n const coefficients = edgeBias > 0 ? getCoefficients(n).slice(edgeBias, -edgeBias) : getCoefficients(n);\n const mid = Math.floor((coefficients.length - 1) / 2);\n const sum = coefficients.reduce((a, b) => a + b, 0);\n const weights = coefficients.slice(mid);\n const offsets = [...Array(mid + 1).keys()];\n const linearWeights = new Float64Array(Math.floor(offsets.length / 2));\n const linearOffsets = new Float64Array(linearWeights.length);\n linearWeights[0] = weights[0] / sum;\n for (let i = 1, j = 1, l = offsets.length - 1; i < l; i += 2, ++j) {\n const offset0 = offsets[i], offset1 = offsets[i + 1];\n const weight0 = weights[i], weight1 = weights[i + 1];\n const w = weight0 + weight1;\n const o = (offset0 * weight0 + offset1 * weight1) / w;\n linearWeights[j] = w / sum;\n linearOffsets[j] = o;\n }\n for (let i = 0, l = weights.length, s = 1 / sum; i < l; ++i) {\n weights[i] *= s;\n }\n const linearWeightSum = (linearWeights.reduce((a, b) => a + b, 0) - linearWeights[0] * 0.5) * 2;\n if (linearWeightSum !== 0) {\n for (let i = 0, l = linearWeights.length, s = 1 / linearWeightSum; i < l; ++i) {\n linearWeights[i] *= s;\n }\n }\n this.offsets = offsets;\n this.weights = weights;\n this.linearOffsets = linearOffsets;\n this.linearWeights = linearWeights;\n }\n};\n\n// src/core/ImmutableTimer.js\nvar ImmutableTimer = class {\n /**\n * The current delta time in seconds.\n *\n * @type {Number}\n */\n get delta() {\n return NaN;\n }\n /**\n * The fixed delta time in seconds.\n *\n * @type {Number}\n */\n get fixedDelta() {\n return NaN;\n }\n /**\n * The elapsed time in seconds.\n *\n * @type {Number}\n */\n get elapsed() {\n return NaN;\n }\n};\n\n// src/core/Initializable.js\nvar Initializable = class {\n /**\n * Performs initialization tasks.\n *\n * @param {WebGLRenderer} renderer - A renderer.\n * @param {Boolean} alpha - Whether the renderer uses the alpha channel.\n * @param {Number} frameBufferType - The type of the main frame buffers.\n */\n initialize(renderer, alpha, frameBufferType) {\n }\n};\n\n// src/core/OverrideMaterialManager.js\nimport { BackSide, DoubleSide, FrontSide, ShaderMaterial as ShaderMaterial22 } from \"three\";\nvar workaroundEnabled = false;\nvar OverrideMaterialManager = class {\n /**\n * Constructs a new override material manager.\n *\n * @param {Material} [material=null] - An override material.\n */\n constructor(material = null) {\n this.originalMaterials = /* @__PURE__ */ new Map();\n this.material = null;\n this.materials = null;\n this.materialsBackSide = null;\n this.materialsDoubleSide = null;\n this.materialsFlatShaded = null;\n this.materialsFlatShadedBackSide = null;\n this.materialsFlatShadedDoubleSide = null;\n this.setMaterial(material);\n this.meshCount = 0;\n this.replaceMaterial = (node) => {\n if (node.isMesh) {\n let materials;\n if (node.material.flatShading) {\n switch (node.material.side) {\n case DoubleSide:\n materials = this.materialsFlatShadedDoubleSide;\n break;\n case BackSide:\n materials = this.materialsFlatShadedBackSide;\n break;\n default:\n materials = this.materialsFlatShaded;\n break;\n }\n } else {\n switch (node.material.side) {\n case DoubleSide:\n materials = this.materialsDoubleSide;\n break;\n case BackSide:\n materials = this.materialsBackSide;\n break;\n default:\n materials = this.materials;\n break;\n }\n }\n this.originalMaterials.set(node, node.material);\n if (node.isSkinnedMesh) {\n node.material = materials[2];\n } else if (node.isInstancedMesh) {\n node.material = materials[1];\n } else {\n node.material = materials[0];\n }\n ++this.meshCount;\n }\n };\n }\n /**\n * Clones the given material.\n *\n * @private\n * @param {Material} material - The material.\n * @return {Material} The cloned material.\n */\n cloneMaterial(material) {\n if (!(material instanceof ShaderMaterial22)) {\n return material.clone();\n }\n const uniforms = material.uniforms;\n const textureUniforms = /* @__PURE__ */ new Map();\n for (const key in uniforms) {\n const value = uniforms[key].value;\n if (value.isRenderTargetTexture) {\n uniforms[key].value = null;\n textureUniforms.set(key, value);\n }\n }\n const clone = material.clone();\n for (const entry of textureUniforms) {\n uniforms[entry[0]].value = entry[1];\n clone.uniforms[entry[0]].value = entry[1];\n }\n return clone;\n }\n /**\n * Sets the override material.\n *\n * @param {Material} material - The material.\n */\n setMaterial(material) {\n this.disposeMaterials();\n this.material = material;\n if (material !== null) {\n const materials = this.materials = [\n this.cloneMaterial(material),\n this.cloneMaterial(material),\n this.cloneMaterial(material)\n ];\n for (const m2 of materials) {\n m2.uniforms = Object.assign({}, material.uniforms);\n m2.side = FrontSide;\n }\n materials[2].skinning = true;\n this.materialsBackSide = materials.map((m2) => {\n const c2 = this.cloneMaterial(m2);\n c2.uniforms = Object.assign({}, material.uniforms);\n c2.side = BackSide;\n return c2;\n });\n this.materialsDoubleSide = materials.map((m2) => {\n const c2 = this.cloneMaterial(m2);\n c2.uniforms = Object.assign({}, material.uniforms);\n c2.side = DoubleSide;\n return c2;\n });\n this.materialsFlatShaded = materials.map((m2) => {\n const c2 = this.cloneMaterial(m2);\n c2.uniforms = Object.assign({}, material.uniforms);\n c2.flatShading = true;\n return c2;\n });\n this.materialsFlatShadedBackSide = materials.map((m2) => {\n const c2 = this.cloneMaterial(m2);\n c2.uniforms = Object.assign({}, material.uniforms);\n c2.flatShading = true;\n c2.side = BackSide;\n return c2;\n });\n this.materialsFlatShadedDoubleSide = materials.map((m2) => {\n const c2 = this.cloneMaterial(m2);\n c2.uniforms = Object.assign({}, material.uniforms);\n c2.flatShading = true;\n c2.side = DoubleSide;\n return c2;\n });\n }\n }\n /**\n * Renders the scene with the override material.\n *\n * @private\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {Scene} scene - A scene.\n * @param {Camera} camera - A camera.\n */\n render(renderer, scene, camera) {\n const shadowMapEnabled = renderer.shadowMap.enabled;\n renderer.shadowMap.enabled = false;\n if (workaroundEnabled) {\n const originalMaterials = this.originalMaterials;\n this.meshCount = 0;\n scene.traverse(this.replaceMaterial);\n renderer.render(scene, camera);\n for (const entry of originalMaterials) {\n entry[0].material = entry[1];\n }\n if (this.meshCount !== originalMaterials.size) {\n originalMaterials.clear();\n }\n } else {\n const overrideMaterial = scene.overrideMaterial;\n scene.overrideMaterial = this.material;\n renderer.render(scene, camera);\n scene.overrideMaterial = overrideMaterial;\n }\n renderer.shadowMap.enabled = shadowMapEnabled;\n }\n /**\n * Deletes cloned override materials.\n *\n * @private\n */\n disposeMaterials() {\n if (this.material !== null) {\n const materials = this.materials.concat(this.materialsBackSide).concat(this.materialsDoubleSide).concat(this.materialsFlatShaded).concat(this.materialsFlatShadedBackSide).concat(this.materialsFlatShadedDoubleSide);\n for (const m2 of materials) {\n m2.dispose();\n }\n }\n }\n /**\n * Performs cleanup tasks.\n */\n dispose() {\n this.originalMaterials.clear();\n this.disposeMaterials();\n }\n /**\n * Indicates whether the override material workaround is enabled.\n *\n * @type {Boolean}\n */\n static get workaroundEnabled() {\n return workaroundEnabled;\n }\n /**\n * Enables or disables the override material workaround globally.\n *\n * This only affects post processing passes and effects.\n *\n * @type {Boolean}\n */\n static set workaroundEnabled(value) {\n workaroundEnabled = value;\n }\n};\n\n// src/core/Resizable.js\nvar Resizable = class {\n /**\n * Sets the size of this object.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n }\n};\n\n// src/core/Resolution.js\nimport { EventDispatcher, Vector2 as Vector217 } from \"three\";\nvar AUTO_SIZE = -1;\nvar Resolution = class extends EventDispatcher {\n /**\n * Constructs a new resolution.\n *\n * TODO Remove resizable param.\n * @param {Resizable} resizable - A resizable object.\n * @param {Number} [width=Resolution.AUTO_SIZE] - The preferred width.\n * @param {Number} [height=Resolution.AUTO_SIZE] - The preferred height.\n * @param {Number} [scale=1.0] - A resolution scale.\n */\n constructor(resizable, width = AUTO_SIZE, height = AUTO_SIZE, scale = 1) {\n super();\n this.resizable = resizable;\n this.baseSize = new Vector217(1, 1);\n this.preferredSize = new Vector217(width, height);\n this.target = this.preferredSize;\n this.s = scale;\n this.effectiveSize = new Vector217();\n this.addEventListener(\"change\", () => this.updateEffectiveSize());\n this.updateEffectiveSize();\n }\n /**\n * Calculates the effective size.\n *\n * @private\n */\n updateEffectiveSize() {\n const base = this.baseSize;\n const preferred = this.preferredSize;\n const effective = this.effectiveSize;\n const scale = this.scale;\n if (preferred.width !== AUTO_SIZE) {\n effective.width = preferred.width;\n } else if (preferred.height !== AUTO_SIZE) {\n effective.width = Math.round(preferred.height * (base.width / Math.max(base.height, 1)));\n } else {\n effective.width = Math.round(base.width * scale);\n }\n if (preferred.height !== AUTO_SIZE) {\n effective.height = preferred.height;\n } else if (preferred.width !== AUTO_SIZE) {\n effective.height = Math.round(preferred.width / Math.max(base.width / Math.max(base.height, 1), 1));\n } else {\n effective.height = Math.round(base.height * scale);\n }\n }\n /**\n * The effective width.\n *\n * If the preferred width and height are set to {@link Resizer.AUTO_SIZE}, the base width will be returned.\n *\n * @type {Number}\n */\n get width() {\n return this.effectiveSize.width;\n }\n set width(value) {\n this.preferredWidth = value;\n }\n /**\n * The effective height.\n *\n * If the preferred width and height are set to {@link Resizer.AUTO_SIZE}, the base height will be returned.\n *\n * @type {Number}\n */\n get height() {\n return this.effectiveSize.height;\n }\n set height(value) {\n this.preferredHeight = value;\n }\n /**\n * Returns the effective width.\n *\n * If the preferred width and height are set to {@link Resizer.AUTO_SIZE}, the base width will be returned.\n *\n * @deprecated Use width instead.\n * @return {Number} The effective width.\n */\n getWidth() {\n return this.width;\n }\n /**\n * Returns the effective height.\n *\n * If the preferred width and height are set to {@link Resizer.AUTO_SIZE}, the base height will be returned.\n *\n * @deprecated Use height instead.\n * @return {Number} The effective height.\n */\n getHeight() {\n return this.height;\n }\n /**\n * The resolution scale.\n *\n * @type {Number}\n */\n get scale() {\n return this.s;\n }\n set scale(value) {\n if (this.s !== value) {\n this.s = value;\n this.preferredSize.setScalar(AUTO_SIZE);\n this.dispatchEvent({ type: \"change\" });\n this.resizable.setSize(this.baseSize.width, this.baseSize.height);\n }\n }\n /**\n * Returns the current resolution scale.\n *\n * @deprecated Use scale instead.\n * @return {Number} The scale.\n */\n getScale() {\n return this.scale;\n }\n /**\n * Sets the resolution scale.\n *\n * Also sets the preferred resolution to {@link Resizer.AUTO_SIZE}.\n *\n * @deprecated Use scale instead.\n * @param {Number} value - The scale.\n */\n setScale(value) {\n this.scale = value;\n }\n /**\n * The base width.\n *\n * @type {Number}\n */\n get baseWidth() {\n return this.baseSize.width;\n }\n set baseWidth(value) {\n if (this.baseSize.width !== value) {\n this.baseSize.width = value;\n this.dispatchEvent({ type: \"change\" });\n this.resizable.setSize(this.baseSize.width, this.baseSize.height);\n }\n }\n /**\n * Returns the base width.\n *\n * @deprecated Use baseWidth instead.\n * @return {Number} The base width.\n */\n getBaseWidth() {\n return this.baseWidth;\n }\n /**\n * Sets the base width.\n *\n * @deprecated Use baseWidth instead.\n * @param {Number} value - The width.\n */\n setBaseWidth(value) {\n this.baseWidth = value;\n }\n /**\n * The base height.\n *\n * @type {Number}\n */\n get baseHeight() {\n return this.baseSize.height;\n }\n set baseHeight(value) {\n if (this.baseSize.height !== value) {\n this.baseSize.height = value;\n this.dispatchEvent({ type: \"change\" });\n this.resizable.setSize(this.baseSize.width, this.baseSize.height);\n }\n }\n /**\n * Returns the base height.\n *\n * @deprecated Use baseHeight instead.\n * @return {Number} The base height.\n */\n getBaseHeight() {\n return this.baseHeight;\n }\n /**\n * Sets the base height.\n *\n * @deprecated Use baseHeight instead.\n * @param {Number} value - The height.\n */\n setBaseHeight(value) {\n this.baseHeight = value;\n }\n /**\n * Sets the base size.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setBaseSize(width, height) {\n if (this.baseSize.width !== width || this.baseSize.height !== height) {\n this.baseSize.set(width, height);\n this.dispatchEvent({ type: \"change\" });\n this.resizable.setSize(this.baseSize.width, this.baseSize.height);\n }\n }\n /**\n * The preferred width.\n *\n * @type {Number}\n */\n get preferredWidth() {\n return this.preferredSize.width;\n }\n set preferredWidth(value) {\n if (this.preferredSize.width !== value) {\n this.preferredSize.width = value;\n this.dispatchEvent({ type: \"change\" });\n this.resizable.setSize(this.baseSize.width, this.baseSize.height);\n }\n }\n /**\n * Returns the preferred width.\n *\n * @deprecated Use preferredWidth instead.\n * @return {Number} The preferred width.\n */\n getPreferredWidth() {\n return this.preferredWidth;\n }\n /**\n * Sets the preferred width.\n *\n * Use {@link Resizer.AUTO_SIZE} to automatically calculate the width based on the height and aspect ratio.\n *\n * @deprecated Use preferredWidth instead.\n * @param {Number} value - The width.\n */\n setPreferredWidth(value) {\n this.preferredWidth = value;\n }\n /**\n * The preferred height.\n *\n * @type {Number}\n */\n get preferredHeight() {\n return this.preferredSize.height;\n }\n set preferredHeight(value) {\n if (this.preferredSize.height !== value) {\n this.preferredSize.height = value;\n this.dispatchEvent({ type: \"change\" });\n this.resizable.setSize(this.baseSize.width, this.baseSize.height);\n }\n }\n /**\n * Returns the preferred height.\n *\n * @deprecated Use preferredHeight instead.\n * @return {Number} The preferred height.\n */\n getPreferredHeight() {\n return this.preferredHeight;\n }\n /**\n * Sets the preferred height.\n *\n * Use {@link Resizer.AUTO_SIZE} to automatically calculate the height based on the width and aspect ratio.\n *\n * @deprecated Use preferredHeight instead.\n * @param {Number} value - The height.\n */\n setPreferredHeight(value) {\n this.preferredHeight = value;\n }\n /**\n * Sets the preferred size.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setPreferredSize(width, height) {\n if (this.preferredSize.width !== width || this.preferredSize.height !== height) {\n this.preferredSize.set(width, height);\n this.dispatchEvent({ type: \"change\" });\n this.resizable.setSize(this.baseSize.width, this.baseSize.height);\n }\n }\n /**\n * Copies the given resolution.\n *\n * @param {Resolution} resolution - The resolution.\n */\n copy(resolution) {\n this.s = resolution.scale;\n this.baseSize.set(resolution.baseWidth, resolution.baseHeight);\n this.preferredSize.set(resolution.preferredWidth, resolution.preferredHeight);\n this.dispatchEvent({ type: \"change\" });\n this.resizable.setSize(this.baseSize.width, this.baseSize.height);\n }\n /**\n * An auto sizing constant.\n *\n * Can be used to automatically calculate the width or height based on the original aspect ratio.\n *\n * @type {Number}\n */\n static get AUTO_SIZE() {\n return AUTO_SIZE;\n }\n};\n\n// src/core/Selection.js\nvar Selection = class extends Set {\n /**\n * Constructs a new selection.\n *\n * @param {Iterable} [iterable] - A collection of objects that should be added to this selection.\n * @param {Number} [layer=10] - A dedicated render layer for selected objects.\n */\n constructor(iterable, layer = 10) {\n super();\n this.l = layer;\n this.exclusive = false;\n if (iterable !== void 0) {\n this.set(iterable);\n }\n }\n /**\n * The render layer for selected objects.\n *\n * @type {Number}\n */\n get layer() {\n return this.l;\n }\n set layer(value) {\n const currentLayer = this.l;\n for (const object of this) {\n object.layers.disable(currentLayer);\n object.layers.enable(value);\n }\n this.l = value;\n }\n /**\n * Returns the current render layer for selected objects.\n *\n * The default layer is 10. If this collides with your own custom layers, please change it before rendering!\n *\n * @deprecated Use layer instead.\n * @return {Number} The layer.\n */\n getLayer() {\n return this.layer;\n }\n /**\n * Sets the render layer for selected objects.\n *\n * The current selection will be updated accordingly.\n *\n * @deprecated Use layer instead.\n * @param {Number} value - The layer. Range is [0, 31].\n */\n setLayer(value) {\n this.layer = value;\n }\n /**\n * Indicates whether objects that are added to this selection will be removed from all other layers.\n *\n * @deprecated Use exclusive instead.\n * @return {Number} Whether this selection is exclusive. Default is false.\n */\n isExclusive() {\n return this.exclusive;\n }\n /**\n * Controls whether objects that are added to this selection should be removed from all other layers.\n *\n * @deprecated Use exclusive instead.\n * @param {Number} value - Whether this selection should be exclusive.\n */\n setExclusive(value) {\n this.exclusive = value;\n }\n /**\n * Clears this selection.\n *\n * @return {Selection} This selection.\n */\n clear() {\n const layer = this.layer;\n for (const object of this) {\n object.layers.disable(layer);\n }\n return super.clear();\n }\n /**\n * Clears this selection and adds the given objects.\n *\n * @param {Iterable} objects - The objects that should be selected.\n * @return {Selection} This selection.\n */\n set(objects) {\n this.clear();\n for (const object of objects) {\n this.add(object);\n }\n return this;\n }\n /**\n * An alias for {@link has}.\n *\n * @param {Object3D} object - An object.\n * @return {Number} Returns 0 if the given object is currently selected, or -1 otherwise.\n * @deprecated Added for backward-compatibility.\n */\n indexOf(object) {\n return this.has(object) ? 0 : -1;\n }\n /**\n * Adds an object to this selection.\n *\n * If {@link exclusive} is set to `true`, the object will also be removed from all other layers.\n *\n * @param {Object3D} object - The object that should be selected.\n * @return {Selection} This selection.\n */\n add(object) {\n if (this.exclusive) {\n object.layers.set(this.layer);\n } else {\n object.layers.enable(this.layer);\n }\n return super.add(object);\n }\n /**\n * Removes an object from this selection.\n *\n * @param {Object3D} object - The object that should be deselected.\n * @return {Boolean} Returns true if an object has successfully been removed from this selection; otherwise false.\n */\n delete(object) {\n if (this.has(object)) {\n object.layers.disable(this.layer);\n }\n return super.delete(object);\n }\n /**\n * Removes an existing object from the selection. If the object doesn't exist it's added instead.\n *\n * @param {Object3D} object - The object.\n * @return {Boolean} Returns true if the object is added, false otherwise.\n */\n toggle(object) {\n let result;\n if (this.has(object)) {\n this.delete(object);\n result = false;\n } else {\n this.add(object);\n result = true;\n }\n return result;\n }\n /**\n * Sets the visibility of all selected objects.\n *\n * This method enables or disables render layer 0 of all selected objects.\n *\n * @param {Boolean} visible - Whether the selected objects should be visible.\n * @return {Selection} This selection.\n */\n setVisible(visible) {\n for (const object of this) {\n if (visible) {\n object.layers.enable(0);\n } else {\n object.layers.disable(0);\n }\n }\n return this;\n }\n};\n\n// src/effects/blending/BlendMode.js\nimport { EventDispatcher as EventDispatcher2, Uniform as Uniform23 } from \"three\";\n\n// src/effects/blending/glsl/add.frag\nvar add_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,x+y,opacity);}\";\n\n// src/effects/blending/glsl/alpha.frag\nvar alpha_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,y,min(y.a,opacity));}\";\n\n// src/effects/blending/glsl/average.frag\nvar average_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,(x+y)*0.5,opacity);}\";\n\n// src/effects/blending/glsl/color.frag\nvar color_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(yHSL.rg,xHSL.b));return vec4(mix(x.rgb,z,opacity),y.a);}\";\n\n// src/effects/blending/glsl/color-burn.frag\nvar color_burn_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=mix(step(0.0,y)*(1.0-min(vec4(1.0),(1.0-x)/y)),vec4(1.0),step(1.0,x));return mix(x,z,opacity);}\";\n\n// src/effects/blending/glsl/color-dodge.frag\nvar color_dodge_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=step(0.0,x)*mix(min(vec4(1.0),x/max(1.0-y,1e-9)),vec4(1.0),step(1.0,y));return mix(x,z,opacity);}\";\n\n// src/effects/blending/glsl/darken.frag\nvar darken_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,min(x,y),opacity);}\";\n\n// src/effects/blending/glsl/difference.frag\nvar difference_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,abs(x-y),opacity);}\";\n\n// src/effects/blending/glsl/divide.frag\nvar divide_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,x/max(y,1e-12),opacity);}\";\n\n// src/effects/blending/glsl/exclusion.frag\nvar exclusion_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,(x+y-2.0*x*y),opacity);}\";\n\n// src/effects/blending/glsl/hard-light.frag\nvar hard_light_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 a=min(x,1.0),b=min(y,1.0);vec4 z=mix(2.0*a*b,1.0-2.0*(1.0-a)*(1.0-b),step(0.5,y));return mix(x,z,opacity);}\";\n\n// src/effects/blending/glsl/hard-mix.frag\nvar hard_mix_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,step(1.0,x+y),opacity);}\";\n\n// src/effects/blending/glsl/hue.frag\nvar hue_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(yHSL.r,xHSL.gb));return vec4(mix(x.rgb,z,opacity),y.a);}\";\n\n// src/effects/blending/glsl/invert.frag\nvar invert_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,1.0-y,opacity);}\";\n\n// src/effects/blending/glsl/invert-rgb.frag\nvar invert_rgb_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,y*(1.0-x),opacity);}\";\n\n// src/effects/blending/glsl/lighten.frag\nvar lighten_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,max(x,y),opacity);}\";\n\n// src/effects/blending/glsl/linear-burn.frag\nvar linear_burn_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,clamp(y+x-1.0,0.0,1.0),opacity);}\";\n\n// src/effects/blending/glsl/linear-dodge.frag\nvar linear_dodge_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,min(x+y,1.0),opacity);}\";\n\n// src/effects/blending/glsl/linear-light.frag\nvar linear_light_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,clamp(2.0*y+x-1.0,0.0,1.0),opacity);}\";\n\n// src/effects/blending/glsl/luminosity.frag\nvar luminosity_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(xHSL.rg,yHSL.b));return vec4(mix(x.rgb,z,opacity),y.a);}\";\n\n// src/effects/blending/glsl/multiply.frag\nvar multiply_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,x*y,opacity);}\";\n\n// src/effects/blending/glsl/negation.frag\nvar negation_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,1.0-abs(1.0-x-y),opacity);}\";\n\n// src/effects/blending/glsl/normal.frag\nvar normal_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,y,opacity);}\";\n\n// src/effects/blending/glsl/overlay.frag\nvar overlay_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=mix(2.0*y*x,1.0-2.0*(1.0-y)*(1.0-x),step(0.5,x));return mix(x,z,opacity);}\";\n\n// src/effects/blending/glsl/pin-light.frag\nvar pin_light_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 y2=2.0*y;vec4 z=mix(mix(y2,x,step(0.5*x,y)),max(vec4(0.0),y2-1.0),step(x,(y2-1.0)));return mix(x,z,opacity);}\";\n\n// src/effects/blending/glsl/reflect.frag\nvar reflect_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=mix(min(x*x/max(1.0-y,1e-12),1.0),y,step(1.0,y));return mix(x,z,opacity);}\";\n\n// src/effects/blending/glsl/saturation.frag\nvar saturation_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(xHSL.r,yHSL.g,xHSL.b));return vec4(mix(x.rgb,z,opacity),y.a);}\";\n\n// src/effects/blending/glsl/screen.frag\nvar screen_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,x+y-min(x*y,1.0),opacity);}\";\n\n// src/effects/blending/glsl/soft-light.frag\nvar soft_light_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 y2=2.0*y;vec4 w=step(0.5,y);vec4 z=mix(x-(1.0-y2)*x*(1.0-x),mix(x+(y2-1.0)*(sqrt(x)-x),x+(y2-1.0)*x*((16.0*x-12.0)*x+3.0),w*(1.0-step(0.25,x))),w);return mix(x,z,opacity);}\";\n\n// src/effects/blending/glsl/src.frag\nvar src_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return y;}\";\n\n// src/effects/blending/glsl/subtract.frag\nvar subtract_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,max(x+y-1.0,0.0),opacity);}\";\n\n// src/effects/blending/glsl/vivid-light.frag\nvar vivid_light_default = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=mix(max(1.0-min((1.0-x)/(2.0*y),1.0),0.0),min(x/(2.0*(1.0-y)),1.0),step(0.5,y));return mix(x,z,opacity);}\";\n\n// src/effects/blending/BlendMode.js\nvar blendFunctions = /* @__PURE__ */ new Map([\n [BlendFunction.ADD, add_default],\n [BlendFunction.ALPHA, alpha_default],\n [BlendFunction.AVERAGE, average_default],\n [BlendFunction.COLOR, color_default],\n [BlendFunction.COLOR_BURN, color_burn_default],\n [BlendFunction.COLOR_DODGE, color_dodge_default],\n [BlendFunction.DARKEN, darken_default],\n [BlendFunction.DIFFERENCE, difference_default],\n [BlendFunction.DIVIDE, divide_default],\n [BlendFunction.DST, null],\n [BlendFunction.EXCLUSION, exclusion_default],\n [BlendFunction.HARD_LIGHT, hard_light_default],\n [BlendFunction.HARD_MIX, hard_mix_default],\n [BlendFunction.HUE, hue_default],\n [BlendFunction.INVERT, invert_default],\n [BlendFunction.INVERT_RGB, invert_rgb_default],\n [BlendFunction.LIGHTEN, lighten_default],\n [BlendFunction.LINEAR_BURN, linear_burn_default],\n [BlendFunction.LINEAR_DODGE, linear_dodge_default],\n [BlendFunction.LINEAR_LIGHT, linear_light_default],\n [BlendFunction.LUMINOSITY, luminosity_default],\n [BlendFunction.MULTIPLY, multiply_default],\n [BlendFunction.NEGATION, negation_default],\n [BlendFunction.NORMAL, normal_default],\n [BlendFunction.OVERLAY, overlay_default],\n [BlendFunction.PIN_LIGHT, pin_light_default],\n [BlendFunction.REFLECT, reflect_default],\n [BlendFunction.SATURATION, saturation_default],\n [BlendFunction.SCREEN, screen_default],\n [BlendFunction.SOFT_LIGHT, soft_light_default],\n [BlendFunction.SRC, src_default],\n [BlendFunction.SUBTRACT, subtract_default],\n [BlendFunction.VIVID_LIGHT, vivid_light_default]\n]);\nvar BlendMode = class extends EventDispatcher2 {\n /**\n * Constructs a new blend mode.\n *\n * @param {BlendFunction} blendFunction - The blend function.\n * @param {Number} opacity - The opacity of the color that will be blended with the base color.\n */\n constructor(blendFunction, opacity = 1) {\n super();\n this._blendFunction = blendFunction;\n this.opacity = new Uniform23(opacity);\n }\n /**\n * Returns the opacity.\n *\n * @return {Number} The opacity.\n */\n getOpacity() {\n return this.opacity.value;\n }\n /**\n * Sets the opacity.\n *\n * @param {Number} value - The opacity.\n */\n setOpacity(value) {\n this.opacity.value = value;\n }\n /**\n * The blend function.\n *\n * @type {BlendFunction}\n */\n get blendFunction() {\n return this._blendFunction;\n }\n set blendFunction(value) {\n this._blendFunction = value;\n this.dispatchEvent({ type: \"change\" });\n }\n /**\n * Returns the blend function.\n *\n * @deprecated Use blendFunction instead.\n * @return {BlendFunction} The blend function.\n */\n getBlendFunction() {\n return this.blendFunction;\n }\n /**\n * Sets the blend function.\n *\n * @deprecated Use blendFunction instead.\n * @param {BlendFunction} value - The blend function.\n */\n setBlendFunction(value) {\n this.blendFunction = value;\n }\n /**\n * Returns the blend function shader code.\n *\n * @return {String} The blend function shader code.\n */\n getShaderCode() {\n return blendFunctions.get(this.blendFunction);\n }\n};\n\n// src/effects/BloomEffect.js\nimport { Uniform as Uniform24, WebGLRenderTarget as WebGLRenderTarget15 } from \"three\";\n\n// src/effects/Effect.js\nimport { BasicDepthPacking as BasicDepthPacking13, EventDispatcher as EventDispatcher3, Material as Material2, Texture as Texture2, WebGLRenderTarget as WebGLRenderTarget14 } from \"three\";\nvar Effect = class extends EventDispatcher3 {\n /**\n * Constructs a new effect.\n *\n * @param {String} name - The name of this effect. Doesn't have to be unique.\n * @param {String} fragmentShader - The fragment shader. This shader is required.\n * @param {Object} [options] - Additional options.\n * @param {EffectAttribute} [options.attributes=EffectAttribute.NONE] - The effect attributes that determine the execution priority and resource requirements.\n * @param {BlendFunction} [options.blendFunction=BlendFunction.NORMAL] - The blend function of this effect.\n * @param {Map} [options.defines] - Custom preprocessor macro definitions. Keys are names and values are code.\n * @param {Map} [options.uniforms] - Custom shader uniforms. Keys are names and values are uniforms.\n * @param {Set} [options.extensions] - WebGL extensions.\n * @param {String} [options.vertexShader=null] - The vertex shader. Most effects don't need one.\n */\n constructor(name, fragmentShader, {\n attributes = EffectAttribute.NONE,\n blendFunction = BlendFunction.NORMAL,\n defines = /* @__PURE__ */ new Map(),\n uniforms = /* @__PURE__ */ new Map(),\n extensions = null,\n vertexShader = null\n } = {}) {\n super();\n this.name = name;\n this.renderer = null;\n this.attributes = attributes;\n this.fragmentShader = fragmentShader;\n this.vertexShader = vertexShader;\n this.defines = defines;\n this.uniforms = uniforms;\n this.extensions = extensions;\n this.blendMode = new BlendMode(blendFunction);\n this.blendMode.addEventListener(\"change\", (event) => this.setChanged());\n this._inputColorSpace = LinearSRGBColorSpace;\n this._outputColorSpace = NoColorSpace;\n }\n /**\n * The input color space.\n *\n * @type {ColorSpace}\n * @experimental\n */\n get inputColorSpace() {\n return this._inputColorSpace;\n }\n /**\n * @type {ColorSpace}\n * @protected\n * @experimental\n */\n set inputColorSpace(value) {\n this._inputColorSpace = value;\n this.setChanged();\n }\n /**\n * The output color space.\n *\n * Should only be changed if this effect converts the input colors to a different color space.\n *\n * @type {ColorSpace}\n * @experimental\n */\n get outputColorSpace() {\n return this._outputColorSpace;\n }\n /**\n * @type {ColorSpace}\n * @protected\n * @experimental\n */\n set outputColorSpace(value) {\n this._outputColorSpace = value;\n this.setChanged();\n }\n /**\n * Sets the main scene.\n *\n * @type {Scene}\n */\n set mainScene(value) {\n }\n /**\n * Sets the main camera.\n *\n * @type {Camera}\n */\n set mainCamera(value) {\n }\n /**\n * Returns the name of this effect.\n *\n * @deprecated Use name instead.\n * @return {String} The name.\n */\n getName() {\n return this.name;\n }\n /**\n * Sets the renderer.\n *\n * @deprecated\n * @param {WebGLRenderer} renderer - The renderer.\n */\n setRenderer(renderer) {\n this.renderer = renderer;\n }\n /**\n * Returns the preprocessor macro definitions.\n *\n * @deprecated Use defines instead.\n * @return {Map} The extensions.\n */\n getDefines() {\n return this.defines;\n }\n /**\n * Returns the uniforms of this effect.\n *\n * @deprecated Use uniforms instead.\n * @return {Map} The extensions.\n */\n getUniforms() {\n return this.uniforms;\n }\n /**\n * Returns the WebGL extensions that are required by this effect.\n *\n * @deprecated Use extensions instead.\n * @return {Set} The extensions.\n */\n getExtensions() {\n return this.extensions;\n }\n /**\n * Returns the blend mode.\n *\n * The result of this effect will be blended with the result of the previous effect using this blend mode.\n *\n * @deprecated Use blendMode instead.\n * @return {BlendMode} The blend mode.\n */\n getBlendMode() {\n return this.blendMode;\n }\n /**\n * Returns the effect attributes.\n *\n * @return {EffectAttribute} The attributes.\n */\n getAttributes() {\n return this.attributes;\n }\n /**\n * Sets the effect attributes.\n *\n * Effects that have the same attributes will be executed in the order in which they were registered. Some attributes\n * imply a higher priority.\n *\n * @protected\n * @param {EffectAttribute} attributes - The attributes.\n */\n setAttributes(attributes) {\n this.attributes = attributes;\n this.setChanged();\n }\n /**\n * Returns the fragment shader.\n *\n * @return {String} The fragment shader.\n */\n getFragmentShader() {\n return this.fragmentShader;\n }\n /**\n * Sets the fragment shader.\n *\n * @protected\n * @param {String} fragmentShader - The fragment shader.\n */\n setFragmentShader(fragmentShader) {\n this.fragmentShader = fragmentShader;\n this.setChanged();\n }\n /**\n * Returns the vertex shader.\n *\n * @return {String} The vertex shader.\n */\n getVertexShader() {\n return this.vertexShader;\n }\n /**\n * Sets the vertex shader.\n *\n * @protected\n * @param {String} vertexShader - The vertex shader.\n */\n setVertexShader(vertexShader) {\n this.vertexShader = vertexShader;\n this.setChanged();\n }\n /**\n * Informs the associated {@link EffectPass} that this effect requires a shader recompilation.\n *\n * Should be called after changing macros or extensions and after adding/removing uniforms.\n *\n * @protected\n */\n setChanged() {\n this.dispatchEvent({ type: \"change\" });\n }\n /**\n * Sets the depth texture.\n *\n * You may override this method if your effect requires direct access to the depth texture that is bound to the\n * associated {@link EffectPass}.\n *\n * @param {Texture} depthTexture - A depth texture.\n * @param {DepthPackingStrategies} [depthPacking=BasicDepthPacking] - The depth packing.\n */\n setDepthTexture(depthTexture, depthPacking = BasicDepthPacking13) {\n }\n /**\n * Updates this effect by performing supporting operations.\n *\n * This method is called by the {@link EffectPass} right before the main fullscreen render operation, even if the\n * blend function is set to `SKIP`.\n *\n * You may override this method if you need to update custom uniforms or render additional off-screen textures.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n */\n update(renderer, inputBuffer, deltaTime) {\n }\n /**\n * Updates the size of this effect.\n *\n * You may override this method if you want to be informed about the size of the backbuffer/canvas.\n * This method is called before {@link initialize} and every time the size of the {@link EffectComposer} changes.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n }\n /**\n * Performs initialization tasks.\n *\n * This method is called when the associated {@link EffectPass} is added to an {@link EffectComposer}.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {Boolean} alpha - Whether the renderer uses the alpha channel or not.\n * @param {Number} frameBufferType - The type of the main frame buffers.\n * @example if(!alpha && frameBufferType === UnsignedByteType) { this.myRenderTarget.texture.format = RGBFormat; }\n */\n initialize(renderer, alpha, frameBufferType) {\n }\n /**\n * Performs a shallow search for properties that define a dispose method and deletes them.\n *\n * The {@link EffectComposer} calls this method when it is being destroyed.\n */\n dispose() {\n for (const key of Object.keys(this)) {\n const property = this[key];\n const isDisposable = property instanceof WebGLRenderTarget14 || property instanceof Material2 || property instanceof Texture2 || property instanceof Pass;\n if (isDisposable) {\n this[key].dispose();\n }\n }\n }\n};\n\n// src/effects/glsl/bloom.frag\nvar bloom_default = \"#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D map;\\n#else\\nuniform lowp sampler2D map;\\n#endif\\nuniform float intensity;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=texture2D(map,uv)*intensity;}\";\n\n// src/effects/BloomEffect.js\nvar BloomEffect = class extends Effect {\n /**\n * Constructs a new bloom effect.\n *\n * @param {Object} [options] - The options.\n * @param {BlendFunction} [options.blendFunction=BlendFunction.SCREEN] - The blend function of this effect.\n * @param {Number} [options.luminanceThreshold=0.9] - The luminance threshold. Raise this value to mask out darker elements in the scene.\n * @param {Number} [options.luminanceSmoothing=0.025] - Controls the smoothness of the luminance threshold.\n * @param {Boolean} [options.mipmapBlur=false] - Enables or disables mipmap blur.\n * @param {Number} [options.intensity=1.0] - The bloom intensity.\n * @param {Number} [options.radius=0.85] - The blur radius. Only applies to mipmap blur.\n * @param {Number} [options.levels=8] - The amount of MIP levels. Only applies to mipmap blur.\n * @param {KernelSize} [options.kernelSize=KernelSize.LARGE] - Deprecated. Use mipmapBlur instead.\n * @param {Number} [options.resolutionScale=0.5] - Deprecated. Use mipmapBlur instead.\n * @param {Number} [options.resolutionX=Resolution.AUTO_SIZE] - Deprecated. Use mipmapBlur instead.\n * @param {Number} [options.resolutionY=Resolution.AUTO_SIZE] - Deprecated. Use mipmapBlur instead.\n * @param {Number} [options.width=Resolution.AUTO_SIZE] - Deprecated. Use mipmapBlur instead.\n * @param {Number} [options.height=Resolution.AUTO_SIZE] - Deprecated. Use mipmapBlur instead.\n */\n constructor({\n blendFunction = BlendFunction.SCREEN,\n luminanceThreshold = 0.9,\n luminanceSmoothing = 0.025,\n mipmapBlur = false,\n intensity = 1,\n radius = 0.85,\n levels = 8,\n kernelSize = KernelSize.LARGE,\n resolutionScale = 0.5,\n width = Resolution.AUTO_SIZE,\n height = Resolution.AUTO_SIZE,\n resolutionX = width,\n resolutionY = height\n } = {}) {\n super(\"BloomEffect\", bloom_default, {\n blendFunction,\n uniforms: /* @__PURE__ */ new Map([\n [\"map\", new Uniform24(null)],\n [\"intensity\", new Uniform24(intensity)]\n ])\n });\n this.renderTarget = new WebGLRenderTarget15(1, 1, { depthBuffer: false });\n this.renderTarget.texture.name = \"Bloom.Target\";\n this.blurPass = new KawaseBlurPass({ kernelSize });\n this.luminancePass = new LuminancePass({ colorOutput: true });\n this.luminanceMaterial.threshold = luminanceThreshold;\n this.luminanceMaterial.smoothing = luminanceSmoothing;\n this.mipmapBlurPass = new MipmapBlurPass();\n this.mipmapBlurPass.enabled = mipmapBlur;\n this.mipmapBlurPass.radius = radius;\n this.mipmapBlurPass.levels = levels;\n this.uniforms.get(\"map\").value = mipmapBlur ? this.mipmapBlurPass.texture : this.renderTarget.texture;\n const resolution = this.resolution = new Resolution(this, resolutionX, resolutionY, resolutionScale);\n resolution.addEventListener(\"change\", (e) => this.setSize(resolution.baseWidth, resolution.baseHeight));\n }\n /**\n * A texture that contains the intermediate result of this effect.\n *\n * @type {Texture}\n */\n get texture() {\n return this.mipmapBlurPass.enabled ? this.mipmapBlurPass.texture : this.renderTarget.texture;\n }\n /**\n * Returns the generated bloom texture.\n *\n * @deprecated Use texture instead.\n * @return {Texture} The texture.\n */\n getTexture() {\n return this.texture;\n }\n /**\n * Returns the resolution settings.\n *\n * @deprecated Use resolution instead.\n * @return {Resolution} The resolution.\n */\n getResolution() {\n return this.resolution;\n }\n /**\n * Returns the blur pass.\n *\n * @deprecated\n * @return {KawaseBlurPass} The blur pass.\n */\n getBlurPass() {\n return this.blurPass;\n }\n /**\n * Returns the luminance pass.\n *\n * @deprecated Use luminancePass instead.\n * @return {LuminancePass} The luminance pass.\n */\n getLuminancePass() {\n return this.luminancePass;\n }\n /**\n * The luminance material.\n *\n * @type {LuminanceMaterial}\n */\n get luminanceMaterial() {\n return this.luminancePass.fullscreenMaterial;\n }\n /**\n * Returns the luminance material.\n *\n * @deprecated Use luminanceMaterial instead.\n * @return {LuminanceMaterial} The material.\n */\n getLuminanceMaterial() {\n return this.luminancePass.fullscreenMaterial;\n }\n /**\n * The current width of the internal render targets.\n *\n * @type {Number}\n * @deprecated\n */\n get width() {\n return this.resolution.width;\n }\n set width(value) {\n this.resolution.preferredWidth = value;\n }\n /**\n * The current height of the internal render targets.\n *\n * @type {Number}\n * @deprecated\n */\n get height() {\n return this.resolution.height;\n }\n set height(value) {\n this.resolution.preferredHeight = value;\n }\n /**\n * Indicates whether dithering is enabled.\n *\n * @type {Boolean}\n * @deprecated Use EffectPass.dithering instead.\n */\n get dithering() {\n return this.blurPass.dithering;\n }\n set dithering(value) {\n this.blurPass.dithering = value;\n }\n /**\n * The blur kernel size.\n *\n * @type {KernelSize}\n * @deprecated\n */\n get kernelSize() {\n return this.blurPass.kernelSize;\n }\n set kernelSize(value) {\n this.blurPass.kernelSize = value;\n }\n /**\n * @type {Number}\n * @deprecated\n */\n get distinction() {\n console.warn(this.name, \"distinction was removed\");\n return 1;\n }\n set distinction(value) {\n console.warn(this.name, \"distinction was removed\");\n }\n /**\n * The bloom intensity.\n *\n * @type {Number}\n */\n get intensity() {\n return this.uniforms.get(\"intensity\").value;\n }\n set intensity(value) {\n this.uniforms.get(\"intensity\").value = value;\n }\n /**\n * The bloom intensity.\n *\n * @deprecated Use intensity instead.\n * @return {Number} The intensity.\n */\n getIntensity() {\n return this.intensity;\n }\n /**\n * Sets the bloom intensity.\n *\n * @deprecated Use intensity instead.\n * @param {Number} value - The intensity.\n */\n setIntensity(value) {\n this.intensity = value;\n }\n /**\n * Returns the current resolution scale.\n *\n * @return {Number} The resolution scale.\n * @deprecated\n */\n getResolutionScale() {\n return this.resolution.scale;\n }\n /**\n * Sets the resolution scale.\n *\n * @param {Number} scale - The new resolution scale.\n * @deprecated\n */\n setResolutionScale(scale) {\n this.resolution.scale = scale;\n }\n /**\n * Updates this effect.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n */\n update(renderer, inputBuffer, deltaTime) {\n const renderTarget = this.renderTarget;\n const luminancePass = this.luminancePass;\n if (luminancePass.enabled) {\n luminancePass.render(renderer, inputBuffer);\n if (this.mipmapBlurPass.enabled) {\n this.mipmapBlurPass.render(renderer, luminancePass.renderTarget);\n } else {\n this.blurPass.render(renderer, luminancePass.renderTarget, renderTarget);\n }\n } else {\n if (this.mipmapBlurPass.enabled) {\n this.mipmapBlurPass.render(renderer, inputBuffer);\n } else {\n this.blurPass.render(renderer, inputBuffer, renderTarget);\n }\n }\n }\n /**\n * Updates the size of internal render targets.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n const resolution = this.resolution;\n resolution.setBaseSize(width, height);\n this.renderTarget.setSize(resolution.width, resolution.height);\n this.blurPass.resolution.copy(resolution);\n this.luminancePass.setSize(width, height);\n this.mipmapBlurPass.setSize(width, height);\n }\n /**\n * Performs initialization tasks.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {Boolean} alpha - Whether the renderer uses the alpha channel or not.\n * @param {Number} frameBufferType - The type of the main frame buffers.\n */\n initialize(renderer, alpha, frameBufferType) {\n this.blurPass.initialize(renderer, alpha, frameBufferType);\n this.luminancePass.initialize(renderer, alpha, frameBufferType);\n this.mipmapBlurPass.initialize(renderer, alpha, frameBufferType);\n if (frameBufferType !== void 0) {\n this.renderTarget.texture.type = frameBufferType;\n if (getOutputColorSpace(renderer) === SRGBColorSpace) {\n setTextureColorSpace(this.renderTarget.texture, SRGBColorSpace);\n }\n }\n }\n};\n\n// src/effects/BokehEffect.js\nimport { Uniform as Uniform25 } from \"three\";\n\n// src/effects/glsl/bokeh.frag\nvar bokeh_default = \"uniform float focus;uniform float dof;uniform float aperture;uniform float maxBlur;void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){vec2 aspectCorrection=vec2(1.0,aspect);\\n#ifdef PERSPECTIVE_CAMERA\\nfloat viewZ=perspectiveDepthToViewZ(depth,cameraNear,cameraFar);float linearDepth=viewZToOrthographicDepth(viewZ,cameraNear,cameraFar);\\n#else\\nfloat linearDepth=depth;\\n#endif\\nfloat focusNear=clamp(focus-dof,0.0,1.0);float focusFar=clamp(focus+dof,0.0,1.0);float low=step(linearDepth,focusNear);float high=step(focusFar,linearDepth);float factor=(linearDepth-focusNear)*low+(linearDepth-focusFar)*high;vec2 dofBlur=vec2(clamp(factor*aperture,-maxBlur,maxBlur));vec2 dofblur9=dofBlur*0.9;vec2 dofblur7=dofBlur*0.7;vec2 dofblur4=dofBlur*0.4;vec4 color=inputColor;color+=texture2D(inputBuffer,uv+(vec2(0.0,0.4)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.15,0.37)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.29,0.29)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.37,0.15)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.40,0.0)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.37,-0.15)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.29,-0.29)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.15,-0.37)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.0,-0.4)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.15,0.37)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.29,0.29)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.37,0.15)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.4,0.0)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.37,-0.15)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.29,-0.29)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.15,-0.37)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.15,0.37)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(-0.37,0.15)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(0.37,-0.15)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(-0.15,-0.37)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(-0.15,0.37)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(0.37,0.15)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(-0.37,-0.15)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(0.15,-0.37)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(0.29,0.29)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.40,0.0)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.29,-0.29)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.0,-0.4)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(-0.29,0.29)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(-0.4,0.0)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(-0.29,-0.29)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.0,0.4)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.29,0.29)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(0.4,0.0)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(0.29,-0.29)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(0.0,-0.4)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(-0.29,0.29)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(-0.4,0.0)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(-0.29,-0.29)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(0.0,0.4)*aspectCorrection)*dofblur4);outputColor=color/41.0;}\";\n\n// src/effects/BokehEffect.js\nvar BokehEffect = class extends Effect {\n /**\n * Constructs a new bokeh effect.\n *\n * @param {Object} [options] - The options.\n * @param {BlendFunction} [options.blendFunction] - The blend function of this effect.\n * @param {Number} [options.focus=0.5] - The focus distance ratio, ranging from 0.0 to 1.0.\n * @param {Number} [options.dof=0.02] - Depth of field. An area in front of and behind the focal point that still appears sharp.\n * @param {Number} [options.aperture=0.015] - Camera aperture scale. Bigger values for stronger blur and shallower depth of field.\n * @param {Number} [options.maxBlur=1.0] - The maximum blur strength.\n */\n constructor({\n blendFunction,\n focus = 0.5,\n dof = 0.02,\n aperture = 0.015,\n maxBlur = 1\n } = {}) {\n super(\"BokehEffect\", bokeh_default, {\n blendFunction,\n attributes: EffectAttribute.CONVOLUTION | EffectAttribute.DEPTH,\n uniforms: /* @__PURE__ */ new Map([\n [\"focus\", new Uniform25(focus)],\n [\"dof\", new Uniform25(dof)],\n [\"aperture\", new Uniform25(aperture)],\n [\"maxBlur\", new Uniform25(maxBlur)]\n ])\n });\n }\n};\n\n// src/effects/BrightnessContrastEffect.js\nimport { Uniform as Uniform26 } from \"three\";\n\n// src/effects/glsl/brightness-contrast.frag\nvar brightness_contrast_default = \"uniform float brightness;uniform float contrast;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=inputColor.rgb+vec3(brightness-0.5);if(contrast>0.0){color/=vec3(1.0-contrast);}else{color*=vec3(1.0+contrast);}outputColor=vec4(color+vec3(0.5),inputColor.a);}\";\n\n// src/effects/BrightnessContrastEffect.js\nvar BrightnessContrastEffect = class extends Effect {\n /**\n * Constructs a new brightness/contrast effect.\n *\n * @param {Object} [options] - The options.\n * @param {BlendFunction} [options.blendFunction=BlendFunction.SRC] - The blend function of this effect.\n * @param {Number} [options.brightness=0.0] - The brightness factor, ranging from -1 to 1, where 0 means no change.\n * @param {Number} [options.contrast=0.0] - The contrast factor, ranging from -1 to 1, where 0 means no change.\n */\n constructor({ blendFunction = BlendFunction.SRC, brightness = 0, contrast = 0 } = {}) {\n super(\"BrightnessContrastEffect\", brightness_contrast_default, {\n blendFunction,\n uniforms: /* @__PURE__ */ new Map([\n [\"brightness\", new Uniform26(brightness)],\n [\"contrast\", new Uniform26(contrast)]\n ])\n });\n this.inputColorSpace = SRGBColorSpace;\n }\n /**\n * The brightness.\n *\n * @type {Number}\n */\n get brightness() {\n return this.uniforms.get(\"brightness\").value;\n }\n set brightness(value) {\n this.uniforms.get(\"brightness\").value = value;\n }\n /**\n * Returns the brightness.\n *\n * @deprecated Use brightness instead.\n * @return {Number} The brightness.\n */\n getBrightness() {\n return this.brightness;\n }\n /**\n * Sets the brightness.\n *\n * @deprecated Use brightness instead.\n * @param {Number} value - The brightness.\n */\n setBrightness(value) {\n this.brightness = value;\n }\n /**\n * The contrast.\n *\n * @type {Number}\n */\n get contrast() {\n return this.uniforms.get(\"contrast\").value;\n }\n set contrast(value) {\n this.uniforms.get(\"contrast\").value = value;\n }\n /**\n * Returns the contrast.\n *\n * @deprecated Use contrast instead.\n * @return {Number} The contrast.\n */\n getContrast() {\n return this.contrast;\n }\n /**\n * Sets the contrast.\n *\n * @deprecated Use contrast instead.\n * @param {Number} value - The contrast.\n */\n setContrast(value) {\n this.contrast = value;\n }\n};\n\n// src/effects/glsl/color-average.frag\nvar color_average_default = \"void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=vec4(vec3(average(inputColor.rgb)),inputColor.a);}\";\n\n// src/effects/ColorAverageEffect.js\nvar ColorAverageEffect = class extends Effect {\n /**\n * Constructs a new color average effect.\n *\n * @param {BlendFunction} [blendFunction] - The blend function of this effect.\n */\n constructor(blendFunction) {\n super(\"ColorAverageEffect\", color_average_default, { blendFunction });\n }\n};\n\n// src/effects/ColorDepthEffect.js\nimport { Uniform as Uniform27 } from \"three\";\n\n// src/effects/glsl/color-depth.frag\nvar color_depth_default = \"uniform float factor;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=vec4(floor(inputColor.rgb*factor+0.5)/factor,inputColor.a);}\";\n\n// src/effects/ColorDepthEffect.js\nvar ColorDepthEffect = class extends Effect {\n /**\n * Constructs a new color depth effect.\n *\n * @param {Object} [options] - The options.\n * @param {BlendFunction} [options.blendFunction] - The blend function of this effect.\n * @param {Number} [options.bits=16] - The color bit depth.\n */\n constructor({ blendFunction, bits = 16 } = {}) {\n super(\"ColorDepthEffect\", color_depth_default, {\n blendFunction,\n uniforms: /* @__PURE__ */ new Map([\n [\"factor\", new Uniform27(1)]\n ])\n });\n this.bits = 0;\n this.bitDepth = bits;\n }\n /**\n * The virtual amount of color bits.\n *\n * Each color channel effectively uses a fourth of the total amount of bits. Alpha remains unaffected.\n *\n * @type {Number}\n */\n get bitDepth() {\n return this.bits;\n }\n set bitDepth(value) {\n this.bits = value;\n this.uniforms.get(\"factor\").value = Math.pow(2, value / 3);\n }\n /**\n * Returns the current color bit depth.\n *\n * @return {Number} The bit depth.\n */\n getBitDepth() {\n return this.bitDepth;\n }\n /**\n * Sets the virtual amount of color bits.\n *\n * @param {Number} value - The bit depth.\n */\n setBitDepth(value) {\n this.bitDepth = value;\n }\n};\n\n// src/effects/ChromaticAberrationEffect.js\nimport { Uniform as Uniform28, Vector2 as Vector218 } from \"three\";\n\n// src/effects/glsl/chromatic-aberration.frag\nvar chromatic_aberration_default = \"#ifdef RADIAL_MODULATION\\nuniform float modulationOffset;\\n#endif\\nvarying float vActive;varying vec2 vUvR;varying vec2 vUvB;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec2 ra=inputColor.ra;vec2 ba=inputColor.ba;\\n#ifdef RADIAL_MODULATION\\nconst vec2 center=vec2(0.5);float d=distance(uv,center)*2.0;d=max(d-modulationOffset,0.0);if(vActive>0.0&&d>0.0){ra=texture2D(inputBuffer,mix(uv,vUvR,d)).ra;ba=texture2D(inputBuffer,mix(uv,vUvB,d)).ba;}\\n#else\\nif(vActive>0.0){ra=texture2D(inputBuffer,vUvR).ra;ba=texture2D(inputBuffer,vUvB).ba;}\\n#endif\\noutputColor=vec4(ra.x,inputColor.g,ba.x,max(max(ra.y,ba.y),inputColor.a));}\";\n\n// src/effects/glsl/chromatic-aberration.vert\nvar chromatic_aberration_default2 = \"uniform vec2 offset;varying float vActive;varying vec2 vUvR;varying vec2 vUvB;void mainSupport(const in vec2 uv){vec2 shift=offset*vec2(1.0,aspect);vActive=(shift.x!=0.0||shift.y!=0.0)?1.0:0.0;vUvR=uv+shift;vUvB=uv-shift;}\";\n\n// src/effects/ChromaticAberrationEffect.js\nvar ChromaticAberrationEffect = class extends Effect {\n /**\n * Constructs a new chromatic aberration effect.\n *\n * @param {Object} [options] - The options.\n * @param {Vector2} [options.offset] - The color offset.\n * @param {Boolean} [options.radialModulation=false] - Whether the effect should be modulated with a radial gradient.\n * @param {Number} [options.modulationOffset=0.15] - The modulation offset. Only applies if `radialModulation` is enabled.\n */\n constructor({\n offset = new Vector218(1e-3, 5e-4),\n radialModulation = false,\n modulationOffset = 0.15\n } = {}) {\n super(\"ChromaticAberrationEffect\", chromatic_aberration_default, {\n vertexShader: chromatic_aberration_default2,\n attributes: EffectAttribute.CONVOLUTION,\n uniforms: /* @__PURE__ */ new Map([\n [\"offset\", new Uniform28(offset)],\n [\"modulationOffset\", new Uniform28(modulationOffset)]\n ])\n });\n this.radialModulation = radialModulation;\n }\n /**\n * The color offset.\n *\n * @type {Vector2}\n */\n get offset() {\n return this.uniforms.get(\"offset\").value;\n }\n set offset(value) {\n this.uniforms.get(\"offset\").value = value;\n }\n /**\n * Indicates whether radial modulation is enabled.\n *\n * When enabled, the effect will be weaker in the middle and stronger towards the screen edges.\n *\n * @type {Boolean}\n */\n get radialModulation() {\n return this.defines.has(\"RADIAL_MODULATION\");\n }\n set radialModulation(value) {\n if (value) {\n this.defines.set(\"RADIAL_MODULATION\", \"1\");\n } else {\n this.defines.delete(\"RADIAL_MODULATION\");\n }\n this.setChanged();\n }\n /**\n * The modulation offset.\n *\n * @type {Number}\n */\n get modulationOffset() {\n return this.uniforms.get(\"modulationOffset\").value;\n }\n set modulationOffset(value) {\n this.uniforms.get(\"modulationOffset\").value = value;\n }\n /**\n * Returns the color offset vector.\n *\n * @deprecated Use offset instead.\n * @return {Vector2} The offset.\n */\n getOffset() {\n return this.offset;\n }\n /**\n * Sets the color offset vector.\n *\n * @deprecated Use offset instead.\n * @param {Vector2} value - The offset.\n */\n setOffset(value) {\n this.offset = value;\n }\n};\n\n// src/effects/glsl/depth.frag\nvar depth_default = \"void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){\\n#ifdef INVERTED\\nvec3 color=vec3(1.0-depth);\\n#else\\nvec3 color=vec3(depth);\\n#endif\\noutputColor=vec4(color,inputColor.a);}\";\n\n// src/effects/DepthEffect.js\nvar DepthEffect = class extends Effect {\n /**\n * Constructs a new depth effect.\n *\n * @param {Object} [options] - The options.\n * @param {BlendFunction} [options.blendFunction=BlendFunction.SRC] - The blend function of this effect.\n * @param {Boolean} [options.inverted=false] - Whether the depth should be inverted.\n */\n constructor({ blendFunction = BlendFunction.SRC, inverted = false } = {}) {\n super(\"DepthEffect\", depth_default, {\n blendFunction,\n attributes: EffectAttribute.DEPTH\n });\n this.inverted = inverted;\n }\n /**\n * Indicates whether depth should be inverted.\n *\n * @type {Boolean}\n */\n get inverted() {\n return this.defines.has(\"INVERTED\");\n }\n set inverted(value) {\n if (this.inverted !== value) {\n if (value) {\n this.defines.set(\"INVERTED\", \"1\");\n } else {\n this.defines.delete(\"INVERTED\");\n }\n this.setChanged();\n }\n }\n /**\n * Indicates whether the rendered depth is inverted.\n *\n * @deprecated Use inverted instead.\n * @return {Boolean} Whether the rendered depth is inverted.\n */\n isInverted() {\n return this.inverted;\n }\n /**\n * Enables or disables depth inversion.\n *\n * @deprecated Use inverted instead.\n * @param {Boolean} value - Whether depth should be inverted.\n */\n setInverted(value) {\n this.inverted = value;\n }\n};\n\n// src/effects/DepthOfFieldEffect.js\nimport { BasicDepthPacking as BasicDepthPacking14, Uniform as Uniform29, UnsignedByteType as UnsignedByteType12, WebGLRenderTarget as WebGLRenderTarget16 } from \"three\";\n\n// src/effects/glsl/depth-of-field.frag\nvar depth_of_field_default = \"#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D nearColorBuffer;uniform mediump sampler2D farColorBuffer;\\n#else\\nuniform lowp sampler2D nearColorBuffer;uniform lowp sampler2D farColorBuffer;\\n#endif\\nuniform lowp sampler2D nearCoCBuffer;uniform lowp sampler2D farCoCBuffer;uniform float scale;void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){vec4 colorNear=texture2D(nearColorBuffer,uv);vec4 colorFar=texture2D(farColorBuffer,uv);\\n#if MASK_FUNCTION == 1\\nvec2 cocNearFar=vec2(texture2D(nearCoCBuffer,uv).r,colorFar.a);cocNearFar.x=min(cocNearFar.x*scale,1.0);\\n#else\\nvec2 cocNearFar=vec2(texture2D(nearCoCBuffer,uv).r,texture2D(farCoCBuffer,uv).g);cocNearFar=min(cocNearFar*scale,1.0);\\n#endif\\nvec4 result=inputColor*(1.0-cocNearFar.y)+colorFar;result=mix(result,colorNear,cocNearFar.x);outputColor=result;}\";\n\n// src/effects/DepthOfFieldEffect.js\nvar DepthOfFieldEffect = class extends Effect {\n /**\n * Constructs a new depth of field effect.\n *\n * @param {Camera} camera - The main camera.\n * @param {Object} [options] - The options.\n * @param {BlendFunction} [options.blendFunction] - The blend function of this effect.\n * @param {Number} [options.worldFocusDistance] - The focus distance in world units.\n * @param {Number} [options.worldFocusRange] - The focus distance in world units.\n * @param {Number} [options.focusDistance=0.0] - The normalized focus distance. Range is [0.0, 1.0].\n * @param {Number} [options.focusRange=0.1] - The focus range. Range is [0.0, 1.0].\n * @param {Number} [options.focalLength=0.1] - Deprecated.\n * @param {Number} [options.bokehScale=1.0] - The scale of the bokeh blur.\n * @param {Number} [options.resolutionScale=0.5] - The resolution scale.\n * @param {Number} [options.resolutionX=Resolution.AUTO_SIZE] - The horizontal resolution.\n * @param {Number} [options.resolutionY=Resolution.AUTO_SIZE] - The vertical resolution.\n * @param {Number} [options.width=Resolution.AUTO_SIZE] - Deprecated. Use resolutionX instead.\n * @param {Number} [options.height=Resolution.AUTO_SIZE] - Deprecated. Use resolutionY instead.\n */\n constructor(camera, {\n blendFunction,\n worldFocusDistance,\n worldFocusRange,\n focusDistance = 0,\n focalLength = 0.1,\n focusRange = focalLength,\n bokehScale = 1,\n resolutionScale = 1,\n width = Resolution.AUTO_SIZE,\n height = Resolution.AUTO_SIZE,\n resolutionX = width,\n resolutionY = height\n } = {}) {\n super(\"DepthOfFieldEffect\", depth_of_field_default, {\n blendFunction,\n attributes: EffectAttribute.DEPTH,\n uniforms: /* @__PURE__ */ new Map([\n [\"nearColorBuffer\", new Uniform29(null)],\n [\"farColorBuffer\", new Uniform29(null)],\n [\"nearCoCBuffer\", new Uniform29(null)],\n [\"farCoCBuffer\", new Uniform29(null)],\n [\"scale\", new Uniform29(1)]\n ])\n });\n this.camera = camera;\n this.renderTarget = new WebGLRenderTarget16(1, 1, { depthBuffer: false });\n this.renderTarget.texture.name = \"DoF.Intermediate\";\n this.renderTargetMasked = this.renderTarget.clone();\n this.renderTargetMasked.texture.name = \"DoF.Masked.Far\";\n this.renderTargetNear = this.renderTarget.clone();\n this.renderTargetNear.texture.name = \"DoF.Bokeh.Near\";\n this.uniforms.get(\"nearColorBuffer\").value = this.renderTargetNear.texture;\n this.renderTargetFar = this.renderTarget.clone();\n this.renderTargetFar.texture.name = \"DoF.Bokeh.Far\";\n this.uniforms.get(\"farColorBuffer\").value = this.renderTargetFar.texture;\n this.renderTargetCoC = this.renderTarget.clone();\n this.renderTargetCoC.texture.name = \"DoF.CoC\";\n this.uniforms.get(\"farCoCBuffer\").value = this.renderTargetCoC.texture;\n this.renderTargetCoCBlurred = this.renderTargetCoC.clone();\n this.renderTargetCoCBlurred.texture.name = \"DoF.CoC.Blurred\";\n this.uniforms.get(\"nearCoCBuffer\").value = this.renderTargetCoCBlurred.texture;\n this.cocPass = new ShaderPass(new CircleOfConfusionMaterial(camera));\n const cocMaterial = this.cocMaterial;\n cocMaterial.focusDistance = focusDistance;\n cocMaterial.focusRange = focusRange;\n if (worldFocusDistance !== void 0) {\n cocMaterial.worldFocusDistance = worldFocusDistance;\n }\n if (worldFocusRange !== void 0) {\n cocMaterial.worldFocusRange = worldFocusRange;\n }\n this.blurPass = new KawaseBlurPass({ resolutionScale, resolutionX, resolutionY, kernelSize: KernelSize.MEDIUM });\n this.maskPass = new ShaderPass(new MaskMaterial(this.renderTargetCoC.texture));\n const maskMaterial = this.maskPass.fullscreenMaterial;\n maskMaterial.colorChannel = ColorChannel.GREEN;\n this.maskFunction = MaskFunction.MULTIPLY_RGB;\n this.bokehNearBasePass = new ShaderPass(new BokehMaterial(false, true));\n this.bokehNearBasePass.fullscreenMaterial.cocBuffer = this.renderTargetCoCBlurred.texture;\n this.bokehNearFillPass = new ShaderPass(new BokehMaterial(true, true));\n this.bokehNearFillPass.fullscreenMaterial.cocBuffer = this.renderTargetCoCBlurred.texture;\n this.bokehFarBasePass = new ShaderPass(new BokehMaterial(false, false));\n this.bokehFarBasePass.fullscreenMaterial.cocBuffer = this.renderTargetCoC.texture;\n this.bokehFarFillPass = new ShaderPass(new BokehMaterial(true, false));\n this.bokehFarFillPass.fullscreenMaterial.cocBuffer = this.renderTargetCoC.texture;\n this.target = null;\n const resolution = this.resolution = new Resolution(this, resolutionX, resolutionY, resolutionScale);\n resolution.addEventListener(\"change\", (e) => this.setSize(resolution.baseWidth, resolution.baseHeight));\n this.bokehScale = bokehScale;\n }\n set mainCamera(value) {\n this.camera = value;\n this.cocMaterial.copyCameraSettings(value);\n }\n /**\n * The circle of confusion texture.\n *\n * @type {Texture}\n */\n get cocTexture() {\n return this.renderTargetCoC.texture;\n }\n /**\n * The mask function. Default is `MULTIPLY_RGB`.\n *\n * @type {MaskFunction}\n */\n get maskFunction() {\n return this.maskPass.fullscreenMaterial.maskFunction;\n }\n set maskFunction(value) {\n if (this.maskFunction !== value) {\n this.defines.set(\"MASK_FUNCTION\", value.toFixed(0));\n this.maskPass.fullscreenMaterial.maskFunction = value;\n this.setChanged();\n }\n }\n /**\n * The circle of confusion material.\n *\n * @type {CircleOfConfusionMaterial}\n */\n get cocMaterial() {\n return this.cocPass.fullscreenMaterial;\n }\n /**\n * The circle of confusion material.\n *\n * @deprecated Use cocMaterial instead.\n * @type {CircleOfConfusionMaterial}\n */\n get circleOfConfusionMaterial() {\n return this.cocMaterial;\n }\n /**\n * Returns the circle of confusion material.\n *\n * @deprecated Use cocMaterial instead.\n * @return {CircleOfConfusionMaterial} The material.\n */\n getCircleOfConfusionMaterial() {\n return this.cocMaterial;\n }\n /**\n * Returns the pass that blurs the foreground CoC buffer to soften edges.\n *\n * @deprecated Use blurPass instead.\n * @return {KawaseBlurPass} The blur pass.\n */\n getBlurPass() {\n return this.blurPass;\n }\n /**\n * Returns the resolution settings.\n *\n * @deprecated Use resolution instead.\n * @return {Resolution} The resolution.\n */\n getResolution() {\n return this.resolution;\n }\n /**\n * The current bokeh scale.\n *\n * @type {Number}\n */\n get bokehScale() {\n return this.uniforms.get(\"scale\").value;\n }\n set bokehScale(value) {\n this.bokehNearBasePass.fullscreenMaterial.scale = value;\n this.bokehNearFillPass.fullscreenMaterial.scale = value;\n this.bokehFarBasePass.fullscreenMaterial.scale = value;\n this.bokehFarFillPass.fullscreenMaterial.scale = value;\n this.maskPass.fullscreenMaterial.strength = value;\n this.uniforms.get(\"scale\").value = value;\n }\n /**\n * Returns the current bokeh scale.\n *\n * @deprecated Use bokehScale instead.\n * @return {Number} The scale.\n */\n getBokehScale() {\n return this.bokehScale;\n }\n /**\n * Sets the bokeh scale.\n *\n * @deprecated Use bokehScale instead.\n * @param {Number} value - The scale.\n */\n setBokehScale(value) {\n this.bokehScale = value;\n }\n /**\n * Returns the current auto focus target.\n *\n * @deprecated Use target instead.\n * @return {Vector3} The target.\n */\n getTarget() {\n return this.target;\n }\n /**\n * Sets the auto focus target.\n *\n * @deprecated Use target instead.\n * @param {Vector3} value - The target.\n */\n setTarget(value) {\n this.target = value;\n }\n /**\n * Calculates the focus distance from the camera to the given position.\n *\n * @param {Vector3} target - The target.\n * @return {Number} The normalized focus distance.\n */\n calculateFocusDistance(target) {\n const camera = this.camera;\n const distance = camera.position.distanceTo(target);\n return viewZToOrthographicDepth(-distance, camera.near, camera.far);\n }\n /**\n * Sets the depth texture.\n *\n * @param {Texture} depthTexture - A depth texture.\n * @param {DepthPackingStrategies} [depthPacking=BasicDepthPacking] - The depth packing.\n */\n setDepthTexture(depthTexture, depthPacking = BasicDepthPacking14) {\n this.cocMaterial.depthBuffer = depthTexture;\n this.cocMaterial.depthPacking = depthPacking;\n }\n /**\n * Updates this effect.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n */\n update(renderer, inputBuffer, deltaTime) {\n const renderTarget = this.renderTarget;\n const renderTargetCoC = this.renderTargetCoC;\n const renderTargetCoCBlurred = this.renderTargetCoCBlurred;\n const renderTargetMasked = this.renderTargetMasked;\n if (this.target !== null) {\n const distance = this.calculateFocusDistance(this.target);\n this.cocMaterial.focusDistance = distance;\n }\n this.cocPass.render(renderer, null, renderTargetCoC);\n this.blurPass.render(renderer, renderTargetCoC, renderTargetCoCBlurred);\n this.maskPass.render(renderer, inputBuffer, renderTargetMasked);\n this.bokehFarBasePass.render(renderer, renderTargetMasked, renderTarget);\n this.bokehFarFillPass.render(renderer, renderTarget, this.renderTargetFar);\n this.bokehNearBasePass.render(renderer, inputBuffer, renderTarget);\n this.bokehNearFillPass.render(renderer, renderTarget, this.renderTargetNear);\n }\n /**\n * Updates the size of internal render targets.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n const resolution = this.resolution;\n resolution.setBaseSize(width, height);\n const w = resolution.width, h = resolution.height;\n this.cocPass.setSize(width, height);\n this.blurPass.setSize(width, height);\n this.maskPass.setSize(width, height);\n this.renderTargetFar.setSize(width, height);\n this.renderTargetCoC.setSize(width, height);\n this.renderTargetMasked.setSize(width, height);\n this.renderTarget.setSize(w, h);\n this.renderTargetNear.setSize(w, h);\n this.renderTargetCoCBlurred.setSize(w, h);\n this.bokehNearBasePass.fullscreenMaterial.setSize(width, height);\n this.bokehNearFillPass.fullscreenMaterial.setSize(width, height);\n this.bokehFarBasePass.fullscreenMaterial.setSize(width, height);\n this.bokehFarFillPass.fullscreenMaterial.setSize(width, height);\n }\n /**\n * Performs initialization tasks.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {Boolean} alpha - Whether the renderer uses the alpha channel or not.\n * @param {Number} frameBufferType - The type of the main frame buffers.\n */\n initialize(renderer, alpha, frameBufferType) {\n this.cocPass.initialize(renderer, alpha, frameBufferType);\n this.maskPass.initialize(renderer, alpha, frameBufferType);\n this.bokehNearBasePass.initialize(renderer, alpha, frameBufferType);\n this.bokehNearFillPass.initialize(renderer, alpha, frameBufferType);\n this.bokehFarBasePass.initialize(renderer, alpha, frameBufferType);\n this.bokehFarFillPass.initialize(renderer, alpha, frameBufferType);\n this.blurPass.initialize(renderer, alpha, UnsignedByteType12);\n if (renderer.capabilities.logarithmicDepthBuffer) {\n this.cocPass.fullscreenMaterial.defines.LOG_DEPTH = \"1\";\n }\n if (frameBufferType !== void 0) {\n this.renderTarget.texture.type = frameBufferType;\n this.renderTargetNear.texture.type = frameBufferType;\n this.renderTargetFar.texture.type = frameBufferType;\n this.renderTargetMasked.texture.type = frameBufferType;\n if (getOutputColorSpace(renderer) === SRGBColorSpace) {\n setTextureColorSpace(this.renderTarget.texture, SRGBColorSpace);\n setTextureColorSpace(this.renderTargetNear.texture, SRGBColorSpace);\n setTextureColorSpace(this.renderTargetFar.texture, SRGBColorSpace);\n setTextureColorSpace(this.renderTargetMasked.texture, SRGBColorSpace);\n }\n }\n }\n};\n\n// src/effects/DotScreenEffect.js\nimport { Uniform as Uniform30, Vector2 as Vector219 } from \"three\";\n\n// src/effects/glsl/dot-screen.frag\nvar dot_screen_default = \"uniform vec2 angle;uniform float scale;float pattern(const in vec2 uv){vec2 point=scale*vec2(dot(angle.yx,vec2(uv.x,-uv.y)),dot(angle,uv));return(sin(point.x)*sin(point.y))*4.0;}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=vec3(inputColor.rgb*10.0-5.0+pattern(uv*resolution));outputColor=vec4(color,inputColor.a);}\";\n\n// src/effects/DotScreenEffect.js\nvar DotScreenEffect = class extends Effect {\n /**\n * Constructs a new dot screen effect.\n *\n * @param {Object} [options] - The options.\n * @param {BlendFunction} [options.blendFunction] - The blend function of this effect.\n * @param {Number} [options.angle=1.57] - The angle of the dot pattern.\n * @param {Number} [options.scale=1.0] - The scale of the dot pattern.\n */\n constructor({ blendFunction, angle = Math.PI * 0.5, scale = 1 } = {}) {\n super(\"DotScreenEffect\", dot_screen_default, {\n blendFunction,\n uniforms: /* @__PURE__ */ new Map([\n [\"angle\", new Uniform30(new Vector219())],\n [\"scale\", new Uniform30(scale)]\n ])\n });\n this.angle = angle;\n }\n /**\n * The angle.\n *\n * @type {Number}\n */\n get angle() {\n return Math.acos(this.uniforms.get(\"angle\").value.y);\n }\n set angle(value) {\n this.uniforms.get(\"angle\").value.set(Math.sin(value), Math.cos(value));\n }\n /**\n * Returns the pattern angle.\n *\n * @deprecated Use angle instead.\n * @return {Number} The angle in radians.\n */\n getAngle() {\n return this.angle;\n }\n /**\n * Sets the pattern angle.\n *\n * @deprecated Use angle instead.\n * @param {Number} value - The angle in radians.\n */\n setAngle(value) {\n this.angle = value;\n }\n /**\n * The scale.\n *\n * @type {Number}\n */\n get scale() {\n return this.uniforms.get(\"scale\").value;\n }\n set scale(value) {\n this.uniforms.get(\"scale\").value = value;\n }\n};\n\n// src/effects/glsl/fxaa.frag\nvar fxaa_default = \"#if THREE_REVISION < 143\\n#define luminance(v) linearToRelativeLuminance(v)\\n#endif\\n#define QUALITY(q) ((q) < 5 ? 1.0 : ((q) > 5 ? ((q) < 10 ? 2.0 : ((q) < 11 ? 4.0 : 8.0)) : 1.5))\\n#define ONE_OVER_TWELVE 0.08333333333333333\\nvarying vec2 vUvDown;varying vec2 vUvUp;varying vec2 vUvLeft;varying vec2 vUvRight;varying vec2 vUvDownLeft;varying vec2 vUvUpRight;varying vec2 vUvUpLeft;varying vec2 vUvDownRight;vec4 fxaa(const in vec4 inputColor,const in vec2 uv){float lumaCenter=luminance(inputColor.rgb);float lumaDown=luminance(texture2D(inputBuffer,vUvDown).rgb);float lumaUp=luminance(texture2D(inputBuffer,vUvUp).rgb);float lumaLeft=luminance(texture2D(inputBuffer,vUvLeft).rgb);float lumaRight=luminance(texture2D(inputBuffer,vUvRight).rgb);float lumaMin=min(lumaCenter,min(min(lumaDown,lumaUp),min(lumaLeft,lumaRight)));float lumaMax=max(lumaCenter,max(max(lumaDown,lumaUp),max(lumaLeft,lumaRight)));float lumaRange=lumaMax-lumaMin;if(lumaRange=edgeVertical);float stepLength=isHorizontal?texelSize.y:texelSize.x;float luma1=isHorizontal?lumaDown:lumaLeft;float luma2=isHorizontal?lumaUp:lumaRight;float gradient1=abs(luma1-lumaCenter);float gradient2=abs(luma2-lumaCenter);bool is1Steepest=gradient1>=gradient2;float gradientScaled=0.25*max(gradient1,gradient2);float lumaLocalAverage=0.0;if(is1Steepest){stepLength=-stepLength;lumaLocalAverage=0.5*(luma1+lumaCenter);}else{lumaLocalAverage=0.5*(luma2+lumaCenter);}vec2 currentUv=uv;if(isHorizontal){currentUv.y+=stepLength*0.5;}else{currentUv.x+=stepLength*0.5;}vec2 offset=isHorizontal?vec2(texelSize.x,0.0):vec2(0.0,texelSize.y);vec2 uv1=currentUv-offset*QUALITY(0);vec2 uv2=currentUv+offset*QUALITY(0);float lumaEnd1=luminance(texture2D(inputBuffer,uv1).rgb);float lumaEnd2=luminance(texture2D(inputBuffer,uv2).rgb);lumaEnd1-=lumaLocalAverage;lumaEnd2-=lumaLocalAverage;bool reached1=abs(lumaEnd1)>=gradientScaled;bool reached2=abs(lumaEnd2)>=gradientScaled;bool reachedBoth=reached1&&reached2;if(!reached1){uv1-=offset*QUALITY(1);}if(!reached2){uv2+=offset*QUALITY(1);}if(!reachedBoth){for(int i=2;i=gradientScaled;reached2=abs(lumaEnd2)>=gradientScaled;reachedBoth=reached1&&reached2;if(!reached1){uv1-=offset*QUALITY(i);}if(!reached2){uv2+=offset*QUALITY(i);}if(reachedBoth){break;}}}float distance1=isHorizontal?(uv.x-uv1.x):(uv.y-uv1.y);float distance2=isHorizontal?(uv2.x-uv.x):(uv2.y-uv.y);bool isDirection1=distance1} A promise that resolves with a new LUT upon completion.\n */\n scaleUp(size, transferData = true) {\n const image = this.image;\n let promise;\n if (size <= image.width) {\n promise = Promise.reject(new Error(\"The target size must be greater than the current size\"));\n } else {\n promise = new Promise((resolve, reject) => {\n const workerURL = URL.createObjectURL(new Blob([worker_default], {\n type: \"text/javascript\"\n }));\n const worker = new Worker(workerURL);\n worker.addEventListener(\"error\", (event) => reject(event.error));\n worker.addEventListener(\"message\", (event) => {\n const lut = new _LookupTexture(event.data, size);\n copyTextureColorSpace(this, lut);\n lut.type = this.type;\n lut.name = this.name;\n URL.revokeObjectURL(workerURL);\n resolve(lut);\n });\n const transferList = transferData ? [image.data.buffer] : [];\n worker.postMessage({\n operation: LUTOperation.SCALE_UP,\n data: image.data,\n size\n }, transferList);\n });\n }\n return promise;\n }\n /**\n * Applies the given LUT to this one.\n *\n * @param {LookupTexture} lut - A LUT. Must have the same dimensions, type and format as this LUT.\n * @return {LookupTexture} This texture.\n */\n applyLUT(lut) {\n const img0 = this.image;\n const img1 = lut.image;\n const size0 = Math.min(img0.width, img0.height, img0.depth);\n const size1 = Math.min(img1.width, img1.height, img1.depth);\n if (size0 !== size1) {\n console.error(\"Size mismatch\");\n } else if (lut.type !== FloatType4 || this.type !== FloatType4) {\n console.error(\"Both LUTs must be FloatType textures\");\n } else if (lut.format !== RGBAFormat || this.format !== RGBAFormat) {\n console.error(\"Both LUTs must be RGBA textures\");\n } else {\n const data0 = img0.data;\n const data1 = img1.data;\n const size = size0;\n const sizeSq = size ** 2;\n const s = size - 1;\n for (let i = 0, l = size ** 3; i < l; ++i) {\n const i4 = i * 4;\n const r = data0[i4 + 0] * s;\n const g = data0[i4 + 1] * s;\n const b = data0[i4 + 2] * s;\n const iRGB = Math.round(r + g * size + b * sizeSq) * 4;\n data0[i4 + 0] = data1[iRGB + 0];\n data0[i4 + 1] = data1[iRGB + 1];\n data0[i4 + 2] = data1[iRGB + 2];\n }\n this.needsUpdate = true;\n }\n return this;\n }\n /**\n * Converts the LUT data into unsigned byte data.\n *\n * This is a lossy operation which should only be performed after all other transformations have been applied.\n *\n * @return {LookupTexture} This texture.\n */\n convertToUint8() {\n if (this.type === FloatType4) {\n const floatData = this.image.data;\n const uint8Data = new Uint8Array(floatData.length);\n for (let i = 0, l = floatData.length; i < l; ++i) {\n uint8Data[i] = floatData[i] * 255 + 0.5;\n }\n this.image.data = uint8Data;\n this.type = UnsignedByteType13;\n this.needsUpdate = true;\n }\n return this;\n }\n /**\n * Converts the LUT data into float data.\n *\n * @return {LookupTexture} This texture.\n */\n convertToFloat() {\n if (this.type === UnsignedByteType13) {\n const uint8Data = this.image.data;\n const floatData = new Float32Array(uint8Data.length);\n for (let i = 0, l = uint8Data.length; i < l; ++i) {\n floatData[i] = uint8Data[i] / 255;\n }\n this.image.data = floatData;\n this.type = FloatType4;\n this.needsUpdate = true;\n }\n return this;\n }\n /**\n * Converts this LUT into RGBA data.\n *\n * @deprecated LUTs are RGBA by default since three r137.\n * @return {LookupTexture} This texture.\n */\n convertToRGBA() {\n console.warn(\"LookupTexture\", \"convertToRGBA() is deprecated, LUTs are now RGBA by default\");\n return this;\n }\n /**\n * Converts the output of this LUT into sRGB color space.\n *\n * @return {LookupTexture} This texture.\n */\n convertLinearToSRGB() {\n const data = this.image.data;\n if (this.type === FloatType4) {\n for (let i = 0, l = data.length; i < l; i += 4) {\n c.fromArray(data, i).convertLinearToSRGB().toArray(data, i);\n }\n setTextureColorSpace(this, SRGBColorSpace);\n this.needsUpdate = true;\n } else {\n console.error(\"Color space conversion requires FloatType data\");\n }\n return this;\n }\n /**\n * Converts the output of this LUT into linear color space.\n *\n * @return {LookupTexture} This texture.\n */\n convertSRGBToLinear() {\n const data = this.image.data;\n if (this.type === FloatType4) {\n for (let i = 0, l = data.length; i < l; i += 4) {\n c.fromArray(data, i).convertSRGBToLinear().toArray(data, i);\n }\n setTextureColorSpace(this, LinearSRGBColorSpace);\n this.needsUpdate = true;\n } else {\n console.error(\"Color space conversion requires FloatType data\");\n }\n return this;\n }\n /**\n * Converts this LUT into a 2D data texture.\n *\n * Please note that custom input domains are not carried over to 2D textures.\n *\n * @return {DataTexture} The texture.\n */\n toDataTexture() {\n const width = this.image.width;\n const height = this.image.height * this.image.depth;\n const texture = new DataTexture(this.image.data, width, height);\n texture.name = this.name;\n texture.type = this.type;\n texture.format = this.format;\n texture.minFilter = LinearFilter3;\n texture.magFilter = LinearFilter3;\n texture.wrapS = this.wrapS;\n texture.wrapT = this.wrapT;\n texture.generateMipmaps = false;\n texture.needsUpdate = true;\n copyTextureColorSpace(this, texture);\n return texture;\n }\n /**\n * Creates a new 3D LUT by copying a given LUT.\n *\n * Common image-based textures will be converted into 3D data textures.\n *\n * @param {Texture} texture - The LUT. Assumed to be cubic.\n * @return {LookupTexture} A new 3D LUT.\n */\n static from(texture) {\n const image = texture.image;\n const { width, height } = image;\n const size = Math.min(width, height);\n let data;\n if (image instanceof Image) {\n const rawImageData = RawImageData.from(image);\n const src = rawImageData.data;\n if (width > height) {\n data = new Uint8Array(src.length);\n for (let z = 0; z < size; ++z) {\n for (let y = 0; y < size; ++y) {\n for (let x = 0; x < size; ++x) {\n const i4 = (x + z * size + y * size * size) * 4;\n const j4 = (x + y * size + z * size * size) * 4;\n data[j4 + 0] = src[i4 + 0];\n data[j4 + 1] = src[i4 + 1];\n data[j4 + 2] = src[i4 + 2];\n data[j4 + 3] = src[i4 + 3];\n }\n }\n }\n } else {\n data = new Uint8Array(src.buffer);\n }\n } else {\n data = image.data.slice();\n }\n const lut = new _LookupTexture(data, size);\n lut.type = texture.type;\n lut.name = texture.name;\n copyTextureColorSpace(texture, lut);\n return lut;\n }\n /**\n * Creates a neutral 3D LUT.\n *\n * @param {Number} size - The sidelength.\n * @return {LookupTexture} A neutral 3D LUT.\n */\n static createNeutral(size) {\n const data = new Float32Array(size ** 3 * 4);\n const sizeSq = size ** 2;\n const s = 1 / (size - 1);\n for (let r = 0; r < size; ++r) {\n for (let g = 0; g < size; ++g) {\n for (let b = 0; b < size; ++b) {\n const i4 = (r + g * size + b * sizeSq) * 4;\n data[i4 + 0] = r * s;\n data[i4 + 1] = g * s;\n data[i4 + 2] = b * s;\n data[i4 + 3] = 1;\n }\n }\n }\n const lut = new _LookupTexture(data, size);\n lut.name = \"neutral\";\n return lut;\n }\n};\n\n// src/textures/lut/TetrahedralUpscaler.js\nvar P = [\n new Float32Array(3),\n new Float32Array(3)\n];\nvar C = [\n new Float32Array(3),\n new Float32Array(3),\n new Float32Array(3),\n new Float32Array(3)\n];\nvar T = [\n [\n new Float32Array([0, 0, 0]),\n new Float32Array([1, 0, 0]),\n new Float32Array([1, 1, 0]),\n new Float32Array([1, 1, 1])\n ],\n [\n new Float32Array([0, 0, 0]),\n new Float32Array([1, 0, 0]),\n new Float32Array([1, 0, 1]),\n new Float32Array([1, 1, 1])\n ],\n [\n new Float32Array([0, 0, 0]),\n new Float32Array([0, 0, 1]),\n new Float32Array([1, 0, 1]),\n new Float32Array([1, 1, 1])\n ],\n [\n new Float32Array([0, 0, 0]),\n new Float32Array([0, 1, 0]),\n new Float32Array([1, 1, 0]),\n new Float32Array([1, 1, 1])\n ],\n [\n new Float32Array([0, 0, 0]),\n new Float32Array([0, 1, 0]),\n new Float32Array([0, 1, 1]),\n new Float32Array([1, 1, 1])\n ],\n [\n new Float32Array([0, 0, 0]),\n new Float32Array([0, 0, 1]),\n new Float32Array([0, 1, 1]),\n new Float32Array([1, 1, 1])\n ]\n];\nfunction calculateTetrahedronVolume(a, b, c2, d) {\n const bcX = c2[0] - b[0];\n const bcY = c2[1] - b[1];\n const bcZ = c2[2] - b[2];\n const baX = a[0] - b[0];\n const baY = a[1] - b[1];\n const baZ = a[2] - b[2];\n const crossX = bcY * baZ - bcZ * baY;\n const crossY = bcZ * baX - bcX * baZ;\n const crossZ = bcX * baY - bcY * baX;\n const length = Math.sqrt(crossX * crossX + crossY * crossY + crossZ * crossZ);\n const triangleArea = length * 0.5;\n const normalX = crossX / length;\n const normalY = crossY / length;\n const normalZ = crossZ / length;\n const constant = -(a[0] * normalX + a[1] * normalY + a[2] * normalZ);\n const dot = d[0] * normalX + d[1] * normalY + d[2] * normalZ;\n const height = Math.abs(dot + constant);\n return height * triangleArea / 3;\n}\nfunction sample(data, size, x, y, z, color2) {\n const i4 = (x + y * size + z * size * size) * 4;\n color2[0] = data[i4 + 0];\n color2[1] = data[i4 + 1];\n color2[2] = data[i4 + 2];\n}\nfunction tetrahedralSample(data, size, u, v3, w, color2) {\n const px = u * (size - 1);\n const py = v3 * (size - 1);\n const pz = w * (size - 1);\n const minX = Math.floor(px);\n const minY = Math.floor(py);\n const minZ = Math.floor(pz);\n const maxX = Math.ceil(px);\n const maxY = Math.ceil(py);\n const maxZ = Math.ceil(pz);\n const su = px - minX;\n const sv = py - minY;\n const sw = pz - minZ;\n if (minX === px && minY === py && minZ === pz) {\n sample(data, size, px, py, pz, color2);\n } else {\n let vertices;\n if (su >= sv && sv >= sw) {\n vertices = T[0];\n } else if (su >= sw && sw >= sv) {\n vertices = T[1];\n } else if (sw >= su && su >= sv) {\n vertices = T[2];\n } else if (sv >= su && su >= sw) {\n vertices = T[3];\n } else if (sv >= sw && sw >= su) {\n vertices = T[4];\n } else if (sw >= sv && sv >= su) {\n vertices = T[5];\n }\n const [P0, P1, P2, P3] = vertices;\n const coords = P[0];\n coords[0] = su;\n coords[1] = sv;\n coords[2] = sw;\n const tmp = P[1];\n const diffX = maxX - minX;\n const diffY = maxY - minY;\n const diffZ = maxZ - minZ;\n tmp[0] = diffX * P0[0] + minX;\n tmp[1] = diffY * P0[1] + minY;\n tmp[2] = diffZ * P0[2] + minZ;\n sample(data, size, tmp[0], tmp[1], tmp[2], C[0]);\n tmp[0] = diffX * P1[0] + minX;\n tmp[1] = diffY * P1[1] + minY;\n tmp[2] = diffZ * P1[2] + minZ;\n sample(data, size, tmp[0], tmp[1], tmp[2], C[1]);\n tmp[0] = diffX * P2[0] + minX;\n tmp[1] = diffY * P2[1] + minY;\n tmp[2] = diffZ * P2[2] + minZ;\n sample(data, size, tmp[0], tmp[1], tmp[2], C[2]);\n tmp[0] = diffX * P3[0] + minX;\n tmp[1] = diffY * P3[1] + minY;\n tmp[2] = diffZ * P3[2] + minZ;\n sample(data, size, tmp[0], tmp[1], tmp[2], C[3]);\n const V0 = calculateTetrahedronVolume(P1, P2, P3, coords) * 6;\n const V1 = calculateTetrahedronVolume(P0, P2, P3, coords) * 6;\n const V2 = calculateTetrahedronVolume(P0, P1, P3, coords) * 6;\n const V3 = calculateTetrahedronVolume(P0, P1, P2, coords) * 6;\n C[0][0] *= V0;\n C[0][1] *= V0;\n C[0][2] *= V0;\n C[1][0] *= V1;\n C[1][1] *= V1;\n C[1][2] *= V1;\n C[2][0] *= V2;\n C[2][1] *= V2;\n C[2][2] *= V2;\n C[3][0] *= V3;\n C[3][1] *= V3;\n C[3][2] *= V3;\n color2[0] = C[0][0] + C[1][0] + C[2][0] + C[3][0];\n color2[1] = C[0][1] + C[1][1] + C[2][1] + C[3][1];\n color2[2] = C[0][2] + C[1][2] + C[2][2] + C[3][2];\n }\n}\nvar TetrahedralUpscaler = class {\n /**\n * Expands the given data to the target size.\n *\n * @param {TypedArray} data - The input RGBA data. Assumed to be cubic.\n * @param {Number} size - The target size.\n * @return {TypedArray} The new data.\n */\n static expand(data, size) {\n const originalSize = Math.cbrt(data.length / 4);\n const rgb = new Float32Array(3);\n const array = new data.constructor(size ** 3 * 4);\n const maxValue = data instanceof Uint8Array ? 255 : 1;\n const sizeSq = size ** 2;\n const s = 1 / (size - 1);\n for (let z = 0; z < size; ++z) {\n for (let y = 0; y < size; ++y) {\n for (let x = 0; x < size; ++x) {\n const u = x * s;\n const v3 = y * s;\n const w = z * s;\n const i4 = Math.round(x + y * size + z * sizeSq) * 4;\n tetrahedralSample(data, originalSize, u, v3, w, rgb);\n array[i4 + 0] = rgb[0];\n array[i4 + 1] = rgb[1];\n array[i4 + 2] = rgb[2];\n array[i4 + 3] = maxValue;\n }\n }\n }\n return array;\n }\n};\n\n// src/textures/smaa/SMAAAreaImageData.js\nvar area = [\n new Float32Array(2),\n new Float32Array(2)\n];\nvar ORTHOGONAL_SIZE = 16;\nvar DIAGONAL_SIZE = 20;\nvar DIAGONAL_SAMPLES = 30;\nvar SMOOTH_MAX_DISTANCE = 32;\nvar orthogonalSubsamplingOffsets = new Float32Array([\n 0,\n -0.25,\n 0.25,\n -0.125,\n 0.125,\n -0.375,\n 0.375\n]);\nvar diagonalSubsamplingOffsets = [\n new Float32Array([0, 0]),\n new Float32Array([0.25, -0.25]),\n new Float32Array([-0.25, 0.25]),\n new Float32Array([0.125, -0.125]),\n new Float32Array([-0.125, 0.125])\n];\nvar orthogonalEdges = [\n new Uint8Array([0, 0]),\n new Uint8Array([3, 0]),\n new Uint8Array([0, 3]),\n new Uint8Array([3, 3]),\n new Uint8Array([1, 0]),\n new Uint8Array([4, 0]),\n new Uint8Array([1, 3]),\n new Uint8Array([4, 3]),\n new Uint8Array([0, 1]),\n new Uint8Array([3, 1]),\n new Uint8Array([0, 4]),\n new Uint8Array([3, 4]),\n new Uint8Array([1, 1]),\n new Uint8Array([4, 1]),\n new Uint8Array([1, 4]),\n new Uint8Array([4, 4])\n];\nvar diagonalEdges = [\n new Uint8Array([0, 0]),\n new Uint8Array([1, 0]),\n new Uint8Array([0, 2]),\n new Uint8Array([1, 2]),\n new Uint8Array([2, 0]),\n new Uint8Array([3, 0]),\n new Uint8Array([2, 2]),\n new Uint8Array([3, 2]),\n new Uint8Array([0, 1]),\n new Uint8Array([1, 1]),\n new Uint8Array([0, 3]),\n new Uint8Array([1, 3]),\n new Uint8Array([2, 1]),\n new Uint8Array([3, 1]),\n new Uint8Array([2, 3]),\n new Uint8Array([3, 3])\n];\nfunction lerp(a, b, p) {\n return a + (b - a) * p;\n}\nfunction saturate(a) {\n return Math.min(Math.max(a, 0), 1);\n}\nfunction smoothArea(d) {\n const a1 = area[0];\n const a2 = area[1];\n const b1X = Math.sqrt(a1[0] * 2) * 0.5;\n const b1Y = Math.sqrt(a1[1] * 2) * 0.5;\n const b2X = Math.sqrt(a2[0] * 2) * 0.5;\n const b2Y = Math.sqrt(a2[1] * 2) * 0.5;\n const p = saturate(d / SMOOTH_MAX_DISTANCE);\n a1[0] = lerp(b1X, a1[0], p);\n a1[1] = lerp(b1Y, a1[1], p);\n a2[0] = lerp(b2X, a2[0], p);\n a2[1] = lerp(b2Y, a2[1], p);\n}\nfunction getOrthArea(p1X, p1Y, p2X, p2Y, x, result) {\n const dX = p2X - p1X;\n const dY = p2Y - p1Y;\n const x1 = x;\n const x2 = x + 1;\n const y1 = p1Y + dY * (x1 - p1X) / dX;\n const y2 = p1Y + dY * (x2 - p1X) / dX;\n if (x1 >= p1X && x1 < p2X || x2 > p1X && x2 <= p2X) {\n if (Math.sign(y1) === Math.sign(y2) || Math.abs(y1) < 1e-4 || Math.abs(y2) < 1e-4) {\n const a = (y1 + y2) / 2;\n if (a < 0) {\n result[0] = Math.abs(a);\n result[1] = 0;\n } else {\n result[0] = 0;\n result[1] = Math.abs(a);\n }\n } else {\n const t = -p1Y * dX / dY + p1X;\n const tInt = Math.trunc(t);\n const a1 = t > p1X ? y1 * (t - tInt) / 2 : 0;\n const a2 = t < p2X ? y2 * (1 - (t - tInt)) / 2 : 0;\n const a = Math.abs(a1) > Math.abs(a2) ? a1 : -a2;\n if (a < 0) {\n result[0] = Math.abs(a1);\n result[1] = Math.abs(a2);\n } else {\n result[0] = Math.abs(a2);\n result[1] = Math.abs(a1);\n }\n }\n } else {\n result[0] = 0;\n result[1] = 0;\n }\n return result;\n}\nfunction getOrthAreaForPattern(pattern, left, right, offset, result) {\n const a1 = area[0];\n const a2 = area[1];\n const o1 = 0.5 + offset;\n const o2 = 0.5 + offset - 1;\n const d = left + right + 1;\n switch (pattern) {\n case 0: {\n result[0] = 0;\n result[1] = 0;\n break;\n }\n case 1: {\n if (left <= right) {\n getOrthArea(0, o2, d / 2, 0, left, result);\n } else {\n result[0] = 0;\n result[1] = 0;\n }\n break;\n }\n case 2: {\n if (left >= right) {\n getOrthArea(d / 2, 0, d, o2, left, result);\n } else {\n result[0] = 0;\n result[1] = 0;\n }\n break;\n }\n case 3: {\n getOrthArea(0, o2, d / 2, 0, left, a1);\n getOrthArea(d / 2, 0, d, o2, left, a2);\n smoothArea(d, area);\n result[0] = a1[0] + a2[0];\n result[1] = a1[1] + a2[1];\n break;\n }\n case 4: {\n if (left <= right) {\n getOrthArea(0, o1, d / 2, 0, left, result);\n } else {\n result[0] = 0;\n result[1] = 0;\n }\n break;\n }\n case 5: {\n result[0] = 0;\n result[1] = 0;\n break;\n }\n case 6: {\n if (Math.abs(offset) > 0) {\n getOrthArea(0, o1, d, o2, left, a1);\n getOrthArea(0, o1, d / 2, 0, left, a2);\n getOrthArea(d / 2, 0, d, o2, left, result);\n a2[0] = a2[0] + result[0];\n a2[1] = a2[1] + result[1];\n result[0] = (a1[0] + a2[0]) / 2;\n result[1] = (a1[1] + a2[1]) / 2;\n } else {\n getOrthArea(0, o1, d, o2, left, result);\n }\n break;\n }\n case 7: {\n getOrthArea(0, o1, d, o2, left, result);\n break;\n }\n case 8: {\n if (left >= right) {\n getOrthArea(d / 2, 0, d, o1, left, result);\n } else {\n result[0] = 0;\n result[1] = 0;\n }\n break;\n }\n case 9: {\n if (Math.abs(offset) > 0) {\n getOrthArea(0, o2, d, o1, left, a1);\n getOrthArea(0, o2, d / 2, 0, left, a2);\n getOrthArea(d / 2, 0, d, o1, left, result);\n a2[0] = a2[0] + result[0];\n a2[1] = a2[1] + result[1];\n result[0] = (a1[0] + a2[0]) / 2;\n result[1] = (a1[1] + a2[1]) / 2;\n } else {\n getOrthArea(0, o2, d, o1, left, result);\n }\n break;\n }\n case 10: {\n result[0] = 0;\n result[1] = 0;\n break;\n }\n case 11: {\n getOrthArea(0, o2, d, o1, left, result);\n break;\n }\n case 12: {\n getOrthArea(0, o1, d / 2, 0, left, a1);\n getOrthArea(d / 2, 0, d, o1, left, a2);\n smoothArea(d, area);\n result[0] = a1[0] + a2[0];\n result[1] = a1[1] + a2[1];\n break;\n }\n case 13: {\n getOrthArea(0, o2, d, o1, left, result);\n break;\n }\n case 14: {\n getOrthArea(0, o1, d, o2, left, result);\n break;\n }\n case 15: {\n result[0] = 0;\n result[1] = 0;\n break;\n }\n }\n return result;\n}\nfunction isInsideArea(a1X, a1Y, a2X, a2Y, x, y) {\n let result = a1X === a2X && a1Y === a2Y;\n if (!result) {\n const xm = (a1X + a2X) / 2;\n const ym = (a1Y + a2Y) / 2;\n const a = a2Y - a1Y;\n const b = a1X - a2X;\n const c2 = a * (x - xm) + b * (y - ym);\n result = c2 > 0;\n }\n return result;\n}\nfunction getDiagAreaForPixel(a1X, a1Y, a2X, a2Y, pX, pY) {\n let n = 0;\n for (let y = 0; y < DIAGONAL_SAMPLES; ++y) {\n for (let x = 0; x < DIAGONAL_SAMPLES; ++x) {\n const offsetX = x / (DIAGONAL_SAMPLES - 1);\n const offsetY = y / (DIAGONAL_SAMPLES - 1);\n if (isInsideArea(a1X, a1Y, a2X, a2Y, pX + offsetX, pY + offsetY)) {\n ++n;\n }\n }\n }\n return n / (DIAGONAL_SAMPLES * DIAGONAL_SAMPLES);\n}\nfunction getDiagArea(pattern, a1X, a1Y, a2X, a2Y, left, offset, result) {\n const e = diagonalEdges[pattern];\n const e1 = e[0];\n const e2 = e[1];\n if (e1 > 0) {\n a1X += offset[0];\n a1Y += offset[1];\n }\n if (e2 > 0) {\n a2X += offset[0];\n a2Y += offset[1];\n }\n result[0] = 1 - getDiagAreaForPixel(a1X, a1Y, a2X, a2Y, 1 + left, 0 + left);\n result[1] = getDiagAreaForPixel(a1X, a1Y, a2X, a2Y, 1 + left, 1 + left);\n return result;\n}\nfunction getDiagAreaForPattern(pattern, left, right, offset, result) {\n const a1 = area[0];\n const a2 = area[1];\n const d = left + right + 1;\n switch (pattern) {\n case 0: {\n getDiagArea(pattern, 1, 1, 1 + d, 1 + d, left, offset, a1);\n getDiagArea(pattern, 1, 0, 1 + d, 0 + d, left, offset, a2);\n result[0] = (a1[0] + a2[0]) / 2;\n result[1] = (a1[1] + a2[1]) / 2;\n break;\n }\n case 1: {\n getDiagArea(pattern, 1, 0, 0 + d, 0 + d, left, offset, a1);\n getDiagArea(pattern, 1, 0, 1 + d, 0 + d, left, offset, a2);\n result[0] = (a1[0] + a2[0]) / 2;\n result[1] = (a1[1] + a2[1]) / 2;\n break;\n }\n case 2: {\n getDiagArea(pattern, 0, 0, 1 + d, 0 + d, left, offset, a1);\n getDiagArea(pattern, 1, 0, 1 + d, 0 + d, left, offset, a2);\n result[0] = (a1[0] + a2[0]) / 2;\n result[1] = (a1[1] + a2[1]) / 2;\n break;\n }\n case 3: {\n getDiagArea(pattern, 1, 0, 1 + d, 0 + d, left, offset, result);\n break;\n }\n case 4: {\n getDiagArea(pattern, 1, 1, 0 + d, 0 + d, left, offset, a1);\n getDiagArea(pattern, 1, 1, 1 + d, 0 + d, left, offset, a2);\n result[0] = (a1[0] + a2[0]) / 2;\n result[1] = (a1[1] + a2[1]) / 2;\n break;\n }\n case 5: {\n getDiagArea(pattern, 1, 1, 0 + d, 0 + d, left, offset, a1);\n getDiagArea(pattern, 1, 0, 1 + d, 0 + d, left, offset, a2);\n result[0] = (a1[0] + a2[0]) / 2;\n result[1] = (a1[1] + a2[1]) / 2;\n break;\n }\n case 6: {\n getDiagArea(pattern, 1, 1, 1 + d, 0 + d, left, offset, result);\n break;\n }\n case 7: {\n getDiagArea(pattern, 1, 1, 1 + d, 0 + d, left, offset, a1);\n getDiagArea(pattern, 1, 0, 1 + d, 0 + d, left, offset, a2);\n result[0] = (a1[0] + a2[0]) / 2;\n result[1] = (a1[1] + a2[1]) / 2;\n break;\n }\n case 8: {\n getDiagArea(pattern, 0, 0, 1 + d, 1 + d, left, offset, a1);\n getDiagArea(pattern, 1, 0, 1 + d, 1 + d, left, offset, a2);\n result[0] = (a1[0] + a2[0]) / 2;\n result[1] = (a1[1] + a2[1]) / 2;\n break;\n }\n case 9: {\n getDiagArea(pattern, 1, 0, 1 + d, 1 + d, left, offset, result);\n getDiagArea(pattern, 1, 0, 1 + d, 1 + d, left, offset, result);\n break;\n }\n case 10: {\n getDiagArea(pattern, 0, 0, 1 + d, 1 + d, left, offset, a1);\n getDiagArea(pattern, 1, 0, 1 + d, 0 + d, left, offset, a2);\n result[0] = (a1[0] + a2[0]) / 2;\n result[1] = (a1[1] + a2[1]) / 2;\n break;\n }\n case 11: {\n getDiagArea(pattern, 1, 0, 1 + d, 1 + d, left, offset, a1);\n getDiagArea(pattern, 1, 0, 1 + d, 0 + d, left, offset, a2);\n result[0] = (a1[0] + a2[0]) / 2;\n result[1] = (a1[1] + a2[1]) / 2;\n break;\n }\n case 12: {\n getDiagArea(pattern, 1, 1, 1 + d, 1 + d, left, offset, result);\n break;\n }\n case 13: {\n getDiagArea(pattern, 1, 1, 1 + d, 1 + d, left, offset, a1);\n getDiagArea(pattern, 1, 0, 1 + d, 1 + d, left, offset, a2);\n result[0] = (a1[0] + a2[0]) / 2;\n result[1] = (a1[1] + a2[1]) / 2;\n break;\n }\n case 14: {\n getDiagArea(pattern, 1, 1, 1 + d, 1 + d, left, offset, a1);\n getDiagArea(pattern, 1, 1, 1 + d, 0 + d, left, offset, a2);\n result[0] = (a1[0] + a2[0]) / 2;\n result[1] = (a1[1] + a2[1]) / 2;\n break;\n }\n case 15: {\n getDiagArea(pattern, 1, 1, 1 + d, 1 + d, left, offset, a1);\n getDiagArea(pattern, 1, 0, 1 + d, 0 + d, left, offset, a2);\n result[0] = (a1[0] + a2[0]) / 2;\n result[1] = (a1[1] + a2[1]) / 2;\n break;\n }\n }\n return result;\n}\nfunction generatePatterns(patterns, offset, orthogonal) {\n const result = new Float32Array(2);\n for (let i = 0, l = patterns.length; i < l; ++i) {\n const pattern = patterns[i];\n const data = pattern.data;\n const size = pattern.width;\n for (let y = 0; y < size; ++y) {\n for (let x = 0; x < size; ++x) {\n if (orthogonal) {\n getOrthAreaForPattern(i, x, y, offset, result);\n } else {\n getDiagAreaForPattern(i, x, y, offset, result);\n }\n const c2 = (y * size + x) * 2;\n data[c2] = result[0] * 255;\n data[c2 + 1] = result[1] * 255;\n }\n }\n }\n}\nfunction assemble(baseX, baseY, patterns, edges2, size, orthogonal, target) {\n const dstData = target.data;\n const dstWidth = target.width;\n for (let i = 0, l = patterns.length; i < l; ++i) {\n const edge = edges2[i];\n const pattern = patterns[i];\n const srcData = pattern.data;\n const srcWidth = pattern.width;\n for (let y = 0; y < size; ++y) {\n for (let x = 0; x < size; ++x) {\n const pX = edge[0] * size + baseX + x;\n const pY = edge[1] * size + baseY + y;\n const c2 = (pY * dstWidth + pX) * 4;\n const d = orthogonal ? (y * y * srcWidth + x * x) * 2 : (y * srcWidth + x) * 2;\n dstData[c2] = srcData[d];\n dstData[c2 + 1] = srcData[d + 1];\n dstData[c2 + 2] = 0;\n dstData[c2 + 3] = 255;\n }\n }\n }\n}\nvar SMAAAreaImageData = class {\n /**\n * Creates a new area image.\n *\n * @return {RawImageData} The generated image data.\n */\n static generate() {\n const width = 2 * 5 * ORTHOGONAL_SIZE;\n const height = orthogonalSubsamplingOffsets.length * 5 * ORTHOGONAL_SIZE;\n const data = new Uint8ClampedArray(width * height * 4);\n const result = new RawImageData(width, height, data);\n const orthPatternSize = Math.pow(ORTHOGONAL_SIZE - 1, 2) + 1;\n const diagPatternSize = DIAGONAL_SIZE;\n const orthogonalPatterns = [];\n const diagonalPatterns = [];\n for (let i = 3, l = data.length; i < l; i += 4) {\n data[i] = 255;\n }\n for (let i = 0; i < 16; ++i) {\n orthogonalPatterns.push(new RawImageData(\n orthPatternSize,\n orthPatternSize,\n new Uint8ClampedArray(orthPatternSize * orthPatternSize * 2),\n 2\n ));\n diagonalPatterns.push(new RawImageData(\n diagPatternSize,\n diagPatternSize,\n new Uint8ClampedArray(diagPatternSize * diagPatternSize * 2),\n 2\n ));\n }\n for (let i = 0, l = orthogonalSubsamplingOffsets.length; i < l; ++i) {\n generatePatterns(orthogonalPatterns, orthogonalSubsamplingOffsets[i], true);\n assemble(\n 0,\n 5 * ORTHOGONAL_SIZE * i,\n orthogonalPatterns,\n orthogonalEdges,\n ORTHOGONAL_SIZE,\n true,\n result\n );\n }\n for (let i = 0, l = diagonalSubsamplingOffsets.length; i < l; ++i) {\n generatePatterns(diagonalPatterns, diagonalSubsamplingOffsets[i], false);\n assemble(\n 5 * ORTHOGONAL_SIZE,\n 4 * DIAGONAL_SIZE * i,\n diagonalPatterns,\n diagonalEdges,\n DIAGONAL_SIZE,\n false,\n result\n );\n }\n return result;\n }\n};\n\n// src/textures/smaa/SMAAImageGenerator.js\nimport { LoadingManager } from \"three\";\n\n// tmp/smaa/worker.txt\nvar worker_default2 = '\"use strict\";(()=>{function q(t,a,s){let e=document.createElement(\"canvas\"),n=e.getContext(\"2d\");if(e.width=t,e.height=a,s instanceof Image)n.drawImage(s,0,0);else{let r=n.createImageData(t,a);r.data.set(s),n.putImageData(r,0,0)}return e}var F=class t{constructor(a=0,s=0,e=null){this.width=a,this.height=s,this.data=e}toCanvas(){return typeof document==\"undefined\"?null:q(this.width,this.height,this.data)}static from(a){let{width:s,height:e}=a,n;if(a instanceof Image){let r=q(s,e,a);r!==null&&(n=r.getContext(\"2d\").getImageData(0,0,s,e).data)}else n=a.data;return new t(s,e,n)}};var M=[new Float32Array(2),new Float32Array(2)],D=16,W=20,I=30,j=32,v=new Float32Array([0,-.25,.25,-.125,.125,-.375,.375]),N=[new Float32Array([0,0]),new Float32Array([.25,-.25]),new Float32Array([-.25,.25]),new Float32Array([.125,-.125]),new Float32Array([-.125,.125])],z=[new Uint8Array([0,0]),new Uint8Array([3,0]),new Uint8Array([0,3]),new Uint8Array([3,3]),new Uint8Array([1,0]),new Uint8Array([4,0]),new Uint8Array([1,3]),new Uint8Array([4,3]),new Uint8Array([0,1]),new Uint8Array([3,1]),new Uint8Array([0,4]),new Uint8Array([3,4]),new Uint8Array([1,1]),new Uint8Array([4,1]),new Uint8Array([1,4]),new Uint8Array([4,4])],p=[new Uint8Array([0,0]),new Uint8Array([1,0]),new Uint8Array([0,2]),new Uint8Array([1,2]),new Uint8Array([2,0]),new Uint8Array([3,0]),new Uint8Array([2,2]),new Uint8Array([3,2]),new Uint8Array([0,1]),new Uint8Array([1,1]),new Uint8Array([0,3]),new Uint8Array([1,3]),new Uint8Array([2,1]),new Uint8Array([3,1]),new Uint8Array([2,3]),new Uint8Array([3,3])];function C(t,a,s){return t+(a-t)*s}function B(t){return Math.min(Math.max(t,0),1)}function _(t){let a=M[0],s=M[1],e=Math.sqrt(a[0]*2)*.5,n=Math.sqrt(a[1]*2)*.5,r=Math.sqrt(s[0]*2)*.5,o=Math.sqrt(s[1]*2)*.5,c=B(t/j);a[0]=C(e,a[0],c),a[1]=C(n,a[1],c),s[0]=C(r,s[0],c),s[1]=C(o,s[1],c)}function d(t,a,s,e,n,r){let o=s-t,c=e-a,h=n,i=n+1,w=a+c*(h-t)/o,b=a+c*(i-t)/o;if(h>=t&&ht&&i<=s)if(Math.sign(w)===Math.sign(b)||Math.abs(w)<1e-4||Math.abs(b)<1e-4){let g=(w+b)/2;g<0?(r[0]=Math.abs(g),r[1]=0):(r[0]=0,r[1]=Math.abs(g))}else{let g=-a*o/c+t,k=Math.trunc(g),m=g>t?w*(g-k)/2:0,U=gMath.abs(U)?m:-U)<0?(r[0]=Math.abs(m),r[1]=Math.abs(U)):(r[0]=Math.abs(U),r[1]=Math.abs(m))}else r[0]=0,r[1]=0;return r}function J(t,a,s,e,n){let r=M[0],o=M[1],c=.5+e,h=.5+e-1,i=a+s+1;switch(t){case 0:{n[0]=0,n[1]=0;break}case 1:{a<=s?d(0,h,i/2,0,a,n):(n[0]=0,n[1]=0);break}case 2:{a>=s?d(i/2,0,i,h,a,n):(n[0]=0,n[1]=0);break}case 3:{d(0,h,i/2,0,a,r),d(i/2,0,i,h,a,o),_(i,M),n[0]=r[0]+o[0],n[1]=r[1]+o[1];break}case 4:{a<=s?d(0,c,i/2,0,a,n):(n[0]=0,n[1]=0);break}case 5:{n[0]=0,n[1]=0;break}case 6:{Math.abs(e)>0?(d(0,c,i,h,a,r),d(0,c,i/2,0,a,o),d(i/2,0,i,h,a,n),o[0]=o[0]+n[0],o[1]=o[1]+n[1],n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2):d(0,c,i,h,a,n);break}case 7:{d(0,c,i,h,a,n);break}case 8:{a>=s?d(i/2,0,i,c,a,n):(n[0]=0,n[1]=0);break}case 9:{Math.abs(e)>0?(d(0,h,i,c,a,r),d(0,h,i/2,0,a,o),d(i/2,0,i,c,a,n),o[0]=o[0]+n[0],o[1]=o[1]+n[1],n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2):d(0,h,i,c,a,n);break}case 10:{n[0]=0,n[1]=0;break}case 11:{d(0,h,i,c,a,n);break}case 12:{d(0,c,i/2,0,a,r),d(i/2,0,i,c,a,o),_(i,M),n[0]=r[0]+o[0],n[1]=r[1]+o[1];break}case 13:{d(0,h,i,c,a,n);break}case 14:{d(0,c,i,h,a,n);break}case 15:{n[0]=0,n[1]=0;break}}return n}function K(t,a,s,e,n,r){let o=t===s&&a===e;if(!o){let c=(t+s)/2,h=(a+e)/2,i=e-a,w=t-s;o=i*(n-c)+w*(r-h)>0}return o}function G(t,a,s,e,n,r){let o=0;for(let c=0;c0&&(a+=o[0],s+=o[1]),w>0&&(e+=o[0],n+=o[1]),c[0]=1-G(a,s,e,n,1+r,0+r),c[1]=G(a,s,e,n,1+r,1+r),c}function Q(t,a,s,e,n){let r=M[0],o=M[1],c=a+s+1;switch(t){case 0:{A(t,1,1,1+c,1+c,a,e,r),A(t,1,0,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 1:{A(t,1,0,0+c,0+c,a,e,r),A(t,1,0,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 2:{A(t,0,0,1+c,0+c,a,e,r),A(t,1,0,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 3:{A(t,1,0,1+c,0+c,a,e,n);break}case 4:{A(t,1,1,0+c,0+c,a,e,r),A(t,1,1,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 5:{A(t,1,1,0+c,0+c,a,e,r),A(t,1,0,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 6:{A(t,1,1,1+c,0+c,a,e,n);break}case 7:{A(t,1,1,1+c,0+c,a,e,r),A(t,1,0,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 8:{A(t,0,0,1+c,1+c,a,e,r),A(t,1,0,1+c,1+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 9:{A(t,1,0,1+c,1+c,a,e,n),A(t,1,0,1+c,1+c,a,e,n);break}case 10:{A(t,0,0,1+c,1+c,a,e,r),A(t,1,0,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 11:{A(t,1,0,1+c,1+c,a,e,r),A(t,1,0,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 12:{A(t,1,1,1+c,1+c,a,e,n);break}case 13:{A(t,1,1,1+c,1+c,a,e,r),A(t,1,0,1+c,1+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 14:{A(t,1,1,1+c,1+c,a,e,r),A(t,1,1,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 15:{A(t,1,1,1+c,1+c,a,e,r),A(t,1,0,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}}return n}function R(t,a,s){let e=new Float32Array(2);for(let n=0,r=t.length;n{let a=S.generate(),s=E.generate();postMessage({areaImageData:a,searchImageData:s},[a.data.buffer,s.data.buffer]),close()});})();\\n';\n\n// src/textures/smaa/SMAAImageGenerator.js\nfunction generate(useCache = true) {\n const workerURL = URL.createObjectURL(new Blob([worker_default2], {\n type: \"text/javascript\"\n }));\n const worker = new Worker(workerURL);\n URL.revokeObjectURL(workerURL);\n return new Promise((resolve, reject) => {\n worker.addEventListener(\"error\", (event) => reject(event.error));\n worker.addEventListener(\"message\", (event) => {\n const searchImageData = RawImageData.from(event.data.searchImageData);\n const areaImageData = RawImageData.from(event.data.areaImageData);\n const urls = [\n searchImageData.toCanvas().toDataURL(\"image/png\", 1),\n areaImageData.toCanvas().toDataURL(\"image/png\", 1)\n ];\n if (useCache) {\n localStorage.setItem(\"smaa-search\", urls[0]);\n localStorage.setItem(\"smaa-area\", urls[1]);\n }\n resolve(urls);\n });\n worker.postMessage(null);\n });\n}\nvar SMAAImageGenerator = class {\n /**\n * Constructs a new SMAA image generator.\n */\n constructor() {\n this.disableCache = false;\n }\n /**\n * Enables or disables caching via localStorage.\n *\n * @param {Boolean} value - Whether the cache should be enabled.\n */\n setCacheEnabled(value) {\n this.disableCache = !value;\n }\n /**\n * Generates the SMAA data images.\n *\n * @example\n * SMAAImageGenerator.generate().then(([search, area]) => {\n * const smaaEffect = new SMAAEffect(search, area);\n * });\n * @return {Promise} A promise that returns the search image and area image as a pair.\n */\n generate() {\n const useCache = !this.disableCache && window.localStorage !== void 0;\n const cachedURLs = useCache ? [\n localStorage.getItem(\"smaa-search\"),\n localStorage.getItem(\"smaa-area\")\n ] : [null, null];\n const promise = cachedURLs[0] !== null && cachedURLs[1] !== null ? Promise.resolve(cachedURLs) : generate(useCache);\n return promise.then((urls) => {\n return new Promise((resolve, reject) => {\n const searchImage = new Image();\n const areaImage = new Image();\n const manager = new LoadingManager();\n manager.onLoad = () => resolve([searchImage, areaImage]);\n manager.onError = reject;\n searchImage.addEventListener(\"error\", (e) => manager.itemError(\"smaa-search\"));\n areaImage.addEventListener(\"error\", (e) => manager.itemError(\"smaa-area\"));\n searchImage.addEventListener(\"load\", () => manager.itemEnd(\"smaa-search\"));\n areaImage.addEventListener(\"load\", () => manager.itemEnd(\"smaa-area\"));\n manager.itemStart(\"smaa-search\");\n manager.itemStart(\"smaa-area\");\n searchImage.src = urls[0];\n areaImage.src = urls[1];\n });\n });\n }\n};\n\n// src/textures/smaa/SMAASearchImageData.js\nvar edges = /* @__PURE__ */ new Map([\n [bilinear(0, 0, 0, 0), new Float32Array([0, 0, 0, 0])],\n [bilinear(0, 0, 0, 1), new Float32Array([0, 0, 0, 1])],\n [bilinear(0, 0, 1, 0), new Float32Array([0, 0, 1, 0])],\n [bilinear(0, 0, 1, 1), new Float32Array([0, 0, 1, 1])],\n [bilinear(0, 1, 0, 0), new Float32Array([0, 1, 0, 0])],\n [bilinear(0, 1, 0, 1), new Float32Array([0, 1, 0, 1])],\n [bilinear(0, 1, 1, 0), new Float32Array([0, 1, 1, 0])],\n [bilinear(0, 1, 1, 1), new Float32Array([0, 1, 1, 1])],\n [bilinear(1, 0, 0, 0), new Float32Array([1, 0, 0, 0])],\n [bilinear(1, 0, 0, 1), new Float32Array([1, 0, 0, 1])],\n [bilinear(1, 0, 1, 0), new Float32Array([1, 0, 1, 0])],\n [bilinear(1, 0, 1, 1), new Float32Array([1, 0, 1, 1])],\n [bilinear(1, 1, 0, 0), new Float32Array([1, 1, 0, 0])],\n [bilinear(1, 1, 0, 1), new Float32Array([1, 1, 0, 1])],\n [bilinear(1, 1, 1, 0), new Float32Array([1, 1, 1, 0])],\n [bilinear(1, 1, 1, 1), new Float32Array([1, 1, 1, 1])]\n]);\nfunction lerp2(a, b, p) {\n return a + (b - a) * p;\n}\nfunction bilinear(e0, e1, e2, e3) {\n const a = lerp2(e0, e1, 1 - 0.25);\n const b = lerp2(e2, e3, 1 - 0.25);\n return lerp2(a, b, 1 - 0.125);\n}\nfunction deltaLeft(left, top) {\n let d = 0;\n if (top[3] === 1) {\n d += 1;\n }\n if (d === 1 && top[2] === 1 && left[1] !== 1 && left[3] !== 1) {\n d += 1;\n }\n return d;\n}\nfunction deltaRight(left, top) {\n let d = 0;\n if (top[3] === 1 && left[1] !== 1 && left[3] !== 1) {\n d += 1;\n }\n if (d === 1 && top[2] === 1 && left[0] !== 1 && left[2] !== 1) {\n d += 1;\n }\n return d;\n}\nvar SMAASearchImageData = class {\n /**\n * Creates a new search image.\n *\n * @return {RawImageData} The generated image data.\n */\n static generate() {\n const width = 66;\n const height = 33;\n const halfWidth = width / 2;\n const croppedWidth = 64;\n const croppedHeight = 16;\n const data = new Uint8ClampedArray(width * height);\n const croppedData = new Uint8ClampedArray(croppedWidth * croppedHeight * 4);\n for (let y = 0; y < height; ++y) {\n for (let x = 0; x < width; ++x) {\n const s = 0.03125 * x;\n const t = 0.03125 * y;\n if (edges.has(s) && edges.has(t)) {\n const e1 = edges.get(s);\n const e2 = edges.get(t);\n const i = y * width + x;\n data[i] = 127 * deltaLeft(e1, e2);\n data[i + halfWidth] = 127 * deltaRight(e1, e2);\n }\n }\n }\n for (let i = 0, y = height - croppedHeight; y < height; ++y) {\n for (let x = 0; x < croppedWidth; ++x, i += 4) {\n croppedData[i] = data[y * width + x];\n croppedData[i + 3] = 255;\n }\n }\n return new RawImageData(croppedWidth, croppedHeight, croppedData);\n }\n};\n\n// src/textures/NoiseTexture.js\nimport {\n DataTexture as DataTexture2,\n LuminanceFormat,\n RedFormat,\n RGFormat,\n RGBAFormat as RGBAFormat2,\n UnsignedByteType as UnsignedByteType14\n} from \"three\";\nfunction getNoise(size, format, type) {\n const channels = /* @__PURE__ */ new Map([\n [LuminanceFormat, 1],\n [RedFormat, 1],\n [RGFormat, 2],\n [RGBAFormat2, 4]\n ]);\n let data;\n if (!channels.has(format)) {\n console.error(\"Invalid noise texture format\");\n }\n if (type === UnsignedByteType14) {\n data = new Uint8Array(size * channels.get(format));\n for (let i = 0, l = data.length; i < l; ++i) {\n data[i] = Math.random() * 255 + 0.5;\n }\n } else {\n data = new Float32Array(size * channels.get(format));\n for (let i = 0, l = data.length; i < l; ++i) {\n data[i] = Math.random();\n }\n }\n return data;\n}\nvar NoiseTexture = class extends DataTexture2 {\n /**\n * Constructs a new noise texture.\n *\n * The texture format can be either `LuminanceFormat` or `RGBAFormat`. Additionally, the formats `RedFormat` and\n * `RGFormat` can be used in a WebGL 2 context.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n * @param {Number} [format=LuminanceFormat] - The texture format.\n * @param {Number} [type=UnsignedByteType] - The texture type.\n */\n constructor(width, height, format = LuminanceFormat, type = UnsignedByteType14) {\n super(getNoise(width * height, format, type), width, height, format, type);\n this.needsUpdate = true;\n }\n};\n\n// src/effects/glsl/glitch.frag\nvar glitch_default = \"uniform lowp sampler2D perturbationMap;uniform bool active;uniform float columns;uniform float random;uniform vec2 seeds;uniform vec2 distortion;void mainUv(inout vec2 uv){if(active){if(uv.ydistortion.x-columns*random){float sx=clamp(ceil(seeds.x),0.0,1.0);uv.y=sx*(1.0-(uv.y+distortion.y))+(1.0-sx)*distortion.y;}if(uv.xdistortion.y-columns*random){float sy=clamp(ceil(seeds.y),0.0,1.0);uv.x=sy*distortion.x+(1.0-sy)*(1.0-(uv.x+distortion.x));}vec2 normal=texture2D(perturbationMap,uv*random*random).rg;uv+=normal*seeds*(random*0.2);}}\";\n\n// src/effects/GlitchEffect.js\nvar textureTag = \"Glitch.Generated\";\nfunction randomFloat(low, high) {\n return low + Math.random() * (high - low);\n}\nvar GlitchEffect = class extends Effect {\n /**\n * Constructs a new glitch effect.\n *\n * TODO Change ratio to 0.15.\n * @param {Object} [options] - The options.\n * @param {Vector2} [options.chromaticAberrationOffset] - A chromatic aberration offset. If provided, the glitch effect will influence this offset.\n * @param {Vector2} [options.delay] - The minimum and maximum delay between glitch activations in seconds.\n * @param {Vector2} [options.duration] - The minimum and maximum duration of a glitch in seconds.\n * @param {Vector2} [options.strength] - The strength of weak and strong glitches.\n * @param {Texture} [options.perturbationMap] - A perturbation map. If none is provided, a noise texture will be created.\n * @param {Number} [options.dtSize=64] - The size of the generated noise map. Will be ignored if a perturbation map is provided.\n * @param {Number} [options.columns=0.05] - The scale of the blocky glitch columns.\n * @param {Number} [options.ratio=0.85] - The threshold for strong glitches.\n */\n constructor({\n chromaticAberrationOffset = null,\n delay = new Vector220(1.5, 3.5),\n duration = new Vector220(0.6, 1),\n strength = new Vector220(0.3, 1),\n columns = 0.05,\n ratio = 0.85,\n perturbationMap = null,\n dtSize = 64\n } = {}) {\n super(\"GlitchEffect\", glitch_default, {\n uniforms: /* @__PURE__ */ new Map([\n [\"perturbationMap\", new Uniform32(null)],\n [\"columns\", new Uniform32(columns)],\n [\"active\", new Uniform32(false)],\n [\"random\", new Uniform32(1)],\n [\"seeds\", new Uniform32(new Vector220())],\n [\"distortion\", new Uniform32(new Vector220())]\n ])\n });\n if (perturbationMap === null) {\n const map = new NoiseTexture(dtSize, dtSize, RGBAFormat3);\n map.name = textureTag;\n this.perturbationMap = map;\n } else {\n this.perturbationMap = perturbationMap;\n }\n this.time = 0;\n this.distortion = this.uniforms.get(\"distortion\").value;\n this.delay = delay;\n this.duration = duration;\n this.breakPoint = new Vector220(\n randomFloat(this.delay.x, this.delay.y),\n randomFloat(this.duration.x, this.duration.y)\n );\n this.strength = strength;\n this.mode = GlitchMode.SPORADIC;\n this.ratio = ratio;\n this.chromaticAberrationOffset = chromaticAberrationOffset;\n }\n /**\n * Random number seeds.\n *\n * @type {Vector2}\n * @private\n */\n get seeds() {\n return this.uniforms.get(\"seeds\").value;\n }\n /**\n * Indicates whether the glitch effect is currently active.\n *\n * @type {Boolean}\n */\n get active() {\n return this.uniforms.get(\"active\").value;\n }\n /**\n * Indicates whether the glitch effect is currently active.\n *\n * @deprecated Use active instead.\n * @return {Boolean} Whether the glitch effect is active.\n */\n isActive() {\n return this.active;\n }\n /**\n * The minimum delay between glitch activations.\n *\n * @type {Number}\n */\n get minDelay() {\n return this.delay.x;\n }\n set minDelay(value) {\n this.delay.x = value;\n }\n /**\n * Returns the minimum delay between glitch activations.\n *\n * @deprecated Use minDelay instead.\n * @return {Number} The minimum delay in seconds.\n */\n getMinDelay() {\n return this.delay.x;\n }\n /**\n * Sets the minimum delay between glitch activations.\n *\n * @deprecated Use minDelay instead.\n * @param {Number} value - The minimum delay in seconds.\n */\n setMinDelay(value) {\n this.delay.x = value;\n }\n /**\n * The maximum delay between glitch activations.\n *\n * @type {Number}\n */\n get maxDelay() {\n return this.delay.y;\n }\n set maxDelay(value) {\n this.delay.y = value;\n }\n /**\n * Returns the maximum delay between glitch activations.\n *\n * @deprecated Use maxDelay instead.\n * @return {Number} The maximum delay in seconds.\n */\n getMaxDelay() {\n return this.delay.y;\n }\n /**\n * Sets the maximum delay between glitch activations.\n *\n * @deprecated Use maxDelay instead.\n * @param {Number} value - The maximum delay in seconds.\n */\n setMaxDelay(value) {\n this.delay.y = value;\n }\n /**\n * The minimum duration of sporadic glitches.\n *\n * @type {Number}\n */\n get minDuration() {\n return this.duration.x;\n }\n set minDuration(value) {\n this.duration.x = value;\n }\n /**\n * Returns the minimum duration of sporadic glitches.\n *\n * @deprecated Use minDuration instead.\n * @return {Number} The minimum duration in seconds.\n */\n getMinDuration() {\n return this.duration.x;\n }\n /**\n * Sets the minimum duration of sporadic glitches.\n *\n * @deprecated Use minDuration instead.\n * @param {Number} value - The minimum duration in seconds.\n */\n setMinDuration(value) {\n this.duration.x = value;\n }\n /**\n * The maximum duration of sporadic glitches.\n *\n * @type {Number}\n */\n get maxDuration() {\n return this.duration.y;\n }\n set maxDuration(value) {\n this.duration.y = value;\n }\n /**\n * Returns the maximum duration of sporadic glitches.\n *\n * @deprecated Use maxDuration instead.\n * @return {Number} The maximum duration in seconds.\n */\n getMaxDuration() {\n return this.duration.y;\n }\n /**\n * Sets the maximum duration of sporadic glitches.\n *\n * @deprecated Use maxDuration instead.\n * @param {Number} value - The maximum duration in seconds.\n */\n setMaxDuration(value) {\n this.duration.y = value;\n }\n /**\n * The strength of weak glitches.\n *\n * @type {Number}\n */\n get minStrength() {\n return this.strength.x;\n }\n set minStrength(value) {\n this.strength.x = value;\n }\n /**\n * Returns the strength of weak glitches.\n *\n * @deprecated Use minStrength instead.\n * @return {Number} The strength.\n */\n getMinStrength() {\n return this.strength.x;\n }\n /**\n * Sets the strength of weak glitches.\n *\n * @deprecated Use minStrength instead.\n * @param {Number} value - The strength.\n */\n setMinStrength(value) {\n this.strength.x = value;\n }\n /**\n * The strength of strong glitches.\n *\n * @type {Number}\n */\n get maxStrength() {\n return this.strength.y;\n }\n set maxStrength(value) {\n this.strength.y = value;\n }\n /**\n * Returns the strength of strong glitches.\n *\n * @deprecated Use maxStrength instead.\n * @return {Number} The strength.\n */\n getMaxStrength() {\n return this.strength.y;\n }\n /**\n * Sets the strength of strong glitches.\n *\n * @deprecated Use maxStrength instead.\n * @param {Number} value - The strength.\n */\n setMaxStrength(value) {\n this.strength.y = value;\n }\n /**\n * Returns the current glitch mode.\n *\n * @deprecated Use mode instead.\n * @return {GlitchMode} The mode.\n */\n getMode() {\n return this.mode;\n }\n /**\n * Sets the current glitch mode.\n *\n * @deprecated Use mode instead.\n * @param {GlitchMode} value - The mode.\n */\n setMode(value) {\n this.mode = value;\n }\n /**\n * Returns the glitch ratio.\n *\n * @deprecated Use ratio instead.\n * @return {Number} The ratio.\n */\n getGlitchRatio() {\n return 1 - this.ratio;\n }\n /**\n * Sets the ratio of weak (0.0) and strong (1.0) glitches.\n *\n * @deprecated Use ratio instead.\n * @param {Number} value - The ratio. Range is [0.0, 1.0].\n */\n setGlitchRatio(value) {\n this.ratio = Math.min(Math.max(1 - value, 0), 1);\n }\n /**\n * The glitch column size.\n *\n * @type {Number}\n */\n get columns() {\n return this.uniforms.get(\"columns\").value;\n }\n set columns(value) {\n this.uniforms.get(\"columns\").value = value;\n }\n /**\n * Returns the glitch column size.\n *\n * @deprecated Use columns instead.\n * @return {Number} The glitch column size.\n */\n getGlitchColumns() {\n return this.columns;\n }\n /**\n * Sets the glitch column size.\n *\n * @deprecated Use columns instead.\n * @param {Number} value - The glitch column size.\n */\n setGlitchColumns(value) {\n this.columns = value;\n }\n /**\n * Returns the chromatic aberration offset.\n *\n * @deprecated Use chromaticAberrationOffset instead.\n * @return {Vector2} The offset.\n */\n getChromaticAberrationOffset() {\n return this.chromaticAberrationOffset;\n }\n /**\n * Sets the chromatic aberration offset.\n *\n * @deprecated Use chromaticAberrationOffset instead.\n * @param {Vector2} value - The offset.\n */\n setChromaticAberrationOffset(value) {\n this.chromaticAberrationOffset = value;\n }\n /**\n * The perturbation map.\n *\n * @type {Texture}\n */\n get perturbationMap() {\n return this.uniforms.get(\"perturbationMap\").value;\n }\n set perturbationMap(value) {\n const currentMap = this.perturbationMap;\n if (currentMap !== null && currentMap.name === textureTag) {\n currentMap.dispose();\n }\n value.minFilter = value.magFilter = NearestFilter6;\n value.wrapS = value.wrapT = RepeatWrapping;\n value.generateMipmaps = false;\n this.uniforms.get(\"perturbationMap\").value = value;\n }\n /**\n * Returns the current perturbation map.\n *\n * @deprecated Use perturbationMap instead.\n * @return {Texture} The current perturbation map.\n */\n getPerturbationMap() {\n return this.perturbationMap;\n }\n /**\n * Replaces the current perturbation map with the given one.\n *\n * The current map will be disposed if it was generated by this effect.\n *\n * @deprecated Use perturbationMap instead.\n * @param {Texture} value - The new perturbation map.\n */\n setPerturbationMap(value) {\n this.perturbationMap = value;\n }\n /**\n * Generates a perturbation map.\n *\n * @deprecated Use NoiseTexture instead.\n * @param {Number} [value=64] - The texture size.\n * @return {DataTexture} The perturbation map.\n */\n generatePerturbationMap(value = 64) {\n const map = new NoiseTexture(value, value, RGBAFormat3);\n map.name = textureTag;\n return map;\n }\n /**\n * Updates this effect.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n */\n update(renderer, inputBuffer, deltaTime) {\n const mode = this.mode;\n const breakPoint = this.breakPoint;\n const offset = this.chromaticAberrationOffset;\n const s = this.strength;\n let time = this.time;\n let active = false;\n let r = 0, a = 0;\n let trigger;\n if (mode !== GlitchMode.DISABLED) {\n if (mode === GlitchMode.SPORADIC) {\n time += deltaTime;\n trigger = time > breakPoint.x;\n if (time >= breakPoint.x + breakPoint.y) {\n breakPoint.set(\n randomFloat(this.delay.x, this.delay.y),\n randomFloat(this.duration.x, this.duration.y)\n );\n time = 0;\n }\n }\n r = Math.random();\n this.uniforms.get(\"random\").value = r;\n if (trigger && r > this.ratio || mode === GlitchMode.CONSTANT_WILD) {\n active = true;\n r *= s.y * 0.03;\n a = randomFloat(-Math.PI, Math.PI);\n this.seeds.set(randomFloat(-s.y, s.y), randomFloat(-s.y, s.y));\n this.distortion.set(randomFloat(0, 1), randomFloat(0, 1));\n } else if (trigger || mode === GlitchMode.CONSTANT_MILD) {\n active = true;\n r *= s.x * 0.03;\n a = randomFloat(-Math.PI, Math.PI);\n this.seeds.set(randomFloat(-s.x, s.x), randomFloat(-s.x, s.x));\n this.distortion.set(randomFloat(0, 1), randomFloat(0, 1));\n }\n this.time = time;\n }\n if (offset !== null) {\n if (active) {\n offset.set(Math.cos(a), Math.sin(a)).multiplyScalar(r);\n } else {\n offset.set(0, 0);\n }\n }\n this.uniforms.get(\"active\").value = active;\n }\n /**\n * Deletes generated resources.\n */\n dispose() {\n const map = this.perturbationMap;\n if (map !== null && map.name === textureTag) {\n map.dispose();\n }\n }\n};\n\n// src/effects/GodRaysEffect.js\nimport {\n BasicDepthPacking as BasicDepthPacking15,\n Color as Color5,\n DepthTexture as DepthTexture2,\n Matrix4 as Matrix42,\n Scene as Scene2,\n Uniform as Uniform33,\n Vector2 as Vector221,\n Vector3 as Vector32,\n WebGLRenderTarget as WebGLRenderTarget17\n} from \"three\";\n\n// src/effects/glsl/god-rays.frag\nvar god_rays_default = \"#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D map;\\n#else\\nuniform lowp sampler2D map;\\n#endif\\nvoid mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=texture2D(map,uv);}\";\n\n// src/effects/GodRaysEffect.js\nvar v = /* @__PURE__ */ new Vector32();\nvar m = /* @__PURE__ */ new Matrix42();\nvar GodRaysEffect = class extends Effect {\n /**\n * Constructs a new god rays effect.\n *\n * @param {Camera} [camera] - The main camera.\n * @param {Mesh|Points} [lightSource] - The light source. Must not write depth and has to be flagged as transparent.\n * @param {Object} [options] - The options.\n * @param {BlendFunction} [options.blendFunction=BlendFunction.SCREEN] - The blend function of this effect.\n * @param {Number} [options.samples=60.0] - The number of samples per pixel.\n * @param {Number} [options.density=0.96] - The density of the light rays.\n * @param {Number} [options.decay=0.9] - An illumination decay factor.\n * @param {Number} [options.weight=0.4] - A light ray weight factor.\n * @param {Number} [options.exposure=0.6] - A constant attenuation coefficient.\n * @param {Number} [options.clampMax=1.0] - An upper bound for the saturation of the overall effect.\n * @param {Number} [options.resolutionScale=0.5] - The resolution scale.\n * @param {Number} [options.resolutionX=Resolution.AUTO_SIZE] - The horizontal resolution.\n * @param {Number} [options.resolutionY=Resolution.AUTO_SIZE] - The vertical resolution.\n * @param {Number} [options.width=Resolution.AUTO_SIZE] - Deprecated. Use resolutionX instead.\n * @param {Number} [options.height=Resolution.AUTO_SIZE] - Deprecated. Use resolutionY instead.\n * @param {KernelSize} [options.kernelSize=KernelSize.SMALL] - The blur kernel size. Has no effect if blur is disabled.\n * @param {Boolean} [options.blur=true] - Whether the god rays should be blurred to reduce artifacts.\n */\n constructor(camera, lightSource, {\n blendFunction = BlendFunction.SCREEN,\n samples = 60,\n density = 0.96,\n decay = 0.9,\n weight = 0.4,\n exposure = 0.6,\n clampMax = 1,\n blur = true,\n kernelSize = KernelSize.SMALL,\n resolutionScale = 0.5,\n width = Resolution.AUTO_SIZE,\n height = Resolution.AUTO_SIZE,\n resolutionX = width,\n resolutionY = height\n } = {}) {\n super(\"GodRaysEffect\", god_rays_default, {\n blendFunction,\n attributes: EffectAttribute.DEPTH,\n uniforms: /* @__PURE__ */ new Map([\n [\"map\", new Uniform33(null)]\n ])\n });\n this.camera = camera;\n this._lightSource = lightSource;\n this.lightSource = lightSource;\n this.lightScene = new Scene2();\n this.screenPosition = new Vector221();\n this.renderTargetA = new WebGLRenderTarget17(1, 1, { depthBuffer: false });\n this.renderTargetA.texture.name = \"GodRays.Target.A\";\n this.renderTargetB = this.renderTargetA.clone();\n this.renderTargetB.texture.name = \"GodRays.Target.B\";\n this.uniforms.get(\"map\").value = this.renderTargetB.texture;\n this.renderTargetLight = new WebGLRenderTarget17(1, 1);\n this.renderTargetLight.texture.name = \"GodRays.Light\";\n this.renderTargetLight.depthTexture = new DepthTexture2();\n this.renderPassLight = new RenderPass(this.lightScene, camera);\n this.renderPassLight.clearPass.overrideClearColor = new Color5(0);\n this.clearPass = new ClearPass(true, false, false);\n this.clearPass.overrideClearColor = new Color5(0);\n this.blurPass = new KawaseBlurPass({ kernelSize });\n this.blurPass.enabled = blur;\n this.depthMaskPass = new ShaderPass(new DepthMaskMaterial());\n const depthMaskMaterial = this.depthMaskMaterial;\n depthMaskMaterial.depthBuffer1 = this.renderTargetLight.depthTexture;\n depthMaskMaterial.copyCameraSettings(camera);\n this.godRaysPass = new ShaderPass(new GodRaysMaterial(this.screenPosition));\n const godRaysMaterial = this.godRaysMaterial;\n godRaysMaterial.density = density;\n godRaysMaterial.decay = decay;\n godRaysMaterial.weight = weight;\n godRaysMaterial.exposure = exposure;\n godRaysMaterial.maxIntensity = clampMax;\n godRaysMaterial.samples = samples;\n const resolution = this.resolution = new Resolution(this, resolutionX, resolutionY, resolutionScale);\n resolution.addEventListener(\"change\", (e) => this.setSize(resolution.baseWidth, resolution.baseHeight));\n }\n set mainCamera(value) {\n this.camera = value;\n this.renderPassLight.mainCamera = value;\n this.depthMaskMaterial.copyCameraSettings(value);\n }\n /**\n * Sets the light source.\n *\n * @type {Mesh|Points}\n */\n get lightSource() {\n return this._lightSource;\n }\n set lightSource(value) {\n this._lightSource = value;\n if (value !== null) {\n value.material.depthWrite = false;\n value.material.transparent = true;\n }\n }\n /**\n * Returns the blur pass that reduces aliasing artifacts and makes the light softer.\n *\n * @deprecated Use blurPass instead.\n * @return {KawaseBlurPass} The blur pass.\n */\n getBlurPass() {\n return this.blurPass;\n }\n /**\n * A texture that contains the intermediate result of this effect.\n *\n * @type {Texture}\n */\n get texture() {\n return this.renderTargetB.texture;\n }\n /**\n * Returns the god rays texture.\n *\n * @deprecated Use texture instead.\n * @return {Texture} The texture.\n */\n getTexture() {\n return this.texture;\n }\n /**\n * The depth mask material.\n *\n * @type {DepthMaskMaterial}\n * @private\n */\n get depthMaskMaterial() {\n return this.depthMaskPass.fullscreenMaterial;\n }\n /**\n * The internal god rays material.\n *\n * @type {GodRaysMaterial}\n */\n get godRaysMaterial() {\n return this.godRaysPass.fullscreenMaterial;\n }\n /**\n * Returns the god rays material.\n *\n * @deprecated Use godRaysMaterial instead.\n * @return {GodRaysMaterial} The material.\n */\n getGodRaysMaterial() {\n return this.godRaysMaterial;\n }\n /**\n * Returns the resolution of this effect.\n *\n * @deprecated Use resolution instead.\n * @return {GodRaysMaterial} The material.\n */\n getResolution() {\n return this.resolution;\n }\n /**\n * The current width of the internal render targets.\n *\n * @type {Number}\n * @deprecated Use resolution.width instead.\n */\n get width() {\n return this.resolution.width;\n }\n set width(value) {\n this.resolution.preferredWidth = value;\n }\n /**\n * The current height of the internal render targets.\n *\n * @type {Number}\n * @deprecated Use resolution.height instead.\n */\n get height() {\n return this.resolution.height;\n }\n set height(value) {\n this.resolution.preferredHeight = value;\n }\n /**\n * Indicates whether dithering is enabled.\n *\n * @type {Boolean}\n * @deprecated\n */\n get dithering() {\n return this.godRaysMaterial.dithering;\n }\n set dithering(value) {\n const material = this.godRaysMaterial;\n material.dithering = value;\n material.needsUpdate = true;\n }\n /**\n * Indicates whether the god rays should be blurred to reduce artifacts.\n *\n * @type {Boolean}\n * @deprecated Use blurPass.enabled instead.\n */\n get blur() {\n return this.blurPass.enabled;\n }\n set blur(value) {\n this.blurPass.enabled = value;\n }\n /**\n * The blur kernel size.\n *\n * @type {KernelSize}\n * @deprecated Use blurPass.kernelSize instead.\n */\n get kernelSize() {\n return this.blurPass.kernelSize;\n }\n set kernelSize(value) {\n this.blurPass.kernelSize = value;\n }\n /**\n * Returns the current resolution scale.\n *\n * @return {Number} The resolution scale.\n * @deprecated Use resolution instead.\n */\n getResolutionScale() {\n return this.resolution.scale;\n }\n /**\n * Sets the resolution scale.\n *\n * @param {Number} scale - The new resolution scale.\n * @deprecated Use resolution instead.\n */\n setResolutionScale(scale) {\n this.resolution.scale = scale;\n }\n /**\n * The number of samples per pixel.\n *\n * @type {Number}\n * @deprecated Use godRaysMaterial.samples instead.\n */\n get samples() {\n return this.godRaysMaterial.samples;\n }\n /**\n * A higher sample count improves quality at the cost of performance.\n *\n * @type {Number}\n * @deprecated Use godRaysMaterial.samples instead.\n */\n set samples(value) {\n this.godRaysMaterial.samples = value;\n }\n /**\n * Sets the depth texture.\n *\n * @param {Texture} depthTexture - A depth texture.\n * @param {Number} [depthPacking=BasicDepthPacking] - The depth packing.\n */\n setDepthTexture(depthTexture, depthPacking = BasicDepthPacking15) {\n this.depthMaskPass.fullscreenMaterial.depthBuffer0 = depthTexture;\n this.depthMaskPass.fullscreenMaterial.depthPacking0 = depthPacking;\n }\n /**\n * Updates this effect.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n */\n update(renderer, inputBuffer, deltaTime) {\n const lightSource = this.lightSource;\n const parent = lightSource.parent;\n const matrixAutoUpdate = lightSource.matrixAutoUpdate;\n const renderTargetA = this.renderTargetA;\n const renderTargetLight = this.renderTargetLight;\n lightSource.material.depthWrite = true;\n lightSource.matrixAutoUpdate = false;\n lightSource.updateWorldMatrix(true, false);\n if (parent !== null) {\n if (!matrixAutoUpdate) {\n m.copy(lightSource.matrix);\n }\n lightSource.matrix.copy(lightSource.matrixWorld);\n }\n this.lightScene.add(lightSource);\n this.renderPassLight.render(renderer, renderTargetLight);\n this.clearPass.render(renderer, renderTargetA);\n this.depthMaskPass.render(renderer, renderTargetLight, renderTargetA);\n lightSource.material.depthWrite = false;\n lightSource.matrixAutoUpdate = matrixAutoUpdate;\n if (parent !== null) {\n if (!matrixAutoUpdate) {\n lightSource.matrix.copy(m);\n }\n parent.add(lightSource);\n }\n v.setFromMatrixPosition(lightSource.matrixWorld).project(this.camera);\n this.screenPosition.set(\n Math.min(Math.max((v.x + 1) * 0.5, -1), 2),\n Math.min(Math.max((v.y + 1) * 0.5, -1), 2)\n );\n if (this.blurPass.enabled) {\n this.blurPass.render(renderer, renderTargetA, renderTargetA);\n }\n this.godRaysPass.render(renderer, renderTargetA, this.renderTargetB);\n }\n /**\n * Updates the size of internal render targets.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n const resolution = this.resolution;\n resolution.setBaseSize(width, height);\n const w = resolution.width, h = resolution.height;\n this.renderTargetA.setSize(w, h);\n this.renderTargetB.setSize(w, h);\n this.renderTargetLight.setSize(w, h);\n this.blurPass.resolution.copy(resolution);\n }\n /**\n * Performs initialization tasks.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {Boolean} alpha - Whether the renderer uses the alpha channel or not.\n * @param {Number} frameBufferType - The type of the main frame buffers.\n */\n initialize(renderer, alpha, frameBufferType) {\n this.blurPass.initialize(renderer, alpha, frameBufferType);\n this.renderPassLight.initialize(renderer, alpha, frameBufferType);\n this.depthMaskPass.initialize(renderer, alpha, frameBufferType);\n this.godRaysPass.initialize(renderer, alpha, frameBufferType);\n if (frameBufferType !== void 0) {\n this.renderTargetA.texture.type = frameBufferType;\n this.renderTargetB.texture.type = frameBufferType;\n this.renderTargetLight.texture.type = frameBufferType;\n if (getOutputColorSpace(renderer) === SRGBColorSpace) {\n setTextureColorSpace(this.renderTargetA.texture, SRGBColorSpace);\n setTextureColorSpace(this.renderTargetB.texture, SRGBColorSpace);\n setTextureColorSpace(this.renderTargetLight.texture, SRGBColorSpace);\n }\n }\n }\n};\n\n// src/effects/GridEffect.js\nimport { Uniform as Uniform34, Vector2 as Vector222 } from \"three\";\n\n// src/effects/glsl/grid.frag\nvar grid_default = \"uniform vec2 scale;uniform float lineWidth;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){float grid=0.5-max(abs(mod(uv.x*scale.x,1.0)-0.5),abs(mod(uv.y*scale.y,1.0)-0.5));outputColor=vec4(vec3(smoothstep(0.0,lineWidth,grid)),inputColor.a);}\";\n\n// src/effects/GridEffect.js\nvar GridEffect = class extends Effect {\n /**\n * Constructs a new grid effect.\n *\n * @param {Object} [options] - The options.\n * @param {BlendFunction} [options.blendFunction=BlendFunction.OVERLAY] - The blend function of this effect.\n * @param {Number} [options.scale=1.0] - The scale of the grid pattern.\n * @param {Number} [options.lineWidth=0.0] - The line width of the grid pattern.\n */\n constructor({ blendFunction = BlendFunction.OVERLAY, scale = 1, lineWidth = 0 } = {}) {\n super(\"GridEffect\", grid_default, {\n blendFunction,\n uniforms: /* @__PURE__ */ new Map([\n [\"scale\", new Uniform34(new Vector222())],\n [\"lineWidth\", new Uniform34(lineWidth)]\n ])\n });\n this.resolution = new Vector222();\n this.s = 0;\n this.scale = scale;\n this.l = 0;\n this.lineWidth = lineWidth;\n }\n /**\n * The scale.\n *\n * @type {Number}\n */\n get scale() {\n return this.s;\n }\n set scale(value) {\n this.s = Math.max(value, 1e-6);\n this.setSize(this.resolution.width, this.resolution.height);\n }\n /**\n * Returns the current grid scale.\n *\n * @deprecated Use scale instead.\n * @return {Number} The grid scale.\n */\n getScale() {\n return this.scale;\n }\n /**\n * Sets the grid scale.\n *\n * @deprecated Use scale instead.\n * @param {Number} value - The new grid scale.\n */\n setScale(value) {\n this.scale = value;\n }\n /**\n * The line width.\n *\n * @type {Number}\n */\n get lineWidth() {\n return this.l;\n }\n set lineWidth(value) {\n this.l = value;\n this.setSize(this.resolution.width, this.resolution.height);\n }\n /**\n * Returns the current grid line width.\n *\n * @deprecated Use lineWidth instead.\n * @return {Number} The grid line width.\n */\n getLineWidth() {\n return this.lineWidth;\n }\n /**\n * Sets the grid line width.\n *\n * @deprecated Use lineWidth instead.\n * @param {Number} value - The new grid line width.\n */\n setLineWidth(value) {\n this.lineWidth = value;\n }\n /**\n * Updates the size of this pass.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n this.resolution.set(width, height);\n const aspect = width / height;\n const scale = this.scale * (height * 0.125);\n this.uniforms.get(\"scale\").value.set(aspect * scale, scale);\n this.uniforms.get(\"lineWidth\").value = scale / height + this.lineWidth;\n }\n};\n\n// src/effects/HueSaturationEffect.js\nimport { Uniform as Uniform35, Vector3 as Vector33 } from \"three\";\n\n// src/effects/glsl/hue-saturation.frag\nvar hue_saturation_default = \"uniform vec3 hue;uniform float saturation;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=vec3(dot(inputColor.rgb,hue.xyz),dot(inputColor.rgb,hue.zxy),dot(inputColor.rgb,hue.yzx));float average=(color.r+color.g+color.b)/3.0;vec3 diff=average-color;if(saturation>0.0){color+=diff*(1.0-1.0/(1.001-saturation));}else{color+=diff*-saturation;}outputColor=vec4(min(color,1.0),inputColor.a);}\";\n\n// src/effects/HueSaturationEffect.js\nvar HueSaturationEffect = class extends Effect {\n /**\n * Constructs a new hue/saturation effect.\n *\n * @param {Object} [options] - The options.\n * @param {BlendFunction} [options.blendFunction=BlendFunction.SRC] - The blend function of this effect.\n * @param {Number} [options.hue=0.0] - The hue in radians.\n * @param {Number} [options.saturation=0.0] - The saturation factor, ranging from -1 to 1, where 0 means no change.\n */\n constructor({ blendFunction = BlendFunction.SRC, hue = 0, saturation = 0 } = {}) {\n super(\"HueSaturationEffect\", hue_saturation_default, {\n blendFunction,\n uniforms: /* @__PURE__ */ new Map([\n [\"hue\", new Uniform35(new Vector33())],\n [\"saturation\", new Uniform35(saturation)]\n ])\n });\n this.hue = hue;\n }\n /**\n * The saturation.\n *\n * @type {Number}\n */\n get saturation() {\n return this.uniforms.get(\"saturation\").value;\n }\n set saturation(value) {\n this.uniforms.get(\"saturation\").value = value;\n }\n /**\n * Returns the saturation.\n *\n * @deprecated Use saturation instead.\n * @return {Number} The saturation.\n */\n getSaturation() {\n return this.saturation;\n }\n /**\n * Sets the saturation.\n *\n * @deprecated Use saturation instead.\n * @param {Number} value - The saturation.\n */\n setSaturation(value) {\n this.saturation = value;\n }\n /**\n * The hue.\n *\n * @type {Number}\n */\n get hue() {\n const hue = this.uniforms.get(\"hue\").value;\n return Math.acos((hue.x * 3 - 1) / 2);\n }\n set hue(value) {\n const s = Math.sin(value), c2 = Math.cos(value);\n this.uniforms.get(\"hue\").value.set(\n (2 * c2 + 1) / 3,\n (-Math.sqrt(3) * s - c2 + 1) / 3,\n (Math.sqrt(3) * s - c2 + 1) / 3\n );\n }\n /**\n * Returns the hue.\n *\n * @deprecated Use hue instead.\n * @return {Number} The hue in radians.\n */\n getHue() {\n return this.hue;\n }\n /**\n * Sets the hue.\n *\n * @deprecated Use hue instead.\n * @param {Number} value - The hue in radians.\n */\n setHue(value) {\n this.hue = value;\n }\n};\n\n// src/effects/LensDistortionEffect.js\nimport { Uniform as Uniform36, Vector2 as Vector223 } from \"three\";\n\n// src/effects/glsl/lens-distortion.frag\nvar lens_distortion_default = \"uniform vec2 distortion;uniform vec2 principalPoint;uniform vec2 focalLength;uniform float skew;float mask(const in vec2 uv){return float(uv.s>=0.0&&uv.s<=1.0&&uv.t>=0.0&&uv.t<=1.0);}void mainUv(inout vec2 uv){vec2 xn=2.0*(uv.st-0.5);vec3 xDistorted=vec3((1.0+distortion*dot(xn,xn))*xn,1.0);mat3 kk=mat3(vec3(focalLength.x,0.0,0.0),vec3(skew*focalLength.x,focalLength.y,0.0),vec3(principalPoint.x,principalPoint.y,1.0));uv=(kk*xDistorted).xy*0.5+0.5;}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=mask(uv)*inputColor;}\";\n\n// src/effects/LensDistortionEffect.js\nvar LensDistortionEffect = class extends Effect {\n /**\n * Constructs a new lens distortion effect.\n *\n * @param {Object} [options] - The options.\n * @param {Vector2} [options.distortion] - The distortion value.\n * @param {Vector2} [options.principalPoint] - The center point.\n * @param {Vector2} [options.focalLength] - The focal length.\n * @param {Number} [options.skew=0] - The skew value.\n */\n constructor({\n distortion = new Vector223(0, 0),\n principalPoint = new Vector223(0, 0),\n focalLength = new Vector223(1, 1),\n skew = 0\n } = {}) {\n super(\"LensDistortionEffect\", lens_distortion_default, {\n uniforms: /* @__PURE__ */ new Map([\n [\"distortion\", new Uniform36(distortion)],\n [\"principalPoint\", new Uniform36(principalPoint)],\n [\"focalLength\", new Uniform36(focalLength)],\n [\"skew\", new Uniform36(skew)]\n ])\n });\n }\n /**\n * The radial distortion coefficients. Default is (0, 0).\n *\n * @type {Vector2}\n */\n get distortion() {\n return this.uniforms.get(\"distortion\").value;\n }\n set distortion(value) {\n this.uniforms.get(\"distortion\").value = value;\n }\n /**\n * The principal point. Default is (0, 0).\n *\n * @type {Vector2}\n */\n get principalPoint() {\n return this.uniforms.get(\"principalPoint\").value;\n }\n set principalPoint(value) {\n this.uniforms.get(\"principalPoint\").value = value;\n }\n /**\n * The focal length. Default is (1, 1).\n *\n * @type {Vector2}\n */\n get focalLength() {\n return this.uniforms.get(\"focalLength\").value;\n }\n set focalLength(value) {\n this.uniforms.get(\"focalLength\").value = value;\n }\n /**\n * The skew factor in radians.\n *\n * @type {Number}\n */\n get skew() {\n return this.uniforms.get(\"skew\").value;\n }\n set skew(value) {\n this.uniforms.get(\"skew\").value = value;\n }\n};\n\n// src/effects/LUT1DEffect.js\nimport { FloatType as FloatType5, HalfFloatType, Uniform as Uniform37 } from \"three\";\n\n// src/effects/glsl/lut-1d.frag\nvar lut_1d_default = \"#ifdef LUT_PRECISION_HIGH\\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nuniform highp sampler2D lut;\\n#else\\nuniform mediump sampler2D lut;\\n#endif\\n#else\\nuniform lowp sampler2D lut;\\n#endif\\nvoid mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=vec4(texture2D(lut,vec2(inputColor.r,0.5)).r,texture2D(lut,vec2(inputColor.g,0.5)).r,texture2D(lut,vec2(inputColor.b,0.5)).r,inputColor.a);}\";\n\n// src/effects/LUT1DEffect.js\nvar LUT1DEffect = class extends Effect {\n /**\n * Constructs a new color grading effect.\n *\n * @param {Texture} lut - The lookup texture.\n * @param {Object} [options] - The options.\n * @param {BlendFunction} [options.blendFunction=BlendFunction.SRC] - The blend function of this effect.\n */\n constructor(lut, { blendFunction = BlendFunction.SRC } = {}) {\n super(\"LUT1DEffect\", lut_1d_default, {\n blendFunction,\n uniforms: /* @__PURE__ */ new Map([[\"lut\", new Uniform37(null)]])\n });\n this.lut = lut;\n }\n /**\n * The LUT.\n *\n * @type {Texture}\n */\n get lut() {\n return this.uniforms.get(\"lut\").value;\n }\n set lut(value) {\n this.uniforms.get(\"lut\").value = value;\n if (value !== null && (value.type === FloatType5 || value.type === HalfFloatType)) {\n this.defines.set(\"LUT_PRECISION_HIGH\", \"1\");\n }\n }\n};\n\n// src/effects/LUT3DEffect.js\nimport {\n Data3DTexture as Data3DTexture2,\n FloatType as FloatType6,\n HalfFloatType as HalfFloatType2,\n LinearFilter as LinearFilter4,\n NearestFilter as NearestFilter7,\n sRGBEncoding as sRGBEncoding2,\n Uniform as Uniform38,\n Vector3 as Vector34\n} from \"three\";\n\n// src/effects/glsl/lut-3d.frag\nvar lut_3d_default = \"uniform vec3 scale;uniform vec3 offset;\\n#ifdef CUSTOM_INPUT_DOMAIN\\nuniform vec3 domainMin;uniform vec3 domainMax;\\n#endif\\n#ifdef LUT_3D\\n#ifdef LUT_PRECISION_HIGH\\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nuniform highp sampler3D lut;\\n#else\\nuniform mediump sampler3D lut;\\n#endif\\n#else\\nuniform lowp sampler3D lut;\\n#endif\\nvec4 applyLUT(const in vec3 rgb){\\n#ifdef TETRAHEDRAL_INTERPOLATION\\nvec3 p=floor(rgb);vec3 f=rgb-p;vec3 v1=(p+0.5)*LUT_TEXEL_WIDTH;vec3 v4=(p+1.5)*LUT_TEXEL_WIDTH;vec3 v2,v3;vec3 frac;if(f.r>=f.g){if(f.g>f.b){frac=f.rgb;v2=vec3(v4.x,v1.y,v1.z);v3=vec3(v4.x,v4.y,v1.z);}else if(f.r>=f.b){frac=f.rbg;v2=vec3(v4.x,v1.y,v1.z);v3=vec3(v4.x,v1.y,v4.z);}else{frac=f.brg;v2=vec3(v1.x,v1.y,v4.z);v3=vec3(v4.x,v1.y,v4.z);}}else{if(f.b>f.g){frac=f.bgr;v2=vec3(v1.x,v1.y,v4.z);v3=vec3(v1.x,v4.y,v4.z);}else if(f.r>=f.b){frac=f.grb;v2=vec3(v1.x,v4.y,v1.z);v3=vec3(v4.x,v4.y,v1.z);}else{frac=f.gbr;v2=vec3(v1.x,v4.y,v1.z);v3=vec3(v1.x,v4.y,v4.z);}}vec4 n1=texture(lut,v1);vec4 n2=texture(lut,v2);vec4 n3=texture(lut,v3);vec4 n4=texture(lut,v4);vec4 weights=vec4(1.0-frac.x,frac.x-frac.y,frac.y-frac.z,frac.z);vec4 result=weights*mat4(vec4(n1.r,n2.r,n3.r,n4.r),vec4(n1.g,n2.g,n3.g,n4.g),vec4(n1.b,n2.b,n3.b,n4.b),vec4(1.0));return vec4(result.rgb,1.0);\\n#else\\nreturn texture(lut,rgb);\\n#endif\\n}\\n#else\\n#ifdef LUT_PRECISION_HIGH\\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nuniform highp sampler2D lut;\\n#else\\nuniform mediump sampler2D lut;\\n#endif\\n#else\\nuniform lowp sampler2D lut;\\n#endif\\nvec4 applyLUT(const in vec3 rgb){float slice=rgb.b*LUT_SIZE;float slice0=floor(slice);float interp=slice-slice0;float centeredInterp=interp-0.5;float slice1=slice0+sign(centeredInterp);\\n#ifdef LUT_STRIP_HORIZONTAL\\nfloat xOffset=clamp(rgb.r*LUT_TEXEL_HEIGHT,LUT_TEXEL_WIDTH*0.5,LUT_TEXEL_HEIGHT-LUT_TEXEL_WIDTH*0.5);vec2 uv0=vec2(slice0*LUT_TEXEL_HEIGHT+xOffset,rgb.g);vec2 uv1=vec2(slice1*LUT_TEXEL_HEIGHT+xOffset,rgb.g);\\n#else\\nfloat yOffset=clamp(rgb.g*LUT_TEXEL_WIDTH,LUT_TEXEL_HEIGHT*0.5,LUT_TEXEL_WIDTH-LUT_TEXEL_HEIGHT*0.5);vec2 uv0=vec2(rgb.r,slice0*LUT_TEXEL_WIDTH+yOffset);vec2 uv1=vec2(rgb.r,slice1*LUT_TEXEL_WIDTH+yOffset);\\n#endif\\nvec4 sample0=texture2D(lut,uv0);vec4 sample1=texture2D(lut,uv1);return mix(sample0,sample1,abs(centeredInterp));}\\n#endif\\nvoid mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 c=inputColor.rgb;\\n#ifdef CUSTOM_INPUT_DOMAIN\\nif(c.r>=domainMin.r&&c.g>=domainMin.g&&c.b>=domainMin.b&&c.r<=domainMax.r&&c.g<=domainMax.g&&c.b<=domainMax.b){c=applyLUT(scale*c+offset).rgb;}else{c=inputColor.rgb;}\\n#else\\n#if !defined(LUT_3D) || defined(TETRAHEDRAL_INTERPOLATION)\\nc=clamp(c,0.0,1.0);\\n#endif\\nc=applyLUT(scale*c+offset).rgb;\\n#endif\\noutputColor=vec4(c,inputColor.a);}\";\n\n// src/effects/LUT3DEffect.js\nvar LUT3DEffect = class extends Effect {\n /**\n * Constructs a new color grading effect.\n *\n * @param {Texture} lut - The lookup texture.\n * @param {Object} [options] - The options.\n * @param {BlendFunction} [options.blendFunction=BlendFunction.SRC] - The blend function of this effect.\n * @param {Boolean} [options.tetrahedralInterpolation=false] - Enables or disables tetrahedral interpolation.\n * @param {TextureEncoding} [options.inputEncoding=sRGBEncoding] - Deprecated.\n * @param {ColorSpace} [options.inputColorSpace=SRGBColorSpace] - The input color space.\n */\n constructor(lut, {\n blendFunction = BlendFunction.SRC,\n tetrahedralInterpolation = false,\n inputEncoding = sRGBEncoding2,\n inputColorSpace\n } = {}) {\n super(\"LUT3DEffect\", lut_3d_default, {\n blendFunction,\n uniforms: /* @__PURE__ */ new Map([\n [\"lut\", new Uniform38(null)],\n [\"scale\", new Uniform38(new Vector34())],\n [\"offset\", new Uniform38(new Vector34())],\n [\"domainMin\", new Uniform38(null)],\n [\"domainMax\", new Uniform38(null)]\n ])\n });\n this.tetrahedralInterpolation = tetrahedralInterpolation;\n this.inputColorSpace = inputColorSpace || encodingToColorSpace.get(inputEncoding);\n this.lut = lut;\n }\n /**\n * The input encoding. Default is `sRGBEncoding`.\n *\n * Set this to `LinearEncoding` if your LUT expects linear color input.\n *\n * @deprecated Use inputColorSpace instead.\n * @type {TextureEncoding}\n */\n get inputEncoding() {\n return this.inputColorSpace;\n }\n set inputEncoding(value) {\n this.inputColorSpace = value;\n }\n /**\n * Returns the input encoding.\n *\n * @deprecated Use inputColorSpace instead.\n * @return {TextureEncoding} The encoding.\n */\n getInputEncoding() {\n return this.inputColorSpace;\n }\n /**\n * Sets the input encoding.\n *\n * @deprecated Use inputColorSpace instead.\n * @param {TextureEncoding} value - The encoding.\n */\n setInputEncoding(value) {\n this.inputColorSpace = value;\n }\n /**\n * Returns the output encoding.\n *\n * @deprecated Use outputColorSpace instead.\n * @return {TextureEncoding} The encoding.\n */\n getOutputEncoding() {\n return this.outputColorSpace;\n }\n /**\n * The LUT.\n *\n * @type {Texture}\n */\n get lut() {\n return this.uniforms.get(\"lut\").value;\n }\n set lut(value) {\n const defines = this.defines;\n const uniforms = this.uniforms;\n if (this.lut !== value) {\n uniforms.get(\"lut\").value = value;\n if (value !== null) {\n const image = value.image;\n const tetrahedralInterpolation = this.tetrahedralInterpolation;\n defines.clear();\n defines.set(\"LUT_SIZE\", Math.min(image.width, image.height).toFixed(16));\n defines.set(\"LUT_TEXEL_WIDTH\", (1 / image.width).toFixed(16));\n defines.set(\"LUT_TEXEL_HEIGHT\", (1 / image.height).toFixed(16));\n uniforms.get(\"domainMin\").value = null;\n uniforms.get(\"domainMax\").value = null;\n if (value.type === FloatType6 || value.type === HalfFloatType2) {\n defines.set(\"LUT_PRECISION_HIGH\", \"1\");\n }\n if (image.width > image.height) {\n defines.set(\"LUT_STRIP_HORIZONTAL\", \"1\");\n } else if (value instanceof Data3DTexture2) {\n defines.set(\"LUT_3D\", \"1\");\n }\n if (value instanceof LookupTexture) {\n const min = value.domainMin;\n const max = value.domainMax;\n if (min.x !== 0 || min.y !== 0 || min.z !== 0 || max.x !== 1 || max.y !== 1 || max.z !== 1) {\n defines.set(\"CUSTOM_INPUT_DOMAIN\", \"1\");\n uniforms.get(\"domainMin\").value = min.clone();\n uniforms.get(\"domainMax\").value = max.clone();\n }\n }\n this.tetrahedralInterpolation = tetrahedralInterpolation;\n }\n }\n }\n /**\n * Returns the current LUT.\n *\n * @deprecated Use lut instead.\n * @return {Texture} The LUT.\n */\n getLUT() {\n return this.lut;\n }\n /**\n * Sets the LUT.\n *\n * @deprecated Use lut instead.\n * @param {Texture} value - The LUT.\n */\n setLUT(value) {\n this.lut = value;\n }\n /**\n * Updates the scale and offset for the LUT sampling coordinates.\n *\n * @private\n */\n updateScaleOffset() {\n const lut = this.lut;\n if (lut !== null) {\n const size = Math.min(lut.image.width, lut.image.height);\n const scale = this.uniforms.get(\"scale\").value;\n const offset = this.uniforms.get(\"offset\").value;\n if (this.tetrahedralInterpolation && lut instanceof Data3DTexture2) {\n if (this.defines.has(\"CUSTOM_INPUT_DOMAIN\")) {\n const domainScale = lut.domainMax.clone().sub(lut.domainMin);\n scale.setScalar(size - 1).divide(domainScale);\n offset.copy(lut.domainMin).negate().multiply(scale);\n } else {\n scale.setScalar(size - 1);\n offset.setScalar(0);\n }\n } else {\n if (this.defines.has(\"CUSTOM_INPUT_DOMAIN\")) {\n const domainScale = lut.domainMax.clone().sub(lut.domainMin).multiplyScalar(size);\n scale.setScalar(size - 1).divide(domainScale);\n offset.copy(lut.domainMin).negate().multiply(scale).addScalar(1 / (2 * size));\n } else {\n scale.setScalar((size - 1) / size);\n offset.setScalar(1 / (2 * size));\n }\n }\n }\n }\n /**\n * Configures parameters for tetrahedral interpolation.\n *\n * @private\n */\n configureTetrahedralInterpolation() {\n const lut = this.lut;\n if (lut !== null) {\n lut.minFilter = LinearFilter4;\n lut.magFilter = LinearFilter4;\n if (this.tetrahedralInterpolation) {\n if (lut instanceof Data3DTexture2) {\n lut.minFilter = NearestFilter7;\n lut.magFilter = NearestFilter7;\n } else {\n console.warn(\"Tetrahedral interpolation requires a 3D texture\");\n }\n }\n if (lut.source === void 0) {\n lut.needsUpdate = true;\n }\n }\n }\n /**\n * Indicates whether tetrahedral interpolation is enabled. Requires a 3D LUT, disabled by default.\n *\n * Tetrahedral interpolation produces highly accurate results but is slower than hardware interpolation.\n *\n * @type {Boolean}\n */\n get tetrahedralInterpolation() {\n return this.defines.has(\"TETRAHEDRAL_INTERPOLATION\");\n }\n set tetrahedralInterpolation(value) {\n if (value) {\n this.defines.set(\"TETRAHEDRAL_INTERPOLATION\", \"1\");\n } else {\n this.defines.delete(\"TETRAHEDRAL_INTERPOLATION\");\n }\n this.configureTetrahedralInterpolation();\n this.updateScaleOffset();\n this.setChanged();\n }\n /**\n * Enables or disables tetrahedral interpolation.\n *\n * @deprecated Use tetrahedralInterpolation instead.\n * @param {Boolean} value - Whether tetrahedral interpolation should be enabled.\n */\n setTetrahedralInterpolationEnabled(value) {\n this.tetrahedralInterpolation = value;\n }\n};\n\n// src/effects/glsl/noise.frag\nvar noise_default = \"void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 noise=vec3(rand(uv*time));\\n#ifdef PREMULTIPLY\\noutputColor=vec4(min(inputColor.rgb*noise,vec3(1.0)),inputColor.a);\\n#else\\noutputColor=vec4(noise,inputColor.a);\\n#endif\\n}\";\n\n// src/effects/NoiseEffect.js\nvar NoiseEffect = class extends Effect {\n /**\n * Constructs a new noise effect.\n *\n * @param {Object} [options] - The options.\n * @param {BlendFunction} [options.blendFunction=BlendFunction.SCREEN] - The blend function of this effect.\n * @param {Boolean} [options.premultiply=false] - Whether the noise should be multiplied with the input colors prior to blending.\n */\n constructor({ blendFunction = BlendFunction.SCREEN, premultiply = false } = {}) {\n super(\"NoiseEffect\", noise_default, { blendFunction });\n this.premultiply = premultiply;\n }\n /**\n * Indicates whether noise will be multiplied with the input colors prior to blending.\n *\n * @type {Boolean}\n */\n get premultiply() {\n return this.defines.has(\"PREMULTIPLY\");\n }\n set premultiply(value) {\n if (this.premultiply !== value) {\n if (value) {\n this.defines.set(\"PREMULTIPLY\", \"1\");\n } else {\n this.defines.delete(\"PREMULTIPLY\");\n }\n this.setChanged();\n }\n }\n /**\n * Indicates whether noise will be multiplied with the input colors prior to blending.\n *\n * @deprecated Use premultiply instead.\n * @return {Boolean} Whether noise is premultiplied.\n */\n isPremultiplied() {\n return this.premultiply;\n }\n /**\n * Controls whether noise should be multiplied with the input colors prior to blending.\n *\n * @deprecated Use premultiply instead.\n * @param {Boolean} value - Whether noise should be premultiplied.\n */\n setPremultiplied(value) {\n this.premultiply = value;\n }\n};\n\n// src/effects/OutlineEffect.js\nimport { Color as Color6, RepeatWrapping as RepeatWrapping2, Uniform as Uniform39, UnsignedByteType as UnsignedByteType15, WebGLRenderTarget as WebGLRenderTarget18 } from \"three\";\n\n// src/effects/glsl/outline.frag\nvar outline_default3 = \"uniform lowp sampler2D edgeTexture;uniform lowp sampler2D maskTexture;uniform vec3 visibleEdgeColor;uniform vec3 hiddenEdgeColor;uniform float pulse;uniform float edgeStrength;\\n#ifdef USE_PATTERN\\nuniform lowp sampler2D patternTexture;varying vec2 vUvPattern;\\n#endif\\nvoid mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec2 edge=texture2D(edgeTexture,uv).rg;vec2 mask=texture2D(maskTexture,uv).rg;\\n#ifndef X_RAY\\nedge.y=0.0;\\n#endif\\nedge*=(edgeStrength*mask.x*pulse);vec3 color=edge.x*visibleEdgeColor+edge.y*hiddenEdgeColor;float visibilityFactor=0.0;\\n#ifdef USE_PATTERN\\nvec4 patternColor=texture2D(patternTexture,vUvPattern);\\n#ifdef X_RAY\\nfloat hiddenFactor=0.5;\\n#else\\nfloat hiddenFactor=0.0;\\n#endif\\nvisibilityFactor=(1.0-mask.y>0.0)?1.0:hiddenFactor;visibilityFactor*=(1.0-mask.x)*patternColor.a;color+=visibilityFactor*patternColor.rgb;\\n#endif\\nfloat alpha=max(max(edge.x,edge.y),visibilityFactor);\\n#ifdef ALPHA\\noutputColor=vec4(color,alpha);\\n#else\\noutputColor=vec4(color,max(alpha,inputColor.a));\\n#endif\\n}\";\n\n// src/effects/glsl/outline.vert\nvar outline_default4 = \"uniform float patternScale;varying vec2 vUvPattern;void mainSupport(const in vec2 uv){vUvPattern=uv*vec2(aspect,1.0)*patternScale;}\";\n\n// src/effects/OutlineEffect.js\nvar OutlineEffect = class extends Effect {\n /**\n * Constructs a new outline effect.\n *\n * @param {Scene} scene - The main scene.\n * @param {Camera} camera - The main camera.\n * @param {Object} [options] - The options.\n * @param {BlendFunction} [options.blendFunction=BlendFunction.SCREEN] - The blend function. Use `BlendFunction.ALPHA` for dark outlines.\n * @param {Texture} [options.patternTexture=null] - A pattern texture.\n * @param {Number} [options.patternScale=1.0] - The pattern scale.\n * @param {Number} [options.edgeStrength=1.0] - The edge strength.\n * @param {Number} [options.pulseSpeed=0.0] - The pulse speed. A value of zero disables the pulse effect.\n * @param {Number} [options.visibleEdgeColor=0xffffff] - The color of visible edges.\n * @param {Number} [options.hiddenEdgeColor=0x22090a] - The color of hidden edges.\n * @param {KernelSize} [options.kernelSize=KernelSize.VERY_SMALL] - The blur kernel size.\n * @param {Boolean} [options.blur=false] - Whether the outline should be blurred.\n * @param {Boolean} [options.xRay=true] - Whether occluded parts of selected objects should be visible.\n * @param {Number} [options.multisampling=0] - The number of samples used for multisample antialiasing. Requires WebGL 2.\n * @param {Number} [options.resolutionScale=0.5] - The resolution scale.\n * @param {Number} [options.resolutionX=Resolution.AUTO_SIZE] - The horizontal resolution.\n * @param {Number} [options.resolutionY=Resolution.AUTO_SIZE] - The vertical resolution.\n * @param {Number} [options.width=Resolution.AUTO_SIZE] - Deprecated. Use resolutionX instead.\n * @param {Number} [options.height=Resolution.AUTO_SIZE] - Deprecated. Use resolutionY instead.\n */\n constructor(scene, camera, {\n blendFunction = BlendFunction.SCREEN,\n patternTexture = null,\n patternScale = 1,\n edgeStrength = 1,\n pulseSpeed = 0,\n visibleEdgeColor = 16777215,\n hiddenEdgeColor = 2230538,\n kernelSize = KernelSize.VERY_SMALL,\n blur = false,\n xRay = true,\n multisampling = 0,\n resolutionScale = 0.5,\n width = Resolution.AUTO_SIZE,\n height = Resolution.AUTO_SIZE,\n resolutionX = width,\n resolutionY = height\n } = {}) {\n super(\"OutlineEffect\", outline_default3, {\n uniforms: /* @__PURE__ */ new Map([\n [\"maskTexture\", new Uniform39(null)],\n [\"edgeTexture\", new Uniform39(null)],\n [\"edgeStrength\", new Uniform39(edgeStrength)],\n [\"visibleEdgeColor\", new Uniform39(new Color6(visibleEdgeColor))],\n [\"hiddenEdgeColor\", new Uniform39(new Color6(hiddenEdgeColor))],\n [\"pulse\", new Uniform39(1)],\n [\"patternScale\", new Uniform39(patternScale)],\n [\"patternTexture\", new Uniform39(null)]\n ])\n });\n this.blendMode.addEventListener(\"change\", (event) => {\n if (this.blendMode.blendFunction === BlendFunction.ALPHA) {\n this.defines.set(\"ALPHA\", \"1\");\n } else {\n this.defines.delete(\"ALPHA\");\n }\n this.setChanged();\n });\n this.blendMode.blendFunction = blendFunction;\n this.patternTexture = patternTexture;\n this.xRay = xRay;\n this.scene = scene;\n this.camera = camera;\n this.renderTargetMask = new WebGLRenderTarget18(1, 1);\n this.renderTargetMask.samples = multisampling;\n this.renderTargetMask.texture.name = \"Outline.Mask\";\n this.uniforms.get(\"maskTexture\").value = this.renderTargetMask.texture;\n this.renderTargetOutline = new WebGLRenderTarget18(1, 1, { depthBuffer: false });\n this.renderTargetOutline.texture.name = \"Outline.Edges\";\n this.uniforms.get(\"edgeTexture\").value = this.renderTargetOutline.texture;\n this.clearPass = new ClearPass();\n this.clearPass.overrideClearColor = new Color6(0);\n this.clearPass.overrideClearAlpha = 1;\n this.depthPass = new DepthPass(scene, camera);\n this.maskPass = new RenderPass(scene, camera, new DepthComparisonMaterial(this.depthPass.texture, camera));\n const clearPass = this.maskPass.clearPass;\n clearPass.overrideClearColor = new Color6(16777215);\n clearPass.overrideClearAlpha = 1;\n this.blurPass = new KawaseBlurPass({ resolutionScale, resolutionX, resolutionY, kernelSize });\n this.blurPass.enabled = blur;\n const resolution = this.blurPass.resolution;\n resolution.addEventListener(\"change\", (e) => this.setSize(resolution.baseWidth, resolution.baseHeight));\n this.outlinePass = new ShaderPass(new OutlineMaterial());\n const outlineMaterial = this.outlinePass.fullscreenMaterial;\n outlineMaterial.inputBuffer = this.renderTargetMask.texture;\n this.time = 0;\n this.forceUpdate = true;\n this.selection = new Selection();\n this.selection.layer = 10;\n this.pulseSpeed = pulseSpeed;\n }\n set mainScene(value) {\n this.scene = value;\n this.depthPass.mainScene = value;\n this.maskPass.mainScene = value;\n }\n set mainCamera(value) {\n this.camera = value;\n this.depthPass.mainCamera = value;\n this.maskPass.mainCamera = value;\n this.maskPass.overrideMaterial.copyCameraSettings(value);\n }\n /**\n * The resolution of this effect.\n *\n * @type {Resolution}\n */\n get resolution() {\n return this.blurPass.resolution;\n }\n /**\n * Returns the resolution.\n *\n * @return {Resizer} The resolution.\n */\n getResolution() {\n return this.blurPass.getResolution();\n }\n /**\n * The amount of MSAA samples.\n *\n * Requires WebGL 2. Set to zero to disable multisampling.\n *\n * @experimental Requires three >= r138.\n * @type {Number}\n */\n get multisampling() {\n return this.renderTargetMask.samples;\n }\n set multisampling(value) {\n this.renderTargetMask.samples = value;\n this.renderTargetMask.dispose();\n }\n /**\n * The pattern scale.\n *\n * @type {Number}\n */\n get patternScale() {\n return this.uniforms.get(\"patternScale\").value;\n }\n set patternScale(value) {\n this.uniforms.get(\"patternScale\").value = value;\n }\n /**\n * The edge strength.\n *\n * @type {Number}\n */\n get edgeStrength() {\n return this.uniforms.get(\"edgeStrength\").value;\n }\n set edgeStrength(value) {\n this.uniforms.get(\"edgeStrength\").value = value;\n }\n /**\n * The visible edge color.\n *\n * @type {Color}\n */\n get visibleEdgeColor() {\n return this.uniforms.get(\"visibleEdgeColor\").value;\n }\n set visibleEdgeColor(value) {\n this.uniforms.get(\"visibleEdgeColor\").value = value;\n }\n /**\n * The hidden edge color.\n *\n * @type {Color}\n */\n get hiddenEdgeColor() {\n return this.uniforms.get(\"hiddenEdgeColor\").value;\n }\n set hiddenEdgeColor(value) {\n this.uniforms.get(\"hiddenEdgeColor\").value = value;\n }\n /**\n * Returns the blur pass.\n *\n * @deprecated Use blurPass instead.\n * @return {KawaseBlurPass} The blur pass.\n */\n getBlurPass() {\n return this.blurPass;\n }\n /**\n * Returns the selection.\n *\n * @deprecated Use selection instead.\n * @return {Selection} The selection.\n */\n getSelection() {\n return this.selection;\n }\n /**\n * Returns the pulse speed.\n *\n * @deprecated Use pulseSpeed instead.\n * @return {Number} The speed.\n */\n getPulseSpeed() {\n return this.pulseSpeed;\n }\n /**\n * Sets the pulse speed. Set to zero to disable.\n *\n * @deprecated Use pulseSpeed instead.\n * @param {Number} value - The speed.\n */\n setPulseSpeed(value) {\n this.pulseSpeed = value;\n }\n /**\n * The current width of the internal render targets.\n *\n * @type {Number}\n * @deprecated Use resolution.width instead.\n */\n get width() {\n return this.resolution.width;\n }\n set width(value) {\n this.resolution.preferredWidth = value;\n }\n /**\n * The current height of the internal render targets.\n *\n * @type {Number}\n * @deprecated Use resolution.height instead.\n */\n get height() {\n return this.resolution.height;\n }\n set height(value) {\n this.resolution.preferredHeight = value;\n }\n /**\n * The selection layer.\n *\n * @type {Number}\n * @deprecated Use selection.layer instead.\n */\n get selectionLayer() {\n return this.selection.layer;\n }\n set selectionLayer(value) {\n this.selection.layer = value;\n }\n /**\n * Indicates whether dithering is enabled.\n *\n * @type {Boolean}\n * @deprecated\n */\n get dithering() {\n return this.blurPass.dithering;\n }\n set dithering(value) {\n this.blurPass.dithering = value;\n }\n /**\n * The blur kernel size.\n *\n * @type {KernelSize}\n * @deprecated Use blurPass.kernelSize instead.\n */\n get kernelSize() {\n return this.blurPass.kernelSize;\n }\n set kernelSize(value) {\n this.blurPass.kernelSize = value;\n }\n /**\n * Indicates whether the outlines should be blurred.\n *\n * @type {Boolean}\n * @deprecated Use blurPass.enabled instead.\n */\n get blur() {\n return this.blurPass.enabled;\n }\n set blur(value) {\n this.blurPass.enabled = value;\n }\n /**\n * Indicates whether X-ray mode is enabled.\n *\n * @type {Boolean}\n */\n get xRay() {\n return this.defines.has(\"X_RAY\");\n }\n set xRay(value) {\n if (this.xRay !== value) {\n if (value) {\n this.defines.set(\"X_RAY\", \"1\");\n } else {\n this.defines.delete(\"X_RAY\");\n }\n this.setChanged();\n }\n }\n /**\n * Indicates whether X-ray mode is enabled.\n *\n * @deprecated Use xRay instead.\n * @return {Boolean} Whether X-ray mode is enabled.\n */\n isXRayEnabled() {\n return this.xRay;\n }\n /**\n * Enables or disables X-ray outlines.\n *\n * @deprecated Use xRay instead.\n * @param {Boolean} value - Whether X-ray should be enabled.\n */\n setXRayEnabled(value) {\n this.xRay = value;\n }\n /**\n * The pattern texture. Set to `null` to disable.\n *\n * @type {Texture}\n */\n get patternTexture() {\n return this.uniforms.get(\"patternTexture\").value;\n }\n set patternTexture(value) {\n if (value !== null) {\n value.wrapS = value.wrapT = RepeatWrapping2;\n this.defines.set(\"USE_PATTERN\", \"1\");\n this.setVertexShader(outline_default4);\n } else {\n this.defines.delete(\"USE_PATTERN\");\n this.setVertexShader(null);\n }\n this.uniforms.get(\"patternTexture\").value = value;\n this.setChanged();\n }\n /**\n * Sets the pattern texture.\n *\n * @deprecated Use patternTexture instead.\n * @param {Texture} value - The new texture.\n */\n setPatternTexture(value) {\n this.patternTexture = value;\n }\n /**\n * Returns the current resolution scale.\n *\n * @return {Number} The resolution scale.\n * @deprecated Use resolution instead.\n */\n getResolutionScale() {\n return this.resolution.scale;\n }\n /**\n * Sets the resolution scale.\n *\n * @param {Number} scale - The new resolution scale.\n * @deprecated Use resolution instead.\n */\n setResolutionScale(scale) {\n this.resolution.scale = scale;\n }\n /**\n * Clears the current selection and selects a list of objects.\n *\n * @param {Object3D[]} objects - The objects that should be outlined. This array will be copied.\n * @return {OutlinePass} This pass.\n * @deprecated Use selection.set() instead.\n */\n setSelection(objects) {\n this.selection.set(objects);\n return this;\n }\n /**\n * Clears the list of selected objects.\n *\n * @return {OutlinePass} This pass.\n * @deprecated Use selection.clear() instead.\n */\n clearSelection() {\n this.selection.clear();\n return this;\n }\n /**\n * Selects an object.\n *\n * @param {Object3D} object - The object that should be outlined.\n * @return {OutlinePass} This pass.\n * @deprecated Use selection.add() instead.\n */\n selectObject(object) {\n this.selection.add(object);\n return this;\n }\n /**\n * Deselects an object.\n *\n * @param {Object3D} object - The object that should no longer be outlined.\n * @return {OutlinePass} This pass.\n * @deprecated Use selection.delete() instead.\n */\n deselectObject(object) {\n this.selection.delete(object);\n return this;\n }\n /**\n * Updates this effect.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n */\n update(renderer, inputBuffer, deltaTime) {\n const scene = this.scene;\n const camera = this.camera;\n const selection = this.selection;\n const uniforms = this.uniforms;\n const pulse = uniforms.get(\"pulse\");\n const background = scene.background;\n const mask = camera.layers.mask;\n if (this.forceUpdate || selection.size > 0) {\n scene.background = null;\n pulse.value = 1;\n if (this.pulseSpeed > 0) {\n pulse.value = Math.cos(this.time * this.pulseSpeed * 10) * 0.375 + 0.625;\n }\n this.time += deltaTime;\n selection.setVisible(false);\n this.depthPass.render(renderer);\n selection.setVisible(true);\n camera.layers.set(selection.layer);\n this.maskPass.render(renderer, this.renderTargetMask);\n camera.layers.mask = mask;\n scene.background = background;\n this.outlinePass.render(renderer, null, this.renderTargetOutline);\n if (this.blurPass.enabled) {\n this.blurPass.render(renderer, this.renderTargetOutline, this.renderTargetOutline);\n }\n }\n this.forceUpdate = selection.size > 0;\n }\n /**\n * Updates the size of internal render targets.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n this.blurPass.setSize(width, height);\n this.renderTargetMask.setSize(width, height);\n const resolution = this.resolution;\n resolution.setBaseSize(width, height);\n const w = resolution.width, h = resolution.height;\n this.depthPass.setSize(w, h);\n this.renderTargetOutline.setSize(w, h);\n this.outlinePass.fullscreenMaterial.setSize(w, h);\n }\n /**\n * Performs initialization tasks.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {Boolean} alpha - Whether the renderer uses the alpha channel or not.\n * @param {Number} frameBufferType - The type of the main frame buffers.\n */\n initialize(renderer, alpha, frameBufferType) {\n this.blurPass.initialize(renderer, alpha, UnsignedByteType15);\n if (frameBufferType !== void 0) {\n this.depthPass.initialize(renderer, alpha, frameBufferType);\n this.maskPass.initialize(renderer, alpha, frameBufferType);\n this.outlinePass.initialize(renderer, alpha, frameBufferType);\n }\n }\n};\n\n// src/effects/PixelationEffect.js\nimport { Uniform as Uniform40, Vector2 as Vector224, Vector4 as Vector43 } from \"three\";\n\n// src/effects/glsl/pixelation.frag\nvar pixelation_default = \"uniform bool active;uniform vec4 d;void mainUv(inout vec2 uv){if(active){uv=d.xy*(floor(uv*d.zw)+0.5);}}\";\n\n// src/effects/PixelationEffect.js\nvar PixelationEffect = class extends Effect {\n /**\n * Constructs a new pixelation effect.\n *\n * @param {Object} [granularity=30.0] - The pixel granularity.\n */\n constructor(granularity = 30) {\n super(\"PixelationEffect\", pixelation_default, {\n uniforms: /* @__PURE__ */ new Map([\n [\"active\", new Uniform40(false)],\n [\"d\", new Uniform40(new Vector43())]\n ])\n });\n this.resolution = new Vector224();\n this._granularity = 0;\n this.granularity = granularity;\n }\n /**\n * The pixel granularity.\n *\n * A higher value yields coarser visuals.\n *\n * @type {Number}\n */\n get granularity() {\n return this._granularity;\n }\n set granularity(value) {\n let d = Math.floor(value);\n if (d % 2 > 0) {\n d += 1;\n }\n this._granularity = d;\n this.uniforms.get(\"active\").value = d > 0;\n this.setSize(this.resolution.width, this.resolution.height);\n }\n /**\n * Returns the pixel granularity.\n *\n * @deprecated Use granularity instead.\n * @return {Number} The granularity.\n */\n getGranularity() {\n return this.granularity;\n }\n /**\n * Sets the pixel granularity.\n *\n * @deprecated Use granularity instead.\n * @param {Number} value - The new granularity.\n */\n setGranularity(value) {\n this.granularity = value;\n }\n /**\n * Updates the granularity.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n const resolution = this.resolution;\n resolution.set(width, height);\n const d = this.granularity;\n const x = d / resolution.x;\n const y = d / resolution.y;\n this.uniforms.get(\"d\").value.set(x, y, 1 / x, 1 / y);\n }\n};\n\n// src/effects/RealisticBokehEffect.js\nimport { Uniform as Uniform41, Vector4 as Vector44 } from \"three\";\n\n// src/effects/glsl/realistic-bokeh.frag\nvar realistic_bokeh_default = \"uniform float focus;uniform float focalLength;uniform float fStop;uniform float maxBlur;uniform float luminanceThreshold;uniform float luminanceGain;uniform float bias;uniform float fringe;\\n#ifdef MANUAL_DOF\\nuniform vec4 dof;\\n#endif\\n#ifdef PENTAGON\\nfloat pentagon(const in vec2 coords){const vec4 HS0=vec4(1.0,0.0,0.0,1.0);const vec4 HS1=vec4(0.309016994,0.951056516,0.0,1.0);const vec4 HS2=vec4(-0.809016994,0.587785252,0.0,1.0);const vec4 HS3=vec4(-0.809016994,-0.587785252,0.0,1.0);const vec4 HS4=vec4(0.309016994,-0.951056516,0.0,1.0);const vec4 HS5=vec4(0.0,0.0,1.0,1.0);const vec4 ONE=vec4(1.0);const float P_FEATHER=0.4;const float N_FEATHER=-P_FEATHER;float inOrOut=-4.0;vec4 P=vec4(coords,vec2(RINGS_FLOAT-1.3));vec4 dist=vec4(dot(P,HS0),dot(P,HS1),dot(P,HS2),dot(P,HS3));dist=smoothstep(N_FEATHER,P_FEATHER,dist);inOrOut+=dot(dist,ONE);dist.x=dot(P,HS4);dist.y=HS5.w-abs(P.z);dist=smoothstep(N_FEATHER,P_FEATHER,dist);inOrOut+=dist.x;return clamp(inOrOut,0.0,1.0);}\\n#endif\\nvec3 processTexel(const in vec2 coords,const in float blur){vec2 scale=texelSize*fringe*blur;vec3 c=vec3(texture2D(inputBuffer,coords+vec2(0.0,1.0)*scale).r,texture2D(inputBuffer,coords+vec2(-0.866,-0.5)*scale).g,texture2D(inputBuffer,coords+vec2(0.866,-0.5)*scale).b);float luminance=linearToRelativeLuminance(c);float threshold=max((luminance-luminanceThreshold)*luminanceGain,0.0);return c+mix(vec3(0.0),c,threshold*blur);}float gather(const in float i,const in float j,const in float ringSamples,const in vec2 uv,const in vec2 blurFactor,const in float blur,inout vec3 color){float step=PI2/ringSamples;vec2 wh=vec2(cos(j*step)*i,sin(j*step)*i);\\n#ifdef PENTAGON\\nfloat p=pentagon(wh);\\n#else\\nfloat p=1.0;\\n#endif\\ncolor+=processTexel(wh*blurFactor+uv,blur)*mix(1.0,i/RINGS_FLOAT,bias)*p;return mix(1.0,i/RINGS_FLOAT,bias)*p;}void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){\\n#ifdef PERSPECTIVE_CAMERA\\nfloat viewZ=perspectiveDepthToViewZ(depth,cameraNear,cameraFar);float linearDepth=viewZToOrthographicDepth(viewZ,cameraNear,cameraFar);\\n#else\\nfloat linearDepth=depth;\\n#endif\\n#ifdef MANUAL_DOF\\nfloat focalPlane=linearDepth-focus;float farDoF=(focalPlane-dof.z)/dof.w;float nearDoF=(-focalPlane-dof.x)/dof.y;float blur=(focalPlane>0.0)?farDoF:nearDoF;\\n#else\\nconst float CIRCLE_OF_CONFUSION=0.03;float focalPlaneMM=focus*1000.0;float depthMM=linearDepth*1000.0;float focalPlane=(depthMM*focalLength)/(depthMM-focalLength);float farDoF=(focalPlaneMM*focalLength)/(focalPlaneMM-focalLength);float nearDoF=(focalPlaneMM-focalLength)/(focalPlaneMM*fStop*CIRCLE_OF_CONFUSION);float blur=abs(focalPlane-farDoF)*nearDoF;\\n#endif\\nconst int MAX_RING_SAMPLES=RINGS_INT*SAMPLES_INT;blur=clamp(blur,0.0,1.0);vec3 color=inputColor.rgb;if(blur>=0.05){vec2 blurFactor=blur*maxBlur*texelSize;float s=1.0;int ringSamples;for(int i=1;i<=RINGS_INT;i++){ringSamples=i*SAMPLES_INT;for(int j=0;j=ringSamples){break;}s+=gather(float(i),float(j),float(ringSamples),uv,blurFactor,blur,color);}}color/=s;}\\n#ifdef SHOW_FOCUS\\nfloat edge=0.002*linearDepth;float m=clamp(smoothstep(0.0,edge,blur),0.0,1.0);float e=clamp(smoothstep(1.0-edge,1.0,blur),0.0,1.0);color=mix(color,vec3(1.0,0.5,0.0),(1.0-m)*0.6);color=mix(color,vec3(0.0,0.5,1.0),((1.0-e)-(1.0-m))*0.2);\\n#endif\\noutputColor=vec4(color,inputColor.a);}\";\n\n// src/effects/RealisticBokehEffect.js\nvar RealisticBokehEffect = class extends Effect {\n /**\n * Constructs a new bokeh effect.\n *\n * @param {Object} [options] - The options.\n * @param {BlendFunction} [options.blendFunction] - The blend function of this effect.\n * @param {Number} [options.focus=1.0] - The focus distance in world units.\n * @param {Number} [options.focalLength=24.0] - The focal length of the main camera.\n * @param {Number} [options.fStop=0.9] - The ratio of the lens focal length to the diameter of the entrance pupil (aperture).\n * @param {Number} [options.luminanceThreshold=0.5] - A luminance threshold.\n * @param {Number} [options.luminanceGain=2.0] - A luminance gain factor.\n * @param {Number} [options.bias=0.5] - A blur bias.\n * @param {Number} [options.fringe=0.7] - A blur offset.\n * @param {Number} [options.maxBlur=1.0] - The maximum blur strength.\n * @param {Boolean} [options.rings=3] - The number of blur iterations.\n * @param {Boolean} [options.samples=2] - The amount of samples taken per ring.\n * @param {Boolean} [options.showFocus=false] - Whether the focal point should be highlighted. Useful for debugging.\n * @param {Boolean} [options.manualDoF=false] - Enables manual control over the depth of field.\n * @param {Boolean} [options.pentagon=false] - Enables pentagonal blur shapes. Requires a high number of rings and samples.\n */\n constructor({\n blendFunction,\n focus = 1,\n focalLength = 24,\n fStop = 0.9,\n luminanceThreshold = 0.5,\n luminanceGain = 2,\n bias = 0.5,\n fringe = 0.7,\n maxBlur = 1,\n rings = 3,\n samples = 2,\n showFocus = false,\n manualDoF = false,\n pentagon = false\n } = {}) {\n super(\"RealisticBokehEffect\", realistic_bokeh_default, {\n blendFunction,\n attributes: EffectAttribute.CONVOLUTION | EffectAttribute.DEPTH,\n uniforms: /* @__PURE__ */ new Map([\n [\"focus\", new Uniform41(focus)],\n [\"focalLength\", new Uniform41(focalLength)],\n [\"fStop\", new Uniform41(fStop)],\n [\"luminanceThreshold\", new Uniform41(luminanceThreshold)],\n [\"luminanceGain\", new Uniform41(luminanceGain)],\n [\"bias\", new Uniform41(bias)],\n [\"fringe\", new Uniform41(fringe)],\n [\"maxBlur\", new Uniform41(maxBlur)],\n [\"dof\", new Uniform41(null)]\n ])\n });\n this.rings = rings;\n this.samples = samples;\n this.showFocus = showFocus;\n this.manualDoF = manualDoF;\n this.pentagon = pentagon;\n }\n /**\n * The amount of blur iterations.\n *\n * @type {Number}\n */\n get rings() {\n return Number.parseInt(this.defines.get(\"RINGS_INT\"));\n }\n set rings(value) {\n const r = Math.floor(value);\n this.defines.set(\"RINGS_INT\", r.toFixed(0));\n this.defines.set(\"RINGS_FLOAT\", r.toFixed(1));\n this.setChanged();\n }\n /**\n * The amount of blur samples per ring.\n *\n * @type {Number}\n */\n get samples() {\n return Number.parseInt(this.defines.get(\"SAMPLES_INT\"));\n }\n set samples(value) {\n const s = Math.floor(value);\n this.defines.set(\"SAMPLES_INT\", s.toFixed(0));\n this.defines.set(\"SAMPLES_FLOAT\", s.toFixed(1));\n this.setChanged();\n }\n /**\n * Indicates whether the focal point will be highlighted.\n *\n * @type {Boolean}\n */\n get showFocus() {\n return this.defines.has(\"SHOW_FOCUS\");\n }\n set showFocus(value) {\n if (this.showFocus !== value) {\n if (value) {\n this.defines.set(\"SHOW_FOCUS\", \"1\");\n } else {\n this.defines.delete(\"SHOW_FOCUS\");\n }\n this.setChanged();\n }\n }\n /**\n * Indicates whether the Depth of Field should be calculated manually.\n *\n * If enabled, the Depth of Field can be adjusted via the `dof` uniform.\n *\n * @type {Boolean}\n */\n get manualDoF() {\n return this.defines.has(\"MANUAL_DOF\");\n }\n set manualDoF(value) {\n if (this.manualDoF !== value) {\n if (value) {\n this.defines.set(\"MANUAL_DOF\", \"1\");\n this.uniforms.get(\"dof\").value = new Vector44(0.2, 1, 0.2, 2);\n } else {\n this.defines.delete(\"MANUAL_DOF\");\n this.uniforms.get(\"dof\").value = null;\n }\n this.setChanged();\n }\n }\n /**\n * Indicates whether the blur shape should be pentagonal.\n *\n * @type {Boolean}\n */\n get pentagon() {\n return this.defines.has(\"PENTAGON\");\n }\n set pentagon(value) {\n if (this.pentagon !== value) {\n if (value) {\n this.defines.set(\"PENTAGON\", \"1\");\n } else {\n this.defines.delete(\"PENTAGON\");\n }\n this.setChanged();\n }\n }\n};\n\n// src/effects/ScanlineEffect.js\nimport { Uniform as Uniform42, Vector2 as Vector225 } from \"three\";\n\n// src/effects/glsl/scanlines.frag\nvar scanlines_default = \"uniform float count;\\n#ifdef SCROLL\\nuniform float scrollSpeed;\\n#endif\\nvoid mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){float y=uv.y;\\n#ifdef SCROLL\\ny+=time*scrollSpeed;\\n#endif\\nvec2 sl=vec2(sin(y*count),cos(y*count));outputColor=vec4(sl.xyx,inputColor.a);}\";\n\n// src/effects/ScanlineEffect.js\nvar ScanlineEffect = class extends Effect {\n /**\n * Constructs a new scanline effect.\n *\n * @param {Object} [options] - The options.\n * @param {BlendFunction} [options.blendFunction=BlendFunction.OVERLAY] - The blend function of this effect.\n * @param {Number} [options.density=1.25] - The scanline density.\n * @param {Number} [options.scrollSpeed=0.0] - The scanline scroll speed.\n */\n constructor({ blendFunction = BlendFunction.OVERLAY, density = 1.25, scrollSpeed = 0 } = {}) {\n super(\"ScanlineEffect\", scanlines_default, {\n blendFunction,\n uniforms: /* @__PURE__ */ new Map([\n [\"count\", new Uniform42(0)],\n [\"scrollSpeed\", new Uniform42(0)]\n ])\n });\n this.resolution = new Vector225();\n this.d = density;\n this.scrollSpeed = scrollSpeed;\n }\n /**\n * The scanline density.\n *\n * @type {Number}\n */\n get density() {\n return this.d;\n }\n set density(value) {\n this.d = value;\n this.setSize(this.resolution.width, this.resolution.height);\n }\n /**\n * Returns the current scanline density.\n *\n * @deprecated Use density instead.\n * @return {Number} The scanline density.\n */\n getDensity() {\n return this.density;\n }\n /**\n * Sets the scanline density.\n *\n * @deprecated Use density instead.\n * @param {Number} value - The new scanline density.\n */\n setDensity(value) {\n this.density = value;\n }\n /**\n * The scanline scroll speed. Default is 0 (disabled).\n *\n * @type {Number}\n */\n get scrollSpeed() {\n return this.uniforms.get(\"scrollSpeed\").value;\n }\n set scrollSpeed(value) {\n this.uniforms.get(\"scrollSpeed\").value = value;\n if (value === 0) {\n if (this.defines.delete(\"SCROLL\")) {\n this.setChanged();\n }\n } else if (!this.defines.has(\"SCROLL\")) {\n this.defines.set(\"SCROLL\", \"1\");\n this.setChanged();\n }\n }\n /**\n * Updates the size of this pass.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n this.resolution.set(width, height);\n this.uniforms.get(\"count\").value = Math.round(height * this.density);\n }\n};\n\n// src/effects/ShockWaveEffect.js\nimport { Uniform as Uniform43, Vector2 as Vector226, Vector3 as Vector35 } from \"three\";\n\n// src/effects/glsl/shock-wave.frag\nvar shock_wave_default = \"uniform bool active;uniform vec2 center;uniform float waveSize;uniform float radius;uniform float maxRadius;uniform float amplitude;varying float vSize;void mainUv(inout vec2 uv){if(active){vec2 aspectCorrection=vec2(aspect,1.0);vec2 difference=uv*aspectCorrection-center*aspectCorrection;float distance=sqrt(dot(difference,difference))*vSize;if(distance>radius){if(distance HALF_PI;\n if (uActive.value) {\n uniforms.get(\"cameraDistance\").value = camera.position.distanceTo(position);\n v2.copy(position).project(camera);\n this.screenPosition.set((v2.x + 1) * 0.5, (v2.y + 1) * 0.5);\n }\n this.time += delta * this.speed;\n const radius = this.time - waveSize;\n uniforms.get(\"radius\").value = radius;\n if (radius >= (uniforms.get(\"maxRadius\").value + waveSize) * 2) {\n this.active = false;\n uActive.value = false;\n }\n }\n }\n};\n\n// src/effects/SelectiveBloomEffect.js\nimport {\n BasicDepthPacking as BasicDepthPacking16,\n Color as Color7,\n NotEqualDepth as NotEqualDepth2,\n EqualDepth as EqualDepth2,\n RGBADepthPacking as RGBADepthPacking5,\n WebGLRenderTarget as WebGLRenderTarget19\n} from \"three\";\nvar SelectiveBloomEffect = class extends BloomEffect {\n /**\n * Constructs a new selective bloom effect.\n *\n * @param {Scene} scene - The main scene.\n * @param {Camera} camera - The main camera.\n * @param {Object} [options] - The options. See {@link BloomEffect} for details.\n */\n constructor(scene, camera, options) {\n super(options);\n this.setAttributes(this.getAttributes() | EffectAttribute.DEPTH);\n this.camera = camera;\n this.depthPass = new DepthPass(scene, camera);\n this.clearPass = new ClearPass(true, false, false);\n this.clearPass.overrideClearColor = new Color7(0);\n this.depthMaskPass = new ShaderPass(new DepthMaskMaterial());\n const depthMaskMaterial = this.depthMaskMaterial;\n depthMaskMaterial.copyCameraSettings(camera);\n depthMaskMaterial.depthBuffer1 = this.depthPass.texture;\n depthMaskMaterial.depthPacking1 = RGBADepthPacking5;\n depthMaskMaterial.depthMode = EqualDepth2;\n this.renderTargetMasked = new WebGLRenderTarget19(1, 1, { depthBuffer: false });\n this.renderTargetMasked.texture.name = \"Bloom.Masked\";\n this.selection = new Selection();\n this.selection.layer = 11;\n this._inverted = false;\n this._ignoreBackground = false;\n }\n set mainScene(value) {\n this.depthPass.mainScene = value;\n }\n set mainCamera(value) {\n this.camera = value;\n this.depthPass.mainCamera = value;\n this.depthMaskMaterial.copyCameraSettings(value);\n }\n /**\n * Returns the selection.\n *\n * @deprecated Use selection instead.\n * @return {Selection} The selection.\n */\n getSelection() {\n return this.selection;\n }\n /**\n * The depth mask material.\n *\n * @type {DepthMaskMaterial}\n * @private\n */\n get depthMaskMaterial() {\n return this.depthMaskPass.fullscreenMaterial;\n }\n /**\n * Indicates whether the selection should be considered inverted.\n *\n * @type {Boolean}\n */\n get inverted() {\n return this._inverted;\n }\n set inverted(value) {\n this._inverted = value;\n this.depthMaskMaterial.depthMode = value ? NotEqualDepth2 : EqualDepth2;\n }\n /**\n * Indicates whether the mask is inverted.\n *\n * @deprecated Use inverted instead.\n * @return {Boolean} Whether the mask is inverted.\n */\n isInverted() {\n return this.inverted;\n }\n /**\n * Enables or disable mask inversion.\n *\n * @deprecated Use inverted instead.\n * @param {Boolean} value - Whether the mask should be inverted.\n */\n setInverted(value) {\n this.inverted = value;\n }\n /**\n * Indicates whether the background colors will be ignored.\n *\n * @type {Boolean}\n */\n get ignoreBackground() {\n return this._ignoreBackground;\n }\n set ignoreBackground(value) {\n this._ignoreBackground = value;\n this.depthMaskMaterial.maxDepthStrategy = value ? DepthTestStrategy.DISCARD_MAX_DEPTH : DepthTestStrategy.KEEP_MAX_DEPTH;\n }\n /**\n * Indicates whether the background is disabled.\n *\n * @deprecated Use ignoreBackground instead.\n * @return {Boolean} Whether the background is disabled.\n */\n isBackgroundDisabled() {\n return this.ignoreBackground;\n }\n /**\n * Enables or disables the background.\n *\n * @deprecated Use ignoreBackground instead.\n * @param {Boolean} value - Whether the background should be disabled.\n */\n setBackgroundDisabled(value) {\n this.ignoreBackground = value;\n }\n /**\n * Sets the depth texture.\n *\n * @param {Texture} depthTexture - A depth texture.\n * @param {DepthPackingStrategies} [depthPacking=BasicDepthPacking] - The depth packing.\n */\n setDepthTexture(depthTexture, depthPacking = BasicDepthPacking16) {\n this.depthMaskMaterial.depthBuffer0 = depthTexture;\n this.depthMaskMaterial.depthPacking0 = depthPacking;\n }\n /**\n * Updates this effect.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n */\n update(renderer, inputBuffer, deltaTime) {\n const camera = this.camera;\n const selection = this.selection;\n const inverted = this.inverted;\n let renderTarget = inputBuffer;\n if (this.ignoreBackground || !inverted || selection.size > 0) {\n const mask = camera.layers.mask;\n camera.layers.set(selection.layer);\n this.depthPass.render(renderer);\n camera.layers.mask = mask;\n renderTarget = this.renderTargetMasked;\n this.clearPass.render(renderer, renderTarget);\n this.depthMaskPass.render(renderer, inputBuffer, renderTarget);\n }\n super.update(renderer, renderTarget, deltaTime);\n }\n /**\n * Updates the size of internal render targets.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n super.setSize(width, height);\n this.renderTargetMasked.setSize(width, height);\n this.depthPass.setSize(width, height);\n }\n /**\n * Performs initialization tasks.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {Boolean} alpha - Whether the renderer uses the alpha channel.\n * @param {Number} frameBufferType - The type of the main frame buffers.\n */\n initialize(renderer, alpha, frameBufferType) {\n super.initialize(renderer, alpha, frameBufferType);\n this.clearPass.initialize(renderer, alpha, frameBufferType);\n this.depthPass.initialize(renderer, alpha, frameBufferType);\n this.depthMaskPass.initialize(renderer, alpha, frameBufferType);\n if (renderer.capabilities.logarithmicDepthBuffer) {\n this.depthMaskPass.fullscreenMaterial.defines.LOG_DEPTH = \"1\";\n }\n if (frameBufferType !== void 0) {\n this.renderTargetMasked.texture.type = frameBufferType;\n if (getOutputColorSpace(renderer) === SRGBColorSpace) {\n setTextureColorSpace(this.renderTargetMasked.texture, SRGBColorSpace);\n }\n }\n }\n};\n\n// src/effects/SepiaEffect.js\nimport { Uniform as Uniform44, Vector3 as Vector36 } from \"three\";\n\n// src/effects/glsl/sepia.frag\nvar sepia_default = \"uniform vec3 weightsR;uniform vec3 weightsG;uniform vec3 weightsB;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=vec3(dot(inputColor.rgb,weightsR),dot(inputColor.rgb,weightsG),dot(inputColor.rgb,weightsB));outputColor=vec4(color,inputColor.a);}\";\n\n// src/effects/SepiaEffect.js\nvar SepiaEffect = class extends Effect {\n /**\n * Constructs a new sepia effect.\n *\n * @param {Object} [options] - The options.\n * @param {BlendFunction} [options.blendFunction] - The blend function of this effect.\n * @param {Number} [options.intensity=1.0] - The intensity of the effect.\n */\n constructor({ blendFunction, intensity = 1 } = {}) {\n super(\"SepiaEffect\", sepia_default, {\n blendFunction,\n uniforms: /* @__PURE__ */ new Map([\n [\"weightsR\", new Uniform44(new Vector36(0.393, 0.769, 0.189))],\n [\"weightsG\", new Uniform44(new Vector36(0.349, 0.686, 0.168))],\n [\"weightsB\", new Uniform44(new Vector36(0.272, 0.534, 0.131))]\n ])\n });\n }\n /**\n * The intensity.\n *\n * @deprecated Use blendMode.opacity instead.\n * @type {Number}\n */\n get intensity() {\n return this.blendMode.opacity.value;\n }\n set intensity(value) {\n this.blendMode.opacity.value = value;\n }\n /**\n * Returns the current sepia intensity.\n *\n * @deprecated Use blendMode.opacity instead.\n * @return {Number} The intensity.\n */\n getIntensity() {\n return this.intensity;\n }\n /**\n * Sets the sepia intensity.\n *\n * @deprecated Use blendMode.opacity instead.\n * @param {Number} value - The intensity.\n */\n setIntensity(value) {\n this.intensity = value;\n }\n /**\n * The weights for the red channel. Default is `(0.393, 0.769, 0.189)`.\n *\n * @type {Vector3}\n */\n get weightsR() {\n return this.uniforms.get(\"weightsR\").value;\n }\n /**\n * The weights for the green channel. Default is `(0.349, 0.686, 0.168)`.\n *\n * @type {Vector3}\n */\n get weightsG() {\n return this.uniforms.get(\"weightsG\").value;\n }\n /**\n * The weights for the blue channel. Default is `(0.272, 0.534, 0.131)`.\n *\n * @type {Vector3}\n */\n get weightsB() {\n return this.uniforms.get(\"weightsB\").value;\n }\n};\n\n// src/effects/SMAAEffect.js\nimport {\n BasicDepthPacking as BasicDepthPacking17,\n Color as Color8,\n LinearFilter as LinearFilter5,\n LoadingManager as LoadingManager2,\n NearestFilter as NearestFilter8,\n Texture as Texture3,\n Uniform as Uniform45,\n WebGLRenderTarget as WebGLRenderTarget20\n} from \"three\";\n\n// src/textures/smaa/searchImageDataURL.js\nvar searchImageDataURL_default = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAQCAYAAACm53kpAAAAeElEQVRYR+2XSwqAMAxEJ168ePEqwRSKhIIiuHjJqiU0gWE+1CQdApcVAMUAuARaMGCX1MIL/Ow13++9lW2s3mW9MWvsnWc/2fvGygwPAN4E8QzAA4CXAB6AHjG4JTHYI1ey3pcx6FHnEfhLDOIBKAmUBK6/ANUDTlROXAHd9EC1AAAAAElFTkSuQmCC\";\n\n// src/textures/smaa/areaImageDataURL.js\nvar areaImageDataURL_default = \"data:image/png;base64,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\";\n\n// src/effects/glsl/smaa.frag\nvar smaa_default = \"uniform sampler2D weightMap;varying vec2 vOffset0;varying vec2 vOffset1;void movec(const in bvec2 c,inout vec2 variable,const in vec2 value){if(c.x){variable.x=value.x;}if(c.y){variable.y=value.y;}}void movec(const in bvec4 c,inout vec4 variable,const in vec4 value){movec(c.xy,variable.xy,value.xy);movec(c.zw,variable.zw,value.zw);}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec4 a;a.x=texture2D(weightMap,vOffset0).a;a.y=texture2D(weightMap,vOffset1).g;a.wz=texture2D(weightMap,uv).rb;vec4 color=inputColor;if(dot(a,vec4(1.0))>=1e-5){bool h=max(a.x,a.z)>max(a.y,a.w);vec4 blendingOffset=vec4(0.0,a.y,0.0,a.w);vec2 blendingWeight=a.yw;movec(bvec4(h),blendingOffset,vec4(a.x,0.0,a.z,0.0));movec(bvec2(h),blendingWeight,a.xz);blendingWeight/=dot(blendingWeight,vec2(1.0));vec4 blendingCoord=blendingOffset*vec4(texelSize,-texelSize)+uv.xyxy;color=blendingWeight.x*texture2D(inputBuffer,blendingCoord.xy);color+=blendingWeight.y*texture2D(inputBuffer,blendingCoord.zw);}outputColor=color;}\";\n\n// src/effects/glsl/smaa.vert\nvar smaa_default2 = \"varying vec2 vOffset0;varying vec2 vOffset1;void mainSupport(const in vec2 uv){vOffset0=uv+texelSize*vec2(1.0,0.0);vOffset1=uv+texelSize*vec2(0.0,1.0);}\";\n\n// src/effects/SMAAEffect.js\nvar SMAAEffect = class extends Effect {\n /**\n * Constructs a new SMAA effect.\n *\n * @param {Object} [options] - The options.\n * @param {BlendFunction} [options.blendFunction=BlendFunction.SRC] - The blend function of this effect.\n * @param {SMAAPreset} [options.preset=SMAAPreset.MEDIUM] - The quality preset.\n * @param {EdgeDetectionMode} [options.edgeDetectionMode=EdgeDetectionMode.COLOR] - The edge detection mode.\n * @param {PredicationMode} [options.predicationMode=PredicationMode.DISABLED] - The predication mode.\n */\n constructor({\n blendFunction = BlendFunction.SRC,\n preset = SMAAPreset.MEDIUM,\n edgeDetectionMode = EdgeDetectionMode.COLOR,\n predicationMode = PredicationMode.DISABLED\n } = {}) {\n super(\"SMAAEffect\", smaa_default, {\n vertexShader: smaa_default2,\n blendFunction,\n attributes: EffectAttribute.CONVOLUTION | EffectAttribute.DEPTH,\n uniforms: /* @__PURE__ */ new Map([\n [\"weightMap\", new Uniform45(null)]\n ])\n });\n let searchImage, areaImage;\n if (arguments.length > 1) {\n searchImage = arguments[0];\n areaImage = arguments[1];\n if (arguments.length > 2) {\n preset = arguments[2];\n }\n if (arguments.length > 3) {\n edgeDetectionMode = arguments[3];\n }\n }\n this.renderTargetEdges = new WebGLRenderTarget20(1, 1, { depthBuffer: false });\n this.renderTargetEdges.texture.name = \"SMAA.Edges\";\n this.renderTargetWeights = this.renderTargetEdges.clone();\n this.renderTargetWeights.texture.name = \"SMAA.Weights\";\n this.uniforms.get(\"weightMap\").value = this.renderTargetWeights.texture;\n this.clearPass = new ClearPass(true, false, false);\n this.clearPass.overrideClearColor = new Color8(0);\n this.clearPass.overrideClearAlpha = 1;\n this.edgeDetectionPass = new ShaderPass(new EdgeDetectionMaterial());\n this.edgeDetectionMaterial.edgeDetectionMode = edgeDetectionMode;\n this.edgeDetectionMaterial.predicationMode = predicationMode;\n this.weightsPass = new ShaderPass(new SMAAWeightsMaterial());\n const loadingManager = new LoadingManager2();\n loadingManager.onLoad = () => {\n const searchTexture = new Texture3(searchImage);\n searchTexture.name = \"SMAA.Search\";\n searchTexture.magFilter = NearestFilter8;\n searchTexture.minFilter = NearestFilter8;\n searchTexture.generateMipmaps = false;\n searchTexture.needsUpdate = true;\n searchTexture.flipY = true;\n this.weightsMaterial.searchTexture = searchTexture;\n const areaTexture = new Texture3(areaImage);\n areaTexture.name = \"SMAA.Area\";\n areaTexture.magFilter = LinearFilter5;\n areaTexture.minFilter = LinearFilter5;\n areaTexture.generateMipmaps = false;\n areaTexture.needsUpdate = true;\n areaTexture.flipY = false;\n this.weightsMaterial.areaTexture = areaTexture;\n this.dispatchEvent({ type: \"load\" });\n };\n loadingManager.itemStart(\"search\");\n loadingManager.itemStart(\"area\");\n if (searchImage !== void 0 && areaImage !== void 0) {\n loadingManager.itemEnd(\"search\");\n loadingManager.itemEnd(\"area\");\n } else if (typeof Image !== \"undefined\") {\n searchImage = new Image();\n areaImage = new Image();\n searchImage.addEventListener(\"load\", () => loadingManager.itemEnd(\"search\"));\n areaImage.addEventListener(\"load\", () => loadingManager.itemEnd(\"area\"));\n searchImage.src = searchImageDataURL_default;\n areaImage.src = areaImageDataURL_default;\n }\n this.applyPreset(preset);\n }\n /**\n * The edges texture.\n *\n * @type {Texture}\n */\n get edgesTexture() {\n return this.renderTargetEdges.texture;\n }\n /**\n * Returns the edges texture.\n *\n * @deprecated Use edgesTexture instead.\n * @return {Texture} The texture.\n */\n getEdgesTexture() {\n return this.edgesTexture;\n }\n /**\n * The edge weights texture.\n *\n * @type {Texture}\n */\n get weightsTexture() {\n return this.renderTargetWeights.texture;\n }\n /**\n * Returns the edge weights texture.\n *\n * @deprecated Use weightsTexture instead.\n * @return {Texture} The texture.\n */\n getWeightsTexture() {\n return this.weightsTexture;\n }\n /**\n * The edge detection material.\n *\n * @type {EdgeDetectionMaterial}\n */\n get edgeDetectionMaterial() {\n return this.edgeDetectionPass.fullscreenMaterial;\n }\n /**\n * The edge detection material.\n *\n * @type {EdgeDetectionMaterial}\n * @deprecated Use edgeDetectionMaterial instead.\n */\n get colorEdgesMaterial() {\n return this.edgeDetectionMaterial;\n }\n /**\n * Returns the edge detection material.\n *\n * @deprecated Use edgeDetectionMaterial instead.\n * @return {EdgeDetectionMaterial} The material.\n */\n getEdgeDetectionMaterial() {\n return this.edgeDetectionMaterial;\n }\n /**\n * The edge weights material.\n *\n * @type {SMAAWeightsMaterial}\n */\n get weightsMaterial() {\n return this.weightsPass.fullscreenMaterial;\n }\n /**\n * Returns the edge weights material.\n *\n * @deprecated Use weightsMaterial instead.\n * @return {SMAAWeightsMaterial} The material.\n */\n getWeightsMaterial() {\n return this.weightsMaterial;\n }\n /**\n * Sets the edge detection sensitivity.\n *\n * See {@link EdgeDetectionMaterial#setEdgeDetectionThreshold} for more details.\n *\n * @deprecated Use edgeDetectionMaterial instead.\n * @param {Number} threshold - The edge detection sensitivity. Range: [0.05, 0.5].\n */\n setEdgeDetectionThreshold(threshold) {\n this.edgeDetectionMaterial.edgeDetectionThreshold = threshold;\n }\n /**\n * Sets the maximum amount of horizontal/vertical search steps.\n *\n * See {@link SMAAWeightsMaterial#setOrthogonalSearchSteps} for more details.\n *\n * @deprecated Use weightsMaterial instead.\n * @param {Number} steps - The search steps. Range: [0, 112].\n */\n setOrthogonalSearchSteps(steps) {\n this.weightsMaterial.orthogonalSearchSteps = steps;\n }\n /**\n * Applies the given quality preset.\n *\n * @param {SMAAPreset} preset - The preset.\n */\n applyPreset(preset) {\n const edgeDetectionMaterial = this.edgeDetectionMaterial;\n const weightsMaterial = this.weightsMaterial;\n switch (preset) {\n case SMAAPreset.LOW:\n edgeDetectionMaterial.edgeDetectionThreshold = 0.15;\n weightsMaterial.orthogonalSearchSteps = 4;\n weightsMaterial.diagonalDetection = false;\n weightsMaterial.cornerDetection = false;\n break;\n case SMAAPreset.MEDIUM:\n edgeDetectionMaterial.edgeDetectionThreshold = 0.1;\n weightsMaterial.orthogonalSearchSteps = 8;\n weightsMaterial.diagonalDetection = false;\n weightsMaterial.cornerDetection = false;\n break;\n case SMAAPreset.HIGH:\n edgeDetectionMaterial.edgeDetectionThreshold = 0.1;\n weightsMaterial.orthogonalSearchSteps = 16;\n weightsMaterial.diagonalSearchSteps = 8;\n weightsMaterial.cornerRounding = 25;\n weightsMaterial.diagonalDetection = true;\n weightsMaterial.cornerDetection = true;\n break;\n case SMAAPreset.ULTRA:\n edgeDetectionMaterial.edgeDetectionThreshold = 0.05;\n weightsMaterial.orthogonalSearchSteps = 32;\n weightsMaterial.diagonalSearchSteps = 16;\n weightsMaterial.cornerRounding = 25;\n weightsMaterial.diagonalDetection = true;\n weightsMaterial.cornerDetection = true;\n break;\n }\n }\n /**\n * Sets the depth texture.\n *\n * @param {Texture} depthTexture - A depth texture.\n * @param {DepthPackingStrategies} [depthPacking=BasicDepthPacking] - The depth packing.\n */\n setDepthTexture(depthTexture, depthPacking = BasicDepthPacking17) {\n this.edgeDetectionMaterial.depthBuffer = depthTexture;\n this.edgeDetectionMaterial.depthPacking = depthPacking;\n }\n /**\n * Updates this effect.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n */\n update(renderer, inputBuffer, deltaTime) {\n this.clearPass.render(renderer, this.renderTargetEdges);\n this.edgeDetectionPass.render(renderer, inputBuffer, this.renderTargetEdges);\n this.weightsPass.render(renderer, this.renderTargetEdges, this.renderTargetWeights);\n }\n /**\n * Updates the size of internal render targets.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n this.edgeDetectionMaterial.setSize(width, height);\n this.weightsMaterial.setSize(width, height);\n this.renderTargetEdges.setSize(width, height);\n this.renderTargetWeights.setSize(width, height);\n }\n /**\n * Deletes internal render targets and textures.\n */\n dispose() {\n const { searchTexture, areaTexture } = this.weightsMaterial;\n if (searchTexture !== null && areaTexture !== null) {\n searchTexture.dispose();\n areaTexture.dispose();\n }\n super.dispose();\n }\n /**\n * The SMAA search image, encoded as a base64 data URL.\n *\n * @type {String}\n * @deprecated\n */\n static get searchImageDataURL() {\n return searchImageDataURL_default;\n }\n /**\n * The SMAA area image, encoded as a base64 data URL.\n *\n * @type {String}\n * @deprecated\n */\n static get areaImageDataURL() {\n return areaImageDataURL_default;\n }\n};\n\n// src/effects/SSAOEffect.js\nimport { BasicDepthPacking as BasicDepthPacking18, Color as Color9, RepeatWrapping as RepeatWrapping3, RGBAFormat as RGBAFormat4, Uniform as Uniform46, WebGLRenderTarget as WebGLRenderTarget21 } from \"three\";\n\n// src/effects/glsl/ssao.frag\nvar ssao_default3 = \"uniform lowp sampler2D aoBuffer;uniform float luminanceInfluence;uniform float intensity;\\n#if THREE_REVISION < 143\\n#define luminance(v) linearToRelativeLuminance(v)\\n#endif\\n#if defined(DEPTH_AWARE_UPSAMPLING) && defined(NORMAL_DEPTH)\\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nuniform highp sampler2D normalDepthBuffer;\\n#else\\nuniform mediump sampler2D normalDepthBuffer;\\n#endif\\n#endif\\n#ifdef COLORIZE\\nuniform vec3 color;\\n#endif\\nvoid mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){float aoLinear=texture2D(aoBuffer,uv).r;\\n#if defined(DEPTH_AWARE_UPSAMPLING) && defined(NORMAL_DEPTH) && __VERSION__ == 300\\nvec4 normalDepth[4];normalDepth[0]=textureOffset(normalDepthBuffer,uv,ivec2(0,0));normalDepth[1]=textureOffset(normalDepthBuffer,uv,ivec2(0,1));normalDepth[2]=textureOffset(normalDepthBuffer,uv,ivec2(1,0));normalDepth[3]=textureOffset(normalDepthBuffer,uv,ivec2(1,1));float dot01=dot(normalDepth[0].rgb,normalDepth[1].rgb);float dot02=dot(normalDepth[0].rgb,normalDepth[2].rgb);float dot03=dot(normalDepth[0].rgb,normalDepth[3].rgb);float minDot=min(dot01,min(dot02,dot03));float s=step(THRESHOLD,minDot);float smallestDistance=1.0;int index;for(int i=0;i<4;++i){float distance=abs(depth-normalDepth[i].a);if(distance this.setSize(resolution.baseWidth, resolution.baseHeight));\n this.camera = camera;\n this.depthDownsamplingPass = new DepthDownsamplingPass({ normalBuffer, resolutionScale });\n this.depthDownsamplingPass.enabled = normalDepthBuffer === null;\n this.ssaoPass = new ShaderPass(new SSAOMaterial(camera));\n const noiseTexture = new NoiseTexture(NOISE_TEXTURE_SIZE, NOISE_TEXTURE_SIZE, RGBAFormat4);\n noiseTexture.wrapS = noiseTexture.wrapT = RepeatWrapping3;\n const ssaoMaterial = this.ssaoMaterial;\n ssaoMaterial.normalBuffer = normalBuffer;\n ssaoMaterial.noiseTexture = noiseTexture;\n ssaoMaterial.minRadiusScale = minRadiusScale;\n ssaoMaterial.samples = samples;\n ssaoMaterial.radius = radius;\n ssaoMaterial.rings = rings;\n ssaoMaterial.fade = fade;\n ssaoMaterial.bias = bias;\n ssaoMaterial.distanceThreshold = distanceThreshold;\n ssaoMaterial.distanceFalloff = distanceFalloff;\n ssaoMaterial.proximityThreshold = rangeThreshold;\n ssaoMaterial.proximityFalloff = rangeFalloff;\n if (worldDistanceThreshold !== void 0) {\n ssaoMaterial.worldDistanceThreshold = worldDistanceThreshold;\n }\n if (worldDistanceFalloff !== void 0) {\n ssaoMaterial.worldDistanceFalloff = worldDistanceFalloff;\n }\n if (worldProximityThreshold !== void 0) {\n ssaoMaterial.worldProximityThreshold = worldProximityThreshold;\n }\n if (worldProximityFalloff !== void 0) {\n ssaoMaterial.worldProximityFalloff = worldProximityFalloff;\n }\n if (normalDepthBuffer !== null) {\n this.ssaoMaterial.normalDepthBuffer = normalDepthBuffer;\n this.defines.set(\"NORMAL_DEPTH\", \"1\");\n }\n this.depthAwareUpsampling = depthAwareUpsampling;\n this.color = color2;\n }\n set mainCamera(value) {\n this.camera = value;\n this.ssaoMaterial.copyCameraSettings(value);\n }\n /**\n * Sets the normal buffer.\n *\n * @type {Texture}\n */\n get normalBuffer() {\n return this.ssaoMaterial.normalBuffer;\n }\n set normalBuffer(value) {\n this.ssaoMaterial.normalBuffer = value;\n this.depthDownsamplingPass.fullscreenMaterial.normalBuffer = value;\n }\n /**\n * Returns the resolution settings.\n *\n * @deprecated Use resolution instead.\n * @return {Resolution} The resolution.\n */\n getResolution() {\n return this.resolution;\n }\n /**\n * The SSAO material.\n *\n * @type {SSAOMaterial}\n */\n get ssaoMaterial() {\n return this.ssaoPass.fullscreenMaterial;\n }\n /**\n * Returns the SSAO material.\n *\n * @deprecated Use ssaoMaterial instead.\n * @return {SSAOMaterial} The material.\n */\n getSSAOMaterial() {\n return this.ssaoMaterial;\n }\n /**\n * The amount of occlusion samples per pixel.\n *\n * @type {Number}\n * @deprecated Use ssaoMaterial.samples instead.\n */\n get samples() {\n return this.ssaoMaterial.samples;\n }\n set samples(value) {\n this.ssaoMaterial.samples = value;\n }\n /**\n * The amount of spiral turns in the occlusion sampling pattern.\n *\n * @type {Number}\n * @deprecated Use ssaoMaterial.rings instead.\n */\n get rings() {\n return this.ssaoMaterial.rings;\n }\n set rings(value) {\n this.ssaoMaterial.rings = value;\n }\n /**\n * The occlusion sampling radius.\n *\n * @type {Number}\n * @deprecated Use ssaoMaterial.radius instead.\n */\n get radius() {\n return this.ssaoMaterial.radius;\n }\n set radius(value) {\n this.ssaoMaterial.radius = value;\n }\n /**\n * Indicates whether depth-aware upsampling is enabled.\n *\n * @type {Boolean}\n */\n get depthAwareUpsampling() {\n return this.defines.has(\"DEPTH_AWARE_UPSAMPLING\");\n }\n set depthAwareUpsampling(value) {\n if (this.depthAwareUpsampling !== value) {\n if (value) {\n this.defines.set(\"DEPTH_AWARE_UPSAMPLING\", \"1\");\n } else {\n this.defines.delete(\"DEPTH_AWARE_UPSAMPLING\");\n }\n this.setChanged();\n }\n }\n /**\n * Indicates whether depth-aware upsampling is enabled.\n *\n * @deprecated Use depthAwareUpsampling instead.\n * @return {Boolean} Whether depth-aware upsampling is enabled.\n */\n isDepthAwareUpsamplingEnabled() {\n return this.depthAwareUpsampling;\n }\n /**\n * Enables or disables depth-aware upsampling.\n *\n * @deprecated Use depthAwareUpsampling instead.\n * @param {Boolean} value - Whether depth-aware upsampling should be enabled.\n */\n setDepthAwareUpsamplingEnabled(value) {\n this.depthAwareUpsampling = value;\n }\n /**\n * Indicates whether distance-based radius scaling is enabled.\n *\n * @type {Boolean}\n * @deprecated\n */\n get distanceScaling() {\n return true;\n }\n set distanceScaling(value) {\n }\n /**\n * The color of the ambient occlusion. Set to `null` to disable.\n *\n * @type {Color}\n */\n get color() {\n return this.uniforms.get(\"color\").value;\n }\n set color(value) {\n const uniforms = this.uniforms;\n const defines = this.defines;\n if (value !== null) {\n if (defines.has(\"COLORIZE\")) {\n uniforms.get(\"color\").value.set(value);\n } else {\n defines.set(\"COLORIZE\", \"1\");\n uniforms.get(\"color\").value = new Color9(value);\n this.setChanged();\n }\n } else if (defines.has(\"COLORIZE\")) {\n defines.delete(\"COLORIZE\");\n uniforms.get(\"color\").value = null;\n this.setChanged();\n }\n }\n /**\n * The luminance influence factor. Range: [0.0, 1.0].\n *\n * @type {Boolean}\n */\n get luminanceInfluence() {\n return this.uniforms.get(\"luminanceInfluence\").value;\n }\n set luminanceInfluence(value) {\n this.uniforms.get(\"luminanceInfluence\").value = value;\n }\n /**\n * The intensity.\n *\n * @type {Number}\n */\n get intensity() {\n return this.uniforms.get(\"intensity\").value;\n }\n set intensity(value) {\n this.uniforms.get(\"intensity\").value = value;\n }\n /**\n * Returns the color of the ambient occlusion.\n *\n * @deprecated Use color instead.\n * @return {Color} The color.\n */\n getColor() {\n return this.color;\n }\n /**\n * Sets the color of the ambient occlusion. Set to `null` to disable colorization.\n *\n * @deprecated Use color instead.\n * @param {Color} value - The color.\n */\n setColor(value) {\n this.color = value;\n }\n /**\n * Sets the occlusion distance cutoff.\n *\n * @deprecated Use ssaoMaterial instead.\n * @param {Number} threshold - The distance threshold. Range [0.0, 1.0].\n * @param {Number} falloff - The falloff. Range [0.0, 1.0].\n */\n setDistanceCutoff(threshold, falloff) {\n this.ssaoMaterial.distanceThreshold = threshold;\n this.ssaoMaterial.distanceFalloff = falloff;\n }\n /**\n * Sets the occlusion proximity cutoff.\n *\n * @deprecated Use ssaoMaterial instead.\n * @param {Number} threshold - The proximity threshold. Range [0.0, 1.0].\n * @param {Number} falloff - The falloff. Range [0.0, 1.0].\n */\n setProximityCutoff(threshold, falloff) {\n this.ssaoMaterial.proximityThreshold = threshold;\n this.ssaoMaterial.proximityFalloff = falloff;\n }\n /**\n * Sets the depth texture.\n *\n * @param {Texture} depthTexture - A depth texture.\n * @param {DepthPackingStrategies} [depthPacking=BasicDepthPacking] - The depth packing.\n */\n setDepthTexture(depthTexture, depthPacking = BasicDepthPacking18) {\n this.depthDownsamplingPass.setDepthTexture(depthTexture, depthPacking);\n this.ssaoMaterial.depthBuffer = depthTexture;\n this.ssaoMaterial.depthPacking = depthPacking;\n }\n /**\n * Updates this effect.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n */\n update(renderer, inputBuffer, deltaTime) {\n const renderTarget = this.renderTarget;\n if (this.depthDownsamplingPass.enabled) {\n this.depthDownsamplingPass.render(renderer);\n }\n this.ssaoPass.render(renderer, null, renderTarget);\n }\n /**\n * Sets the size.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n const resolution = this.resolution;\n resolution.setBaseSize(width, height);\n const w = resolution.width, h = resolution.height;\n this.ssaoMaterial.copyCameraSettings(this.camera);\n this.ssaoMaterial.setSize(w, h);\n this.renderTarget.setSize(w, h);\n this.depthDownsamplingPass.resolution.scale = resolution.scale;\n this.depthDownsamplingPass.setSize(width, height);\n }\n /**\n * Performs initialization tasks.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {Boolean} alpha - Whether the renderer uses the alpha channel or not.\n * @param {Number} frameBufferType - The type of the main frame buffers.\n */\n initialize(renderer, alpha, frameBufferType) {\n try {\n let normalDepthBuffer = this.uniforms.get(\"normalDepthBuffer\").value;\n if (normalDepthBuffer === null) {\n this.depthDownsamplingPass.initialize(renderer, alpha, frameBufferType);\n normalDepthBuffer = this.depthDownsamplingPass.texture;\n this.uniforms.get(\"normalDepthBuffer\").value = normalDepthBuffer;\n this.ssaoMaterial.normalDepthBuffer = normalDepthBuffer;\n this.defines.set(\"NORMAL_DEPTH\", \"1\");\n }\n } catch (e) {\n this.depthDownsamplingPass.enabled = false;\n }\n }\n};\n\n// src/effects/TextureEffect.js\nimport { Uniform as Uniform47, UnsignedByteType as UnsignedByteType16 } from \"three\";\n\n// src/effects/glsl/texture.frag\nvar texture_default = \"#ifdef TEXTURE_PRECISION_HIGH\\nuniform mediump sampler2D map;\\n#else\\nuniform lowp sampler2D map;\\n#endif\\nvarying vec2 vUv2;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){\\n#ifdef UV_TRANSFORM\\nvec4 texel=texture2D(map,vUv2);\\n#else\\nvec4 texel=texture2D(map,uv);\\n#endif\\noutputColor=TEXEL;}\";\n\n// src/effects/glsl/texture.vert\nvar texture_default2 = \"#ifdef ASPECT_CORRECTION\\nuniform float scale;\\n#else\\nuniform mat3 uvTransform;\\n#endif\\nvarying vec2 vUv2;void mainSupport(const in vec2 uv){\\n#ifdef ASPECT_CORRECTION\\nvUv2=uv*vec2(aspect,1.0)*scale;\\n#else\\nvUv2=(uvTransform*vec3(uv,1.0)).xy;\\n#endif\\n}\";\n\n// src/effects/TextureEffect.js\nvar TextureEffect = class extends Effect {\n /**\n * Constructs a new texture effect.\n *\n * @param {Object} [options] - The options.\n * @param {BlendFunction} [options.blendFunction] - The blend function of this effect.\n * @param {Texture} [options.texture] - A texture.\n * @param {Boolean} [options.aspectCorrection=false] - Deprecated. Adjust the texture's offset, repeat and center instead.\n */\n constructor({ blendFunction, texture = null, aspectCorrection = false } = {}) {\n super(\"TextureEffect\", texture_default, {\n blendFunction,\n defines: /* @__PURE__ */ new Map([\n [\"TEXEL\", \"texel\"]\n ]),\n uniforms: /* @__PURE__ */ new Map([\n [\"map\", new Uniform47(null)],\n [\"scale\", new Uniform47(1)],\n [\"uvTransform\", new Uniform47(null)]\n ])\n });\n this.texture = texture;\n this.aspectCorrection = aspectCorrection;\n }\n /**\n * The texture.\n *\n * @type {Texture}\n */\n get texture() {\n return this.uniforms.get(\"map\").value;\n }\n set texture(value) {\n const prevTexture = this.texture;\n const uniforms = this.uniforms;\n const defines = this.defines;\n if (prevTexture !== value) {\n uniforms.get(\"map\").value = value;\n uniforms.get(\"uvTransform\").value = value.matrix;\n defines.delete(\"TEXTURE_PRECISION_HIGH\");\n if (value !== null) {\n if (value.matrixAutoUpdate) {\n defines.set(\"UV_TRANSFORM\", \"1\");\n this.setVertexShader(texture_default2);\n } else {\n defines.delete(\"UV_TRANSFORM\");\n this.setVertexShader(null);\n }\n if (value.type !== UnsignedByteType16) {\n defines.set(\"TEXTURE_PRECISION_HIGH\", \"1\");\n }\n if (prevTexture === null || prevTexture.type !== value.type || prevTexture.encoding !== value.encoding) {\n this.setChanged();\n }\n }\n }\n }\n /**\n * Returns the texture.\n *\n * @deprecated Use texture instead.\n * @return {Texture} The texture.\n */\n getTexture() {\n return this.texture;\n }\n /**\n * Sets the texture.\n *\n * @deprecated Use texture instead.\n * @param {Texture} value - The texture.\n */\n setTexture(value) {\n this.texture = value;\n }\n /**\n * Indicates whether aspect correction is enabled.\n *\n * @type {Number}\n * @deprecated Adjust the texture's offset, repeat, rotation and center instead.\n */\n get aspectCorrection() {\n return this.defines.has(\"ASPECT_CORRECTION\");\n }\n set aspectCorrection(value) {\n if (this.aspectCorrection !== value) {\n if (value) {\n this.defines.set(\"ASPECT_CORRECTION\", \"1\");\n } else {\n this.defines.delete(\"ASPECT_CORRECTION\");\n }\n this.setChanged();\n }\n }\n /**\n * Indicates whether the texture UV coordinates will be transformed using the transformation matrix of the texture.\n *\n * @type {Boolean}\n * @deprecated Use texture.matrixAutoUpdate instead.\n */\n get uvTransform() {\n const texture = this.texture;\n return texture !== null && texture.matrixAutoUpdate;\n }\n set uvTransform(value) {\n const texture = this.texture;\n if (texture !== null) {\n texture.matrixAutoUpdate = value;\n }\n }\n /**\n * Sets the swizzles that will be applied to the components of a texel before it is written to the output color.\n *\n * @param {ColorChannel} r - The swizzle for the `r` component.\n * @param {ColorChannel} [g=r] - The swizzle for the `g` component.\n * @param {ColorChannel} [b=r] - The swizzle for the `b` component.\n * @param {ColorChannel} [a=r] - The swizzle for the `a` component.\n */\n setTextureSwizzleRGBA(r, g = r, b = r, a = r) {\n const rgba = \"rgba\";\n let swizzle = \"\";\n if (r !== ColorChannel.RED || g !== ColorChannel.GREEN || b !== ColorChannel.BLUE || a !== ColorChannel.ALPHA) {\n swizzle = [\".\", rgba[r], rgba[g], rgba[b], rgba[a]].join(\"\");\n }\n this.defines.set(\"TEXEL\", \"texel\" + swizzle);\n this.setChanged();\n }\n /**\n * Updates this effect.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n */\n update(renderer, inputBuffer, deltaTime) {\n if (this.texture.matrixAutoUpdate) {\n this.texture.updateMatrix();\n }\n }\n};\n\n// src/effects/TiltShiftEffect.js\nimport { Uniform as Uniform48, Vector2 as Vector227, WebGLRenderTarget as WebGLRenderTarget22 } from \"three\";\n\n// src/effects/glsl/tilt-shift.frag\nvar tilt_shift_default = \"#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D map;\\n#else\\nuniform lowp sampler2D map;\\n#endif\\nuniform vec2 maskParams;varying vec2 vUv2;float linearGradientMask(const in float x){return step(maskParams.x,x)-step(maskParams.y,x);}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){float mask=linearGradientMask(vUv2.y);vec4 texel=texture2D(map,uv);outputColor=mix(texel,inputColor,mask);}\";\n\n// src/effects/glsl/tilt-shift.vert\nvar tilt_shift_default2 = \"uniform vec2 rotation;varying vec2 vUv2;void mainSupport(const in vec2 uv){vUv2=(uv-0.5)*2.0*vec2(aspect,1.0);vUv2=vec2(dot(rotation,vUv2),dot(rotation,vec2(vUv2.y,-vUv2.x)));}\";\n\n// src/effects/TiltShiftEffect.js\nvar TiltShiftEffect = class extends Effect {\n /**\n * Constructs a new tilt shift Effect\n *\n * @param {Object} [options] - The options.\n * @param {BlendFunction} [options.blendFunction] - The blend function of this effect.\n * @param {Number} [options.offset=0.0] - The relative offset of the focus area.\n * @param {Number} [options.rotation=0.0] - The rotation of the focus area in radians.\n * @param {Number} [options.focusArea=0.4] - The relative size of the focus area.\n * @param {Number} [options.feather=0.3] - The softness of the focus area edges.\n * @param {Number} [options.bias=0.06] - Deprecated.\n * @param {KernelSize} [options.kernelSize=KernelSize.MEDIUM] - The blur kernel size.\n * @param {Number} [options.resolutionScale=0.5] - The resolution scale.\n * @param {Number} [options.resolutionX=Resolution.AUTO_SIZE] - The horizontal resolution.\n * @param {Number} [options.resolutionY=Resolution.AUTO_SIZE] - The vertical resolution.\n */\n constructor({\n blendFunction,\n offset = 0,\n rotation = 0,\n focusArea = 0.4,\n feather = 0.3,\n kernelSize = KernelSize.MEDIUM,\n resolutionScale = 0.5,\n resolutionX = Resolution.AUTO_SIZE,\n resolutionY = Resolution.AUTO_SIZE\n } = {}) {\n super(\"TiltShiftEffect\", tilt_shift_default, {\n vertexShader: tilt_shift_default2,\n blendFunction,\n uniforms: /* @__PURE__ */ new Map([\n [\"rotation\", new Uniform48(new Vector227())],\n [\"maskParams\", new Uniform48(new Vector227())],\n [\"map\", new Uniform48(null)]\n ])\n });\n this._offset = offset;\n this._focusArea = focusArea;\n this._feather = feather;\n this.renderTarget = new WebGLRenderTarget22(1, 1, { depthBuffer: false });\n this.renderTarget.texture.name = \"TiltShift.Target\";\n this.uniforms.get(\"map\").value = this.renderTarget.texture;\n this.blurPass = new TiltShiftBlurPass({\n kernelSize,\n resolutionScale,\n resolutionX,\n resolutionY,\n offset,\n rotation,\n focusArea,\n feather\n });\n const resolution = this.resolution = new Resolution(this, resolutionX, resolutionY, resolutionScale);\n resolution.addEventListener(\"change\", (e) => this.setSize(resolution.baseWidth, resolution.baseHeight));\n this.rotation = rotation;\n this.updateParams();\n }\n /**\n * Updates the mask params.\n *\n * @private\n */\n updateParams() {\n const params = this.uniforms.get(\"maskParams\").value;\n const x = Math.max(this.focusArea - this.feather, 0);\n params.set(this.offset - x, this.offset + x);\n }\n /**\n * The rotation of the focus area in radians.\n *\n * @type {Number}\n */\n get rotation() {\n return Math.acos(this.uniforms.get(\"rotation\").value.x);\n }\n set rotation(value) {\n this.uniforms.get(\"rotation\").value.set(Math.cos(value), Math.sin(value));\n this.blurPass.blurMaterial.rotation = value;\n }\n /**\n * The relative offset of the focus area.\n *\n * @type {Number}\n */\n get offset() {\n return this._offset;\n }\n set offset(value) {\n this._offset = value;\n this.blurPass.blurMaterial.offset = value;\n this.updateParams();\n }\n /**\n * The relative size of the focus area.\n *\n * @type {Number}\n */\n get focusArea() {\n return this._focusArea;\n }\n set focusArea(value) {\n this._focusArea = value;\n this.blurPass.blurMaterial.focusArea = value;\n this.updateParams();\n }\n /**\n * The softness of the focus area edges.\n *\n * @type {Number}\n */\n get feather() {\n return this._feather;\n }\n set feather(value) {\n this._feather = value;\n this.blurPass.blurMaterial.feather = value;\n this.updateParams();\n }\n /**\n * A blend bias.\n *\n * @type {Number}\n * @deprecated\n */\n get bias() {\n return 0;\n }\n set bias(value) {\n }\n /**\n * Updates this effect.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n */\n update(renderer, inputBuffer, deltaTime) {\n this.blurPass.render(renderer, inputBuffer, this.renderTarget);\n }\n /**\n * Updates the size of internal render targets.\n *\n * @param {Number} width - The width.\n * @param {Number} height - The height.\n */\n setSize(width, height) {\n const resolution = this.resolution;\n resolution.setBaseSize(width, height);\n this.renderTarget.setSize(resolution.width, resolution.height);\n this.blurPass.resolution.copy(resolution);\n }\n /**\n * Performs initialization tasks.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {Boolean} alpha - Whether the renderer uses the alpha channel or not.\n * @param {Number} frameBufferType - The type of the main frame buffers.\n */\n initialize(renderer, alpha, frameBufferType) {\n this.blurPass.initialize(renderer, alpha, frameBufferType);\n if (frameBufferType !== void 0) {\n this.renderTarget.texture.type = frameBufferType;\n if (getOutputColorSpace(renderer) === SRGBColorSpace) {\n setTextureColorSpace(this.renderTarget.texture, SRGBColorSpace);\n }\n }\n }\n};\n\n// src/effects/ToneMappingEffect.js\nimport { LinearMipmapLinearFilter, Uniform as Uniform49, WebGLRenderTarget as WebGLRenderTarget23 } from \"three\";\n\n// src/effects/glsl/tone-mapping.frag\nvar tone_mapping_default = \"#include \\n#if THREE_REVISION < 143\\n#define luminance(v) linearToRelativeLuminance(v)\\n#endif\\nuniform float whitePoint;\\n#if TONE_MAPPING_MODE == 1 || TONE_MAPPING_MODE == 2\\nuniform float middleGrey;\\n#if TONE_MAPPING_MODE == 2\\nuniform lowp sampler2D luminanceBuffer;\\n#else\\nuniform float averageLuminance;\\n#endif\\nvec3 Reinhard2ToneMapping(vec3 color){color*=toneMappingExposure;float l=luminance(color);\\n#if TONE_MAPPING_MODE == 2\\nfloat lumAvg=unpackRGBAToFloat(texture2D(luminanceBuffer,vec2(0.5)));\\n#else\\nfloat lumAvg=averageLuminance;\\n#endif\\nfloat lumScaled=(l*middleGrey)/max(lumAvg,1e-6);float lumCompressed=lumScaled*(1.0+lumScaled/(whitePoint*whitePoint));lumCompressed/=(1.0+lumScaled);return clamp(lumCompressed*color,0.0,1.0);}\\n#elif TONE_MAPPING_MODE == 5\\n#define A 0.15\\n#define B 0.50\\n#define C 0.10\\n#define D 0.20\\n#define E 0.02\\n#define F 0.30\\nvec3 Uncharted2Helper(const in vec3 x){return((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F;}vec3 Uncharted2ToneMapping(vec3 color){color*=toneMappingExposure;return clamp(Uncharted2Helper(color)/Uncharted2Helper(vec3(whitePoint)),0.0,1.0);}\\n#endif\\nvoid mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){\\n#if TONE_MAPPING_MODE == 1 || TONE_MAPPING_MODE == 2\\noutputColor=vec4(Reinhard2ToneMapping(inputColor.rgb),inputColor.a);\\n#elif TONE_MAPPING_MODE == 5\\noutputColor=vec4(Uncharted2ToneMapping(inputColor.rgb),inputColor.a);\\n#else\\noutputColor=vec4(toneMapping(inputColor.rgb),inputColor.a);\\n#endif\\n}\";\n\n// src/effects/ToneMappingEffect.js\nvar ToneMappingEffect = class extends Effect {\n /**\n * Constructs a new tone mapping effect.\n *\n * The additional parameters only affect the Reinhard2 operator.\n *\n * @param {Object} [options] - The options.\n * @param {BlendFunction} [options.blendFunction=BlendFunction.SRC] - The blend function of this effect.\n * @param {Boolean} [options.adaptive=false] - Deprecated. Use mode instead.\n * @param {ToneMappingMode} [options.mode=ToneMappingMode.ACES_FILMIC] - The tone mapping mode.\n * @param {Number} [options.resolution=256] - The resolution of the luminance texture. Must be a power of two.\n * @param {Number} [options.maxLuminance=4.0] - Deprecated. Same as whitePoint.\n * @param {Number} [options.whitePoint=4.0] - The white point.\n * @param {Number} [options.middleGrey=0.6] - The middle grey factor.\n * @param {Number} [options.minLuminance=0.01] - The minimum luminance. Prevents very high exposure in dark scenes.\n * @param {Number} [options.averageLuminance=1.0] - The average luminance. Used for the non-adaptive Reinhard operator.\n * @param {Number} [options.adaptationRate=1.0] - The luminance adaptation rate.\n */\n constructor({\n blendFunction = BlendFunction.SRC,\n adaptive = false,\n mode = adaptive ? ToneMappingMode.REINHARD2_ADAPTIVE : ToneMappingMode.ACES_FILMIC,\n resolution = 256,\n maxLuminance = 4,\n whitePoint = maxLuminance,\n middleGrey = 0.6,\n minLuminance = 0.01,\n averageLuminance = 1,\n adaptationRate = 1\n } = {}) {\n super(\"ToneMappingEffect\", tone_mapping_default, {\n blendFunction,\n uniforms: /* @__PURE__ */ new Map([\n [\"luminanceBuffer\", new Uniform49(null)],\n [\"maxLuminance\", new Uniform49(maxLuminance)],\n // Unused\n [\"whitePoint\", new Uniform49(whitePoint)],\n [\"middleGrey\", new Uniform49(middleGrey)],\n [\"averageLuminance\", new Uniform49(averageLuminance)]\n ])\n });\n this.renderTargetLuminance = new WebGLRenderTarget23(1, 1, {\n minFilter: LinearMipmapLinearFilter,\n depthBuffer: false\n });\n this.renderTargetLuminance.texture.generateMipmaps = true;\n this.renderTargetLuminance.texture.name = \"Luminance\";\n this.luminancePass = new LuminancePass({\n renderTarget: this.renderTargetLuminance\n });\n this.adaptiveLuminancePass = new AdaptiveLuminancePass(this.luminancePass.texture, {\n minLuminance,\n adaptationRate\n });\n this.uniforms.get(\"luminanceBuffer\").value = this.adaptiveLuminancePass.texture;\n this.resolution = resolution;\n this.mode = mode;\n }\n /**\n * The tone mapping mode.\n *\n * @type {ToneMappingMode}\n */\n get mode() {\n return Number(this.defines.get(\"TONE_MAPPING_MODE\"));\n }\n set mode(value) {\n if (this.mode !== value) {\n this.defines.clear();\n this.defines.set(\"TONE_MAPPING_MODE\", value.toFixed(0));\n switch (value) {\n case ToneMappingMode.REINHARD:\n this.defines.set(\"toneMapping(texel)\", \"ReinhardToneMapping(texel)\");\n break;\n case ToneMappingMode.OPTIMIZED_CINEON:\n this.defines.set(\"toneMapping(texel)\", \"OptimizedCineonToneMapping(texel)\");\n break;\n case ToneMappingMode.ACES_FILMIC:\n this.defines.set(\"toneMapping(texel)\", \"ACESFilmicToneMapping(texel)\");\n break;\n default:\n this.defines.set(\"toneMapping(texel)\", \"texel\");\n break;\n }\n this.adaptiveLuminancePass.enabled = value === ToneMappingMode.REINHARD2_ADAPTIVE;\n this.setChanged();\n }\n }\n /**\n * Returns the current tone mapping mode.\n *\n * @deprecated Use mode instead.\n * @return {ToneMappingMode} The tone mapping mode.\n */\n getMode() {\n return this.mode;\n }\n /**\n * Sets the tone mapping mode.\n *\n * @deprecated Use mode instead.\n * @param {ToneMappingMode} value - The tone mapping mode.\n */\n setMode(value) {\n this.mode = value;\n }\n /**\n * The white point. Default is `4.0`.\n *\n * Only applies to Reinhard2 (Modified & Adaptive).\n *\n * @type {Number}\n */\n get whitePoint() {\n return this.uniforms.get(\"whitePoint\").value;\n }\n set whitePoint(value) {\n this.uniforms.get(\"whitePoint\").value = value;\n }\n /**\n * The middle grey factor. Default is `0.6`.\n *\n * Only applies to Reinhard2 (Modified & Adaptive).\n *\n * @type {Number}\n */\n get middleGrey() {\n return this.uniforms.get(\"middleGrey\").value;\n }\n set middleGrey(value) {\n this.uniforms.get(\"middleGrey\").value = value;\n }\n /**\n * The average luminance.\n *\n * Only applies to Reinhard2 (Modified).\n *\n * @type {Number}\n */\n get averageLuminance() {\n return this.uniforms.get(\"averageLuminance\").value;\n }\n set averageLuminance(value) {\n this.uniforms.get(\"averageLuminance\").value = value;\n }\n /**\n * The adaptive luminance material.\n *\n * @type {AdaptiveLuminanceMaterial}\n */\n get adaptiveLuminanceMaterial() {\n return this.adaptiveLuminancePass.fullscreenMaterial;\n }\n /**\n * Returns the adaptive luminance material.\n *\n * @deprecated Use adaptiveLuminanceMaterial instead.\n * @return {AdaptiveLuminanceMaterial} The material.\n */\n getAdaptiveLuminanceMaterial() {\n return this.adaptiveLuminanceMaterial;\n }\n /**\n * The resolution of the luminance texture. Must be a power of two.\n *\n * @type {Number}\n */\n get resolution() {\n return this.luminancePass.resolution.width;\n }\n set resolution(value) {\n const exponent = Math.max(0, Math.ceil(Math.log2(value)));\n const size = Math.pow(2, exponent);\n this.luminancePass.resolution.setPreferredSize(size, size);\n this.adaptiveLuminanceMaterial.mipLevel1x1 = exponent;\n }\n /**\n * Returns the resolution of the luminance texture.\n *\n * @deprecated Use resolution instead.\n * @return {Number} The resolution.\n */\n getResolution() {\n return this.resolution;\n }\n /**\n * Sets the resolution of the luminance texture. Must be a power of two.\n *\n * @deprecated Use resolution instead.\n * @param {Number} value - The resolution.\n */\n setResolution(value) {\n this.resolution = value;\n }\n /**\n * Indicates whether this pass uses adaptive luminance.\n *\n * @type {Boolean}\n * @deprecated Use mode instead.\n */\n get adaptive() {\n return this.mode === ToneMappingMode.REINHARD2_ADAPTIVE;\n }\n set adaptive(value) {\n this.mode = value ? ToneMappingMode.REINHARD2_ADAPTIVE : ToneMappingMode.REINHARD2;\n }\n /**\n * The luminance adaptation rate.\n *\n * @type {Number}\n * @deprecated Use adaptiveLuminanceMaterial.adaptationRate instead.\n */\n get adaptationRate() {\n return this.adaptiveLuminanceMaterial.adaptationRate;\n }\n set adaptationRate(value) {\n this.adaptiveLuminanceMaterial.adaptationRate = value;\n }\n /**\n * @type {Number}\n * @deprecated\n */\n get distinction() {\n console.warn(this.name, \"distinction was removed.\");\n return 1;\n }\n set distinction(value) {\n console.warn(this.name, \"distinction was removed.\");\n }\n /**\n * Updates this effect.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\n * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\n */\n update(renderer, inputBuffer, deltaTime) {\n if (this.adaptiveLuminancePass.enabled) {\n this.luminancePass.render(renderer, inputBuffer);\n this.adaptiveLuminancePass.render(renderer, null, null, deltaTime);\n }\n }\n /**\n * Performs initialization tasks.\n *\n * @param {WebGLRenderer} renderer - The renderer.\n * @param {Boolean} alpha - Whether the renderer uses the alpha channel or not.\n * @param {Number} frameBufferType - The type of the main frame buffers.\n */\n initialize(renderer, alpha, frameBufferType) {\n this.adaptiveLuminancePass.initialize(renderer, alpha, frameBufferType);\n }\n};\n\n// src/effects/VignetteEffect.js\nimport { Uniform as Uniform50 } from \"three\";\n\n// src/effects/glsl/vignette.frag\nvar vignette_default = \"uniform float offset;uniform float darkness;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){const vec2 center=vec2(0.5);vec3 color=inputColor.rgb;\\n#if VIGNETTE_TECHNIQUE == 0\\nfloat d=distance(uv,center);color*=smoothstep(0.8,offset*0.799,d*(darkness+offset));\\n#else\\nvec2 coord=(uv-center)*vec2(offset);color=mix(color,vec3(1.0-darkness),dot(coord,coord));\\n#endif\\noutputColor=vec4(color,inputColor.a);}\";\n\n// src/effects/VignetteEffect.js\nvar VignetteEffect = class extends Effect {\n /**\n * Constructs a new Vignette effect.\n *\n * @param {Object} [options] - The options.\n * @param {BlendFunction} [options.blendFunction] - The blend function of this effect.\n * @param {VignetteTechnique} [options.technique=VignetteTechnique.DEFAULT] - The Vignette technique.\n * @param {Boolean} [options.eskil=false] - Deprecated. Use technique instead.\n * @param {Number} [options.offset=0.5] - The Vignette offset.\n * @param {Number} [options.darkness=0.5] - The Vignette darkness.\n */\n constructor({\n blendFunction,\n technique = VignetteTechnique.DEFAULT,\n eskil = false,\n offset = 0.5,\n darkness = 0.5\n } = {}) {\n super(\"VignetteEffect\", vignette_default, {\n blendFunction,\n defines: /* @__PURE__ */ new Map([\n [\"VIGNETTE_TECHNIQUE\", technique.toFixed(0)]\n ]),\n uniforms: /* @__PURE__ */ new Map([\n [\"offset\", new Uniform50(offset)],\n [\"darkness\", new Uniform50(darkness)]\n ])\n });\n }\n /**\n * The Vignette technique.\n *\n * @type {VignetteTechnique}\n */\n get technique() {\n return Number(this.defines.get(\"VIGNETTE_TECHNIQUE\"));\n }\n set technique(value) {\n if (this.technique !== value) {\n this.defines.set(\"VIGNETTE_TECHNIQUE\", value.toFixed(0));\n this.setChanged();\n }\n }\n /**\n * Indicates whether Eskil's Vignette technique is enabled.\n *\n * @type {Boolean}\n * @deprecated Use technique instead.\n */\n get eskil() {\n return this.technique === VignetteTechnique.ESKIL;\n }\n /**\n * Indicates whether Eskil's Vignette technique is enabled.\n *\n * @type {Boolean}\n * @deprecated Use technique instead.\n */\n set eskil(value) {\n this.technique = value ? VignetteTechnique.ESKIL : VignetteTechnique.DEFAULT;\n }\n /**\n * Returns the Vignette technique.\n *\n * @deprecated Use technique instead.\n * @return {VignetteTechnique} The technique.\n */\n getTechnique() {\n return this.technique;\n }\n /**\n * Sets the Vignette technique.\n *\n * @deprecated Use technique instead.\n * @param {VignetteTechnique} value - The technique.\n */\n setTechnique(value) {\n this.technique = value;\n }\n /**\n * The Vignette offset.\n *\n * @type {Number}\n */\n get offset() {\n return this.uniforms.get(\"offset\").value;\n }\n set offset(value) {\n this.uniforms.get(\"offset\").value = value;\n }\n /**\n * Returns the Vignette offset.\n *\n * @deprecated Use offset instead.\n * @return {Number} The offset.\n */\n getOffset() {\n return this.offset;\n }\n /**\n * Sets the Vignette offset.\n *\n * @deprecated Use offset instead.\n * @param {Number} value - The offset.\n */\n setOffset(value) {\n this.offset = value;\n }\n /**\n * The Vignette darkness.\n *\n * @type {Number}\n */\n get darkness() {\n return this.uniforms.get(\"darkness\").value;\n }\n set darkness(value) {\n this.uniforms.get(\"darkness\").value = value;\n }\n /**\n * Returns the Vignette darkness.\n *\n * @deprecated Use darkness instead.\n * @return {Number} The darkness.\n */\n getDarkness() {\n return this.darkness;\n }\n /**\n * Sets the Vignette darkness.\n *\n * @deprecated Use darkness instead.\n * @param {Number} value - The darkness.\n */\n setDarkness(value) {\n this.darkness = value;\n }\n};\n\n// src/loaders/LUT3dlLoader.js\nimport { FileLoader, Loader, LoadingManager as LoadingManager3 } from \"three\";\nvar LUT3dlLoader = class extends Loader {\n /**\n * Loads a LUT.\n *\n * @param {String} url - The URL of the 3dl-file.\n * @param {Function} [onLoad] - A callback that receives the loaded lookup texture.\n * @param {Function} [onProgress] - A progress callback that receives the XMLHttpRequest instance.\n * @param {Function} [onError] - An error callback that receives the URL of the file that failed to load.\n * @return {Promise} A promise that returns the lookup texture.\n */\n load(url, onLoad = () => {\n }, onProgress = () => {\n }, onError = null) {\n const externalManager = this.manager;\n const internalManager = new LoadingManager3();\n const loader = new FileLoader(internalManager);\n loader.setPath(this.path);\n loader.setResponseType(\"text\");\n return new Promise((resolve, reject) => {\n internalManager.onError = (url2) => {\n externalManager.itemError(url2);\n if (onError !== null) {\n onError(`Failed to load ${url2}`);\n resolve();\n } else {\n reject(`Failed to load ${url2}`);\n }\n };\n externalManager.itemStart(url);\n loader.load(url, (data) => {\n try {\n const result = this.parse(data);\n externalManager.itemEnd(url);\n onLoad(result);\n resolve(result);\n } catch (e) {\n console.error(e);\n internalManager.onError(url);\n }\n }, onProgress);\n });\n }\n /**\n * Parses the given data.\n *\n * @param {String} input - The LUT data.\n * @return {LookupTexture} The lookup texture.\n * @throws {Error} Fails if the data is invalid.\n */\n parse(input) {\n const regExpGridInfo = /^[\\d ]+$/m;\n const regExpDataPoints = /^([\\d.e+-]+) +([\\d.e+-]+) +([\\d.e+-]+) *$/gm;\n let result = regExpGridInfo.exec(input);\n if (result === null) {\n throw new Error(\"Missing grid information\");\n }\n const gridLines = result[0].trim().split(/\\s+/g).map((n) => Number(n));\n const gridStep = gridLines[1] - gridLines[0];\n const size = gridLines.length;\n const sizeSq = size ** 2;\n for (let i = 1, l = gridLines.length; i < l; ++i) {\n if (gridStep !== gridLines[i] - gridLines[i - 1]) {\n throw new Error(\"Inconsistent grid size\");\n }\n }\n const data = new Float32Array(size ** 3 * 4);\n let maxValue = 0;\n let index = 0;\n while ((result = regExpDataPoints.exec(input)) !== null) {\n const r = Number(result[1]);\n const g = Number(result[2]);\n const b = Number(result[3]);\n maxValue = Math.max(maxValue, r, g, b);\n const bLayer = index % size;\n const gLayer = Math.floor(index / size) % size;\n const rLayer = Math.floor(index / sizeSq) % size;\n const d4 = (bLayer * sizeSq + gLayer * size + rLayer) * 4;\n data[d4 + 0] = r;\n data[d4 + 1] = g;\n data[d4 + 2] = b;\n data[d4 + 3] = 1;\n ++index;\n }\n const bits = Math.ceil(Math.log2(maxValue));\n const maxBitValue = Math.pow(2, bits);\n for (let i = 0, l = data.length; i < l; i += 4) {\n data[i + 0] /= maxBitValue;\n data[i + 1] /= maxBitValue;\n data[i + 2] /= maxBitValue;\n }\n return new LookupTexture(data, size);\n }\n};\n\n// src/loaders/LUTCubeLoader.js\nimport { FileLoader as FileLoader2, Loader as Loader2, LoadingManager as LoadingManager4, Vector3 as Vector37 } from \"three\";\nvar LUTCubeLoader = class extends Loader2 {\n /**\n * Loads a LUT.\n *\n * @param {String} url - The URL of the CUBE-file.\n * @param {Function} [onLoad] - A callback that receives the loaded lookup texture.\n * @param {Function} [onProgress] - A progress callback that receives the XMLHttpRequest instance.\n * @param {Function} [onError] - An error callback that receives the URL of the file that failed to load.\n * @return {Promise} A promise that returns the lookup texture.\n */\n load(url, onLoad = () => {\n }, onProgress = () => {\n }, onError = null) {\n const externalManager = this.manager;\n const internalManager = new LoadingManager4();\n const loader = new FileLoader2(internalManager);\n loader.setPath(this.path);\n loader.setResponseType(\"text\");\n return new Promise((resolve, reject) => {\n internalManager.onError = (url2) => {\n externalManager.itemError(url2);\n if (onError !== null) {\n onError(`Failed to load ${url2}`);\n resolve();\n } else {\n reject(`Failed to load ${url2}`);\n }\n };\n externalManager.itemStart(url);\n loader.load(url, (data) => {\n try {\n const result = this.parse(data);\n externalManager.itemEnd(url);\n onLoad(result);\n resolve(result);\n } catch (e) {\n console.error(e);\n internalManager.onError(url);\n }\n }, onProgress);\n });\n }\n /**\n * Parses the given data.\n *\n * @param {String} input - The LUT data.\n * @return {LookupTexture} The lookup texture.\n * @throws {Error} Fails if the data is invalid.\n */\n parse(input) {\n const regExpTitle = /TITLE +\"([^\"]*)\"/;\n const regExpSize = /LUT_3D_SIZE +(\\d+)/;\n const regExpDomainMin = /DOMAIN_MIN +([\\d.]+) +([\\d.]+) +([\\d.]+)/;\n const regExpDomainMax = /DOMAIN_MAX +([\\d.]+) +([\\d.]+) +([\\d.]+)/;\n const regExpDataPoints = /^([\\d.e+-]+) +([\\d.e+-]+) +([\\d.e+-]+) *$/gm;\n let result = regExpTitle.exec(input);\n const title = result !== null ? result[1] : null;\n result = regExpSize.exec(input);\n if (result === null) {\n throw new Error(\"Missing LUT_3D_SIZE information\");\n }\n const size = Number(result[1]);\n const data = new Float32Array(size ** 3 * 4);\n const domainMin = new Vector37(0, 0, 0);\n const domainMax = new Vector37(1, 1, 1);\n result = regExpDomainMin.exec(input);\n if (result !== null) {\n domainMin.set(Number(result[1]), Number(result[2]), Number(result[3]));\n }\n result = regExpDomainMax.exec(input);\n if (result !== null) {\n domainMax.set(Number(result[1]), Number(result[2]), Number(result[3]));\n }\n if (domainMin.x > domainMax.x || domainMin.y > domainMax.y || domainMin.z > domainMax.z) {\n domainMin.set(0, 0, 0);\n domainMax.set(1, 1, 1);\n throw new Error(\"Invalid input domain\");\n }\n let i = 0;\n while ((result = regExpDataPoints.exec(input)) !== null) {\n data[i++] = Number(result[1]);\n data[i++] = Number(result[2]);\n data[i++] = Number(result[3]);\n data[i++] = 1;\n }\n const lut = new LookupTexture(data, size);\n lut.domainMin.copy(domainMin);\n lut.domainMax.copy(domainMax);\n if (title !== null) {\n lut.name = title;\n }\n return lut;\n }\n};\n\n// src/loaders/SMAAImageLoader.js\nimport { Loader as Loader3, LoadingManager as LoadingManager5 } from \"three\";\nvar SMAAImageLoader = class extends Loader3 {\n /**\n * Loads the SMAA data images.\n *\n * @param {Function} [onLoad] - A callback that receives the search image and area image as a pair.\n * @param {Function} [onError] - An error callback that receives the URL of the image that failed to load.\n * @return {Promise} A promise that returns the search image and area image as a pair.\n */\n load(onLoad = () => {\n }, onError = null) {\n if (arguments.length === 4) {\n onLoad = arguments[1];\n onError = arguments[3];\n } else if (arguments.length === 3 || typeof arguments[0] !== \"function\") {\n onLoad = arguments[1];\n onError = null;\n }\n const externalManager = this.manager;\n const internalManager = new LoadingManager5();\n return new Promise((resolve, reject) => {\n const searchImage = new Image();\n const areaImage = new Image();\n internalManager.onError = (url) => {\n externalManager.itemError(url);\n if (onError !== null) {\n onError(`Failed to load ${url}`);\n resolve();\n } else {\n reject(`Failed to load ${url}`);\n }\n };\n internalManager.onLoad = () => {\n const result = [searchImage, areaImage];\n onLoad(result);\n resolve(result);\n };\n searchImage.addEventListener(\"error\", (e) => {\n internalManager.itemError(\"smaa-search\");\n });\n areaImage.addEventListener(\"error\", (e) => {\n internalManager.itemError(\"smaa-area\");\n });\n searchImage.addEventListener(\"load\", () => {\n externalManager.itemEnd(\"smaa-search\");\n internalManager.itemEnd(\"smaa-search\");\n });\n areaImage.addEventListener(\"load\", () => {\n externalManager.itemEnd(\"smaa-area\");\n internalManager.itemEnd(\"smaa-area\");\n });\n externalManager.itemStart(\"smaa-search\");\n externalManager.itemStart(\"smaa-area\");\n internalManager.itemStart(\"smaa-search\");\n internalManager.itemStart(\"smaa-area\");\n searchImage.src = searchImageDataURL_default;\n areaImage.src = areaImageDataURL_default;\n });\n }\n};\nexport {\n AdaptiveLuminanceMaterial,\n AdaptiveLuminancePass,\n BlendFunction,\n BlendMode,\n BloomEffect,\n KawaseBlurPass as BlurPass,\n BokehEffect,\n BokehMaterial,\n BoxBlurMaterial,\n BoxBlurPass,\n BrightnessContrastEffect,\n ChromaticAberrationEffect,\n CircleOfConfusionMaterial,\n ClearMaskPass,\n ClearPass,\n ColorAverageEffect,\n ColorChannel,\n ColorDepthEffect,\n EdgeDetectionMaterial as ColorEdgesMaterial,\n KawaseBlurMaterial as ConvolutionMaterial,\n CopyMaterial,\n CopyPass,\n DepthComparisonMaterial,\n DepthCopyMaterial,\n DepthCopyMode,\n DepthCopyPass,\n DepthDownsamplingMaterial,\n DepthDownsamplingPass,\n DepthEffect,\n DepthMaskMaterial,\n DepthOfFieldEffect,\n DepthPass,\n DepthPickingPass,\n DepthCopyPass as DepthSavePass,\n DepthTestStrategy,\n DisplayP3ColorSpace,\n Disposable,\n DotScreenEffect,\n DownsamplingMaterial,\n EdgeDetectionMaterial,\n EdgeDetectionMode,\n Effect,\n EffectAttribute,\n EffectComposer,\n EffectMaterial,\n EffectPass,\n EffectShaderData,\n EffectShaderSection,\n FXAAEffect,\n GammaCorrectionEffect,\n GaussKernel,\n GaussianBlurMaterial,\n GaussianBlurPass,\n GlitchEffect,\n GlitchMode,\n GodRaysEffect,\n GodRaysMaterial,\n GridEffect,\n HueSaturationEffect,\n ImmutableTimer,\n Initializable,\n KawaseBlurMaterial,\n KawaseBlurPass,\n KernelSize,\n LUT1DEffect,\n LUT3DEffect,\n LUT3dlLoader,\n LUTCubeLoader,\n LUT3DEffect as LUTEffect,\n LUTOperation,\n LambdaPass,\n LensDistortionEffect,\n LinearSRGBColorSpace,\n LookupTexture,\n LookupTexture as LookupTexture3D,\n LuminanceMaterial,\n LuminancePass,\n MaskFunction,\n MaskMaterial,\n MaskPass,\n MipmapBlurPass,\n NoColorSpace,\n NoiseEffect,\n NoiseTexture,\n NormalPass,\n OutlineMaterial as OutlineEdgesMaterial,\n OutlineEffect,\n OutlineMaterial,\n OverrideMaterialManager,\n Pass,\n PixelationEffect,\n PredicationMode,\n RawImageData,\n RealisticBokehEffect,\n RenderPass,\n Resizable,\n Resolution as Resizer,\n Resolution,\n SMAAAreaImageData,\n SMAAEffect,\n SMAAImageGenerator,\n SMAAImageLoader,\n SMAAPreset,\n SMAASearchImageData,\n SMAAWeightsMaterial,\n SRGBColorSpace,\n SSAOEffect,\n SSAOMaterial,\n CopyPass as SavePass,\n ScanlineEffect,\n EffectShaderSection as Section,\n Selection,\n SelectiveBloomEffect,\n SepiaEffect,\n ShaderPass,\n ShockWaveEffect,\n TetrahedralUpscaler,\n TextureEffect,\n TiltShiftBlurMaterial,\n TiltShiftBlurPass,\n TiltShiftEffect,\n Timer,\n ToneMappingEffect,\n ToneMappingMode,\n UpsamplingMaterial,\n VignetteEffect,\n VignetteTechnique,\n WebGLExtension,\n version\n};\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nexport { _objectSpread2 as _, _defineProperty as a };\n","import { a as _isNativeReflectConstruct, _ as _setPrototypeOf } from './isNativeReflectConstruct-5594d075.esm.js';\nimport { Vector2, Matrix4 } from 'three';\nimport { d as determinant3, g as getMinor } from './matrix-baa530bf.esm.js';\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\n/**\n *\n * @param point\n *\n * @param triangle\n *\n * @returns {boolean} true if the point is in the triangle\n *\n * TODO: Find explainer\n */\nfunction isPointInTriangle(point, triangle) {\n var _triangle$ = _slicedToArray(triangle[0], 2),\n ax = _triangle$[0],\n ay = _triangle$[1];\n\n var _triangle$2 = _slicedToArray(triangle[1], 2),\n bx = _triangle$2[0],\n by = _triangle$2[1];\n\n var _triangle$3 = _slicedToArray(triangle[2], 2),\n cx = _triangle$3[0],\n cy = _triangle$3[1];\n\n var _point = _slicedToArray(point, 2),\n px = _point[0],\n py = _point[1]; // TODO Sub with static calc\n\n\n var matrix = new Matrix4(); // prettier-ignore\n\n matrix.set(ax, ay, ax * ax + ay * ay, 1, bx, by, bx * bx + by * by, 1, cx, cy, cx * cx + cy * cy, 1, px, py, px * px + py * py, 1);\n return matrix.determinant() <= 0;\n}\nfunction triangleDeterminant(triangle) {\n var _triangle$4 = _slicedToArray(triangle[0], 2),\n x1 = _triangle$4[0],\n y1 = _triangle$4[1];\n\n var _triangle$5 = _slicedToArray(triangle[1], 2),\n x2 = _triangle$5[0],\n y2 = _triangle$5[1];\n\n var _triangle$6 = _slicedToArray(triangle[2], 2),\n x3 = _triangle$6[0],\n y3 = _triangle$6[1]; // prettier-ignore\n\n\n return determinant3(x1, y1, 1, x2, y2, 1, x3, y3, 1);\n}\n/**\n * Uses triangle area determinant to check if 3 points are collinear.\n * If they are, they can't make a triangle, so the determinant will be 0!\n *\n * 0 1 2\n * ─────■─────■─────■\n *\n *\n * Fun fact, you can use this same determinant to check the order of the points in the triangle\n *\n * NOTE: Should this use a buffer instead? NOTE: Should this use a buffer instead? [x0, y0, x1, y1, x2, y2]?\n *\n */\n\nfunction arePointsCollinear(points) {\n return triangleDeterminant(points) === 0;\n} // TODO This is the same principle as the prev function, find a way to make it have sense\n\nfunction isTriangleClockwise(triangle) {\n return triangleDeterminant(triangle) < 0;\n}\n/**\n \nThe circumcircle is a circle touching all the vertices of a triangle or polygon.\n\n ┌───┐ \n │ B │ \n └───┘ \n .───●───. \n ,─' ╱ ╲ '─. \n ,' ╱ ╲ `. \n ╱ ╱ ╲ ╲ \n ; ╱ ╲ : \n │ ╱ ╲ │ \n │ ╱ ╲ │ \n : ╱ ╲ ; \n ╲ ╱ ╲ ╱ \n┌───┐ ●─────────────────● ┌───┐\n│ A │ `. ,' │ C │\n└───┘ '─. ,─' └───┘\n `─────' \n */\n\n/**\n *\n * @param triangle\n *\n * @returns {number} circumcircle\n */\n// https://math.stackexchange.com/a/1460096\n\nfunction getCircumcircle(triangle) {\n // TS-TODO the next few lines are ignored because the types aren't current to the change in vectors (that can now be iterated)\n // @ts-ignore\n var _triangle$7 = _slicedToArray(triangle[0], 2),\n ax = _triangle$7[0],\n ay = _triangle$7[1]; // @ts-ignore\n\n\n var _triangle$8 = _slicedToArray(triangle[1], 2),\n bx = _triangle$8[0],\n by = _triangle$8[1]; // @ts-ignore\n\n\n var _triangle$9 = _slicedToArray(triangle[2], 2),\n cx = _triangle$9[0],\n cy = _triangle$9[1];\n\n if (arePointsCollinear(triangle)) return null; // points are collinear\n\n var m = new Matrix4(); // prettier-ignore\n\n m.set(1, 1, 1, 1, ax * ax + ay * ay, ax, ay, 1, bx * bx + by * by, bx, by, 1, cx * cx + cy * cy, cx, cy, 1);\n var m11 = getMinor(m, 1, 1);\n var m13 = getMinor(m, 1, 3);\n var m12 = getMinor(m, 1, 2);\n var m14 = getMinor(m, 1, 4);\n var x0 = 0.5 * (m12 / m11);\n var y0 = 0.5 * (m13 / m11);\n var r2 = x0 * x0 + y0 * y0 + m14 / m11;\n return {\n x: Math.abs(x0) === 0 ? 0 : x0,\n y: Math.abs(y0) === 0 ? 0 : -y0,\n r: Math.sqrt(r2)\n };\n} // https://stackoverflow.com/questions/39984709/how-can-i-check-wether-a-point-is-inside-the-circumcircle-of-3-points\n\nfunction isPointInCircumcircle(point, triangle) {\n var _ref = Array.isArray(triangle[0]) ? triangle[0] : triangle[0].toArray(),\n _ref2 = _slicedToArray(_ref, 2),\n ax = _ref2[0],\n ay = _ref2[1];\n\n var _ref3 = Array.isArray(triangle[1]) ? triangle[1] : triangle[1].toArray(),\n _ref4 = _slicedToArray(_ref3, 2),\n bx = _ref4[0],\n by = _ref4[1];\n\n var _ref5 = Array.isArray(triangle[2]) ? triangle[2] : triangle[2].toArray(),\n _ref6 = _slicedToArray(_ref5, 2),\n cx = _ref6[0],\n cy = _ref6[1];\n\n var _point2 = _slicedToArray(point, 2),\n px = _point2[0],\n py = _point2[1];\n\n if (arePointsCollinear(triangle)) throw new Error(\"Collinear points don't form a triangle\");\n /**\n | ax-px, ay-py, (ax-px)² + (ay-py)² |\n det = | bx-px, by-py, (bx-px)² + (by-py)² |\n | cx-px, cy-py, (cx-px)² + (cy-py)² |\n */\n\n var x1mpx = ax - px;\n var aympy = ay - py;\n var bxmpx = bx - px;\n var bympy = by - py;\n var cxmpx = cx - px;\n var cympy = cy - py; // prettier-ignore\n\n var d = determinant3(x1mpx, aympy, x1mpx * x1mpx + aympy * aympy, bxmpx, bympy, bxmpx * bxmpx + bympy * bympy, cxmpx, cympy, cxmpx * cxmpx + cympy * cympy); // if d is 0, the point is on C\n\n if (d === 0) {\n return true;\n }\n\n return !isTriangleClockwise(triangle) ? d > 0 : d < 0;\n} // From https://algorithmtutor.com/Computational-Geometry/Determining-if-two-consecutive-segments-turn-left-or-right/\n\nvar mv1 = new Vector2();\nvar mv2 = new Vector2();\n/**\n \n ╱ ╲ \n ╱ ╲ \n ▕ ▏ \n \n right left \n\n * NOTE: Should this use a buffer instead? [x0, y0, x1, y1]?\n */\n\nfunction doThreePointsMakeARight(points) {\n var _points$map = points.map(function (p) {\n if (Array.isArray(p)) {\n return _construct(Vector2, _toConsumableArray(p));\n }\n\n return p;\n }),\n _points$map2 = _slicedToArray(_points$map, 3),\n p1 = _points$map2[0],\n p2 = _points$map2[1],\n p3 = _points$map2[2];\n\n if (arePointsCollinear(points)) return false; // @ts-ignore\n\n var p2p1 = mv1.subVectors(p2, p1); // @ts-ignore\n\n var p3p1 = mv2.subVectors(p3, p1);\n var cross = p3p1.cross(p2p1);\n return cross > 0;\n}\n\nvar triangle = /*#__PURE__*/Object.freeze({\n __proto__: null,\n isPointInTriangle: isPointInTriangle,\n triangleDeterminant: triangleDeterminant,\n arePointsCollinear: arePointsCollinear,\n isTriangleClockwise: isTriangleClockwise,\n getCircumcircle: getCircumcircle,\n isPointInCircumcircle: isPointInCircumcircle,\n doThreePointsMakeARight: doThreePointsMakeARight\n});\n\nexport { _slicedToArray as _, _toConsumableArray as a, triangleDeterminant as b, arePointsCollinear as c, doThreePointsMakeARight as d, isTriangleClockwise as e, isPointInCircumcircle as f, getCircumcircle as g, isPointInTriangle as i, triangle as t };\n","import { d as doThreePointsMakeARight, a as _toConsumableArray, _ as _slicedToArray } from './triangle-b62b9067.esm.js';\nimport { Vector3, Matrix3 } from 'three';\nimport { a as matrixSum3 } from './matrix-baa530bf.esm.js';\n\n/**\n * Clamps a value between a range.\n */\nfunction clamp(value, min, max) {\n return Math.max(min, Math.min(max, value));\n} // Loops the value t, so that it is never larger than length and never smaller than 0.\n\nfunction repeat(t, length) {\n return clamp(t - Math.floor(t / length) * length, 0, length);\n} // Calculates the shortest difference between two given angles.\n\n\nfunction deltaAngle(current, target) {\n var delta = repeat(target - current, Math.PI * 2);\n if (delta > Math.PI) delta -= Math.PI * 2;\n return delta;\n}\n/**\n * Converts degrees to radians.\n */\n\nfunction degToRad(degrees) {\n return degrees / 180 * Math.PI;\n}\n/**\n * Converts radians to degrees.\n */\n\nfunction radToDeg(radians) {\n return radians * 180 / Math.PI;\n} // adapted from https://gist.github.com/stephanbogner/a5f50548a06bec723dcb0991dcbb0856 by https://twitter.com/st_phan\n\nfunction fibonacciOnSphere(buffer, _ref) {\n var _ref$radius = _ref.radius,\n radius = _ref$radius === void 0 ? 1 : _ref$radius;\n var samples = buffer.length / 3;\n var offset = 2 / samples;\n var increment = Math.PI * (3 - 2.2360679775);\n\n for (var i = 0; i < buffer.length; i += 3) {\n var y = i * offset - 1 + offset / 2;\n var distance = Math.sqrt(1 - Math.pow(y, 2));\n var phi = i % samples * increment;\n var x = Math.cos(phi) * distance;\n var z = Math.sin(phi) * distance;\n buffer[i] = x * radius;\n buffer[i + 1] = y * radius;\n buffer[i + 2] = z * radius;\n }\n} // @ts-ignore\n\nfunction vectorEquals(a, b) {\n var eps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Number.EPSILON;\n return Math.abs(a.x - b.x) < eps && Math.abs(a.y - b.y) < eps && Math.abs(a.z - b.z) < eps;\n}\n/**\n * Sorts vectors in lexicographic order, works with both v2 and v3\n *\n * Use as:\n * const sorted = arrayOfVectors.sort(lexicographicOrder)\n */\n// https://en.wikipedia.org/wiki/Lexicographic_order\n\nfunction lexicographic(a, b) {\n if (a.x === b.x) {\n // do a check to see if points is 3D,\n // in which case add y eq check and sort by z\n if (typeof a.z !== \"undefined\") {\n if (a.y === b.y) {\n return a.z - b.z;\n }\n }\n\n return a.y - b.y;\n }\n\n return a.x - b.x;\n}\n/**\n * Convex Hull\n *\n * Returns an array of 2D Vectors representing the convex hull of a set of 2D Vectors\n */\n\n/**\n * Calculate the convex hull of a set of points\n */\n\nfunction convexHull(_points) {\n var points = _points.sort(lexicographic); // put p1 and p2 in a list lUpper with p1 as the first point\n\n\n var lUpper = [points[0], points[1]]; // for i <- 3 to n\n\n for (var i = 2; i < points.length; i++) {\n lUpper.push(points[i]); // while lUpper contains more than 2 points and the last three points in lUpper do not make a right turn\n\n while (lUpper.length > 2 && doThreePointsMakeARight(_toConsumableArray(lUpper.slice(-3)))) {\n // delete the middle of the last three points from lUpper\n lUpper.splice(lUpper.length - 2, 1);\n }\n } // put pn and pn-1 in a list lLower with pn as the first point\n\n\n var lLower = [points[points.length - 1], points[points.length - 2]]; // for (i <- n - 2 downto 1)\n\n for (var _i = points.length - 3; _i >= 0; _i--) {\n // append pi to lLower\n lLower.push(points[_i]); // while lLower contains more than 2 points and the last three points in lLower do not make a right turn\n\n while (lLower.length > 2 && doThreePointsMakeARight(_toConsumableArray(lLower.slice(-3)))) {\n // delete the middle of the last three points from lLower\n lLower.splice(lLower.length - 2, 1);\n }\n } // remove the first and last point from lLower to avoid duplication of the points where the upper and lower hull meet\n\n\n lLower.splice(0, 1);\n lLower.splice(lLower.length - 1, 1); // prettier-ignore\n\n var c = [].concat(lUpper, lLower);\n return c;\n}\nfunction remap(x, _ref2, _ref3) {\n var _ref4 = _slicedToArray(_ref2, 2),\n low1 = _ref4[0],\n high1 = _ref4[1];\n\n var _ref5 = _slicedToArray(_ref3, 2),\n low2 = _ref5[0],\n high2 = _ref5[1];\n\n return low2 + (x - low1) * (high2 - low2) / (high1 - low1);\n}\n/**\n *\n * https://www.desmos.com/calculator/vsnmlaljdu\n *\n * Ease-in-out, goes to -Infinite before 0 and Infinite after 1\n *\n * @param t\n * @returns\n */\n\nfunction fade(t) {\n return t * t * t * (t * (t * 6 - 15) + 10);\n}\n/**\n *\n * Returns the result of linearly interpolating between input A and input B by input T.\n *\n * @param v0\n * @param v1\n * @param t\n * @returns\n */\n\nfunction lerp(v0, v1, t) {\n return v0 * (1 - t) + v1 * t;\n}\n/**\n *\n * Returns the linear parameter that produces the interpolant specified by input T within the range of input A to input B.\n *\n * @param v0\n * @param v1\n * @param t\n * @returns\n */\n\nfunction inverseLerp(v0, v1, t) {\n return (t - v0) / (v1 - v0);\n}\n/**\n *\n */\n\nfunction normalize(x, y, z) {\n var m = Math.sqrt(x * x + y * y + z * z);\n return [x / m, y / m, z / m];\n}\n/**\n *\n */\n\nfunction pointOnCubeToPointOnSphere(x, y, z) {\n var x2 = x * x;\n var y2 = y * y;\n var z2 = z * z;\n var nx = x * Math.sqrt(1 - (y2 + z2) / 2 + y2 * z2 / 3);\n var ny = y * Math.sqrt(1 - (z2 + x2) / 2 + z2 * x2 / 3);\n var nz = z * Math.sqrt(1 - (x2 + y2) / 2 + x2 * y2 / 3);\n return [nx, ny, nz];\n} // https://math.stackexchange.com/questions/180418/calculate-rotation-matrix-to-align-vector-a-to-vector-b-in-3d\n\n/**\n * Give two unit vectors a and b, returns the transformation matrix that rotates a onto b.\n *\n * */\n\nfunction rotateVectorOnVector(a, b) {\n var v = new Vector3().crossVectors(a, b);\n var c = a.dot(b);\n var i = new Matrix3().identity(); // skew-symmetric cross-product matrix of 𝑣 https://en.wikipedia.org/wiki/Skew-symmetric_matrix\n // prettier-ignore\n\n var vx = new Matrix3().set(0, -v.z, v.y, v.z, 0, -v.x, -v.y, v.x, 0);\n var vxsquared = new Matrix3().multiplyMatrices(vx, vx).multiplyScalar(1 / (1 + c));\n\n var _final = matrixSum3(matrixSum3(i, vx), vxsquared);\n\n return _final;\n} // calculate latitude and longitude (in radians) from point on unit sphere\n\nfunction pointToCoordinate(x, y, z) {\n var lat = Math.asin(y);\n var lon = Math.atan2(x, -z);\n return [lat, lon];\n} // calculate point on unit sphere given latitude and logitude in radians\n\nfunction coordinateToPoint(lat, lon) {\n var y = Math.sin(lat);\n var r = Math.cos(lat);\n var x = Math.sin(lon) * r;\n var z = -Math.cos(lon) * r;\n return [x, y, z];\n}\n/**\n * Given a plane and a segment, return the intersection point if it exists or null it doesn't.\n */\n\nfunction planeSegmentIntersection(plane, segment) {\n var _segment = _slicedToArray(segment, 2),\n a = _segment[0],\n b = _segment[1];\n\n var matrix = rotateVectorOnVector(plane.normal, new Vector3(0, 1, 0));\n var t = inverseLerp(a.clone().applyMatrix3(matrix).y, b.clone().applyMatrix3(matrix).y, 0);\n return new Vector3().lerpVectors(a, b, t);\n}\n/**\n * Given a plane and a point, return the distance.\n */\n\nfunction pointToPlaneDistance(p, plane) {\n var d = plane.normal.dot(p); // TODO\n\n return d;\n}\nfunction getIndexFrom3D(coords, sides) {\n var _coords = _slicedToArray(coords, 3),\n ix = _coords[0],\n iy = _coords[1],\n iz = _coords[2];\n\n var _sides = _slicedToArray(sides, 2),\n rx = _sides[0],\n ry = _sides[1];\n\n return iz * rx * ry + iy * rx + ix;\n}\nfunction get3DFromIndex(index, size) {\n var _size = _slicedToArray(size, 2),\n rx = _size[0],\n ry = _size[1];\n\n var a = rx * ry;\n var z = index / a;\n var b = index - a * z;\n var y = b / rx;\n var x = b % rx;\n return [x, y, z];\n}\nfunction getIndexFrom2D(coords, size) {\n return coords[0] + size[0] * coords[1];\n}\nfunction get2DFromIndex(index, columns) {\n var x = index % columns;\n var y = Math.floor(index / columns);\n return [x, y];\n}\n\nvar misc = /*#__PURE__*/Object.freeze({\n __proto__: null,\n clamp: clamp,\n deltaAngle: deltaAngle,\n degToRad: degToRad,\n radToDeg: radToDeg,\n fibonacciOnSphere: fibonacciOnSphere,\n vectorEquals: vectorEquals,\n lexicographic: lexicographic,\n convexHull: convexHull,\n remap: remap,\n fade: fade,\n lerp: lerp,\n inverseLerp: inverseLerp,\n normalize: normalize,\n pointOnCubeToPointOnSphere: pointOnCubeToPointOnSphere,\n rotateVectorOnVector: rotateVectorOnVector,\n pointToCoordinate: pointToCoordinate,\n coordinateToPoint: coordinateToPoint,\n planeSegmentIntersection: planeSegmentIntersection,\n pointToPlaneDistance: pointToPlaneDistance,\n getIndexFrom3D: getIndexFrom3D,\n get3DFromIndex: get3DFromIndex,\n getIndexFrom2D: getIndexFrom2D,\n get2DFromIndex: get2DFromIndex\n});\n\nexport { degToRad as a, fibonacciOnSphere as b, clamp as c, deltaAngle as d, lexicographic as e, fade as f, convexHull as g, remap as h, inverseLerp as i, rotateVectorOnVector as j, pointToCoordinate as k, lerp as l, misc as m, normalize as n, coordinateToPoint as o, pointOnCubeToPointOnSphere as p, planeSegmentIntersection as q, radToDeg as r, pointToPlaneDistance as s, getIndexFrom3D as t, get3DFromIndex as u, vectorEquals as v, getIndexFrom2D as w, get2DFromIndex as x };\n","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nexport { _classCallCheck as _ };\n","import { a as _defineProperty, _ as _objectSpread2 } from './objectSpread2-284232a6.esm.js';\nimport { _ as _classCallCheck } from './classCallCheck-9098b006.esm.js';\nimport { l as lerp, f as fade } from './misc-7d870b3c.esm.js';\n\n/*\n * A speed-improved perlin and simplex noise algorithms for 2D.\n *\n * Based on example code by Stefan Gustavson (stegu@itn.liu.se).\n * Optimisations by Peter Eastman (peastman@drizzle.stanford.edu).\n * Better rank ordering method by Stefan Gustavson in 2012.\n * Converted to Javascript by Joseph Gentle.\n *\n * Version 2012-03-09\n *\n * This code was placed in the public domain by its original author,\n * Stefan Gustavson. You may use it as you see fit, but\n * attribution is appreciated.\n *\n */\n\nvar Grad = function Grad(x, y, z) {\n var _this = this;\n\n _classCallCheck(this, Grad);\n\n _defineProperty(this, \"dot2\", function (x, y) {\n return _this.x * x + _this.y * y;\n });\n\n _defineProperty(this, \"dot3\", function (x, y, z) {\n return _this.x * x + _this.y * y + _this.z * z;\n });\n\n this.x = x;\n this.y = y;\n this.z = z;\n};\n\nvar grad3 = [new Grad(1, 1, 0), new Grad(-1, 1, 0), new Grad(1, -1, 0), new Grad(-1, -1, 0), new Grad(1, 0, 1), new Grad(-1, 0, 1), new Grad(1, 0, -1), new Grad(-1, 0, -1), new Grad(0, 1, 1), new Grad(0, -1, 1), new Grad(0, 1, -1), new Grad(0, -1, -1)];\nvar p = [151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180]; // To remove the need for index wrapping, double the permutation table length\n\nvar perm = new Array(512);\nvar gradP = new Array(512); // This isn't a very good seeding function, but it works ok. It supports 2^16\n// different seed values. Write something better if you need more seeds.\n\nvar seed = function seed(_seed) {\n if (_seed > 0 && _seed < 1) {\n // Scale the seed out\n _seed *= 65536;\n }\n\n _seed = Math.floor(_seed);\n\n if (_seed < 256) {\n _seed |= _seed << 8;\n }\n\n for (var i = 0; i < 256; i++) {\n var v;\n\n if (i & 1) {\n v = p[i] ^ _seed & 255;\n } else {\n v = p[i] ^ _seed >> 8 & 255;\n }\n\n perm[i] = perm[i + 256] = v;\n gradP[i] = gradP[i + 256] = grad3[v % 12];\n }\n};\nseed(0);\n/*\n for(var i=0; i<256; i++) {\n perm[i] = perm[i + 256] = p[i];\n gradP[i] = gradP[i + 256] = grad3[perm[i] % 12];\n }*/\n// Skewing and unskewing factors for 2, 3, and 4 dimensions\n\nvar F2 = 0.5 * (Math.sqrt(3) - 1);\nvar G2 = (3 - Math.sqrt(3)) / 6;\nvar F3 = 1 / 3;\nvar G3 = 1 / 6; // 2D simplex noise\n\nvar simplex2 = function simplex2(xin, yin) {\n var n0, n1, n2; // Noise contributions from the three corners\n // Skew the input space to determine which simplex cell we're in\n\n var s = (xin + yin) * F2; // Hairy factor for 2D\n\n var i = Math.floor(xin + s);\n var j = Math.floor(yin + s);\n var t = (i + j) * G2;\n var x0 = xin - i + t; // The x,y distances from the cell origin, unskewed.\n\n var y0 = yin - j + t; // For the 2D case, the simplex shape is an equilateral triangle.\n // Determine which simplex we are in.\n\n var i1, j1; // Offsets for second (middle) corner of simplex in (i,j) coords\n\n if (x0 > y0) {\n // lower triangle, XY order: (0,0)->(1,0)->(1,1)\n i1 = 1;\n j1 = 0;\n } else {\n // upper triangle, YX order: (0,0)->(0,1)->(1,1)\n i1 = 0;\n j1 = 1;\n } // A step of (1,0) in (i,j) means a step of (1-c,-c) in (x,y), and\n // a step of (0,1) in (i,j) means a step of (-c,1-c) in (x,y), where\n // c = (3-sqrt(3))/6\n\n\n var x1 = x0 - i1 + G2; // Offsets for middle corner in (x,y) unskewed coords\n\n var y1 = y0 - j1 + G2;\n var x2 = x0 - 1 + 2 * G2; // Offsets for last corner in (x,y) unskewed coords\n\n var y2 = y0 - 1 + 2 * G2; // Work out the hashed gradient indices of the three simplex corners\n\n i &= 255;\n j &= 255;\n var gi0 = gradP[i + perm[j]];\n var gi1 = gradP[i + i1 + perm[j + j1]];\n var gi2 = gradP[i + 1 + perm[j + 1]]; // Calculate the contribution from the three corners\n\n var t0 = 0.5 - x0 * x0 - y0 * y0;\n\n if (t0 < 0) {\n n0 = 0;\n } else {\n t0 *= t0;\n n0 = t0 * t0 * gi0.dot2(x0, y0); // (x,y) of grad3 used for 2D gradient\n }\n\n var t1 = 0.5 - x1 * x1 - y1 * y1;\n\n if (t1 < 0) {\n n1 = 0;\n } else {\n t1 *= t1;\n n1 = t1 * t1 * gi1.dot2(x1, y1);\n }\n\n var t2 = 0.5 - x2 * x2 - y2 * y2;\n\n if (t2 < 0) {\n n2 = 0;\n } else {\n t2 *= t2;\n n2 = t2 * t2 * gi2.dot2(x2, y2);\n } // Add contributions from each corner to get the final noise value.\n // The result is scaled to return values in the interval [-1,1].\n\n\n return 70 * (n0 + n1 + n2);\n}; // 3D simplex noise\n\nvar simplex3 = function simplex3(xin, yin, zin) {\n var n0, n1, n2, n3; // Noise contributions from the four corners\n // Skew the input space to determine which simplex cell we're in\n\n var s = (xin + yin + zin) * F3; // Hairy factor for 2D\n\n var i = Math.floor(xin + s);\n var j = Math.floor(yin + s);\n var k = Math.floor(zin + s);\n var t = (i + j + k) * G3;\n var x0 = xin - i + t; // The x,y distances from the cell origin, unskewed.\n\n var y0 = yin - j + t;\n var z0 = zin - k + t; // For the 3D case, the simplex shape is a slightly irregular tetrahedron.\n // Determine which simplex we are in.\n\n var i1, j1, k1; // Offsets for second corner of simplex in (i,j,k) coords\n\n var i2, j2, k2; // Offsets for third corner of simplex in (i,j,k) coords\n\n if (x0 >= y0) {\n if (y0 >= z0) {\n i1 = 1;\n j1 = 0;\n k1 = 0;\n i2 = 1;\n j2 = 1;\n k2 = 0;\n } else if (x0 >= z0) {\n i1 = 1;\n j1 = 0;\n k1 = 0;\n i2 = 1;\n j2 = 0;\n k2 = 1;\n } else {\n i1 = 0;\n j1 = 0;\n k1 = 1;\n i2 = 1;\n j2 = 0;\n k2 = 1;\n }\n } else {\n if (y0 < z0) {\n i1 = 0;\n j1 = 0;\n k1 = 1;\n i2 = 0;\n j2 = 1;\n k2 = 1;\n } else if (x0 < z0) {\n i1 = 0;\n j1 = 1;\n k1 = 0;\n i2 = 0;\n j2 = 1;\n k2 = 1;\n } else {\n i1 = 0;\n j1 = 1;\n k1 = 0;\n i2 = 1;\n j2 = 1;\n k2 = 0;\n }\n } // A step of (1,0,0) in (i,j,k) means a step of (1-c,-c,-c) in (x,y,z),\n // a step of (0,1,0) in (i,j,k) means a step of (-c,1-c,-c) in (x,y,z), and\n // a step of (0,0,1) in (i,j,k) means a step of (-c,-c,1-c) in (x,y,z), where\n // c = 1/6.\n\n\n var x1 = x0 - i1 + G3; // Offsets for second corner\n\n var y1 = y0 - j1 + G3;\n var z1 = z0 - k1 + G3;\n var x2 = x0 - i2 + 2 * G3; // Offsets for third corner\n\n var y2 = y0 - j2 + 2 * G3;\n var z2 = z0 - k2 + 2 * G3;\n var x3 = x0 - 1 + 3 * G3; // Offsets for fourth corner\n\n var y3 = y0 - 1 + 3 * G3;\n var z3 = z0 - 1 + 3 * G3; // Work out the hashed gradient indices of the four simplex corners\n\n i &= 255;\n j &= 255;\n k &= 255;\n var gi0 = gradP[i + perm[j + perm[k]]];\n var gi1 = gradP[i + i1 + perm[j + j1 + perm[k + k1]]];\n var gi2 = gradP[i + i2 + perm[j + j2 + perm[k + k2]]];\n var gi3 = gradP[i + 1 + perm[j + 1 + perm[k + 1]]]; // Calculate the contribution from the four corners\n\n var t0 = 0.6 - x0 * x0 - y0 * y0 - z0 * z0;\n\n if (t0 < 0) {\n n0 = 0;\n } else {\n t0 *= t0;\n n0 = t0 * t0 * gi0.dot3(x0, y0, z0); // (x,y) of grad3 used for 2D gradient\n }\n\n var t1 = 0.6 - x1 * x1 - y1 * y1 - z1 * z1;\n\n if (t1 < 0) {\n n1 = 0;\n } else {\n t1 *= t1;\n n1 = t1 * t1 * gi1.dot3(x1, y1, z1);\n }\n\n var t2 = 0.6 - x2 * x2 - y2 * y2 - z2 * z2;\n\n if (t2 < 0) {\n n2 = 0;\n } else {\n t2 *= t2;\n n2 = t2 * t2 * gi2.dot3(x2, y2, z2);\n }\n\n var t3 = 0.6 - x3 * x3 - y3 * y3 - z3 * z3;\n\n if (t3 < 0) {\n n3 = 0;\n } else {\n t3 *= t3;\n n3 = t3 * t3 * gi3.dot3(x3, y3, z3);\n } // Add contributions from each corner to get the final noise value.\n // The result is scaled to return values in the interval [-1,1].\n\n\n return 32 * (n0 + n1 + n2 + n3);\n}; // ##### Perlin noise stuff\n// 2D Perlin Noise\n\nvar perlin2 = function perlin2(x, y) {\n // Find unit grid cell containing point\n var X = Math.floor(x),\n Y = Math.floor(y); // Get relative xy coordinates of point within that cell\n\n x = x - X;\n y = y - Y; // Wrap the integer cells at 255 (smaller integer period can be introduced here)\n\n X = X & 255;\n Y = Y & 255; // Calculate noise contributions from each of the four corners\n\n var n00 = gradP[X + perm[Y]].dot2(x, y);\n var n01 = gradP[X + perm[Y + 1]].dot2(x, y - 1);\n var n10 = gradP[X + 1 + perm[Y]].dot2(x - 1, y);\n var n11 = gradP[X + 1 + perm[Y + 1]].dot2(x - 1, y - 1); // Compute the fade curve value for x\n\n var u = fade(x); // Interpolate the four results\n\n return lerp(lerp(n00, n10, u), lerp(n01, n11, u), fade(y));\n}; // 3D Perlin Noise\n\nvar perlin3 = function perlin3(x, y, z) {\n // Find unit grid cell containing point\n var X = Math.floor(x),\n Y = Math.floor(y),\n Z = Math.floor(z); // Get relative xyz coordinates of point within that cell\n\n x = x - X;\n y = y - Y;\n z = z - Z; // Wrap the integer cells at 255 (smaller integer period can be introduced here)\n\n X = X & 255;\n Y = Y & 255;\n Z = Z & 255; // Calculate noise contributions from each of the eight corners\n\n var n000 = gradP[X + perm[Y + perm[Z]]].dot3(x, y, z);\n var n001 = gradP[X + perm[Y + perm[Z + 1]]].dot3(x, y, z - 1);\n var n010 = gradP[X + perm[Y + 1 + perm[Z]]].dot3(x, y - 1, z);\n var n011 = gradP[X + perm[Y + 1 + perm[Z + 1]]].dot3(x, y - 1, z - 1);\n var n100 = gradP[X + 1 + perm[Y + perm[Z]]].dot3(x - 1, y, z);\n var n101 = gradP[X + 1 + perm[Y + perm[Z + 1]]].dot3(x - 1, y, z - 1);\n var n110 = gradP[X + 1 + perm[Y + 1 + perm[Z]]].dot3(x - 1, y - 1, z);\n var n111 = gradP[X + 1 + perm[Y + 1 + perm[Z + 1]]].dot3(x - 1, y - 1, z - 1); // Compute the fade curve value for x, y, z\n\n var u = fade(x);\n var v = fade(y);\n var w = fade(z); // Interpolate\n\n return lerp(lerp(lerp(n000, n100, u), lerp(n001, n101, u), w), lerp(lerp(n010, n110, u), lerp(n011, n111, u), w), v);\n};\n\nvar noise = /*#__PURE__*/Object.freeze({\n __proto__: null,\n seed: seed,\n simplex2: simplex2,\n simplex3: simplex3,\n perlin2: perlin2,\n perlin3: perlin3\n});\n\nvar TAU = Math.PI * 2; // Credits @kchapelier https://github.com/kchapelier/wavefunctioncollapse/blob/master/example/lcg.js#L22-L30\n\nfunction normalizeSeed(seed) {\n if (typeof seed === \"number\") {\n seed = Math.abs(seed);\n } else if (typeof seed === \"string\") {\n var string = seed;\n seed = 0;\n\n for (var i = 0; i < string.length; i++) {\n seed = (seed + (i + 1) * (string.charCodeAt(i) % 96)) % 2147483647;\n }\n }\n\n if (seed === 0) {\n seed = 311;\n }\n\n return seed;\n}\n\nfunction lcgRandom(seed) {\n var state = normalizeSeed(seed);\n return function () {\n var result = state * 48271 % 2147483647;\n state = result;\n return result / 2147483647;\n };\n}\n\nvar Generator = function Generator(_seed) {\n var _this = this;\n\n _classCallCheck(this, Generator);\n\n _defineProperty(this, \"seed\", 0);\n\n _defineProperty(this, \"init\", function (seed) {\n _this.seed = seed;\n _this.value = lcgRandom(seed);\n });\n\n _defineProperty(this, \"value\", lcgRandom(this.seed));\n\n this.init(_seed);\n};\nvar defaultGen = new Generator(Math.random());\n/***\n * [3D] Sphere\n */\n\nvar defaultSphere = {\n radius: 1,\n center: [0, 0, 0]\n}; // random on surface of sphere\n// - https://twitter.com/fermatslibrary/status/1430932503578226688\n// - https://mathworld.wolfram.com/SpherePointPicking.html\n\nfunction onSphere(buffer, sphere) {\n var rng = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultGen;\n\n var _defaultSphere$sphere = _objectSpread2(_objectSpread2({}, defaultSphere), sphere),\n radius = _defaultSphere$sphere.radius,\n center = _defaultSphere$sphere.center;\n\n for (var i = 0; i < buffer.length; i += 3) {\n var u = rng.value();\n var v = rng.value();\n var theta = Math.acos(2 * v - 1);\n var phi = TAU * u;\n buffer[i] = Math.sin(theta) * Math.cos(phi) * radius + center[0];\n buffer[i + 1] = Math.sin(theta) * Math.sin(phi) * radius + center[1];\n buffer[i + 2] = Math.cos(theta) * radius + center[2];\n }\n\n return buffer;\n} // from \"Another Method\" https://datagenetics.com/blog/january32020/index.html\n\nfunction inSphere(buffer, sphere) {\n var rng = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultGen;\n\n var _defaultSphere$sphere2 = _objectSpread2(_objectSpread2({}, defaultSphere), sphere),\n radius = _defaultSphere$sphere2.radius,\n center = _defaultSphere$sphere2.center;\n\n for (var i = 0; i < buffer.length; i += 3) {\n var u = Math.pow(rng.value(), 1 / 3);\n var x = rng.value() * 2 - 1;\n var y = rng.value() * 2 - 1;\n var z = rng.value() * 2 - 1;\n var mag = Math.sqrt(x * x + y * y + z * z);\n x = u * x / mag;\n y = u * y / mag;\n z = u * z / mag;\n buffer[i] = x * radius + center[0];\n buffer[i + 1] = y * radius + center[1];\n buffer[i + 2] = z * radius + center[2];\n }\n\n return buffer;\n}\n/***\n * [2D] Circle\n */\n\nvar defaultCircle = {\n radius: 1,\n center: [0, 0]\n}; // random circle https://stackoverflow.com/a/50746409\n\nfunction inCircle(buffer, circle) {\n var rng = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultGen;\n\n var _defaultCircle$circle = _objectSpread2(_objectSpread2({}, defaultCircle), circle),\n radius = _defaultCircle$circle.radius,\n center = _defaultCircle$circle.center;\n\n for (var i = 0; i < buffer.length; i += 2) {\n var r = radius * Math.sqrt(rng.value());\n var theta = rng.value() * TAU;\n buffer[i] = Math.sin(theta) * r + center[0];\n buffer[i + 1] = Math.cos(theta) * r + center[1];\n }\n\n return buffer;\n}\nfunction onCircle(buffer, circle) {\n var rng = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultGen;\n\n var _defaultCircle$circle2 = _objectSpread2(_objectSpread2({}, defaultCircle), circle),\n radius = _defaultCircle$circle2.radius,\n center = _defaultCircle$circle2.center;\n\n for (var i = 0; i < buffer.length; i += 2) {\n var theta = rng.value() * TAU;\n buffer[i] = Math.sin(theta) * radius + center[0];\n buffer[i + 1] = Math.cos(theta) * radius + center[1];\n }\n\n return buffer;\n}\n/**\n * [2D] Plane\n */\n\nvar defaultRect = {\n sides: 1,\n center: [0, 0]\n};\nfunction inRect(buffer, rect) {\n var rng = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultGen;\n\n var _defaultRect$rect = _objectSpread2(_objectSpread2({}, defaultRect), rect),\n sides = _defaultRect$rect.sides,\n center = _defaultRect$rect.center;\n\n var sideX = typeof sides === \"number\" ? sides : sides[0];\n var sideY = typeof sides === \"number\" ? sides : sides[1];\n\n for (var i = 0; i < buffer.length; i += 2) {\n buffer[i] = (rng.value() - 0.5) * sideX + center[0];\n buffer[i + 1] = (rng.value() - 0.5) * sideY + center[1];\n }\n\n return buffer;\n}\nfunction onRect(buffer, rect) {\n return buffer;\n}\n/***\n * [3D] Box\n */\n\nfunction inBox(buffer, box) {\n var rng = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultGen;\n\n var _defaultBox$box = _objectSpread2(_objectSpread2({}, defaultBox), box),\n sides = _defaultBox$box.sides,\n center = _defaultBox$box.center;\n\n var sideX = typeof sides === \"number\" ? sides : sides[0];\n var sideY = typeof sides === \"number\" ? sides : sides[1];\n var sideZ = typeof sides === \"number\" ? sides : sides[2];\n\n for (var i = 0; i < buffer.length; i += 3) {\n buffer[i] = (rng.value() - 0.5) * sideX + center[0];\n buffer[i + 1] = (rng.value() - 0.5) * sideY + center[1];\n buffer[i + 2] = (rng.value() - 0.5) * sideZ + center[2];\n }\n\n return buffer;\n}\nvar defaultBox = {\n sides: 1,\n center: [0, 0, 0]\n};\nfunction onBox(buffer, box) {\n var rng = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultGen;\n\n var _defaultBox$box2 = _objectSpread2(_objectSpread2({}, defaultBox), box),\n sides = _defaultBox$box2.sides,\n center = _defaultBox$box2.center;\n\n var sideX = typeof sides === \"number\" ? sides : sides[0];\n var sideY = typeof sides === \"number\" ? sides : sides[1];\n var sideZ = typeof sides === \"number\" ? sides : sides[2];\n\n for (var i = 0; i < buffer.length; i += 3) {\n buffer[i] = (rng.value() - 0.5) * sideX + center[0];\n buffer[i + 1] = (rng.value() - 0.5) * sideY + center[1];\n buffer[i + 2] = (rng.value() - 0.5) * sideZ + center[2];\n }\n\n return buffer;\n}\n\nvar index = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Generator: Generator,\n onSphere: onSphere,\n inSphere: inSphere,\n inCircle: inCircle,\n onCircle: onCircle,\n inRect: inRect,\n onRect: onRect,\n inBox: inBox,\n onBox: onBox,\n noise: noise\n});\n\nexport { Generator as G, inSphere as a, inCircle as b, onCircle as c, inRect as d, onRect as e, inBox as f, onBox as g, index as i, noise as n, onSphere as o };\n","import { a as _toConsumableArray } from './triangle-b62b9067.esm.js';\nimport { Color, Vector3, Quaternion, Vector2, Vector4, Euler, Spherical, Matrix4 } from 'three';\nimport { d as deltaAngle } from './misc-7d870b3c.esm.js';\n\n/**\n * Rounded square wave easing\n */\n\nvar rsqw = function rsqw(t) {\n var delta = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.01;\n var a = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var f = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1 / (2 * Math.PI);\n return a / Math.atan(1 / delta) * Math.atan(Math.sin(2 * Math.PI * t * f) / delta);\n};\n/**\n * Exponential easing\n */\n\nvar exp = function exp(t) {\n return 1 / (1 + t + 0.48 * t * t + 0.235 * t * t * t);\n};\n/**\n * Damp, based on Game Programming Gems 4 Chapter 1.10\n * Return value indicates whether the animation is still running.\n */\n\nfunction damp(\n/** The object */\ncurrent,\n/** The key to animate */\nprop,\n/** To goal value */\ntarget) {\n var smoothTime = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0.25;\n var delta = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0.01;\n var maxSpeed = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : Infinity;\n var easing = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : exp;\n var eps = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0.001;\n var vel = \"velocity_\" + prop;\n if (current.__damp === undefined) current.__damp = {};\n if (current.__damp[vel] === undefined) current.__damp[vel] = 0;\n\n if (Math.abs(current[prop] - target) <= eps) {\n current[prop] = target;\n return false;\n }\n\n smoothTime = Math.max(0.0001, smoothTime);\n var omega = 2 / smoothTime;\n var t = easing(omega * delta);\n var change = current[prop] - target;\n var originalTo = target; // Clamp maximum maxSpeed\n\n var maxChange = maxSpeed * smoothTime;\n change = Math.min(Math.max(change, -maxChange), maxChange);\n target = current[prop] - change;\n var temp = (current.__damp[vel] + omega * change) * delta;\n current.__damp[vel] = (current.__damp[vel] - omega * temp) * t;\n var output = target + (change + temp) * t; // Prevent overshooting\n\n if (originalTo - current[prop] > 0.0 === output > originalTo) {\n output = originalTo;\n current.__damp[vel] = (output - originalTo) / delta;\n }\n\n current[prop] = output;\n return true;\n}\n/**\n * DampAngle, based on Game Programming Gems 4 Chapter 1.10\n */\n\nfunction dampAngle(current, prop, target, smoothTime, delta, maxSpeed, easing, eps) {\n return damp(current, prop, current[prop] + deltaAngle(current[prop], target), smoothTime, delta, maxSpeed, easing, eps);\n}\n/**\n * Vector2D Damp\n */\n\nvar v2d = /*@__PURE__*/new Vector2();\nvar a2, b2;\nfunction damp2(current, target, smoothTime, delta, maxSpeed, easing, eps) {\n if (typeof target === \"number\") v2d.setScalar(target);else if (Array.isArray(target)) v2d.set(target[0], target[1]);else v2d.copy(target);\n a2 = damp(current, \"x\", v2d.x, smoothTime, delta, maxSpeed, easing, eps);\n b2 = damp(current, \"y\", v2d.y, smoothTime, delta, maxSpeed, easing, eps);\n return a2 || b2;\n}\n/**\n * Vector3D Damp\n */\n\nvar v3d = /*@__PURE__*/new Vector3();\nvar a3, b3, c3;\nfunction damp3(current, target, smoothTime, delta, maxSpeed, easing, eps) {\n if (typeof target === \"number\") v3d.setScalar(target);else if (Array.isArray(target)) v3d.set(target[0], target[1], target[2]);else v3d.copy(target);\n a3 = damp(current, \"x\", v3d.x, smoothTime, delta, maxSpeed, easing, eps);\n b3 = damp(current, \"y\", v3d.y, smoothTime, delta, maxSpeed, easing, eps);\n c3 = damp(current, \"z\", v3d.z, smoothTime, delta, maxSpeed, easing, eps);\n return a3 || b3 || c3;\n}\n/**\n * Vector4D Damp\n */\n\nvar v4d = /*@__PURE__*/new Vector4();\nvar a4, b4, c4, d4;\nfunction damp4(current, target, smoothTime, delta, maxSpeed, easing, eps) {\n if (typeof target === \"number\") v4d.setScalar(target);else if (Array.isArray(target)) v4d.set(target[0], target[1], target[2], target[3]);else v4d.copy(target);\n a4 = damp(current, \"x\", v4d.x, smoothTime, delta, maxSpeed, easing, eps);\n b4 = damp(current, \"y\", v4d.y, smoothTime, delta, maxSpeed, easing, eps);\n c4 = damp(current, \"z\", v4d.z, smoothTime, delta, maxSpeed, easing, eps);\n d4 = damp(current, \"w\", v4d.w, smoothTime, delta, maxSpeed, easing, eps);\n return a4 || b4 || c4 || d4;\n}\n/**\n * Euler Damp\n */\n\nvar rot = /*@__PURE__*/new Euler();\nvar aE, bE, cE;\nfunction dampE(current, target, smoothTime, delta, maxSpeed, easing, eps) {\n if (Array.isArray(target)) rot.set(target[0], target[1], target[2], target[3]);else rot.copy(target);\n aE = dampAngle(current, \"x\", rot.x, smoothTime, delta, maxSpeed, easing, eps);\n bE = dampAngle(current, \"y\", rot.y, smoothTime, delta, maxSpeed, easing, eps);\n cE = dampAngle(current, \"z\", rot.z, smoothTime, delta, maxSpeed, easing, eps);\n return aE || bE || cE;\n}\n/**\n * Color Damp\n */\n\nvar col = /*@__PURE__*/new Color();\nvar aC, bC, cC;\nfunction dampC(current, target, smoothTime, delta, maxSpeed, easing, eps) {\n if (target instanceof Color) col.copy(target);else if (Array.isArray(target)) col.setRGB(target[0], target[1], target[2]);else col.set(target);\n aC = damp(current, \"r\", col.r, smoothTime, delta, maxSpeed, easing, eps);\n bC = damp(current, \"g\", col.g, smoothTime, delta, maxSpeed, easing, eps);\n cC = damp(current, \"b\", col.b, smoothTime, delta, maxSpeed, easing, eps);\n return aC || bC || cC;\n}\n/**\n * Quaternion Damp\n * https://gist.github.com/maxattack/4c7b4de00f5c1b95a33b\n * Copyright 2016 Max Kaufmann (max.kaufmann@gmail.com)\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nvar qt = /*@__PURE__*/new Quaternion();\nvar v4result = /*@__PURE__*/new Vector4();\nvar v4velocity = /*@__PURE__*/new Vector4();\nvar v4error = /*@__PURE__*/new Vector4();\nvar aQ, bQ, cQ, dQ;\nfunction dampQ(current, target, smoothTime, delta, maxSpeed, easing, eps) {\n var cur = current;\n if (Array.isArray(target)) qt.set(target[0], target[1], target[2], target[3]);else qt.copy(target);\n var multi = current.dot(qt) > 0 ? 1 : -1;\n qt.x *= multi;\n qt.y *= multi;\n qt.z *= multi;\n qt.w *= multi;\n aQ = damp(current, \"x\", qt.x, smoothTime, delta, maxSpeed, easing, eps);\n bQ = damp(current, \"y\", qt.y, smoothTime, delta, maxSpeed, easing, eps);\n cQ = damp(current, \"z\", qt.z, smoothTime, delta, maxSpeed, easing, eps);\n dQ = damp(current, \"w\", qt.w, smoothTime, delta, maxSpeed, easing, eps); // smooth damp (nlerp approx)\n\n v4result.set(current.x, current.y, current.z, current.w).normalize();\n v4velocity.set(cur.__damp.velocity_x, cur.__damp.velocity_y, cur.__damp.velocity_z, cur.__damp.velocity_w); // ensure deriv is tangent\n\n v4error.copy(v4result).multiplyScalar(v4velocity.dot(v4result) / v4result.dot(v4result));\n cur.__damp.velocity_x -= v4error.x;\n cur.__damp.velocity_y -= v4error.y;\n cur.__damp.velocity_z -= v4error.z;\n cur.__damp.velocity_w -= v4error.w;\n current.set(v4result.x, v4result.y, v4result.z, v4result.w);\n return aQ || bQ || cQ || dQ;\n}\n/**\n * Spherical Damp\n */\n\nvar spherical = /*@__PURE__*/new Spherical();\nvar aS, bS, cS;\nfunction dampS(current, target, smoothTime, delta, maxSpeed, easing, eps) {\n if (Array.isArray(target)) spherical.set(target[0], target[1], target[2]);else spherical.copy(target);\n aS = damp(current, \"radius\", spherical.radius, smoothTime, delta, maxSpeed, easing, eps);\n bS = dampAngle(current, \"phi\", spherical.phi, smoothTime, delta, maxSpeed, easing, eps);\n cS = dampAngle(current, \"theta\", spherical.theta, smoothTime, delta, maxSpeed, easing, eps);\n return aS || bS || cS;\n}\n/**\n * Matrix4 Damp\n */\n\nvar mat = /*@__PURE__*/new Matrix4();\nvar mPos = /*@__PURE__*/new Vector3();\nvar mRot = /*@__PURE__*/new Quaternion();\nvar mSca = /*@__PURE__*/new Vector3();\nvar aM, bM, cM;\nfunction dampM(current, target, smoothTime, delta, maxSpeed, easing, eps) {\n var cur = current;\n\n if (cur.__damp === undefined) {\n cur.__damp = {\n position: new Vector3(),\n rotation: new Quaternion(),\n scale: new Vector3()\n };\n current.decompose(cur.__damp.position, cur.__damp.rotation, cur.__damp.scale);\n }\n\n if (Array.isArray(target)) mat.set.apply(mat, _toConsumableArray(target));else mat.copy(target);\n mat.decompose(mPos, mRot, mSca);\n aM = damp3(cur.__damp.position, mPos, smoothTime, delta, maxSpeed, easing, eps);\n bM = dampQ(cur.__damp.rotation, mRot, smoothTime, delta, maxSpeed, easing, eps);\n cM = damp3(cur.__damp.scale, mSca, smoothTime, delta, maxSpeed, easing, eps);\n current.compose(cur.__damp.position, cur.__damp.rotation, cur.__damp.scale);\n return aM || bM || cM;\n}\n\nvar easing = /*#__PURE__*/Object.freeze({\n __proto__: null,\n rsqw: rsqw,\n exp: exp,\n damp: damp,\n dampAngle: dampAngle,\n damp2: damp2,\n damp3: damp3,\n damp4: damp4,\n dampE: dampE,\n dampC: dampC,\n dampQ: dampQ,\n dampS: dampS,\n dampM: dampM\n});\n\nexport { exp as a, dampAngle as b, damp2 as c, damp as d, easing as e, damp3 as f, damp4 as g, dampE as h, dampC as i, dampQ as j, dampS as k, dampM as l, rsqw as r };\n","import { jsx, jsxs, Fragment } from \"react/jsx-runtime\";\nimport React, { createContext, useState, useMemo, useRef, useContext, useEffect, forwardRef, useLayoutEffect, useImperativeHandle, useCallback } from \"react\";\nimport * as THREE from \"three\";\nimport { HalfFloatType, Vector3, TextureLoader, sRGBEncoding, RepeatWrapping, Uniform, Texture as Texture$1, Color, CanvasTexture, NearestFilter, ShaderChunk, Vector2, WebGLCubeRenderTarget, CubeCamera, PMREMGenerator, LinearFilter, WebGLRenderTarget, WebGLMultipleRenderTargets, Quaternion, FramebufferTexture, RGBAFormat, ShaderMaterial, Matrix3, REVISION, TangentSpaceNormalMap, GLSL3, Matrix4, VideoTexture, DataTexture, FloatType, BufferGeometry, BufferAttribute, Sphere, OrthographicCamera, NoColorSpace, RedFormat, Mesh } from \"three\";\nimport { useThree, useFrame, useInstanceHandle, extend, createPortal, useLoader, applyProps } from \"@react-three/fiber\";\nimport { EffectComposer as EffectComposer$1, RenderPass, NormalPass, DepthDownsamplingPass, Effect, EffectPass, Pass, DepthOfFieldEffect, MaskFunction, DepthPickingPass, CopyPass, BlendFunction, BloomEffect, BrightnessContrastEffect, ChromaticAberrationEffect, ColorAverageEffect, ColorDepthEffect, DepthEffect, DotScreenEffect, GlitchEffect, GlitchMode, GodRaysEffect, GridEffect, HueSaturationEffect, NoiseEffect, OutlineEffect, PixelationEffect, ScanlineEffect, SelectiveBloomEffect, SepiaEffect, SSAOEffect, SMAAEffect, FXAAEffect, TextureEffect, ToneMappingEffect, VignetteEffect, ShockWaveEffect, LUT3DEffect, TiltShiftEffect as TiltShiftEffect$1, EffectAttribute, Selection as Selection$1, DepthPass } from \"postprocessing\";\nimport { isWebGL2Available as isWebGL2Available$1 } from \"three-stdlib\";\nimport { easing } from \"maath\";\nimport \"three-stdlib\";\nconst selectionContext = createContext(null);\nfunction Selection({ children, enabled = true }) {\n const [selected, select] = useState([]);\n const value = useMemo(() => ({ selected, select, enabled }), [selected, select, enabled]);\n return /* @__PURE__ */ jsx(selectionContext.Provider, { value, children });\n}\nfunction Select({ enabled = false, children, ...props }) {\n const group = useRef(null);\n const api = useContext(selectionContext);\n useEffect(() => {\n if (api && enabled) {\n let changed = false;\n const current = [];\n group.current.traverse((o) => {\n o.type === \"Mesh\" && current.push(o);\n if (api.selected.indexOf(o) === -1)\n changed = true;\n });\n if (changed) {\n api.select((state) => [...state, ...current]);\n return () => {\n api.select((state) => state.filter((selected) => !current.includes(selected)));\n };\n }\n }\n }, [enabled, children, api]);\n return /* @__PURE__ */ jsx(\"group\", { ref: group, ...props, children });\n}\nconst EffectComposerContext = createContext(null);\nconst EffectComposer = React.memo(\n forwardRef(\n ({\n children,\n camera: _camera,\n scene: _scene,\n resolutionScale,\n enabled = true,\n renderPriority = 1,\n autoClear = true,\n depthBuffer,\n disableNormalPass,\n stencilBuffer,\n multisampling = 8,\n frameBufferType = HalfFloatType\n }, ref) => {\n const { gl, scene: defaultScene, camera: defaultCamera, size } = useThree();\n const scene = _scene || defaultScene;\n const camera = _camera || defaultCamera;\n const [composer, normalPass, downSamplingPass] = useMemo(() => {\n const webGL2Available = isWebGL2Available$1();\n const effectComposer = new EffectComposer$1(gl, {\n depthBuffer,\n stencilBuffer,\n multisampling: multisampling > 0 && webGL2Available ? multisampling : 0,\n frameBufferType\n });\n effectComposer.addPass(new RenderPass(scene, camera));\n let downSamplingPass2 = null;\n let normalPass2 = null;\n if (!disableNormalPass) {\n normalPass2 = new NormalPass(scene, camera);\n normalPass2.enabled = false;\n effectComposer.addPass(normalPass2);\n if (resolutionScale !== void 0 && webGL2Available) {\n downSamplingPass2 = new DepthDownsamplingPass({ normalBuffer: normalPass2.texture, resolutionScale });\n downSamplingPass2.enabled = false;\n effectComposer.addPass(downSamplingPass2);\n }\n }\n return [effectComposer, normalPass2, downSamplingPass2];\n }, [\n camera,\n gl,\n depthBuffer,\n stencilBuffer,\n multisampling,\n frameBufferType,\n scene,\n disableNormalPass,\n resolutionScale\n ]);\n useEffect(() => composer == null ? void 0 : composer.setSize(size.width, size.height), [composer, size]);\n useFrame(\n (_, delta) => {\n if (enabled) {\n const currentAutoClear = gl.autoClear;\n gl.autoClear = autoClear;\n if (stencilBuffer && !autoClear)\n gl.clearStencil();\n composer.render(delta);\n gl.autoClear = currentAutoClear;\n }\n },\n enabled ? renderPriority : 0\n );\n const group = useRef(null);\n const instance = useInstanceHandle(group);\n useLayoutEffect(() => {\n const passes = [];\n if (group.current && instance.current && composer) {\n const children2 = instance.current.objects;\n for (let i2 = 0; i2 < children2.length; i2++) {\n const child = children2[i2];\n if (child instanceof Effect) {\n const effects = [];\n while (children2[i2] instanceof Effect)\n effects.push(children2[i2++]);\n i2--;\n const pass = new EffectPass(camera, ...effects);\n passes.push(pass);\n } else if (child instanceof Pass) {\n passes.push(child);\n }\n }\n for (const pass of passes)\n composer == null ? void 0 : composer.addPass(pass);\n if (normalPass)\n normalPass.enabled = true;\n if (downSamplingPass)\n downSamplingPass.enabled = true;\n }\n return () => {\n for (const pass of passes)\n composer == null ? void 0 : composer.removePass(pass);\n if (normalPass)\n normalPass.enabled = false;\n if (downSamplingPass)\n downSamplingPass.enabled = false;\n };\n }, [composer, children, camera, normalPass, downSamplingPass, instance]);\n const state = useMemo(\n () => ({ composer, normalPass, downSamplingPass, resolutionScale, camera, scene }),\n [composer, normalPass, downSamplingPass, resolutionScale, camera, scene]\n );\n useImperativeHandle(ref, () => composer, [composer]);\n return /* @__PURE__ */ jsx(EffectComposerContext.Provider, { value: state, children: /* @__PURE__ */ jsx(\"group\", { ref: group, children }) });\n }\n )\n);\nconst resolveRef = (ref) => typeof ref === \"object\" && ref != null && \"current\" in ref ? ref.current : ref;\nlet i = 0;\nconst components = /* @__PURE__ */ new WeakMap();\nconst wrapEffect = (effect, defaults) => /* @__PURE__ */ React.forwardRef(function Effect2({ blendFunction = defaults == null ? void 0 : defaults.blendFunction, opacity = defaults == null ? void 0 : defaults.opacity, ...props }, ref) {\n let Component = components.get(effect);\n if (!Component) {\n const key = `@react-three/postprocessing/${effect.name}-${i++}`;\n extend({ [key]: effect });\n components.set(effect, Component = key);\n }\n const camera = useThree((state) => state.camera);\n const args = React.useMemo(\n () => {\n var _a, _b;\n return [...(_a = defaults == null ? void 0 : defaults.args) != null ? _a : [], ...(_b = props.args) != null ? _b : [{ ...defaults, ...props }]];\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(props)]\n );\n return /* @__PURE__ */ jsx(\n Component,\n {\n camera,\n \"blendMode-blendFunction\": blendFunction,\n \"blendMode-opacity-value\": opacity,\n ...props,\n ref,\n args\n }\n );\n});\nconst useVector2 = (props, key) => {\n const value = props[key];\n return React.useMemo(() => {\n if (typeof value === \"number\")\n return new THREE.Vector2(value, value);\n else if (value)\n return new THREE.Vector2(...value);\n else\n return new THREE.Vector2();\n }, [value]);\n};\nconst DepthOfField = forwardRef(function DepthOfField2({\n blendFunction,\n worldFocusDistance,\n worldFocusRange,\n focusDistance,\n focusRange,\n focalLength,\n bokehScale,\n resolutionScale,\n resolutionX,\n resolutionY,\n width,\n height,\n target,\n depthTexture,\n ...props\n}, ref) {\n const { camera } = useContext(EffectComposerContext);\n const autoFocus = target != null;\n const effect = useMemo(() => {\n const effect2 = new DepthOfFieldEffect(camera, {\n blendFunction,\n worldFocusDistance,\n worldFocusRange,\n focusDistance,\n focusRange,\n focalLength,\n bokehScale,\n resolutionScale,\n resolutionX,\n resolutionY,\n width,\n height\n });\n if (autoFocus)\n effect2.target = new Vector3();\n if (depthTexture)\n effect2.setDepthTexture(depthTexture.texture, depthTexture.packing);\n const maskMaterial = effect2.maskPass.getFullscreenMaterial();\n maskMaterial.maskFunction = MaskFunction.MULTIPLY_RGB_SET_ALPHA;\n return effect2;\n }, [\n camera,\n blendFunction,\n worldFocusDistance,\n worldFocusRange,\n focusDistance,\n focusRange,\n focalLength,\n bokehScale,\n resolutionScale,\n resolutionX,\n resolutionY,\n width,\n height,\n autoFocus,\n depthTexture\n ]);\n useEffect(() => {\n return () => {\n effect.dispose();\n };\n }, [effect]);\n return /* @__PURE__ */ jsx(\"primitive\", { ...props, ref, object: effect, target });\n});\nconst Autofocus = forwardRef(\n ({ target = void 0, mouse: followMouse = false, debug = void 0, manual = false, smoothTime = 0.25, ...props }, fref) => {\n const dofRef = useRef(null);\n const hitpointRef = useRef(null);\n const targetRef = useRef(null);\n const scene = useThree(({ scene: scene2 }) => scene2);\n const pointer = useThree(({ pointer: pointer2 }) => pointer2);\n const { composer, camera } = useContext(EffectComposerContext);\n const [depthPickingPass] = useState(() => new DepthPickingPass());\n const [copyPass] = useState(() => new CopyPass());\n useEffect(() => {\n composer.addPass(depthPickingPass);\n composer.addPass(copyPass);\n return () => {\n composer.removePass(depthPickingPass);\n composer.removePass(copyPass);\n };\n }, [composer, depthPickingPass, copyPass]);\n useEffect(() => {\n return () => {\n depthPickingPass.dispose();\n copyPass.dispose();\n };\n }, [depthPickingPass, copyPass]);\n const [hitpoint] = useState(() => new THREE.Vector3(0, 0, 0));\n const [ndc] = useState(() => new THREE.Vector3(0, 0, 0));\n const getHit = useCallback(\n async (x, y) => {\n ndc.x = x;\n ndc.y = y;\n ndc.z = await depthPickingPass.readDepth(ndc);\n ndc.z = ndc.z * 2 - 1;\n const hit = 1 - ndc.z > 1e-7;\n return hit ? ndc.unproject(camera) : false;\n },\n [ndc, depthPickingPass, camera]\n );\n const update = useCallback(\n async (delta, updateTarget = true) => {\n var _a;\n if (target) {\n hitpoint.set(...target);\n } else {\n const { x, y } = followMouse ? pointer : { x: 0, y: 0 };\n const hit = await getHit(x, y);\n if (hit)\n hitpoint.copy(hit);\n }\n if (updateTarget && ((_a = dofRef.current) == null ? void 0 : _a.target)) {\n if (smoothTime > 0 && delta > 0) {\n easing.damp3(dofRef.current.target, hitpoint, smoothTime, delta);\n } else {\n dofRef.current.target.copy(hitpoint);\n }\n }\n },\n [target, hitpoint, followMouse, getHit, smoothTime, pointer]\n );\n useFrame(async (_, delta) => {\n var _a;\n if (!manual) {\n update(delta);\n }\n if (hitpointRef.current) {\n hitpointRef.current.position.copy(hitpoint);\n }\n if (targetRef.current && ((_a = dofRef.current) == null ? void 0 : _a.target)) {\n targetRef.current.position.copy(dofRef.current.target);\n }\n });\n const api = useMemo(\n () => ({\n dofRef,\n hitpoint,\n update\n }),\n [hitpoint, update]\n );\n useImperativeHandle(fref, () => api, [api]);\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n debug ? createPortal(\n /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsxs(\"mesh\", { ref: hitpointRef, children: [\n /* @__PURE__ */ jsx(\"sphereGeometry\", { args: [debug, 16, 16] }),\n /* @__PURE__ */ jsx(\"meshBasicMaterial\", { color: \"#00ff00\", opacity: 1, transparent: true, depthWrite: false })\n ] }),\n /* @__PURE__ */ jsxs(\"mesh\", { ref: targetRef, children: [\n /* @__PURE__ */ jsx(\"sphereGeometry\", { args: [debug / 2, 16, 16] }),\n /* @__PURE__ */ jsx(\"meshBasicMaterial\", { color: \"#00ff00\", opacity: 0.5, transparent: true, depthWrite: false })\n ] })\n ] }),\n scene\n ) : null,\n /* @__PURE__ */ jsx(DepthOfField, { ref: dofRef, ...props, target: hitpoint })\n ] });\n }\n);\nconst LensFlareShader = {\n fragmentShader: (\n /* glsl */\n `\n\n uniform float iTime;\n uniform vec2 lensPosition;\n uniform vec2 iResolution;\n uniform vec3 colorGain;\n uniform float starPoints;\n uniform float glareSize;\n uniform float flareSize;\n uniform float flareSpeed;\n uniform float flareShape;\n uniform float haloScale;\n uniform float opacity;\n uniform bool animated;\n uniform bool anamorphic;\n uniform bool enabled;\n uniform bool secondaryGhosts;\n uniform bool starBurst;\n uniform float ghostScale;\n uniform bool aditionalStreaks;\n uniform sampler2D lensDirtTexture;\n vec2 vxtC;\n\n float rndf(float n){return fract(sin(n) * 43758.5453123);}float niz(float p){float fl = floor(p);float fc = fract(p);return mix(rndf(fl),rndf(fl + 1.0), fc);}\n vec3 hsv2rgb(vec3 c){vec4 k = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);vec3 p = abs(fract(c.xxx + k.xyz) * 6.0 - k.www);return c.z * mix(k.xxx, clamp(p - k.xxx, 0.0, 1.0), c.y);}\n float satU(float x){return clamp(x, 0.,1.);}vec2 rtU(vec2 naz, float rtn){return vec2(cos(rtn) * naz.x + sin(rtn) * naz.y,cos(rtn) * naz.y - sin(rtn) * naz.x);}\n vec3 drwF(vec2 p, float intensity, float rnd, float speed, int id){float flhos = (1. / 32.) * float(id) * 0.1;float lingrad = distance(vec2(0.), p);float expg = 1. / exp(lingrad * (fract(rnd) * 0.66 + 0.33));vec3 qzTg = hsv2rgb(vec3( fract( (expg * 8.) + speed * flareSpeed + flhos), pow(1.-abs(expg*2.-1.), 0.45), 20.0 * expg * intensity));float internalStarPoints;if(anamorphic){internalStarPoints = 1.0;} else{internalStarPoints = starPoints;}float ams = length(p * flareShape * sin(internalStarPoints * atan(p.x, p.y)));float kJhg = pow(1.-satU(ams), ( anamorphic ? 100. : 12.));kJhg += satU(expg-0.9) * 3.;kJhg = pow(kJhg * expg, 8. + (1.-intensity) * 5.);if(flareSpeed > 0.0){return vec3(kJhg) * qzTg;} else{return vec3(kJhg) * flareSize * 15.;}}\n float ams2(vec3 a, vec3 b) { return abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z);}vec3 satU(vec3 x){return clamp(x, vec3(0.0), vec3(1.0));}\n float glR(vec2 naz, vec2 pos, float zsi){vec2 mni;if(animated){mni = rtU(naz-pos, iTime * 0.1);} else{mni = naz-pos;}float ang = atan(mni.y, mni.x) * (anamorphic ? 1.0 : starPoints);float ams2 = length(mni);ams2 = pow(ams2, .9);float f0 = 1.0/(length(naz-pos)*(1.0/zsi*16.0)+.2);return f0+f0*(sin((ang))*.2 +.3);}\n float sdHex(vec2 p){p = abs(p);vec2 q = vec2(p.x*2.0*0.5773503, p.y + p.x*0.5773503);return dot(step(q.xy,q.yx), 1.0-q.yx);}float fpow(float x, float k){return x > k ? pow((x-k)/(1.0-k),2.0) : 0.0;}\n vec3 rHx(vec2 naz, vec2 p, float s, vec3 col){naz -= p;if (abs(naz.x) < 0.2*s && abs(naz.y) < 0.2*s){return mix(vec3(0),mix(vec3(0),col,0.1 + fpow(length(naz/s),0.1)*10.0),smoothstep(0.0,0.1,sdHex(naz*20.0/s)));}return vec3(0);}\n vec3 mLs(vec2 naz, vec2 pos){vec2 mni = naz-pos;vec2 zxMp = naz*(length(naz));float ang = atan(mni.x,mni.y);float f0 = .3/(length(naz-pos)*16.0+1.0);f0 = f0*(sin(niz(sin(ang*3.9-(animated ? iTime : 0.0) * 0.3) * starPoints))*.2 );float f1 = max(0.01-pow(length(naz+1.2*pos),1.9),.0)*7.0;float f2 = max(.9/(10.0+32.0*pow(length(zxMp+0.99*pos),2.0)),.0)*0.35;float f22 = max(.9/(11.0+32.0*pow(length(zxMp+0.85*pos),2.0)),.0)*0.23;float f23 = max(.9/(12.0+32.0*pow(length(zxMp+0.95*pos),2.0)),.0)*0.6;vec2 ztX = mix(naz,zxMp, 0.1);float f4 = max(0.01-pow(length(ztX+0.4*pos),2.9),.0)*4.02;float f42 = max(0.0-pow(length(ztX+0.45*pos),2.9),.0)*4.1;float f43 = max(0.01-pow(length(ztX+0.5*pos),2.9),.0)*4.6;ztX = mix(naz,zxMp,-.4);float f5 = max(0.01-pow(length(ztX+0.1*pos),5.5),.0)*2.0;float f52 = max(0.01-pow(length(ztX+0.2*pos),5.5),.0)*2.0;float f53 = max(0.01-pow(length(ztX+0.1*pos),5.5),.0)*2.0;ztX = mix(naz,zxMp, 2.1);float f6 = max(0.01-pow(length(ztX-0.3*pos),1.61),.0)*3.159;float f62 = max(0.01-pow(length(ztX-0.325*pos),1.614),.0)*3.14;float f63 = max(0.01-pow(length(ztX-0.389*pos),1.623),.0)*3.12;vec3 c = vec3(glR(naz,pos, glareSize));vec2 prot;if(animated){prot = rtU(naz - pos, (iTime * 0.1));} else if(anamorphic){prot = rtU(naz - pos, 1.570796);} else {prot = naz - pos;}c += drwF(prot, (anamorphic ? flareSize * 10. : flareSize), 0.1, iTime, 1);c.r+=f1+f2+f4+f5+f6; c.g+=f1+f22+f42+f52+f62; c.b+=f1+f23+f43+f53+f63;c = c*1.3 * vec3(length(zxMp)+.09);c+=vec3(f0);return c;}\n vec3 cc(vec3 clr, float fct,float fct2){float w = clr.x+clr.y+clr.z;return mix(clr,vec3(w)*fct,w*fct2);}float rnd(vec2 p){float f = fract(sin(dot(p, vec2(12.1234, 72.8392) )*45123.2));return f;}float rnd(float w){float f = fract(sin(w)*1000.);return f;}\n float rShp(vec2 p, int N){float f;float a=atan(p.x,p.y)+.2;float b=6.28319/float(N);f=smoothstep(.5,.51, cos(floor(.5+a/b)*b-a)*length(p.xy)* 2.0 -ghostScale);return f;}\n vec3 drC(vec2 p, float zsi, float dCy, vec3 clr, vec3 clr2, float ams2, vec2 esom){float l = length(p + esom*(ams2*2.))+zsi/2.;float l2 = length(p + esom*(ams2*4.))+zsi/3.;float c = max(0.01-pow(length(p + esom*ams2), zsi*ghostScale), 0.0)*10.;float c1 = max(0.001-pow(l-0.3, 1./40.)+sin(l*20.), 0.0)*3.;float c2 = max(0.09/pow(length(p-esom*ams2/.5)*1., .95), 0.0)/20.;float s = max(0.02-pow(rShp(p*5. + esom*ams2*5. + dCy, 6) , 1.), 0.0)*1.5;clr = cos(vec3(0.44, .24, .2)*8. + ams2*4.)*0.5+.5;vec3 f = c*clr;f += c1*clr;f += c2*clr;f += s*clr;return f-0.01;}\n vec4 geLC(float x){return vec4(vec3(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(vec3(0., 0., 0.),vec3(0., 0., 0.), smoothstep(0.0, 0.063, x)),vec3(0., 0., 0.), smoothstep(0.063, 0.125, x)),vec3(0.0, 0., 0.), smoothstep(0.125, 0.188, x)),vec3(0.188, 0.131, 0.116), smoothstep(0.188, 0.227, x)),vec3(0.31, 0.204, 0.537), smoothstep(0.227, 0.251, x)),vec3(0.192, 0.106, 0.286), smoothstep(0.251, 0.314, x)),vec3(0.102, 0.008, 0.341), smoothstep(0.314, 0.392, x)),vec3(0.086, 0.0, 0.141), smoothstep(0.392, 0.502, x)),vec3(1.0, 0.31, 0.0), smoothstep(0.502, 0.604, x)),vec3(.1, 0.1, 0.1), smoothstep(0.604, 0.643, x)),vec3(1.0, 0.929, 0.0), smoothstep(0.643, 0.761, x)),vec3(1.0, 0.086, 0.424), smoothstep(0.761, 0.847, x)),vec3(1.0, 0.49, 0.0), smoothstep(0.847, 0.89, x)),vec3(0.945, 0.275, 0.475), smoothstep(0.89, 0.941, x)),vec3(0.251, 0.275, 0.796), smoothstep(0.941, 1.0, x))),1.0);}\n float diTN(vec2 p){vec2 f = fract(p);f = (f * f) * (3.0 - (2.0 * f));float n = dot(floor(p), vec2(1.0, 157.0));vec4 a = fract(sin(vec4(n + 0.0, n + 1.0, n + 157.0, n + 158.0)) * 43758.5453123);return mix(mix(a.x, a.y, f.x), mix(a.z, a.w, f.x), f.y);} \n float fbm(vec2 p){const mat2 m = mat2(0.80, -0.60, 0.60, 0.80);float f = 0.0;f += 0.5000*diTN(p); p = m*p*2.02;f += 0.2500*diTN(p); p = m*p*2.03;f += 0.1250*diTN(p); p = m*p*2.01;f += 0.0625*diTN(p);return f/0.9375;} \n vec4 geLS(vec2 p){vec2 pp = (p - vec2(0.5)) * 2.0;float a = atan(pp.y, pp.x);vec4 cp = vec4(sin(a * 1.0), length(pp), sin(a * 13.0), sin(a * 53.0));float d = sin(clamp(pow(length(vec2(0.5) - p) * 0.5 + haloScale /2., 5.0), 0.0, 1.0) * 3.14159);vec3 c = vec3(d) * vec3(fbm(cp.xy * 16.0) * fbm(cp.zw * 9.0) * max(max(max(max(0.5, sin(a * 1.0)), sin(a * 3.0) * 0.8), sin(a * 7.0) * 0.8), sin(a * 9.0) * 10.6));c *= vec3(mix(2.0, (sin(length(pp.xy) * 256.0) * 0.5) + 0.5, sin((clamp((length(pp.xy) - 0.875) / 0.1, 0.0, 1.0) + 0.0) * 2.0 * 3.14159) * 1.5) + 0.5) * 0.3275;return vec4(vec3(c * 1.0), d);}\n vec4 geLD(vec2 p){p.xy += vec2(fbm(p.yx * 3.0), fbm(p.yx * 2.0)) * 0.0825;vec3 o = vec3(mix(0.125, 0.25, max(max(smoothstep(0.1, 0.0, length(p - vec2(0.25))),smoothstep(0.4, 0.0, length(p - vec2(0.75)))),smoothstep(0.8, 0.0, length(p - vec2(0.875, 0.125))))));o += vec3(max(fbm(p * 1.0) - 0.5, 0.0)) * 0.5;o += vec3(max(fbm(p * 2.0) - 0.5, 0.0)) * 0.5;o += vec3(max(fbm(p * 4.0) - 0.5, 0.0)) * 0.25;o += vec3(max(fbm(p * 8.0) - 0.75, 0.0)) * 1.0;o += vec3(max(fbm(p * 16.0) - 0.75, 0.0)) * 0.75;o += vec3(max(fbm(p * 64.0) - 0.75, 0.0)) * 0.5;return vec4(clamp(o, vec3(0.15), vec3(1.0)), 1.0);}\n vec4 txL(sampler2D tex, vec2 xtC){if(((xtC.x < 0.) || (xtC.y < 0.)) || ((xtC.x > 1.) || (xtC.y > 1.))){return vec4(0.0);}else{return texture(tex, xtC); }}\n vec4 txD(sampler2D tex, vec2 xtC, vec2 dir, vec3 ditn) {return vec4(txL(tex, (xtC + (dir * ditn.r))).r,txL(tex, (xtC + (dir * ditn.g))).g,txL(tex, (xtC + (dir * ditn.b))).b,1.0);}\n vec4 strB(){vec2 aspXtc = vec2(1.0) - (((vxtC - vec2(0.5)) * vec2(1.0)) + vec2(0.5)); vec2 xtC = vec2(1.0) - vxtC; vec2 ghvc = (vec2(0.5) - xtC) * 0.3 - lensPosition; vec2 ghNm = normalize(ghvc * vec2(1.0)) * vec2(1.0);vec2 haloVec = normalize(ghvc) * 0.6;vec2 hlNm = ghNm * 0.6;vec2 texelSize = vec2(1.0) / vec2(iResolution.xy);vec3 ditn = vec3(-(texelSize.x * 1.5), 0.2, texelSize.x * 1.5);vec4 c = vec4(0.0);for (int i = 0; i < 8; i++) {vec2 offset = xtC + (ghvc * float(i));c += txD(lensDirtTexture, offset, ghNm, ditn) * pow(max(0.0, 1.0 - (length(vec2(0.5) - offset) / length(vec2(0.5)))), 10.0);}vec2 uyTrz = xtC + hlNm; return (c * geLC((length(vec2(0.5) - aspXtc) / length(vec2(haloScale))))) +(txD(lensDirtTexture, uyTrz, ghNm, ditn) * pow(max(0.0, 1.0 - (length(vec2(0.5) - uyTrz) / length(vec2(0.5)))), 10.0));} \n void mainImage(vec4 v,vec2 r,out vec4 i){vec2 g=r-.5;g.y*=iResolution.y/iResolution.x;vec2 l=lensPosition*.5;l.y*=iResolution.y/iResolution.x;vec3 f=mLs(g,l)*20.*colorGain/256.;if(aditionalStreaks){vec3 o=vec3(.9,.2,.1),p=vec3(.3,.1,.9);for(float n=0.;n<10.;n++)f+=drC(g,pow(rnd(n*2e3)*2.8,.1)+1.41,0.,o+n,p+n,rnd(n*20.)*3.+.2-.5,lensPosition);}if(secondaryGhosts){vec3 n=vec3(0);n+=rHx(g,-lensPosition*.25,ghostScale*1.4,vec3(.25,.35,0));n+=rHx(g,lensPosition*.25,ghostScale*.5,vec3(1,.5,.5));n+=rHx(g,lensPosition*.1,ghostScale*1.6,vec3(1));n+=rHx(g,lensPosition*1.8,ghostScale*2.,vec3(0,.5,.75));n+=rHx(g,lensPosition*1.25,ghostScale*.8,vec3(1,1,.5));n+=rHx(g,-lensPosition*1.25,ghostScale*5.,vec3(.5,.5,.25));n+=fpow(1.-abs(distance(lensPosition*.8,g)-.7),.985)*colorGain/2100.;f+=n;}if(starBurst){vxtC=g+.5;vec4 n=geLD(g);float o=1.-clamp(0.5,0.,.5)*2.;n+=mix(n,pow(n*2.,vec4(2))*.5,o);float s=(g.x+g.y)*(1./6.);vec2 d=mat2(cos(s),-sin(s),sin(s),cos(s))*vxtC;n+=geLS(d)*2.;f+=clamp(n.xyz*strB().xyz,.01,1.);}i=enabled?vec4(mix(f,vec3(0),opacity)+v.xyz,v.w):vec4(v);}\n`\n )\n};\nclass LensFlareEffect extends Effect {\n constructor({\n blendFunction = BlendFunction.NORMAL,\n enabled = true,\n glareSize = 0.2,\n lensPosition = [0.01, 0.01],\n iResolution = [0, 0],\n starPoints = 6,\n flareSize = 0.01,\n flareSpeed = 0.01,\n flareShape = 0.01,\n animated = true,\n anamorphic = false,\n colorGain = new THREE.Color(20, 20, 20),\n lensDirtTexture = null,\n haloScale = 0.5,\n secondaryGhosts = true,\n aditionalStreaks = true,\n ghostScale = 0,\n opacity = 1,\n starBurst = false\n } = {}) {\n super(\"LensFlareEffect\", LensFlareShader.fragmentShader, {\n blendFunction,\n uniforms: /* @__PURE__ */ new Map([\n [\"enabled\", new THREE.Uniform(enabled)],\n [\"glareSize\", new THREE.Uniform(glareSize)],\n [\"lensPosition\", new THREE.Uniform(lensPosition)],\n [\"iTime\", new THREE.Uniform(0)],\n [\"iResolution\", new THREE.Uniform(iResolution)],\n [\"starPoints\", new THREE.Uniform(starPoints)],\n [\"flareSize\", new THREE.Uniform(flareSize)],\n [\"flareSpeed\", new THREE.Uniform(flareSpeed)],\n [\"flareShape\", new THREE.Uniform(flareShape)],\n [\"animated\", new THREE.Uniform(animated)],\n [\"anamorphic\", new THREE.Uniform(anamorphic)],\n [\"colorGain\", new THREE.Uniform(colorGain)],\n [\"lensDirtTexture\", new THREE.Uniform(lensDirtTexture)],\n [\"haloScale\", new THREE.Uniform(haloScale)],\n [\"secondaryGhosts\", new THREE.Uniform(secondaryGhosts)],\n [\"aditionalStreaks\", new THREE.Uniform(aditionalStreaks)],\n [\"ghostScale\", new THREE.Uniform(ghostScale)],\n [\"starBurst\", new THREE.Uniform(starBurst)],\n [\"opacity\", new THREE.Uniform(opacity)]\n ])\n });\n }\n update(_renderer, _inputBuffer, deltaTime) {\n const iTime = this.uniforms.get(\"iTime\");\n if (iTime) {\n iTime.value += deltaTime;\n }\n }\n}\nconst LensFlare = forwardRef(\n ({ position = new THREE.Vector3(-25, 6, -60), followMouse = false, smoothTime = 0.07, ...props }, ref) => {\n const viewport = useThree(({ viewport: viewport2 }) => viewport2);\n const raycaster = useThree(({ raycaster: raycaster2 }) => raycaster2);\n const pointer = useThree(({ pointer: pointer2 }) => pointer2);\n const { scene, camera } = useContext(EffectComposerContext);\n const [projectedPosition] = useState(() => new THREE.Vector3());\n const [mouse2d] = useState(() => new THREE.Vector2());\n const effect = useMemo(() => new LensFlareEffect(props), [props]);\n useFrame((_, delta) => {\n var _a, _b, _c;\n const uLensPosition = effect.uniforms.get(\"lensPosition\");\n const uOpacity = effect.uniforms.get(\"opacity\");\n if (!uLensPosition || !uOpacity)\n return;\n let target = 1;\n if (followMouse) {\n uLensPosition.value.x = pointer.x;\n uLensPosition.value.y = pointer.y;\n target = 0;\n } else {\n projectedPosition.copy(position).project(camera);\n if (projectedPosition.z > 1)\n return;\n uLensPosition.value.x = projectedPosition.x;\n uLensPosition.value.y = projectedPosition.y;\n mouse2d.set(projectedPosition.x, projectedPosition.y);\n raycaster.setFromCamera(mouse2d, camera);\n const intersects = raycaster.intersectObjects(scene.children, true);\n const { object } = intersects[0];\n if (object) {\n if (((_a = object.userData) == null ? void 0 : _a.lensflare) === \"no-occlusion\") {\n target = 0;\n } else if (object instanceof THREE.Mesh) {\n if (((_c = (_b = object.material.uniforms) == null ? void 0 : _b._transmission) == null ? void 0 : _c.value) > 0.2) {\n target = 0.2;\n } else if (object.material._transmission && object.material._transmission > 0.2) {\n target = 0.2;\n } else if (object.material.transparent) {\n target = object.material.opacity;\n }\n }\n }\n }\n easing.damp(uOpacity, \"value\", target, smoothTime, delta);\n });\n useEffect(() => {\n const iResolution = effect.uniforms.get(\"iResolution\");\n if (iResolution) {\n iResolution.value.x = viewport.width;\n iResolution.value.y = viewport.height;\n }\n }, [effect, viewport]);\n return /* @__PURE__ */ jsx(\"primitive\", { ref, object: effect, dispose: null });\n }\n);\nconst Bloom = wrapEffect(BloomEffect, {\n blendFunction: BlendFunction.ADD\n});\nconst BrightnessContrast = wrapEffect(BrightnessContrastEffect);\nconst ChromaticAberration = wrapEffect(ChromaticAberrationEffect);\nconst ColorAverage = forwardRef(function ColorAverage2({ blendFunction = BlendFunction.NORMAL }, ref) {\n const effect = useMemo(() => new ColorAverageEffect(blendFunction), [blendFunction]);\n return /* @__PURE__ */ jsx(\"primitive\", { ref, object: effect, dispose: null });\n});\nconst ColorDepth = wrapEffect(ColorDepthEffect);\nconst Depth = wrapEffect(DepthEffect);\nconst DotScreen = wrapEffect(DotScreenEffect);\nconst Glitch = forwardRef(function Glitch2({ active = true, ...props }, ref) {\n const invalidate = useThree((state) => state.invalidate);\n const delay = useVector2(props, \"delay\");\n const duration = useVector2(props, \"duration\");\n const strength = useVector2(props, \"strength\");\n const chromaticAberrationOffset = useVector2(props, \"chromaticAberrationOffset\");\n const effect = useMemo(\n () => new GlitchEffect({ ...props, delay, duration, strength, chromaticAberrationOffset }),\n [delay, duration, props, strength, chromaticAberrationOffset]\n );\n useLayoutEffect(() => {\n effect.mode = active ? props.mode || GlitchMode.SPORADIC : GlitchMode.DISABLED;\n invalidate();\n }, [active, effect, invalidate, props.mode]);\n useEffect(() => {\n return () => {\n effect.dispose();\n };\n }, [effect]);\n return /* @__PURE__ */ jsx(\"primitive\", { ref, object: effect, dispose: null });\n});\nconst GodRays = forwardRef(function GodRays2(props, ref) {\n const { camera } = useContext(EffectComposerContext);\n const effect = useMemo(() => new GodRaysEffect(camera, resolveRef(props.sun), props), [camera, props]);\n useLayoutEffect(() => void (effect.lightSource = resolveRef(props.sun)), [effect, props.sun]);\n return /* @__PURE__ */ jsx(\"primitive\", { ref, object: effect, dispose: null });\n});\nconst Grid = forwardRef(function Grid2({ size, ...props }, ref) {\n const invalidate = useThree((state) => state.invalidate);\n const effect = useMemo(() => new GridEffect(props), [props]);\n useLayoutEffect(() => {\n if (size)\n effect.setSize(size.width, size.height);\n invalidate();\n }, [effect, size]);\n return /* @__PURE__ */ jsx(\"primitive\", { ref, object: effect, dispose: null });\n});\nconst HueSaturation = wrapEffect(HueSaturationEffect);\nconst Noise = wrapEffect(NoiseEffect, { blendFunction: BlendFunction.COLOR_DODGE });\nconst Outline = forwardRef(function Outline2({\n selection = [],\n selectionLayer = 10,\n blendFunction,\n patternTexture,\n edgeStrength,\n pulseSpeed,\n visibleEdgeColor,\n hiddenEdgeColor,\n width,\n height,\n kernelSize,\n blur,\n xRay,\n ...props\n}, forwardRef2) {\n const invalidate = useThree((state) => state.invalidate);\n const { scene, camera } = useContext(EffectComposerContext);\n const effect = useMemo(\n () => new OutlineEffect(scene, camera, {\n blendFunction,\n patternTexture,\n edgeStrength,\n pulseSpeed,\n visibleEdgeColor,\n hiddenEdgeColor,\n width,\n height,\n kernelSize,\n blur,\n xRay,\n ...props\n }),\n [\n blendFunction,\n blur,\n camera,\n edgeStrength,\n height,\n hiddenEdgeColor,\n kernelSize,\n patternTexture,\n pulseSpeed,\n scene,\n visibleEdgeColor,\n width,\n xRay\n ]\n );\n const api = useContext(selectionContext);\n useEffect(() => {\n if (!api && selection) {\n effect.selection.set(\n Array.isArray(selection) ? selection.map(resolveRef) : [resolveRef(selection)]\n );\n invalidate();\n return () => {\n effect.selection.clear();\n invalidate();\n };\n }\n }, [effect, selection, api, invalidate]);\n useEffect(() => {\n effect.selectionLayer = selectionLayer;\n invalidate();\n }, [effect, invalidate, selectionLayer]);\n useRef();\n useEffect(() => {\n var _a;\n if (api && api.enabled) {\n if ((_a = api.selected) == null ? void 0 : _a.length) {\n effect.selection.set(api.selected);\n invalidate();\n return () => {\n effect.selection.clear();\n invalidate();\n };\n }\n }\n }, [api, effect.selection, invalidate]);\n return /* @__PURE__ */ jsx(\"primitive\", { ref: forwardRef2, object: effect });\n});\nconst Pixelation = forwardRef(function Pixelation2({ granularity = 5 }, ref) {\n const effect = useMemo(() => new PixelationEffect(granularity), [granularity]);\n return /* @__PURE__ */ jsx(\"primitive\", { ref, object: effect, dispose: null });\n});\nconst Scanline = wrapEffect(ScanlineEffect, { blendFunction: BlendFunction.OVERLAY, density: 1.25 });\nconst addLight = (light, effect) => light.layers.enable(effect.selection.layer);\nconst removeLight = (light, effect) => light.layers.disable(effect.selection.layer);\nconst SelectiveBloom = forwardRef(function SelectiveBloom2({\n selection = [],\n selectionLayer = 10,\n lights = [],\n luminanceThreshold,\n luminanceSmoothing,\n intensity,\n width,\n height,\n kernelSize,\n mipmapBlur,\n ...props\n}, forwardRef2) {\n if (lights.length === 0) {\n console.warn(\"SelectiveBloom requires lights to work.\");\n }\n const invalidate = useThree((state) => state.invalidate);\n const { scene, camera } = useContext(EffectComposerContext);\n const effect = useMemo(\n () => new SelectiveBloomEffect(scene, camera, {\n blendFunction: BlendFunction.ADD,\n luminanceThreshold,\n luminanceSmoothing,\n intensity,\n width,\n height,\n kernelSize,\n mipmapBlur,\n ...props\n }),\n [scene, camera, luminanceThreshold, luminanceSmoothing, intensity, width, height, kernelSize, mipmapBlur, props]\n );\n const api = useContext(selectionContext);\n useEffect(() => {\n if (!api && selection) {\n effect.selection.set(\n Array.isArray(selection) ? selection.map(resolveRef) : [resolveRef(selection)]\n );\n invalidate();\n return () => {\n effect.selection.clear();\n invalidate();\n };\n }\n }, [effect, selection, api, invalidate]);\n useEffect(() => {\n effect.selection.layer = selectionLayer;\n invalidate();\n }, [effect, invalidate, selectionLayer]);\n useEffect(() => {\n if (lights && lights.length > 0) {\n lights.forEach((light) => addLight(resolveRef(light), effect));\n invalidate();\n return () => {\n lights.forEach((light) => removeLight(resolveRef(light), effect));\n invalidate();\n };\n }\n }, [effect, invalidate, lights, selectionLayer]);\n useEffect(() => {\n var _a;\n if (api && api.enabled) {\n if ((_a = api.selected) == null ? void 0 : _a.length) {\n effect.selection.set(api.selected);\n invalidate();\n return () => {\n effect.selection.clear();\n invalidate();\n };\n }\n }\n }, [api, effect.selection, invalidate]);\n return /* @__PURE__ */ jsx(\"primitive\", { ref: forwardRef2, object: effect, dispose: null });\n});\nconst Sepia = wrapEffect(SepiaEffect);\nconst SSAO = forwardRef(function SSAO2(props, ref) {\n const { camera, normalPass, downSamplingPass, resolutionScale } = useContext(EffectComposerContext);\n const effect = useMemo(() => {\n if (normalPass === null && downSamplingPass === null) {\n console.error(\"Please enable the NormalPass in the EffectComposer in order to use SSAO.\");\n return {};\n }\n return new SSAOEffect(camera, normalPass && !downSamplingPass ? normalPass.texture : null, {\n blendFunction: BlendFunction.MULTIPLY,\n samples: 30,\n rings: 4,\n distanceThreshold: 1,\n distanceFalloff: 0,\n rangeThreshold: 0.5,\n rangeFalloff: 0.1,\n luminanceInfluence: 0.9,\n radius: 20,\n bias: 0.5,\n intensity: 1,\n color: void 0,\n // @ts-ignore\n normalDepthBuffer: downSamplingPass ? downSamplingPass.texture : null,\n resolutionScale: resolutionScale != null ? resolutionScale : 1,\n depthAwareUpsampling: true,\n ...props\n });\n }, [camera, normalPass, props]);\n return /* @__PURE__ */ jsx(\"primitive\", { ref, object: effect, dispose: null });\n});\nconst SMAA = wrapEffect(SMAAEffect);\nconst FXAA = wrapEffect(FXAAEffect);\nconst Texture = forwardRef(function Texture2({ textureSrc, texture, ...props }, ref) {\n const t = useLoader(TextureLoader, textureSrc);\n useLayoutEffect(() => {\n t.encoding = sRGBEncoding;\n t.wrapS = t.wrapT = RepeatWrapping;\n }, [t]);\n const effect = useMemo(() => new TextureEffect({ ...props, texture: t || texture }), [props, t, texture]);\n return /* @__PURE__ */ jsx(\"primitive\", { ref, object: effect, dispose: null });\n});\nconst ToneMapping = wrapEffect(ToneMappingEffect);\nconst Vignette = wrapEffect(VignetteEffect);\nconst ShockWave = wrapEffect(ShockWaveEffect);\nconst LUT = forwardRef(function LUT2({ lut, tetrahedralInterpolation, ...props }, ref) {\n const effect = useMemo(() => new LUT3DEffect(lut, props), [lut, props]);\n const invalidate = useThree((state) => state.invalidate);\n useLayoutEffect(() => {\n if (tetrahedralInterpolation)\n effect.tetrahedralInterpolation = tetrahedralInterpolation;\n if (lut)\n effect.lut = lut;\n invalidate();\n }, [effect, invalidate, lut, tetrahedralInterpolation]);\n return /* @__PURE__ */ jsx(\"primitive\", { ref, object: effect, dispose: null });\n});\nconst TiltShift = wrapEffect(TiltShiftEffect$1, { blendFunction: BlendFunction.ADD });\nconst TiltShiftShader = {\n fragmentShader: `\n\n // original shader by Evan Wallace\n\n #define MAX_ITERATIONS 100\n\n uniform float blur;\n uniform float taper;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 direction;\n uniform int samples;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n\n void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 startPixel = vec2(start.x * resolution.x, start.y * resolution.y);\n vec2 endPixel = vec2(end.x * resolution.x, end.y * resolution.y);\n float f_samples = float(samples);\n float half_samples = f_samples / 2.0;\n\n // use screen diagonal to normalize blur radii\n float maxScreenDistance = distance(vec2(0.0), resolution); // diagonal distance\n float gradientRadius = taper * (maxScreenDistance);\n float blurRadius = blur * (maxScreenDistance / 16.0);\n\n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n vec2 normal = normalize(vec2(startPixel.y - endPixel.y, endPixel.x - startPixel.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(uv * resolution - startPixel, normal)) / gradientRadius) * blurRadius;\n\n #pragma unroll_loop_start\n for (int i = 0; i <= MAX_ITERATIONS; i++) {\n if (i >= samples) { break; } // return early if over sample count\n float f_i = float(i);\n float s_i = -half_samples + f_i;\n float percent = (s_i + offset - 0.5) / half_samples;\n float weight = 1.0 - abs(percent);\n vec4 sample_i = texture2D(inputBuffer, uv + normalize(direction) / resolution * percent * radius);\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n sample_i.rgb *= sample_i.a;\n color += sample_i * weight;\n total += weight;\n }\n #pragma unroll_loop_end\n\n outputColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n outputColor.rgb /= outputColor.a + 0.00001;\n }\n `\n};\nclass TiltShiftEffect extends Effect {\n constructor({\n blendFunction = BlendFunction.NORMAL,\n blur = 0.15,\n // [0, 1], can go beyond 1 for extra\n taper = 0.5,\n // [0, 1], can go beyond 1 for extra\n start = [0.5, 0],\n // [0,1] percentage x,y of screenspace\n end = [0.5, 1],\n // [0,1] percentage x,y of screenspace\n samples = 10,\n // number of blur samples\n direction = [1, 1]\n // direction of blur\n } = {}) {\n super(\"TiltShiftEffect\", TiltShiftShader.fragmentShader, {\n blendFunction,\n attributes: EffectAttribute.CONVOLUTION,\n uniforms: /* @__PURE__ */ new Map([\n [\"blur\", new Uniform(blur)],\n [\"taper\", new Uniform(taper)],\n [\"start\", new Uniform(start)],\n [\"end\", new Uniform(end)],\n [\"samples\", new Uniform(samples)],\n [\"direction\", new Uniform(direction)]\n ])\n });\n }\n}\nconst TiltShift2 = wrapEffect(TiltShiftEffect, { blendFunction: BlendFunction.NORMAL });\nconst fragment = `\nuniform sampler2D uCharacters;\nuniform float uCharactersCount;\nuniform float uCellSize;\nuniform bool uInvert;\nuniform vec3 uColor;\n\nconst vec2 SIZE = vec2(16.);\n\nvec3 greyscale(vec3 color, float strength) {\n float g = dot(color, vec3(0.299, 0.587, 0.114));\n return mix(color, vec3(g), strength);\n}\n\nvec3 greyscale(vec3 color) {\n return greyscale(color, 1.0);\n}\n\nvoid mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {\n vec2 cell = resolution / uCellSize;\n vec2 grid = 1.0 / cell;\n vec2 pixelizedUV = grid * (0.5 + floor(uv / grid));\n vec4 pixelized = texture2D(inputBuffer, pixelizedUV);\n float greyscaled = greyscale(pixelized.rgb).r;\n\n if (uInvert) {\n greyscaled = 1.0 - greyscaled;\n }\n\n float characterIndex = floor((uCharactersCount - 1.0) * greyscaled);\n vec2 characterPosition = vec2(mod(characterIndex, SIZE.x), floor(characterIndex / SIZE.y));\n vec2 offset = vec2(characterPosition.x, -characterPosition.y) / SIZE;\n vec2 charUV = mod(uv * (cell / SIZE), 1.0 / SIZE) - vec2(0., 1.0 / SIZE) + offset;\n vec4 asciiCharacter = texture2D(uCharacters, charUV);\n\n asciiCharacter.rgb = uColor * asciiCharacter.r;\n asciiCharacter.a = pixelized.a;\n outputColor = asciiCharacter;\n}\n`;\nclass ASCIIEffect extends Effect {\n constructor({\n characters = ` .:,'-^=*+?!|0#X%WM@`,\n fontSize = 54,\n cellSize = 16,\n color = \"#ffffff\",\n invert = false\n } = {}) {\n const uniforms = /* @__PURE__ */ new Map([\n [\"uCharacters\", new Uniform(new Texture$1())],\n [\"uCellSize\", new Uniform(cellSize)],\n [\"uCharactersCount\", new Uniform(characters.length)],\n [\"uColor\", new Uniform(new Color(color))],\n [\"uInvert\", new Uniform(invert)]\n ]);\n super(\"ASCIIEffect\", fragment, { uniforms });\n const charactersTextureUniform = this.uniforms.get(\"uCharacters\");\n if (charactersTextureUniform) {\n charactersTextureUniform.value = this.createCharactersTexture(characters, fontSize);\n }\n }\n /** Draws the characters on a Canvas and returns a texture */\n createCharactersTexture(characters, fontSize) {\n const canvas = document.createElement(\"canvas\");\n const SIZE = 1024;\n const MAX_PER_ROW = 16;\n const CELL = SIZE / MAX_PER_ROW;\n canvas.width = canvas.height = SIZE;\n const texture = new CanvasTexture(canvas, void 0, RepeatWrapping, RepeatWrapping, NearestFilter, NearestFilter);\n const context = canvas.getContext(\"2d\");\n if (!context) {\n throw new Error(\"Context not available\");\n }\n context.clearRect(0, 0, SIZE, SIZE);\n context.font = `${fontSize}px arial`;\n context.textAlign = \"center\";\n context.textBaseline = \"middle\";\n context.fillStyle = \"#fff\";\n for (let i2 = 0; i2 < characters.length; i2++) {\n const char = characters[i2];\n const x = i2 % MAX_PER_ROW;\n const y = Math.floor(i2 / MAX_PER_ROW);\n context.fillText(char, x * CELL + CELL / 2, y * CELL + CELL / 2);\n }\n texture.needsUpdate = true;\n return texture;\n }\n}\nconst ASCII = forwardRef(\n ({ characters = ` .:,'-^=*+?!|0#X%WM@`, fontSize = 54, cellSize = 16, color = \"#ffffff\", invert = false }, fref) => {\n const effect = useMemo(\n () => new ASCIIEffect({ characters, fontSize, cellSize, color, invert }),\n [characters, fontSize, cellSize, color, invert]\n );\n return /* @__PURE__ */ jsx(\"primitive\", { ref: fref, object: effect });\n }\n);\nvar boxBlur = \"#define GLSLIFY 1\\nuniform float blur;uniform float blurSharpness;uniform int blurKernel;vec3 denoise(vec3 center,sampler2D tex,vec2 uv,vec2 invTexSize,float blur,float blurSharpness,int blurKernel){vec3 color;float total;vec3 col;float weight;for(int x=-blurKernel;x<=blurKernel;x++){for(int y=-blurKernel;y<=blurKernel;y++){col=textureLod(tex,uv+vec2(x,y)*invTexSize,0.).rgb;weight=1.0-abs(dot(col-center,vec3(0.25)));weight=pow(weight,blurSharpness);color+=col*weight;total+=weight;}}return color/total;}\";\nvar finalSSRShader = \"#define GLSLIFY 1\\n#define MODE_DEFAULT 0\\n#define MODE_REFLECTIONS 1\\n#define MODE_RAW_REFLECTION 2\\n#define MODE_BLURRED_REFLECTIONS 3\\n#define MODE_INPUT 4\\n#define MODE_BLUR_MIX 5\\n#define FLOAT_EPSILON 0.00001\\nuniform sampler2D inputTexture;uniform sampler2D reflectionsTexture;uniform float samples;\\n#include \\nvoid mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec4 reflectionsTexel=texture2D(reflectionsTexture,vUv);ivec2 size=textureSize(reflectionsTexture,0);vec2 invTexSize=1./vec2(size.x,size.y);vec3 reflectionClr=reflectionsTexel.xyz;if(blur>FLOAT_EPSILON){vec3 blurredReflectionsColor=denoise(reflectionsTexel.rgb,reflectionsTexture,vUv,invTexSize,blur,blurSharpness,blurKernel);reflectionClr=mix(reflectionClr,blurredReflectionsColor.rgb,blur);}\\n#if RENDER_MODE == MODE_DEFAULT\\noutputColor=vec4(inputColor.rgb+reflectionClr,1.0);\\n#endif\\n#if RENDER_MODE == MODE_REFLECTIONS\\noutputColor=vec4(reflectionClr,1.0);\\n#endif\\n#if RENDER_MODE == MODE_RAW_REFLECTION\\noutputColor=vec4(reflectionsTexel.xyz,1.0);\\n#endif\\n#if RENDER_MODE == MODE_BLURRED_REFLECTIONS\\noutputColor=vec4(blurredReflectionsTexel.xyz,1.0);\\n#endif\\n#if RENDER_MODE == MODE_INPUT\\noutputColor=vec4(inputColor.xyz,1.0);\\n#endif\\n#if RENDER_MODE == MODE_BLUR_MIX\\noutputColor=vec4(vec3(blur),1.0);\\n#endif\\n}\";\nvar helperFunctions = \"#define GLSLIFY 1\\nvec3 getViewPosition(const float depth){float clipW=_projectionMatrix[2][3]*depth+_projectionMatrix[3][3];vec4 clipPosition=vec4((vec3(vUv,depth)-0.5)*2.0,1.0);clipPosition*=clipW;return(_inverseProjectionMatrix*clipPosition).xyz;}float getViewZ(const in float depth){\\n#ifdef PERSPECTIVE_CAMERA\\nreturn perspectiveDepthToViewZ(depth,cameraNear,cameraFar);\\n#else\\nreturn orthographicDepthToViewZ(depth,cameraNear,cameraFar);\\n#endif\\n}vec3 screenSpaceToWorldSpace(const vec2 uv,const float depth){vec4 ndc=vec4((uv.x-0.5)*2.0,(uv.y-0.5)*2.0,(depth-0.5)*2.0,1.0);vec4 clip=_inverseProjectionMatrix*ndc;vec4 view=cameraMatrixWorld*(clip/clip.w);return view.xyz;}\\n#define Scale (vec3(0.8, 0.8, 0.8))\\n#define K (19.19)\\nvec3 hash(vec3 a){a=fract(a*Scale);a+=dot(a,a.yxz+K);return fract((a.xxy+a.yxx)*a.zyx);}float fresnel_dielectric_cos(float cosi,float eta){float c=abs(cosi);float g=eta*eta-1.0+c*c;float result;if(g>0.0){g=sqrt(g);float A=(g-c)/(g+c);float B=(c*(g+c)-1.0)/(c*(g-c)+1.0);result=0.5*A*A*(1.0+B*B);}else{result=1.0;}return result;}float fresnel_dielectric(vec3 Incoming,vec3 Normal,float eta){float cosine=dot(Incoming,Normal);return min(1.0,5.0*fresnel_dielectric_cos(cosine,eta));}\";\nvar trCompose = \"#define GLSLIFY 1\\n#define INV_EULER 0.36787944117144233\\nalpha=velocityDisocclusion0.5;\\n#ifdef boxBlur\\nif(needsBlur)inputColor=boxBlurredColor;\\n#endif\\nif(alpha==1.0){outputColor=accumulatedColor;}else{float m=mix(alpha,1.0,blend);if(needsBlur)m=0.0;outputColor=accumulatedColor*m+inputColor*(1.0-m);}\";\nclass MRTMaterial extends ShaderMaterial {\n constructor() {\n super({\n type: \"MRTMaterial\",\n defines: {\n USE_UV: \"\",\n TEMPORAL_RESOLVE: \"\"\n },\n uniforms: {\n opacity: new Uniform(1),\n normalMap: new Uniform(null),\n normalScale: new Uniform(new Vector2(1, 1)),\n uvTransform: new Uniform(new Matrix3()),\n roughness: new Uniform(1),\n roughnessMap: new Uniform(null)\n },\n vertexShader: (\n /* glsl */\n `\n #ifdef USE_MRT\n varying vec2 vHighPrecisionZW;\n #endif\n #define NORMAL\n #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n varying vec3 vViewPosition;\n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #ifdef USE_UV\n ${REVISION.replace(/\\D+/g, \"\") >= 151 ? \"uniform mat3 uvTransform;\" : \"\"}\n #endif\n void main() {\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 #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n vViewPosition = - mvPosition.xyz;\n #endif\n #ifdef USE_MRT\n vHighPrecisionZW = gl_Position.zw;\n #endif\n #ifdef USE_UV\n vUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n #endif\n }\n `\n ),\n fragmentShader: (\n /* glsl */\n `\n #define NORMAL\n #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n varying vec3 vViewPosition;\n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n\n #ifdef USE_MRT\n layout(location = 0) out vec4 gNormal;\n layout(location = 1) out vec4 gDepth;\n\n varying vec2 vHighPrecisionZW;\n #endif\n uniform float roughness;\n void main() {\n #include \n #include \n #include \n #include \n\n float roughnessFactor = roughness;\n\n if(roughness > 10.0e9){\n roughnessFactor = 1.;\n }else{\n #ifdef useRoughnessMap\n vec4 texelRoughness = texture2D( roughnessMap, vUv );\n // reads channel G, compatible with a combined OcclusionRoughnessMetallic (RGB) texture\n roughnessFactor *= texelRoughness.g;\n #endif\n }\n\n vec3 normalColor = packNormalToRGB( normal );\n #ifdef USE_MRT\n float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n vec4 depthColor = packDepthToRGBA( fragCoordZ );\n gNormal = vec4( normalColor, roughnessFactor );\n gDepth = depthColor;\n #else\n gl_FragColor = vec4(normalColor, roughnessFactor);\n #endif\n }\n `\n ),\n toneMapped: false\n });\n this.normalMapType = TangentSpaceNormalMap;\n this.normalScale = new Vector2(1, 1);\n Object.defineProperty(this, \"glslVersion\", {\n get() {\n return \"USE_MRT\" in this.defines ? GLSL3 : null;\n },\n set(_) {\n }\n });\n }\n}\nvar vertexShader$1 = \"#define GLSLIFY 1\\nvarying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}\";\nvar fragmentShader = \"#define GLSLIFY 1\\nvarying vec2 vUv;uniform sampler2D inputTexture;uniform sampler2D accumulatedTexture;uniform sampler2D normalTexture;uniform sampler2D depthTexture;uniform sampler2D envMap;uniform mat4 _projectionMatrix;uniform mat4 _inverseProjectionMatrix;uniform mat4 cameraMatrixWorld;uniform float cameraNear;uniform float cameraFar;uniform float rayDistance;uniform float intensity;uniform float maxDepthDifference;uniform float roughnessFade;uniform float maxRoughness;uniform float fade;uniform float thickness;uniform float ior;uniform float samples;uniform float jitter;uniform float jitterRoughness;\\n#define INVALID_RAY_COORDS vec2(-1.0);\\n#define EARLY_OUT_COLOR vec4(0.0, 0.0, 0.0, 1.0)\\n#define FLOAT_EPSILON 0.00001\\nfloat nearMinusFar;float nearMulFar;float farMinusNear;\\n#include \\n#include \\nvec2 RayMarch(vec3 dir,inout vec3 hitPos,inout float rayHitDepthDifference);vec2 BinarySearch(in vec3 dir,inout vec3 hitPos,inout float rayHitDepthDifference);float fastGetViewZ(const in float depth);vec3 getIBLRadiance(const in vec3 viewDir,const in vec3 normal,const in float roughness);void main(){vec4 depthTexel=textureLod(depthTexture,vUv,0.0);if(dot(depthTexel.rgb,depthTexel.rgb)1.0)jitterMix=1.0;jitt=mix(vec3(0.0),randomJitter*spread,jitterMix);}viewNormal+=jitt;float fresnelFactor=fresnel_dielectric(viewDir,viewNormal,ior);vec3 iblRadiance=getIBLRadiance(-viewDir,viewNormal,0.)*fresnelFactor;float lastFrameAlpha=textureLod(accumulatedTexture,vUv,0.0).a;if(roughness>maxRoughness||(roughness>1.0-FLOAT_EPSILON&&roughnessFade>1.0-FLOAT_EPSILON)){gl_FragColor=vec4(iblRadiance,lastFrameAlpha);return;}vec3 reflected=reflect(viewDir,viewNormal);vec3 rayDir=reflected*-viewPos.z;vec3 hitPos=viewPos;float rayHitDepthDifference;vec2 coords=RayMarch(rayDir,hitPos,rayHitDepthDifference);if(coords.x==-1.0){gl_FragColor=vec4(iblRadiance,lastFrameAlpha);return;}vec4 SSRTexel=textureLod(inputTexture,coords.xy,0.0);vec4 SSRTexelReflected=textureLod(accumulatedTexture,coords.xy,0.0);vec3 SSR=SSRTexel.rgb+SSRTexelReflected.rgb;float roughnessFactor=mix(specular,1.0,max(0.0,1.0-roughnessFade));vec2 coordsNDC=(coords.xy*2.0-1.0);float screenFade=0.1;float maxDimension=min(1.0,max(abs(coordsNDC.x),abs(coordsNDC.y)));float reflectionIntensity=1.0-(max(0.0,maxDimension-screenFade)/(1.0-screenFade));reflectionIntensity=max(0.,reflectionIntensity);vec3 finalSSR=mix(iblRadiance,SSR,reflectionIntensity)*roughnessFactor;if(fade!=0.0){vec3 hitWorldPos=screenSpaceToWorldSpace(coords,rayHitDepthDifference);float reflectionDistance=distance(hitWorldPos,worldPos)+1.0;float opacity=1.0/(reflectionDistance*fade*0.1);if(opacity>1.0)opacity=1.0;finalSSR*=opacity;}finalSSR*=fresnelFactor*intensity;finalSSR=min(vec3(1.0),finalSSR);float alpha=hitPos.z==1.0 ? 1.0 : SSRTexelReflected.a;alpha=min(lastFrameAlpha,alpha);gl_FragColor=vec4(finalSSR,alpha);}vec2 RayMarch(vec3 dir,inout vec3 hitPos,inout float rayHitDepthDifference){dir=normalize(dir);dir*=rayDistance/float(steps);float depth;vec4 projectedCoord;vec4 lastProjectedCoord;float unpackedDepth;vec4 depthTexel;for(int i=0;i1.0||projectedCoord.y<0.0||projectedCoord.y>1.0){return INVALID_RAY_COORDS;}\\n#endif\\ndepthTexel=textureLod(depthTexture,projectedCoord.xy,0.0);unpackedDepth=unpackRGBAToDepth(depthTexel);depth=fastGetViewZ(unpackedDepth);rayHitDepthDifference=depth-hitPos.z;if(rayHitDepthDifference>=0.0&&rayHitDepthDifference0.0){return INVALID_RAY_COORDS;}\\n#endif\\nlastProjectedCoord=projectedCoord;}hitPos.z=1.0;\\n#ifndef missedRays\\nreturn INVALID_RAY_COORDS;\\n#endif\\nrayHitDepthDifference=unpackedDepth;return projectedCoord.xy;}vec2 BinarySearch(in vec3 dir,inout vec3 hitPos,inout float rayHitDepthDifference){float depth;vec4 projectedCoord;vec2 lastMinProjectedCoordXY;float unpackedDepth;vec4 depthTexel;for(int i=0;i0.0){hitPos-=dir;}else{hitPos+=dir;}}if(dot(depthTexel.rgb,depthTexel.rgb)maxDepthDifference)return INVALID_RAY_COORDS;projectedCoord=_projectionMatrix*vec4(hitPos,1.0);projectedCoord.xy/=projectedCoord.w;projectedCoord.xy=projectedCoord.xy*0.5+0.5;rayHitDepthDifference=unpackedDepth;return projectedCoord.xy;}float fastGetViewZ(const in float depth){\\n#ifdef PERSPECTIVE_CAMERA\\nreturn nearMulFar/(farMinusNear*depth-cameraFar);\\n#else\\nreturn depth*nearMinusFar-cameraNear;\\n#endif\\n}\\n#include \\n#include \\nvec3 getIBLRadiance(const in vec3 viewDir,const in vec3 normal,const in float roughness){\\n#if defined(ENVMAP_TYPE_CUBE_UV)\\nvec3 reflectVec=reflect(-viewDir,normal);reflectVec=normalize(mix(reflectVec,normal,roughness*roughness));reflectVec=inverseTransformDirection(reflectVec,viewMatrix);vec4 envMapColor=textureCubeUV(envMap,reflectVec,roughness);return envMapColor.rgb*intensity;\\n#else\\nreturn vec3(0.0);\\n#endif\\n}\";\nclass ReflectionsMaterial extends ShaderMaterial {\n constructor() {\n super({\n type: \"ReflectionsMaterial\",\n uniforms: {\n inputTexture: new Uniform(null),\n accumulatedTexture: new Uniform(null),\n normalTexture: new Uniform(null),\n depthTexture: new Uniform(null),\n _projectionMatrix: new Uniform(new Matrix4()),\n _inverseProjectionMatrix: new Uniform(new Matrix4()),\n cameraMatrixWorld: new Uniform(new Matrix4()),\n cameraNear: new Uniform(0),\n cameraFar: new Uniform(0),\n rayDistance: new Uniform(0),\n intensity: new Uniform(0),\n roughnessFade: new Uniform(0),\n fade: new Uniform(0),\n thickness: new Uniform(0),\n ior: new Uniform(0),\n maxDepthDifference: new Uniform(0),\n jitter: new Uniform(0),\n jitterRoughness: new Uniform(0),\n maxRoughness: new Uniform(0),\n samples: new Uniform(0),\n envMap: new Uniform(null),\n envMapPosition: new Uniform(new Vector3()),\n envMapSize: new Uniform(new Vector3()),\n viewMatrix: new Uniform(new Matrix4())\n },\n defines: {\n steps: 20,\n refineSteps: 5,\n CUBEUV_TEXEL_WIDTH: 0,\n CUBEUV_TEXEL_HEIGHT: 0,\n CUBEUV_MAX_MIP: 0,\n vWorldPosition: \"worldPos\"\n },\n fragmentShader: fragmentShader.replace(\"#include \", helperFunctions),\n vertexShader: vertexShader$1,\n toneMapped: false,\n depthWrite: false,\n depthTest: false\n });\n }\n}\nconst getVisibleChildren = (object) => {\n const queue = [object];\n const objects = [];\n while (queue.length !== 0) {\n const mesh = queue.shift();\n if (mesh.material)\n objects.push(mesh);\n for (const c of mesh.children) {\n if (c.visible)\n queue.push(c);\n }\n }\n return objects;\n};\nconst generateCubeUVSize = (parameters) => {\n const imageHeight = parameters.envMapCubeUVHeight;\n if (imageHeight === null)\n return null;\n const maxMip = Math.log2(imageHeight) - 2;\n const texelHeight = 1 / imageHeight;\n const texelWidth = 1 / (3 * Math.max(Math.pow(2, maxMip), 7 * 16));\n return {\n texelWidth,\n texelHeight,\n maxMip\n };\n};\nconst setupEnvMap = (reflectionsMaterial, envMap, envMapCubeUVHeight) => {\n reflectionsMaterial.uniforms.envMap.value = envMap;\n const envMapCubeUVSize = generateCubeUVSize({\n envMapCubeUVHeight\n });\n reflectionsMaterial.defines.ENVMAP_TYPE_CUBE_UV = \"\";\n reflectionsMaterial.defines.CUBEUV_TEXEL_WIDTH = envMapCubeUVSize.texelWidth;\n reflectionsMaterial.defines.CUBEUV_TEXEL_HEIGHT = envMapCubeUVSize.texelHeight;\n reflectionsMaterial.defines.CUBEUV_MAX_MIP = envMapCubeUVSize.maxMip + \".0\";\n reflectionsMaterial.needsUpdate = true;\n};\nconst isWebGL2Available = () => {\n try {\n const canvas = document.createElement(\"canvas\");\n return !!(window.WebGL2RenderingContext && canvas.getContext(\"webgl2\"));\n } catch (e) {\n return false;\n }\n};\nclass ReflectionsPass extends Pass {\n constructor(ssrEffect, options = {}) {\n super(\"ReflectionsPass\");\n this.ssrEffect = void 0;\n this.cachedMaterials = /* @__PURE__ */ new WeakMap();\n this.USE_MRT = false;\n this.webgl1DepthPass = null;\n this.visibleMeshes = [];\n this.ssrEffect = ssrEffect;\n this._scene = ssrEffect._scene;\n this._camera = ssrEffect._camera;\n this.fullscreenMaterial = new ReflectionsMaterial();\n if (ssrEffect._camera.isPerspectiveCamera)\n this.fullscreenMaterial.defines.PERSPECTIVE_CAMERA = \"\";\n const width = options.width || typeof window !== \"undefined\" ? window.innerWidth : 2e3;\n const height = options.height || typeof window !== \"undefined\" ? window.innerHeight : 1e3;\n this.renderTarget = new WebGLRenderTarget(width, height, {\n minFilter: LinearFilter,\n magFilter: LinearFilter,\n type: HalfFloatType,\n depthBuffer: false\n });\n this.renderPass = new RenderPass(this._scene, this._camera);\n this.USE_MRT = isWebGL2Available();\n if (this.USE_MRT) {\n this.gBuffersRenderTarget = new WebGLMultipleRenderTargets(width, height, 2, {\n minFilter: LinearFilter,\n magFilter: LinearFilter\n });\n this.normalTexture = this.gBuffersRenderTarget.texture[0];\n this.depthTexture = this.gBuffersRenderTarget.texture[1];\n } else {\n this.webgl1DepthPass = new DepthPass(this._scene, this._camera);\n this.webgl1DepthPass.renderTarget.minFilter = LinearFilter;\n this.webgl1DepthPass.renderTarget.magFilter = LinearFilter;\n this.webgl1DepthPass.renderTarget.texture.minFilter = LinearFilter;\n this.webgl1DepthPass.renderTarget.texture.magFilter = LinearFilter;\n this.webgl1DepthPass.setSize(\n typeof window !== \"undefined\" ? window.innerWidth : 2e3,\n typeof window !== \"undefined\" ? window.innerHeight : 1e3\n );\n this.gBuffersRenderTarget = new WebGLRenderTarget(width, height, {\n minFilter: LinearFilter,\n magFilter: LinearFilter\n });\n this.normalTexture = this.gBuffersRenderTarget.texture;\n this.depthTexture = this.webgl1DepthPass.texture;\n }\n this.fullscreenMaterial.uniforms.normalTexture.value = this.normalTexture;\n this.fullscreenMaterial.uniforms.depthTexture.value = this.depthTexture;\n this.fullscreenMaterial.uniforms.accumulatedTexture.value = this.ssrEffect.temporalResolvePass.accumulatedTexture;\n this.fullscreenMaterial.uniforms.cameraMatrixWorld.value = this._camera.matrixWorld;\n this.fullscreenMaterial.uniforms._projectionMatrix.value = this._camera.projectionMatrix;\n this.fullscreenMaterial.uniforms._inverseProjectionMatrix.value = this._camera.projectionMatrixInverse;\n }\n setSize(width, height) {\n this.renderTarget.setSize(width * this.ssrEffect.resolutionScale, height * this.ssrEffect.resolutionScale);\n this.gBuffersRenderTarget.setSize(width * this.ssrEffect.resolutionScale, height * this.ssrEffect.resolutionScale);\n this.fullscreenMaterial.uniforms.accumulatedTexture.value = this.ssrEffect.temporalResolvePass.accumulatedTexture;\n this.fullscreenMaterial.needsUpdate = true;\n }\n dispose() {\n this.renderTarget.dispose();\n this.gBuffersRenderTarget.dispose();\n this.renderPass.dispose();\n if (!this.USE_MRT)\n this.webgl1DepthPass.dispose();\n this.fullscreenMaterial.dispose();\n this.normalTexture = null;\n this.depthTexture = null;\n this.velocityTexture = null;\n }\n keepMaterialMapUpdated(mrtMaterial, originalMaterial, prop, define) {\n if (this.ssrEffect[define]) {\n if (originalMaterial[prop] !== mrtMaterial[prop]) {\n mrtMaterial[prop] = originalMaterial[prop];\n mrtMaterial.uniforms[prop].value = originalMaterial[prop];\n if (originalMaterial[prop]) {\n mrtMaterial.defines[define] = \"\";\n } else {\n delete mrtMaterial.defines[define];\n }\n mrtMaterial.needsUpdate = true;\n }\n } else if (mrtMaterial[prop] !== void 0) {\n mrtMaterial[prop] = void 0;\n mrtMaterial.uniforms[prop].value = void 0;\n delete mrtMaterial.defines[define];\n mrtMaterial.needsUpdate = true;\n }\n }\n setMRTMaterialInScene() {\n this.visibleMeshes = getVisibleChildren(this._scene);\n for (const c of this.visibleMeshes) {\n if (c.material) {\n const originalMaterial = c.material;\n let [cachedOriginalMaterial, mrtMaterial] = this.cachedMaterials.get(c) || [];\n if (originalMaterial !== cachedOriginalMaterial) {\n if (mrtMaterial)\n mrtMaterial.dispose();\n mrtMaterial = new MRTMaterial();\n if (this.USE_MRT)\n mrtMaterial.defines.USE_MRT = \"\";\n mrtMaterial.normalScale = originalMaterial.normalScale;\n mrtMaterial.uniforms.normalScale.value = originalMaterial.normalScale;\n const map = originalMaterial.map || originalMaterial.normalMap || originalMaterial.roughnessMap || originalMaterial.metalnessMap;\n if (map)\n mrtMaterial.uniforms.uvTransform.value = map.matrix;\n this.cachedMaterials.set(c, [originalMaterial, mrtMaterial]);\n }\n this.keepMaterialMapUpdated(mrtMaterial, originalMaterial, \"normalMap\", \"useNormalMap\");\n this.keepMaterialMapUpdated(mrtMaterial, originalMaterial, \"roughnessMap\", \"useRoughnessMap\");\n mrtMaterial.uniforms.roughness.value = this.ssrEffect.selection.size === 0 || this.ssrEffect.selection.has(c) ? originalMaterial.roughness || 0 : 1e11;\n c.material = mrtMaterial;\n }\n }\n }\n unsetMRTMaterialInScene() {\n for (const c of this.visibleMeshes) {\n var _c$material;\n if (((_c$material = c.material) == null ? void 0 : _c$material.type) === \"MRTMaterial\") {\n c.visible = true;\n const [originalMaterial] = this.cachedMaterials.get(c);\n c.material = originalMaterial;\n }\n }\n }\n render(renderer, inputBuffer) {\n this.setMRTMaterialInScene();\n renderer.setRenderTarget(this.gBuffersRenderTarget);\n this.renderPass.render(renderer, this.gBuffersRenderTarget);\n this.unsetMRTMaterialInScene();\n if (!this.USE_MRT)\n this.webgl1DepthPass.renderPass.render(renderer, this.webgl1DepthPass.renderTarget);\n this.fullscreenMaterial.uniforms.inputTexture.value = inputBuffer.texture;\n this.fullscreenMaterial.uniforms.samples.value = this.ssrEffect.temporalResolvePass.samples;\n this.fullscreenMaterial.uniforms.cameraNear.value = this._camera.near;\n this.fullscreenMaterial.uniforms.cameraFar.value = this._camera.far;\n this.fullscreenMaterial.uniforms.viewMatrix.value.copy(this._camera.matrixWorldInverse);\n renderer.setRenderTarget(this.renderTarget);\n renderer.render(this.scene, this.camera);\n }\n}\nconst defaultSSROptions = {\n intensity: 1,\n exponent: 1,\n distance: 10,\n fade: 0,\n roughnessFade: 1,\n thickness: 10,\n ior: 1.45,\n maxRoughness: 1,\n maxDepthDifference: 10,\n blend: 0.9,\n correction: 1,\n correctionRadius: 1,\n blur: 0.5,\n blurKernel: 1,\n blurSharpness: 10,\n jitter: 0,\n jitterRoughness: 0,\n steps: 20,\n refineSteps: 5,\n missedRays: true,\n useNormalMap: true,\n useRoughnessMap: true,\n resolutionScale: 1,\n velocityResolutionScale: 1\n};\nvar vertexShader = \"#define GLSLIFY 1\\nvarying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}\";\nvar temporalResolve = \"#define GLSLIFY 1\\nuniform sampler2D inputTexture;uniform sampler2D accumulatedTexture;uniform sampler2D velocityTexture;uniform sampler2D lastVelocityTexture;uniform float blend;uniform float correction;uniform float exponent;uniform float samples;uniform vec2 invTexSize;uniform mat4 curInverseProjectionMatrix;uniform mat4 curCameraMatrixWorld;uniform mat4 prevInverseProjectionMatrix;uniform mat4 prevCameraMatrixWorld;varying vec2 vUv;\\n#define MAX_NEIGHBOR_DEPTH_DIFFERENCE 0.001\\n#define FLOAT_EPSILON 0.00001\\n#define FLOAT_ONE_MINUS_EPSILON 0.99999\\nvec3 transformexponent;vec3 undoColorTransformExponent;vec3 transformColor(vec3 color){if(exponent==1.0)return color;return pow(abs(color),transformexponent);}vec3 undoColorTransform(vec3 color){if(exponent==1.0)return color;return max(pow(abs(color),undoColorTransformExponent),vec3(0.0));}void main(){if(exponent!=1.0){transformexponent=vec3(1.0/exponent);undoColorTransformExponent=vec3(exponent);}vec4 inputTexel=textureLod(inputTexture,vUv,0.0);vec4 accumulatedTexel;vec3 inputColor=transformColor(inputTexel.rgb);vec3 accumulatedColor;float alpha=inputTexel.a;float velocityDisocclusion;bool didReproject=false;\\n#ifdef boxBlur\\nvec3 boxBlurredColor=inputTexel.rgb;\\n#endif\\nvec4 velocity=textureLod(velocityTexture,vUv,0.0);bool isMoving=alpha<1.0||dot(velocity.xy,velocity.xy)>0.0;if(isMoving){vec3 minNeighborColor=inputColor;vec3 maxNeighborColor=inputColor;vec3 col;vec2 neighborUv;vec2 reprojectedUv=vUv-velocity.xy;vec4 lastVelocity=textureLod(lastVelocityTexture,reprojectedUv,0.0);float depth=velocity.b;float closestDepth=depth;float lastClosestDepth=lastVelocity.b;float neighborDepth;float lastNeighborDepth;for(int x=-correctionRadius;x<=correctionRadius;x++){for(int y=-correctionRadius;y<=correctionRadius;y++){if(x!=0||y!=0){neighborUv=vUv+vec2(x,y)*invTexSize;vec4 neigborVelocity=textureLod(velocityTexture,neighborUv,0.0);neighborDepth=neigborVelocity.b;col=textureLod(inputTexture,neighborUv,0.0).xyz;int absX=abs(x);int absY=abs(y);\\n#ifdef dilation\\nif(absX==1&&absY==1){if(neighborDepth>closestDepth){velocity=neigborVelocity;closestDepth=neighborDepth;}vec4 lastNeighborVelocity=textureLod(velocityTexture,vUv+vec2(x,y)*invTexSize,0.0);lastNeighborDepth=lastNeighborVelocity.b;if(neighborDepth>closestDepth){lastVelocity=lastNeighborVelocity;lastClosestDepth=lastNeighborDepth;}}\\n#endif\\nif(abs(depth-neighborDepth)5 ? 121.0 : pow(float(correctionRadius*2+1),2.0);boxBlurredColor/=pxRadius;boxBlurredColor=transformColor(boxBlurredColor);\\n#endif\\nif(reprojectedUv.x>=0.0&&reprojectedUv.x<=1.0&&reprojectedUv.y>=0.0&&reprojectedUv.y<=1.0){accumulatedTexel=textureLod(accumulatedTexture,reprojectedUv,0.0);accumulatedColor=transformColor(accumulatedTexel.rgb);vec3 clampedColor=clamp(accumulatedColor,minNeighborColor,maxNeighborColor);accumulatedColor=mix(accumulatedColor,clampedColor,correction);didReproject=true;}else{\\n#ifdef boxBlur\\naccumulatedColor=boxBlurredColor;\\n#else\\naccumulatedColor=inputColor;\\n#endif\\n}if(velocity.r>FLOAT_ONE_MINUS_EPSILON&&velocity.g>FLOAT_ONE_MINUS_EPSILON){alpha=0.0;velocityDisocclusion=1.0;}}else{accumulatedColor=transformColor(textureLod(accumulatedTexture,vUv,0.0).rgb);}vec3 outputColor=inputColor;\\n#include \\ngl_FragColor=vec4(undoColorTransform(outputColor),alpha);}\";\nclass TemporalResolveMaterial extends ShaderMaterial {\n constructor(customComposeShader) {\n const fragmentShader2 = temporalResolve.replace(\"#include \", customComposeShader);\n super({\n type: \"TemporalResolveMaterial\",\n uniforms: {\n inputTexture: new Uniform(null),\n accumulatedTexture: new Uniform(null),\n velocityTexture: new Uniform(null),\n lastVelocityTexture: new Uniform(null),\n samples: new Uniform(1),\n blend: new Uniform(0.5),\n correction: new Uniform(1),\n exponent: new Uniform(1),\n invTexSize: new Uniform(new Vector2())\n },\n defines: {\n correctionRadius: 1\n },\n vertexShader,\n fragmentShader: fragmentShader2\n });\n }\n}\nconst prev_skinning_pars_vertex = (\n /* glsl */\n `\n #ifdef USE_SKINNING\n #ifdef BONE_TEXTURE\n uniform sampler2D prevBoneTexture;\n mat4 getPrevBoneMatrix( const in float i ) {\n float j = i * 4.0;\n float x = mod( j, float( boneTextureSize ) );\n float y = floor( j / float( boneTextureSize ) );\n float dx = 1.0 / float( boneTextureSize );\n float dy = 1.0 / float( boneTextureSize );\n y = dy * ( y + 0.5 );\n vec4 v1 = texture2D( prevBoneTexture, vec2( dx * ( x + 0.5 ), y ) );\n vec4 v2 = texture2D( prevBoneTexture, vec2( dx * ( x + 1.5 ), y ) );\n vec4 v3 = texture2D( prevBoneTexture, vec2( dx * ( x + 2.5 ), y ) );\n vec4 v4 = texture2D( prevBoneTexture, vec2( dx * ( x + 3.5 ), y ) );\n mat4 bone = mat4( v1, v2, v3, v4 );\n return bone;\n }\n #else\n uniform mat4 prevBoneMatrices[ MAX_BONES ];\n mat4 getPrevBoneMatrix( const in float i ) {\n mat4 bone = prevBoneMatrices[ int(i) ];\n return bone;\n }\n #endif\n #endif\n`\n);\nconst velocity_vertex = (\n /* glsl */\n `\n vec3 transformed;\n\n // Get the normal\n ${ShaderChunk.skinbase_vertex}\n ${ShaderChunk.beginnormal_vertex}\n ${ShaderChunk.skinnormal_vertex}\n ${ShaderChunk.defaultnormal_vertex}\n\n // Get the current vertex position\n transformed = vec3( position );\n ${ShaderChunk.skinning_vertex}\n newPosition = velocityMatrix * vec4( transformed, 1.0 );\n\n // Get the previous vertex position\n transformed = vec3( position );\n ${ShaderChunk.skinbase_vertex.replace(/mat4 /g, \"\").replace(/getBoneMatrix/g, \"getPrevBoneMatrix\")}\n ${ShaderChunk.skinning_vertex.replace(/vec4 /g, \"\")}\n prevPosition = prevVelocityMatrix * vec4( transformed, 1.0 );\n\n gl_Position = newPosition;\n`\n);\nclass VelocityMaterial extends ShaderMaterial {\n constructor() {\n super({\n uniforms: {\n prevVelocityMatrix: {\n value: new Matrix4()\n },\n velocityMatrix: {\n value: new Matrix4()\n },\n prevBoneTexture: {\n value: null\n },\n interpolateGeometry: {\n value: 0\n },\n intensity: {\n value: 1\n },\n boneTexture: {\n value: null\n },\n alphaTest: {\n value: 0\n },\n map: {\n value: null\n },\n alphaMap: {\n value: null\n },\n opacity: {\n value: 1\n }\n },\n vertexShader: (\n /* glsl */\n `\n #define MAX_BONES 1024\n\n ${ShaderChunk.skinning_pars_vertex}\n ${prev_skinning_pars_vertex}\n\n uniform mat4 velocityMatrix;\n uniform mat4 prevVelocityMatrix;\n uniform float interpolateGeometry;\n varying vec4 prevPosition;\n varying vec4 newPosition;\n varying vec2 vHighPrecisionZW;\n\n void main() {\n\n ${velocity_vertex}\n\n vHighPrecisionZW = gl_Position.zw;\n\n }`\n ),\n fragmentShader: (\n /* glsl */\n `\n uniform float intensity;\n varying vec4 prevPosition;\n varying vec4 newPosition;\n varying vec2 vHighPrecisionZW;\n\n void main() {\n #ifdef FULL_MOVEMENT\n gl_FragColor = vec4( 1., 1., 1. - gl_FragCoord.z, 0. );\n return;\n #endif\n\n vec2 pos0 = (prevPosition.xy / prevPosition.w) * 0.5 + 0.5;\n vec2 pos1 = (newPosition.xy / newPosition.w) * 0.5 + 0.5;\n\n vec2 vel = pos1 - pos0;\n\n float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\n gl_FragColor = vec4( vel, 1. - fragCoordZ, 0. );\n\n }`\n )\n });\n this.isVelocityMaterial = true;\n }\n}\nconst backgroundColor = new Color(0);\nconst updateProperties = [\"visible\", \"wireframe\", \"side\"];\nclass VelocityPass extends Pass {\n constructor(scene, camera) {\n var _window, _window2;\n super(\"VelocityPass\");\n this.cachedMaterials = /* @__PURE__ */ new WeakMap();\n this.lastCameraTransform = {\n position: new Vector3(),\n quaternion: new Quaternion()\n };\n this.visibleMeshes = [];\n this.renderedMeshesThisFrame = 0;\n this.renderedMeshesLastFrame = 0;\n this._scene = scene;\n this._camera = camera;\n this.renderTarget = new WebGLRenderTarget(\n ((_window = window) == null ? void 0 : _window.innerWidth) || 1e3,\n ((_window2 = window) == null ? void 0 : _window2.innerHeight) || 1e3,\n {\n type: HalfFloatType\n }\n );\n }\n setVelocityMaterialInScene() {\n this.renderedMeshesThisFrame = 0;\n this.visibleMeshes = getVisibleChildren(this._scene);\n for (const c of this.visibleMeshes) {\n var _c$skeleton2;\n const originalMaterial = c.material;\n let [cachedOriginalMaterial, velocityMaterial] = this.cachedMaterials.get(c) || [];\n if (originalMaterial !== cachedOriginalMaterial) {\n var _c$skeleton;\n velocityMaterial = new VelocityMaterial();\n velocityMaterial.lastMatrixWorld = new Matrix4();\n c.material = velocityMaterial;\n if ((_c$skeleton = c.skeleton) != null && _c$skeleton.boneTexture)\n this.saveBoneTexture(c);\n this.cachedMaterials.set(c, [originalMaterial, velocityMaterial]);\n }\n velocityMaterial.uniforms.velocityMatrix.value.multiplyMatrices(this._camera.projectionMatrix, c.modelViewMatrix);\n if (c.userData.needsUpdatedReflections || originalMaterial.map instanceof VideoTexture) {\n if (!(\"FULL_MOVEMENT\" in velocityMaterial.defines))\n velocityMaterial.needsUpdate = true;\n velocityMaterial.defines.FULL_MOVEMENT = \"\";\n } else {\n if (\"FULL_MOVEMENT\" in velocityMaterial.defines) {\n delete velocityMaterial.defines.FULL_MOVEMENT;\n velocityMaterial.needsUpdate = true;\n }\n }\n c.visible = this.cameraMovedThisFrame || !c.matrixWorld.equals(velocityMaterial.lastMatrixWorld) || c.skeleton || \"FULL_MOVEMENT\" in velocityMaterial.defines;\n c.material = velocityMaterial;\n if (!c.visible)\n continue;\n this.renderedMeshesThisFrame++;\n for (const prop of updateProperties)\n velocityMaterial[prop] = originalMaterial[prop];\n if ((_c$skeleton2 = c.skeleton) != null && _c$skeleton2.boneTexture) {\n velocityMaterial.defines.USE_SKINNING = \"\";\n velocityMaterial.defines.BONE_TEXTURE = \"\";\n velocityMaterial.uniforms.boneTexture.value = c.skeleton.boneTexture;\n }\n }\n }\n saveBoneTexture(object) {\n let boneTexture = object.material.uniforms.prevBoneTexture.value;\n if (boneTexture && boneTexture.image.width === object.skeleton.boneTexture.width) {\n boneTexture = object.material.uniforms.prevBoneTexture.value;\n boneTexture.image.data.set(object.skeleton.boneTexture.image.data);\n } else {\n var _boneTexture;\n (_boneTexture = boneTexture) == null ? void 0 : _boneTexture.dispose();\n const boneMatrices = object.skeleton.boneTexture.image.data.slice();\n const size = object.skeleton.boneTexture.image.width;\n boneTexture = new DataTexture(boneMatrices, size, size, RGBAFormat, FloatType);\n object.material.uniforms.prevBoneTexture.value = boneTexture;\n boneTexture.needsUpdate = true;\n }\n }\n unsetVelocityMaterialInScene() {\n for (const c of this.visibleMeshes) {\n if (c.material.isVelocityMaterial) {\n var _c$skeleton3;\n c.visible = true;\n c.material.lastMatrixWorld.copy(c.matrixWorld);\n c.material.uniforms.prevVelocityMatrix.value.multiplyMatrices(this._camera.projectionMatrix, c.modelViewMatrix);\n if ((_c$skeleton3 = c.skeleton) != null && _c$skeleton3.boneTexture)\n this.saveBoneTexture(c);\n c.material = this.cachedMaterials.get(c)[0];\n }\n }\n }\n setSize(width, height) {\n this.renderTarget.setSize(width, height);\n }\n renderVelocity(renderer) {\n renderer.setRenderTarget(this.renderTarget);\n if (this.renderedMeshesThisFrame > 0) {\n const { background } = this._scene;\n this._scene.background = backgroundColor;\n renderer.render(this._scene, this._camera);\n this._scene.background = background;\n } else {\n renderer.clearColor();\n }\n }\n checkCameraMoved() {\n const moveDist = this.lastCameraTransform.position.distanceToSquared(this._camera.position);\n const rotateDist = 8 * (1 - this.lastCameraTransform.quaternion.dot(this._camera.quaternion));\n if (moveDist > 1e-6 || rotateDist > 1e-6) {\n this.lastCameraTransform.position.copy(this._camera.position);\n this.lastCameraTransform.quaternion.copy(this._camera.quaternion);\n return true;\n }\n return false;\n }\n render(renderer) {\n this.cameraMovedThisFrame = this.checkCameraMoved();\n this.setVelocityMaterialInScene();\n if (this.renderedMeshesThisFrame > 0 || this.renderedMeshesLastFrame > 0)\n this.renderVelocity(renderer);\n this.unsetVelocityMaterialInScene();\n this.renderedMeshesLastFrame = this.renderedMeshesThisFrame;\n }\n}\nconst zeroVec2 = new Vector2();\nclass TemporalResolvePass extends Pass {\n constructor(scene, camera, customComposeShader, options = {}) {\n super(\"TemporalResolvePass\");\n this.velocityPass = null;\n this.velocityResolutionScale = 1;\n this.samples = 1;\n this.lastCameraTransform = {\n position: new Vector3(),\n quaternion: new Quaternion()\n };\n this._scene = scene;\n this._camera = camera;\n this.renderTarget = new WebGLRenderTarget(1, 1, {\n minFilter: LinearFilter,\n magFilter: LinearFilter,\n type: HalfFloatType,\n depthBuffer: false\n });\n this.velocityPass = new VelocityPass(scene, camera);\n this.fullscreenMaterial = new TemporalResolveMaterial(customComposeShader);\n this.fullscreenMaterial.defines.correctionRadius = options.correctionRadius || 1;\n if (options.dilation)\n this.fullscreenMaterial.defines.dilation = \"\";\n if (options.boxBlur)\n this.fullscreenMaterial.defines.boxBlur = \"\";\n this.setupFramebuffers(1, 1);\n this.checkCanUseSharedVelocityTexture();\n }\n dispose() {\n if (this._scene.userData.velocityTexture === this.velocityPass.renderTarget.texture) {\n delete this._scene.userData.velocityTexture;\n delete this._scene.userData.lastVelocityTexture;\n }\n this.renderTarget.dispose();\n this.accumulatedTexture.dispose();\n this.fullscreenMaterial.dispose();\n this.velocityPass.dispose();\n }\n setSize(width, height) {\n this.renderTarget.setSize(width, height);\n this.velocityPass.setSize(width * this.velocityResolutionScale, height * this.velocityResolutionScale);\n this.velocityPass.renderTarget.texture.minFilter = this.velocityResolutionScale === 1 ? NearestFilter : LinearFilter;\n this.velocityPass.renderTarget.texture.magFilter = this.velocityResolutionScale === 1 ? NearestFilter : LinearFilter;\n this.velocityPass.renderTarget.texture.needsUpdate = true;\n this.fullscreenMaterial.uniforms.invTexSize.value.set(1 / width, 1 / height);\n this.setupFramebuffers(width, height);\n }\n setupFramebuffers(width, height) {\n if (this.accumulatedTexture)\n this.accumulatedTexture.dispose();\n if (this.lastVelocityTexture)\n this.lastVelocityTexture.dispose();\n this.accumulatedTexture = new FramebufferTexture(width, height, RGBAFormat);\n this.accumulatedTexture.minFilter = LinearFilter;\n this.accumulatedTexture.magFilter = LinearFilter;\n this.accumulatedTexture.type = HalfFloatType;\n this.lastVelocityTexture = new FramebufferTexture(\n width * this.velocityResolutionScale,\n height * this.velocityResolutionScale,\n RGBAFormat\n );\n this.lastVelocityTexture.minFilter = this.velocityResolutionScale === 1 ? NearestFilter : LinearFilter;\n this.lastVelocityTexture.magFilter = this.velocityResolutionScale === 1 ? NearestFilter : LinearFilter;\n this.lastVelocityTexture.type = HalfFloatType;\n this.fullscreenMaterial.uniforms.accumulatedTexture.value = this.accumulatedTexture;\n this.fullscreenMaterial.uniforms.lastVelocityTexture.value = this.lastVelocityTexture;\n this.fullscreenMaterial.needsUpdate = true;\n }\n checkCanUseSharedVelocityTexture() {\n const canUseSharedVelocityTexture = this._scene.userData.velocityTexture && this.velocityPass.renderTarget.texture !== this._scene.userData.velocityTexture;\n if (canUseSharedVelocityTexture) {\n if (this.velocityPass.renderTarget.texture === this.fullscreenMaterial.uniforms.velocityTexture.value) {\n this.fullscreenMaterial.uniforms.lastVelocityTexture.value = this._scene.userData.lastVelocityTexture;\n this.fullscreenMaterial.uniforms.velocityTexture.value = this._scene.userData.velocityTexture;\n this.fullscreenMaterial.needsUpdate = true;\n }\n } else {\n if (this.velocityPass.renderTarget.texture !== this.fullscreenMaterial.uniforms.velocityTexture.value) {\n this.fullscreenMaterial.uniforms.velocityTexture.value = this.velocityPass.renderTarget.texture;\n this.fullscreenMaterial.uniforms.lastVelocityTexture.value = this.lastVelocityTexture;\n this.fullscreenMaterial.needsUpdate = true;\n if (!this._scene.userData.velocityTexture) {\n this._scene.userData.velocityTexture = this.velocityPass.renderTarget.texture;\n this._scene.userData.lastVelocityTexture = this.lastVelocityTexture;\n }\n }\n }\n return this.velocityPass.renderTarget.texture !== this.fullscreenMaterial.uniforms.velocityTexture.value;\n }\n checkNeedsResample() {\n const moveDist = this.lastCameraTransform.position.distanceToSquared(this._camera.position);\n const rotateDist = 8 * (1 - this.lastCameraTransform.quaternion.dot(this._camera.quaternion));\n if (moveDist > 1e-6 || rotateDist > 1e-6) {\n this.samples = 1;\n this.lastCameraTransform.position.copy(this._camera.position);\n this.lastCameraTransform.quaternion.copy(this._camera.quaternion);\n }\n }\n render(renderer) {\n this.samples++;\n this.checkNeedsResample();\n this.fullscreenMaterial.uniforms.samples.value = this.samples;\n renderer.setRenderTarget(this.renderTarget);\n renderer.render(this.scene, this.camera);\n renderer.copyFramebufferToTexture(zeroVec2, this.accumulatedTexture);\n renderer.setRenderTarget(this.velocityPass.renderTarget);\n renderer.copyFramebufferToTexture(zeroVec2, this.lastVelocityTexture);\n }\n}\nconst halton = function halton2(index, base) {\n let fraction = 1;\n let result = 0;\n while (index > 0) {\n fraction /= base;\n result += fraction * (index % base);\n index = ~~(index / base);\n }\n return result;\n};\nconst generateHalton23Points = (count) => {\n const data = [];\n let i2 = 1;\n const end = i2 + count;\n for (; i2 < end; i2++) {\n data.push([halton(i2, 2) - 0.5, halton(i2, 3) - 0.5]);\n }\n return data;\n};\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\nconst worldposReplace = (\n /* glsl */\n `\n#if defined( USE_ENVMAP ) || defined( ) || defined ( USE_SHADOWMAP )\n vec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\n\n #ifdef BOX_PROJECTED_ENV_MAP\n vWorldPosition = worldPosition.xyz;\n #endif\n#endif\n`\n);\nconst boxProjectDefinitions = (\n /* glsl */\n `\n#ifdef BOX_PROJECTED_ENV_MAP\n uniform vec3 envMapSize;\n uniform vec3 envMapPosition;\n varying vec3 vWorldPosition;\n\n vec3 parallaxCorrectNormal( vec3 v, vec3 cubeSize, vec3 cubePos ) {\n vec3 nDir = normalize( v );\n\n vec3 rbmax = ( .5 * cubeSize + cubePos - vWorldPosition ) / nDir;\n vec3 rbmin = ( -.5 * cubeSize + cubePos - vWorldPosition ) / nDir;\n\n vec3 rbminmax;\n\n rbminmax.x = ( nDir.x > 0. ) ? rbmax.x : rbmin.x;\n rbminmax.y = ( nDir.y > 0. ) ? rbmax.y : rbmin.y;\n rbminmax.z = ( nDir.z > 0. ) ? rbmax.z : rbmin.z;\n\n float correction = min( min( rbminmax.x, rbminmax.y ), rbminmax.z );\n vec3 boxIntersection = vWorldPosition + nDir * correction;\n\n return boxIntersection - cubePos;\n }\n#endif\n`\n);\nconst getIBLIrradiance_patch = (\n /* glsl */\n `\n#ifdef BOX_PROJECTED_ENV_MAP\n worldNormal = parallaxCorrectNormal( worldNormal, envMapSize, envMapPosition );\n#endif\n`\n);\nconst getIBLRadiance_patch = (\n /* glsl */\n `\n#ifdef BOX_PROJECTED_ENV_MAP\n reflectVec = parallaxCorrectNormal( reflectVec, envMapSize, envMapPosition );\n#endif\n`\n);\nfunction useBoxProjectedEnvMap(shader, envMapPosition, envMapSize) {\n shader.defines.BOX_PROJECTED_ENV_MAP = \"\";\n shader.uniforms.envMapPosition = {\n value: envMapPosition\n };\n shader.uniforms.envMapSize = {\n value: envMapSize\n };\n const line1 = new RegExp(\n escapeRegExp(\"vec3 worldNormal = inverseTransformDirection ( normal , viewMatrix ) ;\").replaceAll(\" \", \"\\\\s*\"),\n \"g\"\n );\n const line2 = new RegExp(\n escapeRegExp(\"reflectVec = inverseTransformDirection ( reflectVec , viewMatrix ) ;\").replaceAll(\" \", \"\\\\s*\"),\n \"g\"\n );\n shader.vertexShader = \"varying vec3 vWorldPosition;\\n\" + shader.vertexShader.replace(\"#include \", worldposReplace);\n shader.fragmentShader = boxProjectDefinitions + \"\\n\" + shader.fragmentShader.replace(\"#include \", ShaderChunk.envmap_physical_pars_fragment).replace(\n line1,\n `vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n ${getIBLIrradiance_patch}`\n ).replace(\n line2,\n `reflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n ${getIBLRadiance_patch}`\n );\n}\nconst finalFragmentShader = finalSSRShader.replace(\"#include \", helperFunctions).replace(\"#include \", boxBlur);\nconst noResetSamplesProperties = [\"blur\", \"blurSharpness\", \"blurKernel\"];\nconst defaultCubeRenderTarget = new WebGLCubeRenderTarget(1);\nlet pmremGenerator;\nclass SSREffect extends Effect {\n /**\n * @param {THREE.Scene} scene The scene of the SSR effect\n * @param {THREE.Camera} camera The camera with which SSR is being rendered\n * @param {SSROptions} [options] The optional options for the SSR effect\n */\n constructor(scene, camera, options = defaultSSROptions) {\n super(\"SSREffect\", finalFragmentShader, {\n type: \"FinalSSRMaterial\",\n uniforms: /* @__PURE__ */ new Map([\n [\"reflectionsTexture\", new Uniform(null)],\n [\"blur\", new Uniform(0)],\n [\"blurSharpness\", new Uniform(0)],\n [\"blurKernel\", new Uniform(0)]\n ]),\n defines: /* @__PURE__ */ new Map([[\"RENDER_MODE\", \"0\"]])\n });\n this.haltonSequence = generateHalton23Points(1024);\n this.haltonIndex = 0;\n this.selection = new Selection$1();\n this.lastSize = void 0;\n this.cubeCamera = new CubeCamera(1e-3, 1e3, defaultCubeRenderTarget);\n this.usingBoxProjectedEnvMap = false;\n this._scene = scene;\n this._camera = camera;\n const trOptions = {\n boxBlur: true,\n dilation: true\n };\n options = { ...defaultSSROptions, ...options, ...trOptions };\n this.temporalResolvePass = new TemporalResolvePass(scene, camera, trCompose, options);\n this.uniforms.get(\"reflectionsTexture\").value = this.temporalResolvePass.renderTarget.texture;\n this.reflectionsPass = new ReflectionsPass(this, options);\n this.temporalResolvePass.fullscreenMaterial.uniforms.inputTexture.value = this.reflectionsPass.renderTarget.texture;\n this.lastSize = {\n width: options.width,\n height: options.height,\n resolutionScale: options.resolutionScale,\n velocityResolutionScale: options.velocityResolutionScale\n };\n this.setSize(options.width, options.height);\n this.makeOptionsReactive(options);\n }\n makeOptionsReactive(options) {\n let needsUpdate = false;\n const reflectionPassFullscreenMaterialUniforms = this.reflectionsPass.fullscreenMaterial.uniforms;\n const reflectionPassFullscreenMaterialUniformsKeys = Object.keys(reflectionPassFullscreenMaterialUniforms);\n for (const key of Object.keys(options)) {\n Object.defineProperty(this, key, {\n get() {\n return options[key];\n },\n set(value) {\n if (options[key] === value && needsUpdate)\n return;\n options[key] = value;\n if (!noResetSamplesProperties.includes(key)) {\n this.setSize(this.lastSize.width, this.lastSize.height, true);\n }\n switch (key) {\n case \"resolutionScale\":\n this.setSize(this.lastSize.width, this.lastSize.height);\n break;\n case \"velocityResolutionScale\":\n this.temporalResolvePass.velocityResolutionScale = value;\n this.setSize(this.lastSize.width, this.lastSize.height, true);\n break;\n case \"blur\":\n this.uniforms.get(\"blur\").value = value;\n break;\n case \"blurSharpness\":\n this.uniforms.get(\"blurSharpness\").value = value;\n break;\n case \"blurKernel\":\n this.uniforms.get(\"blurKernel\").value = value;\n break;\n case \"steps\":\n this.reflectionsPass.fullscreenMaterial.defines.steps = parseInt(value);\n this.reflectionsPass.fullscreenMaterial.needsUpdate = needsUpdate;\n break;\n case \"refineSteps\":\n this.reflectionsPass.fullscreenMaterial.defines.refineSteps = parseInt(value);\n this.reflectionsPass.fullscreenMaterial.needsUpdate = needsUpdate;\n break;\n case \"missedRays\":\n if (value) {\n this.reflectionsPass.fullscreenMaterial.defines.missedRays = \"\";\n } else {\n delete this.reflectionsPass.fullscreenMaterial.defines.missedRays;\n }\n this.reflectionsPass.fullscreenMaterial.needsUpdate = needsUpdate;\n break;\n case \"correctionRadius\":\n this.temporalResolvePass.fullscreenMaterial.defines.correctionRadius = Math.round(value);\n this.temporalResolvePass.fullscreenMaterial.needsUpdate = needsUpdate;\n break;\n case \"blend\":\n this.temporalResolvePass.fullscreenMaterial.uniforms.blend.value = value;\n break;\n case \"correction\":\n this.temporalResolvePass.fullscreenMaterial.uniforms.correction.value = value;\n break;\n case \"exponent\":\n this.temporalResolvePass.fullscreenMaterial.uniforms.exponent.value = value;\n break;\n case \"distance\":\n reflectionPassFullscreenMaterialUniforms.rayDistance.value = value;\n default:\n if (reflectionPassFullscreenMaterialUniformsKeys.includes(key)) {\n reflectionPassFullscreenMaterialUniforms[key].value = value;\n }\n }\n }\n });\n this[key] = options[key];\n }\n needsUpdate = true;\n }\n setSize(width, height, force = false) {\n if (!force && width === this.lastSize.width && height === this.lastSize.height && this.resolutionScale === this.lastSize.resolutionScale && this.velocityResolutionScale === this.lastSize.velocityResolutionScale)\n return;\n this.temporalResolvePass.setSize(width, height);\n this.reflectionsPass.setSize(width, height);\n this.lastSize = {\n width,\n height,\n resolutionScale: this.resolutionScale,\n velocityResolutionScale: this.velocityResolutionScale\n };\n }\n generateBoxProjectedEnvMapFallback(renderer, position = new Vector3(), size = new Vector3(), envMapSize = 512) {\n this.cubeCamera.renderTarget.dispose();\n this.cubeCamera.renderTarget = new WebGLCubeRenderTarget(envMapSize);\n this.cubeCamera.position.copy(position);\n this.cubeCamera.updateMatrixWorld();\n this.cubeCamera.update(renderer, this._scene);\n if (!pmremGenerator) {\n pmremGenerator = new PMREMGenerator(renderer);\n pmremGenerator.compileCubemapShader();\n }\n const envMap = pmremGenerator.fromCubemap(this.cubeCamera.renderTarget.texture).texture;\n envMap.minFilter = LinearFilter;\n envMap.magFilter = LinearFilter;\n const reflectionsMaterial = this.reflectionsPass.fullscreenMaterial;\n useBoxProjectedEnvMap(reflectionsMaterial, position, size);\n reflectionsMaterial.fragmentShader = reflectionsMaterial.fragmentShader.replace(\"vec3 worldPos\", \"worldPos\").replace(\"varying vec3 vWorldPosition;\", \"vec3 worldPos;\");\n reflectionsMaterial.uniforms.envMapPosition.value.copy(position);\n reflectionsMaterial.uniforms.envMapSize.value.copy(size);\n setupEnvMap(reflectionsMaterial, envMap, envMapSize);\n this.usingBoxProjectedEnvMap = true;\n return envMap;\n }\n setIBLRadiance(iblRadiance, renderer) {\n this._scene.traverse((c) => {\n if (c.material) {\n var _renderer$properties$;\n const uniforms = (_renderer$properties$ = renderer.properties.get(c.material)) == null ? void 0 : _renderer$properties$.uniforms;\n if (uniforms && \"disableIBLRadiance\" in uniforms) {\n uniforms.disableIBLRadiance.value = iblRadiance;\n }\n }\n });\n }\n deleteBoxProjectedEnvMapFallback() {\n const reflectionsMaterial = this.reflectionsPass.fullscreenMaterial;\n reflectionsMaterial.uniforms.envMap.value = null;\n reflectionsMaterial.fragmentShader = reflectionsMaterial.fragmentShader.replace(\"worldPos = \", \"vec3 worldPos = \");\n delete reflectionsMaterial.defines.BOX_PROJECTED_ENV_MAP;\n reflectionsMaterial.needsUpdate = true;\n this.usingBoxProjectedEnvMap = false;\n }\n dispose() {\n super.dispose();\n this.reflectionsPass.dispose();\n this.temporalResolvePass.dispose();\n }\n update(renderer, inputBuffer) {\n if (!this.usingBoxProjectedEnvMap && this._scene.environment) {\n const reflectionsMaterial = this.reflectionsPass.fullscreenMaterial;\n let envMap = null;\n this._scene.traverse((c) => {\n if (!envMap && c.material && !c.material.envMap) {\n const properties = renderer.properties.get(c.material);\n if (\"envMap\" in properties && properties.envMap instanceof Texture$1)\n envMap = properties.envMap;\n }\n });\n if (envMap) {\n const envMapCubeUVHeight = this._scene.environment.image.height;\n setupEnvMap(reflectionsMaterial, envMap, envMapCubeUVHeight);\n }\n }\n this.haltonIndex = (this.haltonIndex + 1) % this.haltonSequence.length;\n const [x, y] = this.haltonSequence[this.haltonIndex];\n const { width, height } = this.lastSize;\n this.temporalResolvePass.velocityPass.render(renderer);\n if (this._camera.setViewOffset)\n this._camera.setViewOffset(width, height, x, y, width, height);\n this.reflectionsPass.render(renderer, inputBuffer);\n this.temporalResolvePass.render(renderer);\n this._camera.clearViewOffset();\n }\n static patchDirectEnvIntensity(envMapIntensity = 0) {\n if (envMapIntensity === 0) {\n ShaderChunk.envmap_physical_pars_fragment = ShaderChunk.envmap_physical_pars_fragment.replace(\n \"vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\",\n \"vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { return vec3(0.0);\"\n );\n } else {\n ShaderChunk.envmap_physical_pars_fragment = ShaderChunk.envmap_physical_pars_fragment.replace(\n \"vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\",\n \"vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness ) * \" + envMapIntensity.toFixed(5) + \";\"\n );\n }\n }\n}\nconst SSR = forwardRef(function SSR2({ ENABLE_BLUR = true, USE_MRT = true, ...props }, ref) {\n const { invalidate } = useThree();\n const { scene, camera } = useContext(EffectComposerContext);\n const effect = useMemo(\n () => new SSREffect(scene, camera, { ENABLE_BLUR, USE_MRT, ...props }),\n [scene, camera, ENABLE_BLUR, USE_MRT, props]\n );\n const api = useContext(selectionContext);\n useEffect(() => {\n var _a;\n if (api && api.enabled) {\n if ((_a = api.selected) == null ? void 0 : _a.length) {\n effect.selection.set(api.selected);\n invalidate();\n return () => {\n effect.selection.clear();\n invalidate();\n };\n }\n }\n }, [api]);\n return /* @__PURE__ */ jsx(\"primitive\", { ref, object: effect, ...props });\n});\nconst $e4ca8dcb0218f846$var$_geometry = new BufferGeometry();\n$e4ca8dcb0218f846$var$_geometry.setAttribute(\"position\", new BufferAttribute(new Float32Array([\n -1,\n -1,\n 3,\n -1,\n -1,\n 3\n]), 2));\n$e4ca8dcb0218f846$var$_geometry.setAttribute(\"uv\", new BufferAttribute(new Float32Array([\n 0,\n 0,\n 2,\n 0,\n 0,\n 2\n]), 2));\n$e4ca8dcb0218f846$var$_geometry.boundingSphere = new Sphere();\n$e4ca8dcb0218f846$var$_geometry.computeBoundingSphere = function() {\n};\nconst $e4ca8dcb0218f846$var$_camera = new OrthographicCamera();\nclass $e4ca8dcb0218f846$export$dcd670d73db751f5 {\n constructor(material) {\n this._mesh = new Mesh($e4ca8dcb0218f846$var$_geometry, material);\n this._mesh.frustumCulled = false;\n }\n render(renderer) {\n renderer.render(this._mesh, $e4ca8dcb0218f846$var$_camera);\n }\n get material() {\n return this._mesh.material;\n }\n set material(value) {\n this._mesh.material = value;\n }\n dispose() {\n this._mesh.material.dispose();\n this._mesh.geometry.dispose();\n }\n}\nconst $1ed45968c1160c3c$export$c9b263b9a17dffd7 = {\n uniforms: {\n \"sceneDiffuse\": {\n value: null\n },\n \"sceneDepth\": {\n value: null\n },\n \"sceneNormal\": {\n value: null\n },\n \"projMat\": {\n value: new Matrix4()\n },\n \"viewMat\": {\n value: new Matrix4()\n },\n \"projViewMat\": {\n value: new Matrix4()\n },\n \"projectionMatrixInv\": {\n value: new Matrix4()\n },\n \"viewMatrixInv\": {\n value: new Matrix4()\n },\n \"cameraPos\": {\n value: new Vector3()\n },\n \"resolution\": {\n value: new Vector2()\n },\n \"time\": {\n value: 0\n },\n \"samples\": {\n value: []\n },\n \"samplesR\": {\n value: []\n },\n \"bluenoise\": {\n value: null\n },\n \"distanceFalloff\": {\n value: 1\n },\n \"radius\": {\n value: 5\n },\n \"near\": {\n value: 0.1\n },\n \"far\": {\n value: 1e3\n },\n \"logDepth\": {\n value: false\n },\n \"ortho\": {\n value: false\n },\n \"screenSpaceRadius\": {\n value: false\n }\n },\n vertexShader: (\n /* glsl */\n `\nvarying vec2 vUv;\nvoid main() {\n vUv = uv;\n gl_Position = vec4(position, 1);\n}`\n ),\n fragmentShader: (\n /* glsl */\n `\n #define SAMPLES 16\n #define FSAMPLES 16.0\nuniform sampler2D sceneDiffuse;\nuniform highp sampler2D sceneNormal;\nuniform highp sampler2D sceneDepth;\nuniform mat4 projectionMatrixInv;\nuniform mat4 viewMatrixInv;\nuniform mat4 projMat;\nuniform mat4 viewMat;\nuniform mat4 projViewMat;\nuniform vec3 cameraPos;\nuniform vec2 resolution;\nuniform float time;\nuniform vec3[SAMPLES] samples;\nuniform float[SAMPLES] samplesR;\nuniform float radius;\nuniform float distanceFalloff;\nuniform float near;\nuniform float far;\nuniform bool logDepth;\nuniform bool ortho;\nuniform bool screenSpaceRadius;\nuniform sampler2D bluenoise;\n varying vec2 vUv;\n highp float linearize_depth(highp float d, highp float zNear,highp float zFar)\n {\n return (zFar * zNear) / (zFar - d * (zFar - zNear));\n }\n highp float linearize_depth_ortho(highp float d, highp float nearZ, highp float farZ) {\n return nearZ + (farZ - nearZ) * d;\n }\n highp float linearize_depth_log(highp float d, highp float nearZ,highp float farZ) {\n float depth = pow(2.0, d * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n return ortho ? linearize_depth_ortho(\n linDepth,\n nearZ,\n farZ\n ) :linearize_depth(linDepth, nearZ, farZ);\n }\n\n vec3 getWorldPosLog(vec3 posS) {\n vec2 uv = posS.xy;\n float z = posS.z;\n float nearZ =near;\n float farZ = far;\n float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0;\n vec4 wpos = projectionMatrixInv * clipVec;\n return wpos.xyz / wpos.w;\n }\n vec3 getWorldPos(float depth, vec2 coord) {\n #ifdef LOGDEPTH\n return getWorldPosLog(vec3(coord, depth));\n #endif\n float z = depth * 2.0 - 1.0;\n vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);\n vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition;\n // Perspective division\n vec4 worldSpacePosition = viewSpacePosition;\n worldSpacePosition.xyz /= worldSpacePosition.w;\n return worldSpacePosition.xyz;\n }\n\n vec3 computeNormal(vec3 worldPos, vec2 vUv) {\n ivec2 p = ivec2(vUv * resolution);\n float c0 = texelFetch(sceneDepth, p, 0).x;\n float l2 = texelFetch(sceneDepth, p - ivec2(2, 0), 0).x;\n float l1 = texelFetch(sceneDepth, p - ivec2(1, 0), 0).x;\n float r1 = texelFetch(sceneDepth, p + ivec2(1, 0), 0).x;\n float r2 = texelFetch(sceneDepth, p + ivec2(2, 0), 0).x;\n float b2 = texelFetch(sceneDepth, p - ivec2(0, 2), 0).x;\n float b1 = texelFetch(sceneDepth, p - ivec2(0, 1), 0).x;\n float t1 = texelFetch(sceneDepth, p + ivec2(0, 1), 0).x;\n float t2 = texelFetch(sceneDepth, p + ivec2(0, 2), 0).x;\n\n float dl = abs((2.0 * l1 - l2) - c0);\n float dr = abs((2.0 * r1 - r2) - c0);\n float db = abs((2.0 * b1 - b2) - c0);\n float dt = abs((2.0 * t1 - t2) - c0);\n\n vec3 ce = getWorldPos(c0, vUv).xyz;\n\n vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / resolution.x, 0.0))).xyz\n : -ce + getWorldPos(r1, (vUv + vec2(1.0 / resolution.x, 0.0))).xyz;\n vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / resolution.y))).xyz\n : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / resolution.y))).xyz;\n\n return normalize(cross(dpdx, dpdy));\n}\n\nvoid main() {\n vec4 diffuse = texture2D(sceneDiffuse, vUv);\n float depth = texture2D(sceneDepth, vUv).x;\n if (depth == 1.0) {\n gl_FragColor = vec4(vec3(1.0), 1.0);\n return;\n }\n vec3 worldPos = getWorldPos(depth, vUv);\n // vec3 normal = texture2D(sceneNormal, vUv).rgb;//computeNormal(worldPos, vUv);\n #ifdef HALFRES\n vec3 normal = texture2D(sceneNormal, vUv).rgb;\n #else\n vec3 normal = computeNormal(worldPos, vUv);\n #endif\n vec4 noise = texture2D(bluenoise, gl_FragCoord.xy / 128.0);\n vec3 randomVec = normalize(noise.rgb * 2.0 - 1.0);\n vec3 tangent = normalize(randomVec - normal * dot(randomVec, normal));\n vec3 bitangent = cross(normal, tangent);\n mat3 tbn = mat3(tangent, bitangent, normal);\n float occluded = 0.0;\n float totalWeight = 0.0;\n /* float radiusScreen = distance(\n worldPos,\n getWorldPos(depth, vUv + \n vec2(48.0, 0.0) / resolution)\n );/*vUv.x < 0.5 ? radius : min(distance(\n worldPos,\n getWorldPos(depth, vUv + \n vec2(100.0, 0.0) / resolution)\n ), radius);\n float distanceFalloffScreen = radiusScreen * 0.2;*/\n float radiusToUse = screenSpaceRadius ? distance(\n worldPos,\n getWorldPos(depth, vUv +\n vec2(radius, 0.0) / resolution)\n ) : radius;\n float distanceFalloffToUse =screenSpaceRadius ?\n radiusToUse * distanceFalloff\n : distanceFalloff;\n float bias = (0.1 / near) * fwidth(distance(worldPos, cameraPos)) / radiusToUse;\n for(float i = 0.0; i < FSAMPLES; i++) {\n vec3 sampleDirection = \n tbn * \n samples[int(i)];\n ;\n float moveAmt = samplesR[int(mod(i + noise.a * FSAMPLES, FSAMPLES))];\n vec3 samplePos = worldPos + radiusToUse * moveAmt * sampleDirection;\n vec4 offset = projMat * vec4(samplePos, 1.0);\n offset.xyz /= offset.w;\n offset.xyz = offset.xyz * 0.5 + 0.5;\n float sampleDepth = textureLod(sceneDepth, offset.xy, 0.0).x;\n /*float distSample = logDepth ? linearize_depth_log(sampleDepth, near, far) \n (ortho ? linearize_depth_ortho(sampleDepth, near, far) : linearize_depth(sampleDepth, near, far));*/\n #ifdef LOGDEPTH\n float distSample = linearize_depth_log(sampleDepth, near, far);\n #else\n float distSample = ortho ? linearize_depth_ortho(sampleDepth, near, far) : linearize_depth(sampleDepth, near, far);\n #endif\n float distWorld = ortho ? linearize_depth_ortho(offset.z, near, far) : linearize_depth(offset.z, near, far);\n float rangeCheck = smoothstep(0.0, 1.0, distanceFalloffToUse / (abs(distSample - distWorld)));\n vec2 diff = gl_FragCoord.xy - ( offset.xy * resolution);\n float weight = dot(sampleDirection, normal);\n occluded += rangeCheck * weight * \n (distSample + bias\n < distWorld ? 1.0 : 0.0) * (\n (dot(\n diff,\n diff\n \n ) < 1.0 || (sampleDepth == depth) || (\n offset.x < 0.0 || offset.x > 1.0 || offset.y < 0.0 || offset.y > 1.0\n ) ? 0.0 : 1.0)\n );\n totalWeight += weight;\n }\n float occ = clamp(1.0 - occluded / totalWeight, 0.0, 1.0);\n gl_FragColor = vec4(0.5 + 0.5 * normal, occ);\n}`\n )\n};\nconst $12b21d24d1192a04$export$a815acccbd2c9a49 = {\n uniforms: {\n \"sceneDiffuse\": {\n value: null\n },\n \"sceneDepth\": {\n value: null\n },\n \"tDiffuse\": {\n value: null\n },\n \"projMat\": {\n value: new Matrix4()\n },\n \"viewMat\": {\n value: new Matrix4()\n },\n \"projectionMatrixInv\": {\n value: new Matrix4()\n },\n \"viewMatrixInv\": {\n value: new Matrix4()\n },\n \"cameraPos\": {\n value: new Vector3()\n },\n \"resolution\": {\n value: new Vector2()\n },\n \"color\": {\n value: new Vector3(0, 0, 0)\n },\n \"blueNoise\": {\n value: null\n },\n \"downsampledDepth\": {\n value: null\n },\n \"time\": {\n value: 0\n },\n \"intensity\": {\n value: 10\n },\n \"renderMode\": {\n value: 0\n },\n \"gammaCorrection\": {\n value: false\n },\n \"logDepth\": {\n value: false\n },\n \"ortho\": {\n value: false\n },\n \"near\": {\n value: 0.1\n },\n \"far\": {\n value: 1e3\n },\n \"screenSpaceRadius\": {\n value: false\n },\n \"radius\": {\n value: 0\n },\n \"distanceFalloff\": {\n value: 1\n },\n \"fog\": {\n value: false\n },\n \"fogExp\": {\n value: false\n },\n \"fogDensity\": {\n value: 0\n },\n \"fogNear\": {\n value: Infinity\n },\n \"fogFar\": {\n value: Infinity\n },\n \"colorMultiply\": {\n value: true\n }\n },\n vertexShader: (\n /* glsl */\n `\n\t\tvarying vec2 vUv;\n\t\tvoid main() {\n\t\t\tvUv = uv;\n\t\t\tgl_Position = vec4(position, 1);\n\t\t}`\n ),\n fragmentShader: (\n /* glsl */\n `\n\t\tuniform sampler2D sceneDiffuse;\n uniform highp sampler2D sceneDepth;\n uniform highp sampler2D downsampledDepth;\n uniform sampler2D tDiffuse;\n uniform sampler2D blueNoise;\n uniform vec2 resolution;\n uniform vec3 color;\n uniform mat4 projectionMatrixInv;\n uniform mat4 viewMatrixInv;\n uniform float intensity;\n uniform float renderMode;\n uniform float near;\n uniform float far;\n uniform bool gammaCorrection;\n uniform bool logDepth;\n uniform bool ortho;\n uniform bool screenSpaceRadius;\n uniform bool fog;\n uniform bool fogExp;\n uniform bool colorMultiply;\n uniform float fogDensity;\n uniform float fogNear;\n uniform float fogFar;\n uniform float radius;\n uniform float distanceFalloff;\n uniform vec3 cameraPos;\n varying vec2 vUv;\n highp float linearize_depth(highp float d, highp float zNear,highp float zFar)\n {\n return (zFar * zNear) / (zFar - d * (zFar - zNear));\n }\n highp float linearize_depth_ortho(highp float d, highp float nearZ, highp float farZ) {\n return nearZ + (farZ - nearZ) * d;\n }\n highp float linearize_depth_log(highp float d, highp float nearZ,highp float farZ) {\n float depth = pow(2.0, d * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n return ortho ? linearize_depth_ortho(\n linDepth,\n nearZ,\n farZ\n ) :linearize_depth(linDepth, nearZ, farZ);\n }\n vec3 getWorldPosLog(vec3 posS) {\n vec2 uv = posS.xy;\n float z = posS.z;\n float nearZ =near;\n float farZ = far;\n float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0;\n vec4 wpos = projectionMatrixInv * clipVec;\n return wpos.xyz / wpos.w;\n }\n vec3 getWorldPos(float depth, vec2 coord) {\n // if (logDepth) {\n #ifdef LOGDEPTH\n return getWorldPosLog(vec3(coord, depth));\n #endif\n // }\n float z = depth * 2.0 - 1.0;\n vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);\n vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition;\n // Perspective division\n vec4 worldSpacePosition = viewSpacePosition;\n worldSpacePosition.xyz /= worldSpacePosition.w;\n return worldSpacePosition.xyz;\n }\n \n vec3 computeNormal(vec3 worldPos, vec2 vUv) {\n ivec2 p = ivec2(vUv * resolution);\n float c0 = texelFetch(sceneDepth, p, 0).x;\n float l2 = texelFetch(sceneDepth, p - ivec2(2, 0), 0).x;\n float l1 = texelFetch(sceneDepth, p - ivec2(1, 0), 0).x;\n float r1 = texelFetch(sceneDepth, p + ivec2(1, 0), 0).x;\n float r2 = texelFetch(sceneDepth, p + ivec2(2, 0), 0).x;\n float b2 = texelFetch(sceneDepth, p - ivec2(0, 2), 0).x;\n float b1 = texelFetch(sceneDepth, p - ivec2(0, 1), 0).x;\n float t1 = texelFetch(sceneDepth, p + ivec2(0, 1), 0).x;\n float t2 = texelFetch(sceneDepth, p + ivec2(0, 2), 0).x;\n \n float dl = abs((2.0 * l1 - l2) - c0);\n float dr = abs((2.0 * r1 - r2) - c0);\n float db = abs((2.0 * b1 - b2) - c0);\n float dt = abs((2.0 * t1 - t2) - c0);\n \n vec3 ce = getWorldPos(c0, vUv).xyz;\n \n vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / resolution.x, 0.0))).xyz\n : -ce + getWorldPos(r1, (vUv + vec2(1.0 / resolution.x, 0.0))).xyz;\n vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / resolution.y))).xyz\n : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / resolution.y))).xyz;\n \n return normalize(cross(dpdx, dpdy));\n }\n\n #include \n #include \n void main() {\n //vec4 texel = texture2D(tDiffuse, vUv);//vec3(0.0);\n vec4 sceneTexel = texture2D(sceneDiffuse, vUv);\n float depth = texture2D(\n sceneDepth,\n vUv\n ).x;\n #ifdef HALFRES \n vec4 texel;\n if (depth == 1.0) {\n texel = vec4(0.0, 0.0, 0.0, 1.0);\n } else {\n vec3 worldPos = getWorldPos(depth, vUv);\n vec3 normal = computeNormal(getWorldPos(depth, vUv), vUv);\n // vec4 texel = texture2D(tDiffuse, vUv);\n // Find closest depth;\n float totalWeight = 0.0;\n float radiusToUse = screenSpaceRadius ? distance(\n worldPos,\n getWorldPos(depth, vUv +\n vec2(radius, 0.0) / resolution)\n ) : radius;\n float distanceFalloffToUse =screenSpaceRadius ?\n radiusToUse * distanceFalloff\n : distanceFalloff;\n for(float x = -1.0; x <= 1.0; x++) {\n for(float y = -1.0; y <= 1.0; y++) {\n vec2 offset = vec2(x, y);\n ivec2 p = ivec2(\n (vUv * resolution * 0.5) + offset\n );\n vec2 pUv = vec2(p) / (resolution * 0.5);\n float sampleDepth = texelFetch(downsampledDepth,p, 0).x;\n vec4 sampleInfo = texelFetch(tDiffuse, p, 0);\n vec3 normalSample = sampleInfo.xyz * 2.0 - 1.0;\n vec3 worldPosSample = getWorldPos(sampleDepth, pUv);\n float tangentPlaneDist = abs(dot(worldPos - worldPosSample, normal));\n float rangeCheck = exp(-1.0 * tangentPlaneDist * (1.0 / distanceFalloffToUse)) * max(dot(normal, normalSample), 0.0);\n float weight = rangeCheck;\n totalWeight += weight;\n texel += sampleInfo * weight;\n }\n }\n if (totalWeight == 0.0) {\n texel = texture2D(tDiffuse, vUv);\n } else {\n texel /= totalWeight;\n }\n }\n #else\n vec4 texel = texture2D(tDiffuse, vUv);\n #endif\n\n \n float finalAo = pow(texel.a, intensity);\n float fogFactor;\n float fogDepth = distance(\n cameraPos,\n getWorldPos(depth, vUv)\n );\n if (fog) {\n if (fogExp) {\n fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );\n } else {\n fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n }\n }\n finalAo = mix(finalAo, 1.0, fogFactor);\n vec3 aoApplied = color * mix(vec3(1.0), sceneTexel.rgb, float(colorMultiply));\n if (renderMode == 0.0) {\n gl_FragColor = vec4( mix(sceneTexel.rgb, aoApplied, 1.0 - finalAo), sceneTexel.a);\n } else if (renderMode == 1.0) {\n gl_FragColor = vec4( mix(vec3(1.0), aoApplied, 1.0 - finalAo), sceneTexel.a);\n } else if (renderMode == 2.0) {\n gl_FragColor = vec4( sceneTexel.rgb, sceneTexel.a);\n } else if (renderMode == 3.0) {\n if (vUv.x < 0.5) {\n gl_FragColor = vec4( sceneTexel.rgb, sceneTexel.a);\n } else if (abs(vUv.x - 0.5) < 1.0 / resolution.x) {\n gl_FragColor = vec4(1.0);\n } else {\n gl_FragColor = vec4( mix(sceneTexel.rgb, aoApplied, 1.0 - finalAo), sceneTexel.a);\n }\n } else if (renderMode == 4.0) {\n if (vUv.x < 0.5) {\n gl_FragColor = vec4( sceneTexel.rgb, sceneTexel.a);\n } else if (abs(vUv.x - 0.5) < 1.0 / resolution.x) {\n gl_FragColor = vec4(1.0);\n } else {\n gl_FragColor = vec4( mix(vec3(1.0), aoApplied, 1.0 - finalAo), sceneTexel.a);\n }\n }\n #include \n if (gammaCorrection) {\n gl_FragColor = LinearTosRGB(gl_FragColor);\n }\n }\n `\n )\n};\nconst $e52378cd0f5a973d$export$57856b59f317262e = {\n uniforms: {\n \"sceneDiffuse\": {\n value: null\n },\n \"sceneDepth\": {\n value: null\n },\n \"tDiffuse\": {\n value: null\n },\n \"projMat\": {\n value: new Matrix4()\n },\n \"viewMat\": {\n value: new Matrix4()\n },\n \"projectionMatrixInv\": {\n value: new Matrix4()\n },\n \"viewMatrixInv\": {\n value: new Matrix4()\n },\n \"cameraPos\": {\n value: new Vector3()\n },\n \"resolution\": {\n value: new Vector2()\n },\n \"time\": {\n value: 0\n },\n \"r\": {\n value: 5\n },\n \"blueNoise\": {\n value: null\n },\n \"radius\": {\n value: 12\n },\n \"worldRadius\": {\n value: 5\n },\n \"index\": {\n value: 0\n },\n \"poissonDisk\": {\n value: []\n },\n \"distanceFalloff\": {\n value: 1\n },\n \"near\": {\n value: 0.1\n },\n \"far\": {\n value: 1e3\n },\n \"logDepth\": {\n value: false\n },\n \"screenSpaceRadius\": {\n value: false\n }\n },\n vertexShader: (\n /* glsl */\n `\n\t\tvarying vec2 vUv;\n\t\tvoid main() {\n\t\t\tvUv = uv;\n\t\t\tgl_Position = vec4(position, 1.0);\n\t\t}`\n ),\n fragmentShader: (\n /* glsl */\n `\n\t\tuniform sampler2D sceneDiffuse;\n uniform highp sampler2D sceneDepth;\n uniform sampler2D tDiffuse;\n uniform sampler2D blueNoise;\n uniform mat4 projectionMatrixInv;\n uniform mat4 viewMatrixInv;\n uniform vec2 resolution;\n uniform float r;\n uniform float radius;\n uniform float worldRadius;\n uniform float index;\n uniform float near;\n uniform float far;\n uniform float distanceFalloff;\n uniform bool logDepth;\n uniform bool screenSpaceRadius;\n varying vec2 vUv;\n\n highp float linearize_depth(highp float d, highp float zNear,highp float zFar)\n {\n highp float z_n = 2.0 * d - 1.0;\n return 2.0 * zNear * zFar / (zFar + zNear - z_n * (zFar - zNear));\n }\n highp float linearize_depth_log(highp float d, highp float nearZ,highp float farZ) {\n float depth = pow(2.0, d * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n return linearize_depth(linDepth, nearZ, farZ);\n }\n highp float linearize_depth_ortho(highp float d, highp float nearZ, highp float farZ) {\n return nearZ + (farZ - nearZ) * d;\n }\n vec3 getWorldPosLog(vec3 posS) {\n vec2 uv = posS.xy;\n float z = posS.z;\n float nearZ =near;\n float farZ = far;\n float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0;\n vec4 wpos = projectionMatrixInv * clipVec;\n return wpos.xyz / wpos.w;\n }\n vec3 getWorldPos(float depth, vec2 coord) {\n #ifdef LOGDEPTH\n return getWorldPosLog(vec3(coord, depth));\n #endif\n \n float z = depth * 2.0 - 1.0;\n vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);\n vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition;\n // Perspective division\n vec4 worldSpacePosition = viewSpacePosition;\n worldSpacePosition.xyz /= worldSpacePosition.w;\n return worldSpacePosition.xyz;\n }\n #include \n #define NUM_SAMPLES 16\n uniform vec2 poissonDisk[NUM_SAMPLES];\n void main() {\n const float pi = 3.14159;\n vec2 texelSize = vec2(1.0 / resolution.x, 1.0 / resolution.y);\n vec2 uv = vUv;\n vec4 data = texture2D(tDiffuse, vUv);\n float occlusion = data.a;\n float baseOcc = data.a;\n vec3 normal = data.rgb * 2.0 - 1.0;\n float count = 1.0;\n float d = texture2D(sceneDepth, vUv).x;\n if (d == 1.0) {\n gl_FragColor = data;\n return;\n }\n vec3 worldPos = getWorldPos(d, vUv);\n float size = radius;\n float angle;\n if (index == 0.0) {\n angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).x * PI2;\n } else if (index == 1.0) {\n angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).y * PI2;\n } else if (index == 2.0) {\n angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).z * PI2;\n } else {\n angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).w * PI2;\n }\n\n mat2 rotationMatrix = mat2(cos(angle), -sin(angle), sin(angle), cos(angle));\n float radiusToUse = screenSpaceRadius ? distance(\n worldPos,\n getWorldPos(d, vUv +\n vec2(worldRadius, 0.0) / resolution)\n ) : worldRadius;\n float distanceFalloffToUse =screenSpaceRadius ?\n radiusToUse * distanceFalloff\n : distanceFalloff;\n\n\n for(int i = 0; i < NUM_SAMPLES; i++) {\n vec2 offset = (rotationMatrix * poissonDisk[i]) * texelSize * size;\n vec4 dataSample = texture2D(tDiffuse, uv + offset);\n float occSample = dataSample.a;\n vec3 normalSample = dataSample.rgb * 2.0 - 1.0;\n float dSample = texture2D(sceneDepth, uv + offset).x;\n vec3 worldPosSample = getWorldPos(dSample, uv + offset);\n float tangentPlaneDist = abs(dot(worldPos - worldPosSample, normal));\n float rangeCheck = dSample == 1.0 ? 0.0 :exp(-1.0 * tangentPlaneDist * (1.0 / distanceFalloffToUse)) * max(dot(normal, normalSample), 0.0) * (1.0 - abs(occSample - baseOcc));\n occlusion += occSample * rangeCheck;\n count += rangeCheck;\n }\n occlusion /= count;\n gl_FragColor = vec4(0.5 + 0.5 * normal, occlusion);\n }\n `\n )\n};\nconst $26aca173e0984d99$export$1efdf491687cd442 = {\n uniforms: {\n \"sceneDepth\": {\n value: null\n },\n \"resolution\": {\n value: new Vector2()\n },\n \"near\": {\n value: 0.1\n },\n \"far\": {\n value: 1e3\n },\n \"viewMatrixInv\": {\n value: new Matrix4()\n },\n \"projectionMatrixInv\": {\n value: new Matrix4()\n },\n \"logDepth\": {\n value: false\n }\n },\n vertexShader: (\n /* glsl */\n `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = vec4(position, 1);\n }`\n ),\n fragmentShader: (\n /* glsl */\n `\n uniform highp sampler2D sceneDepth;\n uniform vec2 resolution;\n uniform float near;\n uniform float far;\n uniform bool logDepth;\n uniform mat4 viewMatrixInv;\n uniform mat4 projectionMatrixInv;\n varying vec2 vUv;\n layout(location = 1) out vec4 gNormal;\n vec3 getWorldPosLog(vec3 posS) {\n vec2 uv = posS.xy;\n float z = posS.z;\n float nearZ =near;\n float farZ = far;\n float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0;\n vec4 wpos = projectionMatrixInv * clipVec;\n return wpos.xyz / wpos.w;\n }\n vec3 getWorldPos(float depth, vec2 coord) {\n if (logDepth) {\n return getWorldPosLog(vec3(coord, depth));\n }\n float z = depth * 2.0 - 1.0;\n vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);\n vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition;\n // Perspective division\n vec4 worldSpacePosition = viewSpacePosition;\n worldSpacePosition.xyz /= worldSpacePosition.w;\n return worldSpacePosition.xyz;\n }\n \n vec3 computeNormal(vec3 worldPos, vec2 vUv) {\n ivec2 p = ivec2(vUv * resolution);\n float c0 = texelFetch(sceneDepth, p, 0).x;\n float l2 = texelFetch(sceneDepth, p - ivec2(2, 0), 0).x;\n float l1 = texelFetch(sceneDepth, p - ivec2(1, 0), 0).x;\n float r1 = texelFetch(sceneDepth, p + ivec2(1, 0), 0).x;\n float r2 = texelFetch(sceneDepth, p + ivec2(2, 0), 0).x;\n float b2 = texelFetch(sceneDepth, p - ivec2(0, 2), 0).x;\n float b1 = texelFetch(sceneDepth, p - ivec2(0, 1), 0).x;\n float t1 = texelFetch(sceneDepth, p + ivec2(0, 1), 0).x;\n float t2 = texelFetch(sceneDepth, p + ivec2(0, 2), 0).x;\n \n float dl = abs((2.0 * l1 - l2) - c0);\n float dr = abs((2.0 * r1 - r2) - c0);\n float db = abs((2.0 * b1 - b2) - c0);\n float dt = abs((2.0 * t1 - t2) - c0);\n \n vec3 ce = getWorldPos(c0, vUv).xyz;\n \n vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / resolution.x, 0.0))).xyz\n : -ce + getWorldPos(r1, (vUv + vec2(1.0 / resolution.x, 0.0))).xyz;\n vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / resolution.y))).xyz\n : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / resolution.y))).xyz;\n \n return normalize(cross(dpdx, dpdy));\n }\n void main() {\n vec2 uv = vUv - vec2(0.5) / resolution;\n vec2 pixelSize = vec2(1.0) / resolution;\n vec2[] uvSamples = vec2[4](\n uv,\n uv + vec2(pixelSize.x, 0.0),\n uv + vec2(0.0, pixelSize.y),\n uv + pixelSize\n );\n float depth00 = texture2D(sceneDepth, uvSamples[0]).r;\n float depth10 = texture2D(sceneDepth, uvSamples[1]).r;\n float depth01 = texture2D(sceneDepth, uvSamples[2]).r;\n float depth11 = texture2D(sceneDepth, uvSamples[3]).r;\n float minDepth = min(min(depth00, depth10), min(depth01, depth11));\n float maxDepth = max(max(depth00, depth10), max(depth01, depth11));\n float targetDepth = minDepth;\n // Checkerboard pattern to avoid artifacts\n if (mod(gl_FragCoord.x + gl_FragCoord.y, 2.0) > 0.5) { \n targetDepth = maxDepth;\n }\n int chosenIndex = 0;\n float[] samples = float[4](depth00, depth10, depth01, depth11);\n for(int i = 0; i < 4; ++i) {\n if (samples[i] == targetDepth) {\n chosenIndex = i;\n break;\n }\n }\n gl_FragColor = vec4(samples[chosenIndex], 0.0, 0.0, 1.0);\n gNormal = vec4(computeNormal(\n getWorldPos(samples[chosenIndex], uvSamples[chosenIndex]), uvSamples[chosenIndex]\n ), 0.0);\n /* float[] samples = float[4](depth00, depth10, depth01, depth11);\n float c = 0.25 * (depth00 + depth10 + depth01 + depth11);\n float[] distances = float[4](depth00, depth10, depth01, depth11);\n float maxDistance = max(max(distances[0], distances[1]), max(distances[2], distances[3]));\n\n int remaining[3];\n int rejected[3];\n int i, j, k;\n\n for(i = 0, j = 0, k = 0; i < 4; ++i) {\n if (distances[i] < maxDistance) {\n remaining[j++] = i;\n } else {\n rejected[k++] = i;\n }\n }\n for(;j < 3;++j) {\n remaining[j] = rejected[--k];\n }\n vec3 s = vec3(\n samples[remaining[0]],\n samples[remaining[1]],\n samples[remaining[2]]\n );\n c = (s.x + s.y + s.z) / 3.0;\n\n distances[0] = abs(c - s.x);\n distances[1] = abs(c - s.y);\n distances[2] = abs(c - s.z);\n\n float minDistance = min(min(distances[0], distances[1]), distances[2]);\n\n for(i = 0; i < 3; ++i) {\n if (distances[i] == minDistance) {\n break;\n }\n }*/\n /* gl_FragColor = vec4(samples[remaining[i]], 0.0, 0.0, 0.0);\n gNormal = vec4(computeNormal(\n getWorldPos(samples[remaining[i]], uvSamples[remaining[i]]), uvSamples[remaining[i]]\n ), 0.0);*/\n }`\n )\n};\nvar $06269ad78f3c5fdf$export$2e2bcd8739ae039 = `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`;\nconst $87431ee93b037844$var$bluenoiseBits = Uint8Array.from(atob($06269ad78f3c5fdf$export$2e2bcd8739ae039), (c) => c.charCodeAt(0));\nfunction $87431ee93b037844$var$checkTimerQuery(timerQuery, gl, pass) {\n const available = gl.getQueryParameter(timerQuery, gl.QUERY_RESULT_AVAILABLE);\n if (available) {\n const elapsedTimeInNs = gl.getQueryParameter(timerQuery, gl.QUERY_RESULT);\n const elapsedTimeInMs = elapsedTimeInNs / 1e6;\n pass.lastTime = elapsedTimeInMs;\n } else\n setTimeout(() => {\n $87431ee93b037844$var$checkTimerQuery(timerQuery, gl, pass);\n }, 1);\n}\nclass $87431ee93b037844$export$2489f9981ab0fa82 extends Pass {\n /**\n * \n * @param {THREE.Scene} scene\n * @param {THREE.Camera} camera \n * @param {number} width \n * @param {number} height\n * \n * @property {THREE.Scene} scene\n * @property {THREE.Camera} camera\n * @property {number} width\n * @property {number} height\n */\n constructor(scene, camera, width = 512, height = 512) {\n super();\n this.width = width;\n this.height = height;\n this.clear = true;\n this.camera = camera;\n this.scene = scene;\n this.autosetGamma = true;\n this.configuration = new Proxy({\n aoSamples: 16,\n aoRadius: 5,\n denoiseSamples: 8,\n denoiseRadius: 12,\n distanceFalloff: 1,\n intensity: 5,\n denoiseIterations: 2,\n renderMode: 0,\n color: new Color(0, 0, 0),\n gammaCorrection: true,\n logarithmicDepthBuffer: false,\n screenSpaceRadius: false,\n halfRes: false,\n depthAwareUpsampling: true,\n colorMultiply: true\n }, {\n set: (target, propName, value) => {\n const oldProp = target[propName];\n target[propName] = value;\n if (propName === \"aoSamples\" && oldProp !== value)\n this.configureAOPass(this.configuration.logarithmicDepthBuffer);\n if (propName === \"denoiseSamples\" && oldProp !== value)\n this.configureDenoisePass(this.configuration.logarithmicDepthBuffer);\n if (propName === \"halfRes\" && oldProp !== value) {\n this.configureAOPass(this.configuration.logarithmicDepthBuffer);\n this.configureHalfResTargets();\n this.configureEffectCompositer(this.configuration.logarithmicDepthBuffer);\n this.setSize(this.width, this.height);\n }\n if (propName === \"depthAwareUpsampling\" && oldProp !== value)\n this.configureEffectCompositer(this.configuration.logarithmicDepthBuffer);\n if (propName === \"gammaCorrection\")\n this.autosetGamma = false;\n return true;\n }\n });\n this.samples = [];\n this.samplesR = [];\n this.samplesDenoise = [];\n this.configureEffectCompositer(this.configuration.logarithmicDepthBuffer);\n this.configureSampleDependentPasses();\n this.configureHalfResTargets();\n this.copyQuad = new $e4ca8dcb0218f846$export$dcd670d73db751f5(new ShaderMaterial({\n uniforms: {\n tDiffuse: {\n value: null\n }\n },\n depthWrite: false,\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = vec4(position, 1);\n }\n `,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n varying vec2 vUv;\n void main() {\n gl_FragColor = texture2D(tDiffuse, vUv);\n }\n `\n }));\n this.writeTargetInternal = new WebGLRenderTarget(this.width, this.height, {\n minFilter: LinearFilter,\n magFilter: LinearFilter,\n depthBuffer: false\n });\n this.readTargetInternal = new WebGLRenderTarget(this.width, this.height, {\n minFilter: LinearFilter,\n magFilter: LinearFilter,\n depthBuffer: false\n });\n this.outputTargetInternal = new WebGLRenderTarget(this.width, this.height, {\n minFilter: LinearFilter,\n magFilter: LinearFilter,\n depthBuffer: false\n });\n this.bluenoise = new DataTexture($87431ee93b037844$var$bluenoiseBits, 128, 128);\n this.bluenoise.colorSpace = NoColorSpace;\n this.bluenoise.wrapS = RepeatWrapping;\n this.bluenoise.wrapT = RepeatWrapping;\n this.bluenoise.minFilter = NearestFilter;\n this.bluenoise.magFilter = NearestFilter;\n this.bluenoise.needsUpdate = true;\n this.lastTime = 0;\n this.needsDepthTexture = true;\n this.needsSwap = true;\n this._r = new Vector2();\n this._c = new Color();\n }\n configureHalfResTargets() {\n if (this.configuration.halfRes) {\n this.depthDownsampleTarget = /*new THREE.WebGLRenderTarget(this.width / 2, this.height / 2, {\n minFilter: THREE.NearestFilter,\n magFilter: THREE.NearestFilter,\n depthBuffer: false,\n format: THREE.RedFormat,\n type: THREE.FloatType\n });*/\n new WebGLMultipleRenderTargets(this.width / 2, this.height / 2, 2);\n this.depthDownsampleTarget.texture[0].format = RedFormat;\n this.depthDownsampleTarget.texture[0].type = FloatType;\n this.depthDownsampleTarget.texture[0].minFilter = NearestFilter;\n this.depthDownsampleTarget.texture[0].magFilter = NearestFilter;\n this.depthDownsampleTarget.texture[0].depthBuffer = false;\n this.depthDownsampleTarget.texture[1].format = RGBAFormat;\n this.depthDownsampleTarget.texture[1].type = HalfFloatType;\n this.depthDownsampleTarget.texture[1].minFilter = NearestFilter;\n this.depthDownsampleTarget.texture[1].magFilter = NearestFilter;\n this.depthDownsampleTarget.texture[1].depthBuffer = false;\n this.depthDownsampleQuad = new $e4ca8dcb0218f846$export$dcd670d73db751f5(new ShaderMaterial($26aca173e0984d99$export$1efdf491687cd442));\n } else {\n if (this.depthDownsampleTarget) {\n this.depthDownsampleTarget.dispose();\n this.depthDownsampleTarget = null;\n }\n if (this.depthDownsampleQuad) {\n this.depthDownsampleQuad.dispose();\n this.depthDownsampleQuad = null;\n }\n }\n }\n configureSampleDependentPasses() {\n this.configureAOPass(this.configuration.logarithmicDepthBuffer);\n this.configureDenoisePass(this.configuration.logarithmicDepthBuffer);\n }\n configureAOPass(logarithmicDepthBuffer = false) {\n this.samples = this.generateHemisphereSamples(this.configuration.aoSamples);\n this.samplesR = this.generateHemisphereSamplesR(this.configuration.aoSamples);\n const e = {\n ...$1ed45968c1160c3c$export$c9b263b9a17dffd7\n };\n e.fragmentShader = e.fragmentShader.replace(\"16\", this.configuration.aoSamples).replace(\"16.0\", this.configuration.aoSamples + \".0\");\n if (logarithmicDepthBuffer)\n e.fragmentShader = \"#define LOGDEPTH\\n\" + e.fragmentShader;\n if (this.configuration.halfRes)\n e.fragmentShader = \"#define HALFRES\\n\" + e.fragmentShader;\n if (this.effectShaderQuad) {\n this.effectShaderQuad.material.dispose();\n this.effectShaderQuad.material = new ShaderMaterial(e);\n } else\n this.effectShaderQuad = new $e4ca8dcb0218f846$export$dcd670d73db751f5(new ShaderMaterial(e));\n }\n configureDenoisePass(logarithmicDepthBuffer = false) {\n this.samplesDenoise = this.generateDenoiseSamples(this.configuration.denoiseSamples, 11);\n const p = {\n ...$e52378cd0f5a973d$export$57856b59f317262e\n };\n p.fragmentShader = p.fragmentShader.replace(\"16\", this.configuration.denoiseSamples);\n if (logarithmicDepthBuffer)\n p.fragmentShader = \"#define LOGDEPTH\\n\" + p.fragmentShader;\n if (this.poissonBlurQuad) {\n this.poissonBlurQuad.material.dispose();\n this.poissonBlurQuad.material = new ShaderMaterial(p);\n } else\n this.poissonBlurQuad = new $e4ca8dcb0218f846$export$dcd670d73db751f5(new ShaderMaterial(p));\n }\n configureEffectCompositer(logarithmicDepthBuffer = false) {\n const e = {\n ...$12b21d24d1192a04$export$a815acccbd2c9a49\n };\n if (logarithmicDepthBuffer)\n e.fragmentShader = \"#define LOGDEPTH\\n\" + e.fragmentShader;\n if (this.configuration.halfRes && this.configuration.depthAwareUpsampling)\n e.fragmentShader = \"#define HALFRES\\n\" + e.fragmentShader;\n if (this.effectCompositerQuad) {\n this.effectCompositerQuad.material.dispose();\n this.effectCompositerQuad.material = new ShaderMaterial(e);\n } else\n this.effectCompositerQuad = new $e4ca8dcb0218f846$export$dcd670d73db751f5(new ShaderMaterial(e));\n }\n /**\n * \n * @param {Number} n \n * @returns {THREE.Vector3[]}\n */\n generateHemisphereSamples(n) {\n const points = [];\n for (let k = 0; k < n; k++) {\n const theta = 2.399963 * k;\n const r = Math.sqrt(k + 0.5) / Math.sqrt(n);\n const x = r * Math.cos(theta);\n const y = r * Math.sin(theta);\n const z = Math.sqrt(1 - (x * x + y * y));\n points.push(new Vector3(x, y, z));\n }\n return points;\n }\n /**\n * \n * @param {number} n \n * @returns {number[]}\n */\n generateHemisphereSamplesR(n) {\n let samplesR = [];\n for (let i2 = 0; i2 < n; i2++)\n samplesR.push((i2 + 1) / n);\n return samplesR;\n }\n /**\n * \n * @param {number} numSamples \n * @param {number} numRings \n * @returns {THREE.Vector2[]}\n */\n generateDenoiseSamples(numSamples, numRings) {\n const angleStep = 2 * Math.PI * numRings / numSamples;\n const invNumSamples = 1 / numSamples;\n const radiusStep = invNumSamples;\n const samples = [];\n let radius = invNumSamples;\n let angle = 0;\n for (let i2 = 0; i2 < numSamples; i2++) {\n samples.push(new Vector2(Math.cos(angle), Math.sin(angle)).multiplyScalar(Math.pow(radius, 0.75)));\n radius += radiusStep;\n angle += angleStep;\n }\n return samples;\n }\n setSize(width, height) {\n this.width = width;\n this.height = height;\n const c = this.configuration.halfRes ? 0.5 : 1;\n this.writeTargetInternal.setSize(width * c, height * c);\n this.readTargetInternal.setSize(width * c, height * c);\n if (this.configuration.halfRes)\n this.depthDownsampleTarget.setSize(width * c, height * c);\n this.outputTargetInternal.setSize(width, height);\n }\n setDepthTexture(depthTexture) {\n this.depthTexture = depthTexture;\n }\n render(renderer, inputBuffer, outputBuffer) {\n const xrEnabled = renderer.xr.enabled;\n renderer.xr.enabled = false;\n if (renderer.capabilities.logarithmicDepthBuffer !== this.configuration.logarithmicDepthBuffer) {\n this.configuration.logarithmicDepthBuffer = renderer.capabilities.logarithmicDepthBuffer;\n this.configureAOPass(this.configuration.logarithmicDepthBuffer);\n this.configureDenoisePass(this.configuration.logarithmicDepthBuffer);\n this.configureEffectCompositer(this.configuration.logarithmicDepthBuffer);\n }\n if (inputBuffer.texture.type !== this.outputTargetInternal.texture.type) {\n this.outputTargetInternal.texture.type = inputBuffer.texture.type;\n this.outputTargetInternal.texture.needsUpdate = true;\n }\n let gl;\n let ext;\n let timerQuery;\n if (this.debugMode) {\n gl = renderer.getContext();\n ext = gl.getExtension(\"EXT_disjoint_timer_query_webgl2\");\n if (ext === null) {\n console.error(\"EXT_disjoint_timer_query_webgl2 not available, disabling debug mode.\");\n this.debugMode = false;\n }\n }\n if (this.debugMode) {\n timerQuery = gl.createQuery();\n gl.beginQuery(ext.TIME_ELAPSED_EXT, timerQuery);\n }\n this.camera.updateMatrixWorld();\n this._r.set(this.width, this.height);\n let trueRadius = this.configuration.aoRadius;\n if (this.configuration.halfRes && this.configuration.screenSpaceRadius)\n trueRadius *= 0.5;\n if (this.configuration.halfRes) {\n renderer.setRenderTarget(this.depthDownsampleTarget);\n this.depthDownsampleQuad.material.uniforms.sceneDepth.value = this.depthTexture;\n this.depthDownsampleQuad.material.uniforms.resolution.value = this._r;\n this.depthDownsampleQuad.material.uniforms[\"near\"].value = this.camera.near;\n this.depthDownsampleQuad.material.uniforms[\"far\"].value = this.camera.far;\n this.depthDownsampleQuad.material.uniforms[\"projectionMatrixInv\"].value = this.camera.projectionMatrixInverse;\n this.depthDownsampleQuad.material.uniforms[\"viewMatrixInv\"].value = this.camera.matrixWorld;\n this.depthDownsampleQuad.material.uniforms[\"logDepth\"].value = this.configuration.logarithmicDepthBuffer;\n this.depthDownsampleQuad.render(renderer);\n }\n this.effectShaderQuad.material.uniforms[\"sceneDiffuse\"].value = inputBuffer.texture;\n this.effectShaderQuad.material.uniforms[\"sceneDepth\"].value = this.configuration.halfRes ? this.depthDownsampleTarget.texture[0] : this.depthTexture;\n this.effectShaderQuad.material.uniforms[\"sceneNormal\"].value = this.configuration.halfRes ? this.depthDownsampleTarget.texture[1] : null;\n this.effectShaderQuad.material.uniforms[\"projMat\"].value = this.camera.projectionMatrix;\n this.effectShaderQuad.material.uniforms[\"viewMat\"].value = this.camera.matrixWorldInverse;\n this.effectShaderQuad.material.uniforms[\"projViewMat\"].value = this.camera.projectionMatrix.clone().multiply(this.camera.matrixWorldInverse.clone());\n this.effectShaderQuad.material.uniforms[\"projectionMatrixInv\"].value = this.camera.projectionMatrixInverse;\n this.effectShaderQuad.material.uniforms[\"viewMatrixInv\"].value = this.camera.matrixWorld;\n this.effectShaderQuad.material.uniforms[\"cameraPos\"].value = this.camera.getWorldPosition(new Vector3());\n this.effectShaderQuad.material.uniforms[\"resolution\"].value = this.configuration.halfRes ? this._r.clone().multiplyScalar(0.5).floor() : this._r;\n this.effectShaderQuad.material.uniforms[\"time\"].value = performance.now() / 1e3;\n this.effectShaderQuad.material.uniforms[\"samples\"].value = this.samples;\n this.effectShaderQuad.material.uniforms[\"samplesR\"].value = this.samplesR;\n this.effectShaderQuad.material.uniforms[\"bluenoise\"].value = this.bluenoise;\n this.effectShaderQuad.material.uniforms[\"radius\"].value = trueRadius;\n this.effectShaderQuad.material.uniforms[\"distanceFalloff\"].value = this.configuration.distanceFalloff;\n this.effectShaderQuad.material.uniforms[\"near\"].value = this.camera.near;\n this.effectShaderQuad.material.uniforms[\"far\"].value = this.camera.far;\n this.effectShaderQuad.material.uniforms[\"logDepth\"].value = renderer.capabilities.logarithmicDepthBuffer;\n this.effectShaderQuad.material.uniforms[\"ortho\"].value = this.camera.isOrthographicCamera;\n this.effectShaderQuad.material.uniforms[\"screenSpaceRadius\"].value = this.configuration.screenSpaceRadius;\n renderer.setRenderTarget(this.writeTargetInternal);\n this.effectShaderQuad.render(renderer);\n for (let i2 = 0; i2 < this.configuration.denoiseIterations; i2++) {\n [this.writeTargetInternal, this.readTargetInternal] = [\n this.readTargetInternal,\n this.writeTargetInternal\n ];\n this.poissonBlurQuad.material.uniforms[\"tDiffuse\"].value = this.readTargetInternal.texture;\n this.poissonBlurQuad.material.uniforms[\"sceneDepth\"].value = this.configuration.halfRes ? this.depthDownsampleTarget.texture[0] : this.depthTexture;\n this.poissonBlurQuad.material.uniforms[\"projMat\"].value = this.camera.projectionMatrix;\n this.poissonBlurQuad.material.uniforms[\"viewMat\"].value = this.camera.matrixWorldInverse;\n this.poissonBlurQuad.material.uniforms[\"projectionMatrixInv\"].value = this.camera.projectionMatrixInverse;\n this.poissonBlurQuad.material.uniforms[\"viewMatrixInv\"].value = this.camera.matrixWorld;\n this.poissonBlurQuad.material.uniforms[\"cameraPos\"].value = this.camera.getWorldPosition(new Vector3());\n this.poissonBlurQuad.material.uniforms[\"resolution\"].value = this.configuration.halfRes ? this._r.clone().multiplyScalar(0.5).floor() : this._r;\n this.poissonBlurQuad.material.uniforms[\"time\"].value = performance.now() / 1e3;\n this.poissonBlurQuad.material.uniforms[\"blueNoise\"].value = this.bluenoise;\n this.poissonBlurQuad.material.uniforms[\"radius\"].value = this.configuration.denoiseRadius * (this.configuration.halfRes ? 0.5 : 1);\n this.poissonBlurQuad.material.uniforms[\"worldRadius\"].value = trueRadius;\n this.poissonBlurQuad.material.uniforms[\"distanceFalloff\"].value = this.configuration.distanceFalloff;\n this.poissonBlurQuad.material.uniforms[\"index\"].value = i2;\n this.poissonBlurQuad.material.uniforms[\"poissonDisk\"].value = this.samplesDenoise;\n this.poissonBlurQuad.material.uniforms[\"near\"].value = this.camera.near;\n this.poissonBlurQuad.material.uniforms[\"far\"].value = this.camera.far;\n this.poissonBlurQuad.material.uniforms[\"logDepth\"].value = renderer.capabilities.logarithmicDepthBuffer;\n this.poissonBlurQuad.material.uniforms[\"screenSpaceRadius\"].value = this.configuration.screenSpaceRadius;\n renderer.setRenderTarget(this.writeTargetInternal);\n this.poissonBlurQuad.render(renderer);\n }\n this.effectCompositerQuad.material.uniforms[\"sceneDiffuse\"].value = inputBuffer.texture;\n this.effectCompositerQuad.material.uniforms[\"sceneDepth\"].value = this.depthTexture;\n this.effectCompositerQuad.material.uniforms[\"near\"].value = this.camera.near;\n this.effectCompositerQuad.material.uniforms[\"far\"].value = this.camera.far;\n this.effectCompositerQuad.material.uniforms[\"projectionMatrixInv\"].value = this.camera.projectionMatrixInverse;\n this.effectCompositerQuad.material.uniforms[\"viewMatrixInv\"].value = this.camera.matrixWorld;\n this.effectCompositerQuad.material.uniforms[\"logDepth\"].value = renderer.capabilities.logarithmicDepthBuffer;\n this.effectCompositerQuad.material.uniforms[\"ortho\"].value = this.camera.isOrthographicCamera;\n this.effectCompositerQuad.material.uniforms[\"downsampledDepth\"].value = this.configuration.halfRes ? this.depthDownsampleTarget.texture[0] : this.depthTexture;\n this.effectCompositerQuad.material.uniforms[\"resolution\"].value = this._r;\n this.effectCompositerQuad.material.uniforms[\"blueNoise\"].value = this.bluenoise;\n this.effectCompositerQuad.material.uniforms[\"intensity\"].value = this.configuration.intensity;\n this.effectCompositerQuad.material.uniforms[\"renderMode\"].value = this.configuration.renderMode;\n this.effectCompositerQuad.material.uniforms[\"screenSpaceRadius\"].value = this.configuration.screenSpaceRadius;\n this.effectCompositerQuad.material.uniforms[\"radius\"].value = trueRadius;\n this.effectCompositerQuad.material.uniforms[\"distanceFalloff\"].value = this.configuration.distanceFalloff;\n this.effectCompositerQuad.material.uniforms[\"gammaCorrection\"].value = this.autosetGamma ? this.renderToScreen : this.configuration.gammaCorrection;\n this.effectCompositerQuad.material.uniforms[\"tDiffuse\"].value = this.writeTargetInternal.texture;\n this.effectCompositerQuad.material.uniforms[\"color\"].value = this._c.copy(this.configuration.color).convertSRGBToLinear();\n this.effectCompositerQuad.material.uniforms[\"colorMultiply\"].value = this.configuration.colorMultiply;\n this.effectCompositerQuad.material.uniforms[\"cameraPos\"].value = this.camera.getWorldPosition(new Vector3());\n this.effectCompositerQuad.material.uniforms[\"fog\"].value = !!this.scene.fog;\n if (this.scene.fog) {\n if (this.scene.fog.isFog) {\n this.effectCompositerQuad.material.uniforms[\"fogExp\"].value = false;\n this.effectCompositerQuad.material.uniforms[\"fogNear\"].value = this.scene.fog.near;\n this.effectCompositerQuad.material.uniforms[\"fogFar\"].value = this.scene.fog.far;\n } else if (this.scene.fog.isFogExp2) {\n this.effectCompositerQuad.material.uniforms[\"fogExp\"].value = true;\n this.effectCompositerQuad.material.uniforms[\"fogDensity\"].value = this.scene.fog.density;\n } else\n console.error(`Unsupported fog type ${this.scene.fog.constructor.name} in SSAOPass.`);\n }\n renderer.setRenderTarget(\n /* this.renderToScreen ? null :\n outputBuffer*/\n this.outputTargetInternal\n );\n this.effectCompositerQuad.render(renderer);\n renderer.setRenderTarget(this.renderToScreen ? null : outputBuffer);\n this.copyQuad.material.uniforms[\"tDiffuse\"].value = this.outputTargetInternal.texture;\n this.copyQuad.render(renderer);\n if (this.debugMode) {\n gl.endQuery(ext.TIME_ELAPSED_EXT);\n $87431ee93b037844$var$checkTimerQuery(timerQuery, gl, this);\n }\n renderer.xr.enabled = xrEnabled;\n }\n /**\n * Enables the debug mode of the AO, meaning the lastTime value will be updated.\n */\n enableDebugMode() {\n this.debugMode = true;\n }\n /**\n * Disables the debug mode of the AO, meaning the lastTime value will not be updated.\n */\n disableDebugMode() {\n this.debugMode = false;\n }\n /**\n * Sets the display mode of the AO\n * @param {\"Combined\" | \"AO\" | \"No AO\" | \"Split\" | \"Split AO\"} mode - The display mode. \n */\n setDisplayMode(mode) {\n this.configuration.renderMode = [\n \"Combined\",\n \"AO\",\n \"No AO\",\n \"Split\",\n \"Split AO\"\n ].indexOf(mode);\n }\n /**\n * \n * @param {\"Performance\" | \"Low\" | \"Medium\" | \"High\" | \"Ultra\"} mode \n */\n setQualityMode(mode) {\n if (mode === \"Performance\") {\n this.configuration.aoSamples = 8;\n this.configuration.denoiseSamples = 4;\n this.configuration.denoiseRadius = 12;\n } else if (mode === \"Low\") {\n this.configuration.aoSamples = 16;\n this.configuration.denoiseSamples = 4;\n this.configuration.denoiseRadius = 12;\n } else if (mode === \"Medium\") {\n this.configuration.aoSamples = 16;\n this.configuration.denoiseSamples = 8;\n this.configuration.denoiseRadius = 12;\n } else if (mode === \"High\") {\n this.configuration.aoSamples = 64;\n this.configuration.denoiseSamples = 8;\n this.configuration.denoiseRadius = 6;\n } else if (mode === \"Ultra\") {\n this.configuration.aoSamples = 64;\n this.configuration.denoiseSamples = 16;\n this.configuration.denoiseRadius = 6;\n }\n }\n}\nUint8Array.from(atob($06269ad78f3c5fdf$export$2e2bcd8739ae039), (c) => c.charCodeAt(0));\nconst N8AO = forwardRef(\n ({\n halfRes,\n screenSpaceRadius,\n quality,\n depthAwareUpsampling = true,\n aoRadius = 5,\n aoSamples = 16,\n denoiseSamples = 4,\n denoiseRadius = 12,\n distanceFalloff = 1,\n intensity = 1,\n color,\n renderMode = 0\n }, ref) => {\n const { camera, scene } = useThree();\n const effect = useMemo(() => new $87431ee93b037844$export$2489f9981ab0fa82(scene, camera), []);\n useLayoutEffect(() => {\n applyProps(effect.configuration, {\n color,\n aoRadius,\n distanceFalloff,\n intensity,\n aoSamples,\n denoiseSamples,\n denoiseRadius,\n screenSpaceRadius,\n renderMode,\n halfRes,\n depthAwareUpsampling\n });\n }, [\n screenSpaceRadius,\n color,\n aoRadius,\n distanceFalloff,\n intensity,\n aoSamples,\n denoiseSamples,\n denoiseRadius,\n renderMode,\n halfRes,\n depthAwareUpsampling\n ]);\n useLayoutEffect(() => {\n if (quality)\n effect.setQualityMode(quality.charAt(0).toUpperCase() + quality.slice(1));\n }, [quality]);\n return /* @__PURE__ */ jsx(\"primitive\", { ref, object: effect });\n }\n);\nexport {\n ASCII,\n Autofocus,\n Bloom,\n BrightnessContrast,\n ChromaticAberration,\n ColorAverage,\n ColorDepth,\n Depth,\n DepthOfField,\n DotScreen,\n EffectComposer,\n EffectComposerContext,\n FXAA,\n Glitch,\n GodRays,\n Grid,\n HueSaturation,\n LUT,\n LensFlare,\n LensFlareEffect,\n N8AO,\n Noise,\n Outline,\n Pixelation,\n SMAA,\n SSAO,\n SSR,\n Scanline,\n Select,\n Selection,\n SelectiveBloom,\n Sepia,\n ShockWave,\n Texture,\n TiltShift,\n TiltShift2,\n TiltShiftEffect,\n ToneMapping,\n Vignette,\n resolveRef,\n selectionContext,\n useVector2,\n wrapEffect\n};\n//# sourceMappingURL=index.js.map\n","import { Perf } from \"r3f-perf\";\nimport React, { useRef, useMemo } from \"react\";\nimport { useGLTF, Clone, OrbitControls, Float, Text } from \"@react-three/drei\";\nimport { EffectComposer, Glitch, Noise } from \"@react-three/postprocessing\";\nimport { BlendFunction, GlitchMode } from \"postprocessing\";\nexport default function chair() {\n const chair = useGLTF(\"/chair.gltf\");\n return (\n <>\n \n \n \n \n \n \n \n \n \n 萊納\n \n \n ,\n \n \n 你坐啊!\n \n \n \n \n ライナー、\n \n \n 座れよ。\n \n \n\n \n \n \n \n \n \n );\n}\n","import \"./style.css\";\nimport ReactDOM from \"react-dom/client\";\nimport { Canvas } from \"@react-three/fiber\";\nimport Chair from \"./chair.jsx\";\n\nconst root = ReactDOM.createRoot(document.querySelector(\"#root\"));\n\nroot.render(\n \n \n \n);\n"],"names":["l","n","p","q","r","t","u","v","w","x","y","z","A","a","B","C","D","E","b","e","F","G","H","I","J","K","L","M","d","c","k","h","g","f","m","N","O","escape","P","Q","R","S","T","U","V","W","react_production_min","reactModule","require$$0","reactJsxRuntime_production_min","jsxRuntimeModule","exports","schedulerModule","aa","ca","require$$1","da","ea","fa","ha","ia","ja","ka","la","ma","oa","pa","qa","ra","sa","ta","ua","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","Ra","Sa","Ta","Ua","Va","Wa","Xa","Ya","Za","ab","bb","cb","db","eb","fb","gb","hb","ib","jb","kb","lb","mb","nb","ob","pb","qb","rb","sb","tb","ub","vb","wb","xb","yb","zb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Yb","Zb","$b","ac","bc","cc","dc","ec","fc","gc","hc","ic","jc","kc","lc","mc","oc","nc","pc","qc","rc","sc","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","Tc","Uc","Vc","Wc","Xc","Yc","Zc","$c","ad","bd","cd","dd","ed","fd","gd","hd","id","jd","kd","ld","md","nd","od","pd","qd","rd","sd","td","ud","vd","wd","xd","yd","Ad","zd","Bd","Cd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Kd","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","Ud","Vd","Wd","Xd","Yd","Zd","$d","ae","be","ce","de","ee","fe","ge","he","ie","je","ke","le","me","ne","oe","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","Ae","Be","Ce","De","Ee","Fe","Ge","He","Ie","Je","Ke","Le","Me","Ne","Oe","Pe","Qe","Re","Se","Te","Ue","Ve","We","Xe","Ye","Ze","$e","af","bf","cf","df","ef","ff","gf","hf","jf","kf","lf","mf","nf","of","pf","qf","rf","sf","tf","uf","vf","wf","na","xa","$a","ba","xf","yf","zf","Af","Bf","Cf","Df","Ef","Ff","Gf","Hf","Jf","If","Kf","Lf","Mf","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","fh","gh","hh","ih","jh","kh","nh","lh","mh","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","ei","fi","gi","hi","ii","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","aj","bj","cj","dj","ej","fj","gj","hj","ij","jj","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Kj","Lj","Mj","Nj","Oj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","Xj","X","Yj","Zj","ak","bk","ck","dk","ek","fk","gk","hk","ik","jk","kk","lk","mk","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","Qk","Rk","Sk","Tk","Uk","Vk","Wk","Xk","Yk","Zk","$k","al","bl","cl","dl","el","fl","gl","hl","il","jl","kl","ll","ml","nl","ol","pl","ql","rl","sl","tl","ul","vl","wl","reactDom_production_min","checkDCE","err","reactDomModule","createRoot","client","REVISION","MOUSE","TOUCH","CullFaceNone","CullFaceBack","CullFaceFront","CullFaceFrontBack","BasicShadowMap","PCFShadowMap","PCFSoftShadowMap","VSMShadowMap","FrontSide","BackSide","DoubleSide","TwoPassDoubleSide","NoBlending","NormalBlending","AdditiveBlending","SubtractiveBlending","MultiplyBlending","CustomBlending","AddEquation","SubtractEquation","ReverseSubtractEquation","MinEquation","MaxEquation","ZeroFactor","OneFactor","SrcColorFactor","OneMinusSrcColorFactor","SrcAlphaFactor","OneMinusSrcAlphaFactor","DstAlphaFactor","OneMinusDstAlphaFactor","DstColorFactor","OneMinusDstColorFactor","SrcAlphaSaturateFactor","NeverDepth","AlwaysDepth","LessDepth","LessEqualDepth","EqualDepth","GreaterEqualDepth","GreaterDepth","NotEqualDepth","MultiplyOperation","MixOperation","AddOperation","NoToneMapping","LinearToneMapping","ReinhardToneMapping","CineonToneMapping","ACESFilmicToneMapping","CustomToneMapping","UVMapping","CubeReflectionMapping","CubeRefractionMapping","EquirectangularReflectionMapping","EquirectangularRefractionMapping","CubeUVReflectionMapping","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipmapNearestFilter","NearestMipMapNearestFilter","NearestMipmapLinearFilter","NearestMipMapLinearFilter","LinearFilter","LinearMipmapNearestFilter","LinearMipMapNearestFilter","LinearMipmapLinearFilter","LinearMipMapLinearFilter","UnsignedByteType","ByteType","ShortType","UnsignedShortType","IntType","UnsignedIntType","FloatType","HalfFloatType","UnsignedShort4444Type","UnsignedShort5551Type","UnsignedInt248Type","AlphaFormat","RGBAFormat","LuminanceFormat","LuminanceAlphaFormat","DepthFormat","DepthStencilFormat","RedFormat","RedIntegerFormat","RGFormat","RGIntegerFormat","RGBAIntegerFormat","RGB_S3TC_DXT1_Format","RGBA_S3TC_DXT1_Format","RGBA_S3TC_DXT3_Format","RGBA_S3TC_DXT5_Format","RGB_PVRTC_4BPPV1_Format","RGB_PVRTC_2BPPV1_Format","RGBA_PVRTC_4BPPV1_Format","RGBA_PVRTC_2BPPV1_Format","RGB_ETC1_Format","RGB_ETC2_Format","RGBA_ETC2_EAC_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_ASTC_10x5_Format","RGBA_ASTC_10x6_Format","RGBA_ASTC_10x8_Format","RGBA_ASTC_10x10_Format","RGBA_ASTC_12x10_Format","RGBA_ASTC_12x12_Format","RGBA_BPTC_Format","RED_RGTC1_Format","SIGNED_RED_RGTC1_Format","RED_GREEN_RGTC2_Format","SIGNED_RED_GREEN_RGTC2_Format","LoopOnce","LoopRepeat","LoopPingPong","InterpolateDiscrete","InterpolateLinear","InterpolateSmooth","ZeroCurvatureEnding","ZeroSlopeEnding","WrapAroundEnding","NormalAnimationBlendMode","AdditiveAnimationBlendMode","TrianglesDrawMode","TriangleStripDrawMode","TriangleFanDrawMode","LinearEncoding","sRGBEncoding","BasicDepthPacking","RGBADepthPacking","TangentSpaceNormalMap","ObjectSpaceNormalMap","NoColorSpace","SRGBColorSpace","LinearSRGBColorSpace","DisplayP3ColorSpace","ZeroStencilOp","KeepStencilOp","ReplaceStencilOp","IncrementStencilOp","DecrementStencilOp","IncrementWrapStencilOp","DecrementWrapStencilOp","InvertStencilOp","NeverStencilFunc","LessStencilFunc","EqualStencilFunc","LessEqualStencilFunc","GreaterStencilFunc","NotEqualStencilFunc","GreaterEqualStencilFunc","AlwaysStencilFunc","NeverCompare","LessCompare","EqualCompare","LessEqualCompare","GreaterCompare","NotEqualCompare","GreaterEqualCompare","AlwaysCompare","StaticDrawUsage","DynamicDrawUsage","StreamDrawUsage","StaticReadUsage","DynamicReadUsage","StreamReadUsage","StaticCopyUsage","DynamicCopyUsage","StreamCopyUsage","GLSL1","GLSL3","_SRGBAFormat","WebGLCoordinateSystem","WebGPUCoordinateSystem","EventDispatcher","type","listener","listeners","listenerArray","index","event","array","i","_lut","_seed","DEG2RAD","RAD2DEG","generateUUID","d0","d1","d2","d3","clamp","value","min","max","euclideanModulo","mapLinear","a1","a2","b1","b2","inverseLerp","lerp","damp","lambda","dt","pingpong","length","smoothstep","smootherstep","randInt","low","high","randFloat","randFloatSpread","range","seededRandom","s","degToRad","degrees","radToDeg","radians","isPowerOfTwo","ceilPowerOfTwo","floorPowerOfTwo","setQuaternionFromProperEuler","order","cos","sin","c2","s2","c13","s13","c1_3","s1_3","c3_1","s3_1","denormalize","normalize","MathUtils","Vector2","scalar","minVal","maxVal","denominator","theta","dx","dy","alpha","v1","v2","offset","attribute","center","angle","Matrix3","n11","n12","n13","n21","n22","n23","n31","n32","n33","xAxis","yAxis","zAxis","a11","a12","a13","a21","a22","a23","a31","a32","a33","b11","b12","b13","b21","b22","b23","b31","b32","b33","t11","t12","t13","det","detInv","tmp","matrix4","tx","ty","sx","sy","rotation","cx","cy","_m3","matrix","arrayNeedsUint32","TYPED_ARRAYS","getTypedArray","buffer","createElementNS","name","_cache","warnOnce","message","SRGBToLinear","LinearToSRGB","LINEAR_SRGB_TO_LINEAR_DISPLAY_P3","LINEAR_DISPLAY_P3_TO_LINEAR_SRGB","DisplayP3ToLinearSRGB","color","LinearSRGBToDisplayP3","TO_LINEAR","FROM_LINEAR","ColorManagement","legacyMode","colorSpace","sourceColorSpace","targetColorSpace","sourceToLinear","targetFromLinear","_canvas","ImageUtils","image","canvas","context","imageData","data","sourceId","Source","meta","isRootObject","output","url","serializeImage","textureId","Texture","mapping","wrapS","wrapT","magFilter","minFilter","format","anisotropy","source","uv","encoding","Vector4","m11","m12","m13","m21","m22","m23","m31","m32","m33","xx","yy","zz","xy","xz","yz","WebGLRenderTarget","width","height","options","depth","DataArrayTexture","WebGLArrayRenderTarget","Data3DTexture","WebGL3DRenderTarget","WebGLMultipleRenderTargets","count","texture","Quaternion","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","w0","x1","y1","z1","w1","dir","sqrSin","len","tDir","quaternion","euler","update","c1","c3","s1","s3","axis","halfAngle","trace","vFrom","vTo","step","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","u1","sqrt1u1","sqrtu1","u2","u3","callback","Vector3","_quaternion$4","qx","qy","qz","qw","ix","iy","iz","iw","camera","ax","ay","az","bx","by","bz","planeNormal","_vector$b","normal","dz","radius","phi","sinPhiRadius","sz","Box3","_vector$a","points","size","halfSize","object","precise","box","target","point","vector","_box$3","geometry","position","children","sphere","plane","triangle","_center","_extents","_v0$2","_v1$7","_v2$4","_f0","_f1","_f2","axes","satForAxes","_triangleNormal","_points","_testAxis","v0","extents","j","p0","p1","p2","_box$2","_v1$6","_v2$3","Sphere","optionalCenter","maxRadiusSq","radiusSum","deltaLengthSq","lengthSq","delta","_vector$9","_segCenter","_segDir","_diff","_edge1","_edge2","_normal$1","Ray","origin","direction","ray","directionDistance","optionalPointOnRay","optionalPointOnSegment","segExtent","a01","b0","s0","sqrDist","extDet","invDet","tca","radius2","thc","t0","t1","distToPoint","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","backfaceCulling","DdN","sign","DdQxE2","DdE1xQ","QdN","Matrix4","n14","n24","n34","n41","n42","n43","n44","scaleX","_v1$5","scaleY","scaleZ","_zero","_one","eye","up","_z","_x","_y","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","b44","t14","scaleXSq","scaleYSq","scaleZSq","yx","zx","zy","scale","x2","y2","z2","wx","wy","wz","_m1$2","invSX","invSY","invSZ","left","right","top","bottom","near","far","coordinateSystem","zInv","_matrix","_quaternion$3","Euler","newOrder","Layers","channel","layers","_object3DId","_v1$4","_q1","_m1$1","_target","_position$3","_scale$2","_quaternion$2","_xAxis","_yAxis","_zAxis","_addedEvent","_removedEvent","Object3D","onRotationChange","onQuaternionChange","distance","parent","result","childResult","force","child","updateParents","updateChildren","serialize","library","element","parameters","shapes","shape","uuids","animation","geometries","extractFromCache","materials","textures","images","skeletons","animations","nodes","cache","values","key","recursive","_v0$1","_v1$3","_v2$2","_v3$1","_vab","_vac","_vbc","_vap","_vbp","_vcp","warnedGetUV","Triangle","targetLengthSq","dot00","dot01","dot02","dot11","dot12","denom","invDenom","p3","uv1","uv2","uv3","v3","i0","i1","i2","d4","d5","d6","materialId","Material","newValue","currentValue","srcPlanes","dstPlanes","_colorKeywords","_hslA","_hslB","hue2rgb","Color","hex","style","handleAlpha","string","components","_color","hue","saturation","lightness","color1","color2","MeshBasicMaterial","_tables","_generateTables","floatView","uint32View","baseTable","shiftTable","mantissaTable","exponentTable","offsetTable","toHalfFloat","val","fromHalfFloat","DataUtils","_vector$8","_vector2$1","BufferAttribute","itemSize","normalized","index1","index2","Int8BufferAttribute","Uint8BufferAttribute","Uint8ClampedBufferAttribute","Int16BufferAttribute","Uint16BufferAttribute","Int32BufferAttribute","Uint32BufferAttribute","Float16BufferAttribute","Float32BufferAttribute","Float64BufferAttribute","_id$1","_m1","_obj","_offset","_box$1","_boxMorphTargets","_vector$7","BufferGeometry","start","materialIndex","normalMatrix","tangent","morphAttributesPosition","morphAttribute","morphTargetsRelative","attributes","indices","positions","normals","uvs","nVertices","tangents","tan1","tan2","vA","vB","vC","uvA","uvB","uvC","sdir","tdir","handleTriangle","groups","group","tmp2","n2","handleVertex","positionAttribute","normalAttribute","pA","pB","pC","nA","nB","nC","convertBufferAttribute","array2","geometry2","newAttribute","morphAttributes","morphArray","hasMorphAttributes","attributeArray","boundingSphere","boundingBox","_inverseMatrix$3","_ray$3","_sphere$5","_sphereHitAt","_vA$1","_vB$1","_vC$1","_tempA","_morphA","_uvA$1","_uvB$1","_uvC$1","_normalA","_normalB","_normalC","_intersectionPoint","_intersectionPointWorld","Mesh","material","keys","morphPosition","morphInfluences","influence","raycaster","intersects","matrixWorld","rayLocalSpace","intersection","drawRange","groupMaterial","end","checkGeometryIntersection","checkIntersection","intersect","face","BoxGeometry","widthSegments","heightSegments","depthSegments","scope","vertices","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","cloneUniforms","src","property","mergeUniforms","uniforms","merged","cloneUniformsGroups","getUnlitUniformColorSpace","renderer","UniformsUtils","default_vertex","default_fragment","ShaderMaterial","extensions","Camera","PerspectiveCamera","fov","aspect","focalLength","vExtentSlope","fullWidth","fullHeight","view","skew","CubeCamera","renderTarget","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","cameras","scene","currentRenderTarget","currentToneMapping","currentXrEnabled","generateMipmaps","CubeTexture","WebGLCubeRenderTarget","shader","mesh","currentMinFilter","stencil","_vector1","_vector2","_normalMatrix","Plane","constant","inverseNormalLength","line","startSign","endSign","optionalNormalMatrix","referencePoint","_sphere$4","_vector$6","Frustum","p4","p5","planes","frustum","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","sprite","negRadius","WebGLAnimation","isAnimating","animationLoop","requestId","onAnimationFrame","time","frame","WebGLAttributes","capabilities","isWebGL2","buffers","createBuffer","bufferType","usage","updateBuffer","updateRange","get","remove","cached","PlaneGeometry","width_half","height_half","segment_width","segment_height","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","alphatest_pars_fragment","aomap_fragment","aomap_pars_fragment","begin_vertex","beginnormal_vertex","bsdfs","iridescence_fragment","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_common_pars_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_fragment","lightmap_pars_fragment","lights_lambert_fragment","lights_lambert_pars_fragment","lights_pars_begin","envmap_physical_pars_fragment","lights_toon_fragment","lights_toon_pars_fragment","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","morphcolor_vertex","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normal_pars_fragment","normal_pars_vertex","normal_vertex","normalmap_pars_fragment","clearcoat_normal_fragment_begin","clearcoat_normal_fragment_maps","clearcoat_pars_fragment","iridescence_pars_fragment","output_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","transmission_fragment","transmission_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","worldpos_vertex","vertex$h","fragment$h","vertex$g","fragment$g","vertex$f","fragment$f","vertex$e","fragment$e","vertex$d","fragment$d","vertex$c","fragment$c","vertex$b","fragment$b","vertex$a","fragment$a","vertex$9","fragment$9","vertex$8","fragment$8","vertex$7","fragment$7","vertex$6","fragment$6","vertex$5","fragment$5","vertex$4","fragment$4","vertex$3","fragment$3","vertex$2","fragment$2","vertex$1","fragment$1","ShaderChunk","UniformsLib","ShaderLib","_rgb","WebGLBackground","cubemaps","cubeuvmaps","state","objects","premultipliedAlpha","clearColor","clearAlpha","planeMesh","boxMesh","currentBackground","currentBackgroundVersion","currentTonemapping","render","renderList","forceClear","background","setClear","WebGLBindingStates","maxVertexAttributes","extension","vaoAvailable","bindingStates","defaultState","createBindingState","currentState","forceUpdate","setup","program","updateBuffers","getBindingState","bindVertexArrayObject","needsUpdate","saveCache","wireframe","setupVertexAttributes","createVertexArrayObject","vao","deleteVertexArrayObject","programMap","stateMap","newAttributes","enabledAttributes","attributeDivisors","cachedAttributes","geometryAttributes","attributesNum","programAttributes","cachedAttribute","geometryAttribute","initAttributes","enableAttribute","enableAttributeAndDivisor","meshPerAttribute","disableUnusedAttributes","vertexAttribPointer","stride","integer","materialDefaultAttributeValues","programAttribute","bytesPerElement","dispose","reset","geometryId","programId","releaseStatesOfGeometry","releaseStatesOfProgram","resetDefaultState","WebGLBufferRenderer","info","mode","setMode","renderInstances","primcount","methodName","WebGLCapabilities","maxAnisotropy","getMaxAnisotropy","getMaxPrecision","precision","maxPrecision","drawBuffers","logarithmicDepthBuffer","maxTextures","maxVertexTextures","maxTextureSize","maxCubemapSize","maxAttributes","maxVertexUniforms","maxVaryings","maxFragmentUniforms","vertexTextures","floatFragmentTextures","floatVertexTextures","maxSamples","WebGLClipping","properties","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","uniform","enableLocalClipping","enabled","projectPlanes","useCache","clipIntersection","clipShadows","materialProperties","resetGlobalState","nGlobal","lGlobal","dstArray","skipTransform","nPlanes","flatSize","viewMatrix","i4","WebGLCubeMaps","mapTextureMapping","cubemap","onTextureDispose","OrthographicCamera","scaleW","scaleH","LOD_MIN","EXTRA_LOD_SIGMA","MAX_SAMPLES","_flatCamera","_clearColor","_oldTarget","PHI","INV_PHI","_axisDirections","PMREMGenerator","sigma","cubeUVRenderTarget","equirectangular","_getCubemapMaterial","_getEquirectMaterial","cubeSize","outputTarget","_setViewport","params","_createRenderTarget","_lodMax","_createPlanes","_getBlurShader","tmpMesh","cubeCamera","upSign","forwardSign","originalAutoClear","toneMapping","backgroundMaterial","backgroundBox","useSolidColor","col","isCubeTexture","autoClear","poleAxis","lodIn","lodOut","pingPongRenderTarget","targetIn","targetOut","sigmaRadians","blurMaterial","STANDARD_DEVIATIONS","blurMesh","blurUniforms","pixels","radiansPerPixel","sigmaPixels","samples","weights","sum","weight","outputSize","lodMax","lodPlanes","sizeLods","sigmas","lod","totalLods","sizeLod","texelSize","cubeFaces","positionSize","uvSize","faceIndexSize","faceIndex","coordinates","fill","_getCommonVertexShader","WebGLCubeUVMaps","cubeUVmaps","pmremGenerator","isEquirectMap","isCubeMap","isCubeTextureComplete","cubemapUV","WebGLExtensions","getExtension","WebGLGeometries","wireframeAttributes","onGeometryDispose","updateWireframeAttribute","geometryIndex","geometryPosition","version","previousAttribute","getWireframeAttribute","currentAttribute","WebGLIndexedBufferRenderer","setIndex","WebGLInfo","memory","instanceCount","numericalSort","absNumericalSort","WebGLMorphtargets","influencesList","morphTextures","morph","workInfluences","objectInfluences","morphTargetsCount","entry","disposeTexture","hasMorphPosition","hasMorphNormals","hasMorphColors","morphTargets","morphNormals","morphColors","vertexDataCount","vertexDataStride","morphTarget","morphNormal","morphColor","morphInfluencesSum","morphBaseInfluence","influences","WebGLObjects","updateMap","buffergeometry","onInstancedMeshDispose","instancedMesh","emptyTexture","emptyArrayTexture","empty3dTexture","emptyCubeTexture","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","flatten","nBlocks","blockSize","firstElem","arraysEqual","copyArray","allocTexUnits","setValueV1f","setValueV2f","setValueV3f","setValueV4f","setValueM2","elements","setValueM3","setValueM4","setValueV1i","setValueV2i","setValueV3i","setValueV4i","setValueV1ui","setValueV2ui","setValueV3ui","setValueV4ui","setValueT1","unit","setValueT3D1","setValueT6","setValueT2DArray1","getSingularSetter","setValueV1fArray","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueV1iArray","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV1uiArray","setValueV2uiArray","setValueV3uiArray","setValueV4uiArray","setValueT1Array","units","setValueT3DArray","setValueT6Array","setValueT2DArrayArray","getPureArraySetter","SingleUniform","activeInfo","addr","PureArrayUniform","StructuredUniform","seq","RePathPart","addUniform","container","uniformObject","parseUniform","path","pathLength","match","matchEnd","idIsIndex","subscript","next","WebGLUniforms","WebGLShader","programIdCount","handleSource","errorLine","lines","lines2","from","to","getEncodingComponents","getShaderErrors","status","errors","errorMatches","getTexelEncodingFunction","functionName","getToneMappingFunction","toneMappingName","generateExtensions","filterEmptyLine","generateDefines","defines","chunks","fetchAttributeLocations","locationSize","replaceLightNums","numSpotLightCoords","replaceClippingPlaneNums","includePattern","resolveIncludes","includeReplacer","include","unrollLoopPattern","unrollLoops","loopReplacer","snippet","generatePrecision","precisionstring","generateShadowMapTypeDefine","shadowMapTypeDefine","generateEnvMapTypeDefine","envMapTypeDefine","generateEnvMapModeDefine","envMapModeDefine","generateEnvMapBlendingDefine","envMapBlendingDefine","generateCubeUVSize","imageHeight","maxMip","texelHeight","WebGLProgram","cacheKey","vertexShader","fragmentShader","envMapCubeUVSize","customExtensions","customDefines","prefixVertex","prefixFragment","versionString","vertexGlsl","fragmentGlsl","glVertexShader","glFragmentShader","programLog","vertexLog","fragmentLog","runnable","haveDiagnostics","vertexErrors","fragmentErrors","cachedUniforms","_id","WebGLShaderCache","vertexShaderStage","fragmentShaderStage","materialShaders","shaderStage","set","code","stage","WebGLShaderStage","WebGLPrograms","clipping","_programLayers","_customShaders","programs","IS_WEBGL2","SUPPORTS_VERTEX_TEXTURES","shaderIDs","getChannel","getParameters","lights","shadows","fog","environment","envMap","envMapCubeUVHeight","shaderID","morphTextureStride","customVertexShaderID","customFragmentShaderID","IS_INSTANCEDMESH","HAS_MAP","HAS_MATCAP","HAS_ENVMAP","HAS_AOMAP","HAS_LIGHTMAP","HAS_BUMPMAP","HAS_NORMALMAP","HAS_DISPLACEMENTMAP","HAS_EMISSIVEMAP","HAS_METALNESSMAP","HAS_ROUGHNESSMAP","HAS_ANISOTROPY","HAS_CLEARCOAT","HAS_IRIDESCENCE","HAS_SHEEN","HAS_TRANSMISSION","HAS_ANISOTROPYMAP","HAS_CLEARCOATMAP","HAS_CLEARCOAT_NORMALMAP","HAS_CLEARCOAT_ROUGHNESSMAP","HAS_IRIDESCENCEMAP","HAS_IRIDESCENCE_THICKNESSMAP","HAS_SHEEN_COLORMAP","HAS_SHEEN_ROUGHNESSMAP","HAS_SPECULARMAP","HAS_SPECULAR_COLORMAP","HAS_SPECULAR_INTENSITYMAP","HAS_TRANSMISSIONMAP","HAS_THICKNESSMAP","HAS_GRADIENTMAP","HAS_ALPHAMAP","HAS_ALPHATEST","HAS_EXTENSIONS","HAS_ATTRIBUTE_UV1","HAS_ATTRIBUTE_UV2","HAS_ATTRIBUTE_UV3","getProgramCacheKey","getProgramCacheKeyParameters","getProgramCacheKeyBooleans","getUniforms","acquireProgram","preexistingProgram","releaseProgram","releaseShaderCache","WebGLProperties","map","painterSortStable","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","opaque","transmissive","transparent","init","getNextRenderItem","groupOrder","renderItem","push","unshift","sort","customOpaqueSort","customTransparentSort","finish","WebGLRenderLists","lists","renderCallDepth","listArray","list","UniformsCache","light","ShadowUniformsCache","nextVersion","shadowCastingAndTexturingLightsFirst","lightA","lightB","WebGLLights","shadowCache","vector3","matrix42","useLegacyLights","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","numDirectionalShadows","numPointShadows","numSpotShadows","numSpotMaps","numSpotShadowsWithMaps","scaleFactor","intensity","shadowMap","shadow","shadowUniforms","hash","setupView","WebGLRenderState","lightsArray","shadowsArray","pushLight","pushShadow","shadowLight","setupLights","setupLightsView","WebGLRenderStates","renderStates","renderStateArray","renderState","MeshDepthMaterial","MeshDistanceMaterial","vertex","fragment","WebGLShadowMap","_renderer","_objects","_capabilities","_frustum","_shadowMapSize","_viewportSize","_viewport","_depthMaterial","_distanceMaterial","_materialCache","_maxTextureSize","shadowSide","shadowMaterialVertical","shadowMaterialHorizontal","fullScreenTri","fullScreenMesh","_previousType","activeCubeFace","activeMipmapLevel","_state","toVSM","fromVSM","shadowFrameExtents","pars","viewportCount","vp","viewport","renderObject","VSMPass","getDepthMaterial","customMaterial","keyA","keyB","materialsForVariant","cachedMaterial","shadowCamera","depthMaterial","WebGLState","ColorBuffer","locked","currentColorMask","currentColorClear","colorMask","lock","DepthBuffer","currentDepthMask","currentDepthFunc","currentDepthClear","depthTest","enable","disable","depthMask","depthFunc","StencilBuffer","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","stencilMask","stencilFunc","stencilRef","stencilFail","stencilZFail","stencilZPass","colorBuffer","depthBuffer","stencilBuffer","uboBindings","uboProgramMap","enabledCapabilities","currentBoundFramebuffers","currentDrawbuffers","defaultDrawbuffers","currentProgram","currentBlendingEnabled","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","lineWidthAvailable","glVersion","currentTextureSlot","currentBoundTextures","scissorParam","viewportParam","currentScissor","currentViewport","createTexture","dimensions","emptyTextures","setFlipSided","setCullFace","setBlending","bindFramebuffer","framebuffer","useProgram","equationToGL","factorToGL","blending","blendEquation","blendSrc","blendDst","blendEquationAlpha","blendSrcAlpha","blendDstAlpha","setMaterial","frontFaceCW","flipSided","stencilWrite","setPolygonOffset","cullFace","setLineWidth","polygonOffset","factor","setScissorTest","scissorTest","activeTexture","webglSlot","bindTexture","webglType","webglTexture","boundTexture","unbindTexture","compressedTexImage2D","error","compressedTexImage3D","texSubImage2D","texSubImage3D","compressedTexSubImage2D","compressedTexSubImage3D","texStorage2D","texStorage3D","texImage2D","texImage3D","scissor","updateUBOMapping","uniformsGroup","blockIndex","uniformBlockBinding","WebGLTextures","_gl","utils","multisampledRTTExt","supportsInvalidateFramebuffer","_videoTextures","_sources","useOffscreenCanvas","createCanvas","resizeImage","needsPowerOfTwo","needsNewCanvas","maxSize","floor","isPowerOfTwo$1","textureNeedsPowerOfTwo","textureNeedsGenerateMipmaps","supportsMips","generateMipmap","getInternalFormat","internalFormatName","glFormat","glType","forceLinearTransfer","internalFormat","getMipLevels","filterFallback","deallocateTexture","onRenderTargetDispose","deallocateRenderTarget","textureProperties","webglTextures","deleteTexture","renderTargetProperties","attachmentProperties","textureUnits","resetTextureUnits","allocateTextureUnit","textureUnit","getTextureCacheKey","setTexture2D","slot","updateVideoTexture","uploadTexture","setTexture2DArray","setTexture3D","setTextureCube","uploadCubeTexture","wrappingToGL","filterToGL","compareToGL","setTextureParameters","textureType","initTexture","forceUpload","textureCacheKey","sourceProperties","verifyColorSpace","glInternalFormat","mipmap","mipmaps","useTexStorage","allocateMemory","levels","isCompressed","isDataTexture","cubeImage","mipmapImage","setupFrameBufferTexture","attachment","textureTarget","useMultisampledRTT","getRenderTargetSamples","setupRenderBufferStorage","renderbuffer","isMultisample","depthTexture","setupDepthTexture","webglDepthTexture","setupDepthRenderbuffer","isCube","rebindTextures","colorTexture","setupRenderTarget","isMultipleRenderTargets","glTextureType","updateRenderTargetMipmap","updateMultisampleRenderTarget","mask","invalidationArray","depthStyle","ignoreDepthValues","WebGLUtils","convert","ArrayCamera","Group","_moveEvent","WebXRController","inputSource","hand","inputjoint","referenceSpace","inputPose","gripPose","handPose","targetRay","grip","jointPose","joint","indexTip","thumbTip","distanceToPinch","threshold","DepthTexture","WebXRManager","session","framebufferScaleFactor","referenceSpaceType","foveation","customReferenceSpace","pose","glBinding","glProjLayer","glBaseLayer","xrFrame","initialRenderTarget","newRenderTarget","controllers","controllerInputSources","userCamera","cameraL","cameraR","cameraXR","_currentDepthNear","_currentDepthFar","controller","onSessionEvent","controllerIndex","onSessionEnd","onInputSourcesChange","space","layerInit","depthFormat","depthType","glDepthFormat","projectionlayerInit","cameraLPos","cameraRPos","setProjectionFromUnion","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","xOffset","near2","far2","left2","right2","top2","bottom2","updateCamera","updateUserCamera","onAnimationFrameCallback","views","cameraXRNeedsUpdate","glSubImage","WebGLMaterials","refreshTransformUniform","refreshFogUniforms","refreshMaterialUniforms","pixelRatio","transmissionRenderTarget","refreshUniformsCommon","refreshUniformsToon","refreshUniformsPhong","refreshUniformsStandard","refreshUniformsPhysical","refreshUniformsMatcap","refreshUniformsDistance","refreshUniformsLine","refreshUniformsDash","refreshUniformsPoints","refreshUniformsSprites","WebGLUniformsGroups","updateList","allocatedBindingPoints","maxBindingPoints","bind","webglProgram","prepareUniformsGroup","onUniformsGroupsDispose","updateBufferData","bindingPointIndex","allocateBindingPointIndex","hasUniformChanged","arrayOffset","getUniformSize","tempValues","cachedObjects","cachedObject","chunkSize","chunkOffset","infos","remainingSizeInChunk","createCanvasElement","WebGLRenderer","antialias","preserveDrawingBuffer","powerPreference","failIfMajorPerformanceCaveat","_alpha","uintClearColor","intClearColor","currentRenderList","currentRenderState","renderListStack","renderStateStack","_this","_isContextLost","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentMaterialId","_currentCamera","_currentViewport","_currentScissor","_currentScissorTest","_currentClearColor","_currentClearAlpha","_width","_height","_pixelRatio","_opaqueSort","_transparentSort","_scissor","_scissorTest","_clippingEnabled","_localClippingEnabled","_transmissionRenderTarget","_projScreenMatrix","_vector3","_emptyScene","getTargetPixelRatio","getContext","contextNames","contextAttributes","contextName","onContextLost","onContextRestore","onContextCreationError","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","uniformsGroups","initGLContext","xr","updateStyle","boolean","method","bits","isIntegerFormat","targetFormat","targetType","isUnsignedType","__webglFramebuffer","onXRSessionStart","onXRSessionEnd","infoAutoReset","shadowMapEnabled","shadowMapAutoUpdate","shadowMapNeedsUpdate","shadowMapType","onMaterialDispose","deallocateMaterial","releaseMaterialProgramReferences","setProgram","rangeFactor","drawStart","drawEnd","drawCount","lineWidth","maxInstanceCount","prepare","getProgram","material2","projectObject","camera2","renderScene","sortObjects","opaqueObjects","transmissiveObjects","transparentObjects","renderTransmissionPass","renderObjects","renderTargetNeedsUpdate","currentSide","overrideMaterial","lightsStateVersion","programCacheKey","updateCommonMaterialProperties","materialNeedsLights","progUniforms","uniformsList","vertexAlphas","vertexTangents","needsProgramChange","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","uCamPos","skeleton","markUniformsLightsNeedsUpdate","defaultFramebuffer","useDefaultFramebuffer","isRenderTarget3D","layer","activeCubeFaceIndex","textureFormat","halfFloatSupportedByExt","level","levelScale","srcTexture","dstTexture","sourceBox","glTarget","unpackRowLen","unpackImageHeight","unpackSkipPixels","unpackSkipRows","unpackSkipImages","WebGL1Renderer","FogExp2","density","Fog","Scene","InterleavedBuffer","_vector$5","InterleavedBufferAttribute","interleavedBuffer","SpriteMaterial","_geometry","_intersectPoint","_worldScale","_mvPosition","_alignedPosition","_rotatedPosition","_viewWorldMatrix","_vA","_vB","_vC","_uvA","_uvB","_uvC","Sprite","float32Array","transformVertex","vertexPosition","mvPosition","_v1$2","_v2$1","LOD","hysteresis","levelDistance","_basePosition","_skinIndex","_skinWeight","_matrix4","_vertex","_sphere$3","_inverseMatrix$2","_ray$2","SkinnedMesh","bindMatrix","skinWeight","boneIndex","Bone","DataTexture","_offsetMatrix","_identityMatrix","Skeleton","bones","boneInverses","inverse","bone","boneMatrices","boneTexture","json","uuid","boneInverse","InstancedBufferAttribute","_instanceLocalMatrix","_instanceWorldMatrix","_instanceIntersects","_box3","_identity","_mesh","_sphere$2","InstancedMesh","raycastTimes","instanceId","LineBasicMaterial","_start$1","_end$1","_inverseMatrix$1","_ray$1","_sphere$1","Line","lineDistances","localThreshold","localThresholdSq","vStart","vEnd","interSegment","interRay","_start","_end","LineSegments","LineLoop","PointsMaterial","_inverseMatrix","_ray","_sphere","_position$2","Points","testPoint","rayPointDistanceSq","intersectPoint","VideoTexture","video","updateVideo","FramebufferTexture","CompressedTexture","CompressedArrayTexture","CanvasTexture","Curve","optionalTarget","divisions","lengths","current","last","arcLengths","targetArcLength","comparison","lengthBefore","segmentLength","segmentFraction","t2","pt1","pt2","segments","closed","binormals","vec","mat","tz","EllipseCurve","aX","aY","xRadius","yRadius","aStartAngle","aEndAngle","aClockwise","aRotation","twoPi","deltaAngle","samePoints","ArcCurve","aRadius","CubicPoly","c0","x3","tension","dt0","dt1","dt2","t3","px","py","pz","CatmullRomCurve3","curveType","intPoint","pow","CatmullRom","QuadraticBezierP0","QuadraticBezierP1","QuadraticBezierP2","QuadraticBezier","CubicBezierP0","CubicBezierP1","CubicBezierP2","CubicBezierP3","CubicBezier","CubicBezierCurve","CubicBezierCurve3","LineCurve","LineCurve3","QuadraticBezierCurve","QuadraticBezierCurve3","SplineCurve","Curves","CurvePath","curve","startPoint","endPoint","curveLengths","diff","lens","sums","curves","resolution","pts","Path","aCPx","aCPy","aCP1x","aCP1y","aCP2x","aCP2y","npts","firstPoint","lastPoint","LatheGeometry","phiStart","phiLength","initNormals","inverseSegments","curNormal","prevNormal","base","CapsuleGeometry","capSegments","radialSegments","CircleGeometry","thetaStart","thetaLength","segment","CylinderGeometry","radiusTop","radiusBottom","openEnded","indexArray","halfHeight","generateTorso","generateCap","slope","indexRow","sinTheta","cosTheta","centerIndexStart","centerIndexEnd","ConeGeometry","PolyhedronGeometry","detail","vertexBuffer","uvBuffer","subdivide","applyRadius","generateUVs","getVertexByIndex","subdivideFace","cols","rows","pushVertex","azimuth","inclination","correctUVs","correctSeam","centroid","azi","correctUV","DodecahedronGeometry","_v0","_v1$1","_normal","_triangle","EdgesGeometry","thresholdAngle","thresholdDot","indexAttr","positionAttr","indexCount","indexArr","vertKeys","hashes","edgeData","jNext","vecHash0","vecHash1","reverseHash","index0","Shape","holesPts","hole","Earcut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","triangles","minX","minY","maxX","maxY","invSize","eliminateHoles","earcutLinked","clockwise","signedArea","insertNode","equals","removeNode","filterPoints","again","area","ear","pass","indexCurve","stop","prev","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minZ","zOrder","maxZ","locallyInside","isValidDiagonal","splitPolygon","queue","getLeftmost","compareX","eliminateHole","bridge","findHoleBridge","bridgeReverse","hx","hy","mx","my","tanMin","tan","sectorContainsSector","sortLinked","tail","numMerges","pSize","qSize","inSize","leftmost","intersectsPolygon","middleInside","q1","q2","o1","o2","o3","o4","onSegment","num","inside","Node","an","bp","ShapeUtils","contour","holes","faces","removeDupEndPts","addContour","holeIndex","ExtrudeGeometry","verticesArray","uvArray","addShape","placeholder","curveSegments","steps","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","extrudePath","uvgen","WorldUVGenerator","extrudePts","extrudeByPath","splineTube","binormal","position2","shapePoints","ahole","scalePt2","pt","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","ptNextShift_x","ptNextShift_y","v_trans_lensq","direction_eq","contourMovements","holesMovements","oneHoleMovements","verticesMovements","bs","vert","buildLidFaces","buildSideFaces","f3","layeroffset","sidewalls","slen1","slen2","f4","addVertex","nextIndex","addUV","vector2","toJSON$1","geometryShapes","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","IcosahedronGeometry","OctahedronGeometry","RingGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","radiusStep","thetaSegmentLevel","ShapeGeometry","indexOffset","shapeVertices","shapeHoles","shapeHole","toJSON","SphereGeometry","thetaEnd","grid","verticesRow","uOffset","TetrahedronGeometry","TorusGeometry","tube","tubularSegments","arc","TorusKnotGeometry","P1","P2","calculatePositionOnCurve","cu","su","quOverP","cs","TubeGeometry","frames","generateBufferData","generateSegment","generateIndices","WireframeGeometry","edges","o","isUniqueEdge","hash1","hash2","Geometries","ShadowMaterial","RawShaderMaterial","MeshStandardMaterial","MeshPhysicalMaterial","reflectivity","MeshPhongMaterial","MeshToonMaterial","MeshNormalMaterial","MeshLambertMaterial","MeshMatcapMaterial","LineDashedMaterial","arraySlice","isTypedArray","convertArray","forceClone","getKeyframeOrder","times","compareTime","sortedArray","nValues","srcOffset","flattenJSON","jsonKeys","valuePropertyName","subclip","sourceClip","startFrame","endFrame","fps","clip","tracks","track","valueSize","minStartTime","makeClipAdditive","targetClip","referenceFrame","referenceClip","numTracks","referenceTime","referenceTrack","referenceTrackType","targetTrack","referenceOffset","referenceValueSize","targetOffset","targetValueSize","lastIndex","referenceValue","startIndex","endIndex","interpolant","numTimes","valueStart","valueEnd","AnimationUtils","Interpolant","parameterPositions","sampleValues","sampleSize","resultBuffer","pp","validate_interval","seek","linear_scan","forward_scan","giveUpAt","t1global","mid","CubicInterpolant","iPrev","iNext","tPrev","tNext","halfDt","o0","oP","oN","wP","wN","ppp","sP","sN","LinearInterpolant","offset1","offset0","weight1","weight0","DiscreteInterpolant","KeyframeTrack","interpolation","trackType","factoryMethod","timeOffset","timeScale","startTime","endTime","nKeys","valid","prevTime","currTime","smoothInterpolation","writeIndex","keep","timeNext","offsetP","offsetN","readOffset","writeOffset","TypedKeyframeTrack","BooleanKeyframeTrack","ColorKeyframeTrack","NumberKeyframeTrack","QuaternionLinearInterpolant","QuaternionKeyframeTrack","StringKeyframeTrack","VectorKeyframeTrack","AnimationClip","duration","blendMode","jsonTracks","frameTime","parseKeyframeTrack","clipTracks","morphTargetSequence","noLoop","numMorphTargets","objectOrClipArray","clipArray","animationToMorphTargets","pattern","parts","animationMorphTargets","clips","addNonemptyTrack","trackName","animationKeys","propertyName","destTracks","clipName","hierarchyTracks","morphTargetNames","morphTargetName","animationKey","boneName","getTrackTypeForValueTypeName","typeName","Cache","file","LoadingManager","onLoad","onProgress","onError","isLoading","itemsLoaded","itemsTotal","urlModifier","handlers","transform","regex","loader","DefaultLoadingManager","Loader","manager","resolve","reject","crossOrigin","resourcePath","requestHeader","loading","HttpError","response","FileLoader","req","mimeType","responseType","callbacks","reader","contentLength","total","lengthComputable","loaded","stream","readData","done","text","exec","label","decoder","AnimationLoader","CompressedTextureLoader","loadTexture","texDatas","ImageLoader","onImageLoad","removeEventListeners","onImageError","CubeTextureLoader","urls","DataTextureLoader","texData","TextureLoader","Light","HemisphereLight","skyColor","groundColor","_projScreenMatrix$1","_lightPositionWorld$1","_lookTarget$1","LightShadow","shadowMatrix","viewportIndex","SpotLightShadow","SpotLight","penumbra","decay","power","_lightPositionWorld","_lookTarget","PointLightShadow","PointLight","DirectionalLightShadow","DirectionalLight","AmbientLight","RectAreaLight","SphericalHarmonics3","coefficients","coeff","shBasis","LightProbe","MaterialLoader","getTexture","normalScale","materialLib","LoaderUtils","InstancedBufferGeometry","BufferGeometryLoader","interleavedBufferMap","arrayBufferMap","getInterleavedBuffer","getArrayBuffer","arrayBuffer","typedArray","bufferAttribute","bufferAttributeConstr","ObjectLoader","metadata","hasImages","bufferGeometryLoader","loadImage","deserializeImage","imageArray","currentUrl","deserializedImage","parseConstant","TEXTURE_MAPPING","TEXTURE_WRAPPING","TEXTURE_FILTER","getGeometry","getMaterial","instanceMatrix","instanceColor","objectAnimations","ImageBitmapLoader","fetchOptions","res","blob","imageBitmap","_context","AudioContext","AudioLoader","bufferCopy","audioBuffer","handleError","HemisphereLightProbe","sky","ground","AmbientLightProbe","_eyeRight","_eyeLeft","_projectionMatrix","StereoCamera","eyeSepHalf","eyeSepOnProjection","ymax","xmin","xmax","Clock","autoStart","now","newTime","_position$1","_quaternion$1","_scale$1","_orientation$1","AudioListener","Audio","audioNode","mediaElement","mediaStream","delay","filter","_position","_quaternion","_scale","_orientation","PositionalAudio","coneInnerAngle","coneOuterAngle","coneOuterGain","panner","AudioAnalyser","audio","fftSize","PropertyMixer","binding","mixFunction","mixFunctionAdditive","setIdentity","accuIndex","currentWeight","mix","weightAdditive","originalValueOffset","targetIndex","workOffset","_RESERVED_CHARS_RE","_reservedRe","_wordChar","_wordCharOrDot","_directoryRe","_nodeRe","_objectRe","_propertyRe","_trackRe","_supportedObjectNames","Composite","targetGroup","optionalParsedPath","parsedPath","PropertyBinding","firstValidIndex","bindings","rootNode","root","matches","results","lastDot","objectName","nodeName","searchNodeSubtree","childNode","subTreeNode","dest","targetArray","sourceArray","targetObject","propertyIndex","objectIndex","nodeProperty","versioning","bindingType","AnimationObjectGroup","indicesByUUID","paths","parsedPaths","nBindings","knownObject","nObjects","nCachedObjects","firstActiveIndex","lastCachedObject","bindingsForPath","lastCached","lastCachedIndex","firstActiveObject","firstActive","lastObject","indicesByPath","lastBindingsIndex","lastBindings","lastBindingsPath","AnimationAction","mixer","localRoot","nTracks","interpolants","interpolantSettings","repetitions","fadeOutAction","warp","fadeInDuration","fadeOutDuration","startEndRatio","endStartRatio","fadeInAction","weightInterpolant","action","startTimeScale","endTimeScale","timeScaleInterpolant","deltaTime","timeDirection","timeRunning","clipTime","propertyMixers","interpolantValue","loop","loopCount","pingPong","handle_stop","loopDelta","pending","atStart","atEnd","settings","weightNow","weightThen","_controlInterpolantsResultBuffer","AnimationMixer","prototypeAction","rootUuid","bindingsByRoot","bindingsByName","clipUuid","actionsForClip","actions","actionsByClip","knownActions","lastInactiveAction","cacheIndex","knownActionsForClip","lastKnownAction","byClipCacheIndex","actionByRoot","prevIndex","lastActiveIndex","firstInactiveAction","firstInactiveIndex","lastActiveAction","bindingByName","propBinding","lastInactiveBinding","firstInactiveBinding","lastActiveBinding","lastActiveInterpolant","optionalRoot","clipObject","existingAction","newAction","nActions","timeInSeconds","actionsToRemove","Uniform","UniformsGroup","uniformsSource","InstancedInterleavedBuffer","GLBufferAttribute","elementSize","Raycaster","coords","intersectObject","ascSort","Spherical","other","Cylindrical","_vector$4","Box2","_startP","_startEnd","Line3","clampToLine","startEnd2","_vector$3","SpotLightHelper","coneLength","coneWidth","_vector$2","_boneMatrix","_matrixWorldInv","SkeletonHelper","getBoneList","colors","boneList","PointLightHelper","sphereSize","_vector$1","_color1","_color2","HemisphereLightHelper","GridHelper","PolarGridHelper","sectors","rings","_v1","_v2","_v3","DirectionalLightHelper","_vector","_camera","CameraHelper","pointMap","addLine","addPoint","colorFrustum","colorCone","colorUp","colorTarget","colorCross","cone","cross","colorAttribute","setPoint","_box","BoxHelper","Box3Helper","PlaneHelper","positions2","_axis","_lineGeometry","_coneGeometry","ArrowHelper","headLength","headWidth","AxesHelper","xAxisColor","yAxisColor","zAxisColor","ShapePath","isCCW","toShapesNoHoles","inSubpaths","tmpPath","tmpShape","isPointInsidePolygon","inPolygon","polyLen","edgeLowPt","edgeHighPt","edgeDx","edgeDy","perpEdge","isClockWise","subPaths","solid","holesFirst","betterShapeHoles","newShapes","newShapeHoles","mainIdx","tmpPoints","ambiguous","toChange","sIdx","sLen","sho","hIdx","ho","hole_unassigned","s2Idx","tmpHoles","BoxBufferGeometry","CapsuleBufferGeometry","CircleBufferGeometry","ConeBufferGeometry","CylinderBufferGeometry","DodecahedronBufferGeometry","ExtrudeBufferGeometry","IcosahedronBufferGeometry","LatheBufferGeometry","OctahedronBufferGeometry","PlaneBufferGeometry","PolyhedronBufferGeometry","RingBufferGeometry","ShapeBufferGeometry","SphereBufferGeometry","TetrahedronBufferGeometry","TorusBufferGeometry","TorusKnotBufferGeometry","TubeBufferGeometry","reactReconcilerConstants_production_min","constantsModule","createStore","createState","setState","partial","replace","nextState","previousState","getState","subscribeWithSelector","selector","equalityFn","currentSlice","listenerToAdd","nextSlice","previousSlice","api","isSSR","useIsomorphicLayoutEffect","useEffect","useLayoutEffect","create","useStore","useReducer","stateRef","useRef","selectorRef","equalityFnRef","erroredRef","currentSliceRef","newStateSlice","hasNewStateSlice","stateBeforeSubscriptionRef","nextStateSlice","unsubscribe","sliceToReturn","useDebugValue","items","reactReconciler_production_min","$$$hostConfig","reactReconcilerModule","isPromise","promise","globalCache","shallowEqualArrays","arrA","arrB","equal","query","fn","preload","config","suspend","clear","catalogue","extend","createRenderer","_roots","_getEventPriority","createInstance","args","attach","props","instance","THREE.BufferGeometry","THREE.Material","applyProps$1","appendChild","parentInstance","added","_child$__r3f","_parentInstance$__r3f","updateInstance","invalidateInstance","insertBefore","beforeChild","_child$__r3f2","_parentInstance$__r3f2","restSiblings","sibling","removeRecursive","removeChild","_parentInstance$__r3f3","_child$__r3f3","_child$__r3f5","detach","_child$__r3f4","removeInteractivity","isPrimitive","shouldDispose","_child$__r3f6","unstable_scheduleCallback","unstable_IdlePriority","switchInstance","newProps","fiber","_instance$__r3f","newInstance","handleTextInstance","Reconciler","parentHostContext","_instance$__r3f2","_type","oldProps","_instance$__r3f3","argsNew","cN","restNew","argsOld","cO","restOld","diffProps","reconstruct","_oldProps","_props","_int","_instance$__r3f4","localState","_instance$__r3f5","_instance$__r3f6","DefaultEventPriority","is","_window$document","_window$navigator","hasColorSpace","getColorManagement","_ColorManagement","isOrthographicCamera","def","isRef","obj","React.useLayoutEffect","React.useEffect","useMutableCallback","ref","React.useRef","Block","ErrorBoundary","React.Component","DEFAULT","DEFAULTS","isDiffSet","calculateDpr","dpr","_window$devicePixelRa","getRootState","_r3f","arrays","strict","isObj","isArr","buildGraph","entries","acc","INDEX_REGEX","previous","kN","rN","cP","kP","rP","changes","previousKeys","prop","memoized","_root$getState","rootState","prevHandlers","isEvent","currentInstance","targetProp","reverseEntries","ctor","THREE.Layers","isColor","THREE.Color","THREE.Texture","THREE.RGBAFormat","THREE.UnsignedByteType","_instance$__r3f5$root","makeId","getEventPriority","_globalScope$event","globalScope","DiscreteEventPriority","ContinuousEventPriority","releaseInternalPointerCapture","capturedMap","captures","pointerId","captureData","store","internal","createEvents","calculateDistance","filterPointerEvents","duplicates","intersections","eventsObjects","handleRaycast","_state$previousRoot","hits","aState","bState","item","hit","eventObject","_r3f2","handleIntersects","pointer","unprojectedPoint","THREE.Vector3","hasPointerCapture","_internal$capturedMap","_internal$capturedMap2","setPointerCapture","releasePointerCapture","extractEventProps","raycastEvent","capturesForPointer","higher","cancelPointer","hoveredObj","pointerMissed","handlePointer","onPointerMissed","isPointerMove","isClickEvent","onIntersect","hoveredItem","handler","privateKeys","isRenderer","React.createContext","invalidate","advance","defaultTarget","tempTarget","getCurrentViewport","performanceTimeout","setPerformanceCurrent","THREE.Vector2","timestamp","runGlobalEffects","THREE.Clock","events","resolved","frameloop","clock","React.createRef","priority","oldSize","oldDpr","oldCamera","_size$updateStyle","createSubs","subs","sub","globalEffects","globalAfterEffects","globalTailEffects","addEffect","addAfterEffect","addTail","run","effects","flushGlobalEffects","subscribers","subscription","render$1","createLoop","roots","running","repeat","_state$gl$xr","_state$gl$xr2","useInstanceHandle","React.useContext","useThree","useFrame","renderPriority","subscribe","memoizedLoaders","loadingFn","Proto","input","useLoader","reconciler","applyProps","shallowLoose","createRendererInstance","customRenderer","THREE.WebGLRenderer","computeInitialSize","defaultSize","prevRoot","prevFiber","prevStore","logRecoverableError","ConcurrentRoot","onCreated","configured","lastCamera","glConfig","propsSize","sceneOptions","onCreatedCallback","linear","flat","legacy","orthographic","performance","raycastOptions","cameraOptions","THREE.Raycaster","isCamera","THREE.Camera","THREE.OrthographicCamera","THREE.PerspectiveCamera","THREE.Scene","_gl$xr","handleXRFrame","handleSessionChange","oldEnabled","oldType","THREE.PCFSoftShadowMap","_types$shadows","types","THREE.BasicShadowMap","THREE.PCFShadowMap","THREE.VSMShadowMap","THREE.NoToneMapping","THREE.ACESFilmicToneMapping","React.createElement","Provider","unmountComponentAtNode","rootElement","_state$gl","_state$gl$renderLists","_state$gl2","_state$gl3","createPortal","Portal","rest","previousRoot","React.useState","inject","React.useCallback","injectState","usePortalStore","unsub","React.Fragment","React.version","_extends","debounce","func","wait","immediate","timeout","later","debounced","callNow","debounce_1","useMeasure","_temp","scroll","polyfill","offsetSize","ResizeObserver","bounds","useState","scrollDebounce","resizeDebounce","mounted","forceRefresh","resizeChange","scrollChange","useMemo","areBoundsEqual","createDebounce","removeListeners","addListeners","scrollContainer","node","findScrollContainers","useOnWindowScroll","useOnWindowResize","onWindowResize","onScroll","overflow","overflowX","overflowY","__defProp","__defProps","__getOwnPropDescs","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","__spreadProps","traverseFiber","ascending","wrapContext","FiberContext","FiberProvider","ReactCurrentOwner","ReactCurrentDispatcher","React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","useFiber","React.useId","React.useMemo","maybeFiber","fiber2","useContextMap","_a","_b","contextMap","useContextBridge","Prev","DOM_EVENTS","createPointerEvents","_internal$lastEvent","_events$handlers","eventName","passive","_events$handlers2","CanvasImpl","React.forwardRef","fallback","resize","eventSource","eventPrefix","forwardedRef","THREE","Bridge","containerRef","containerRect","canvasRef","divRef","React.useImperativeHandle","handlePointerMissed","block","setBlock","setError","React.Suspense","pointerEvents","Canvas","createStoreImpl","useSyncExternalStoreShim_production_min","shimModule","withSelector_production_min","withSelectorModule","useSyncExternalStoreWithSelector","useSyncExternalStoreExports","slice","createImpl","createStore__default","useBoundStore","shallow","objA","objB","keysA","usePerfImpl","getReport","accumulated","maxMemory","totalFrames","log","glAverage","logAverage","usePerf","sel","getPerf","setPerf","overLimitFps","average","arr","GLPerf","goal","elapsed","gpu","frameCount","fpsFixed","cpuMeasure","timespan","hz","memS","cpuS","gpuS","ext","available","disjoint","ns","ms","_active","nameId","countGeoDrawCalls","_pkey","meshes","drawCounts2","dataCount","rangeStart","rangeCount","countInstanceRatio","mostDrawCalls","has","prefix","Events","EE","once","addListener","emitter","evt","clearEvent","EventEmitter","names","a3","a4","a5","module","eventEmitter","onEvent","offEvent","emitEvent","payload","useEvent","deps","handlerRef","handler2","updateMatrixWorldTemp","THREE.Object3D","updateWorldMatrixTemp","updateMatrixTemp","maxGl","maxLog","matriceWorldCount","matriceCount","isUUID","addMuiPerfID","currentObjectWithMaterials","getMUIIndex","muid","PerfHeadless","overClock","logsPerSecond","chart","deepAnalyze","matrixUpdate","PerfLib","PerfLib2","chart2","logger","glRender","ctx","glRenderer","glVendor","rendererInfo","callbacksAfter","effectSub","afterEffectSub","THREE.Mesh","THREE.Points","cacheKeySplited","muiPerfTracker","$","PerfS","styled","PerfSmallI","PerfI","PerfB","PerfIContainer","ProgramHeader","Graph","Graphpc","Toggle","ToggleVisible","ProgramGeo","ProgramTitle","ContainerScroll","ProgramsContainer","ProgramsULHeader","ProgramsUL","ProgramConsole","ToggleContainer","ProgramsGeoLi","_objectWithoutPropertiesLoose","excluded","sourceKeys","_excluded$1","ActivityLogIcon","forwardRef","_ref","_ref$color","createElement","_excluded$o","BarChartIcon","_excluded$H","ButtonIcon","_excluded$1w","CubeIcon","_excluded$1H","DotIcon","_excluded$1W","DropdownMenuIcon","_excluded$25","EyeNoneIcon","_excluded$26","EyeOpenIcon","_excluded$2C","ImageIcon","_excluded$2H","LapTimerIcon","_excluded$2J","LayersIcon","_excluded$2Q","LightningBoltIcon","_excluded$34","MarginIcon","_excluded$37","MinusIcon","_excluded$3m","PauseIcon","_excluded$3H","RocketIcon","_excluded$3L","RulerHorizontalIcon","_excluded$4q","TextAlignJustifyIcon","_excluded$4H","TriangleDownIcon","_excluded$4K","TriangleUpIcon","_excluded$4R","VercelLogoIcon","mergeRefs","refs","CharsetEncoder","uint8Array","str","DataViewEx","littleEndian","isUnsigned","DataCreationHelper","r1","r2","tmp1","__publicField","webGL2Available","isWebGL2Available","_a2","toTrianglesDrawMode","drawMode","numberOfTriangles","newIndices","newGeometry","SkyShader","retarget","pos","quat","bindBoneMatrix","relativeMatrix","globalMatrix","sourceBones","getBones","bindBones","boneTo","bonesPosition","getBoneByName","wBindMatrix","retargetClip","getHelperFromSkeleton","numFrames","convertedTracks","boneDatas","positionOffset","boneData","clone","sourceLookup","cloneLookup","clone2","parallelTraverse","sourceNode","clonedNode","clonedMesh","sourceMesh","SkeletonUtils","_plane","TILT_LIMIT","moduloWrapAround","capacity","OrbitControls$1","domElement","spherical","currentPhi","phiDist","sphericalDelta","currentTheta","thetaDist","domElement2","onKeyDown","changeEvent","STATE2","quatInverse","lastPosition","lastQuaternion","twoPI","rotateLeft","getAutoRotationAngle","panOffset","performCursorZoom","clampDistance","zoomChanged","newRadius","prevRadius","radiusDelta","dollyDirection","mouseBefore","mouse","mouseAfter","EPS2","onContextMenu","onPointerDown","onPointerCancel","onMouseWheel","_b2","_c","_d","_e","_f","onPointerMove","onPointerUp","startEvent","endEvent","rotateStart","rotateEnd","rotateDelta","panStart","panEnd","panDelta","dollyStart","dollyEnd","dollyDelta","pointers","pointerPositions","getZoomScale","rotateUp","panLeft","objectMatrix","panUp","pan","deltaX","deltaY","targetDistance","dollyOut","dollyScale","dollyIn","updateMouseParameters","rect","dist","handleMouseDownRotate","handleMouseDownDolly","handleMouseDownPan","handleMouseMoveRotate","handleMouseMoveDolly","handleMouseMovePan","handleMouseWheel","handleKeyDown","handleTouchStartRotate","handleTouchStartPan","handleTouchStartDolly","handleTouchStartDollyPan","handleTouchStartDollyRotate","handleTouchMoveRotate","getSecondPointerPosition","handleTouchMovePan","handleTouchMoveDolly","handleTouchMoveDollyPan","handleTouchMoveDollyRotate","addPointer","onTouchStart","onMouseDown","onTouchMove","onMouseMove","removePointer","mouseAction","trackPointer","GLTFLoader","parser","GLTFMaterialsClearcoatExtension2","GLTFTextureBasisUExtension","GLTFTextureWebPExtension","GLTFTextureAVIFExtension","GLTFMaterialsSheenExtension2","GLTFMaterialsTransmissionExtension2","GLTFMaterialsVolumeExtension2","GLTFMaterialsIorExtension2","GLTFMaterialsEmissiveStrengthExtension2","GLTFMaterialsSpecularExtension2","GLTFMaterialsIridescenceExtension2","GLTFMaterialsAnisotropyExtension2","GLTFLightsExtension","GLTFMeshoptCompression","GLTFMeshGpuInstancing","_onError","gltf","dracoLoader","ktx2Loader","meshoptDecoder","plugins","BINARY_EXTENSION_HEADER_MAGIC","EXTENSIONS","GLTFBinaryExtension","GLTFParser","plugin","extensionName","extensionsRequired","GLTFMaterialsUnlitExtension2","GLTFDracoMeshCompressionExtension","GLTFTextureTransformExtension","GLTFMeshQuantizationExtension","GLTFRegistry","nodeDefs","nodeIndex","nodeLength","nodeDef","lightIndex","dependency","lightDef","lightNode","assignExtrasToUserData","self2","materialParams","materialDef","metallicRoughness","emissiveStrength","colorArray","textureIndex","textureDef","isSupported","bufferView","extensionDef","byteOffset","byteLength","res2","meshDef","primitive","WEBGL_CONSTANTS","attributesDef","accessor","nodeObject","instancedMeshes","attributeName","BINARY_EXTENSION_HEADER_LENGTH","BINARY_EXTENSION_CHUNK_TYPES","headerView","chunkContentsLength","chunkView","chunkIndex","chunkLength","chunkType","contentArray","bufferViewIndex","gltfAttributeMap","threeAttributeMap","attributeNormalizedMap","attributeTypeMap","threeAttributeName","ATTRIBUTES","accessorDef","componentType","WEBGL_COMPONENT_TYPES","GLTFCubicSplineInterpolant","stride2","stride3","m0","m1","_q","GLTFCubicSplineQuaternionInterpolant","WEBGL_FILTERS","WEBGL_WRAPPINGS","WEBGL_TYPE_SIZES","PATH_PROPERTIES","INTERPOLATION","ALPHA_MODES","createDefaultMaterial","addUnknownExtensionsToUserData","knownExtensions","objectDef","gltfDef","addMorphTargets","targets","hasMorphNormal","hasMorphColor","pendingPositionAccessors","pendingNormalAccessors","pendingColorAccessors","pendingAccessor","accessors","morphPositions","updateMorphTargets","targetNames","createPrimitiveKey","primitiveDef","geometryKey","dracoExtension","createAttributesKey","attributesKey","getNormalizedComponentScale","constructor","getImageURIMimeType","uri","isSafari","isFirefox","firefoxVersion","dependencies","skinDefs","meshDefs","skinIndex","skinLength","joints","updateMappings","original","mappings","defs","bufferIndex","bufferDef","bufferViewDef","accessorIndex","TypedArray","pendingBufferViews","bufferViews","elementBytes","itemBytes","byteStride","ibSlice","ibCacheKey","itemSizeIndices","TypedArrayIndices","byteOffsetIndices","byteOffsetValues","sparseIndices","sparseValues","sourceIndex","sourceDef","sampler","URL2","sourceURI","isObjectURL","sourceURI2","mapName","mapDef","gltfReference","useDerivativeTangents","useVertexColors","useFlatShading","pointsMaterial","lineMaterial","materialType","materialExtensions","kmuExtension","alphaMode","originalName","sanitizedName","primitives","createDracoPrimitive","addPrimitiveAttributes","geometryPromise","meshIndex","cameraIndex","cameraDef","skinDef","inverseBindMatrices","jointNodes","jointNode","animationIndex","animationDef","animationName","pendingNodes","pendingInputAccessors","pendingOutputAccessors","pendingSamplers","pendingTargets","inputAccessors","outputAccessors","samplers","inputAccessor","outputAccessor","targetName","outputArray","scaled","interpolantType","nodePending","childPending","childrenDef","skeletonPending","meshPromise","matrix2","sceneIndex","sceneDef","nodeIds","reduceAssociations","reducedAssociations","node2","computeBounds","boxScale","maxDisplacement","assignAttributeAccessor","gltfAttributeName","accessor2","_taskCache","DRACOLoader","workerLimit","taskConfig","attributeIDs","attributeTypes","taskKey","cachedTask","worker","taskID","taskCost","geometryPending","_worker","geometryData","useJS","librariesPending","libraries","jsContent","DRACOWorker","body","worker2","decoderConfig","decoderPending","draco","module2","decoderBuffer","decodeGeometry","attr","dracoGeometry","decodingStatus","geometryType","attributeType","attributeID","decodeAttribute","decodeIndex","numIndices","ptr","numComponents","numValues","dataType","getDracoDataType","generated","MeshoptDecoder","wasm_base","wasm_simd","detector","wasmpack","wasm","unpack","write","decode","fun","size2","sbrk","count4","tp","sp","heap","filters","decoders","workerBootstrap","modules","registerModule","getTransferables","dep","depResult","rehydrate","callModule","ref$1","handleResult","rej","messageId","transferables","defineMainThreadModule","moduleFunc","initResult","initPromise","supportsWorkers","supported","_workerModuleId","_messageId","_allowInitAsString","workers","registeredModules","openRequests","defineWorkerModule","workerId","registrationPromise","stringifyFunction","callWorker","unregister","isCallable","terminateWorker","getWorker","bootstrap","msgId","SDFGenerator","pointOnQuadraticBezier","pointOut","pointOnCubicBezier","y3","forEachPathCommand","pathString","commandCallback","segmentRE","firstX","firstY","prevX","prevY","pathToLineSegments","segmentCallback","curvePoints","tempPoint","command","startX","startY","endX","endY","ctrl1X","ctrl1Y","ctrl2X","ctrl2Y","prevCurveX","prevCurveY","prevCurveX$1","prevCurveY$1","i$1","viewportQuadVertex","copyTexFragment","glContextParams","withWebGLContext","glOrCanvas","wrapper","compileShader","withProgram","frag","uniformLoc","instancingDivisor","withTexture","withTextureFramebuffer","framebufferStack","handleContextLoss","renderImageData","channels","tex","texUnit","setUniform","setAttribute","resizeWebGLCanvasWithoutClearing","newWidth","newHeight","webglUtils","generate$2","sdfWidth","sdfHeight","viewBox","maxDistance","sdfExponent","textureData","viewBoxWidth","viewBoxHeight","sdfX","sdfY","signedDist","findNearestSignedDistance","closestDistSq","closestDist","seg","distSq","absSquareDistanceToLineSegment","isPointInPoly","winding","generateIntoCanvas$2","generateIntoFramebuffer$1","rgbaData","lineX0","lineY0","lineX1","lineY1","ldx","ldy","javascript","mainVertex","mainFragment","postFragment","viewportUVs","implicitContext","isTestingSupport","NULL_OBJECT","supportByCanvas","validateSupport","generate$1","generateIntoFramebuffer","generateIntoCanvas$1","lineSegmentCoords","intermediateTexture","intermediateTextureUnit","instancingExtension","blendMinMaxExtension","failReason","expectedResult","testResult","webgl","generate","generateIntoCanvas","bidiFactory","bidi","DATA","TYPES","TYPES_TO_NAMES","ISOLATE_INIT_TYPES","STRONG_TYPES","NEUTRAL_ISOLATE_TYPES","BN_LIKE_TYPES","TRAILING_TYPES","parseData","lastCode","skip","getBidiCharType","char","getBidiCharTypeName","data$1","parseCharacterMap","encodedString","includeReverse","radix","reverseMap","prevPair","visit","openToClose","closeToOpen","canonical","parse$1","openingToClosingBracket","closingToOpeningBracket","getCanonicalBracket","TYPE_L","TYPE_R","TYPE_EN","TYPE_ES","TYPE_ET","TYPE_AN","TYPE_CS","TYPE_B","TYPE_S","TYPE_ON","TYPE_BN","TYPE_NSM","TYPE_AL","TYPE_LRO","TYPE_RLO","TYPE_LRE","TYPE_RLE","TYPE_PDF","TYPE_LRI","TYPE_RLI","TYPE_FSI","TYPE_PDI","getEmbeddingLevels","baseDirection","MAX_DEPTH","charTypes","charTypeCounts","changeCharType","embedLevels","isolationPairs","paragraphs","paragraph","determineAutoEmbedLevel","FORMATTING_TYPES","nextEven","nextOdd","paraIdx","statusStack","stackTop","overflowIsolateCount","overflowEmbeddingCount","validIsolateCount","i$2","charType","level$1","level$2","isolInitIndex","levelRuns","currentRun","i$3","charType$1","lvl","isIsolInit","isPDI","isolatingRunSeqs","runIdx","seqRuns","pdiIndex","i$4","seqIndices","i$5","run$1","firstLevel","prevLevel","i$6","lastLevel","nextLevel","i$7","seqIdx","seqIndices$1","sosType","eosType","embedDirection","i$8","prevType","si$1","i$9","sj$1","prevCharType","si$2","i$10","si$3","i$11","prevType$1","nextType","sj$2","sj$3","si$4","i$12","sj$4","si$5","i$13","sj$5","sj$6","si$6","prevStrongType","i$14","R_TYPES_FOR_N_STEPS","STRONG_TYPES_FOR_N_STEPS","bracketPairs","openerStack","si$7","oppositeBracket","stackIdx","stackChar","pairIdx","openSeqIdx","closeSeqIdx","foundStrongType","useStrongType","si$8","i$15","lr","si$9","i$16","lr$1","si$10","si$11","si$12","niRunStart","niRunEnd","prevType$2","si2","nextType$1","si2$1","sj$7","i$17","level$3","type$1","j$1","isFSI","pdi","indexOfMatchingPDI","isolateStart","isolationLevel","mirrorMap","parse","getMirroredCharacter","getMirroredCharactersMap","embeddingLevels","strLen","mirror","getReorderSegments","embeddingLevelsResult","lineStart","lineEnd","lineLevels","maxLevel","minOddLevel","segStart","getReorderedString","embedLevelsResult","getReorderedIndices","chars","charIndex","voidMainRegExp","expandShaderIncludes","chunk","assign","epoch","CONSTRUCTOR_CACHE","SHADER_UPGRADE_CACHE","materialInstanceId","createDerivedMaterial","baseMaterial","optionsKey","getKeyForOptions","ctorsByDerivation","privateBeforeCompileProp","onBeforeCompile","shaderInfo","upgradedShaders","upgraded","upgradeShaders","DerivedMaterial","derive","derived","descriptor","newBase","distanceMaterial","vertexDefs","vertexMainIntro","vertexMainOutro","vertexTransform","fragmentDefs","fragmentMainIntro","fragmentMainOutro","fragmentColorTransform","customRewriter","timeUniform","postChunks","match1","fullStr","injectIntoShaderCode","shaderCode","intro","outro","optionsJsonReplacer","_idCtr","optionsHashesToIds","optionsHash","createTypesetter","fontParser","defaultFontURL","fonts","INF","DEFAULT_IGNORABLE_CHARS","lineBreakingWhiteSpace","BREAK_AFTER_CHARS","doLoadFont","tryLoad","request","fontObj","loadFont","fontUrl","font","typeset","sdfGlyphSize","fontSize","letterSpacing","lineHeight","maxWidth","textAlign","textIndent","whiteSpace","overflowWrap","anchorX","anchorY","includeCaretPositions","chunkedBoundsSize","colorRanges","metricsOnly","mainStart","timings","hasMaxWidth","glyphIds","glyphPositions","glyphData","glyphColors","caretPositions","visibleBounds","chunkedBounds","maxLineWidth","renderableGlyphCount","canWrap","ascender","descender","unitsPerEm","lineGap","capHeight","xHeight","typesetStart","fontSizeMult","halfLeading","topBaseline","caretHeight","caretBottomOffset","lineXOffset","currentLine","TextLine","glyphObj","glyphX","glyphWidth","curLineCount","nextLine","adjustX","fly","anchorXOffset","anchorYOffset","parsePercent","bidiLevelsResult","lineYOffset","renderableGlyphIndex","prevCharIndex","colorCharIndex","currentColor","lineIndex","lineGlyphCount","trailingWhitespaceCount","justifyAdjust","whitespaceCount","justifyOffset","glyphInfo","flips","startInLine","endInLine","setGlyphObj","glyphId","rtl","mirrored","caretLeft","caretRight","ligCount","fillLigatureCaretPositions","idx","glyphY","visX0","visY0","visX1","visY1","chunkRect","measure","pct","ligStartIndex","ligStartX","ligEndX","ligY","guessedAdvanceX","textLineProps","newLine","all","mainThreadGenerator","createSDFGenerator","warned","generateSDF","exponent","useWebGL","generateSDF_GL","generateSDF_JS_Worker","chunkTimeBudget","timer","nextChunk","threadCount","idleTimeout","threads","callNum","thread","_createSDFGenerator","timing","warmUpSDFCanvas","typrFactory","_","woff2otfFactory","rr","er","nr","tr","parserFactory","Typr","woff2otf","cmdArgLengths","joiningTypeRawData","JT_LEFT","JT_RIGHT","JT_DUAL","JT_TRANSPARENT","JT_JOIN_CAUSING","JT_NON_JOINING","joiningTypeMap","getCharJoiningType","ISOL","INIT","FINA","MEDI","formsToFeatures","detectJoiningForms","joiningForms","prevJoiningType","prevForm","joiningType","form","stringToGlyphs","gsub","lookupList","featureList","supportedFeatures","usedLookups","feature","tab","isJoiningFeature","firstNum","wrapFontObj","typrFont","glyphMap","os2","hhea","fontScale","glyphIndices","prevGlyphIndex","glyphIndex","cmds","crds","crdsIdx","numArgs","xMin","yMin","xMax","yMax","peek","tag","workerModule","CONFIG","tempColor","now$1","atlases","getTextRenderInfo","totalStart","toAbsoluteURL","textureWidth","glyphsPerRow","atlas","initContextLossHandling","sdfTexture","sdfCanvas","fontGlyphs","typesetInWorker","neededSDFs","glyphBounds","boundsIdx","positionsIdx","quadsStart","pathBounds","fontUnitsMargin","atlasIndex","sdfViewBox","posX","posY","sdfStart","currentHeight","neededRows","neededHeight","generateGlyphSDF","safariPre15Workaround","contextLost","useGPU","maxDist","squareIndex","promises","glyph","preloadFont","characters","toObj","fromObj","linkEl","typesetterWorkerModule","typesetter","templateGeometries","getTemplateGeometry","geom","front","back","frontAttrs","backAttrs","combined","vertCount","glyphBoundsAttrName","glyphIndexAttrName","glyphColorAttrName","GlyphsGeometry","side","verts","tpl","glyphAtlasIndices","blockBounds","updateBufferAttr","curveRadius","bbox","PI","halfPi","absR","leftAngle","rightAngle","clipRect","attrName","newArray","VERTEX_DEFS","VERTEX_TRANSFORM","FRAGMENT_DEFS","FRAGMENT_TRANSFORM","createTextDerivedMaterial","textMaterial","uDiffuseRE","defaultMaterial","defaultStrokeColor","tempMat4","tempVec3a","tempVec3b","tempArray","defaultOrient","first","getFlatRaycastMesh","getCurvedRaycastMesh","syncStartEvent","syncCompleteEvent","SYNCABLE_PROPS","COPYABLE_PROPS","textRenderInfo","queued","derivedMaterial","onDispose","outlineMaterial","isOutline","textInfo","distanceOffset","blurRadius","strokeWidth","fillOpacity","strokeOpacity","strokeColor","offsetX","offsetY","outlineWidth","outlineOffsetX","outlineOffsetY","outlineBlur","outlineOpacity","pad","colorObj","orient","rotMat","hSign","hAxis","vSign","vAxis","raycastMesh","privateKey","Text","onSync","troikaMesh","Text$1","React.Children","INFINITY","MAX_SAFE_INTEGER","argsTag","funcTag","genTag","symbolTag","freeGlobal","global","freeSelf","apply","thisArg","arrayMap","iteratee","arrayPush","objectProto","hasOwnProperty","objectToString","Symbol","propertyIsEnumerable","spreadableSymbol","nativeMax","baseFlatten","predicate","isStrict","isFlattenable","basePick","basePickBy","baseRest","otherArgs","isArray","isArguments","toKey","isSymbol","isArrayLikeObject","isArrayLike","isLength","isFunction","isObjectLike","isObject","pick","lodash_pick","createSpread","deep","castShadow","receiveShadow","spread","React.isValidElement","Clone","isChild","_object","isSkinned","injectChildren","Element","decoderPath","useDraco","useMeshopt","extendLoader","useGLTF","useMeshOpt","OrbitControls","makeDefault","regress","enableDamping","keyEvents","onChange","onStart","onEnd","restProps","defaultCamera","setEvents","explCamera","explDomElement","controls","onStartCb","onEndCb","old","Float","speed","rotationIntensity","floatIntensity","floatingRange","_floatingRange$","_floatingRange$2","yPosition","THREE.MathUtils","TextHighHZ","memo","isPerf","colorBlind","customData2","isMemory","isShadersInfo","metric","round","hasInstance","fpsRef","fpsInstanceRef","colorsGraph","infosInstance","infoInstance","jsxs","Suspense","self","jsx","THREE.NormalBlending","TextsHighHZ","minimal","Fragment","ChartCurve","fpsMatRef","gpuRef","cpuRef","dummyVec3","updatePoints","padding","paddingTop","THREE.DynamicDrawUsage","ChartUI","customData","showGraph","paused","Renderer","HtmlMinimal","portal","className","rootRef","estimateBytesUsed","mem","addTextureUniforms","repeatType","wrap","encodingType","UniformsGL","setTexNumber","TexCount","data2","DynamicDrawCallInfo","getVal","el2","ProgramUI","showProgram","setShowProgram","toggleProgram","texNumber","invert","ProgramsUI","DynamicUIPerf","overclockingFps","fpsLimit","DynamicUI","PerfUI","openByDefault","PerfThree","InfoUI","ToggleEl","title","tabStore","show","React","TabContainers","Perf","perfContainerRef","common_default","convolution_bokeh_default","BokehMaterial","ShaderMaterial2","foreground","Uniform2","NoBlending2","GOLDEN_ANGLE","points64","points16","i64","i16","sqrt80","BlendFunction","ColorChannel","DepthCopyMode","DepthTestStrategy","EffectAttribute","EffectShaderSection","GlitchMode","KernelSize","LUTOperation","MaskFunction","revision","useColorSpace","encodingToColorSpace","colorSpaceToEncoding","getOutputColorSpace","setTextureColorSpace","copyTextureColorSpace","updateFragmentShader","orthographicDepthToViewZ","viewZToOrthographicDepth","viewZ","circle_of_confusion_default","CircleOfConfusionMaterial","ShaderMaterial4","Uniform4","NoBlending4","depthPacking","PerspectiveCamera2","convolution_kawase_default","convolution_kawase_default2","kernelPresets","KawaseBlurMaterial","ShaderMaterial5","Uniform5","NoBlending5","copy_default","CopyMaterial","ShaderMaterial6","Uniform6","NoBlending6","depth_comparison_default","depth_comparison_default2","DepthComparisonMaterial","ShaderMaterial7","Uniform7","NoBlending7","PerspectiveCamera3","depth_copy_default","depth_copy_default2","DepthCopyMaterial","ShaderMaterial8","Uniform8","Vector23","NoBlending8","BasicDepthPacking2","depth_downsampling_default","depth_downsampling_default2","DepthDownsamplingMaterial","ShaderMaterial9","Uniform9","Vector24","NoBlending9","BasicDepthPacking3","depth_mask_default","DepthMaskMaterial","ShaderMaterial10","Uniform10","Vector25","NoBlending10","BasicDepthPacking4","PerspectiveCamera4","convolution_downsampling_default","convolution_downsampling_default2","DownsamplingMaterial","ShaderMaterial11","Uniform11","Vector26","NoBlending11","effect_default","effect_default2","EffectMaterial","ShaderMaterial13","shaderParts","dithering","REVISION3","Uniform13","Vector28","NoBlending13","BasicDepthPacking6","PerspectiveCamera5","convolution_god_rays_default","GodRaysMaterial","ShaderMaterial15","lightPosition","Uniform15","NoBlending15","luminance_default","LuminanceMaterial","ShaderMaterial16","colorOutput","luminanceRange","REVISION4","Uniform16","NoBlending16","mask_default","MaskMaterial","ShaderMaterial17","maskTexture","Uniform17","NoBlending17","outline_default","outline_default2","OutlineMaterial","ShaderMaterial18","Vector210","Uniform18","NoBlending18","ssao_default","ssao_default2","SSAOMaterial","ShaderMaterial20","Uniform20","Vector212","NoBlending20","BasicDepthPacking7","falloff","PerspectiveCamera6","noiseTexture","convolution_upsampling_default","convolution_upsampling_default2","UpsamplingMaterial","ShaderMaterial21","Uniform22","Vector214","NoBlending21","dummyCamera","getFullscreenTriangle","Pass","_Pass","screen","BasicDepthPacking8","inputBuffer","outputBuffer","frameBufferType","CopyPass","autoResize","WebGLRenderTarget2","UnsignedByteType2","ClearMaskPass","ClearPass","overrideClearColor","overrideClearAlpha","hasOverrideClearColor","hasOverrideClearAlpha","RenderPass","OverrideMaterialManager","selection","DepthPass","resolutionScale","Resolution","resolutionX","resolutionY","RGBADepthPacking2","renderPass","clearPass","Color2","WebGLRenderTarget5","NearestFilter2","DepthDownsamplingPass","normalBuffer","WebGLRenderTarget6","NearestFilter3","BasicDepthPacking10","DepthCopyPass","RGBADepthPacking3","WebGLRenderTarget7","UnsignedByteType4","FloatType2","NearestFilter4","BasicDepthPacking11","unpackFactors","unpackRGBAToDepth","packedDepth","DepthPickingPass","RGBADepthPacking4","ndc","pixelBuffer","packed","FloatType3","texelPosition","prefixSubstrings","substrings","strings","substring","prefixed","regExp","integrateEffect","effect","mainImageExists","mainUvExists","functionRegExp","fragmentHead","fragmentMainUv","fragmentMainImage","vertexHead","vertexMainSupport","varyings","needsUv","m2","shaders","depthParamRegExp","blendOpacity","EffectPass","EffectShaderData","blendRegExp","BasicDepthPacking12","UnsignedByteType5","KawaseBlurPass","kernelSize","WebGLRenderTarget9","renderTargetA","renderTargetB","kernelSequence","previousBuffer","UnsignedByteType7","LuminancePass","WebGLRenderTarget10","UnsignedByteType8","MaskPass","writeValue","clearValue","MipmapBlurPass","WebGLRenderTarget11","Vector215","downsamplingMaterial","upsamplingMaterial","downsamplingMipmaps","upsamplingMipmaps","UnsignedByteType9","NormalPass","Color3","WebGLRenderTarget12","NearestFilter5","ShaderPass","UnsignedByteType10","MILLISECONDS_TO_SECONDS","SECONDS_TO_MILLISECONDS","Timer","EffectComposer","multisampling","Vector216","UnsignedByteType11","updateDOM","oldRenderer","LinearFilter2","WebGLRenderTarget13","passes","drawingBufferSize","reducer","copyPass","currentSize","autoReset","workaroundEnabled","ShaderMaterial22","textureUniforms","originalMaterials","AUTO_SIZE","resizable","Vector217","preferred","effective","Selection","iterable","currentLayer","visible","add_default","alpha_default","average_default","color_default","color_burn_default","color_dodge_default","darken_default","difference_default","divide_default","exclusion_default","hard_light_default","hard_mix_default","hue_default","invert_default","invert_rgb_default","lighten_default","linear_burn_default","linear_dodge_default","linear_light_default","luminosity_default","multiply_default","negation_default","normal_default","overlay_default","pin_light_default","reflect_default","saturation_default","screen_default","soft_light_default","src_default","subtract_default","vivid_light_default","blendFunctions","BlendMode","EventDispatcher2","blendFunction","opacity","Uniform23","Effect","EventDispatcher3","BasicDepthPacking13","WebGLRenderTarget14","Material2","Texture2","bloom_default","BloomEffect","luminanceThreshold","luminanceSmoothing","mipmapBlur","Uniform24","WebGLRenderTarget15","luminancePass","color_average_default","ColorAverageEffect","depth_of_field_default","DepthOfFieldEffect","worldFocusDistance","worldFocusRange","focusDistance","focusRange","bokehScale","Uniform29","WebGLRenderTarget16","cocMaterial","maskMaterial","BasicDepthPacking14","renderTargetCoC","renderTargetCoCBlurred","renderTargetMasked","UnsignedByteType12","RawImageData","_RawImageData","worker_default","Color4","LookupTexture","_LookupTexture","FloatType4","LinearFilter3","transferData","workerURL","lut","transferList","img0","img1","size0","size1","data0","data1","sizeSq","iRGB","floatData","uint8Data","UnsignedByteType13","j4","getNoise","RGBAFormat2","UnsignedByteType14","NoiseTexture","DataTexture2","glitch_default","textureTag","randomFloat","GlitchEffect","chromaticAberrationOffset","Vector220","strength","columns","ratio","perturbationMap","dtSize","Uniform32","RGBAFormat3","currentMap","NearestFilter6","breakPoint","active","trigger","god_rays_default","Vector32","Matrix42","GodRaysEffect","lightSource","exposure","clampMax","blur","Uniform33","Scene2","Vector221","WebGLRenderTarget17","DepthTexture2","Color5","depthMaskMaterial","godRaysMaterial","BasicDepthPacking15","matrixAutoUpdate","renderTargetLight","grid_default","GridEffect","Uniform34","Vector222","lut_3d_default","LUT3DEffect","tetrahedralInterpolation","inputEncoding","sRGBEncoding2","inputColorSpace","Uniform38","Vector34","FloatType6","HalfFloatType2","Data3DTexture2","domainScale","LinearFilter4","NearestFilter7","noise_default","NoiseEffect","premultiply","outline_default3","outline_default4","OutlineEffect","patternTexture","patternScale","edgeStrength","pulseSpeed","visibleEdgeColor","hiddenEdgeColor","xRay","Uniform39","Color6","WebGLRenderTarget18","RepeatWrapping2","pulse","UnsignedByteType15","pixelation_default","PixelationEffect","granularity","Uniform40","Vector43","Vector224","SelectiveBloomEffect","Color7","RGBADepthPacking5","EqualDepth2","WebGLRenderTarget19","NotEqualDepth2","BasicDepthPacking16","inverted","ssao_default3","NOISE_TEXTURE_SIZE","SSAOEffect","normalDepthBuffer","depthAwareUpsampling","worldDistanceThreshold","worldDistanceFalloff","worldProximityThreshold","worldProximityFalloff","distanceThreshold","distanceFalloff","rangeThreshold","rangeFalloff","minRadiusScale","luminanceInfluence","bias","fade","Uniform46","WebGLRenderTarget21","RGBAFormat4","RepeatWrapping3","ssaoMaterial","Color9","BasicDepthPacking18","texture_default","texture_default2","TextureEffect","aspectCorrection","Uniform47","prevTexture","UnsignedByteType16","rgba","swizzle","_defineProperty","_arrayLikeToArray","arr2","_unsupportedIterableToArray","minLen","_arrayWithoutHoles","_iterableToArray","iter","_nonIterableSpread","_toConsumableArray","_classCallCheck","Constructor","Grad","grad3","perm","gradP","seed","normalizeSeed","lcgRandom","Generator","rsqw","exp","smoothTime","maxSpeed","easing","eps","vel","omega","change","originalTo","maxChange","temp","dampAngle","v2d","damp2","v3d","b3","damp3","v4d","b4","c4","damp4","rot","aE","bE","cE","dampE","aC","bC","cC","dampC","qt","v4result","v4velocity","v4error","aQ","bQ","cQ","dQ","dampQ","cur","multi","aS","bS","cS","dampS","mPos","mRot","mSca","aM","bM","cM","dampM","selectionContext","createContext","EffectComposerContext","_scene","disableNormalPass","defaultScene","composer","normalPass","downSamplingPass","isWebGL2Available$1","effectComposer","EffectComposer$1","downSamplingPass2","normalPass2","currentAutoClear","children2","useImperativeHandle","resolveRef","wrapEffect","defaults","Component","useVector2","DepthOfField","useContext","autoFocus","effect2","followMouse","debug","manual","fref","dofRef","hitpointRef","targetRef","scene2","pointer2","depthPickingPass","hitpoint","getHit","useCallback","updateTarget","LensFlareShader","LensFlareEffect","glareSize","lensPosition","iResolution","starPoints","flareSize","flareSpeed","flareShape","animated","anamorphic","colorGain","lensDirtTexture","haloScale","secondaryGhosts","aditionalStreaks","ghostScale","starBurst","THREE.Uniform","_inputBuffer","iTime","viewport2","raycaster2","projectedPosition","mouse2d","uLensPosition","uOpacity","Glitch","Noise","selectionLayer","forwardRef2","addLight","removeLight","textureSrc","ASCIIEffect","cellSize","Texture$1","charactersTextureUniform","SIZE","MAX_PER_ROW","CELL","boxBlur","finalSSRShader","helperFunctions","trCompose","MRTMaterial","vertexShader$1","ReflectionsMaterial","getVisibleChildren","setupEnvMap","reflectionsMaterial","ReflectionsPass","ssrEffect","mrtMaterial","originalMaterial","define","cachedOriginalMaterial","_c$material","defaultSSROptions","temporalResolve","TemporalResolveMaterial","customComposeShader","fragmentShader2","prev_skinning_pars_vertex","velocity_vertex","VelocityMaterial","backgroundColor","updateProperties","VelocityPass","_window","_window2","_c$skeleton2","velocityMaterial","_c$skeleton","_boneTexture","_c$skeleton3","moveDist","rotateDist","zeroVec2","TemporalResolvePass","halton","fraction","generateHalton23Points","escapeRegExp","worldposReplace","boxProjectDefinitions","getIBLIrradiance_patch","getIBLRadiance_patch","useBoxProjectedEnvMap","envMapPosition","envMapSize","line1","line2","finalFragmentShader","noResetSamplesProperties","defaultCubeRenderTarget","SSREffect","Selection$1","reflectionPassFullscreenMaterialUniforms","reflectionPassFullscreenMaterialUniformsKeys","iblRadiance","_renderer$properties$","envMapIntensity","ENABLE_BLUR","USE_MRT","$e4ca8dcb0218f846$var$_geometry","$e4ca8dcb0218f846$var$_camera","$e4ca8dcb0218f846$export$dcd670d73db751f5","$1ed45968c1160c3c$export$c9b263b9a17dffd7","$12b21d24d1192a04$export$a815acccbd2c9a49","$e52378cd0f5a973d$export$57856b59f317262e","$26aca173e0984d99$export$1efdf491687cd442","$06269ad78f3c5fdf$export$2e2bcd8739ae039","$87431ee93b037844$var$bluenoiseBits","$87431ee93b037844$var$checkTimerQuery","timerQuery","elapsedTimeInMs","$87431ee93b037844$export$2489f9981ab0fa82","propName","oldProp","samplesR","numSamples","numRings","angleStep","invNumSamples","xrEnabled","trueRadius","halfRes","screenSpaceRadius","quality","aoRadius","aoSamples","denoiseSamples","denoiseRadius","renderMode","chair","ReactDOM","Chair"],"mappings":"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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAE3BC,GAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEhCC,GAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAExBC,GAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAEvBC,GAAsB;AAAA;AAAA;AAAA;AAAA;AAAA,QAEtBC,GAAuB;AAAA;AAAA,QAEvBC,GAA4B;AAAA;AAA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AAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,IACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,IAAI,MACJ,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,IACN,MAAM,MACN,MAAM,IACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,KACN,MAAM,KACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,KACN,MAAM,MACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,MACN,MAAM,KACN,MAAM,MACN,MAAM,MACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,IACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,IACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,MACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,MACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,MACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,IACN,MAAM,KACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,KACN,MAAM,MACN,MAAM,KACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,KAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,KACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,KACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,KACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,KAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,KAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,IACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,KAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,KACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,KACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,KAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,IAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,KACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,KAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,KACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,KAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,KACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,IAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,KAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,KACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,KACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,KACN,EAMA,SAASG,GAAar8G,EAAQs8G,EAAe,CAE5C,KAAK,GAAK,IAAI,SAAUt8G,CAAM,EAC9B,KAAK,OAA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,EAAG,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68]}