@maptalks/3dtiles 0.94.0 → 0.95.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,11 @@
1
1
  /*!
2
- * @maptalks/3dtiles v0.94.0
2
+ * @maptalks/3dtiles v0.95.0
3
3
  * LICENSE : UNLICENSED
4
4
  * (c) 2016-2023 maptalks.org
5
5
  */
6
- import*as t from"maptalks";import*as e from"@maptalks/gl";import{reshader as n,mat4 as r,HighlightUtil as s,vec3 as i,quat as o,mat3 as a,vec4 as c,MaskRendererMixin as h,createREGL as u,MaskLayerMixin as l}from"@maptalks/gl";import{intersectsBox as f,intersectsSphere as d,intersectsOrientedBox as m}from"frustum-intersects";import{GLTFLoader as p,Ajax as b}from"@maptalks/gltf-loader";import{quat as g,mat4 as y,vec3 as w,mat3 as v}from"gl-matrix";const T='function(t){var e="undefined"!=typeof Float32Array?Float32Array:Array;function n(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t}function r(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function s(t,e,n){var r=e[0],s=e[1],i=e[2],o=e[3],a=e[4],c=e[5],u=e[6],f=e[7],h=e[8],l=e[9],d=e[10],y=e[11],m=e[12],b=e[13],p=e[14],w=e[15],g=n[0],v=n[1],M=n[2],T=n[3];return t[0]=g*r+v*a+M*h+T*m,t[1]=g*s+v*c+M*l+T*b,t[2]=g*i+v*u+M*d+T*p,t[3]=g*o+v*f+M*y+T*w,g=n[4],v=n[5],M=n[6],T=n[7],t[4]=g*r+v*a+M*h+T*m,t[5]=g*s+v*c+M*l+T*b,t[6]=g*i+v*u+M*d+T*p,t[7]=g*o+v*f+M*y+T*w,g=n[8],v=n[9],M=n[10],T=n[11],t[8]=g*r+v*a+M*h+T*m,t[9]=g*s+v*c+M*l+T*b,t[10]=g*i+v*u+M*d+T*p,t[11]=g*o+v*f+M*y+T*w,g=n[12],v=n[13],M=n[14],T=n[15],t[12]=g*r+v*a+M*h+T*m,t[13]=g*s+v*c+M*l+T*b,t[14]=g*i+v*u+M*d+T*p,t[15]=g*o+v*f+M*y+T*w,t}function i(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t}function o(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function a(t,e){var n=e[0],r=e[1],s=e[2],i=e[3],o=n+n,a=r+r,c=s+s,u=n*o,f=r*o,h=r*a,l=s*o,d=s*a,y=s*c,m=i*o,b=i*a,p=i*c;return t[0]=1-h-y,t[1]=f+p,t[2]=l-b,t[3]=0,t[4]=f-p,t[5]=1-u-y,t[6]=d+m,t[7]=0,t[8]=l+b,t[9]=d-m,t[10]=1-u-h,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function c(t,e){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]}function u(){var t=new e(3);return e!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function f(t){var e=t[0],n=t[1],r=t[2];return Math.sqrt(e*e+n*n+r*r)}function h(t,n,r){var s=new e(3);return s[0]=t,s[1]=n,s[2]=r,s}function l(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function d(t,e,n,r){return t[0]=e,t[1]=n,t[2]=r,t}function y(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t}function m(t,e,n){return t[0]=e[0]*n[0],t[1]=e[1]*n[1],t[2]=e[2]*n[2],t}function b(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t}function p(t,e){var n=e[0],r=e[1],s=e[2],i=n*n+r*r+s*s;return i>0&&(i=1/Math.sqrt(i),t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*i),t}function w(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function g(t,e,n){var r=e[0],s=e[1],i=e[2],o=n[0],a=n[1],c=n[2];return t[0]=s*c-i*a,t[1]=i*o-r*c,t[2]=r*a-s*o,t}function v(t,e,n){var r=e[0],s=e[1],i=e[2],o=n[3]*r+n[7]*s+n[11]*i+n[15];return o=o||1,t[0]=(n[0]*r+n[4]*s+n[8]*i+n[12])/o,t[1]=(n[1]*r+n[5]*s+n[9]*i+n[13])/o,t[2]=(n[2]*r+n[6]*s+n[10]*i+n[14])/o,t}var M=function(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t},T=m,A=f;function _(t,e,n,r,s){return t[0]=e,t[1]=n,t[2]=r,t[3]=s,t}function O(t,e,n){var r=e[0],s=e[1],i=e[2],o=e[3];return t[0]=n[0]*r+n[4]*s+n[8]*i+n[12]*o,t[1]=n[1]*r+n[5]*s+n[9]*i+n[13]*o,t[2]=n[2]*r+n[6]*s+n[10]*i+n[14]*o,t[3]=n[3]*r+n[7]*s+n[11]*i+n[15]*o,t}function S(){var t=new e(4);return e!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t[3]=1,t}function x(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t}function I(t,e,n,r){var s=e[0],i=e[1],o=e[2],a=e[3],c=n[0],u=n[1],f=n[2],h=n[3],l=void 0,d=void 0,y=void 0,m=void 0,b=void 0;return(d=s*c+i*u+o*f+a*h)<0&&(d=-d,c=-c,u=-u,f=-f,h=-h),1-d>1e-6?(l=Math.acos(d),y=Math.sin(l),m=Math.sin((1-r)*l)/y,b=Math.sin(r*l)/y):(m=1-r,b=r),t[0]=m*s+b*c,t[1]=m*i+b*u,t[2]=m*o+b*f,t[3]=m*a+b*h,t}u(),function(){var t,n=(t=new e(4),e!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t)}();var k,E=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t};u(),h(1,0,0),h(0,1,0),S(),S(),k=new e(9),e!=Float32Array&&(k[1]=0,k[2]=0,k[3]=0,k[5]=0,k[6]=0,k[7]=0),k[0]=1,k[4]=1,k[8]=1;\n/*!\n * @maptalks/gltf-loader v0.94.0\n * LICENSE : UNLICENSED\n * (c) 2016-2023 maptalks.org\n */\nlet C=0;function U(t){return null==t}function N(t){return!U(t)}function F(t){return!U(t)&&("string"==typeof t||null!==t.constructor&&t.constructor===String)}function P(t){for(let e=1;e<arguments.length;e++){const n=arguments[e];for(const e in n)t[e]=n[e]}return t}function B(t){switch(t){case 5120:return Int8Array;case 5121:return Uint8Array;case 5122:return Int16Array;case 5123:return Uint16Array;case 5124:return Int32Array;case 5125:return Uint32Array;case 5126:return Float32Array}throw new Error("unsupported bufferView\'s component type: "+t)}function D(t){return 0===t.indexOf("data:")&&t.indexOf("base64,")>0}function R(t){const e=function(t){return"undefined"!=typeof self?self.atob(t):window.atob(t)}(t.substring(t.indexOf(",")+1)),n=e.length,r=new Uint8Array(n);for(let t=0;t<n;t++)r[t]=e.charCodeAt(t);return r.buffer}const L=[],j=[],z=[],V=[0,0,0],q=x([]),G=[1,1,1];function $(t,e,n,r,s,i,o){const a=B(o);if((0===s||s===r*a.BYTES_PER_ELEMENT)&&i%a.BYTES_PER_ELEMENT==0){const s=new a(e,i,n*r);return t.set(s),t}0===s&&(s=r*a.BYTES_PER_ELEMENT);const c=new Uint8Array(r*a.BYTES_PER_ELEMENT);for(let o=0;o<n;o++){let n=null;const u=new Uint8Array(e,s*o+i,r*a.BYTES_PER_ELEMENT);c.set(u),n=new a(c.buffer,0,r);for(let e=0;e<r;e++)t[o*r+e]=n[e]}return t}const X="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;function H(t,e,n){const r=new Uint8Array(t,e,n);return X.decode(r)}const J={get:function(t,e={}){e||(e={});const n=new AbortController,r=n.signal,s=P({},e);s.signal=r,s.method||(s.method="GET");const i=fetch(t,s).then(t=>{const n=this.t(t,e.responseType);return n.message?n:n.then(n=>"arraybuffer"===e.responseType?{data:n,cacheControl:t.headers.get("Cache-Control"),expires:t.headers.get("Expires"),contentType:t.headers.get("Content-Type")}:n).catch(t=>{if(!t.code||t.code!==DOMException.ABORT_ERR)throw t})}).catch(t=>{if(!t.code||t.code!==DOMException.ABORT_ERR)throw t});return i.xhr=n,i},t:(t,e)=>200!==t.status?{status:t.status,statusText:t.statusText,message:`incorrect http request with status code(${t.status}): ${t.statusText}`}:"arraybuffer"===e?t.arrayBuffer():"json"===e?t.json():t.text(),getArrayBuffer:(t,e={})=>(e||(e={}),e.responseType="arraybuffer",J.get(t,e)),getJSON:function(t,e={}){return e&&e.jsonp?J.jsonp(t):((e=e||{}).responseType="json",J.get(t,e))},jsonp:function(t){const e="_maptalks_jsonp_"+C++;t.match(/\\?/)?t+="&callback="+e:t+="?callback="+e;let n=document.createElement("script");return n.type="text/javascript",n.src=t,new Promise(t=>{window[e]=function(r){document.getElementsByTagName("head")[0].removeChild(n),n=null,delete window[e],t(r)},document.getElementsByTagName("head")[0].appendChild(n)})}};class K{constructor(t,e,n){this.s=t,this.decoders=e,this.i=n,this.images={},this.o={}}requestImageFromBufferURI(t,e,n){if(this.buffers[t.id]){const r=this.buffers[t.id],s=this.u(e,r);return this.getImageByBuffer(s,n)}if(this.o[t.id])return this.o[t.id].then(()=>{const r=this.buffers[t.id],s=this.u(e,r);return this.getImageByBuffer(s,n)});if(D(t.uri)){const r=this.buffers[t.id]=R(t.uri),s=this.u(e,r);return this.getImageByBuffer(s,n)}let r;const s=t.uri.indexOf("blob:")>=0;return r=t.uri.indexOf("://")>0||s?t.uri:this.rootPath+"/"+t.uri,this.o[t.id]=J.getArrayBuffer(r,null).then(r=>{const s=this.buffers[t.id]=r.data,i=this.u(e,s);return this.getImageByBuffer(i,n)})}getImageByBuffer(t,e){if(this.images[e.id])return Promise.resolve(this.images[e.id]);const n=this.decoders;return n[e.mimeType]?n[e.mimeType](t,{supportedFormats:this.i}):"image/crn"===e.mimeType||"image/ktx2"===e.mimeType||"image/cttf"===e.mimeType?(console.warn("missing transcoder for "+e.mimeType,", visit https://maptalks.com/docs/transcoders for details"),Promise.resolve(null)):this.h(e.id,t)}requestExternalImage(t){if(this.images[t.id])return Promise.resolve(this.images[t.id]);const e=0===t.uri.indexOf("data:image/")?t.uri:this.rootPath+"/"+t.uri;return this.o[t.id]?this.o[t.id].then(()=>this.images[t.id]):this.o[t.id]=this.h(t.id,e)}h(t,e){return new Promise((n,r)=>{this.s(e,(s,i)=>{s?r(s):(URL.revokeObjectURL(e),this.images[t]=i,n(this.images[t]))})})}}const Y=["SCALAR",1,"VEC2",2,"VEC3",3,"VEC4",4,"MAT2",4,"MAT3",9,"MAT4",16],Q=[];class W{constructor(t,e,n){this.rootPath=t,this.gltf=e,this.m=!1,this.glbBuffer=n,this.buffers={},this.requests={},this.accessors={},this.p()}v(t,e){const n=this.gltf,r=n.accessors[e];if(void 0===r.bufferView)return this.accessors[r.id]=this.M(t,e,null,0),Promise.resolve(this.accessors[r.id]);if(r&&this.accessors[r.id])return Promise.resolve(this.accessors[r.id]);const s=n.bufferViews[r.bufferView];return this.T(s).then(n=>{const{buffer:s,byteOffset:i}=n;return this.accessors[r.id]=this.M(t,e,s,i)})}T(t){const e=this.gltf.buffers[t.buffer];if(this.buffers[e.id]){const t=this.buffers[e.id];return Promise.resolve({buffer:t,byteOffset:0})}if(this.requests[e.id])return this.requests[e.id].then(()=>{const t=this.buffers[e.id];return Promise.resolve({buffer:t,byteOffset:0})});if("binary_glTF"!==t.buffer&&"KHR_binary_glTF"!==t.buffer&&e.uri){if(D(e.uri)){const t=this.buffers[e.id]=R(e.uri);return Promise.resolve({buffer:t,byteOffset:0})}let t;const n=e.uri.indexOf("blob:")>=0;return t=e.uri.indexOf("://")>0||n?e.uri:this.rootPath+"/"+e.uri,this.requests[e.id]=J.getArrayBuffer(t,null).then(r=>(n&&URL.revokeObjectURL(t),{buffer:this.buffers[e.id]=r.data,byteOffset:0}))}return Promise.resolve({buffer:this.glbBuffer.buffer,byteOffset:this.glbBuffer.byteOffset})}M(t,e,n,r=0){const s=this.gltf,i=s.accessors[e],o=void 0!==i.bufferView?s.bufferViews[i.bufferView]:{},a=(o.byteOffset||0)+r,c=this.A(i.type),u=B(i.componentType),f=o.byteStride||0,h={array:void 0,name:t,accessorName:e,byteLength:i.count*c*u.BYTES_PER_ELEMENT,componentType:i.componentType,count:i.count,type:i.type,itemSize:c,max:i.max,min:i.min,extensions:i.extensions};if(i.min&&(h.min=i.min),i.max&&(h.max=i.max),n)if(this.m)h.byteStride=f,h.byteOffset=a+(i.byteOffset||0),!f||f===c*u.BYTES_PER_ELEMENT||"indices"===t||"input"===t||"output"===t||t.indexOf("morph")>=0?(h.array=this._(n,i.count,c,a+(i.byteOffset||0),u),h.array.buffer.byteLength===h.byteLength&&(h.byteOffset=0)):h.array=new Uint8Array(n,a,o.byteLength);else if(i.interleaved){h.byteStride=0,h.byteOffset=0;const t=new u(i.count*c);if(h.array=$(t,n,i.count,c,f,a+(i.byteOffset||0),i.componentType),h.extensions&&h.extensions.WEB3D_quantized_attributes&&c>2){const t=new Float32Array(h.array.length),{decodeMatrix:e}=h.extensions.WEB3D_quantized_attributes;for(let n=0;n<h.array.length;n+=c){Q[0]=h.array[n],Q[1]=h.array[n+1],Q[2]=h.array[n+2],Q[3]=1;const r=O(Q,Q,e);t[n]=r[0],t[n+1]=r[1],t[n+2]=r[2]}h.componentType=5126,h.array=t}}else h.byteStride=0,h.array=this._(n,i.count,c,a+(i.byteOffset||0),u),h.byteOffset=h.array.byteOffset;else{h.array=new u(i.count);const t=h.min||h.max;t&&(h.array[0]=t[0],h.array[1]=t[1],h.array[2]=t[2])}return h}p(){const t=this.gltf.accessors;if(Array.isArray(t))for(let e=0;e<t.length;e++)for(let n=0;n<t.length;n++)e!==n&&t[e].bufferView===t[n].bufferView&&(t[e].interleaved=t[n].interleaved=!0);else for(const e in t)for(const n in t)e!==n&&t[e].bufferView===t[n].bufferView&&(t[e].interleaved=t[n].interleaved=!0)}_(t,e,n,r,s){return r%s.BYTES_PER_ELEMENT!=0&&(t=t.slice(r,r+e*n*s.BYTES_PER_ELEMENT),r=0),new s(t,r,n*e)}A(t){const e=Y.indexOf(t);return Y[e+1]}requestKHRTechniquesWebgl(t){const{shaders:e}=t,n=e.map(t=>{if(void 0!==t.bufferView){const e=this.gltf.bufferViews[t.bufferView],{byteLength:n}=e;return this.T(e).then(r=>{const{buffer:s,byteOffset:i}=r,o=H(s,i+(e.byteOffset||0),n);return t.content=o,t})}if(t.uri){if(D(t.uri)){const e=R(t.uri),n=H(e,0,e.byteLength);return t.content=n,Promise.resolve(t)}{const e=this.rootPath+"/"+t.uri;return J.get(e).then(e=>(t.content=e,t))}}return Promise.resolve(t)});return Promise.all(n).then(()=>t)}}class Z extends K{constructor(t,e,n,r,s,i){super(r,s,i),this.rootPath=t,this.gltf=e,this.requests={},this.buffers={},this.glbBuffer=n,this.accessor=new W(t,e,n)}iterate(t,e){const n=this.gltf[e];if(!n)return;let r=0;for(const e in n)t(e,n[e],r++)}createNode(t){const e={};if(N(t.name)&&(e.name=t.name),N(t.children)&&(e.children=t.children),N(t.jointName)&&(e.jointName=t.jointName),N(t.matrix)&&(e.matrix=t.matrix),N(t.rotation)&&(e.rotation=t.rotation),N(t.scale)&&(e.scale=t.scale),N(t.translation)&&(e.translation=t.translation),N(t.extras)&&(e.extras=t.extras),N(t.meshes)&&(e.mesh=t.meshes[0]),e.translation||e.rotation||e.scale){const t=function(t,e){if(e.matrix)return e.matrix;if(e.translation||e.scale||e.rotation){const n=i(L,e.translation||V),r=a(j,e.rotation||q),c=o(z,e.scale||G);return s(c,r,c),s(t,n,c)}return r(t)}([],e);delete e.translation,delete e.rotation,delete e.scale,e.matrix=t}return e}O(t){const e={};for(const n in t){const r=t[n];let s,i;r.instanceTechnique&&r.instanceTechnique.values?(s=r.instanceTechnique,i=s.values.diffuse):(s=r,i=s.values.tex||s.values.diffuseTex||s.values.diffuse);const o={baseColorTexture:{index:i}};r.name&&(o.name=r.name),r.extensions&&(o.extensions=r.extensions),r.extras&&(o.extras=r.extras),e[n]=o}return e}S(t){if(t.bufferView||t.extensions&&(t.extensions.KHR_binary_glTF||t.extensions.binary_glTF)){const e=t.bufferView?t:t.extensions.KHR_binary_glTF||t.extensions.binary_glTF;t.extensions&&(t.mimeType=e.mimeType,t.width=e.width,t.height=e.height);const n=this.gltf.bufferViews[e.bufferView],r=(n.byteOffset||0)+this.glbBuffer.byteOffset,s=n.byteLength,i=this.buffers[e.bufferView]=new Uint8Array(this.glbBuffer.buffer,r,s);return this.getImageByBuffer(i,t)}return this.requestExternalImage(t)}I(t){const e=this.gltf.textures[t];if(!e)return null;const n=this.gltf.images[e.source];return this.S(n).then(t=>{const r=this.gltf.samplers[e.sampler];return{image:{array:t.data,width:t.width,height:t.height,index:e.source,mimeType:n.mimeType,name:n.name,extras:n.extras},sampler:r}})}getBaseColorTexture(t){const e=this.gltf.materials[t];let n,r;if(e.instanceTechnique&&e.instanceTechnique.values?(n=e.instanceTechnique,r=n.values.diffuse):(n=e,r=n.values.tex||n.values.diffuseTex||n.values.diffuse),void 0===r||void 0===this.gltf.textures)return null;const s=this.gltf.textures[r];if(!s)return null;const i=this.gltf.samplers[s.sampler];return{format:s.format||6408,internalFormat:s.internalFormat||6408,type:s.type||5121,sampler:i,source:this.gltf.images[s.source]}}getMaterial(){return null}getAnimations(){return null}}class tt extends K{constructor(t,e,n,r,s,i){super(r,s,i),this.rootPath=t,this.gltf=e,this.glbBuffer=n,this.buffers={},this.requests={},this.accessor=new W(t,e,n)}iterate(t,e){const n=this.gltf[e];if(n)for(let e=0;e<n.length;e++)t(e,n[e],e)}createNode(t){const e={};return P(e,t),!N(t.weights)&&this.gltf.meshes&&N(e.mesh)?e.weights=this.gltf.meshes[e.mesh].weights:t.weights&&(e.weights=t.weights),e}I(t){const e=this.gltf.textures[t];if(!e)return null;let n=e.source;if(e.extensions&&e.extensions.EXT_texture_webp&&(n=e.extensions.EXT_texture_webp.source),!N(n))return null;const r=this.gltf.images[n];return this.S(r).then(t=>{if(!t)return null;const n={image:{array:t.data,mipmap:t.mipmap,width:t.width,height:t.height,index:e.source,mimeType:r.mimeType,name:r.name,extensions:r.extensions,extras:r.extras}};P(n,e);const s=N(e.sampler)?this.gltf.samplers[e.sampler]:void 0;return s&&(n.sampler=s,n.sampler.magFilter=s.magFilter||9729,n.sampler.minFilter=s.minFilter||9729,n.sampler.wrapS=s.wrapS||10497,n.sampler.wrapT=s.wrapT||10497),t.format&&(n.format=t.format),n})}S(t){if(!N(t.bufferView))return this.requestExternalImage(t);{const e=this.gltf.bufferViews[t.bufferView],n=this.gltf.buffers[e.buffer];if(n.uri)return this.requestImageFromBufferURI(n,e,t);if(this.glbBuffer)return this.k(e,t)}return null}k(t,e){const n=this.u(t,this.glbBuffer.buffer,this.glbBuffer.byteOffset);return this.getImageByBuffer(n,e)}u(t,e,n){n=n||0;const r=t.byteOffset+n,s=t.byteLength;return new Uint8Array(e,r,s)}C(t,e){const n=new Array(t.byteLength);for(let e=0;e<t.byteLength;e++)n[e]=String.fromCharCode(t[e]);return n.join(""),"data:"+(e=e||"image/png")+";base64,"+function(t){return"undefined"!=typeof self?self.btoa(t):window.btoa(t)}(unescape(encodeURIComponent(n)))}getAnimations(t){const e=[];return t.forEach(t=>{e.push(this.getSamplers(t.samplers))}),Promise.all(e).then(e=>{for(let n=0;n<e.length;n++)t[n].samplers=e[n];return t})}getSamplers(t){const e=[];for(let n=0;n<t.length;n++)(N(t[n].input)||N(t[n].output))&&(e.push(this.accessor.v("input",t[n].input)),e.push(this.accessor.v("output",t[n].output)));return Promise.all(e).then(e=>{for(let n=0;n<e.length/2;n++)t[n].input=e[2*n],t[n].output=e[2*n+1],t[n].interpolation||(t[n].interpolation="LINEAR");return t})}}const et="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;class nt{static read(t,e=0,n=0){n||(n=t.byteLength);const r=new DataView(t,e,n),s=r.getUint32(4,!0);if(1===s)return nt.readV1(r,e);if(2===s)return nt.readV2(t,e);throw new Error("Unsupported glb version : "+s)}static readV1(t,e){const n=t.getUint32(8,!0),r=t.getUint32(12,!0);if(n!==t.byteLength)throw new Error("Length in GLB header is inconsistent with glb\'s byte length.");const s=rt(t.buffer,20+e,r);return{json:JSON.parse(s),glbBuffer:{byteOffset:20+e+r,buffer:t.buffer,byteLength:n}}}static readV2(t,e){let n,r,s;const i=new DataView(t,e+12);let o=0;for(;o<i.byteLength;){const a=i.getUint32(o,!0);o+=4;const c=i.getUint32(o,!0);if(o+=4,1313821514===c)n=rt(t,e+12+o,a);else if(5130562===c){s=e+12+o,r=a;break}o+=a}return{json:JSON.parse(n),glbBuffer:{byteOffset:s,buffer:t,byteLength:r}}}}function rt(t,e,n){if(et){const r=new Uint8Array(t,e,n);return et.decode(r)}return function(t){const e=t.length;let n="";for(let r=0;r<e;){let s=t[r++];if(128&s){let n=st[s>>3&7];if(!(64&s)||!n||r+n>e)return null;for(s&=63>>n;n>0;n-=1){const e=t[r++];if(128!=(192&e))return null;s=s<<6|63&e}}n+=String.fromCharCode(s)}return n}(new Uint8Array(t,e,n))}const st=[1,1,1,1,2,2,3,0],it=[0,0,0],ot=[0,0,0,1],at=[1,1,1],ct={TRANSLATION:[0,0,0],ROTATION:[0,0,0,1],SCALE:[1,1,1]},ut={PREVIOUS:null,NEXT:null,PREINDEX:null,NEXTINDEX:null,INTERPOLATION:null},ft={U(t,e,n,r,s,i,o,a){const c=N(t)?e.animations:[e.animations[0]],u={};for(let e=0;e<c.length;e++){const f=c[e],h=f.name||e;if(N(t)&&h!==t)continue;const d=f.channelsMap[n];if(d)for(let t=0;t<d.length;t++){const e=d[t];"translation"===e.target.path?(this.N(s,f.samplers[e.sampler],r,1),u.translation=l(it,s)):"rotation"===e.target.path?(this.F(i,f.samplers[e.sampler],r,1),u.rotation=E(ot,i)):"scale"===e.target.path?(this.N(o,f.samplers[e.sampler],r,1),u.scale=l(at,o)):"weights"===e.target.path&&a&&(this.N(a,f.samplers[e.sampler],r,a.length),u.weights=a)}}return u},N(t,e,n,r){switch(e.interpolation){case"LINEAR":{const s=this.P(ut,e,n,1*r);s&&(t=function(t,e,n,r){for(let s=0;s<t.length;s++)t[s]=e[s]+r*(n[s]-e[s]);return t}(t,s.PREVIOUS,s.NEXT,s.INTERPOLATION));break}case"STEP":{const s=this.P(ut,e,n,1*r);s&&(t=function(t,e){for(let n=0;n<t.length;n++)t[n]=e[n];return t}(t,...s.PREVIOUS));break}case"CUBICSPLINE":{const s=this.P(ut,e,n,3*r);s&&(t=this.B(t,s,e.input.array,3*r));break}}return t},F(t,e,n){switch(e.interpolation){case"LINEAR":{const r=this.P(ut,e,n,1);r&&I(t,r.PREVIOUS,r.NEXT,r.INTERPOLATION);break}case"STEP":{const r=this.P(ut,e,n,1);r&&(t=_(t,...r.PREVIOUS));break}case"CUBICSPLINE":{const r=this.P(ut,e,n,3);if(r){for(let t=0;t<r.PREVIOUS.length;t++)r.PREVIOUS[t]=Math.acos(r.PREVIOUS[t]),r.NEXT[t]=Math.acos(r.NEXT[t]);t=this.B(t,r,e.input.array,3);for(let e=0;e<t.length;e++)t[e]=Math.cos(t[e])}break}}return t},D(t,e){const n=t.length;let r,s,i,o=0,a=n-1,c=Math.floor((o+a)/2);for(;o<=n-1&&a>=0;){if(o===a)return null;if(t[c]<=e&&e<=t[c+1]){const n=t[c];return r=c,s=c+1,i=(e-n)/(t[c+1]-n),{preIndx:r,nextIndex:s,interpolation:i}}e<t[c]?(a=c,c=Math.floor((o+a)/2)):t[c+1]<e&&(o=c,c=Math.floor((o+a)/2))}return null},P(t,e,n,r){const s=e.input.array,i=e.output.array,o=e.output.itemSize;(n<s[0]||n>s[s.length-1])&&(n=Math.max(s[0],Math.min(s[s.length-1],n))),n===s[s.length-1]&&(n=s[0]);const a=this.D(s,n);if(!a||!a.nextIndex)return null;const{preIndx:c,nextIndex:u,interpolation:f}=a;t.PREINDEX=c,t.NEXTINDEX=u,t.INTERPOLATION=f;const h=o*r;return t.PREVIOUS=i.subarray(t.PREINDEX*h,(t.PREINDEX+1)*h),t.NEXT=i.subarray(t.NEXTINDEX*h,(t.NEXTINDEX+1)*h),t},B(t,e,n,r){const s=e.INTERPOLATION,i=n[e.PREINDEX],o=n[e.NEXTINDEX];for(let n=0;n<3;n++){const a=e.PREVIOUS[r+n],c=(o-i)*e.PREVIOUS[2*r+n],u=e.NEXT[3+n],f=(o-i)*e.NEXT[n],h=(2*Math.pow(s,3)-3*Math.pow(s,2)+1)*a+(Math.pow(s,3)-2*Math.pow(s,2)+s)*c+(2*-Math.pow(s,3)+3*Math.pow(s,2))*u+(Math.pow(s,3)-Math.pow(s,2))*f;t[n]=h}return t},getAnimationClip(t,e,n,r){const s=t.nodes[e]&&t.nodes[e].weights;return d(it,...ct.TRANSLATION),_(ot,...ct.ROTATION),d(at,...ct.SCALE),this.U(r,t,e,n,it,ot,at,s)},getTimeSpan(t){if(!t.animations)return null;if(t.timeSpan)return t.timeSpan;const e=t.animations;return t.timeSpan={},e.forEach((e,n)=>{let r=-1/0,s=1/0;const i=e.channels;for(let t=0;t<i.length;t++){const n=i[t],o=e.samplers[n.sampler].input.array;o[o.length-1]>r&&(r=o[o.length-1]),o[0]<s&&(s=o[0])}const o=e.name||n;t.timeSpan[o]={max:r,min:s}}),t.timeSpan},getTimeSpanByName(t,e){const n=this.getTimeSpan(t);return n?N(e)?n[e]:n[Object.keys(n)[0]]:null}};let ht=!1;if("undefined"!=typeof OffscreenCanvas){let t;try{t=new OffscreenCanvas(2,2).getContext("2d")}catch(Qe){}t&&"undefined"!=typeof createImageBitmap&&(ht=!0)}const lt="undefined"==typeof document?null:document.createElement("canvas");class dt{constructor(t,e,n){if(this.options=n||{},this.options.decoders||(this.options.decoders={}),e.buffer instanceof ArrayBuffer){const{json:n,glbBuffer:r}=nt.read(e.buffer,e.byteOffset,e.byteLength);this.R(t,n,r)}else this.R(t,e);this.L=new W(this.rootPath,this.gltf,this.glbBuffer),this.j()}j(){const t=this.gltf.extensionsRequired;if(t){if(t.indexOf("KHR_draco_mesh_compression")>=0&&!this.options.decoders.draco)throw new Error("KHR_draco_mesh_compression is required but @maptalks/transcoders.draco is not loaded");if(t.indexOf("KHR_texture_basisu")>=0&&!this.options.decoders.ktx2)throw new Error("KHR_texture_basisu is required but @maptalks/transcoders.ktx2 is not loaded")}}V(){const t=this.gltf.extensions;return t&&t.KHR_techniques_webgl?this.L.requestKHRTechniquesWebgl(t.KHR_techniques_webgl).then(e=>(t.KHR_techniques_webgl=e,t)):Promise.resolve(t)}load(t){t=t||{};const e=this.q(t),n=this.G(),r=this.$(),s=this.V();return Promise.all([e,n,r,s]).then(t=>(t[0].animations=t[1],t[0].textures=t[2],t[0].extensions=t[3],t[0].transferables=this.transferables||[],this.createChannelsMap(t[0]),t[0]))}createChannelsMap(t){const e=t.animations;if(e)for(let t=0;t<e.length;t++){const n=e[t];n.channelsMap={};for(let t=0;t<n.channels.length;t++){const e=n.channels[t];n.channelsMap[e.target.node]||(n.channelsMap[e.target.node]=[]),n.channelsMap[e.target.node].push(e)}}}getExternalResources(){const t=[];if(this.gltf){const{buffers:e,images:n}=this.gltf;for(let n=0;n<e.length;n++)e[n].uri&&e[n].uri.indexOf("data:application/octet-stream;base64")<0&&t.push({type:"buffer",uri:e[n].uri});for(let e=0;e<n.length;e++)n[e].uri&&n[e].uri.indexOf("data:image/")<0&&t.push({type:"image",uri:n[e].uri})}return t}static getAnimationClip(t,e,n,r){return ft.getAnimationClip(t,e,n,r)}static getAnimationTimeSpan(t,e){return ft.getTimeSpanByName(t,e)}static getTypedArrayCtor(t){return B(t)}static readInterleavedArray(t,e,n,r,s,i,o){return $(t,e,n,r,s,i,o)}R(t,e,n){this.gltf=e,this.glbBuffer=n,this.version=e.asset?+e.asset.version:1,this.rootPath=t,this.buffers={},this.requests={},this.options.requestImage=ht?pt.bind(this):this.options.requestImage||yt,this.options.transferable&&(this.transferables=[]),2===this.version?(this.adapter=new tt(t,e,n,this.options.requestImage,this.options.decoders||{},this.options.supportedFormats||{}),this.adapter.iterate((t,e,n)=>{e.id="buffer_"+n},"buffers"),this.adapter.iterate((t,e,n)=>{e.id="image_"+n},"images"),this.adapter.iterate((t,e,n)=>{e.id="accessor_"+n},"accessors")):(this.adapter=new Z(t,e,n,this.options.requestImage,this.options.decoders||{},this.options.supportedFormats||{}),this.adapter.iterate((t,e,n)=>{e.id="accessor_"+n},"accessors"),this.adapter.iterate((t,e,n)=>{e.id="image_"+n},"images"))}X(t,e){if(t.children&&t.children.length>0){if(!("number"==typeof(n=t.children[0])&&isFinite(n)||F(t.children[0])))return t;const r=t.children.map(t=>{const n=e[t];return n.nodeIndex=t,this.X(n,e)});t.children=r}var n;return t}q(t){return this.H(t).then(t=>{const e=this.scenes=[];let n;for(const e in t)t[e]=this.X(t[e],t),t[e].nodeIndex=Number(e)?Number(e):e;this.adapter.iterate((r,s,i)=>{const o={};s.name&&(o.name=s.name),s.nodes&&(o.nodes=s.nodes.map(e=>t[e])),this.gltf.scene===r&&(n=i),e.push(o)},"scenes");const r={textures:this.gltf.textures,asset:this.gltf.asset,scene:n,scenes:e,nodes:t,meshes:this.meshes,materials:this.gltf.materials,skins:this.skins,extensionsRequired:this.gltf.extensionsRequired,extensionsUsed:this.gltf.extensionsUsed};if(this.gltf.extensions&&(r.extensions=this.gltf.extensions),1===this.version){const t=this.adapter.O(this.gltf.materials);r.materials=t}return r})}H(t){return this.J(t).then(()=>{const t=this.nodes={};return this.adapter.iterate((e,n)=>{const r=this.adapter.createNode(n,this.meshes,this.skins);t[e]=r},"nodes"),t})}K(){this.skins=[];const t=[];return this.adapter.iterate((e,n,r)=>{t.push(this.Y(n).then(t=>{t.index=r,this.skins.push(t)}))},"skins"),t}Y(t){const e=t.inverseBindMatrices;return this.adapter.accessor.v("inverseBindMatrices",e).then(e=>(t.inverseBindMatrices=e,e&&e.buffer&&this.transferables&&this.transferables.indexOf(e.buffer)<0&&this.transferables.push(e.buffer),t))}G(){const t=this.gltf.animations;return N(t)?this.adapter.getAnimations(t):null}J(t){this.meshes={};let e=[];return this.adapter.iterate((n,r,s)=>{e.push(this.W(r,t).then(t=>{t.index=s,this.meshes[n]=t}))},"meshes"),e=e.concat(this.K()),Promise.all(e)}W(t,e){const n=t.primitives.map(t=>this.Z(t,e)).filter(t=>!!t);return Promise.all(n).then(e=>{const n={};return P(n,t),n.primitives=e,n})}$(){const t=this.gltf.textures;if(!t)return null;const e=[];for(const n in t)e.push(this.adapter.I(n));return Promise.all(e).then(e=>{if(this.transferables)for(let t=0;t<e.length;t++){const n=e[t].image.array;if(e[t]&&n){let t;t=n instanceof ImageBitmap?n:n.buffer,t&&this.transferables.indexOf(t)<0&&this.transferables.push(t)}}if(!Array.isArray(t)){const n={},r=Object.keys(t);for(let t=0;t<e.length;t++)e[t]&&(n[r[t]]=e[t]);return n}return e})}Z(t,e){let n;const r=[],s=t.extensions;if(N(t.targets))for(let e=0;e<t.targets.length;e++){const n=t.targets[e];for(const t in n){const s=this.adapter.accessor.v(`morphTargets_${t}_${e}`,n[t]);s&&r.push(s)}}if(s&&s.KHR_draco_mesh_compression){if(!this.options.decoders.draco&&(!this.gltf.extensionsRequired||!this.gltf.extensionsRequired.indexOf("KHR_draco_mesh_compression")<0))return null;const t=this.options.decoders.draco,{bufferView:i,attributes:o}=s.KHR_draco_mesh_compression,a=this.gltf.bufferViews[i],c=this.L.T(a).then(n=>{const{buffer:r,byteOffset:s}=n;let{byteOffset:i}=a;const c=a.byteLength;i||(i=0);const u=new DataView(r,s+i,c),f={attributes:o,useUniqueIDs:!1,skipAttributeTransform:e.skipAttributeTransform};return t(u,f).then(t=>{const e=Object.values(t.attributes);return t.indices&&e.push(t.indices),e})});r.push(c),n=Promise.all(r)}else{const e=t.attributes;for(const t in e){const n=this.adapter.accessor.v(t,e[t]);n&&r.push(n)}if(N(t.indices)){const e=this.adapter.accessor.v("indices",t.indices);e&&r.push(e)}n=Promise.all(r)}return n.then(e=>{if(s&&s.KHR_draco_mesh_compression){const n=t.targets?t.targets.length:0;e[n]=e[n].concat(e.slice(0,n)),e=e[n]}let n,r;const i={attributes:e.reduce((t,e)=>{if("indices"===e.name)n=e;else if(e.name.indexOf("morphTargets_")>-1)r=r||{},r[e.name.slice(13)]=e;else{if(!("POSITION"!==e.name||e.min&&e.max)){const t=[1/0,1/0,1/0],n=[-1/0,-1/0,-1/0],{itemSize:r,array:s}=e,i=s.length/r;for(let e=0;e<i;e++)for(let i=0;i<r;i++){const o=e*r+i;s[o]<t[i]&&(t[i]=s[o]),s[o]>n[i]&&(n[i]=s[o])}if(e.quantization){const r=e.quantization,s=r.range/(1<<r.quantizationBits),i=r.minValues;b(t,t,s),y(t,t,i),b(n,n,s),y(n,n,i)}e.min=t,e.max=n}t[e.name]=e}return this.transferables&&e.array.buffer&&this.transferables.indexOf(e.array.buffer)<0&&this.transferables.push(e.array.buffer),t},{}),material:t.material};return n&&(i.indices=n),r&&(i.morphTargets=r),i.mode=N(t.mode)?t.mode:4,N(t.extras)&&(i.extras=t.extras),i})}}function yt(t,e){const n=new Image;n.crossOrigin="",n.onload=()=>{if(!lt)return void e(new Error("There is no canvas to draw image!"));lt.width=n.width,lt.height=n.height;const t=lt.getContext("2d",{willReadFrequently:!0});t.drawImage(n,0,0,n.width,n.height);const r=t.getImageData(0,0,n.width,n.height),s={width:n.width,height:n.height,data:new Uint8Array(r.data)};e(null,s)},n.onerror=function(t){e(t)},n.src=t}let mt,bt;function pt(t,e){mt||(mt=new OffscreenCanvas(2,2),bt=mt.getContext("2d",{willReadFrequently:!0}));let n=null;if(F(t))n=fetch(t).then(t=>t.arrayBuffer()).then(t=>{const e=new Blob([new Uint8Array(t)]);return createImageBitmap(e)});else{const e=new Blob([t]);n=createImageBitmap(e)}n.then(wt.bind(this)).then(t=>{e(null,t)}).catch(t=>{console.warn(t),e(t)})}function wt(t){let{width:e,height:n}=t;gt(e)||(e=vt(e)),gt(n)||(n=vt(n));const r=this.options.maxTextureSize;r&&(e=Math.min(r,e),n=Math.min(r,n)),mt.width=e,mt.height=n,bt.drawImage(t,0,0,e,n),t.close();const s=bt.getImageData(0,0,e,n);return{width:e,height:n,data:new Uint8Array(s.data)}}function gt(t){return 0==(t&t-1)&&0!==t}function vt(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}var Mt={exports:{}},Tt={"aliceblue":[240,248,255],"antiquewhite":[250,235,215],"aqua":[0,255,255],"aquamarine":[127,255,212],"azure":[240,255,255],"beige":[245,245,220],"bisque":[255,228,196],"black":[0,0,0],"blanchedalmond":[255,235,205],"blue":[0,0,255],"blueviolet":[138,43,226],"brown":[165,42,42],"burlywood":[222,184,135],"cadetblue":[95,158,160],"chartreuse":[127,255,0],"chocolate":[210,105,30],"coral":[255,127,80],"cornflowerblue":[100,149,237],"cornsilk":[255,248,220],"crimson":[220,20,60],"cyan":[0,255,255],"darkblue":[0,0,139],"darkcyan":[0,139,139],"darkgoldenrod":[184,134,11],"darkgray":[169,169,169],"darkgreen":[0,100,0],"darkgrey":[169,169,169],"darkkhaki":[189,183,107],"darkmagenta":[139,0,139],"darkolivegreen":[85,107,47],"darkorange":[255,140,0],"darkorchid":[153,50,204],"darkred":[139,0,0],"darksalmon":[233,150,122],"darkseagreen":[143,188,143],"darkslateblue":[72,61,139],"darkslategray":[47,79,79],"darkslategrey":[47,79,79],"darkturquoise":[0,206,209],"darkviolet":[148,0,211],"deeppink":[255,20,147],"deepskyblue":[0,191,255],"dimgray":[105,105,105],"dimgrey":[105,105,105],"dodgerblue":[30,144,255],"firebrick":[178,34,34],"floralwhite":[255,250,240],"forestgreen":[34,139,34],"fuchsia":[255,0,255],"gainsboro":[220,220,220],"ghostwhite":[248,248,255],"gold":[255,215,0],"goldenrod":[218,165,32],"gray":[128,128,128],"green":[0,128,0],"greenyellow":[173,255,47],"grey":[128,128,128],"honeydew":[240,255,240],"hotpink":[255,105,180],"indianred":[205,92,92],"indigo":[75,0,130],"ivory":[255,255,240],"khaki":[240,230,140],"lavender":[230,230,250],"lavenderblush":[255,240,245],"lawngreen":[124,252,0],"lemonchiffon":[255,250,205],"lightblue":[173,216,230],"lightcoral":[240,128,128],"lightcyan":[224,255,255],"lightgoldenrodyellow":[250,250,210],"lightgray":[211,211,211],"lightgreen":[144,238,144],"lightgrey":[211,211,211],"lightpink":[255,182,193],"lightsalmon":[255,160,122],"lightseagreen":[32,178,170],"lightskyblue":[135,206,250],"lightslategray":[119,136,153],"lightslategrey":[119,136,153],"lightsteelblue":[176,196,222],"lightyellow":[255,255,224],"lime":[0,255,0],"limegreen":[50,205,50],"linen":[250,240,230],"magenta":[255,0,255],"maroon":[128,0,0],"mediumaquamarine":[102,205,170],"mediumblue":[0,0,205],"mediumorchid":[186,85,211],"mediumpurple":[147,112,219],"mediumseagreen":[60,179,113],"mediumslateblue":[123,104,238],"mediumspringgreen":[0,250,154],"mediumturquoise":[72,209,204],"mediumvioletred":[199,21,133],"midnightblue":[25,25,112],"mintcream":[245,255,250],"mistyrose":[255,228,225],"moccasin":[255,228,181],"navajowhite":[255,222,173],"navy":[0,0,128],"oldlace":[253,245,230],"olive":[128,128,0],"olivedrab":[107,142,35],"orange":[255,165,0],"orangered":[255,69,0],"orchid":[218,112,214],"palegoldenrod":[238,232,170],"palegreen":[152,251,152],"paleturquoise":[175,238,238],"palevioletred":[219,112,147],"papayawhip":[255,239,213],"peachpuff":[255,218,185],"peru":[205,133,63],"pink":[255,192,203],"plum":[221,160,221],"powderblue":[176,224,230],"purple":[128,0,128],"rebeccapurple":[102,51,153],"red":[255,0,0],"rosybrown":[188,143,143],"royalblue":[65,105,225],"saddlebrown":[139,69,19],"salmon":[250,128,114],"sandybrown":[244,164,96],"seagreen":[46,139,87],"seashell":[255,245,238],"sienna":[160,82,45],"silver":[192,192,192],"skyblue":[135,206,235],"slateblue":[106,90,205],"slategray":[112,128,144],"slategrey":[112,128,144],"snow":[255,250,250],"springgreen":[0,255,127],"steelblue":[70,130,180],"tan":[210,180,140],"teal":[0,128,128],"thistle":[216,191,216],"tomato":[255,99,71],"turquoise":[64,224,208],"violet":[238,130,238],"wheat":[245,222,179],"white":[255,255,255],"whitesmoke":[245,245,245],"yellow":[255,255,0],"yellowgreen":[154,205,50]},At={exports:{}},_t=function(t){return!(!t||"string"==typeof t)&&(t instanceof Array||Array.isArray(t)||t.length>=0&&(t.splice instanceof Function||Object.getOwnPropertyDescriptor(t,t.length-1)&&"String"!==t.constructor.name))},Ot=Array.prototype.concat,St=Array.prototype.slice,xt=At.exports=function(t){for(var e=[],n=0,r=t.length;n<r;n++){var s=t[n];_t(s)?e=Ot.call(e,St.call(s)):e.push(s)}return e};xt.wrap=function(t){return function(){return t(xt(arguments))}};var It=Tt,kt=At.exports,Et=Object.hasOwnProperty,Ct=Object.create(null);for(var Ut in It)Et.call(It,Ut)&&(Ct[It[Ut]]=Ut);var Nt=Mt.exports={to:{},get:{}};function Ft(t,e,n){return Math.min(Math.max(e,t),n)}function Pt(t){var e=Math.round(t).toString(16).toUpperCase();return e.length<2?"0"+e:e}Nt.get=function(t){var e,n;switch(t.substring(0,3).toLowerCase()){case"hsl":e=Nt.get.hsl(t),n="hsl";break;case"hwb":e=Nt.get.hwb(t),n="hwb";break;default:e=Nt.get.rgb(t),n="rgb"}return e?{model:n,value:e}:null},Nt.get.rgb=function(t){if(!t)return null;var e,n,r,s=[0,0,0,1];if(e=t.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(r=e[2],e=e[1],n=0;n<3;n++){var i=2*n;s[n]=parseInt(e.slice(i,i+2),16)}r&&(s[3]=parseInt(r,16)/255)}else if(e=t.match(/^#([a-f0-9]{3,4})$/i)){for(r=(e=e[1])[3],n=0;n<3;n++)s[n]=parseInt(e[n]+e[n],16);r&&(s[3]=parseInt(r+r,16)/255)}else if(e=t.match(/^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/)){for(n=0;n<3;n++)s[n]=parseInt(e[n+1],0);e[4]&&(e[5]?s[3]=.01*parseFloat(e[4]):s[3]=parseFloat(e[4]))}else{if(!(e=t.match(/^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/)))return(e=t.match(/^(\\w+)$/))?"transparent"===e[1]?[0,0,0,0]:Et.call(It,e[1])?((s=It[e[1]])[3]=1,s):null:null;for(n=0;n<3;n++)s[n]=Math.round(2.55*parseFloat(e[n+1]));e[4]&&(e[5]?s[3]=.01*parseFloat(e[4]):s[3]=parseFloat(e[4]))}for(n=0;n<3;n++)s[n]=Ft(s[n],0,255);return s[3]=Ft(s[3],0,1),s},Nt.get.hsl=function(t){if(!t)return null;var e=t.match(/^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/);if(e){var n=parseFloat(e[4]);return[(parseFloat(e[1])%360+360)%360,Ft(parseFloat(e[2]),0,100),Ft(parseFloat(e[3]),0,100),Ft(isNaN(n)?1:n,0,1)]}return null},Nt.get.hwb=function(t){if(!t)return null;var e=t.match(/^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/);if(e){var n=parseFloat(e[4]);return[(parseFloat(e[1])%360+360)%360,Ft(parseFloat(e[2]),0,100),Ft(parseFloat(e[3]),0,100),Ft(isNaN(n)?1:n,0,1)]}return null},Nt.to.hex=function(){var t=kt(arguments);return"#"+Pt(t[0])+Pt(t[1])+Pt(t[2])+(t[3]<1?Pt(Math.round(255*t[3])):"")},Nt.to.rgb=function(){var t=kt(arguments);return t.length<4||1===t[3]?"rgb("+Math.round(t[0])+", "+Math.round(t[1])+", "+Math.round(t[2])+")":"rgba("+Math.round(t[0])+", "+Math.round(t[1])+", "+Math.round(t[2])+", "+t[3]+")"},Nt.to.rgb.percent=function(){var t=kt(arguments),e=Math.round(t[0]/255*100),n=Math.round(t[1]/255*100),r=Math.round(t[2]/255*100);return t.length<4||1===t[3]?"rgb("+e+"%, "+n+"%, "+r+"%)":"rgba("+e+"%, "+n+"%, "+r+"%, "+t[3]+")"},Nt.to.hsl=function(){var t=kt(arguments);return t.length<4||1===t[3]?"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)":"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+t[3]+")"},Nt.to.hwb=function(){var t=kt(arguments),e="";return t.length>=4&&1!==t[3]&&(e=", "+t[3]),"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+e+")"},Nt.to.keyword=function(t){return Ct[t.slice(0,3)]};var Bt={exports:{}},Dt=Tt,Rt={};for(var Lt in Dt)Dt.hasOwnProperty(Lt)&&(Rt[Dt[Lt]]=Lt);var jt=Bt.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var zt in jt)if(jt.hasOwnProperty(zt)){if(!("channels"in jt[zt]))throw new Error("missing channels property: "+zt);if(!("labels"in jt[zt]))throw new Error("missing channel labels property: "+zt);if(jt[zt].labels.length!==jt[zt].channels)throw new Error("channel and label counts mismatch: "+zt);var Vt=jt[zt].channels,qt=jt[zt].labels;delete jt[zt].channels,delete jt[zt].labels,Object.defineProperty(jt[zt],"channels",{value:Vt}),Object.defineProperty(jt[zt],"labels",{value:qt})}function Gt(t,e){return Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)+Math.pow(t[2]-e[2],2)}jt.rgb.hsl=function(t){var e,n,r=t[0]/255,s=t[1]/255,i=t[2]/255,o=Math.min(r,s,i),a=Math.max(r,s,i),c=a-o;return a===o?e=0:r===a?e=(s-i)/c:s===a?e=2+(i-r)/c:i===a&&(e=4+(r-s)/c),(e=Math.min(60*e,360))<0&&(e+=360),n=(o+a)/2,[e,100*(a===o?0:n<=.5?c/(a+o):c/(2-a-o)),100*n]},jt.rgb.hsv=function(t){var e,n,r,s,i,o=t[0]/255,a=t[1]/255,c=t[2]/255,u=Math.max(o,a,c),f=u-Math.min(o,a,c),h=function(t){return(u-t)/6/f+.5};return 0===f?s=i=0:(i=f/u,e=h(o),n=h(a),r=h(c),o===u?s=r-n:a===u?s=1/3+e-r:c===u&&(s=2/3+n-e),s<0?s+=1:s>1&&(s-=1)),[360*s,100*i,100*u]},jt.rgb.hwb=function(t){var e=t[0],n=t[1],r=t[2];return[jt.rgb.hsl(t)[0],100*(1/255*Math.min(e,Math.min(n,r))),100*(r=1-1/255*Math.max(e,Math.max(n,r)))]},jt.rgb.cmyk=function(t){var e,n=t[0]/255,r=t[1]/255,s=t[2]/255;return[100*((1-n-(e=Math.min(1-n,1-r,1-s)))/(1-e)||0),100*((1-r-e)/(1-e)||0),100*((1-s-e)/(1-e)||0),100*e]},jt.rgb.keyword=function(t){var e=Rt[t];if(e)return e;var n,r=1/0;for(var s in Dt)if(Dt.hasOwnProperty(s)){var i=Gt(t,Dt[s]);i<r&&(r=i,n=s)}return n},jt.keyword.rgb=function(t){return Dt[t]},jt.rgb.xyz=function(t){var e=t[0]/255,n=t[1]/255,r=t[2]/255;return[100*(.4124*(e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92)),100*(.2126*e+.7152*n+.0722*r),100*(.0193*e+.1192*n+.9505*r)]},jt.rgb.lab=function(t){var e=jt.rgb.xyz(t),n=e[0],r=e[1],s=e[2];return r/=100,s/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116)-16,500*(n-r),200*(r-(s=s>.008856?Math.pow(s,1/3):7.787*s+16/116))]},jt.hsl.rgb=function(t){var e,n,r,s,i,o=t[0]/360,a=t[1]/100,c=t[2]/100;if(0===a)return[i=255*c,i,i];e=2*c-(n=c<.5?c*(1+a):c+a-c*a),s=[0,0,0];for(var u=0;u<3;u++)(r=o+1/3*-(u-1))<0&&r++,r>1&&r--,i=6*r<1?e+6*(n-e)*r:2*r<1?n:3*r<2?e+(n-e)*(2/3-r)*6:e,s[u]=255*i;return s},jt.hsl.hsv=function(t){var e=t[0],n=t[1]/100,r=t[2]/100,s=n,i=Math.max(r,.01);return n*=(r*=2)<=1?r:2-r,s*=i<=1?i:2-i,[e,100*(0===r?2*s/(i+s):2*n/(r+n)),100*((r+n)/2)]},jt.hsv.rgb=function(t){var e=t[0]/60,n=t[1]/100,r=t[2]/100,s=Math.floor(e)%6,i=e-Math.floor(e),o=255*r*(1-n),a=255*r*(1-n*i),c=255*r*(1-n*(1-i));switch(r*=255,s){case 0:return[r,c,o];case 1:return[a,r,o];case 2:return[o,r,c];case 3:return[o,a,r];case 4:return[c,o,r];case 5:return[r,o,a]}},jt.hsv.hsl=function(t){var e,n,r,s=t[0],i=t[1]/100,o=t[2]/100,a=Math.max(o,.01);return r=(2-i)*o,n=i*a,[s,100*(n=(n/=(e=(2-i)*a)<=1?e:2-e)||0),100*(r/=2)]},jt.hwb.rgb=function(t){var e,n,r,s,i,o,a,c=t[0]/360,u=t[1]/100,f=t[2]/100,h=u+f;switch(h>1&&(u/=h,f/=h),r=6*c-(e=Math.floor(6*c)),0!=(1&e)&&(r=1-r),s=u+r*((n=1-f)-u),e){default:case 6:case 0:i=n,o=s,a=u;break;case 1:i=s,o=n,a=u;break;case 2:i=u,o=n,a=s;break;case 3:i=u,o=s,a=n;break;case 4:i=s,o=u,a=n;break;case 5:i=n,o=u,a=s}return[255*i,255*o,255*a]},jt.cmyk.rgb=function(t){var e=t[0]/100,n=t[1]/100,r=t[2]/100,s=t[3]/100;return[255*(1-Math.min(1,e*(1-s)+s)),255*(1-Math.min(1,n*(1-s)+s)),255*(1-Math.min(1,r*(1-s)+s))]},jt.xyz.rgb=function(t){var e,n,r,s=t[0]/100,i=t[1]/100,o=t[2]/100;return n=-.9689*s+1.8758*i+.0415*o,r=.0557*s+-.204*i+1.057*o,e=(e=3.2406*s+-1.5372*i+-.4986*o)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,r=r>.0031308?1.055*Math.pow(r,1/2.4)-.055:12.92*r,[255*(e=Math.min(Math.max(0,e),1)),255*(n=Math.min(Math.max(0,n),1)),255*(r=Math.min(Math.max(0,r),1))]},jt.xyz.lab=function(t){var e=t[0],n=t[1],r=t[2];return n/=100,r/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(e-n),200*(n-(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116))]},jt.lab.xyz=function(t){var e,n,r,s=t[0];e=t[1]/500+(n=(s+16)/116),r=n-t[2]/200;var i=Math.pow(n,3),o=Math.pow(e,3),a=Math.pow(r,3);return n=i>.008856?i:(n-16/116)/7.787,e=o>.008856?o:(e-16/116)/7.787,r=a>.008856?a:(r-16/116)/7.787,[e*=95.047,n*=100,r*=108.883]},jt.lab.lch=function(t){var e,n=t[0],r=t[1],s=t[2];return(e=360*Math.atan2(s,r)/2/Math.PI)<0&&(e+=360),[n,Math.sqrt(r*r+s*s),e]},jt.lch.lab=function(t){var e,n=t[0],r=t[1];return e=t[2]/360*2*Math.PI,[n,r*Math.cos(e),r*Math.sin(e)]},jt.rgb.ansi16=function(t){var e=t[0],n=t[1],r=t[2],s=1 in arguments?arguments[1]:jt.rgb.hsv(t)[2];if(0===(s=Math.round(s/50)))return 30;var i=30+(Math.round(r/255)<<2|Math.round(n/255)<<1|Math.round(e/255));return 2===s&&(i+=60),i},jt.hsv.ansi16=function(t){return jt.rgb.ansi16(jt.hsv.rgb(t),t[2])},jt.rgb.ansi256=function(t){var e=t[0],n=t[1],r=t[2];return e===n&&n===r?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},jt.ansi16.rgb=function(t){var e=t%10;if(0===e||7===e)return t>50&&(e+=3.5),[e=e/10.5*255,e,e];var n=.5*(1+~~(t>50));return[(1&e)*n*255,(e>>1&1)*n*255,(e>>2&1)*n*255]},jt.ansi256.rgb=function(t){if(t>=232){var e=10*(t-232)+8;return[e,e,e]}var n;return t-=16,[Math.floor(t/36)/5*255,Math.floor((n=t%36)/6)/5*255,n%6/5*255]},jt.rgb.hex=function(t){var e=(((255&Math.round(t[0]))<<16)+((255&Math.round(t[1]))<<8)+(255&Math.round(t[2]))).toString(16).toUpperCase();return"000000".substring(e.length)+e},jt.hex.rgb=function(t){var e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];var n=e[0];3===e[0].length&&(n=n.split("").map((function(t){return t+t})).join(""));var r=parseInt(n,16);return[r>>16&255,r>>8&255,255&r]},jt.rgb.hcg=function(t){var e,n=t[0]/255,r=t[1]/255,s=t[2]/255,i=Math.max(Math.max(n,r),s),o=Math.min(Math.min(n,r),s),a=i-o;return e=a<=0?0:i===n?(r-s)/a%6:i===r?2+(s-n)/a:4+(n-r)/a+4,e/=6,[360*(e%=1),100*a,100*(a<1?o/(1-a):0)]},jt.hsl.hcg=function(t){var e=t[1]/100,n=t[2]/100,r=1,s=0;return(r=n<.5?2*e*n:2*e*(1-n))<1&&(s=(n-.5*r)/(1-r)),[t[0],100*r,100*s]},jt.hsv.hcg=function(t){var e=t[1]/100,n=t[2]/100,r=e*n,s=0;return r<1&&(s=(n-r)/(1-r)),[t[0],100*r,100*s]},jt.hcg.rgb=function(t){var e=t[0]/360,n=t[1]/100,r=t[2]/100;if(0===n)return[255*r,255*r,255*r];var s,i=[0,0,0],o=e%1*6,a=o%1,c=1-a;switch(Math.floor(o)){case 0:i[0]=1,i[1]=a,i[2]=0;break;case 1:i[0]=c,i[1]=1,i[2]=0;break;case 2:i[0]=0,i[1]=1,i[2]=a;break;case 3:i[0]=0,i[1]=c,i[2]=1;break;case 4:i[0]=a,i[1]=0,i[2]=1;break;default:i[0]=1,i[1]=0,i[2]=c}return s=(1-n)*r,[255*(n*i[0]+s),255*(n*i[1]+s),255*(n*i[2]+s)]},jt.hcg.hsv=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e),r=0;return n>0&&(r=e/n),[t[0],100*r,100*n]},jt.hcg.hsl=function(t){var e=t[1]/100,n=t[2]/100*(1-e)+.5*e,r=0;return n>0&&n<.5?r=e/(2*n):n>=.5&&n<1&&(r=e/(2*(1-n))),[t[0],100*r,100*n]},jt.hcg.hwb=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e);return[t[0],100*(n-e),100*(1-n)]},jt.hwb.hcg=function(t){var e=t[1]/100,n=1-t[2]/100,r=n-e,s=0;return r<1&&(s=(n-r)/(1-r)),[t[0],100*r,100*s]},jt.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]},jt.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]},jt.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]},jt.gray.hsl=jt.gray.hsv=function(t){return[0,0,t[0]]},jt.gray.hwb=function(t){return[0,100,t[0]]},jt.gray.cmyk=function(t){return[0,0,0,t[0]]},jt.gray.lab=function(t){return[t[0],0,0]},jt.gray.hex=function(t){var e=255&Math.round(t[0]/100*255),n=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(n.length)+n},jt.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]};var $t=Bt.exports;function Xt(t){var e=function(){for(var t={},e=Object.keys($t),n=e.length,r=0;r<n;r++)t[e[r]]={distance:-1,parent:null};return t}(),n=[t];for(e[t].distance=0;n.length;)for(var r=n.pop(),s=Object.keys($t[r]),i=s.length,o=0;o<i;o++){var a=s[o],c=e[a];-1===c.distance&&(c.distance=e[r].distance+1,c.parent=r,n.unshift(a))}return e}function Ht(t,e){return function(n){return e(t(n))}}function Jt(t,e){for(var n=[e[t].parent,t],r=$t[e[t].parent][t],s=e[t].parent;e[s].parent;)n.unshift(e[s].parent),r=Ht($t[e[s].parent][s],r),s=e[s].parent;return r.conversion=n,r}var Kt=Bt.exports,Yt=function(t){for(var e=Xt(t),n={},r=Object.keys(e),s=r.length,i=0;i<s;i++){var o=r[i];null!==e[o].parent&&(n[o]=Jt(o,e))}return n},Qt={};Object.keys(Kt).forEach((function(t){Qt[t]={},Object.defineProperty(Qt[t],"channels",{value:Kt[t].channels}),Object.defineProperty(Qt[t],"labels",{value:Kt[t].labels});var e=Yt(t);Object.keys(e).forEach((function(n){var r=e[n];Qt[t][n]=function(t){var e=function(e){if(null==e)return e;arguments.length>1&&(e=Array.prototype.slice.call(arguments));var n=t(e);if("object"==typeof n)for(var r=n.length,s=0;s<r;s++)n[s]=Math.round(n[s]);return n};return"conversion"in t&&(e.conversion=t.conversion),e}(r),Qt[t][n].raw=function(t){var e=function(e){return null==e?e:(arguments.length>1&&(e=Array.prototype.slice.call(arguments)),t(e))};return"conversion"in t&&(e.conversion=t.conversion),e}(r)}))}));var Wt=Qt,Zt=Mt.exports,te=Wt,ee=[].slice,ne=["keyword","gray","hex"],re={};Object.keys(te).forEach((function(t){re[ee.call(te[t].labels).sort().join("")]=t}));var se={};function ie(t,e){if(!(this instanceof ie))return new ie(t,e);if(e&&e in ne&&(e=null),e&&!(e in te))throw new Error("Unknown model: "+e);var n,r;if(null==t)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(t instanceof ie)this.model=t.model,this.color=t.color.slice(),this.valpha=t.valpha;else if("string"==typeof t){var s=Zt.get(t);if(null===s)throw new Error("Unable to parse color from string: "+t);this.model=s.model,r=te[this.model].channels,this.color=s.value.slice(0,r),this.valpha="number"==typeof s.value[r]?s.value[r]:1}else if(t.length){this.model=e||"rgb",r=te[this.model].channels;var i=ee.call(t,0,r);this.color=ue(i,r),this.valpha="number"==typeof t[r]?t[r]:1}else if("number"==typeof t)t&=16777215,this.model="rgb",this.color=[t>>16&255,t>>8&255,255&t],this.valpha=1;else{this.valpha=1;var o=Object.keys(t);"alpha"in t&&(o.splice(o.indexOf("alpha"),1),this.valpha="number"==typeof t.alpha?t.alpha:0);var a=o.sort().join("");if(!(a in re))throw new Error("Unable to parse color from object: "+JSON.stringify(t));this.model=re[a];var c=te[this.model].labels,u=[];for(n=0;n<c.length;n++)u.push(t[c[n]]);this.color=ue(u)}if(se[this.model])for(r=te[this.model].channels,n=0;n<r;n++){var f=se[this.model][n];f&&(this.color[n]=f(this.color[n]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&&Object.freeze(this)}function oe(t,e,n){return(t=Array.isArray(t)?t:[t]).forEach((function(t){(se[t]||(se[t]=[]))[e]=n})),t=t[0],function(r){var s;return arguments.length?(n&&(r=n(r)),(s=this[t]()).color[e]=r,s):(s=this[t]().color[e],n&&(s=n(s)),s)}}function ae(t){return function(e){return Math.max(0,Math.min(t,e))}}function ce(t){return Array.isArray(t)?t:[t]}function ue(t,e){for(var n=0;n<e;n++)"number"!=typeof t[n]&&(t[n]=0);return t}function fe(t){return null==t}function he(t){return"object"==typeof t&&!!t}function le(t){return t/Math.PI*180}function de(t){return Math.sign?Math.sign(t):0===(t=+t)||isNaN(t)?Number(t):t>0?1:-1}ie.prototype={toString:function(){return this.string()},toJSON:function(){return this[this.model]()},string:function(t){var e=this.model in Zt.to?this:this.rgb(),n=1===(e=e.round("number"==typeof t?t:1)).valpha?e.color:e.color.concat(this.valpha);return Zt.to[e.model](n)},percentString:function(t){var e=this.rgb().round("number"==typeof t?t:1),n=1===e.valpha?e.color:e.color.concat(this.valpha);return Zt.to.rgb.percent(n)},array:function(){return 1===this.valpha?this.color.slice():this.color.concat(this.valpha)},object:function(){for(var t={},e=te[this.model].channels,n=te[this.model].labels,r=0;r<e;r++)t[n[r]]=this.color[r];return 1!==this.valpha&&(t.alpha=this.valpha),t},unitArray:function(){var t=this.rgb().color;return t[0]/=255,t[1]/=255,t[2]/=255,1!==this.valpha&&t.push(this.valpha),t},unitObject:function(){var t=this.rgb().object();return t.r/=255,t.g/=255,t.b/=255,1!==this.valpha&&(t.alpha=this.valpha),t},round:function(t){return t=Math.max(t||0,0),new ie(this.color.map(function(t){return function(e){return function(t,e){return Number(t.toFixed(e))}(e,t)}}(t)).concat(this.valpha),this.model)},alpha:function(t){return arguments.length?new ie(this.color.concat(Math.max(0,Math.min(1,t))),this.model):this.valpha},red:oe("rgb",0,ae(255)),green:oe("rgb",1,ae(255)),blue:oe("rgb",2,ae(255)),hue:oe(["hsl","hsv","hsl","hwb","hcg"],0,(function(t){return(t%360+360)%360})),saturationl:oe("hsl",1,ae(100)),lightness:oe("hsl",2,ae(100)),saturationv:oe("hsv",1,ae(100)),value:oe("hsv",2,ae(100)),chroma:oe("hcg",1,ae(100)),gray:oe("hcg",2,ae(100)),white:oe("hwb",1,ae(100)),wblack:oe("hwb",2,ae(100)),cyan:oe("cmyk",0,ae(100)),magenta:oe("cmyk",1,ae(100)),yellow:oe("cmyk",2,ae(100)),black:oe("cmyk",3,ae(100)),x:oe("xyz",0,ae(100)),y:oe("xyz",1,ae(100)),z:oe("xyz",2,ae(100)),l:oe("lab",0,ae(100)),a:oe("lab",1),b:oe("lab",2),keyword:function(t){return arguments.length?new ie(t):te[this.model].keyword(this.color)},hex:function(t){return arguments.length?new ie(t):Zt.to.hex(this.rgb().round().color)},rgbNumber:function(){var t=this.rgb().color;return(255&t[0])<<16|(255&t[1])<<8|255&t[2]},luminosity:function(){for(var t=this.rgb().color,e=[],n=0;n<t.length;n++){var r=t[n]/255;e[n]=r<=.03928?r/12.92:Math.pow((r+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),n=t.luminosity();return e>n?(e+.05)/(n+.05):(n+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},isDark:function(){var t=this.rgb().color;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},isLight:function(){return!this.isDark()},negate:function(){for(var t=this.rgb(),e=0;e<3;e++)t.color[e]=255-t.color[e];return t},lighten:function(t){var e=this.hsl();return e.color[2]+=e.color[2]*t,e},darken:function(t){var e=this.hsl();return e.color[2]-=e.color[2]*t,e},saturate:function(t){var e=this.hsl();return e.color[1]+=e.color[1]*t,e},desaturate:function(t){var e=this.hsl();return e.color[1]-=e.color[1]*t,e},whiten:function(t){var e=this.hwb();return e.color[1]+=e.color[1]*t,e},blacken:function(t){var e=this.hwb();return e.color[2]+=e.color[2]*t,e},grayscale:function(){var t=this.rgb().color,e=.3*t[0]+.59*t[1]+.11*t[2];return ie.rgb(e,e,e)},fade:function(t){return this.alpha(this.valpha-this.valpha*t)},opaquer:function(t){return this.alpha(this.valpha+this.valpha*t)},rotate:function(t){var e=this.hsl(),n=e.color[0];return n=(n=(n+t)%360)<0?360+n:n,e.color[0]=n,e},mix:function(t,e){if(!t||!t.rgb)throw new Error(\'Argument to "mix" was not a Color instance, but rather an instance of \'+typeof t);var n=t.rgb(),r=this.rgb(),s=void 0===e?.5:e,i=2*s-1,o=n.alpha()-r.alpha(),a=((i*o==-1?i:(i+o)/(1+i*o))+1)/2,c=1-a;return ie.rgb(a*n.red()+c*r.red(),a*n.green()+c*r.green(),a*n.blue()+c*r.blue(),n.alpha()*s+r.alpha()*(1-s))}},Object.keys(te).forEach((function(t){if(-1===ne.indexOf(t)){var e=te[t].channels;ie.prototype[t]=function(){if(this.model===t)return new ie(this);if(arguments.length)return new ie(arguments,t);var n="number"==typeof arguments[e]?e:this.valpha;return new ie(ce(te[this.model][t].raw(this.color)).concat(n),t)},ie[t]=function(n){return"number"==typeof n&&(n=ue(ee.call(arguments),e)),new ie(n,t)}}}));const ye=[1,1,1,1,2,2,3,0];function me(t){const e=t.length;let n="";for(let r=0;r<e;){let s=t[r++];if(128&s){let n=ye[s>>3&7];if(!(64&s)||!n||r+n>e)return null;for(s&=63>>n;n>0;n-=1){const e=t[r++];if(128!=(192&e))return null;s=s<<6|63&e}}n+=String.fromCharCode(s)}return n}new Array(3),new Array(3);const be=[1/6378137,1/6378137,1/6356752.314245179],pe=[1/40680631590769,1/40680631590769,1/40408299984661.445],we=new Array(3),ge=new Array(3),ve=new Array(3);function Me(t,e){const n=pe,r=function(t,e,n,r,s){const i=e[0],o=e[1],a=e[2],c=n[0],u=n[1],f=n[2],h=i*i*c*c,l=o*o*u*u,d=a*a*f*f,y=h+l+d,m=Math.sqrt(1/y),p=b(Te,e,m);if(y<s)return isFinite(m)?p:void 0;const w=r[0],g=r[1],v=r[2],M=Ae;M[0]=p[0]*w*2,M[1]=p[1]*g*2,M[2]=p[2]*v*2;let T,A,_,O,S,x,I,k,E,C,U,N=(1-m)*_e(e)/(.5*_e(M)),F=0;do{N-=F,_=1/(1+N*w),O=1/(1+N*g),S=1/(1+N*v),x=_*_,I=O*O,k=S*S,E=x*_,C=I*O,U=k*S,T=h*x+l*I+d*k-1,A=h*E*w+l*C*g+d*U*v;F=T/(-2*A)}while(Math.abs(T)>1e-12);return t[0]=i*_,t[1]=o*O,t[2]=a*S,t}(we,e,be,n,.1);let s=T(ge,r,n);s=function(t,e){const n=e[0],r=e[1],s=e[2];let i=n*n+r*r+s*s;i>0&&(i=Math.sqrt(i),t[0]=e[0]/i,t[1]=e[1]/i,t[2]=e[2]/i);return t}(s,s);const i=M(ve,e,r),o=Math.atan2(s[1],s[0]),a=Math.asin(s[2]),c=de(w(i,e))*_e(i);return t[0]=le(o),t[1]=le(a),t[2]=c,t}const Te=new Array(3),Ae=new Array(3);function _e(t){return f(t)}function Oe(t,e,n,r){n=n||0,r=r||n;const s=Math.abs(t-e);return s<=r||s<=n*Math.max(Math.abs(t),Math.abs(e))}function Se(t,e){let n="";for(let r=0;r<4;r++){const s=t.getUint8(e+r);n+=String.fromCharCode(s)}return n}const xe="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;function Ie(t,e,n){const r=new Uint8Array(t,e,n);return xe?JSON.parse(xe.decode(r)):JSON.parse(me(r))}function ke(t,e,n){const r=new Uint8Array(t,e,n);return xe?JSON.parse(xe.decode(r)):JSON.parse(me(r))}function Ee(t,e,n){return{offset:e,byteLength:n}}function Ce(t,e,n,r){const{byteOffset:s,componentType:i,type:o}=t,{ctor:a,type:c}=function(t){return Fe[t]}(i||"UNSIGNED_SHORT"),u=function(t){if(!t)return 1;return Ne[t]}(o);return{byteStride:0,byteOffset:s+n,itemSize:u,count:r*u,componentType:c,array:new a(e,n+s,r*u)}}function Ue(t,e,n,r){const s=Ce(t,e,n,r);return s.array.buffer.byteLength!==e.byteLength&&(s.array=s.array.slice()),s}const Ne={"SCALAR":1,"VEC2":2,"VEC3":3,"VEC4":4};const Fe={"BYTE":{ctor:Int8Array,type:5120,name:"Int8Array"},"UNSIGNED_BYTE":{ctor:Uint8Array,type:5121,name:"Uint8Array"},"SHORT":{ctor:Int16Array,type:5122,name:"Int16Array"},"UNSIGNED_SHORT":{ctor:Uint16Array,type:5123,name:"Uint16Array"},"INT":{ctor:Int32Array,type:5124,name:"Int32Array"},"UNSIGNED_INT":{ctor:Uint32Array,type:5125,name:"Uint32Array"},"FLOAT":{ctor:Float32Array,type:5126,name:"Float32Array"},"DOUBLE":{ctor:Float64Array,type:5126,name:"Float64Array"}};function Pe(t){for(const e in Fe)if(t===Fe[e].ctor)return Fe[e].type;throw new Error("unrecognized ctor:"+t)}function Be(t,e,n,r){const s=t,i=e.length/3;for(let t=0;t<i;t++)s[3*t]=e[3*t]/65535*r[0]+n[0],s[3*t+1]=e[3*t+1]/65535*r[1]+n[1],s[3*t+2]=e[3*t+2]/65535*r[2]+n[2];return s}function De(t,e,n){const r=t.getUint32(12,!0),s=t.getUint32(16,!0),i=t.getUint32(20,!0),o=t.getUint32(24,!0),a=t.buffer;let c,u={},f={},h=null;r>0&&(u=Ie(a,e,r),e+=r),s>0&&(c=function(t,e,n){return{offset:e,byteLength:n}}(0,e,s),e+=s),i>0&&(f=ke(a,e,i),e+=i);const l=Ee(0,e,o);return h=a.slice(l.offset,l.offset+l.byteLength),n.push(h),{featureTable:u,featureTableBin:c,batchTable:f,batchTableBin:h}}const Re={up:{south:"east",north:"west",west:"south",east:"north"},down:{south:"west",north:"east",west:"north",east:"south"},south:{up:"west",down:"east",west:"down",east:"up"},north:{up:"east",down:"west",west:"up",east:"down"},west:{up:"north",down:"south",north:"down",south:"up"},east:{up:"south",down:"north",north:"up",south:"down"}},Le={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},je={},ze={east:[],north:[],up:[],west:[],south:[],down:[]};let Ve=[],qe=[],Ge=[];const $e=[0,0,0];const Xe=function(t,e){const n=Re[t][e];let r;const s=t+e;return je[s]?r=je[s]:(r=function(r,s,i){if(function(t,e){var n=t[0],r=t[1],s=t[2],i=e[0],o=e[1],a=e[2];return Math.abs(n-i)<=1e-6*Math.max(1,Math.abs(n),Math.abs(i))&&Math.abs(r-o)<=1e-6*Math.max(1,Math.abs(r),Math.abs(o))&&Math.abs(s-a)<=1e-6*Math.max(1,Math.abs(s),Math.abs(a))}(r,$e))l(Ve,Le[t]),l(qe,Le[e]),l(Ge,Le[n]);else if(Oe(r[0],0,1e-14)&&Oe(r[1],0,1e-14)){const s=de(r[2]);l(Ve,Le[t]),"east"!==t&&"west"!==t&&b(Ve,Ve,s),l(qe,Le[e]),"east"!==e&&"west"!==e&&b(qe,qe,s),l(Ge,Le[n]),"east"!==n&&"west"!==n&&b(Ge,Ge,s)}else{!function(t,e){m(e,t,pe),p(e,e)}(r,ze.up);const s=ze.up,i=ze.east;i[0]=-r[1],i[1]=r[0],i[2]=0,p(ze.east,i),g(ze.north,s,i),b(ze.down,ze.up,-1),b(ze.west,ze.east,-1),b(ze.south,ze.north,-1),Ve=ze[t],qe=ze[e],Ge=ze[n]}return i[0]=Ve[0],i[1]=Ve[1],i[2]=Ve[2],i[3]=0,i[4]=qe[0],i[5]=qe[1],i[6]=qe[2],i[7]=0,i[8]=Ge[0],i[9]=Ge[1],i[10]=Ge[2],i[11]=0,i[12]=r[0],i[13]=r[1],i[14]=r[2],i[15]=1,i},je[s]=r),r}("east","north"),He={5120:Int8Array,5122:Int16Array,5124:Int32Array,5121:Uint8Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function Je(t){for(const e in He)if(t===He[e])return+e;throw new Error("unrecognized ctor:"+t)}\n/*!\n * @maptalks/gl v0.94.0\n * LICENSE : UNLICENSED\n * (c) 2016-2023 maptalks.com\n */const Ke=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof undefined)return global;throw new Error("unable to locate global object")},Ye=Ke(),Qe=Ye.gl_trans__coders=Ye.gl_trans__coders||{};Qe.inject=function(t){const e=t.toString(),n=e.indexOf("{")+1,r=e.substring(0,n),s=Ye.gl_trans__coders=Ye.gl_trans__coders||{};let i=`${r}\\n const _____getGlobal = ${Ke.toString()};\\n const g___lobals = _____getGlobal()\\n const tran_____scoders = g___lobals[\'gl_trans__coders\'] = g___lobals[\'gl_trans__coders\'] || {};`;for(const t in s)"inject"!==t&&"getTranscoder"!==t&&"registerTranscoder"!==t&&(i+=\'tran_____scoders["\'+t+\'"] =\'+s[t].toString()+"\\n;");return i+="\\n"+e.substring(r.length),i},Qe.registerTranscoder=function(t,e){Qe[t]=e},Qe.getTranscoder=function(t){return Qe[t]};let We=null;function Ze(){return We||(We={"image/crn":Qe.crn&&Qe.crn(),"image/ktx2":Qe.ktx2&&Qe.ktx2(),"image/cttf":Qe.ktx2&&Qe.ktx2(),"draco":Qe.draco&&Qe.draco()}),We}class tn{constructor(t,e,n){this.s=t,this.tt=e||dt,this.i=n,this.et=Ze()}static createEmptyB3DM(){return{featureTable:null,batchTable:null,gltf:{}}}load(t,e,n=0,r=0,s){return e?(r||(r=e.byteLength),this.nt(t,e,n,r,s)):J.getArrayBuffer(t,{}).then(e=>{const s=e.data;return r||(r=s.byteLength),this.nt(t,s,n,r)})}nt(t,e,n,r,s){const i=s&&s.maxTextureSize,o=this.rt(e,n,r,t);if(o.error)return Promise.resolve(o);const a=t.substring(0,t.lastIndexOf("/")),c=new this.tt(a,o.glb,{transferable:!0,requestImage:this.s,decoders:this.et,supportedFormats:this.i,maxTextureSize:i});return c.load({skipAttributeTransform:!1}).then(e=>{e.url=`${t}-${n}-${r}`;const s=c.transferables;for(let t=0;t<o.transferables.length;t++)s.indexOf(o.transferables[t])<0&&s.push(o.transferables[t]);return{magic:"b3dm",count:o.count,transferables:s,featureTable:o.featureTable,batchTable:o.batchTable,batchTableBin:o.batchTableBin,gltf:e}})}rt(t,e,n,r){const s=new DataView(t,e,n),i=s.getUint32(4,!0);if(1!==i){const t="Unsupported b3dm version: "+i+", url:"+r;return console.warn(t),{error:t}}if(s.getUint32(8,!0)!==s.byteLength){const t="Length in b3dm header is inconsistent with b3dm\'s byte length, url: "+r;return console.warn(t),{error:t}}let o,a=s.getUint32(12,!0),c=s.getUint32(16,!0),u=s.getUint32(20,!0),f=s.getUint32(24,!0),h=28+e;u>=570425344?(h-=8,o=a,u=c,f=0,a=0,c=0):f>=570425344&&(h-=4,o=u,u=a,f=c,a=0,c=0);const l=[t];let d,y,m;if(a>0?(d=Ie(t,h,a),h+=a,o=d.BATCH_LENGTH):d={"BATCH_LENGTH":o},c>0&&(h+=c),u>0&&(y=ke(t,h,u),h+=u,f>0)){const e=Ee(0,h,f);m=t.slice(e.offset,e.offset+e.byteLength),h+=f,l.push(m)}const b=d.BATCH_LENGTH,p={};if(d&&d.BATCH_ID){p.BATCH_ID=Ue(d.BATCH_ID,t,(void 0).offset,b);const e=p.BATCH_ID.array&&p.BATCH_ID.array.buffer;e&&l.indexOf(e)<0&&l.push(e)}return{count:o,transferables:l,featureTable:d,batchTable:y,batchTableBin:m,b3dm:p,glb:{buffer:t,byteOffset:h,byteLength:s.byteLength+s.byteOffset-h}}}st(){return null}}class en{constructor(t,e,n,r){this.s=t,this.tt=e||dt,this.i=n,this.et=Ze(),this.it=r}load(t,e,n=0,r=0,s){return e?(r||(r=e.byteLength),this.nt(t,e,n,r,s)):J.getArrayBuffer(t,{}).then(e=>{const s=e.data;return r||(r=s.byteLength),this.nt(t,s,n,r)})}nt(t,e,n,r,s){return this.ot(t,e,n,r,s).then(({gltf:s,transferables:i})=>{const o=this.ct(e,n,r,t);if(o.error)return Promise.resolve(o);for(let t=0;t<i.length;t++)-1===o.transferables.indexOf(i[t])&&o.transferables.push(i[t]);return delete s.transferables,Promise.resolve({magic:"i3dm",count:o.count,transferables:o.transferables,featureTable:o.featureTable,batchTable:o.batchTable,batchTableBin:o.batchTableBin,i3dm:o.i3dm,gltf:s})})}ot(t,e,n,r,s){const i=s&&s.maxTextureSize,o={transferable:!0,requestImage:this.s,decoders:this.et,supportedFormats:this.i,maxTextureSize:i},a=new DataView(e,n,r),c=32+a.getUint32(12,!0)+a.getUint32(16,!0)+a.getUint32(20,!0)+a.getUint32(24,!0);if(0===a.getUint32(28,!0)){let r=me(new Uint8Array(e,c+n,a.byteLength-c));-1==r.indexOf("://")&&(r=t.substring(0,t.lastIndexOf("/"))+"/"+r);return r.indexOf(".glb")>0?J.getArrayBuffer(r,{}).then(t=>this.ut(r,{buffer:t.data,byteOffset:0},o)):J.getJSON(r,{}).then(t=>this.ut(r,t,o))}{const r={buffer:e,byteOffset:c+n,byteLength:a.byteLength-c};return this.ut(t,r,o)}}ut(t,e,n){const r=t.substring(0,t.lastIndexOf("/")),s=new this.tt(r,e,n);return s.load({skipAttributeTransform:!0}).then(n=>{let r=0,i=0;return e.buffer&&(r=e.byteOffset||0,i=e.byteLength||0),n.url=`${t}-${r}-${i}`,{transferables:s.transferables,gltf:n}})}ct(t,e,n,r){const s=new DataView(t,e,n),i=s.getUint32(4,!0);if(1!==i){const t="Unsupported pnts version: "+i+", url:"+r;return console.warn(t),{error:t}}if(s.getUint32(8,!0)!==s.byteLength){const t="Length in pnts header is inconsistent with pnts\'s byte length, url: "+r;return console.warn(t),{error:t}}const o=[t],{featureTable:a,featureTableBin:c,batchTable:u,batchTableBin:f}=De(s,32+e,o),h={},l=a.INSTANCES_LENGTH;if(a.POSITION){const{byteOffset:e}=a.POSITION;h.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:l,componentType:5126,array:new Float32Array(t,e+c.offset,3*l).slice()},o.push(h.POSITION.array.buffer)}else if(a.POSITION_QUANTIZED){const e=a.QUANTIZED_VOLUME_OFFSET,n=a.QUANTIZED_VOLUME_SCALE,{byteOffset:r}=a.POSITION_QUANTIZED;h.POSITION={byteStride:12,byteOffset:0,itemSize:3,count:l,componentType:5126,array:this.ft(new Uint16Array(t,r+c.offset,3*l),e,n)},o.push(h.POSITION.array.buffer)}if(a.BATCH_ID){h.BATCH_ID=Ue(a.BATCH_ID,t,c.offset,l);const e=h.BATCH_ID.array&&h.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}if(a.NORMAL_UP){let{byteOffset:e}=a.NORMAL_UP;h.NORMAL_UP={byteStride:0,byteOffset:0,itemSize:3,count:l,componentType:5126,array:new Float32Array(t,e+c.offset,3*l).slice()},o.push(h.NORMAL_UP.array.buffer),e=a.NORMAL_RIGHT.byteOffset,h.NORMAL_RIGHT={byteStride:0,byteOffset:0,itemSize:3,count:l,componentType:5126,array:new Float32Array(t,e+c.offset,3*l).slice()},o.push(h.NORMAL_RIGHT.array.buffer)}else if(a.NORMAL_UP_OCT32P){let{byteOffset:e}=a.NORMAL_UP_OCT32P;h.NORMAL_UP={byteStride:0,byteOffset:0,itemSize:3,count:l,componentType:5126,array:this.ht(new Uint16Array(t,e+c.offset,2*l))},o.push(h.NORMAL_UP.array.buffer),e=a.NORMAL_RIGHT_OCT32P.byteOffset,h.NORMAL_RIGHT={byteStride:0,byteOffset:0,itemSize:3,count:l,componentType:5126,array:this.ht(new Uint16Array(t,e+c.offset,2*l))},o.push(h.NORMAL_RIGHT.array.buffer)}if(a.SCALE){const{byteOffset:e}=a.SCALE;h.SCALE={byteStride:0,byteOffset:0,itemSize:1,count:l,componentType:5126,array:new Float32Array(t,e+c.offset,l).slice()},o.push(h.SCALE.array.buffer)}else if(a.SCALE_NON_UNIFORM){const{byteOffset:e}=a.SCALE_NON_UNIFORM;h.SCALE_NON_UNIFORM={byteStride:0,byteOffset:0,itemSize:3,count:l,componentType:5126,array:new Float32Array(t,e+c.offset,3*l).slice()},o.push(h.SCALE_NON_UNIFORM.array.buffer)}return{count:l,batchTable:u,batchTableBin:f,featureTable:a,i3dm:h,transferables:o}}ht(t){const e=t.length/2,n=new Float32Array(3*e),r=[];for(let s=0;s<e;s++)nn(r,t[2*s],t[2*s+1],65535),n[3*s]=r[0],n[3*s+1]=r[1],n[3*s+2]=r[2];return n}ft(t,e,n){return Be(new Float32Array(t.length),t,e,n)}st(){return null}}function nn(t,e,n,r){if(t[0]=rn(e,r),t[1]=rn(n,r),t[2]=1-(Math.abs(t[0])+Math.abs(t[1])),t[2]<0){const e=t[0];t[0]=(1-Math.abs(t[1]))*sn(e),t[1]=(1-Math.abs(e))*sn(t[1])}return p(t,t)}function rn(t,e){return function(t,e,n){return t<e?e:t>n?n:t}(t,0,e=function(t,e){if(null!=t)return t;return e}(e,255))/e*2-1}function sn(t){return t<0?-1:1}class on{constructor(){}load(t,e,n=0,r=0){return e?(r||(r=e.byteLength),this.nt(t,e,n,r)):J.getArrayBuffer(t,{}).then(e=>{const s=e.data;return r||(r=s.byteLength),this.nt(t,s,n,r)})}nt(t,e,n,r){return this.lt(e,n,r,t).then(t=>t.error?t:{magic:"pnts",count:t.count,transferables:t.transferables,featureTable:t.featureTable,batchTable:t.batchTable,batchTableBin:t.batchTableBin,pnts:t.pnts})}lt(t,e,n,r){const s=new DataView(t,e,n),i=s.getUint32(4,!0);if(1!==i){const t="Unsupported pnts version: "+i+", url:"+r;return console.warn(t),{error:t}}if(s.getUint32(8,!0)!==s.byteLength){const t="Length in pnts header is inconsistent with pnts\'s byte length, url: "+r;return console.warn(t),{error:t}}const o=[t],{featureTable:a,featureTableBin:c,batchTable:u,batchTableBin:f}=De(s,e+28,o),h=a.QUANTIZED_VOLUME_OFFSET,l=a.QUANTIZED_VOLUME_SCALE,d=a.POINTS_LENGTH;let y,m={};if(a.extensions&&a.extensions["3DTILES_draco_point_compression"]){m=a.extensions["3DTILES_draco_point_compression"],y=new DataView(t,m.byteOffset+c.offset,m.byteLength);const e={attributes:m.properties,useUniqueIDs:!1};return this.dt||(this.dt=Ze().draco),this.dt(y,e).then(e=>{const n=e.attributes;!a.POSITION&&!a.POSITION_QUANTIZED||n.POSITION||n.POSITION_QUANTIZED||(n.POSITION=a.POSITION,n.POSITION_QUANTIZED=a.POSITION_QUANTIZED),!(a.RGB||a.RGBA||a.RGB565)||n.RGB||n.RGBA||n.RGB565||(n.RGB=a.RGB,n.RGBA=a.RGBA,n.RGB565=a.RGB565),!a.NORMAL&&!a.NORMAL_OCT16P||n.NORMAL||n.NORMAL_OCT16P||(n.NORMAL=a.NORMAL,n.NORMAL_OCT16P=a.NORMAL_OCT16P);const r=this.yt(t,e.attributes,c.offset,d,o,h,l);if(e.attributes.BATCH_ID){const t=e.attributes.BATCH_ID.array;r.BATCH_ID={byteStride:0,byteOffset:0,itemSize:1,count:t.length,componentType:Pe(t.constructor),array:t},o.push(t.buffer)}else if(a.BATCH_ID||Object.keys(u).length){a.BATCH_ID?r.BATCH_ID=Ue(a.BATCH_ID,t,c.offset,d):r.BATCH_ID=an(d);const e=r.BATCH_ID.array&&r.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}return{count:d,batchTable:u,batchTableBin:f,featureTable:a,pnts:r,transferables:o}})}const b=this.yt(t,a,c.offset,d,o,h,l);if(a.BATCH_ID||Object.keys(u).length){a.BATCH_ID?b.BATCH_ID=Ue(a.BATCH_ID,t,c.offset,d):b.BATCH_ID=an(d);const e=b.BATCH_ID.array&&b.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}return Promise.resolve({count:d,batchTable:u,batchTableBin:f,featureTable:a,pnts:b,transferables:o})}yt(t,e,n,r,s,i,o){const a={};if(e.POSITION){let{byteOffset:i,array:o}=e.POSITION;i=i||0;const c=o?0:n;if(!o){const e=t.slice(i+c,i+c+3*r*4);o=new Float32Array(e)}a.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:r,componentType:5126,array:o},s.push(o.buffer)}else if(e.POSITION_QUANTIZED){let{byteOffset:c}=e.POSITION_QUANTIZED;const{array:u}=e.POSITION_QUANTIZED;c=c||0;const f=u?0:n;a.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:r,componentType:5126,array:this.ft(u||new Uint16Array(t,c+f,3*r),i,o)},s.push(a.POSITION.array.buffer)}if(e.RGBA){let{byteOffset:i,array:o}=e.RGBA;i=i||0;const c=o?0:n;if(!o){const e=t.slice(i+c,i+c+4*r);o=new Uint8Array(e)}a.RGBA={byteStride:0,byteOffset:0,itemSize:4,count:r,componentType:5121,array:o},s.push(o.buffer)}else if(e.RGB){let{byteOffset:i,array:o}=e.RGB;i=i||0;const c=o?0:n;if(!o){const e=t.slice(i+c,i+c+3*r);o=new Uint8Array(e)}a.RGB={byteStride:0,byteOffset:0,itemSize:3,count:r,componentType:5121,array:o},s.push(o.buffer)}else if(e.RGB565){let{byteOffset:i,array:o}=e.RGB565;i=i||0;const c=o?0:n;if(!o){const e=t.slice(i+c,i+c+2*r);o=new Uint16Array(e)}a.RGB565={byteStride:0,byteOffset:0,itemSize:1,count:r,componentType:5123,array:o},s.push(o.buffer)}if(e.NORMAL){let{byteOffset:i,array:o}=e.NORMAL;i=i||0;const c=o?0:n;if(!o){const e=t.slice(i+c,i+c+3*r*4);o=new Float32Array(e)}a.NORMAL={byteStride:0,byteOffset:0,itemSize:3,count:r,componentType:5126,array:o},s.push(o.buffer)}else if(e.NORMAL_OCT16P){let{byteOffset:i,array:o}=e.NORMAL_OCT16P;i=i||0;const c=o?0:n;if(!o){const e=t.slice(i+c,i+c+2*r);o=new Uint8Array(e)}a.NORMAL_OCT16P={byteStride:0,byteOffset:0,itemSize:2,count:r,componentType:5121,array:o},s.push(o.buffer)}return a}ft(t,e,n){return Be(new Float32Array(t.length),t,e,n)}st(){return null}}function an(t){const e=(n=t)<256?Uint8Array:n<65536?Uint16Array:Uint32Array;var n;const r=new e(t);for(let e=0;e<t;e++)r[e]=e;return{byteStride:0,byteOffset:0,itemSize:1,count:t,componentType:Pe(e),array:r}}class cn{constructor(t,e,n,r){this.i=n,this.s=t,this.tt=e||dt,this.it=r}load(t,e,n=0,r=0,s){return e?this.nt(t,e,n,r,s):J.getArrayBuffer(t,{}).then(e=>{const s=e.data;return this.nt(t,s,n,r)})}nt(t,e,n,r,s){r||(r=e.byteLength);const i=this.bt(e,t,n,r),o=[];for(let n=0;n<i.length;n++){let r;if("b3dm"===i[n].magic)r=new tn(this.s,this.tt,this.i);else if("i3dm"===i[n].magic)r=new en(this.s,this.tt,this.i,this.it);else if("pnts"===i[n].magic)r=new on;else{if("cmpt"!==i[n].magic){console.warn("Unsupported magic in CMPT tile:",i[n].magic);continue}r=new cn(this.s,this.tt,this.i,this.it)}o.push(r.load(t,e,i[n].offset,i[n].byteLength,s).then(t=>t))}return Promise.all(o).then(t=>({magic:"cmpt",tiles:t}))}bt(t,e,n,r){const s=new DataView(t,n,r),i=s.getUint32(4,!0);if(1!==i){const t="Unsupported cmpt version: "+i+", url:"+e;return console.warn(t),{error:t}}if(16===s.byteLength)return[];const o=[],a=s.getUint32(12,!0);let c=16;for(let e=0;e<a;e++){const e=Se(s,c),r=s.getUint32(c+8,!0);o.push({magic:e,buffer:t,offset:c+n,byteLength:r}),c+=r}return o}}function un(t,e){if(t.scenes&&t.scenes.length)for(let n=0,r=t.scenes.length;n<r;n++){const r=t.scenes[n].nodes;for(let n=0,s=r.length;n<s;n++){const s=[];bn(r[n],s,t,e)}}}const fn=[],hn=[],ln=[],dn=[0,0,0],yn=x([]),mn=[1,1,1];function bn(t,e,n,r){const c=e.slice(0);if(t.matrix)c.push(t.matrix);else if(t.rotation||t.translation||t.scale){const e=i(fn,t.translation||dn),n=a(hn,t.rotation||yn),r=o(ln,t.scale||mn);s(r,n,r);const u=s([],e,r);c.push(u)}if(t.children&&t.children.length)for(let e=0,s=t.children.length;e<s;e++)bn(t.children[e],c,n,r);if(void 0!==t.mesh){const e=t.mesh,s=n.meshes[e];if(s){const t=c.slice(0),i=s.primitives;for(let s=0,o=i.length;s<o;s++){const o=i[s];o&&(o.matrices=t,r(o,e,s,n))}}}}function pn(t,e){let{byteOffset:n,byteStride:r,count:s}=t;const{componentType:i,itemSize:o}=t,a=t.array.buffer,c=i?dt.getTypedArrayCtor(i):t.array.constructor;if(n=void 0===n?t.array.byteOffset:n,r=r||0,s=s||t.array.length/o,(!r||r===o*c.BYTES_PER_ELEMENT)&&n%c.BYTES_PER_ELEMENT==0){const t=new c(a,n,s*o);for(let r=0;r<s*o;r+=o){e(new c(t.buffer,n+r*c.BYTES_PER_ELEMENT,o),r/o)}return}const u=new Uint8Array(o*c.BYTES_PER_ELEMENT);r||(r=o*c.BYTES_PER_ELEMENT);for(let t=0;t<s;t++){const s=new Uint8Array(a,r*t+n,o*c.BYTES_PER_ELEMENT);u.set(s);e(new c(u.buffer),t),s.set(u)}}var wn=An("DXT1"),gn=An("DXT3"),vn=An("DXT5"),Mn=An("DX10"),Tn=function(t){var e,n,r=new Int32Array(t,0,31);if(542327876!==r[0])throw new Error("Invalid magic number in DDS header");if(4&!r[20])throw new Error("Unsupported format, must contain a FourCC code");var s=r[21];switch(s){case wn:e=8,n="dxt1";break;case gn:e=16,n="dxt3";break;case vn:e=16,n="dxt5";break;case 116:n="rgba32f";break;case Mn:var i=new Uint32Array(t.slice(128,148));n=i[0];var o=i[1];if(i[2],i[3],i[4],3!==o||2!==n)throw new Error("Unsupported DX10 texture format "+n);n="rgba32f";break;default:throw new Error("Unsupported FourCC code: "+(a=s,String.fromCharCode(255&a,a>>8&255,a>>16&255,a>>24&255)))}var a;var c=r[2],u=1;131072&c&&(u=Math.max(1,r[7]));var f=!1;512&r[28]&&(f=!0);var h,l=r[4],d=r[3],y=r[1]+4,m=l,b=d,p=[];s===Mn&&(y+=20);if(f)for(var w=0;w<6;w++){if("rgba32f"!==n)throw new Error("Only RGBA32f cubemaps are supported");l=m,d=b;for(var g=Math.log(l)/Math.log(2)+1,v=0;v<g;v++)h=l*d*16,p.push({offset:y,length:h,shape:[l,d]}),v<u&&(y+=h),l=Math.floor(l/2),d=Math.floor(d/2)}else for(v=0;v<u;v++)h=Math.max(4,l)/4*Math.max(4,d)/4*e,p.push({offset:y,length:h,shape:[l,d]}),y+=h,l=Math.floor(l/2),d=Math.floor(d/2);return{shape:[m,b],images:p,format:n,flags:c,cubemap:f}};function An(t){return t.charCodeAt(0)+(t.charCodeAt(1)<<8)+(t.charCodeAt(2)<<16)+(t.charCodeAt(3)<<24)}var _n=Math.abs,On=Math.sin,Sn=Math.cos,xn=Math.tan,In=Math.atan,kn=Math.atan2,En=Math.sqrt,Cn=Math.log,Un=Math.hypot,Nn=Math.sinh,Fn=Math.cosh;function Pn(t){var e,n,r,s,i,o,a=[],c=[],u=[],f=[];function h(t,e){for(var n,r=2*Sn(2*e),s=t.length-1,i=t[s],o=0;--s>=0;)n=r*i-o+t[s],o=i,i=n;return e+n*On(2*e)}function l(t,e,n){for(var r,s,i=On(e),o=Sn(e),a=Nn(n),c=Fn(n),u=2*o*c,f=-2*i*a,h=t.length-1,l=t[h],d=0,y=0,m=0;--h>=0;)r=y,s=d,l=u*(y=l)-r-f*(d=m)+t[h],m=f*y-s+u*d;return[(u=i*c)*l-(f=o*a)*m,u*m+f*l]}t.es,i=s=(r=t.es/(1+En(1-t.es)))/(2-r),a[0]=s*(2+s*(-2/3+s*(s*(116/45+s*(26/45+s*(-2854/675)))-2))),c[0]=s*(s*(2/3+s*(4/3+s*(-82/45+s*(32/45+s*(4642/4725)))))-2),i*=s,a[1]=i*(7/3+s*(s*(-227/45+s*(2704/315+s*(2323/945)))-1.6)),c[1]=i*(5/3+s*(-16/15+s*(-13/9+s*(904/315+s*(-1522/945))))),i*=s,a[2]=i*(56/15+s*(-136/35+s*(-1262/105+s*(73814/2835)))),c[2]=i*(-26/15+s*(34/21+s*(1.6+s*(-12686/2835)))),i*=s,a[3]=i*(4279/630+s*(-332/35+s*(-399572/14175))),c[3]=i*(1237/630+s*(s*(-24832/14175)-2.4)),i*=s,a[4]=i*(4174/315+s*(-144838/6237)),c[4]=i*(-734/315+s*(109598/31185)),i*=s,a[5]=i*(601676/22275),c[5]=i*(444337/155925),i=s*s,e=t.k0/(1+s)*(1+i*(1/4+i*(1/64+i/256))),u[0]=s*(s*(2/3+s*(-37/96+s*(1/360+s*(81/512+s*(-96199/604800)))))-.5),f[0]=s*(.5+s*(-2/3+s*(5/16+s*(41/180+s*(-127/288+s*(7891/37800)))))),u[1]=i*(-1/48+s*(-1/15+s*(437/1440+s*(-46/105+s*(1118711/3870720))))),f[1]=i*(13/48+s*(s*(557/1440+s*(281/630+s*(-1983433/1935360)))-.6)),i*=s,u[2]=i*(-17/480+s*(37/840+s*(209/4480+s*(-5569/90720)))),f[2]=i*(61/240+s*(-103/140+s*(15061/26880+s*(167603/181440)))),i*=s,u[3]=i*(-4397/161280+s*(11/504+s*(830251/7257600))),f[3]=i*(49561/161280+s*(-179/168+s*(6601661/7257600))),i*=s,u[4]=i*(-4583/161280+s*(108847/3991680)),f[4]=i*(34729/80640+s*(-3418889/1995840)),i*=s,u[5]=i*(-20648693/638668800),f[5]=.6650675310896665*i,o=h(c,t.phi0),n=-e*(o+function(t,e){var n,r=2*Sn(e),s=t.length-1,i=t[s],o=0;for(;--s>=0;)n=r*i-o+t[s],o=i,i=n;return On(e)*n}(f,2*o)),t.fwd=function(t,r){var s,i,o,a,u,d=t.phi,y=t.lam;d=h(c,d),s=On(d),i=Sn(d),a=On(y),o=Sn(y),d=kn(s,o*i),y=kn(a*i,Un(s,i*o)),y=function(t){var e=_n(t);return e=function(t){var e=1+t,n=e-1;return 0===n?t:t*Cn(e)/n}(e*(1+e/(Un(1,e)+1))),t<0?-e:e}(xn(y)),u=l(f,2*d,2*y),d+=u[0],y+=u[1],_n(y)<=2.623395162778?(r.y=e*d+n,r.x=e*y):r.x=r.y=1/0},t.inv=function(t,r){var s,i,o,c,f,d=t.y,y=t.x;d=(d-n)/e,_n(y/=e)<=2.623395162778?(f=l(u,2*d,2*y),d+=f[0],y+=f[1],y=In(Nn(y)),s=On(d),i=Sn(d),c=On(y),o=Sn(y),y=kn(c,o*i),d=kn(s*o,Un(c,o*i)),r.phi=h(a,d),r.lam=y):r.phi=r.lam=1/0}}const Bn=Math.PI/180,Dn=6378137*Math.PI/180,Rn={};function Ln(t,e,n,r){if("EPSG:3857"===n)return function(t,e){const n=85.0511287798,r=e[0],s=Math.max(Math.min(n,e[1]),-n);let i;i=0===s?0:Math.log(Math.tan((90+s)*Bn/2))/Bn;return t[0]=r*Dn,t[1]=i*Dn,t}(t,e);if(!n||"EPSG:9807"!==n.code&&"Traverse_Mercator"!==n.code){if("EPSG:4326"===n||"EPSG:4490"===n||"identity"===n)return jn(t,e);if("baidu"===n)return jn(t,e);throw new Error("unsupported projection:"+n)}{if(!(!r||4326===r.wkid))return function(t,e){return t[0]=e[0],t[1]=e[1],t}(t,e);const s=JSON.stringify(n);let i=Rn[s];return i||(i=Rn[s]=function(t){const e={a:6378137,es:.0066943799901413165,x0:fe(t.falseEasting)?5e5:t.falseEasting,y0:fe(t.falseNorthing)?0:t.falseNorthing,k0:t.scaleFactor||.9996,lam0:(t.centralMeridian||0)*zn,phi0:(t.latitudeOfOrigin||0)*zn,originLam0:t.startLongtitude||0,originPhi0:t.startLatitude||0};Pn(e);const n={lam:0,phi:0},r={};let s=0,i=0;(e.originLam0||e.originPhi0)&&(n.lam=e.originLam0*zn-e.lam0,n.phi=e.originPhi0*zn,e.fwd(n,r),s=e.a*r.x+e.x0,i=e.a*r.y+e.y0);return{project:function(t,o){n.lam=t[0]*zn-e.lam0,n.phi=t[1]*zn,e.fwd(n,r);const a=e.a*r.x+e.x0-s,c=e.a*r.y+e.y0-i;return o[0]=a,o[1]=c,o}}}(n)),i.project(e,t)}}function jn(t,e){return t[0]=e[0],t[1]=e[1],t}const zn=.017453292519943295;const Vn=r([]),qn=Ze().draco,Gn=Ze().ktx2,$n={"pbrMetallicRoughness":{"baseColorFactor":[.5,.5,.5,1],"metallicFactor":0,"roughnessFactor":.5}},Xn={"position":{name:"POSITION",accessor:{"componentType":5126,"type":"VEC3"}},"normal":{name:"NORMAL",accessor:{"componentType":5126,"type":"VEC3"}},"uv0":{name:"TEXCOORD_0",accessor:{"componentType":5126,"type":"VEC2"}},"color":{name:"COLOR_0",accessor:{"componentType":5121,"type":"VEC4"}},"uv-region":{name:"uvRegion",accessor:{"componentType":5123,"type":"VEC4"}},"feature-index":{name:"_BATCHID",accessor:{"componentType":5125,"type":"SCALAR"}},"faceRange":{name:"faceRange",accessor:{"componentType":5125,"type":"VEC2"}}};function Hn(t,e,n,s,i){const o=[],a=[],c=[];for(let e=0;e<t.meshes.length;e++){const{geometry:n,material:r}=t.meshes[e],s=J.getArrayBuffer(n.url);s.xhr.url=n.url,c.push(s.xhr);const i=s.then(t=>({buffer:t}));o.push(i);const u=[];if(tr(r,u),u.length){const t=u.map(t=>{const e=J.getArrayBuffer(t.url);return e.xhr.url=t.url,c.push(e.xhr),e.then(e=>e&&e.status?null:{buffer:e,mimeType:t.mimeType,format:t.format})});o.push(...t)}a[e]=u.length}const u=Promise.all(o).then(o=>{for(let t=0;t<o.length;t++)if(!o[t]||!o[t].buffer)return Promise.resolve(null);const c=[];let u=0;for(let t=0;t<a.length;t++){const e=a[t];c.push({geoBuffer:{data:o[u].buffer.data},textureBuffers:o.slice(u+1,e+u+1).map(t=>({data:t.buffer.data,mimeType:t.mimeType,format:t.format}))}),u+=1+e}return function(t,e,n,s,i,o){const a={asset:{generator:"i3s",version:"2.0"},extensions:{},scene:0,scenes:[{nodes:[]}],nodes:{},meshes:{},materials:[],skins:[],animations:null,textures:[],transferables:[]},c=[];for(let u=0;u<t.meshes.length;u++){let{material:f}=t.meshes[u];const{geometry:h}=t.meshes[u];let l;const d=e[u].geoBuffer.data;if(!d)continue;const y=or(d);l=y?Kn(a,u,h,d,t.transform,t.center,i,o):Qn(a,u,h,d,t.transform,t.center,i,o),c.push(l),a.nodes[u]={mesh:u,nodeIndex:u,matrix:r([])},a.scenes[0].nodes[u]=a.nodes[u],f||(f=$n);const m=Zn(u,a,f,e[u].textureBuffers,n,s);c.push(m)}return Promise.all(c).then(()=>({gltf:a,featureTable:{BATCH_LENGTH:0},transferables:a.transferables}))}(t,c,e,i,n,s)});return u.xhr=c,u}const Jn={"magFilter":9728,"minFilter":9728,"wrapR":33071,"wrapS":33071,"wrapT":33071};function Kn(t,e,n,r,s,i,o,a){const c=n.info.compressedAttributes.attributes.reduce((t,e,n)=>{const r=Xn[e];if(!r)return t;return t[r.name||e]=n,t},{});return qn(r,{attributes:c,metadatas:{"POSITION":[{name:"i3s-scale_x",type:"double"},{name:"i3s-scale_y",type:"double"}]},useUniqueIDs:!1,skipAttributeTransform:!1}).then(n=>Wn(n,t,e,s,i,o,a))}const Yn={position:function(t,e,n){const r=3*t.vertexCount,s=new Float32Array(e,n,r);return t.position={array:s,componentType:5126,itemSize:3,count:r/3,meta:{"i3s-scale_x":1,"i3s-scale_y":1},type:"VEC3"},n+=4*r},normal:function(t,e,n){const r=3*t.vertexCount,s=new Float32Array(e,n,r);return t.normal={array:s,componentType:5126,itemSize:3,count:r/3,type:"VEC3"},n+=4*r},uv0:function(t,e,n){const r=2*t.vertexCount,s=new Float32Array(e,n,r);return t.uv0={array:s,componentType:5126,itemSize:2,count:r/2,type:"VEC2"},n+=4*r},color:function(t,e,n){const r=4*t.vertexCount,s=new Uint8Array(e,n,r);return t.color={array:s,componentType:5121,itemSize:4,count:r/4,type:"VEC4"},n+=r},featureId:function(t,e,n){return n+=8*t.featureCount},id:function(t,e,n){return n+=8*t.featureCount},faceRange:function(t,e,n){const r=2*t.featureCount,s=new Uint32Array(e,n,r);return t.faceRange={array:s,componentType:5125,itemSize:2,count:r/2,type:"VEC2"},n+=4*r},uvRegion:function(t,e,n){const r=4*t.vertexCount,s=new Uint16Array(e,n,r);return t["uv-region"]={array:s,componentType:5123,itemSize:4,count:r/4,type:"VEC4"},n+=2*r},region:function(t,e,n){const r=4*t.vertexCount,s=new Uint16Array(e,n,r);return t["uv-region"]={array:s,componentType:5123,itemSize:4,count:r/4,type:"VEC4"},n+=2*r}};function Qn(t,e,n,r,s,i,o,a){const c={vertexCount:0},u=new DataView(r);try{let t=0;c.vertexCount=u.getUint32(t,1),t+=4,c.featureCount=u.getUint32(t,1),t+=4;const e=n.info.ordering?null:n.info;if(e){const n=[];for(const t in e)"offset"!==t&&""!==t&&n.push(t);for(let e=0;e<n.length;e++)Yn[n[e]]?t=Yn[n[e]](c,r,t):console.error("Unknown decoder for",n[e])}else{const e=n.info;let s=e.ordering,i=e.featureAttributeOrder;const o=null;o&&o.geometryData&&o.geometryData[0]&&o.geometryData[0].params;for(let e=0;e<s.length;e++){const n=Yn[s[e]];n||console.log(s[e]),t=n(c,r,t)}for(let e=0;e<i.length;e++){const n=Yn[i[e]];n||console.log(i[e]),t=n(c,r,t)}}}catch(t){}c.scale_x=1,c.scale_y=1;const f={};for(const t in c){const e=Xn[t]&&Xn[t].name;e&&(f[e]=c[t])}if(c.faceRange){const t=c.faceRange.array,e=t.length/2,n=(h=e)<=255?Uint8Array:h<=65535?Uint16Array:Uint32Array,r=new n(f.POSITION.array.length/3);for(let e=0;e<t.length-1;e+=2){const n=e/2,s=t[e],i=t[e+1];for(let t=s;t<=i;t++)r[3*t]=n,r[3*t+1]=n,r[3*t+2]=n}f._BATCHID={componentType:Je(n),array:r,itemSize:1,count:r.length,type:"SCALAR"}}var h;return Wn({attributes:f},t,e,s,i,o,a)}function Wn(t,e,n,r,s,i,o){const a={attributes:t.attributes,material:n,indices:t.indices,mode:4};!function(t){const e=t.array,n=t.meta&&t.meta["i3s-scale_x"],r=t.meta&&t.meta["i3s-scale_y"];if(n&&r&&(1!==n||1!==r))for(let t=0;t<e.length;t+=3)e[t]*=n.value,e[t+1]*=r.value}(t.attributes.POSITION);const u=function(t,e,n,r,s){let i,o=[0,0,0,1];const a=[0,0],u=Ln([],n,r,s);u[2]=n[2];const f=e&&c(Vn,e);return pn(t,t=>(o[0]=t[0],o[1]=t[1],o[2]=t[2],f||(o=v(o,o,e)),n&&y(o,o,n),Ln(a,o,r,s),i=o[2],t[0]=a[0]-u[0],t[1]=a[1]-u[1],t[2]=i-u[2],t)),u}(t.attributes.POSITION,r,s,i,o);e.meshes[n]={primitives:[a],index:n},e.extensions.MAPTALKS_RTC={projCenter:u},e.extensions.CESIUM_RTC={rtcCoord:s};for(const n in t.attributes)ir(e.transferables,t.attributes[n].array.buffer);return t.indices&&ir(e.transferables,t.indices.array.buffer),a}function Zn(t,e,n,r,s,i){const o=r.map(t=>function(t,e,n,r,s){if("dds"===e){const e=Tn(t),r=e.images.map(e=>new Uint8Array(t,e.offset,e.length)),s="dxt1"===e.format?33777:33779;return Promise.resolve({image:{mipmap:r,width:e.shape[0],height:e.shape[1],mimeType:n},sampler:Jn,format:s})}if("png"===e||"jpg"===e)return function(t,e){er||(er=new OffscreenCanvas(2,2),nr=er.getContext("2d",{willReadFrequently:!0}));const n=new Blob([new Uint8Array(t)]);return createImageBitmap(n).then(t=>{let{width:n,height:r}=t;rr(n)||(n=sr(n)),rr(r)||(r=sr(r));const s=e;s&&(n=Math.min(s,n),r=Math.min(s,r)),er.width=n,er.height=r,nr.drawImage(t,0,0,n,r),t.close();const i=nr.getImageData(0,0,n,r);return{width:n,height:r,array:new Uint8Array(i.data)}}).catch(()=>({width:2,height:2,array:new Uint8Array(4)}))}(t,s).then(t=>{t.mimeType=n;return{image:t,sampler:Jn,format:6408}});if("ktx2"===e)return Gn(t,r).then(t=>(t.mimeType=n,{image:t,sampler:Jn,format:t.format}));return null}(t.data,t.format,t.mimeType,s,i).then(t=>{if(t.image)if(t.image.array)ir(e.transferables,t.image.array.buffer);else if(t.image.mipmap)for(let n=0;n<t.image.mipmap.length;n++)ir(e.transferables,t.image.mipmap[n].buffer);return t}));return Promise.all(o).then(r=>{!function t(e,n,r,s){const i=JSON.parse(JSON.stringify(r)),o=n.textures;s.ptr||(s.ptr=0);for(const e in r)r[e]&&r[e].url?(o.push(s[s.ptr++]),i[e]={index:o.length-1},void 0!==r[e].factor&&(i[e].scale=r[e].factor)):he(r[e])&&(i[e]=t(-1,n,r[e],s));e>=0&&(n.materials[e]=i);return i}(t,e,n,r)})}function tr(t,e){for(const n in t)t[n]&&t[n].url?e.push({url:t[n].url,mimeType:t[n].mimeType,format:t[n].format}):he(t[n])&&tr(t[n],e)}let er,nr;function rr(t){return 0==(t&t-1)&&0!==t}function sr(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}function ir(t,e){e&&(t.indexOf(e)>=0||t.push(e))}function or(t){const e=new Uint8Array(t,0,5);return e[0]==="D".charCodeAt()&&e[1]==="R".charCodeAt()&&e[2]==="A".charCodeAt()&&e[3]==="C".charCodeAt()&&e[4]==="O".charCodeAt()}const ar=[];const cr=[],ur=[],fr=[],hr=[],lr=[],dr=[],yr=[];function mr(t,e,n,r,s,i){d(hr,t[3*e],t[3*e+1],t[3*e+2]),d(lr,t[3*n],t[3*n+1],t[3*n+2]),d(dr,t[3*r],t[3*r+1],t[3*r+2]);const o=M(cr,dr,lr),a=M(ur,hr,lr),c=g(fr,o,a);p(yr,c),s[3*e]=s[3*e]||0,s[3*n]=s[3*n]||0,s[3*r]=s[3*r]||0,s[3*e+1]=s[3*e+1]||0,s[3*n+1]=s[3*n+1]||0,s[3*r+1]=s[3*r+1]||0,s[3*e+2]=s[3*e+2]||0,s[3*n+2]=s[3*n+2]||0,s[3*r+2]=s[3*r+2]||0,s[3*e]+=yr[0],s[3*n]+=yr[0],s[3*r]+=yr[0],s[3*e+1]+=yr[1],s[3*n+1]+=yr[1],s[3*r+1]+=yr[1],s[3*e+2]+=yr[2],s[3*n+2]+=yr[2],s[3*r+2]+=yr[2],i[e]+=1,i[n]+=1,i[r]+=1}const br=[1,0,0,0,0,0,1,0,0,-1,0,0,0,0,0,1],pr=[0,0,1,0,0,1,0,0,-1,0,0,0,0,0,0,1],wr=2*Math.PI*6378137/360,gr="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;let vr,Mr=!1;if("undefined"!=typeof OffscreenCanvas){try{vr=new OffscreenCanvas(2,2).getContext("2d",{willReadFrequently:!0})}catch(t){}vr&&"undefined"!=typeof createImageBitmap&&(Mr=!0)}const Tr=r([]),Ar=[0,0,0],_r=[],Or=[],Sr=[],xr=[],Ir={"POSITION":1,"TEXCOORD_0":1,"TEXCOORD_1":1,"NORMAL":1,"TANGENT":1},kr={"TEXCOORD_0":1e-4,"TEXCOORD_1":1e-4};class Er{constructor(t,e,n,r){this.id=t,this.options=e,this.pt=this.requestImage.bind(this),this.wt=n,this.gt={},r(null,{},[])}vt(t){this.Mt||(this.i=t,this.Tt=new on,this.Mt=new tn(this.pt,dt,t),this.At=new en(this.pt,dt,t))}requestImage(t,e){Mr?fetch(t).then(t=>t.arrayBuffer()).then(t=>{const e=new self.Blob([new Uint8Array(t)]);return createImageBitmap(e)}).then(t=>{(void 0).width=t.width,(void 0).height=t.height,vr.drawImage(t,0,0);const n=vr.getImageData(0,0,(void 0).width,(void 0).height);t.close(),e(null,{width:t.width,height:t.height,data:new Uint8Array(n.data)})}):this.wt("requestImage",{url:t},null,e)}loadTile(t,e){this.vt(t.supportedFormats);const n=t.service,r=t.url,s=t.arraybuffer;if(function(t){return t.indexOf("i3s:")>=0}(r)){const s=t.i3sInfo,i=n.maxTextureSize||1024,o=Hn(s,t.supportedFormats,this.options.projection,t.projection,i);return o.then(t=>{if(delete this.gt[r],!t)return void e({status:404,url:r,i3sInfo:s});if(!Object.keys(t.gltf.meshes).length)return void e({status:404,url:r,i3sInfo:s});t.gltf.url=r;const{transferables:n}=t;t.magic="b3dm",this._t(t.gltf),e(null,t,n)}),void(this.gt[r]=o.xhr)}if(s){delete this.gt[r];const n=Se(new DataView(s),0);if("{"===n[0]||" "===n[0]||"<"===n[0]){const n=function(t,e,n){if(gr){const r=new Uint8Array(t,e,n);return gr.decode(r)}return me(new Uint8Array(t,e,n))}(s,0,s.byteLength),i=JSON.parse(n);this.Ot(t.rootIdx,i,s,r,e)}else this.St(s,r,t,n,e)}else{let s=n.urlParams;s&&(s=(r.indexOf("?")>0?"&":"?")+s);const i=r.replace(/\\+/g,"%2B");let o=J.getArrayBuffer(i+(s||""),n.fetchOptions);const a=o.xhr;o=o.then(n=>{delete this.gt[r],n&&n.status?e(n):(t.arraybuffer=n&&n.data,this.loadTile(t,e))}).catch(t=>{delete this.gt[r],e(t)}),this.gt[r]=a}}St(t,e,n,r,s){const i=n.service;if("b3dm"===r){this.Mt.load(e,t,0,0,{maxTextureSize:i.maxTextureSize||1024}).then(t=>{if(t.error)return void s(t);const{content:e,transferables:r}=this.xt(t,n);this._t(e.gltf),s(null,e,r)}).catch(t=>{s(t)})}else if("pnts"===r){const r=n.transform;this.Tt.load(e,t).then(t=>{const{content:e,transferables:i}=this.It(t,r,n.rootIdx);this.kt(e),s(null,e,i)})}else if("i3dm"===r){const r=n.transform;this.At.load(e,t,0,0,{maxTextureSize:i.maxTextureSize||1024}).then(t=>{const{content:e,transferables:i}=this.It(t,r,n.rootIdx);this._t(e.gltf),s(null,e,i)})}else if("cmpt"===r){new cn(this.pt,dt,this.i,i.maxTextureSize||1024).load(e,t,0,0,{maxTextureSize:i.maxTextureSize||1024}).then(t=>{const{content:e,transferables:r}=this.Et(t,n);this.Ct(e),s(null,e,r)}).catch(t=>{s(t)})}else s(new Error("unsupported tile format: "+r))}Ct(t){t.content?t.content.forEach(t=>{this.Ct(t)}):this._t(t.gltf)}Ut(t,e){const n=e.materials[t.material];if(n&&n.extensions&&n.extensions.KHR_materials_unlit)return;if(t.attributes.TANGENT)return;if(t.attributes.TEXCOORD_0&&!t.attributes.NORMAL){const e=t.attributes.POSITION.array,n=function(t,e,n){const r=n||[];r.setLength&&r.setLength(t.length);const s=ar;s.length<t.length/3&&(s.length=t.length/3),s.fill(0,0,t.length/3);const i=void 0===e.length?e:e.length;for(let n=0;n<i/3;n++)void 0===e.length?mr(t,3*n,3*n+1,3*n+2,r,s):mr(t,e[3*n],e[3*n+1],e[3*n+2],r,s);for(let t=0;t<r.length;t+=3){const e=s[t/3];0!==e?(r[t]/=e,r[t+1]/=e,r[t+2]/=e):(r[t]=0,r[t+1]=0,r[t+2]=0)}return r}(e,t.indices.array,new Float32Array(e.length));t.attributes.NORMAL={array:n,byteLength:n.byteLength,byteOffset:0,byteStride:0,componentType:5126,count:n.length/3,itemSize:3,name:"NORMAL",type:"VEC3"}}}_t(t){if(!t||!t.meshes||t.extensionsUsed&&t.extensionsUsed.indexOf("KHR_techniques_webgl")>-1)return;const e=t.meshes;for(const n in e){e[n].primitives.forEach(e=>{this.Ut(e,t),e.compressed_int16_params={};const n=e.attributes;for(const t in n)if(Ir[t]&&n[t].array&&n[t].array instanceof Float32Array){const r=this.options.projection;let s=1;"EPSG:4326"!==r&&"EPSG:4490"!==r||"POSITION"!==t||(s=wr,e.compressed_int16_params.compressed_ratio=s);const i=Br(n[t].array,s,n[t].min,n[t].max,t);if(!i)continue;const{array:o,range:a}=i;n[t].array=o,e.compressed_int16_params[t]=a}})}}kt(t){if(!t||!t.pnts)return;const e=t.pnts;t.compressed_int16_params={};for(const n in e)if(Ir[n]&&e[n].array&&e[n].array instanceof Float32Array){const r=this.options.projection;let s=1;"EPSG:4326"!==r&&"EPSG:4490"!==r||"POSITION"!==n||(s=wr,t.compressed_int16_params.compressed_ratio=s);const{array:i,range:o}=Br(e[n].array,s,e[n].min,e[n].max,n);e[n].array=i,t.compressed_int16_params[n]=o}}Nt(t){const e=[];for(let n=0;n<t.length;n++){const r=t[n];if(!r.childTile)continue;const s={boundingVolume:{sphere:[r.boundingSphere.center.x,r.boundingSphere.center.y,r.boundingSphere.center.z,r.boundingSphere.radius]},content:{uri:r.childTile},geometricError:r.boundingSphere.radius/r.rangeList*16,refine:"REPLACE"};e.push(s)}return e}Ot(t,e,n,r,s){return e.capabilities,void s(null,e)}Et(t,e){const{tiles:n}=t,r={magic:"cmpt",content:[]},s=[];for(let t=0;t<n.length;t++){const{magic:i}=n[t];if("b3dm"===i){const{content:i,transferables:o}=this.xt(n[t],e);Fr(s,o),r.content.push(i)}else if("i3dm"===i||"pnts"===i){const{transform:i,rootIdx:o}=e,{content:a,transferables:c}=this.It(n[t],i,o);Fr(s,c),r.content.push(a)}else if("cmpt"===i){const{content:i,transferables:o}=this.Et(n[t],e);Fr(s,o),r.content.push(i)}}return{content:r,transferables:s}}xt(t,e){const{gltf:n,transferables:r,featureTable:s}=t,i=function(t){if(!t||!t.meshes)return!1;let e=1;const n=[];for(const r in t.meshes){const s=t.meshes[r],{primitives:i}=s;if(i)for(let t=0;t<i.length;t++){const r=i[t].attributes&&i[t].attributes.POSITION;if(!r||!r.array)continue;r.array.buffer.visited||(r.array.buffer.visited=e++);const s=e-1+"-"+(r.byteOffset||0);if(n.indexOf(s)>=0)return!0;n.push(s)}}return!1}(n);return this.Ft(t.gltf),t.gltf.asset||(t.gltf.asset={}),i?(t.gltf.asset.sharePosition=!0,this.Pt(n,s,e.upAxis,e.transform)):this.Bt(n,s,e.upAxis,e.transform),delete t.transferables,{content:t,transferables:r}}It(t,e,r){const{featureTable:s}=t,i=t.pnts||t.i3dm,o=s&&s.RTC_CENTER||[0,0,0];if(s.EAST_NORTH_UP&&!i.NORMAL_UP&&!i.NORMAL_UP_OCT32P){const e=new Float32Array(3*i.POSITION.array.length),r=[],s=[],a=[];pn(i.POSITION,(t,i)=>{y(a,t,o),Xe(a,null,r),n(s,r);!function(t,e){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]}(e.subarray(9*i,9*(i+1)),s)}),i.INSTANCE_ROTATION={byteStride:0,byteOffset:0,itemSize:9,componentType:5126,array:e},t.transferables.push(e.buffer)}const a={xmin:1/0,xmax:-1/0,ymin:1/0,ymax:-1/0,hmin:1/0,hmax:-1/0};Ur(i.POSITION.array,3,o,Tr,a);const c=Nr(a),u=l([],c),f=[1/0,1/0,1/0],h=[-1/0,-1/0,-1/0];pn(i.POSITION,t=>{t[0]=t[0]+o[0]-u[0],t[1]=t[1]+o[1]-u[1],t[2]=t[2]+o[2]-u[2],t[0]<f[0]&&(f[0]=t[0]),t[1]<f[1]&&(f[1]=t[1]),t[2]<f[2]&&(f[2]=t[2]),t[0]>h[0]&&(h[0]=t[0]),t[1]>h[1]&&(h[1]=t[1]),t[2]>h[2]&&(h[2]=t[2])}),i.POSITION.min=f,i.POSITION.max=h,e&&v(c,c,e);const d=this.Dt(c);t.rtcCenter=u,t.rtcCoord=d,t.rootIdx=r;const m=t.transferables;return delete t.transferables,{content:t,transferables:m}}Ft(t){if(!Array.isArray(t.textures))return;const e=t.textures;for(let t=0;t<e.length;t++){const n=e[t].image&&e[t].image.array;if(n&&n.length){const r=n[0],s=n[1],i=n[2],o=n[3];let a=!0;for(let t=4;t<n.length;t+=4)if(n[t]!==r||n[t+1]!==s||n[t+2]!==i||n[t+3]!==o){a=!1;break}a&&(e[t].image.color=[r/255,s/255,i/255,o/255],delete e[t].image.array)}}}abortTileLoading(t,e){const n=this.gt[t.url];if(Array.isArray(n))for(let t=0;t<n.length;t++)n[t].abort();else n&&n.abort&&n.abort();delete this.gt[t.url],e(null)}Rt(t,e,n,i){const o=e&&e.RTC_CENTER||t.extensions&&t.extensions.CESIUM_RTC&&t.extensions.CESIUM_RTC.center;let a=br;"X"===(n=n&&n.toUpperCase())?a=pr:"Z"===n&&(a=Tr),t.extensions=t.extensions||{},t.extensions.CESIUM_RTC||(t.extensions.CESIUM_RTC={}),o&&(t.extensions.CESIUM_RTC.center=o),t.extensions.MAPTALKS_RTC={};const c={xmin:1/0,xmax:-1/0,ymin:1/0,ymax:-1/0,hmin:1/0,hmax:-1/0};un(t,t=>{if(!(t.attributes&&t.attributes.POSITION))return;const e=r(_r);t.matrices&&Pr(e,t.matrices);const n=t.attributes.POSITION.array,u=t.attributes.POSITION.itemSize;s(e,a,e),i&&s(e,i,e),Ur(n,u,o||Ar,e,c,t.compressUniforms)});const u=Nr(c);return{rtcCenter:o,modelCenter:u,upAxisTransform:a}}Pt(t,e,n,i){const{modelCenter:o,upAxisTransform:a,rtcCenter:c}=this.Rt(t,e,n),u=l([],o);i&&v(o,o,i),t.extensions.CESIUM_RTC.rtcCoord=this.Dt(o),c||(un(t,t=>{if(t.attributes&&t.attributes.POSITION){const e=t.attributes.POSITION;if(e.array.buffer.projected&&e.array.buffer.projected[e.byteOffset])return;const n=r(_r);t.matrices&&Pr(n,t.matrices),s(n,a,n);const i=function(t,e){var n=e[0],r=e[1],s=e[2],i=e[3],o=e[4],a=e[5],c=e[6],u=e[7],f=e[8],h=e[9],l=e[10],d=e[11],y=e[12],m=e[13],b=e[14],p=e[15],w=n*a-r*o,g=n*c-s*o,v=n*u-i*o,M=r*c-s*a,T=r*u-i*a,A=s*u-i*c,_=f*m-h*y,O=f*b-l*y,S=f*p-d*y,x=h*b-l*m,I=h*p-d*m,k=l*p-d*b,E=w*k-g*I+v*x+M*S-T*O+A*_;return E?(E=1/E,t[0]=(a*k-c*I+u*x)*E,t[1]=(s*I-r*k-i*x)*E,t[2]=(m*A-b*T+p*M)*E,t[3]=(l*T-h*A-d*M)*E,t[4]=(c*S-o*k-u*O)*E,t[5]=(n*k-s*S+i*O)*E,t[6]=(b*v-y*A-p*g)*E,t[7]=(f*A-l*v+d*g)*E,t[8]=(o*I-a*S+u*_)*E,t[9]=(r*S-n*I-i*_)*E,t[10]=(y*T-m*v+p*w)*E,t[11]=(h*v-f*T-d*w)*E,t[12]=(a*O-o*x-c*_)*E,t[13]=(n*x-r*O+s*_)*E,t[14]=(m*g-y*M-b*w)*E,t[15]=(f*M-h*g+l*w)*E,t):null}(Or,n),o=[1/0,1/0,1/0],c=[-1/0,-1/0,-1/0];pn(e,t=>{v(t,t,n),t[0]=t[0]-u[0],t[1]=t[1]-u[1],t[2]=t[2]-u[2],v(t,t,i),t[0]<o[0]&&(o[0]=t[0]),t[1]<o[1]&&(o[1]=t[1]),t[2]<o[2]&&(o[2]=t[2]),t[0]>c[0]&&(c[0]=t[0]),t[1]>c[1]&&(c[1]=t[1]),t[2]>c[2]&&(c[2]=t[2])}),e.min=o,e.max=c,e.array.buffer.projected||(e.array.buffer.projected={}),e.array.buffer.projected[e.byteOffset]=1}}),t.extensions.CESIUM_RTC.center=u)}Bt(t,e,n,r){const{modelCenter:s,rtcCenter:i}=this.Rt(t,e,n,r),o=this.Lt(s);t.extensions.MAPTALKS_RTC.projCenter=o,t.extensions.CESIUM_RTC.rtcCoord=this.Dt(s),un(t,e=>{if(e.attributes&&e.attributes.POSITION){e.attributes.NORMAL&&this.jt(e.attributes.NORMAL,e.matrices,n),e.attributes.TANGENT&&this.jt(e.attributes.TANGENT,e.matrices,n);const{newPositions:s}=this.zt(e.attributes.POSITION,e.matrices,i,t.extensions.MAPTALKS_RTC,n,r,e.compressUniforms),{componentType:o}=e.attributes.POSITION;5126!==o&&(e.attributes.POSITION.array=new Float32Array(s))}});for(const e in t.nodes){t.nodes[e].matrix=Tr}}Lt(t){0===A(t)?d(Sr,0,0,-6378137):Me(Sr,t);const e=this.options.projection;Ln(xr,Sr,e);const n=Sr[2],r=[];return r[0]=xr[0],r[1]=xr[1],r[2]=n,r}jt(t,e,r){let s;s="Y"===r?br:"X"===r?pr:Tr;const i=function(t,e){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],t}([],s);if(Pr(i,e),c(i,Tr))return;const o=n([],i),a=[];pn(t,t=>(function(t,e,n){var r=e[0],s=e[1],i=e[2];t[0]=r*n[0]+s*n[3]+i*n[6],t[1]=r*n[1]+s*n[4]+i*n[7],t[2]=r*n[2]+s*n[5]+i*n[8]}(a,t,o),p(a,a),l(t,a),a))}zt(t,e,n,s,i,o,a){if(t.array.buffer.projected&&t.array.buffer.projected[t.byteOffset])return null;const u=r([]);Pr(u,e);const f=this.options.projection;i=i&&i.toUpperCase();const h=n;let l=null;"Y"===i?l=br:"X"===i&&(l=pr);let m=[0,0,0,1];const b=[0,0,0],p=[0,0],w=s.projCenter,g=o&&c(Tr,o),M=t.min=t.min||[],T=t.max=t.max||[];d(M,1/0,1/0,1/0),d(T,-1/0,-1/0,-1/0);const _=a||{},{decode_position_min:O,decode_position_normConstant:S}=_;let x=[0,0,0,0],I=1;O&&(x=O),S&&(I=S);const k=[];return pn(t,t=>{if(m[0]=t[0]*I+x[0],m[1]=t[1]*I+x[1],m[2]=t[2]*I+x[2],m=v(m,m,u),l&&(m=v(m,m,l)),h&&y(m,m,h),o&&!g&&(m=v(m,m,o)),0===A(m)?d(b,0,0,-6378137):Me(b,m),Ln(p,b,f),t instanceof Float32Array)t[0]=p[0]-w[0],t[1]=p[1]-w[1],t[2]=b[2]-w[2];else{const e=p[0]-w[0],n=p[1]-w[1],r=b[2]-w[2];k.push(e),k.push(n),k.push(r),k.push(t[3])}return t[0]<M[0]&&(M[0]=t[0]),t[1]<M[1]&&(M[1]=t[1]),t[2]<M[2]&&(M[2]=t[2]),t[0]>T[0]&&(T[0]=t[0]),t[1]>T[1]&&(T[1]=t[1]),t[2]>T[2]&&(T[2]=t[2]),t}),t.array.buffer.projected||(t.array.buffer.projected={}),t.array.buffer.projected[t.byteOffset]=1,{projCenter:w,newPositions:k}}Dt(t){return 0===A(t)?d([],0,0,-6378137):Me([],t)}onRemove(){}}const Cr=[];function Ur(t,e,n,r,s,i){const o=i||{},{decode_position_min:a,decode_position_normConstant:c}=o;let u=[0,0,0,0],f=1;a&&(u=a),c&&(f=c);for(let i=0,o=t.length;i<o;i+=e){const{xmin:o,ymin:a,xmax:c,ymax:h,hmin:l,hmax:m}=s;d(Cr,t[i]*f+u[0],t[i+1]*f+u[1],t[i+2]*f+u[2]),v(Cr,Cr,r);const b=y(Cr,n,Cr);b[0]<o&&(s.xmin=b[0]),b[0]>c&&(s.xmax=b[0]),b[1]<a&&(s.ymin=b[1]),b[1]>h&&(s.ymax=b[1]),e>2&&(b[2]<l&&(s.hmin=b[2]),b[2]>m&&(s.hmax=b[2]))}}function Nr(t){const{xmax:e,ymax:n,xmin:r,ymin:s,hmin:i,hmax:o}=t,a=[(r+e)/2,(s+n)/2,(i+o)/2];return e===-1/0&&(a[0]=0),n===-1/0&&(a[1]=0),o===-1/0&&(a[2]=0),isNaN(a[2])&&(a[2]=0),a}function Fr(t,e){for(let n=0;n<e.length;n++)t.indexOf(e[n])<0&&t.push(e[n])}function Pr(t,e){const n=t;for(let t=e.length-1;t>=0;t--)s(n,e[t],n);return n}function Br(t,e,n,r,s){if(e&&e>1)for(let n=0;n<t.length;n++)(n+1)%3!=0&&(t[n]*=e);let i,o;if(n&&r&&1===e)i=Math.min(...n),o=Math.max(...r);else{const{min:e,max:n}=function(t){let e=1/0,n=-1/0;for(let r=0;r<t.length;r++)t[r]>n&&(n=t[r]),t[r]<e&&(e=t[r]);return{min:e,max:n}}(t);i=e,o=n}return!function(t,e,n,r){for(let s=0;s<t.length;s++){const i=Dr(Rr(t[s],e,n),e,n);if(Math.abs(i-t[s])>kr[r])return!1}return!0}(t,i,o,s)&&kr[s]?null:function(t,e,n){const r=new Int16Array(t.length);for(let s=0;s<t.length;s++)r[s]=Rr(t[s],e,n);return{array:r,range:[e,n]}}(t,i,o)}function Dr(t,e,n){return((t>=32768?-(65536-t)/32768:t/32767)+1)*(n-e)/2+e}function Rr(t,e,n){const r=2*(t-e)/(n-e)-1,s=Math.max(-1,Math.min(1,r));return s<0?32768*s:32767*s}let Lr=0;class jr{constructor(t){this.workerId=t,this.workers={},this.Vt={}}addLayer({actorId:t,mapId:e,layerId:n,params:r},s){if(this.qt(e,n))return;const i=this.Gt(e,n),o=r.options,a=this.send.bind(this,t);this.workers[i]=new Er(n,o,a,s)}removeLayer({mapId:t,layerId:e},n){const r=this.qt(t,e),s=this.Gt(t,e);delete this.workers[s],r&&r.onRemove(n)}loadTile({mapId:t,layerId:e,params:n},r){const s=this.qt(t,e);s&&s.loadTile(n,r)}abortTileLoading({mapId:t,layerId:e,params:n},r){const s=this.qt(t,e);s&&s.abortTileLoading(n,r)}receive(t){const e=t.callback,n=this.Vt[e];delete this.Vt[e],n&&t.error?n(new Error(t.error)):n&&n(null,t.data)}send(t,e,n,r,s){const i=s?`${t}-${Lr++}`:null;s&&(this.Vt[i]=s),postMessage({type:"<request>",workerId:this.workerId,actorId:t,command:e,params:n,callback:String(i)},r||[])}Gt(t,e){return`${t}-${e}`}qt(t,e){const n=this.Gt(t,e);return this.workers[n]}}t.initialize=function(){},t.onmessage=function(t,e){const n=t.data;this.dispatcher||(this.dispatcher=new jr(t.workerId)),"<response>"===t.type?this.dispatcher.workerId===t.workerId&&this.dispatcher.receive(t):this.dispatcher[n.command]({actorId:n.actorId,mapId:n.mapId,layerId:n.layerId,params:n.params},(t,n,r)=>{t&&console.error(t),t instanceof Error&&(t={message:t.message}),e(t,n,r)})},Object.defineProperty(t,"$t",{value:!0})}';var _={exports:{}},O={"aliceblue":[240,248,255],"antiquewhite":[250,235,215],"aqua":[0,255,255],"aquamarine":[127,255,212],"azure":[240,255,255],"beige":[245,245,220],"bisque":[255,228,196],"black":[0,0,0],"blanchedalmond":[255,235,205],"blue":[0,0,255],"blueviolet":[138,43,226],"brown":[165,42,42],"burlywood":[222,184,135],"cadetblue":[95,158,160],"chartreuse":[127,255,0],"chocolate":[210,105,30],"coral":[255,127,80],"cornflowerblue":[100,149,237],"cornsilk":[255,248,220],"crimson":[220,20,60],"cyan":[0,255,255],"darkblue":[0,0,139],"darkcyan":[0,139,139],"darkgoldenrod":[184,134,11],"darkgray":[169,169,169],"darkgreen":[0,100,0],"darkgrey":[169,169,169],"darkkhaki":[189,183,107],"darkmagenta":[139,0,139],"darkolivegreen":[85,107,47],"darkorange":[255,140,0],"darkorchid":[153,50,204],"darkred":[139,0,0],"darksalmon":[233,150,122],"darkseagreen":[143,188,143],"darkslateblue":[72,61,139],"darkslategray":[47,79,79],"darkslategrey":[47,79,79],"darkturquoise":[0,206,209],"darkviolet":[148,0,211],"deeppink":[255,20,147],"deepskyblue":[0,191,255],"dimgray":[105,105,105],"dimgrey":[105,105,105],"dodgerblue":[30,144,255],"firebrick":[178,34,34],"floralwhite":[255,250,240],"forestgreen":[34,139,34],"fuchsia":[255,0,255],"gainsboro":[220,220,220],"ghostwhite":[248,248,255],"gold":[255,215,0],"goldenrod":[218,165,32],"gray":[128,128,128],"green":[0,128,0],"greenyellow":[173,255,47],"grey":[128,128,128],"honeydew":[240,255,240],"hotpink":[255,105,180],"indianred":[205,92,92],"indigo":[75,0,130],"ivory":[255,255,240],"khaki":[240,230,140],"lavender":[230,230,250],"lavenderblush":[255,240,245],"lawngreen":[124,252,0],"lemonchiffon":[255,250,205],"lightblue":[173,216,230],"lightcoral":[240,128,128],"lightcyan":[224,255,255],"lightgoldenrodyellow":[250,250,210],"lightgray":[211,211,211],"lightgreen":[144,238,144],"lightgrey":[211,211,211],"lightpink":[255,182,193],"lightsalmon":[255,160,122],"lightseagreen":[32,178,170],"lightskyblue":[135,206,250],"lightslategray":[119,136,153],"lightslategrey":[119,136,153],"lightsteelblue":[176,196,222],"lightyellow":[255,255,224],"lime":[0,255,0],"limegreen":[50,205,50],"linen":[250,240,230],"magenta":[255,0,255],"maroon":[128,0,0],"mediumaquamarine":[102,205,170],"mediumblue":[0,0,205],"mediumorchid":[186,85,211],"mediumpurple":[147,112,219],"mediumseagreen":[60,179,113],"mediumslateblue":[123,104,238],"mediumspringgreen":[0,250,154],"mediumturquoise":[72,209,204],"mediumvioletred":[199,21,133],"midnightblue":[25,25,112],"mintcream":[245,255,250],"mistyrose":[255,228,225],"moccasin":[255,228,181],"navajowhite":[255,222,173],"navy":[0,0,128],"oldlace":[253,245,230],"olive":[128,128,0],"olivedrab":[107,142,35],"orange":[255,165,0],"orangered":[255,69,0],"orchid":[218,112,214],"palegoldenrod":[238,232,170],"palegreen":[152,251,152],"paleturquoise":[175,238,238],"palevioletred":[219,112,147],"papayawhip":[255,239,213],"peachpuff":[255,218,185],"peru":[205,133,63],"pink":[255,192,203],"plum":[221,160,221],"powderblue":[176,224,230],"purple":[128,0,128],"rebeccapurple":[102,51,153],"red":[255,0,0],"rosybrown":[188,143,143],"royalblue":[65,105,225],"saddlebrown":[139,69,19],"salmon":[250,128,114],"sandybrown":[244,164,96],"seagreen":[46,139,87],"seashell":[255,245,238],"sienna":[160,82,45],"silver":[192,192,192],"skyblue":[135,206,235],"slateblue":[106,90,205],"slategray":[112,128,144],"slategrey":[112,128,144],"snow":[255,250,250],"springgreen":[0,255,127],"steelblue":[70,130,180],"tan":[210,180,140],"teal":[0,128,128],"thistle":[216,191,216],"tomato":[255,99,71],"turquoise":[64,224,208],"violet":[238,130,238],"wheat":[245,222,179],"white":[255,255,255],"whitesmoke":[245,245,245],"yellow":[255,255,0],"yellowgreen":[154,205,50]},M={exports:{}},x=function(t){return!(!t||"string"==typeof t)&&(t instanceof Array||Array.isArray(t)||t.length>=0&&(t.splice instanceof Function||Object.getOwnPropertyDescriptor(t,t.length-1)&&"String"!==t.constructor.name))},A=Array.prototype.concat,I=Array.prototype.slice,S=M.exports=function(t){for(var e=[],n=0,r=t.length;n<r;n++){var s=t[n];x(s)?e=A.call(e,I.call(s)):e.push(s)}return e};S.wrap=function(t){return function(){return t(S(arguments))}};var E=O,N=M.exports,C=Object.hasOwnProperty,R=Object.create(null);for(var P in E)C.call(E,P)&&(R[E[P]]=P);var L=_.exports={to:{},get:{}};function k(t,e,n){return Math.min(Math.max(e,t),n)}function B(t){var e=Math.round(t).toString(16).toUpperCase();return e.length<2?"0"+e:e}L.get=function(t){var e,n;switch(t.substring(0,3).toLowerCase()){case"hsl":e=L.get.hsl(t),n="hsl";break;case"hwb":e=L.get.hwb(t),n="hwb";break;default:e=L.get.rgb(t),n="rgb"}return e?{model:n,value:e}:null},L.get.rgb=function(t){if(!t)return null;var e,n,r,s=[0,0,0,1];if(e=t.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(r=e[2],e=e[1],n=0;n<3;n++){var i=2*n;s[n]=parseInt(e.slice(i,i+2),16)}r&&(s[3]=parseInt(r,16)/255)}else if(e=t.match(/^#([a-f0-9]{3,4})$/i)){for(r=(e=e[1])[3],n=0;n<3;n++)s[n]=parseInt(e[n]+e[n],16);r&&(s[3]=parseInt(r+r,16)/255)}else if(e=t.match(/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)){for(n=0;n<3;n++)s[n]=parseInt(e[n+1],0);e[4]&&(e[5]?s[3]=.01*parseFloat(e[4]):s[3]=parseFloat(e[4]))}else{if(!(e=t.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)))return(e=t.match(/^(\w+)$/))?"transparent"===e[1]?[0,0,0,0]:C.call(E,e[1])?((s=E[e[1]])[3]=1,s):null:null;for(n=0;n<3;n++)s[n]=Math.round(2.55*parseFloat(e[n+1]));e[4]&&(e[5]?s[3]=.01*parseFloat(e[4]):s[3]=parseFloat(e[4]))}for(n=0;n<3;n++)s[n]=k(s[n],0,255);return s[3]=k(s[3],0,1),s},L.get.hsl=function(t){if(!t)return null;var e=t.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(e){var n=parseFloat(e[4]);return[(parseFloat(e[1])%360+360)%360,k(parseFloat(e[2]),0,100),k(parseFloat(e[3]),0,100),k(isNaN(n)?1:n,0,1)]}return null},L.get.hwb=function(t){if(!t)return null;var e=t.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(e){var n=parseFloat(e[4]);return[(parseFloat(e[1])%360+360)%360,k(parseFloat(e[2]),0,100),k(parseFloat(e[3]),0,100),k(isNaN(n)?1:n,0,1)]}return null},L.to.hex=function(){var t=N(arguments);return"#"+B(t[0])+B(t[1])+B(t[2])+(t[3]<1?B(Math.round(255*t[3])):"")},L.to.rgb=function(){var t=N(arguments);return t.length<4||1===t[3]?"rgb("+Math.round(t[0])+", "+Math.round(t[1])+", "+Math.round(t[2])+")":"rgba("+Math.round(t[0])+", "+Math.round(t[1])+", "+Math.round(t[2])+", "+t[3]+")"},L.to.rgb.percent=function(){var t=N(arguments),e=Math.round(t[0]/255*100),n=Math.round(t[1]/255*100),r=Math.round(t[2]/255*100);return t.length<4||1===t[3]?"rgb("+e+"%, "+n+"%, "+r+"%)":"rgba("+e+"%, "+n+"%, "+r+"%, "+t[3]+")"},L.to.hsl=function(){var t=N(arguments);return t.length<4||1===t[3]?"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)":"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+t[3]+")"},L.to.hwb=function(){var t=N(arguments),e="";return t.length>=4&&1!==t[3]&&(e=", "+t[3]),"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+e+")"},L.to.keyword=function(t){return R[t.slice(0,3)]};var U={exports:{}},j=O,D={};for(var F in j)j.hasOwnProperty(F)&&(D[j[F]]=F);var z=U.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var G in z)if(z.hasOwnProperty(G)){if(!("channels"in z[G]))throw new Error("missing channels property: "+G);if(!("labels"in z[G]))throw new Error("missing channel labels property: "+G);if(z[G].labels.length!==z[G].channels)throw new Error("channel and label counts mismatch: "+G);var H=z[G].channels,V=z[G].labels;delete z[G].channels,delete z[G].labels,Object.defineProperty(z[G],"channels",{value:H}),Object.defineProperty(z[G],"labels",{value:V})}z.rgb.hsl=function(t){var e,n,r=t[0]/255,s=t[1]/255,i=t[2]/255,o=Math.min(r,s,i),a=Math.max(r,s,i),c=a-o;return a===o?e=0:r===a?e=(s-i)/c:s===a?e=2+(i-r)/c:i===a&&(e=4+(r-s)/c),(e=Math.min(60*e,360))<0&&(e+=360),n=(o+a)/2,[e,100*(a===o?0:n<=.5?c/(a+o):c/(2-a-o)),100*n]},z.rgb.hsv=function(t){var e,n,r,s,i,o=t[0]/255,a=t[1]/255,c=t[2]/255,h=Math.max(o,a,c),u=h-Math.min(o,a,c),l=function(t){return(h-t)/6/u+.5};return 0===u?s=i=0:(i=u/h,e=l(o),n=l(a),r=l(c),o===h?s=r-n:a===h?s=1/3+e-r:c===h&&(s=2/3+n-e),s<0?s+=1:s>1&&(s-=1)),[360*s,100*i,100*h]},z.rgb.hwb=function(t){var e=t[0],n=t[1],r=t[2];return[z.rgb.hsl(t)[0],100*(1/255*Math.min(e,Math.min(n,r))),100*(r=1-1/255*Math.max(e,Math.max(n,r)))]},z.rgb.cmyk=function(t){var e,n=t[0]/255,r=t[1]/255,s=t[2]/255;return[100*((1-n-(e=Math.min(1-n,1-r,1-s)))/(1-e)||0),100*((1-r-e)/(1-e)||0),100*((1-s-e)/(1-e)||0),100*e]},z.rgb.keyword=function(t){var e=D[t];if(e)return e;var n,r,s,i=1/0;for(var o in j)if(j.hasOwnProperty(o)){var a=j[o],c=(r=t,s=a,Math.pow(r[0]-s[0],2)+Math.pow(r[1]-s[1],2)+Math.pow(r[2]-s[2],2));c<i&&(i=c,n=o)}return n},z.keyword.rgb=function(t){return j[t]},z.rgb.xyz=function(t){var e=t[0]/255,n=t[1]/255,r=t[2]/255;return[100*(.4124*(e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92)),100*(.2126*e+.7152*n+.0722*r),100*(.0193*e+.1192*n+.9505*r)]},z.rgb.lab=function(t){var e=z.rgb.xyz(t),n=e[0],r=e[1],s=e[2];return r/=100,s/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116)-16,500*(n-r),200*(r-(s=s>.008856?Math.pow(s,1/3):7.787*s+16/116))]},z.hsl.rgb=function(t){var e,n,r,s,i,o=t[0]/360,a=t[1]/100,c=t[2]/100;if(0===a)return[i=255*c,i,i];e=2*c-(n=c<.5?c*(1+a):c+a-c*a),s=[0,0,0];for(var h=0;h<3;h++)(r=o+1/3*-(h-1))<0&&r++,r>1&&r--,i=6*r<1?e+6*(n-e)*r:2*r<1?n:3*r<2?e+(n-e)*(2/3-r)*6:e,s[h]=255*i;return s},z.hsl.hsv=function(t){var e=t[0],n=t[1]/100,r=t[2]/100,s=n,i=Math.max(r,.01);return n*=(r*=2)<=1?r:2-r,s*=i<=1?i:2-i,[e,100*(0===r?2*s/(i+s):2*n/(r+n)),100*((r+n)/2)]},z.hsv.rgb=function(t){var e=t[0]/60,n=t[1]/100,r=t[2]/100,s=Math.floor(e)%6,i=e-Math.floor(e),o=255*r*(1-n),a=255*r*(1-n*i),c=255*r*(1-n*(1-i));switch(r*=255,s){case 0:return[r,c,o];case 1:return[a,r,o];case 2:return[o,r,c];case 3:return[o,a,r];case 4:return[c,o,r];case 5:return[r,o,a]}},z.hsv.hsl=function(t){var e,n,r,s=t[0],i=t[1]/100,o=t[2]/100,a=Math.max(o,.01);return r=(2-i)*o,n=i*a,[s,100*(n=(n/=(e=(2-i)*a)<=1?e:2-e)||0),100*(r/=2)]},z.hwb.rgb=function(t){var e,n,r,s,i,o,a,c=t[0]/360,h=t[1]/100,u=t[2]/100,l=h+u;switch(l>1&&(h/=l,u/=l),r=6*c-(e=Math.floor(6*c)),0!=(1&e)&&(r=1-r),s=h+r*((n=1-u)-h),e){default:case 6:case 0:i=n,o=s,a=h;break;case 1:i=s,o=n,a=h;break;case 2:i=h,o=n,a=s;break;case 3:i=h,o=s,a=n;break;case 4:i=s,o=h,a=n;break;case 5:i=n,o=h,a=s}return[255*i,255*o,255*a]},z.cmyk.rgb=function(t){var e=t[0]/100,n=t[1]/100,r=t[2]/100,s=t[3]/100;return[255*(1-Math.min(1,e*(1-s)+s)),255*(1-Math.min(1,n*(1-s)+s)),255*(1-Math.min(1,r*(1-s)+s))]},z.xyz.rgb=function(t){var e,n,r,s=t[0]/100,i=t[1]/100,o=t[2]/100;return n=-.9689*s+1.8758*i+.0415*o,r=.0557*s+-.204*i+1.057*o,e=(e=3.2406*s+-1.5372*i+-.4986*o)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,r=r>.0031308?1.055*Math.pow(r,1/2.4)-.055:12.92*r,[255*(e=Math.min(Math.max(0,e),1)),255*(n=Math.min(Math.max(0,n),1)),255*(r=Math.min(Math.max(0,r),1))]},z.xyz.lab=function(t){var e=t[0],n=t[1],r=t[2];return n/=100,r/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(e-n),200*(n-(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116))]},z.lab.xyz=function(t){var e,n,r,s=t[0];e=t[1]/500+(n=(s+16)/116),r=n-t[2]/200;var i=Math.pow(n,3),o=Math.pow(e,3),a=Math.pow(r,3);return n=i>.008856?i:(n-16/116)/7.787,e=o>.008856?o:(e-16/116)/7.787,r=a>.008856?a:(r-16/116)/7.787,[e*=95.047,n*=100,r*=108.883]},z.lab.lch=function(t){var e,n=t[0],r=t[1],s=t[2];return(e=360*Math.atan2(s,r)/2/Math.PI)<0&&(e+=360),[n,Math.sqrt(r*r+s*s),e]},z.lch.lab=function(t){var e,n=t[0],r=t[1];return e=t[2]/360*2*Math.PI,[n,r*Math.cos(e),r*Math.sin(e)]},z.rgb.ansi16=function(t){var e=t[0],n=t[1],r=t[2],s=1 in arguments?arguments[1]:z.rgb.hsv(t)[2];if(0===(s=Math.round(s/50)))return 30;var i=30+(Math.round(r/255)<<2|Math.round(n/255)<<1|Math.round(e/255));return 2===s&&(i+=60),i},z.hsv.ansi16=function(t){return z.rgb.ansi16(z.hsv.rgb(t),t[2])},z.rgb.ansi256=function(t){var e=t[0],n=t[1],r=t[2];return e===n&&n===r?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},z.ansi16.rgb=function(t){var e=t%10;if(0===e||7===e)return t>50&&(e+=3.5),[e=e/10.5*255,e,e];var n=.5*(1+~~(t>50));return[(1&e)*n*255,(e>>1&1)*n*255,(e>>2&1)*n*255]},z.ansi256.rgb=function(t){if(t>=232){var e=10*(t-232)+8;return[e,e,e]}var n;return t-=16,[Math.floor(t/36)/5*255,Math.floor((n=t%36)/6)/5*255,n%6/5*255]},z.rgb.hex=function(t){var e=(((255&Math.round(t[0]))<<16)+((255&Math.round(t[1]))<<8)+(255&Math.round(t[2]))).toString(16).toUpperCase();return"000000".substring(e.length)+e},z.hex.rgb=function(t){var e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];var n=e[0];3===e[0].length&&(n=n.split("").map((function(t){return t+t})).join(""));var r=parseInt(n,16);return[r>>16&255,r>>8&255,255&r]},z.rgb.hcg=function(t){var e,n=t[0]/255,r=t[1]/255,s=t[2]/255,i=Math.max(Math.max(n,r),s),o=Math.min(Math.min(n,r),s),a=i-o;return e=a<=0?0:i===n?(r-s)/a%6:i===r?2+(s-n)/a:4+(n-r)/a+4,e/=6,[360*(e%=1),100*a,100*(a<1?o/(1-a):0)]},z.hsl.hcg=function(t){var e=t[1]/100,n=t[2]/100,r=1,s=0;return(r=n<.5?2*e*n:2*e*(1-n))<1&&(s=(n-.5*r)/(1-r)),[t[0],100*r,100*s]},z.hsv.hcg=function(t){var e=t[1]/100,n=t[2]/100,r=e*n,s=0;return r<1&&(s=(n-r)/(1-r)),[t[0],100*r,100*s]},z.hcg.rgb=function(t){var e=t[0]/360,n=t[1]/100,r=t[2]/100;if(0===n)return[255*r,255*r,255*r];var s,i=[0,0,0],o=e%1*6,a=o%1,c=1-a;switch(Math.floor(o)){case 0:i[0]=1,i[1]=a,i[2]=0;break;case 1:i[0]=c,i[1]=1,i[2]=0;break;case 2:i[0]=0,i[1]=1,i[2]=a;break;case 3:i[0]=0,i[1]=c,i[2]=1;break;case 4:i[0]=a,i[1]=0,i[2]=1;break;default:i[0]=1,i[1]=0,i[2]=c}return s=(1-n)*r,[255*(n*i[0]+s),255*(n*i[1]+s),255*(n*i[2]+s)]},z.hcg.hsv=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e),r=0;return n>0&&(r=e/n),[t[0],100*r,100*n]},z.hcg.hsl=function(t){var e=t[1]/100,n=t[2]/100*(1-e)+.5*e,r=0;return n>0&&n<.5?r=e/(2*n):n>=.5&&n<1&&(r=e/(2*(1-n))),[t[0],100*r,100*n]},z.hcg.hwb=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e);return[t[0],100*(n-e),100*(1-n)]},z.hwb.hcg=function(t){var e=t[1]/100,n=1-t[2]/100,r=n-e,s=0;return r<1&&(s=(n-r)/(1-r)),[t[0],100*r,100*s]},z.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]},z.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]},z.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]},z.gray.hsl=z.gray.hsv=function(t){return[0,0,t[0]]},z.gray.hwb=function(t){return[0,100,t[0]]},z.gray.cmyk=function(t){return[0,0,0,t[0]]},z.gray.lab=function(t){return[t[0],0,0]},z.gray.hex=function(t){var e=255&Math.round(t[0]/100*255),n=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(n.length)+n},z.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]};var q=U.exports;function $(t){var e=function(){for(var t={},e=Object.keys(q),n=e.length,r=0;r<n;r++)t[e[r]]={distance:-1,parent:null};return t}(),n=[t];for(e[t].distance=0;n.length;)for(var r=n.pop(),s=Object.keys(q[r]),i=s.length,o=0;o<i;o++){var a=s[o],c=e[a];-1===c.distance&&(c.distance=e[r].distance+1,c.parent=r,n.unshift(a))}return e}function X(t,e){return function(n){return e(t(n))}}function J(t,e){for(var n=[e[t].parent,t],r=q[e[t].parent][t],s=e[t].parent;e[s].parent;)n.unshift(e[s].parent),r=X(q[e[s].parent][s],r),s=e[s].parent;return r.conversion=n,r}var Q=U.exports,K=function(t){for(var e=$(t),n={},r=Object.keys(e),s=r.length,i=0;i<s;i++){var o=r[i];null!==e[o].parent&&(n[o]=J(o,e))}return n},Z={};Object.keys(Q).forEach((function(t){Z[t]={},Object.defineProperty(Z[t],"channels",{value:Q[t].channels}),Object.defineProperty(Z[t],"labels",{value:Q[t].labels});var e=K(t);Object.keys(e).forEach((function(n){var r=e[n];Z[t][n]=function(t){var e=function(e){if(null==e)return e;arguments.length>1&&(e=Array.prototype.slice.call(arguments));var n=t(e);if("object"==typeof n)for(var r=n.length,s=0;s<r;s++)n[s]=Math.round(n[s]);return n};return"conversion"in t&&(e.conversion=t.conversion),e}(r),Z[t][n].raw=function(t){var e=function(e){return null==e?e:(arguments.length>1&&(e=Array.prototype.slice.call(arguments)),t(e))};return"conversion"in t&&(e.conversion=t.conversion),e}(r)}))}));var Y=Z,W=_.exports,tt=Y,et=[].slice,nt=["keyword","gray","hex"],rt={};Object.keys(tt).forEach((function(t){rt[et.call(tt[t].labels).sort().join("")]=t}));var st={};function it(t,e){if(!(this instanceof it))return new it(t,e);if(e&&e in nt&&(e=null),e&&!(e in tt))throw new Error("Unknown model: "+e);var n,r;if(null==t)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(t instanceof it)this.model=t.model,this.color=t.color.slice(),this.valpha=t.valpha;else if("string"==typeof t){var s=W.get(t);if(null===s)throw new Error("Unable to parse color from string: "+t);this.model=s.model,r=tt[this.model].channels,this.color=s.value.slice(0,r),this.valpha="number"==typeof s.value[r]?s.value[r]:1}else if(t.length){this.model=e||"rgb",r=tt[this.model].channels;var i=et.call(t,0,r);this.color=ht(i,r),this.valpha="number"==typeof t[r]?t[r]:1}else if("number"==typeof t)t&=16777215,this.model="rgb",this.color=[t>>16&255,t>>8&255,255&t],this.valpha=1;else{this.valpha=1;var o=Object.keys(t);"alpha"in t&&(o.splice(o.indexOf("alpha"),1),this.valpha="number"==typeof t.alpha?t.alpha:0);var a=o.sort().join("");if(!(a in rt))throw new Error("Unable to parse color from object: "+JSON.stringify(t));this.model=rt[a];var c=tt[this.model].labels,h=[];for(n=0;n<c.length;n++)h.push(t[c[n]]);this.color=ht(h)}if(st[this.model])for(r=tt[this.model].channels,n=0;n<r;n++){var u=st[this.model][n];u&&(this.color[n]=u(this.color[n]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&&Object.freeze(this)}function ot(t,e,n){return(t=Array.isArray(t)?t:[t]).forEach((function(t){(st[t]||(st[t]=[]))[e]=n})),t=t[0],function(r){var s;return arguments.length?(n&&(r=n(r)),(s=this[t]()).color[e]=r,s):(s=this[t]().color[e],n&&(s=n(s)),s)}}function at(t){return function(e){return Math.max(0,Math.min(t,e))}}function ct(t){return Array.isArray(t)?t:[t]}function ht(t,e){for(var n=0;n<e;n++)"number"!=typeof t[n]&&(t[n]=0);return t}it.prototype={toString:function(){return this.string()},toJSON:function(){return this[this.model]()},string:function(t){var e=this.model in W.to?this:this.rgb(),n=1===(e=e.round("number"==typeof t?t:1)).valpha?e.color:e.color.concat(this.valpha);return W.to[e.model](n)},percentString:function(t){var e=this.rgb().round("number"==typeof t?t:1),n=1===e.valpha?e.color:e.color.concat(this.valpha);return W.to.rgb.percent(n)},array:function(){return 1===this.valpha?this.color.slice():this.color.concat(this.valpha)},object:function(){for(var t={},e=tt[this.model].channels,n=tt[this.model].labels,r=0;r<e;r++)t[n[r]]=this.color[r];return 1!==this.valpha&&(t.alpha=this.valpha),t},unitArray:function(){var t=this.rgb().color;return t[0]/=255,t[1]/=255,t[2]/=255,1!==this.valpha&&t.push(this.valpha),t},unitObject:function(){var t=this.rgb().object();return t.r/=255,t.g/=255,t.b/=255,1!==this.valpha&&(t.alpha=this.valpha),t},round:function(t){return t=Math.max(t||0,0),new it(this.color.map(function(t){return function(e){return function(t,e){return Number(t.toFixed(e))}(e,t)}}(t)).concat(this.valpha),this.model)},alpha:function(t){return arguments.length?new it(this.color.concat(Math.max(0,Math.min(1,t))),this.model):this.valpha},red:ot("rgb",0,at(255)),green:ot("rgb",1,at(255)),blue:ot("rgb",2,at(255)),hue:ot(["hsl","hsv","hsl","hwb","hcg"],0,(function(t){return(t%360+360)%360})),saturationl:ot("hsl",1,at(100)),lightness:ot("hsl",2,at(100)),saturationv:ot("hsv",1,at(100)),value:ot("hsv",2,at(100)),chroma:ot("hcg",1,at(100)),gray:ot("hcg",2,at(100)),white:ot("hwb",1,at(100)),wblack:ot("hwb",2,at(100)),cyan:ot("cmyk",0,at(100)),magenta:ot("cmyk",1,at(100)),yellow:ot("cmyk",2,at(100)),black:ot("cmyk",3,at(100)),x:ot("xyz",0,at(100)),y:ot("xyz",1,at(100)),z:ot("xyz",2,at(100)),l:ot("lab",0,at(100)),a:ot("lab",1),b:ot("lab",2),keyword:function(t){return arguments.length?new it(t):tt[this.model].keyword(this.color)},hex:function(t){return arguments.length?new it(t):W.to.hex(this.rgb().round().color)},rgbNumber:function(){var t=this.rgb().color;return(255&t[0])<<16|(255&t[1])<<8|255&t[2]},luminosity:function(){for(var t=this.rgb().color,e=[],n=0;n<t.length;n++){var r=t[n]/255;e[n]=r<=.03928?r/12.92:Math.pow((r+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),n=t.luminosity();return e>n?(e+.05)/(n+.05):(n+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},isDark:function(){var t=this.rgb().color;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},isLight:function(){return!this.isDark()},negate:function(){for(var t=this.rgb(),e=0;e<3;e++)t.color[e]=255-t.color[e];return t},lighten:function(t){var e=this.hsl();return e.color[2]+=e.color[2]*t,e},darken:function(t){var e=this.hsl();return e.color[2]-=e.color[2]*t,e},saturate:function(t){var e=this.hsl();return e.color[1]+=e.color[1]*t,e},desaturate:function(t){var e=this.hsl();return e.color[1]-=e.color[1]*t,e},whiten:function(t){var e=this.hwb();return e.color[1]+=e.color[1]*t,e},blacken:function(t){var e=this.hwb();return e.color[2]+=e.color[2]*t,e},grayscale:function(){var t=this.rgb().color,e=.3*t[0]+.59*t[1]+.11*t[2];return it.rgb(e,e,e)},fade:function(t){return this.alpha(this.valpha-this.valpha*t)},opaquer:function(t){return this.alpha(this.valpha+this.valpha*t)},rotate:function(t){var e=this.hsl(),n=e.color[0];return n=(n=(n+t)%360)<0?360+n:n,e.color[0]=n,e},mix:function(t,e){if(!t||!t.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof t);var n=t.rgb(),r=this.rgb(),s=void 0===e?.5:e,i=2*s-1,o=n.alpha()-r.alpha(),a=((i*o==-1?i:(i+o)/(1+i*o))+1)/2,c=1-a;return it.rgb(a*n.red()+c*r.red(),a*n.green()+c*r.green(),a*n.blue()+c*r.blue(),n.alpha()*s+r.alpha()*(1-s))}},Object.keys(tt).forEach((function(t){if(-1===nt.indexOf(t)){var e=tt[t].channels;it.prototype[t]=function(){if(this.model===t)return new it(this);if(arguments.length)return new it(arguments,t);var n="number"==typeof arguments[e]?e:this.valpha;return new it(ct(tt[this.model][t].raw(this.color)).concat(n),t)},it[t]=function(n){return"number"==typeof n&&(n=ht(et.call(arguments),e)),new it(n,t)}}}));var ut=it;function lt(t){return null==t}function ft(t){for(let e=1;e<arguments.length;e++){const n=arguments[e];for(const e in n)t[e]=n[e]}return t}function dt(t){return null!=t&&("function"==typeof t||null!==t.constructor&&t.constructor===Function)}function mt(t){return"object"==typeof t&&!!t}function pt(t){return"number"==typeof t&&!isNaN(t)}function bt(t){return t*Math.PI/180}function gt(t){return t/Math.PI*180}function yt(t){let e=document.createElement("a");return e.href=t,t=e.href,e=null,t}function wt(t){return Math.sign?Math.sign(t):0===(t=+t)||isNaN(t)?Number(t):t>0?1:-1}const vt=[1,1,1,1,2,2,3,0];function Tt(t){const e=t.length;let n="";for(let r=0;r<e;){let s=t[r++];if(128&s){let n=vt[s>>3&7];if(!(64&s)||!n||r+n>e)return null;for(s&=63>>n;n>0;n-=1){const e=t[r++];if(128!=(192&e))return null;s=s<<6|63&e}}n+=String.fromCharCode(s)}return n}function _t(t,e,n){return t[3*n]=e[0],t[3*n+1]=e[1],t[3*n+2]=e[2],t}function Ot(t){return t.flat?t.flat(1/0):t.reduce((t,e)=>t.concat(e),[])}function Mt(t){return t<256?Uint8Array:t<65536?Uint16Array:Uint32Array}function xt(t){return 0===t.indexOf("data:")}function At(t){const e=t.indexOf("base64,"),n=t.substring(e+7),r=window.atob(n),s=r.length,i=new Uint8Array(s);for(let t=0;t<s;t++)i[t]=r.charCodeAt(t);return i.buffer}function It(t){for(let e=1;e<arguments.length;e++){const n=arguments[e];if(n)for(let e=0,r=n.length;e<r;e++)t.push(n[e])}return t.length}const St={};function Et(t,e){if(!Array.isArray(e)){const t=e;e=St[t]=St[t]||ut(e).array().map(t=>t/255)}for(let n=0;n<e.length;n++)t[n]=e[n];return 3===e.length&&(t[3]=1),t}var Nt=Object.freeze({__proto__:null,isNil:lt,extend:ft,isFunction:dt,isObject:mt,isNumber:pt,toRadian:bt,toDegree:gt,getAbsoluteURL:yt,sign:wt,stringFromUTF8Array:Tt,setColumn3:_t,flatArr:Ot,getBatchIdArrayType:Mt,isBase64:xt,base64URLToArrayBuffer:At,pushIn:It,normalizeColor:Et});function Ct(t){return-1===t.indexOf("http://")&&-1===t.indexOf("https://")&&-1===t.indexOf("file://")}const Rt="undefined"==typeof document?null:document.createElement("canvas");class Pt extends t.worker.Actor{constructor(t,e){super(t),this.mapId=e}initialize(t){t(null)}loadTile(t,e,n){let r=null;e&&e.arraybuffer&&(r=[e.arraybuffer]);const s={mapId:this.mapId,layerId:t,command:"loadTile",params:e};this.send(s,r,n)}abortTileLoading(t,e,n){const r={mapId:this.mapId,layerId:t,command:"abortTileLoading",params:{url:e}};this.broadcast(r,null,n)}addLayer(t,e,n){const r={actorId:this.actorId,mapId:this.mapId,layerId:t,command:"addLayer",params:{options:e}};this.broadcast(r,null,n)}removeLayer(t,e){const n={mapId:this.mapId,layerId:t,command:"removeLayer"};this.broadcast(n,null,e)}requestImage({url:t},e){const n=new Image;n.onload=()=>{if(!this.isActive())return;if(!Rt)return void e(new Error("There is no canvas to draw image!"));const t=function(t){if(Lt(t.width)&&Lt(t.height))return t;let e=t.width,n=t.height;Lt(e)||(e=kt(e));Lt(n)||(n=kt(n));const r=document.createElement("canvas");r.width=e,r.height=n,r.getContext("2d").drawImage(t,0,0,e,n);const s=t.src,i=s.lastIndexOf("/")+1,o=s.substring(i);return console.warn(`Texture(${o})'s size is not power of two, resize from (${t.width}, ${t.height}) to (${e}, ${n})`),r}(n);Rt.width=t.width,Rt.height=t.height;const r=Rt.getContext("2d",{willReadFrequently:!0});r.drawImage(t,0,0,t.width,t.height);const s=r.getImageData(0,0,t.width,t.height),i={width:t.width,height:t.height,data:new Uint8Array(s.data)};e(null,i,[i.data.buffer])},n.onerror=function(t){e(t)},n.src=t}}function Lt(t){return 0==(t&t-1)&&0!==t}function kt(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}class Bt{constructor(t,e,n){this.t=t,this.max=e,this.currentSize=0,this.onRemove=n,this.reset()}reset(){if(this.data){const t=this.data.values();for(const e of t)this.onRemove(e)}return this.data=new Map,this.currentSize=0,this}clear(){this.reset(),delete this.onRemove}add(t,e){if(!e)return this;if(e.node&&e.node.memorySize&&(this.currentSize+=e.node.memorySize),this.has(t)){const n=this.data.get(t);n&&n.node&&n.node.memorySize&&(this.currentSize-=n.node.memorySize),this.data.delete(t),this.data.set(t,e)}else this.data.set(t,e);return this}shrink(){if(this.currentSize>this.max){let t=!1;const e=this.data.keys();let n=e.next();for(;this.currentSize>this.max&&void 0!==n.value;){!t&&this.data.get(n.value).current&&(t=!0,console.warn(`layer(${this.t})'s maxGPUMemory is not enough, one or more current tiles will be discarded.`));const r=this.getAndRemove(n.value);r&&this.onRemove(r),n=e.next()}}}has(t){return this.data.has(t)}keys(){const t=new Array(this.data.size);let e=0;const n=this.data.keys();for(const r of n)t[e++]=r;return t}getAndRemove(t){if(!this.has(t))return null;const e=this.data.get(t);return e.node&&e.node.memorySize&&(this.currentSize-=e.node.memorySize),this.data.delete(t),e}get(t){if(!this.has(t))return null;const e=this.data.get(t);return this.data.delete(t),this.data.set(t,e),e}remove(t){if(!this.has(t))return this;const e=this.data.get(t);return e.node&&e.node.memorySize&&(this.currentSize-=e.node.memorySize),this.data.delete(t),this.onRemove(e),this}setMaxSize(t){return this.max=t,this.shrink(),this}getMemorySize(){let t=0;const e=this.data.values();for(const n of e){const e=n&&n.node;e&&e.memorySize&&(t+=e.memorySize)}return t}markAll(t){const e=this.data.values();for(const n of e)n.current=t}}function Ut(t,e){if(t.scenes&&t.scenes.length)for(let n=0,r=t.scenes.length;n<r;n++){const r=t.scenes[n].nodes;for(let n=0,s=r.length;n<s;n++){const s=[];Vt(r[n],s,t,e)}}}const jt=[],Dt=[],Ft=[],zt=[0,0,0],Gt=g.identity([]),Ht=[1,1,1];function Vt(t,e,n,r){const s=e.slice(0);if(t.matrix)s.push(t.matrix);else if(t.rotation||t.translation||t.scale){const e=y.fromTranslation(jt,t.translation||zt),n=y.fromQuat(Dt,t.rotation||Gt),r=y.fromScaling(Ft,t.scale||Ht);y.multiply(r,n,r);const i=y.multiply([],e,r);s.push(i)}if(t.children&&t.children.length)for(let e=0,i=t.children.length;e<i;e++)Vt(t.children[e],s,n,r);if(void 0!==t.mesh){const e=t.mesh,i=n.meshes[e];if(i){const t=s.slice(0),o=i.primitives;for(let s=0,i=o.length;s<i;s++){const i=o[s];i&&(i.matrices=t,r(i,e,s,n))}}}}function qt(t,e,n){let{byteOffset:r,byteStride:s}=e;const{componentType:i,itemSize:o}=e,a=e.array.buffer,c=i?p.getTypedArrayCtor(i):e.array.constructor;if(r=void 0===r?e.array.byteOffset:r,s=s||0,!s||s===o*c.BYTES_PER_ELEMENT&&r%c.BYTES_PER_ELEMENT==0){const e=new c(a,r+n*o*c.BYTES_PER_ELEMENT,o);return t.set(e),t}s||(s=o*c.BYTES_PER_ELEMENT);const h=new Uint8Array(a,s*n+r,o*c.BYTES_PER_ELEMENT);return new Uint8Array(t.buffer).set(h),t}function $t(t,e,n,r){t[4*e]=n[r],t[4*e+1]=n[r+4],t[4*e+2]=n[r+8],t[4*e+3]=n[r+12]}var Xt="#include <gl2_vert>\n\nconst float SHIFT_RIGHT_11 = 1.0 / 2048.0;\n\nconst float SHIFT_RIGHT_5 = 1.0 / 32.0;\n\nconst float SHIFT_LEFT_11 = 2048.0;\n\nconst float SHIFT_LEFT_5 = 32.0;\n\nconst float NORMALIZE_6 = 1.0 / 64.0;\n\nconst float NORMALIZE_5 = 1.0 / 32.0;\n\n\n\n#ifdef HAS_POSITION\n\n attribute vec3 POSITION;\n\n#endif\n\n\n\n#if defined(HAS_RGB)\n\n attribute vec3 RGB;\n\n#elif defined(HAS_RGBA)\n\n attribute vec4 RGBA;\n\n#elif defined(HAS_RGB565)\n\n attribute float RGB565;\n\n#endif\n\n\n\nuniform vec4 pointColor;\n\nuniform float pointSize;\n\n\n\nuniform mat4 projViewModelMatrix;\n\nuniform float pointOpacity;\n\n\n\nvarying vec4 vColor;\n\n\n\n#ifdef HAS_NORMAL\n\n #ifdef HAS_NORMAL_OCT16P\n\n attribute vec2 NORMAL_OCT16P;\n\n float signNotZero(float value) {\n\n return value >= 0.0 ? 1.0 : -1.0;\n\n }\n\n vec2 signNotZero(vec2 value) {\n\n return vec2(signNotZero(value.x), signNotZero(value.y));\n\n }\n\n vec3 octDecode(vec2 encoded, float range) {\n\n if (encoded.x == 0.0 && encoded.y == 0.0) {\n\n return vec3(0.0, 0.0, 0.0);\n\n }\n\n encoded = encoded / range * 2.0 - 1.0;\n\n vec3 v = vec3(encoded.x, encoded.y, 1.0 - abs(encoded.x) - abs(encoded.y));\n\n if (v.z < 0.0) {\n\n v.xy = (1.0 - abs(v.yx)) * signNotZero(v.xy);\n\n }\n\n return normalize(v);\n\n }\n\n vec3 octDecode(vec2 encoded) {\n\n return octDecode(encoded, 255.0);\n\n }\n\n #else\n\n attribute vec3 NORMAL;\n\n #endif\n\n uniform vec3 lightDir;\n\n uniform mat3 modelNormalMatrix;\n\n uniform mat4 positionMatrix;\n\n float getLambertDiffuse(vec3 lightDir, vec3 normal) {\n\n return max(dot(-lightDir, normal), 0.0);\n\n }\n\n#endif\n\n#ifdef PICKING_MODE\n\n #include <fbo_picking_vert>\n\n#endif\n\n#include <draco_decode_vert>\n\nvoid main() {\n\n #ifdef HAS_POSITION\n\n vec3 localPos = decode_getPosition(POSITION);\n\n #endif\n\n gl_Position = projViewModelMatrix * vec4(localPos, 1.0);\n\n gl_PointSize = pointSize;\n\n\n\n #ifdef PICKING_MODE\n\n fbo_picking_setData(gl_Position.w, true);\n\n #else\n\n #if defined(HAS_RGB)\n\n vColor = vec4(RGB / 255.0, 1.0) * pointOpacity;\n\n #elif defined(HAS_RGBA)\n\n vColor = RGBA / 255.0 * pointOpacity;\n\n #elif defined(HAS_RGB565)\n\n float compressed = RGB565;\n\n float r = floor(compressed * SHIFT_RIGHT_11);\n\n compressed -= r * SHIFT_LEFT_11;\n\n float g = floor(compressed * SHIFT_RIGHT_5);\n\n compressed -= g * SHIFT_LEFT_5;\n\n float b = compressed;\n\n vec3 rgb = vec3(r * NORMALIZE_5, g * NORMALIZE_6, b * NORMALIZE_5);\n\n vColor = vec4(rgb, 1.0);\n\n #else\n\n vColor = pointColor;\n\n #endif\n\n\n\n #ifdef HAS_NORMAL\n\n mat3 positionNormalMatrix = mat3(positionMatrix);\n\n mat3 normalMatrix = modelNormalMatrix * positionNormalMatrix;\n\n #ifdef HAS_NORMAL_OCT16P\n\n vec3 localNormal = octDecode(NORMAL_OCT16P);\n\n #else\n\n vec3 localNormal = NORMAL;\n\n #endif\n\n vec3 normal = normalize(normalMatrix * localNormal);\n\n float colorStrength = getLambertDiffuse(lightDir, normal);\n\n colorStrength = max(colorStrength, 0.5);\n\n vColor *= colorStrength;\n\n #endif\n\n #endif\n\n\n\n\n\n\n\n\n\n}\n\n";const Jt=new Array(3),Qt=new Array(3),Kt=[40680631590769,40680631590769,40408299984661.445];function Zt(t,e,n,r){const s=Kt,i=Math.cos(n);Jt[0]=i*Math.cos(e),Jt[1]=i*Math.sin(e),Jt[2]=Math.sin(n),ae(Jt,Jt),w.multiply(Qt,s,Jt);const o=Math.sqrt(w.dot(Jt,Qt));var a,c,h;return c=Qt,h=o,(a=Qt)[0]=c[0]/h,a[1]=c[1]/h,a[2]=c[2]/h,w.scale(Jt,Jt,r),w.add(t,Qt,Jt)}const Yt=[1/6378137,1/6378137,1/6356752.314245179],Wt=[1/40680631590769,1/40680631590769,1/40408299984661.445],te=new Array(3),ee=new Array(3),ne=new Array(3);function re(t,e){const n=Wt,r=function(t,e,n,r,s){const i=e[0],o=e[1],a=e[2],c=n[0],h=n[1],u=n[2],l=i*i*c*c,f=o*o*h*h,d=a*a*u*u,m=l+f+d,p=Math.sqrt(1/m),b=w.scale(se,e,p);if(m<s)return isFinite(p)?b:void 0;const g=r[0],y=r[1],v=r[2],T=ie;T[0]=b[0]*g*2,T[1]=b[1]*y*2,T[2]=b[2]*v*2;let _,O,M,x,A,I,S,E,N,C,R,P=(1-p)*oe(e)/(.5*oe(T)),L=0;do{P-=L,M=1/(1+P*g),x=1/(1+P*y),A=1/(1+P*v),I=M*M,S=x*x,E=A*A,N=I*M,C=S*x,R=E*A,_=l*I+f*S+d*E-1,O=l*N*g+f*C*y+d*R*v;L=_/(-2*O)}while(Math.abs(_)>1e-12);return t[0]=i*M,t[1]=o*x,t[2]=a*A,t}(te,e,Yt,n,.1);let s=w.mul(ee,r,n);s=ae(s,s);const i=w.sub(ne,e,r),o=Math.atan2(s[1],s[0]),a=Math.asin(s[2]),c=wt(w.dot(i,e))*oe(i);return t[0]=gt(o),t[1]=gt(a),t[2]=c,t}const se=new Array(3),ie=new Array(3);function oe(t){return w.length(t)}function ae(t,e){const n=e[0],r=e[1],s=e[2];let i=n*n+r*r+s*s;return i>0&&(i=Math.sqrt(i),t[0]=e[0]/i,t[1]=e[1]/i,t[2]=e[2]/i),t}function ce(t,e){return w.multiply(e,t,Wt),w.normalize(e,e)}function he(t,e){const n=t[0],r=t[1],s=Math.cos(r),i=s*Math.cos(n),o=s*Math.sin(n),a=Math.sin(r);return e.x=i,e.y=o,e.z=a,w.normalize(e,e)}var ue=Object.freeze({__proto__:null,radianToCartesian3:Zt,cartesian3ToDegree:re,normalizeCartesian:ae,geodeticSurfaceNormal:ce,geodeticSurfaceNormalCartographic:he});function le(t,e,n,r){n=n||0,r=r||n;const s=Math.abs(t-e);return s<=r||s<=n*Math.max(Math.abs(t),Math.abs(e))}function fe(t,e){let n="";for(let r=0;r<4;r++){const s=t.getUint8(e+r);n+=String.fromCharCode(s)}return n}const de="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;function me(t,e,n){const r=new Uint8Array(t,e,n);return de?JSON.parse(de.decode(r)):JSON.parse(Tt(r))}function pe(t,e,n){const r=new Uint8Array(t,e,n);return de?JSON.parse(de.decode(r)):JSON.parse(Tt(r))}function be(t,e,n){return{offset:e,byteLength:n}}function ge(t,e,n,r){const{byteOffset:s,componentType:i,type:o}=t,{ctor:a,type:c}=Oe(i||"UNSIGNED_SHORT"),h=Te(o);return{byteStride:0,byteOffset:s+n,itemSize:h,count:r*h,componentType:c,array:new a(e,n+s,r*h)}}function ye(t,e,n,r){const s=ge(t,e,n,r);return s.array.buffer.byteLength!==e.byteLength&&(s.array=s.array.slice()),s}function we(t,e,n,r){const{byteOffset:s,componentType:i,type:o}=t,{ctor:a}=Oe(i||"UNSIGNED_SHORT"),c=Te(o),h=new a(e,s,n*c);return 1===c?h[r]:h.subarray(r*c,r*c+c)}const ve={"SCALAR":1,"VEC2":2,"VEC3":3,"VEC4":4};function Te(t){return t?ve[t]:1}const _e={"BYTE":{ctor:Int8Array,type:5120,name:"Int8Array"},"UNSIGNED_BYTE":{ctor:Uint8Array,type:5121,name:"Uint8Array"},"SHORT":{ctor:Int16Array,type:5122,name:"Int16Array"},"UNSIGNED_SHORT":{ctor:Uint16Array,type:5123,name:"Uint16Array"},"INT":{ctor:Int32Array,type:5124,name:"Int32Array"},"UNSIGNED_INT":{ctor:Uint32Array,type:5125,name:"Uint32Array"},"FLOAT":{ctor:Float32Array,type:5126,name:"Float32Array"},"DOUBLE":{ctor:Float64Array,type:5126,name:"Float64Array"}};function Oe(t){return _e[t]}function Me(t){for(const e in _e)if(t===_e[e].ctor)return _e[e].type;throw new Error("unrecognized ctor:"+t)}function xe(t,e,n,r){const s=t,i=e.length/3;for(let t=0;t<i;t++)s[3*t]=e[3*t]/65535*r[0]+n[0],s[3*t+1]=e[3*t+1]/65535*r[1]+n[1],s[3*t+2]=e[3*t+2]/65535*r[2]+n[2];return s}function Ae(t,e,n){const r=t.getUint32(12,!0),s=t.getUint32(16,!0),i=t.getUint32(20,!0),o=t.getUint32(24,!0),a=t.buffer;let c,h={},u={},l=null;r>0&&(h=me(a,e,r),e+=r),s>0&&(c=function(t,e,n){return{offset:e,byteLength:n}}(0,e,s),e+=s),i>0&&(u=pe(a,e,i),e+=i);const f=be(0,e,o);return l=a.slice(f.offset,f.offset+f.byteLength),n.push(l),{featureTable:h,featureTableBin:c,batchTable:u,batchTableBin:l}}const Ie={up:{south:"east",north:"west",west:"south",east:"north"},down:{south:"west",north:"east",west:"north",east:"south"},south:{up:"west",down:"east",west:"down",east:"up"},north:{up:"east",down:"west",west:"up",east:"down"},west:{up:"north",down:"south",north:"down",south:"up"},east:{up:"south",down:"north",north:"up",south:"down"}},Se={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},Ee={},Ne={east:[],north:[],up:[],west:[],south:[],down:[]};let Ce=[],Re=[],Pe=[];const Le=[0,0,0];function ke(t,e,n){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=e[0],n[13]=e[1],n[14]=e[2],n[15]=t[15],n}const Be=function(t,e){const n=Ie[t][e];let r;const s=t+e;return Ee[s]?r=Ee[s]:(r=function(r,s,i){if(w.equals(r,Le))w.copy(Ce,Se[t]),w.copy(Re,Se[e]),w.copy(Pe,Se[n]);else if(le(r[0],0,1e-14)&&le(r[1],0,1e-14)){const s=wt(r[2]);w.copy(Ce,Se[t]),"east"!==t&&"west"!==t&&w.scale(Ce,Ce,s),w.copy(Re,Se[e]),"east"!==e&&"west"!==e&&w.scale(Re,Re,s),w.copy(Pe,Se[n]),"east"!==n&&"west"!==n&&w.scale(Pe,Pe,s)}else{ce(r,Ne.up);const s=Ne.up,i=Ne.east;i[0]=-r[1],i[1]=r[0],i[2]=0,w.normalize(Ne.east,i),w.cross(Ne.north,s,i),w.scale(Ne.down,Ne.up,-1),w.scale(Ne.west,Ne.east,-1),w.scale(Ne.south,Ne.north,-1),Ce=Ne[t],Re=Ne[e],Pe=Ne[n]}return i[0]=Ce[0],i[1]=Ce[1],i[2]=Ce[2],i[3]=0,i[4]=Re[0],i[5]=Re[1],i[6]=Re[2],i[7]=0,i[8]=Pe[0],i[9]=Pe[1],i[10]=Pe[2],i[11]=0,i[12]=r[0],i[13]=r[1],i[14]=r[2],i[15]=1,i},Ee[s]=r),r}("east","north"),Ue=[],je=[],De=[],Fe=[],ze=[],Ge=[],He=[],Ve={x:0,y:0},qe={x:0,y:0},$e=Math.PI/180;const{getTextureMagFilter:Xe,getTextureMinFilter:Je,getTextureWrap:Qe,getMaterialType:Ke,getMaterialFormat:Ze,getPrimitive:Ye,getUniqueREGLBuffer:We}=n.REGLHelper,tn=[1,0,0,0,0,0,1,0,0,-1,0,0,0,0,0,1],en=[0,0,1,0,0,1,0,0,-1,0,0,0,0,0,0,1],{loginIBLResOnCanvas:nn,logoutIBLResOnCanvas:rn,getIBLResOnCanvas:sn,getPBRUniforms:on}=n.pbr.PBRUtils,an={factor:0,units:0},cn=[1,1,1,1],hn=[0,0,0],un={specularStrength:0,materialShininess:1},ln=[1,1,1],fn=r.identity([]),dn=[0,0],mn=t=>t.material instanceof n.PhongMaterial,pn=t=>t.material instanceof n.pbr.StandardMaterial,bn=[],gn=new t.Coordinate(0,0),yn=new t.Point(0,0),wn=new t.Point(0,0),vn=new t.Point(0,0),Tn=[],_n=[],On=[],Mn=[],xn=[],An=[],In=[],Sn=[0,0,0],En=[],Nn=[],Cn={"POSITION":"POSITION","NORMAL":"NORMAL","TEXCOORD_0":"TEXCOORD_0","TEXCOORD_1":"TEXCOORD_1","COLOR_0":"COLOR_0","TANGENT":"TANGENT","_BATCHID":"_BATCHID"},Rn=[0,1,1,2,2,3,3,0,0,4,1,5,2,6,3,7,4,5,5,6,6,7,7,4],Pn=function(t,e){const n=2*Math.PI/t,r=[],s=[];for(let s=0;s<=t;s++){const t=Math.cos(n*s)*e,i=Math.sin(n*s)*e,o=0;r[3*s]=t,r[3*s+1]=i,r[3*s+2]=o}for(let s=t;s<=2*t;s++){const t=Math.cos(n*s)*e,i=Math.sin(n*s)*e,o=0;r[3*s]=o,r[3*s+1]=t,r[3*s+2]=i}for(let s=2*t;s<=3*t;s++){const t=Math.cos(n*s)*e,i=Math.sin(n*s)*e,o=0;r[3*s]=t,r[3*s+1]=o,r[3*s+2]=i}const i=r.length/3-1;for(let e=0;e<i;e++)e!==t-1&&e!==2*t-1&&(s[2*e]=e,s[2*e+1]=e+1);return r.push(0,0,0),r.push(e,0,0),r.push(0,e,0),r.push(0,0,e),s.push(i+1,i+2),s.push(i+1,i+3),s.push(i+1,i+4),{vertices:r,indices:s}}
6
+ import*as t from"maptalks";import*as e from"@maptalks/gl";import{reshader as n,mat4 as r,HighlightUtil as s,vec3 as i,quat as o,mat3 as a,vec4 as c,MaskRendererMixin as h,createREGL as u,MaskLayerMixin as l}from"@maptalks/gl";import{intersectsBox as f,intersectsSphere as d,intersectsOrientedBox as m}from"frustum-intersects";import{GLTFLoader as p,Ajax as b}from"@maptalks/gltf-loader";import{quat as g,mat4 as y,vec3 as w,mat3 as v}from"gl-matrix";const T='function(t){var e="undefined"!=typeof Float32Array?Float32Array:Array;function n(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t}function r(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function s(t,e,n){var r=e[0],s=e[1],i=e[2],o=e[3],a=e[4],c=e[5],u=e[6],f=e[7],h=e[8],l=e[9],d=e[10],y=e[11],m=e[12],b=e[13],p=e[14],w=e[15],g=n[0],v=n[1],M=n[2],T=n[3];return t[0]=g*r+v*a+M*h+T*m,t[1]=g*s+v*c+M*l+T*b,t[2]=g*i+v*u+M*d+T*p,t[3]=g*o+v*f+M*y+T*w,g=n[4],v=n[5],M=n[6],T=n[7],t[4]=g*r+v*a+M*h+T*m,t[5]=g*s+v*c+M*l+T*b,t[6]=g*i+v*u+M*d+T*p,t[7]=g*o+v*f+M*y+T*w,g=n[8],v=n[9],M=n[10],T=n[11],t[8]=g*r+v*a+M*h+T*m,t[9]=g*s+v*c+M*l+T*b,t[10]=g*i+v*u+M*d+T*p,t[11]=g*o+v*f+M*y+T*w,g=n[12],v=n[13],M=n[14],T=n[15],t[12]=g*r+v*a+M*h+T*m,t[13]=g*s+v*c+M*l+T*b,t[14]=g*i+v*u+M*d+T*p,t[15]=g*o+v*f+M*y+T*w,t}function i(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t}function o(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function a(t,e){var n=e[0],r=e[1],s=e[2],i=e[3],o=n+n,a=r+r,c=s+s,u=n*o,f=r*o,h=r*a,l=s*o,d=s*a,y=s*c,m=i*o,b=i*a,p=i*c;return t[0]=1-h-y,t[1]=f+p,t[2]=l-b,t[3]=0,t[4]=f-p,t[5]=1-u-y,t[6]=d+m,t[7]=0,t[8]=l+b,t[9]=d-m,t[10]=1-u-h,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function c(t,e){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]}function u(){var t=new e(3);return e!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function f(t){var e=t[0],n=t[1],r=t[2];return Math.sqrt(e*e+n*n+r*r)}function h(t,n,r){var s=new e(3);return s[0]=t,s[1]=n,s[2]=r,s}function l(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function d(t,e,n,r){return t[0]=e,t[1]=n,t[2]=r,t}function y(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t}function m(t,e,n){return t[0]=e[0]*n[0],t[1]=e[1]*n[1],t[2]=e[2]*n[2],t}function b(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t}function p(t,e){var n=e[0],r=e[1],s=e[2],i=n*n+r*r+s*s;return i>0&&(i=1/Math.sqrt(i),t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*i),t}function w(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function g(t,e,n){var r=e[0],s=e[1],i=e[2],o=n[0],a=n[1],c=n[2];return t[0]=s*c-i*a,t[1]=i*o-r*c,t[2]=r*a-s*o,t}function v(t,e,n){var r=e[0],s=e[1],i=e[2],o=n[3]*r+n[7]*s+n[11]*i+n[15];return o=o||1,t[0]=(n[0]*r+n[4]*s+n[8]*i+n[12])/o,t[1]=(n[1]*r+n[5]*s+n[9]*i+n[13])/o,t[2]=(n[2]*r+n[6]*s+n[10]*i+n[14])/o,t}var M=function(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t},T=m,A=f;function _(t,e,n,r,s){return t[0]=e,t[1]=n,t[2]=r,t[3]=s,t}function O(t,e,n){var r=e[0],s=e[1],i=e[2],o=e[3];return t[0]=n[0]*r+n[4]*s+n[8]*i+n[12]*o,t[1]=n[1]*r+n[5]*s+n[9]*i+n[13]*o,t[2]=n[2]*r+n[6]*s+n[10]*i+n[14]*o,t[3]=n[3]*r+n[7]*s+n[11]*i+n[15]*o,t}function x(){var t=new e(4);return e!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t[3]=1,t}function S(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t}function I(t,e,n,r){var s=e[0],i=e[1],o=e[2],a=e[3],c=n[0],u=n[1],f=n[2],h=n[3],l=void 0,d=void 0,y=void 0,m=void 0,b=void 0;return(d=s*c+i*u+o*f+a*h)<0&&(d=-d,c=-c,u=-u,f=-f,h=-h),1-d>1e-6?(l=Math.acos(d),y=Math.sin(l),m=Math.sin((1-r)*l)/y,b=Math.sin(r*l)/y):(m=1-r,b=r),t[0]=m*s+b*c,t[1]=m*i+b*u,t[2]=m*o+b*f,t[3]=m*a+b*h,t}u(),function(){var t,n=(t=new e(4),e!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t)}();var k,E=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t};u(),h(1,0,0),h(0,1,0),x(),x(),k=new e(9),e!=Float32Array&&(k[1]=0,k[2]=0,k[3]=0,k[5]=0,k[6]=0,k[7]=0),k[0]=1,k[4]=1,k[8]=1;\n/*!\n * @maptalks/gltf-loader v0.95.0\n * LICENSE : UNLICENSED\n * (c) 2016-2023 maptalks.org\n */\nlet C=0;function U(t){return null==t}function F(t){return!U(t)}function N(t){return!U(t)&&("string"==typeof t||null!==t.constructor&&t.constructor===String)}function P(t){for(let e=1;e<arguments.length;e++){const n=arguments[e];for(const e in n)t[e]=n[e]}return t}function B(t){switch(t){case 5120:return Int8Array;case 5121:return Uint8Array;case 5122:return Int16Array;case 5123:return Uint16Array;case 5124:return Int32Array;case 5125:return Uint32Array;case 5126:return Float32Array}throw new Error("unsupported bufferView\'s component type: "+t)}function D(t){return 0===t.indexOf("data:")&&t.indexOf("base64,")>0}function R(t){const e=function(t){return"undefined"!=typeof self?self.atob(t):window.atob(t)}(t.substring(t.indexOf(",")+1)),n=e.length,r=new Uint8Array(n);for(let t=0;t<n;t++)r[t]=e.charCodeAt(t);return r.buffer}const L=[],z=[],j=[],V=[0,0,0],q=S([]),G=[1,1,1];function $(t,e,n,r,s,i,o){const a=B(o);if((0===s||s===r*a.BYTES_PER_ELEMENT)&&i%a.BYTES_PER_ELEMENT==0){const s=new a(e,i,n*r);return t.set(s),t}0===s&&(s=r*a.BYTES_PER_ELEMENT);const c=new Uint8Array(r*a.BYTES_PER_ELEMENT);for(let o=0;o<n;o++){let n=null;const u=new Uint8Array(e,s*o+i,r*a.BYTES_PER_ELEMENT);c.set(u),n=new a(c.buffer,0,r);for(let e=0;e<r;e++)t[o*r+e]=n[e]}return t}const X="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;function H(t,e,n){const r=new Uint8Array(t,e,n);return X.decode(r)}const J={get:function(t,e={}){e||(e={});const n=new AbortController,r=n.signal,s=P({},e);s.signal=r,s.method||(s.method="GET");const i=fetch(t,s).then(t=>{const n=this.t(t,e.responseType);return n.message?n:n.then(n=>"arraybuffer"===e.responseType?{data:n,cacheControl:t.headers.get("Cache-Control"),expires:t.headers.get("Expires"),contentType:t.headers.get("Content-Type")}:n).catch(t=>{if(!t.code||t.code!==DOMException.ABORT_ERR)throw t})}).catch(t=>{if(!t.code||t.code!==DOMException.ABORT_ERR)throw t});return i.xhr=n,i},t:(t,e)=>200!==t.status?{status:t.status,statusText:t.statusText,message:`incorrect http request with status code(${t.status}): ${t.statusText}`}:"arraybuffer"===e?t.arrayBuffer():"json"===e?t.json():t.text(),getArrayBuffer:(t,e={})=>(e||(e={}),e.responseType="arraybuffer",J.get(t,e)),getJSON:function(t,e={}){return e&&e.jsonp?J.jsonp(t):((e=e||{}).responseType="json",J.get(t,e))},jsonp:function(t){const e="_maptalks_jsonp_"+C++;t.match(/\\?/)?t+="&callback="+e:t+="?callback="+e;let n=document.createElement("script");return n.type="text/javascript",n.src=t,new Promise(t=>{window[e]=function(r){document.getElementsByTagName("head")[0].removeChild(n),n=null,delete window[e],t(r)},document.getElementsByTagName("head")[0].appendChild(n)})}};class K{constructor(t,e,n,r){this.s=t,this.decoders=e,this.i=n,this.images={},this.o={},this.u=r||{}}requestImageFromBufferURI(t,e,n){if(this.buffers[t.id]){const r=this.buffers[t.id],s=this.h(e,r);return this.getImageByBuffer(s,n)}if(this.o[t.id])return this.o[t.id].then(()=>{const r=this.buffers[t.id],s=this.h(e,r);return this.getImageByBuffer(s,n)});if(D(t.uri)){const r=this.buffers[t.id]=R(t.uri),s=this.h(e,r);return this.getImageByBuffer(s,n)}let r;const s=t.uri.indexOf("blob:")>=0;return r=t.uri.indexOf("://")>0||s?t.uri:this.rootPath+"/"+t.uri,this.o[t.id]=J.getArrayBuffer(r,this.u).then(r=>{const s=this.buffers[t.id]=r.data,i=this.h(e,s);return this.getImageByBuffer(i,n)})}getImageByBuffer(t,e){if(this.images[e.id])return Promise.resolve(this.images[e.id]);const n=this.decoders;return n[e.mimeType]?n[e.mimeType](t,{supportedFormats:this.i}):"image/crn"===e.mimeType||"image/ktx2"===e.mimeType||"image/cttf"===e.mimeType?(console.warn("missing transcoder for "+e.mimeType,", visit https://maptalks.com/docs/transcoders for details"),Promise.resolve(null)):this.m(e.id,t)}requestExternalImage(t){if(this.images[t.id])return Promise.resolve(this.images[t.id]);const e=0===t.uri.indexOf("data:image/")?t.uri:this.rootPath+"/"+t.uri;return this.o[t.id]?this.o[t.id].then(()=>this.images[t.id]):this.o[t.id]=this.m(t.id,e)}m(t,e){return new Promise((n,r)=>{this.s(e,this.u,(s,i)=>{s?r(s):(URL.revokeObjectURL(e),this.images[t]=i,n(this.images[t]))})})}}const Y=["SCALAR",1,"VEC2",2,"VEC3",3,"VEC4",4,"MAT2",4,"MAT3",9,"MAT4",16],Q=[];class W{constructor(t,e,n,r){this.rootPath=t,this.gltf=e,this.p=!1,this.glbBuffer=n,this.buffers={},this.requests={},this.accessors={},this.v(),this.u=r}M(t,e){const n=this.gltf,r=n.accessors[e];if(void 0===r.bufferView)return this.accessors[r.id]=this.T(t,e,null,0),Promise.resolve(this.accessors[r.id]);if(r&&this.accessors[r.id])return Promise.resolve(this.accessors[r.id]);const s=n.bufferViews[r.bufferView];return this.A(s).then(n=>{const{buffer:s,byteOffset:i}=n;return this.accessors[r.id]=this.T(t,e,s,i)})}A(t){const e=this.gltf.buffers[t.buffer];if(this.buffers[e.id]){const t=this.buffers[e.id];return Promise.resolve({buffer:t,byteOffset:0})}if(this.requests[e.id])return this.requests[e.id].then(()=>{const t=this.buffers[e.id];return Promise.resolve({buffer:t,byteOffset:0})});if("binary_glTF"!==t.buffer&&"KHR_binary_glTF"!==t.buffer&&e.uri){if(D(e.uri)){const t=this.buffers[e.id]=R(e.uri);return Promise.resolve({buffer:t,byteOffset:0})}let t;const n=e.uri.indexOf("blob:")>=0;return t=e.uri.indexOf("://")>0||n?e.uri:this.rootPath+"/"+e.uri,this.requests[e.id]=J.getArrayBuffer(t,this.u).then(r=>(n&&URL.revokeObjectURL(t),{buffer:this.buffers[e.id]=r.data,byteOffset:0}))}return Promise.resolve({buffer:this.glbBuffer.buffer,byteOffset:this.glbBuffer.byteOffset})}T(t,e,n,r=0){const s=this.gltf,i=s.accessors[e],o=void 0!==i.bufferView?s.bufferViews[i.bufferView]:{},a=(o.byteOffset||0)+r,c=this._(i.type),u=B(i.componentType),f=o.byteStride||0,h={array:void 0,name:t,accessorName:e,byteLength:i.count*c*u.BYTES_PER_ELEMENT,componentType:i.componentType,count:i.count,type:i.type,itemSize:c,max:i.max,min:i.min,extensions:i.extensions};if(i.min&&(h.min=i.min),i.max&&(h.max=i.max),n)if(this.p)h.byteStride=f,h.byteOffset=a+(i.byteOffset||0),!f||f===c*u.BYTES_PER_ELEMENT||"indices"===t||"input"===t||"output"===t||t.indexOf("morph")>=0?(h.array=this.O(n,i.count,c,a+(i.byteOffset||0),u),h.array.buffer.byteLength===h.byteLength&&(h.byteOffset=0)):h.array=new Uint8Array(n,a,o.byteLength);else if(i.interleaved){h.byteStride=0,h.byteOffset=0;const t=new u(i.count*c);if(h.array=$(t,n,i.count,c,f,a+(i.byteOffset||0),i.componentType),h.extensions&&h.extensions.WEB3D_quantized_attributes&&c>2){const t=new Float32Array(h.array.length),{decodeMatrix:e}=h.extensions.WEB3D_quantized_attributes;for(let n=0;n<h.array.length;n+=c){Q[0]=h.array[n],Q[1]=h.array[n+1],Q[2]=h.array[n+2],Q[3]=1;const r=O(Q,Q,e);t[n]=r[0],t[n+1]=r[1],t[n+2]=r[2]}h.componentType=5126,h.array=t}}else h.byteStride=0,h.array=this.O(n,i.count,c,a+(i.byteOffset||0),u),h.byteOffset=h.array.byteOffset;else{h.array=new u(i.count);const t=h.min||h.max;t&&(h.array[0]=t[0],h.array[1]=t[1],h.array[2]=t[2])}return h}v(){const t=this.gltf.accessors;if(Array.isArray(t))for(let e=0;e<t.length;e++)for(let n=0;n<t.length;n++)e!==n&&t[e].bufferView===t[n].bufferView&&(t[e].interleaved=t[n].interleaved=!0);else for(const e in t)for(const n in t)e!==n&&t[e].bufferView===t[n].bufferView&&(t[e].interleaved=t[n].interleaved=!0)}O(t,e,n,r,s){return r%s.BYTES_PER_ELEMENT!=0&&(t=t.slice(r,r+e*n*s.BYTES_PER_ELEMENT),r=0),new s(t,r,n*e)}_(t){const e=Y.indexOf(t);return Y[e+1]}requestKHRTechniquesWebgl(t){const{shaders:e}=t,n=e.map(t=>{if(void 0!==t.bufferView){const e=this.gltf.bufferViews[t.bufferView],{byteLength:n}=e;return this.A(e).then(r=>{const{buffer:s,byteOffset:i}=r,o=H(s,i+(e.byteOffset||0),n);return t.content=o,t})}if(t.uri){if(D(t.uri)){const e=R(t.uri),n=H(e,0,e.byteLength);return t.content=n,Promise.resolve(t)}{const e=this.rootPath+"/"+t.uri;return J.get(e,this.u).then(e=>(t.content=e,t))}}return Promise.resolve(t)});return Promise.all(n).then(()=>t)}}class Z extends K{constructor(t,e,n,r,s,i,o){super(r,s,i,o),this.rootPath=t,this.gltf=e,this.requests={},this.buffers={},this.glbBuffer=n,this.accessor=new W(t,e,n,o)}iterate(t,e){const n=this.gltf[e];if(!n)return;let r=0;for(const e in n)t(e,n[e],r++)}createNode(t){const e={};if(F(t.name)&&(e.name=t.name),F(t.children)&&(e.children=t.children),F(t.jointName)&&(e.jointName=t.jointName),F(t.matrix)&&(e.matrix=t.matrix),F(t.rotation)&&(e.rotation=t.rotation),F(t.scale)&&(e.scale=t.scale),F(t.translation)&&(e.translation=t.translation),F(t.extras)&&(e.extras=t.extras),F(t.meshes)&&(e.mesh=t.meshes[0]),e.translation||e.rotation||e.scale){const t=function(t,e){if(e.matrix)return e.matrix;if(e.translation||e.scale||e.rotation){const n=i(L,e.translation||V),r=a(z,e.rotation||q),c=o(j,e.scale||G);return s(c,r,c),s(t,n,c)}return r(t)}([],e);delete e.translation,delete e.rotation,delete e.scale,e.matrix=t}return e}S(t){const e={};for(const n in t){const r=t[n];let s,i;r.instanceTechnique&&r.instanceTechnique.values?(s=r.instanceTechnique,i=s.values.diffuse):(s=r,i=s.values.tex||s.values.diffuseTex||s.values.diffuse);const o={baseColorTexture:{index:i}};r.name&&(o.name=r.name),r.extensions&&(o.extensions=r.extensions),r.extras&&(o.extras=r.extras),e[n]=o}return e}I(t){if(t.bufferView||t.extensions&&(t.extensions.KHR_binary_glTF||t.extensions.binary_glTF)){const e=t.bufferView?t:t.extensions.KHR_binary_glTF||t.extensions.binary_glTF;t.extensions&&(t.mimeType=e.mimeType,t.width=e.width,t.height=e.height);const n=this.gltf.bufferViews[e.bufferView],r=(n.byteOffset||0)+this.glbBuffer.byteOffset,s=n.byteLength,i=this.buffers[e.bufferView]=new Uint8Array(this.glbBuffer.buffer,r,s);return this.getImageByBuffer(i,t)}return this.requestExternalImage(t)}k(t){const e=this.gltf.textures[t];if(!e)return null;const n=this.gltf.images[e.source];return this.I(n).then(t=>{const r=this.gltf.samplers[e.sampler];return{image:{array:t.data,width:t.width,height:t.height,index:e.source,mimeType:n.mimeType,name:n.name,extras:n.extras},sampler:r}})}getBaseColorTexture(t){const e=this.gltf.materials[t];let n,r;if(e.instanceTechnique&&e.instanceTechnique.values?(n=e.instanceTechnique,r=n.values.diffuse):(n=e,r=n.values.tex||n.values.diffuseTex||n.values.diffuse),void 0===r||void 0===this.gltf.textures)return null;const s=this.gltf.textures[r];if(!s)return null;const i=this.gltf.samplers[s.sampler];return{format:s.format||6408,internalFormat:s.internalFormat||6408,type:s.type||5121,sampler:i,source:this.gltf.images[s.source]}}getMaterial(){return null}getAnimations(){return null}}class tt extends K{constructor(t,e,n,r,s,i,o){super(r,s,i,o),this.rootPath=t,this.gltf=e,this.glbBuffer=n,this.buffers={},this.requests={},this.accessor=new W(t,e,n,o)}iterate(t,e){const n=this.gltf[e];if(n)for(let e=0;e<n.length;e++)t(e,n[e],e)}createNode(t){const e={};return P(e,t),!F(t.weights)&&this.gltf.meshes&&F(e.mesh)?e.weights=this.gltf.meshes[e.mesh].weights:t.weights&&(e.weights=t.weights),e}k(t){const e=this.gltf.textures[t];if(!e)return null;let n=e.source;if(e.extensions&&e.extensions.EXT_texture_webp&&(n=e.extensions.EXT_texture_webp.source),!F(n))return null;const r=this.gltf.images[n];return this.I(r).then(t=>{if(!t)return null;const n={image:{array:t.data,mipmap:t.mipmap,width:t.width,height:t.height,index:e.source,mimeType:r.mimeType,name:r.name,extensions:r.extensions,extras:r.extras}};P(n,e);const s=F(e.sampler)?this.gltf.samplers[e.sampler]:void 0;return s&&(n.sampler=s,n.sampler.magFilter=s.magFilter||9729,n.sampler.minFilter=s.minFilter||9729,n.sampler.wrapS=s.wrapS||10497,n.sampler.wrapT=s.wrapT||10497),t.format&&(n.format=t.format),n})}I(t){if(!F(t.bufferView))return this.requestExternalImage(t);{const e=this.gltf.bufferViews[t.bufferView],n=this.gltf.buffers[e.buffer];if(n.uri)return this.requestImageFromBufferURI(n,e,t);if(this.glbBuffer)return this.C(e,t)}return null}C(t,e){const n=this.h(t,this.glbBuffer.buffer,this.glbBuffer.byteOffset);return this.getImageByBuffer(n,e)}h(t,e,n){n=n||0;const r=t.byteOffset+n,s=t.byteLength;return new Uint8Array(e,r,s)}U(t,e){const n=new Array(t.byteLength);for(let e=0;e<t.byteLength;e++)n[e]=String.fromCharCode(t[e]);return n.join(""),"data:"+(e=e||"image/png")+";base64,"+function(t){return"undefined"!=typeof self?self.btoa(t):window.btoa(t)}(unescape(encodeURIComponent(n)))}getAnimations(t){const e=[];return t.forEach(t=>{e.push(this.getSamplers(t.samplers))}),Promise.all(e).then(e=>{for(let n=0;n<e.length;n++)t[n].samplers=e[n];return t})}getSamplers(t){const e=[];for(let n=0;n<t.length;n++)(F(t[n].input)||F(t[n].output))&&(e.push(this.accessor.M("input",t[n].input)),e.push(this.accessor.M("output",t[n].output)));return Promise.all(e).then(e=>{for(let n=0;n<e.length/2;n++)t[n].input=e[2*n],t[n].output=e[2*n+1],t[n].interpolation||(t[n].interpolation="LINEAR");return t})}}const et="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;class nt{static read(t,e=0,n=0){n||(n=t.byteLength);const r=new DataView(t,e,n),s=r.getUint32(4,!0);if(1===s)return nt.readV1(r,e);if(2===s)return nt.readV2(t,e);throw new Error("Unsupported glb version : "+s)}static readV1(t,e){const n=t.getUint32(8,!0),r=t.getUint32(12,!0);if(n!==t.byteLength)throw new Error("Length in GLB header is inconsistent with glb\'s byte length.");const s=rt(t.buffer,20+e,r);return{json:JSON.parse(s),glbBuffer:{byteOffset:20+e+r,buffer:t.buffer,byteLength:n}}}static readV2(t,e){let n,r,s;const i=new DataView(t,e+12);let o=0;for(;o<i.byteLength;){const a=i.getUint32(o,!0);o+=4;const c=i.getUint32(o,!0);if(o+=4,1313821514===c)n=rt(t,e+12+o,a);else if(5130562===c){s=e+12+o,r=a;break}o+=a}return{json:JSON.parse(n),glbBuffer:{byteOffset:s,buffer:t,byteLength:r}}}}function rt(t,e,n){if(et){const r=new Uint8Array(t,e,n);return et.decode(r)}return function(t){const e=t.length;let n="";for(let r=0;r<e;){let s=t[r++];if(128&s){let n=st[s>>3&7];if(!(64&s)||!n||r+n>e)return null;for(s&=63>>n;n>0;n-=1){const e=t[r++];if(128!=(192&e))return null;s=s<<6|63&e}}n+=String.fromCharCode(s)}return n}(new Uint8Array(t,e,n))}const st=[1,1,1,1,2,2,3,0],it=[0,0,0],ot=[0,0,0,1],at=[1,1,1],ct={TRANSLATION:[0,0,0],ROTATION:[0,0,0,1],SCALE:[1,1,1]},ut={PREVIOUS:null,NEXT:null,PREINDEX:null,NEXTINDEX:null,INTERPOLATION:null},ft={F(t,e,n,r,s,i,o,a){const c=F(t)?e.animations:[e.animations[0]],u={};for(let e=0;e<c.length;e++){const f=c[e],h=f.name||e;if(F(t)&&h!==t)continue;const d=f.channelsMap[n];if(d)for(let t=0;t<d.length;t++){const e=d[t];"translation"===e.target.path?(this.N(s,f.samplers[e.sampler],r,1),u.translation=l(it,s)):"rotation"===e.target.path?(this.P(i,f.samplers[e.sampler],r,1),u.rotation=E(ot,i)):"scale"===e.target.path?(this.N(o,f.samplers[e.sampler],r,1),u.scale=l(at,o)):"weights"===e.target.path&&a&&(this.N(a,f.samplers[e.sampler],r,a.length),u.weights=a)}}return u},N(t,e,n,r){switch(e.interpolation){case"LINEAR":{const s=this.B(ut,e,n,1*r);s&&(t=function(t,e,n,r){for(let s=0;s<t.length;s++)t[s]=e[s]+r*(n[s]-e[s]);return t}(t,s.PREVIOUS,s.NEXT,s.INTERPOLATION));break}case"STEP":{const s=this.B(ut,e,n,1*r);s&&(t=function(t,e){for(let n=0;n<t.length;n++)t[n]=e[n];return t}(t,...s.PREVIOUS));break}case"CUBICSPLINE":{const s=this.B(ut,e,n,3*r);s&&(t=this.D(t,s,e.input.array,3*r));break}}return t},P(t,e,n){switch(e.interpolation){case"LINEAR":{const r=this.B(ut,e,n,1);r&&I(t,r.PREVIOUS,r.NEXT,r.INTERPOLATION);break}case"STEP":{const r=this.B(ut,e,n,1);r&&(t=_(t,...r.PREVIOUS));break}case"CUBICSPLINE":{const r=this.B(ut,e,n,3);if(r){for(let t=0;t<r.PREVIOUS.length;t++)r.PREVIOUS[t]=Math.acos(r.PREVIOUS[t]),r.NEXT[t]=Math.acos(r.NEXT[t]);t=this.D(t,r,e.input.array,3);for(let e=0;e<t.length;e++)t[e]=Math.cos(t[e])}break}}return t},R(t,e){const n=t.length;let r,s,i,o=0,a=n-1,c=Math.floor((o+a)/2);for(;o<=n-1&&a>=0;){if(o===a)return null;if(t[c]<=e&&e<=t[c+1]){const n=t[c];return r=c,s=c+1,i=(e-n)/(t[c+1]-n),{preIndx:r,nextIndex:s,interpolation:i}}e<t[c]?(a=c,c=Math.floor((o+a)/2)):t[c+1]<e&&(o=c,c=Math.floor((o+a)/2))}return null},B(t,e,n,r){const s=e.input.array,i=e.output.array,o=e.output.itemSize;(n<s[0]||n>s[s.length-1])&&(n=Math.max(s[0],Math.min(s[s.length-1],n))),n===s[s.length-1]&&(n=s[0]);const a=this.R(s,n);if(!a||!a.nextIndex)return null;const{preIndx:c,nextIndex:u,interpolation:f}=a;t.PREINDEX=c,t.NEXTINDEX=u,t.INTERPOLATION=f;const h=o*r;return t.PREVIOUS=i.subarray(t.PREINDEX*h,(t.PREINDEX+1)*h),t.NEXT=i.subarray(t.NEXTINDEX*h,(t.NEXTINDEX+1)*h),t},D(t,e,n,r){const s=e.INTERPOLATION,i=n[e.PREINDEX],o=n[e.NEXTINDEX];for(let n=0;n<3;n++){const a=e.PREVIOUS[r+n],c=(o-i)*e.PREVIOUS[2*r+n],u=e.NEXT[3+n],f=(o-i)*e.NEXT[n],h=(2*Math.pow(s,3)-3*Math.pow(s,2)+1)*a+(Math.pow(s,3)-2*Math.pow(s,2)+s)*c+(2*-Math.pow(s,3)+3*Math.pow(s,2))*u+(Math.pow(s,3)-Math.pow(s,2))*f;t[n]=h}return t},getAnimationClip(t,e,n,r){const s=t.nodes[e]&&t.nodes[e].weights;return d(it,...ct.TRANSLATION),_(ot,...ct.ROTATION),d(at,...ct.SCALE),this.F(r,t,e,n,it,ot,at,s)},getTimeSpan(t){if(!t.animations)return null;if(t.timeSpan)return t.timeSpan;const e=t.animations;return t.timeSpan={},e.forEach((e,n)=>{let r=-1/0,s=1/0;const i=e.channels;for(let t=0;t<i.length;t++){const n=i[t],o=e.samplers[n.sampler].input.array;o[o.length-1]>r&&(r=o[o.length-1]),o[0]<s&&(s=o[0])}const o=e.name||n;t.timeSpan[o]={max:r,min:s}}),t.timeSpan},getTimeSpanByName(t,e){const n=this.getTimeSpan(t);return n?F(e)?n[e]:n[Object.keys(n)[0]]:null}};let ht=!1;if("undefined"!=typeof OffscreenCanvas){let t;try{t=new OffscreenCanvas(2,2).getContext("2d")}catch(Qe){}t&&"undefined"!=typeof createImageBitmap&&(ht=!0)}const lt="undefined"==typeof document?null:document.createElement("canvas");class dt{constructor(t,e,n){if(this.options=n||{},this.options.decoders||(this.options.decoders={}),this.u=this.options.fetchOptions||{},e.buffer instanceof ArrayBuffer){const{json:n,glbBuffer:r}=nt.read(e.buffer,e.byteOffset,e.byteLength);this.L(t,n,r)}else this.L(t,e);this.j=new W(this.rootPath,this.gltf,this.glbBuffer,this.u),this.V()}V(){const t=this.gltf.extensionsRequired;if(t){if(t.indexOf("KHR_draco_mesh_compression")>=0&&!this.options.decoders.draco)throw new Error("KHR_draco_mesh_compression is required but @maptalks/transcoders.draco is not loaded");if(t.indexOf("KHR_texture_basisu")>=0&&!this.options.decoders.ktx2)throw new Error("KHR_texture_basisu is required but @maptalks/transcoders.ktx2 is not loaded")}}q(){const t=this.gltf.extensions;return t&&t.KHR_techniques_webgl?this.j.requestKHRTechniquesWebgl(t.KHR_techniques_webgl).then(e=>(t.KHR_techniques_webgl=e,t)):Promise.resolve(t)}load(t){t=t||{};const e=this.G(t),n=this.$(),r=this.X(),s=this.q();return Promise.all([e,n,r,s]).then(t=>(t[0].animations=t[1],t[0].textures=t[2],t[0].extensions=t[3],t[0].transferables=this.transferables||[],this.createChannelsMap(t[0]),t[0]))}createChannelsMap(t){const e=t.animations;if(e)for(let t=0;t<e.length;t++){const n=e[t];n.channelsMap={};for(let t=0;t<n.channels.length;t++){const e=n.channels[t];n.channelsMap[e.target.node]||(n.channelsMap[e.target.node]=[]),n.channelsMap[e.target.node].push(e)}}}getExternalResources(){const t=[];if(this.gltf){const{buffers:e,images:n}=this.gltf;for(let n=0;n<e.length;n++)e[n].uri&&e[n].uri.indexOf("data:application/octet-stream;base64")<0&&t.push({type:"buffer",uri:e[n].uri});for(let e=0;e<n.length;e++)n[e].uri&&n[e].uri.indexOf("data:image/")<0&&t.push({type:"image",uri:n[e].uri})}return t}static getAnimationClip(t,e,n,r){return ft.getAnimationClip(t,e,n,r)}static getAnimationTimeSpan(t,e){return ft.getTimeSpanByName(t,e)}static getTypedArrayCtor(t){return B(t)}static readInterleavedArray(t,e,n,r,s,i,o){return $(t,e,n,r,s,i,o)}L(t,e,n){this.gltf=e,this.glbBuffer=n,this.version=e.asset?+e.asset.version:1,this.rootPath=t,this.buffers={},this.requests={},this.options.requestImage=ht?pt.bind(this):this.options.requestImage||yt,this.options.transferable&&(this.transferables=[]),2===this.version?(this.adapter=new tt(t,e,n,this.options.requestImage,this.options.decoders||{},this.options.supportedFormats||{},this.u),this.adapter.iterate((t,e,n)=>{e.id="buffer_"+n},"buffers"),this.adapter.iterate((t,e,n)=>{e.id="image_"+n},"images"),this.adapter.iterate((t,e,n)=>{e.id="accessor_"+n},"accessors")):(this.adapter=new Z(t,e,n,this.options.requestImage,this.options.decoders||{},this.options.supportedFormats||{},this.u),this.adapter.iterate((t,e,n)=>{e.id="accessor_"+n},"accessors"),this.adapter.iterate((t,e,n)=>{e.id="image_"+n},"images"))}H(t,e){if(t.children&&t.children.length>0){if(!("number"==typeof(n=t.children[0])&&isFinite(n)||N(t.children[0])))return t;const r=t.children.map(t=>{const n=e[t];return n.nodeIndex=t,this.H(n,e)});t.children=r}var n;return t}G(t){return this.J(t).then(t=>{const e=this.scenes=[];let n;for(const e in t)t[e]=this.H(t[e],t),t[e].nodeIndex=Number(e)?Number(e):e;this.adapter.iterate((r,s,i)=>{const o={};s.name&&(o.name=s.name),s.nodes&&(o.nodes=s.nodes.map(e=>t[e])),this.gltf.scene===r&&(n=i),e.push(o)},"scenes");const r={textures:this.gltf.textures,asset:this.gltf.asset,scene:n,scenes:e,nodes:t,meshes:this.meshes,materials:this.gltf.materials,skins:this.skins,extensionsRequired:this.gltf.extensionsRequired,extensionsUsed:this.gltf.extensionsUsed};if(this.gltf.extensions&&(r.extensions=this.gltf.extensions),1===this.version){const t=this.adapter.S(this.gltf.materials);r.materials=t}return r})}J(t){return this.K(t).then(()=>{const t=this.nodes={};return this.adapter.iterate((e,n)=>{const r=this.adapter.createNode(n,this.meshes,this.skins);t[e]=r},"nodes"),t})}Y(){this.skins=[];const t=[];return this.adapter.iterate((e,n,r)=>{t.push(this.W(n).then(t=>{t.index=r,this.skins.push(t)}))},"skins"),t}W(t){const e=t.inverseBindMatrices;return this.adapter.accessor.M("inverseBindMatrices",e).then(e=>(t.inverseBindMatrices=e,e&&e.buffer&&this.transferables&&this.transferables.indexOf(e.buffer)<0&&this.transferables.push(e.buffer),t))}$(){const t=this.gltf.animations;return F(t)?this.adapter.getAnimations(t):null}K(t){this.meshes={};let e=[];return this.adapter.iterate((n,r,s)=>{e.push(this.Z(r,t).then(t=>{t.index=s,this.meshes[n]=t}))},"meshes"),e=e.concat(this.Y()),Promise.all(e)}Z(t,e){const n=t.primitives.map(t=>this.tt(t,e)).filter(t=>!!t);return Promise.all(n).then(e=>{const n={};return P(n,t),n.primitives=e,n})}X(){const t=this.gltf.textures;if(!t)return null;const e=[];for(const n in t)e.push(this.adapter.k(n));return Promise.all(e).then(e=>{if(this.transferables)for(let t=0;t<e.length;t++){const n=e[t].image.array;if(e[t]&&n){let t;t=n instanceof ImageBitmap?n:n.buffer,t&&this.transferables.indexOf(t)<0&&this.transferables.push(t)}}if(!Array.isArray(t)){const n={},r=Object.keys(t);for(let t=0;t<e.length;t++)e[t]&&(n[r[t]]=e[t]);return n}return e})}tt(t,e){let n;const r=[],s=t.extensions;if(F(t.targets))for(let e=0;e<t.targets.length;e++){const n=t.targets[e];for(const t in n){const s=this.adapter.accessor.M(`morphTargets_${t}_${e}`,n[t]);s&&r.push(s)}}if(s&&s.KHR_draco_mesh_compression){if(!this.options.decoders.draco&&(!this.gltf.extensionsRequired||!this.gltf.extensionsRequired.indexOf("KHR_draco_mesh_compression")<0))return null;const t=this.options.decoders.draco,{bufferView:i,attributes:o}=s.KHR_draco_mesh_compression,a=this.gltf.bufferViews[i],c=this.j.A(a).then(n=>{const{buffer:r,byteOffset:s}=n;let{byteOffset:i}=a;const c=a.byteLength;i||(i=0);const u=new DataView(r,s+i,c),f={attributes:o,useUniqueIDs:!1,skipAttributeTransform:e.skipAttributeTransform};return t(u,f).then(t=>{const e=Object.values(t.attributes);return t.indices&&e.push(t.indices),e})});r.push(c),n=Promise.all(r)}else{const e=t.attributes;for(const t in e){const n=this.adapter.accessor.M(t,e[t]);n&&r.push(n)}if(F(t.indices)){const e=this.adapter.accessor.M("indices",t.indices);e&&r.push(e)}n=Promise.all(r)}return n.then(e=>{if(s&&s.KHR_draco_mesh_compression){const n=t.targets?t.targets.length:0;e[n]=e[n].concat(e.slice(0,n)),e=e[n]}let n,r;const i={attributes:e.reduce((t,e)=>{if("indices"===e.name)n=e;else if(e.name.indexOf("morphTargets_")>-1)r=r||{},r[e.name.slice(13)]=e;else{if(!("POSITION"!==e.name||e.min&&e.max)){const t=[1/0,1/0,1/0],n=[-1/0,-1/0,-1/0],{itemSize:r,array:s}=e,i=s.length/r;for(let e=0;e<i;e++)for(let i=0;i<r;i++){const o=e*r+i;s[o]<t[i]&&(t[i]=s[o]),s[o]>n[i]&&(n[i]=s[o])}if(e.quantization){const r=e.quantization,s=r.range/(1<<r.quantizationBits),i=r.minValues;b(t,t,s),y(t,t,i),b(n,n,s),y(n,n,i)}e.min=t,e.max=n}t[e.name]=e}return this.transferables&&e.array.buffer&&this.transferables.indexOf(e.array.buffer)<0&&this.transferables.push(e.array.buffer),t},{}),material:t.material};return n&&(i.indices=n),r&&(i.morphTargets=r),i.mode=F(t.mode)?t.mode:4,F(t.extras)&&(i.extras=t.extras),i})}}function yt(t,e,n){const r=new Image;r.crossOrigin="",r.onload=()=>{if(!lt)return void n(new Error("There is no canvas to draw image!"));lt.width=r.width,lt.height=r.height;const t=lt.getContext("2d",{willReadFrequently:!0});t.drawImage(r,0,0,r.width,r.height);const e=t.getImageData(0,0,r.width,r.height),s={width:r.width,height:r.height,data:new Uint8Array(e.data)};n(null,s)},r.onerror=function(t){n(t)},r.src=t}let mt,bt;function pt(t,e,n){mt||(mt=new OffscreenCanvas(2,2),bt=mt.getContext("2d",{willReadFrequently:!0}));let r=null;if(N(t))r=fetch(t,e).then(t=>t.arrayBuffer()).then(t=>{const e=new Blob([new Uint8Array(t)]);return createImageBitmap(e)});else{const e=new Blob([t]);r=createImageBitmap(e)}r.then(wt.bind(this)).then(t=>{n(null,t)}).catch(t=>{console.warn(t),n(t)})}function wt(t){let{width:e,height:n}=t;gt(e)||(e=vt(e)),gt(n)||(n=vt(n));const r=this.options.maxTextureSize;r&&(e=Math.min(r,e),n=Math.min(r,n)),mt.width=e,mt.height=n,bt.drawImage(t,0,0,e,n),t.close();const s=bt.getImageData(0,0,e,n);return{width:e,height:n,data:new Uint8Array(s.data)}}function gt(t){return 0==(t&t-1)&&0!==t}function vt(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}var Mt={exports:{}},Tt={"aliceblue":[240,248,255],"antiquewhite":[250,235,215],"aqua":[0,255,255],"aquamarine":[127,255,212],"azure":[240,255,255],"beige":[245,245,220],"bisque":[255,228,196],"black":[0,0,0],"blanchedalmond":[255,235,205],"blue":[0,0,255],"blueviolet":[138,43,226],"brown":[165,42,42],"burlywood":[222,184,135],"cadetblue":[95,158,160],"chartreuse":[127,255,0],"chocolate":[210,105,30],"coral":[255,127,80],"cornflowerblue":[100,149,237],"cornsilk":[255,248,220],"crimson":[220,20,60],"cyan":[0,255,255],"darkblue":[0,0,139],"darkcyan":[0,139,139],"darkgoldenrod":[184,134,11],"darkgray":[169,169,169],"darkgreen":[0,100,0],"darkgrey":[169,169,169],"darkkhaki":[189,183,107],"darkmagenta":[139,0,139],"darkolivegreen":[85,107,47],"darkorange":[255,140,0],"darkorchid":[153,50,204],"darkred":[139,0,0],"darksalmon":[233,150,122],"darkseagreen":[143,188,143],"darkslateblue":[72,61,139],"darkslategray":[47,79,79],"darkslategrey":[47,79,79],"darkturquoise":[0,206,209],"darkviolet":[148,0,211],"deeppink":[255,20,147],"deepskyblue":[0,191,255],"dimgray":[105,105,105],"dimgrey":[105,105,105],"dodgerblue":[30,144,255],"firebrick":[178,34,34],"floralwhite":[255,250,240],"forestgreen":[34,139,34],"fuchsia":[255,0,255],"gainsboro":[220,220,220],"ghostwhite":[248,248,255],"gold":[255,215,0],"goldenrod":[218,165,32],"gray":[128,128,128],"green":[0,128,0],"greenyellow":[173,255,47],"grey":[128,128,128],"honeydew":[240,255,240],"hotpink":[255,105,180],"indianred":[205,92,92],"indigo":[75,0,130],"ivory":[255,255,240],"khaki":[240,230,140],"lavender":[230,230,250],"lavenderblush":[255,240,245],"lawngreen":[124,252,0],"lemonchiffon":[255,250,205],"lightblue":[173,216,230],"lightcoral":[240,128,128],"lightcyan":[224,255,255],"lightgoldenrodyellow":[250,250,210],"lightgray":[211,211,211],"lightgreen":[144,238,144],"lightgrey":[211,211,211],"lightpink":[255,182,193],"lightsalmon":[255,160,122],"lightseagreen":[32,178,170],"lightskyblue":[135,206,250],"lightslategray":[119,136,153],"lightslategrey":[119,136,153],"lightsteelblue":[176,196,222],"lightyellow":[255,255,224],"lime":[0,255,0],"limegreen":[50,205,50],"linen":[250,240,230],"magenta":[255,0,255],"maroon":[128,0,0],"mediumaquamarine":[102,205,170],"mediumblue":[0,0,205],"mediumorchid":[186,85,211],"mediumpurple":[147,112,219],"mediumseagreen":[60,179,113],"mediumslateblue":[123,104,238],"mediumspringgreen":[0,250,154],"mediumturquoise":[72,209,204],"mediumvioletred":[199,21,133],"midnightblue":[25,25,112],"mintcream":[245,255,250],"mistyrose":[255,228,225],"moccasin":[255,228,181],"navajowhite":[255,222,173],"navy":[0,0,128],"oldlace":[253,245,230],"olive":[128,128,0],"olivedrab":[107,142,35],"orange":[255,165,0],"orangered":[255,69,0],"orchid":[218,112,214],"palegoldenrod":[238,232,170],"palegreen":[152,251,152],"paleturquoise":[175,238,238],"palevioletred":[219,112,147],"papayawhip":[255,239,213],"peachpuff":[255,218,185],"peru":[205,133,63],"pink":[255,192,203],"plum":[221,160,221],"powderblue":[176,224,230],"purple":[128,0,128],"rebeccapurple":[102,51,153],"red":[255,0,0],"rosybrown":[188,143,143],"royalblue":[65,105,225],"saddlebrown":[139,69,19],"salmon":[250,128,114],"sandybrown":[244,164,96],"seagreen":[46,139,87],"seashell":[255,245,238],"sienna":[160,82,45],"silver":[192,192,192],"skyblue":[135,206,235],"slateblue":[106,90,205],"slategray":[112,128,144],"slategrey":[112,128,144],"snow":[255,250,250],"springgreen":[0,255,127],"steelblue":[70,130,180],"tan":[210,180,140],"teal":[0,128,128],"thistle":[216,191,216],"tomato":[255,99,71],"turquoise":[64,224,208],"violet":[238,130,238],"wheat":[245,222,179],"white":[255,255,255],"whitesmoke":[245,245,245],"yellow":[255,255,0],"yellowgreen":[154,205,50]},At={exports:{}},_t=function(t){return!(!t||"string"==typeof t)&&(t instanceof Array||Array.isArray(t)||t.length>=0&&(t.splice instanceof Function||Object.getOwnPropertyDescriptor(t,t.length-1)&&"String"!==t.constructor.name))},Ot=Array.prototype.concat,xt=Array.prototype.slice,St=At.exports=function(t){for(var e=[],n=0,r=t.length;n<r;n++){var s=t[n];_t(s)?e=Ot.call(e,xt.call(s)):e.push(s)}return e};St.wrap=function(t){return function(){return t(St(arguments))}};var It=Tt,kt=At.exports,Et=Object.hasOwnProperty,Ct=Object.create(null);for(var Ut in It)Et.call(It,Ut)&&(Ct[It[Ut]]=Ut);var Ft=Mt.exports={to:{},get:{}};function Nt(t,e,n){return Math.min(Math.max(e,t),n)}function Pt(t){var e=Math.round(t).toString(16).toUpperCase();return e.length<2?"0"+e:e}Ft.get=function(t){var e,n;switch(t.substring(0,3).toLowerCase()){case"hsl":e=Ft.get.hsl(t),n="hsl";break;case"hwb":e=Ft.get.hwb(t),n="hwb";break;default:e=Ft.get.rgb(t),n="rgb"}return e?{model:n,value:e}:null},Ft.get.rgb=function(t){if(!t)return null;var e,n,r,s=[0,0,0,1];if(e=t.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(r=e[2],e=e[1],n=0;n<3;n++){var i=2*n;s[n]=parseInt(e.slice(i,i+2),16)}r&&(s[3]=parseInt(r,16)/255)}else if(e=t.match(/^#([a-f0-9]{3,4})$/i)){for(r=(e=e[1])[3],n=0;n<3;n++)s[n]=parseInt(e[n]+e[n],16);r&&(s[3]=parseInt(r+r,16)/255)}else if(e=t.match(/^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/)){for(n=0;n<3;n++)s[n]=parseInt(e[n+1],0);e[4]&&(e[5]?s[3]=.01*parseFloat(e[4]):s[3]=parseFloat(e[4]))}else{if(!(e=t.match(/^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/)))return(e=t.match(/^(\\w+)$/))?"transparent"===e[1]?[0,0,0,0]:Et.call(It,e[1])?((s=It[e[1]])[3]=1,s):null:null;for(n=0;n<3;n++)s[n]=Math.round(2.55*parseFloat(e[n+1]));e[4]&&(e[5]?s[3]=.01*parseFloat(e[4]):s[3]=parseFloat(e[4]))}for(n=0;n<3;n++)s[n]=Nt(s[n],0,255);return s[3]=Nt(s[3],0,1),s},Ft.get.hsl=function(t){if(!t)return null;var e=t.match(/^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/);if(e){var n=parseFloat(e[4]);return[(parseFloat(e[1])%360+360)%360,Nt(parseFloat(e[2]),0,100),Nt(parseFloat(e[3]),0,100),Nt(isNaN(n)?1:n,0,1)]}return null},Ft.get.hwb=function(t){if(!t)return null;var e=t.match(/^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/);if(e){var n=parseFloat(e[4]);return[(parseFloat(e[1])%360+360)%360,Nt(parseFloat(e[2]),0,100),Nt(parseFloat(e[3]),0,100),Nt(isNaN(n)?1:n,0,1)]}return null},Ft.to.hex=function(){var t=kt(arguments);return"#"+Pt(t[0])+Pt(t[1])+Pt(t[2])+(t[3]<1?Pt(Math.round(255*t[3])):"")},Ft.to.rgb=function(){var t=kt(arguments);return t.length<4||1===t[3]?"rgb("+Math.round(t[0])+", "+Math.round(t[1])+", "+Math.round(t[2])+")":"rgba("+Math.round(t[0])+", "+Math.round(t[1])+", "+Math.round(t[2])+", "+t[3]+")"},Ft.to.rgb.percent=function(){var t=kt(arguments),e=Math.round(t[0]/255*100),n=Math.round(t[1]/255*100),r=Math.round(t[2]/255*100);return t.length<4||1===t[3]?"rgb("+e+"%, "+n+"%, "+r+"%)":"rgba("+e+"%, "+n+"%, "+r+"%, "+t[3]+")"},Ft.to.hsl=function(){var t=kt(arguments);return t.length<4||1===t[3]?"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)":"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+t[3]+")"},Ft.to.hwb=function(){var t=kt(arguments),e="";return t.length>=4&&1!==t[3]&&(e=", "+t[3]),"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+e+")"},Ft.to.keyword=function(t){return Ct[t.slice(0,3)]};var Bt={exports:{}},Dt=Tt,Rt={};for(var Lt in Dt)Dt.hasOwnProperty(Lt)&&(Rt[Dt[Lt]]=Lt);var zt=Bt.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var jt in zt)if(zt.hasOwnProperty(jt)){if(!("channels"in zt[jt]))throw new Error("missing channels property: "+jt);if(!("labels"in zt[jt]))throw new Error("missing channel labels property: "+jt);if(zt[jt].labels.length!==zt[jt].channels)throw new Error("channel and label counts mismatch: "+jt);var Vt=zt[jt].channels,qt=zt[jt].labels;delete zt[jt].channels,delete zt[jt].labels,Object.defineProperty(zt[jt],"channels",{value:Vt}),Object.defineProperty(zt[jt],"labels",{value:qt})}function Gt(t,e){return Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)+Math.pow(t[2]-e[2],2)}zt.rgb.hsl=function(t){var e,n,r=t[0]/255,s=t[1]/255,i=t[2]/255,o=Math.min(r,s,i),a=Math.max(r,s,i),c=a-o;return a===o?e=0:r===a?e=(s-i)/c:s===a?e=2+(i-r)/c:i===a&&(e=4+(r-s)/c),(e=Math.min(60*e,360))<0&&(e+=360),n=(o+a)/2,[e,100*(a===o?0:n<=.5?c/(a+o):c/(2-a-o)),100*n]},zt.rgb.hsv=function(t){var e,n,r,s,i,o=t[0]/255,a=t[1]/255,c=t[2]/255,u=Math.max(o,a,c),f=u-Math.min(o,a,c),h=function(t){return(u-t)/6/f+.5};return 0===f?s=i=0:(i=f/u,e=h(o),n=h(a),r=h(c),o===u?s=r-n:a===u?s=1/3+e-r:c===u&&(s=2/3+n-e),s<0?s+=1:s>1&&(s-=1)),[360*s,100*i,100*u]},zt.rgb.hwb=function(t){var e=t[0],n=t[1],r=t[2];return[zt.rgb.hsl(t)[0],100*(1/255*Math.min(e,Math.min(n,r))),100*(r=1-1/255*Math.max(e,Math.max(n,r)))]},zt.rgb.cmyk=function(t){var e,n=t[0]/255,r=t[1]/255,s=t[2]/255;return[100*((1-n-(e=Math.min(1-n,1-r,1-s)))/(1-e)||0),100*((1-r-e)/(1-e)||0),100*((1-s-e)/(1-e)||0),100*e]},zt.rgb.keyword=function(t){var e=Rt[t];if(e)return e;var n,r=1/0;for(var s in Dt)if(Dt.hasOwnProperty(s)){var i=Gt(t,Dt[s]);i<r&&(r=i,n=s)}return n},zt.keyword.rgb=function(t){return Dt[t]},zt.rgb.xyz=function(t){var e=t[0]/255,n=t[1]/255,r=t[2]/255;return[100*(.4124*(e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92)),100*(.2126*e+.7152*n+.0722*r),100*(.0193*e+.1192*n+.9505*r)]},zt.rgb.lab=function(t){var e=zt.rgb.xyz(t),n=e[0],r=e[1],s=e[2];return r/=100,s/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116)-16,500*(n-r),200*(r-(s=s>.008856?Math.pow(s,1/3):7.787*s+16/116))]},zt.hsl.rgb=function(t){var e,n,r,s,i,o=t[0]/360,a=t[1]/100,c=t[2]/100;if(0===a)return[i=255*c,i,i];e=2*c-(n=c<.5?c*(1+a):c+a-c*a),s=[0,0,0];for(var u=0;u<3;u++)(r=o+1/3*-(u-1))<0&&r++,r>1&&r--,i=6*r<1?e+6*(n-e)*r:2*r<1?n:3*r<2?e+(n-e)*(2/3-r)*6:e,s[u]=255*i;return s},zt.hsl.hsv=function(t){var e=t[0],n=t[1]/100,r=t[2]/100,s=n,i=Math.max(r,.01);return n*=(r*=2)<=1?r:2-r,s*=i<=1?i:2-i,[e,100*(0===r?2*s/(i+s):2*n/(r+n)),100*((r+n)/2)]},zt.hsv.rgb=function(t){var e=t[0]/60,n=t[1]/100,r=t[2]/100,s=Math.floor(e)%6,i=e-Math.floor(e),o=255*r*(1-n),a=255*r*(1-n*i),c=255*r*(1-n*(1-i));switch(r*=255,s){case 0:return[r,c,o];case 1:return[a,r,o];case 2:return[o,r,c];case 3:return[o,a,r];case 4:return[c,o,r];case 5:return[r,o,a]}},zt.hsv.hsl=function(t){var e,n,r,s=t[0],i=t[1]/100,o=t[2]/100,a=Math.max(o,.01);return r=(2-i)*o,n=i*a,[s,100*(n=(n/=(e=(2-i)*a)<=1?e:2-e)||0),100*(r/=2)]},zt.hwb.rgb=function(t){var e,n,r,s,i,o,a,c=t[0]/360,u=t[1]/100,f=t[2]/100,h=u+f;switch(h>1&&(u/=h,f/=h),r=6*c-(e=Math.floor(6*c)),0!=(1&e)&&(r=1-r),s=u+r*((n=1-f)-u),e){default:case 6:case 0:i=n,o=s,a=u;break;case 1:i=s,o=n,a=u;break;case 2:i=u,o=n,a=s;break;case 3:i=u,o=s,a=n;break;case 4:i=s,o=u,a=n;break;case 5:i=n,o=u,a=s}return[255*i,255*o,255*a]},zt.cmyk.rgb=function(t){var e=t[0]/100,n=t[1]/100,r=t[2]/100,s=t[3]/100;return[255*(1-Math.min(1,e*(1-s)+s)),255*(1-Math.min(1,n*(1-s)+s)),255*(1-Math.min(1,r*(1-s)+s))]},zt.xyz.rgb=function(t){var e,n,r,s=t[0]/100,i=t[1]/100,o=t[2]/100;return n=-.9689*s+1.8758*i+.0415*o,r=.0557*s+-.204*i+1.057*o,e=(e=3.2406*s+-1.5372*i+-.4986*o)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,r=r>.0031308?1.055*Math.pow(r,1/2.4)-.055:12.92*r,[255*(e=Math.min(Math.max(0,e),1)),255*(n=Math.min(Math.max(0,n),1)),255*(r=Math.min(Math.max(0,r),1))]},zt.xyz.lab=function(t){var e=t[0],n=t[1],r=t[2];return n/=100,r/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(e-n),200*(n-(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116))]},zt.lab.xyz=function(t){var e,n,r,s=t[0];e=t[1]/500+(n=(s+16)/116),r=n-t[2]/200;var i=Math.pow(n,3),o=Math.pow(e,3),a=Math.pow(r,3);return n=i>.008856?i:(n-16/116)/7.787,e=o>.008856?o:(e-16/116)/7.787,r=a>.008856?a:(r-16/116)/7.787,[e*=95.047,n*=100,r*=108.883]},zt.lab.lch=function(t){var e,n=t[0],r=t[1],s=t[2];return(e=360*Math.atan2(s,r)/2/Math.PI)<0&&(e+=360),[n,Math.sqrt(r*r+s*s),e]},zt.lch.lab=function(t){var e,n=t[0],r=t[1];return e=t[2]/360*2*Math.PI,[n,r*Math.cos(e),r*Math.sin(e)]},zt.rgb.ansi16=function(t){var e=t[0],n=t[1],r=t[2],s=1 in arguments?arguments[1]:zt.rgb.hsv(t)[2];if(0===(s=Math.round(s/50)))return 30;var i=30+(Math.round(r/255)<<2|Math.round(n/255)<<1|Math.round(e/255));return 2===s&&(i+=60),i},zt.hsv.ansi16=function(t){return zt.rgb.ansi16(zt.hsv.rgb(t),t[2])},zt.rgb.ansi256=function(t){var e=t[0],n=t[1],r=t[2];return e===n&&n===r?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},zt.ansi16.rgb=function(t){var e=t%10;if(0===e||7===e)return t>50&&(e+=3.5),[e=e/10.5*255,e,e];var n=.5*(1+~~(t>50));return[(1&e)*n*255,(e>>1&1)*n*255,(e>>2&1)*n*255]},zt.ansi256.rgb=function(t){if(t>=232){var e=10*(t-232)+8;return[e,e,e]}var n;return t-=16,[Math.floor(t/36)/5*255,Math.floor((n=t%36)/6)/5*255,n%6/5*255]},zt.rgb.hex=function(t){var e=(((255&Math.round(t[0]))<<16)+((255&Math.round(t[1]))<<8)+(255&Math.round(t[2]))).toString(16).toUpperCase();return"000000".substring(e.length)+e},zt.hex.rgb=function(t){var e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];var n=e[0];3===e[0].length&&(n=n.split("").map((function(t){return t+t})).join(""));var r=parseInt(n,16);return[r>>16&255,r>>8&255,255&r]},zt.rgb.hcg=function(t){var e,n=t[0]/255,r=t[1]/255,s=t[2]/255,i=Math.max(Math.max(n,r),s),o=Math.min(Math.min(n,r),s),a=i-o;return e=a<=0?0:i===n?(r-s)/a%6:i===r?2+(s-n)/a:4+(n-r)/a+4,e/=6,[360*(e%=1),100*a,100*(a<1?o/(1-a):0)]},zt.hsl.hcg=function(t){var e=t[1]/100,n=t[2]/100,r=1,s=0;return(r=n<.5?2*e*n:2*e*(1-n))<1&&(s=(n-.5*r)/(1-r)),[t[0],100*r,100*s]},zt.hsv.hcg=function(t){var e=t[1]/100,n=t[2]/100,r=e*n,s=0;return r<1&&(s=(n-r)/(1-r)),[t[0],100*r,100*s]},zt.hcg.rgb=function(t){var e=t[0]/360,n=t[1]/100,r=t[2]/100;if(0===n)return[255*r,255*r,255*r];var s,i=[0,0,0],o=e%1*6,a=o%1,c=1-a;switch(Math.floor(o)){case 0:i[0]=1,i[1]=a,i[2]=0;break;case 1:i[0]=c,i[1]=1,i[2]=0;break;case 2:i[0]=0,i[1]=1,i[2]=a;break;case 3:i[0]=0,i[1]=c,i[2]=1;break;case 4:i[0]=a,i[1]=0,i[2]=1;break;default:i[0]=1,i[1]=0,i[2]=c}return s=(1-n)*r,[255*(n*i[0]+s),255*(n*i[1]+s),255*(n*i[2]+s)]},zt.hcg.hsv=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e),r=0;return n>0&&(r=e/n),[t[0],100*r,100*n]},zt.hcg.hsl=function(t){var e=t[1]/100,n=t[2]/100*(1-e)+.5*e,r=0;return n>0&&n<.5?r=e/(2*n):n>=.5&&n<1&&(r=e/(2*(1-n))),[t[0],100*r,100*n]},zt.hcg.hwb=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e);return[t[0],100*(n-e),100*(1-n)]},zt.hwb.hcg=function(t){var e=t[1]/100,n=1-t[2]/100,r=n-e,s=0;return r<1&&(s=(n-r)/(1-r)),[t[0],100*r,100*s]},zt.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]},zt.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]},zt.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]},zt.gray.hsl=zt.gray.hsv=function(t){return[0,0,t[0]]},zt.gray.hwb=function(t){return[0,100,t[0]]},zt.gray.cmyk=function(t){return[0,0,0,t[0]]},zt.gray.lab=function(t){return[t[0],0,0]},zt.gray.hex=function(t){var e=255&Math.round(t[0]/100*255),n=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(n.length)+n},zt.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]};var $t=Bt.exports;function Xt(t){var e=function(){for(var t={},e=Object.keys($t),n=e.length,r=0;r<n;r++)t[e[r]]={distance:-1,parent:null};return t}(),n=[t];for(e[t].distance=0;n.length;)for(var r=n.pop(),s=Object.keys($t[r]),i=s.length,o=0;o<i;o++){var a=s[o],c=e[a];-1===c.distance&&(c.distance=e[r].distance+1,c.parent=r,n.unshift(a))}return e}function Ht(t,e){return function(n){return e(t(n))}}function Jt(t,e){for(var n=[e[t].parent,t],r=$t[e[t].parent][t],s=e[t].parent;e[s].parent;)n.unshift(e[s].parent),r=Ht($t[e[s].parent][s],r),s=e[s].parent;return r.conversion=n,r}var Kt=Bt.exports,Yt=function(t){for(var e=Xt(t),n={},r=Object.keys(e),s=r.length,i=0;i<s;i++){var o=r[i];null!==e[o].parent&&(n[o]=Jt(o,e))}return n},Qt={};Object.keys(Kt).forEach((function(t){Qt[t]={},Object.defineProperty(Qt[t],"channels",{value:Kt[t].channels}),Object.defineProperty(Qt[t],"labels",{value:Kt[t].labels});var e=Yt(t);Object.keys(e).forEach((function(n){var r=e[n];Qt[t][n]=function(t){var e=function(e){if(null==e)return e;arguments.length>1&&(e=Array.prototype.slice.call(arguments));var n=t(e);if("object"==typeof n)for(var r=n.length,s=0;s<r;s++)n[s]=Math.round(n[s]);return n};return"conversion"in t&&(e.conversion=t.conversion),e}(r),Qt[t][n].raw=function(t){var e=function(e){return null==e?e:(arguments.length>1&&(e=Array.prototype.slice.call(arguments)),t(e))};return"conversion"in t&&(e.conversion=t.conversion),e}(r)}))}));var Wt=Qt,Zt=Mt.exports,te=Wt,ee=[].slice,ne=["keyword","gray","hex"],re={};Object.keys(te).forEach((function(t){re[ee.call(te[t].labels).sort().join("")]=t}));var se={};function ie(t,e){if(!(this instanceof ie))return new ie(t,e);if(e&&e in ne&&(e=null),e&&!(e in te))throw new Error("Unknown model: "+e);var n,r;if(null==t)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(t instanceof ie)this.model=t.model,this.color=t.color.slice(),this.valpha=t.valpha;else if("string"==typeof t){var s=Zt.get(t);if(null===s)throw new Error("Unable to parse color from string: "+t);this.model=s.model,r=te[this.model].channels,this.color=s.value.slice(0,r),this.valpha="number"==typeof s.value[r]?s.value[r]:1}else if(t.length){this.model=e||"rgb",r=te[this.model].channels;var i=ee.call(t,0,r);this.color=ue(i,r),this.valpha="number"==typeof t[r]?t[r]:1}else if("number"==typeof t)t&=16777215,this.model="rgb",this.color=[t>>16&255,t>>8&255,255&t],this.valpha=1;else{this.valpha=1;var o=Object.keys(t);"alpha"in t&&(o.splice(o.indexOf("alpha"),1),this.valpha="number"==typeof t.alpha?t.alpha:0);var a=o.sort().join("");if(!(a in re))throw new Error("Unable to parse color from object: "+JSON.stringify(t));this.model=re[a];var c=te[this.model].labels,u=[];for(n=0;n<c.length;n++)u.push(t[c[n]]);this.color=ue(u)}if(se[this.model])for(r=te[this.model].channels,n=0;n<r;n++){var f=se[this.model][n];f&&(this.color[n]=f(this.color[n]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&&Object.freeze(this)}function oe(t,e,n){return(t=Array.isArray(t)?t:[t]).forEach((function(t){(se[t]||(se[t]=[]))[e]=n})),t=t[0],function(r){var s;return arguments.length?(n&&(r=n(r)),(s=this[t]()).color[e]=r,s):(s=this[t]().color[e],n&&(s=n(s)),s)}}function ae(t){return function(e){return Math.max(0,Math.min(t,e))}}function ce(t){return Array.isArray(t)?t:[t]}function ue(t,e){for(var n=0;n<e;n++)"number"!=typeof t[n]&&(t[n]=0);return t}function fe(t){return null==t}function he(t){return"object"==typeof t&&!!t}function le(t){return t/Math.PI*180}function de(t){return Math.sign?Math.sign(t):0===(t=+t)||isNaN(t)?Number(t):t>0?1:-1}ie.prototype={toString:function(){return this.string()},toJSON:function(){return this[this.model]()},string:function(t){var e=this.model in Zt.to?this:this.rgb(),n=1===(e=e.round("number"==typeof t?t:1)).valpha?e.color:e.color.concat(this.valpha);return Zt.to[e.model](n)},percentString:function(t){var e=this.rgb().round("number"==typeof t?t:1),n=1===e.valpha?e.color:e.color.concat(this.valpha);return Zt.to.rgb.percent(n)},array:function(){return 1===this.valpha?this.color.slice():this.color.concat(this.valpha)},object:function(){for(var t={},e=te[this.model].channels,n=te[this.model].labels,r=0;r<e;r++)t[n[r]]=this.color[r];return 1!==this.valpha&&(t.alpha=this.valpha),t},unitArray:function(){var t=this.rgb().color;return t[0]/=255,t[1]/=255,t[2]/=255,1!==this.valpha&&t.push(this.valpha),t},unitObject:function(){var t=this.rgb().object();return t.r/=255,t.g/=255,t.b/=255,1!==this.valpha&&(t.alpha=this.valpha),t},round:function(t){return t=Math.max(t||0,0),new ie(this.color.map(function(t){return function(e){return function(t,e){return Number(t.toFixed(e))}(e,t)}}(t)).concat(this.valpha),this.model)},alpha:function(t){return arguments.length?new ie(this.color.concat(Math.max(0,Math.min(1,t))),this.model):this.valpha},red:oe("rgb",0,ae(255)),green:oe("rgb",1,ae(255)),blue:oe("rgb",2,ae(255)),hue:oe(["hsl","hsv","hsl","hwb","hcg"],0,(function(t){return(t%360+360)%360})),saturationl:oe("hsl",1,ae(100)),lightness:oe("hsl",2,ae(100)),saturationv:oe("hsv",1,ae(100)),value:oe("hsv",2,ae(100)),chroma:oe("hcg",1,ae(100)),gray:oe("hcg",2,ae(100)),white:oe("hwb",1,ae(100)),wblack:oe("hwb",2,ae(100)),cyan:oe("cmyk",0,ae(100)),magenta:oe("cmyk",1,ae(100)),yellow:oe("cmyk",2,ae(100)),black:oe("cmyk",3,ae(100)),x:oe("xyz",0,ae(100)),y:oe("xyz",1,ae(100)),z:oe("xyz",2,ae(100)),l:oe("lab",0,ae(100)),a:oe("lab",1),b:oe("lab",2),keyword:function(t){return arguments.length?new ie(t):te[this.model].keyword(this.color)},hex:function(t){return arguments.length?new ie(t):Zt.to.hex(this.rgb().round().color)},rgbNumber:function(){var t=this.rgb().color;return(255&t[0])<<16|(255&t[1])<<8|255&t[2]},luminosity:function(){for(var t=this.rgb().color,e=[],n=0;n<t.length;n++){var r=t[n]/255;e[n]=r<=.03928?r/12.92:Math.pow((r+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),n=t.luminosity();return e>n?(e+.05)/(n+.05):(n+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},isDark:function(){var t=this.rgb().color;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},isLight:function(){return!this.isDark()},negate:function(){for(var t=this.rgb(),e=0;e<3;e++)t.color[e]=255-t.color[e];return t},lighten:function(t){var e=this.hsl();return e.color[2]+=e.color[2]*t,e},darken:function(t){var e=this.hsl();return e.color[2]-=e.color[2]*t,e},saturate:function(t){var e=this.hsl();return e.color[1]+=e.color[1]*t,e},desaturate:function(t){var e=this.hsl();return e.color[1]-=e.color[1]*t,e},whiten:function(t){var e=this.hwb();return e.color[1]+=e.color[1]*t,e},blacken:function(t){var e=this.hwb();return e.color[2]+=e.color[2]*t,e},grayscale:function(){var t=this.rgb().color,e=.3*t[0]+.59*t[1]+.11*t[2];return ie.rgb(e,e,e)},fade:function(t){return this.alpha(this.valpha-this.valpha*t)},opaquer:function(t){return this.alpha(this.valpha+this.valpha*t)},rotate:function(t){var e=this.hsl(),n=e.color[0];return n=(n=(n+t)%360)<0?360+n:n,e.color[0]=n,e},mix:function(t,e){if(!t||!t.rgb)throw new Error(\'Argument to "mix" was not a Color instance, but rather an instance of \'+typeof t);var n=t.rgb(),r=this.rgb(),s=void 0===e?.5:e,i=2*s-1,o=n.alpha()-r.alpha(),a=((i*o==-1?i:(i+o)/(1+i*o))+1)/2,c=1-a;return ie.rgb(a*n.red()+c*r.red(),a*n.green()+c*r.green(),a*n.blue()+c*r.blue(),n.alpha()*s+r.alpha()*(1-s))}},Object.keys(te).forEach((function(t){if(-1===ne.indexOf(t)){var e=te[t].channels;ie.prototype[t]=function(){if(this.model===t)return new ie(this);if(arguments.length)return new ie(arguments,t);var n="number"==typeof arguments[e]?e:this.valpha;return new ie(ce(te[this.model][t].raw(this.color)).concat(n),t)},ie[t]=function(n){return"number"==typeof n&&(n=ue(ee.call(arguments),e)),new ie(n,t)}}}));const ye=[1,1,1,1,2,2,3,0];function me(t){const e=t.length;let n="";for(let r=0;r<e;){let s=t[r++];if(128&s){let n=ye[s>>3&7];if(!(64&s)||!n||r+n>e)return null;for(s&=63>>n;n>0;n-=1){const e=t[r++];if(128!=(192&e))return null;s=s<<6|63&e}}n+=String.fromCharCode(s)}return n}new Array(3),new Array(3);const be=[1/6378137,1/6378137,1/6356752.314245179],pe=[1/40680631590769,1/40680631590769,1/40408299984661.445],we=new Array(3),ge=new Array(3),ve=new Array(3);function Me(t,e){const n=pe,r=function(t,e,n,r,s){const i=e[0],o=e[1],a=e[2],c=n[0],u=n[1],f=n[2],h=i*i*c*c,l=o*o*u*u,d=a*a*f*f,y=h+l+d,m=Math.sqrt(1/y),p=b(Te,e,m);if(y<s)return isFinite(m)?p:void 0;const w=r[0],g=r[1],v=r[2],M=Ae;M[0]=p[0]*w*2,M[1]=p[1]*g*2,M[2]=p[2]*v*2;let T,A,_,O,x,S,I,k,E,C,U,F=(1-m)*_e(e)/(.5*_e(M)),N=0;do{F-=N,_=1/(1+F*w),O=1/(1+F*g),x=1/(1+F*v),S=_*_,I=O*O,k=x*x,E=S*_,C=I*O,U=k*x,T=h*S+l*I+d*k-1,A=h*E*w+l*C*g+d*U*v;N=T/(-2*A)}while(Math.abs(T)>1e-12);return t[0]=i*_,t[1]=o*O,t[2]=a*x,t}(we,e,be,n,.1);let s=T(ge,r,n);s=function(t,e){const n=e[0],r=e[1],s=e[2];let i=n*n+r*r+s*s;i>0&&(i=Math.sqrt(i),t[0]=e[0]/i,t[1]=e[1]/i,t[2]=e[2]/i);return t}(s,s);const i=M(ve,e,r),o=Math.atan2(s[1],s[0]),a=Math.asin(s[2]),c=de(w(i,e))*_e(i);return t[0]=le(o),t[1]=le(a),t[2]=c,t}const Te=new Array(3),Ae=new Array(3);function _e(t){return f(t)}function Oe(t,e,n,r){n=n||0,r=r||n;const s=Math.abs(t-e);return s<=r||s<=n*Math.max(Math.abs(t),Math.abs(e))}function xe(t,e){let n="";for(let r=0;r<4;r++){const s=t.getUint8(e+r);n+=String.fromCharCode(s)}return n}const Se="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;function Ie(t,e,n){const r=new Uint8Array(t,e,n);return Se?JSON.parse(Se.decode(r)):JSON.parse(me(r))}function ke(t,e,n){const r=new Uint8Array(t,e,n);return Se?JSON.parse(Se.decode(r)):JSON.parse(me(r))}function Ee(t,e,n){return{offset:e,byteLength:n}}function Ce(t,e,n,r){const{byteOffset:s,componentType:i,type:o}=t,{ctor:a,type:c}=function(t){return Ne[t]}(i||"UNSIGNED_SHORT"),u=function(t){if(!t)return 1;return Fe[t]}(o);return{byteStride:0,byteOffset:s+n,itemSize:u,count:r*u,componentType:c,array:new a(e,n+s,r*u)}}function Ue(t,e,n,r){const s=Ce(t,e,n,r);return s.array.buffer.byteLength!==e.byteLength&&(s.array=s.array.slice()),s}const Fe={"SCALAR":1,"VEC2":2,"VEC3":3,"VEC4":4};const Ne={"BYTE":{ctor:Int8Array,type:5120,name:"Int8Array"},"UNSIGNED_BYTE":{ctor:Uint8Array,type:5121,name:"Uint8Array"},"SHORT":{ctor:Int16Array,type:5122,name:"Int16Array"},"UNSIGNED_SHORT":{ctor:Uint16Array,type:5123,name:"Uint16Array"},"INT":{ctor:Int32Array,type:5124,name:"Int32Array"},"UNSIGNED_INT":{ctor:Uint32Array,type:5125,name:"Uint32Array"},"FLOAT":{ctor:Float32Array,type:5126,name:"Float32Array"},"DOUBLE":{ctor:Float64Array,type:5126,name:"Float64Array"}};function Pe(t){for(const e in Ne)if(t===Ne[e].ctor)return Ne[e].type;throw new Error("unrecognized ctor:"+t)}function Be(t,e,n,r){const s=t,i=e.length/3;for(let t=0;t<i;t++)s[3*t]=e[3*t]/65535*r[0]+n[0],s[3*t+1]=e[3*t+1]/65535*r[1]+n[1],s[3*t+2]=e[3*t+2]/65535*r[2]+n[2];return s}function De(t,e,n){const r=t.getUint32(12,!0),s=t.getUint32(16,!0),i=t.getUint32(20,!0),o=t.getUint32(24,!0),a=t.buffer;let c,u={},f={},h=null;r>0&&(u=Ie(a,e,r),e+=r),s>0&&(c=function(t,e,n){return{offset:e,byteLength:n}}(0,e,s),e+=s),i>0&&(f=ke(a,e,i),e+=i);const l=Ee(0,e,o);return h=a.slice(l.offset,l.offset+l.byteLength),n.push(h),{featureTable:u,featureTableBin:c,batchTable:f,batchTableBin:h}}const Re={up:{south:"east",north:"west",west:"south",east:"north"},down:{south:"west",north:"east",west:"north",east:"south"},south:{up:"west",down:"east",west:"down",east:"up"},north:{up:"east",down:"west",west:"up",east:"down"},west:{up:"north",down:"south",north:"down",south:"up"},east:{up:"south",down:"north",north:"up",south:"down"}},Le={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},ze={},je={east:[],north:[],up:[],west:[],south:[],down:[]};let Ve=[],qe=[],Ge=[];const $e=[0,0,0];const Xe=function(t,e){const n=Re[t][e];let r;const s=t+e;return ze[s]?r=ze[s]:(r=function(r,s,i){if(function(t,e){var n=t[0],r=t[1],s=t[2],i=e[0],o=e[1],a=e[2];return Math.abs(n-i)<=1e-6*Math.max(1,Math.abs(n),Math.abs(i))&&Math.abs(r-o)<=1e-6*Math.max(1,Math.abs(r),Math.abs(o))&&Math.abs(s-a)<=1e-6*Math.max(1,Math.abs(s),Math.abs(a))}(r,$e))l(Ve,Le[t]),l(qe,Le[e]),l(Ge,Le[n]);else if(Oe(r[0],0,1e-14)&&Oe(r[1],0,1e-14)){const s=de(r[2]);l(Ve,Le[t]),"east"!==t&&"west"!==t&&b(Ve,Ve,s),l(qe,Le[e]),"east"!==e&&"west"!==e&&b(qe,qe,s),l(Ge,Le[n]),"east"!==n&&"west"!==n&&b(Ge,Ge,s)}else{!function(t,e){m(e,t,pe),p(e,e)}(r,je.up);const s=je.up,i=je.east;i[0]=-r[1],i[1]=r[0],i[2]=0,p(je.east,i),g(je.north,s,i),b(je.down,je.up,-1),b(je.west,je.east,-1),b(je.south,je.north,-1),Ve=je[t],qe=je[e],Ge=je[n]}return i[0]=Ve[0],i[1]=Ve[1],i[2]=Ve[2],i[3]=0,i[4]=qe[0],i[5]=qe[1],i[6]=qe[2],i[7]=0,i[8]=Ge[0],i[9]=Ge[1],i[10]=Ge[2],i[11]=0,i[12]=r[0],i[13]=r[1],i[14]=r[2],i[15]=1,i},ze[s]=r),r}("east","north"),He={5120:Int8Array,5122:Int16Array,5124:Int32Array,5121:Uint8Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function Je(t){for(const e in He)if(t===He[e])return+e;throw new Error("unrecognized ctor:"+t)}\n/*!\n * @maptalks/gl v0.95.0\n * LICENSE : UNLICENSED\n * (c) 2016-2023 maptalks.com\n */const Ke=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof undefined)return global;throw new Error("unable to locate global object")},Ye=Ke(),Qe=Ye.gl_trans__coders=Ye.gl_trans__coders||{};Qe.inject=function(t){const e=t.toString(),n=e.indexOf("{")+1,r=e.substring(0,n),s=Ye.gl_trans__coders=Ye.gl_trans__coders||{};let i=`${r}\\n const _____getGlobal = ${Ke.toString()};\\n const g___lobals = _____getGlobal()\\n const tran_____scoders = g___lobals[\'gl_trans__coders\'] = g___lobals[\'gl_trans__coders\'] || {};`;for(const t in s)"inject"!==t&&"getTranscoder"!==t&&"registerTranscoder"!==t&&(i+=\'tran_____scoders["\'+t+\'"] =\'+s[t].toString()+"\\n;");return i+="\\n"+e.substring(r.length),i},Qe.registerTranscoder=function(t,e){Qe[t]=e},Qe.getTranscoder=function(t){return Qe[t]};let We=null;function Ze(){return We||(We={"image/crn":Qe.crn&&Qe.crn(),"image/ktx2":Qe.ktx2&&Qe.ktx2(),"image/cttf":Qe.ktx2&&Qe.ktx2(),"draco":Qe.draco&&Qe.draco()}),We}class tn{constructor(t,e,n){this.s=t,this.et=e||dt,this.i=n,this.nt=Ze()}static createEmptyB3DM(){return{featureTable:null,batchTable:null,gltf:{}}}load(t,e,n=0,r=0,s){return e?(r||(r=e.byteLength),this.rt(t,e,n,r,s)):J.getArrayBuffer(t,{}).then(e=>{const s=e.data;return r||(r=s.byteLength),this.rt(t,s,n,r)})}rt(t,e,n,r,s){const i=s&&s.maxTextureSize,o=this.st(e,n,r,t);if(o.error)return Promise.resolve(o);const a=t.substring(0,t.lastIndexOf("/")),c=new this.et(a,o.glb,{transferable:!0,requestImage:this.s,decoders:this.nt,supportedFormats:this.i,maxTextureSize:i});return c.load({skipAttributeTransform:!1}).then(e=>{e.url=`${t}-${n}-${r}`;const s=c.transferables;for(let t=0;t<o.transferables.length;t++)s.indexOf(o.transferables[t])<0&&s.push(o.transferables[t]);return{magic:"b3dm",count:o.count,transferables:s,featureTable:o.featureTable,batchTable:o.batchTable,batchTableBin:o.batchTableBin,gltf:e}})}st(t,e,n,r){const s=new DataView(t,e,n),i=s.getUint32(4,!0);if(1!==i){const t="Unsupported b3dm version: "+i+", url:"+r;return console.warn(t),{error:t}}if(s.getUint32(8,!0)!==s.byteLength){const t="Length in b3dm header is inconsistent with b3dm\'s byte length, url: "+r;return console.warn(t),{error:t}}let o,a=s.getUint32(12,!0),c=s.getUint32(16,!0),u=s.getUint32(20,!0),f=s.getUint32(24,!0),h=28+e;u>=570425344?(h-=8,o=a,u=c,f=0,a=0,c=0):f>=570425344&&(h-=4,o=u,u=a,f=c,a=0,c=0);const l=[t];let d,y,m;if(a>0?(d=Ie(t,h,a),h+=a,o=d.BATCH_LENGTH):d={"BATCH_LENGTH":o},c>0&&(h+=c),u>0&&(y=ke(t,h,u),h+=u,f>0)){const e=Ee(0,h,f);m=t.slice(e.offset,e.offset+e.byteLength),h+=f,l.push(m)}const b=d.BATCH_LENGTH,p={};if(d&&d.BATCH_ID){p.BATCH_ID=Ue(d.BATCH_ID,t,(void 0).offset,b);const e=p.BATCH_ID.array&&p.BATCH_ID.array.buffer;e&&l.indexOf(e)<0&&l.push(e)}return{count:o,transferables:l,featureTable:d,batchTable:y,batchTableBin:m,b3dm:p,glb:{buffer:t,byteOffset:h,byteLength:s.byteLength+s.byteOffset-h}}}it(){return null}}class en{constructor(t,e,n,r){this.s=t,this.et=e||dt,this.i=n,this.nt=Ze(),this.ot=r}load(t,e,n=0,r=0,s){return e?(r||(r=e.byteLength),this.rt(t,e,n,r,s)):J.getArrayBuffer(t,{}).then(e=>{const s=e.data;return r||(r=s.byteLength),this.rt(t,s,n,r)})}rt(t,e,n,r,s){return this.ct(t,e,n,r,s).then(({gltf:s,transferables:i})=>{const o=this.ut(e,n,r,t);if(o.error)return Promise.resolve(o);for(let t=0;t<i.length;t++)-1===o.transferables.indexOf(i[t])&&o.transferables.push(i[t]);return delete s.transferables,Promise.resolve({magic:"i3dm",count:o.count,transferables:o.transferables,featureTable:o.featureTable,batchTable:o.batchTable,batchTableBin:o.batchTableBin,i3dm:o.i3dm,gltf:s})})}ct(t,e,n,r,s){const i=s&&s.maxTextureSize,o={transferable:!0,requestImage:this.s,decoders:this.nt,supportedFormats:this.i,maxTextureSize:i},a=new DataView(e,n,r),c=32+a.getUint32(12,!0)+a.getUint32(16,!0)+a.getUint32(20,!0)+a.getUint32(24,!0);if(0===a.getUint32(28,!0)){let r=me(new Uint8Array(e,c+n,a.byteLength-c));-1==r.indexOf("://")&&(r=t.substring(0,t.lastIndexOf("/"))+"/"+r);return r.indexOf(".glb")>0?J.getArrayBuffer(r,{}).then(t=>this.ft(r,{buffer:t.data,byteOffset:0},o)):J.getJSON(r,{}).then(t=>this.ft(r,t,o))}{const r={buffer:e,byteOffset:c+n,byteLength:a.byteLength-c};return this.ft(t,r,o)}}ft(t,e,n){const r=t.substring(0,t.lastIndexOf("/")),s=new this.et(r,e,n);return s.load({skipAttributeTransform:!0}).then(n=>{let r=0,i=0;return e.buffer&&(r=e.byteOffset||0,i=e.byteLength||0),n.url=`${t}-${r}-${i}`,{transferables:s.transferables,gltf:n}})}ut(t,e,n,r){const s=new DataView(t,e,n),i=s.getUint32(4,!0);if(1!==i){const t="Unsupported pnts version: "+i+", url:"+r;return console.warn(t),{error:t}}if(s.getUint32(8,!0)!==s.byteLength){const t="Length in pnts header is inconsistent with pnts\'s byte length, url: "+r;return console.warn(t),{error:t}}const o=[t],{featureTable:a,featureTableBin:c,batchTable:u,batchTableBin:f}=De(s,32+e,o),h={},l=a.INSTANCES_LENGTH;if(a.POSITION){const{byteOffset:e}=a.POSITION;h.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:l,componentType:5126,array:new Float32Array(t,e+c.offset,3*l).slice()},o.push(h.POSITION.array.buffer)}else if(a.POSITION_QUANTIZED){const e=a.QUANTIZED_VOLUME_OFFSET,n=a.QUANTIZED_VOLUME_SCALE,{byteOffset:r}=a.POSITION_QUANTIZED;h.POSITION={byteStride:12,byteOffset:0,itemSize:3,count:l,componentType:5126,array:this.ht(new Uint16Array(t,r+c.offset,3*l),e,n)},o.push(h.POSITION.array.buffer)}if(a.BATCH_ID){h.BATCH_ID=Ue(a.BATCH_ID,t,c.offset,l);const e=h.BATCH_ID.array&&h.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}if(a.NORMAL_UP){let{byteOffset:e}=a.NORMAL_UP;h.NORMAL_UP={byteStride:0,byteOffset:0,itemSize:3,count:l,componentType:5126,array:new Float32Array(t,e+c.offset,3*l).slice()},o.push(h.NORMAL_UP.array.buffer),e=a.NORMAL_RIGHT.byteOffset,h.NORMAL_RIGHT={byteStride:0,byteOffset:0,itemSize:3,count:l,componentType:5126,array:new Float32Array(t,e+c.offset,3*l).slice()},o.push(h.NORMAL_RIGHT.array.buffer)}else if(a.NORMAL_UP_OCT32P){let{byteOffset:e}=a.NORMAL_UP_OCT32P;h.NORMAL_UP={byteStride:0,byteOffset:0,itemSize:3,count:l,componentType:5126,array:this.lt(new Uint16Array(t,e+c.offset,2*l))},o.push(h.NORMAL_UP.array.buffer),e=a.NORMAL_RIGHT_OCT32P.byteOffset,h.NORMAL_RIGHT={byteStride:0,byteOffset:0,itemSize:3,count:l,componentType:5126,array:this.lt(new Uint16Array(t,e+c.offset,2*l))},o.push(h.NORMAL_RIGHT.array.buffer)}if(a.SCALE){const{byteOffset:e}=a.SCALE;h.SCALE={byteStride:0,byteOffset:0,itemSize:1,count:l,componentType:5126,array:new Float32Array(t,e+c.offset,l).slice()},o.push(h.SCALE.array.buffer)}else if(a.SCALE_NON_UNIFORM){const{byteOffset:e}=a.SCALE_NON_UNIFORM;h.SCALE_NON_UNIFORM={byteStride:0,byteOffset:0,itemSize:3,count:l,componentType:5126,array:new Float32Array(t,e+c.offset,3*l).slice()},o.push(h.SCALE_NON_UNIFORM.array.buffer)}return{count:l,batchTable:u,batchTableBin:f,featureTable:a,i3dm:h,transferables:o}}lt(t){const e=t.length/2,n=new Float32Array(3*e),r=[];for(let s=0;s<e;s++)nn(r,t[2*s],t[2*s+1],65535),n[3*s]=r[0],n[3*s+1]=r[1],n[3*s+2]=r[2];return n}ht(t,e,n){return Be(new Float32Array(t.length),t,e,n)}it(){return null}}function nn(t,e,n,r){if(t[0]=rn(e,r),t[1]=rn(n,r),t[2]=1-(Math.abs(t[0])+Math.abs(t[1])),t[2]<0){const e=t[0];t[0]=(1-Math.abs(t[1]))*sn(e),t[1]=(1-Math.abs(e))*sn(t[1])}return p(t,t)}function rn(t,e){return function(t,e,n){return t<e?e:t>n?n:t}(t,0,e=function(t,e){if(null!=t)return t;return e}(e,255))/e*2-1}function sn(t){return t<0?-1:1}class on{constructor(){}load(t,e,n=0,r=0){return e?(r||(r=e.byteLength),this.rt(t,e,n,r)):J.getArrayBuffer(t,{}).then(e=>{const s=e.data;return r||(r=s.byteLength),this.rt(t,s,n,r)})}rt(t,e,n,r){return this.dt(e,n,r,t).then(t=>t.error?t:{magic:"pnts",count:t.count,transferables:t.transferables,featureTable:t.featureTable,batchTable:t.batchTable,batchTableBin:t.batchTableBin,pnts:t.pnts})}dt(t,e,n,r){const s=new DataView(t,e,n),i=s.getUint32(4,!0);if(1!==i){const t="Unsupported pnts version: "+i+", url:"+r;return console.warn(t),{error:t}}if(s.getUint32(8,!0)!==s.byteLength){const t="Length in pnts header is inconsistent with pnts\'s byte length, url: "+r;return console.warn(t),{error:t}}const o=[t],{featureTable:a,featureTableBin:c,batchTable:u,batchTableBin:f}=De(s,e+28,o),h=a.QUANTIZED_VOLUME_OFFSET,l=a.QUANTIZED_VOLUME_SCALE,d=a.POINTS_LENGTH;let y,m={};if(a.extensions&&a.extensions["3DTILES_draco_point_compression"]){m=a.extensions["3DTILES_draco_point_compression"],y=new DataView(t,m.byteOffset+c.offset,m.byteLength);const e={attributes:m.properties,useUniqueIDs:!1};return this.yt||(this.yt=Ze().draco),this.yt(y,e).then(e=>{const n=e.attributes;!a.POSITION&&!a.POSITION_QUANTIZED||n.POSITION||n.POSITION_QUANTIZED||(n.POSITION=a.POSITION,n.POSITION_QUANTIZED=a.POSITION_QUANTIZED),!(a.RGB||a.RGBA||a.RGB565)||n.RGB||n.RGBA||n.RGB565||(n.RGB=a.RGB,n.RGBA=a.RGBA,n.RGB565=a.RGB565),!a.NORMAL&&!a.NORMAL_OCT16P||n.NORMAL||n.NORMAL_OCT16P||(n.NORMAL=a.NORMAL,n.NORMAL_OCT16P=a.NORMAL_OCT16P);const r=this.bt(t,e.attributes,c.offset,d,o,h,l);if(e.attributes.BATCH_ID){const t=e.attributes.BATCH_ID.array;r.BATCH_ID={byteStride:0,byteOffset:0,itemSize:1,count:t.length,componentType:Pe(t.constructor),array:t},o.push(t.buffer)}else if(a.BATCH_ID||Object.keys(u).length){a.BATCH_ID?r.BATCH_ID=Ue(a.BATCH_ID,t,c.offset,d):r.BATCH_ID=an(d);const e=r.BATCH_ID.array&&r.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}return{count:d,batchTable:u,batchTableBin:f,featureTable:a,pnts:r,transferables:o}})}const b=this.bt(t,a,c.offset,d,o,h,l);if(a.BATCH_ID||Object.keys(u).length){a.BATCH_ID?b.BATCH_ID=Ue(a.BATCH_ID,t,c.offset,d):b.BATCH_ID=an(d);const e=b.BATCH_ID.array&&b.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}return Promise.resolve({count:d,batchTable:u,batchTableBin:f,featureTable:a,pnts:b,transferables:o})}bt(t,e,n,r,s,i,o){const a={};if(e.POSITION){let{byteOffset:i,array:o}=e.POSITION;i=i||0;const c=o?0:n;if(!o){const e=t.slice(i+c,i+c+3*r*4);o=new Float32Array(e)}a.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:r,componentType:5126,array:o},s.push(o.buffer)}else if(e.POSITION_QUANTIZED){let{byteOffset:c}=e.POSITION_QUANTIZED;const{array:u}=e.POSITION_QUANTIZED;c=c||0;const f=u?0:n;a.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:r,componentType:5126,array:this.ht(u||new Uint16Array(t,c+f,3*r),i,o)},s.push(a.POSITION.array.buffer)}if(e.RGBA){let{byteOffset:i,array:o}=e.RGBA;i=i||0;const c=o?0:n;if(!o){const e=t.slice(i+c,i+c+4*r);o=new Uint8Array(e)}a.RGBA={byteStride:0,byteOffset:0,itemSize:4,count:r,componentType:5121,array:o},s.push(o.buffer)}else if(e.RGB){let{byteOffset:i,array:o}=e.RGB;i=i||0;const c=o?0:n;if(!o){const e=t.slice(i+c,i+c+3*r);o=new Uint8Array(e)}a.RGB={byteStride:0,byteOffset:0,itemSize:3,count:r,componentType:5121,array:o},s.push(o.buffer)}else if(e.RGB565){let{byteOffset:i,array:o}=e.RGB565;i=i||0;const c=o?0:n;if(!o){const e=t.slice(i+c,i+c+2*r);o=new Uint16Array(e)}a.RGB565={byteStride:0,byteOffset:0,itemSize:1,count:r,componentType:5123,array:o},s.push(o.buffer)}if(e.NORMAL){let{byteOffset:i,array:o}=e.NORMAL;i=i||0;const c=o?0:n;if(!o){const e=t.slice(i+c,i+c+3*r*4);o=new Float32Array(e)}a.NORMAL={byteStride:0,byteOffset:0,itemSize:3,count:r,componentType:5126,array:o},s.push(o.buffer)}else if(e.NORMAL_OCT16P){let{byteOffset:i,array:o}=e.NORMAL_OCT16P;i=i||0;const c=o?0:n;if(!o){const e=t.slice(i+c,i+c+2*r);o=new Uint8Array(e)}a.NORMAL_OCT16P={byteStride:0,byteOffset:0,itemSize:2,count:r,componentType:5121,array:o},s.push(o.buffer)}return a}ht(t,e,n){return Be(new Float32Array(t.length),t,e,n)}it(){return null}}function an(t){const e=(n=t)<256?Uint8Array:n<65536?Uint16Array:Uint32Array;var n;const r=new e(t);for(let e=0;e<t;e++)r[e]=e;return{byteStride:0,byteOffset:0,itemSize:1,count:t,componentType:Pe(e),array:r}}class cn{constructor(t,e,n,r){this.i=n,this.s=t,this.et=e||dt,this.ot=r}load(t,e,n=0,r=0,s){return e?this.rt(t,e,n,r,s):J.getArrayBuffer(t,{}).then(e=>{const s=e.data;return this.rt(t,s,n,r)})}rt(t,e,n,r,s){r||(r=e.byteLength);const i=this.pt(e,t,n,r),o=[];for(let n=0;n<i.length;n++){let r;if("b3dm"===i[n].magic)r=new tn(this.s,this.et,this.i);else if("i3dm"===i[n].magic)r=new en(this.s,this.et,this.i,this.ot);else if("pnts"===i[n].magic)r=new on;else{if("cmpt"!==i[n].magic){console.warn("Unsupported magic in CMPT tile:",i[n].magic);continue}r=new cn(this.s,this.et,this.i,this.ot)}o.push(r.load(t,e,i[n].offset,i[n].byteLength,s).then(t=>t))}return Promise.all(o).then(t=>({magic:"cmpt",tiles:t}))}pt(t,e,n,r){const s=new DataView(t,n,r),i=s.getUint32(4,!0);if(1!==i){const t="Unsupported cmpt version: "+i+", url:"+e;return console.warn(t),{error:t}}if(16===s.byteLength)return[];const o=[],a=s.getUint32(12,!0);let c=16;for(let e=0;e<a;e++){const e=xe(s,c),r=s.getUint32(c+8,!0);o.push({magic:e,buffer:t,offset:c+n,byteLength:r}),c+=r}return o}}function un(t,e){if(t.scenes&&t.scenes.length)for(let n=0,r=t.scenes.length;n<r;n++){const r=t.scenes[n].nodes;for(let n=0,s=r.length;n<s;n++){const s=[];bn(r[n],s,t,e)}}}const fn=[],hn=[],ln=[],dn=[0,0,0],yn=S([]),mn=[1,1,1];function bn(t,e,n,r){const c=e.slice(0);if(t.matrix)c.push(t.matrix);else if(t.rotation||t.translation||t.scale){const e=i(fn,t.translation||dn),n=a(hn,t.rotation||yn),r=o(ln,t.scale||mn);s(r,n,r);const u=s([],e,r);c.push(u)}if(t.children&&t.children.length)for(let e=0,s=t.children.length;e<s;e++)bn(t.children[e],c,n,r);if(void 0!==t.mesh){const e=t.mesh,s=n.meshes[e];if(s){const t=c.slice(0),i=s.primitives;for(let s=0,o=i.length;s<o;s++){const o=i[s];o&&(o.matrices=t,r(o,e,s,n))}}}}function pn(t,e){let{byteOffset:n,byteStride:r,count:s}=t;const{componentType:i,itemSize:o}=t,a=t.array.buffer,c=i?dt.getTypedArrayCtor(i):t.array.constructor;if(n=void 0===n?t.array.byteOffset:n,r=r||0,s=s||t.array.length/o,(!r||r===o*c.BYTES_PER_ELEMENT)&&n%c.BYTES_PER_ELEMENT==0){const t=new c(a,n,s*o);for(let r=0;r<s*o;r+=o){e(new c(t.buffer,n+r*c.BYTES_PER_ELEMENT,o),r/o)}return}const u=new Uint8Array(o*c.BYTES_PER_ELEMENT);r||(r=o*c.BYTES_PER_ELEMENT);for(let t=0;t<s;t++){const s=new Uint8Array(a,r*t+n,o*c.BYTES_PER_ELEMENT);u.set(s);e(new c(u.buffer),t),s.set(u)}}var wn=An("DXT1"),gn=An("DXT3"),vn=An("DXT5"),Mn=An("DX10"),Tn=function(t){var e,n,r=new Int32Array(t,0,31);if(542327876!==r[0])throw new Error("Invalid magic number in DDS header");if(4&!r[20])throw new Error("Unsupported format, must contain a FourCC code");var s=r[21];switch(s){case wn:e=8,n="dxt1";break;case gn:e=16,n="dxt3";break;case vn:e=16,n="dxt5";break;case 116:n="rgba32f";break;case Mn:var i=new Uint32Array(t.slice(128,148));n=i[0];var o=i[1];if(i[2],i[3],i[4],3!==o||2!==n)throw new Error("Unsupported DX10 texture format "+n);n="rgba32f";break;default:throw new Error("Unsupported FourCC code: "+(a=s,String.fromCharCode(255&a,a>>8&255,a>>16&255,a>>24&255)))}var a;var c=r[2],u=1;131072&c&&(u=Math.max(1,r[7]));var f=!1;512&r[28]&&(f=!0);var h,l=r[4],d=r[3],y=r[1]+4,m=l,b=d,p=[];s===Mn&&(y+=20);if(f)for(var w=0;w<6;w++){if("rgba32f"!==n)throw new Error("Only RGBA32f cubemaps are supported");l=m,d=b;for(var g=Math.log(l)/Math.log(2)+1,v=0;v<g;v++)h=l*d*16,p.push({offset:y,length:h,shape:[l,d]}),v<u&&(y+=h),l=Math.floor(l/2),d=Math.floor(d/2)}else for(v=0;v<u;v++)h=Math.max(4,l)/4*Math.max(4,d)/4*e,p.push({offset:y,length:h,shape:[l,d]}),y+=h,l=Math.floor(l/2),d=Math.floor(d/2);return{shape:[m,b],images:p,format:n,flags:c,cubemap:f}};function An(t){return t.charCodeAt(0)+(t.charCodeAt(1)<<8)+(t.charCodeAt(2)<<16)+(t.charCodeAt(3)<<24)}var _n=Math.abs,On=Math.sin,xn=Math.cos,Sn=Math.tan,In=Math.atan,kn=Math.atan2,En=Math.sqrt,Cn=Math.log,Un=Math.hypot,Fn=Math.sinh,Nn=Math.cosh;function Pn(t){var e,n,r,s,i,o,a=[],c=[],u=[],f=[];function h(t,e){for(var n,r=2*xn(2*e),s=t.length-1,i=t[s],o=0;--s>=0;)n=r*i-o+t[s],o=i,i=n;return e+n*On(2*e)}function l(t,e,n){for(var r,s,i=On(e),o=xn(e),a=Fn(n),c=Nn(n),u=2*o*c,f=-2*i*a,h=t.length-1,l=t[h],d=0,y=0,m=0;--h>=0;)r=y,s=d,l=u*(y=l)-r-f*(d=m)+t[h],m=f*y-s+u*d;return[(u=i*c)*l-(f=o*a)*m,u*m+f*l]}t.es,i=s=(r=t.es/(1+En(1-t.es)))/(2-r),a[0]=s*(2+s*(-2/3+s*(s*(116/45+s*(26/45+s*(-2854/675)))-2))),c[0]=s*(s*(2/3+s*(4/3+s*(-82/45+s*(32/45+s*(4642/4725)))))-2),i*=s,a[1]=i*(7/3+s*(s*(-227/45+s*(2704/315+s*(2323/945)))-1.6)),c[1]=i*(5/3+s*(-16/15+s*(-13/9+s*(904/315+s*(-1522/945))))),i*=s,a[2]=i*(56/15+s*(-136/35+s*(-1262/105+s*(73814/2835)))),c[2]=i*(-26/15+s*(34/21+s*(1.6+s*(-12686/2835)))),i*=s,a[3]=i*(4279/630+s*(-332/35+s*(-399572/14175))),c[3]=i*(1237/630+s*(s*(-24832/14175)-2.4)),i*=s,a[4]=i*(4174/315+s*(-144838/6237)),c[4]=i*(-734/315+s*(109598/31185)),i*=s,a[5]=i*(601676/22275),c[5]=i*(444337/155925),i=s*s,e=t.k0/(1+s)*(1+i*(1/4+i*(1/64+i/256))),u[0]=s*(s*(2/3+s*(-37/96+s*(1/360+s*(81/512+s*(-96199/604800)))))-.5),f[0]=s*(.5+s*(-2/3+s*(5/16+s*(41/180+s*(-127/288+s*(7891/37800)))))),u[1]=i*(-1/48+s*(-1/15+s*(437/1440+s*(-46/105+s*(1118711/3870720))))),f[1]=i*(13/48+s*(s*(557/1440+s*(281/630+s*(-1983433/1935360)))-.6)),i*=s,u[2]=i*(-17/480+s*(37/840+s*(209/4480+s*(-5569/90720)))),f[2]=i*(61/240+s*(-103/140+s*(15061/26880+s*(167603/181440)))),i*=s,u[3]=i*(-4397/161280+s*(11/504+s*(830251/7257600))),f[3]=i*(49561/161280+s*(-179/168+s*(6601661/7257600))),i*=s,u[4]=i*(-4583/161280+s*(108847/3991680)),f[4]=i*(34729/80640+s*(-3418889/1995840)),i*=s,u[5]=i*(-20648693/638668800),f[5]=.6650675310896665*i,o=h(c,t.phi0),n=-e*(o+function(t,e){var n,r=2*xn(e),s=t.length-1,i=t[s],o=0;for(;--s>=0;)n=r*i-o+t[s],o=i,i=n;return On(e)*n}(f,2*o)),t.fwd=function(t,r){var s,i,o,a,u,d=t.phi,y=t.lam;d=h(c,d),s=On(d),i=xn(d),a=On(y),o=xn(y),d=kn(s,o*i),y=kn(a*i,Un(s,i*o)),y=function(t){var e=_n(t);return e=function(t){var e=1+t,n=e-1;return 0===n?t:t*Cn(e)/n}(e*(1+e/(Un(1,e)+1))),t<0?-e:e}(Sn(y)),u=l(f,2*d,2*y),d+=u[0],y+=u[1],_n(y)<=2.623395162778?(r.y=e*d+n,r.x=e*y):r.x=r.y=1/0},t.inv=function(t,r){var s,i,o,c,f,d=t.y,y=t.x;d=(d-n)/e,_n(y/=e)<=2.623395162778?(f=l(u,2*d,2*y),d+=f[0],y+=f[1],y=In(Fn(y)),s=On(d),i=xn(d),c=On(y),o=xn(y),y=kn(c,o*i),d=kn(s*o,Un(c,o*i)),r.phi=h(a,d),r.lam=y):r.phi=r.lam=1/0}}const Bn=Math.PI/180,Dn=6378137*Math.PI/180,Rn={};function Ln(t,e,n,r){if("EPSG:3857"===n)return function(t,e){const n=85.0511287798,r=e[0],s=Math.max(Math.min(n,e[1]),-n);let i;i=0===s?0:Math.log(Math.tan((90+s)*Bn/2))/Bn;return t[0]=r*Dn,t[1]=i*Dn,t}(t,e);if(!n||"EPSG:9807"!==n.code&&"Traverse_Mercator"!==n.code){if("EPSG:4326"===n||"EPSG:4490"===n||"identity"===n)return zn(t,e);if("baidu"===n)return zn(t,e);throw new Error("unsupported projection:"+n)}{if(!(!r||4326===r.wkid))return function(t,e){return t[0]=e[0],t[1]=e[1],t}(t,e);const s=JSON.stringify(n);let i=Rn[s];return i||(i=Rn[s]=function(t){const e={a:6378137,es:.0066943799901413165,x0:fe(t.falseEasting)?5e5:t.falseEasting,y0:fe(t.falseNorthing)?0:t.falseNorthing,k0:t.scaleFactor||.9996,lam0:(t.centralMeridian||0)*jn,phi0:(t.latitudeOfOrigin||0)*jn,originLam0:t.startLongtitude||0,originPhi0:t.startLatitude||0};Pn(e);const n={lam:0,phi:0},r={};let s=0,i=0;(e.originLam0||e.originPhi0)&&(n.lam=e.originLam0*jn-e.lam0,n.phi=e.originPhi0*jn,e.fwd(n,r),s=e.a*r.x+e.x0,i=e.a*r.y+e.y0);return{project:function(t,o){n.lam=t[0]*jn-e.lam0,n.phi=t[1]*jn,e.fwd(n,r);const a=e.a*r.x+e.x0-s,c=e.a*r.y+e.y0-i;return o[0]=a,o[1]=c,o}}}(n)),i.project(e,t)}}function zn(t,e){return t[0]=e[0],t[1]=e[1],t}const jn=.017453292519943295;const Vn=r([]),qn=Ze().draco,Gn=Ze().ktx2,$n={"pbrMetallicRoughness":{"baseColorFactor":[.5,.5,.5,1],"metallicFactor":0,"roughnessFactor":.5}},Xn={"position":{name:"POSITION",accessor:{"componentType":5126,"type":"VEC3"}},"normal":{name:"NORMAL",accessor:{"componentType":5126,"type":"VEC3"}},"uv0":{name:"TEXCOORD_0",accessor:{"componentType":5126,"type":"VEC2"}},"color":{name:"COLOR_0",accessor:{"componentType":5121,"type":"VEC4"}},"uv-region":{name:"uvRegion",accessor:{"componentType":5123,"type":"VEC4"}},"feature-index":{name:"_BATCHID",accessor:{"componentType":5125,"type":"SCALAR"}},"faceRange":{name:"faceRange",accessor:{"componentType":5125,"type":"VEC2"}}};function Hn(t,e,n,s,i,o){const a=[],c=[],u=[];for(let e=0;e<t.meshes.length;e++){const{geometry:n,material:r}=t.meshes[e],s=J.getArrayBuffer(n.url,o);s.xhr.url=n.url,u.push(s.xhr);const i=s.then(t=>({buffer:t}));a.push(i);const f=[];if(tr(r,f),f.length){const t=f.map(t=>{const e=J.getArrayBuffer(t.url,o);return e.xhr.url=t.url,u.push(e.xhr),e.then(e=>e&&e.status?null:{buffer:e,mimeType:t.mimeType,format:t.format})});a.push(...t)}c[e]=f.length}const f=Promise.all(a).then(o=>{for(let t=0;t<o.length;t++)if(!o[t]||!o[t].buffer)return Promise.resolve(null);const a=[];let u=0;for(let t=0;t<c.length;t++){const e=c[t];a.push({geoBuffer:{data:o[u].buffer.data},textureBuffers:o.slice(u+1,e+u+1).map(t=>({data:t.buffer.data,mimeType:t.mimeType,format:t.format}))}),u+=1+e}return function(t,e,n,s,i,o){const a={asset:{generator:"i3s",version:"2.0"},extensions:{},scene:0,scenes:[{nodes:[]}],nodes:{},meshes:{},materials:[],skins:[],animations:null,textures:[],transferables:[]},c=[];for(let u=0;u<t.meshes.length;u++){let{material:f}=t.meshes[u];const{geometry:h}=t.meshes[u];let l;const d=e[u].geoBuffer.data;if(!d)continue;const y=or(d);l=y?Kn(a,u,h,d,t.transform,t.center,i,o):Qn(a,u,h,d,t.transform,t.center,i,o),c.push(l),a.nodes[u]={mesh:u,nodeIndex:u,matrix:r([])},a.scenes[0].nodes[u]=a.nodes[u],f||(f=$n);const m=Zn(u,a,f,e[u].textureBuffers,n,s);c.push(m)}return Promise.all(c).then(()=>({gltf:a,featureTable:{BATCH_LENGTH:0},transferables:a.transferables}))}(t,a,e,i,n,s)});return f.xhr=u,f}const Jn={"magFilter":9728,"minFilter":9728,"wrapR":33071,"wrapS":33071,"wrapT":33071};function Kn(t,e,n,r,s,i,o,a){const c=n.info.compressedAttributes.attributes.reduce((t,e,n)=>{const r=Xn[e];if(!r)return t;return t[r.name||e]=n,t},{});return qn(r,{attributes:c,metadatas:{"POSITION":[{name:"i3s-scale_x",type:"double"},{name:"i3s-scale_y",type:"double"}]},useUniqueIDs:!1,skipAttributeTransform:!1}).then(n=>Wn(n,t,e,s,i,o,a))}const Yn={position:function(t,e,n){const r=3*t.vertexCount,s=new Float32Array(e,n,r);return t.position={array:s,componentType:5126,itemSize:3,count:r/3,meta:{"i3s-scale_x":1,"i3s-scale_y":1},type:"VEC3"},n+=4*r},normal:function(t,e,n){const r=3*t.vertexCount,s=new Float32Array(e,n,r);return t.normal={array:s,componentType:5126,itemSize:3,count:r/3,type:"VEC3"},n+=4*r},uv0:function(t,e,n){const r=2*t.vertexCount,s=new Float32Array(e,n,r);return t.uv0={array:s,componentType:5126,itemSize:2,count:r/2,type:"VEC2"},n+=4*r},color:function(t,e,n){const r=4*t.vertexCount,s=new Uint8Array(e,n,r);return t.color={array:s,componentType:5121,itemSize:4,count:r/4,type:"VEC4"},n+=r},featureId:function(t,e,n){return n+=8*t.featureCount},id:function(t,e,n){return n+=8*t.featureCount},faceRange:function(t,e,n){const r=2*t.featureCount,s=new Uint32Array(e,n,r);return t.faceRange={array:s,componentType:5125,itemSize:2,count:r/2,type:"VEC2"},n+=4*r},uvRegion:function(t,e,n){const r=4*t.vertexCount,s=new Uint16Array(e,n,r);return t["uv-region"]={array:s,componentType:5123,itemSize:4,count:r/4,type:"VEC4"},n+=2*r},region:function(t,e,n){const r=4*t.vertexCount,s=new Uint16Array(e,n,r);return t["uv-region"]={array:s,componentType:5123,itemSize:4,count:r/4,type:"VEC4"},n+=2*r}};function Qn(t,e,n,r,s,i,o,a){const c={vertexCount:0},u=new DataView(r);try{let t=0;c.vertexCount=u.getUint32(t,1),t+=4,c.featureCount=u.getUint32(t,1),t+=4;const e=n.info.ordering?null:n.info;if(e){const n=[];for(const t in e)"offset"!==t&&""!==t&&n.push(t);for(let e=0;e<n.length;e++)Yn[n[e]]?t=Yn[n[e]](c,r,t):console.error("Unknown decoder for",n[e])}else{const e=n.info;let s=e.ordering,i=e.featureAttributeOrder;const o=null;o&&o.geometryData&&o.geometryData[0]&&o.geometryData[0].params;for(let e=0;e<s.length;e++){const n=Yn[s[e]];n||console.log(s[e]),t=n(c,r,t)}for(let e=0;e<i.length;e++){const n=Yn[i[e]];n||console.log(i[e]),t=n(c,r,t)}}}catch(t){}c.scale_x=1,c.scale_y=1;const f={};for(const t in c){const e=Xn[t]&&Xn[t].name;e&&(f[e]=c[t])}if(c.faceRange){const t=c.faceRange.array,e=t.length/2,n=(h=e)<=255?Uint8Array:h<=65535?Uint16Array:Uint32Array,r=new n(f.POSITION.array.length/3);for(let e=0;e<t.length-1;e+=2){const n=e/2,s=t[e],i=t[e+1];for(let t=s;t<=i;t++)r[3*t]=n,r[3*t+1]=n,r[3*t+2]=n}f._BATCHID={componentType:Je(n),array:r,itemSize:1,count:r.length,type:"SCALAR"}}var h;return Wn({attributes:f},t,e,s,i,o,a)}function Wn(t,e,n,r,s,i,o){const a={attributes:t.attributes,material:n,indices:t.indices,mode:4};!function(t){const e=t.array,n=t.meta&&t.meta["i3s-scale_x"],r=t.meta&&t.meta["i3s-scale_y"];if(n&&r&&(1!==n||1!==r))for(let t=0;t<e.length;t+=3)e[t]*=n.value,e[t+1]*=r.value}(t.attributes.POSITION);const u=function(t,e,n,r,s){let i,o=[0,0,0,1];const a=[0,0],u=Ln([],n,r,s);u[2]=n[2];const f=e&&c(Vn,e);return pn(t,t=>(o[0]=t[0],o[1]=t[1],o[2]=t[2],f||(o=v(o,o,e)),n&&y(o,o,n),Ln(a,o,r,s),i=o[2],t[0]=a[0]-u[0],t[1]=a[1]-u[1],t[2]=i-u[2],t)),u}(t.attributes.POSITION,r,s,i,o);e.meshes[n]={primitives:[a],index:n},e.extensions.MAPTALKS_RTC={projCenter:u},e.extensions.CESIUM_RTC={rtcCoord:s};for(const n in t.attributes)ir(e.transferables,t.attributes[n].array.buffer);return t.indices&&ir(e.transferables,t.indices.array.buffer),a}function Zn(t,e,n,r,s,i){const o=r.map(t=>function(t,e,n,r,s){if("dds"===e){const e=Tn(t),r=e.images.map(e=>new Uint8Array(t,e.offset,e.length)),s="dxt1"===e.format?33777:33779;return Promise.resolve({image:{mipmap:r,width:e.shape[0],height:e.shape[1],mimeType:n},sampler:Jn,format:s})}if("png"===e||"jpg"===e)return function(t,e){er||(er=new OffscreenCanvas(2,2),nr=er.getContext("2d",{willReadFrequently:!0}));const n=new Blob([new Uint8Array(t)]);return createImageBitmap(n).then(t=>{let{width:n,height:r}=t;rr(n)||(n=sr(n)),rr(r)||(r=sr(r));const s=e;s&&(n=Math.min(s,n),r=Math.min(s,r)),er.width=n,er.height=r,nr.drawImage(t,0,0,n,r),t.close();const i=nr.getImageData(0,0,n,r);return{width:n,height:r,array:new Uint8Array(i.data)}}).catch(()=>({width:2,height:2,array:new Uint8Array(4)}))}(t,s).then(t=>{t.mimeType=n;return{image:t,sampler:Jn,format:6408}});if("ktx2"===e)return Gn(t,r).then(t=>(t.mimeType=n,{image:t,sampler:Jn,format:t.format}));return null}(t.data,t.format,t.mimeType,s,i).then(t=>{if(t.image)if(t.image.array)ir(e.transferables,t.image.array.buffer);else if(t.image.mipmap)for(let n=0;n<t.image.mipmap.length;n++)ir(e.transferables,t.image.mipmap[n].buffer);return t}));return Promise.all(o).then(r=>{!function t(e,n,r,s){const i=JSON.parse(JSON.stringify(r)),o=n.textures;s.ptr||(s.ptr=0);for(const e in r)r[e]&&r[e].url?(o.push(s[s.ptr++]),i[e]={index:o.length-1},void 0!==r[e].factor&&(i[e].scale=r[e].factor)):he(r[e])&&(i[e]=t(-1,n,r[e],s));e>=0&&(n.materials[e]=i);return i}(t,e,n,r)})}function tr(t,e){for(const n in t)t[n]&&t[n].url?e.push({url:t[n].url,mimeType:t[n].mimeType,format:t[n].format}):he(t[n])&&tr(t[n],e)}let er,nr;function rr(t){return 0==(t&t-1)&&0!==t}function sr(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}function ir(t,e){e&&(t.indexOf(e)>=0||t.push(e))}function or(t){const e=new Uint8Array(t,0,5);return e[0]==="D".charCodeAt()&&e[1]==="R".charCodeAt()&&e[2]==="A".charCodeAt()&&e[3]==="C".charCodeAt()&&e[4]==="O".charCodeAt()}const ar=[];const cr=[],ur=[],fr=[],hr=[],lr=[],dr=[],yr=[];function mr(t,e,n,r,s,i){d(hr,t[3*e],t[3*e+1],t[3*e+2]),d(lr,t[3*n],t[3*n+1],t[3*n+2]),d(dr,t[3*r],t[3*r+1],t[3*r+2]);const o=M(cr,dr,lr),a=M(ur,hr,lr),c=g(fr,o,a);p(yr,c),s[3*e]=s[3*e]||0,s[3*n]=s[3*n]||0,s[3*r]=s[3*r]||0,s[3*e+1]=s[3*e+1]||0,s[3*n+1]=s[3*n+1]||0,s[3*r+1]=s[3*r+1]||0,s[3*e+2]=s[3*e+2]||0,s[3*n+2]=s[3*n+2]||0,s[3*r+2]=s[3*r+2]||0,s[3*e]+=yr[0],s[3*n]+=yr[0],s[3*r]+=yr[0],s[3*e+1]+=yr[1],s[3*n+1]+=yr[1],s[3*r+1]+=yr[1],s[3*e+2]+=yr[2],s[3*n+2]+=yr[2],s[3*r+2]+=yr[2],i[e]+=1,i[n]+=1,i[r]+=1}const br=[1,0,0,0,0,0,1,0,0,-1,0,0,0,0,0,1],pr=[0,0,1,0,0,1,0,0,-1,0,0,0,0,0,0,1],wr=2*Math.PI*6378137/360,gr="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;let vr,Mr=!1;if("undefined"!=typeof OffscreenCanvas){try{vr=new OffscreenCanvas(2,2).getContext("2d",{willReadFrequently:!0})}catch(t){}vr&&"undefined"!=typeof createImageBitmap&&(Mr=!0)}const Tr=r([]),Ar=[0,0,0],_r=[],Or=[],xr=[],Sr=[],Ir={"POSITION":1,"TEXCOORD_0":1,"TEXCOORD_1":1,"NORMAL":1,"TANGENT":1},kr={"TEXCOORD_0":1e-4,"TEXCOORD_1":1e-4};class Er{constructor(t,e,n,r){this.id=t,this.options=e,this.wt=this.requestImage.bind(this),this.gt=n,this.vt={},r(null,{},[])}Mt(t){this.Tt||(this.i=t,this.At=new on,this.Tt=new tn(this.wt,dt,t),this._t=new en(this.wt,dt,t))}requestImage(t,e){Mr?fetch(t).then(t=>t.arrayBuffer()).then(t=>{const e=new self.Blob([new Uint8Array(t)]);return createImageBitmap(e)}).then(t=>{(void 0).width=t.width,(void 0).height=t.height,vr.drawImage(t,0,0);const n=vr.getImageData(0,0,(void 0).width,(void 0).height);t.close(),e(null,{width:t.width,height:t.height,data:new Uint8Array(n.data)})}):this.gt("requestImage",{url:t},null,e)}loadTile(t,e){this.Mt(t.supportedFormats);const n=t.service,r=t.url,s=t.arraybuffer,i=n.fetchOptions||{};if(i.referrer=t.referrer,i.referrerPolicy=i.referrerPolicy||"origin",function(t){return t.indexOf("i3s:")>=0}(r)){const s=t.i3sInfo,o=n.maxTextureSize||1024,a=Hn(s,t.supportedFormats,this.options.projection,t.projection,o,i);return a.then(t=>{if(delete this.vt[r],!t)return void e({status:404,url:r,i3sInfo:s});if(!Object.keys(t.gltf.meshes).length)return void e({status:404,url:r,i3sInfo:s});t.gltf.url=r;const{transferables:n}=t;t.magic="b3dm",this.Ot(t.gltf),e(null,t,n)}),void(this.vt[r]=a.xhr)}if(s){delete this.vt[r];const n=xe(new DataView(s),0);if("{"===n[0]||" "===n[0]||"<"===n[0]){const n=function(t,e,n){if(gr){const r=new Uint8Array(t,e,n);return gr.decode(r)}return me(new Uint8Array(t,e,n))}(s,0,s.byteLength),i=JSON.parse(n);i.accessors?this.xt(i,r,t,"gltf",e):this.St(t.rootIdx,i,s,r,e)}else this.xt(s,r,t,n,e)}else{let s=n.urlParams;s&&(s=(r.indexOf("?")>0?"&":"?")+s);const o=r.replace(/\\+/g,"%2B");let a=J.getArrayBuffer(o+(s||""),i);const c=a.xhr;a=a.then(n=>{delete this.vt[r],n&&n.status?e(n):(t.arraybuffer=n&&n.data,this.loadTile(t,e))}).catch(t=>{delete this.vt[r],e(t)}),this.vt[r]=c}}xt(t,e,n,r,s){r=r&&r.toLowerCase();const i=n.service;if("b3dm"===r){this.Tt.load(e,t,0,0,{maxTextureSize:i.maxTextureSize||1024}).then(t=>{if(t.error)return void s(t);const{content:e,transferables:r}=this.It(t,n);this.Ot(e.gltf),s(null,e,r)}).catch(t=>{s(t)})}else if("pnts"===r){const r=n.transform||Tr;this.At.load(e,t).then(t=>{const{content:e,transferables:i}=this.kt(t,r,n.rootIdx);this.Et(e),s(null,e,i)})}else if("i3dm"===r){const r=n.transform||Tr;this._t.load(e,t,0,0,{maxTextureSize:i.maxTextureSize||1024}).then(t=>{const{content:e,transferables:i}=this.Ct(t,r,n.rootIdx);this.Ot(e.gltf),s(null,e,i)})}else if("cmpt"===r){new cn(this.wt,dt,this.i,i.maxTextureSize||1024).load(e,t,0,0,{maxTextureSize:i.maxTextureSize||1024}).then(t=>{const{content:e,transferables:r}=this.Ut(t,n);this.Ft(e),s(null,e,r)}).catch(t=>{s(t)})}else if("gltf"===r){this.nt||(this.nt=Ze());const r=e.substring(0,e.lastIndexOf("/")),o=t instanceof ArrayBuffer&&{buffer:t,byteOffset:0,byteLength:t.byteLength}||t,a=new dt(r,o,{transferable:!0,requestImage:this.wt,decoders:this.nt,supportedFormats:this.i,maxTextureSize:i.maxTextureSize||1024});a.load({skipAttributeTransform:!1}).then(t=>{t.url=e,this.Nt(t,null,n),this.Ot(t),s(null,{magic:"gltf",gltf:t},a.transferables)})}else s(new Error("unsupported tile format: "+r))}Ft(t){t.content?t.content.forEach(t=>{this.Ft(t)}):this.Ot(t.gltf)}Pt(t,e){const n=e.materials[t.material];if(n&&n.extensions&&n.extensions.KHR_materials_unlit)return;if(t.attributes.TANGENT)return;if(t.attributes.TEXCOORD_0&&!t.attributes.NORMAL){const e=t.attributes.POSITION.array,n=function(t,e,n){const r=n||[];r.setLength&&r.setLength(t.length);const s=ar;s.length<t.length/3&&(s.length=t.length/3),s.fill(0,0,t.length/3);const i=void 0===e.length?e:e.length;for(let n=0;n<i/3;n++)void 0===e.length?mr(t,3*n,3*n+1,3*n+2,r,s):mr(t,e[3*n],e[3*n+1],e[3*n+2],r,s);for(let t=0;t<r.length;t+=3){const e=s[t/3];0!==e?(r[t]/=e,r[t+1]/=e,r[t+2]/=e):(r[t]=0,r[t+1]=0,r[t+2]=0)}return r}(e,t.indices.array,new Float32Array(e.length));t.attributes.NORMAL={array:n,byteLength:n.byteLength,byteOffset:0,byteStride:0,componentType:5126,count:n.length/3,itemSize:3,name:"NORMAL",type:"VEC3"}}}Ot(t){if(!t||!t.meshes||t.extensionsUsed&&t.extensionsUsed.indexOf("KHR_techniques_webgl")>-1)return;const e=t.meshes;for(const n in e){e[n].primitives.forEach(e=>{this.Pt(e,t),e.compressed_int16_params={};const n=e.attributes;for(const t in n)if(Ir[t]&&n[t].array&&n[t].array instanceof Float32Array){const r=this.options.projection;let s=1;"EPSG:4326"!==r&&"EPSG:4490"!==r||"POSITION"!==t||(s=wr,e.compressed_int16_params.compressed_ratio=s);const i=Br(n[t].array,s,n[t].min,n[t].max,t);if(!i)continue;const{array:o,range:a}=i;n[t].array=o,e.compressed_int16_params[t]=a}})}}Et(t){if(!t||!t.pnts)return;const e=t.pnts;t.compressed_int16_params={};for(const n in e)if(Ir[n]&&e[n].array&&e[n].array instanceof Float32Array){const r=this.options.projection;let s=1;"EPSG:4326"!==r&&"EPSG:4490"!==r||"POSITION"!==n||(s=wr,t.compressed_int16_params.compressed_ratio=s);const{array:i,range:o}=Br(e[n].array,s,e[n].min,e[n].max,n);e[n].array=i,t.compressed_int16_params[n]=o}}Bt(t){const e=[];for(let n=0;n<t.length;n++){const r=t[n];if(!r.childTile)continue;const s={boundingVolume:{sphere:[r.boundingSphere.center.x,r.boundingSphere.center.y,r.boundingSphere.center.z,r.boundingSphere.radius]},content:{uri:r.childTile},geometricError:r.boundingSphere.radius/r.rangeList*16,refine:"REPLACE"};e.push(s)}return e}St(t,e,n,r,s){return e.capabilities,void s(null,e)}Ut(t,e){const{tiles:n}=t,r={magic:"cmpt",content:[]},s=[];for(let t=0;t<n.length;t++){const{magic:i}=n[t];if("b3dm"===i){const{content:i,transferables:o}=this.It(n[t],e);Nr(s,o),r.content.push(i)}else if("i3dm"===i){const{transform:i,rootIdx:o}=e,{content:a,transferables:c}=this.Ct(n[t],i,o);Nr(s,c),r.content.push(a)}else if("pnts"===i){const{transform:i,rootIdx:o}=e,{content:a,transferables:c}=this.kt(n[t],i,o);Nr(s,c),r.content.push(a)}else if("cmpt"===i){const{content:i,transferables:o}=this.Ut(n[t],e);Nr(s,o),r.content.push(i)}}return{content:r,transferables:s}}It(t,e){const{gltf:n,transferables:r,featureTable:s}=t;return this.Nt(n,s,e),delete t.transferables,{content:t,transferables:r}}Nt(t,e,n){const r=function(t){if(!t||!t.meshes)return!1;let e=1;const n=[];for(const r in t.meshes){const s=t.meshes[r],{primitives:i}=s;if(i)for(let t=0;t<i.length;t++){const r=i[t].attributes&&i[t].attributes.POSITION;if(!r||!r.array)continue;r.array.buffer.visited||(r.array.buffer.visited=e++);const s=e-1+"-"+(r.byteOffset||0);if(n.indexOf(s)>=0)return!0;n.push(s)}}return!1}(t);this.Dt(t),t.asset||(t.asset={}),r?(t.asset.sharePosition=!0,this.Rt(t,e,n.upAxis,n.transform)):this.Lt(t,e,n.upAxis,n.transform)}Ct(t,e,r){const{featureTable:s}=t,i=t.i3dm,o=s&&s.RTC_CENTER||[0,0,0];if(s.EAST_NORTH_UP&&!i.NORMAL_UP&&!i.NORMAL_UP_OCT32P){const e=new Float32Array(3*i.POSITION.array.length),r=[],s=[],a=[];pn(i.POSITION,(t,i)=>{y(a,t,o),Xe(a,null,r),n(s,r);!function(t,e){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]}(e.subarray(9*i,9*(i+1)),s)}),i.INSTANCE_ROTATION={byteStride:0,byteOffset:0,itemSize:9,componentType:5126,array:e},t.transferables.push(e.buffer)}const a={xmin:1/0,xmax:-1/0,ymin:1/0,ymax:-1/0,hmin:1/0,hmax:-1/0};Ur(i.POSITION.array,3,o,Tr,a);const c=Fr(a),u=l([],c),f=[1/0,1/0,1/0],h=[-1/0,-1/0,-1/0];pn(i.POSITION,t=>{t[0]=t[0]+o[0]-u[0],t[1]=t[1]+o[1]-u[1],t[2]=t[2]+o[2]-u[2],t[0]<f[0]&&(f[0]=t[0]),t[1]<f[1]&&(f[1]=t[1]),t[2]<f[2]&&(f[2]=t[2]),t[0]>h[0]&&(h[0]=t[0]),t[1]>h[1]&&(h[1]=t[1]),t[2]>h[2]&&(h[2]=t[2])}),i.POSITION.min=f,i.POSITION.max=h,e&&v(c,c,e);const d=this.zt(c);t.rtcCenter=u,t.rtcCoord=d,t.rootIdx=r;const m=t.transferables;return delete t.transferables,{content:t,transferables:m}}kt(t,e,n){const{featureTable:r}=t,s=t.pnts,i=r&&r.RTC_CENTER||[0,0,0],o=this.options.projection,a=e&&c(Tr,e),u={xmin:1/0,xmax:-1/0,ymin:1/0,ymax:-1/0,hmin:1/0,hmax:-1/0};Ur(s.POSITION.array,3,i,e,u);const f=Fr(u),h=this.jt(f),y=l([],f),m=[1/0,1/0,1/0],b=[-1/0,-1/0,-1/0];let p=[0,0,0,1];const w=[0,0,0],g=[0,0];pn(s.POSITION,t=>(p[0]=t[0]+i[0],p[1]=t[1]+i[1],p[2]=t[2]+i[2],e&&!a&&(p=v(p,p,e)),0===A(p)?d(w,0,0,-6378137):Me(w,p),Ln(g,w,o),t[0]=g[0]-h[0],t[1]=g[1]-h[1],t[2]=w[2]-h[2],t[0]<m[0]&&(m[0]=t[0]),t[1]<m[1]&&(m[1]=t[1]),t[2]<m[2]&&(m[2]=t[2]),t[0]>b[0]&&(b[0]=t[0]),t[1]>b[1]&&(b[1]=t[1]),t[2]>b[2]&&(b[2]=t[2]),t)),s.POSITION.min=m,s.POSITION.max=b,e&&v(f,f,e);const M=this.zt(f);t.rtcCenter=y,t.projCenter=h,t.rtcCoord=M,t.rootIdx=n;const T=t.transferables;return delete t.transferables,{content:t,transferables:T}}Dt(t){if(!Array.isArray(t.textures))return;const e=t.textures;for(let t=0;t<e.length;t++){const n=e[t].image&&e[t].image.array;if(n&&n.length){const r=n[0],s=n[1],i=n[2],o=n[3];let a=!0;for(let t=4;t<n.length;t+=4)if(n[t]!==r||n[t+1]!==s||n[t+2]!==i||n[t+3]!==o){a=!1;break}a&&(e[t].image.color=[r/255,s/255,i/255,o/255],delete e[t].image.array)}}}abortTileLoading(t,e){const n=this.vt[t.url];if(Array.isArray(n))for(let t=0;t<n.length;t++)n[t].abort();else n&&n.abort&&n.abort();delete this.vt[t.url],e(null)}Vt(t,e,n,i){const o=e&&e.RTC_CENTER||t.extensions&&t.extensions.CESIUM_RTC&&t.extensions.CESIUM_RTC.center;let a=br;"X"===(n=n&&n.toUpperCase())?a=pr:"Z"===n&&(a=Tr),t.extensions=t.extensions||{},t.extensions.CESIUM_RTC||(t.extensions.CESIUM_RTC={}),o&&(t.extensions.CESIUM_RTC.center=o),t.extensions.MAPTALKS_RTC={};const c={xmin:1/0,xmax:-1/0,ymin:1/0,ymax:-1/0,hmin:1/0,hmax:-1/0};un(t,t=>{if(!(t.attributes&&t.attributes.POSITION))return;const e=r(_r);t.matrices&&Pr(e,t.matrices);const n=t.attributes.POSITION.array,u=t.attributes.POSITION.itemSize;s(e,a,e),i&&s(e,i,e),Ur(n,u,o||Ar,e,c,t.compressUniforms)});const u=Fr(c);return{rtcCenter:o,modelCenter:u,upAxisTransform:a}}Rt(t,e,n,i){const{modelCenter:o,upAxisTransform:a,rtcCenter:c}=this.Vt(t,e,n),u=l([],o);i&&v(o,o,i),t.extensions.CESIUM_RTC.rtcCoord=this.zt(o),c||(un(t,t=>{if(t.attributes&&t.attributes.POSITION){const e=t.attributes.POSITION;if(e.array.buffer.projected&&e.array.buffer.projected[e.byteOffset])return;const n=r(_r);t.matrices&&Pr(n,t.matrices),s(n,a,n);const i=function(t,e){var n=e[0],r=e[1],s=e[2],i=e[3],o=e[4],a=e[5],c=e[6],u=e[7],f=e[8],h=e[9],l=e[10],d=e[11],y=e[12],m=e[13],b=e[14],p=e[15],w=n*a-r*o,g=n*c-s*o,v=n*u-i*o,M=r*c-s*a,T=r*u-i*a,A=s*u-i*c,_=f*m-h*y,O=f*b-l*y,x=f*p-d*y,S=h*b-l*m,I=h*p-d*m,k=l*p-d*b,E=w*k-g*I+v*S+M*x-T*O+A*_;return E?(E=1/E,t[0]=(a*k-c*I+u*S)*E,t[1]=(s*I-r*k-i*S)*E,t[2]=(m*A-b*T+p*M)*E,t[3]=(l*T-h*A-d*M)*E,t[4]=(c*x-o*k-u*O)*E,t[5]=(n*k-s*x+i*O)*E,t[6]=(b*v-y*A-p*g)*E,t[7]=(f*A-l*v+d*g)*E,t[8]=(o*I-a*x+u*_)*E,t[9]=(r*x-n*I-i*_)*E,t[10]=(y*T-m*v+p*w)*E,t[11]=(h*v-f*T-d*w)*E,t[12]=(a*O-o*S-c*_)*E,t[13]=(n*S-r*O+s*_)*E,t[14]=(m*g-y*M-b*w)*E,t[15]=(f*M-h*g+l*w)*E,t):null}(Or,n),o=[1/0,1/0,1/0],c=[-1/0,-1/0,-1/0];pn(e,t=>{v(t,t,n),t[0]=t[0]-u[0],t[1]=t[1]-u[1],t[2]=t[2]-u[2],v(t,t,i),t[0]<o[0]&&(o[0]=t[0]),t[1]<o[1]&&(o[1]=t[1]),t[2]<o[2]&&(o[2]=t[2]),t[0]>c[0]&&(c[0]=t[0]),t[1]>c[1]&&(c[1]=t[1]),t[2]>c[2]&&(c[2]=t[2])}),e.min=o,e.max=c,e.array.buffer.projected||(e.array.buffer.projected={}),e.array.buffer.projected[e.byteOffset]=1}}),t.extensions.CESIUM_RTC.center=u)}Lt(t,e,n,r){const{modelCenter:s,rtcCenter:i}=this.Vt(t,e,n,r),o=this.jt(s);t.extensions.MAPTALKS_RTC.projCenter=o,t.extensions.CESIUM_RTC.rtcCoord=this.zt(s),un(t,e=>{if(e.attributes&&e.attributes.POSITION){e.attributes.NORMAL&&this.qt(e.attributes.NORMAL,e.matrices,n),e.attributes.TANGENT&&this.qt(e.attributes.TANGENT,e.matrices,n);const{newPositions:s}=this.Gt(e.attributes.POSITION,e.matrices,i,t.extensions.MAPTALKS_RTC,n,r,e.compressUniforms),{componentType:o}=e.attributes.POSITION;5126!==o&&(e.attributes.POSITION.array=new Float32Array(s))}});for(const e in t.nodes){t.nodes[e].matrix=Tr}}jt(t){0===A(t)?d(xr,0,0,-6378137):Me(xr,t);const e=this.options.projection;Ln(Sr,xr,e);const n=xr[2],r=[];return r[0]=Sr[0],r[1]=Sr[1],r[2]=n,r}qt(t,e,r){let s;s="Y"===r?br:"X"===r?pr:Tr;const i=function(t,e){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],t}([],s);if(Pr(i,e),c(i,Tr))return;const o=n([],i),a=[];pn(t,t=>(function(t,e,n){var r=e[0],s=e[1],i=e[2];t[0]=r*n[0]+s*n[3]+i*n[6],t[1]=r*n[1]+s*n[4]+i*n[7],t[2]=r*n[2]+s*n[5]+i*n[8]}(a,t,o),p(a,a),l(t,a),a))}Gt(t,e,n,s,i,o,a){if(t.array.buffer.projected&&t.array.buffer.projected[t.byteOffset])return null;const u=r([]);Pr(u,e);const f=this.options.projection;i=i&&i.toUpperCase();const h=n;let l=null;"Y"===i?l=br:"X"===i&&(l=pr);let m=[0,0,0,1];const b=[0,0,0],p=[0,0],w=s.projCenter,g=o&&c(Tr,o),M=t.min=t.min||[],T=t.max=t.max||[];d(M,1/0,1/0,1/0),d(T,-1/0,-1/0,-1/0);const _=a||{},{decode_position_min:O,decode_position_normConstant:x}=_;let S=[0,0,0,0],I=1;O&&(S=O),x&&(I=x);const k=[];return pn(t,e=>{if(m[0]=e[0]*I+S[0],m[1]=e[1]*I+S[1],m[2]=e[2]*I+S[2],m=v(m,m,u),l&&(m=v(m,m,l)),h&&y(m,m,h),o&&!g&&(m=v(m,m,o)),0===A(m)?d(b,0,0,-6378137):Me(b,m),Ln(p,b,f),e instanceof Float32Array)e[0]=p[0]-w[0],e[1]=p[1]-w[1],e[2]=b[2]-w[2];else{const n=p[0]-w[0],r=p[1]-w[1],s=b[2]-w[2];5126!==t.componentType&&(k.push(n),k.push(r),k.push(s),k.push(e[3]))}return e[0]<M[0]&&(M[0]=e[0]),e[1]<M[1]&&(M[1]=e[1]),e[2]<M[2]&&(M[2]=e[2]),e[0]>T[0]&&(T[0]=e[0]),e[1]>T[1]&&(T[1]=e[1]),e[2]>T[2]&&(T[2]=e[2]),e}),t.array.buffer.projected||(t.array.buffer.projected={}),t.array.buffer.projected[t.byteOffset]=1,{projCenter:w,newPositions:k}}zt(t){return 0===A(t)?d([],0,0,-6378137):Me([],t)}onRemove(){}}const Cr=[];function Ur(t,e,n,r,s,i){const o=i||{},{decode_position_min:a,decode_position_normConstant:c}=o;let u=[0,0,0,0],f=1;a&&(u=a),c&&(f=c);for(let i=0,o=t.length;i<o;i+=e){const{xmin:o,ymin:a,xmax:c,ymax:h,hmin:l,hmax:m}=s;d(Cr,t[i]*f+u[0],t[i+1]*f+u[1],t[i+2]*f+u[2]),v(Cr,Cr,r);const b=y(Cr,n,Cr);b[0]<o&&(s.xmin=b[0]),b[0]>c&&(s.xmax=b[0]),b[1]<a&&(s.ymin=b[1]),b[1]>h&&(s.ymax=b[1]),e>2&&(b[2]<l&&(s.hmin=b[2]),b[2]>m&&(s.hmax=b[2]))}}function Fr(t){const{xmax:e,ymax:n,xmin:r,ymin:s,hmin:i,hmax:o}=t,a=[(r+e)/2,(s+n)/2,(i+o)/2];return e===-1/0&&(a[0]=0),n===-1/0&&(a[1]=0),o===-1/0&&(a[2]=0),isNaN(a[2])&&(a[2]=0),a}function Nr(t,e){for(let n=0;n<e.length;n++)t.indexOf(e[n])<0&&t.push(e[n])}function Pr(t,e){const n=t;for(let t=e.length-1;t>=0;t--)s(n,e[t],n);return n}function Br(t,e,n,r,s){if(e&&e>1)for(let n=0;n<t.length;n++)(n+1)%3!=0&&(t[n]*=e);let i,o;if(n&&r&&1===e)i=Math.min(...n),o=Math.max(...r);else{const{min:e,max:n}=function(t){let e=1/0,n=-1/0;for(let r=0;r<t.length;r++)t[r]>n&&(n=t[r]),t[r]<e&&(e=t[r]);return{min:e,max:n}}(t);i=e,o=n}return!function(t,e,n,r){for(let s=0;s<t.length;s++){const i=Dr(Rr(t[s],e,n),e,n);if(Math.abs(i-t[s])>kr[r])return!1}return!0}(t,i,o,s)&&kr[s]?null:function(t,e,n){const r=new Int16Array(t.length);for(let s=0;s<t.length;s++)r[s]=Rr(t[s],e,n);return{array:r,range:[e,n]}}(t,i,o)}function Dr(t,e,n){return((t>=32768?-(65536-t)/32768:t/32767)+1)*(n-e)/2+e}function Rr(t,e,n){const r=2*(t-e)/(n-e)-1,s=Math.max(-1,Math.min(1,r));return s<0?32768*s:32767*s}let Lr=0;class zr{constructor(t){this.workerId=t,this.workers={},this.$t={}}addLayer({actorId:t,mapId:e,layerId:n,params:r},s){if(this.Xt(e,n))return;const i=this.Ht(e,n),o=r.options,a=this.send.bind(this,t);this.workers[i]=new Er(n,o,a,s)}removeLayer({mapId:t,layerId:e},n){const r=this.Xt(t,e),s=this.Ht(t,e);delete this.workers[s],r&&r.onRemove(n)}loadTile({mapId:t,layerId:e,params:n},r){const s=this.Xt(t,e);s&&s.loadTile(n,r)}abortTileLoading({mapId:t,layerId:e,params:n},r){const s=this.Xt(t,e);s&&s.abortTileLoading(n,r)}receive(t){const e=t.callback,n=this.$t[e];delete this.$t[e],n&&t.error?n(new Error(t.error)):n&&n(null,t.data)}send(t,e,n,r,s){const i=s?`${t}-${Lr++}`:null;s&&(this.$t[i]=s),postMessage({type:"<request>",workerId:this.workerId,actorId:t,command:e,params:n,callback:String(i)},r||[])}Ht(t,e){return`${t}-${e}`}Xt(t,e){const n=this.Ht(t,e);return this.workers[n]}}t.initialize=function(){},t.onmessage=function(t,e){const n=t.data;this.dispatcher||(this.dispatcher=new zr(t.workerId)),"<response>"===t.type?this.dispatcher.workerId===t.workerId&&this.dispatcher.receive(t):this.dispatcher[n.command]({actorId:n.actorId,mapId:n.mapId,layerId:n.layerId,params:n.params},(t,n,r)=>{t&&console.error(t),t instanceof Error&&(t={message:t.message}),e(t,n,r)})},Object.defineProperty(t,"Jt",{value:!0})}';var O={exports:{}},_={"aliceblue":[240,248,255],"antiquewhite":[250,235,215],"aqua":[0,255,255],"aquamarine":[127,255,212],"azure":[240,255,255],"beige":[245,245,220],"bisque":[255,228,196],"black":[0,0,0],"blanchedalmond":[255,235,205],"blue":[0,0,255],"blueviolet":[138,43,226],"brown":[165,42,42],"burlywood":[222,184,135],"cadetblue":[95,158,160],"chartreuse":[127,255,0],"chocolate":[210,105,30],"coral":[255,127,80],"cornflowerblue":[100,149,237],"cornsilk":[255,248,220],"crimson":[220,20,60],"cyan":[0,255,255],"darkblue":[0,0,139],"darkcyan":[0,139,139],"darkgoldenrod":[184,134,11],"darkgray":[169,169,169],"darkgreen":[0,100,0],"darkgrey":[169,169,169],"darkkhaki":[189,183,107],"darkmagenta":[139,0,139],"darkolivegreen":[85,107,47],"darkorange":[255,140,0],"darkorchid":[153,50,204],"darkred":[139,0,0],"darksalmon":[233,150,122],"darkseagreen":[143,188,143],"darkslateblue":[72,61,139],"darkslategray":[47,79,79],"darkslategrey":[47,79,79],"darkturquoise":[0,206,209],"darkviolet":[148,0,211],"deeppink":[255,20,147],"deepskyblue":[0,191,255],"dimgray":[105,105,105],"dimgrey":[105,105,105],"dodgerblue":[30,144,255],"firebrick":[178,34,34],"floralwhite":[255,250,240],"forestgreen":[34,139,34],"fuchsia":[255,0,255],"gainsboro":[220,220,220],"ghostwhite":[248,248,255],"gold":[255,215,0],"goldenrod":[218,165,32],"gray":[128,128,128],"green":[0,128,0],"greenyellow":[173,255,47],"grey":[128,128,128],"honeydew":[240,255,240],"hotpink":[255,105,180],"indianred":[205,92,92],"indigo":[75,0,130],"ivory":[255,255,240],"khaki":[240,230,140],"lavender":[230,230,250],"lavenderblush":[255,240,245],"lawngreen":[124,252,0],"lemonchiffon":[255,250,205],"lightblue":[173,216,230],"lightcoral":[240,128,128],"lightcyan":[224,255,255],"lightgoldenrodyellow":[250,250,210],"lightgray":[211,211,211],"lightgreen":[144,238,144],"lightgrey":[211,211,211],"lightpink":[255,182,193],"lightsalmon":[255,160,122],"lightseagreen":[32,178,170],"lightskyblue":[135,206,250],"lightslategray":[119,136,153],"lightslategrey":[119,136,153],"lightsteelblue":[176,196,222],"lightyellow":[255,255,224],"lime":[0,255,0],"limegreen":[50,205,50],"linen":[250,240,230],"magenta":[255,0,255],"maroon":[128,0,0],"mediumaquamarine":[102,205,170],"mediumblue":[0,0,205],"mediumorchid":[186,85,211],"mediumpurple":[147,112,219],"mediumseagreen":[60,179,113],"mediumslateblue":[123,104,238],"mediumspringgreen":[0,250,154],"mediumturquoise":[72,209,204],"mediumvioletred":[199,21,133],"midnightblue":[25,25,112],"mintcream":[245,255,250],"mistyrose":[255,228,225],"moccasin":[255,228,181],"navajowhite":[255,222,173],"navy":[0,0,128],"oldlace":[253,245,230],"olive":[128,128,0],"olivedrab":[107,142,35],"orange":[255,165,0],"orangered":[255,69,0],"orchid":[218,112,214],"palegoldenrod":[238,232,170],"palegreen":[152,251,152],"paleturquoise":[175,238,238],"palevioletred":[219,112,147],"papayawhip":[255,239,213],"peachpuff":[255,218,185],"peru":[205,133,63],"pink":[255,192,203],"plum":[221,160,221],"powderblue":[176,224,230],"purple":[128,0,128],"rebeccapurple":[102,51,153],"red":[255,0,0],"rosybrown":[188,143,143],"royalblue":[65,105,225],"saddlebrown":[139,69,19],"salmon":[250,128,114],"sandybrown":[244,164,96],"seagreen":[46,139,87],"seashell":[255,245,238],"sienna":[160,82,45],"silver":[192,192,192],"skyblue":[135,206,235],"slateblue":[106,90,205],"slategray":[112,128,144],"slategrey":[112,128,144],"snow":[255,250,250],"springgreen":[0,255,127],"steelblue":[70,130,180],"tan":[210,180,140],"teal":[0,128,128],"thistle":[216,191,216],"tomato":[255,99,71],"turquoise":[64,224,208],"violet":[238,130,238],"wheat":[245,222,179],"white":[255,255,255],"whitesmoke":[245,245,245],"yellow":[255,255,0],"yellowgreen":[154,205,50]},M={exports:{}},x=function(t){return!(!t||"string"==typeof t)&&(t instanceof Array||Array.isArray(t)||t.length>=0&&(t.splice instanceof Function||Object.getOwnPropertyDescriptor(t,t.length-1)&&"String"!==t.constructor.name))},A=Array.prototype.concat,I=Array.prototype.slice,S=M.exports=function(t){for(var e=[],n=0,r=t.length;n<r;n++){var s=t[n];x(s)?e=A.call(e,I.call(s)):e.push(s)}return e};S.wrap=function(t){return function(){return t(S(arguments))}};var E=_,N=M.exports,C=Object.hasOwnProperty,P=Object.create(null);for(var R in E)C.call(E,R)&&(P[E[R]]=R);var L=O.exports={to:{},get:{}};function k(t,e,n){return Math.min(Math.max(e,t),n)}function B(t){var e=Math.round(t).toString(16).toUpperCase();return e.length<2?"0"+e:e}L.get=function(t){var e,n;switch(t.substring(0,3).toLowerCase()){case"hsl":e=L.get.hsl(t),n="hsl";break;case"hwb":e=L.get.hwb(t),n="hwb";break;default:e=L.get.rgb(t),n="rgb"}return e?{model:n,value:e}:null},L.get.rgb=function(t){if(!t)return null;var e,n,r,s=[0,0,0,1];if(e=t.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(r=e[2],e=e[1],n=0;n<3;n++){var i=2*n;s[n]=parseInt(e.slice(i,i+2),16)}r&&(s[3]=parseInt(r,16)/255)}else if(e=t.match(/^#([a-f0-9]{3,4})$/i)){for(r=(e=e[1])[3],n=0;n<3;n++)s[n]=parseInt(e[n]+e[n],16);r&&(s[3]=parseInt(r+r,16)/255)}else if(e=t.match(/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)){for(n=0;n<3;n++)s[n]=parseInt(e[n+1],0);e[4]&&(e[5]?s[3]=.01*parseFloat(e[4]):s[3]=parseFloat(e[4]))}else{if(!(e=t.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)))return(e=t.match(/^(\w+)$/))?"transparent"===e[1]?[0,0,0,0]:C.call(E,e[1])?((s=E[e[1]])[3]=1,s):null:null;for(n=0;n<3;n++)s[n]=Math.round(2.55*parseFloat(e[n+1]));e[4]&&(e[5]?s[3]=.01*parseFloat(e[4]):s[3]=parseFloat(e[4]))}for(n=0;n<3;n++)s[n]=k(s[n],0,255);return s[3]=k(s[3],0,1),s},L.get.hsl=function(t){if(!t)return null;var e=t.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(e){var n=parseFloat(e[4]);return[(parseFloat(e[1])%360+360)%360,k(parseFloat(e[2]),0,100),k(parseFloat(e[3]),0,100),k(isNaN(n)?1:n,0,1)]}return null},L.get.hwb=function(t){if(!t)return null;var e=t.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(e){var n=parseFloat(e[4]);return[(parseFloat(e[1])%360+360)%360,k(parseFloat(e[2]),0,100),k(parseFloat(e[3]),0,100),k(isNaN(n)?1:n,0,1)]}return null},L.to.hex=function(){var t=N(arguments);return"#"+B(t[0])+B(t[1])+B(t[2])+(t[3]<1?B(Math.round(255*t[3])):"")},L.to.rgb=function(){var t=N(arguments);return t.length<4||1===t[3]?"rgb("+Math.round(t[0])+", "+Math.round(t[1])+", "+Math.round(t[2])+")":"rgba("+Math.round(t[0])+", "+Math.round(t[1])+", "+Math.round(t[2])+", "+t[3]+")"},L.to.rgb.percent=function(){var t=N(arguments),e=Math.round(t[0]/255*100),n=Math.round(t[1]/255*100),r=Math.round(t[2]/255*100);return t.length<4||1===t[3]?"rgb("+e+"%, "+n+"%, "+r+"%)":"rgba("+e+"%, "+n+"%, "+r+"%, "+t[3]+")"},L.to.hsl=function(){var t=N(arguments);return t.length<4||1===t[3]?"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)":"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+t[3]+")"},L.to.hwb=function(){var t=N(arguments),e="";return t.length>=4&&1!==t[3]&&(e=", "+t[3]),"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+e+")"},L.to.keyword=function(t){return P[t.slice(0,3)]};var U={exports:{}},F=_,D={};for(var z in F)F.hasOwnProperty(z)&&(D[F[z]]=z);var j=U.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var G in j)if(j.hasOwnProperty(G)){if(!("channels"in j[G]))throw new Error("missing channels property: "+G);if(!("labels"in j[G]))throw new Error("missing channel labels property: "+G);if(j[G].labels.length!==j[G].channels)throw new Error("channel and label counts mismatch: "+G);var H=j[G].channels,V=j[G].labels;delete j[G].channels,delete j[G].labels,Object.defineProperty(j[G],"channels",{value:H}),Object.defineProperty(j[G],"labels",{value:V})}j.rgb.hsl=function(t){var e,n,r=t[0]/255,s=t[1]/255,i=t[2]/255,o=Math.min(r,s,i),a=Math.max(r,s,i),c=a-o;return a===o?e=0:r===a?e=(s-i)/c:s===a?e=2+(i-r)/c:i===a&&(e=4+(r-s)/c),(e=Math.min(60*e,360))<0&&(e+=360),n=(o+a)/2,[e,100*(a===o?0:n<=.5?c/(a+o):c/(2-a-o)),100*n]},j.rgb.hsv=function(t){var e,n,r,s,i,o=t[0]/255,a=t[1]/255,c=t[2]/255,h=Math.max(o,a,c),u=h-Math.min(o,a,c),l=function(t){return(h-t)/6/u+.5};return 0===u?s=i=0:(i=u/h,e=l(o),n=l(a),r=l(c),o===h?s=r-n:a===h?s=1/3+e-r:c===h&&(s=2/3+n-e),s<0?s+=1:s>1&&(s-=1)),[360*s,100*i,100*h]},j.rgb.hwb=function(t){var e=t[0],n=t[1],r=t[2];return[j.rgb.hsl(t)[0],100*(1/255*Math.min(e,Math.min(n,r))),100*(r=1-1/255*Math.max(e,Math.max(n,r)))]},j.rgb.cmyk=function(t){var e,n=t[0]/255,r=t[1]/255,s=t[2]/255;return[100*((1-n-(e=Math.min(1-n,1-r,1-s)))/(1-e)||0),100*((1-r-e)/(1-e)||0),100*((1-s-e)/(1-e)||0),100*e]},j.rgb.keyword=function(t){var e=D[t];if(e)return e;var n,r,s,i=1/0;for(var o in F)if(F.hasOwnProperty(o)){var a=F[o],c=(r=t,s=a,Math.pow(r[0]-s[0],2)+Math.pow(r[1]-s[1],2)+Math.pow(r[2]-s[2],2));c<i&&(i=c,n=o)}return n},j.keyword.rgb=function(t){return F[t]},j.rgb.xyz=function(t){var e=t[0]/255,n=t[1]/255,r=t[2]/255;return[100*(.4124*(e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92)),100*(.2126*e+.7152*n+.0722*r),100*(.0193*e+.1192*n+.9505*r)]},j.rgb.lab=function(t){var e=j.rgb.xyz(t),n=e[0],r=e[1],s=e[2];return r/=100,s/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116)-16,500*(n-r),200*(r-(s=s>.008856?Math.pow(s,1/3):7.787*s+16/116))]},j.hsl.rgb=function(t){var e,n,r,s,i,o=t[0]/360,a=t[1]/100,c=t[2]/100;if(0===a)return[i=255*c,i,i];e=2*c-(n=c<.5?c*(1+a):c+a-c*a),s=[0,0,0];for(var h=0;h<3;h++)(r=o+1/3*-(h-1))<0&&r++,r>1&&r--,i=6*r<1?e+6*(n-e)*r:2*r<1?n:3*r<2?e+(n-e)*(2/3-r)*6:e,s[h]=255*i;return s},j.hsl.hsv=function(t){var e=t[0],n=t[1]/100,r=t[2]/100,s=n,i=Math.max(r,.01);return n*=(r*=2)<=1?r:2-r,s*=i<=1?i:2-i,[e,100*(0===r?2*s/(i+s):2*n/(r+n)),100*((r+n)/2)]},j.hsv.rgb=function(t){var e=t[0]/60,n=t[1]/100,r=t[2]/100,s=Math.floor(e)%6,i=e-Math.floor(e),o=255*r*(1-n),a=255*r*(1-n*i),c=255*r*(1-n*(1-i));switch(r*=255,s){case 0:return[r,c,o];case 1:return[a,r,o];case 2:return[o,r,c];case 3:return[o,a,r];case 4:return[c,o,r];case 5:return[r,o,a]}},j.hsv.hsl=function(t){var e,n,r,s=t[0],i=t[1]/100,o=t[2]/100,a=Math.max(o,.01);return r=(2-i)*o,n=i*a,[s,100*(n=(n/=(e=(2-i)*a)<=1?e:2-e)||0),100*(r/=2)]},j.hwb.rgb=function(t){var e,n,r,s,i,o,a,c=t[0]/360,h=t[1]/100,u=t[2]/100,l=h+u;switch(l>1&&(h/=l,u/=l),r=6*c-(e=Math.floor(6*c)),0!=(1&e)&&(r=1-r),s=h+r*((n=1-u)-h),e){default:case 6:case 0:i=n,o=s,a=h;break;case 1:i=s,o=n,a=h;break;case 2:i=h,o=n,a=s;break;case 3:i=h,o=s,a=n;break;case 4:i=s,o=h,a=n;break;case 5:i=n,o=h,a=s}return[255*i,255*o,255*a]},j.cmyk.rgb=function(t){var e=t[0]/100,n=t[1]/100,r=t[2]/100,s=t[3]/100;return[255*(1-Math.min(1,e*(1-s)+s)),255*(1-Math.min(1,n*(1-s)+s)),255*(1-Math.min(1,r*(1-s)+s))]},j.xyz.rgb=function(t){var e,n,r,s=t[0]/100,i=t[1]/100,o=t[2]/100;return n=-.9689*s+1.8758*i+.0415*o,r=.0557*s+-.204*i+1.057*o,e=(e=3.2406*s+-1.5372*i+-.4986*o)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,r=r>.0031308?1.055*Math.pow(r,1/2.4)-.055:12.92*r,[255*(e=Math.min(Math.max(0,e),1)),255*(n=Math.min(Math.max(0,n),1)),255*(r=Math.min(Math.max(0,r),1))]},j.xyz.lab=function(t){var e=t[0],n=t[1],r=t[2];return n/=100,r/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(e-n),200*(n-(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116))]},j.lab.xyz=function(t){var e,n,r,s=t[0];e=t[1]/500+(n=(s+16)/116),r=n-t[2]/200;var i=Math.pow(n,3),o=Math.pow(e,3),a=Math.pow(r,3);return n=i>.008856?i:(n-16/116)/7.787,e=o>.008856?o:(e-16/116)/7.787,r=a>.008856?a:(r-16/116)/7.787,[e*=95.047,n*=100,r*=108.883]},j.lab.lch=function(t){var e,n=t[0],r=t[1],s=t[2];return(e=360*Math.atan2(s,r)/2/Math.PI)<0&&(e+=360),[n,Math.sqrt(r*r+s*s),e]},j.lch.lab=function(t){var e,n=t[0],r=t[1];return e=t[2]/360*2*Math.PI,[n,r*Math.cos(e),r*Math.sin(e)]},j.rgb.ansi16=function(t){var e=t[0],n=t[1],r=t[2],s=1 in arguments?arguments[1]:j.rgb.hsv(t)[2];if(0===(s=Math.round(s/50)))return 30;var i=30+(Math.round(r/255)<<2|Math.round(n/255)<<1|Math.round(e/255));return 2===s&&(i+=60),i},j.hsv.ansi16=function(t){return j.rgb.ansi16(j.hsv.rgb(t),t[2])},j.rgb.ansi256=function(t){var e=t[0],n=t[1],r=t[2];return e===n&&n===r?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},j.ansi16.rgb=function(t){var e=t%10;if(0===e||7===e)return t>50&&(e+=3.5),[e=e/10.5*255,e,e];var n=.5*(1+~~(t>50));return[(1&e)*n*255,(e>>1&1)*n*255,(e>>2&1)*n*255]},j.ansi256.rgb=function(t){if(t>=232){var e=10*(t-232)+8;return[e,e,e]}var n;return t-=16,[Math.floor(t/36)/5*255,Math.floor((n=t%36)/6)/5*255,n%6/5*255]},j.rgb.hex=function(t){var e=(((255&Math.round(t[0]))<<16)+((255&Math.round(t[1]))<<8)+(255&Math.round(t[2]))).toString(16).toUpperCase();return"000000".substring(e.length)+e},j.hex.rgb=function(t){var e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];var n=e[0];3===e[0].length&&(n=n.split("").map((function(t){return t+t})).join(""));var r=parseInt(n,16);return[r>>16&255,r>>8&255,255&r]},j.rgb.hcg=function(t){var e,n=t[0]/255,r=t[1]/255,s=t[2]/255,i=Math.max(Math.max(n,r),s),o=Math.min(Math.min(n,r),s),a=i-o;return e=a<=0?0:i===n?(r-s)/a%6:i===r?2+(s-n)/a:4+(n-r)/a+4,e/=6,[360*(e%=1),100*a,100*(a<1?o/(1-a):0)]},j.hsl.hcg=function(t){var e=t[1]/100,n=t[2]/100,r=1,s=0;return(r=n<.5?2*e*n:2*e*(1-n))<1&&(s=(n-.5*r)/(1-r)),[t[0],100*r,100*s]},j.hsv.hcg=function(t){var e=t[1]/100,n=t[2]/100,r=e*n,s=0;return r<1&&(s=(n-r)/(1-r)),[t[0],100*r,100*s]},j.hcg.rgb=function(t){var e=t[0]/360,n=t[1]/100,r=t[2]/100;if(0===n)return[255*r,255*r,255*r];var s,i=[0,0,0],o=e%1*6,a=o%1,c=1-a;switch(Math.floor(o)){case 0:i[0]=1,i[1]=a,i[2]=0;break;case 1:i[0]=c,i[1]=1,i[2]=0;break;case 2:i[0]=0,i[1]=1,i[2]=a;break;case 3:i[0]=0,i[1]=c,i[2]=1;break;case 4:i[0]=a,i[1]=0,i[2]=1;break;default:i[0]=1,i[1]=0,i[2]=c}return s=(1-n)*r,[255*(n*i[0]+s),255*(n*i[1]+s),255*(n*i[2]+s)]},j.hcg.hsv=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e),r=0;return n>0&&(r=e/n),[t[0],100*r,100*n]},j.hcg.hsl=function(t){var e=t[1]/100,n=t[2]/100*(1-e)+.5*e,r=0;return n>0&&n<.5?r=e/(2*n):n>=.5&&n<1&&(r=e/(2*(1-n))),[t[0],100*r,100*n]},j.hcg.hwb=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e);return[t[0],100*(n-e),100*(1-n)]},j.hwb.hcg=function(t){var e=t[1]/100,n=1-t[2]/100,r=n-e,s=0;return r<1&&(s=(n-r)/(1-r)),[t[0],100*r,100*s]},j.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]},j.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]},j.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]},j.gray.hsl=j.gray.hsv=function(t){return[0,0,t[0]]},j.gray.hwb=function(t){return[0,100,t[0]]},j.gray.cmyk=function(t){return[0,0,0,t[0]]},j.gray.lab=function(t){return[t[0],0,0]},j.gray.hex=function(t){var e=255&Math.round(t[0]/100*255),n=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(n.length)+n},j.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]};var q=U.exports;function $(t){var e=function(){for(var t={},e=Object.keys(q),n=e.length,r=0;r<n;r++)t[e[r]]={distance:-1,parent:null};return t}(),n=[t];for(e[t].distance=0;n.length;)for(var r=n.pop(),s=Object.keys(q[r]),i=s.length,o=0;o<i;o++){var a=s[o],c=e[a];-1===c.distance&&(c.distance=e[r].distance+1,c.parent=r,n.unshift(a))}return e}function X(t,e){return function(n){return e(t(n))}}function J(t,e){for(var n=[e[t].parent,t],r=q[e[t].parent][t],s=e[t].parent;e[s].parent;)n.unshift(e[s].parent),r=X(q[e[s].parent][s],r),s=e[s].parent;return r.conversion=n,r}var Q=U.exports,K=function(t){for(var e=$(t),n={},r=Object.keys(e),s=r.length,i=0;i<s;i++){var o=r[i];null!==e[o].parent&&(n[o]=J(o,e))}return n},Z={};Object.keys(Q).forEach((function(t){Z[t]={},Object.defineProperty(Z[t],"channels",{value:Q[t].channels}),Object.defineProperty(Z[t],"labels",{value:Q[t].labels});var e=K(t);Object.keys(e).forEach((function(n){var r=e[n];Z[t][n]=function(t){var e=function(e){if(null==e)return e;arguments.length>1&&(e=Array.prototype.slice.call(arguments));var n=t(e);if("object"==typeof n)for(var r=n.length,s=0;s<r;s++)n[s]=Math.round(n[s]);return n};return"conversion"in t&&(e.conversion=t.conversion),e}(r),Z[t][n].raw=function(t){var e=function(e){return null==e?e:(arguments.length>1&&(e=Array.prototype.slice.call(arguments)),t(e))};return"conversion"in t&&(e.conversion=t.conversion),e}(r)}))}));var Y=Z,W=O.exports,tt=Y,et=[].slice,nt=["keyword","gray","hex"],rt={};Object.keys(tt).forEach((function(t){rt[et.call(tt[t].labels).sort().join("")]=t}));var st={};function it(t,e){if(!(this instanceof it))return new it(t,e);if(e&&e in nt&&(e=null),e&&!(e in tt))throw new Error("Unknown model: "+e);var n,r;if(null==t)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(t instanceof it)this.model=t.model,this.color=t.color.slice(),this.valpha=t.valpha;else if("string"==typeof t){var s=W.get(t);if(null===s)throw new Error("Unable to parse color from string: "+t);this.model=s.model,r=tt[this.model].channels,this.color=s.value.slice(0,r),this.valpha="number"==typeof s.value[r]?s.value[r]:1}else if(t.length){this.model=e||"rgb",r=tt[this.model].channels;var i=et.call(t,0,r);this.color=ht(i,r),this.valpha="number"==typeof t[r]?t[r]:1}else if("number"==typeof t)t&=16777215,this.model="rgb",this.color=[t>>16&255,t>>8&255,255&t],this.valpha=1;else{this.valpha=1;var o=Object.keys(t);"alpha"in t&&(o.splice(o.indexOf("alpha"),1),this.valpha="number"==typeof t.alpha?t.alpha:0);var a=o.sort().join("");if(!(a in rt))throw new Error("Unable to parse color from object: "+JSON.stringify(t));this.model=rt[a];var c=tt[this.model].labels,h=[];for(n=0;n<c.length;n++)h.push(t[c[n]]);this.color=ht(h)}if(st[this.model])for(r=tt[this.model].channels,n=0;n<r;n++){var u=st[this.model][n];u&&(this.color[n]=u(this.color[n]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&&Object.freeze(this)}function ot(t,e,n){return(t=Array.isArray(t)?t:[t]).forEach((function(t){(st[t]||(st[t]=[]))[e]=n})),t=t[0],function(r){var s;return arguments.length?(n&&(r=n(r)),(s=this[t]()).color[e]=r,s):(s=this[t]().color[e],n&&(s=n(s)),s)}}function at(t){return function(e){return Math.max(0,Math.min(t,e))}}function ct(t){return Array.isArray(t)?t:[t]}function ht(t,e){for(var n=0;n<e;n++)"number"!=typeof t[n]&&(t[n]=0);return t}it.prototype={toString:function(){return this.string()},toJSON:function(){return this[this.model]()},string:function(t){var e=this.model in W.to?this:this.rgb(),n=1===(e=e.round("number"==typeof t?t:1)).valpha?e.color:e.color.concat(this.valpha);return W.to[e.model](n)},percentString:function(t){var e=this.rgb().round("number"==typeof t?t:1),n=1===e.valpha?e.color:e.color.concat(this.valpha);return W.to.rgb.percent(n)},array:function(){return 1===this.valpha?this.color.slice():this.color.concat(this.valpha)},object:function(){for(var t={},e=tt[this.model].channels,n=tt[this.model].labels,r=0;r<e;r++)t[n[r]]=this.color[r];return 1!==this.valpha&&(t.alpha=this.valpha),t},unitArray:function(){var t=this.rgb().color;return t[0]/=255,t[1]/=255,t[2]/=255,1!==this.valpha&&t.push(this.valpha),t},unitObject:function(){var t=this.rgb().object();return t.r/=255,t.g/=255,t.b/=255,1!==this.valpha&&(t.alpha=this.valpha),t},round:function(t){return t=Math.max(t||0,0),new it(this.color.map(function(t){return function(e){return function(t,e){return Number(t.toFixed(e))}(e,t)}}(t)).concat(this.valpha),this.model)},alpha:function(t){return arguments.length?new it(this.color.concat(Math.max(0,Math.min(1,t))),this.model):this.valpha},red:ot("rgb",0,at(255)),green:ot("rgb",1,at(255)),blue:ot("rgb",2,at(255)),hue:ot(["hsl","hsv","hsl","hwb","hcg"],0,(function(t){return(t%360+360)%360})),saturationl:ot("hsl",1,at(100)),lightness:ot("hsl",2,at(100)),saturationv:ot("hsv",1,at(100)),value:ot("hsv",2,at(100)),chroma:ot("hcg",1,at(100)),gray:ot("hcg",2,at(100)),white:ot("hwb",1,at(100)),wblack:ot("hwb",2,at(100)),cyan:ot("cmyk",0,at(100)),magenta:ot("cmyk",1,at(100)),yellow:ot("cmyk",2,at(100)),black:ot("cmyk",3,at(100)),x:ot("xyz",0,at(100)),y:ot("xyz",1,at(100)),z:ot("xyz",2,at(100)),l:ot("lab",0,at(100)),a:ot("lab",1),b:ot("lab",2),keyword:function(t){return arguments.length?new it(t):tt[this.model].keyword(this.color)},hex:function(t){return arguments.length?new it(t):W.to.hex(this.rgb().round().color)},rgbNumber:function(){var t=this.rgb().color;return(255&t[0])<<16|(255&t[1])<<8|255&t[2]},luminosity:function(){for(var t=this.rgb().color,e=[],n=0;n<t.length;n++){var r=t[n]/255;e[n]=r<=.03928?r/12.92:Math.pow((r+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),n=t.luminosity();return e>n?(e+.05)/(n+.05):(n+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},isDark:function(){var t=this.rgb().color;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},isLight:function(){return!this.isDark()},negate:function(){for(var t=this.rgb(),e=0;e<3;e++)t.color[e]=255-t.color[e];return t},lighten:function(t){var e=this.hsl();return e.color[2]+=e.color[2]*t,e},darken:function(t){var e=this.hsl();return e.color[2]-=e.color[2]*t,e},saturate:function(t){var e=this.hsl();return e.color[1]+=e.color[1]*t,e},desaturate:function(t){var e=this.hsl();return e.color[1]-=e.color[1]*t,e},whiten:function(t){var e=this.hwb();return e.color[1]+=e.color[1]*t,e},blacken:function(t){var e=this.hwb();return e.color[2]+=e.color[2]*t,e},grayscale:function(){var t=this.rgb().color,e=.3*t[0]+.59*t[1]+.11*t[2];return it.rgb(e,e,e)},fade:function(t){return this.alpha(this.valpha-this.valpha*t)},opaquer:function(t){return this.alpha(this.valpha+this.valpha*t)},rotate:function(t){var e=this.hsl(),n=e.color[0];return n=(n=(n+t)%360)<0?360+n:n,e.color[0]=n,e},mix:function(t,e){if(!t||!t.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof t);var n=t.rgb(),r=this.rgb(),s=void 0===e?.5:e,i=2*s-1,o=n.alpha()-r.alpha(),a=((i*o==-1?i:(i+o)/(1+i*o))+1)/2,c=1-a;return it.rgb(a*n.red()+c*r.red(),a*n.green()+c*r.green(),a*n.blue()+c*r.blue(),n.alpha()*s+r.alpha()*(1-s))}},Object.keys(tt).forEach((function(t){if(-1===nt.indexOf(t)){var e=tt[t].channels;it.prototype[t]=function(){if(this.model===t)return new it(this);if(arguments.length)return new it(arguments,t);var n="number"==typeof arguments[e]?e:this.valpha;return new it(ct(tt[this.model][t].raw(this.color)).concat(n),t)},it[t]=function(n){return"number"==typeof n&&(n=ht(et.call(arguments),e)),new it(n,t)}}}));var ut=it;function lt(t){return null==t}function ft(t){for(let e=1;e<arguments.length;e++){const n=arguments[e];for(const e in n)t[e]=n[e]}return t}function dt(t){return null!=t&&("function"==typeof t||null!==t.constructor&&t.constructor===Function)}function mt(t){return"object"==typeof t&&!!t}function pt(t){return"number"==typeof t&&!isNaN(t)}function bt(t){return t*Math.PI/180}function gt(t){return t/Math.PI*180}function yt(t){let e=document.createElement("a");return e.href=t,t=e.href,e=null,t}function wt(t){return Math.sign?Math.sign(t):0===(t=+t)||isNaN(t)?Number(t):t>0?1:-1}const vt=[1,1,1,1,2,2,3,0];function Tt(t){const e=t.length;let n="";for(let r=0;r<e;){let s=t[r++];if(128&s){let n=vt[s>>3&7];if(!(64&s)||!n||r+n>e)return null;for(s&=63>>n;n>0;n-=1){const e=t[r++];if(128!=(192&e))return null;s=s<<6|63&e}}n+=String.fromCharCode(s)}return n}function Ot(t,e,n){return t[3*n]=e[0],t[3*n+1]=e[1],t[3*n+2]=e[2],t}function _t(t){return t.flat?t.flat(1/0):t.reduce((t,e)=>t.concat(e),[])}function Mt(t){return t<256?Uint8Array:t<65536?Uint16Array:Uint32Array}function xt(t){return 0===t.indexOf("data:")}function At(t){const e=t.indexOf("base64,"),n=t.substring(e+7),r=window.atob(n),s=r.length,i=new Uint8Array(s);for(let t=0;t<s;t++)i[t]=r.charCodeAt(t);return i.buffer}function It(t){for(let e=1;e<arguments.length;e++){const n=arguments[e];if(n)for(let e=0,r=n.length;e<r;e++)t.push(n[e])}return t.length}const St={};function Et(t,e){if(!Array.isArray(e)){const t=e;e=St[t]=St[t]||ut(e).array().map(t=>t/255)}for(let n=0;n<e.length;n++)t[n]=e[n];return 3===e.length&&(t[3]=1),t}var Nt=Object.freeze({__proto__:null,isNil:lt,extend:ft,isFunction:dt,isObject:mt,isNumber:pt,toRadian:bt,toDegree:gt,getAbsoluteURL:yt,sign:wt,stringFromUTF8Array:Tt,setColumn3:Ot,flatArr:_t,getBatchIdArrayType:Mt,isBase64:xt,base64URLToArrayBuffer:At,pushIn:It,normalizeColor:Et});function Ct(t){return-1===t.indexOf("http://")&&-1===t.indexOf("https://")&&-1===t.indexOf("file://")}function Pt(t){return(t=t||{}).referrerPolicy=t.referrerPolicy||"origin",t.referrer=window&&window.location.href,t}const Rt="undefined"==typeof document?null:document.createElement("canvas");class Lt extends t.worker.Actor{constructor(t,e){super(t),this.mapId=e}initialize(t){t(null)}loadTile(t,e,n){let r=null;e&&e.arraybuffer&&(r=[e.arraybuffer]);const s={mapId:this.mapId,layerId:t,command:"loadTile",params:e};this.send(s,r,n)}abortTileLoading(t,e,n){const r={mapId:this.mapId,layerId:t,command:"abortTileLoading",params:{url:e}};this.broadcast(r,null,n)}addLayer(t,e,n){const r={actorId:this.actorId,mapId:this.mapId,layerId:t,command:"addLayer",params:{options:e}};this.broadcast(r,null,n)}removeLayer(t,e){const n={mapId:this.mapId,layerId:t,command:"removeLayer"};this.broadcast(n,null,e)}requestImage({url:t},e){const n=new Image;n.onload=()=>{if(!this.isActive())return;if(!Rt)return void e(new Error("There is no canvas to draw image!"));const t=function(t){if(kt(t.width)&&kt(t.height))return t;let e=t.width,n=t.height;kt(e)||(e=Bt(e));kt(n)||(n=Bt(n));const r=document.createElement("canvas");r.width=e,r.height=n,r.getContext("2d").drawImage(t,0,0,e,n);const s=t.src,i=s.lastIndexOf("/")+1,o=s.substring(i);return console.warn(`Texture(${o})'s size is not power of two, resize from (${t.width}, ${t.height}) to (${e}, ${n})`),r}(n);Rt.width=t.width,Rt.height=t.height;const r=Rt.getContext("2d",{willReadFrequently:!0});r.drawImage(t,0,0,t.width,t.height);const s=r.getImageData(0,0,t.width,t.height),i={width:t.width,height:t.height,data:new Uint8Array(s.data)};e(null,i,[i.data.buffer])},n.onerror=function(t){e(t)},n.src=t}}function kt(t){return 0==(t&t-1)&&0!==t}function Bt(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}class Ut{constructor(t,e,n){this.t=t,this.max=e,this.currentSize=0,this.onRemove=n,this.reset()}reset(){if(this.data){const t=this.data.values();for(const e of t)this.onRemove(e)}return this.data=new Map,this.currentSize=0,this}clear(){this.reset(),delete this.onRemove}add(t,e){if(!e)return this;if(e.node&&e.node.memorySize&&(this.currentSize+=e.node.memorySize),this.has(t)){const n=this.data.get(t);n&&n.node&&n.node.memorySize&&(this.currentSize-=n.node.memorySize),this.data.delete(t),this.data.set(t,e)}else this.data.set(t,e);return this}shrink(){if(this.currentSize>this.max){let t=!1;const e=this.data.keys();let n=e.next();for(;this.currentSize>this.max&&void 0!==n.value;){!t&&this.data.get(n.value).current&&(t=!0,console.warn(`layer(${this.t})'s maxGPUMemory is not enough, one or more current tiles will be discarded.`));const r=this.getAndRemove(n.value);r&&this.onRemove(r),n=e.next()}}}has(t){return this.data.has(t)}keys(){const t=new Array(this.data.size);let e=0;const n=this.data.keys();for(const r of n)t[e++]=r;return t}getAndRemove(t){if(!this.has(t))return null;const e=this.data.get(t);return e.node&&e.node.memorySize&&(this.currentSize-=e.node.memorySize),this.data.delete(t),e}get(t){if(!this.has(t))return null;const e=this.data.get(t);return this.data.delete(t),this.data.set(t,e),e}remove(t){if(!this.has(t))return this;const e=this.data.get(t);return e.node&&e.node.memorySize&&(this.currentSize-=e.node.memorySize),this.data.delete(t),this.onRemove(e),this}setMaxSize(t){return this.max=t,this.shrink(),this}getMemorySize(){let t=0;const e=this.data.values();for(const n of e){const e=n&&n.node;e&&e.memorySize&&(t+=e.memorySize)}return t}markAll(t){const e=this.data.values();for(const n of e)n.current=t}}function Ft(t,e){if(t.scenes&&t.scenes.length)for(let n=0,r=t.scenes.length;n<r;n++){const r=t.scenes[n].nodes;for(let n=0,s=r.length;n<s;n++){const s=[];qt(r[n],s,t,e)}}}const Dt=[],zt=[],jt=[],Gt=[0,0,0],Ht=g.identity([]),Vt=[1,1,1];function qt(t,e,n,r){const s=e.slice(0);if(t.matrix)s.push(t.matrix);else if(t.rotation||t.translation||t.scale){const e=y.fromTranslation(Dt,t.translation||Gt),n=y.fromQuat(zt,t.rotation||Ht),r=y.fromScaling(jt,t.scale||Vt);y.multiply(r,n,r);const i=y.multiply([],e,r);s.push(i)}if(t.children&&t.children.length)for(let e=0,i=t.children.length;e<i;e++)qt(t.children[e],s,n,r);if(void 0!==t.mesh){const e=t.mesh,i=n.meshes[e];if(i){const t=s.slice(0),o=i.primitives;for(let s=0,i=o.length;s<i;s++){const i=o[s];i&&(i.matrices=t,r(i,e,s,n))}}}}function $t(t,e,n){let{byteOffset:r,byteStride:s}=e;const{componentType:i,itemSize:o}=e,a=e.array.buffer,c=i?p.getTypedArrayCtor(i):e.array.constructor;if(r=void 0===r?e.array.byteOffset:r,s=s||0,!s||s===o*c.BYTES_PER_ELEMENT&&r%c.BYTES_PER_ELEMENT==0){const e=new c(a,r+n*o*c.BYTES_PER_ELEMENT,o);return t.set(e),t}s||(s=o*c.BYTES_PER_ELEMENT);const h=new Uint8Array(a,s*n+r,o*c.BYTES_PER_ELEMENT);return new Uint8Array(t.buffer).set(h),t}function Xt(t,e,n,r){t[4*e]=n[r],t[4*e+1]=n[r+4],t[4*e+2]=n[r+8],t[4*e+3]=n[r+12]}var Jt="#include <gl2_vert>\n\nconst float SHIFT_RIGHT_11 = 1.0 / 2048.0;\n\nconst float SHIFT_RIGHT_5 = 1.0 / 32.0;\n\nconst float SHIFT_LEFT_11 = 2048.0;\n\nconst float SHIFT_LEFT_5 = 32.0;\n\nconst float NORMALIZE_6 = 1.0 / 64.0;\n\nconst float NORMALIZE_5 = 1.0 / 32.0;\n\n\n\n#ifdef HAS_POSITION\n\n attribute vec3 POSITION;\n\n#endif\n\n\n\n#if defined(HAS_RGB)\n\n attribute vec3 RGB;\n\n#elif defined(HAS_RGBA)\n\n attribute vec4 RGBA;\n\n#elif defined(HAS_RGB565)\n\n attribute float RGB565;\n\n#endif\n\n\n\nuniform vec4 pointColor;\n\nuniform float pointSize;\n\n\n\nuniform mat4 projViewModelMatrix;\n\nuniform float pointOpacity;\n\n\n\nvarying vec4 vColor;\n\n\n\n#ifdef HAS_NORMAL\n\n #ifdef HAS_NORMAL_OCT16P\n\n attribute vec2 NORMAL_OCT16P;\n\n float signNotZero(float value) {\n\n return value >= 0.0 ? 1.0 : -1.0;\n\n }\n\n vec2 signNotZero(vec2 value) {\n\n return vec2(signNotZero(value.x), signNotZero(value.y));\n\n }\n\n vec3 octDecode(vec2 encoded, float range) {\n\n if (encoded.x == 0.0 && encoded.y == 0.0) {\n\n return vec3(0.0, 0.0, 0.0);\n\n }\n\n encoded = encoded / range * 2.0 - 1.0;\n\n vec3 v = vec3(encoded.x, encoded.y, 1.0 - abs(encoded.x) - abs(encoded.y));\n\n if (v.z < 0.0) {\n\n v.xy = (1.0 - abs(v.yx)) * signNotZero(v.xy);\n\n }\n\n return normalize(v);\n\n }\n\n vec3 octDecode(vec2 encoded) {\n\n return octDecode(encoded, 255.0);\n\n }\n\n #else\n\n attribute vec3 NORMAL;\n\n #endif\n\n uniform vec3 lightDir;\n\n uniform mat3 modelNormalMatrix;\n\n uniform mat4 positionMatrix;\n\n float getLambertDiffuse(vec3 lightDir, vec3 normal) {\n\n return max(dot(-lightDir, normal), 0.0);\n\n }\n\n#endif\n\n#ifdef PICKING_MODE\n\n #include <fbo_picking_vert>\n\n#endif\n\n#include <draco_decode_vert>\n\nvoid main() {\n\n #ifdef HAS_POSITION\n\n vec3 localPos = decode_getPosition(POSITION);\n\n #endif\n\n gl_Position = projViewModelMatrix * vec4(localPos, 1.0);\n\n gl_PointSize = pointSize;\n\n\n\n #ifdef PICKING_MODE\n\n fbo_picking_setData(gl_Position.w, true);\n\n #else\n\n #if defined(HAS_RGB)\n\n vColor = vec4(RGB / 255.0, 1.0) * pointOpacity;\n\n #elif defined(HAS_RGBA)\n\n vColor = RGBA / 255.0 * pointOpacity;\n\n #elif defined(HAS_RGB565)\n\n float compressed = RGB565;\n\n float r = floor(compressed * SHIFT_RIGHT_11);\n\n compressed -= r * SHIFT_LEFT_11;\n\n float g = floor(compressed * SHIFT_RIGHT_5);\n\n compressed -= g * SHIFT_LEFT_5;\n\n float b = compressed;\n\n vec3 rgb = vec3(r * NORMALIZE_5, g * NORMALIZE_6, b * NORMALIZE_5);\n\n vColor = vec4(rgb, 1.0);\n\n #else\n\n vColor = pointColor;\n\n #endif\n\n\n\n #ifdef HAS_NORMAL\n\n mat3 positionNormalMatrix = mat3(positionMatrix);\n\n mat3 normalMatrix = modelNormalMatrix * positionNormalMatrix;\n\n #ifdef HAS_NORMAL_OCT16P\n\n vec3 localNormal = octDecode(NORMAL_OCT16P);\n\n #else\n\n vec3 localNormal = NORMAL;\n\n #endif\n\n vec3 normal = normalize(normalMatrix * localNormal);\n\n float colorStrength = getLambertDiffuse(lightDir, normal);\n\n colorStrength = max(colorStrength, 0.5);\n\n vColor *= colorStrength;\n\n #endif\n\n #endif\n\n\n\n\n\n\n\n\n\n}\n\n";const Qt=new Array(3),Kt=new Array(3),Zt=[40680631590769,40680631590769,40408299984661.445];function Yt(t,e,n,r){const s=Zt,i=Math.cos(n);Qt[0]=i*Math.cos(e),Qt[1]=i*Math.sin(e),Qt[2]=Math.sin(n),ce(Qt,Qt),w.multiply(Kt,s,Qt);const o=Math.sqrt(w.dot(Qt,Kt));var a,c,h;return c=Kt,h=o,(a=Kt)[0]=c[0]/h,a[1]=c[1]/h,a[2]=c[2]/h,w.scale(Qt,Qt,r),w.add(t,Kt,Qt)}const Wt=[1/6378137,1/6378137,1/6356752.314245179],te=[1/40680631590769,1/40680631590769,1/40408299984661.445],ee=new Array(3),ne=new Array(3),re=new Array(3);function se(t,e){const n=te,r=function(t,e,n,r,s){const i=e[0],o=e[1],a=e[2],c=n[0],h=n[1],u=n[2],l=i*i*c*c,f=o*o*h*h,d=a*a*u*u,m=l+f+d,p=Math.sqrt(1/m),b=w.scale(ie,e,p);if(m<s)return isFinite(p)?b:void 0;const g=r[0],y=r[1],v=r[2],T=oe;T[0]=b[0]*g*2,T[1]=b[1]*y*2,T[2]=b[2]*v*2;let O,_,M,x,A,I,S,E,N,C,P,R=(1-p)*ae(e)/(.5*ae(T)),L=0;do{R-=L,M=1/(1+R*g),x=1/(1+R*y),A=1/(1+R*v),I=M*M,S=x*x,E=A*A,N=I*M,C=S*x,P=E*A,O=l*I+f*S+d*E-1,_=l*N*g+f*C*y+d*P*v;L=O/(-2*_)}while(Math.abs(O)>1e-12);return t[0]=i*M,t[1]=o*x,t[2]=a*A,t}(ee,e,Wt,n,.1);let s=w.mul(ne,r,n);s=ce(s,s);const i=w.sub(re,e,r),o=Math.atan2(s[1],s[0]),a=Math.asin(s[2]),c=wt(w.dot(i,e))*ae(i);return t[0]=gt(o),t[1]=gt(a),t[2]=c,t}const ie=new Array(3),oe=new Array(3);function ae(t){return w.length(t)}function ce(t,e){const n=e[0],r=e[1],s=e[2];let i=n*n+r*r+s*s;return i>0&&(i=Math.sqrt(i),t[0]=e[0]/i,t[1]=e[1]/i,t[2]=e[2]/i),t}function he(t,e){return w.multiply(e,t,te),w.normalize(e,e)}function ue(t,e){const n=t[0],r=t[1],s=Math.cos(r),i=s*Math.cos(n),o=s*Math.sin(n),a=Math.sin(r);return e.x=i,e.y=o,e.z=a,w.normalize(e,e)}var le=Object.freeze({__proto__:null,radianToCartesian3:Yt,cartesian3ToDegree:se,normalizeCartesian:ce,geodeticSurfaceNormal:he,geodeticSurfaceNormalCartographic:ue});function fe(t,e,n,r){n=n||0,r=r||n;const s=Math.abs(t-e);return s<=r||s<=n*Math.max(Math.abs(t),Math.abs(e))}function de(t,e){let n="";for(let r=0;r<4;r++){const s=t.getUint8(e+r);n+=String.fromCharCode(s)}return n}const me="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;function pe(t,e,n){const r=new Uint8Array(t,e,n);return me?JSON.parse(me.decode(r)):JSON.parse(Tt(r))}function be(t,e,n){const r=new Uint8Array(t,e,n);return me?JSON.parse(me.decode(r)):JSON.parse(Tt(r))}function ge(t,e,n){return{offset:e,byteLength:n}}function ye(t,e,n,r){const{byteOffset:s,componentType:i,type:o}=t,{ctor:a,type:c}=Me(i||"UNSIGNED_SHORT"),h=Oe(o);return{byteStride:0,byteOffset:s+n,itemSize:h,count:r*h,componentType:c,array:new a(e,n+s,r*h)}}function we(t,e,n,r){const s=ye(t,e,n,r);return s.array.buffer.byteLength!==e.byteLength&&(s.array=s.array.slice()),s}function ve(t,e,n,r){const{byteOffset:s,componentType:i,type:o}=t,{ctor:a}=Me(i||"UNSIGNED_SHORT"),c=Oe(o),h=new a(e,s,n*c);return 1===c?h[r]:h.subarray(r*c,r*c+c)}const Te={"SCALAR":1,"VEC2":2,"VEC3":3,"VEC4":4};function Oe(t){return t?Te[t]:1}const _e={"BYTE":{ctor:Int8Array,type:5120,name:"Int8Array"},"UNSIGNED_BYTE":{ctor:Uint8Array,type:5121,name:"Uint8Array"},"SHORT":{ctor:Int16Array,type:5122,name:"Int16Array"},"UNSIGNED_SHORT":{ctor:Uint16Array,type:5123,name:"Uint16Array"},"INT":{ctor:Int32Array,type:5124,name:"Int32Array"},"UNSIGNED_INT":{ctor:Uint32Array,type:5125,name:"Uint32Array"},"FLOAT":{ctor:Float32Array,type:5126,name:"Float32Array"},"DOUBLE":{ctor:Float64Array,type:5126,name:"Float64Array"}};function Me(t){return _e[t]}function xe(t){for(const e in _e)if(t===_e[e].ctor)return _e[e].type;throw new Error("unrecognized ctor:"+t)}function Ae(t,e,n,r){const s=t,i=e.length/3;for(let t=0;t<i;t++)s[3*t]=e[3*t]/65535*r[0]+n[0],s[3*t+1]=e[3*t+1]/65535*r[1]+n[1],s[3*t+2]=e[3*t+2]/65535*r[2]+n[2];return s}function Ie(t,e,n){const r=t.getUint32(12,!0),s=t.getUint32(16,!0),i=t.getUint32(20,!0),o=t.getUint32(24,!0),a=t.buffer;let c,h={},u={},l=null;r>0&&(h=pe(a,e,r),e+=r),s>0&&(c=function(t,e,n){return{offset:e,byteLength:n}}(0,e,s),e+=s),i>0&&(u=be(a,e,i),e+=i);const f=ge(0,e,o);return l=a.slice(f.offset,f.offset+f.byteLength),n.push(l),{featureTable:h,featureTableBin:c,batchTable:u,batchTableBin:l}}const Se={up:{south:"east",north:"west",west:"south",east:"north"},down:{south:"west",north:"east",west:"north",east:"south"},south:{up:"west",down:"east",west:"down",east:"up"},north:{up:"east",down:"west",west:"up",east:"down"},west:{up:"north",down:"south",north:"down",south:"up"},east:{up:"south",down:"north",north:"up",south:"down"}},Ee={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},Ne={},Ce={east:[],north:[],up:[],west:[],south:[],down:[]};let Pe=[],Re=[],Le=[];const ke=[0,0,0];function Be(t,e,n){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=e[0],n[13]=e[1],n[14]=e[2],n[15]=t[15],n}const Ue=function(t,e){const n=Se[t][e];let r;const s=t+e;return Ne[s]?r=Ne[s]:(r=function(r,s,i){if(w.equals(r,ke))w.copy(Pe,Ee[t]),w.copy(Re,Ee[e]),w.copy(Le,Ee[n]);else if(fe(r[0],0,1e-14)&&fe(r[1],0,1e-14)){const s=wt(r[2]);w.copy(Pe,Ee[t]),"east"!==t&&"west"!==t&&w.scale(Pe,Pe,s),w.copy(Re,Ee[e]),"east"!==e&&"west"!==e&&w.scale(Re,Re,s),w.copy(Le,Ee[n]),"east"!==n&&"west"!==n&&w.scale(Le,Le,s)}else{he(r,Ce.up);const s=Ce.up,i=Ce.east;i[0]=-r[1],i[1]=r[0],i[2]=0,w.normalize(Ce.east,i),w.cross(Ce.north,s,i),w.scale(Ce.down,Ce.up,-1),w.scale(Ce.west,Ce.east,-1),w.scale(Ce.south,Ce.north,-1),Pe=Ce[t],Re=Ce[e],Le=Ce[n]}return i[0]=Pe[0],i[1]=Pe[1],i[2]=Pe[2],i[3]=0,i[4]=Re[0],i[5]=Re[1],i[6]=Re[2],i[7]=0,i[8]=Le[0],i[9]=Le[1],i[10]=Le[2],i[11]=0,i[12]=r[0],i[13]=r[1],i[14]=r[2],i[15]=1,i},Ne[s]=r),r}("east","north"),Fe=[],De=[],ze=[],je=[],Ge=[],He=[],Ve=[],qe={x:0,y:0},$e={x:0,y:0},Xe=Math.PI/180;let Je;const Qe={width:100,height:10};function Ke(){if(!Je){const{width:t,height:e}=Qe;OffscreenCanvas?Je=new OffscreenCanvas(t,e):(Je=document.createElement("canvas"),Je.width=t,Je.height=e)}return Je}class Ze{constructor(t,e={}){if(!Array.isArray(t))return void console.error("colors is not array");if(t.length<2)return void console.error("colors.length should >1");this.colors=t;let n=1/0,r=-1/0;for(let e=0,s=t.length;e<s;e++){const s=t[e][0];n=Math.min(s,n),r=Math.max(s,r)}this.min=n,this.max=r,this.valueOffset=this.max-this.min,this.options=Object.assign({},Qe,e),this.s()}getImageData(){return this.imgData}s(){const t=Ke(),{width:e,height:n}=this.options;t.width=e,t.height=n;const r=t.getContext("2d");r.clearRect(0,0,t.width,t.height);const s=r.createLinearGradient(0,0,t.width,0),{colors:i,valueOffset:o}=this;for(let t=0,e=i.length;t<e;t++){const[e,n]=i[t],r=(e-this.min)/o;s.addColorStop(r,n)}r.fillStyle=s,r.fillRect(0,0,t.width,t.height),this.imgData=r.getImageData(0,0,t.width,t.height)}getColor(t){t=Math.max(this.min,t);const e=((t=Math.min(t,this.max))-this.min)/this.valueOffset;let n=Math.round(e*this.imgData.width);n=Math.min(n,this.imgData.width-1);const r=4*n;return[this.imgData.data[r],this.imgData.data[r+1],this.imgData.data[r+2],this.imgData.data[r+3]]}}var Ye;function We(t,e){for(let n=0;n<t.stops.length;n++)if(e===t.stops[n][0])return t.stops[n][1];return t.default}function tn(t,e){for(var n=0;n<t.stops.length&&!(e<t.stops[n][0]);n++);return t.stops[Math.max(n-1,0)][1]}function en(t,e){for(var n=void 0!==t.base?t.base:1,r=0;!(r>=t.stops.length||e<=t.stops[r][0]);)r++;return 0===r?t.stops[r][1]:r===t.stops.length?t.stops[r-1][1]:function t(e,n,r,s,i,o){return"function"==typeof i?function(){var a=i.apply(void 0,arguments),c=o.apply(void 0,arguments);return t(e,n,r,s,a,c)}:i.length?function(t,e,n,r,s,i){var o=[];for(let a=0;a<s.length;a++)o[a]=on(t,e,n,r,s[a],i[a]);return o}(e,n,r,s,i,o):on(e,n,r,s,i,o)}(e,n,t.stops[r-1][0],t.stops[r][0],t.stops[r-1][1],t.stops[r][1])}"function"==typeof Map&&(Ye=new Map);const nn={width:100,height:1};function rn(t,e){const n=t.stops;if(n&&n.length>1){let t;if(Ye){const e=JSON.stringify(n);if(!Ye.has(e)){const t=new Ze(n,nn);Ye.set(e,t)}t=Ye.get(e)}else t=new Ze(n,nn);const[r,s,i,o]=t.getColor(e);return[r/255,s/255,i/255,o/255]}return n&&1===n.length?n[0][1]:null}function sn(t,e){return n=e,r=t.default,void 0!==n?n:void 0!==r?r:void 0!==s?s:null;var n,r,s}function on(t,e,n,r,s,i){var o,a=r-n,c=t-n;return s*(1-(o=1===e?c/a:(Math.pow(e,c)-1)/(Math.pow(e,a)-1)))+i*o}function an(t){return t&&"object"==typeof t&&(t.stops||t.property&&"identity"===t.type)}function cn(t){return function t(e,n){if(!an(e))return function(){return e};e=JSON.parse(JSON.stringify(e));let r=!0,s=!0;const i=e.stops;if(i)for(let e=0;e<i.length;e++)if(an(i[e][1])){const o=t(i[e][1],n);r=r&&o.isZoomConstant,s=s&&o.isFeatureConstant,i[e]=[i[e][0],o]}const o=function t(e,n){var r,s,i;if(an(e)){var o,a=e.stops&&"object"==typeof e.stops[0][0],c=a||void 0!==e.property,h=a||!c,u=e.type||n||"exponential";if("exponential"===u)o=en;else if("interval"===u)o=tn;else if("categorical"===u)o=We;else if("identity"===u)o=sn;else{if("color-interpolate"!==u)throw new Error('Unknown function type "'+u+'"');o=rn}if(a){var l={},f=[];for(let t=0;t<e.stops.length;t++){var d=e.stops[t];void 0===l[d[0].zoom]&&(l[d[0].zoom]={zoom:d[0].zoom,type:e.type,property:e.property,default:e.default,stops:[]}),l[d[0].zoom].stops.push([d[0].value,d[1]])}for(let e in l)f.push([l[e].zoom,t(l[e])]);r=function(t,n){const r=en({stops:f,base:e.base},t)(t,n);return"function"==typeof r?r(t,n):r},s=!1,i=!1}else h?(r=function(t){const n=o(e,t);return"function"==typeof n?n(t):n},s=!0,i=!1):(r=function(t,n){const r=o(e,n?n[e.property]:null);return"function"==typeof r?r(t,n):r},s=!1,i=!0)}else r=function(){return e},s=!0,i=!0;return r.isZoomConstant=i,r.isFeatureConstant=s,r}(e,n);return o.isZoomConstant=r&&o.isZoomConstant,o.isFeatureConstant=s&&o.isFeatureConstant,o}(t,"exponential")}const{getTextureMagFilter:hn,getTextureMinFilter:un,getTextureWrap:ln,getMaterialType:fn,getMaterialFormat:dn,getPrimitive:mn,getUniqueREGLBuffer:pn}=n.REGLHelper,bn=[1,0,0,0,0,0,1,0,0,-1,0,0,0,0,0,1],gn=[0,0,1,0,0,1,0,0,-1,0,0,0,0,0,0,1],{loginIBLResOnCanvas:yn,logoutIBLResOnCanvas:wn,getIBLResOnCanvas:vn,getPBRUniforms:Tn}=n.pbr.PBRUtils,On={factor:0,units:0},_n=[1,1,1,1],Mn=[0,0,0],xn={specularStrength:0,materialShininess:1},An=[1,1,1],In=r.identity([]),Sn=[0,0],En=t=>t.material instanceof n.PhongMaterial,Nn=t=>t.material instanceof n.pbr.StandardMaterial,Cn=[],Pn=new t.Coordinate(0,0),Rn=new t.Point(0,0),Ln=new t.Point(0,0),kn=new t.Point(0,0),Bn=[],Un=[],Fn=[],Dn=[],zn=[],jn=[],Gn=[],Hn=[0,0,0],Vn=[],qn=[],$n={"POSITION":"POSITION","NORMAL":"NORMAL","TEXCOORD_0":"TEXCOORD_0","TEXCOORD_1":"TEXCOORD_1","COLOR_0":"COLOR_0","TANGENT":"TANGENT","_BATCHID":"_BATCHID"},Xn=[0,1,1,2,2,3,3,0,0,4,1,5,2,6,3,7,4,5,5,6,6,7,7,4],Jn=function(t,e){const n=2*Math.PI/t,r=[],s=[];for(let s=0;s<=t;s++){const t=Math.cos(n*s)*e,i=Math.sin(n*s)*e,o=0;r[3*s]=t,r[3*s+1]=i,r[3*s+2]=o}for(let s=t;s<=2*t;s++){const t=Math.cos(n*s)*e,i=Math.sin(n*s)*e,o=0;r[3*s]=o,r[3*s+1]=t,r[3*s+2]=i}for(let s=2*t;s<=3*t;s++){const t=Math.cos(n*s)*e,i=Math.sin(n*s)*e,o=0;r[3*s]=t,r[3*s+1]=o,r[3*s+2]=i}const i=r.length/3-1;for(let e=0;e<i;e++)e!==t-1&&e!==2*t-1&&(s[2*e]=e,s[2*e+1]=e+1);return r.push(0,0,0),r.push(e,0,0),r.push(0,e,0),r.push(0,0,e),s.push(i+1,i+2),s.push(i+1,i+3),s.push(i+1,i+4),{vertices:r,indices:s}}
7
7
  /*!
8
- * @maptalks/gl v0.94.0
8
+ * @maptalks/gl v0.95.0
9
9
  * LICENSE : UNLICENSED
10
10
  * (c) 2016-2023 maptalks.com
11
- */(100,1),Ln=[0,0,0,1],kn=[1,1,1];class Bn{constructor(e,r){this.s=r,this.i=r.getRenderer().canvas,this.pickingFBO=r.getRenderer().pickingFBO,this.o=new t.SpatialReference,this.h=e,this.u=new n.Renderer(e),this.m={},this.p={},this.v={},this.T={},this._={},this.O={},this.M=new n.Scene,this.A=new n.Scene,this.I=new n.Scene,this.S=new n.Scene,this.N=new n.ResourceLoader(e.texture(2)),this.C=this.R.bind(this),this.P=new n.PhongMaterial({"baseColorFactor":[1,1,1,1]}),this.L(),this.k=new n.KHRTechniquesWebglManager(this.h,this.B(),this.N);const s=this.getMap();s.altitudeToPoint&&(this.U=s.altitudeToPoint(100,s.getGLRes())/100)}getI3DMMeshes(){return this.T}getPNTSMeshes(){return this.v}getB3DMMeshes(){return this.p}getPaintedMeshes(){return this.j}getMap(){return this.s.getMap()}paint(t,e,n){const i=n&&n.renderTarget,o=n&&n.sceneFilter,a=this.getMap();if(!t.length||!a)return null;const c=this.D(),h=a.projViewMatrix,u=[],l=[],d=[],m=[],p=[],b=this.F(t),g=[];for(let i=0,o=t.length;i<o;i++){const o=t[i].data.node;let a=this.G(o);if(!a)continue;const c=this.s.H(o.V);o.q&&c.debugShowBoundingVolume&&g.push(o.q);const y=c.heightOffset||0,w=c.coordOffset||dn;this._[o.id]&&(a=this._[o.id],a=Ot(a));let v=c.polygonOffset||an;dt(v)&&(v=v()),Array.isArray(a)||(u[0]=a,a=u);for(let t=0,i=a.length;t<i;t++){const i=a[t].properties.magic;if(a[t].properties.heightOffset===y&&a[t].properties.coordOffset[0]===w[0]&&a[t].properties.coordOffset[1]===w[1]||(this.$(a[t]),a[t].X=r.copy([],a[t].localTransform)),"b3dm"===i){if(a[t].getBoundingBox&&!f(h,a[t].getBoundingBox()))continue;const{batchIdData:e,batchIdMap:r}=a[t].geometry.properties;if(e&&r){const e=a[t].properties.node.V;this.J&&this.J[e]?s.highlightMesh(this.h,a[t],this.J[e],this.K,r):this.J&&this.J[e]||s.highlightMesh(this.h,a[t],null,this.K,r),s.showOnly(this.h,a[t],this.Z&&this.Z[e],this.Y,r)}n&&n.bloom&&a[t].properties.hlBloomMesh&&(a[t].properties.hlBloomMesh.properties.depthFunc="always",a[t].properties.hlBloomMesh.properties.polygonOffset=v,d.push(a[t].properties.hlBloomMesh)),d.push(a[t])}else"pnts"===i?m.push(a[t]):"i3dm"===i&&p.push(a[t]);a[t].properties.isLeaf=!!e[o.id],a[t].properties.level=b.get(o.W),a[t].properties.polygonOffset=v,a[t].tt=o,e[o.id]||l.push(a[t]),this.et(a[t]),this.nt(a[t],o)}}let y=0;const w=this.k.getExcludeFilter();y+=this.rt(this.st,c,[o,mn,w],i,l,d,p),y+=this.rt(this.it,c,[o,pn,w],i,l,d,p),this.k.forEachShader((t,e,n)=>{const r=this.D(n);y+=this.rt(t,r,[o,e],i,l,d,p)}),this.A.setMeshes(m);const v=this.ot();return y+=this.u.render(this.ct,v,this.A,i&&i.fbo),this.j={pntsMeshes:m,i3dmMeshes:p,b3dmMeshes:d},g.forEach(t=>{this.ht(t)}),this.S.setMeshes(g),this.u.render(this.ut,c,this.S,i&&i.fbo),y}ht(t){const e=t.properties.node,n=this.s.H(e.V),s=n.heightOffset||0,a=this.lt(),c=n.ft,h=i.set(En,0,0,a*(s-c));let u=n.rotation||[0,0,0];u=o.fromEuler(An,u[0],u[1],u[2]);const l=n.scale||[1,1,1],f=r.fromRotationTranslationScale(xn,u,h,l);r.multiply(t.localTransform,t.X,f)}rt(t,e,n,r,s,i,o){t.filter=n.filter(t=>!!t),e.debug=!1,e.debug=!1;let a=0;return this.M.setMeshes(i),a+=this.u.render(t,e,this.M,r&&r.fbo),this.I.setMeshes(o),a+=this.u.render(t,e,this.I,r&&r.fbo),a}dt(t,e){return e.tt.pt-t.tt.pt}deleteTile(t){const e=t.node;e.q&&(e.q.geometry.dispose(),e.q.dispose(),delete e.q);const n=e.id;this.bt(n)}bt(t){const e=this.p[t]||this.v[t]||this.T[t]||this._[t]||this.m[t];this._[t]?this.gt(t):e&&(this.yt(e),delete this.p[t],delete this.v[t],delete this.T[t],delete this.m[t])}gt(t){let e=this._[t];e=Ot(e);for(let t=0;t<e.length;t++){const{id:n}=e[t].properties;this.bt(n)}delete this._[t]}yt(t){if(Array.isArray(t))for(let e=0,n=t.length;e<n;e++)this.yt(t[e]);else{s.showOnly(this.h,t),s.highlightMesh(this.h,t);const e=t.geometry.properties.url;if(e){const n=this.O[e];n&&n.refMeshes&&(n.refMeshes.delete(t.uuid),n.refMeshes.size||(n.geometry.dispose(),n.material.dispose(),delete this.O[e]))}else t.geometry.dispose(),t.material&&t.material.dispose();t.dispose()}}remove(){const t=this.s;rn(t.getRenderer().canvas,t.getMap());for(const t in this._)this.gt(t);this._={};for(const t in this.p)this.bt(t);this.p={};for(const t in this.v)this.bt(t);this.v={};for(const t in this.T)this.bt(t);this.T={};for(const t in this.m)this.bt(t);this.m={},this.st&&(this.st.dispose(),delete this.st),this.it&&(this.it.dispose(),delete this.it),this.ct&&(this.ct.dispose(),delete this.ct),this.ut&&(this.ut.dispose(),delete this.ut),this.k.dispose(),this.picking&&this.picking.dispose()}G(t){return this.p[t.id]||this.v[t.id]||this.T[t.id]||this._[t.id]}has(t){return this.G(t)||this.m[t.id]}$(t){const e=t.properties.magic;"b3dm"===e?this.wt(t):"i3dm"===e?this.vt(t):"pnts"===e&&this.Tt(t)}createPntsMesh(t,e,s,i){if(this.v[e]){const t=this.v[e];return console.warn(`pnts mesh with id(${e}) was already created.`),i(null,{id:e,mesh:t}),t}const{pnts:o,featureTable:a,rootIdx:c,compressed_int16_params:h}=t,u=a.POINTS_LENGTH;o.BATCH_ID||(o.BATCH_ID=new Uint8Array(u),o.BATCH_ID.fill(0));const l=new n.Geometry(o,null,u,{static:!0,primitive:"points",positionAttribute:"POSITION",pickingIdAttribute:"BATCH_ID"});l.generateBuffers(this.h);const f={};o.POSITION?f.HAS_POSITION=1:o.POSITION_QUANTIZED&&(f.HAS_POSITION_QUANTIZED=1),o.RGB?f.HAS_RGB=1:o.RGBA?f.HAS_RGBA=1:o.RGB565&&(f.HAS_RGB565=1),(o.NORMAL||o.NORMAL_OCT16P)&&(f.HAS_NORMAL=1,o.NORMAL_OCT16P&&(f.HAS_NORMAL_OCT16P=1)),this._t(f,h),t.featureTable.CONSTANT_RGBA&&(t.featureTable.CONSTANT_RGBA=t.featureTable.CONSTANT_RGBA.map(t=>t/255));const{rtcCenter:d,rtcCoord:m}=t,p=this.s.H(c),b=new n.Mesh(l);return b.properties.magic="pnts",b.properties.id=e,b.properties.node=s,b.properties.count=u,b.properties.batchTable=t.batchTable,b.properties.batchTableBin=t.batchTableBin,b.properties.serviceIndex=c,b.properties.rtcCoord=m,b.properties.rtcCenter=d,b.setDefines(f),Object.defineProperty(b.uniforms,"pointColor",{enumerable:!0,get:function(){return t.featureTable.CONSTANT_RGBA?t.featureTable.CONSTANT_RGBA:p&&p.pointColor||[1,1,1,1]}}),Object.defineProperty(b.uniforms,"pointSize",{enumerable:!0,get:function(){return p&&p.pointSize||2}}),Object.defineProperty(b.uniforms,"pointOpacity",{enumerable:!0,get:function(){return p&&p.pointOpacity||1}}),this.Ot(b,h),this.Tt(b),b.X=r.copy([],b.localTransform),this.v[e]=b,i(null,{id:e,mesh:[b]}),[b]}Tt(t){const{rtcCenter:e,rtcCoord:n,node:s}=t.properties,i=this.Mt(On,n),o=t.localTransform||[];this.xt(o,s,e,n),r.multiply(o,o,i);const a=this.s.H(s.V);if(a.coordOffset){const t=this.At(Mn,s.V,n);r.multiply(o,t,o)}t.setLocalTransform(o),t.properties.heightOffset=a.heightOffset||0,t.properties.coordOffset=a.coordOffset&&a.coordOffset.slice(0)||dn}createI3DMMesh(t,e,s,a){if(this.T[e]){const t=this.T[e];return console.warn(`i3dm mesh with id(${e}) was already created.`),this.m[e]||a(null,{id:e,mesh:t}),t}const c=this.s.H(s.V),h=this.It(s.St),{i3dm:u,featureTable:l,gltf:f,batchTable:d,batchTableBin:m,count:b}=t,g=l.INSTANCES_LENGTH,{rtcCenter:y,rtcCoord:w}=t,v=this.Mt(On,w),T=this.xt(Mn,s,y,w);r.multiply(v,T,v);const{POSITION:_,NORMAL_UP:O,NORMAL_RIGHT:M,SCALE:x,SCALE_NON_UNIFORM:A,INSTANCE_ROTATION:I}=u,S={"instance_vectorA":new Float32Array(4*g),"instance_vectorB":new Float32Array(4*g),"instance_vectorC":new Float32Array(4*g),"aPickingId":new Uint16Array(g)};for(let t=0;t<g;t++)S.aPickingId[t]=t;const E=new Float32Array(3),N=new Float32Array(3),C=[],R=new Float32Array(1),P=new Float32Array(3),L=[],k=[],B=[],U=[],j=new Float32Array(9);!function(t,e){let{byteOffset:n,byteStride:r,count:s}=t;const{componentType:i,itemSize:o}=t,a=t.array.buffer,c=i?p.getTypedArrayCtor(i):t.array.constructor;if(n=void 0===n?t.array.byteOffset:n,r=r||0,s=s||t.array.length/o,(!r||r===o*c.BYTES_PER_ELEMENT)&&n%c.BYTES_PER_ELEMENT==0){const t=new c(a,n,s*o);for(let r=0;r<s*o;r+=o){e(new c(t.buffer,n+r*c.BYTES_PER_ELEMENT,o),r/o)}return}const h=new Uint8Array(o*c.BYTES_PER_ELEMENT);r||(r=o*c.BYTES_PER_ELEMENT);for(let t=0;t<s;t++){const s=new Uint8Array(a,r*t+n,o*c.BYTES_PER_ELEMENT);h.set(s);e(new c(h.buffer),t),s.set(h)}}(_,(t,e)=>{O?(qt(N,M,e),qt(E,O,e),i.cross(C,N,E),i.normalize(C,C),_t(L,N,0),_t(L,E,1),_t(L,C,2),o.fromMat3(k,L)):I?(qt(j,I,e),o.fromMat3(k,j)):o.identity(k),x?(qt(R,x,e),i.set(B,R[0],R[0],R[0])):A?(qt(P,A,e),i.set(B,...P)):i.set(B,1,1,1),r.fromRotationTranslationScale(U,k,t,B),$t(S.instance_vectorA,e,U,0),$t(S.instance_vectorB,e,U,1),$t(S.instance_vectorC,e,U,2)});const D={};for(const t in S)D[t]={buffer:this.h.buffer({dimension:S[t].length/g,data:S[t]}),divisor:1};const F=c.shader||"pbr";let z=0,G=!0;const H=[],V=[];return Ut(f,(t,i,o,a)=>{const c=this.Et(t,i,o,a,s,!0,F,V),{geometry:u,material:l}=c;l&&!l.isReady()&&(G=!1,z++);const f=new n.InstancedMesh(D,g,u,l);c.refMeshes||(c.refMeshes=new Set,c.refMeshes.add(f.uuid)),f.properties.magic="i3dm",f.properties.id=e,f.properties.count=b,f.properties.batchTable=d,f.properties.batchTableBin=m,f.properties.serviceIndex=s.V,f.properties.rtcCoord=w,f.properties.rtcCenter=y,f.properties.node=s;const p=this.Nt(t,u,l,s.V,a);t.compressed_int16_params&&this.Ot(f,t.compressed_int16_params),this.Ct(f,t.attributes);const T=r.identity([]);if(t.matrices&&t.matrices.length)for(let e=0;e<t.matrices.length;e++)r.multiply(T,T,t.matrices[e]);r.multiply(T,h,T),f.setPositionMatrix(T),this.vt(f,v),f.setDefines(p),f.properties.polygonOffset={offset:0,factor:0},H.push(f),delete t.attributes,f.X=r.copy([],f.localTransform)}),Un(V),G?(this.T[e]=H,a(null,{id:e,mesh:H})):(this.m[e]={meshes:H,count:z},H.Rt=a),H}vt(t,e){const{rtcCenter:n,rtcCoord:s,node:i}=t.properties;if(!e){e=this.Mt(On,s);const t=this.xt(Mn,i,n,s);r.multiply(e,t,e)}const o=this.s.H(i.V),a=t.localTransform||[];if(o.coordOffset){const t=this.At(Mn,i.V,s);r.multiply(a,t,e)}else r.copy(a,e);t.setLocalTransform(a),t.properties.heightOffset=o.heightOffset||0,t.properties.coordOffset=o.coordOffset&&o.coordOffset.slice(0)||dn}createB3DMMesh(e,s,i,o){if(e.gltf&&(e.gltf.transferables=null),this.p[s]||this.m[s]){const t=this.p[s];return console.warn(`mesh with id(${s}) was already created.`),this.m[s]||o(null,{id:s,mesh:t}),t}let a;if(i.maxExtent){const e=new t.Extent(i.maxExtent).convertTo(t=>this._pointToPrj(t));a=[e.xmin,e.ymin,e.xmax,e.ymax]}const c=e.gltf,{projCenter:h}=c.extensions.MAPTALKS_RTC,{rtcCoord:u,center:l}=c.extensions.CESIUM_RTC,f=c.asset.sharePosition,d=this.It(i.St);let m;m=f?this.Mt(On,u):this.Pt(On,u,h,i.V);const p=this.s.H(i.V);let b=p.shader||"pbr";if(p.unlit)b="phong";else if(c.materials)for(let t=0;t<c.materials.length;t++)if(c.materials[t]&&c.materials[t].extensions&&c.materials[t].extensions.KHR_materials_unlit){b="phong";break}const g=[],y=[];let w=0,v=!0;return Ut(c,(t,o,c,T)=>{const _=this.Et(t,o,c,T,i,!1,b,g),{geometry:O,material:M}=_;M&&!M.isReady()&&(v=!1,w++);const x=new n.Mesh(O,M);_.refMeshes||(_.refMeshes=new Set,_.refMeshes.add(x.uuid)),x.properties.magic="b3dm",x.properties.id=s,x.properties.node=i,x.properties.batchTable=e.batchTable,x.properties.batchTableBin=e.batchTableBin,x.properties.count=e.featureTable.BATCH_LENGTH,x.properties.serviceIndex=i.V;const A=this.Nt(t,O,M,i.V,T);x.setDefines(A);const I=t.compressUniforms;if(I)for(const t in I)x.setUniform(t,I[t]);t.compressed_int16_params&&this.Ot(x,t.compressed_int16_params),this.Ct(x,t.attributes),a&&(A.USE_MAX_EXTENT=1,x.setUniform("maxPrjExtent",a)),Object.prototype.hasOwnProperty.call(x.uniforms,"polygonOpacity")||Object.defineProperty(x.uniforms,"polygonOpacity",{enumerable:!0,get:function(){return pt(p.opacity)?p.opacity:1}}),Object.prototype.hasOwnProperty.call(x.uniforms,"polygonFill")||Object.defineProperty(x.uniforms,"polygonFill",{enumerable:!0,get:function(){return Et([],p.polygonFill||cn)}}),Object.prototype.hasOwnProperty.call(x.material.uniforms,"hsv")||Object.defineProperty(x.material.uniforms,"hsv",{enumerable:!0,get:function(){return p.hsv||hn}});const S=r.identity([]);if(f&&t.matrices&&t.matrices.length)for(let e=0;e<t.matrices.length;e++)r.multiply(S,S,t.matrices[e]);f&&r.multiply(S,d,S),x.properties.node=i,x.properties.projCenter=h,x.properties.nodeMatrix=S,x.properties.isSharedPosition=f,x.properties.rtcCoord=u,x.properties.rtcCenter=l,this.wt(x,m),y.push(x),delete t.attributes,x.X=r.copy([],x.localTransform)}),Un(g),v?(this.p[s]=y,o(null,{id:s,mesh:y})):(this.m[s]={meshes:y,count:w},y.Rt=o),y}Lt(t){const e=this.s.kt[t.id];if(!e)return;let s,i,o,a;if(e.length){if(2===e.length){const t=e[0],n=e[1];s=Pn.vertices,i=Pn.indices,o=t,a=[n,n,n]}}else{s=e.boxPosition,i=Rn;o=this.s.H(t.V).Bt,a=kn}const c=new n.Geometry({POSITION:s},i,0,{primitive:"lines",positionAttribute:"POSITION"}),h=new n.Mesh(c,new n.Material({lineColor:[.8,.8,.1,1],lineOpacity:1})),u=r.identity([]);r.fromRotationTranslationScale(u,Ln,o,a),h.localTransform=u,h.X=r.copy([],u),h.properties.node=t,t.q=h}Ot(t,e){e.POSITION&&t.setUniform("compressedPositionRange",e.POSITION),e.TEXCOORD_0&&t.setUniform("compressedTexcoordRange_0",e.TEXCOORD_0),e.TEXCOORD_1&&t.setUniform("compressedTexcoordRange_1",e.TEXCOORD_0),e.NORMAL&&t.setUniform("compressedNormalRange",e.NORMAL),e.TANGENT&&t.setUniform("compressedTangentRange",e.TANGENT),e.compressed_ratio&&t.setUniform("compressed_ratio",e.compressed_ratio)}wt(t,e){const{isSharedPosition:n,rtcCoord:s,rtcCenter:i,projCenter:o,nodeMatrix:a,node:c}=t.properties;e||(e=n?this.Mt(On,s):this.Pt(On,s,o,c.V));const h=t.localTransform||r.identity([]);if(n){const t=this.xt(Mn,c,i,s);r.multiply(h,e,a),r.multiply(h,t,h)}else r.multiply(h,e,a);const u=this.s.H(c.V);if(u.coordOffset){const t=this.At(Mn,c.V,s);r.multiply(h,t,h)}t.setLocalTransform(h),t.properties.heightOffset=u.heightOffset||0,t.properties.coordOffset=u.coordOffset&&u.coordOffset.slice(0)||dn}Ct(t,e){if(e&&e.TEXCOORD_0&&e.TEXCOORD_0.extensions&&e.TEXCOORD_0.extensions.WEB3D_quantized_attributes){const n=e.TEXCOORD_0.extensions.WEB3D_quantized_attributes.decodeMatrix;t.setUniform("decodeMatrix",n)}}xt(e,n,s,o){const a=this.getMap(),c=this.s.H(n.V).heightOffset||0,h=new t.Coordinate(o);let u;u=a.altitudeToPoint?this.U:a.distanceToPointAtRes(100,100,a.getGLRes(),h).y/100;const l=n.matrix?r.copy(e,n.matrix):r.identity(e);if(s){ke(l,i.transformMat4(bn,s,l),l)}const f=function(t,e,n,r,s,i,o){e=w.copy(Ue,e);const a=Zt(Ue,e[0]*$e,e[1]*$e,e[2]),c=y.getTranslation(je,n),h=r.ellipsoid;let u;u=0===w.len(c)?w.set(De,0,0,-6378137):re(De,c),Ve.x=u[0],Ve.y=u[1];const l=r.project(Ve,qe);Fe[0]=l.x/s,Fe[1]=l.y/s,Fe[2]=(u[2]+o)*i;const f=Be(a,h,ze),d=function(t,e,n){const r=t[0],s=t[1],i=t[2],o=t[4],a=t[5],c=t[6],h=t[8],u=t[9],l=t[10],f=e[0],d=e[1],m=e[2],p=e[3],b=e[4],g=e[5],y=e[6],w=e[7],v=e[8],T=r*f+o*d+h*m,_=s*f+a*d+u*m,O=i*f+c*d+l*m,M=r*p+o*b+h*g,x=s*p+a*b+u*g,A=i*p+c*b+l*g,I=r*y+o*w+h*v,S=s*y+a*w+u*v,E=i*y+c*w+l*v;return n[0]=T,n[1]=_,n[2]=O,n[3]=0,n[4]=M,n[5]=x,n[6]=A,n[7]=0,n[8]=I,n[9]=S,n[10]=E,n[11]=0,n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=t[15],n}(y.invert(Ge,f),v.fromMat4(He,n),t);return ke(t,Fe,d),t}(l,o,l,a.getProjection(),a.getGLRes(),u,c),d=function(t,e){return w.set(t,e[12],e[13],e[14]),t}(_n,f);let m=this.s.options.offset;if(dt(m)){const t=this.s.Ut(n.id).center;m=m.call(this.s,t)}return i.set(Tn,m[0],m[1],0),i.sub(d,d,Tn),ke(f,d,f),f}At(t,e,n){const s=this.s.H(e);if(!s.coordOffset)return null;const o=this.getMap(),a=o.getGLRes();gn.set(n[0],n[1]);const c=o.coordToPointAtRes(gn,a,wn),h=s.coordOffset,u=gn.set(n[0]+h[0],n[1]+h[1]),l=o.coordToPointAtRes(u,a,vn),f=l.x-c.x,d=l.y-c.y,m=this.lt(),p=i.set(Tn,f,d,(h[2]||0)*m);return r.fromTranslation(t,p)}lt(){const t=this.getMap();let e;return e=t.altitudeToPoint?this.U:t.distanceToPointAtRes(100,100,t.getGLRes(),gn).y/100,e}createCMPTMesh(t,e,n,r){if(this._[e]){const t=this._[e];return console.warn(`mesh with id(${e}) was already created.`),r(null,{id:e,mesh:t}),t}const{content:s}=t,i=[];for(let t=0;t<s.length;t++){const{magic:r}=s[t],o=e+"."+t;"b3dm"===r?this.createB3DMMesh(s[t],o,n,(t,{mesh:e})=>{i.push(e)}):"i3dm"===r?this.createI3DMMesh(s[t],o,n,(t,{mesh:e})=>{i.push(e)}):"pnts"===r?this.createPntsMesh(s[t],o,n,(t,{mesh:e})=>{i.push(e)}):"cmpt"===r&&this.createCMPTMesh(s[t],o,n,(t,{mesh:e})=>{i.push(e)})}return this._[e]=i,r(null,{id:e,mesh:i}),i}Nt(t,e,n,r,s){const i=("phong"===(this.s.H(r).shader||"pbr")?this.st:this.it).getGeometryDefines(e);s.asset&&"S3M"===s.asset.generator&&this.jt(i,e),e.data.uvRegion&&(i.HAS_I3S_UVREGION=1),e.data[e.desc.normalAttribute]&&(i.VertexNormal=1),e.data[e.desc.color0Attribute]&&(i.VertexColor=1),e.data[e.desc.uv0Attribute]&&(i.TexCoord=1),e.data[e.desc.textureCoordMatrixAttribute]&&(i.HAS_TextureCoordMatrix=1),n.get("uTexture")&&(i.COMPUTE_TEXCOORD=1),n.get("uTexture2")&&(i.TexCoord2=1),"MESHOPT"===this.s.Dt&&(i.MeshOPT_Compress=1),this.hasIBL()&&(i.HAS_IBL_LIGHTING=1),t.attributes&&t.attributes.TEXCOORD_0&&"WEB3D_quantized_attributes"===t.attributes.TEXCOORD_0.extensions&&(i.HAS_WEB3D_quantized_attributes_TEXCOORD=1),i.HAS_MIN_ALTITUDE=1,i.HAS_LAYER_OPACITY=1,this._t(i,t.compressed_int16_params);return ft(i,t.compressDefines),i}_t(t,e){e&&Object.keys(e).length>0&&(t.HAS_COMPRESSED_INT16=1,e.POSITION&&(t.HAS_COMPRESSED_INT16_POSITION=1),e.TEXCOORD_0&&(t.HAS_COMPRESSED_INT16_TEXCOORD_0=1),e.TEXCOORD_1&&(t.HAS_COMPRESSED_INT16_TEXCOORD_1=1),e.NORMAL&&(t.HAS_COMPRESSED_INT16_NORMAL=1),e.TANGENT&&(t.HAS_COMPRESSED_INT16_TANGENT=1),e.compressed_ratio&&(t.HAS_COMPRESSED_INT16_RATIO=1))}et(t){const e=this.s.getRenderer();e&&e.updateMaskDefines(t)}jt(t,e){e.data.aNormal&&(t.VertexNormal=1),e.data.instanceId&&(t.Instance=1),e.data.aTexCoord0&&(t.TexCoord=1),e.data.aColor&&(t.VertexColor=1),e.data.aTexCoord1&&(t.TexCoord2=1),e.data.uv2&&(t.InstanceBim=1)}Et(t,e,n,r,s,i,o,a){let c=!1;r.asset&&"S3M"===r.asset.generator&&(c=!0,r.extensions=r.extensions||{});const h=r.url+"-"+e+"-"+n;if(this.O[h])return this.O[h];let u,l;a.push(t);const f=r.materials&&r.materials[t.material],d=r.extensions&&r.extensions.KHR_techniques_webgl,m=this.s.H(s.V);if(d&&f.extensions&&f.extensions.KHR_techniques_webgl){const e=this.Ft(t,r,i,c);u=e.material,l=e.geometry,m.fillEmptyDataInMissingAttribute&&(l.desc.fillEmptyDataInMissingAttribute=!0)}else{l=this.zt(t,i,Cn);const e=m.ambientLight;let n=m.environmentExposure;const s=m.material,c=this.getMap().getLightManager(),h=c&&c.getAmbientLight();if(e&&(!h||h.color)&&void 0===n){const t=h&&h.color?h.color[0]:.2;n=e[0]/t}u=this.Gt(t.material,r,o,s||un,n||1,a,m)}u&&Object.defineProperty(u.uniforms,"alphaTest",{enumerable:!0,get:function(){const t=m.alphaTest;return lt(t)?.1:t}}),u&&!u.isReady()?u.Ht=s.id:u||(u=this.P);const p={geometry:l,material:u};return l.properties.url=h,this.O[h]=p,p}Ft(t,e,n,r){const{geometry:s,material:i}=this.k.createMesh(t,e,n,r);return{geometry:s,material:i}}zt(t,e,r){const s=t.attributes;let i=s._BATCHID&&s._BATCHID.array;if(i&&i.byteOffset&&(i=new i.constructor(i)),s.COLOR_0){const t=s.COLOR_0.array||s.COLOR_0;if(t instanceof Float32Array){const e=new Uint8Array(t.length);for(let n=0;n<e.length;n++)e[n]=Math.round(255*t[n]);s.COLOR_0.array?(s.COLOR_0.array=e,s.COLOR_0.componentType=5121):s.COLOR_0=e}}const o={};for(const t in s){const e=We(this.h,s[t],{dimension:s[t].itemSize}),n=r[t]||t;o[n]={buffer:e},s[t].quantization&&(o[n].quantization=s[t].quantization),n===r.POSITION&&(o[n].array=s[t].array,o[n].min=s[t].min,o[n].max=s[t].max)}const a=t.indices?t.indices.array?t.indices.array.slice():t.indices:null,c=new n.Geometry(o,a,0,{static:!0,positionAttribute:r.POSITION,normalAttribute:r.NORMAL,uv0Attribute:r.TEXCOORD_0,uv1Attribute:r.TEXCOORD_1,color0Attribute:r.COLOR_0,tangentAttribute:r.TANGENT,pickingIdAttribute:r._BATCHID,primitive:void 0===t.mode?"triangles":Ye(t.mode)});return i&&a&&(c.properties.batchIdData=i,c.properties.batchIdMap=function(t,e){if(!e)return null;const n=new Map;for(let r=0;r<e.length;r++){const s=e[r],i=t[s];let o=n.get(i);o||(o=[],n.set(i,o)),o.push(s)}return n}(i,a)),c.generateBuffers(this.h,{excludeElementsInVAO:e}),c}Pt(t,e,n,s){const o=r.identity(t),a=this.getMap();gn.x=n[0],gn.y=n[1];const c=this._prjToPoint(gn),h=this.Vt(),u=1/(a.getGLZoom?a.getResolution(a.getGLZoom()):a.getGLRes());gn.x=e[0],gn.y=e[1];const l=this.lt();let f=this.s.options.offset;dt(f)&&(f=f.call(this.s,gn));const d=this.s.H(s).heightOffset||0;return i.set(_n,c.x-f[0],c.y-f[1],l*n[2]+l*d),r.translate(o,o,_n),i.set(h,u,u,l),r.scale(o,o,h),o}nt(t,e){const n=this.s.H(e.V),s=n.Bt;let a=n.rotation||[0,0,0];a=o.fromEuler(In,a[0],a[1],a[2]);const c=n.scale||[1,1,1],h=r.fromRotationTranslationScale([],a,Sn,c),u=r.identity([]),l=r.identity([]);r.translate(u,u,i.scale(Nn,s,-1)),r.translate(l,l,s);const f=r.multiply(u,u,t.X);r.multiply(h,h,f);const d=r.multiply(l,l,h);t.localTransform=d}Mt(t,e){const n=r.identity(t),s=this.getMap(),o=this.Vt();gn.x=e[0],gn.y=e[1];const a=s.distanceToPointAtRes(100,100,s.getGLRes(),gn);let c;return c=s.altitudeToPoint?this.U:a.y/100,i.set(o,a.x/100*1.01,a.y/100*1.01,c),r.scale(n,n,o),n}L(){const t={x:0,y:0,width:()=>this.i?this.i.width:1,height:()=>this.i?this.i.height:1},e=[],s=[];this.ct=new n.MeshShader({vert:Xt,frag:"#define SHADER_NAME PNTS\n\nprecision mediump float;\n\n\n\nvarying vec4 vColor;\n\n\n\nvoid main() {\n\n gl_FragColor = vColor;\n\n}\n\n",uniforms:[{name:"projViewModelMatrix",type:"function",fn:(t,e)=>r.multiply(s,e.projViewMatrix,e.modelMatrix)},{name:"modelNormalMatrix",type:"function",fn:(t,n)=>a.fromMat4(e,n.modelMatrix)}],extraCommandProps:{viewport:t,blend:{enable:!0,func:{src:"src alpha",dst:"one minus src alpha"},equation:"add"},depth:{enable:!0,range:[0,1],func:"<"}}});const i=this.B();this.st=new n.PhongShader({extraCommandProps:i}),this.it=new n.pbr.StandardShader({extraCommandProps:i}),this.ut=new n.EdgeShader({extraCommandProps:{viewport:{x:0,y:0,width:()=>this.i?this.i.width:1,height:()=>this.i?this.i.height:1},blend:{enable:!0,func:{srcRGB:"src alpha",srcAlpha:1,dstRGB:"one minus src alpha",dstAlpha:"one minus src alpha"},equation:"add"}}});const o=this.s;nn(o.getRenderer().canvas,this.h,o.getMap()),this.picking=new n.FBORayPicking(this.u,{vert:this.it.vert,extraCommandProps:i,uniforms:this.it.uniforms,defines:{"PICKING_MODE":1,"ENABLE_PICKING":1,"HAS_PICKING_ID":1}},this.pickingFBO,this.getMap()),this.qt=new n.FBORayPicking(this.u,{vert:Xt,extraCommandProps:i,uniforms:this.ct.uniforms,defines:{"PICKING_MODE":1,"ENABLE_PICKING":1,"HAS_PICKING_ID":1}},this.pickingFBO,this.getMap())}B(){return{viewport:{x:0,y:0,width:()=>this.i?this.i.width:1,height:()=>this.i?this.i.height:1},cull:{enable:!0},stencil:{enable:!0,func:{cmp:(t,e)=>e.meshProperties.isLeaf?"always":">=",ref:(t,e)=>e.meshProperties.level},opFront:{fail:"keep",zfail:"keep",zpass:"replace"},opBack:{fail:"keep",zfail:"keep",zpass:"replace"}},depth:{enable:!0,range:[0,1],func:(t,e)=>e.meshProperties.depthFunc||"<"},blend:{enable:!0,func:{src:"src alpha",dst:"one minus src alpha"},equation:"add"},polygonOffset:{enable:!0,offset:(t,e)=>e.meshProperties.polygonOffset}}}ot(t){const e=this.getMap(),n=e.getLightManager(),r=(n&&n.getDirectionalLight()||{}).direction||[1,1,-1],s=t&&t.pointOpacity||1;return{projViewMatrix:e.projViewMatrix,pointOpacity:s,lightDir:i.normalize(r,r)}}D(){const t=this.getMap(),e=this.s,n=e.getRenderer().canvas,{iblTexes:r,dfgLUT:s}=sn(n),i=on(t,r,s),o=this.s.getRenderer(),a=o.getMaskUniforms();i.minAltitude=e.options.altitude||0;const c=o.canvas.gl&&o.canvas.gl.wrap?e.options.opacity||0:1;return i.layerOpacity=c,ft(i,{czm_lightDirectionEC:i.light0_viewDirection,lightSpecular:[1,1,1],viewMatrix:t.viewMatrix,projMatrix:t.projMatrix,projViewMatrix:t.projViewMatrix,outSize:[n.width,n.height],polygonFill:[1,1,1,1],polygonOpacity:1}),ft(i,a),i}Gt(t,e,r,s,i,o,a){const h=e.materials&&e.materials[t];if(!h||!h.baseColorTexture&&!h.pbrMetallicRoughness)return null;const u=ft({},s);if(h.baseColorTexture){const t=e.textures[h.baseColorTexture.index];let n;t&&!t.image.color&&(n=this.$t(t,o)),u.baseColorFactor=t&&t.image.color||h.baseColorFactor||[1,1,1,1],n&&(u.baseColorTexture=n)}else{if(h.normalTexture){const t=this.$t(e.textures[h.normalTexture.index],o);if(t){const e=h.normalTexture.scale||1;u.normalTexture=t,u.normalMapFactor=e}}if(h.occlusionTexture){const t=this.$t(e.textures[h.occlusionTexture.index],o);if(t){const e=h.occlusionTexture.strength||1;u.occlusionTexture=t,u.occlusionFactor=e}}if(h.emissiveTexture){const t=this.$t(e.textures[h.emissiveTexture.index],o);t&&(u.emissiveTexture=t)}h.emissiveFactor&&(u.emissiveFactor=h.emissiveFactor);const t=h.pbrMetallicRoughness;if(t){if(t.baseColorFactor&&(u.baseColorFactor=t.baseColorFactor),t.baseColorTexture&&void 0!==t.baseColorTexture.index){const n=e.textures[t.baseColorTexture.index];if(n.image&&n.image.color)u.baseColorFactor=u.baseColorFactor?c.multiply(u.baseColorFactor,u.baseColorFactor,n.image.color):n.image.color;else{const t=this.$t(n,o);t&&(u.baseColorTexture=t,u.baseColorTexture.getREGLTexture(this.h))}}if(lt(t.metallicFactor)||(u.metallicFactor=t.metallicFactor),lt(t.roughnessFactor)||(u.roughnessFactor=t.roughnessFactor),h.metallicRoughnessTexture){const t=this.$t(e.textures[h.metallicRoughnessTexture.index],o);t&&(u.metallicRoughnessTexture=t)}}}if(h.s3mMaterial)return new n.Material(u);if(u.environmentExposure=i,u.alphaTest=.1,a.unlit||h.extensions&&h.extensions.KHR_materials_unlit)return u.ambientColor=[1,1,1],u.light0_diffuse=[0,0,0,0],u.lightSpecular=[0,0,0],new n.PhongMaterial(u);let l=new n.pbr.StandardMaterial(u);"phong"===r&&(l=n.PhongMaterial.convertFrom(l));const f=h.pbrMetallicRoughness,d=f&&f.baseColorTexture&&f.baseColorTexture.extensions;return d&&d.KHR_texture_transform&&(l.set("khr_offset",d.KHR_texture_transform.offset||[0,0]),l.set("khr_rotation",d.KHR_texture_transform.rotation||0),l.set("khr_scale",d.KHR_texture_transform.scale||[1,1])),l.doubleSided=!(!a.doubleSided&&!h.doubleSided),l.once("complete",this.C),l}$t(t,e){const r={type:t.type?Ke(t.type):"uint8",format:t.format?Ze(t.format):"rgba",flipY:!!t.flipY},s=t.image;if(e.push(s),s.array?r.data=s.array:s.mipmap&&(r.mipmap=s.mipmap),!r.data&&!r.mipmap)return null;if(r.width=s.width,r.height=s.height,r.mipmap&&(r.width<4||r.height<4))return null;const i=t.sampler||t.texture&&t.texture.sampler;return i&&(i.magFilter&&(r.mag=Xe(i.magFilter)),i.minFilter&&(r.min=Je(i.minFilter)),i.wrapS&&(r.wrapS=Qe(i.wrapS)),i.wrapT&&(r.wrapT=Qe(i.wrapT))),new n.Texture2D(r,this.N)}R({target:t}){const e=t.Ht,n=this.m[e];if(n.count--,!n.count){const t=n.meshes;this.p[e]=t,delete this.m[e];const r=t.Rt;delete t.Rt,r(null,{mesh:n.meshes,id:e})}}Vt(){return ln}Xt(t){return this.s.Xt(t)}_pointToPrj(t){const e=this.getMap();return e.getGLZoom?e._pointToPrj(t,e.getGLZoom()):e._pointToPrjAtRes(t,e.getGLRes())}_prjToPoint(t){const e=this.getMap();return e.getGLZoom?e._prjToPoint(t,e.getGLZoom()):e._prjToPointAtRes(t,e.getGLRes(),yn)}It(t){return"Y"===t?tn:"X"===t?en:fn}pick(t,e,n=3){const r=this.s;if(!r||!r.options.picking)return[];if(!this.pickingFBO||!this.picking)return[];const s=[],i=this.D(),o=this.Jt(this.picking,i,this.M,t,e,n);o&&s.push(o);const a=this.Jt(this.picking,i,this.I,t,e,n);a&&s.push(a);const c=this.ot(),h=this.Jt(this.qt,c,this.A,t,e,n);return h&&s.push(h),s}Jt(t,e,n,r,s,i){if(!n.getMeshes().length)return null;const o=this.s,a=this.getMap();t.render(n.getMeshes().filter(t=>!t.bloom),e,!0);let c={};t.getRenderedMeshes().length&&(c=t.pick(r,s,i,e,{viewMatrix:a.viewMatrix,projMatrix:a.projMatrix,returnPoint:o.options.pickingPoint}));const{meshId:h,pickingId:u,point:l,coordinate:f}=c,d=(0===h||h)&&t.getMeshAt(h);if(!d||!d.geometry)return null;const m=d.properties;l&&l.length&&(l[0]=Math.round(1e5*l[0])/1e5,l[1]=Math.round(1e5*l[1])/1e5,l[2]=Math.round(1e5*l[2])/1e5);const p={batchId:u};if(o.options.debug&&(p.debugInfo=m),m&&m.batchTable){const{batchTable:t,batchTableBin:e,count:n}=m,r=u;for(const s in t)void 0!==t[s].byteOffset?p[s]=we(t[s],e,n,r):p[s]=t[s][r]}return{service:d.properties.serviceIndex,data:p,point:l,coordinate:f}}F(t){let e=new Set;for(let n=0,r=t.length;n<r;n++){const r=t[n].data.node;this.G(r)&&e.add(r.W)}e=Array.from(e),e.sort();const n=new Map,r=e.length;for(let t=0;t<r;t++)n.set(e[t],t);return n}highlight(t){this.J=t;const e=this.s.getRenderer();this.K=e.getFrameTimestamp(),e.setToRedraw(!0)}cancelAllHighlight(){this.J=null;const t=this.s.getRenderer();this.K=t.getFrameTimestamp(),t.setToRedraw(!0)}showOnly(t){this.Z=t;const e=this.s.getRenderer();this.Y=e.getFrameTimestamp(),e.setToRedraw(!0)}cancelShowOnly(){this.Z=null;const t=this.s.getRenderer();this.Y=t.getFrameTimestamp(),t.setToRedraw(!0)}Qt(){if(!this.j)return[];const t={},e=[];for(const n in this.j){const r=this.j[n];if(r)for(let n=0;n<r.length;n++){const s=r[n],i=s&&s.geometry;if(!s||!i)continue;const o=s.properties.serviceIndex;t[o]||(t[o]=new Set);const a=i.properties.batchIdData;if(a)for(let n=0;n<a.length;n++)t[o].has(a[n])||(e.push({id:a[n],service:o}),t[o].add(a[n]))}}return e}hasIBL(){const t=this.getMap().getLightManager();return!!(t&&t.getAmbientResource())}}function Un(t){for(let e=0;e<t.length;e++)t[e]&&(t[e].array&&(t[e].array=null),t[e].mipmap&&(t[e].mipmap=null),t[e].indices&&(t[e].indices=null))}const jn=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("unable to locate global object")},Dn=jn(),Fn=Dn.gl_trans__coders=Dn.gl_trans__coders||{};function zn(t,e){if(e)for(let n=0;n<e.length;n++){t[e[n].id||e[n].index]=e[n]}}Fn.inject=function(t){const e=t.toString(),n=e.indexOf("{")+1,r=e.substring(0,n),s=Dn.gl_trans__coders=Dn.gl_trans__coders||{};let i=`${r}\n const _____getGlobal = ${jn.toString()};\n const g___lobals = _____getGlobal()\n const tran_____scoders = g___lobals['gl_trans__coders'] = g___lobals['gl_trans__coders'] || {};`;for(const t in s)"inject"!==t&&"getTranscoder"!==t&&"registerTranscoder"!==t&&(i+='tran_____scoders["'+t+'"] ='+s[t].toString()+"\n;");return i+="\n"+e.substring(r.length),i},Fn.registerTranscoder=function(t,e){Fn[t]=e},Fn.getTranscoder=function(t){return Fn[t]};const Gn=[];class Hn{constructor(t,e,n,r,s){this.s=r,this.Kt=t,this.V=e,this.Zt=s,this.Yt=n.version,t.indexOf("i3s:tileset:")<0?(this.Yt<=1.6?this.Wt="root":this.Wt=0,n.version=this.Yt):(this.Wt=t.substring("i3s:tileset:".length),this.Yt>1.6&&(this.Wt=parseInt(this.Wt))),this.Kt=t,this.te=n}load(){const t=this.te,e=t.layerScene.baseUrl;if(this.Yt<=1.6)return t[this.Wt]&&t[this.Wt].lodSelection?(this.ee=t[this.Wt],this.ne()):new Promise(n=>{let r=e+"/nodes/"+this.Wt;t.layerScene.eslpk&&(r+="/3dNodeIndexDocument.json"),this.Zt(this.V,r,()=>{this.ee=t[this.Wt],n(this.ne())})});if(this.Yt>=1.7){if(t[this.Wt])return this.ee=t[this.Wt],this.ne();const n=Math.floor(this.Wt/t.nodesPerPage);return new Promise(r=>{let s=e+"/nodepages/"+n;t.layerScene.eslpk&&(s+=".json"),this.Zt(this.V,s,()=>{this.ee=t[this.Wt],r(this.ne())})})}return null}getTileset(){return this.re}getChildrenURL(){return this.se}ne(){const t=this.te,e=t.layerScene.baseUrl,n=this.ee.children,r=[],s={};if(n)for(let i=0;i<n.length;i++)if(this.Yt<=1.6){const o=n[i].id;if(t[o])continue;const a=o;s[a]||(s[a]=new Promise(n=>{let r=e+"/nodes/"+a;t.layerScene.eslpk&&(r+="/3dNodeIndexDocument.json"),this.Zt(this.V,r,()=>{n()})}),r.push(s[a]))}else{const o=n[i];if(t[o])continue;const a=Math.floor(o/t.nodesPerPage);s[a]||(s[a]=new Promise(n=>{let r=e+"/nodepages/"+a;t.layerScene.eslpk&&(r+=".json"),this.Zt(this.V,r,()=>{n()})}),r.push(s[a]))}return r.length?Promise.all(r).then(()=>this.ie()):this.ie()}ie(){return Promise.resolve(this.oe())}ae(t){zn(this.te,t)}oe(){return{asset:{i3s:!0,version:"1.0",gltfUpAxis:"Z"},geometricError:Number.MAX_VALUE,root:this.ce(this.ee,!0)}}ce(t){const e=this.s.getRenderer(),n=this.te.projection,r=!n||n&&4326===n.wkid,s=this.Yt,i=this.te,o=t,a=o.obb,c=o.mbs,h={};let u;if(c)u=w.set([],c[0],c[1],c[2]),r||(u=e.he(u,u)),u=Vn([],u[0],u[1],u[2]),h.sphere=[...u,c[3]];else if(a){u=w.set([],a.center[0],a.center[1],a.center[2]),r||(u=e.he(u,u)),u=Vn([],u[0],u[1],u[2]);const t=function(t,e,n){const r=v.fromQuat([],n);return r[0]=r[0]*e[0],r[1]=r[1]*e[0],r[2]=r[2]*e[0],r[3]=r[3]*e[1],r[4]=r[4]*e[1],r[5]=r[5]*e[1],r[6]=r[6]*e[2],r[7]=r[7]*e[2],r[8]=r[8]*e[2],[...t,...r]}(u,a.halfSize,a.quaternion),n=t[3]+t[6]+t[9],s=t[4]+t[7]+t[10],i=t[5]+t[8]+t[11];w.set(Gn,n,s,i);const o=w.len(Gn);h.sphere=[...u,o]}let l=1/0,f=0;if(o.mbs?f=o.mbs[3]:o.obb&&(f=Math.max(Math.max(o.obb.halfSize[0],o.obb.halfSize[1]),o.obb.halfSize[2])),void 0!==o.lodThreshold)if("maxScreenThresholdSQ"===i.lodSelectionMetricType){l=f/(Math.sqrt(o.lodThreshold)/(.25*Math.PI))}else console.error("Unsupported lodSelectionMetricType in Layer");else if(void 0!==o.lodSelection)for(let t=0;t<o.lodSelection.length;t++)"maxScreenThreshold"===o.lodSelection[t].metricType&&(l=f/o.lodSelection[t].maxError);(l===1/0||isNaN(l))&&(l=1e5);const d=16*l,m=y.identity([]),p=o.children;let b;if(p){b=[];const t=this.te;for(let e=0;e<p.length;e++){const n=s<=1.6?p[e].id:p[e];if(!t[n]){b=null;break}b.push(this.ce(t[n]))}}const g={refine:"REPLACE",boundingVolume:h,transform:m,geometricError:d};return s<=1.6?t.lodSelection?t.geometryData&&(g.content={uri:"i3s:mesh:"+(t.id||t.index)}):g.content={uri:"i3s:tileset:"+(t.id||t.index)}:p&&p.length&&!b?g.content={uri:"i3s:tileset:"+(t.id||t.index)}:o.mesh&&(g.content={uri:"i3s:mesh:"+(t.id||t.index)}),b&&b.length&&(g.children=b),g}getJSON(){return this.ee}}function Vn(t,e,n,r){return Zt(t,bt(e),bt(n),r)}const qn=!!Fn.ktx2,$n=r.identity([]),Xn=(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const t=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(t instanceof WebAssembly.Module)return new WebAssembly.Instance(t)instanceof WebAssembly.Instance}}catch(t){}return!1})();function Jn(t){return t.indexOf("i3s:mesh")>=0}const Qn="i3s:mesh:".length;function Kn(t,e,n,r,s){const i=e.layerScene.eslpk,o=function(t,e){const n=e.substring(Qn);return t>=1.7?parseInt(n):n}(e.version,t),a=e[o],c=e.layerScene.baseUrl,h=[];let u=!1;const l=$n;let f,d;if(e.version<=1.6){if(!a.geometryData)return null;const t=a.geometryData.length;if(!t)return null;let n=c+`/nodes/${a.id}/`+a.geometryData[t-1].href;i&&(n+=".bin");const r={geometry:{url:n,info:e.layerScene.store.defaultGeometrySchema}};let s=a.textureData&&a.textureData[0]&&a.textureData[0].href;if(s){const t=e.layerScene.store.textureEncoding[0];let n;n="image/jpeg"===t?"jpg":"png",i&&(s+="."+n);const o={pbrMetallicRoughness:{baseColorTexture:{url:c+`/nodes/${a.id}/`+s,factor:1,format:n,mimeType:t},metallicFactor:0}};r.material=o}h.push(r)}else{f=a.mesh.geometry,d=a.mesh.material;const t=e.layerScene.geometryDefinitions[f.definition],{geometryBuffers:o}=t;u=r&&2===o.length;const l=Fn.draco&&u?o[1]:o[0],m=Fn.draco&&u?1:0;let p=c+`/nodes/${f.resource}/geometries/`+m;i&&(p+=".bin");const b={geometry:{url:p,info:l}};if(s&&Xn&&u&&!Fn.draco)throw new Error("Must import @maptalks/transcoder.draco to load i3s draco compressed geometry");const g=e.layerScene.materialDefinitions,y=e.layerScene.textureSetDefinitions;let w,v=0;if(d&&(v=g[d.definition]),g){w=function(t,e,n,r,s,i){const o=JSON.parse(JSON.stringify(t));return function t(e,n,r,s,i,o){for(const a in e)if(e[a]&&e[a].textureSetDefinitionId>=0){const t=n[e[a].textureSetDefinitionId],c="images/"+t.formats[0].format,h=Zn(t.formats,i),u={url:r+`/nodes/${s}/textures/${h.name}`,factor:void 0===e[a].factor?1:e[a].factor,format:h.format,mimeType:c};if(o){let t="";switch(h.format){case"dds":t="bin.dds";break;case"jpg":case"png":t=h.format}u.url+="."+t}e[a]=u}else mt(e[a])&&t(e[a],n,r,s,i,o)}(o,e,n,r,s,i),o}(v,y,c,d.resource,n,e.layerScene.eslpk)}else w={pbrMetallicRoughness:{metallicFactor:0}};b.material=w,h.push(b)}return{dracoCompression:u,meshes:h,nodeIndex:o,center:a.obb&&a.obb.center||a.mbs&&[a.mbs[0],a.mbs[1],a.mbs[2]],transform:l}}function Zn(t,e){for(let n=0;n<=t.length;n++){const r=t[n].format;if("dds"===r&&e.hasExtension("WEBGL_compressed_texture_s3tc"))return t[n];if("jpg"===r||"png"===r)return t[n];if("ktx2"===r&&qn)return t[n]}return null}const Yn=new t.Coordinate(0,0),Wn=new t.Coordinate(0,0),tr=new Set,er=[];class nr extends(h(t.renderer.CanvasRenderer)){constructor(t){super(t),this.prepareWorker(),this.tilesLoading={},this.tileCache=new Bt(t.getId(),1024*t.options.maxGPUMemory*1024,this.deleteTile.bind(this)),this.ue={},this.le=[],this.Zt=this.fe.bind(this)}getAnalysisMeshes(){if(!this.painter)return er;const t=this.painter.getPaintedMeshes();if(!t)return er;const e=[],{b3dmMeshes:n,pntsMeshes:r,i3dmMeshes:s}=t;return n.length&&It(e,n),r.length&&It(e,r),s.length&&It(e,s),e}needToRedraw(){return!!this.getMap().isInteracting()||(!!this.le.length||super.needToRedraw())}getFrameTimestamp(){return this.de}drawOnInteracting(t,e,n){this.draw(e,n)}draw(t,e){this.de=t;const n=this.prepareCanvas();if(n&&!n.intersects(this.canvasExtent2D))return void this.completeRender();const{root:r,tiles:s}=this.layer.getTiles(),i=s.length;if(!s||!i)return void this.completeRender();this.me(),this.pe();const{selectedTiles:o,leaves:a,requests:c}=this.be(r,s);c.length&&this.loadTiles(c),this.ge(o,a,e),this.ye(),c.length||this.completeRender()}be(t,e){const n=this.layer.getRootTiles();let r=[];this.we();let s=0;const i=this.ve(),o={};let a=!1,c=!1;for(let t=0;t<e.length;t++){const i=e[t],h=i.node;if(o[h.id])continue;const u=n[h.V];o[h.id]=1;let l=!1;const f=this.getCachedTile(h.id);if(this.Te(h.id)?(s++,l=c=!0,this.tilesLoading[h.id].current=!0):f?(this.getTileOpacity(f)<1&&(l=c=!0),(!i.node._e||u.isS3M||!i.node.children||i.node._e<=500)&&(a=!0,i.selected=!0,i.data=f)):this.painter.has(h)||(l=c=!0,r.push(h)),!l)continue;if(this.Oe(i))a=!0;else{this.Me(i).length&&(a=!0)}}let h=[],u={};if(a&&({selectedTiles:h,leaves:u}=this.xe(t)),r.length>1&&(r.sort(rr),i)){const t=i-s;r=t>0?r.slice(0,t):[]}return{loading:c,requests:r,selectedTiles:h,leaves:u}}xe(t){const e=[],n={};let r;const s=[t],i=[];for(;s.length>0||i.length>0;){if(i.length>0){const t=i[i.length-1];if(t.Ae===s.length){i.pop(),t===r&&(t.leave=!0,n[t.node.id]=1),e.push(t);continue}}const t=s.pop(),o=t.children;if(t.selected)if("add"===t.node.refine)n[t.node.id]=1,t.selectionDepth=i.length,e.push(t);else{if(t.selectionDepth=i.length,r=t,0===o.length){t.leave=!0,n[t.node.id]=1,e.push(t);continue}i.push(t),t.Ae=s.length}for(let t=0;t<o.length;t++)s.push(o[t])}return{selectedTiles:e,leaves:n}}Oe(t){if(!t.parent)return null;let e=t.parent;for(;e&&e.level>=0;){const t=e.node.id;if(this.tileCache.has(t))return e.selected=!0,e.data=this.tileCache.get(t),e;e=e.parent}return null}Me(t){const e=[];if(!t.node.children||!t.node.children.length)return e;const n=t.W+1,r=[t.node];for(;r.length>0;){const s=r.pop().children;for(let i=0,o=s.length;i<o;i++){if((!s[i].content||!s[i].content.url)&&s[i].children&&s[i].children.length){r.push(s[i]);continue}const o=s[i].id;if(this.tileCache.has(o)){const n=this.layer.Ie(s[i],t);n.selected=!0,n.data=this.tileCache.get(o),t.children.push(n),e.push(n)}else s[i].W<=n&&r.push(s[i])}}return e}ge(t,e,n){this.tileCache.markAll(!1);for(let e=0,n=t.length;e<n;e++){const n=t[e].data;n.current=!0,this.tileCache.add(t[e].node.id,n)}this.tileCache.shrink();const r={tiles:t,leaves:e};this.onDrawTileStart(r);const s=this.painter.paint(t,e,n);this.onDrawTileEnd(r),s&&this.layer.fire("canvasisdirty",{renderCount:s})}onDrawTileStart(){}onDrawTileEnd(){}loadTiles(t){for(let e=0,n=t.length;e<n;e++){const n=t[e];this.tilesLoading[n.id]={current:!0,node:n},this.loadTile(n)}}loadTile(t){let e=t.content.url;if(xt(e)){const n=At(e);return this.Se(e,n,t),null}if(function(t){return t.indexOf("i3s:tileset")>=0}(e)){const n=t.V,r=this.Ee[n];return new Hn(e,n,r,this.layer,this.Zt).load().then(n=>{this.onTilesetLoad(n,t,e)})}return t&&Ct(e)&&!Jn(e)&&(e=t.baseUrl+e),this.Se(e,null,t),null}Se(t,e,r){let s=this.Ne;s||(s=n.Util.getSupportedFormats(this.gl.gl||this.gl),this.Ne=s);const i=this.layer.H(r.V);i.isSuperMapiServer&&(t=function(t,e){const n=t.substring(e.length).split("/"),r=[];for(let t=0;t<n.length;t++)r.push(encodeURIComponent(n[t]));return e+r.join("/")}(t,r.baseUrl));const o={url:this.layer.getTileUrl(t,r.baseUrl,this.layer.Ce[r.V]),arraybuffer:e,rootIdx:r.V,upAxis:r.St,transform:r.matrix,supportedFormats:s};if(Jn(t)){const e=this.Ee[r.V];if(o.projection=e.projection,o.i3sInfo=Kn(t,e,this.regl,this.layer.options.enableI3SCompressedGeometry,this.layer.options.forceI3SCompressedGeometry),!o.i3sInfo)return void this.onTileError({status:404},r,t)}o.service=ft({},i),i.offset&&delete o.service.offset,this.workerConn.loadTile(this.layer.getId(),o,(e,n)=>{if(e)return void this.onTileError(e,r,t);const{magic:s}=n;"b3dm"===s||"pnts"===s||"i3dm"===s||"cmpt"===s?this.le.push({data:n,tile:r}):this.onTilesetLoad(n,r,t),i.debugShowBoundingVolume&&this.painter.Lt(r)})}pe(){const t=this.getMap(),e=this.layer.options.meshLimitPerFrame;let n=0;for(;this.le.length&&(n<e||!t.isInteracting());){const{data:t,tile:e}=this.le.shift(),{magic:r}=t;"b3dm"===r?this.painter.createB3DMMesh(t,e.id,e,(n,{mesh:r})=>{this.Re(t,e,n,r)}):"pnts"===r?this.painter.createPntsMesh(t,e.id,e,(n,{mesh:r})=>{this.Re(t,e,n,r)}):"i3dm"===r?this.painter.createI3DMMesh(t,e.id,e,(n,{mesh:r})=>{this.Re(t,e,n,r)}):"cmpt"===r&&this.painter.createCMPTMesh(t,e.id,e,(n,{mesh:r})=>{this.Re(t,e,n,r)}),n++}}Re(t,e,n,r){if(n)this.onTileError(n,e);else{const n=this.Pe(r);e.memorySize=n,this.onTileLoad(t,e)}}Pe(t){let e=0;if(Array.isArray(t))for(let n=0;n<t.length;n++)t[n]&&(e+=this.Pe(t[n]));else t&&(e+=t.getMemorySize());return e}onTileLoad(t,e){this.layer&&(delete this.tilesLoading[e.id],this.layer.onTileLoad(t,e),this.Le(e),this.setToRedraw(),this.layer.fire("tileload",{node:e}))}onTilesetLoad(t,e,n){this.layer&&(this.layer.Dt=t.extensions&&t.extensions["s3m:VertexCompressionType"],t.capabilities||t.layers&&t.layers[0]&&t.layers[0].capabilities?this.ke(t,e,n):(delete this.tilesLoading[e.id],this.layer.onTilesetLoad(t,e,n)))}onTileError(t,e,n){if(!this.layer)return;const r=n||e.content.url,s=t&&t.message||t;tr.has(s)||(console.warn("failed to load 3d tile: "+r),console.warn(t),tr.add(s)),delete this.tilesLoading[e.id],this.Be(e,t),this.setToRedraw(),this.layer.fire("tileerror",{node:e,error:t})}getCachedTile(t){return this.tileCache.get(t)}Be(e,n){const r={loadTime:t.Util.now(),current:!0,error:n,node:e};this.tileCache.add(e.id,r)}Le(e){const n={loadTime:t.Util.now(),current:!0,node:e};this.tileCache.add(e.id,n)}abortTileLoading(t){if(!t||!this.workerConn)return;const e=t.node.content.url;this.workerConn.abortTileLoading(this.layer.getId(),e),delete this.ue[e]}we(){if(this.tilesLoading)for(const t in this.tilesLoading)this.tilesLoading[t].current=!1}deleteTile(t){this.painter.deleteTile(t)}createContext(){const t=this.layer,e=t.options.glOptions||{alpha:!0,depth:!0,stencil:!0,preserveDrawingBuffer:!0,antialias:t.options.antialias},n=this.canvas.gl&&this.canvas.gl.wrap;n?(this.gl=this.canvas.gl.wrap(),this.regl=this.canvas.gl.regl):(this.glOptions=e,this.gl=this.Ue(this.canvas,e)),this.regl=this.regl||u({gl:this.gl,attributes:e,extensions:["OES_element_index_uint"],optionalExtensions:t.options.optionalExtensions||[]}),n&&(this.canvas.pickingFBO=this.canvas.pickingFBO||this.regl.framebuffer(this.canvas.width,this.canvas.height)),this.pickingFBO=this.canvas.pickingFBO||this.regl.framebuffer(this.canvas.width,this.canvas.height),this.painter=new Bn(this.regl,t),this.layer.je(),this.layer.fire("contextcreate",{regl:this.regl})}prepareWorker(){const t=this.getMap();this.workerConn||(this.workerConn=new Pt("@maptalks/3dtiles",t.id));const e=this.workerConn;if(!e.isActive())return;let n=this.layer.options||{};n=ft({},n),delete n.offset;const r=t.options.spatialReference;n.projection=r&&r.coordType||r&&r.projection||t.getSpatialReference().getProjection().code;const s=this.layer.getId();e.addLayer(s,n,t=>{if(t)throw t;this.layer&&(this.ready=!0,this.layer.fire("workerready"))})}onRemove(){this.painter&&this.painter.remove(),this.pickingFBO&&(this.canvas.pickingFBO||this.pickingFBO.destroy(),delete this.pickingFBO),this.workerConn&&(this.workerConn.removeLayer(this.layer.getId(),t=>{if(t)throw t}),this.workerConn.remove(),delete this.workerConn),this.clear(),delete this.tileCache,super.onRemove()}clear(){this.ye(!0),this.tileCache.reset(),this.tilesLoading={},super.clear()}clearCanvas(){this.regl&&this.regl.clear({color:[0,0,0,0],depth:1,stencil:0}),super.clearCanvas()}getTileOpacity(){return 1}getStencilValue(){return 0}ye(t){this.De||(this.De=Date.now());const e=Date.now();if(t||!(e-this.De<this.layer.options.retireInterval)){this.De=e;for(const e in this.tilesLoading){const n=this.tilesLoading[e];!t&&n.current||this.abortTileLoading(n)}}}ve(){return this.getMap().isInteracting()?this.layer.options.loadingLimitOnInteracting:this.layer.options.loadingLimit}Ue(t,e){const n=["webgl","experimental-webgl"];let r=null;for(let s=0;s<n.length;++s){try{r=t.getContext(n[s],e)}catch(t){}if(r)break}return r}Te(t){return!!this.tilesLoading[t]}getI3DMMeshes(){return this.painter.getI3DMMeshes()}getPNTSMeshes(){return this.painter.getPNTSMeshes()}getB3DMMeshes(){return this.painter.getB3DMMeshes()}readBatchData(t,e,n){return ge(t,e,0,n)}me(){if(!this.Fe)return;const t=this.layer.options.i3sNodepageLimitPerFrame||Number.MAX_VALUE;let e=0;const n=[];for(const r in this.Fe){const s=this.Fe[r];if("pending"===s.status)continue;s.status="pending";const i=s.rootIdx;if(n.push(b.getJSON(r).then(t=>{delete this.Fe[r];const e=this.Ee[i];if(e){t.nodes?zn(e,t.nodes):(e[t.id]=t,zn(e,t.children));for(let t=0;t<s.length;t++)s[t]();this.setToRedraw()}else this.setToRedraw()})),e++,e>=t)break}n.length&&Promise.all(n)}fe(t,e,n){this.Fe||(this.Fe={}),this.Fe[e]=this.Fe[e]||[],this.Fe[e].rootIdx=t,this.Fe[e].push(n),this.setToRedraw()}ke(t,e,n){this.Ee||(this.Ee=[]);const r=e.V;this.Ee[r]||(this.Ee[r]={});const s=this.Ee[r],i=this.layer.H(r);t.layers&&(t=t.layers[0],"/"!==n[n.length-1]&&(n+="/"),n+="layers/0"),s.version=+(i.i3sVersion||t.store.version),!t.spatialReference||t.spatialReference.wkid&&4326===t.spatialReference.wkid||console.warn("i3s has a spatialReference other than 4326.",t.spatialReference),s.projection=t.spatialReference,function(t,e,n,r,s,i,o){if(!i.layerScene){i.layerScene=e,i.nodesPerPage=e.nodePages&&e.nodePages.nodesPerPage||64,i.lodSelectionMetricType=e.nodePages&&e.nodePages.lodSelectionMetricType;let t=s;i.layerScene.eslpk=t.indexOf("3dSceneLayer.json")>=0;if(t.endsWith(".json")){const e=s.lastIndexOf("/");t=e<0?"./":s.substring(0,e)}i.layerScene.baseUrl=function(t){return t.split("?")[0]}(t)}return new Hn(s,n,i,t,o).load()}(this.layer,t,r,0,n,s,this.Zt).then(t=>{this.onTilesetLoad(t,e,n)})}pick(t,e,n){if(!this.painter)return[];const r=this.pickingFBO,{width:s,height:i}=this.canvas;return!this.pickingFBO||r.width===s&&r.height===i||r.resize(s,i),this.painter.pick(t,e,n&&n.tolerance)}highlight(t){if(this.J||(this.J=[]),Array.isArray(t))for(let e=0;e<t.length;e++){const n=t[e].service||0;let r=this.J[n];r||(r=this.J[n]=new Map),r.set(t[e].id,t[e])}else{const e=t.service||0;let n=this.J[e];n||(n=this.J[e]=new Map),n.set(t.id,t)}this.painter.highlight(this.J)}cancelHighlight(t,e){if(!this.J)return;const n=this.J[t];if(n){if(Array.isArray(e))for(let t=0;t<e.length;t++)n.delete(e[t]);else n.delete(e);n.size||(this.J[t]=null),this.painter.highlight(this.J)}}cancelAllHighlight(){delete this.J,this.painter.cancelAllHighlight()}showOnly(t){if(this.Z||(this.Z=[]),Array.isArray(t))for(let e=0;e<t.length;e++){const n=t[e].service||0;let r=this.Z[n];r||(r=this.Z[n]=new Map),r.set(t[e].id,t[e])}else{const e=t.service||0;let n=this.Z[e];n||(n=this.Z[e]=new Map),n.set(t.id,t)}this.painter.showOnly(this.Z)}cancelShowOnly(){delete this.Z,this.painter.cancelShowOnly()}Qt(){return this.painter?this.painter.Qt():[]}he(t,e){const n=this.getMap();if("identity"===n.getProjection().code.toLowerCase()){const n=this.ze();return Yn.x=e[0],Yn.y=e[1],n.unproject(Yn,Wn),t[0]=Wn.x,t[1]=Wn.y,t}return Yn.x=e[0],Yn.y=e[1],n.getProjection().unproject(Yn,Wn),t[0]=Wn.x,t[1]=Wn.y,t}Ge(t,e){const n=this.ze();return Yn.x=e[0],Yn.y=e[1],n.project(Yn,Wn),t[0]=Wn.x,t[1]=Wn.y,t}He(t,e){const n=this.ze();return Yn.x=e[0],Yn.y=e[1],n.unproject(Yn,Wn),t[0]=Wn.x,t[1]=Wn.y,t}ze(){const e=this.getMap().options.spatialReference.coordType;if(!e)throw new Error("Missing coordType in map spatialReference.");return this.Ve||(this.Ve=t.SpatialReference.getProjectionInstance(e)),this.Ve}}function rr(t,e){return t.pt-e.pt}function sr(t,e,n){return t[0]=e[n],t[1]=e[n+3],t[2]=e[n+6],t}function ir(t,e,n){return Math.sqrt(function(t,e,n){const r=w.subtract(or,n,t),s=sr(ar,e,0),i=sr(cr,e,1),o=sr(hr,e,2),a=w.len(s),c=w.len(i),h=w.len(o);w.normalize(s,s),w.normalize(i,i),w.normalize(o,o);const u=ur;u[0]=w.dot(r,s),u[1]=w.dot(r,i),u[2]=w.dot(r,o);let l,f=0;u[0]<-a?(l=u[0]+a,f+=l*l):u[0]>a&&(l=u[0]-a,f+=l*l);u[1]<-c?(l=u[1]+c,f+=l*l):u[1]>c&&(l=u[1]-c,f+=l*l);u[2]<-h?(l=u[2]+h,f+=l*l):u[2]>h&&(l=u[2]-h,f+=l*l);return f}(t,e,n))}const or=[],ar=[],cr=[],hr=[],ur=[];const lr=2*Math.PI;class fr{constructor(t,e,n,r){this.west=t,this.south=e,this.east=n,this.north=r}static contains(t,e){let n=e[0];const r=e[1],s=t.west;let i=t.east;return i<s&&(i+=lr,n<0&&(n+=lr)),(n>s||le(n,s,1e-14))&&(n<i||le(n,i,1e-14))&&r>=t.south&&r<=t.north}static southwest(t,e){return e[0]=t.west,e[1]=t.south,e[2]=0,e}static northeast(t,e){return e[0]=t.east,e[1]=t.north,e[2]=0,e}static southeast(t,e){return e[0]=t.east,e[1]=t.south,e[2]=0,e}static northwest(t,e){return e[0]=t.west,e[1]=t.north,e[2]=0,e}}const dr=[0,0,1];function mr(t,e){return Zt(e,t[0],t[1],t[2])}class pr{constructor(t,e){this.normal=i.copy([],t),this.distance=e}static fromPointNormal(t,e,n){const r=-i.dot(e,t);return i.copy(n.normal,e),n.distance=r,n}}const br=[],gr=[],yr=[],wr=[],vr=[],Tr=[],_r=[],Or=[],Mr=[],xr=[],Ar=new pr([1,0,0],0),Ir=[];class Sr{constructor(t){this.southwestCornerCartesian=[],this.northeastCornerCartesian=[],this.westNormal=[],this.eastNormal=[],this.southNormal=[],this.northNormal=[],this.rectangle=new fr(...t),this.minimumHeight=t[4],this.maximumHeight=t[5],this.computeBox(this.rectangle)}distanceToCamera(t,e){let n=0;if(!fr.contains(this.rectangle,e)){const e=this.southwestCornerCartesian,r=this.northeastCornerCartesian,s=this.westNormal,o=this.southNormal,a=this.eastNormal,c=this.northNormal,h=i.subtract(Ir,t,e),u=i.dot(h,s),l=i.dot(h,o),f=i.subtract(Ir,t,r),d=i.dot(f,a),m=i.dot(f,c);u>0?n+=u*u:d>0&&(n+=d*d),l>0?n+=l*l:m>0&&(n+=m*m)}const r=e[2],s=this.minimumHeight,o=this.maximumHeight;if(r>o){const t=r-o;n+=t*t}else if(r<s){const t=s-r;n+=t*t}return Math.sqrt(n)}computeBox(t){const e=this;mr(fr.southwest(t,gr),e.southwestCornerCartesian),mr(fr.northeast(t,gr),e.northeastCornerCartesian),br[0]=t.west,br[1]=.5*(t.south+t.north),br[2]=0;const n=mr(br,yr),r=i.cross(vr,n,dr);i.normalize(e.westNormal,r),br[0]=t.east;const s=mr(br,Or),o=i.cross(vr,dr,s);i.normalize(e.eastNormal,o);const a=i.subtract(vr,n,s),c=i.normalize(wr,a),h=t.south;let u;if(h>0){br[0]=.5*(t.west+t.east),br[1]=h;const n=mr(br,Mr);i.copy(xr,c);const r=pr.fromPointNormal(e.southwestCornerCartesian,e.westNormal,Ar);Er(Mr,xr,r,e.southwestCornerCartesian),u=ce(n,Tr)}else u=he(fr.southeast(t,gr),Tr);const l=i.cross(_r,u,a);i.normalize(e.southNormal,l);const f=t.north;let d;if(f<0){br[0]=.5*(t.west+t.east),br[1]=f;const n=mr(br,Mr);i.scale(xr,c,-1);const r=pr.fromPointNormal(e.northeastCornerCartesian,e.eastNormal,Ar);Er(Mr,xr,r,e.northeastCornerCartesian),d=ce(n,Tr)}else d=he(fr.northwest(t,gr),Tr);const m=i.cross(_r,a,d);i.normalize(e.northNormal,m)}}function Er(t,e,n,r){const s=t,o=e,a=n.normal,c=i.dot(a,o);if(Math.abs(c)<1e-15)return;const h=(-n.distance-i.dot(a,s))/c;return h<0?void 0:(r=i.scale(r,o,h),i.add(r,s,r))}const Nr={"maxGPUMemory":t.Browser.mobile?32:1024,"retireInterval":2e3,"loadingLimitOnInteracting":5,"loadingLimit":5,"renderer":"gl","forceRenderOnZooming":!0,"forceRenderOnRotating":!0,"forceRenderOnMoving":!0,"debug":!1,"meshLimitPerFrame":1,"i3sNodepageLimitPerFrame":1,"enableI3SCompressedGeometry":!0,"forceI3SCompressedGeometry":!0,"picking":!0,"pickingPoint":!0,"geometryEvents":!1,"antialias":!1,"optionalExtensions":["ANGLE_instanced_arrays","OES_element_index_uint","OES_standard_derivatives","OES_vertex_array_object","OES_texture_half_float","OES_texture_half_float_linear","OES_texture_float","OES_texture_float_linear","WEBGL_depth_texture","EXT_shader_texture_lod","WEBGL_compressed_texture_astc","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_pvrtc","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb"],"offset":[0,0]},Cr=new t.Extent(0,0,0,0),Rr=[],Pr=[],Lr=[],kr=[],Br=new t.Point(0,0),Ur=[],jr=new t.Coordinate(0,0),Dr=r.identity([]),Fr=[0,0],zr=[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 Gr extends(l(t.Layer)){constructor(t,e){super(t,e),this.qe(),this.ue={},this.kt=[]}qe(){const t=this.options.services.map(t=>t.url);this.$e=this.$e||{},this.Ce=this.Ce||[];for(let e=0;e<t.length;e++){const n=t[e];let r=this.$e[n];void 0===r&&(r=this.$e[n]=this.Ce.length),this.Ce[r]=qr(n,r,this.options.services[e])}this.fire("rootready",{roots:this.Ce.slice(0)})}showService(t){return this.updateService(t,{visible:1}),this}hideService(t){return this.updateService(t,{visible:0}),this}setToRedraw(){const t=this.getRenderer();t&&t.setToRedraw()}addService(t){this.options.services=this.options.services||[],this.options.services.push(t),this.qe();const e=this.getRenderer();return e&&e.setToRedraw(),this}updateService(t,e){if(!e)return this;const n=this.options.services;if(n&&n[t]&&ft(n[t],e),!lt(e.visible)){const r=n[t].url,s=this.$e[r];this.Ce&&this.Ce[s]&&(this.Ce[s].visible=e.visible)}const r=this.getRenderer();return r&&r.setToRedraw(),this}removeService(t){const e=this.options.services;if(e&&e[t]){const n=e[t].url,r=this.$e[n];this.Ce[r]&&(this.Ce[r]=null),delete this.$e[n],e.splice(t,1)}const n=this.getRenderer();return n&&n.setToRedraw(),this}getTileUrl(t,e,n){const r=n&&n.service&&n.service.subdomains;if(r&&n.domainKey){const e=r.length;if(e){const s=[...t].reduce((t,e)=>t+e.charCodeAt(),0)%e;return t.replace(n.domainKey,r[s])}}return t}getExtent(e){if(!e&&0!==e){const e=new t.Extent;for(let t=0;t<this.Ce.length;t++)if(this.Ce[t].boundingVolume){const n=this.boundingVolumeToExtent(this.Ce[t]);e._combine(n)}return e}return this.Ce[e]&&this.Ce[e].boundingVolume?this.boundingVolumeToExtent(this.Ce[e]):null}boundingVolumeToExtent(e){const n=e.boundingVolume.Xe?Dr:e.matrix,r=this.getMap(),s="identity"===r.getProjection().code.toLowerCase(),o=this.getRenderer();if(e.boundingVolume.region){const n=e.boundingVolume.region;return new t.Extent(gt(n[0]),gt(n[1]),gt(n[2]),gt(n[3]))}if(e.boundingVolume.sphere){const a=e.boundingVolume.sphere,c=re([],i.transformMat4([],a,n));s&&o.Ge(c,c);const h=a[3],u=r.locate(c,-h,h),l=r.locate(c,h,-h);return new t.Extent(u,l)}if(e.boundingVolume.box){const c=e.boundingVolume.box,h=i.transformMat4([],c,n),u=new t.Coordinate(re([],h));s&&o.Ge(u,u);const l=c.slice(3);a.multiply(l,a.fromMat4([],e.matrix),l);const f=i.length(l.slice(0,3)),d=i.length(l.slice(3,6)),m=i.length(l.slice(6,9)),p=Math.max(f,d,m),b=r.locate(u,-p,p),g=r.locate(u,p,-p);return new t.Extent(b,g)}return null}getRootTiles(){return this.Ce}getTiles(){const t=this.getRenderer();if(!t.ready)return this.Je(),{tiles:kr};const e=this.getMap(),n=e.cameraPosition,r=e.pointAtResToDistance(n[2],0,e.getGLRes()),s=this.Qe(n);this.Ke=this.Ke||[],i.set(this.Ke,bt(s.x),bt(s.y),r),this.Ze=Zt(this.Ze||[],this.Ke[0],this.Ke[1],this.Ke[2]),this.Ye=2*Math.tan(.5*bt(e.getFov()));const o=e.projViewMatrix,a={children:[],level:-1};let c=a;const h=[];for(let e=0;e<this.Ce.length;e++){const n=this.Ce[e];if(!n||!n.visible)continue;let r=1/0;const s=[n],i=this.We(e);for(;s.length>0;){const e=s.pop();for(e.id||this.tn(e);c.level>=e.W;)c=c.parent;const n=this.nn(e,i,o);if(n<1){let t=c;for(;t&&!t.content;)t=t.parent;0===n&&t&&t.content&&this.rn(h,t);if(!1===this.options.services[e.V].alwaysShow)continue;if(!(0===n&&e.W<=r))continue;e.content&&(r=e.W)}e.pt<1/0&&this.sn(e);const a=this.Ie(e,c);c.children.push(a);const u=e.children,l=u&&u.length,f=a.content;if(!l&&f&&this.rn(h,a),l){f&&"add"===e.refine&&this.rn(h,a),c=a;const n=u[0].parent;let r=!1;for(let i=0,o=u.length;i<o;i++){if(n){const e=t.getCachedTile(u[i].id);if(e&&e.error&&404!==e.error.status)continue;r=!0}else{r=!0,u[i].parent=e,u[i].St=e.St,u[i].baseUrl=e.baseUrl;const t=u[i].content&&(u[i].content.url||u[i].content.uri);t&&(xt(t)||t.indexOf("i3s:")>=0?u[i].baseUrl=e.baseUrl:Ct(t)?u[i].content.url=e.baseUrl+t:u[i].baseUrl=t.substring(0,t.lastIndexOf("/")+1))}s.push(u[i])}!r&&f&&this.rn(h,a)}}}return{root:a,tiles:h}}rn(t,e){const{viewerRequestVolume:n}=e.node;n&&!function(t,e,n){if(n.region){const e=n.region;if(t[0]>=e[0]&&t[0]<=e[2]&&t[1]>=e[1]&&t[1]<=e[3])return!0}else{if(n.sphere)return Hr(n,e);if(n.box)return 0===Vr(n,e)}return!1}(this.Ke,this.Ze,n)||t.push(e)}Ie(t,e){return{id:t.id,node:t,children:[],level:t.W,parent:e,content:t.content&&t.content.url}}tn(e){e.id=t.Util.GUID(),e.matrix=e.transform||r.identity([]),e.in=this.an(e),e.parent&&(function(t){return t.content&&t.content.uri&&t.content.uri.indexOf("i3s:")>=0}(e)||(e.matrix=r.multiply(e.matrix,e.parent.matrix,e.matrix)),e.V=e.parent.V,void 0===e.W&&(e.W=e.parent.W+1),e.maxExtent=e.parent.maxExtent),e.refine=e.refine&&e.refine.toLowerCase()||"replace",e.content&&!e.content.url&&e.content.uri&&(e.content.url=e.content.uri)}H(t){return this.Ce[t].service}cn(t){const e=t.boundingVolume;if(!e||e.Xe&&!this.hn(t))return;const n=this.H(t.V),s=n.heightOffset||0,o=this.options.offset,a=dt(o)||o[0]||o[1],c=n.coordOffset||Fr;if(!Array.isArray(c))throw new Error("service.coordOffset must be an array");if(!e.Xe&&(!t.boundingVolume||!s&&r.exactEquals(t.matrix,Dr)&&!a&&c===Fr))return;e.box&&e.region&&delete e.region;const{region:h,box:u,sphere:l}=e;if(e.coordOffset=[c[0],c[1]],e.heightOffset=s,h){e.originalVolume||(e.originalVolume=h.slice(0));const t=e.originalVolume,n=this.un([gt(t[0]),gt(t[1])]);h[0]=bt(n.x+c[0]),h[1]=bt(n.y+c[1]);const r=this.un([gt(t[2]),gt(t[3])]);h[2]=bt(r.x+c[0]),h[3]=bt(r.y+c[1]),h[4]=t[4]+s+(c[2]||0),h[5]=t[5]+s+(c[2]||0)}else if(u||l){e.originalVolume||(e.originalVolume=(u||l).slice(0));const n=u||l,r=e.originalVolume,o=i.transformMat4(Rr,r,t.matrix),a=re(Pr,o),h=this.un([a[0]+c[0],a[1]+c[1]]);a[0]=h.x,a[1]=h.y,a[2]+=s+(c[2]||0),Zt(n,bt(a[0]),bt(a[1]),a[2])}e.Xe=!0}hn(t){const e=t.boundingVolume,n=this.H(t.V),r=n.heightOffset||0,s=n.coordOffset||Fr;return e.coordOffset[0]!==s[0]||e.coordOffset[1]!==s[1]||e.heightOffset!==r}an(t){return void 0===t.geometricError||!t.boundingVolume}sn(t){let e=t.parent;for(;e&&e.in&&!(e.pt<=t.pt);)e.pt=t.pt,e=t.parent}onTileLoad(t,e){if(t.children&&(!e.children||!e.children.length)){e.children=t.children;const n=e.content.url;e.baseUrl=n.substring(0,n.lastIndexOf("/")+1);const r=this.getRenderer();r&&r.setToRedraw()}}onTilesetLoad(t,e,n){if(!t)return void console.warn("invalid tileset at : "+n);const s=this.H(e.V),i=(t.asset&&t.asset.gltfUpAxis||e&&e.St||s.upAxis||"Y").toUpperCase();t.root.baseUrl=n.substring(0,n.lastIndexOf("/")+1);const o=n.indexOf("realspace/")>-1;0===e.W&&(t.asset&&t.asset.s3mType&&o||s.isSuperMapiServer)&&(t.root.baseUrl+="data/path/");const a=t.asset.i3s,c=!!t.asset.s3mType;if(t.root.St=i,e){const n=e.V,s=this.Ce[n];c&&!s.isS3M&&(s.isS3M=c);const i=e.boundingVolume;ft(e,t.root),e.refine=e.refine&&e.refine.toLowerCase()||"replace",i&&(e.boundingVolume=i);const o=t.root.transform;o&&(e.parent?a||(e.matrix=r.multiply([],e.parent.matrix,o)):e.matrix=o),e.ln=e.content,delete e.content,t.root.content&&(e.content=t.root.content),e.in=this.an(e);const h=e.content&&(e.content.url||e.content.uri);h&&e.content.uri&&(e.content.url=e.content.uri,delete e.content.uri),!a&&h&&!xt(h)&&Ct(h)&&(e.content.url=e.baseUrl+h),t.root&&!e.parent&&this.dn(e)}this.Je(),this.fire("loadtileset",{tileset:t,index:e&&e.V,url:n})}nn(t,e,n){if(t.pt=1/0,0===t.W||t.in)return this.dn(t),1;if(this.cn(t),!this.mn(t,e,n))return-1;if(0===t.geometricError)return 1;let r=this.H(t.V).maximumScreenSpaceError;null==r&&(r=16);let s=this.pn(t);return 0===s&&t.parent&&(s=.5*(t.parent._e||0)),s>=r?1:0}Xt(e,n){n||(n=new t.Point(0,0));const r=this.getMap();return r.getGLZoom?r.coordToPoint(e,r.getGLZoom(),n):r.coordToPointAtRes(e,r.getGLRes(),n)}mn(e,n,r){const s=e.id;let i=this.kt[s]&&this.kt[s].obbox;const{boundingVolume:o}=e,a=o.region,c=o.box,h=o.sphere;if(!i)if(a)this.kt[s]=this.bn(e),i=this.kt[s].bbox,i.center=this.kt[s].coordCenter;else if(c)this.kt[s]=this.gn(e),i=this.kt[s].obbox,i.center=this.kt[s].coordCenter;else if(h){i=this.kt[s]=this.yn(e);const n=re(Rr,h),r=new t.Coordinate(n);i.center=r}if(n){if(a)Cr.xmin=i[0][0],Cr.ymin=i[0][1],Cr.xmax=i[1][0],Cr.ymax=i[1][1];else if(h){const t=i[2];Cr.xmin=i[0][0]-t,Cr.ymin=i[0][1]-t,Cr.xmax=i[0][0]+t,Cr.ymax=i[0][1]+t}else if(c){const t=i[1],e=i[2];Cr.xmin=i[0][0]-t,Cr.ymin=i[0][1]-e,Cr.xmax=i[0][0]+t,Cr.ymax=i[0][1]+e}if(!n.intersects(Cr))return!1}return a?f(r,i):h?d(r,i):!!c&&m(r,i)}bn(e){const n=this.getMap(),r=n.getGLRes(),s=e.boundingVolume.region;let{ws:i,en:o}=function(t){const e=t[0],n=t[1],r=t[2],s=t[3],i=t[4],o=t[5],a=Zt([],e,n,i),c=Zt([],r,s,o),h=re(a,a),u=re(c,c);return{ws:h,en:u}}(s);i=new t.Coordinate(i),o=new t.Coordinate(o);const a=n.coordToPointAtRes(i,r);a.z=n.altitudeToPoint(i.z,r);const c=n.coordToPointAtRes(o,r);c.z=n.altitudeToPoint(o.z,r);const h=[c.x,a.y,c.z,c.x,c.y,c.z,a.x,c.y,c.z,a.x,a.y,c.z,c.x,a.y,a.z,c.x,c.y,a.z,a.x,c.y,a.z,a.x,a.y,a.z],u=[(h[0]+h[18])/2,(h[1]+h[19])/2,(h[2]+h[20])/2],l=n.pointAtResToCoord(new t.Point(u),r);l.z=(i.z+o.z)/2;const f=this.H(e.V).Bt,d=[h.slice(21,24),h.slice(3,6)];if(f)for(let t=0;t<h.length;t+=3)h[t]-=f[0],h[t+1]-=f[1],h[t+2]-=f[2];return{bbox:d,boxPosition:h,pointCenter:u,coordCenter:l}}gn(e){const n=this.getRenderer(),r=this.getMap(),s="identity"===r.getProjection().code.toLowerCase(),o=r.getGLRes(),a=e.boundingVolume.box,c=a.slice(0,3),h=$r(this.wn(a,e.matrix),c),u=this.vn(e),l=[],f=this.H(e.V).Bt;Br.set(f[0],f[1]);const d=r.pointAtResToCoord(Br,o);for(let e=0;e<zr.length;e+=3){const a=zr.slice(e,e+3);i.transformMat4(a,a,h),re(a,a),s&&n.Ge(a,a);const c=new t.Coordinate(a);let u=r.coordToPointAtRes(c,o);u=[u.x,u.y,r.altitudeToPoint(c.z,o)],l[e]=u[0]-f[0],l[e+1]=u[1]-f[1],l[e+2]=u[2]-f[2]}return{obbox:this.Tn(l,u),boxPosition:l,boxCenter:u,coordCenter:d}}yn(e){const n=this.getMap(),r=this.getRenderer(),s="identity"===n.getProjection().code.toLowerCase(),i=e.boundingVolume.sphere,o=i;let a=Rr;0===o[0]&&0===o[1]&&0===o[2]?a=[0,0,-6378137]:re(a,o),s&&r.Ge(a,a);const c=new t.Coordinate(a),h=this.Xt(c,Br).toArray();h[2]=n.altitudeToPoint(c.z,n.getGLRes());const u=this._n(c);return[h,i[3]*u[2]]}Tn(t,e){const n=[(t[3]+t[12])/2,(t[4]+t[13])/2,(t[5]+t[14])/2],r=[(t[3]+t[18])/2,(t[4]+t[19])/2,(t[5]+t[20])/2],s=[(t[3]+t[9])/2,(t[4]+t[10])/2,(t[5]+t[11])/2],i=e.slice(0);return i[3]=n[0]-e[0],i[4]=n[1]-e[1],i[5]=n[2]-e[2],i[6]=r[0]-e[0],i[7]=r[1]-e[1],i[8]=r[2]-e[2],i[9]=s[0]-e[0],i[10]=s[1]-e[1],i[11]=s[2]-e[2],i}vn(e){const n=this.getMap(),r=this.getRenderer(),s="identity"===n.getProjection().code.toLowerCase(),o=n.getGLRes(),a=e.boundingVolume.box,c=a.slice(0,3),h=$r(this.wn(a,e.matrix),c),u=[0,0,0];i.transformMat4(u,u,h),re(u,u),s&&r.Ge(u,u);const l=new t.Coordinate(u),f=n.coordToPointAtRes(l,o);return[f.x,f.y,n.altitudeToPoint(l.z,o)]}dn(t){if(!t.boundingVolume)return;const e=t.boundingVolume.box,n=t.boundingVolume.region,r=t.boundingVolume.sphere,s=this.H(t.V);let i=null;if(e){i=this.On(t).pointCenter}else if(n){i=this.Mn(t).pointCenter}else r&&(i=this.yn(t)[0]);const o=s.heightOffset||0,a=s.coordOffset||[0,0];s.xn=[a[0]||0,a[1]||0],s.ft=o,s.Bt=i}Mn(t){if(!t.boundingVolume)return null;this.cn(t);return this.bn(t)}On(e){if(!e.boundingVolume)return null;this.cn(e);const n=this.getMap(),r="identity"===n.getProjection().code.toLowerCase(),s=this.getRenderer(),o=n.getGLRes(),a=e.boundingVolume.box,c=a.slice(0,3),h=$r(this.wn(a,e.matrix),c),u=[0,0,0];i.transformMat4(u,u,h),re(u,u),r&&s.Ge(u,u);const l=new t.Coordinate(u);let f=n.coordToPointAtRes(l,o);return f.z=n.altitudeToPoint(l.z,o),f=[f.x,f.y,f.z],{pointCenter:f,coordCenter:l}}wn(t,e){let n=t.slice(3,12);return n=function(t,e,n){const r=t[0]*e[0]+t[3]*e[1]+t[6]*e[2],s=t[1]*e[0]+t[4]*e[1]+t[7]*e[2],i=t[2]*e[0]+t[5]*e[1]+t[8]*e[2],o=t[0]*e[3]+t[3]*e[4]+t[6]*e[5],a=t[1]*e[3]+t[4]*e[4]+t[7]*e[5],c=t[2]*e[3]+t[5]*e[4]+t[8]*e[5],h=t[0]*e[6]+t[3]*e[7]+t[6]*e[8],u=t[1]*e[6]+t[4]*e[7]+t[7]*e[8],l=t[2]*e[6]+t[5]*e[7]+t[8]*e[8];return n[0]=r,n[1]=s,n[2]=i,n[3]=o,n[4]=a,n[5]=c,n[6]=h,n[7]=u,n[8]=l,n}(this.An(e,[]),n,n),n}An(t,e){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[4],e[4]=t[5],e[5]=t[6],e[6]=t[8],e[7]=t[9],e[8]=t[10],e}_n(t){const e=this.getMap(),n=e.distanceToPointAtRes(100,100,e.getGLRes(),t);let r;return r=e.altitudeToPoint?e.altitudeToPoint(100,e.getGLRes())/100:n.y/100,i.set(Lr,n.x/100*1.01,n.y/100*1.01,r),Lr}un(e){Array.isArray(e)&&(e=new t.Coordinate(e));let n=this.options.offset;if(dt(n)&&(n=n.call(this,Array.isArray(e)?new t.Coordinate(e):e)),n[0]||n[1]){const t=this.getMap(),r=t.getGLRes(),s=t.coordToPointAtRes(e,r);return s._sub(n),t.pointAtResToCoord(s,r)}return e}We(e){const n=this.H(e).maxExtent;if(!n)return null;const r=this.Ce[e];return r.maxExtent||(r.maxExtent=new t.Extent(n).convertTo(t=>this.Xt(t))),r.maxExtent}pn(t){const e=this.Ye,n=t.geometricError;if(0===n)return t._e=0,0;const r=this.getMap();let s;t.boundingVolume.region?s=function(t,e,n){t.In||(t.In=new Sr(t.boundingVolume.region));return t.In.distanceToCamera(e,n)}(t,this.Ze,this.Ke):t.boundingVolume.sphere?s=Hr(t.boundingVolume,this.Ze):t.boundingVolume.box&&(s=Vr(t.boundingVolume,this.Ze));const i=Math.max(Math.abs(s),1e-7),o=n*r.height/(i*e);return t.pt=s,t._e=o,o}Je(){const t=this.getRenderer();t&&t.setToRedraw()}Ut(t){return this.kt[t]}identify(e,n={}){const r=this.getMap(),s=this.getRenderer();if(!r||!s)return[];const i=r.coordToContainerPoint(new t.Coordinate(e));return this.identifyAtPoint(i,n)}identifyAtPoint(t,e={}){const n=[];if(!e.excludeMasks){const r=this.identifyMask(t,e);r&&r.length&&It(n,r)}const r=this.getMap(),s=this.getRenderer();if(!r||!s)return[];const i=r.getDevicePixelRatio();return It(n,s.pick(t.x*i,t.y*i,e)),n}getCurrentBatchIDs(){const t=this.getMap(),e=this.getRenderer();return t&&e?e.Qt():[]}highlight(t){const e=this.getRenderer();return e?(e.highlight(t),this):(this.J||(this.J=[]),this.J.push(t),this)}je(){if(this.J){for(let t=0;t<this.J.length;t++)this.highlight(this.J[t]);delete this.J}}cancelHighlight(t,e){const n=this.getRenderer();return n?(n.cancelHighlight(t,e),this):this}cancelAllHighlight(){const t=this.getRenderer();return t?(t.cancelAllHighlight(),this):this}showOnly(t){const e=this.getRenderer();return e?(e.showOnly(t),this):(this.Z||(this.Z=[]),this.Z.push(t),this)}Sn(){if(this.Z){for(let t=0;t<this.Z.length;t++)this.showOnly(this.Z[t]);delete this.Z}}cancelShowOnly(t){const e=this.getRenderer();return e?(e.cancelShowOnly(t),this):this}setServiceOpacity(t,e){const n=this.options.services[t];n&&(n.opacity=e);const r=this.getRenderer();return r?(r.setToRedraw(),this):this}setServiceDebugBoundingVolume(t,e){const n=this.options.services[t];n&&(n.debugShowBoundingVolume=e);const r=this.getRenderer();return r?(r.setToRedraw(),this):this}Qe(t){const e=this.getMap(),n=e.getGLRes();jr.set(t[0],t[1]);const r=e.pointAtResToCoord(jr,n);return"identity"===e.getProjection().code.toLowerCase()?(Pr[0]=r.x,Pr[1]=r.y,this.getRenderer().He(Rr,Pr),r.set(Rr[0],Rr[1]),r):r}}function Hr(t,e){const n=t.sphere,r=i.dist(n,e),s=t.sphere[3];return r<s?0:r-s}function Vr(t,e){const n=t.box;return ir(i.set(Rr,n[0],n[1],n[2]),a.set(Ur,n[3],n[4],n[5],n[6],n[7],n[8],n[9],n[10],n[11]),e)}function qr(t,e,n){const s=(t=yt(t)).indexOf("{s}")>=0?"{s}":t.indexOf("%7Bs%7D")>=0?"%7Bs%7D":null;return{service:n,visible:lt(n.visible)?1:n.visible,baseUrl:t.substring(0,t.lastIndexOf("/"))+"/",content:{url:t},refine:"replace",matrix:r.identity([]),V:e,W:0,domainKey:s}}function $r(t,e){return new Xr(t[0],t[3],t[6],e[0],t[1],t[4],t[7],e[1],t[2],t[5],t[8],e[2],0,0,0,1)}function Xr(t,e,n,r,s,i,o,a,c,h,u,l,f,d,m,p){this[0]=t||0,this[1]=s||0,this[2]=c||0,this[3]=f||0,this[4]=e||0,this[5]=i||0,this[6]=h||0,this[7]=d||0,this[8]=n||0,this[9]=o||0,this[10]=u||0,this[11]=m||0,this[12]=r||0,this[13]=a||0,this[14]=l||0,this[15]=p||0}Gr.mergeOptions(Nr),Gr.registerRenderer("gl",nr),Gr.registerJSONType("Geo3DTilesLayer");let Jr=null;function Qr(){return Jr||(Jr={"image/crn":Fn.crn&&Fn.crn(),"image/ktx2":Fn.ktx2&&Fn.ktx2(),"image/cttf":Fn.ktx2&&Fn.ktx2(),"draco":Fn.draco&&Fn.draco()}),Jr}class Kr{constructor(t,e,n){this.En=t,this.Nn=e||p,this.Ne=n,this.Cn=Qr()}static createEmptyB3DM(){return{featureTable:null,batchTable:null,gltf:{}}}load(t,e,n=0,r=0,s){return e?(r||(r=e.byteLength),this.Rn(t,e,n,r,s)):b.getArrayBuffer(t,{}).then(e=>{const s=e.data;return r||(r=s.byteLength),this.Rn(t,s,n,r)})}Rn(t,e,n,r,s){const i=s&&s.maxTextureSize,o=this.Pn(e,n,r,t);if(o.error)return Promise.resolve(o);const a=t.substring(0,t.lastIndexOf("/")),c=new this.Nn(a,o.glb,{transferable:!0,requestImage:this.En,decoders:this.Cn,supportedFormats:this.Ne,maxTextureSize:i});return c.load({skipAttributeTransform:!1}).then(e=>{e.url=`${t}-${n}-${r}`;const s=c.transferables;for(let t=0;t<o.transferables.length;t++)s.indexOf(o.transferables[t])<0&&s.push(o.transferables[t]);return{magic:"b3dm",count:o.count,transferables:s,featureTable:o.featureTable,batchTable:o.batchTable,batchTableBin:o.batchTableBin,gltf:e}})}Pn(t,e,n,r){const s=new DataView(t,e,n),i=s.getUint32(4,!0);if(1!==i){const t="Unsupported b3dm version: "+i+", url:"+r;return console.warn(t),{error:t}}if(s.getUint32(8,!0)!==s.byteLength){const t="Length in b3dm header is inconsistent with b3dm's byte length, url: "+r;return console.warn(t),{error:t}}let o,a=s.getUint32(12,!0),c=s.getUint32(16,!0),h=s.getUint32(20,!0),u=s.getUint32(24,!0),l=28+e;h>=570425344?(l-=8,o=a,h=c,u=0,a=0,c=0):u>=570425344&&(l-=4,o=h,h=a,u=c,a=0,c=0);const f=[t];let d,m,p;if(a>0?(d=me(t,l,a),l+=a,o=d.BATCH_LENGTH):d={"BATCH_LENGTH":o},c>0&&(l+=c),h>0&&(m=pe(t,l,h),l+=h,u>0)){const e=be(0,l,u);p=t.slice(e.offset,e.offset+e.byteLength),l+=u,f.push(p)}const b=d.BATCH_LENGTH,g={};if(d&&d.BATCH_ID){g.BATCH_ID=ye(d.BATCH_ID,t,(void 0).offset,b);const e=g.BATCH_ID.array&&g.BATCH_ID.array.buffer;e&&f.indexOf(e)<0&&f.push(e)}return{count:o,transferables:f,featureTable:d,batchTable:m,batchTableBin:p,b3dm:g,glb:{buffer:t,byteOffset:l,byteLength:s.byteLength+s.byteOffset-l}}}Ln(){return null}}class Zr{constructor(t,e,n,r){this.En=t,this.Nn=e||p,this.Ne=n,this.Cn=Qr(),this.kn=r}load(t,e,n=0,r=0,s){return e?(r||(r=e.byteLength),this.Rn(t,e,n,r,s)):b.getArrayBuffer(t,{}).then(e=>{const s=e.data;return r||(r=s.byteLength),this.Rn(t,s,n,r)})}Rn(t,e,n,r,s){return this.Bn(t,e,n,r,s).then(({gltf:s,transferables:i})=>{const o=this.Un(e,n,r,t);if(o.error)return Promise.resolve(o);for(let t=0;t<i.length;t++)-1===o.transferables.indexOf(i[t])&&o.transferables.push(i[t]);return delete s.transferables,Promise.resolve({magic:"i3dm",count:o.count,transferables:o.transferables,featureTable:o.featureTable,batchTable:o.batchTable,batchTableBin:o.batchTableBin,i3dm:o.i3dm,gltf:s})})}Bn(t,e,n,r,s){const i=s&&s.maxTextureSize,o={transferable:!0,requestImage:this.En,decoders:this.Cn,supportedFormats:this.Ne,maxTextureSize:i},a=new DataView(e,n,r),c=32+a.getUint32(12,!0)+a.getUint32(16,!0)+a.getUint32(20,!0)+a.getUint32(24,!0);if(0===a.getUint32(28,!0)){let r=Tt(new Uint8Array(e,c+n,a.byteLength-c));-1==r.indexOf("://")&&(r=t.substring(0,t.lastIndexOf("/"))+"/"+r);return r.indexOf(".glb")>0?b.getArrayBuffer(r,{}).then(t=>this.jn(r,{buffer:t.data,byteOffset:0},o)):b.getJSON(r,{}).then(t=>this.jn(r,t,o))}{const r={buffer:e,byteOffset:c+n,byteLength:a.byteLength-c};return this.jn(t,r,o)}}jn(t,e,n){const r=t.substring(0,t.lastIndexOf("/")),s=new this.Nn(r,e,n);return s.load({skipAttributeTransform:!0}).then(n=>{let r=0,i=0;return e.buffer&&(r=e.byteOffset||0,i=e.byteLength||0),n.url=`${t}-${r}-${i}`,{transferables:s.transferables,gltf:n}})}Un(t,e,n,r){const s=new DataView(t,e,n),i=s.getUint32(4,!0);if(1!==i){const t="Unsupported pnts version: "+i+", url:"+r;return console.warn(t),{error:t}}if(s.getUint32(8,!0)!==s.byteLength){const t="Length in pnts header is inconsistent with pnts's byte length, url: "+r;return console.warn(t),{error:t}}const o=[t],{featureTable:a,featureTableBin:c,batchTable:h,batchTableBin:u}=Ae(s,32+e,o),l={},f=a.INSTANCES_LENGTH;if(a.POSITION){const{byteOffset:e}=a.POSITION;l.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:f,componentType:5126,array:new Float32Array(t,e+c.offset,3*f).slice()},o.push(l.POSITION.array.buffer)}else if(a.POSITION_QUANTIZED){const e=a.QUANTIZED_VOLUME_OFFSET,n=a.QUANTIZED_VOLUME_SCALE,{byteOffset:r}=a.POSITION_QUANTIZED;l.POSITION={byteStride:12,byteOffset:0,itemSize:3,count:f,componentType:5126,array:this.Dn(new Uint16Array(t,r+c.offset,3*f),e,n)},o.push(l.POSITION.array.buffer)}if(a.BATCH_ID){l.BATCH_ID=ye(a.BATCH_ID,t,c.offset,f);const e=l.BATCH_ID.array&&l.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}if(a.NORMAL_UP){let{byteOffset:e}=a.NORMAL_UP;l.NORMAL_UP={byteStride:0,byteOffset:0,itemSize:3,count:f,componentType:5126,array:new Float32Array(t,e+c.offset,3*f).slice()},o.push(l.NORMAL_UP.array.buffer),e=a.NORMAL_RIGHT.byteOffset,l.NORMAL_RIGHT={byteStride:0,byteOffset:0,itemSize:3,count:f,componentType:5126,array:new Float32Array(t,e+c.offset,3*f).slice()},o.push(l.NORMAL_RIGHT.array.buffer)}else if(a.NORMAL_UP_OCT32P){let{byteOffset:e}=a.NORMAL_UP_OCT32P;l.NORMAL_UP={byteStride:0,byteOffset:0,itemSize:3,count:f,componentType:5126,array:this.Fn(new Uint16Array(t,e+c.offset,2*f))},o.push(l.NORMAL_UP.array.buffer),e=a.NORMAL_RIGHT_OCT32P.byteOffset,l.NORMAL_RIGHT={byteStride:0,byteOffset:0,itemSize:3,count:f,componentType:5126,array:this.Fn(new Uint16Array(t,e+c.offset,2*f))},o.push(l.NORMAL_RIGHT.array.buffer)}if(a.SCALE){const{byteOffset:e}=a.SCALE;l.SCALE={byteStride:0,byteOffset:0,itemSize:1,count:f,componentType:5126,array:new Float32Array(t,e+c.offset,f).slice()},o.push(l.SCALE.array.buffer)}else if(a.SCALE_NON_UNIFORM){const{byteOffset:e}=a.SCALE_NON_UNIFORM;l.SCALE_NON_UNIFORM={byteStride:0,byteOffset:0,itemSize:3,count:f,componentType:5126,array:new Float32Array(t,e+c.offset,3*f).slice()},o.push(l.SCALE_NON_UNIFORM.array.buffer)}return{count:f,batchTable:h,batchTableBin:u,featureTable:a,i3dm:l,transferables:o}}Fn(t){const e=t.length/2,n=new Float32Array(3*e),r=[];for(let s=0;s<e;s++)Yr(r,t[2*s],t[2*s+1],65535),n[3*s]=r[0],n[3*s+1]=r[1],n[3*s+2]=r[2];return n}Dn(t,e,n){return xe(new Float32Array(t.length),t,e,n)}Ln(){return null}}function Yr(t,e,n,r){if(t[0]=Wr(e,r),t[1]=Wr(n,r),t[2]=1-(Math.abs(t[0])+Math.abs(t[1])),t[2]<0){const e=t[0];t[0]=(1-Math.abs(t[1]))*ts(e),t[1]=(1-Math.abs(e))*ts(t[1])}return w.normalize(t,t)}function Wr(t,e){return function(t,e,n){return t<e?e:t>n?n:t}(t,0,e=function(t,e){if(null!=t)return t;return e}(e,255))/e*2-1}function ts(t){return t<0?-1:1}class es{constructor(){}load(t,e,n=0,r=0){return e?(r||(r=e.byteLength),this.Rn(t,e,n,r)):b.getArrayBuffer(t,{}).then(e=>{const s=e.data;return r||(r=s.byteLength),this.Rn(t,s,n,r)})}Rn(t,e,n,r){return this.zn(e,n,r,t).then(t=>t.error?t:{magic:"pnts",count:t.count,transferables:t.transferables,featureTable:t.featureTable,batchTable:t.batchTable,batchTableBin:t.batchTableBin,pnts:t.pnts})}zn(t,e,n,r){const s=new DataView(t,e,n),i=s.getUint32(4,!0);if(1!==i){const t="Unsupported pnts version: "+i+", url:"+r;return console.warn(t),{error:t}}if(s.getUint32(8,!0)!==s.byteLength){const t="Length in pnts header is inconsistent with pnts's byte length, url: "+r;return console.warn(t),{error:t}}const o=[t],{featureTable:a,featureTableBin:c,batchTable:h,batchTableBin:u}=Ae(s,e+28,o),l=a.QUANTIZED_VOLUME_OFFSET,f=a.QUANTIZED_VOLUME_SCALE,d=a.POINTS_LENGTH;let m,p={};if(a.extensions&&a.extensions["3DTILES_draco_point_compression"]){p=a.extensions["3DTILES_draco_point_compression"],m=new DataView(t,p.byteOffset+c.offset,p.byteLength);const e={attributes:p.properties,useUniqueIDs:!1};return this.Gn||(this.Gn=Qr().draco),this.Gn(m,e).then(e=>{const n=e.attributes;!a.POSITION&&!a.POSITION_QUANTIZED||n.POSITION||n.POSITION_QUANTIZED||(n.POSITION=a.POSITION,n.POSITION_QUANTIZED=a.POSITION_QUANTIZED),!(a.RGB||a.RGBA||a.RGB565)||n.RGB||n.RGBA||n.RGB565||(n.RGB=a.RGB,n.RGBA=a.RGBA,n.RGB565=a.RGB565),!a.NORMAL&&!a.NORMAL_OCT16P||n.NORMAL||n.NORMAL_OCT16P||(n.NORMAL=a.NORMAL,n.NORMAL_OCT16P=a.NORMAL_OCT16P);const r=this.Hn(t,e.attributes,c.offset,d,o,l,f);if(e.attributes.BATCH_ID){const t=e.attributes.BATCH_ID.array;r.BATCH_ID={byteStride:0,byteOffset:0,itemSize:1,count:t.length,componentType:Me(t.constructor),array:t},o.push(t.buffer)}else if(a.BATCH_ID||Object.keys(h).length){a.BATCH_ID?r.BATCH_ID=ye(a.BATCH_ID,t,c.offset,d):r.BATCH_ID=ns(d);const e=r.BATCH_ID.array&&r.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}return{count:d,batchTable:h,batchTableBin:u,featureTable:a,pnts:r,transferables:o}})}const b=this.Hn(t,a,c.offset,d,o,l,f);if(a.BATCH_ID||Object.keys(h).length){a.BATCH_ID?b.BATCH_ID=ye(a.BATCH_ID,t,c.offset,d):b.BATCH_ID=ns(d);const e=b.BATCH_ID.array&&b.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}return Promise.resolve({count:d,batchTable:h,batchTableBin:u,featureTable:a,pnts:b,transferables:o})}Hn(t,e,n,r,s,i,o){const a={};if(e.POSITION){let{byteOffset:i,array:o}=e.POSITION;i=i||0;const c=o?0:n;if(!o){const e=t.slice(i+c,i+c+3*r*4);o=new Float32Array(e)}a.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:r,componentType:5126,array:o},s.push(o.buffer)}else if(e.POSITION_QUANTIZED){let{byteOffset:c}=e.POSITION_QUANTIZED;const{array:h}=e.POSITION_QUANTIZED;c=c||0;const u=h?0:n;a.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:r,componentType:5126,array:this.Dn(h||new Uint16Array(t,c+u,3*r),i,o)},s.push(a.POSITION.array.buffer)}if(e.RGBA){let{byteOffset:i,array:o}=e.RGBA;i=i||0;const c=o?0:n;if(!o){const e=t.slice(i+c,i+c+4*r);o=new Uint8Array(e)}a.RGBA={byteStride:0,byteOffset:0,itemSize:4,count:r,componentType:5121,array:o},s.push(o.buffer)}else if(e.RGB){let{byteOffset:i,array:o}=e.RGB;i=i||0;const c=o?0:n;if(!o){const e=t.slice(i+c,i+c+3*r);o=new Uint8Array(e)}a.RGB={byteStride:0,byteOffset:0,itemSize:3,count:r,componentType:5121,array:o},s.push(o.buffer)}else if(e.RGB565){let{byteOffset:i,array:o}=e.RGB565;i=i||0;const c=o?0:n;if(!o){const e=t.slice(i+c,i+c+2*r);o=new Uint16Array(e)}a.RGB565={byteStride:0,byteOffset:0,itemSize:1,count:r,componentType:5123,array:o},s.push(o.buffer)}if(e.NORMAL){let{byteOffset:i,array:o}=e.NORMAL;i=i||0;const c=o?0:n;if(!o){const e=t.slice(i+c,i+c+3*r*4);o=new Float32Array(e)}a.NORMAL={byteStride:0,byteOffset:0,itemSize:3,count:r,componentType:5126,array:o},s.push(o.buffer)}else if(e.NORMAL_OCT16P){let{byteOffset:i,array:o}=e.NORMAL_OCT16P;i=i||0;const c=o?0:n;if(!o){const e=t.slice(i+c,i+c+2*r);o=new Uint8Array(e)}a.NORMAL_OCT16P={byteStride:0,byteOffset:0,itemSize:2,count:r,componentType:5121,array:o},s.push(o.buffer)}return a}Dn(t,e,n){return xe(new Float32Array(t.length),t,e,n)}Ln(){return null}}function ns(t){const e=Mt(t),n=new e(t);for(let e=0;e<t;e++)n[e]=e;return{byteStride:0,byteOffset:0,itemSize:1,count:t,componentType:Me(e),array:n}}class rs{constructor(t,e,n,r){this.Ne=n,this.En=t,this.Nn=e||p,this.kn=r}load(t,e,n=0,r=0,s){return e?this.Rn(t,e,n,r,s):b.getArrayBuffer(t,{}).then(e=>{const s=e.data;return this.Rn(t,s,n,r)})}Rn(t,e,n,r,s){r||(r=e.byteLength);const i=this.Vn(e,t,n,r),o=[];for(let n=0;n<i.length;n++){let r;if("b3dm"===i[n].magic)r=new Kr(this.En,this.Nn,this.Ne);else if("i3dm"===i[n].magic)r=new Zr(this.En,this.Nn,this.Ne,this.kn);else if("pnts"===i[n].magic)r=new es;else{if("cmpt"!==i[n].magic){console.warn("Unsupported magic in CMPT tile:",i[n].magic);continue}r=new rs(this.En,this.Nn,this.Ne,this.kn)}o.push(r.load(t,e,i[n].offset,i[n].byteLength,s).then(t=>t))}return Promise.all(o).then(t=>({magic:"cmpt",tiles:t}))}Vn(t,e,n,r){const s=new DataView(t,n,r),i=s.getUint32(4,!0);if(1!==i){const t="Unsupported cmpt version: "+i+", url:"+e;return console.warn(t),{error:t}}if(16===s.byteLength)return[];const o=[],a=s.getUint32(12,!0);let c=16;for(let e=0;e<a;e++){const e=fe(s,c),r=s.getUint32(c+8,!0);o.push({magic:e,buffer:t,offset:c+n,byteLength:r}),c+=r}return o}}if(e.transcoders){const n=t.Map.VERSION;if(n.indexOf("1.0.0-beta")>=0||n.indexOf("1.0.0-alpha")>=0){const n=e.transcoders.inject(T);t.registerWorkerAdapter("@maptalks/3dtiles",n)}else t.registerWorkerAdapter("@maptalks/3dtiles",(function(){return e.transcoders.inject(T)}))}else t.registerWorkerAdapter("@maptalks/3dtiles",T);export{Kr as B3DMLoader,rs as CMPTLoader,Gr as Geo3DTilesLayer,Nt as Geo3DTilesUtil,ue as Geo3DTransform};"undefined"!=typeof console&&console.log("@maptalks/3dtiles v0.94.0");
11
+ */(100,1),Qn=[0,0,0,1],Kn=[1,1,1];class Zn{constructor(e,r){this.i=r,this.o=r.getRenderer().canvas,this.pickingFBO=r.getRenderer().pickingFBO,this.h=new t.SpatialReference,this.u=e,this.m=new n.Renderer(e),this.p={},this.v={},this.T={},this.O={},this._={},this.M={},this.A=new n.Scene,this.I=new n.Scene,this.S=new n.Scene,this.N=new n.Scene,this.C=new n.ResourceLoader(e.texture(2)),this.P=this.R.bind(this),this.L=new n.PhongMaterial({"baseColorFactor":[1,1,1,1]}),this.k(),this.B=new n.KHRTechniquesWebglManager(this.u,this.U(),this.C);const s=this.getMap();s.altitudeToPoint&&(this.F=s.altitudeToPoint(100,s.getGLRes())/100)}getI3DMMeshes(){return this.O}getPNTSMeshes(){return this.T}getB3DMMeshes(){return this.v}getPaintedMeshes(){return this.D}getMap(){return this.i.getMap()}paint(t,e,n){const i=n&&n.renderTarget,o=n&&n.sceneFilter,a=this.getMap();if(!t.length||!a)return null;const c=this.j(),h=a.projViewMatrix,u=[],l=[],d=[],m=[],p=[],b=this.G(t),g=[];for(let i=0,o=t.length;i<o;i++){const o=t[i].data.node;let a=this.H(o);if(!a)continue;const c=this.i.V(o.q);o.$&&c.debugShowBoundingVolume&&g.push(o.$);const y=c.heightOffset||0,w=c.coordOffset||Sn;this._[o.id]&&(a=this._[o.id],a=_t(a));let v=c.polygonOffset||On;dt(v)&&(v=v()),Array.isArray(a)||(u[0]=a,a=u);for(let t=0,i=a.length;t<i;t++){const i=a[t].properties.magic;if(a[t].properties.heightOffset===y&&a[t].properties.coordOffset[0]===w[0]&&a[t].properties.coordOffset[1]===w[1]||(this.X(a[t]),a[t].J=r.copy([],a[t].localTransform)),"b3dm"===i){if(a[t].getBoundingBox&&!f(h,a[t].getBoundingBox()))continue;const{batchIdData:e,batchIdMap:r}=a[t].geometry.properties;if(e&&r){const e=a[t].properties.node.q;this.K&&this.K[e]?s.highlightMesh(this.u,a[t],this.K[e],this.Z,r):this.K&&this.K[e]||s.highlightMesh(this.u,a[t],null,this.Z,r),s.showOnly(this.u,a[t],this.Y&&this.Y[e],this.W,r)}n&&n.bloom&&a[t].properties.hlBloomMesh&&(a[t].properties.hlBloomMesh.properties.depthFunc="always",a[t].properties.hlBloomMesh.properties.polygonOffset=v,d.push(a[t].properties.hlBloomMesh)),d.push(a[t])}else"pnts"===i?m.push(a[t]):"i3dm"===i&&p.push(a[t]);a[t].properties.isLeaf=!!e[o.id],a[t].properties.level=b.get(o.tt),a[t].properties.polygonOffset=v,a[t].et=o,e[o.id]||l.push(a[t]),this.nt(a[t]),this.rt(a[t],o)}}let y=0;const w=this.B.getExcludeFilter();y+=this.st(this.it,c,[o,En,w],i,l,d,p),y+=this.st(this.ot,c,[o,Nn,w],i,l,d,p),this.B.forEachShader((t,e,n)=>{const r=this.j(n);y+=this.st(t,r,[o,e],i,l,d,p)}),this.I.setMeshes(m);const v=this.ct();return y+=this.m.render(this.ht,v,this.I,i&&i.fbo),this.D={pntsMeshes:m,i3dmMeshes:p,b3dmMeshes:d},g.forEach(t=>{this.ut(t)}),this.N.setMeshes(g),this.m.render(this.lt,c,this.N,i&&i.fbo),y}ut(t){const e=t.properties.node,n=this.i.V(e.q),s=n.heightOffset||0,a=this.ft(),c=n.dt,h=i.set(Vn,0,0,a*(s-c));let u=n.rotation||[0,0,0];u=o.fromEuler(jn,u[0],u[1],u[2]);const l=n.scale||[1,1,1],f=r.fromRotationTranslationScale(zn,u,h,l);r.multiply(t.localTransform,t.J,f)}st(t,e,n,r,s,i,o){t.filter=n.filter(t=>!!t),e.debug=!1,e.debug=!1;let a=0;return this.A.setMeshes(i),a+=this.m.render(t,e,this.A,r&&r.fbo),this.S.setMeshes(o),a+=this.m.render(t,e,this.S,r&&r.fbo),a}pt(t,e){return e.et.bt-t.et.bt}deleteTile(t){const e=t.node;e.$&&(e.$.geometry.dispose(),e.$.dispose(),delete e.$);const n=e.id;this.gt(n)}gt(t){const e=this.v[t]||this.T[t]||this.O[t]||this._[t]||this.p[t];this._[t]?this.yt(t):e&&(this.wt(e),delete this.v[t],delete this.T[t],delete this.O[t],delete this.p[t])}yt(t){let e=this._[t];e=_t(e);for(let t=0;t<e.length;t++){const{id:n}=e[t].properties;this.gt(n)}delete this._[t]}wt(t){if(Array.isArray(t))for(let e=0,n=t.length;e<n;e++)this.wt(t[e]);else{s.showOnly(this.u,t),s.highlightMesh(this.u,t);const e=t.geometry.properties.url;if(e){const n=this.M[e];n&&n.refMeshes&&(n.refMeshes.delete(t.uuid),n.refMeshes.size||(n.geometry.dispose(),n.material.dispose(),delete this.M[e]))}else t.geometry.dispose(),t.material&&t.material.dispose();t.dispose()}}remove(){const t=this.i;wn(t.getRenderer().canvas,t.getMap());for(const t in this._)this.yt(t);this._={};for(const t in this.v)this.gt(t);this.v={};for(const t in this.T)this.gt(t);this.T={};for(const t in this.O)this.gt(t);this.O={};for(const t in this.p)this.gt(t);this.p={},this.it&&(this.it.dispose(),delete this.it),this.ot&&(this.ot.dispose(),delete this.ot),this.ht&&(this.ht.dispose(),delete this.ht),this.lt&&(this.lt.dispose(),delete this.lt),this.B.dispose(),this.picking&&this.picking.dispose()}H(t){return this.v[t.id]||this.T[t.id]||this.O[t.id]||this._[t.id]}has(t){return this.H(t)||this.p[t.id]}X(t){const e=t.properties.magic;"b3dm"===e?this.vt(t):"i3dm"===e?this.Tt(t):"pnts"===e&&this.Ot(t)}createPntsMesh(t,e,s,i){if(this.T[e]){const t=this.T[e];return console.warn(`pnts mesh with id(${e}) was already created.`),i(null,{id:e,mesh:t}),t}const{pnts:o,featureTable:a,rootIdx:c,compressed_int16_params:h}=t,u=a.POINTS_LENGTH;o.BATCH_ID||(o.BATCH_ID=new Uint8Array(u),o.BATCH_ID.fill(0));const l=new n.Geometry(o,null,u,{static:!0,primitive:"points",positionAttribute:"POSITION",pickingIdAttribute:"BATCH_ID"});l.generateBuffers(this.u);const f={};o.POSITION?f.HAS_POSITION=1:o.POSITION_QUANTIZED&&(f.HAS_POSITION_QUANTIZED=1),o.RGB?f.HAS_RGB=1:o.RGBA?f.HAS_RGBA=1:o.RGB565&&(f.HAS_RGB565=1),(o.NORMAL||o.NORMAL_OCT16P)&&(f.HAS_NORMAL=1,o.NORMAL_OCT16P&&(f.HAS_NORMAL_OCT16P=1)),this._t(f,h),t.featureTable.CONSTANT_RGBA&&(t.featureTable.CONSTANT_RGBA=t.featureTable.CONSTANT_RGBA.map(t=>t/255));const{rtcCenter:d,rtcCoord:m,projCenter:p}=t,b=this.i.V(c),g=new n.Mesh(l);g.properties.magic="pnts",g.properties.id=e,g.properties.node=s,g.properties.count=u,g.properties.batchTable=t.batchTable,g.properties.batchTableBin=t.batchTableBin,g.properties.serviceIndex=c,g.properties.rtcCoord=m,g.properties.rtcCenter=d,g.properties.projCenter=p,g.setDefines(f),Object.defineProperty(g.uniforms,"pointColor",{enumerable:!0,get:function(){return t.featureTable.CONSTANT_RGBA?t.featureTable.CONSTANT_RGBA:b&&b.pointColor||[1,1,1,1]}});const y=this.getMap();let w=null,v=null;Object.defineProperty(g.uniforms,"pointSize",{enumerable:!0,get:function(){if(!b)return 2;if(an(b.pointSize)){const t=JSON.stringify(b.pointSize);t!==w&&(v=cn(b.pointSize),w=t);return v(y.getZoom())}return b.pointSize||2}});let T=null,O=null;return Object.defineProperty(g.uniforms,"pointOpacity",{enumerable:!0,get:function(){if(!b)return 1;if(an(b.pointOpacity)){const t=JSON.stringify(b.pointOpacity);t!==T&&(O=cn(b.pointOpacity),T=t);return O(y.getZoom())}return b.pointOpacity||1}}),this.Mt(g,h),this.Ot(g),g.J=r.copy([],g.localTransform),this.T[e]=g,i(null,{id:e,mesh:[g]}),[g]}Ot(t){const e=t.localTransform||[],{rtcCoord:n,node:r,projCenter:s}=t.properties;this.xt(e,n,s,r.q),t.setLocalTransform(e)}createI3DMMesh(t,e,s,a){if(this.O[e]){const t=this.O[e];return console.warn(`i3dm mesh with id(${e}) was already created.`),this.p[e]||a(null,{id:e,mesh:t}),t}const c=this.i.V(s.q),h=this.At(s.It),{i3dm:u,featureTable:l,gltf:f,batchTable:d,batchTableBin:m,count:b}=t,g=l.INSTANCES_LENGTH,{rtcCenter:y,rtcCoord:w}=t,v=this.St(Fn,w),T=this.Et(Dn,s,y,w);r.multiply(v,T,v);const{POSITION:O,NORMAL_UP:_,NORMAL_RIGHT:M,SCALE:x,SCALE_NON_UNIFORM:A,INSTANCE_ROTATION:I}=u,S={"instance_vectorA":new Float32Array(4*g),"instance_vectorB":new Float32Array(4*g),"instance_vectorC":new Float32Array(4*g),"aPickingId":new Uint16Array(g)};for(let t=0;t<g;t++)S.aPickingId[t]=t;const E=new Float32Array(3),N=new Float32Array(3),C=[],P=new Float32Array(1),R=new Float32Array(3),L=[],k=[],B=[],U=[],F=new Float32Array(9);!function(t,e){let{byteOffset:n,byteStride:r,count:s}=t;const{componentType:i,itemSize:o}=t,a=t.array.buffer,c=i?p.getTypedArrayCtor(i):t.array.constructor;if(n=void 0===n?t.array.byteOffset:n,r=r||0,s=s||t.array.length/o,(!r||r===o*c.BYTES_PER_ELEMENT)&&n%c.BYTES_PER_ELEMENT==0){const t=new c(a,n,s*o);for(let r=0;r<s*o;r+=o){e(new c(t.buffer,n+r*c.BYTES_PER_ELEMENT,o),r/o)}return}const h=new Uint8Array(o*c.BYTES_PER_ELEMENT);r||(r=o*c.BYTES_PER_ELEMENT);for(let t=0;t<s;t++){const s=new Uint8Array(a,r*t+n,o*c.BYTES_PER_ELEMENT);h.set(s);e(new c(h.buffer),t),s.set(h)}}(O,(t,e)=>{_?($t(N,M,e),$t(E,_,e),i.cross(C,N,E),i.normalize(C,C),Ot(L,N,0),Ot(L,E,1),Ot(L,C,2),o.fromMat3(k,L)):I?($t(F,I,e),o.fromMat3(k,F)):o.identity(k),x?($t(P,x,e),i.set(B,P[0],P[0],P[0])):A?($t(R,A,e),i.set(B,...R)):i.set(B,1,1,1),r.fromRotationTranslationScale(U,k,t,B),Xt(S.instance_vectorA,e,U,0),Xt(S.instance_vectorB,e,U,1),Xt(S.instance_vectorC,e,U,2)});const D={};for(const t in S)D[t]={buffer:this.u.buffer({dimension:S[t].length/g,data:S[t]}),divisor:1};const z=c.shader||"pbr";let j=0,G=!0;const H=[],V=[];return Ft(f,(t,i,o,a)=>{const c=this.Nt(t,i,o,a,s,!0,z,V),{geometry:u,material:l}=c;l&&!l.isReady()&&(G=!1,j++);const f=new n.InstancedMesh(D,g,u,l);c.refMeshes||(c.refMeshes=new Set,c.refMeshes.add(f.uuid)),f.properties.magic="i3dm",f.properties.id=e,f.properties.count=b,f.properties.batchTable=d,f.properties.batchTableBin=m,f.properties.serviceIndex=s.q,f.properties.rtcCoord=w,f.properties.rtcCenter=y,f.properties.node=s;const p=this.Ct(t,u,l,s.q,a);t.compressed_int16_params&&this.Mt(f,t.compressed_int16_params),this.Pt(f,t.attributes);const T=r.identity([]);if(t.matrices&&t.matrices.length)for(let e=0;e<t.matrices.length;e++)r.multiply(T,T,t.matrices[e]);r.multiply(T,h,T),f.setPositionMatrix(T),this.Tt(f,v),f.setDefines(p),f.properties.polygonOffset={offset:0,factor:0},H.push(f),delete t.attributes,f.J=r.copy([],f.localTransform)}),Yn(V),G?(this.O[e]=H,a(null,{id:e,mesh:H})):(this.p[e]={meshes:H,count:j},H.Rt=a),H}Tt(t,e){const{rtcCenter:n,rtcCoord:s,node:i}=t.properties;if(!e){e=this.St(Fn,s);const t=this.Et(Dn,i,n,s);r.multiply(e,t,e)}const o=this.i.V(i.q),a=t.localTransform||[];if(o.coordOffset){const t=this.Lt(Dn,i.q,s);r.multiply(a,t,e)}else r.copy(a,e);t.setLocalTransform(a),t.properties.heightOffset=o.heightOffset||0,t.properties.coordOffset=o.coordOffset&&o.coordOffset.slice(0)||Sn}createB3DMMesh(e,s,i,o){if(e.gltf&&(e.gltf.transferables=null),this.v[s]||this.p[s]){const t=this.v[s];return console.warn(`mesh with id(${s}) was already created.`),this.p[s]||o(null,{id:s,mesh:t}),t}let a;if(i.maxExtent){const e=new t.Extent(i.maxExtent).convertTo(t=>this._pointToPrj(t));a=[e.xmin,e.ymin,e.xmax,e.ymax]}const c=e.gltf,{projCenter:h}=c.extensions.MAPTALKS_RTC,{rtcCoord:u,center:l}=c.extensions.CESIUM_RTC,f=c.asset.sharePosition,d=this.At(i.It);let m;m=f?this.St(Fn,u):this.xt(Fn,u,h,i.q);const p=this.i.V(i.q);let b=p.shader||"pbr";if(p.unlit)b="phong";else if(c.materials)for(let t=0;t<c.materials.length;t++)if(c.materials[t]&&c.materials[t].extensions&&c.materials[t].extensions.KHR_materials_unlit){b="phong";break}const g=[],y=[];let w=0,v=!0;return Ft(c,(t,o,c,T)=>{const O=this.Nt(t,o,c,T,i,!1,b,g),{geometry:_,material:M}=O;M&&!M.isReady()&&(v=!1,w++);const x=new n.Mesh(_,M);O.refMeshes||(O.refMeshes=new Set,O.refMeshes.add(x.uuid)),x.properties.magic="b3dm",x.properties.id=s,x.properties.node=i,e.batchTable&&(x.properties.batchTable=e.batchTable,x.properties.batchTableBin=e.batchTableBin),x.properties.count=e.featureTable&&e.featureTable.BATCH_LENGTH||0,x.properties.serviceIndex=i.q;const A=this.Ct(t,_,M,i.q,T);x.setDefines(A);const I=t.compressUniforms;if(I)for(const t in I)x.setUniform(t,I[t]);t.compressed_int16_params&&this.Mt(x,t.compressed_int16_params),this.Pt(x,t.attributes),a&&(A.USE_MAX_EXTENT=1,x.setUniform("maxPrjExtent",a)),Object.prototype.hasOwnProperty.call(x.uniforms,"polygonOpacity")||Object.defineProperty(x.uniforms,"polygonOpacity",{enumerable:!0,get:function(){return pt(p.opacity)?p.opacity:1}}),Object.prototype.hasOwnProperty.call(x.uniforms,"polygonFill")||Object.defineProperty(x.uniforms,"polygonFill",{enumerable:!0,get:function(){return Et([],p.polygonFill||_n)}}),Object.prototype.hasOwnProperty.call(x.material.uniforms,"hsv")||Object.defineProperty(x.material.uniforms,"hsv",{enumerable:!0,get:function(){return p.hsv||Mn}});const S=r.identity([]);if(f&&t.matrices&&t.matrices.length)for(let e=0;e<t.matrices.length;e++)r.multiply(S,S,t.matrices[e]);f&&r.multiply(S,d,S),x.properties.node=i,x.properties.projCenter=h,x.properties.nodeMatrix=S,x.properties.isSharedPosition=f,x.properties.rtcCoord=u,x.properties.rtcCenter=l,this.vt(x,m),y.push(x),delete t.attributes,x.J=r.copy([],x.localTransform)}),Yn(g),v?(this.v[s]=y,o(null,{id:s,mesh:y})):(this.p[s]={meshes:y,count:w},y.Rt=o),y}kt(t){const e=this.i.Bt[t.id];if(!e)return;let s,i,o,a;if(e.length){if(2===e.length){const t=e[0],n=e[1];s=Jn.vertices,i=Jn.indices,o=t,a=[n,n,n]}}else{s=e.boxPosition,i=Xn;o=this.i.V(t.q).Ut,a=Kn}const c=new n.Geometry({POSITION:s},i,0,{primitive:"lines",positionAttribute:"POSITION"}),h=new n.Mesh(c,new n.Material({lineColor:[.8,.8,.1,1],lineOpacity:1})),u=r.identity([]);r.fromRotationTranslationScale(u,Qn,o,a),h.localTransform=u,h.J=r.copy([],u),h.properties.node=t,t.$=h}Mt(t,e){e.POSITION&&t.setUniform("compressedPositionRange",e.POSITION),e.TEXCOORD_0&&t.setUniform("compressedTexcoordRange_0",e.TEXCOORD_0),e.TEXCOORD_1&&t.setUniform("compressedTexcoordRange_1",e.TEXCOORD_0),e.NORMAL&&t.setUniform("compressedNormalRange",e.NORMAL),e.TANGENT&&t.setUniform("compressedTangentRange",e.TANGENT),e.compressed_ratio&&t.setUniform("compressed_ratio",e.compressed_ratio)}vt(t,e){const{isSharedPosition:n,rtcCoord:s,rtcCenter:i,projCenter:o,nodeMatrix:a,node:c}=t.properties;e||(e=n?this.St(Fn,s):this.xt(Fn,s,o,c.q));const h=t.localTransform||r.identity([]);if(n){const t=this.Et(Dn,c,i,s);r.multiply(h,e,a),r.multiply(h,t,h)}else r.multiply(h,e,a);const u=this.i.V(c.q);if(u.coordOffset){const t=this.Lt(Dn,c.q,s);r.multiply(h,t,h)}t.setLocalTransform(h),t.properties.heightOffset=u.heightOffset||0,t.properties.coordOffset=u.coordOffset&&u.coordOffset.slice(0)||Sn}Pt(t,e){if(e&&e.TEXCOORD_0&&e.TEXCOORD_0.extensions&&e.TEXCOORD_0.extensions.WEB3D_quantized_attributes){const n=e.TEXCOORD_0.extensions.WEB3D_quantized_attributes.decodeMatrix;t.setUniform("decodeMatrix",n)}}Et(e,n,s,o){const a=this.getMap(),c=this.i.V(n.q).heightOffset||0,h=new t.Coordinate(o);let u;u=a.altitudeToPoint?this.F:a.distanceToPointAtRes(100,100,a.getGLRes(),h).y/100;const l=n.matrix?r.copy(e,n.matrix):r.identity(e);if(s){Be(l,i.transformMat4(Cn,s,l),l)}const f=function(t,e,n,r,s,i,o){e=w.copy(Fe,e);const a=Yt(Fe,e[0]*Xe,e[1]*Xe,e[2]),c=y.getTranslation(De,n),h=r.ellipsoid;let u;u=0===w.len(c)?w.set(ze,0,0,-6378137):se(ze,c),qe.x=u[0],qe.y=u[1];const l=r.project(qe,$e);je[0]=l.x/s,je[1]=l.y/s,je[2]=(u[2]+o)*i;const f=Ue(a,h,Ge),d=function(t,e,n){const r=t[0],s=t[1],i=t[2],o=t[4],a=t[5],c=t[6],h=t[8],u=t[9],l=t[10],f=e[0],d=e[1],m=e[2],p=e[3],b=e[4],g=e[5],y=e[6],w=e[7],v=e[8],T=r*f+o*d+h*m,O=s*f+a*d+u*m,_=i*f+c*d+l*m,M=r*p+o*b+h*g,x=s*p+a*b+u*g,A=i*p+c*b+l*g,I=r*y+o*w+h*v,S=s*y+a*w+u*v,E=i*y+c*w+l*v;return n[0]=T,n[1]=O,n[2]=_,n[3]=0,n[4]=M,n[5]=x,n[6]=A,n[7]=0,n[8]=I,n[9]=S,n[10]=E,n[11]=0,n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=t[15],n}(y.invert(He,f),v.fromMat4(Ve,n),t);return Be(t,je,d),t}(l,o,l,a.getProjection(),a.getGLRes(),u,c),d=function(t,e){return w.set(t,e[12],e[13],e[14]),t}(Un,f);let m=this.i.options.offset;if(dt(m)){const t=this.i.Ft(n.id).center;m=m.call(this.i,t)}return i.set(Bn,m[0],m[1],0),i.sub(d,d,Bn),Be(f,d,f),f}Lt(t,e,n){const s=this.i.V(e);if(!s.coordOffset)return null;const o=this.getMap(),a=o.getGLRes();Pn.set(n[0],n[1]);const c=o.coordToPointAtRes(Pn,a,Ln),h=s.coordOffset,u=Pn.set(n[0]+h[0],n[1]+h[1]),l=o.coordToPointAtRes(u,a,kn),f=l.x-c.x,d=l.y-c.y,m=this.ft(),p=i.set(Bn,f,d,(h[2]||0)*m);return r.fromTranslation(t,p)}ft(){const t=this.getMap();let e;return e=t.altitudeToPoint?this.F:t.distanceToPointAtRes(100,100,t.getGLRes(),Pn).y/100,e}createCMPTMesh(t,e,n,r){if(this._[e]){const t=this._[e];return console.warn(`mesh with id(${e}) was already created.`),r(null,{id:e,mesh:t}),t}const{content:s}=t,i=[];for(let t=0;t<s.length;t++){const{magic:r}=s[t],o=e+"."+t;"b3dm"===r?this.createB3DMMesh(s[t],o,n,(t,{mesh:e})=>{i.push(e)}):"i3dm"===r?this.createI3DMMesh(s[t],o,n,(t,{mesh:e})=>{i.push(e)}):"pnts"===r?this.createPntsMesh(s[t],o,n,(t,{mesh:e})=>{i.push(e)}):"cmpt"===r&&this.createCMPTMesh(s[t],o,n,(t,{mesh:e})=>{i.push(e)})}return this._[e]=i,r(null,{id:e,mesh:i}),i}Ct(t,e,n,r,s){const i=("phong"===(this.i.V(r).shader||"pbr")?this.it:this.ot).getGeometryDefines(e);s.asset&&"S3M"===s.asset.generator&&this.Dt(i,e),e.data.uvRegion&&(i.HAS_I3S_UVREGION=1),e.data[e.desc.normalAttribute]&&(i.VertexNormal=1),e.data[e.desc.color0Attribute]&&(i.VertexColor=1),e.data[e.desc.uv0Attribute]&&(i.TexCoord=1),e.data[e.desc.textureCoordMatrixAttribute]&&(i.HAS_TextureCoordMatrix=1),n.get("uTexture")&&(i.COMPUTE_TEXCOORD=1),n.get("uTexture2")&&(i.TexCoord2=1),"MESHOPT"===this.i.zt&&(i.MeshOPT_Compress=1),this.hasIBL()&&(i.HAS_IBL_LIGHTING=1),t.attributes&&t.attributes.TEXCOORD_0&&"WEB3D_quantized_attributes"===t.attributes.TEXCOORD_0.extensions&&(i.HAS_WEB3D_quantized_attributes_TEXCOORD=1),i.HAS_MIN_ALTITUDE=1,i.HAS_LAYER_OPACITY=1,this._t(i,t.compressed_int16_params);return ft(i,t.compressDefines),i}_t(t,e){e&&Object.keys(e).length>0&&(t.HAS_COMPRESSED_INT16=1,e.POSITION&&(t.HAS_COMPRESSED_INT16_POSITION=1),e.TEXCOORD_0&&(t.HAS_COMPRESSED_INT16_TEXCOORD_0=1),e.TEXCOORD_1&&(t.HAS_COMPRESSED_INT16_TEXCOORD_1=1),e.NORMAL&&(t.HAS_COMPRESSED_INT16_NORMAL=1),e.TANGENT&&(t.HAS_COMPRESSED_INT16_TANGENT=1),e.compressed_ratio&&(t.HAS_COMPRESSED_INT16_RATIO=1))}nt(t){const e=this.i.getRenderer();e&&e.updateMaskDefines(t)}Dt(t,e){e.data.aNormal&&(t.VertexNormal=1),e.data.instanceId&&(t.Instance=1),e.data.aTexCoord0&&(t.TexCoord=1),e.data.aColor&&(t.VertexColor=1),e.data.aTexCoord1&&(t.TexCoord2=1),e.data.uv2&&(t.InstanceBim=1)}Nt(t,e,n,r,s,i,o,a){let c=!1;r.asset&&"S3M"===r.asset.generator&&(c=!0,r.extensions=r.extensions||{});const h=r.url+"-"+e+"-"+n;if(this.M[h])return this.M[h];let u,l;a.push(t);const f=r.materials&&r.materials[t.material],d=r.extensions&&r.extensions.KHR_techniques_webgl,m=this.i.V(s.q);if(d&&f.extensions&&f.extensions.KHR_techniques_webgl){const e=this.jt(t,r,i,c);u=e.material,l=e.geometry,m.fillEmptyDataInMissingAttribute&&(l.desc.fillEmptyDataInMissingAttribute=!0)}else{l=this.Gt(t,i,$n);const e=m.ambientLight;let n=m.environmentExposure;const s=m.material,c=this.getMap().getLightManager(),h=c&&c.getAmbientLight();if(e&&(!h||h.color)&&void 0===n){const t=h&&h.color?h.color[0]:.2;n=e[0]/t}u=this.Ht(t.material,r,o,s||xn,n||1,a,m)}u&&Object.defineProperty(u.uniforms,"alphaTest",{enumerable:!0,get:function(){const t=m.alphaTest;return lt(t)?.1:t}}),u&&!u.isReady()?u.Vt=s.id:u||(u=this.L);const p={geometry:l,material:u};return l.properties.url=h,this.M[h]=p,p}jt(t,e,n,r){const{geometry:s,material:i}=this.B.createMesh(t,e,n,r);return{geometry:s,material:i}}Gt(t,e,r){const s=t.attributes;let i=s._BATCHID&&s._BATCHID.array;if(i&&i.byteOffset&&(i=new i.constructor(i)),s.COLOR_0){const t=s.COLOR_0.array||s.COLOR_0;if(t instanceof Float32Array){const e=new Uint8Array(t.length);for(let n=0;n<e.length;n++)e[n]=Math.round(255*t[n]);s.COLOR_0.array?(s.COLOR_0.array=e,s.COLOR_0.componentType=5121):s.COLOR_0=e}}const o={};for(const t in s){const e=pn(this.u,s[t],{dimension:s[t].itemSize}),n=r[t]||t;o[n]={buffer:e},s[t].quantization&&(o[n].quantization=s[t].quantization),n===r.POSITION&&(o[n].array=s[t].array,o[n].min=s[t].min,o[n].max=s[t].max)}const a=t.indices?t.indices.array?t.indices.array.slice():t.indices:null,c=new n.Geometry(o,a,0,{static:!0,positionAttribute:r.POSITION,normalAttribute:r.NORMAL,uv0Attribute:r.TEXCOORD_0,uv1Attribute:r.TEXCOORD_1,color0Attribute:r.COLOR_0,tangentAttribute:r.TANGENT,pickingIdAttribute:r._BATCHID,primitive:void 0===t.mode?"triangles":mn(t.mode)});return i&&a&&(c.properties.batchIdData=i,c.properties.batchIdMap=function(t,e){if(!e)return null;const n=new Map;for(let r=0;r<e.length;r++){const s=e[r],i=t[s];let o=n.get(i);o||(o=[],n.set(i,o)),o.push(s)}return n}(i,a)),c.generateBuffers(this.u,{excludeElementsInVAO:e}),c}xt(t,e,n,s){const o=r.identity(t),a=this.getMap();Pn.x=n[0],Pn.y=n[1];const c=this._prjToPoint(Pn),h=this.qt(),u=1/(a.getGLZoom?a.getResolution(a.getGLZoom()):a.getGLRes());Pn.x=e[0],Pn.y=e[1];const l=this.ft();let f=this.i.options.offset;dt(f)&&(f=f.call(this.i,Pn));const d=this.i.V(s).heightOffset||0;return i.set(Un,c.x-f[0],c.y-f[1],l*n[2]+l*d),r.translate(o,o,Un),i.set(h,u,u,l),r.scale(o,o,h),o}rt(t,e){const n=this.i.V(e.q),s=n.Ut;let a=n.rotation||[0,0,0];a=o.fromEuler(Gn,a[0],a[1],a[2]);const c=n.scale||[1,1,1],h=r.fromRotationTranslationScale([],a,Hn,c),u=r.identity([]),l=r.identity([]);r.translate(u,u,i.scale(qn,s,-1)),r.translate(l,l,s);const f=r.multiply(u,u,t.J);r.multiply(h,h,f);const d=r.multiply(l,l,h);t.localTransform=d}St(t,e){const n=r.identity(t),s=this.getMap(),o=this.qt();Pn.x=e[0],Pn.y=e[1];const a=s.distanceToPointAtRes(100,100,s.getGLRes(),Pn);let c;return c=s.altitudeToPoint?this.F:a.y/100,i.set(o,a.x/100*1.01,a.y/100*1.01,c),r.scale(n,n,o),n}k(){const t={x:0,y:0,width:()=>this.o?this.o.width:1,height:()=>this.o?this.o.height:1},e=[],s=[];this.ht=new n.MeshShader({vert:Jt,frag:"#define SHADER_NAME PNTS\n\nprecision mediump float;\n\n\n\nvarying vec4 vColor;\n\n\n\nvoid main() {\n\n vec2 circCoord = 2.0 * gl_PointCoord - 1.0;\n\n if (dot(circCoord, circCoord) > 1.0) {\n\n discard;\n\n } else {\n\n gl_FragColor = vColor;\n\n }\n\n}\n\n",uniforms:[{name:"projViewModelMatrix",type:"function",fn:(t,e)=>r.multiply(s,e.projViewMatrix,e.modelMatrix)},{name:"modelNormalMatrix",type:"function",fn:(t,n)=>a.fromMat4(e,n.modelMatrix)}],extraCommandProps:{viewport:t,blend:{enable:!0,func:{src:"src alpha",dst:"one minus src alpha"},equation:"add"},depth:{enable:!0,range:[0,1],func:"<"}}});const i=this.U();this.it=new n.PhongShader({extraCommandProps:i}),this.ot=new n.pbr.StandardShader({extraCommandProps:i}),this.lt=new n.EdgeShader({extraCommandProps:{viewport:{x:0,y:0,width:()=>this.o?this.o.width:1,height:()=>this.o?this.o.height:1},blend:{enable:!0,func:{srcRGB:"src alpha",srcAlpha:1,dstRGB:"one minus src alpha",dstAlpha:"one minus src alpha"},equation:"add"}}});const o=this.i;yn(o.getRenderer().canvas,this.u,o.getMap()),this.picking=new n.FBORayPicking(this.m,{vert:this.ot.vert,extraCommandProps:i,uniforms:this.ot.uniforms,defines:{"PICKING_MODE":1,"ENABLE_PICKING":1,"HAS_PICKING_ID":1}},this.pickingFBO,this.getMap()),this.$t=new n.FBORayPicking(this.m,{vert:Jt,extraCommandProps:i,uniforms:this.ht.uniforms,defines:{"PICKING_MODE":1,"ENABLE_PICKING":1,"HAS_PICKING_ID":1}},this.pickingFBO,this.getMap())}U(){return{viewport:{x:0,y:0,width:()=>this.o?this.o.width:1,height:()=>this.o?this.o.height:1},cull:{enable:!0},stencil:{enable:!0,func:{cmp:(t,e)=>e.meshProperties.isLeaf?"always":">=",ref:(t,e)=>e.meshProperties.level},opFront:{fail:"keep",zfail:"keep",zpass:"replace"},opBack:{fail:"keep",zfail:"keep",zpass:"replace"}},depth:{enable:!0,range:[0,1],func:(t,e)=>e.meshProperties.depthFunc||"<"},blend:{enable:!0,func:{src:"src alpha",dst:"one minus src alpha"},equation:"add"},polygonOffset:{enable:!0,offset:(t,e)=>e.meshProperties.polygonOffset}}}ct(t){const e=this.getMap(),n=e.getLightManager(),r=(n&&n.getDirectionalLight()||{}).direction||[1,1,-1],s=t&&t.pointOpacity||1;return{projViewMatrix:e.projViewMatrix,pointOpacity:s,lightDir:i.normalize(r,r)}}j(){const t=this.getMap(),e=this.i,n=e.getRenderer().canvas,{iblTexes:r,dfgLUT:s}=vn(n),i=Tn(t,r,s),o=this.i.getRenderer(),a=o.getMaskUniforms();i.minAltitude=e.options.altitude||0;const c=o.canvas.gl&&o.canvas.gl.wrap?e.options.opacity||0:1;return i.layerOpacity=c,ft(i,{czm_lightDirectionEC:i.light0_viewDirection,lightSpecular:[1,1,1],viewMatrix:t.viewMatrix,projMatrix:t.projMatrix,projViewMatrix:t.projViewMatrix,outSize:[n.width,n.height],polygonFill:[1,1,1,1],polygonOpacity:1}),ft(i,a),i}Ht(t,e,r,s,i,o,a){const h=e.materials&&e.materials[t];if(!h||!h.baseColorTexture&&!h.pbrMetallicRoughness)return null;const u=ft({},s);if(h.baseColorTexture){const t=e.textures[h.baseColorTexture.index];let n;t&&!t.image.color&&(n=this.Xt(t,o)),u.baseColorFactor=t&&t.image.color||h.baseColorFactor||[1,1,1,1],n&&(u.baseColorTexture=n)}else{if(h.normalTexture){const t=this.Xt(e.textures[h.normalTexture.index],o);if(t){const e=h.normalTexture.scale||1;u.normalTexture=t,u.normalMapFactor=e}}if(h.occlusionTexture){const t=this.Xt(e.textures[h.occlusionTexture.index],o);if(t){const e=h.occlusionTexture.strength||1;u.occlusionTexture=t,u.occlusionFactor=e}}if(h.emissiveTexture){const t=this.Xt(e.textures[h.emissiveTexture.index],o);t&&(u.emissiveTexture=t)}h.emissiveFactor&&(u.emissiveFactor=h.emissiveFactor);const t=h.pbrMetallicRoughness;if(t){if(t.baseColorFactor&&(u.baseColorFactor=t.baseColorFactor),t.baseColorTexture&&void 0!==t.baseColorTexture.index){const n=e.textures[t.baseColorTexture.index];if(n.image&&n.image.color)u.baseColorFactor=u.baseColorFactor?c.multiply(u.baseColorFactor,u.baseColorFactor,n.image.color):n.image.color;else{const t=this.Xt(n,o);t&&(u.baseColorTexture=t,u.baseColorTexture.getREGLTexture(this.u))}}if(lt(t.metallicFactor)||(u.metallicFactor=t.metallicFactor),lt(t.roughnessFactor)||(u.roughnessFactor=t.roughnessFactor),h.metallicRoughnessTexture){const t=this.Xt(e.textures[h.metallicRoughnessTexture.index],o);t&&(u.metallicRoughnessTexture=t)}}}if(h.s3mMaterial)return new n.Material(u);if(u.environmentExposure=i,u.alphaTest=.1,a.unlit||h.extensions&&h.extensions.KHR_materials_unlit)return u.ambientColor=[1,1,1],u.light0_diffuse=[0,0,0,0],u.lightSpecular=[0,0,0],new n.PhongMaterial(u);let l=new n.pbr.StandardMaterial(u);"phong"===r&&(l=n.PhongMaterial.convertFrom(l));const f=h.pbrMetallicRoughness,d=f&&f.baseColorTexture&&f.baseColorTexture.extensions;return d&&d.KHR_texture_transform&&(l.set("khr_offset",d.KHR_texture_transform.offset||[0,0]),l.set("khr_rotation",d.KHR_texture_transform.rotation||0),l.set("khr_scale",d.KHR_texture_transform.scale||[1,1])),l.doubleSided=!(!a.doubleSided&&!h.doubleSided),l.once("complete",this.P),l}Xt(t,e){const r={type:t.type?fn(t.type):"uint8",format:t.format?dn(t.format):"rgba",flipY:!!t.flipY},s=t.image;if(e.push(s),s.array?r.data=s.array:s.mipmap&&(r.mipmap=s.mipmap),!r.data&&!r.mipmap)return null;if(r.width=s.width,r.height=s.height,r.mipmap&&(r.width<4||r.height<4))return null;const i=t.sampler||t.texture&&t.texture.sampler;return i&&(i.magFilter&&(r.mag=hn(i.magFilter)),i.minFilter&&(r.min=un(i.minFilter)),i.wrapS&&(r.wrapS=ln(i.wrapS)),i.wrapT&&(r.wrapT=ln(i.wrapT))),new n.Texture2D(r,this.C)}R({target:t}){const e=t.Vt,n=this.p[e];if(n.count--,!n.count){const t=n.meshes;this.v[e]=t,delete this.p[e];const r=t.Rt;delete t.Rt,r(null,{mesh:n.meshes,id:e})}}qt(){return An}Jt(t){return this.i.Jt(t)}_pointToPrj(t){const e=this.getMap();return e.getGLZoom?e._pointToPrj(t,e.getGLZoom()):e._pointToPrjAtRes(t,e.getGLRes())}_prjToPoint(t){const e=this.getMap();return e.getGLZoom?e._prjToPoint(t,e.getGLZoom()):e._prjToPointAtRes(t,e.getGLRes(),Rn)}At(t){return"Y"===t?bn:"X"===t?gn:In}pick(t,e,n=3){const r=this.i;if(!r||!r.options.picking)return[];if(!this.pickingFBO||!this.picking)return[];const s=[],i=this.j(),o=this.Qt(this.picking,i,this.A,t,e,n);o&&s.push(o);const a=this.Qt(this.picking,i,this.S,t,e,n);a&&s.push(a);const c=this.ct(),h=this.Qt(this.$t,c,this.I,t,e,n);return h&&s.push(h),s}Qt(t,e,n,r,s,i){if(!n.getMeshes().length)return null;const o=this.i,a=this.getMap();t.render(n.getMeshes().filter(t=>!t.bloom),e,!0);let c={};t.getRenderedMeshes().length&&(c=t.pick(r,s,i,e,{viewMatrix:a.viewMatrix,projMatrix:a.projMatrix,returnPoint:o.options.pickingPoint}));const{meshId:h,pickingId:u,point:l,coordinate:f}=c,d=(0===h||h)&&t.getMeshAt(h);if(!d||!d.geometry)return null;const m=d.properties;l&&l.length&&(l[0]=Math.round(1e5*l[0])/1e5,l[1]=Math.round(1e5*l[1])/1e5,l[2]=Math.round(1e5*l[2])/1e5);const p={batchId:u};if(o.options.debug&&(p.debugInfo=m),m&&m.batchTable){const{batchTable:t,batchTableBin:e,count:n}=m,r=u;for(const s in t)void 0!==t[s].byteOffset?p[s]=ve(t[s],e,n,r):p[s]=t[s][r]}return{service:d.properties.serviceIndex,data:p,point:l,coordinate:f}}G(t){let e=new Set;for(let n=0,r=t.length;n<r;n++){const r=t[n].data.node;this.H(r)&&e.add(r.tt)}e=Array.from(e),e.sort();const n=new Map,r=e.length;for(let t=0;t<r;t++)n.set(e[t],t);return n}highlight(t){this.K=t;const e=this.i.getRenderer();this.Z=e.getFrameTimestamp(),e.setToRedraw(!0)}cancelAllHighlight(){this.K=null;const t=this.i.getRenderer();this.Z=t.getFrameTimestamp(),t.setToRedraw(!0)}showOnly(t){this.Y=t;const e=this.i.getRenderer();this.W=e.getFrameTimestamp(),e.setToRedraw(!0)}cancelShowOnly(){this.Y=null;const t=this.i.getRenderer();this.W=t.getFrameTimestamp(),t.setToRedraw(!0)}Kt(){if(!this.D)return[];const t={},e=[];for(const n in this.D){const r=this.D[n];if(r)for(let n=0;n<r.length;n++){const s=r[n],i=s&&s.geometry;if(!s||!i)continue;const o=s.properties.serviceIndex;t[o]||(t[o]=new Set);const a=i.properties.batchIdData;if(a)for(let n=0;n<a.length;n++)t[o].has(a[n])||(e.push({id:a[n],service:o}),t[o].add(a[n]))}}return e}hasIBL(){const t=this.getMap().getLightManager();return!!(t&&t.getAmbientResource())}}function Yn(t){for(let e=0;e<t.length;e++)t[e]&&(t[e].array&&(t[e].array=null),t[e].mipmap&&(t[e].mipmap=null),t[e].indices&&(t[e].indices=null))}const Wn=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("unable to locate global object")},tr=Wn(),er=tr.gl_trans__coders=tr.gl_trans__coders||{};function nr(t,e){if(e)for(let n=0;n<e.length;n++){t[e[n].id||e[n].index]=e[n]}}er.inject=function(t){const e=t.toString(),n=e.indexOf("{")+1,r=e.substring(0,n),s=tr.gl_trans__coders=tr.gl_trans__coders||{};let i=`${r}\n const _____getGlobal = ${Wn.toString()};\n const g___lobals = _____getGlobal()\n const tran_____scoders = g___lobals['gl_trans__coders'] = g___lobals['gl_trans__coders'] || {};`;for(const t in s)"inject"!==t&&"getTranscoder"!==t&&"registerTranscoder"!==t&&(i+='tran_____scoders["'+t+'"] ='+s[t].toString()+"\n;");return i+="\n"+e.substring(r.length),i},er.registerTranscoder=function(t,e){er[t]=e},er.getTranscoder=function(t){return er[t]};const rr=[];class sr{constructor(t,e,n,r,s){this.i=r,this.Zt=t,this.q=e,this.Yt=s,this.Wt=n.version,t.indexOf("i3s:tileset:")<0?(this.Wt<=1.6?this.te="root":this.te=0,n.version=this.Wt):(this.te=t.substring("i3s:tileset:".length),this.Wt>1.6&&(this.te=parseInt(this.te))),this.Zt=t,this.ee=n}load(){const t=this.ee,e=t.layerScene.baseUrl;if(this.Wt<=1.6)return t[this.te]&&t[this.te].lodSelection?(this.ne=t[this.te],this.re()):new Promise(n=>{let r=e+"/nodes/"+this.te;t.layerScene.eslpk&&(r+="/3dNodeIndexDocument.json"),this.Yt(this.q,r,()=>{this.ne=t[this.te],n(this.re())})});if(this.Wt>=1.7){if(t[this.te])return this.ne=t[this.te],this.re();const n=Math.floor(this.te/t.nodesPerPage);return new Promise(r=>{let s=e+"/nodepages/"+n;t.layerScene.eslpk&&(s+=".json"),this.Yt(this.q,s,()=>{this.ne=t[this.te],r(this.re())})})}return null}getTileset(){return this.se}getChildrenURL(){return this.ie}re(){const t=this.ee,e=t.layerScene.baseUrl,n=this.ne.children,r=[],s={};if(n)for(let i=0;i<n.length;i++)if(this.Wt<=1.6){const o=n[i].id;if(t[o])continue;const a=o;s[a]||(s[a]=new Promise(n=>{let r=e+"/nodes/"+a;t.layerScene.eslpk&&(r+="/3dNodeIndexDocument.json"),this.Yt(this.q,r,()=>{n()})}),r.push(s[a]))}else{const o=n[i];if(t[o])continue;const a=Math.floor(o/t.nodesPerPage);s[a]||(s[a]=new Promise(n=>{let r=e+"/nodepages/"+a;t.layerScene.eslpk&&(r+=".json"),this.Yt(this.q,r,()=>{n()})}),r.push(s[a]))}return r.length?Promise.all(r).then(()=>this.oe()):this.oe()}oe(){return Promise.resolve(this.ae())}ce(t){nr(this.ee,t)}ae(){return{asset:{i3s:!0,version:"1.0",gltfUpAxis:"Z"},geometricError:Number.MAX_VALUE,root:this.he(this.ne,!0)}}he(t){const e=this.i.getRenderer(),n=this.ee.projection,r=!n||n&&4326===n.wkid,s=this.Wt,i=this.ee,o=t,a=o.obb,c=o.mbs,h={};let u;if(c)u=w.set([],c[0],c[1],c[2]),r||(u=e.ue(u,u)),u=ir([],u[0],u[1],u[2]),h.sphere=[...u,c[3]];else if(a){u=w.set([],a.center[0],a.center[1],a.center[2]),r||(u=e.ue(u,u)),u=ir([],u[0],u[1],u[2]);const t=function(t,e,n){const r=v.fromQuat([],n);return r[0]=r[0]*e[0],r[1]=r[1]*e[0],r[2]=r[2]*e[0],r[3]=r[3]*e[1],r[4]=r[4]*e[1],r[5]=r[5]*e[1],r[6]=r[6]*e[2],r[7]=r[7]*e[2],r[8]=r[8]*e[2],[...t,...r]}(u,a.halfSize,a.quaternion),n=t[3]+t[6]+t[9],s=t[4]+t[7]+t[10],i=t[5]+t[8]+t[11];w.set(rr,n,s,i);const o=w.len(rr);h.sphere=[...u,o]}let l=1/0,f=0;if(o.mbs?f=o.mbs[3]:o.obb&&(f=Math.max(Math.max(o.obb.halfSize[0],o.obb.halfSize[1]),o.obb.halfSize[2])),void 0!==o.lodThreshold)if("maxScreenThresholdSQ"===i.lodSelectionMetricType){l=f/(Math.sqrt(o.lodThreshold)/(.25*Math.PI))}else console.error("Unsupported lodSelectionMetricType in Layer");else if(void 0!==o.lodSelection)for(let t=0;t<o.lodSelection.length;t++)"maxScreenThreshold"===o.lodSelection[t].metricType&&(l=f/o.lodSelection[t].maxError);(l===1/0||isNaN(l))&&(l=1e5);const d=16*l,m=y.identity([]),p=o.children;let b;if(p){b=[];const t=this.ee;for(let e=0;e<p.length;e++){const n=s<=1.6?p[e].id:p[e];if(!t[n]){b=null;break}b.push(this.he(t[n]))}}const g={refine:"REPLACE",boundingVolume:h,transform:m,geometricError:d};return s<=1.6?t.lodSelection?t.geometryData&&(g.content={uri:"i3s:mesh:"+(t.id||t.index)}):g.content={uri:"i3s:tileset:"+(t.id||t.index)}:p&&p.length&&!b?g.content={uri:"i3s:tileset:"+(t.id||t.index)}:o.mesh&&(g.content={uri:"i3s:mesh:"+(t.id||t.index)}),b&&b.length&&(g.children=b),g}getJSON(){return this.ne}}function ir(t,e,n,r){return Yt(t,bt(e),bt(n),r)}const or=!!er.ktx2,ar=r.identity([]),cr=(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const t=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(t instanceof WebAssembly.Module)return new WebAssembly.Instance(t)instanceof WebAssembly.Instance}}catch(t){}return!1})();function hr(t){return t.indexOf("i3s:mesh")>=0}const ur="i3s:mesh:".length;function lr(t,e,n,r,s){const i=e.layerScene.eslpk,o=function(t,e){const n=e.substring(ur);return t>=1.7?parseInt(n):n}(e.version,t),a=e[o],c=e.layerScene.baseUrl,h=[];let u=!1;const l=ar;let f,d;if(e.version<=1.6){if(!a.geometryData)return null;const t=a.geometryData.length;if(!t)return null;let n=c+`/nodes/${a.id}/`+a.geometryData[t-1].href;i&&(n+=".bin");const r={geometry:{url:n,info:e.layerScene.store.defaultGeometrySchema}};let s=a.textureData&&a.textureData[0]&&a.textureData[0].href;if(s){const t=e.layerScene.store.textureEncoding[0];let n;n="image/jpeg"===t?"jpg":"png",i&&(s+="."+n);const o={pbrMetallicRoughness:{baseColorTexture:{url:c+`/nodes/${a.id}/`+s,factor:1,format:n,mimeType:t},metallicFactor:0}};r.material=o}h.push(r)}else{f=a.mesh.geometry,d=a.mesh.material;const t=e.layerScene.geometryDefinitions[f.definition],{geometryBuffers:o}=t;u=r&&2===o.length;const l=er.draco&&u?o[1]:o[0],m=er.draco&&u?1:0;let p=c+`/nodes/${f.resource}/geometries/`+m;i&&(p+=".bin");const b={geometry:{url:p,info:l}};if(s&&cr&&u&&!er.draco)throw new Error("Must import @maptalks/transcoder.draco to load i3s draco compressed geometry");const g=e.layerScene.materialDefinitions,y=e.layerScene.textureSetDefinitions;let w,v=0;if(d&&(v=g[d.definition]),g){w=function(t,e,n,r,s,i){const o=JSON.parse(JSON.stringify(t));return function t(e,n,r,s,i,o){for(const a in e)if(e[a]&&e[a].textureSetDefinitionId>=0){const t=n[e[a].textureSetDefinitionId],c="images/"+t.formats[0].format,h=fr(t.formats,i),u={url:r+`/nodes/${s}/textures/${h.name}`,factor:void 0===e[a].factor?1:e[a].factor,format:h.format,mimeType:c};if(o){let t="";switch(h.format){case"dds":t="bin.dds";break;case"jpg":case"png":t=h.format}u.url+="."+t}e[a]=u}else mt(e[a])&&t(e[a],n,r,s,i,o)}(o,e,n,r,s,i),o}(v,y,c,d.resource,n,e.layerScene.eslpk)}else w={pbrMetallicRoughness:{metallicFactor:0}};b.material=w,h.push(b)}return{dracoCompression:u,meshes:h,nodeIndex:o,center:a.obb&&a.obb.center||a.mbs&&[a.mbs[0],a.mbs[1],a.mbs[2]],transform:l}}function fr(t,e){for(let n=0;n<=t.length;n++){const r=t[n].format;if("dds"===r&&e.hasExtension("WEBGL_compressed_texture_s3tc"))return t[n];if("jpg"===r||"png"===r)return t[n];if("ktx2"===r&&or)return t[n]}return null}const dr=new t.Coordinate(0,0),mr=new t.Coordinate(0,0),pr=new Set,br=[];class gr extends(h(t.renderer.CanvasRenderer)){constructor(t){super(t),this.prepareWorker(),this.tilesLoading={},this.tileCache=new Ut(t.getId(),1024*t.options.maxGPUMemory*1024,this.deleteTile.bind(this)),this.le={},this.fe=[],this.Yt=this.de.bind(this)}getAnalysisMeshes(){if(!this.painter)return br;const t=this.painter.getPaintedMeshes();if(!t)return br;const e=[],{b3dmMeshes:n,pntsMeshes:r,i3dmMeshes:s}=t;return n.length&&It(e,n),r.length&&It(e,r),s.length&&It(e,s),e}needToRedraw(){return!!this.getMap().isInteracting()||(!!this.fe.length||super.needToRedraw())}getFrameTimestamp(){return this.me}drawOnInteracting(t,e,n){this.draw(e,n)}draw(t,e){this.me=t;const n=this.prepareCanvas();if(n&&!n.intersects(this.canvasExtent2D))return void this.completeRender();const{root:r,tiles:s}=this.layer.getTiles(),i=s.length;if(!s||!i)return void this.completeRender();this.pe(),this.be();const{selectedTiles:o,leaves:a,requests:c}=this.ge(r,s);c.length&&this.loadTiles(c),this.ye(o,a,e),this.we(),c.length||this.completeRender()}ge(t,e){const n=this.layer.getRootTiles();let r=[];this.ve();let s=0;const i=this.Te(),o={};let a=!1,c=!1;for(let t=0;t<e.length;t++){const i=e[t],h=i.node;if(o[h.id])continue;const u=n[h.q];o[h.id]=1;let l=!1;const f=this.getCachedTile(h.id);if(this.Oe(h.id)?(s++,l=c=!0,this.tilesLoading[h.id].current=!0):f?(this.getTileOpacity(f)<1&&(l=c=!0),(!i.node._e||u.isS3M||!i.node.children||i.node._e<=500)&&(a=!0,i.selected=!0,i.data=f)):this.painter.has(h)||(l=c=!0,r.push(h)),!l)continue;if(this.Me(i))a=!0;else{this.xe(i).length&&(a=!0)}}let h=[],u={};if(a&&({selectedTiles:h,leaves:u}=this.Ae(t)),r.length>1&&(r.sort(yr),i)){const t=i-s;r=t>0?r.slice(0,t):[]}return{loading:c,requests:r,selectedTiles:h,leaves:u}}Ae(t){const e=[],n={};let r;const s=[t],i=[];for(;s.length>0||i.length>0;){if(i.length>0){const t=i[i.length-1];if(t.Ie===s.length){i.pop(),t===r&&(t.leave=!0,n[t.node.id]=1),e.push(t);continue}}const t=s.pop(),o=t.children;if(t.selected)if("add"===t.node.refine)n[t.node.id]=1,t.selectionDepth=i.length,e.push(t);else{if(t.selectionDepth=i.length,r=t,0===o.length){t.leave=!0,n[t.node.id]=1,e.push(t);continue}i.push(t),t.Ie=s.length}for(let t=0;t<o.length;t++)s.push(o[t])}return{selectedTiles:e,leaves:n}}Me(t){if(!t.parent)return null;let e=t.parent;for(;e&&e.level>=0;){const t=e.node.id;if(this.tileCache.has(t))return e.selected=!0,e.data=this.tileCache.get(t),e;e=e.parent}return null}xe(t){const e=[];if(!t.node.children||!t.node.children.length)return e;const n=t.tt+1,r=[t.node];for(;r.length>0;){const s=r.pop().children;for(let i=0,o=s.length;i<o;i++){if((!s[i].content||!s[i].content.url)&&s[i].children&&s[i].children.length){r.push(s[i]);continue}const o=s[i].id;if(this.tileCache.has(o)){const n=this.layer.Se(s[i],t);n.selected=!0,n.data=this.tileCache.get(o),t.children.push(n),e.push(n)}else s[i].tt<=n&&r.push(s[i])}}return e}ye(t,e,n){this.tileCache.markAll(!1);for(let e=0,n=t.length;e<n;e++){const n=t[e].data;n.current=!0,this.tileCache.add(t[e].node.id,n)}this.tileCache.shrink();const r={tiles:t,leaves:e};this.onDrawTileStart(r);const s=this.painter.paint(t,e,n);this.onDrawTileEnd(r),s&&this.layer.fire("canvasisdirty",{renderCount:s})}onDrawTileStart(){}onDrawTileEnd(){}loadTiles(t){for(let e=0,n=t.length;e<n;e++){const n=t[e];this.tilesLoading[n.id]={current:!0,node:n},this.loadTile(n)}}loadTile(t){let e=t.content.url;if(xt(e)){const n=At(e);return this.Ee(e,n,t),null}if(function(t){return t.indexOf("i3s:tileset")>=0}(e)){const n=t.q,r=this.Ne[n];return new sr(e,n,r,this.layer,this.Yt).load().then(n=>{this.onTilesetLoad(n,t,e)})}return t&&Ct(e)&&!hr(e)&&(e=t.baseUrl+e),this.Ee(e,null,t),null}Ee(t,e,r){let s=this.Ce;s||(s=n.Util.getSupportedFormats(this.gl.gl||this.gl),this.Ce=s);const i=this.layer.V(r.q);i.isSuperMapiServer&&(t=function(t,e){const n=t.substring(e.length).split("/"),r=[];for(let t=0;t<n.length;t++)r.push(encodeURIComponent(n[t]));return e+r.join("/")}(t,r.baseUrl));const o={url:this.layer.getTileUrl(t,r.baseUrl,this.layer.Pe[r.q]),arraybuffer:e,rootIdx:r.q,upAxis:r.It,transform:r.matrix,supportedFormats:s};if(hr(t)){const e=this.Ne[r.q];if(o.projection=e.projection,o.i3sInfo=lr(t,e,this.regl,this.layer.options.enableI3SCompressedGeometry,this.layer.options.forceI3SCompressedGeometry),!o.i3sInfo)return void this.onTileError({status:404},r,t)}o.service=ft({},i),i.offset&&delete o.service.offset,o.referrer=window&&window.location.href,this.workerConn.loadTile(this.layer.getId(),o,(e,n)=>{if(e)return void this.onTileError(e,r,t);const{magic:s}=n;"b3dm"===s||"pnts"===s||"i3dm"===s||"cmpt"===s||"gltf"===s?(this.fe.push({data:n,tile:r}),i.debugShowBoundingVolume&&this.painter.kt(r)):this.onTilesetLoad(n,r,t)})}be(){const t=this.getMap(),e=this.layer.options.meshLimitPerFrame;let n=0;for(;this.fe.length&&(n<e||!t.isInteracting());){const{data:t,tile:e}=this.fe.shift(),{magic:r}=t;"b3dm"===r||"gltf"===r?this.painter.createB3DMMesh(t,e.id,e,(n,{mesh:r})=>{this.Re(t,e,n,r)}):"pnts"===r?this.painter.createPntsMesh(t,e.id,e,(n,{mesh:r})=>{this.Re(t,e,n,r)}):"i3dm"===r?this.painter.createI3DMMesh(t,e.id,e,(n,{mesh:r})=>{this.Re(t,e,n,r)}):"cmpt"===r&&this.painter.createCMPTMesh(t,e.id,e,(n,{mesh:r})=>{this.Re(t,e,n,r)}),n++}}Re(t,e,n,r){if(n)this.onTileError(n,e);else{const n=this.Le(r);e.memorySize=n,this.onTileLoad(t,e)}}Le(t){let e=0;if(Array.isArray(t))for(let n=0;n<t.length;n++)t[n]&&(e+=this.Le(t[n]));else t&&(e+=t.getMemorySize());return e}onTileLoad(t,e){this.layer&&(delete this.tilesLoading[e.id],this.layer.onTileLoad(t,e),this.ke(e),this.setToRedraw(),this.layer.fire("tileload",{node:e}))}onTilesetLoad(t,e,n){this.layer&&(this.layer.zt=t.extensions&&t.extensions["s3m:VertexCompressionType"],t.capabilities||t.layers&&t.layers[0]&&t.layers[0].capabilities?this.Be(t,e,n):(delete this.tilesLoading[e.id],this.layer.onTilesetLoad(t,e,n)))}onTileError(t,e,n){if(!this.layer)return;const r=n||e.content.url,s=t&&t.message||t;pr.has(s)||(console.warn("failed to load 3d tile: "+r),console.warn(t),pr.add(s)),delete this.tilesLoading[e.id],this.Ue(e,t),this.setToRedraw(),this.layer.fire("tileerror",{node:e,error:t})}getCachedTile(t){return this.tileCache.get(t)}Ue(e,n){const r={loadTime:t.Util.now(),current:!0,error:n,node:e};this.tileCache.add(e.id,r)}ke(e){const n={loadTime:t.Util.now(),current:!0,node:e};this.tileCache.add(e.id,n)}abortTileLoading(t){if(!t||!this.workerConn)return;const e=t.node.content.url;this.workerConn.abortTileLoading(this.layer.getId(),e),delete this.le[e]}ve(){if(this.tilesLoading)for(const t in this.tilesLoading)this.tilesLoading[t].current=!1}deleteTile(t){this.painter.deleteTile(t)}createContext(){const t=this.layer,e=t.options.glOptions||{alpha:!0,depth:!0,stencil:!0,preserveDrawingBuffer:!0,antialias:t.options.antialias},n=this.canvas.gl&&this.canvas.gl.wrap;n?(this.gl=this.canvas.gl.wrap(),this.regl=this.canvas.gl.regl):(this.glOptions=e,this.gl=this.Fe(this.canvas,e)),this.regl=this.regl||u({gl:this.gl,attributes:e,extensions:["OES_element_index_uint"],optionalExtensions:t.options.optionalExtensions||[]}),n&&(this.canvas.pickingFBO=this.canvas.pickingFBO||this.regl.framebuffer(this.canvas.width,this.canvas.height)),this.pickingFBO=this.canvas.pickingFBO||this.regl.framebuffer(this.canvas.width,this.canvas.height),this.painter=new Zn(this.regl,t),this.layer.De(),this.layer.fire("contextcreate",{regl:this.regl})}prepareWorker(){const t=this.getMap();this.workerConn||(this.workerConn=new Lt("@maptalks/3dtiles",t.id));const e=this.workerConn;if(!e.isActive())return;let n=this.layer.options||{};n=ft({},n),delete n.offset;const r=t.options.spatialReference;n.projection=r&&r.coordType||r&&r.projection||t.getSpatialReference().getProjection().code;const s=this.layer.getId();e.addLayer(s,n,t=>{if(t)throw t;this.layer&&(this.ready=!0,this.layer.fire("workerready"))})}onRemove(){this.painter&&this.painter.remove(),this.pickingFBO&&(this.canvas.pickingFBO||this.pickingFBO.destroy(),delete this.pickingFBO),this.workerConn&&(this.workerConn.removeLayer(this.layer.getId(),t=>{if(t)throw t}),this.workerConn.remove(),delete this.workerConn),this.clear(),delete this.tileCache,super.onRemove()}clear(){this.we(!0),this.tileCache.reset(),this.tilesLoading={},super.clear()}clearCanvas(){this.regl&&this.regl.clear({color:[0,0,0,0],depth:1,stencil:0}),super.clearCanvas()}getTileOpacity(){return 1}getStencilValue(){return 0}we(t){this.ze||(this.ze=Date.now());const e=Date.now();if(t||!(e-this.ze<this.layer.options.retireInterval)){this.ze=e;for(const e in this.tilesLoading){const n=this.tilesLoading[e];!t&&n.current||this.abortTileLoading(n)}}}Te(){return this.getMap().isInteracting()?this.layer.options.loadingLimitOnInteracting:this.layer.options.loadingLimit}Fe(t,e){const n=["webgl","experimental-webgl"];let r=null;for(let s=0;s<n.length;++s){try{r=t.getContext(n[s],e)}catch(t){}if(r)break}return r}Oe(t){return!!this.tilesLoading[t]}getI3DMMeshes(){return this.painter.getI3DMMeshes()}getPNTSMeshes(){return this.painter.getPNTSMeshes()}getB3DMMeshes(){return this.painter.getB3DMMeshes()}readBatchData(t,e,n){return ye(t,e,0,n)}pe(){if(!this.je)return;const t=this.layer.options.i3sNodepageLimitPerFrame||Number.MAX_VALUE;let e=0;const n=[];for(const r in this.je){const s=this.je[r];if("pending"===s.status)continue;s.status="pending";const i=s.rootIdx,o=Pt(this.layer.V(i).fetchOptions);if(n.push(b.getJSON(r,o).then(t=>{delete this.je[r];const e=this.Ne[i];if(e){t.nodes?nr(e,t.nodes):(e[t.id]=t,nr(e,t.children));for(let t=0;t<s.length;t++)s[t]();this.setToRedraw()}else this.setToRedraw()})),e++,e>=t)break}n.length&&Promise.all(n)}de(t,e,n){this.je||(this.je={}),this.je[e]=this.je[e]||[],this.je[e].rootIdx=t,this.je[e].push(n),this.setToRedraw()}Be(t,e,n){this.Ne||(this.Ne=[]);const r=e.q;this.Ne[r]||(this.Ne[r]={});const s=this.Ne[r],i=this.layer.V(r);t.layers&&(t=t.layers[0],"/"!==n[n.length-1]&&(n+="/"),n+="layers/0"),s.version=+(i.i3sVersion||t.store.version),!t.spatialReference||t.spatialReference.wkid&&4326===t.spatialReference.wkid||console.warn("i3s has a spatialReference other than 4326.",t.spatialReference),s.projection=t.spatialReference,function(t,e,n,r,s,i,o){if(!i.layerScene){i.layerScene=e,i.nodesPerPage=e.nodePages&&e.nodePages.nodesPerPage||64,i.lodSelectionMetricType=e.nodePages&&e.nodePages.lodSelectionMetricType;let t=s;i.layerScene.eslpk=t.indexOf("3dSceneLayer.json")>=0;if(t.endsWith(".json")){const e=s.lastIndexOf("/");t=e<0?"./":s.substring(0,e)}i.layerScene.baseUrl=function(t){return t.split("?")[0]}(t)}return new sr(s,n,i,t,o).load()}(this.layer,t,r,0,n,s,this.Yt).then(t=>{this.onTilesetLoad(t,e,n)})}pick(t,e,n){if(!this.painter)return[];const r=this.pickingFBO,{width:s,height:i}=this.canvas;return!this.pickingFBO||r.width===s&&r.height===i||r.resize(s,i),this.painter.pick(t,e,n&&n.tolerance)}highlight(t){if(this.K||(this.K=[]),Array.isArray(t))for(let e=0;e<t.length;e++){const n=t[e].service||0;let r=this.K[n];r||(r=this.K[n]=new Map),r.set(t[e].id,t[e])}else{const e=t.service||0;let n=this.K[e];n||(n=this.K[e]=new Map),n.set(t.id,t)}this.painter.highlight(this.K)}cancelHighlight(t,e){if(!this.K)return;const n=this.K[t];if(n){if(Array.isArray(e))for(let t=0;t<e.length;t++)n.delete(e[t]);else n.delete(e);n.size||(this.K[t]=null),this.painter.highlight(this.K)}}cancelAllHighlight(){delete this.K,this.painter.cancelAllHighlight()}showOnly(t){if(this.Y||(this.Y=[]),Array.isArray(t))for(let e=0;e<t.length;e++){const n=t[e].service||0;let r=this.Y[n];r||(r=this.Y[n]=new Map),r.set(t[e].id,t[e])}else{const e=t.service||0;let n=this.Y[e];n||(n=this.Y[e]=new Map),n.set(t.id,t)}this.painter.showOnly(this.Y)}cancelShowOnly(){delete this.Y,this.painter.cancelShowOnly()}Kt(){return this.painter?this.painter.Kt():[]}ue(t,e){const n=this.getMap();if("identity"===n.getProjection().code.toLowerCase()){const n=this.Ge();return dr.x=e[0],dr.y=e[1],n.unproject(dr,mr),t[0]=mr.x,t[1]=mr.y,t}return dr.x=e[0],dr.y=e[1],n.getProjection().unproject(dr,mr),t[0]=mr.x,t[1]=mr.y,t}He(t,e){const n=this.Ge();return dr.x=e[0],dr.y=e[1],n.project(dr,mr),t[0]=mr.x,t[1]=mr.y,t}Ve(t,e){const n=this.Ge();return dr.x=e[0],dr.y=e[1],n.unproject(dr,mr),t[0]=mr.x,t[1]=mr.y,t}Ge(){const e=this.getMap().options.spatialReference.coordType;if(!e)throw new Error("Missing coordType in map spatialReference.");return this.qe||(this.qe=t.SpatialReference.getProjectionInstance(e)),this.qe}}function yr(t,e){return t.bt-e.bt}function wr(t,e,n){return t[0]=e[n],t[1]=e[n+3],t[2]=e[n+6],t}function vr(t,e,n){return Math.sqrt(function(t,e,n){const r=w.subtract(Tr,n,t),s=wr(Or,e,0),i=wr(_r,e,1),o=wr(Mr,e,2),a=w.len(s),c=w.len(i),h=w.len(o);w.normalize(s,s),w.normalize(i,i),w.normalize(o,o);const u=xr;u[0]=w.dot(r,s),u[1]=w.dot(r,i),u[2]=w.dot(r,o);let l,f=0;u[0]<-a?(l=u[0]+a,f+=l*l):u[0]>a&&(l=u[0]-a,f+=l*l);u[1]<-c?(l=u[1]+c,f+=l*l):u[1]>c&&(l=u[1]-c,f+=l*l);u[2]<-h?(l=u[2]+h,f+=l*l):u[2]>h&&(l=u[2]-h,f+=l*l);return f}(t,e,n))}const Tr=[],Or=[],_r=[],Mr=[],xr=[];const Ar=2*Math.PI;class Ir{constructor(t,e,n,r){this.west=t,this.south=e,this.east=n,this.north=r}static contains(t,e){let n=e[0];const r=e[1],s=t.west;let i=t.east;return i<s&&(i+=Ar,n<0&&(n+=Ar)),(n>s||fe(n,s,1e-14))&&(n<i||fe(n,i,1e-14))&&r>=t.south&&r<=t.north}static southwest(t,e){return e[0]=t.west,e[1]=t.south,e[2]=0,e}static northeast(t,e){return e[0]=t.east,e[1]=t.north,e[2]=0,e}static southeast(t,e){return e[0]=t.east,e[1]=t.south,e[2]=0,e}static northwest(t,e){return e[0]=t.west,e[1]=t.north,e[2]=0,e}}const Sr=[0,0,1];function Er(t,e){return Yt(e,t[0],t[1],t[2])}class Nr{constructor(t,e){this.normal=i.copy([],t),this.distance=e}static fromPointNormal(t,e,n){const r=-i.dot(e,t);return i.copy(n.normal,e),n.distance=r,n}}const Cr=[],Pr=[],Rr=[],Lr=[],kr=[],Br=[],Ur=[],Fr=[],Dr=[],zr=[],jr=new Nr([1,0,0],0),Gr=[];class Hr{constructor(t){this.southwestCornerCartesian=[],this.northeastCornerCartesian=[],this.westNormal=[],this.eastNormal=[],this.southNormal=[],this.northNormal=[],this.rectangle=new Ir(...t),this.minimumHeight=t[4],this.maximumHeight=t[5],this.computeBox(this.rectangle)}distanceToCamera(t,e){let n=0;if(!Ir.contains(this.rectangle,e)){const e=this.southwestCornerCartesian,r=this.northeastCornerCartesian,s=this.westNormal,o=this.southNormal,a=this.eastNormal,c=this.northNormal,h=i.subtract(Gr,t,e),u=i.dot(h,s),l=i.dot(h,o),f=i.subtract(Gr,t,r),d=i.dot(f,a),m=i.dot(f,c);u>0?n+=u*u:d>0&&(n+=d*d),l>0?n+=l*l:m>0&&(n+=m*m)}const r=e[2],s=this.minimumHeight,o=this.maximumHeight;if(r>o){const t=r-o;n+=t*t}else if(r<s){const t=s-r;n+=t*t}return Math.sqrt(n)}computeBox(t){const e=this;Er(Ir.southwest(t,Pr),e.southwestCornerCartesian),Er(Ir.northeast(t,Pr),e.northeastCornerCartesian),Cr[0]=t.west,Cr[1]=.5*(t.south+t.north),Cr[2]=0;const n=Er(Cr,Rr),r=i.cross(kr,n,Sr);i.normalize(e.westNormal,r),Cr[0]=t.east;const s=Er(Cr,Fr),o=i.cross(kr,Sr,s);i.normalize(e.eastNormal,o);const a=i.subtract(kr,n,s),c=i.normalize(Lr,a),h=t.south;let u;if(h>0){Cr[0]=.5*(t.west+t.east),Cr[1]=h;const n=Er(Cr,Dr);i.copy(zr,c);const r=Nr.fromPointNormal(e.southwestCornerCartesian,e.westNormal,jr);Vr(Dr,zr,r,e.southwestCornerCartesian),u=he(n,Br)}else u=ue(Ir.southeast(t,Pr),Br);const l=i.cross(Ur,u,a);i.normalize(e.southNormal,l);const f=t.north;let d;if(f<0){Cr[0]=.5*(t.west+t.east),Cr[1]=f;const n=Er(Cr,Dr);i.scale(zr,c,-1);const r=Nr.fromPointNormal(e.northeastCornerCartesian,e.eastNormal,jr);Vr(Dr,zr,r,e.northeastCornerCartesian),d=he(n,Br)}else d=ue(Ir.northwest(t,Pr),Br);const m=i.cross(Ur,a,d);i.normalize(e.northNormal,m)}}function Vr(t,e,n,r){const s=t,o=e,a=n.normal,c=i.dot(a,o);if(Math.abs(c)<1e-15)return;const h=(-n.distance-i.dot(a,s))/c;return h<0?void 0:(r=i.scale(r,o,h),i.add(r,s,r))}const qr={"maxGPUMemory":t.Browser.mobile?32:1024,"retireInterval":2e3,"loadingLimitOnInteracting":5,"loadingLimit":5,"renderer":"gl","forceRenderOnZooming":!0,"forceRenderOnRotating":!0,"forceRenderOnMoving":!0,"debug":!1,"meshLimitPerFrame":1,"i3sNodepageLimitPerFrame":1,"enableI3SCompressedGeometry":!0,"forceI3SCompressedGeometry":!0,"picking":!0,"pickingPoint":!0,"geometryEvents":!1,"antialias":!1,"optionalExtensions":["ANGLE_instanced_arrays","OES_element_index_uint","OES_standard_derivatives","OES_vertex_array_object","OES_texture_half_float","OES_texture_half_float_linear","OES_texture_float","OES_texture_float_linear","WEBGL_depth_texture","EXT_shader_texture_lod","WEBGL_compressed_texture_astc","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_pvrtc","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb"],"offset":[0,0]},$r=new t.Extent(0,0,0,0),Xr=[],Jr=[],Qr=[],Kr=[],Zr=new t.Point(0,0),Yr=[],Wr=new t.Coordinate(0,0),ts=r.identity([]),es=[0,0],ns=[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 rs extends(l(t.Layer)){constructor(t,e){super(t,e),this.$e(),this.le={},this.Bt=[]}$e(){const t=this.options.services.map(t=>t.url);this.Xe=this.Xe||{},this.Pe=this.Pe||[];for(let e=0;e<t.length;e++){const n=t[e];let r=this.Xe[n];void 0===r&&(r=this.Xe[n]=this.Pe.length),this.Pe[r]=os(n,r,this.options.services[e])}this.fire("rootready",{roots:this.Pe.slice(0)})}showService(t){return this.updateService(t,{visible:1}),this}hideService(t){return this.updateService(t,{visible:0}),this}setToRedraw(){const t=this.getRenderer();t&&t.setToRedraw()}addService(t){this.options.services=this.options.services||[],this.options.services.push(t),this.$e();const e=this.getRenderer();return e&&e.setToRedraw(),this}updateService(t,e){if(!e)return this;const n=this.options.services;if(n&&n[t]&&ft(n[t],e),!lt(e.visible)){const r=n[t].url,s=this.Xe[r];this.Pe&&this.Pe[s]&&(this.Pe[s].visible=e.visible)}const r=this.getRenderer();return r&&r.setToRedraw(),this}removeService(t){const e=this.options.services;if(e&&e[t]){const n=e[t].url,r=this.Xe[n];this.Pe[r]&&(this.Pe[r]=null),delete this.Xe[n],e.splice(t,1)}const n=this.getRenderer();return n&&n.setToRedraw(),this}getTileUrl(t,e,n){const r=n&&n.service&&n.service.subdomains;if(r&&n.domainKey){const e=r.length;if(e){const s=[...t].reduce((t,e)=>t+e.charCodeAt(),0)%e;return t.replace(n.domainKey,r[s])}}return t}getExtent(e){if(!e&&0!==e){const e=new t.Extent;for(let t=0;t<this.Pe.length;t++)if(this.Pe[t].boundingVolume){const n=this.boundingVolumeToExtent(this.Pe[t]);e._combine(n)}return e}return this.Pe[e]&&this.Pe[e].boundingVolume?this.boundingVolumeToExtent(this.Pe[e]):null}boundingVolumeToExtent(e){const n=e.boundingVolume.Je?ts:e.matrix,r=this.getMap(),s="identity"===r.getProjection().code.toLowerCase(),o=this.getRenderer();if(e.boundingVolume.region){const n=e.boundingVolume.region;return new t.Extent(gt(n[0]),gt(n[1]),gt(n[2]),gt(n[3]))}if(e.boundingVolume.sphere){const a=e.boundingVolume.sphere,c=se([],i.transformMat4([],a,n));s&&o.He(c,c);const h=a[3],u=r.locate(c,-h,h),l=r.locate(c,h,-h);return new t.Extent(u,l)}if(e.boundingVolume.box){const c=e.boundingVolume.box,h=i.transformMat4([],c,n),u=new t.Coordinate(se([],h));s&&o.He(u,u);const l=c.slice(3);a.multiply(l,a.fromMat4([],e.matrix),l);const f=i.length(l.slice(0,3)),d=i.length(l.slice(3,6)),m=i.length(l.slice(6,9)),p=Math.max(f,d,m),b=r.locate(u,-p,p),g=r.locate(u,p,-p);return new t.Extent(b,g)}return null}getRootTiles(){return this.Pe}getTiles(){const t=this.getRenderer();if(!t.ready)return this.Qe(),{tiles:Kr};const e=this.getMap(),n=e.cameraPosition,r=e.pointAtResToDistance(n[2],0,e.getGLRes()),s=this.Ke(n);this.Ze=this.Ze||[],i.set(this.Ze,bt(s.x),bt(s.y),r),this.Ye=Yt(this.Ye||[],this.Ze[0],this.Ze[1],this.Ze[2]),this.We=2*Math.tan(.5*bt(e.getFov()));const o=e.projViewMatrix,a={children:[],level:-1};let c=a;const h=[];for(let e=0;e<this.Pe.length;e++){const n=this.Pe[e];if(!n||!n.visible)continue;let r=1/0;const s=[n],i=this.tn(e);for(;s.length>0;){const e=s.pop();for(e.id||this.nn(e);c.level>=e.tt;)c=c.parent;const n=this.rn(e,i,o);if(n<1){let t=c;for(;t&&!t.content;)t=t.parent;0===n&&t&&t.content&&this.sn(h,t);if(!1===this.options.services[e.q].alwaysShow)continue;if(!(0===n&&e.tt<=r))continue;e.content&&(r=e.tt)}e.bt<1/0&&this.in(e);const a=this.Se(e,c);c.children.push(a);const u=e.children,l=u&&u.length,f=a.content;if(!l&&f&&this.sn(h,a),l){f&&"add"===e.refine&&this.sn(h,a),c=a;const n=u[0].parent;let r=!1;for(let i=0,o=u.length;i<o;i++){if(n){const e=t.getCachedTile(u[i].id);if(e&&e.error&&404!==e.error.status)continue;r=!0}else{r=!0,u[i].parent=e,u[i].It=e.It,u[i].baseUrl=e.baseUrl;const t=u[i].content&&(u[i].content.url||u[i].content.uri);t&&(xt(t)||t.indexOf("i3s:")>=0?u[i].baseUrl=e.baseUrl:Ct(t)?u[i].content.url=e.baseUrl+t:u[i].baseUrl=t.substring(0,t.lastIndexOf("/")+1))}s.push(u[i])}!r&&f&&this.sn(h,a)}}}return{root:a,tiles:h}}sn(t,e){const{viewerRequestVolume:n}=e.node;n&&!function(t,e,n){if(n.region){const e=n.region;if(t[0]>=e[0]&&t[0]<=e[2]&&t[1]>=e[1]&&t[1]<=e[3])return!0}else{if(n.sphere)return ss(n,e);if(n.box)return 0===is(n,e)}return!1}(this.Ze,this.Ye,n)||t.push(e)}Se(t,e){return{id:t.id,node:t,children:[],level:t.tt,parent:e,content:t.content&&t.content.url}}nn(e){e.id=t.Util.GUID(),e.matrix=e.transform||r.identity([]),e.an=this.cn(e),e.parent&&(function(t){return t.content&&t.content.uri&&t.content.uri.indexOf("i3s:")>=0}(e)||(e.matrix=r.multiply(e.matrix,e.parent.matrix,e.matrix)),e.q=e.parent.q,void 0===e.tt&&(e.tt=e.parent.tt+1),e.maxExtent=e.parent.maxExtent),e.refine=e.refine&&e.refine.toLowerCase()||"replace",e.content&&!e.content.url&&e.content.uri&&(e.content.url=e.content.uri)}V(t){return this.Pe[t].service}hn(t){const e=t.boundingVolume;if(!e||e.Je&&!this.un(t))return;const n=this.V(t.q),s=n.heightOffset||0,o=this.options.offset,a=dt(o)||o[0]||o[1],c=n.coordOffset||es;if(!Array.isArray(c))throw new Error("service.coordOffset must be an array");if(!e.Je&&(!t.boundingVolume||!s&&r.exactEquals(t.matrix,ts)&&!a&&c===es))return;e.box&&e.region&&delete e.region;const{region:h,box:u,sphere:l}=e;if(e.coordOffset=[c[0],c[1]],e.heightOffset=s,h){e.originalVolume||(e.originalVolume=h.slice(0));const t=e.originalVolume,n=this.ln([gt(t[0]),gt(t[1])]);h[0]=bt(n.x+c[0]),h[1]=bt(n.y+c[1]);const r=this.ln([gt(t[2]),gt(t[3])]);h[2]=bt(r.x+c[0]),h[3]=bt(r.y+c[1]),h[4]=t[4]+s+(c[2]||0),h[5]=t[5]+s+(c[2]||0)}else if(u||l){e.originalVolume||(e.originalVolume=(u||l).slice(0));const n=u||l,r=e.originalVolume,o=i.transformMat4(Xr,r,t.matrix),a=se(Jr,o),h=this.ln([a[0]+c[0],a[1]+c[1]]);a[0]=h.x,a[1]=h.y,a[2]+=s+(c[2]||0),Yt(n,bt(a[0]),bt(a[1]),a[2])}e.Je=!0}un(t){const e=t.boundingVolume,n=this.V(t.q),r=n.heightOffset||0,s=n.coordOffset||es;return e.coordOffset[0]!==s[0]||e.coordOffset[1]!==s[1]||e.heightOffset!==r}cn(t){return void 0===t.geometricError||!t.boundingVolume}in(t){let e=t.parent;for(;e&&e.an&&!(e.bt<=t.bt);)e.bt=t.bt,e=t.parent}onTileLoad(t,e){if(t.children&&(!e.children||!e.children.length)){e.children=t.children;const n=e.content.url;e.baseUrl=n.substring(0,n.lastIndexOf("/")+1);const r=this.getRenderer();r&&r.setToRedraw()}}onTilesetLoad(t,e,n){if(!t)return void console.warn("invalid tileset at : "+n);const s=this.V(e.q),i=(t.asset&&t.asset.gltfUpAxis||e&&e.It||s.upAxis||"Y").toUpperCase();t.root.baseUrl=n.substring(0,n.lastIndexOf("/")+1);const o=n.indexOf("realspace/")>-1;0===e.tt&&(t.asset&&t.asset.s3mType&&o||s.isSuperMapiServer)&&(t.root.baseUrl+="data/path/");const a=t.asset.i3s,c=!!t.asset.s3mType;if(t.root.It=i,e){const n=e.q,s=this.Pe[n];c&&!s.isS3M&&(s.isS3M=c);const i=e.boundingVolume;ft(e,t.root),e.refine=e.refine&&e.refine.toLowerCase()||"replace",i&&(e.boundingVolume=i);const o=t.root.transform;o&&(e.parent?a||(e.matrix=r.multiply([],e.parent.matrix,o)):e.matrix=o),e.dn=e.content,delete e.content,t.root.content&&(e.content=t.root.content),e.an=this.cn(e);const h=e.content&&(e.content.url||e.content.uri);h&&e.content.uri&&(e.content.url=e.content.uri,delete e.content.uri),!a&&h&&!xt(h)&&Ct(h)&&(e.content.url=e.baseUrl+h),t.root&&!e.parent&&this.mn(e)}this.Qe(),this.fire("loadtileset",{tileset:t,index:e&&e.q,url:n})}rn(t,e,n){if(t.bt=1/0,0===t.tt||t.an)return this.mn(t),1;if(this.hn(t),!this.pn(t,e,n))return-1;if(0===t.geometricError)return 1;let r=this.V(t.q).maximumScreenSpaceError;null==r&&(r=16);let s=this.bn(t);return 0===s&&t.parent&&(s=.5*(t.parent._e||0)),s>=r?1:0}Jt(e,n){n||(n=new t.Point(0,0));const r=this.getMap();return r.getGLZoom?r.coordToPoint(e,r.getGLZoom(),n):r.coordToPointAtRes(e,r.getGLRes(),n)}pn(e,n,r){const s=e.id;let i=this.Bt[s]&&this.Bt[s].obbox;const{boundingVolume:o}=e,a=o.region,c=o.box,h=o.sphere;if(!i)if(a)this.Bt[s]=this.gn(e),i=this.Bt[s].bbox,i.center=this.Bt[s].coordCenter;else if(c)this.Bt[s]=this.yn(e),i=this.Bt[s].obbox,i.center=this.Bt[s].coordCenter;else if(h){i=this.Bt[s]=this.wn(e);const n=se(Xr,h),r=new t.Coordinate(n);i.center=r}if(n){if(a)$r.xmin=i[0][0],$r.ymin=i[0][1],$r.xmax=i[1][0],$r.ymax=i[1][1];else if(h){const t=i[2];$r.xmin=i[0][0]-t,$r.ymin=i[0][1]-t,$r.xmax=i[0][0]+t,$r.ymax=i[0][1]+t}else if(c){const t=i[1],e=i[2];$r.xmin=i[0][0]-t,$r.ymin=i[0][1]-e,$r.xmax=i[0][0]+t,$r.ymax=i[0][1]+e}if(!n.intersects($r))return!1}return a?f(r,i):h?d(r,i):!!c&&m(r,i)}gn(e){const n=this.getMap(),r=n.getGLRes(),s=e.boundingVolume.region;let{ws:i,en:o}=function(t){const e=t[0],n=t[1],r=t[2],s=t[3],i=t[4],o=t[5],a=Yt([],e,n,i),c=Yt([],r,s,o),h=se(a,a),u=se(c,c);return{ws:h,en:u}}(s);i=new t.Coordinate(i),o=new t.Coordinate(o);const a=n.coordToPointAtRes(i,r);a.z=n.altitudeToPoint(i.z,r);const c=n.coordToPointAtRes(o,r);c.z=n.altitudeToPoint(o.z,r);const h=[c.x,a.y,c.z,c.x,c.y,c.z,a.x,c.y,c.z,a.x,a.y,c.z,c.x,a.y,a.z,c.x,c.y,a.z,a.x,c.y,a.z,a.x,a.y,a.z],u=[(h[0]+h[18])/2,(h[1]+h[19])/2,(h[2]+h[20])/2],l=n.pointAtResToCoord(new t.Point(u),r);l.z=(i.z+o.z)/2;const f=this.V(e.q).Ut,d=[h.slice(21,24),h.slice(3,6)];if(f)for(let t=0;t<h.length;t+=3)h[t]-=f[0],h[t+1]-=f[1],h[t+2]-=f[2];return{bbox:d,boxPosition:h,pointCenter:u,coordCenter:l}}yn(e){const n=this.getRenderer(),r=this.getMap(),s="identity"===r.getProjection().code.toLowerCase(),o=r.getGLRes(),a=e.boundingVolume.box,c=a.slice(0,3),h=as(this.vn(a,e.matrix),c),u=this.Tn(e),l=[],f=this.V(e.q).Ut;Zr.set(f[0],f[1]);const d=r.pointAtResToCoord(Zr,o);for(let e=0;e<ns.length;e+=3){const a=ns.slice(e,e+3);i.transformMat4(a,a,h),se(a,a),s&&n.He(a,a);const c=new t.Coordinate(a);let u=r.coordToPointAtRes(c,o);u=[u.x,u.y,r.altitudeToPoint(c.z,o)],l[e]=u[0]-f[0],l[e+1]=u[1]-f[1],l[e+2]=u[2]-f[2]}return{obbox:this.On(l,u),boxPosition:l,boxCenter:u,coordCenter:d}}wn(e){const n=this.getMap(),r=this.getRenderer(),s="identity"===n.getProjection().code.toLowerCase(),i=e.boundingVolume.sphere,o=i;let a=Xr;0===o[0]&&0===o[1]&&0===o[2]?a=[0,0,-6378137]:se(a,o),s&&r.He(a,a);const c=new t.Coordinate(a),h=this.Jt(c,Zr).toArray();h[2]=n.altitudeToPoint(c.z,n.getGLRes());const u=this._n(c);return[h,i[3]*u[2]]}On(t,e){const n=[(t[3]+t[12])/2,(t[4]+t[13])/2,(t[5]+t[14])/2],r=[(t[3]+t[18])/2,(t[4]+t[19])/2,(t[5]+t[20])/2],s=[(t[3]+t[9])/2,(t[4]+t[10])/2,(t[5]+t[11])/2],i=e.slice(0);return i[3]=n[0]-e[0],i[4]=n[1]-e[1],i[5]=n[2]-e[2],i[6]=r[0]-e[0],i[7]=r[1]-e[1],i[8]=r[2]-e[2],i[9]=s[0]-e[0],i[10]=s[1]-e[1],i[11]=s[2]-e[2],i}Tn(e){const n=this.getMap(),r=this.getRenderer(),s="identity"===n.getProjection().code.toLowerCase(),o=n.getGLRes(),a=e.boundingVolume.box,c=a.slice(0,3),h=as(this.vn(a,e.matrix),c),u=[0,0,0];i.transformMat4(u,u,h),se(u,u),s&&r.He(u,u);const l=new t.Coordinate(u),f=n.coordToPointAtRes(l,o);return[f.x,f.y,n.altitudeToPoint(l.z,o)]}mn(t){if(!t.boundingVolume)return;const e=t.boundingVolume.box,n=t.boundingVolume.region,r=t.boundingVolume.sphere,s=this.V(t.q);let i=null;if(e){i=this.Mn(t).pointCenter}else if(n){i=this.xn(t).pointCenter}else r&&(i=this.wn(t)[0]);const o=s.heightOffset||0,a=s.coordOffset||[0,0];s.An=[a[0]||0,a[1]||0],s.dt=o,s.Ut=i}xn(t){if(!t.boundingVolume)return null;this.hn(t);return this.gn(t)}Mn(e){if(!e.boundingVolume)return null;this.hn(e);const n=this.getMap(),r="identity"===n.getProjection().code.toLowerCase(),s=this.getRenderer(),o=n.getGLRes(),a=e.boundingVolume.box,c=a.slice(0,3),h=as(this.vn(a,e.matrix),c),u=[0,0,0];i.transformMat4(u,u,h),se(u,u),r&&s.He(u,u);const l=new t.Coordinate(u);let f=n.coordToPointAtRes(l,o);return f.z=n.altitudeToPoint(l.z,o),f=[f.x,f.y,f.z],{pointCenter:f,coordCenter:l}}vn(t,e){let n=t.slice(3,12);return n=function(t,e,n){const r=t[0]*e[0]+t[3]*e[1]+t[6]*e[2],s=t[1]*e[0]+t[4]*e[1]+t[7]*e[2],i=t[2]*e[0]+t[5]*e[1]+t[8]*e[2],o=t[0]*e[3]+t[3]*e[4]+t[6]*e[5],a=t[1]*e[3]+t[4]*e[4]+t[7]*e[5],c=t[2]*e[3]+t[5]*e[4]+t[8]*e[5],h=t[0]*e[6]+t[3]*e[7]+t[6]*e[8],u=t[1]*e[6]+t[4]*e[7]+t[7]*e[8],l=t[2]*e[6]+t[5]*e[7]+t[8]*e[8];return n[0]=r,n[1]=s,n[2]=i,n[3]=o,n[4]=a,n[5]=c,n[6]=h,n[7]=u,n[8]=l,n}(this.In(e,[]),n,n),n}In(t,e){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[4],e[4]=t[5],e[5]=t[6],e[6]=t[8],e[7]=t[9],e[8]=t[10],e}_n(t){const e=this.getMap(),n=e.distanceToPointAtRes(100,100,e.getGLRes(),t);let r;return r=e.altitudeToPoint?e.altitudeToPoint(100,e.getGLRes())/100:n.y/100,i.set(Qr,n.x/100*1.01,n.y/100*1.01,r),Qr}ln(e){Array.isArray(e)&&(e=new t.Coordinate(e));let n=this.options.offset;if(dt(n)&&(n=n.call(this,Array.isArray(e)?new t.Coordinate(e):e)),n[0]||n[1]){const t=this.getMap(),r=t.getGLRes(),s=t.coordToPointAtRes(e,r);return s._sub(n),t.pointAtResToCoord(s,r)}return e}tn(e){const n=this.V(e).maxExtent;if(!n)return null;const r=this.Pe[e];return r.maxExtent||(r.maxExtent=new t.Extent(n).convertTo(t=>this.Jt(t))),r.maxExtent}bn(t){const e=this.We,n=t.geometricError;if(0===n)return t._e=0,0;const r=this.getMap();let s;t.boundingVolume.region?s=function(t,e,n){t.Sn||(t.Sn=new Hr(t.boundingVolume.region));return t.Sn.distanceToCamera(e,n)}(t,this.Ye,this.Ze):t.boundingVolume.sphere?s=ss(t.boundingVolume,this.Ye):t.boundingVolume.box&&(s=is(t.boundingVolume,this.Ye));const i=Math.max(Math.abs(s),1e-7),o=n*r.height/(i*e);return t.bt=s,t._e=o,o}Qe(){const t=this.getRenderer();t&&t.setToRedraw()}Ft(t){return this.Bt[t]}identify(e,n={}){const r=this.getMap(),s=this.getRenderer();if(!r||!s)return[];const i=r.coordToContainerPoint(new t.Coordinate(e));return this.identifyAtPoint(i,n)}identifyAtPoint(t,e={}){const n=[];if(!e.excludeMasks){const r=this.identifyMask(t,e);r&&r.length&&It(n,r)}const r=this.getMap(),s=this.getRenderer();if(!r||!s)return[];const i=r.getDevicePixelRatio();return It(n,s.pick(t.x*i,t.y*i,e)),n}getCurrentBatchIDs(){const t=this.getMap(),e=this.getRenderer();return t&&e?e.Kt():[]}highlight(t){const e=this.getRenderer();return e?(e.highlight(t),this):(this.K||(this.K=[]),this.K.push(t),this)}De(){if(this.K){for(let t=0;t<this.K.length;t++)this.highlight(this.K[t]);delete this.K}}cancelHighlight(t,e){const n=this.getRenderer();return n?(n.cancelHighlight(t,e),this):this}cancelAllHighlight(){const t=this.getRenderer();return t?(t.cancelAllHighlight(),this):this}showOnly(t){const e=this.getRenderer();return e?(e.showOnly(t),this):(this.Y||(this.Y=[]),this.Y.push(t),this)}En(){if(this.Y){for(let t=0;t<this.Y.length;t++)this.showOnly(this.Y[t]);delete this.Y}}cancelShowOnly(t){const e=this.getRenderer();return e?(e.cancelShowOnly(t),this):this}setServiceOpacity(t,e){const n=this.options.services[t];n&&(n.opacity=e);const r=this.getRenderer();return r?(r.setToRedraw(),this):this}setServiceDebugBoundingVolume(t,e){const n=this.options.services[t];n&&(n.debugShowBoundingVolume=e);const r=this.getRenderer();return r?(r.setToRedraw(),this):this}Ke(t){const e=this.getMap(),n=e.getGLRes();Wr.set(t[0],t[1]);const r=e.pointAtResToCoord(Wr,n);return"identity"===e.getProjection().code.toLowerCase()?(Jr[0]=r.x,Jr[1]=r.y,this.getRenderer().Ve(Xr,Jr),r.set(Xr[0],Xr[1]),r):r}}function ss(t,e){const n=t.sphere,r=i.dist(n,e),s=t.sphere[3];return r<s?0:r-s}function is(t,e){const n=t.box;return vr(i.set(Xr,n[0],n[1],n[2]),a.set(Yr,n[3],n[4],n[5],n[6],n[7],n[8],n[9],n[10],n[11]),e)}function os(t,e,n){const s=(t=yt(t)).indexOf("{s}")>=0?"{s}":t.indexOf("%7Bs%7D")>=0?"%7Bs%7D":null;return{service:n,visible:lt(n.visible)?1:n.visible,baseUrl:t.substring(0,t.lastIndexOf("/"))+"/",content:{url:t},refine:"replace",matrix:r.identity([]),q:e,tt:0,domainKey:s}}function as(t,e){return new cs(t[0],t[3],t[6],e[0],t[1],t[4],t[7],e[1],t[2],t[5],t[8],e[2],0,0,0,1)}function cs(t,e,n,r,s,i,o,a,c,h,u,l,f,d,m,p){this[0]=t||0,this[1]=s||0,this[2]=c||0,this[3]=f||0,this[4]=e||0,this[5]=i||0,this[6]=h||0,this[7]=d||0,this[8]=n||0,this[9]=o||0,this[10]=u||0,this[11]=m||0,this[12]=r||0,this[13]=a||0,this[14]=l||0,this[15]=p||0}rs.mergeOptions(qr),rs.registerRenderer("gl",gr),rs.registerJSONType("Geo3DTilesLayer");let hs=null;function us(){return hs||(hs={"image/crn":er.crn&&er.crn(),"image/ktx2":er.ktx2&&er.ktx2(),"image/cttf":er.ktx2&&er.ktx2(),"draco":er.draco&&er.draco()}),hs}class ls{constructor(t,e,n){this.Nn=t,this.Cn=e||p,this.Ce=n,this.Pn=us()}static createEmptyB3DM(){return{featureTable:null,batchTable:null,gltf:{}}}load(t,e,n=0,r=0,s){return e?(r||(r=e.byteLength),this.Rn(t,e,n,r,s)):b.getArrayBuffer(t,{}).then(e=>{const s=e.data;return r||(r=s.byteLength),this.Rn(t,s,n,r)})}Rn(t,e,n,r,s){const i=s&&s.maxTextureSize,o=this.Ln(e,n,r,t);if(o.error)return Promise.resolve(o);const a=t.substring(0,t.lastIndexOf("/")),c=new this.Cn(a,o.glb,{transferable:!0,requestImage:this.Nn,decoders:this.Pn,supportedFormats:this.Ce,maxTextureSize:i});return c.load({skipAttributeTransform:!1}).then(e=>{e.url=`${t}-${n}-${r}`;const s=c.transferables;for(let t=0;t<o.transferables.length;t++)s.indexOf(o.transferables[t])<0&&s.push(o.transferables[t]);return{magic:"b3dm",count:o.count,transferables:s,featureTable:o.featureTable,batchTable:o.batchTable,batchTableBin:o.batchTableBin,gltf:e}})}Ln(t,e,n,r){const s=new DataView(t,e,n),i=s.getUint32(4,!0);if(1!==i){const t="Unsupported b3dm version: "+i+", url:"+r;return console.warn(t),{error:t}}if(s.getUint32(8,!0)!==s.byteLength){const t="Length in b3dm header is inconsistent with b3dm's byte length, url: "+r;return console.warn(t),{error:t}}let o,a=s.getUint32(12,!0),c=s.getUint32(16,!0),h=s.getUint32(20,!0),u=s.getUint32(24,!0),l=28+e;h>=570425344?(l-=8,o=a,h=c,u=0,a=0,c=0):u>=570425344&&(l-=4,o=h,h=a,u=c,a=0,c=0);const f=[t];let d,m,p;if(a>0?(d=pe(t,l,a),l+=a,o=d.BATCH_LENGTH):d={"BATCH_LENGTH":o},c>0&&(l+=c),h>0&&(m=be(t,l,h),l+=h,u>0)){const e=ge(0,l,u);p=t.slice(e.offset,e.offset+e.byteLength),l+=u,f.push(p)}const b=d.BATCH_LENGTH,g={};if(d&&d.BATCH_ID){g.BATCH_ID=we(d.BATCH_ID,t,(void 0).offset,b);const e=g.BATCH_ID.array&&g.BATCH_ID.array.buffer;e&&f.indexOf(e)<0&&f.push(e)}return{count:o,transferables:f,featureTable:d,batchTable:m,batchTableBin:p,b3dm:g,glb:{buffer:t,byteOffset:l,byteLength:s.byteLength+s.byteOffset-l}}}kn(){return null}}class fs{constructor(t,e,n,r){this.Nn=t,this.Cn=e||p,this.Ce=n,this.Pn=us(),this.Bn=r}load(t,e,n=0,r=0,s){return e?(r||(r=e.byteLength),this.Rn(t,e,n,r,s)):b.getArrayBuffer(t,{}).then(e=>{const s=e.data;return r||(r=s.byteLength),this.Rn(t,s,n,r)})}Rn(t,e,n,r,s){return this.Un(t,e,n,r,s).then(({gltf:s,transferables:i})=>{const o=this.Fn(e,n,r,t);if(o.error)return Promise.resolve(o);for(let t=0;t<i.length;t++)-1===o.transferables.indexOf(i[t])&&o.transferables.push(i[t]);return delete s.transferables,Promise.resolve({magic:"i3dm",count:o.count,transferables:o.transferables,featureTable:o.featureTable,batchTable:o.batchTable,batchTableBin:o.batchTableBin,i3dm:o.i3dm,gltf:s})})}Un(t,e,n,r,s){const i=s&&s.maxTextureSize,o={transferable:!0,requestImage:this.Nn,decoders:this.Pn,supportedFormats:this.Ce,maxTextureSize:i},a=new DataView(e,n,r),c=32+a.getUint32(12,!0)+a.getUint32(16,!0)+a.getUint32(20,!0)+a.getUint32(24,!0);if(0===a.getUint32(28,!0)){let r=Tt(new Uint8Array(e,c+n,a.byteLength-c));-1==r.indexOf("://")&&(r=t.substring(0,t.lastIndexOf("/"))+"/"+r);return r.indexOf(".glb")>0?b.getArrayBuffer(r,{}).then(t=>this.Dn(r,{buffer:t.data,byteOffset:0},o)):b.getJSON(r,{}).then(t=>this.Dn(r,t,o))}{const r={buffer:e,byteOffset:c+n,byteLength:a.byteLength-c};return this.Dn(t,r,o)}}Dn(t,e,n){const r=t.substring(0,t.lastIndexOf("/")),s=new this.Cn(r,e,n);return s.load({skipAttributeTransform:!0}).then(n=>{let r=0,i=0;return e.buffer&&(r=e.byteOffset||0,i=e.byteLength||0),n.url=`${t}-${r}-${i}`,{transferables:s.transferables,gltf:n}})}Fn(t,e,n,r){const s=new DataView(t,e,n),i=s.getUint32(4,!0);if(1!==i){const t="Unsupported pnts version: "+i+", url:"+r;return console.warn(t),{error:t}}if(s.getUint32(8,!0)!==s.byteLength){const t="Length in pnts header is inconsistent with pnts's byte length, url: "+r;return console.warn(t),{error:t}}const o=[t],{featureTable:a,featureTableBin:c,batchTable:h,batchTableBin:u}=Ie(s,32+e,o),l={},f=a.INSTANCES_LENGTH;if(a.POSITION){const{byteOffset:e}=a.POSITION;l.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:f,componentType:5126,array:new Float32Array(t,e+c.offset,3*f).slice()},o.push(l.POSITION.array.buffer)}else if(a.POSITION_QUANTIZED){const e=a.QUANTIZED_VOLUME_OFFSET,n=a.QUANTIZED_VOLUME_SCALE,{byteOffset:r}=a.POSITION_QUANTIZED;l.POSITION={byteStride:12,byteOffset:0,itemSize:3,count:f,componentType:5126,array:this.zn(new Uint16Array(t,r+c.offset,3*f),e,n)},o.push(l.POSITION.array.buffer)}if(a.BATCH_ID){l.BATCH_ID=we(a.BATCH_ID,t,c.offset,f);const e=l.BATCH_ID.array&&l.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}if(a.NORMAL_UP){let{byteOffset:e}=a.NORMAL_UP;l.NORMAL_UP={byteStride:0,byteOffset:0,itemSize:3,count:f,componentType:5126,array:new Float32Array(t,e+c.offset,3*f).slice()},o.push(l.NORMAL_UP.array.buffer),e=a.NORMAL_RIGHT.byteOffset,l.NORMAL_RIGHT={byteStride:0,byteOffset:0,itemSize:3,count:f,componentType:5126,array:new Float32Array(t,e+c.offset,3*f).slice()},o.push(l.NORMAL_RIGHT.array.buffer)}else if(a.NORMAL_UP_OCT32P){let{byteOffset:e}=a.NORMAL_UP_OCT32P;l.NORMAL_UP={byteStride:0,byteOffset:0,itemSize:3,count:f,componentType:5126,array:this.jn(new Uint16Array(t,e+c.offset,2*f))},o.push(l.NORMAL_UP.array.buffer),e=a.NORMAL_RIGHT_OCT32P.byteOffset,l.NORMAL_RIGHT={byteStride:0,byteOffset:0,itemSize:3,count:f,componentType:5126,array:this.jn(new Uint16Array(t,e+c.offset,2*f))},o.push(l.NORMAL_RIGHT.array.buffer)}if(a.SCALE){const{byteOffset:e}=a.SCALE;l.SCALE={byteStride:0,byteOffset:0,itemSize:1,count:f,componentType:5126,array:new Float32Array(t,e+c.offset,f).slice()},o.push(l.SCALE.array.buffer)}else if(a.SCALE_NON_UNIFORM){const{byteOffset:e}=a.SCALE_NON_UNIFORM;l.SCALE_NON_UNIFORM={byteStride:0,byteOffset:0,itemSize:3,count:f,componentType:5126,array:new Float32Array(t,e+c.offset,3*f).slice()},o.push(l.SCALE_NON_UNIFORM.array.buffer)}return{count:f,batchTable:h,batchTableBin:u,featureTable:a,i3dm:l,transferables:o}}jn(t){const e=t.length/2,n=new Float32Array(3*e),r=[];for(let s=0;s<e;s++)ds(r,t[2*s],t[2*s+1],65535),n[3*s]=r[0],n[3*s+1]=r[1],n[3*s+2]=r[2];return n}zn(t,e,n){return Ae(new Float32Array(t.length),t,e,n)}kn(){return null}}function ds(t,e,n,r){if(t[0]=ms(e,r),t[1]=ms(n,r),t[2]=1-(Math.abs(t[0])+Math.abs(t[1])),t[2]<0){const e=t[0];t[0]=(1-Math.abs(t[1]))*ps(e),t[1]=(1-Math.abs(e))*ps(t[1])}return w.normalize(t,t)}function ms(t,e){return function(t,e,n){return t<e?e:t>n?n:t}(t,0,e=function(t,e){if(null!=t)return t;return e}(e,255))/e*2-1}function ps(t){return t<0?-1:1}class bs{constructor(){}load(t,e,n=0,r=0){return e?(r||(r=e.byteLength),this.Rn(t,e,n,r)):b.getArrayBuffer(t,{}).then(e=>{const s=e.data;return r||(r=s.byteLength),this.Rn(t,s,n,r)})}Rn(t,e,n,r){return this.Gn(e,n,r,t).then(t=>t.error?t:{magic:"pnts",count:t.count,transferables:t.transferables,featureTable:t.featureTable,batchTable:t.batchTable,batchTableBin:t.batchTableBin,pnts:t.pnts})}Gn(t,e,n,r){const s=new DataView(t,e,n),i=s.getUint32(4,!0);if(1!==i){const t="Unsupported pnts version: "+i+", url:"+r;return console.warn(t),{error:t}}if(s.getUint32(8,!0)!==s.byteLength){const t="Length in pnts header is inconsistent with pnts's byte length, url: "+r;return console.warn(t),{error:t}}const o=[t],{featureTable:a,featureTableBin:c,batchTable:h,batchTableBin:u}=Ie(s,e+28,o),l=a.QUANTIZED_VOLUME_OFFSET,f=a.QUANTIZED_VOLUME_SCALE,d=a.POINTS_LENGTH;let m,p={};if(a.extensions&&a.extensions["3DTILES_draco_point_compression"]){p=a.extensions["3DTILES_draco_point_compression"],m=new DataView(t,p.byteOffset+c.offset,p.byteLength);const e={attributes:p.properties,useUniqueIDs:!1};return this.Hn||(this.Hn=us().draco),this.Hn(m,e).then(e=>{const n=e.attributes;!a.POSITION&&!a.POSITION_QUANTIZED||n.POSITION||n.POSITION_QUANTIZED||(n.POSITION=a.POSITION,n.POSITION_QUANTIZED=a.POSITION_QUANTIZED),!(a.RGB||a.RGBA||a.RGB565)||n.RGB||n.RGBA||n.RGB565||(n.RGB=a.RGB,n.RGBA=a.RGBA,n.RGB565=a.RGB565),!a.NORMAL&&!a.NORMAL_OCT16P||n.NORMAL||n.NORMAL_OCT16P||(n.NORMAL=a.NORMAL,n.NORMAL_OCT16P=a.NORMAL_OCT16P);const r=this.Vn(t,e.attributes,c.offset,d,o,l,f);if(e.attributes.BATCH_ID){const t=e.attributes.BATCH_ID.array;r.BATCH_ID={byteStride:0,byteOffset:0,itemSize:1,count:t.length,componentType:xe(t.constructor),array:t},o.push(t.buffer)}else if(a.BATCH_ID||Object.keys(h).length){a.BATCH_ID?r.BATCH_ID=we(a.BATCH_ID,t,c.offset,d):r.BATCH_ID=gs(d);const e=r.BATCH_ID.array&&r.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}return{count:d,batchTable:h,batchTableBin:u,featureTable:a,pnts:r,transferables:o}})}const b=this.Vn(t,a,c.offset,d,o,l,f);if(a.BATCH_ID||Object.keys(h).length){a.BATCH_ID?b.BATCH_ID=we(a.BATCH_ID,t,c.offset,d):b.BATCH_ID=gs(d);const e=b.BATCH_ID.array&&b.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}return Promise.resolve({count:d,batchTable:h,batchTableBin:u,featureTable:a,pnts:b,transferables:o})}Vn(t,e,n,r,s,i,o){const a={};if(e.POSITION){let{byteOffset:i,array:o}=e.POSITION;i=i||0;const c=o?0:n;if(!o){const e=t.slice(i+c,i+c+3*r*4);o=new Float32Array(e)}a.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:r,componentType:5126,array:o},s.push(o.buffer)}else if(e.POSITION_QUANTIZED){let{byteOffset:c}=e.POSITION_QUANTIZED;const{array:h}=e.POSITION_QUANTIZED;c=c||0;const u=h?0:n;a.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:r,componentType:5126,array:this.zn(h||new Uint16Array(t,c+u,3*r),i,o)},s.push(a.POSITION.array.buffer)}if(e.RGBA){let{byteOffset:i,array:o}=e.RGBA;i=i||0;const c=o?0:n;if(!o){const e=t.slice(i+c,i+c+4*r);o=new Uint8Array(e)}a.RGBA={byteStride:0,byteOffset:0,itemSize:4,count:r,componentType:5121,array:o},s.push(o.buffer)}else if(e.RGB){let{byteOffset:i,array:o}=e.RGB;i=i||0;const c=o?0:n;if(!o){const e=t.slice(i+c,i+c+3*r);o=new Uint8Array(e)}a.RGB={byteStride:0,byteOffset:0,itemSize:3,count:r,componentType:5121,array:o},s.push(o.buffer)}else if(e.RGB565){let{byteOffset:i,array:o}=e.RGB565;i=i||0;const c=o?0:n;if(!o){const e=t.slice(i+c,i+c+2*r);o=new Uint16Array(e)}a.RGB565={byteStride:0,byteOffset:0,itemSize:1,count:r,componentType:5123,array:o},s.push(o.buffer)}if(e.NORMAL){let{byteOffset:i,array:o}=e.NORMAL;i=i||0;const c=o?0:n;if(!o){const e=t.slice(i+c,i+c+3*r*4);o=new Float32Array(e)}a.NORMAL={byteStride:0,byteOffset:0,itemSize:3,count:r,componentType:5126,array:o},s.push(o.buffer)}else if(e.NORMAL_OCT16P){let{byteOffset:i,array:o}=e.NORMAL_OCT16P;i=i||0;const c=o?0:n;if(!o){const e=t.slice(i+c,i+c+2*r);o=new Uint8Array(e)}a.NORMAL_OCT16P={byteStride:0,byteOffset:0,itemSize:2,count:r,componentType:5121,array:o},s.push(o.buffer)}return a}zn(t,e,n){return Ae(new Float32Array(t.length),t,e,n)}kn(){return null}}function gs(t){const e=Mt(t),n=new e(t);for(let e=0;e<t;e++)n[e]=e;return{byteStride:0,byteOffset:0,itemSize:1,count:t,componentType:xe(e),array:n}}class ys{constructor(t,e,n,r){this.Ce=n,this.Nn=t,this.Cn=e||p,this.Bn=r}load(t,e,n=0,r=0,s){return e?this.Rn(t,e,n,r,s):b.getArrayBuffer(t,{}).then(e=>{const s=e.data;return this.Rn(t,s,n,r)})}Rn(t,e,n,r,s){r||(r=e.byteLength);const i=this.qn(e,t,n,r),o=[];for(let n=0;n<i.length;n++){let r;if("b3dm"===i[n].magic)r=new ls(this.Nn,this.Cn,this.Ce);else if("i3dm"===i[n].magic)r=new fs(this.Nn,this.Cn,this.Ce,this.Bn);else if("pnts"===i[n].magic)r=new bs;else{if("cmpt"!==i[n].magic){console.warn("Unsupported magic in CMPT tile:",i[n].magic);continue}r=new ys(this.Nn,this.Cn,this.Ce,this.Bn)}o.push(r.load(t,e,i[n].offset,i[n].byteLength,s).then(t=>t))}return Promise.all(o).then(t=>({magic:"cmpt",tiles:t}))}qn(t,e,n,r){const s=new DataView(t,n,r),i=s.getUint32(4,!0);if(1!==i){const t="Unsupported cmpt version: "+i+", url:"+e;return console.warn(t),{error:t}}if(16===s.byteLength)return[];const o=[],a=s.getUint32(12,!0);let c=16;for(let e=0;e<a;e++){const e=de(s,c),r=s.getUint32(c+8,!0);o.push({magic:e,buffer:t,offset:c+n,byteLength:r}),c+=r}return o}}if(e.transcoders){const n=t.Map.VERSION;if(n.indexOf("1.0.0-beta")>=0||n.indexOf("1.0.0-alpha")>=0){const n=e.transcoders.inject(T);t.registerWorkerAdapter("@maptalks/3dtiles",n)}else t.registerWorkerAdapter("@maptalks/3dtiles",(function(){return e.transcoders.inject(T)}))}else t.registerWorkerAdapter("@maptalks/3dtiles",T);export{ls as B3DMLoader,ys as CMPTLoader,rs as Geo3DTilesLayer,Nt as Geo3DTilesUtil,le as Geo3DTransform};"undefined"!=typeof console&&console.log("@maptalks/3dtiles v0.95.0");