playcanvas
Version:
PlayCanvas WebGL game engine
1 lines • 1.66 MB
JavaScript
var e,t,s,i,r,a,n,o,h,l,d,c,u,p,m,f,_,g,v,y,x,S,b,T,w,E,A,C="RenderFrame",M="RenderFrameTime",P="RenderPass",R="RenderPassDetail",I="RenderAction",D="RenderTargetAlloc",L="TextureAlloc",O="ShaderAlloc",F="ShaderCompile",B="VRAM.Texture",k="VRAM.Vb",N="VRAM.Ib",z="VRAM.Sb",U="BindGroupAlloc",V="BindGroupFormatAlloc",G="RenderPipelineAlloc",H="ComputePipelineAlloc",W="PipelineLayoutAlloc",X="Element",j="Textures",Y="RenderQueue",q="GpuTimings",K="2.5.0",Z="2abde2e";function Q(e,t){for(var s in t){var i=t[s];Array.isArray(i)?e[s]=Q([],i):i&&"object"==typeof i?e[s]=Q({},i):e[s]=i;}return e}var J={create:()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{var t=16*Math.random()|0;return ("x"===e?t:3&t|8).toString(16)})},$={delimiter:"/",join(){for(var e=arguments.length,t=Array(e),s=0;s<e;s++)t[s]=arguments[s];for(var i=t[0],r=0;r<t.length-1;r++){var a=t[r],n=t[r+1];if(n[0]===$.delimiter){i=n;continue}a&&n&&a[a.length-1]!==$.delimiter&&n[0]!==$.delimiter?i+=$.delimiter+n:i+=n;}return i},normalize(e){for(var t=e.startsWith($.delimiter),s=e.endsWith($.delimiter),i=e.split("/"),r="",a=[],n=0;n<i.length;n++)if(""!==i[n]&&"."!==i[n]){if(".."===i[n]&&a.length>0){a=a.slice(0,a.length-2);continue}n>0&&a.push($.delimiter),a.push(i[n]);}return r=a.join(""),t||r[0]!==$.delimiter||(r=r.slice(1)),s&&r[r.length-1]!==$.delimiter&&(r+=$.delimiter),r},split(e){var t=e.lastIndexOf($.delimiter);return -1!==t?[e.substring(0,t),e.substring(t+1)]:["",e]},getBasename:e=>$.split(e)[1],getDirectory:e=>$.split(e)[0],getExtension(e){var t=e.split("?")[0].split(".").pop();return t!==e?"."+t:""},isRelativePath:e=>"/"!==e.charAt(0)&&null===e.match(/:\/\//),extractPath(e){var t="",s=e.split("/"),i=0;if(s.length>1){if($.isRelativePath(e)){if("."===s[0])for(i=0;i<s.length-1;++i)t+=0===i?s[i]:"/"+s[i];else if(".."===s[0])for(i=0;i<s.length-1;++i)t+=0===i?s[i]:"/"+s[i];else for(i=0,t=".";i<s.length-1;++i)t+="/"+s[i];}else for(i=0;i<s.length-1;++i)t+=0===i?s[i]:"/"+s[i];}return t}},ee="undefined"!=typeof navigator?navigator.userAgent:"",et="undefined"!=typeof window?"browser":"undefined"!=typeof global?"node":"worker",es=/android/i.test(ee)?"android":/ip(?:[ao]d|hone)/i.test(ee)?"ios":/windows/i.test(ee)?"windows":/mac os/i.test(ee)?"osx":/linux/i.test(ee)?"linux":/cros/i.test(ee)?"cros":null,ei="browser"!==et?null:/Chrome\/|Chromium\/|Edg.*\//.test(ee)?"chrome":/Safari\//.test(ee)?"safari":/Firefox\//.test(ee)?"firefox":"other",er=/xbox/i.test(ee),ea="browser"===et&&("ontouchstart"in window||"maxTouchPoints"in navigator&&navigator.maxTouchPoints>0),en="browser"===et&&(!!navigator.getGamepads||!!navigator.webkitGetGamepads),eo="undefined"!=typeof Worker,eh=(()=>{var e=false;try{var t=Object.defineProperty({},"passive",{get:function(){return e=!0,!1}});window.addEventListener("testpassive",null,t),window.removeEventListener("testpassive",null,t);}catch(e){}return e})(),el={name:es,environment:et,global:null!=(o=null!=(n=null!=(a="undefined"!=typeof globalThis&&globalThis)?a:"browser"===et&&window)?n:"node"===et&&global)?o:"worker"===et&&self,browser:"browser"===et,worker:"worker"===et,desktop:["windows","osx","linux","cros"].includes(es),mobile:["android","ios"].includes(es),ios:"ios"===es,android:"android"===es,xbox:er,gamepads:en,touch:ea,workers:eo,passiveEvents:eh,browserName:ei},ed="abcdefghijklmnopqrstuvwxyz",ec="ABCDEFGHIJKLMNOPQRSTUVWXYZ";function eu(e,t){ undefined===t&&(t=0);var s=e.length;if(t<0||t>=s)return null;var i=e.charCodeAt(t);if(s>1&&i>=55296&&i<=56319){var r=e.charCodeAt(t+1);if(r>=56320&&r<=57343)return {code:(i-55296)*1024+r-56320+65536,long:true}}return {code:i,long:false}}function ep(e,t,s){if(!e)return false;var i=eu(e);if(i){var r=i.code;return r>=t&&r<=s}return false}var em={ASCII_LOWERCASE:ed,ASCII_UPPERCASE:ec,ASCII_LETTERS:ed+ec,format(e){for(var t=arguments.length,s=Array(t>1?t-1:0),i=1;i<t;i++)s[i-1]=arguments[i];for(var r=0;r<s.length;r++)e=e.replace("{"+r+"}",s[r]);return e},getCodePoint(e,t){var s=eu(e,t);return s&&s.code},getCodePoints(e){if("string"!=typeof e)throw TypeError("Not a string");for(var t,s=0,i=[];t=eu(e,s);)i.push(t.code),s+=t.long?2:1;return i},getSymbols(e){if("string"!=typeof e)throw TypeError("Not a string");for(var t,s=0,i=e.length,r=[],a=0;s<i;){if(a+=function(e,t){if(t===e.length-1)return 1;if(ep(e[t],55296,56319)){var s=e.substring(t,t+2),i=e.substring(t+2,t+4);return ep(i,127995,127999)||ep(s,127462,127487)&&ep(i,127462,127487)?4:ep(i,65024,65039)?3:2}return ep(e[t+1],65024,65039)?2:1}(e,s+a),ep(t=e[s+a],8400,8447)&&(t=e[s+a++]),ep(t,65024,65039)&&(t=e[s+a++]),t&&8205===t.charCodeAt(0)){t=e[s+a++];continue}var n=e.substring(s,s+a);r.push(n),s+=a,a=0;}return r},fromCodePoint(){for(var e,t,s,i=[],r=0;r<arguments.length;++r)e=Number(arguments[r]),t=e-65536,s=e>65535?[(t>>10)+55296,t%1024+56320]:[e],i.push(String.fromCharCode.apply(null,s));return i.join("")}};class ef{off(){this._removed||this.handler.offByHandle(this);}on(e,t,s){return undefined===s&&(s=this),this.handler._addCallback(e,t,s,false)}once(e,t,s){return undefined===s&&(s=this),this.handler._addCallback(e,t,s,true)}set removed(e){e&&(this._removed=true);}get removed(){return this._removed}constructor(e,t,s,i,r=false){this._removed=false,this.handler=e,this.name=t,this.callback=s,this.scope=i,this._once=r;}}class e_{initEventHandler(){this._callbacks=new Map,this._callbackActive=new Map;}_addCallback(e,t,s,i){if(this._callbacks.has(e)||this._callbacks.set(e,[]),this._callbackActive.has(e)){var r=this._callbackActive.get(e);r&&r===this._callbacks.get(e)&&this._callbackActive.set(e,r.slice());}var a=new ef(this,e,t,s,i);return this._callbacks.get(e).push(a),a}on(e,t,s){return undefined===s&&(s=this),this._addCallback(e,t,s,false)}once(e,t,s){return undefined===s&&(s=this),this._addCallback(e,t,s,true)}off(e,t,s){if(e)this._callbackActive.has(e)&&this._callbackActive.get(e)===this._callbacks.get(e)&&this._callbackActive.set(e,this._callbackActive.get(e).slice());else for(var[i,r]of this._callbackActive)this._callbacks.has(i)&&this._callbacks.get(i)===r&&this._callbackActive.set(i,r.slice());if(e){if(t){var a=this._callbacks.get(e);if(!a)return this;for(var n=0;n<a.length;n++)a[n].callback===t&&(!s||a[n].scope===s)&&(a[n].removed=true,a.splice(n,1),n--);0===a.length&&this._callbacks.delete(e);}else {var o=this._callbacks.get(e);if(o){for(var h=0;h<o.length;h++)o[h].removed=true;this._callbacks.delete(e);}}}else {for(var l of this._callbacks.values())for(var d=0;d<l.length;d++)l[d].removed=true;this._callbacks.clear();}return this}offByHandle(e){var t=e.name;e.removed=true,this._callbackActive.has(t)&&this._callbackActive.get(t)===this._callbacks.get(t)&&this._callbackActive.set(t,this._callbackActive.get(t).slice());var s=this._callbacks.get(t);if(!s)return this;var i=s.indexOf(e);return -1!==i&&(s.splice(i,1),0===s.length&&this._callbacks.delete(t)),this}fire(e,t,s,i,r,a,n,o,h){if(!e)return this;var l,d=this._callbacks.get(e);if(!d)return this;this._callbackActive.has(e)?this._callbackActive.get(e)!==d&&(l=d.slice()):this._callbackActive.set(e,d);for(var c=0;(l||this._callbackActive.get(e))&&c<(l||this._callbackActive.get(e)).length;c++){var u=(l||this._callbackActive.get(e))[c];if(u.callback&&(u.callback.call(u.scope,t,s,i,r,a,n,o,h),u._once)){var p=this._callbacks.get(e),m=p?p.indexOf(u):-1;if(-1!==m){this._callbackActive.get(e)===p&&this._callbackActive.set(e,this._callbackActive.get(e).slice());var f=this._callbacks.get(e);if(!f)continue;f[m].removed=true,f.splice(m,1),0===f.length&&this._callbacks.delete(e);}}}return l||this._callbackActive.delete(e),this}hasEvent(e){var t;return !!(null==(t=this._callbacks.get(e))?undefined:t.length)}constructor(){this._callbacks=new Map,this._callbackActive=new Map;}}class eg{push(e,t){if(this._index[e])throw Error("Key already in index "+e);var s=this._list.push(t)-1;this._index[e]=s;}has(e){return undefined!==this._index[e]}get(e){var t=this._index[e];return undefined!==t?this._list[t]:null}remove(e){var t=this._index[e];if(undefined!==t){for(e in this._list.splice(t,1),delete this._index[e],this._index){var s=this._index[e];s>t&&(this._index[e]=s-1);}return true}return false}list(){return this._list}clear(){for(var e in this._list.length=0,this._index)delete this._index[e];}constructor(){this._list=[],this._index={};}}class ev{static loadScript(e,t){var s=document.createElement("script");s.setAttribute("src",e),s.onload=()=>{t(null);},s.onerror=()=>{t("Failed to load script='"+e+"'");},document.body.appendChild(s);}static loadWasm(e,t,s){var i=ev.wasmSupported()&&t.glueUrl&&t.wasmUrl?t.glueUrl:t.fallbackUrl;i?ev.loadScript(i,i=>{if(i)s(i,null);else {var r=window[e];window[e]=undefined,r({locateFile:()=>t.wasmUrl,onAbort:()=>{s("wasm module aborted.");}}).then(e=>{s(null,e);});}}):s("No supported wasm modules found.",null);}static getModule(e){return ev.modules.hasOwnProperty(e)||(ev.modules[e]={config:null,initializing:false,instance:null,callbacks:[]}),ev.modules[e]}static initialize(e,t){if(!t.initializing){var s=t.config;(s.glueUrl||s.wasmUrl||s.fallbackUrl)&&(t.initializing=true,ev.loadWasm(e,s,(e,i)=>{e?s.errorHandler&&s.errorHandler(e):(t.instance=i,t.callbacks.forEach(e=>{e(i);}));}));}}}ev.modules={},ev.wasmSupported=(e=()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){var e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}return false},s=t={},()=>(s===t&&(s=e()),s));class ey{static setConfig(e,t){var s=ev.getModule(e);s.config=t,s.callbacks.length>0&&ev.initialize(e,s);}static getConfig(e){var t,s;return null==(s=ev.modules)?undefined:null==(t=s[e])?undefined:t.config}static getInstance(e,t){var s=ev.getModule(e);s.instance?t(s.instance):(s.callbacks.push(t),s.config&&ev.initialize(e,s));}}class ex{get remainingBytes(){return this.dataView.byteLength-this.offset}reset(e){ undefined===e&&(e=0),this.offset=e;}skip(e){this.offset+=e;}align(e){this.offset=this.offset+e-1&~(e-1);}_inc(e){return this.offset+=e,this.offset-e}readChar(){return String.fromCharCode(this.dataView.getUint8(this.offset++))}readChars(e){for(var t="",s=0;s<e;++s)t+=this.readChar();return t}readU8(){return this.dataView.getUint8(this.offset++)}readU16(){return this.dataView.getUint16(this._inc(2),true)}readU32(){return this.dataView.getUint32(this._inc(4),true)}readU64(){return this.readU32()+0x100000000*this.readU32()}readU32be(){return this.dataView.getUint32(this._inc(4),false)}readArray(e){for(var t=0;t<e.length;++t)e[t]=this.readU8();}readLine(){for(var e=this.dataView,t="";!(this.offset>=e.byteLength);){var s=String.fromCharCode(this.readU8());if("\n"===s)break;t+=s;}return t}constructor(e){this.offset=0,this.arraybuffer=e,this.dataView=new DataView(e);}}class eS{_binarySearch(e){for(var t,s,i=0,r=this.items.length-1,a=e[this._sortBy];i<=r;)t=Math.floor((i+r)/2),(s=this.items[t][this._sortBy])<=a?i=t+1:s>a&&(r=t-1);return i}_doSort(e,t){var s=this._sortBy;return e[s]-t[s]}insert(e){var t=this._binarySearch(e);this.items.splice(t,0,e),this.length++,this.loopIndex>=t&&this.loopIndex++;}append(e){this.items.push(e),this.length++;}remove(e){var t=this.items.indexOf(e);!(t<0)&&(this.items.splice(t,1),this.length--,this.loopIndex>=t&&this.loopIndex--);}sort(){var e=this.loopIndex>=0?this.items[this.loopIndex]:null;this.items.sort(this._sortHandler),null!==e&&(this.loopIndex=this.items.indexOf(e));}constructor(e){this.items=[],this.length=0,this.loopIndex=-1,this._sortBy=e.sortBy,this._sortHandler=this._doSort.bind(this);}}class eb extends e_{add(){for(var e=arguments.length,t=Array(e),s=0;s<e;s++)t[s]=arguments[s];var i=false,r=this._processArguments(t,true);if(!r.length)return i;for(var a=0;a<r.length;a++)this._index[r[a]]||(i=true,this._index[r[a]]=true,this._list.push(r[a]),this.fire("add",r[a],this._parent));return i&&this.fire("change",this._parent),i}remove(){for(var e=arguments.length,t=Array(e),s=0;s<e;s++)t[s]=arguments[s];var i=false;if(!this._list.length)return i;var r=this._processArguments(t,true);if(!r.length)return i;for(var a=0;a<r.length;a++)this._index[r[a]]&&(i=true,delete this._index[r[a]],this._list.splice(this._list.indexOf(r[a]),1),this.fire("remove",r[a],this._parent));return i&&this.fire("change",this._parent),i}clear(){if(this._list.length){var e=this._list.slice(0);this._list=[],this._index={};for(var t=0;t<e.length;t++)this.fire("remove",e[t],this._parent);this.fire("change",this._parent);}}has(){for(var e=arguments.length,t=Array(e),s=0;s<e;s++)t[s]=arguments[s];return !!this._list.length&&this._has(this._processArguments(t))}_has(e){if(!this._list.length||!e.length)return false;for(var t=0;t<e.length;t++)if(1===e[t].length){if(this._index[e[t][0]])return true}else {for(var s=true,i=0;i<e[t].length;i++)if(!this._index[e[t][i]]){s=false;break}if(s)return true}return false}list(){return this._list.slice(0)}_processArguments(e,t){var s=[],i=[];if(!e||!e.length)return s;for(var r=0;r<e.length;r++)if(e[r]instanceof Array){t||(i=[]);for(var a=0;a<e[r].length;a++)"string"==typeof e[r][a]&&(t?s.push(e[r][a]):i.push(e[r][a]));!t&&i.length&&s.push(i);}else "string"==typeof e[r]&&(t?s.push(e[r]):s.push([e[r]]));return s}get size(){return this._list.length}constructor(e){super(),this._index={},this._list=[],this._parent=e;}}eb.EVENT_ADD="add",eb.EVENT_REMOVE="remove",eb.EVENT_CHANGE="change";var eT="undefined"!=typeof window&&window.performance&&window.performance.now?performance.now.bind(performance):Date.now;function ew(e){var t="";if((e.authority||e.scheme)&&(e.host||e.hostpath))throw Error("Can't have 'scheme' or 'authority' and 'host' or 'hostpath' option");if(e.host&&e.hostpath)throw Error("Can't have 'host' and 'hostpath' option");if(e.path&&e.hostpath)throw Error("Can't have 'path' and 'hostpath' option");return e.scheme&&(t+=""+e.scheme+":"),e.authority&&(t+="//"+e.authority),e.host&&(t+=e.host),e.path&&(t+=e.path),e.hostpath&&(t+=e.hostpath),e.query&&(t+="?"+e.query),e.fragment&&(t+="#"+e.fragment),t}var eE=/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class eA{toString(){var e="";return this.scheme&&(e+=""+this.scheme+":"),this.authority&&(e+="//"+this.authority),e+=this.path,this.query&&(e+="?"+this.query),this.fragment&&(e+="#"+this.fragment),e}getQuery(){var e={};if(this.query)for(var t of decodeURIComponent(this.query).split("&")){var s=t.split("=");e[s[0]]=s[1];}return e}setQuery(e){var t="";for(var s in e)e.hasOwnProperty(s)&&(""!==t&&(t+="&"),t+=encodeURIComponent(s)+"="+encodeURIComponent(e[s]));this.query=t;}constructor(e){var t=e.match(eE);this.scheme=t[2],this.authority=t[4],this.path=t[5],this.query=t[7],this.fragment=t[9];}}class eC{static set(e,t){}static get(e){return eC._traceChannels.has(e)}}eC._traceChannels=new Set,eC.stack=false;var eM=0,eP=1,eR=4,eI=5,eD={DEG_TO_RAD:Math.PI/180,RAD_TO_DEG:180/Math.PI,clamp:(e,t,s)=>e>=s?s:e<=t?t:e,intToBytes24:e=>[e>>16&255,e>>8&255,255&e],intToBytes32:e=>[e>>24&255,e>>16&255,e>>8&255,255&e],bytesToInt24:(e,t,s)=>(e.length&&(s=e[2],t=e[1],e=e[0]),e<<16|t<<8|s),bytesToInt32:(e,t,s,i)=>(e.length&&(i=e[3],s=e[2],t=e[1],e=e[0]),(e<<24|t<<16|s<<8|i)>>>0),lerp:(e,t,s)=>e+(t-e)*eD.clamp(s,0,1),lerpAngle:(e,t,s)=>(t-e>180&&(t-=360),t-e<-180&&(t+=360),eD.lerp(e,t,eD.clamp(s,0,1))),powerOfTwo:e=>0!==e&&!(e&e-1),nextPowerOfTwo:e=>(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e),nearestPowerOfTwo:e=>Math.pow(2,Math.round(Math.log(e)/Math.log(2))),random:(e,t)=>Math.random()*(t-e)+e,smoothstep:(e,t,s)=>s<=e?0:s>=t?1:(s=(s-e)/(t-e))*s*(3-2*s),smootherstep:(e,t,s)=>s<=e?0:s>=t?1:(s=(s-e)/(t-e))*s*s*(s*(6*s-15)+10),roundUp:(e,t)=>0===t?e:Math.ceil(e/t)*t,between(e,t,s,i){var r=Math.min(t,s),a=Math.max(t,s);return i?e>=r&&e<=a:e>r&&e<a}};class eL{clone(){return new this.constructor(this.r,this.g,this.b,this.a)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this.a=e.a,this}equals(e){return this.r===e.r&&this.g===e.g&&this.b===e.b&&this.a===e.a}set(e,t,s,i){return undefined===i&&(i=1),this.r=e,this.g=t,this.b=s,this.a=i,this}lerp(e,t,s){return this.r=e.r+s*(t.r-e.r),this.g=e.g+s*(t.g-e.g),this.b=e.b+s*(t.b-e.b),this.a=e.a+s*(t.a-e.a),this}linear(e){return undefined===e&&(e=this),this.r=Math.pow(e.r,2.2),this.g=Math.pow(e.g,2.2),this.b=Math.pow(e.b,2.2),this.a=e.a,this}gamma(e){return undefined===e&&(e=this),this.r=Math.pow(e.r,1/2.2),this.g=Math.pow(e.g,1/2.2),this.b=Math.pow(e.b,1/2.2),this.a=e.a,this}mulScalar(e){return this.r*=e,this.g*=e,this.b*=e,this}fromString(e){var t,s=parseInt(e.replace("#","0x"),16);return e.length>7?t=eD.intToBytes32(s):(t=eD.intToBytes24(s))[3]=255,this.set(t[0]/255,t[1]/255,t[2]/255,t[3]/255),this}fromArray(e,t){var s,i,r,a;return undefined===t&&(t=0),this.r=null!=(s=e[t])?s:this.r,this.g=null!=(i=e[t+1])?i:this.g,this.b=null!=(r=e[t+2])?r:this.b,this.a=null!=(a=e[t+3])?a:this.a,this}toString(e,t){var{r:s,g:i,b:r,a}=this;if(t||s>1||i>1||r>1)return s.toFixed(3)+", "+i.toFixed(3)+", "+r.toFixed(3)+", "+a.toFixed(3);var n="#"+(0x1000000+(Math.round(255*s)<<16)+(Math.round(255*i)<<8)+Math.round(255*r)).toString(16).slice(1);if(true===e){var o=Math.round(255*a).toString(16);this.a<16/255?n+="0"+o:n+=o;}return n}toArray(e,t,s){return undefined===e&&(e=[]),undefined===t&&(t=0),undefined===s&&(s=true),e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,s&&(e[t+3]=this.a),e}constructor(e=0,t=0,s=0,i=1){var r,a=e.length;3===a||4===a?(this.r=e[0],this.g=e[1],this.b=e[2],this.a=null!=(r=e[3])?r:1):(this.r=e,this.g=t,this.b=s,this.a=i);}}eL.BLACK=Object.freeze(new eL(0,0,0,1)),eL.BLUE=Object.freeze(new eL(0,0,1,1)),eL.CYAN=Object.freeze(new eL(0,1,1,1)),eL.GRAY=Object.freeze(new eL(.5,.5,.5,1)),eL.GREEN=Object.freeze(new eL(0,1,0,1)),eL.MAGENTA=Object.freeze(new eL(1,0,1,1)),eL.RED=Object.freeze(new eL(1,0,0,1)),eL.WHITE=Object.freeze(new eL(1,1,1,1)),eL.YELLOW=Object.freeze(new eL(1,1,0,1));class eO{evaluate(e,t){ undefined===t&&(t=false),(t||e<this._left||e>=this._right)&&this._reset(e);var s,i=this._curve.type;if(i===eI)s=this._p0;else {var r=0===this._recip?0:(e-this._left)*this._recip;s=i===eM?eD.lerp(this._p0,this._p1,r):i===eP?eD.lerp(this._p0,this._p1,r*r*(3-2*r)):this._evaluateHermite(this._p0,this._p1,this._m0,this._m1,r);}return s}_reset(e){var t=this._curve.keys,s=t.length;if(s){if(e<t[0][0])this._left=-1/0,this._right=t[0][0],this._recip=0,this._p0=this._p1=t[0][1],this._m0=this._m1=0;else if(e>=t[s-1][0])this._left=t[s-1][0],this._right=1/0,this._recip=0,this._p0=this._p1=t[s-1][1],this._m0=this._m1=0;else {for(var i=0;e>=t[i+1][0];)i++;this._left=t[i][0],this._right=t[i+1][0];var r=1/(this._right-this._left);this._recip=isFinite(r)?r:0,this._p0=t[i][1],this._p1=t[i+1][1],this._curve.type===eR&&this._calcTangents(t,i);}}else this._left=-1/0,this._right=1/0,this._recip=0,this._p0=this._p1=this._m0=this._m1=0;}_calcTangents(e,t){var s,i,r=e[t],a=e[t+1];if(s=0===t?[e[0][0]+(e[0][0]-e[1][0]),e[0][1]+(e[0][1]-e[1][1])]:e[t-1],i=t===e.length-2?[e[t+1][0]+(e[t+1][0]-e[t][0]),e[t+1][1]+(e[t+1][1]-e[t][1])]:e[t+2],this._curve.type===eR){var n=2*(a[0]-r[0])/(a[0]-s[0]),o=2*(a[0]-r[0])/(i[0]-r[0]);this._m0=this._curve.tension*(isFinite(n)?n:0)*(a[1]-s[1]),this._m1=this._curve.tension*(isFinite(o)?o:0)*(i[1]-r[1]);}else {var h=(a[0]-r[0])/(r[0]-s[0]),l=(a[0]-r[0])/(i[0]-a[0]),d=r[1]+(s[1]-r[1])*(isFinite(h)?h:0),c=a[1]+(i[1]-a[1])*(isFinite(l)?l:0),u=this._curve.tension;this._m0=u*(a[1]-d),this._m1=u*(c-r[1]);}}_evaluateHermite(e,t,s,i,r){var a=r*r,n=r+r,o=1-r,h=o*o;return (1+n)*h*e+r*h*s+a*(3-n)*t+a*(r-1)*i}constructor(e,t=0){this._left=-1/0,this._right=1/0,this._recip=0,this._p0=0,this._p1=0,this._m0=0,this._m1=0,this._curve=e,this._reset(t);}}class eF{get length(){return this.keys.length}add(e,t){for(var s=this.keys,i=s.length,r=0;r<i&&!(s[r][0]>e);r++);var a=[e,t];return this.keys.splice(r,0,a),a}get(e){return this.keys[e]}sort(){this.keys.sort((e,t)=>e[0]-t[0]);}value(e){return this._eval.evaluate(e,true)}closest(e){for(var t=this.keys,s=t.length,i=2,r=null,a=0;a<s;a++){var n=Math.abs(e-t[a][0]);if(i>=n)i=n,r=t[a];else break}return r}clone(){var e=new this.constructor;return e.keys=this.keys.map(e=>[...e]),e.type=this.type,e.tension=this.tension,e}quantize(e){var t=new Float32Array(e=Math.max(e,2)),s=1/(e-1);t[0]=this._eval.evaluate(0,true);for(var i=1;i<e;i++)t[i]=this._eval.evaluate(s*i);return t}quantizeClamped(e,t,s){for(var i=this.quantize(e),r=0;r<i.length;++r)i[r]=Math.min(s,Math.max(t,i[r]));return i}constructor(e){if(this.keys=[],this.type=eP,this.tension=.5,this._eval=new eO(this),e)for(var t=0;t<e.length-1;t+=2)this.keys.push([e[t],e[t+1]]);this.sort();}}class eB{get length(){return this.curves.length}set type(e){this._type=e;for(var t=0;t<this.curves.length;t++)this.curves[t].type=e;}get type(){return this._type}get(e){return this.curves[e]}value(e,t){ undefined===t&&(t=[]);var s=this.curves.length;t.length=s;for(var i=0;i<s;i++)t[i]=this.curves[i].value(e);return t}clone(){var e=new this.constructor;e.curves=[];for(var t=0;t<this.curves.length;t++)e.curves.push(this.curves[t].clone());return e._type=this._type,e}quantize(e){e=Math.max(e,2);for(var t=this.curves.length,s=new Float32Array(e*t),i=1/(e-1),r=0;r<t;r++)for(var a=new eO(this.curves[r]),n=0;n<e;n++)s[n*t+r]=a.evaluate(i*n);return s}quantizeClamped(e,t,s){for(var i=this.quantize(e),r=0;r<i.length;++r)i[r]=Math.min(s,Math.max(t,i[r]));return i}constructor(){if(this.curves=[],this._type=eP,arguments.length>1)for(var e=0;e<arguments.length;e++)this.curves.push(new eF(arguments[e]));else if(0==arguments.length)this.curves.push(new eF);else {var t=arguments[0];if("number"==typeof t)for(var s=0;s<t;s++)this.curves.push(new eF);else for(var i=0;i<t.length;i++)this.curves.push(new eF(t[i]));}}}var ek=1/255,eN=new Float32Array(1),ez=new Int32Array(eN.buffer);class eU{static float2Half(e){eN[0]=e;var t=ez[0],s=t>>16&32768,i=t>>12&2047,r=t>>23&255;return r<103?s:r>142?(s|=31744,s|=(255===r?0:1)&&8388607&t):r<113?(i|=2048,s|=(i>>114-r)+(i>>113-r&1)):(s|=r-112<<10|i>>1,s+=1&i)}static float2Bytes(e,t,s,i){var r=255*e%1;if(t[s+0]=Math.round((e%1-ek*r)*255),i>1){var a=65025*e%1;if(t[s+1]=Math.round((r-ek*a)*255),i>2){var n=0xfd02ff*e%1;t[s+2]=Math.round((a-ek*n)*255),i>3&&(t[s+3]=Math.round(255*n));}}}static float2BytesRange(e,t,s,i,r,a){e=eD.clamp((e-i)/(r-i),0,1),eU.float2Bytes(e,t,s,a);}static float2RGBA8(e,t){eN[0]=e;var s=ez[0];t.r=(s>>24&255)/255,t.g=(s>>16&255)/255,t.b=(s>>8&255)/255,t.a=(255&s)/255;}}class eV{static concentric(e,t){var s=[];s.push(0,0);for(var i=2*Math.PI/e/t,r=1;r<=e;r++)for(var a=r/e,n=Math.max(1,Math.floor(2*Math.PI*a/i)),o=2*Math.PI/n,h=0;h<n;h++){var l=h*o,d=a*Math.cos(l),c=a*Math.sin(l);s.push(d,c);}return s}}class eG{add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}add2(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addScaled(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}cross(e,t){var s=e.x,i=e.y,r=e.z,a=t.x,n=t.y,o=t.z;return this.x=i*o-n*r,this.y=r*a-o*s,this.z=s*n-a*i,this}distance(e){var t=this.x-e.x,s=this.y-e.y,i=this.z-e.z;return Math.sqrt(t*t+s*s+i*i)}div(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}div2(e,t){return this.x=e.x/t.x,this.y=e.y/t.y,this.z=e.z/t.z,this}divScalar(e){return this.x/=e,this.y/=e,this.z/=e,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}equals(e){return this.x===e.x&&this.y===e.y&&this.z===e.z}equalsApprox(e,t){return undefined===t&&(t=1e-6),Math.abs(this.x-e.x)<t&&Math.abs(this.y-e.y)<t&&Math.abs(this.z-e.z)<t}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}lerp(e,t,s){return this.x=e.x+s*(t.x-e.x),this.y=e.y+s*(t.y-e.y),this.z=e.z+s*(t.z-e.z),this}mul(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}mul2(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}mulScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}normalize(e){ undefined===e&&(e=this);var t=e.x*e.x+e.y*e.y+e.z*e.z;if(t>0){var s=1/Math.sqrt(t);this.x=e.x*s,this.y=e.y*s,this.z=e.z*s;}return this}floor(e){return undefined===e&&(e=this),this.x=Math.floor(e.x),this.y=Math.floor(e.y),this.z=Math.floor(e.z),this}ceil(e){return undefined===e&&(e=this),this.x=Math.ceil(e.x),this.y=Math.ceil(e.y),this.z=Math.ceil(e.z),this}round(e){return undefined===e&&(e=this),this.x=Math.round(e.x),this.y=Math.round(e.y),this.z=Math.round(e.z),this}min(e){return e.x<this.x&&(this.x=e.x),e.y<this.y&&(this.y=e.y),e.z<this.z&&(this.z=e.z),this}max(e){return e.x>this.x&&(this.x=e.x),e.y>this.y&&(this.y=e.y),e.z>this.z&&(this.z=e.z),this}project(e){var t=(this.x*e.x+this.y*e.y+this.z*e.z)/(e.x*e.x+e.y*e.y+e.z*e.z);return this.x=e.x*t,this.y=e.y*t,this.z=e.z*t,this}set(e,t,s){return this.x=e,this.y=t,this.z=s,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}sub2(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}fromArray(e,t){var s,i,r;return undefined===t&&(t=0),this.x=null!=(s=e[t])?s:this.x,this.y=null!=(i=e[t+1])?i:this.y,this.z=null!=(r=e[t+2])?r:this.z,this}toString(){return "["+this.x+", "+this.y+", "+this.z+"]"}toArray(e,t){return undefined===e&&(e=[]),undefined===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}constructor(e=0,t=0,s=0){3===e.length?(this.x=e[0],this.y=e[1],this.z=e[2]):(this.x=e,this.y=t,this.z=s);}}eG.ZERO=Object.freeze(new eG(0,0,0)),eG.HALF=Object.freeze(new eG(.5,.5,.5)),eG.ONE=Object.freeze(new eG(1,1,1)),eG.UP=Object.freeze(new eG(0,1,0)),eG.DOWN=Object.freeze(new eG(0,-1,0)),eG.RIGHT=Object.freeze(new eG(1,0,0)),eG.LEFT=Object.freeze(new eG(-1,0,0)),eG.FORWARD=Object.freeze(new eG(0,0,-1)),eG.BACK=Object.freeze(new eG(0,0,1));class eH{clone(){return new this.constructor().copy(this)}copy(e){var t=e.data,s=this.data;return s[0]=t[0],s[1]=t[1],s[2]=t[2],s[3]=t[3],s[4]=t[4],s[5]=t[5],s[6]=t[6],s[7]=t[7],s[8]=t[8],this}set(e){var t=this.data;return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],this}getX(e){return undefined===e&&(e=new eG),e.set(this.data[0],this.data[1],this.data[2])}getY(e){return undefined===e&&(e=new eG),e.set(this.data[3],this.data[4],this.data[5])}getZ(e){return undefined===e&&(e=new eG),e.set(this.data[6],this.data[7],this.data[8])}equals(e){var t=this.data,s=e.data;return t[0]===s[0]&&t[1]===s[1]&&t[2]===s[2]&&t[3]===s[3]&&t[4]===s[4]&&t[5]===s[5]&&t[6]===s[6]&&t[7]===s[7]&&t[8]===s[8]}isIdentity(){var e=this.data;return 1===e[0]&&0===e[1]&&0===e[2]&&0===e[3]&&1===e[4]&&0===e[5]&&0===e[6]&&0===e[7]&&1===e[8]}setIdentity(){var e=this.data;return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1,this}toString(){return "["+this.data.join(", ")+"]"}transpose(e){ undefined===e&&(e=this);var t,s=e.data,i=this.data;return s===i?(t=s[1],i[1]=s[3],i[3]=t,t=s[2],i[2]=s[6],i[6]=t,t=s[5],i[5]=s[7],i[7]=t):(i[0]=s[0],i[1]=s[3],i[2]=s[6],i[3]=s[1],i[4]=s[4],i[5]=s[7],i[6]=s[2],i[7]=s[5],i[8]=s[8]),this}setFromMat4(e){var t=e.data,s=this.data;return s[0]=t[0],s[1]=t[1],s[2]=t[2],s[3]=t[4],s[4]=t[5],s[5]=t[6],s[6]=t[8],s[7]=t[9],s[8]=t[10],this}setFromQuat(e){var t=e.x,s=e.y,i=e.z,r=e.w,a=t+t,n=s+s,o=i+i,h=t*a,l=t*n,d=t*o,c=s*n,u=s*o,p=i*o,m=r*a,f=r*n,_=r*o,g=this.data;return g[0]=1-(c+p),g[1]=l+_,g[2]=d-f,g[3]=l-_,g[4]=1-(h+p),g[5]=u+m,g[6]=d+f,g[7]=u-m,g[8]=1-(h+c),this}invertMat4(e){var t=e.data,s=t[0],i=t[1],r=t[2],a=t[4],n=t[5],o=t[6],h=t[8],l=t[9],d=t[10],c=d*n-o*l,u=-d*a+o*h,p=l*a-n*h,m=s*c+i*u+r*p;if(0===m)this.setIdentity();else {var f=1/m,_=this.data;_[0]=c*f,_[1]=(-d*i+r*l)*f,_[2]=(o*i-r*n)*f,_[3]=u*f,_[4]=(d*s-r*h)*f,_[5]=(-o*s+r*a)*f,_[6]=p*f,_[7]=(-l*s+i*h)*f,_[8]=(n*s-i*a)*f;}return this}transformVector(e,t){ undefined===t&&(t=new eG);var s=this.data,{x:i,y:r,z:a}=e;return t.x=i*s[0]+r*s[3]+a*s[6],t.y=i*s[1]+r*s[4]+a*s[7],t.z=i*s[2]+r*s[5]+a*s[8],t}constructor(){this.data=new Float32Array(9),this.data[0]=this.data[4]=this.data[8]=1;}}eH.IDENTITY=Object.freeze(new eH),eH.ZERO=Object.freeze(new eH().set([0,0,0,0,0,0,0,0,0]));class eW{add(e){return this.x+=e.x,this.y+=e.y,this}add2(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addScaled(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}cross(e){return this.x*e.y-this.y*e.x}distance(e){var t=this.x-e.x,s=this.y-e.y;return Math.sqrt(t*t+s*s)}div(e){return this.x/=e.x,this.y/=e.y,this}div2(e,t){return this.x=e.x/t.x,this.y=e.y/t.y,this}divScalar(e){return this.x/=e,this.y/=e,this}dot(e){return this.x*e.x+this.y*e.y}equals(e){return this.x===e.x&&this.y===e.y}equalsApprox(e,t){return undefined===t&&(t=1e-6),Math.abs(this.x-e.x)<t&&Math.abs(this.y-e.y)<t}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}lengthSq(){return this.x*this.x+this.y*this.y}lerp(e,t,s){return this.x=e.x+s*(t.x-e.x),this.y=e.y+s*(t.y-e.y),this}mul(e){return this.x*=e.x,this.y*=e.y,this}mul2(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this}mulScalar(e){return this.x*=e,this.y*=e,this}normalize(e){ undefined===e&&(e=this);var t=e.x*e.x+e.y*e.y;if(t>0){var s=1/Math.sqrt(t);this.x=e.x*s,this.y=e.y*s;}return this}rotate(e){var t=Math.atan2(this.x,this.y)+e*eD.DEG_TO_RAD,s=Math.sqrt(this.x*this.x+this.y*this.y);return this.x=Math.sin(t)*s,this.y=Math.cos(t)*s,this}angle(){return Math.atan2(this.x,this.y)*eD.RAD_TO_DEG}angleTo(e){return Math.atan2(this.x*e.y+this.y*e.x,this.x*e.x+this.y*e.y)*eD.RAD_TO_DEG}floor(e){return undefined===e&&(e=this),this.x=Math.floor(e.x),this.y=Math.floor(e.y),this}ceil(e){return undefined===e&&(e=this),this.x=Math.ceil(e.x),this.y=Math.ceil(e.y),this}round(e){return undefined===e&&(e=this),this.x=Math.round(e.x),this.y=Math.round(e.y),this}min(e){return e.x<this.x&&(this.x=e.x),e.y<this.y&&(this.y=e.y),this}max(e){return e.x>this.x&&(this.x=e.x),e.y>this.y&&(this.y=e.y),this}set(e,t){return this.x=e,this.y=t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}sub2(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}subScalar(e){return this.x-=e,this.y-=e,this}fromArray(e,t){var s,i;return undefined===t&&(t=0),this.x=null!=(s=e[t])?s:this.x,this.y=null!=(i=e[t+1])?i:this.y,this}toString(){return "["+this.x+", "+this.y+"]"}toArray(e,t){return undefined===e&&(e=[]),undefined===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e}static angleRad(e,t){return Math.atan2(e.x*t.y-e.y*t.x,e.x*t.x+e.y*t.y)}constructor(e=0,t=0){2===e.length?(this.x=e[0],this.y=e[1]):(this.x=e,this.y=t);}}eW.ZERO=Object.freeze(new eW(0,0)),eW.HALF=Object.freeze(new eW(.5,.5)),eW.ONE=Object.freeze(new eW(1,1)),eW.UP=Object.freeze(new eW(0,1)),eW.DOWN=Object.freeze(new eW(0,-1)),eW.RIGHT=Object.freeze(new eW(1,0)),eW.LEFT=Object.freeze(new eW(-1,0));class eX{add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}add2(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addScaled(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w,this}div(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}div2(e,t){return this.x=e.x/t.x,this.y=e.y/t.y,this.z=e.z/t.z,this.w=e.w/t.w,this}divScalar(e){return this.x/=e,this.y/=e,this.z/=e,this.w/=e,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}equals(e){return this.x===e.x&&this.y===e.y&&this.z===e.z&&this.w===e.w}equalsApprox(e,t){return undefined===t&&(t=1e-6),Math.abs(this.x-e.x)<t&&Math.abs(this.y-e.y)<t&&Math.abs(this.z-e.z)<t&&Math.abs(this.w-e.w)<t}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}lerp(e,t,s){return this.x=e.x+s*(t.x-e.x),this.y=e.y+s*(t.y-e.y),this.z=e.z+s*(t.z-e.z),this.w=e.w+s*(t.w-e.w),this}mul(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}mul2(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this.w=e.w*t.w,this}mulScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}normalize(e){ undefined===e&&(e=this);var t=e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w;if(t>0){var s=1/Math.sqrt(t);this.x=e.x*s,this.y=e.y*s,this.z=e.z*s,this.w=e.w*s;}return this}floor(e){return undefined===e&&(e=this),this.x=Math.floor(e.x),this.y=Math.floor(e.y),this.z=Math.floor(e.z),this.w=Math.floor(e.w),this}ceil(e){return undefined===e&&(e=this),this.x=Math.ceil(e.x),this.y=Math.ceil(e.y),this.z=Math.ceil(e.z),this.w=Math.ceil(e.w),this}round(e){return undefined===e&&(e=this),this.x=Math.round(e.x),this.y=Math.round(e.y),this.z=Math.round(e.z),this.w=Math.round(e.w),this}min(e){return e.x<this.x&&(this.x=e.x),e.y<this.y&&(this.y=e.y),e.z<this.z&&(this.z=e.z),e.w<this.w&&(this.w=e.w),this}max(e){return e.x>this.x&&(this.x=e.x),e.y>this.y&&(this.y=e.y),e.z>this.z&&(this.z=e.z),e.w>this.w&&(this.w=e.w),this}set(e,t,s,i){return this.x=e,this.y=t,this.z=s,this.w=i,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}sub2(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}fromArray(e,t){var s,i,r,a;return undefined===t&&(t=0),this.x=null!=(s=e[t])?s:this.x,this.y=null!=(i=e[t+1])?i:this.y,this.z=null!=(r=e[t+2])?r:this.z,this.w=null!=(a=e[t+3])?a:this.w,this}toString(){return "["+this.x+", "+this.y+", "+this.z+", "+this.w+"]"}toArray(e,t){return undefined===e&&(e=[]),undefined===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}constructor(e=0,t=0,s=0,i=0){4===e.length?(this.x=e[0],this.y=e[1],this.z=e[2],this.w=e[3]):(this.x=e,this.y=t,this.z=s,this.w=i);}}eX.ZERO=Object.freeze(new eX(0,0,0,0)),eX.HALF=Object.freeze(new eX(.5,.5,.5,.5)),eX.ONE=Object.freeze(new eX(1,1,1,1));var ej=new eW,eY=new eG,eq=new eG,eK=new eG,eZ=new eG;class eQ{static _getPerspectiveHalfSize(e,t,s,i,r){r?(e.x=i*Math.tan(t*Math.PI/360),e.y=e.x/s):(e.y=i*Math.tan(t*Math.PI/360),e.x=e.y*s);}add2(e,t){var s=e.data,i=t.data,r=this.data;return r[0]=s[0]+i[0],r[1]=s[1]+i[1],r[2]=s[2]+i[2],r[3]=s[3]+i[3],r[4]=s[4]+i[4],r[5]=s[5]+i[5],r[6]=s[6]+i[6],r[7]=s[7]+i[7],r[8]=s[8]+i[8],r[9]=s[9]+i[9],r[10]=s[10]+i[10],r[11]=s[11]+i[11],r[12]=s[12]+i[12],r[13]=s[13]+i[13],r[14]=s[14]+i[14],r[15]=s[15]+i[15],this}add(e){return this.add2(this,e)}clone(){return new this.constructor().copy(this)}copy(e){var t=e.data,s=this.data;return s[0]=t[0],s[1]=t[1],s[2]=t[2],s[3]=t[3],s[4]=t[4],s[5]=t[5],s[6]=t[6],s[7]=t[7],s[8]=t[8],s[9]=t[9],s[10]=t[10],s[11]=t[11],s[12]=t[12],s[13]=t[13],s[14]=t[14],s[15]=t[15],this}equals(e){var t=this.data,s=e.data;return t[0]===s[0]&&t[1]===s[1]&&t[2]===s[2]&&t[3]===s[3]&&t[4]===s[4]&&t[5]===s[5]&&t[6]===s[6]&&t[7]===s[7]&&t[8]===s[8]&&t[9]===s[9]&&t[10]===s[10]&&t[11]===s[11]&&t[12]===s[12]&&t[13]===s[13]&&t[14]===s[14]&&t[15]===s[15]}isIdentity(){var e=this.data;return 1===e[0]&&0===e[1]&&0===e[2]&&0===e[3]&&0===e[4]&&1===e[5]&&0===e[6]&&0===e[7]&&0===e[8]&&0===e[9]&&1===e[10]&&0===e[11]&&0===e[12]&&0===e[13]&&0===e[14]&&1===e[15]}mul2(e,t){var s,i,r,a,n=e.data,o=t.data,h=this.data,l=n[0],d=n[1],c=n[2],u=n[3],p=n[4],m=n[5],f=n[6],_=n[7],g=n[8],v=n[9],y=n[10],x=n[11],S=n[12],b=n[13],T=n[14],w=n[15];return s=o[0],i=o[1],r=o[2],a=o[3],h[0]=l*s+p*i+g*r+S*a,h[1]=d*s+m*i+v*r+b*a,h[2]=c*s+f*i+y*r+T*a,h[3]=u*s+_*i+x*r+w*a,s=o[4],i=o[5],r=o[6],a=o[7],h[4]=l*s+p*i+g*r+S*a,h[5]=d*s+m*i+v*r+b*a,h[6]=c*s+f*i+y*r+T*a,h[7]=u*s+_*i+x*r+w*a,s=o[8],i=o[9],r=o[10],a=o[11],h[8]=l*s+p*i+g*r+S*a,h[9]=d*s+m*i+v*r+b*a,h[10]=c*s+f*i+y*r+T*a,h[11]=u*s+_*i+x*r+w*a,s=o[12],i=o[13],r=o[14],a=o[15],h[12]=l*s+p*i+g*r+S*a,h[13]=d*s+m*i+v*r+b*a,h[14]=c*s+f*i+y*r+T*a,h[15]=u*s+_*i+x*r+w*a,this}mulAffine2(e,t){var s,i,r,a=e.data,n=t.data,o=this.data,h=a[0],l=a[1],d=a[2],c=a[4],u=a[5],p=a[6],m=a[8],f=a[9],_=a[10],g=a[12],v=a[13],y=a[14];return s=n[0],i=n[1],r=n[2],o[0]=h*s+c*i+m*r,o[1]=l*s+u*i+f*r,o[2]=d*s+p*i+_*r,o[3]=0,s=n[4],i=n[5],r=n[6],o[4]=h*s+c*i+m*r,o[5]=l*s+u*i+f*r,o[6]=d*s+p*i+_*r,o[7]=0,s=n[8],i=n[9],r=n[10],o[8]=h*s+c*i+m*r,o[9]=l*s+u*i+f*r,o[10]=d*s+p*i+_*r,o[11]=0,s=n[12],i=n[13],r=n[14],o[12]=h*s+c*i+m*r+g,o[13]=l*s+u*i+f*r+v,o[14]=d*s+p*i+_*r+y,o[15]=1,this}mul(e){return this.mul2(this,e)}transformPoint(e,t){ undefined===t&&(t=new eG);var s=this.data,{x:i,y:r,z:a}=e;return t.x=i*s[0]+r*s[4]+a*s[8]+s[12],t.y=i*s[1]+r*s[5]+a*s[9]+s[13],t.z=i*s[2]+r*s[6]+a*s[10]+s[14],t}transformVector(e,t){ undefined===t&&(t=new eG);var s=this.data,{x:i,y:r,z:a}=e;return t.x=i*s[0]+r*s[4]+a*s[8],t.y=i*s[1]+r*s[5]+a*s[9],t.z=i*s[2]+r*s[6]+a*s[10],t}transformVec4(e,t){ undefined===t&&(t=new eX);var s=this.data,{x:i,y:r,z:a,w:n}=e;return t.x=i*s[0]+r*s[4]+a*s[8]+n*s[12],t.y=i*s[1]+r*s[5]+a*s[9]+n*s[13],t.z=i*s[2]+r*s[6]+a*s[10]+n*s[14],t.w=i*s[3]+r*s[7]+a*s[11]+n*s[15],t}setLookAt(e,t,s){eK.sub2(e,t).normalize(),eq.copy(s).normalize(),eY.cross(eq,eK).normalize(),eq.cross(eK,eY);var i=this.data;return i[0]=eY.x,i[1]=eY.y,i[2]=eY.z,i[3]=0,i[4]=eq.x,i[5]=eq.y,i[6]=eq.z,i[7]=0,i[8]=eK.x,i[9]=eK.y,i[10]=eK.z,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this}setFrustum(e,t,s,i,r,a){var n=2*r,o=t-e,h=i-s,l=a-r,d=this.data;return d[0]=n/o,d[1]=0,d[2]=0,d[3]=0,d[4]=0,d[5]=n/h,d[6]=0,d[7]=0,d[8]=(t+e)/o,d[9]=(i+s)/h,d[10]=(-a-r)/l,d[11]=-1,d[12]=0,d[13]=0,d[14]=-n*a/l,d[15]=0,this}setPerspective(e,t,s,i,r){return eQ._getPerspectiveHalfSize(ej,e,t,s,r),this.setFrustum(-ej.x,ej.x,-ej.y,ej.y,s,i)}setOrtho(e,t,s,i,r,a){var n=this.data;return n[0]=2/(t-e),n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=2/(i-s),n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=-2/(a-r),n[11]=0,n[12]=-(t+e)/(t-e),n[13]=-(i+s)/(i-s),n[14]=-(a+r)/(a-r),n[15]=1,this}setFromAxisAngle(e,t){t*=eD.DEG_TO_RAD;var{x:s,y:i,z:r}=e,a=Math.cos(t),n=Math.sin(t),o=1-a,h=o*s,l=o*i,d=this.data;return d[0]=h*s+a,d[1]=h*i+n*r,d[2]=h*r-n*i,d[3]=0,d[4]=h*i-n*r,d[5]=l*i+a,d[6]=l*r+n*s,d[7]=0,d[8]=h*r+n*i,d[9]=l*r-s*n,d[10]=o*r*r+a,d[11]=0,d[12]=0,d[13]=0,d[14]=0,d[15]=1,this}setTranslate(e,t,s){var i=this.data;return i[0]=1,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=1,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=1,i[11]=0,i[12]=e,i[13]=t,i[14]=s,i[15]=1,this}setScale(e,t,s){var i=this.data;return i[0]=e,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=t,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=s,i[11]=0,i[12]=0,i[13]=0,i[14]=0,i[15]=1,this}setViewport(e,t,s,i){var r=this.data;return r[0]=.5*s,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=.5*i,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=.5,r[11]=0,r[12]=e+.5*s,r[13]=t+.5*i,r[14]=.5,r[15]=1,this}setReflection(e,t){var s=e.x,i=e.y,r=e.z,a=this.data;return a[0]=1-2*s*s,a[1]=-2*s*i,a[2]=-2*s*r,a[3]=0,a[4]=-2*s*i,a[5]=1-2*i*i,a[6]=-2*i*r,a[7]=0,a[8]=-2*s*r,a[9]=-2*i*r,a[10]=1-2*r*r,a[11]=0,a[12]=-2*s*t,a[13]=-2*i*t,a[14]=-2*r*t,a[15]=1,this}invert(e){ undefined===e&&(e=this);var t=e.data,s=t[0],i=t[1],r=t[2],a=t[3],n=t[4],o=t[5],h=t[6],l=t[7],d=t[8],c=t[9],u=t[10],p=t[11],m=t[12],f=t[13],_=t[14],g=t[15],v=s*o-i*n,y=s*h-r*n,x=s*l-a*n,S=i*h-r*o,b=i*l-a*o,T=r*l-a*h,w=d*f-c*m,E=d*_-u*m,A=d*g-p*m,C=c*_-u*f,M=c*g-p*f,P=u*g-p*_,R=v*P-y*M+x*C+S*A-b*E+T*w;if(0===R)this.setIdentity();else {var I=1/R,D=this.data;D[0]=(o*P-h*M+l*C)*I,D[1]=(-i*P+r*M-a*C)*I,D[2]=(f*T-_*b+g*S)*I,D[3]=(-c*T+u*b-p*S)*I,D[4]=(-n*P+h*A-l*E)*I,D[5]=(s*P-r*A+a*E)*I,D[6]=(-m*T+_*x-g*y)*I,D[7]=(d*T-u*x+p*y)*I,D[8]=(n*M-o*A+l*w)*I,D[9]=(-s*M+i*A-a*w)*I,D[10]=(m*b-f*x+g*v)*I,D[11]=(-d*b+c*x-p*v)*I,D[12]=(-n*C+o*E-h*w)*I,D[13]=(s*C-i*E+r*w)*I,D[14]=(-m*S+f*y-_*v)*I,D[15]=(d*S-c*y+u*v)*I;}return this}set(e){var t=this.data;return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],this}setIdentity(){var e=this.data;return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}setTRS(e,t,s){var i=t.x,r=t.y,a=t.z,n=t.w,o=s.x,h=s.y,l=s.z,d=i+i,c=r+r,u=a+a,p=i*d,m=i*c,f=i*u,_=r*c,g=r*u,v=a*u,y=n*d,x=n*c,S=n*u,b=this.data;return b[0]=(1-(_+v))*o,b[1]=(m+S)*o,b[2]=(f-x)*o,b[3]=0,b[4]=(m-S)*h,b[5]=(1-(p+v))*h,b[6]=(g+y)*h,b[7]=0,b[8]=(f+x)*l,b[9]=(g-y)*l,b[10]=(1-(p+_))*l,b[11]=0,b[12]=e.x,b[13]=e.y,b[14]=e.z,b[15]=1,this}transpose(e){ undefined===e&&(e=this);var t,s=e.data,i=this.data;return s===i?(t=s[1],i[1]=s[4],i[4]=t,t=s[2],i[2]=s[8],i[8]=t,t=s[3],i[3]=s[12],i[12]=t,t=s[6],i[6]=s[9],i[9]=t,t=s[7],i[7]=s[13],i[13]=t,t=s[11],i[11]=s[14],i[14]=t):(i[0]=s[0],i[1]=s[4],i[2]=s[8],i[3]=s[12],i[4]=s[1],i[5]=s[5],i[6]=s[9],i[7]=s[13],i[8]=s[2],i[9]=s[6],i[10]=s[10],i[11]=s[14],i[12]=s[3],i[13]=s[7],i[14]=s[11],i[15]=s[15]),this}getTranslation(e){return undefined===e&&(e=new eG),e.set(this.data[12],this.data[13],this.data[14])}getX(e){return undefined===e&&(e=new eG),e.set(this.data[0],this.data[1],this.data[2])}getY(e){return undefined===e&&(e=new eG),e.set(this.data[4],this.data[5],this.data[6])}getZ(e){return undefined===e&&(e=new eG),e.set(this.data[8],this.data[9],this.data[10])}getScale(e){return undefined===e&&(e=new eG),this.getX(eY),this.getY(eq),this.getZ(eK),e.set(eY.length(),eq.length(),eK.length()),e}get scaleSign(){return this.getX(eY),this.getY(eq),this.getZ(eK),eY.cross(eY,eq),0>eY.dot(eK)?-1:1}setFromEulerAngles(e,t,s){e*=eD.DEG_TO_RAD,t*=eD.DEG_TO_RAD,s*=eD.DEG_TO_RAD;var i=Math.sin(-e),r=Math.cos(-e),a=Math.sin(-t),n=Math.cos(-t),o=Math.sin(-s),h=Math.cos(-s),l=this.data;return l[0]=n*h,l[1]=-n*o,l[2]=a,l[3]=0,l[4]=r*o+h*i*a,l[5]=r*h-i*a*o,l[6]=-n*i,l[7]=0,l[8]=i*o-r*h*a,l[9]=h*i+r*a*o,l[10]=r*n,l[11]=0,l[12]=0,l[13]=0,l[14]=0,l[15]=1,this}getEulerAngles(e){ undefined===e&&(e=new eG),this.getScale(eZ);var t,s,i=eZ.x,r=eZ.y,a=eZ.z;if(0===i||0===r||0===a)return e.set(0,0,0);var n=this.data,o=Math.asin(-n[2]/i),h=.5*Math.PI;return o<h?o>-h?(t=Math.atan2(n[6]/r,n[10]/a),s=Math.atan2(n[1]/i,n[0]/i)):(s=0,t=-Math.atan2(n[4]/r,n[5]/r)):(s=0,t=Math.atan2(n[4]/r,n[5]/r)),e.set(t,o,s).mulScalar(eD.RAD_TO_DEG)}toString(){return "["+this.data.join(", ")+"]"}constructor(){this.data=new Float32Array(16),this.data[0]=this.data[5]=this.data[10]=this.data[15]=1;}}eQ.IDENTITY=Object.freeze(new eQ),eQ.ZERO=Object.freeze(new eQ().set([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]));class eJ{clone(){return new this.constructor(this.x,this.y,this.z,this.w)}conjugate(e){return undefined===e&&(e=this),this.x=-1*e.x,this.y=-1*e.y,this.z=-1*e.z,this.w=e.w,this}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w,this}equals(e){return this.x===e.x&&this.y===e.y&&this.z===e.z&&this.w===e.w}equalsApprox(e,t){return undefined===t&&(t=1e-6),Math.abs(this.x-e.x)<t&&Math.abs(this.y-e.y)<t&&Math.abs(this.z-e.z)<t&&Math.abs(this.w-e.w)<t}getAxisAngle(e){var t=2*Math.acos(this.w),s=Math.sin(t/2);return 0!==s?(e.x=this.x/s,e.y=this.y/s,e.z=this.z/s,(e.x<0||e.y<0||e.z<0)&&(e.x*=-1,e.y*=-1,e.z*=-1,t*=-1)):(e.x=1,e.y=0,e.z=0),t*eD.RAD_TO_DEG}getEulerAngles(e){ undefined===e&&(e=new eG);var t,s,i,r=this.x,a=this.y,n=this.z,o=this.w,h=2*(o*a-r*n);return h<=-0.99999?(t=2*Math.atan2(r,o),s=-Math.PI/2,i=0):h>=.99999?(t=2*Math.atan2(r,o),s=Math.PI/2,i=0):(t=Math.atan2(2*(o*r+a*n),1-2*(r*r+a*a)),s=Math.asin(h),i=Math.atan2(2*(o*n+r*a),1-2*(a*a+n*n))),e.set(t,s,i).mulScalar(eD.RAD_TO_DEG)}invert(e){return undefined===e&&(e=this),this.conjugate(e).normalize()}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}mul(e){var t=this.x,s=this.y,i=this.z,r=this.w,a=e.x,n=e.y,o=e.z,h=e.w;return this.x=r*a+t*h+s*o-i*n,this.y=r*n+s*h+i*a-t*o,this.z=r*o+i*h+t*n-s*a,this.w=r*h-t*a-s*n-i*o,this}mulScalar(e,t){return undefined===t&&(t=this),this.x=t.x*e,this.y=t.y*e,this.z=t.z*e,this.w=t.w*e,this}mul2(e,t){var s=e.x,i=e.y,r=e.z,a=e.w,n=t.x,o=t.y,h=t.z,l=t.w;return this.x=a*n+s*l+i*h-r*o,this.y=a*o+i*l+r*n-s*h,this.z=a*h+r*l+s*o-i*n,this.w=a*l-s*n-i*o-r*h,this}normalize(e){ undefined===e&&(e=this);var t=e.length();return 0===t?(this.x=this.y=this.z=0,this.w=1):(t=1/t,this.x=e.x*t,this.y=e.y*t,this.z=e.z*t,this.w=e.w*t),this}set(e,t,s,i){return this.x=e,this.y=t,this.z=s,this.w=i,this}setFromAxisAngle(e,t){var s=Math.sin(t*=.5*eD.DEG_TO_RAD),i=Math.cos(t);return this.x=s*e.x,this.y=s*e.y,this.z=s*e.z,this.w=i,this}setFromEulerAngles(e,t,s){if(e instanceof eG){var i=e;e=i.x,t=i.y,s=i.z;}var r=.5*eD.DEG_TO_RAD;e*=r,t*=r,s*=r;var a=Math.sin(e),n=Math.cos(e),o=Math.sin(t),h=Math.cos(t),l=Math.sin(s),d=Math.cos(s);return this.x=a*h*d-n*o*l,this.y=n*o*d+a*h*l,this.z=n*h*l-a*o*d,this.w=n*h*d+a*o*l,this}setFromMat4(e){var t,s=e.data,i=s[0],r=s[1],a=s[2],n=s[4],o=s[5],h=s[6],l=s[8],d=s[9],c=s[10];return 0==(t=i*i+r*r+a*a)?this.set(0,0,0,1):(i*=t=1/Math.sqrt(t),r*=t,a*=t,0==(t=n*n+o*o+h*h))?this.set(0,0,0,1):(n*=t=1/Math.sqrt(t),o*=t,h*=t,0==(t=l*l+d*d+c*c))?this.set(0,0,0,1):(l*=t=1/Math.sqrt(t),d*=t,(c*=t)<0?i>o?this.set(1+i-o-c,r+n,l+a,h-d):this.set(r+n,1-i+o-c,h+d,l-a):i<-o?this.set(l+a,h+d,1-i-o+c,r-n):this.set(h-d,l-a,r-n,1+i+o+c),this.mulScalar(1/this.length()))}setFromDirections(e,t){var s=1+e.dot(t);return s<Number.EPSILON?(Math.abs(e.x)>Math.abs(e.y)?(this.x=-e.z,this.y=0,this.z=e.x):(this.x=0,this.y=-e.z,this.z=e.y),this.w=0):(this.x=e.y*t.z-e.z*t.y,this.y=e.z*t.x-e.x*t.z,this.z=e.x*t.y-e.y*t.x,this.w=s),this.normalize()}slerp(e,t,s){var i=e.x,r=e.y,a=e.z,n=e.w,o=t.x,h=t.y,l=t.z,d=t.w,c=n*d+i*o+r*h+a*l;if(c<0&&(d=-d,o=-o,h=-h,l=-l,c=-c),Math.abs(c)>=1)return this.w=n,this.x=i,this.y=r,this.z=a,this;var u=Math.acos(c),p=Math.sqrt(1-c*c);if(.001>Math.abs(p))return this.w=.5*n+.5*d,this.x=.5*i+.5*o,this.y=.5*r+.5*h,this.z=.5*a+.5*l,this;var m=Math.sin((1-s)*u)/p,f=Math.sin(s*u)/p;return this.w=n*m+d*f,this.x=i*m+o*f,this.y=r*m+h*f,this.z=a*m+l*f,this}transformVector(e,t){ undefined===t&&(t=new eG);var s=e.x,i=e.y,r=e.z,a=this.x,n=this.y,o=this.z,h=this.w,l=h*s+n*r-o*i,d=h*i+o*s-a*r,c=h*r+a*i-n*s,u=-a*s-n*i-o*r;return t.x=l*h+-(u*a)+-(d*o)- -(c*n),t.y=d*h+-(u*n)+-(c*a)- -(l*o),t.z=c*h+-(u*o)+-(l*n)- -(d*a),t}toString(){return "["+this.x+", "+this.y+", "+this.z+", "+this.w+"]"}constructor(e=0,t=0,s=0,i=1){4===e.length?(this.x=e[0],this.y=e[1],this.z=e[2],this.w=e[3]):(this.x=e,this.y=t,this.z=s,this.w=i);}}eJ.IDENTITY=Object.freeze(new eJ(0,0,0,1)),eJ.ZERO=Object.freeze(new eJ(0,0,0,0));var e$=new eG,e0=new eG,e1=new eG,e2=new eG,e3=new eG;class e4{add(e){var t=this.center,s=t.x,i=t.y,r=t.z,a=this.halfExtents,n=a.x,o=a.y,h=a.z,l=s-n,d=s+n,c=i-o,u=i+o,p=r-h,m=r+h,f=e.center,_=f.x,g=f.y,v=f.z,y=e.halfExtents,x=y.x,S=y.y,b=y.z,T=_-x,w=_+x,E=g-S,A=g+S,C=v-b,M=v+b;T<l&&(l=T),w>d&&(d=w),E<c&&(c=E),A>u&&(u=A),C<p&&(p=C),M>m&&(m=M),t.x=(l+d)*.5,t.y=(c+u)*.5,t.z=(p+m)*.5,a.x=(d-l)*.5,a.y=(u-c)*.5,a.z=(m-p)*.5;}copy(e){this.center.copy(e.center),this.halfExtents.copy(e.halfExtents);}clone(){return new e4(this.center,this.halfExtents)}intersects(e){var t=this.getMax(),s=this.getMin(),i=e.getMax(),r=e.getMin();return s.x<=i.x&&t.x>=r.x&&s.y<=i.y&&t.y>=r.y&&s.z<=i.z&&t.z>=r.z}_intersectsRay(e,t){var s=e$.copy(this.getMin()).sub(e.origin),i=e0.copy(this.getMax()).sub(e.origin),r=e.direction;0===r.x?(s.x=s.x<0?-Number.MAX_VALUE:Number.MAX_VALUE,i.x=i.x<0?-Number.MAX_VALUE:Number.MAX_VALUE):(s.x/=r.x,i.x/=r.x),0===r.y?(s.y=s.y<0?-Number.MAX_VALUE:Number.MAX_VALUE,i.y=i.y<0?-Number.MAX_VALUE:Number.MAX_VALUE):(s.y/=r.y,i.y/=r.y),0===r.z?(s.z=s.z<0?-Number.MAX_VALUE:Number.MAX_VALUE,i.z=i.z<0?-Number.MAX_VALUE:Number.MAX_VALUE):(s.z/=r.z,i.z/=r.z);var a=e1.set(Math.min(s.x,i.x),Math.min(s.y,i.y),Math.min(s.z,i.z)),n=e2.set(Math.max(s.x,i.x),Math.max(s.y,i.y),Math.max(s.z,i.z)),o=Math.min(Math.min(n.x,n.y),n.z),h=Math.max(Math.max(a.x,a.y),a.z),l=o>=h&&h>=0;return l&&t.copy(e.direction).mulScalar(h).add(e.origin),l}_fastIntersectsRay(e){var t=e.direction;return e$.sub2(e.origin,this.center),e2.set(Math.abs(e$.x),Math.abs(e$.y),Math.abs(e$.z)),e1.mul2(e$,t),(!(e2.x>this.halfExtents.x)||!(e1.x>=0))&&(!(e2.y>this.halfExtents.y)||!(e1.y>=0))&&(!(e2.z>this.halfExtents.z)||!(e1.z>=0))&&(e3.set(Math.abs(t.x),Math.abs(t.y),Math.abs(t.z)),e0.cross(t,e$),e0.set(Math.abs(e0.x),Math.abs(e0.y),Math.abs(e0.z)),!(e0.x>this.halfExtents.y*e3.z+this.halfExtents.z*e3.y)&&!(e0.y>this.halfExtents.x*e3.z+this.halfExtents.z*e3.x)&&!(e0.z>this.halfExtents.x*e3.y+this.halfExtents.y*e3.x))}intersectsRay(e,t){return t?this._intersectsRay(e,t):this._fastIntersectsRay(e)}setMinMax(e,t){this.center.add2(t,e).mulScalar(.5),this.halfExtents.sub2(t,e).mulScalar(.5);}getMin(){return this._min.copy(this.center).sub(this.halfExtents)}getMax(){return this._max.copy(this.center).add(this.halfExtents)}containsPoint(e){var t=this.getMin(),s=this.getMax();return !(e.x<t.x)&&!(e.x>s.x)&&!(e.y<t.y)&&!(e.y>s.y)&&!(e.z<t.z)&&!(e.z>s.z)}setFromTransformedAabb(e,t,s){ undefined===s&&(s=false);var i=e.center,r=e.halfExtents,a=t.data,n=a[0],o=a[4],h=a[8],l=a[1],d=a[5],c=a[9],u=a[2],p=a[6],m=a[10];if(s){var f=n*n+o*o+h*h;if(f>0){var _=1/Math.sqrt(f);n*=_,o*=_,h*=_;}if((f=l*l+d*d+c*c)>0){var g=1/Math.sqrt(f);l*=g,d*=g,c*=g;}if((f=u*u+p*p+m*m)>0){var v=1/Math.sqrt(f);u*=v,p*=v,m*=v;}}this.center.set(a[12]+n*i.x+o*i.y+h*i.z,a[13]+l*i.x+d*i.y+c*i.z,a[14]+u*i.x+p*i.y+m*i.z),this.halfExtents.set(Math.abs(n)*r.x+Math.abs(o)*r.y+Math.abs(h)*r.z,Math.abs(l)*r.x+Math.abs(d)*r.y+Math.abs(c)*r.z,Math.abs(u)*r.x+Math.abs(p)*r.y+Math.abs(m)*r.z);}static computeMinMax(e,t,s,i){if(undefined===i&&(i=e.length/3),i>0){for(var r=e[0],a=e[1],n=e[2],o=r,h=a,l=n,d=3*i,c=3;c<d;c+=3){var u=e[c],p=e[c+1],m=e[c+2];u<r&&(r=u),p<a&&(a=p),m<n&&(n=m),u>o&&(o=u),p>h&&(h=p),m>l&&(l=m);}t.set(r,a,n),s.set(o,h,l);}}compute(e,t){e4.computeMinMax(e,e$,e0,t),this.setMinMax(e$,e0);}intersectsBoundingSphere(e){return this._distanceToBoundingSphereSq(e)<=e.radius*e.radius}_distanceToBoundingSphereSq(e){for(var t=this.getMin(),s=this.getMax(),i=0,r=["x","y","z"],a=0;a<3;++a){var n=0,o=e.center[r[a]],h=t[r[a]],l=s[r[a]],d=0;o<h&&(n+=(d=h-o)*d),o>l&&(n+=(d=o-