@xeokit/xeokit-sdk 2.6.13 → 2.6.16

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.
@@ -14,7 +14,7 @@ class e{constructor(e,t){this.items=e||[],this._lastUniqueId=(t||0)+1}addItem(){
14
14
  /**
15
15
  * @author https://github.com/tmarti, with support from https://tribia.com/
16
16
  * @license MIT
17
- **/let $h=null;function ec(e,t){const i=3*e,s=3*t;let r,o,n,a,l,A;const h=Math.min(r=$h[i],o=$h[i+1],n=$h[i+2]),c=Math.min(a=$h[s],l=$h[s+1],A=$h[s+2]);if(h!==c)return h-c;const u=Math.max(r,o,n),d=Math.max(a,l,A);return u!==d?u-d:0}let tc=null;function ic(e,t){let i=tc[2*e]-tc[2*t];return 0!==i?i:tc[2*e+1]-tc[2*t+1]}function sc(e,t,i=!1){const s=e.positionsCompressed||[],r=function(e,t){const i=new Int32Array(e.length/3);for(let e=0,t=i.length;e<t;e++)i[e]=e;$h=new Int32Array(e.length);for(let i=0,s=e.length;i<s;i++)$h[i]=e[i]>>t;i.sort(ec);const s=new Int32Array(e.length);for(let t=0,r=i.length;t<r;t++)s[3*t+0]=e[3*i[t]+0],s[3*t+1]=e[3*i[t]+1],s[3*t+2]=e[3*i[t]+2];return s}(e.indices||[],t),o=function(e){if(0===(e||[]).length)return[];let t=new Int32Array(e.length/2);for(let e=0,i=t.length;e<i;e++)t[e]=e;for(let t=0,i=e.length;t<i;t+=2)if(e[t]>e[t+1]){let i=e[t];e[t]=e[t+1],e[t+1]=i}tc=new Int32Array(e),t.sort(ic);const i=new Int32Array(e.length);for(let s=0,r=t.length;s<r;s++)i[2*s+0]=e[2*t[s]+0],i[2*s+1]=e[2*t[s]+1];return i}(e.edgeIndices||[]);function n(e,t){if(e>t){let i=e;e=t,t=i}function i(i,s){return i!==e?e-i:s!==t?t-s:0}let s=0,r=(o.length>>1)-1;for(;s<=r;){const e=r+s>>1,t=i(o[2*e],o[2*e+1]);if(t>0)s=e+1;else{if(!(t<0))return e;r=e-1}}return-s-1}const a=new Int32Array(o.length/2);a.fill(0);const l=s.length/3;if(l>8*(1<<t))return[e];const A=new Int32Array(l);A.fill(-1);const h=[];function c(){A.fill(-1);const e={positionsCompressed:[],indices:[],edgeIndices:[],maxNumPositions:(1<<t)-t,numPositions:0,bucketNumber:h.length};return h.push(e),e}let u=c();for(let t=0,i=r.length;t<i;t+=3){let i=0;const l=r[t],h=r[t+1],d=r[t+2];if(-1===A[l]&&i++,-1===A[h]&&i++,-1===A[d]&&i++,i+u.numPositions>u.maxNumPositions&&(u=c()),u.bucketNumber>8)return[e];let p;-1===A[l]&&(A[l]=u.numPositions++,u.positionsCompressed.push(s[3*l]),u.positionsCompressed.push(s[3*l+1]),u.positionsCompressed.push(s[3*l+2])),-1===A[h]&&(A[h]=u.numPositions++,u.positionsCompressed.push(s[3*h]),u.positionsCompressed.push(s[3*h+1]),u.positionsCompressed.push(s[3*h+2])),-1===A[d]&&(A[d]=u.numPositions++,u.positionsCompressed.push(s[3*d]),u.positionsCompressed.push(s[3*d+1]),u.positionsCompressed.push(s[3*d+2])),u.indices.push(A[l]),u.indices.push(A[h]),u.indices.push(A[d]),(p=n(l,h))>=0&&0===a[p]&&(a[p]=1,u.edgeIndices.push(A[o[2*p]]),u.edgeIndices.push(A[o[2*p+1]])),(p=n(l,d))>=0&&0===a[p]&&(a[p]=1,u.edgeIndices.push(A[o[2*p]]),u.edgeIndices.push(A[o[2*p+1]])),(p=n(h,d))>=0&&0===a[p]&&(a[p]=1,u.edgeIndices.push(A[o[2*p]]),u.edgeIndices.push(A[o[2*p+1]]))}const d=t/8*2,p=t/8,f=2*s.length+(r.length+o.length)*d;let g=0,m=-s.length/3;return h.forEach((e=>{g+=2*e.positionsCompressed.length+(e.indices.length+e.edgeIndices.length)*p,m+=e.positionsCompressed.length/3})),g>f?[e]:(i&&function(e,t){const i={},s={};let r=0;e.forEach((e=>{const t=e.indices,o=e.edgeIndices,n=e.positionsCompressed;for(let e=0,s=t.length;e<s;e+=3){const s=n[3*t[e]]+"_"+n[3*t[e]+1]+"_"+n[3*t[e]+2]+"/"+n[3*t[e+1]]+"_"+n[3*t[e+1]+1]+"_"+n[3*t[e+1]+2]+"/"+n[3*t[e+2]]+"_"+n[3*t[e+2]+1]+"_"+n[3*t[e+2]+2];i[s]=!0}r+=e.edgeIndices.length/2;for(let e=0,t=o.length;e<t;e+=2){const t=n[3*o[e]]+"_"+n[3*o[e]+1]+"_"+n[3*o[e]+2]+"/"+n[3*o[e+1]]+"_"+n[3*o[e+1]+1]+"_"+n[3*o[e+1]+2]+"/";s[t]=!0}}));{const e=t.indices;t.edgeIndices;const s=t.positionsCompressed;for(let t=0,r=e.length;t<r;t+=3){const r=s[3*e[t]]+"_"+s[3*e[t]+1]+"_"+s[3*e[t]+2]+"/"+s[3*e[t+1]]+"_"+s[3*e[t+1]+1]+"_"+s[3*e[t+1]+2]+"/"+s[3*e[t+2]]+"_"+s[3*e[t+2]+1]+"_"+s[3*e[t+2]+2];if(!(r in i))throw console.log("Not found "+r),"Ohhhh!"}}}(h,e),h)}const rc=d.vec4(4),oc=d.vec4(),nc=d.vec4(),ac=d.vec3([1,0,0]),lc=d.vec3([0,1,0]),Ac=d.vec3([0,0,1]);d.vec3(3),d.vec3(3);const hc=d.identityMat4();class cc{constructor(e){this._model=e.model,this.id=e.id,this._parentTransform=e.parent,this._childTransforms=[],this._meshes=[],this._scale=new Float32Array([1,1,1]),this._quaternion=d.identityQuaternion(new Float32Array(4)),this._rotation=new Float32Array(3),this._position=new Float32Array(3),this._localMatrix=d.identityMat4(new Float32Array(16)),this._worldMatrix=d.identityMat4(new Float32Array(16)),this._localMatrixDirty=!0,this._worldMatrixDirty=!0,e.matrix?this.matrix=e.matrix:(this.scale=e.scale,this.position=e.position,e.quaternion||(this.rotation=e.rotation)),e.parent&&e.parent._addChildTransform(this)}_addChildTransform(e){this._childTransforms.push(e),e._parentTransform=this,e._transformDirty(),e._setSubtreeAABBsDirty(this)}_addMesh(e){this._meshes.push(e),e.transform=this}get parentTransform(){return this._parentTransform}get meshes(){return this._meshes}set position(e){this._position.set(e||[0,0,0]),this._setLocalMatrixDirty(),this._model.glRedraw()}get position(){return this._position}set rotation(e){this._rotation.set(e||[0,0,0]),d.eulerToQuaternion(this._rotation,"XYZ",this._quaternion),this._setLocalMatrixDirty(),this._model.glRedraw()}get rotation(){return this._rotation}set quaternion(e){this._quaternion.set(e||[0,0,0,1]),d.quaternionToEuler(this._quaternion,"XYZ",this._rotation),this._setLocalMatrixDirty(),this._model.glRedraw()}get quaternion(){return this._quaternion}set scale(e){this._scale.set(e||[1,1,1]),this._setLocalMatrixDirty(),this._model.glRedraw()}get scale(){return this._scale}set matrix(e){this._localMatrix||(this._localMatrix=d.identityMat4()),this._localMatrix.set(e||hc),d.decomposeMat4(this._localMatrix,this._position,this._quaternion,this._scale),this._localMatrixDirty=!1,this._transformDirty(),this._model.glRedraw()}get matrix(){return this._localMatrixDirty&&(this._localMatrix||(this._localMatrix=d.identityMat4()),d.composeMat4(this._position,this._quaternion,this._scale,this._localMatrix),this._localMatrixDirty=!1),this._localMatrix}get worldMatrix(){return this._worldMatrixDirty&&this._buildWorldMatrix(),this._worldMatrix}rotate(e,t){return rc[0]=e[0],rc[1]=e[1],rc[2]=e[2],rc[3]=t*d.DEGTORAD,d.angleAxisToQuaternion(rc,oc),d.mulQuaternions(this.quaternion,oc,nc),this.quaternion=nc,this._setLocalMatrixDirty(),this._model.glRedraw(),this}rotateOnWorldAxis(e,t){return rc[0]=e[0],rc[1]=e[1],rc[2]=e[2],rc[3]=t*d.DEGTORAD,d.angleAxisToQuaternion(rc,oc),d.mulQuaternions(oc,this.quaternion,oc),this}rotateX(e){return this.rotate(ac,e)}rotateY(e){return this.rotate(lc,e)}rotateZ(e){return this.rotate(Ac,e)}translate(e){return this._position[0]+=e[0],this._position[1]+=e[1],this._position[2]+=e[2],this._setLocalMatrixDirty(),this._model.glRedraw(),this}translateX(e){return this._position[0]+=e,this._setLocalMatrixDirty(),this._model.glRedraw(),this}translateY(e){return this._position[1]+=e,this._setLocalMatrixDirty(),this._model.glRedraw(),this}translateZ(e){return this._position[2]+=e,this._setLocalMatrixDirty(),this._model.glRedraw(),this}_setLocalMatrixDirty(){this._localMatrixDirty=!0,this._transformDirty()}_transformDirty(){this._worldMatrixDirty=!0;for(let e=0,t=this._childTransforms.length;e<t;e++){const t=this._childTransforms[e];if(t._transformDirty(),t._meshes&&t._meshes.length>0){const e=t._meshes;for(let t=0,i=e.length;t<i;t++)e[t]._transformDirty()}}if(this._meshes&&this._meshes.length>0){const e=this._meshes;for(let t=0,i=e.length;t<i;t++)e[t]._transformDirty()}}_buildWorldMatrix(){const e=this.matrix;if(this._parentTransform)d.mulMat4(this._parentTransform.worldMatrix,e,this._worldMatrix);else for(let t=0,i=e.length;t<i;t++)this._worldMatrix[t]=e[t];this._worldMatrixDirty=!1}_setSubtreeAABBsDirty(e){if(e._aabbDirty=!0,e._childTransforms)for(let t=0,i=e._childTransforms.length;t<i;t++)this._setSubtreeAABBsDirty(e._childTransforms[t])}}const uc=d.vec3(),dc=d.OBB3(),pc=d.vec4(),fc=d.vec3([1,1,1]),gc=d.vec3([0,0,0]);d.vec3([0,0,0]);const mc=d.identityQuaternion(),_c=d.identityMat4(),vc=new Uint8Array([255,255,255]);class bc extends R{constructor(e,t={}){super(e,t),this._dtxEnabled=this.scene.dtxEnabled&&!1!==t.dtxEnabled,this._enableVertexWelding=!1,this._enableIndexBucketing=!1,this._vboBatchingLayerScratchMemory=(go++,fo),this._textureTranscoder=t.textureTranscoder||Xh(this.scene.viewer),this._maxGeometryBatchSize=t.maxGeometryBatchSize,this._aabb=d.collapseAABB3(),this._aabbDirty=!0,this._quantizationRanges={},this._vboInstancingLayers={},this._vboBatchingLayers={},this._dtxLayers={},this._meshList=[],this.layerList=[],this._entityList=[],this._geometries={},this._dtxBuckets={},this._textures={},this._textureSets={},this._transforms={},this._meshes={},this._unusedMeshes={},this._entities={},this.renderFlags=new rr,this.numGeometries=0,this.numPortions=0,this.numVisibleLayerPortions=0,this.numTransparentLayerPortions=0,this.numXRayedLayerPortions=0,this.numHighlightedLayerPortions=0,this.numSelectedLayerPortions=0,this.numEdgesLayerPortions=0,this.numPickableLayerPortions=0,this.numClippableLayerPortions=0,this.numCulledLayerPortions=0,this.numEntities=0,this._numTriangles=0,this._numLines=0,this._numPoints=0,this._edgeThreshold=t.edgeThreshold||10,this._origin=d.vec3(t.origin||[0,0,0]),this._position=d.vec3(t.position||[0,0,0]),this._rotation=d.vec3(t.rotation||[0,0,0]),this._quaternion=d.vec4(t.quaternion||[0,0,0,1]),this._conjugateQuaternion=d.vec4(t.quaternion||[0,0,0,1]),t.rotation&&d.eulerToQuaternion(this._rotation,"XYZ",this._quaternion),this._scale=d.vec3(t.scale||[1,1,1]),this._worldRotationMatrix=d.mat4(),this._worldRotationMatrixConjugate=d.mat4(),this._matrix=d.mat4(),this._matrixDirty=!0,this._rebuildMatrices(),this._worldNormalMatrix=d.mat4(),d.inverseMat4(this._matrix,this._worldNormalMatrix),d.transposeMat4(this._worldNormalMatrix),(t.matrix||t.position||t.rotation||t.scale||t.quaternion)&&(this._viewMatrix=d.mat4(),this._viewNormalMatrix=d.mat4(),this._viewMatrixDirty=!0,this._matrixNonIdentity=!0),this._opacity=1,this._colorize=[1,1,1],this._saoEnabled=!1!==t.saoEnabled,this._pbrEnabled=!1!==t.pbrEnabled,this._colorTextureEnabled=!1!==t.colorTextureEnabled,this._isModel=t.isModel,this._isModel&&this.scene._registerModel(this),this._onCameraViewMatrix=this.scene.camera.on("matrix",(()=>{this._viewMatrixDirty=!0})),this._meshesWithDirtyMatrices=[],this._numMeshesWithDirtyMatrices=0,this._onTick=this.scene.on("tick",(()=>{for(;this._numMeshesWithDirtyMatrices>0;)this._meshesWithDirtyMatrices[--this._numMeshesWithDirtyMatrices]._updateMatrix()})),this._createDefaultTextureSet(),this.visible=t.visible,this.culled=t.culled,this.pickable=t.pickable,this.clippable=t.clippable,this.collidable=t.collidable,this.castsShadow=t.castsShadow,this.receivesShadow=t.receivesShadow,this.xrayed=t.xrayed,this.highlighted=t.highlighted,this.selected=t.selected,this.edges=t.edges,this.colorize=t.colorize,this.opacity=t.opacity,this.backfaces=t.backfaces}_meshMatrixDirty(e){this._meshesWithDirtyMatrices[this._numMeshesWithDirtyMatrices++]=e}_createDefaultTextureSet(){const e=new kh({id:"defaultColorTexture",texture:new Hr({gl:this.scene.canvas.gl,preloadColor:[1,1,1,1]})}),t=new kh({id:"defaultMetalRoughTexture",texture:new Hr({gl:this.scene.canvas.gl,preloadColor:[0,1,1,1]})}),i=new kh({id:"defaultNormalsTexture",texture:new Hr({gl:this.scene.canvas.gl,preloadColor:[0,0,0,0]})}),s=new kh({id:"defaultEmissiveTexture",texture:new Hr({gl:this.scene.canvas.gl,preloadColor:[0,0,0,1]})}),r=new kh({id:"defaultOcclusionTexture",texture:new Hr({gl:this.scene.canvas.gl,preloadColor:[1,1,1,1]})});this._textures.defaultColorTexture=e,this._textures.defaultMetalRoughTexture=t,this._textures.defaultNormalsTexture=i,this._textures.defaultEmissiveTexture=s,this._textures.defaultOcclusionTexture=r,this._textureSets.defaultTextureSet=new Uh({id:"defaultTextureSet",model:this,colorTexture:e,metallicRoughnessTexture:t,normalsTexture:i,emissiveTexture:s,occlusionTexture:r})}get isPerformanceModel(){return!0}get transforms(){return this._transforms}get textures(){return this._textures}get textureSets(){return this._textureSets}get meshes(){return this._meshes}get objects(){return this._entities}get origin(){return this._origin}set position(e){this._position.set(e||[0,0,0]),this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}get position(){return this._position}set rotation(e){this._rotation.set(e||[0,0,0]),d.eulerToQuaternion(this._rotation,"XYZ",this._quaternion),this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}get rotation(){return this._rotation}set quaternion(e){this._quaternion.set(e||[0,0,0,1]),d.quaternionToEuler(this._quaternion,"XYZ",this._rotation),this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}get quaternion(){return this._quaternion}set scale(e){}get scale(){return this._scale}set matrix(e){this._matrix.set(e||_c),d.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrix),d.conjugateQuaternion(this._quaternion,this._conjugateQuaternion),d.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrixConjugate),this._matrix.set(this._worldRotationMatrix),d.translateMat4v(this._position,this._matrix),this._matrixDirty=!1,this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}get matrix(){return this._matrixDirty&&this._rebuildMatrices(),this._matrix}get rotationMatrix(){return this._matrixDirty&&this._rebuildMatrices(),this._worldRotationMatrix}_rebuildMatrices(){this._matrixDirty&&(d.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrix),d.conjugateQuaternion(this._quaternion,this._conjugateQuaternion),d.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrixConjugate),this._matrix.set(this._worldRotationMatrix),d.translateMat4v(this._position,this._matrix),this._matrixDirty=!1)}get rotationMatrixConjugate(){return this._matrixDirty&&this._rebuildMatrices(),this._worldRotationMatrixConjugate}_setWorldMatrixDirty(){this._matrixDirty=!0,this._aabbDirty=!0}_transformDirty(){this._matrixDirty=!0,this._aabbDirty=!0,this.scene._aabbDirty=!0}_sceneModelDirty(){this.scene._aabbDirty=!0,this._aabbDirty=!0,this.scene._aabbDirty=!0,this._matrixDirty=!0;for(let e=0,t=this._entityList.length;e<t;e++)this._entityList[e]._sceneModelDirty()}get worldMatrix(){return this.matrix}get worldNormalMatrix(){return this._worldNormalMatrix}get viewMatrix(){return this._viewMatrix?(this._matrixDirty&&(this._rebuildMatrices(),this._viewMatrixDirty=!0),this._viewMatrixDirty&&(d.mulMat4(this.scene.camera.viewMatrix,this._matrix,this._viewMatrix),d.inverseMat4(this._viewMatrix,this._viewNormalMatrix),d.transposeMat4(this._viewNormalMatrix),this._viewMatrixDirty=!1),this._viewMatrix):this.scene.camera.viewMatrix}get viewNormalMatrix(){return this._viewNormalMatrix?(this._matrixDirty&&(this._rebuildMatrices(),this._viewMatrixDirty=!0),this._viewMatrixDirty&&(d.mulMat4(this.scene.camera.viewMatrix,this._matrix,this._viewMatrix),d.inverseMat4(this._viewMatrix,this._viewNormalMatrix),d.transposeMat4(this._viewNormalMatrix),this._viewMatrixDirty=!1),d.inverseMat4(this._viewMatrix,this._viewNormalMatrix),d.transposeMat4(this._viewNormalMatrix),this._viewNormalMatrix):this.scene.camera.viewNormalMatrix}get backfaces(){return this._backfaces}set backfaces(e){e=!!e,this._backfaces=e,this.glRedraw()}get entityList(){return this._entityList}get isEntity(){return!0}get isModel(){return this._isModel}get isObject(){return!1}get aabb(){if(this._aabbDirty){d.collapseAABB3(this._aabb);for(let e=0,t=this._entityList.length;e<t;e++)d.expandAABB3(this._aabb,this._entityList[e].aabb);this._aabbDirty=!1}return this._aabb}get numTriangles(){return this._numTriangles}get numLines(){return this._numLines}get numPoints(){return this._numPoints}get visible(){return this.numVisibleLayerPortions>0}set visible(e){e=!1!==e,this._visible=e;for(let t=0,i=this._entityList.length;t<i;t++)this._entityList[t].visible=e;this.glRedraw()}get xrayed(){return this.numXRayedLayerPortions>0}set xrayed(e){e=!!e,this._xrayed=e;for(let t=0,i=this._entityList.length;t<i;t++)this._entityList[t].xrayed=e;this.glRedraw()}get highlighted(){return this.numHighlightedLayerPortions>0}set highlighted(e){e=!!e,this._highlighted=e;for(let t=0,i=this._entityList.length;t<i;t++)this._entityList[t].highlighted=e;this.glRedraw()}get selected(){return this.numSelectedLayerPortions>0}set selected(e){e=!!e,this._selected=e;for(let t=0,i=this._entityList.length;t<i;t++)this._entityList[t].selected=e;this.glRedraw()}get edges(){return this.numEdgesLayerPortions>0}set edges(e){e=!!e,this._edges=e;for(let t=0,i=this._entityList.length;t<i;t++)this._entityList[t].edges=e;this.glRedraw()}get culled(){return this._culled}set culled(e){e=!!e,this._culled=e;for(let t=0,i=this._entityList.length;t<i;t++)this._entityList[t].culled=e;this.glRedraw()}get clippable(){return this._clippable}set clippable(e){e=!1!==e,this._clippable=e;for(let t=0,i=this._entityList.length;t<i;t++)this._entityList[t].clippable=e;this.glRedraw()}get collidable(){return this._collidable}set collidable(e){e=!1!==e,this._collidable=e;for(let t=0,i=this._entityList.length;t<i;t++)this._entityList[t].collidable=e}get pickable(){return this.numPickableLayerPortions>0}set pickable(e){e=!1!==e,this._pickable=e;for(let t=0,i=this._entityList.length;t<i;t++)this._entityList[t].pickable=e}get colorize(){return this._colorize}set colorize(e){this._colorize=e;for(let t=0,i=this._entityList.length;t<i;t++)this._entityList[t].colorize=e}get opacity(){return this._opacity}set opacity(e){this._opacity=e;for(let t=0,i=this._entityList.length;t<i;t++)this._entityList[t].opacity=e}get castsShadow(){return this._castsShadow}set castsShadow(e){(e=!1!==e)!==this._castsShadow&&(this._castsShadow=e,this.glRedraw())}get receivesShadow(){return this._receivesShadow}set receivesShadow(e){(e=!1!==e)!==this._receivesShadow&&(this._receivesShadow=e,this.glRedraw())}get saoEnabled(){return this._saoEnabled}get pbrEnabled(){return this._pbrEnabled}get colorTextureEnabled(){return this._colorTextureEnabled}get isDrawable(){return!0}get isStateSortable(){return!1}get xrayMaterial(){return this.scene.xrayMaterial}get highlightMaterial(){return this.scene.highlightMaterial}get selectedMaterial(){return this.scene.selectedMaterial}get edgeMaterial(){return this.scene.edgeMaterial}getPickViewMatrix(e){return this._viewMatrix?this._viewMatrix:e}createQuantizationRange(e){void 0!==e.id&&null!==e.id?e.aabb?this.error("[createQuantizationRange] Config missing: aabb"):this._quantizationRanges[e.id]?this.error("[createQuantizationRange] QuantizationRange already created: "+e.id):this._quantizationRanges[e.id]={id:e.id,aabb:e.aabb,matrix:cn(e.aabb,d.mat4())}:this.error("[createQuantizationRange] Config missing: id")}createGeometry(e){if(void 0!==e.id&&null!==e.id)if(this._geometries[e.id])this.error("[createGeometry] Geometry already created: "+e.id);else if(void 0!==e.primitive&&null!==e.primitive||(e.primitive="triangles"),"points"===e.primitive||"lines"===e.primitive||"triangles"===e.primitive||"solid"===e.primitive||"surface"===e.primitive){if(!e.positions&&!e.positionsCompressed&&!e.buckets)return this.error("[createGeometry] Param expected: `positions`, `positionsCompressed' or 'buckets"),null;if(e.positionsCompressed&&!e.positionsDecodeMatrix&&!e.positionsDecodeBoundary)return this.error("[createGeometry] Param expected: `positionsDecodeMatrix` or 'positionsDecodeBoundary' (required for `positionsCompressed')"),null;if(e.positionsDecodeMatrix&&e.positionsDecodeBoundary)return this.error("[createGeometry] Only one of these params expected: `positionsDecodeMatrix` or 'positionsDecodeBoundary' (required for `positionsCompressed')"),null;if(e.uvCompressed&&!e.uvDecodeMatrix)return this.error("[createGeometry] Param expected: `uvDecodeMatrix` (required for `uvCompressed')"),null;if(!(e.buckets||e.indices||"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive)){const t=(e.positions||e.positionsCompressed).length/3;e.indices=this._createDefaultIndices(t)}if(!e.buckets&&!e.indices&&"points"!==e.primitive)return this.error(`[createGeometry] Param expected: indices (required for '${e.primitive}' primitive type)`),null;if(e.positionsDecodeBoundary&&(e.positionsDecodeMatrix=cn(e.positionsDecodeBoundary,d.mat4())),e.positions){const t=d.collapseAABB3();e.positionsDecodeMatrix=d.mat4(),d.expandAABB3Points3(t,e.positions),e.positionsCompressed=hn(e.positions,t,e.positionsDecodeMatrix),e.aabb=t}else if(e.positionsCompressed){const t=d.collapseAABB3();e.positionsDecodeMatrix=new Float64Array(e.positionsDecodeMatrix),e.positionsCompressed=new Uint16Array(e.positionsCompressed),d.expandAABB3Points3(t,e.positionsCompressed),Ht.decompressAABB(t,e.positionsDecodeMatrix),e.aabb=t}else if(e.buckets){const t=d.collapseAABB3();this._dtxBuckets[e.id]=e.buckets;for(let i=0,s=e.buckets.length;i<s;i++){const s=e.buckets[i];s.positions?d.expandAABB3Points3(t,s.positions):s.positionsCompressed&&d.expandAABB3Points3(t,s.positionsCompressed)}e.positionsDecodeMatrix&&Ht.decompressAABB(t,e.positionsDecodeMatrix),e.aabb=t}if(e.colorsCompressed&&e.colorsCompressed.length>0)e.colorsCompressed=new Uint8Array(e.colorsCompressed);else if(e.colors&&e.colors.length>0){const t=e.colors,i=new Uint8Array(t.length);for(let e=0,s=t.length;e<s;e++)i[e]=255*t[e];e.colorsCompressed=i}if(e.buckets||e.edgeIndices||"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive||(e.positions?e.edgeIndices=Lt(e.positions,e.indices,null,5):e.edgeIndices=Lt(e.positionsCompressed,e.indices,e.positionsDecodeMatrix,2)),e.uv){const t=Ht.getUVBounds(e.uv),i=Ht.compressUVs(e.uv,t.min,t.max);e.uvCompressed=i.quantized,e.uvDecodeMatrix=i.decodeMatrix}else e.uvCompressed&&(e.uvCompressed=new Uint16Array(e.uvCompressed),e.uvDecodeMatrix=new Float64Array(e.uvDecodeMatrix));e.normals&&(e.normals=null),this._geometries[e.id]=e,this._numTriangles+=e.indices?Math.round(e.indices.length/3):0,this.numGeometries++}else this.error(`[createGeometry] Unsupported value for 'primitive': '${e.primitive}' - supported values are 'points', 'lines', 'triangles', 'solid' and 'surface'. Defaulting to 'triangles'.`);else this.error("[createGeometry] Config missing: id")}createTexture(e){const t=e.id;if(null==t)return void this.error("[createTexture] Config missing: id");if(this._textures[t])return void this.error("[createTexture] Texture already created: "+t);if(!e.src&&!e.image&&!e.buffers)return this.error("[createTexture] Param expected: `src`, `image' or 'buffers'"),null;let i=e.minFilter||1008;1006!==i&&1007!==i&&1008!==i&&1005!==i&&1004!==i&&(this.error("[createTexture] Unsupported value for 'minFilter' - \n supported values are LinearFilter, LinearMipMapNearestFilter, NearestMipMapNearestFilter, \n NearestMipMapLinearFilter and LinearMipmapLinearFilter. Defaulting to LinearMipmapLinearFilter."),i=1008);let s=e.magFilter||1006;1006!==s&&1003!==s&&(this.error("[createTexture] Unsupported value for 'magFilter' - supported values are LinearFilter and NearestFilter. Defaulting to LinearFilter."),s=1006);let r=e.wrapS||1e3;1001!==r&&1002!==r&&1e3!==r&&(this.error("[createTexture] Unsupported value for 'wrapS' - supported values are ClampToEdgeWrapping, MirroredRepeatWrapping and RepeatWrapping. Defaulting to RepeatWrapping."),r=1e3);let o=e.wrapT||1e3;1001!==o&&1002!==o&&1e3!==o&&(this.error("[createTexture] Unsupported value for 'wrapT' - supported values are ClampToEdgeWrapping, MirroredRepeatWrapping and RepeatWrapping. Defaulting to RepeatWrapping."),o=1e3);let n=e.wrapR||1e3;1001!==n&&1002!==n&&1e3!==n&&(this.error("[createTexture] Unsupported value for 'wrapR' - supported values are ClampToEdgeWrapping, MirroredRepeatWrapping and RepeatWrapping. Defaulting to RepeatWrapping."),n=1e3);let a=e.encoding||3e3;3e3!==a&&3001!==a&&(this.error("[createTexture] Unsupported value for 'encoding' - supported values are LinearEncoding and sRGBEncoding. Defaulting to LinearEncoding."),a=3e3);const l=new Hr({gl:this.scene.canvas.gl,minFilter:i,magFilter:s,wrapS:r,wrapT:o,wrapR:n,encoding:a});if(e.preloadColor&&l.setPreloadColor(e.preloadColor),e.image){const t=e.image;t.crossOrigin="Anonymous",l.setImage(t,{minFilter:i,magFilter:s,wrapS:r,wrapT:o,wrapR:n,flipY:e.flipY,encoding:a})}else if(e.src){const t=e.src.split(".").pop();switch(t){case"jpeg":case"jpg":case"png":case"gif":const A=new Image;A.onload=()=>{l.setImage(A,{minFilter:i,magFilter:s,wrapS:r,wrapT:o,wrapR:n,flipY:e.flipY,encoding:a}),this.glRedraw()},A.src=e.src;break;default:this._textureTranscoder?y.loadArraybuffer(e.src,(e=>{e.byteLength?this._textureTranscoder.transcode([e],l).then((()=>{this.glRedraw()})):this.error("[createTexture] Can't create texture from 'src': file data is zero length")}),(function(e){this.error(`[createTexture] Can't create texture from 'src': ${e}`)})):this.error(`[createTexture] Can't create texture from 'src' - SceneModel needs to be configured with a TextureTranscoder for this file type ('${t}')`)}}else e.buffers&&(this._textureTranscoder?this._textureTranscoder.transcode(e.buffers,l).then((()=>{this.glRedraw()})):this.error("[createTexture] Can't create texture from 'buffers' - SceneModel needs to be configured with a TextureTranscoder for this option"));this._textures[t]=new kh({id:t,texture:l})}createTextureSet(e){const t=e.id;if(null==t)return void this.error("[createTextureSet] Config missing: id");if(this._textureSets[t])return void this.error(`[createTextureSet] Texture set already created: ${t}`);let i,s,r,o,n;if(void 0!==e.colorTextureId&&null!==e.colorTextureId){if(i=this._textures[e.colorTextureId],!i)return void this.error(`[createTextureSet] Texture not found: ${e.colorTextureId} - ensure that you create it first with createTexture()`)}else i=this._textures.defaultColorTexture;if(void 0!==e.metallicRoughnessTextureId&&null!==e.metallicRoughnessTextureId){if(s=this._textures[e.metallicRoughnessTextureId],!s)return void this.error(`[createTextureSet] Texture not found: ${e.metallicRoughnessTextureId} - ensure that you create it first with createTexture()`)}else s=this._textures.defaultMetalRoughTexture;if(void 0!==e.normalsTextureId&&null!==e.normalsTextureId){if(r=this._textures[e.normalsTextureId],!r)return void this.error(`[createTextureSet] Texture not found: ${e.normalsTextureId} - ensure that you create it first with createTexture()`)}else r=this._textures.defaultNormalsTexture;if(void 0!==e.emissiveTextureId&&null!==e.emissiveTextureId){if(o=this._textures[e.emissiveTextureId],!o)return void this.error(`[createTextureSet] Texture not found: ${e.emissiveTextureId} - ensure that you create it first with createTexture()`)}else o=this._textures.defaultEmissiveTexture;if(void 0!==e.occlusionTextureId&&null!==e.occlusionTextureId){if(n=this._textures[e.occlusionTextureId],!n)return void this.error(`[createTextureSet] Texture not found: ${e.occlusionTextureId} - ensure that you create it first with createTexture()`)}else n=this._textures.defaultOcclusionTexture;const a=new Uh({id:t,model:this,colorTexture:i,metallicRoughnessTexture:s,normalsTexture:r,emissiveTexture:o,occlusionTexture:n});return this._textureSets[t]=a,a}createTransform(e){if(void 0===e.id||null===e.id)return void this.error("[createTransform] SceneModel.createTransform() config missing: id");if(this._transforms[e.id])return void this.error(`[createTransform] SceneModel already has a transform with this ID: ${e.id}`);let t;if(e.parentTransformId&&(t=this._transforms[e.parentTransformId],!t))return void this.error("[createTransform] SceneModel.createTransform() config missing: id");const i=new cc({id:e.id,model:this,parent:t,matrix:e.matrix,position:e.position,scale:e.scale,rotation:e.rotation,quaternion:e.quaternion});return this._transforms[i.id]=i,i}createMesh(e){if(void 0===e.id||null===e.id)return this.error("[createMesh] SceneModel.createMesh() config missing: id"),!1;if(this._meshes[e.id])return this.error(`[createMesh] SceneModel already has a mesh with this ID: ${e.id}`),!1;if(!(void 0!==e.geometryId)){if(void 0!==e.primitive&&null!==e.primitive||(e.primitive="triangles"),"points"!==e.primitive&&"lines"!==e.primitive&&"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive)return this.error(`Unsupported value for 'primitive': '${primitive}' ('geometryId' is absent) - supported values are 'points', 'lines', 'triangles', 'solid' and 'surface'.`),!1;if(!e.positions&&!e.positionsCompressed&&!e.buckets)return this.error("Param expected: 'positions', 'positionsCompressed' or `buckets` ('geometryId' is absent)"),!1;if(e.positions&&(e.positionsDecodeMatrix||e.positionsDecodeBoundary))return this.error("Illegal params: 'positions' not expected with 'positionsDecodeMatrix'/'positionsDecodeBoundary' ('geometryId' is absent)"),!1;if(e.positionsCompressed&&!e.positionsDecodeMatrix&&!e.positionsDecodeBoundary)return this.error("Param expected: 'positionsCompressed' should be accompanied by 'positionsDecodeMatrix'/'positionsDecodeBoundary' ('geometryId' is absent)"),!1;if(e.uvCompressed&&!e.uvDecodeMatrix)return this.error("Param expected: 'uvCompressed' should be accompanied by `uvDecodeMatrix` ('geometryId' is absent)"),!1;if(!(e.buckets||e.indices||"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive)){const t=(e.positions||e.positionsCompressed).length/3;e.indices=this._createDefaultIndices(t)}if(!e.buckets&&!e.indices&&"points"!==e.primitive)return e.indices=this._createDefaultIndices(numIndices),this.error(`Param expected: indices (required for '${e.primitive}' primitive type)`),!1;if((e.matrix||e.position||e.rotation||e.scale)&&(e.positionsCompressed||e.positionsDecodeBoundary))return this.error("Unexpected params: 'matrix', 'rotation', 'scale', 'position' not allowed with 'positionsCompressed'"),!1;const t=!(!this._dtxEnabled||"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive||e.textureSetId);if(e.origin=e.origin?d.addVec3(this._origin,e.origin,d.vec3()):this._origin,e.matrix)e.meshMatrix=e.matrix;else if(e.scale||e.rotation||e.position||e.quaternion){const t=e.scale||fc,i=e.position||gc;e.rotation?(d.eulerToQuaternion(e.rotation,"XYZ",pc),e.meshMatrix=d.composeMat4(i,pc,t,d.mat4())):e.meshMatrix=d.composeMat4(i,e.quaternion||mc,t,d.mat4())}if(e.positionsDecodeBoundary&&(e.positionsDecodeMatrix=cn(e.positionsDecodeBoundary,d.mat4())),t){if(e.type=2,e.color=e.color?new Uint8Array([Math.floor(255*e.color[0]),Math.floor(255*e.color[1]),Math.floor(255*e.color[2])]):vc,e.opacity=void 0!==e.opacity&&null!==e.opacity?Math.floor(255*e.opacity):255,e.positions){const t=d.vec3(),i=[];J(e.positions,i,t)&&(e.positions=i,e.origin=d.addVec3(e.origin,t,t))}if(e.positions){const t=d.collapseAABB3();e.positionsDecodeMatrix=d.mat4(),d.expandAABB3Points3(t,e.positions),e.positionsCompressed=hn(e.positions,t,e.positionsDecodeMatrix),e.aabb=t}else if(e.positionsCompressed){const t=d.collapseAABB3();d.expandAABB3Points3(t,e.positionsCompressed),Ht.decompressAABB(t,e.positionsDecodeMatrix),e.aabb=t}if(e.buckets){const t=d.collapseAABB3();for(let i=0,s=e.buckets.length;i<s;i++){const s=e.buckets[i];s.positions?d.expandAABB3Points3(t,s.positions):s.positionsCompressed&&d.expandAABB3Points3(t,s.positionsCompressed)}e.positionsDecodeMatrix&&Ht.decompressAABB(t,e.positionsDecodeMatrix),e.aabb=t}e.meshMatrix&&(d.AABB3ToOBB3(e.aabb,dc),d.transformOBB3(e.meshMatrix,dc),d.OBB3ToAABB3(dc,e.aabb)),e.buckets||e.edgeIndices||"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive||(e.positions?e.edgeIndices=Lt(e.positions,e.indices,null,2):e.edgeIndices=Lt(e.positionsCompressed,e.indices,e.positionsDecodeMatrix,2)),e.buckets||(e.buckets=yc(e,this._enableVertexWelding&&this._enableIndexBucketing))}else{if(e.type=1,e.color=e.color?new Uint8Array([Math.floor(255*e.color[0]),Math.floor(255*e.color[1]),Math.floor(255*e.color[2])]):[255,255,255],e.opacity=void 0!==e.opacity&&null!==e.opacity?Math.floor(255*e.opacity):255,e.metallic=void 0!==e.metallic&&null!==e.metallic?Math.floor(255*e.metallic):0,e.roughness=void 0!==e.roughness&&null!==e.roughness?Math.floor(255*e.roughness):255,e.positions){const t=[];J(e.positions,t,uc)&&(e.positions=t,e.origin=d.addVec3(e.origin,uc,d.vec3()))}if(e.positions){const t=d.collapseAABB3();e.meshMatrix&&(d.transformPositions3(e.meshMatrix,e.positions,e.positions),e.meshMatrix=null),d.expandAABB3Points3(t,e.positions),e.aabb=t}else{const t=d.collapseAABB3();d.expandAABB3Points3(t,e.positionsCompressed),Ht.decompressAABB(t,e.positionsDecodeMatrix),e.aabb=t}if(e.meshMatrix&&(d.AABB3ToOBB3(e.aabb,dc),d.transformOBB3(e.meshMatrix,dc),d.OBB3ToAABB3(dc,e.aabb)),e.buckets||e.edgeIndices||"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive||(e.positions?e.edgeIndices=Lt(e.positions,e.indices,null,2):e.edgeIndices=Lt(e.positionsCompressed,e.indices,e.positionsDecodeMatrix,2)),e.textureSetId&&(e.textureSet=this._textureSets[e.textureSetId],!e.textureSet))return this.error(`[createMesh] Texture set not found: ${e.textureSetId} - ensure that you create it first with createTextureSet()`),!1}}else{if(e.positions||e.positionsCompressed||e.indices||e.edgeIndices||e.normals||e.normalsCompressed||e.uv||e.uvCompressed||e.positionsDecodeMatrix)return this.error("Mesh geometry parameters not expected when instancing a geometry (not expected: positions, positionsCompressed, indices, edgeIndices, normals, normalsCompressed, uv, uvCompressed, positionsDecodeMatrix)"),!1;if(e.geometry=this._geometries[e.geometryId],!e.geometry)return this.error(`[createMesh] Geometry not found: ${e.geometryId} - ensure that you create it first with createGeometry()`),!1;if(e.origin=e.origin?d.addVec3(this._origin,e.origin,d.vec3()):this._origin,e.positionsDecodeMatrix=e.geometry.positionsDecodeMatrix,e.transformId){if(e.transform=this._transforms[e.transformId],!e.transform)return this.error(`[createMesh] Transform not found: ${e.transformId} - ensure that you create it first with createTransform()`),!1;e.aabb=e.geometry.aabb}else{if(e.matrix)e.meshMatrix=e.matrix;else if(e.scale||e.rotation||e.position||e.quaternion){const t=e.scale||fc,i=e.position||gc;e.rotation?(d.eulerToQuaternion(e.rotation,"XYZ",pc),e.meshMatrix=d.composeMat4(i,pc,t,d.mat4())):e.meshMatrix=d.composeMat4(i,e.quaternion||mc,t,d.mat4())}d.AABB3ToOBB3(e.geometry.aabb,dc),d.transformOBB3(e.meshMatrix,dc),e.aabb=d.OBB3ToAABB3(dc,d.AABB3())}if(!(!this._dtxEnabled||"triangles"!==e.geometry.primitive&&"solid"!==e.geometry.primitive&&"surface"!==e.geometry.primitive||e.textureSetId)){e.type=2,e.color=e.color?new Uint8Array([Math.floor(255*e.color[0]),Math.floor(255*e.color[1]),Math.floor(255*e.color[2])]):vc,e.opacity=void 0!==e.opacity&&null!==e.opacity?Math.floor(255*e.opacity):255;let t=this._dtxBuckets[e.geometryId];t||(t=yc(e.geometry,this._enableVertexWelding,this._enableIndexBucketing),this._dtxBuckets[e.geometryId]=t),e.buckets=t}else e.type=0,e.color=e.color?new Uint8Array([Math.floor(255*e.color[0]),Math.floor(255*e.color[1]),Math.floor(255*e.color[2])]):vc,e.opacity=void 0!==e.opacity&&null!==e.opacity?Math.floor(255*e.opacity):255,e.metallic=void 0!==e.metallic&&null!==e.metallic?Math.floor(255*e.metallic):0,e.roughness=void 0!==e.roughness&&null!==e.roughness?Math.floor(255*e.roughness):255,e.textureSetId&&(e.textureSet=this._textureSets[e.textureSetId])}return e.numPrimitives=this._getNumPrimitives(e),this._createMesh(e)}_createMesh(e){const t=new po(this,e.id,e.color,e.opacity,e.transform,e.textureSet);t.pickId=this.scene._renderer.getPickID(t);const i=t.pickId,s=i>>24&255,r=i>>16&255,o=i>>8&255,n=255&i;switch(e.pickColor=new Uint8Array([n,o,r,s]),e.solid="solid"===e.primitive,t.origin=d.vec3(e.origin),e.type){case 2:t.layer=this._getDTXLayer(e),t.aabb=e.aabb;break;case 1:t.layer=this._getVBOBatchingLayer(e),t.aabb=e.aabb;break;case 0:t.layer=this._getVBOInstancingLayer(e),t.aabb=e.aabb}return e.transform&&(e.meshMatrix=e.transform.worldMatrix),t.portionId=t.layer.createPortion(t,e),this._meshes[e.id]=t,this._unusedMeshes[e.id]=t,this._meshList.push(t),t}_getNumPrimitives(e){let t=0;switch(e.geometry?e.geometry.primitive:e.primitive){case"triangles":case"solid":case"surface":switch(e.type){case 2:for(let i=0,s=e.buckets.length;i<s;i++)t+=e.buckets[i].indices.length;break;case 1:t+=e.indices.length;break;case 0:t+=e.geometry.indices.length}return Math.round(t/3);case"points":switch(e.type){case 2:for(let i=0,s=e.buckets.length;i<s;i++)t+=e.buckets[i].positionsCompressed.length;break;case 1:t+=e.positions?e.positions.length:e.positionsCompressed.length;break;case 0:const i=e.geometry;t+=i.positions?i.positions.length:i.positionsCompressed.length}return Math.round(t);case"lines":case"line-strip":switch(e.type){case 2:for(let i=0,s=e.buckets.length;i<s;i++)t+=e.buckets[i].indices.length;break;case 1:t+=e.indices.length;break;case 0:t+=e.geometry.indices.length}return Math.round(t/2)}return 0}_getDTXLayer(e){const t=e.origin,i=e.geometry?e.geometry.primitive:e.primitive,s=`.${i}.${Math.round(t[0])}.${Math.round(t[1])}.${Math.round(t[2])}`;let r=this._dtxLayers[s];if(r){if(r.canCreatePortion(e))return r;r.finalize(),delete this._dtxLayers[s],r=null}switch(i){case"triangles":case"solid":case"surface":r=new Lh(this,{layerIndex:0,origin:t});break;case"lines":r=new uA(this,{layerIndex:0,origin:t});break;default:return}return this._dtxLayers[s]=r,this.layerList.push(r),r}_getVBOBatchingLayer(e){const t=this,i=e.origin,s=e.positionsDecodeMatrix||e.positionsDecodeBoundary?this._createHashStringFromMatrix(e.positionsDecodeMatrix||e.positionsDecodeBoundary):"-",r=e.textureSetId||"-",o=`${Math.round(i[0])}.${Math.round(i[1])}.${Math.round(i[2])}.${e.primitive}.${s}.${r}`;let n=this._vboBatchingLayers[o];if(n)return n;let a=e.textureSet;for(;!n;){switch(e.primitive){case"triangles":case"solid":case"surface":n=new xn({model:t,textureSet:a,layerIndex:0,scratchMemory:this._vboBatchingLayerScratchMemory,positionsDecodeMatrix:e.positionsDecodeMatrix,uvDecodeMatrix:e.uvDecodeMatrix,origin:i,maxGeometryBatchSize:this._maxGeometryBatchSize,solid:"solid"===e.primitive,autoNormals:!0});break;case"lines":n=new Ra({model:t,layerIndex:0,scratchMemory:this._vboBatchingLayerScratchMemory,positionsDecodeMatrix:e.positionsDecodeMatrix,uvDecodeMatrix:e.uvDecodeMatrix,origin:i,maxGeometryBatchSize:this._maxGeometryBatchSize});break;case"points":n=new Bl({model:t,layerIndex:0,scratchMemory:this._vboBatchingLayerScratchMemory,positionsDecodeMatrix:e.positionsDecodeMatrix,uvDecodeMatrix:e.uvDecodeMatrix,origin:i,maxGeometryBatchSize:this._maxGeometryBatchSize})}const s=e.positionsCompressed?e.positionsCompressed.length:e.positions.length;("points"===e.primitive?n.canCreatePortion(s):n.canCreatePortion(s,e.indices.length))||(n.finalize(),delete this._vboBatchingLayers[o],n=null)}return this._vboBatchingLayers[o]=n,this.layerList.push(n),n}_createHashStringFromMatrix(e){const t=e.join("");let i=0;for(let e=0;e<t.length;e++){i=(i<<5)-i+t.charCodeAt(e),i|=0}return(i>>>0).toString(16)}_getVBOInstancingLayer(e){const t=this,i=e.origin,s=e.textureSetId||"-",r=e.geometryId,o=`${Math.round(i[0])}.${Math.round(i[1])}.${Math.round(i[2])}.${s}.${r}`;let n=this._vboInstancingLayers[o];if(n)return n;let a=e.textureSet;const l=e.geometry;for(;!n;)switch(l.primitive){case"triangles":case"surface":n=new fa({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0,solid:!1});break;case"solid":n=new fa({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0,solid:!0});break;case"lines":n=new el({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0});break;case"points":n=new Kl({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0})}return this._vboInstancingLayers[o]=n,this.layerList.push(n),n}createEntity(e){if(void 0===e.id?e.id=d.createUUID():this.scene.components[e.id]&&(this.error(`Scene already has a Component with this ID: ${e.id} - will assign random ID`),e.id=d.createUUID()),void 0===e.meshIds)return void this.error("Config missing: meshIds");let t=0;this._visible&&!1!==e.visible&&(t|=q),this._pickable&&!1!==e.pickable&&(t|=ee),this._culled&&!1!==e.culled&&(t|=$),this._clippable&&!1!==e.clippable&&(t|=te),this._collidable&&!1!==e.collidable&&(t|=ie),this._edges&&!1!==e.edges&&(t|=ne),this._xrayed&&!1!==e.xrayed&&(t|=se),this._highlighted&&!1!==e.highlighted&&(t|=re),this._selected&&!1!==e.selected&&(t|=oe),e.flags=t,this._createEntity(e)}_createEntity(e){let t=[];for(let i=0,s=e.meshIds.length;i<s;i++){const s=e.meshIds[i];let r=this._meshes[s];r?r.parent?this.error(`Mesh with ID "${s}" already belongs to object with ID "${r.parent.id}" - ignoring this mesh`):(t.push(r),delete this._unusedMeshes[s]):this.error(`Mesh with this ID not found: "${s}" - ignoring this mesh`)}const i=new Ae(this,e.isObject,e.id,t,e.flags,!0);this._entityList.push(i),this._entities[e.id]=i,this.numEntities++}finalize(){if(!this.destroyed){this._createDummyEntityForUnusedMeshes();for(let e=0,t=this.layerList.length;e<t;e++){this.layerList[e].finalize()}this._geometries={},this._dtxBuckets={},this._textures={},this._textureSets={},this._dtxLayers={},this._vboInstancingLayers={},this._vboBatchingLayers={};for(let e=0,t=this._entityList.length;e<t;e++){this._entityList[e]._finalize()}for(let e=0,t=this._entityList.length;e<t;e++){this._entityList[e]._finalize2()}this.layerList.sort(((e,t)=>e.sortId<t.sortId?-1:e.sortId>t.sortId?1:0));for(let e=0,t=this.layerList.length;e<t;e++){this.layerList[e].layerIndex=e}this.glRedraw(),this.scene._aabbDirty=!0,this._viewMatrixDirty=!0,this._matrixDirty=!0,this._aabbDirty=!0,this._setWorldMatrixDirty(),this._sceneModelDirty(),this.position=this._position}}stateSortCompare(e,t){}rebuildRenderFlags(){this.renderFlags.reset(),this._updateRenderFlagsVisibleLayers(),this.renderFlags.numLayers>0&&0===this.renderFlags.numVisibleLayers?this.renderFlags.culled=!0:this._updateRenderFlags()}_updateRenderFlagsVisibleLayers(){const e=this.renderFlags;e.numLayers=this.layerList.length,e.numVisibleLayers=0;for(let t=0,i=this.layerList.length;t<i;t++){const i=this.layerList[t];this._getActiveSectionPlanesForLayer(i)&&(e.visibleLayers[e.numVisibleLayers++]=t)}}_createDummyEntityForUnusedMeshes(){const e=Object.keys(this._unusedMeshes);if(e.length>0){const t=`${this.id}-dummyEntityForUnusedMeshes`;this.warn(`Creating dummy SceneModelEntity "${t}" for unused SceneMeshes: [${e.join(",")}]`),this.createEntity({id:t,meshIds:e,isObject:!0})}this._unusedMeshes={}}_getActiveSectionPlanesForLayer(e){const t=this.renderFlags,i=this.scene._sectionPlanesState.sectionPlanes,s=i.length,r=e.layerIndex*s;if(s>0)for(let e=0;e<s;e++){i[e].active?(t.sectionPlanesActivePerLayer[r+e]=!0,t.sectioned=!0):t.sectionPlanesActivePerLayer[r+e]=!1}return!0}_updateRenderFlags(){if(0===this.numVisibleLayerPortions)return;if(this.numCulledLayerPortions===this.numPortions)return;const e=this.renderFlags;if(e.colorOpaque=this.numTransparentLayerPortions<this.numPortions,this.numTransparentLayerPortions>0&&(e.colorTransparent=!0),this.numXRayedLayerPortions>0){const t=this.scene.xrayMaterial._state;t.fill&&(t.fillAlpha<1?e.xrayedSilhouetteTransparent=!0:e.xrayedSilhouetteOpaque=!0),t.edges&&(t.edgeAlpha<1?e.xrayedEdgesTransparent=!0:e.xrayedEdgesOpaque=!0)}if(this.numEdgesLayerPortions>0){this.scene.edgeMaterial._state.edges&&(e.edgesOpaque=this.numTransparentLayerPortions<this.numPortions,this.numTransparentLayerPortions>0&&(e.edgesTransparent=!0))}if(this.numSelectedLayerPortions>0){const t=this.scene.selectedMaterial._state;t.fill&&(t.fillAlpha<1?e.selectedSilhouetteTransparent=!0:e.selectedSilhouetteOpaque=!0),t.edges&&(t.edgeAlpha<1?e.selectedEdgesTransparent=!0:e.selectedEdgesOpaque=!0)}if(this.numHighlightedLayerPortions>0){const t=this.scene.highlightMaterial._state;t.fill&&(t.fillAlpha<1?e.highlightedSilhouetteTransparent=!0:e.highlightedSilhouetteOpaque=!0),t.edges&&(t.edgeAlpha<1?e.highlightedEdgesTransparent=!0:e.highlightedEdgesOpaque=!0)}}drawColorOpaque(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawColorOpaque(t,e)}}drawColorTransparent(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawColorTransparent(t,e)}}drawDepth(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawDepth(t,e)}}drawNormals(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawNormals(t,e)}}drawSilhouetteXRayed(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawSilhouetteXRayed(t,e)}}drawSilhouetteHighlighted(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawSilhouetteHighlighted(t,e)}}drawSilhouetteSelected(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawSilhouetteSelected(t,e)}}drawEdgesColorOpaque(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawEdgesColorOpaque(t,e)}}drawEdgesColorTransparent(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawEdgesColorTransparent(t,e)}}drawEdgesXRayed(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawEdgesXRayed(t,e)}}drawEdgesHighlighted(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawEdgesHighlighted(t,e)}}drawEdgesSelected(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawEdgesSelected(t,e)}}drawOcclusion(e){if(0===this.numVisibleLayerPortions)return;const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawOcclusion(t,e)}}drawShadow(e){if(0===this.numVisibleLayerPortions)return;const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawShadow(t,e)}}setPickMatrices(e,t){if(0===this._numVisibleLayerPortions)return;const i=this.renderFlags;for(let s=0,r=i.visibleLayers.length;s<r;s++){const r=i.visibleLayers[s],o=this.layerList[r];o.setPickMatrices&&o.setPickMatrices(e,t)}}drawPickMesh(e){if(0===this.numVisibleLayerPortions)return;const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawPickMesh(t,e)}}drawPickDepths(e){if(0===this.numVisibleLayerPortions)return;const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawPickDepths(t,e)}}drawPickNormals(e){if(0===this.numVisibleLayerPortions)return;const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawPickNormals(t,e)}}drawSnapInit(e){if(0===this.numVisibleLayerPortions)return;const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i],r=this.layerList[s];r.drawSnapInit&&(e.snapPickOrigin=[0,0,0],e.snapPickCoordinateScale=[1,1,1],e.snapPickLayerNumber++,r.drawSnapInit(t,e),e.snapPickLayerParams[e.snapPickLayerNumber]={origin:e.snapPickOrigin.slice(),coordinateScale:e.snapPickCoordinateScale.slice()})}}drawSnap(e){if(0===this.numVisibleLayerPortions)return;const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i],r=this.layerList[s];r.drawSnap&&(e.snapPickOrigin=[0,0,0],e.snapPickCoordinateScale=[1,1,1],e.snapPickLayerNumber++,r.drawSnap(t,e),e.snapPickLayerParams[e.snapPickLayerNumber]={origin:e.snapPickOrigin.slice(),coordinateScale:e.snapPickCoordinateScale.slice()})}}destroy(){for(let e in this._vboBatchingLayers)this._vboBatchingLayers.hasOwnProperty(e)&&this._vboBatchingLayers[e].destroy();this._vboBatchingLayers={};for(let e in this._vboInstancingLayers)this._vboInstancingLayers.hasOwnProperty(e)&&this._vboInstancingLayers[e].destroy();this._vboInstancingLayers={},this.scene.camera.off(this._onCameraViewMatrix),this.scene.off(this._onTick);for(let e=0,t=this.layerList.length;e<t;e++)this.layerList[e].destroy();this.layerList=[];for(let e=0,t=this._entityList.length;e<t;e++)this._entityList[e]._destroy();this._geometries={},this._dtxBuckets={},this._textures={},this._textureSets={},this._meshes={},this._entities={},this.scene._aabbDirty=!0,this._isModel&&this.scene._deregisterModel(this),0!==go&&(go--,0===go&&fo._clear()),super.destroy()}}function yc(e,t,i){let s,r,o,n;if(t||i?[s,r,o]=qh({positionsCompressed:e.positionsCompressed,indices:e.indices,edgeIndices:e.edgeIndices}):(s=e.positionsCompressed,r=e.indices,o=e.edgeIndices),i){n=sc({positionsCompressed:s,indices:r,edgeIndices:o},s.length/3>65536?16:8)}else n=[{positionsCompressed:s,indices:r,edgeIndices:o}];return n}class Bc extends R{constructor(e,t={}){if(super(e,t),this._positions=t.positions||[],t.indices)this._indices=t.indices;else{this._indices=[];for(let e=0,t=this._positions.length/3-1;e<t;e+=2)this._indices.push(e),this._indices.push(e+1)}this._sceneModel=new bc(this,{isModel:!1}),this._sceneModel.createMesh({id:"linesMesh",primitive:"lines",positions:this._positions,indices:this._indices}),this._sceneModel.createEntity({meshIds:["linesMesh"],visible:t.visible,clippable:t.clippable,collidable:t.collidable}),this._sceneModel.finalize(),this.scene._lineSetCreated(this)}set visible(e){this._sceneModel.visible=e}get visible(){return this._sceneModel.visible}get positions(){return this._positions}get indices(){return this._indices}destroy(){super.destroy(),this.scene._lineSetDestroyed(this)}}const wc=d.vec3(),xc=d.vec3(),Pc=d.vec3(),Cc=d.vec3();class Mc extends z{constructor(e,t={}){super("BCFViewpoints",e,t),this.originatingSystem=t.originatingSystem||"xeokit.io",this.authoringTool=t.authoringTool||"xeokit.io"}getViewpoint(e={}){const t=this.viewer.scene,i=t.camera,s=t.realWorldOffset,r=!0===e.reverseClippingPlanes;let o={},n=d.normalizeVec3(d.subVec3(i.look,i.eye,d.vec3())),a=i.eye,l=i.up;i.yUp&&(n=Ic(n),a=Ic(a),l=Ic(l));const A=Fc(d.addVec3(a,s));"ortho"===i.projection?o.orthogonal_camera={camera_view_point:A,camera_direction:Fc(n),camera_up_vector:Fc(l),view_to_world_scale:i.ortho.scale}:o.perspective_camera={camera_view_point:A,camera_direction:Fc(n),camera_up_vector:Fc(l),field_of_view:i.perspective.fov};const h=t.sectionPlanes;for(let e in h)if(h.hasOwnProperty(e)){let t=h[e];if(!t.active)continue;let n,a=t.pos;n=r?d.negateVec3(t.dir,d.vec3()):t.dir,i.yUp&&(a=Ic(a),n=Ic(n)),d.addVec3(a,s),a=Fc(a),n=Fc(n),o.clipping_planes||(o.clipping_planes=[]),o.clipping_planes.push({location:a,direction:n})}const c=t.lineSets;for(let e in c)if(c.hasOwnProperty(e)){const t=c[e];o.lines||(o.lines=[]);const i=t.positions,s=t.indices;for(let e=0,t=s.length/2;e<t;e++){const t=s[2*e],r=s[2*e+1];o.lines.push({start_point:{x:i[3*t+0],y:i[3*t+1],z:i[3*t+2]},end_point:{x:i[3*r+0],y:i[3*r+1],z:i[3*r+2]}})}}const u=t.bitmaps;for(let e in u)if(u.hasOwnProperty(e)){let t=u[e],r=t.pos,n=t.normal,a=t.up;i.yUp&&(r=Ic(r),n=Ic(n),a=Ic(a)),d.addVec3(r,s),o.bitmaps||(o.bitmaps=[]),o.bitmaps.push({bitmap_type:t.type,bitmap_data:t.imageData,location:Fc(r),normal:Fc(n),up:Fc(a),height:t.height})}o.components={visibility:{view_setup_hints:{spaces_visible:!!e.spacesVisible,space_boundaries_visible:!!e.spaceBoundariesVisible,openings_visible:!!e.openingsVisible,spaces_translucent:!!e.spaces_translucent,space_boundaries_translucent:!!e.space_boundaries_translucent,openings_translucent:!!e.openings_translucent}}};const p=new Set(t.opacityObjectIds),f=new Set(t.xrayedObjectIds),g=new Set(t.colorizedObjectIds),m=Object.values(t.objects).filter((e=>p.has(e.id)||g.has(e.id)||f.has(e.id))).reduce(((e,i)=>{let s,r=function(e){let t="";return t+=Math.round(255*e[0]).toString(16).padStart(2,"0"),t+=Math.round(255*e[1]).toString(16).padStart(2,"0"),t+=Math.round(255*e[2]).toString(16).padStart(2,"0"),t}(i.colorize);i.xrayed?(s=0===t.xrayMaterial.fillAlpha&&0!==t.xrayMaterial.edgeAlpha?.1:t.xrayMaterial.fillAlpha,s=Math.round(255*s).toString(16).padStart(2,"0"),r=s+r):p.has(i.id)&&(s=Math.round(255*i.opacity).toString(16).padStart(2,"0"),r=s+r),e[r]||(e[r]=[]);const o=i.id,n=i.originalSystemId,a={ifc_guid:n,originating_system:this.originatingSystem};return n!==o&&(a.authoring_tool_id=o),e[r].push(a),e}),{}),_=Object.entries(m).map((([e,t])=>({color:e,components:t})));o.components.coloring=_;const v=t.objectIds,b=t.visibleObjects,y=t.visibleObjectIds,B=v.filter((e=>!b[e])),w=t.selectedObjectIds;return e.defaultInvisible||y.length<B.length?(o.components.visibility.exceptions=this._createBCFComponents(y),o.components.visibility.default_visibility=!1):(o.components.visibility.exceptions=this._createBCFComponents(B),o.components.visibility.default_visibility=!0),o.components.selection=this._createBCFComponents(w),o.components.translucency=this._createBCFComponents(t.xrayedObjectIds),!1!==e.snapshot&&(o.snapshot={snapshot_type:"png",snapshot_data:this.viewer.getSnapshot({format:"png"})}),o}_createBCFComponents(e){const t=this.viewer.scene,i=[];for(let s=0,r=e.length;s<r;s++){const r=e[s],o=t.objects[r];if(o){const e={ifc_guid:o.originalSystemId,originating_system:this.originatingSystem};o.originalSystemId!==r&&(e.authoring_tool_id=r),i.push(e)}}return i}setViewpoint(e,t={}){if(!e)return;const i=this.viewer,s=i.scene,r=s.camera,o=!1!==t.rayCast,n=!1!==t.immediate,a=!1!==t.reset,l=s.realWorldOffset,A=!0===t.reverseClippingPlanes;if(s.clearSectionPlanes(),e.clipping_planes&&e.clipping_planes.length>0&&e.clipping_planes.forEach((function(e){let t=Ec(e.location,wc),i=Ec(e.direction,wc);A&&d.negateVec3(i),d.subVec3(t,l),r.yUp&&(t=Dc(t),i=Dc(i)),new Br(s,{pos:t,dir:i})})),s.clearLines(),e.lines&&e.lines.length>0){const t=[],i=[];let r=0;e.lines.forEach((e=>{e.start_point&&e.end_point&&(t.push(e.start_point.x),t.push(e.start_point.y),t.push(e.start_point.z),t.push(e.end_point.x),t.push(e.end_point.y),t.push(e.end_point.z),i.push(r++),i.push(r++))})),new Bc(s,{positions:t,indices:i,clippable:!1,collidable:!0})}if(s.clearBitmaps(),e.bitmaps&&e.bitmaps.length>0&&e.bitmaps.forEach((function(e){const t=e.bitmap_type||"jpg",i=e.bitmap_data;let o=Ec(e.location,xc),n=Ec(e.normal,Pc),a=Ec(e.up,Cc),l=e.height||1;t&&i&&o&&n&&a&&(r.yUp&&(o=Dc(o),n=Dc(n),a=Dc(a)),new Ao(s,{src:i,type:t,pos:o,normal:n,up:a,clippable:!1,collidable:!0,height:l}))})),a&&(s.setObjectsXRayed(s.xrayedObjectIds,!1),s.setObjectsHighlighted(s.highlightedObjectIds,!1),s.setObjectsSelected(s.selectedObjectIds,!1)),e.components){if(e.components.visibility){e.components.visibility.default_visibility?(s.setObjectsVisible(s.objectIds,!0),e.components.visibility.exceptions&&e.components.visibility.exceptions.forEach((e=>this._withBCFComponent(t,e,(e=>e.visible=!1))))):(s.setObjectsVisible(s.objectIds,!1),e.components.visibility.exceptions&&e.components.visibility.exceptions.forEach((e=>this._withBCFComponent(t,e,(e=>e.visible=!0)))));const r=e.components.visibility.view_setup_hints;r&&(!1===r.spaces_visible&&s.setObjectsVisible(i.metaScene.getObjectIDsByType("IfcSpace"),!1),void 0!==r.spaces_translucent&&s.setObjectsXRayed(i.metaScene.getObjectIDsByType("IfcSpace"),!0),r.space_boundaries_visible,!1===r.openings_visible&&s.setObjectsVisible(i.metaScene.getObjectIDsByType("IfcOpening"),!0),r.space_boundaries_translucent,void 0!==r.openings_translucent&&s.setObjectsXRayed(i.metaScene.getObjectIDsByType("IfcOpening"),!0))}e.components.selection&&(s.setObjectsSelected(s.selectedObjectIds,!1),e.components.selection.forEach((e=>this._withBCFComponent(t,e,(e=>e.selected=!0))))),e.components.translucency&&(s.setObjectsXRayed(s.xrayedObjectIds,!1),e.components.translucency.forEach((e=>this._withBCFComponent(t,e,(e=>e.xrayed=!0))))),e.components.coloring&&e.components.coloring.forEach((e=>{let i=e.color,s=0,r=!1;8===i.length&&(s=parseInt(i.substring(0,2),16)/256,s<=1&&s>=.95&&(s=1),i=i.substring(2),r=!0);const o=[parseInt(i.substring(0,2),16)/256,parseInt(i.substring(2,4),16)/256,parseInt(i.substring(4,6),16)/256];e.components.map((e=>this._withBCFComponent(t,e,(e=>{e.colorize=o,r&&(e.opacity=s)}))))}))}if(e.perspective_camera||e.orthogonal_camera){let a,A,h,c;if(e.perspective_camera?(a=Ec(e.perspective_camera.camera_view_point,wc),A=Ec(e.perspective_camera.camera_direction,wc),h=Ec(e.perspective_camera.camera_up_vector,wc),r.perspective.fov=e.perspective_camera.field_of_view,c="perspective"):(a=Ec(e.orthogonal_camera.camera_view_point,wc),A=Ec(e.orthogonal_camera.camera_direction,wc),h=Ec(e.orthogonal_camera.camera_up_vector,wc),r.ortho.scale=e.orthogonal_camera.view_to_world_scale,c="ortho"),d.subVec3(a,l),r.yUp&&(a=Dc(a),A=Dc(A),h=Dc(h)),o){const e=s.pick({pickSurface:!0,origin:a,direction:A});A=e?e.worldPos:d.addVec3(a,A,wc)}else A=d.addVec3(a,A,wc);n?(r.eye=a,r.look=A,r.up=h,r.projection=c):i.cameraFlight.flyTo({eye:a,look:A,up:h,duration:t.duration,projection:c})}}_withBCFComponent(e,t,i){const s=this.viewer,r=s.scene;if(t.authoring_tool_id&&t.originating_system===this.originatingSystem){const o=t.authoring_tool_id,n=r.objects[o];if(n)return void i(n);if(e.updateCompositeObjects){if(s.metaScene.metaObjects[o])return void r.withObjects(s.metaScene.getObjectIDsInSubtree(o),i)}}if(t.ifc_guid){const o=t.ifc_guid,n=r.objects[o];if(n)return void i(n);if(e.updateCompositeObjects){if(s.metaScene.metaObjects[o])return void r.withObjects(s.metaScene.getObjectIDsInSubtree(o),i)}Object.keys(r.models).forEach((t=>{const n=d.globalizeObjectId(t,o),a=r.objects[n];if(a)i(a);else if(e.updateCompositeObjects){s.metaScene.metaObjects[n]&&r.withObjects(s.metaScene.getObjectIDsInSubtree(n),i)}}))}}destroy(){super.destroy()}}function Fc(e){return{x:e[0],y:e[1],z:e[2]}}function Ec(e,t){return(t=new Float64Array(3))[0]=e.x,t[1]=e.y,t[2]=e.z,t}function Ic(e){return new Float64Array([e[0],-e[2],e[1]])}function Dc(e){return new Float64Array([e[0],e[2],-e[1]])}const Sc=d.vec3(),Tc=(e,t,i,s)=>{var r=e-i,o=t-s;return Math.sqrt(r*r+o*o)};class Rc extends R{constructor(e,t={}){if(super(e.viewer.scene,t),this.plugin=e,this._container=t.container,!this._container)throw"config missing: container";this._eventSubs={};var i=this.plugin.viewer.scene;this._originMarker=new ue(i,t.origin),this._targetMarker=new ue(i,t.target),this._originWorld=d.vec3(),this._targetWorld=d.vec3(),this._wp=new Float64Array(24),this._vp=new Float64Array(24),this._pp=new Float64Array(24),this._cp=new Float64Array(8),this._xAxisLabelCulled=!1,this._yAxisLabelCulled=!1,this._zAxisLabelCulled=!1,this._color=t.color||this.plugin.defaultColor;const s=t.onMouseOver?e=>{t.onMouseOver(e,this),this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mouseover",e))}:null,r=t.onMouseLeave?e=>{t.onMouseLeave(e,this),this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mouseleave",e))}:null,o=e=>{this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mousedown",e))},n=e=>{this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mouseup",e))},a=e=>{this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mousemove",e))},l=t.onContextMenu?e=>{t.onContextMenu(e,this)}:null,A=e=>{this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new WheelEvent("wheel",e))};this._originDot=new fe(this._container,{fillColor:this._color,zIndex:void 0!==e.zIndex?e.zIndex+2:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._targetDot=new fe(this._container,{fillColor:this._color,zIndex:void 0!==e.zIndex?e.zIndex+2:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._lengthWire=new pe(this._container,{color:this._color,thickness:2,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._xAxisWire=new pe(this._container,{color:"#FF0000",thickness:1,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._yAxisWire=new pe(this._container,{color:"green",thickness:1,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._zAxisWire=new pe(this._container,{color:"blue",thickness:1,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._lengthLabel=new ge(this._container,{fillColor:this._color,prefix:"",text:"",zIndex:void 0!==e.zIndex?e.zIndex+4:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._xAxisLabel=new ge(this._container,{fillColor:"red",prefix:"X",text:"",zIndex:void 0!==e.zIndex?e.zIndex+3:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._yAxisLabel=new ge(this._container,{fillColor:"green",prefix:"Y",text:"",zIndex:void 0!==e.zIndex?e.zIndex+3:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._zAxisLabel=new ge(this._container,{fillColor:"blue",prefix:"Z",text:"",zIndex:void 0!==e.zIndex?e.zIndex+3:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._measurementOrientation="Horizontal",this._wpDirty=!1,this._vpDirty=!1,this._cpDirty=!1,this._sectionPlanesDirty=!0,this._visible=!1,this._originVisible=!1,this._targetVisible=!1,this._wireVisible=!1,this._axisVisible=!1,this._xAxisVisible=!1,this._yAxisVisible=!1,this._zAxisVisible=!1,this._axisEnabled=!0,this._xLabelEnabled=!1,this._yLabelEnabled=!1,this._zLabelEnabled=!1,this._lengthLabelEnabled=!1,this._labelsVisible=!1,this._labelsOnWires=!1,this._clickable=!1,this._originMarker.on("worldPos",(e=>{this._originWorld.set(e||[0,0,0]),this._wpDirty=!0,this._needUpdate(0)})),this._targetMarker.on("worldPos",(e=>{this._targetWorld.set(e||[0,0,0]),this._wpDirty=!0,this._needUpdate(0)})),this._onViewMatrix=i.camera.on("viewMatrix",(()=>{this._vpDirty=!0,this._needUpdate(0)})),this._onProjMatrix=i.camera.on("projMatrix",(()=>{this._cpDirty=!0,this._needUpdate()})),this._onCanvasBoundary=i.canvas.on("boundary",(()=>{this._cpDirty=!0,this._needUpdate(0)})),this._onMetricsUnits=i.metrics.on("units",(()=>{this._cpDirty=!0,this._needUpdate()})),this._onMetricsScale=i.metrics.on("scale",(()=>{this._cpDirty=!0,this._needUpdate()})),this._onMetricsOrigin=i.metrics.on("origin",(()=>{this._cpDirty=!0,this._needUpdate()})),this._onSectionPlaneUpdated=i.on("sectionPlaneUpdated",(()=>{this._sectionPlanesDirty=!0,this._needUpdate()})),this.approximate=t.approximate,this.visible=t.visible,this.originVisible=t.originVisible,this.targetVisible=t.targetVisible,this.wireVisible=t.wireVisible,this.axisVisible=t.axisVisible,this.xAxisVisible=t.xAxisVisible,this.yAxisVisible=t.yAxisVisible,this.zAxisVisible=t.zAxisVisible,this.xLabelEnabled=t.xLabelEnabled,this.yLabelEnabled=t.yLabelEnabled,this.zLabelEnabled=t.zLabelEnabled,this.lengthLabelEnabled=t.lengthLabelEnabled,this.labelsVisible=t.labelsVisible,this.labelsOnWires=t.labelsOnWires}_update(){if(!this._visible)return;const e=this.plugin.viewer.scene;if(this._wpDirty&&(this._measurementOrientation=function(e,t,i){return Math.abs(t[1]-e[1])>i?"Vertical":"Horizontal"}(this._originWorld,this._targetWorld,1),"Vertical"===this._measurementOrientation?(this._wp[0]=this._originWorld[0],this._wp[1]=this._originWorld[1],this._wp[2]=this._originWorld[2],this._wp[3]=1,this._wp[4]=this._originWorld[0],this._wp[5]=this._originWorld[1],this._wp[6]=this._originWorld[2],this._wp[7]=1,this._wp[8]=this._originWorld[0],this._wp[9]=this._targetWorld[1],this._wp[10]=this._originWorld[2],this._wp[11]=1,this._wp[12]=this._targetWorld[0],this._wp[13]=this._targetWorld[1],this._wp[14]=this._targetWorld[2],this._wp[15]=1):(this._wp[0]=this._originWorld[0],this._wp[1]=this._originWorld[1],this._wp[2]=this._originWorld[2],this._wp[3]=1,this._wp[4]=this._targetWorld[0],this._wp[5]=this._originWorld[1],this._wp[6]=this._originWorld[2],this._wp[7]=1,this._wp[8]=this._targetWorld[0],this._wp[9]=this._targetWorld[1],this._wp[10]=this._originWorld[2],this._wp[11]=1,this._wp[12]=this._targetWorld[0],this._wp[13]=this._targetWorld[1],this._wp[14]=this._targetWorld[2],this._wp[15]=1),this._wpDirty=!1,this._vpDirty=!0),this._vpDirty&&(d.transformPositions4(e.camera.viewMatrix,this._wp,this._vp),this._vp[3]=1,this._vp[7]=1,this._vp[11]=1,this._vp[15]=1,this._vpDirty=!1,this._cpDirty=!0),this._sectionPlanesDirty){if(this._isSliced(this._originWorld)||this._isSliced(this._targetWorld))return this._xAxisLabel.setCulled(!0),this._yAxisLabel.setCulled(!0),this._zAxisLabel.setCulled(!0),this._lengthLabel.setCulled(!0),this._xAxisWire.setCulled(!0),this._yAxisWire.setCulled(!0),this._zAxisWire.setCulled(!0),this._lengthWire.setCulled(!0),this._originDot.setCulled(!0),void this._targetDot.setCulled(!0);this._xAxisLabel.setCulled(!1),this._yAxisLabel.setCulled(!1),this._zAxisLabel.setCulled(!1),this._lengthLabel.setCulled(!1),this._xAxisWire.setCulled(!1),this._yAxisWire.setCulled(!1),this._zAxisWire.setCulled(!1),this._lengthWire.setCulled(!1),this._originDot.setCulled(!1),this._targetDot.setCulled(!1),this._sectionPlanesDirty=!0}const t=this._originMarker.viewPos[2],i=this._targetMarker.viewPos[2];if(t>-.3||i>-.3)return this._xAxisLabel.setCulled(!0),this._yAxisLabel.setCulled(!0),this._zAxisLabel.setCulled(!0),this._lengthLabel.setCulled(!0),this._xAxisWire.setVisible(!1),this._yAxisWire.setVisible(!1),this._zAxisWire.setVisible(!1),this._lengthWire.setVisible(!1),this._originDot.setVisible(!1),void this._targetDot.setVisible(!1);if(this._cpDirty){d.transformPositions4(e.camera.project.matrix,this._vp,this._pp);var s=this._pp,r=this._cp,o=e.canvas.canvas.getBoundingClientRect();const t=this._container.getBoundingClientRect();var n=o.top-t.top,a=o.left-t.left,l=e.canvas.boundary,A=l[2],h=l[3],c=0;const i=this.plugin.viewer.scene.metrics,f=i.scale,g=i.units,m=i.unitsInfo[g].abbrev;for(var u=0,p=s.length;u<p;u+=4)r[c]=a+Math.floor((1+s[u+0]/s[u+3])*A/2),r[c+1]=n+Math.floor((1-s[u+1]/s[u+3])*h/2),c+=2;if(this._originDot.setPos(r[0],r[1]),this._targetDot.setPos(r[6],r[7]),this._lengthWire.setStartAndEnd(r[0],r[1],r[6],r[7]),this._xAxisWire.setStartAndEnd(r[0],r[1],r[2],r[3]),this._yAxisWire.setStartAndEnd(r[2],r[3],r[4],r[5]),this._zAxisWire.setStartAndEnd(r[4],r[5],r[6],r[7]),this.labelsVisible){if(this._lengthLabel.setPosOnWire(r[0],r[1],r[6],r[7]),this.labelsOnWires)this._xAxisLabel.setPosOnWire(r[0],r[1],r[2],r[3]),this._yAxisLabel.setPosOnWire(r[2],r[3],r[4],r[5]),this._zAxisLabel.setPosOnWire(r[4],r[5],r[6],r[7]);else{const e=35;let t=e;this._xAxisLabel.setPosOnWire(r[0],r[1]+t,r[6],r[7]+t),t+=e,this._yAxisLabel.setPosOnWire(r[0],r[1]+t,r[6],r[7]+t),t+=e,this._zAxisLabel.setPosOnWire(r[0],r[1]+t,r[6],r[7]+t)}const e=this._approximate?" ~ ":" = ";this._length=Math.abs(d.lenVec3(d.subVec3(this._targetWorld,this._originWorld,Sc))),this._lengthLabel.setText(e+(this._length*f).toFixed(2)+m);const t=Math.abs(Tc(r[0],r[1],r[2],r[3])),i=Math.abs(Tc(r[2],r[3],r[4],r[5])),s=Math.abs(Tc(r[4],r[5],r[6],r[7])),o=this.plugin.labelMinAxisLength;this.labelsOnWires?(this._xAxisLabelCulled=t<o,this._yAxisLabelCulled=i<o,this._zAxisLabelCulled=s<o):(this._xAxisLabelCulled=!1,this._yAxisLabelCulled=!1,this._zAxisLabelCulled=!1),this._xAxisLabelCulled?this._xAxisLabel.setCulled(!0):(this._xAxisLabel.setText(e+Math.abs((this._targetWorld[0]-this._originWorld[0])*f).toFixed(2)+m),this._xAxisLabel.setCulled(!this.axisVisible)),this._yAxisLabelCulled?this._yAxisLabel.setCulled(!0):(this._yAxisLabel.setText(e+Math.abs((this._targetWorld[1]-this._originWorld[1])*f).toFixed(2)+m),this._yAxisLabel.setCulled(!this.axisVisible)),this._zAxisLabelCulled?this._zAxisLabel.setCulled(!0):("Vertical"===this._measurementOrientation?(this._zAxisLabel.setPrefix(""),this._zAxisLabel.setText(e+Math.abs(d.lenVec3(d.subVec3(this._targetWorld,[this._originWorld[0],this._targetWorld[1],this._originWorld[2]],Sc))*f).toFixed(2)+m)):(this._zAxisLabel.setPrefix("Z"),this._zAxisLabel.setText(e+Math.abs((this._targetWorld[2]-this._originWorld[2])*f).toFixed(2)+m)),this._zAxisLabel.setCulled(!this.axisVisible))}else this._lengthLabel.setCulled(!0),this._xAxisLabel.setCulled(!0),this._yAxisLabel.setCulled(!0),this._zAxisLabel.setCulled(!0);this._originDot.setVisible(this._visible&&this._originVisible),this._targetDot.setVisible(this._visible&&this._targetVisible),this._xAxisWire.setVisible(this.axisVisible&&this.xAxisVisible),this._yAxisWire.setVisible(this.axisVisible&&this.yAxisVisible),this._zAxisWire.setVisible(this.axisVisible&&this.zAxisVisible),this._lengthWire.setVisible(this.wireVisible),this._lengthLabel.setCulled(!this.wireVisible),this._cpDirty=!1}}_isSliced(e){const t=this.scene._sectionPlanesState.sectionPlanes;for(let i=0,s=t.length;i<s;i++){const s=t[i];if(d.planeClipsPositions3(s.pos,s.dir,e,4))return!0}return!1}set approximate(e){e=!1!==e,this._approximate!==e&&(this._approximate=e,this._cpDirty=!0,this._needUpdate(0))}get approximate(){return this._approximate}get origin(){return this._originMarker}get target(){return this._targetMarker}get length(){this._update();const e=this.plugin.viewer.scene.metrics.scale;return this._length*e}get color(){return this._color}set color(e){this._color=e,this._originDot.setFillColor(e),this._targetDot.setFillColor(e),this._lengthWire.setColor(e),this._lengthLabel.setFillColor(e)}set visible(e){e=void 0!==e?Boolean(e):this.plugin.defaultVisible,this._visible=e,this._originDot.setVisible(this._visible&&this._originVisible),this._targetDot.setVisible(this._visible&&this._targetVisible),this._lengthWire.setVisible(this._visible&&this._wireVisible),this._lengthLabel.setVisible(this._visible&&this._wireVisible&&this._lengthLabelEnabled);const t=this._visible&&this._axisVisible&&this._xAxisVisible,i=this._visible&&this._axisVisible&&this._yAxisVisible,s=this._visible&&this._axisVisible&&this._zAxisVisible;this._xAxisWire.setVisible(t),this._yAxisWire.setVisible(i),this._zAxisWire.setVisible(s),this._xAxisLabel.setVisible(t&&!this._xAxisLabelCulled&&this._EnabledVisible),this._yAxisLabel.setVisible(i&&!this._yAxisLabelCulled&&this._yLabelEnabled),this._zAxisLabel.setVisible(s&&!this._zAxisLabelCulled&&this._zLabelEnabled),this._cpDirty=!0,this._needUpdate()}get visible(){return this._visible}set originVisible(e){e=void 0!==e?Boolean(e):this.plugin.defaultOriginVisible,this._originVisible=e,this._originDot.setVisible(this._visible&&this._originVisible)}get originVisible(){return this._originVisible}set targetVisible(e){e=void 0!==e?Boolean(e):this.plugin.defaultTargetVisible,this._targetVisible=e,this._targetDot.setVisible(this._visible&&this._targetVisible)}get targetVisible(){return this._targetVisible}set axisEnabled(e){e=void 0!==e?Boolean(e):this.plugin.defaultAxisVisible,this._axisEnabled=e;var t=this._visible&&this._axisVisible&&this._axisEnabled;this._xAxisWire.setVisible(t&&this._xAxisVisible),this._yAxisWire.setVisible(t&&this._yAxisVisible),this._zAxisWire.setVisible(t&&this._zAxisVisible),this._xAxisLabel.setVisible(t&&!this._xAxisLabelCulled&&this._xAxisVisible&&this._xLabelEnabled),this._yAxisLabel.setVisible(t&&!this._yAxisLabelCulled&&this._xAxisVisible&&this._yLabelEnabled),this._zAxisLabel.setVisible(t&&!this._zAxisLabelCulled&&this._xAxisVisible&&this._zLabelEnabled),this._cpDirty=!0,this._needUpdate()}get axisEnabled(){return this._axisEnabled}set axisVisible(e){e=void 0!==e?Boolean(e):this.plugin.defaultAxisVisible,this._axisVisible=e;var t=this._visible&&this._axisVisible&&this._axisEnabled;this._xAxisWire.setVisible(t&&this._xAxisVisible),this._yAxisWire.setVisible(t&&this._yAxisVisible),this._zAxisWire.setVisible(t&&this._zAxisVisible),this._xAxisLabel.setVisible(t&&!this._xAxisLabelCulled&&this._xAxisVisible),this._yAxisLabel.setVisible(t&&!this._yAxisLabelCulled&&this._yAxisVisible),this._zAxisLabel.setVisible(t&&!this._zAxisLabelCulled&&this._zAxisVisible),this._cpDirty=!0,this._needUpdate()}get axisVisible(){return this._axisVisible}set xAxisVisible(e){e=void 0!==e?Boolean(e):this.plugin.defaultAxisVisible,this._xAxisVisible=e;const t=this._visible&&this._axisVisible&&this._xAxisVisible&&this._axisEnabled;this._xAxisWire.setVisible(t),this._xAxisLabel.setVisible(t&&!this._xAxisLabelCulled&&this._xLabelEnabled),this._cpDirty=!0,this._needUpdate()}get xAxisVisible(){return this._xAxisVisible}set yAxisVisible(e){e=void 0!==e?Boolean(e):this.plugin.defaultAxisVisible,this._yAxisVisible=e;const t=this._visible&&this._axisVisible&&this._yAxisVisible&&this._axisEnabled;this._yAxisWire.setVisible(t),this._yAxisLabel.setVisible(t&&!this._yAxisLabelCulled&&this._yLabelEnabled),this._cpDirty=!0,this._needUpdate()}get yAxisVisible(){return this._yAxisVisible}set zAxisVisible(e){e=void 0!==e?Boolean(e):this.plugin.defaultAxisVisible,this._zAxisVisible=e;const t=this._visible&&this._axisVisible&&this._zAxisVisible&&this._axisEnabled;this._zAxisWire.setVisible(t),this._zAxisLabel.setVisible(t&&!this._zAxisLabelCulled&&this._zLabelEnabled),this._cpDirty=!0,this._needUpdate()}get zAxisVisible(){return this._zAxisVisible}set wireVisible(e){e=void 0!==e?Boolean(e):this.plugin.defaultWireVisible,this._wireVisible=e;var t=this._visible&&this._wireVisible;this._lengthLabel.setVisible(t&&this._lengthLabelEnabled),this._lengthWire.setVisible(t)}get wireVisible(){return this._wireVisible}set labelsVisible(e){e=void 0!==e?Boolean(e):this.plugin.defaultLabelsVisible,this._labelsVisible=e;var t=this._visible&&this._labelsVisible;this._xAxisLabel.setVisible(t&&!this._xAxisLabelCulled&&this._clickable&&this._axisEnabled&&this._xLabelEnabled),this._yAxisLabel.setVisible(t&&!this._yAxisLabelCulled&&this._clickable&&this._axisEnabled&&this._yLabelEnabled),this._zAxisLabel.setVisible(t&&!this._zAxisLabelCulled&&this._clickable&&this._axisEnabled&&this._zLabelEnabled),this._lengthLabel.setVisible(t&&this._lengthLabelEnabled),this._cpDirty=!0,this._needUpdate()}get labelsVisible(){return this._labelsVisible}set xLabelEnabled(e){e=void 0!==e?Boolean(e):this.plugin.defaultXLabelEnabled,this._xLabelEnabled=e;var t=this._visible&&this._labelsVisible;this._xAxisLabel.setVisible(t&&!this._xAxisLabelCulled&&this._clickable&&this._axisEnabled&&this._xLabelEnabled),this._cpDirty=!0,this._needUpdate()}get xLabelEnabled(){return this._xLabelEnabled}set yLabelEnabled(e){e=void 0!==e?Boolean(e):this.plugin.defaultYLabelEnabled,this._yLabelEnabled=e;var t=this._visible&&this._labelsVisible;this._yAxisLabel.setVisible(t&&!this._yAxisLabelCulled&&this._clickable&&this._axisEnabled&&this._yLabelEnabled),this._cpDirty=!0,this._needUpdate()}get yLabelEnabled(){return this._yLabelEnabled}set zLabelEnabled(e){e=void 0!==e?Boolean(e):this.plugin.defaultZLabelEnabled,this._zLabelEnabled=e;var t=this._visible&&this._labelsVisible;this._zAxisLabel.setVisible(t&&!this._zAxisLabelCulled&&this._clickable&&this._axisEnabled&&this._zLabelEnabled),this._cpDirty=!0,this._needUpdate()}get zLabelEnabled(){return this._zLabelEnabled}set lengthLabelEnabled(e){e=void 0!==e?Boolean(e):this.plugin.defaultLengthLabelEnabled,this._lengthLabelEnabled=e;var t=this._visible&&this._labelsVisible;this._lengthLabel.setVisible(t&&!this._lengthAxisLabelCulled&&this._clickable&&this._axisEnabled&&this._lengthLabelEnabled),this._cpDirty=!0,this._needUpdate()}get lengthLabelEnabled(){return this._lengthLabelEnabled}set labelsOnWires(e){e=void 0!==e?Boolean(e):this.plugin.defaultLabelsOnWires,this._labelsOnWires=e}get labelsOnWires(){return this._labelsOnWires}setHighlighted(e){this._originDot.setHighlighted(e),this._targetDot.setHighlighted(e),this._xAxisWire.setHighlighted(e),this._yAxisWire.setHighlighted(e),this._zAxisWire.setHighlighted(e),this._xAxisLabel.setHighlighted(e),this._yAxisLabel.setHighlighted(e),this._zAxisLabel.setHighlighted(e),this._lengthWire.setHighlighted(e),this._lengthLabel.setHighlighted(e)}set clickable(e){e=!!e,this._clickable=e,this._originDot.setClickable(this._clickable),this._targetDot.setClickable(this._clickable),this._xAxisWire.setClickable(this._clickable),this._yAxisWire.setClickable(this._clickable),this._zAxisWire.setClickable(this._clickable),this._lengthWire.setClickable(this._clickable),this._xAxisLabel.setClickable(this._clickable),this._yAxisLabel.setClickable(this._clickable),this._zAxisLabel.setClickable(this._clickable),this._lengthLabel.setClickable(this._clickable)}get clickable(){return this._clickable}destroy(){const e=this.plugin.viewer.scene,t=e.metrics;this._onViewMatrix&&e.camera.off(this._onViewMatrix),this._onProjMatrix&&e.camera.off(this._onProjMatrix),this._onCanvasBoundary&&e.canvas.off(this._onCanvasBoundary),this._onMetricsUnits&&t.off(this._onMetricsUnits),this._onMetricsScale&&t.off(this._onMetricsScale),this._onMetricsOrigin&&t.off(this._onMetricsOrigin),this._onSectionPlaneUpdated&&e.off(this._onSectionPlaneUpdated),this._originDot.destroy(),this._targetDot.destroy(),this._xAxisWire.destroy(),this._yAxisWire.destroy(),this._zAxisWire.destroy(),this._lengthLabel.destroy(),this._xAxisLabel.destroy(),this._yAxisLabel.destroy(),this._zAxisLabel.destroy(),this._lengthWire.destroy(),super.destroy()}}class Lc extends R{get active(){}set snapping(e){}get snapping(){return!0}activate(){}deactivate(){}reset(){}get currentMeasurement(){return null}destroy(){}}class Uc extends Lc{constructor(e,t={}){super(e.viewer.scene),this._canvasToPagePos=t.canvasToPagePos,this.pointerLens=t.pointerLens,this._active=!1,this._currentDistanceMeasurement=null,this._currentDistanceMeasurementInitState={wireVisible:null,axisVisible:null,xAxisVisible:null,yaxisVisible:null,zAxisVisible:null,targetVisible:null},this._initMarkerDiv(),this._onCameraControlHoverSnapOrSurface=null,this._onCameraControlHoverSnapOrSurfaceOff=null,this._onMouseDown=null,this._onMouseUp=null,this._onCanvasTouchStart=null,this._onCanvasTouchEnd=null,this._snapping=!1!==t.snapping,this._mouseState=0,this._attachPlugin(e,t)}_initMarkerDiv(){const e=document.createElement("div");e.setAttribute("id","myMarkerDiv");const t=this.scene.canvas.canvas;t.parentNode.insertBefore(e,t),e.style.background="black",e.style.border="2px solid blue",e.style.borderRadius="10px",e.style.width="5px",e.style.height="5px",e.style.top="-200px",e.style.left="-200px",e.style.margin="0 0",e.style.zIndex="100",e.style.position="absolute",e.style.pointerEvents="none",this._markerDiv=e}_destroyMarkerDiv(){if(this._markerDiv){const e=document.getElementById("myMarkerDiv");e.parentNode.removeChild(e),this._markerDiv=null}}_attachPlugin(e,t={}){this.distanceMeasurementsPlugin=e,this.plugin=e}get active(){return this._active}set snapping(e){e!==this._snapping?(this._snapping=e,this.deactivate(),this.activate()):this._snapping=e}get snapping(){return this._snapping}activate(){if(this._active)return;this._markerDiv||this._initMarkerDiv(),this.fire("activated",!0);const e=this.distanceMeasurementsPlugin,t=this.scene,i=e.viewer.cameraControl,s=t.canvas.canvas;t.input;let r=!1;const o=d.vec3(),n=d.vec2();let a,l;let A=null;this._mouseState=0;const h=e=>e.offsetTop+(e.offsetParent&&e.offsetParent!==s.parentNode&&h(e.offsetParent)),c=e=>e.offsetLeft+(e.offsetParent&&e.offsetParent!==s.parentNode&&c(e.offsetParent)),u=d.vec2();this._onCameraControlHoverSnapOrSurface=i.on(this._snapping?"hoverSnapOrSurface":"hoverSurface",(e=>{const t=e.snappedCanvasPos||e.canvasPos;r=!0,o.set(e.worldPos),n.set(e.canvasPos),0===this._mouseState?(this._canvasToPagePos?(this._canvasToPagePos(s,t,u),this._markerDiv.style.left=u[0]-5+"px",this._markerDiv.style.top=u[1]-5+"px"):(this._markerDiv.style.left=c(s)+t[0]-5+"px",this._markerDiv.style.top=h(s)+t[1]-5+"px"),this._markerDiv.style.background="pink",e.snappedToVertex||e.snappedToEdge?(this.pointerLens&&(this.pointerLens.visible=!0,this.pointerLens.canvasPos=e.canvasPos,this.pointerLens.snappedCanvasPos=e.snappedCanvasPos||e.canvasPos,this.pointerLens.snapped=!0),this._markerDiv.style.background="greenyellow",this._markerDiv.style.border="2px solid green"):(this.pointerLens&&(this.pointerLens.visible=!0,this.pointerLens.canvasPos=e.canvasPos,this.pointerLens.snappedCanvasPos=e.canvasPos,this.pointerLens.snapped=!1),this._markerDiv.style.background="pink",this._markerDiv.style.border="2px solid red"),A=e.entity):(this._markerDiv.style.left="-10000px",this._markerDiv.style.top="-10000px"),s.style.cursor="pointer",this._currentDistanceMeasurement&&(this._currentDistanceMeasurement.wireVisible=this._currentDistanceMeasurementInitState.wireVisible,this._currentDistanceMeasurement.axisVisible=this._currentDistanceMeasurementInitState.axisVisible&&this.distanceMeasurementsPlugin.defaultAxisVisible,this._currentDistanceMeasurement.xAxisVisible=this._currentDistanceMeasurementInitState.xAxisVisible&&this.distanceMeasurementsPlugin.defaultXAxisVisible,this._currentDistanceMeasurement.yAxisVisible=this._currentDistanceMeasurementInitState.yAxisVisible&&this.distanceMeasurementsPlugin.defaultYAxisVisible,this._currentDistanceMeasurement.zAxisVisible=this._currentDistanceMeasurementInitState.zAxisVisible&&this.distanceMeasurementsPlugin.defaultZAxisVisible,this._currentDistanceMeasurement.targetVisible=this._currentDistanceMeasurementInitState.targetVisible,this._currentDistanceMeasurement.target.worldPos=o.slice(),this._markerDiv.style.left="-10000px",this._markerDiv.style.top="-10000px")})),s.addEventListener("mousedown",this._onMouseDown=e=>{1===e.which&&(a=e.clientX,l=e.clientY)}),s.addEventListener("mouseup",this._onMouseUp=t=>{1===t.which&&(t.clientX>a+20||t.clientX<a-20||t.clientY>l+20||t.clientY<l-20||(this._currentDistanceMeasurement?r?(this._currentDistanceMeasurement.target.entity=A,A=null,this._currentDistanceMeasurement.clickable=!0,this.distanceMeasurementsPlugin.fire("measurementEnd",this._currentDistanceMeasurement),this._currentDistanceMeasurement=null):(this._currentDistanceMeasurement.destroy(),this.distanceMeasurementsPlugin.fire("measurementCancel",this._currentDistanceMeasurement),this._currentDistanceMeasurement=null,A=null):r&&(this._currentDistanceMeasurement=e.createMeasurement({id:d.createUUID(),origin:{worldPos:o.slice(),entity:A},target:{worldPos:o.slice(),entity:A},approximate:!0}),this._currentDistanceMeasurementInitState.axisVisible=this._currentDistanceMeasurement.axisVisible&&this.distanceMeasurementsPlugin.defaultAxisVisible,this._currentDistanceMeasurementInitState.xAxisVisible=this._currentDistanceMeasurement.xAxisVisible&&this.distanceMeasurementsPlugin.defaultXAxisVisible,this._currentDistanceMeasurementInitState.yAxisVisible=this._currentDistanceMeasurement.yAxisVisible&&this.distanceMeasurementsPlugin.defaultYAxisVisible,this._currentDistanceMeasurementInitState.zAxisVisible=this._currentDistanceMeasurement.zAxisVisible&&this.distanceMeasurementsPlugin.defaultZAxisVisible,this._currentDistanceMeasurementInitState.wireVisible=this._currentDistanceMeasurement.wireVisible,this._currentDistanceMeasurementInitState.targetVisible=this._currentDistanceMeasurement.targetVisible,this._currentDistanceMeasurement.clickable=!1,this._currentDistanceMeasurement.origin.entity=A,A=null,this.distanceMeasurementsPlugin.fire("measurementStart",this._currentDistanceMeasurement))))}),this._onCameraControlHoverSnapOrSurfaceOff=i.on(this._snapping?"hoverSnapOrSurfaceOff":"hoverOff",(e=>{this.pointerLens&&(this.pointerLens.visible=!0,this.pointerLens.canvasPos=e.canvasPos,this.pointerLens.snappedCanvasPos=e.snappedCanvasPos||e.canvasPos),r=!1,this._markerDiv.style.left="-100px",this._markerDiv.style.top="-100px",this._currentDistanceMeasurement&&(this._currentDistanceMeasurement.wireVisible=!1,this._currentDistanceMeasurement.targetVisible=!1,this._currentDistanceMeasurement.axisVisible=!1),s.style.cursor="default"})),this._active=!0}deactivate(){if(!this._active)return;this.fire("activated",!1),this.pointerLens&&(this.pointerLens.visible=!1),this._markerDiv&&this._destroyMarkerDiv(),this.reset();const e=this.scene.canvas.canvas;e.removeEventListener("mousedown",this._onMouseDown),e.removeEventListener("mouseup",this._onMouseUp);const t=this.distanceMeasurementsPlugin.viewer.cameraControl;t.off(this._onCameraControlHoverSnapOrSurface),t.off(this._onCameraControlHoverSnapOrSurfaceOff),this._currentDistanceMeasurement&&(this.distanceMeasurementsPlugin.fire("measurementCancel",this._currentDistanceMeasurement),this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),this._active=!1}reset(){this._active&&(this._destroyMarkerDiv(),this._initMarkerDiv(),this._currentDistanceMeasurement&&(this.distanceMeasurementsPlugin.fire("measurementCancel",this._currentDistanceMeasurement),this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),this._mouseState=0)}get currentMeasurement(){return this._currentDistanceMeasurement}destroy(){this.deactivate(),super.destroy()}}class kc extends z{constructor(e,t={}){super("DistanceMeasurements",e),this._pointerLens=t.pointerLens,this._container=t.container||document.body,this._defaultControl=null,this._measurements={},this.labelMinAxisLength=t.labelMinAxisLength,this.defaultVisible=!1!==t.defaultVisible,this.defaultOriginVisible=!1!==t.defaultOriginVisible,this.defaultTargetVisible=!1!==t.defaultTargetVisible,this.defaultWireVisible=!1!==t.defaultWireVisible,this.defaultXLabelEnabled=!1!==t.defaultXLabelEnabled,this.defaultYLabelEnabled=!1!==t.defaultYLabelEnabled,this.defaultZLabelEnabled=!1!==t.defaultZLabelEnabled,this.defaultLengthLabelEnabled=!1!==t.defaultLengthLabelEnabled,this.defaultLabelsVisible=!1!==t.defaultLabelsVisible,this.defaultAxisVisible=!1!==t.defaultAxisVisible,this.defaultXAxisVisible=!1!==t.defaultXAxisVisible,this.defaultYAxisVisible=!1!==t.defaultYAxisVisible,this.defaultZAxisVisible=!1!==t.defaultZAxisVisible,this.defaultColor=void 0!==t.defaultColor?t.defaultColor:"#00BBFF",this.zIndex=t.zIndex||1e4,this.defaultLabelsOnWires=!1!==t.defaultLabelsOnWires,this._onMouseOver=(e,t)=>{this.fire("mouseOver",{plugin:this,distanceMeasurement:t,measurement:t,event:e})},this._onMouseLeave=(e,t)=>{this.fire("mouseLeave",{plugin:this,distanceMeasurement:t,measurement:t,event:e})},this._onContextMenu=(e,t)=>{this.fire("contextMenu",{plugin:this,distanceMeasurement:t,measurement:t,event:e})}}getContainerElement(){return this._container}send(e,t){}get pointerLens(){return this._pointerLens}get control(){return this._defaultControl||(this._defaultControl=new Uc(this,{})),this._defaultControl}get measurements(){return this._measurements}set labelMinAxisLength(e){e<1&&(this.error("labelMinAxisLength must be >= 1; defaulting to 25"),e=25),this._labelMinAxisLength=e||25}get labelMinAxisLength(){return this._labelMinAxisLength}createMeasurement(e={}){this.viewer.scene.components[e.id]&&(this.error("Viewer scene component with this ID already exists: "+e.id),delete e.id);const t=e.origin,i=e.target,s=new Rc(this,{id:e.id,plugin:this,container:this._container,origin:{entity:t.entity,worldPos:t.worldPos},target:{entity:i.entity,worldPos:i.worldPos},visible:e.visible,wireVisible:e.wireVisible,axisVisible:!1!==e.axisVisible&&!1!==this.defaultAxisVisible,xAxisVisible:!1!==e.xAxisVisible&&!1!==this.defaultXAxisVisible,yAxisVisible:!1!==e.yAxisVisible&&!1!==this.defaultYAxisVisible,zAxisVisible:!1!==e.zAxisVisible&&!1!==this.defaultZAxisVisible,xLabelEnabled:!1!==e.xLabelEnabled&&!1!==this.defaultXLabelEnabled,yLabelEnabled:!1!==e.yLabelEnabled&&!1!==this.defaultYLabelEnabled,zLabelEnabled:!1!==e.zLabelEnabled&&!1!==this.defaultZLabelEnabled,lengthLabelEnabled:!1!==e.lengthLabelEnabled&&!1!==this.defaultLengthLabelEnabled,labelsVisible:!1!==e.labelsVisible&&!1!==this.defaultLabelsVisible,originVisible:e.originVisible,targetVisible:e.targetVisible,color:e.color,labelsOnWires:!1!==e.labelsOnWires&&!1!==this.defaultLabelsOnWires,onMouseOver:this._onMouseOver,onMouseLeave:this._onMouseLeave,onContextMenu:this._onContextMenu});return this._measurements[s.id]=s,s.clickable=!0,s.on("destroyed",(()=>{delete this._measurements[s.id]})),this.fire("measurementCreated",s),s}destroyMeasurement(e){const t=this._measurements[e];t?(t.destroy(),this.fire("measurementDestroyed",t)):this.log("DistanceMeasurement not found: "+e)}setLabelsShown(e){for(const[t,i]of Object.entries(this.measurements))i.labelShown=e}setAxisVisible(e){for(const[t,i]of Object.entries(this.measurements))i.axisVisible=e;this.defaultAxisVisible=e}getAxisVisible(){return this.defaultAxisVisible}clear(){const e=Object.keys(this._measurements);for(var t=0,i=e.length;t<i;t++)this.destroyMeasurement(e[t])}destroy(){this.clear(),super.destroy()}}class Oc extends Lc{constructor(e,t={}){super(e.viewer.scene),this.pointerLens=t.pointerLens,this.pointerCircle=new G(e.viewer),this._active=!1;const i=document.createElement("div"),s=this.scene.canvas.canvas;s.parentNode.insertBefore(i,s),i.style.background="black",i.style.border="2px solid blue",i.style.borderRadius="10px",i.style.width="5px",i.style.height="5px",i.style.margin="-200px -200px",i.style.zIndex="100",i.style.position="absolute",i.style.pointerEvents="none",this.markerDiv=i,this._currentDistanceMeasurement=null,this._currentDistanceMeasurementInitState={wireVisible:null,axisVisible:null,xAxisVisible:null,yaxisVisible:null,zAxisVisible:null,targetVisible:null},this._onCanvasTouchStart=null,this._onCanvasTouchEnd=null,this._longTouchTimeoutMs=300,this._snapping=!1!==t.snapping,this._touchState=0,this._attachPlugin(e,t)}_attachPlugin(e){this.distanceMeasurementsPlugin=e,this.plugin=e}get active(){return this._active}set snapping(e){e!==this._snapping?(this._snapping=e,this.deactivate(),this.activate()):this._snapping=e}get snapping(){return this._snapping}activate(){if(this._active)return;const e=this.plugin,t=this.scene,i=t.canvas.canvas;e.pointerLens;const s=d.vec3(),r=20;let o=null;this._touchState=0;const n=d.vec2(),a=d.vec2(),l=d.vec2();let A=null;const h=()=>{this.plugin.viewer.cameraControl.active=!1},c=()=>{this.plugin.viewer.cameraControl.active=!0},u=()=>{o&&(clearTimeout(o),o=null),this._currentDistanceMeasurement&&(this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),c(),this._touchState=0};i.addEventListener("touchstart",this._onCanvasTouchStart=i=>{const l=i.touches.length;if(1!==l)return void(o&&(clearTimeout(o),o=null));const c=i.touches[0],p=c.clientX,f=c.clientY;switch(n.set([p,f]),a.set([p,f]),this._touchState){case 0:if(1!==l&&null!==o)return void u();const i=t.pick({canvasPos:a,snapping:this._snapping,snapToEdge:this._snapping});if(i&&i.snapped)s.set(i.worldPos),this.pointerCircle.start(i.snappedCanvasPos);else{const e=t.pick({canvasPos:a,pickSurface:!0});if(!e||!e.worldPos)return;s.set(e.worldPos),this.pointerCircle.start(e.canvasPos)}o=setTimeout((()=>{1!==l||a[0]>n[0]+r||a[0]<n[0]-r||a[1]>n[1]+r||a[1]<n[1]-r||(this.pointerLens&&(this.pointerLens.visible=!0,this.pointerLens.canvasPos=n,this.pointerLens.cursorPos=n),this.pointerLens&&(this.pointerLens.canvasPos=a,this.pointerLens.snapped=!1),this.pointerLens&&(this.pointerLens.cursorPos=i.canvasPos,this.pointerLens.snapped=!0),this._currentDistanceMeasurement?this._currentDistanceMeasurement.origin.worldPos=s:(this._currentDistanceMeasurement=e.createMeasurement({id:d.createUUID(),origin:{worldPos:s,entity:i.entity},target:{worldPos:s,entity:i.entity}}),this._currentDistanceMeasurement.labelsVisible=!1,this._currentDistanceMeasurement.xAxisVisible=!1,this._currentDistanceMeasurement.yAxisVisible=!1,this._currentDistanceMeasurement.zAxisVisible=!1,this._currentDistanceMeasurement.wireVisible=!1,this._currentDistanceMeasurement.originVisible=!0,this._currentDistanceMeasurement.targetVisible=!1,this._currentDistanceMeasurement.clickable=!1),this.distanceMeasurementsPlugin.fire("measurementStart",this._currentDistanceMeasurement),this._touchState=2,h())}),this._longTouchTimeoutMs),this._touchState=1,A=c.identifier;break;case 3:if(1!==l&&null!==o)return clearTimeout(o),void(o=null);1===l&&(o=setTimeout((()=>{if(o=null,1!==l||a[0]>n[0]+r||a[0]<n[0]-r||a[1]>n[1]+r||a[1]<n[1]-r)return;this.pointerLens&&(this.pointerLens.visible=!0,this.pointerLens.canvasPos=n,this.pointerLens.snapped=!1);const e=t.pick({canvasPos:a,snapToVertex:this._snapping,snapToEdge:this._snapping});if(e&&e.snapped)this.pointerLens&&(this.pointerLens.cursorPos=e.snappedCanvasPos,this.pointerLens.snapped=!0),this.pointerCircle.start(e.snappedCanvasPos),s.set(e.worldPos),this._currentDistanceMeasurement.target.worldPos=e.worldPos,this._currentDistanceMeasurement.target.entity=e.entity,this._currentDistanceMeasurement.targetVisible=!0,this._currentDistanceMeasurement.wireVisible=!0,this._currentDistanceMeasurement.labelsVisible=!0,this.distanceMeasurementsPlugin.fire("measurementStart",this._currentDistanceMeasurement);else{const e=t.pick({canvasPos:a,pickSurface:!0});e&&e.worldPos?(this.pointerLens&&(this.pointerLens.cursorPos=e.canvasPos,this.pointerLens.snapped=!1),this.pointerCircle.start(e.canvasPos),s.set(e.worldPos),this._currentDistanceMeasurement.target.worldPos=e.worldPos,this._currentDistanceMeasurement.target.entity=e.entity,this._currentDistanceMeasurement.targetVisible=!0,this._currentDistanceMeasurement.wireVisible=!0,this._currentDistanceMeasurement.labelsVisible=!0,this.distanceMeasurementsPlugin.fire("measurementStart",this._currentDistanceMeasurement)):this.pointerLens&&(this.pointerLens.cursorPos=null,this.pointerLens.snapped=!1)}this._touchState=5,h()}),this._longTouchTimeoutMs),this._touchState=4),A=c.identifier;break;default:return null!==o&&(clearTimeout(o),o=null),void(this._touchState=7)}},{passive:!0}),i.addEventListener("touchmove",(i=>{this.pointerCircle.stop();const r=i.touches.length;if(1!==r||1!==i.changedTouches.length)return void(o&&(clearTimeout(o),o=null));const n=i.touches[0],l=n.clientX,h=n.clientY;if(n.identifier!==A)return;let c,u;switch(a.set([l,h]),this._touchState){case 2:this.pointerLens&&(this.pointerLens.canvasPos=a),c=t.pick({canvasPos:a,snapToVertex:this._snapping,snapToEdge:this._snapping}),c&&c.snapped?(this.pointerLens&&(this.pointerLens.snappedCanvasPos=c.snappedCanvasPos,this.pointerLens.snapped=!0),s.set(c.worldPos),this._currentDistanceMeasurement?this._currentDistanceMeasurement.origin.worldPos=c.worldPos:(this._currentDistanceMeasurement=e.createMeasurement({id:d.createUUID(),origin:{worldPos:c.worldPos,entity:c.entity},target:{worldPos:c.worldPos,entity:c.entity}}),this._currentDistanceMeasurement.labelsVisible=!1,this._currentDistanceMeasurement.xAxisVisible=!1,this._currentDistanceMeasurement.yAxisVisible=!1,this._currentDistanceMeasurement.zAxisVisible=!1,this._currentDistanceMeasurement.wireVisible=!1,this._currentDistanceMeasurement.originVisible=!0,this._currentDistanceMeasurement.targetVisible=!1,this._currentDistanceMeasurement.clickable=!1),this.distanceMeasurementsPlugin.fire("measurementStart",this._currentDistanceMeasurement)):(u=t.pick({canvasPos:a,pickSurface:!0}),u&&u.worldPos?(this.pointerLens&&(this.pointerLens.cursorPos=u.canvasPos,this.pointerLens.snapped=!1),s.set(u.worldPos),this._currentDistanceMeasurement?this._currentDistanceMeasurement.origin.worldPos=u.worldPos:(this._currentDistanceMeasurement=e.createMeasurement({id:d.createUUID(),origin:{worldPos:u.worldPos,entity:u.entity},target:{worldPos:u.worldPos,entity:u.entity}}),this._currentDistanceMeasurement.labelsVisible=!1,this._currentDistanceMeasurement.xAxisVisible=!1,this._currentDistanceMeasurement.yAxisVisible=!1,this._currentDistanceMeasurement.zAxisVisible=!1,this._currentDistanceMeasurement.wireVisible=!1,this._currentDistanceMeasurement.originVisible=!0,this._currentDistanceMeasurement.targetVisible=!1,this._currentDistanceMeasurement.clickable=!1),this.distanceMeasurementsPlugin.fire("measurementStart",this._currentDistanceMeasurement)):this.pointerLens&&(this.pointerLens.cursorPos=null,this.pointerLens.snapped=!1)),this._touchState=2;break;case 5:if(1!==r&&null!==o)return clearTimeout(o),o=null,this.pointerLens&&(this.pointerLens.visible=!1),void(this._touchState=7);this.pointerLens&&(this.pointerLens.canvasPos=a),c=t.pick({canvasPos:a,snapToVertex:this._snapping,snapToEdge:this._snapping}),c&&c.worldPos?(this.pointerLens&&(this.pointerLens.cursorPos=c.snappedCanvasPos,this.pointerLens.snapped=!0),this._currentDistanceMeasurement.target.worldPos=c.worldPos,this._currentDistanceMeasurement.target.entity=c.entity,this._currentDistanceMeasurement.targetVisible=!0,this._currentDistanceMeasurement.wireVisible=!0,this._currentDistanceMeasurement.labelsVisible=!0):(u=t.pick({canvasPos:a,pickSurface:!0}),u&&u.worldPos&&(this.pointerLens&&(this.pointerLens.cursorPos=u.canvasPos,this.pointerLens.snapped=!1),this._currentDistanceMeasurement.target.worldPos=u.worldPos,this._currentDistanceMeasurement.target.entity=u.entity,this._currentDistanceMeasurement.targetVisible=!0,this._currentDistanceMeasurement.wireVisible=!0,this._currentDistanceMeasurement.labelsVisible=!0)),this._touchState=5}}),{passive:!0}),i.addEventListener("touchend",this._onCanvasTouchEnd=i=>{this.pointerCircle.stop();const s=i.changedTouches.length;if(1!==s)return;const h=i.changedTouches[0],u=h.clientX,p=h.clientY;if(h.identifier===A)switch(o&&(clearTimeout(o),o=null),l.set([u,p]),this._touchState){case 1:{if(1!==s||u>n[0]+r||u<n[0]-r||p>n[1]+r||p<n[1]-r)return void(this._touchState=0);const i=t.pick({canvasPos:a,pickSurface:!0});i&&i.worldPos?(this._currentDistanceMeasurement=e.createMeasurement({id:d.createUUID(),origin:{worldPos:i.worldPos,entity:i.entity},target:{worldPos:i.worldPos,entity:i.entity}}),this._currentDistanceMeasurement.labelsVisible=!1,this._currentDistanceMeasurement.xAxisVisible=!1,this._currentDistanceMeasurement.yAxisVisible=!1,this._currentDistanceMeasurement.zAxisVisible=!1,this._currentDistanceMeasurement.wireVisible=!1,this._currentDistanceMeasurement.originVisible=!0,this._currentDistanceMeasurement.targetVisible=!1,this._currentDistanceMeasurement.clickable=!1,this._touchState=3,this.distanceMeasurementsPlugin.fire("measurementStart",this._currentDistanceMeasurement)):(this._currentDistanceMeasurement&&this._currentDistanceMeasurement.destroy(),this._touchState=0)}c();break;case 2:this.pointerLens&&(this.pointerLens.visible=!1),this._currentDistanceMeasurement?this._touchState=3:(this.pointerLens&&(this.pointerLens.snapped=!1,this.pointerLens.visible=!1),this._touchState=0),c();break;case 4:{if(1!==s||u>n[0]+r||u<n[0]-r||p>n[1]+r||p<n[1]-r)return void(this._touchState=3);const e=t.pick({canvasPos:a,pickSurface:!0});e&&e.worldPos?(this._currentDistanceMeasurement.target.worldPos=e.worldPos,this._currentDistanceMeasurement.target.entity=e.entity,this._currentDistanceMeasurement.targetVisible=!0,this._currentDistanceMeasurement.wireVisible=!0,this._currentDistanceMeasurement.labelsVisible=!0,this._currentDistanceMeasurement.xAxisVisible=!0,this._currentDistanceMeasurement.yAxisVisible=!0,this._currentDistanceMeasurement.zAxisVisible=!0,this._currentDistanceMeasurement.clickable=!0,this.distanceMeasurementsPlugin.fire("measurementEnd",this._currentDistanceMeasurement),this._currentDistanceMeasurement=null):this._currentDistanceMeasurement&&(this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),this._touchState=0}c();break;case 5:console.log("long touch"),this.pointerLens&&(this.pointerLens.visible=!1),this._currentDistanceMeasurement&&this._currentDistanceMeasurement.targetVisible?(this._currentDistanceMeasurement.clickable=!0,this.distanceMeasurementsPlugin.fire("measurementEnd",this._currentDistanceMeasurement),this._currentDistanceMeasurement=null,this._touchState=0):(this._currentDistanceMeasurement&&(this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),this._touchState=0),c()}},{passive:!0}),this._active=!0}deactivate(){if(!this._active)return;this.plugin.pointerLens&&(this.plugin.pointerLens.visible=!1),this.reset();const e=this.plugin.viewer.scene.canvas.canvas;e.removeEventListener("touchstart",this._onCanvasTouchStart),e.removeEventListener("touchend",this._onCanvasTouchEnd),this._currentDistanceMeasurement&&(this.distanceMeasurementsPlugin.fire("measurementCancel",this._currentDistanceMeasurement),this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),this._active=!1,this.plugin.viewer.cameraControl.active=!0}reset(){this._active&&(this._currentDistanceMeasurement&&(this.distanceMeasurementsPlugin.fire("measurementCancel",this._currentDistanceMeasurement),this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),this._mouseState=0)}get currentMeasurement(){return this._currentDistanceMeasurement}destroy(){this.deactivate(),super.destroy()}}class Nc extends z{constructor(e,t={}){super("FastNav",e),this._hideColorTexture=!1!==t.hideColorTexture,this._hidePBR=!1!==t.hidePBR,this._hideSAO=!1!==t.hideSAO,this._hideEdges=!1!==t.hideEdges,this._hideTransparentObjects=!!t.hideTransparentObjects,this._scaleCanvasResolution=!!t.scaleCanvasResolution,this._defaultScaleCanvasResolutionFactor=t.defaultScaleCanvasResolutionFactor||1,this._scaleCanvasResolutionFactor=t.scaleCanvasResolutionFactor||.6,this._delayBeforeRestore=!1!==t.delayBeforeRestore,this._delayBeforeRestoreSeconds=t.delayBeforeRestoreSeconds||.5;let i=1e3*this._delayBeforeRestoreSeconds,s=!1;const r=()=>{i=1e3*this._delayBeforeRestoreSeconds,s||(e.scene._renderer.setColorTextureEnabled(!this._hideColorTexture),e.scene._renderer.setPBREnabled(!this._hidePBR),e.scene._renderer.setSAOEnabled(!this._hideSAO),e.scene._renderer.setTransparentEnabled(!this._hideTransparentObjects),e.scene._renderer.setEdgesEnabled(!this._hideEdges),this._scaleCanvasResolution?e.scene.canvas.resolutionScale=this._scaleCanvasResolutionFactor:e.scene.canvas.resolutionScale=this._defaultScaleCanvasResolutionFactor,s=!0)},o=()=>{e.scene.canvas.resolutionScale=this._defaultScaleCanvasResolutionFactor,e.scene._renderer.setEdgesEnabled(!0),e.scene._renderer.setColorTextureEnabled(!0),e.scene._renderer.setPBREnabled(!0),e.scene._renderer.setSAOEnabled(!0),e.scene._renderer.setTransparentEnabled(!0),s=!1};this._onCanvasBoundary=e.scene.canvas.on("boundary",r),this._onCameraMatrix=e.scene.camera.on("matrix",r),this._onSceneTick=e.scene.on("tick",(e=>{s&&(i-=e.deltaTime,(!this._delayBeforeRestore||i<=0)&&o())}));let n=!1;this._onSceneMouseDown=e.scene.input.on("mousedown",(()=>{n=!0})),this._onSceneMouseUp=e.scene.input.on("mouseup",(()=>{n=!1})),this._onSceneMouseMove=e.scene.input.on("mousemove",(()=>{n&&r()}))}get hideColorTexture(){return this._hideColorTexture}set hideColorTexture(e){this._hideColorTexture=e}get hidePBR(){return this._hidePBR}set hidePBR(e){this._hidePBR=e}get hideSAO(){return this._hideSAO}set hideSAO(e){this._hideSAO=e}get hideEdges(){return this._hideEdges}set hideEdges(e){this._hideEdges=e}get hideTransparentObjects(){return this._hideTransparentObjects}set hideTransparentObjects(e){this._hideTransparentObjects=!1!==e}get scaleCanvasResolution(){return this._scaleCanvasResolution}set scaleCanvasResolution(e){this._scaleCanvasResolution=e}get defaultScaleCanvasResolutionFactor(){return this._defaultScaleCanvasResolutionFactor}set defaultScaleCanvasResolutionFactor(e){this._defaultScaleCanvasResolutionFactor=e||1}get scaleCanvasResolutionFactor(){return this._scaleCanvasResolutionFactor}set scaleCanvasResolutionFactor(e){this._scaleCanvasResolutionFactor=e||.6}get delayBeforeRestore(){return this._delayBeforeRestore}set delayBeforeRestore(e){this._delayBeforeRestore=e}get delayBeforeRestoreSeconds(){return this._delayBeforeRestoreSeconds}set delayBeforeRestoreSeconds(e){this._delayBeforeRestoreSeconds=null!=e?e:.5}send(e,t){}destroy(){this.viewer.scene.camera.off(this._onCameraMatrix),this.viewer.scene.canvas.off(this._onCanvasBoundary),this.viewer.scene.input.off(this._onSceneMouseDown),this.viewer.scene.input.off(this._onSceneMouseUp),this.viewer.scene.input.off(this._onSceneMouseMove),this.viewer.scene.off(this._onSceneTick),super.destroy()}}class Qc{constructor(){}getMetaModel(e,t,i){y.loadJSON(e,(e=>{t(e)}),(function(e){i(e)}))}getGLTF(e,t,i){y.loadArraybuffer(e,(e=>{t(e)}),(function(e){i(e)}))}getGLB(e,t,i){y.loadArraybuffer(e,(e=>{t(e)}),(function(e){i(e)}))}getArrayBuffer(e,t,i,s){!function(e,t,i,s){var r=()=>{};i=i||r,s=s||r;const o=/^data:(.*?)(;base64)?,(.*)$/,n=t.match(o);if(n){const e=!!n[2];var a=n[3];a=window.decodeURIComponent(a),e&&(a=window.atob(a));try{const e=new ArrayBuffer(a.length),t=new Uint8Array(e);for(var l=0;l<a.length;l++)t[l]=a.charCodeAt(l);I.scheduleTask((function(){i(e)}))}catch(e){I.scheduleTask((function(){s(e)}))}}else{const r=function(e){var t=e.lastIndexOf("/");return 0!==t?e.substring(0,t+1):""}(e),o=r+t,n=new XMLHttpRequest;n.open("GET",o,!0),n.responseType="arraybuffer",n.onreadystatechange=function(){4===n.readyState&&(200===n.status?i(n.response):s("loadArrayBuffer error : "+n.response))},n.send(null)}}(e,t,(e=>{i(e)}),(function(e){s(e)}))}}class Vc{constructor(e={}){this._eventSubIDMap=null,this._eventSubEvents=null,this._eventSubs=null,this._events=null,this._locale="en",this._messages={},this._locales=[],this._locale="en",this.messages=e.messages,this.locale=e.locale}set messages(e){this._messages=e||{},this._locales=Object.keys(this._messages),this.fire("updated",this)}loadMessages(e={}){for(let t in e)this._messages[t]=e[t];this.messages=this._messages}clearMessages(){this.messages={}}get locales(){return this._locales}set locale(e){e=e||"de",this._locale!==e&&(this._locale=e,this.fire("updated",e))}get locale(){return this._locale}translate(e,t){const i=this._messages[this._locale];if(!i)return null;const s=Hc(e,i);return s?t?jc(s,t):s:null}translatePlurals(e,t,i){const s=this._messages[this._locale];if(!s)return null;let r=Hc(e,s);return r=0===(t=parseInt(""+t,10))?r.zero:t>1?r.other:r.one,r?(r=jc(r,[t]),i&&(r=jc(r,i)),r):null}fire(e,t,i){this._events||(this._events={}),this._eventSubs||(this._eventSubs={}),!0!==i&&(this._events[e]=t||!0);const s=this._eventSubs[e];if(s)for(const e in s)if(s.hasOwnProperty(e)){s[e].callback(t)}}on(t,i){this._events||(this._events={}),this._eventSubIDMap||(this._eventSubIDMap=new e),this._eventSubEvents||(this._eventSubEvents={}),this._eventSubs||(this._eventSubs={});let s=this._eventSubs[t];s||(s={},this._eventSubs[t]=s);const r=this._eventSubIDMap.addItem();s[r]={callback:i},this._eventSubEvents[r]=t;const o=this._events[t];return void 0!==o&&i(o),r}off(e){if(null==e)return;if(!this._eventSubEvents)return;const t=this._eventSubEvents[e];if(t){delete this._eventSubEvents[e];const i=this._eventSubs[t];i&&delete i[e],this._eventSubIDMap.removeItem(e)}}}function Hc(e,t){if(t[e])return t[e];const i=e.split(".");let s=t;for(let e=0,t=i.length;s&&e<t;e++){s=s[i[e]]}return s}function jc(e,t=[]){return e.replace(/\{\{|\}\}|\{(\d+)\}/g,(function(e,i){return"{{"===e?"{":"}}"===e?"}":t[i]}))}class Gc extends R{constructor(e,t={}){super(e,t),this.t=t.t}set t(e){e=e||0,this._t=e<0?0:e>1?1:e}get t(){return this._t}get tangent(){return this.getTangent(this._t)}get length(){var e=this._getLengths();return e[e.length-1]}getTangent(e){var t=1e-4;void 0===e&&(e=this._t);var i=e-t,s=e+t;i<0&&(i=0),s>1&&(s=1);var r=this.getPoint(i),o=this.getPoint(s),n=d.subVec3(o,r,[]);return d.normalizeVec3(n,[])}getPointAt(e){var t=this.getUToTMapping(e);return this.getPoint(t)}getPoints(e){e||(e=5);var t,i=[];for(t=0;t<=e;t++)i.push(this.getPoint(t/e));return i}_getLengths(e){if(e||(e=this.__arcLengthDivisions?this.__arcLengthDivisions:200),this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var t,i,s=[],r=this.getPoint(0),o=0;for(s.push(0),i=1;i<=e;i++)t=this.getPoint(i/e),o+=d.lenVec3(d.subVec3(t,r,[])),s.push(o),r=t;return this.cacheArcLengths=s,s}_updateArcLengths(){this.needsUpdate=!0,this._getLengths()}getUToTMapping(e,t){var i,s=this._getLengths(),r=0,o=s.length;i=t||e*s[o-1];for(var n,a=0,l=o-1;a<=l;)if((n=s[r=Math.floor(a+(l-a)/2)]-i)<0)a=r+1;else{if(!(n>0)){l=r;break}l=r-1}if(s[r=l]===i)return r/(o-1);var A=s[r];return(r+(i-A)/(s[r+1]-A))/(o-1)}}class zc extends Gc{constructor(e,t={}){super(e,t),this.points=t.points,this.t=t.t}set points(e){this._points=e||[]}get points(){return this._points}set t(e){e=e||0,this._t=e<0?0:e>1?1:e}get t(){return this._t}get point(){return this.getPoint(this._t)}getPoint(e){var t=this.points;if(!(t.length<3)){var i=(t.length-1)*e,s=Math.floor(i),r=i-s,o=t[0===s?s:s-1],n=t[s],a=t[s>t.length-2?t.length-1:s+1],l=t[s>t.length-3?t.length-1:s+2],A=d.vec3();return A[0]=d.catmullRomInterpolate(o[0],n[0],a[0],l[0],r),A[1]=d.catmullRomInterpolate(o[1],n[1],a[1],l[1],r),A[2]=d.catmullRomInterpolate(o[2],n[2],a[2],l[2],r),A}this.error("Can't sample point from SplineCurve - not enough points on curve - returning [0,0,0].")}getJSON(){return{points:points,t:this._t}}}const Wc=d.vec3();class Kc extends R{get type(){return"CameraPath"}constructor(e,t={}){super(e,t),this._frames=[],this._eyeCurve=new zc(this),this._lookCurve=new zc(this),this._upCurve=new zc(this),t.frames&&(this.addFrames(t.frames),this.smoothFrameTimes(1))}get frames(){return this._frames}get eyeCurve(){return this._eyeCurve}get lookCurve(){return this._lookCurve}get upCurve(){return this._upCurve}saveFrame(e){const t=this.scene.camera;this.addFrame(e,t.eye,t.look,t.up)}addFrame(e,t,i,s){const r={t:e,eye:t.slice(0),look:i.slice(0),up:s.slice(0)};this._frames.push(r),this._eyeCurve.points.push(r.eye),this._lookCurve.points.push(r.look),this._upCurve.points.push(r.up)}addFrames(e){let t;for(let i=0,s=e.length;i<s;i++)t=e[i],this.addFrame(t.t||0,t.eye,t.look,t.up)}loadFrame(e){const t=this.scene.camera;e=(e/=this._frames[this._frames.length-1].t-this._frames[0].t)<0?0:e>1?1:e,t.eye=this._eyeCurve.getPoint(e,Wc),t.look=this._lookCurve.getPoint(e,Wc),t.up=this._upCurve.getPoint(e,Wc)}sampleFrame(e,t,i,s){e=e<0?0:e>1?1:e,this._eyeCurve.getPoint(e,t),this._lookCurve.getPoint(e,i),this._upCurve.getPoint(e,s)}smoothFrameTimes(e){if(0===this._frames.length)return;const t=d.vec3();var i=0;this._frames[0].t=0;const s=[];for(let e=1,o=this._frames.length;e<o;e++){var r=d.lenVec3(d.subVec3(this._frames[e].eye,this._frames[e-1].eye,t));s[e]=r,i+=r}for(let t=1,r=this._frames.length;t<r;t++){const r=s[t]/i*e;this._frames[t].t=this._frames[t-1].t+r}}clearFrames(){this._frames=[],this._eyeCurve.points=[],this._lookCurve.points=[],this._upCurve.points=[]}}const Xc=d.vec3(),Jc=d.vec3(),Yc=d.vec3(),Zc=d.vec3(),qc=d.vec3();class $c extends R{get type(){return"CameraFlightAnimation"}constructor(e,t={}){super(e,t),this._look1=d.vec3(),this._eye1=d.vec3(),this._up1=d.vec3(),this._look2=d.vec3(),this._eye2=d.vec3(),this._up2=d.vec3(),this._orthoScale1=1,this._orthoScale2=1,this._flying=!1,this._flyEyeLookUp=!1,this._flyingEye=!1,this._flyingLook=!1,this._callback=null,this._callbackScope=null,this._time1=null,this._time2=null,this.easing=!1!==t.easing,this.duration=t.duration,this.fit=t.fit,this.fitFOV=t.fitFOV,this.trail=t.trail}flyTo(e,t,i){e=e||this.scene,this._flying&&this.stop(),this._flying=!1,this._flyingEye=!1,this._flyingLook=!1,this._flyingEyeLookUp=!1,this._callback=t,this._callbackScope=i;const s=this.scene.camera,r=!!e.projection&&e.projection!==s.projection;let o,n,a,l,A;if(this._eye1[0]=s.eye[0],this._eye1[1]=s.eye[1],this._eye1[2]=s.eye[2],this._look1[0]=s.look[0],this._look1[1]=s.look[1],this._look1[2]=s.look[2],this._up1[0]=s.up[0],this._up1[1]=s.up[1],this._up1[2]=s.up[2],this._orthoScale1=s.ortho.scale,this._orthoScale2=e.orthoScale||this._orthoScale1,e.aabb)o=e.aabb;else if(6===e.length)o=e;else if(e.eye&&e.look||e.up)n=e.eye,a=e.look,l=e.up;else if(e.eye)n=e.eye;else if(e.look)a=e.look;else{let s=e;if((y.isNumeric(s)||y.isString(s))&&(A=s,s=this.scene.components[A],!s))return this.error("Component not found: "+y.inQuotes(A)),void(t&&(i?t.call(i):t()));r||(o=s.aabb||this.scene.aabb)}const h=e.poi;if(o){if(o[3]<o[0]||o[4]<o[1]||o[5]<o[2])return;if(o[3]===o[0]&&o[4]===o[1]&&o[5]===o[2])return;o=o.slice();const t=d.getAABB3Center(o);this._look2=h||t;const i=d.subVec3(this._eye1,this._look1,Xc),s=d.normalizeVec3(i),r=h?d.getAABB3DiagPoint(o,h):d.getAABB3Diag(o),n=e.fitFOV||this._fitFOV,a=Math.abs(r/Math.tan(n*d.DEGTORAD));this._orthoScale2=1.1*r,this._eye2[0]=this._look2[0]+s[0]*a,this._eye2[1]=this._look2[1]+s[1]*a,this._eye2[2]=this._look2[2]+s[2]*a,this._up2[0]=this._up1[0],this._up2[1]=this._up1[1],this._up2[2]=this._up1[2],this._flyingEyeLookUp=!0}else(n||a||l)&&(this._flyingEyeLookUp=!!n&&!!a&&!!l,this._flyingEye=!!n&&!a,this._flyingLook=!!a&&!n,n&&(this._eye2[0]=n[0],this._eye2[1]=n[1],this._eye2[2]=n[2]),a&&(this._look2[0]=a[0],this._look2[1]=a[1],this._look2[2]=a[2]),l&&(this._up2[0]=l[0],this._up2[1]=l[1],this._up2[2]=l[2]));r?("ortho"===e.projection&&"ortho"!==s.projection&&(this._projection2="ortho",this._projMatrix1=s.projMatrix.slice(),this._projMatrix2=s.ortho.matrix.slice(),s.projection="customProjection"),"perspective"===e.projection&&"perspective"!==s.projection&&(this._projection2="perspective",this._projMatrix1=s.projMatrix.slice(),this._projMatrix2=s.perspective.matrix.slice(),s.projection="customProjection")):this._projection2=null,this.fire("started",e,!0),this._time1=Date.now(),this._time2=this._time1+(e.duration?1e3*e.duration:this._duration),this._flying=!0,I.scheduleTask(this._update,this)}jumpTo(e){this._jumpTo(e)}_jumpTo(e){this._flying&&this.stop();const t=this.scene.camera;var i,s,r,o,n;if(e.aabb)i=e.aabb;else if(6===e.length)i=e;else if(e.eye||e.look||e.up)r=e.eye,o=e.look,n=e.up;else{let t=e;if((y.isNumeric(t)||y.isString(t))&&(s=t,t=this.scene.components[s],!t))return void this.error("Component not found: "+y.inQuotes(s));i=t.aabb||this.scene.aabb}const a=e.poi;if(i){if(i[3]<=i[0]||i[4]<=i[1]||i[5]<=i[2])return;var l=a?d.getAABB3DiagPoint(i,a):d.getAABB3Diag(i);let s;o=a||d.getAABB3Center(i,o),this._trail?d.subVec3(t.look,o,qc):d.subVec3(t.eye,t.look,qc),d.normalizeVec3(qc);s=(void 0!==e.fit?e.fit:this._fit)?Math.abs(l/Math.tan((e.fitFOV||this._fitFOV)*d.DEGTORAD)):d.lenVec3(d.subVec3(t.eye,t.look,Xc)),d.mulVec3Scalar(qc,s),t.eye=d.addVec3(o,qc,Xc),t.look=o,this.scene.camera.ortho.scale=1.1*l}else(r||o||n)&&(r&&(t.eye=r),o&&(t.look=o),n&&(t.up=n));e.projection&&(t.projection=e.projection)}_update(){if(!this._flying)return;let e=(Date.now()-this._time1)/(this._time2-this._time1);const t=e>=1;e>1&&(e=1);const i=this.easing?$c._ease(e,0,1,1):e,s=this.scene.camera;if(this._flyingEye||this._flyingLook?this._flyingEye?(d.subVec3(s.eye,s.look,qc),s.eye=d.lerpVec3(i,0,1,this._eye1,this._eye2,Yc),s.look=d.subVec3(Yc,qc,Jc)):this._flyingLook&&(s.look=d.lerpVec3(i,0,1,this._look1,this._look2,Jc),s.up=d.lerpVec3(i,0,1,this._up1,this._up2,Zc)):this._flyingEyeLookUp&&(s.eye=d.lerpVec3(i,0,1,this._eye1,this._eye2,Yc),s.look=d.lerpVec3(i,0,1,this._look1,this._look2,Jc),s.up=d.lerpVec3(i,0,1,this._up1,this._up2,Zc)),this._projection2){const t="ortho"===this._projection2?$c._easeOutExpo(e,0,1,1):$c._easeInCubic(e,0,1,1);s.customProjection.matrix=d.lerpMat4(t,0,1,this._projMatrix1,this._projMatrix2)}else s.ortho.scale=this._orthoScale1+e*(this._orthoScale2-this._orthoScale1);if(t)return s.ortho.scale=this._orthoScale2,void this.stop();I.scheduleTask(this._update,this)}static _ease(e,t,i,s){return-i*(e/=s)*(e-2)+t}static _easeInCubic(e,t,i,s){return i*(e/=s)*e*e+t}static _easeOutExpo(e,t,i,s){return i*(1-Math.pow(2,-10*e/s))+t}stop(){if(!this._flying)return;this._flying=!1,this._time1=null,this._time2=null,this._projection2&&(this.scene.camera.projection=this._projection2);const e=this._callback;e&&(this._callback=null,this._callbackScope?e.call(this._callbackScope):e()),this.fire("stopped",!0,!0)}cancel(){this._flying&&(this._flying=!1,this._time1=null,this._time2=null,this._callback&&(this._callback=null),this.fire("canceled",!0,!0))}set duration(e){this._duration=e?1e3*e:500,this.stop()}get duration(){return this._duration/1e3}set fit(e){this._fit=!1!==e}get fit(){return this._fit}set fitFOV(e){this._fitFOV=e||45}get fitFOV(){return this._fitFOV}set trail(e){this._trail=!!e}get trail(){return this._trail}destroy(){this.stop(),super.destroy()}}class eu extends R{get type(){return"CameraPathAnimation"}constructor(e,t={}){super(e,t),this._cameraFlightAnimation=new $c(this),this._t=0,this.state=eu.SCRUBBING,this._playingFromT=0,this._playingToT=0,this._playingRate=t.playingRate||1,this._playingDir=1,this._lastTime=null,this.cameraPath=t.cameraPath,this._tick=this.scene.on("tick",this._updateT,this)}_updateT(){const e=this._cameraPath;if(!e)return;let t,i;const s=performance.now(),r=this._lastTime?.001*(s-this._lastTime):0;if(this._lastTime=s,0!==r)switch(this.state){case eu.SCRUBBING:return;case eu.PLAYING:if(this._t+=this._playingRate*r,t=this._cameraPath.frames.length,0===t||this._playingDir<0&&this._t<=0||this._playingDir>0&&this._t>=this._cameraPath.frames[t-1].t)return this.state=eu.SCRUBBING,this._t=this._cameraPath.frames[t-1].t,void this.fire("stopped");e.loadFrame(this._t);break;case eu.PLAYING_TO:i=this._t+this._playingRate*r*this._playingDir,(this._playingDir<0&&i<=this._playingToT||this._playingDir>0&&i>=this._playingToT)&&(i=this._playingToT,this.state=eu.SCRUBBING,this.fire("stopped")),this._t=i,e.loadFrame(this._t)}}_ease(e,t,i,s){return-i*(e/=s)*(e-2)+t}set cameraPath(e){this._cameraPath=e}get cameraPath(){return this._cameraPath}set rate(e){this._playingRate=e}get rate(){return this._playingRate}play(){this._cameraPath&&(this._lastTime=null,this.state=eu.PLAYING)}playToT(e){this._cameraPath&&(this._playingFromT=this._t,this._playingToT=e,this._playingDir=this._playingToT-this._playingFromT<0?-1:1,this._lastTime=null,this.state=eu.PLAYING_TO)}playToFrame(e){const t=this._cameraPath;if(!t)return;const i=t.frames[e];i?this.playToT(i.t):this.error("playToFrame - frame index out of range: "+e)}flyToFrame(e,t){const i=this._cameraPath;if(!i)return;const s=i.frames[e];s?(this.state=eu.SCRUBBING,this._cameraFlightAnimation.flyTo(s,t)):this.error("flyToFrame - frame index out of range: "+e)}scrubToT(e){const t=this._cameraPath;if(!t)return;this.scene.camera&&(this._t=e,t.loadFrame(this._t),this.state=eu.SCRUBBING)}scrubToFrame(e){const t=this._cameraPath;if(!t)return;if(!this.scene.camera)return;t.frames[e]?(t.loadFrame(this._t),this.state=eu.SCRUBBING):this.error("playToFrame - frame index out of range: "+e)}stop(){this.state=eu.SCRUBBING,this.fire("stopped")}destroy(){super.destroy(),this.scene.off(this._tick)}}eu.STOPPED=0,eu.SCRUBBING=1,eu.PLAYING=2,eu.PLAYING_TO=3;const tu=d.vec3(),iu=d.vec3();d.vec3();const su=d.vec3([0,-1,0]),ru=d.vec4([0,0,0,1]);class ou extends R{constructor(e,t={}){super(e,t),this._src=null,this._image=null,this._pos=d.vec3(),this._origin=d.vec3(),this._rtcPos=d.vec3(),this._dir=d.vec3(),this._size=1,this._imageSize=d.vec2(),this._texture=new Xr(this),this._plane=new fr(this,{geometry:new zt(this,oo({center:[0,0,0],xSize:1,zSize:1,xSegments:10,zSegments:10})),material:new Yt(this,{diffuse:[0,0,0],ambient:[0,0,0],specular:[0,0,0],diffuseMap:this._texture,emissiveMap:this._texture,backfaces:!0}),clippable:t.clippable}),this._grid=new fr(this,{geometry:new zt(this,ro({size:1,divisions:10})),material:new Yt(this,{diffuse:[0,0,0],ambient:[0,0,0],emissive:[.2,.8,.2]}),position:[0,.001,0],clippable:t.clippable}),this._node=new Sr(this,{rotation:[0,0,0],position:[0,0,0],scale:[1,1,1],clippable:!1,children:[this._plane,this._grid]}),this._gridVisible=!1,this.visible=!0,this.gridVisible=t.gridVisible,this.position=t.position,this.rotation=t.rotation,this.dir=t.dir,this.size=t.size,this.collidable=t.collidable,this.clippable=t.clippable,this.pickable=t.pickable,this.opacity=t.opacity,t.image?this.image=t.image:this.src=t.src}set visible(e){this._plane.visible=e,this._grid.visible=this._gridVisible&&e}get visible(){return this._plane.visible}set gridVisible(e){e=!1!==e,this._gridVisible=e,this._grid.visible=this._gridVisible&&this.visible}get gridVisible(){return this._gridVisible}set image(e){this._image=e,this._image&&(this._imageSize[0]=e.width,this._imageSize[1]=e.height,this._updatePlaneSizeFromImage(),this._src=null,this._texture.image=this._image)}get image(){return this._image}set src(e){if(this._src=e,this._src){this._image=null;const e=new Image;e.onload=()=>{this._texture.image=e,this._imageSize[0]=e.width,this._imageSize[1]=e.height,this._updatePlaneSizeFromImage()},e.src=this._src}}get src(){return this._src}set position(e){this._pos.set(e||[0,0,0]),X(this._pos,this._origin,this._rtcPos),this._node.origin=this._origin,this._node.position=this._rtcPos}get position(){return this._pos}set rotation(e){this._node.rotation=e}get rotation(){return this._node.rotation}set size(e){this._size=null==e?1:e,this._image&&this._updatePlaneSizeFromImage()}get size(){return this._size}set dir(e){if(this._dir.set(e||[0,0,-1]),e){const t=this.scene.center,i=[-this._dir[0],-this._dir[1],-this._dir[2]];d.subVec3(t,this.position,tu);const s=-d.dotVec3(i,tu);d.normalizeVec3(i),d.mulVec3Scalar(i,s,iu),d.vec3PairToQuaternion(su,e,ru),this._node.quaternion=ru}}get dir(){return this._dir}set collidable(e){this._node.collidable=!1!==e}get collidable(){return this._node.collidable}set clippable(e){this._node.clippable=!1!==e}get clippable(){return this._node.clippable}set pickable(e){this._node.pickable=!1!==e}get pickable(){return this._node.pickable}set opacity(e){this._node.opacity=e}get opacity(){return this._node.opacity}destroy(){super.destroy()}_updatePlaneSizeFromImage(){const e=this._size,t=this._imageSize[0],i=this._imageSize[1];if(t>i){const s=i/t;this._node.scale=[e,1,e*s]}else{const s=t/i;this._node.scale=[e*s,1,e]}}}class nu extends Dt{get type(){return"PointLight"}constructor(e,t={}){super(e,t);const i=this;this._shadowRenderBuf=null,this._shadowViewMatrix=null,this._shadowProjMatrix=null,this._shadowViewMatrixDirty=!0,this._shadowProjMatrixDirty=!0;const s=this.scene.camera,r=this.scene.canvas;this._onCameraViewMatrix=s.on("viewMatrix",(()=>{this._shadowViewMatrixDirty=!0})),this._onCameraProjMatrix=s.on("projMatrix",(()=>{this._shadowProjMatrixDirty=!0})),this._onCanvasBoundary=r.on("boundary",(()=>{this._shadowProjMatrixDirty=!0})),this._state=new At({type:"point",pos:d.vec3([1,1,1]),color:d.vec3([.7,.7,.8]),intensity:1,attenuation:[0,0,0],space:t.space||"view",castsShadow:!1,getShadowViewMatrix:()=>{if(i._shadowViewMatrixDirty){i._shadowViewMatrix||(i._shadowViewMatrix=d.identityMat4());const e=i._state.pos,t=s.look,r=s.up;d.lookAtMat4v(e,t,r,i._shadowViewMatrix),i._shadowViewMatrixDirty=!1}return i._shadowViewMatrix},getShadowProjMatrix:()=>{if(i._shadowProjMatrixDirty){i._shadowProjMatrix||(i._shadowProjMatrix=d.identityMat4());const e=i.scene.canvas.canvas;d.perspectiveMat4(Math.PI/180*70,e.clientWidth/e.clientHeight,.1,500,i._shadowProjMatrix),i._shadowProjMatrixDirty=!1}return i._shadowProjMatrix},getShadowRenderBuf:()=>(i._shadowRenderBuf||(i._shadowRenderBuf=new st(i.scene.canvas.canvas,i.scene.canvas.gl,{size:[1024,1024]})),i._shadowRenderBuf)}),this.pos=t.pos,this.color=t.color,this.intensity=t.intensity,this.constantAttenuation=t.constantAttenuation,this.linearAttenuation=t.linearAttenuation,this.quadraticAttenuation=t.quadraticAttenuation,this.castsShadow=t.castsShadow,this.scene._lightCreated(this)}set pos(e){this._state.pos.set(e||[1,1,1]),this._shadowViewMatrixDirty=!0,this.glRedraw()}get pos(){return this._state.pos}set color(e){this._state.color.set(e||[.7,.7,.8]),this.glRedraw()}get color(){return this._state.color}set intensity(e){e=void 0!==e?e:1,this._state.intensity=e,this.glRedraw()}get intensity(){return this._state.intensity}set constantAttenuation(e){this._state.attenuation[0]=e||0,this.glRedraw()}get constantAttenuation(){return this._state.attenuation[0]}set linearAttenuation(e){this._state.attenuation[1]=e||0,this.glRedraw()}get linearAttenuation(){return this._state.attenuation[1]}set quadraticAttenuation(e){this._state.attenuation[2]=e||0,this.glRedraw()}get quadraticAttenuation(){return this._state.attenuation[2]}set castsShadow(e){e=!!e,this._state.castsShadow!==e&&(this._state.castsShadow=e,this._shadowViewMatrixDirty=!0,this.glRedraw())}get castsShadow(){return this._state.castsShadow}destroy(){const e=this.scene.camera,t=this.scene.canvas;e.off(this._onCameraViewMatrix),e.off(this._onCameraProjMatrix),t.off(this._onCanvasBoundary),super.destroy(),this._state.destroy(),this._shadowRenderBuf&&this._shadowRenderBuf.destroy(),this.scene._lightDestroyed(this),this.glRedraw()}}function au(e){if(!lu(e.width)||!lu(e.height)){const t=document.createElement("canvas");t.width=Au(e.width),t.height=Au(e.height);t.getContext("2d").drawImage(e,0,0,e.width,e.height,0,0,t.width,t.height),e=t}return e}function lu(e){return 0==(e&e-1)}function Au(e){--e;for(let t=1;t<32;t<<=1)e|=e>>t;return e+1}class hu extends R{get type(){return"CubeTexture"}constructor(e,t={}){super(e,t);const i=this.scene.canvas.gl;this._state=new At({texture:new Hr({gl:i,target:i.TEXTURE_CUBE_MAP}),flipY:this._checkFlipY(t.minFilter),encoding:this._checkEncoding(t.encoding),minFilter:1008,magFilter:1006,wrapS:1001,wrapT:1001,mipmaps:!0}),this._src=t.src,this._images=[],this._loadSrc(t.src),m.memory.textures++}_checkFlipY(e){return!!e}_checkEncoding(e){return 3e3!==(e=e||3e3)&&3001!==e&&(this.error("Unsupported value for 'encoding' - supported values are LinearEncoding and sRGBEncoding. Defaulting to LinearEncoding."),e=3e3),e}_webglContextRestored(){this.scene.canvas.gl,this._state.texture=null,this._src&&this._loadSrc(this._src)}_loadSrc(e){const t=this,i=this.scene.canvas.gl;this._images=[];let s=!1,r=0;for(let o=0;o<e.length;o++){const n=new Image;n.onload=function(){let e=n;const a=o;return function(){if(!s&&(e=au(e),t._images[a]=e,r++,6===r)){let e=t._state.texture;e||(e=new Hr({gl:i,target:i.TEXTURE_CUBE_MAP}),t._state.texture=e),e.setImage(t._images,t._state),t.fire("loaded",t._src,!1),t.glRedraw()}}}(),n.onerror=function(){s=!0},n.src=e[o]}}destroy(){super.destroy(),this._state.texture&&this._state.texture.destroy(),m.memory.textures--,this._state.destroy()}}class cu extends hu{get type(){return"ReflectionMap"}constructor(e,t={}){super(e,t),this.scene._lightsState.addReflectionMap(this._state),this.scene._reflectionMapCreated(this)}destroy(){super.destroy(),this.scene._reflectionMapDestroyed(this)}}class uu extends hu{get type(){return"LightMap"}constructor(e,t={}){super(e,t),this.scene._lightMapCreated(this)}destroy(){super.destroy(),this.scene._lightMapDestroyed(this)}}class du extends ue{constructor(e,t={}){super(e,{entity:t.entity,occludable:t.occludable,worldPos:t.worldPos}),this._occluded=!1,this._visible=!0,this._src=null,this._image=null,this._pos=d.vec3(),this._origin=d.vec3(),this._rtcPos=d.vec3(),this._dir=d.vec3(),this._size=1,this._imageSize=d.vec2(),this._texture=new Xr(this,{src:t.src}),this._geometry=new zt(this,{primitive:"triangles",positions:[3,3,0,-3,3,0,-3,-3,0,3,-3,0],normals:[-1,0,0,-1,0,0,-1,0,0,-1,0,0],uv:[1,-1,0,-1,0,0,1,0],indices:[0,1,2,0,2,3]}),this._mesh=new fr(this,{geometry:this._geometry,material:new Yt(this,{ambient:[.9,.3,.9],shininess:30,diffuseMap:this._texture,backfaces:!0}),scale:[1,1,1],position:t.worldPos,rotation:[90,0,0],billboard:"spherical",occluder:!1}),this.visible=!0,this.collidable=t.collidable,this.clippable=t.clippable,this.pickable=t.pickable,this.opacity=t.opacity,this.size=t.size,t.image?this.image=t.image:this.src=t.src}_setVisible(e){this._occluded=!e,this._mesh.visible=this._visible&&!this._occluded,super._setVisible(e)}set visible(e){this._visible=null==e||e,this._mesh.visible=this._visible&&!this._occluded}get visible(){return this._visible}set image(e){this._image=e,this._image&&(this._imageSize[0]=this._image.width,this._imageSize[1]=this._image.height,this._updatePlaneSizeFromImage(),this._src=null,this._texture.image=this._image)}get image(){return this._image}set src(e){if(this._src=e,this._src){this._image=null;const e=new Image;e.onload=()=>{this._texture.image=e,this._imageSize[0]=e.width,this._imageSize[1]=e.height,this._updatePlaneSizeFromImage()},e.src=this._src}}get src(){return this._src}set size(e){this._size=null==e?1:e,this._image&&this._updatePlaneSizeFromImage()}get size(){return this._size}set collidable(e){this._mesh.collidable=!1!==e}get collidable(){return this._mesh.collidable}set clippable(e){this._mesh.clippable=!1!==e}get clippable(){return this._mesh.clippable}set pickable(e){this._mesh.pickable=!1!==e}get pickable(){return this._mesh.pickable}set opacity(e){this._mesh.opacity=e}get opacity(){return this._mesh.opacity}_updatePlaneSizeFromImage(){const e=.5*this._size,t=this._imageSize[0],i=this._imageSize[1],s=i/t;this._geometry.positions=t>i?[e,e*s,0,-e,e*s,0,-e,-e*s,0,e,-e*s,0]:[e/s,e,0,-e/s,e,0,-e/s,-e,0,e/s,-e,0]}}class pu{constructor(e){this._eye=d.vec3(),this._look=d.vec3(),this._up=d.vec3(),this._projection={},e&&this.saveCamera(e)}saveCamera(e){const t=e.camera,i=t.project;switch(this._eye.set(t.eye),this._look.set(t.look),this._up.set(t.up),t.projection){case"perspective":this._projection={projection:"perspective",fov:i.fov,fovAxis:i.fovAxis,near:i.near,far:i.far};break;case"ortho":this._projection={projection:"ortho",scale:i.scale,near:i.near,far:i.far};break;case"frustum":this._projection={projection:"frustum",left:i.left,right:i.right,top:i.top,bottom:i.bottom,near:i.near,far:i.far};break;case"custom":this._projection={projection:"custom",matrix:i.matrix.slice()}}}restoreCamera(e,t){const i=e.camera,s=this._projection;function r(){switch(s.type){case"perspective":i.perspective.fov=s.fov,i.perspective.fovAxis=s.fovAxis,i.perspective.near=s.near,i.perspective.far=s.far;break;case"ortho":i.ortho.scale=s.scale,i.ortho.near=s.near,i.ortho.far=s.far;break;case"frustum":i.frustum.left=s.left,i.frustum.right=s.right,i.frustum.top=s.top,i.frustum.bottom=s.bottom,i.frustum.near=s.near,i.frustum.far=s.far;break;case"custom":i.customProjection.matrix=s.matrix}}t?e.viewer.cameraFlight.flyTo({eye:this._eye,look:this._look,up:this._up,orthoScale:s.scale,projection:s.projection},(()=>{r(),t()})):(i.eye=this._eye,i.look=this._look,i.up=this._up,r(),i.projection=s.projection)}}const fu=d.vec3();class gu{constructor(e){if(this.objectsVisible=[],this.objectsEdges=[],this.objectsXrayed=[],this.objectsHighlighted=[],this.objectsSelected=[],this.objectsClippable=[],this.objectsPickable=[],this.objectsColorize=[],this.objectsOpacity=[],this.numObjects=0,e){const t=e.metaScene.scene;this.saveObjects(t,e)}}saveObjects(e,t,i){this.numObjects=0,this._mask=i?y.apply(i,{}):null;const s=!i||i.visible,r=!i||i.edges,o=!i||i.xrayed,n=!i||i.highlighted,a=!i||i.selected,l=!i||i.clippable,A=!i||i.pickable,h=!i||i.colorize,c=!i||i.opacity,u=t.metaObjects,d=e.objects;for(let e=0,t=u.length;e<t;e++){const t=d[u[e].id];if(t){if(s&&(this.objectsVisible[e]=t.visible),r&&(this.objectsEdges[e]=t.edges),o&&(this.objectsXrayed[e]=t.xrayed),n&&(this.objectsHighlighted[e]=t.highlighted),a&&(this.objectsSelected[e]=t.selected),l&&(this.objectsClippable[e]=t.clippable),A&&(this.objectsPickable[e]=t.pickable),h){const i=t.colorize;this.objectsColorize[3*e+0]=i[0],this.objectsColorize[3*e+1]=i[1],this.objectsColorize[3*e+2]=i[2]}c&&(this.objectsOpacity[e]=t.opacity),this.numObjects++}}}restoreObjects(e,t){const i=this._mask,s=!i||i.visible,r=!i||i.edges,o=!i||i.xrayed,n=!i||i.highlighted,a=!i||i.selected,l=!i||i.clippable,A=!i||i.pickable,h=!i||i.colorize,c=!i||i.opacity,u=t.metaObjects,d=e.objects;for(let e=0,t=u.length;e<t;e++){const t=d[u[e].id];t&&(s&&(t.visible=this.objectsVisible[e]),r&&(t.edges=this.objectsEdges[e]),o&&(t.xrayed=this.objectsXrayed[e]),n&&(t.highlighted=this.objectsHighlighted[e]),a&&(t.selected=this.objectsSelected[e]),l&&(t.clippable=this.objectsClippable[e]),A&&(t.pickable=this.objectsPickable[e]),h&&(fu[0]=this.objectsColorize[3*e+0],fu[1]=this.objectsColorize[3*e+1],fu[2]=this.objectsColorize[3*e+2],t.colorize=fu),c&&(t.opacity=this.objectsOpacity[e]))}}}const mu=d.vec3();class _u{constructor(){this.objectsVisible=[],this.objectsEdges=[],this.objectsXrayed=[],this.objectsHighlighted=[],this.objectsSelected=[],this.objectsClippable=[],this.objectsPickable=[],this.objectsColorize=[],this.objectsHasColorize=[],this.objectsOpacity=[],this.numObjects=0}saveObjects(e,t){this.numObjects=0,this._mask=t?y.apply(t,{}):null;const i=e.objects,s=!t||t.visible,r=!t||t.edges,o=!t||t.xrayed,n=!t||t.highlighted,a=!t||t.selected,l=!t||t.clippable,A=!t||t.pickable,h=!t||t.colorize,c=!t||t.opacity;for(let e in i)if(i.hasOwnProperty(e)){const t=i[e],u=this.numObjects;if(s&&(this.objectsVisible[u]=t.visible),r&&(this.objectsEdges[u]=t.edges),o&&(this.objectsXrayed[u]=t.xrayed),n&&(this.objectsHighlighted[u]=t.highlighted),a&&(this.objectsSelected[u]=t.selected),l&&(this.objectsClippable[u]=t.clippable),A&&(this.objectsPickable[u]=t.pickable),h){const e=t.colorize;e?(this.objectsColorize[3*u+0]=e[0],this.objectsColorize[3*u+1]=e[1],this.objectsColorize[3*u+2]=e[2],this.objectsHasColorize[u]=!0):this.objectsHasColorize[u]=!1}c&&(this.objectsOpacity[u]=t.opacity),this.numObjects++}}restoreObjects(e){const t=this._mask,i=!t||t.visible,s=!t||t.edges,r=!t||t.xrayed,o=!t||t.highlighted,n=!t||t.selected,a=!t||t.clippable,l=!t||t.pickable,A=!t||t.colorize,h=!t||t.opacity;var c=0;const u=e.objects;for(let e in u)if(u.hasOwnProperty(e)){const t=u[e];i&&(t.visible=this.objectsVisible[c]),s&&(t.edges=this.objectsEdges[c]),r&&(t.xrayed=this.objectsXrayed[c]),o&&(t.highlighted=this.objectsHighlighted[c]),n&&(t.selected=this.objectsSelected[c]),a&&(t.clippable=this.objectsClippable[c]),l&&(t.pickable=this.objectsPickable[c]),A&&(this.objectsHasColorize[c]?(mu[0]=this.objectsColorize[3*c+0],mu[1]=this.objectsColorize[3*c+1],mu[2]=this.objectsColorize[3*c+2],t.colorize=mu):t.colorize=null),h&&(t.opacity=this.objectsOpacity[c]),c++}}}class vu extends Gc{constructor(e,t={}){super(e,t),this.v0=t.v0,this.v1=t.v1,this.v2=t.v2,this.v3=t.v3,this.t=t.t}set v0(e){this._v0=e||d.vec3([0,0,0])}get v0(){return this._v0}set v1(e){this._v1=e||d.vec3([0,0,0])}get v1(){return this._v1}set v2(e){this._v2=e||d.vec3([0,0,0])}get v2(){return this._v2}set v3(e){this.fire("v3",this._v3=e||d.vec3([0,0,0]))}get v3(){return this._v3}set t(e){e=e||0,this._t=e<0?0:e>1?1:e}get t(){return this._t}get point(){return this.getPoint(this._t)}getPoint(e){var t=d.vec3();return t[0]=d.b3(e,this._v0[0],this._v1[0],this._v2[0],this._v3[0]),t[1]=d.b3(e,this._v0[1],this._v1[1],this._v2[1],this._v3[1]),t[2]=d.b3(e,this._v0[2],this._v1[2],this._v2[2],this._v3[2]),t}getJSON(){return{v0:this._v0,v1:this._v1,v2:this._v2,v3:this._v3,t:this._t}}}class bu extends Gc{constructor(e,t={}){super(e,t),this._cachedLengths=[],this._dirty=!0,this._curves=[],this._t=0,this._dirtySubs=[],this._destroyedSubs=[],this.curves=t.curves||[],this.t=t.t}addCurve(e){this._curves.push(e),this._dirty=!0}set curves(e){var t,i,s;for(e=e||[],i=0,s=this._curves.length;i<s;i++)(t=this._curves[i]).off(this._dirtySubs[i]),t.off(this._destroyedSubs[i]);this._curves=[],this._dirtySubs=[],this._destroyedSubs=[];var r=this;function o(){r._dirty=!0}function n(){var e=this.id;for(i=0,s=r._curves.length;i<s;i++)if(r._curves[i].id===e)return r._curves=r._curves.slice(i,i+1),r._dirtySubs=r._dirtySubs.slice(i,i+1),r._destroyedSubs=r._destroyedSubs.slice(i,i+1),void(r._dirty=!0)}for(i=0,s=e.length;i<s;i++){if(t=e[i],y.isNumeric(t)||y.isString(t)){var a=t;if(!(t=this.scene.components[a])){this.error("Component not found: "+_inQuotes(a));continue}}var l=t.type;"xeokit.SplineCurve"===l||"xeokit.Path"===l||"xeokit.CubicBezierCurve"===l||"xeokit.QuadraticBezierCurve"===l?(this._curves.push(t),this._dirtySubs.push(t.on("dirty",o)),this._destroyedSubs.push(t.once("destroyed",n))):this.error("Component "+_inQuotes(t.id)+" is not a xeokit.SplineCurve, xeokit.Path or xeokit.QuadraticBezierCurve")}this._dirty=!0}get curves(){return this._curves}set t(e){e=e||0,this._t=e<0?0:e>1?1:e}get t(){return this._t}get point(){return this.getPoint(this._t)}get length(){var e=this._getCurveLengths();return e[e.length-1]}getPoint(e){for(var t,i=e*this.length,s=this._getCurveLengths(),r=0;r<s.length;){if(s[r]>=i){var o=1-(s[r]-i)/(t=this._curves[r]).length;return t.getPointAt(o)}r++}return null}_getCurveLengths(){if(!this._dirty)return this._cachedLengths;var e,t=[],i=0,s=this._curves.length;for(e=0;e<s;e++)i+=this._curves[e].length,t.push(i);return this._cachedLengths=t,this._dirty=!1,t}_getJSON(){for(var e=[],t=0,i=this._curves.length;t<i;t++)e.push(this._curves[t].id);return{curves:e,t:this._t}}destroy(){var e,t,i;for(super.destroy(),e=0,t=this._curves.length;e<t;e++)(i=this._curves[e]).off(this._dirtySubs[e]),i.off(this._destroyedSubs[e])}}class yu extends Gc{constructor(e,t={}){super(e,t),this.v0=t.v0,this.v1=t.v1,this.v2=t.v2,this.t=t.t}set v0(e){this._v0=e||d.vec3([0,0,0])}get v0(){return this._v0}set v1(e){this._v1=e||d.vec3([0,0,0])}get v1(){return this._v1}set v2(e){this._v2=e||d.vec3([0,0,0])}get v2(){return this._v2}set t(e){e=e||0,this._t=e<0?0:e>1?1:e}get t(){return this._t}get point(){return this.getPoint(this._t)}getPoint(e){var t=d.vec3();return t[0]=d.b2(e,this._v0[0],this._v1[0],this._v2[0]),t[1]=d.b2(e,this._v0[1],this._v1[1],this._v2[1]),t[2]=d.b2(e,this._v0[2],this._v1[2],this._v2[2]),t}getJSON(){return{v0:this._v0,v1:this._v1,v2:this._v2,t:this._t}}}class Bu extends bc{constructor(e,t={}){super(e,t)}}class wu extends R{constructor(e,t={}){super(e,t),this._skyboxMesh=new fr(this,{geometry:new zt(this,{primitive:"triangles",positions:[1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1],uv:[.5,.6666,.25,.6666,.25,.3333,.5,.3333,.5,.6666,.5,.3333,.75,.3333,.75,.6666,.5,.6666,.5,1,.25,1,.25,.6666,.25,.6666,0,.6666,0,.3333,.25,.3333,.25,0,.5,0,.5,.3333,.25,.3333,.75,.3333,1,.3333,1,.6666,.75,.6666],indices:[0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23]}),background:!0,scale:[2e3,2e3,2e3],rotation:[0,-90,0],material:new Yt(this,{ambient:[0,0,0],diffuse:[0,0,0],specular:[0,0,0],emissive:[1,1,1],emissiveMap:new Xr(this,{src:t.src,flipY:!0,wrapS:"clampToEdge",wrapT:"clampToEdge",encoding:t.encoding||"sRGB"}),backfaces:!0}),visible:!1,pickable:!1,clippable:!1,collidable:!1}),this.size=t.size,this.active=t.active}set size(e){this._size=e||1e3,this._skyboxMesh.scale=[this._size,this._size,this._size]}get size(){return this._size}set active(e){this._skyboxMesh.visible=e}get active(){return this._skyboxMesh.visible}}class xu{transcode(e,t,i={}){}destroy(){}}const Pu=d.vec4(),Cu=d.vec4(),Mu=d.vec3(),Fu=d.vec3(),Eu=d.vec3(),Iu=d.vec4(),Du=d.vec4(),Su=d.vec4();class Tu{constructor(e){this._scene=e}dollyToCanvasPos(e,t,i){let s=!1;const r=this._scene.camera;if(e){const t=d.subVec3(e,r.eye,Mu);s=d.lenVec3(t)<i}if("perspective"===r.projection){r.ortho.scale=r.ortho.scale-i;const s=this._unproject(t,Iu),o=d.subVec3(s,r.eye,Su),n=d.mulVec3Scalar(d.normalizeVec3(o),-i,[]);if(r.eye=[r.eye[0]-n[0],r.eye[1]-n[1],r.eye[2]-n[2]],r.look=[r.look[0]-n[0],r.look[1]-n[1],r.look[2]-n[2]],e){const t=d.subVec3(e,r.eye,Mu),i=d.lenVec3(t),s=d.mulVec3Scalar(d.normalizeVec3(d.subVec3(r.look,r.eye,Fu)),i);r.look=[r.eye[0]+s[0],r.eye[1]+s[1],r.eye[2]+s[2]]}}else if("ortho"===r.projection){const e=this._unproject(t,Iu);r.ortho.scale=r.ortho.scale-i,r.ortho._update();const s=this._unproject(t,Du),o=d.subVec3(s,e,Su),n=d.mulVec3Scalar(d.normalizeVec3(d.subVec3(r.look,r.eye,Mu)),-i,Fu),a=d.addVec3(o,n,Eu);r.eye=[r.eye[0]-a[0],r.eye[1]-a[1],r.eye[2]-a[2]],r.look=[r.look[0]-a[0],r.look[1]-a[1],r.look[2]-a[2]]}return s}_unproject(e,t){const i=this._scene.camera,s=i.project.transposedMatrix,r=s.subarray(8,12),o=s.subarray(12),n=[0,0,-1,1],a=d.dotVec4(n,r)/d.dotVec4(n,o);return i.project.unproject(e,a,Pu,Cu,t),t}destroy(){}}const Ru=d.vec3(),Lu=d.vec3(),Uu=d.vec3(),ku=d.vec4(),Ou=d.vec4(),Nu=d.vec4();class Qu{constructor(e,t){this._scene=e,this._configs=t,this._pivotWorldPos=d.vec3(),this._cameraOffset=d.vec3(),this._azimuth=0,this._polar=0,this._radius=0,this._pivotPosSet=!1,this._pivoting=!1,this._shown=!1,this._pivotSphereEnabled=!1,this._pivotSphere=null,this._pivotSphereSize=1,this._pivotSphereGeometry=null,this._pivotSphereMaterial=null,this._rtcCenter=d.vec3(),this._rtcPos=d.vec3(),this._pivotViewPos=d.vec4(),this._pivotProjPos=d.vec4(),this._pivotCanvasPos=d.vec2(),this._cameraDirty=!0,this._onViewMatrix=this._scene.camera.on("viewMatrix",(()=>{this._cameraDirty=!0})),this._onProjMatrix=this._scene.camera.on("projMatrix",(()=>{this._cameraDirty=!0})),this._onTick=this._scene.on("tick",(()=>{this.updatePivotElement(),this.updatePivotSphere()}))}createPivotSphere(){const e=this.getPivotPos(),t=d.vec3();d.decomposeMat4(d.inverseMat4(this._scene.viewer.camera.viewMatrix,d.mat4()),t,d.vec4(),d.vec3());const i=d.distVec3(t,e);let s=Math.tan(Math.PI/500)*i*this._pivotSphereSize;"ortho"==this._scene.camera.projection&&(s/=this._scene.camera.ortho.scale/2),X(e,this._rtcCenter,this._rtcPos),this._pivotSphereGeometry=new qr(this._scene,_r({radius:s})),this._pivotSphere=new fr(this._scene,{geometry:this._pivotSphereGeometry,material:this._pivotSphereMaterial,pickable:!1,position:this._rtcPos,rtcCenter:this._rtcCenter})}destroyPivotSphere(){this._pivotSphere&&(this._pivotSphere.destroy(),this._pivotSphere=null),this._pivotSphereGeometry&&(this._pivotSphereGeometry.destroy(),this._pivotSphereGeometry=null)}updatePivotElement(){const e=this._scene.camera,t=this._scene.canvas;if(this._pivoting&&this._cameraDirty){d.transformPoint3(e.viewMatrix,this.getPivotPos(),this._pivotViewPos),this._pivotViewPos[3]=1,d.transformPoint4(e.projMatrix,this._pivotViewPos,this._pivotProjPos);const i=t.boundary,s=i[2],r=i[3];this._pivotCanvasPos[0]=Math.floor((1+this._pivotProjPos[0]/this._pivotProjPos[3])*s/2),this._pivotCanvasPos[1]=Math.floor((1-this._pivotProjPos[1]/this._pivotProjPos[3])*r/2);let o=t._lastBoundingClientRect;if(!o||t._canvasSizeChanged){const e=t.canvas;o=t._lastBoundingClientRect=e.getBoundingClientRect()}this._pivotElement&&(this._pivotElement.style.left=Math.floor(o.left+this._pivotCanvasPos[0])-this._pivotElement.clientWidth/2+window.scrollX+"px",this._pivotElement.style.top=Math.floor(o.top+this._pivotCanvasPos[1])-this._pivotElement.clientHeight/2+window.scrollY+"px"),this._cameraDirty=!1}}updatePivotSphere(){this._pivoting&&this._pivotSphere&&(X(this.getPivotPos(),this._rtcCenter,this._rtcPos),d.compareVec3(this._rtcPos,this._pivotSphere.position)||(this.destroyPivotSphere(),this.createPivotSphere()))}setPivotElement(e){this._pivotElement=e}enablePivotSphere(e={}){this.destroyPivotSphere(),this._pivotSphereEnabled=!0,e.size&&(this._pivotSphereSize=e.size);const t=e.color||[1,0,0];this._pivotSphereMaterial=new Yt(this._scene,{emissive:t,ambient:t,specular:[0,0,0],diffuse:[0,0,0]})}disablePivotSphere(){this.destroyPivotSphere(),this._pivotSphereEnabled=!1}startPivot(){if(this._cameraLookingDownwards())return this._pivoting=!1,!1;const e=this._scene.camera;let t=d.lookAtMat4v(e.eye,e.look,e.worldUp);d.transformPoint3(t,this.getPivotPos(),this._cameraOffset);const i=this.getPivotPos();this._cameraOffset[2]+=d.distVec3(e.eye,i),t=d.inverseMat4(t);const s=d.transformVec3(t,this._cameraOffset),r=d.vec3();if(d.subVec3(e.eye,i,r),d.addVec3(r,s),e.zUp){const e=r[1];r[1]=r[2],r[2]=e}this._radius=d.lenVec3(r),this._polar=Math.acos(r[1]/this._radius),this._azimuth=Math.atan2(r[0],r[2]),this._pivoting=!0}_cameraLookingDownwards(){const e=this._scene.camera,t=d.normalizeVec3(d.subVec3(e.look,e.eye,Ru)),i=d.cross3Vec3(t,e.worldUp,Lu);return d.sqLenVec3(i)<=1e-4}getPivoting(){return this._pivoting}setPivotPos(e){this._pivotWorldPos.set(e),this._pivotPosSet=!0}setCanvasPivotPos(e){const t=this._scene.camera,i=Math.abs(d.distVec3(this._scene.center,t.eye)),s=t.project.transposedMatrix,r=s.subarray(8,12),o=s.subarray(12),n=[0,0,-1,1],a=d.dotVec4(n,r)/d.dotVec4(n,o),l=ku;t.project.unproject(e,a,Ou,Nu,l);const A=d.normalizeVec3(d.subVec3(l,t.eye,Ru)),h=d.addVec3(t.eye,d.mulVec3Scalar(A,i,Lu),Uu);this.setPivotPos(h)}getPivotPos(){return this._pivotPosSet?this._pivotWorldPos:this._scene.camera.look}continuePivot(e,t){if(!this._pivoting)return;if(0===e&&0===t)return;const i=this._scene.camera;var s=-e;const r=-t;1===i.worldUp[2]&&(s=-s),this._azimuth+=.01*-s,this._polar+=.01*r,this._polar=d.clamp(this._polar,.001,Math.PI-.001);const o=[this._radius*Math.sin(this._polar)*Math.sin(this._azimuth),this._radius*Math.cos(this._polar),this._radius*Math.sin(this._polar)*Math.cos(this._azimuth)];if(1===i.worldUp[2]){const e=o[1];o[1]=o[2],o[2]=e}const n=d.lenVec3(d.subVec3(i.look,i.eye,d.vec3())),a=this.getPivotPos();d.addVec3(o,a);let l=d.lookAtMat4v(o,a,i.worldUp);l=d.inverseMat4(l);const A=d.transformVec3(l,this._cameraOffset);l[12]-=A[0],l[13]-=A[1],l[14]-=A[2];const h=[l[8],l[9],l[10]];i.eye=[l[12],l[13],l[14]],d.subVec3(i.eye,d.mulVec3Scalar(h,n),i.look),i.up=[l[4],l[5],l[6]],this.showPivot()}showPivot(){this._shown||(this._pivotElement&&(this.updatePivotElement(),this._pivotElement.style.visibility="visible"),this._pivotSphereEnabled&&(this.destroyPivotSphere(),this.createPivotSphere()),this._shown=!0)}hidePivot(){this._shown&&(this._pivotElement&&(this._pivotElement.style.visibility="hidden"),this._pivotSphereEnabled&&this.destroyPivotSphere(),this._shown=!1)}endPivot(){this._pivoting=!1}destroy(){this.destroyPivotSphere(),this._scene.camera.off(this._onViewMatrix),this._scene.camera.off(this._onProjMatrix),this._scene.off(this._onTick)}}class Vu{constructor(e,t){this._scene=e.scene,this._cameraControl=e,this._scene.canvas.canvas.oncontextmenu=function(e){e.preventDefault()},this._configs=t,this.schedulePickEntity=!1,this.schedulePickSurface=!1,this.scheduleSnapOrPick=!1,this.pickCursorPos=d.vec2(),this.picked=!1,this.pickedSurface=!1,this.pickResult=null,this._lastPickedEntityId=null,this._lastHash=null,this._needFireEvents=0}update(){if(!this._configs.pointerEnabled)return;if(!this.schedulePickEntity&&!this.schedulePickSurface)return;const e=`${~~this.pickCursorPos[0]}-${~~this.pickCursorPos[1]}-${this.scheduleSnapOrPick}-${this.schedulePickSurface}-${this.schedulePickEntity}`;if(this._lastHash===e)return;this.picked=!1,this.pickedSurface=!1,this.snappedOrPicked=!1,this.hoveredSnappedOrSurfaceOff=!1;const t=this._cameraControl.hasSubs("hoverSurface");if(this.scheduleSnapOrPick){const e=this._scene.pick({canvasPos:this.pickCursorPos,snapRadius:this._configs.snapRadius,snapToVertex:this._configs.snapToVertex,snapToEdge:this._configs.snapToEdge});e&&(e.snappedToEdge||e.snappedToVertex)?(this.snapPickResult=e,this.snappedOrPicked=!0,this._needFireEvents++):(this.schedulePickSurface=!0,this.snapPickResult=null)}if(this.schedulePickSurface&&this.pickResult&&this.pickResult.worldPos){const e=this.pickResult.canvasPos;if(e[0]===this.pickCursorPos[0]&&e[1]===this.pickCursorPos[1])return this.picked=!0,this.pickedSurface=!0,this._needFireEvents+=t?1:0,this.schedulePickEntity=!1,this.schedulePickSurface=!1,this.scheduleSnapOrPick?this.snappedOrPicked=!0:this.hoveredSnappedOrSurfaceOff=!0,void(this.scheduleSnapOrPick=!1)}if(this.schedulePickEntity&&this.pickResult&&(this.pickResult.canvasPos||this.pickResult.snappedCanvasPos)){const e=this.pickResult.canvasPos||this.pickResult.snappedCanvasPos;if(e[0]===this.pickCursorPos[0]&&e[1]===this.pickCursorPos[1])return this.picked=!0,this.pickedSurface=!1,this.schedulePickEntity=!1,void(this.schedulePickSurface=!1)}this.schedulePickSurface||this.scheduleSnapOrPick&&!this.snapPickResult?(this.pickResult=this._scene.pick({pickSurface:!0,pickSurfaceNormal:!1,canvasPos:this.pickCursorPos}),this.pickResult?(this.picked=!0,this.scheduleSnapOrPick?this.snappedOrPicked=!0:this.pickedSurface=!0,this._needFireEvents++):this.scheduleSnapOrPick&&(this.hoveredSnappedOrSurfaceOff=!0,this._needFireEvents++)):(this.pickResult=this._scene.pick({canvasPos:this.pickCursorPos}),this.pickResult&&(this.picked=!0,this.pickedSurface=!1,this._needFireEvents++)),this.scheduleSnapOrPick=!1,this.schedulePickEntity=!1,this.schedulePickSurface=!1}fireEvents(){if(0!==this._needFireEvents){if(this.hoveredSnappedOrSurfaceOff&&this._cameraControl.fire("hoverSnapOrSurfaceOff",{canvasPos:this.pickCursorPos,pointerPos:this.pickCursorPos},!0),this.snappedOrPicked)if(this.snapPickResult){const e=new Le;e.entity=this.snapPickResult.entity,e.snappedToVertex=this.snapPickResult.snappedToVertex,e.snappedToEdge=this.snapPickResult.snappedToEdge,e.worldPos=this.snapPickResult.worldPos,e.canvasPos=this.pickCursorPos,e.snappedCanvasPos=this.snapPickResult.snappedCanvasPos,this._cameraControl.fire("hoverSnapOrSurface",e,!0),this.snapPickResult=null}else this._cameraControl.fire("hoverSnapOrSurface",this.pickResult,!0);if(this.picked&&this.pickResult&&(this.pickResult.entity||this.pickResult.worldPos)){if(this.pickResult.entity){const e=this.pickResult.entity.id;this._lastPickedEntityId!==e&&(void 0!==this._lastPickedEntityId&&this._cameraControl.fire("hoverOut",{entity:this._scene.objects[this._lastPickedEntityId]},!0),this._cameraControl.fire("hoverEnter",this.pickResult,!0),this._lastPickedEntityId=e)}this._cameraControl.fire("hover",this.pickResult,!0),this.pickResult.worldPos&&(this.pickedSurface=!0,this._cameraControl.fire("hoverSurface",this.pickResult,!0))}else void 0!==this._lastPickedEntityId&&(this._cameraControl.fire("hoverOut",{entity:this._scene.objects[this._lastPickedEntityId]},!0),this._lastPickedEntityId=void 0),this._cameraControl.fire("hoverOff",{canvasPos:this.pickCursorPos},!0);this.pickResult=null,this._needFireEvents=0}}}const Hu=d.vec2();class ju{constructor(e,t,i,s,r){this._scene=e;const o=t.pickController;let n,a,l,A=0,h=0,c=0,u=0,p=!1;const f=d.vec3();let g=!0;const m=this._scene.canvas.canvas,_=[];function v(e=!0){m.style.cursor="move",A=s.pointerCanvasPos[0],h=s.pointerCanvasPos[1],c=s.pointerCanvasPos[0],u=s.pointerCanvasPos[1],e&&(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickSurface=!0,o.update(),o.picked&&o.pickedSurface&&o.pickResult&&o.pickResult.worldPos?(p=!0,f.set(o.pickResult.worldPos)):p=!1)}document.addEventListener("keydown",this._documentKeyDownHandler=t=>{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;const s=t.keyCode;_[s]=!0}),document.addEventListener("keyup",this._documentKeyUpHandler=t=>{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;const s=t.keyCode;_[s]=!1}),m.addEventListener("mousedown",this._mouseDownHandler=t=>{if(i.active&&i.pointerEnabled)switch(t.which){case 1:_[e.input.KEY_SHIFT]||i.planView?(n=!0,v()):(n=!0,v(!1));break;case 2:a=!0,v();break;case 3:l=!0,i.panRightClick&&v()}}),document.addEventListener("mousemove",this._documentMouseMoveHandler=t=>{if(!i.active||!i.pointerEnabled)return;if(!n&&!a&&!l)return;const o=e.canvas.boundary,c=o[2],u=o[3],g=s.pointerCanvasPos[0],m=s.pointerCanvasPos[1],v=_[e.input.KEY_SHIFT]||i.planView||!i.panRightClick&&a||i.panRightClick&&l,b=document.pointerLockElement?t.movementX:g-A,y=document.pointerLockElement?t.movementY:m-h;if(v){const t=e.camera;if("perspective"===t.projection){const i=Math.abs(p?d.lenVec3(d.subVec3(f,e.camera.eye,[])):e.camera.eyeLookDist)*Math.tan(t.perspective.fov/2*Math.PI/180);r.panDeltaX+=1.5*b*i/u,r.panDeltaY+=1.5*y*i/u}else r.panDeltaX+=.5*t.ortho.scale*(b/u),r.panDeltaY+=.5*t.ortho.scale*(y/u)}else!n||a||l||i.planView||(i.firstPerson?(r.rotateDeltaY-=b/c*i.dragRotationRate/2,r.rotateDeltaX+=y/u*(i.dragRotationRate/4)):(r.rotateDeltaY-=b/c*(1.5*i.dragRotationRate),r.rotateDeltaX+=y/u*(1.5*i.dragRotationRate)));A=g,h=m}),m.addEventListener("mousemove",this._canvasMouseMoveHandler=e=>{i.active&&i.pointerEnabled&&s.mouseover&&(g=!0)}),document.addEventListener("mouseup",this._documentMouseUpHandler=e=>{if(i.active&&i.pointerEnabled)switch(e.which){case 1:case 2:case 3:n=!1,a=!1,l=!1}}),m.addEventListener("mouseup",this._mouseUpHandler=e=>{if(i.active&&i.pointerEnabled){if(3===e.which){!function(e,t){if(e){let i=e.target,s=0,r=0,o=0,n=0;for(;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,o+=i.scrollLeft,n+=i.scrollTop,i=i.offsetParent;t[0]=e.pageX+o-s,t[1]=e.pageY+n-r}else e=window.event,t[0]=e.x,t[1]=e.y}(e,Hu);const i=Hu[0],s=Hu[1];Math.abs(i-c)<3&&Math.abs(s-u)<3&&t.cameraControl.fire("rightClick",{pagePos:[Math.round(e.pageX),Math.round(e.pageY)],canvasPos:Hu,event:e},!0)}m.style.removeProperty("cursor")}}),m.addEventListener("mouseenter",this._mouseEnterHandler=()=>{i.active&&i.pointerEnabled});const b=1/60;let y=null;m.addEventListener("wheel",this._mouseWheelHandler=e=>{if(!i.active||!i.pointerEnabled)return;const t=performance.now()/1e3;var o=null!==y?t-y:0;y=t,o>.05&&(o=.05),o<b&&(o=b);const n=Math.max(-1,Math.min(1,40*-e.deltaY));if(0===n)return;const a=n/Math.abs(n);r.dollyDelta+=-a*o*i.mouseWheelDollyRate,g&&(s.followPointerDirty=!0,g=!1)},{passive:!0})}reset(){}destroy(){const e=this._scene.canvas.canvas;document.removeEventListener("keydown",this._documentKeyDownHandler),document.removeEventListener("keyup",this._documentKeyUpHandler),e.removeEventListener("mousedown",this._mouseDownHandler),document.removeEventListener("mousemove",this._documentMouseMoveHandler),e.removeEventListener("mousemove",this._canvasMouseMoveHandler),document.removeEventListener("mouseup",this._documentMouseUpHandler),e.removeEventListener("mouseup",this._mouseUpHandler),e.removeEventListener("mouseenter",this._mouseEnterHandler),e.removeEventListener("wheel",this._mouseWheelHandler)}}const Gu=d.vec3(),zu=d.vec3(),Wu=d.vec3(),Ku=d.vec3(),Xu=d.vec3(),Ju={eye:d.vec3(),look:d.vec3(),up:d.vec3()};class Yu{constructor(e,t,i,s){this._scene=e;const r=t.cameraControl,o=e.camera;this._onSceneKeyDown=e.input.on("keydown",(()=>{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;if(!s.mouseover)return;const n=r._isKeyDownForAction(r.AXIS_VIEW_RIGHT),a=r._isKeyDownForAction(r.AXIS_VIEW_BACK),l=r._isKeyDownForAction(r.AXIS_VIEW_LEFT),A=r._isKeyDownForAction(r.AXIS_VIEW_FRONT),h=r._isKeyDownForAction(r.AXIS_VIEW_TOP),c=r._isKeyDownForAction(r.AXIS_VIEW_BOTTOM);if(!(n||a||l||A||h||c))return;const u=e.aabb,p=d.getAABB3Diag(u);d.getAABB3Center(u,Gu);const f=Math.abs(p/Math.tan(t.cameraFlight.fitFOV*d.DEGTORAD)),g=1.1*p;Ju.orthoScale=g,n?(Ju.eye.set(d.addVec3(Gu,d.mulVec3Scalar(o.worldRight,f,zu),Xu)),Ju.look.set(Gu),Ju.up.set(o.worldUp)):a?(Ju.eye.set(d.addVec3(Gu,d.mulVec3Scalar(o.worldForward,f,zu),Xu)),Ju.look.set(Gu),Ju.up.set(o.worldUp)):l?(Ju.eye.set(d.addVec3(Gu,d.mulVec3Scalar(o.worldRight,-f,zu),Xu)),Ju.look.set(Gu),Ju.up.set(o.worldUp)):A?(Ju.eye.set(d.addVec3(Gu,d.mulVec3Scalar(o.worldForward,-f,zu),Xu)),Ju.look.set(Gu),Ju.up.set(o.worldUp)):h?(Ju.eye.set(d.addVec3(Gu,d.mulVec3Scalar(o.worldUp,f,zu),Xu)),Ju.look.set(Gu),Ju.up.set(d.normalizeVec3(d.mulVec3Scalar(o.worldForward,1,Wu),Ku))):c&&(Ju.eye.set(d.addVec3(Gu,d.mulVec3Scalar(o.worldUp,-f,zu),Xu)),Ju.look.set(Gu),Ju.up.set(d.normalizeVec3(d.mulVec3Scalar(o.worldForward,-1,Wu)))),!i.firstPerson&&i.followPointer&&t.pivotController.setPivotPos(Gu),t.cameraFlight.duration>0?t.cameraFlight.flyTo(Ju,(()=>{t.pivotController.getPivoting()&&i.followPointer&&t.pivotController.showPivot()})):(t.cameraFlight.jumpTo(Ju),t.pivotController.getPivoting()&&i.followPointer&&t.pivotController.showPivot())}))}reset(){}destroy(){this._scene.input.off(this._onSceneKeyDown)}}class Zu{constructor(e,t,i,s,r){this._scene=e;const o=t.pickController,n=t.pivotController,a=t.cameraControl;this._clicks=0,this._timeout=null,this._lastPickedEntityId=null;let l=!1,A=!1;const h=this._scene.canvas.canvas,c=i=>{let s;i&&i.worldPos&&(s=i.worldPos);const r=i&&i.entity?i.entity.aabb:e.aabb;if(s){const i=e.camera;d.subVec3(i.eye,i.look,[]),t.cameraFlight.flyTo({aabb:r})}else t.cameraFlight.flyTo({aabb:r})},u=e.tickify(this._canvasMouseMoveHandler=t=>{if(!i.active||!i.pointerEnabled)return;if(l||A)return;const r=a.hasSubs("hover"),n=a.hasSubs("hoverEnter"),h=a.hasSubs("hoverOut"),c=a.hasSubs("hoverOff"),u=a.hasSubs("hoverSurface"),d=a.hasSubs("hoverSnapOrSurface");if(r||n||h||c||u||d)if(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=!0,o.schedulePickSurface=u,o.scheduleSnapOrPick=d,o.update(),o.pickResult){if(o.pickResult.entity){const t=o.pickResult.entity.id;this._lastPickedEntityId!==t&&(void 0!==this._lastPickedEntityId&&a.fire("hoverOut",{entity:e.objects[this._lastPickedEntityId]},!0),a.fire("hoverEnter",o.pickResult,!0),this._lastPickedEntityId=t)}a.fire("hover",o.pickResult,!0),(o.pickResult.worldPos||o.pickResult.snappedWorldPos)&&a.fire("hoverSurface",o.pickResult,!0)}else void 0!==this._lastPickedEntityId&&(a.fire("hoverOut",{entity:e.objects[this._lastPickedEntityId]},!0),this._lastPickedEntityId=void 0),a.fire("hoverOff",{canvasPos:o.pickCursorPos},!0)});h.addEventListener("mousemove",u),h.addEventListener("mousedown",this._canvasMouseDownHandler=t=>{1===t.which&&(l=!0),3===t.which&&(A=!0);if(1===t.which&&i.active&&i.pointerEnabled&&(s.mouseDownClientX=t.clientX,s.mouseDownClientY=t.clientY,s.mouseDownCursorX=s.pointerCanvasPos[0],s.mouseDownCursorY=s.pointerCanvasPos[1],!i.firstPerson&&i.followPointer&&(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickSurface=!0,o.update(),1===t.which))){const t=o.pickResult;t&&t.worldPos?(n.setPivotPos(t.worldPos),n.startPivot()):(i.smartPivot?n.setCanvasPivotPos(s.pointerCanvasPos):n.setPivotPos(e.camera.look),n.startPivot())}}),document.addEventListener("mouseup",this._documentMouseUpHandler=e=>{1===e.which&&(l=!1),3===e.which&&(A=!1),n.getPivoting()&&n.endPivot()}),h.addEventListener("mouseup",this._canvasMouseUpHandler=r=>{if(!i.active||!i.pointerEnabled)return;if(!(1===r.which))return;if(n.hidePivot(),Math.abs(r.clientX-s.mouseDownClientX)>3||Math.abs(r.clientY-s.mouseDownClientY)>3)return;const l=a.hasSubs("picked"),A=a.hasSubs("pickedNothing"),h=a.hasSubs("pickedSurface"),u=a.hasSubs("doublePicked"),p=a.hasSubs("doublePickedSurface"),f=a.hasSubs("doublePickedNothing");if(!(i.doublePickFlyTo||u||p||f))return(l||A||h)&&(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=!0,o.schedulePickSurface=h,o.update(),o.pickResult?(a.fire("picked",o.pickResult,!0),o.pickedSurface&&a.fire("pickedSurface",o.pickResult,!0)):a.fire("pickedNothing",{canvasPos:s.pointerCanvasPos},!0)),void(this._clicks=0);if(this._clicks++,1===this._clicks){o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=i.doublePickFlyTo,o.schedulePickSurface=h,o.update();const e=o.pickResult,r=o.pickedSurface;this._timeout=setTimeout((()=>{e?(a.fire("picked",e,!0),r&&(a.fire("pickedSurface",e,!0),!i.firstPerson&&i.followPointer&&(t.pivotController.setPivotPos(e.worldPos),t.pivotController.startPivot()&&t.pivotController.showPivot()))):a.fire("pickedNothing",{canvasPos:s.pointerCanvasPos},!0),this._clicks=0}),i.doubleClickTimeFrame)}else{if(null!==this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null),o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=i.doublePickFlyTo||u||p,o.schedulePickSurface=o.schedulePickEntity&&p,o.update(),o.pickResult){if(a.fire("doublePicked",o.pickResult,!0),o.pickedSurface&&a.fire("doublePickedSurface",o.pickResult,!0),i.doublePickFlyTo&&(c(o.pickResult),!i.firstPerson&&i.followPointer)){const e=o.pickResult.entity.aabb,i=d.getAABB3Center(e);t.pivotController.setPivotPos(i),t.pivotController.startPivot()&&t.pivotController.showPivot()}}else if(a.fire("doublePickedNothing",{canvasPos:s.pointerCanvasPos},!0),i.doublePickFlyTo&&(c(),!i.firstPerson&&i.followPointer)){const i=e.aabb,s=d.getAABB3Center(i);t.pivotController.setPivotPos(s),t.pivotController.startPivot()&&t.pivotController.showPivot()}this._clicks=0}},!1)}reset(){this._clicks=0,this._lastPickedEntityId=null,this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null)}destroy(){const e=this._scene.canvas.canvas;e.removeEventListener("mousemove",this._canvasMouseMoveHandler),e.removeEventListener("mousedown",this._canvasMouseDownHandler),document.removeEventListener("mouseup",this._documentMouseUpHandler),e.removeEventListener("mouseup",this._canvasMouseUpHandler),this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null)}}class qu{constructor(e,t,i,s,r){this._scene=e;const o=e.input,n=[],a=e.canvas.canvas;let l=!0;this._onSceneMouseMove=o.on("mousemove",(()=>{l=!0})),this._onSceneKeyDown=o.on("keydown",(t=>{i.active&&i.pointerEnabled&&e.input.keyboardEnabled&&s.mouseover&&(n[t]=!0,t===o.KEY_SHIFT&&(a.style.cursor="move"))})),this._onSceneKeyUp=o.on("keyup",(s=>{i.active&&i.pointerEnabled&&e.input.keyboardEnabled&&(n[s]=!1,s===o.KEY_SHIFT&&(a.style.cursor=null),t.pivotController.getPivoting()&&t.pivotController.endPivot())})),this._onTick=e.on("tick",(a=>{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;if(!s.mouseover)return;const A=t.cameraControl,h=a.deltaTime/1e3;if(!i.planView){const e=A._isKeyDownForAction(A.ROTATE_Y_POS,n),s=A._isKeyDownForAction(A.ROTATE_Y_NEG,n),o=A._isKeyDownForAction(A.ROTATE_X_POS,n),a=A._isKeyDownForAction(A.ROTATE_X_NEG,n),l=h*i.keyboardRotationRate;(e||s||o||a)&&(!i.firstPerson&&i.followPointer&&t.pivotController.startPivot(),e?r.rotateDeltaY+=l:s&&(r.rotateDeltaY-=l),o?r.rotateDeltaX+=l:a&&(r.rotateDeltaX-=l),!i.firstPerson&&i.followPointer&&t.pivotController.startPivot())}if(!n[o.KEY_CTRL]&&!n[o.KEY_ALT]){const e=A._isKeyDownForAction(A.DOLLY_BACKWARDS,n),o=A._isKeyDownForAction(A.DOLLY_FORWARDS,n);if(e||o){const n=h*i.keyboardDollyRate;!i.firstPerson&&i.followPointer&&t.pivotController.startPivot(),o?r.dollyDelta-=n:e&&(r.dollyDelta+=n),l&&(s.followPointerDirty=!0,l=!1)}}const c=A._isKeyDownForAction(A.PAN_FORWARDS,n),u=A._isKeyDownForAction(A.PAN_BACKWARDS,n),d=A._isKeyDownForAction(A.PAN_LEFT,n),p=A._isKeyDownForAction(A.PAN_RIGHT,n),f=A._isKeyDownForAction(A.PAN_UP,n),g=A._isKeyDownForAction(A.PAN_DOWN,n),m=(n[o.KEY_ALT]?.3:1)*h*i.keyboardPanRate;(c||u||d||p||f||g)&&(!i.firstPerson&&i.followPointer&&t.pivotController.startPivot(),g?r.panDeltaY+=m:f&&(r.panDeltaY+=-m),p?r.panDeltaX+=-m:d&&(r.panDeltaX+=m),u?r.panDeltaZ+=m:c&&(r.panDeltaZ+=-m))}))}reset(){}destroy(){this._scene.off(this._onTick),this._scene.input.off(this._onSceneMouseMove),this._scene.input.off(this._onSceneKeyDown),this._scene.input.off(this._onSceneKeyUp)}}const $u=d.vec3();class ed{constructor(e,t,i,s,r){this._scene=e;const o=e.camera,n=t.pickController,a=t.pivotController,l=t.panController;let A=1,h=1,c=null;this._onTick=e.on("tick",(()=>{if(!i.active||!i.pointerEnabled)return;let t="default";if(Math.abs(r.dollyDelta)<.001&&(r.dollyDelta=0),Math.abs(r.rotateDeltaX)<.001&&(r.rotateDeltaX=0),Math.abs(r.rotateDeltaY)<.001&&(r.rotateDeltaY=0),0===r.rotateDeltaX&&0===r.rotateDeltaY||(r.dollyDelta=0),i.followPointer){if(--A<=0&&(A=1,0!==r.dollyDelta)){if(0===r.rotateDeltaY&&0===r.rotateDeltaX&&i.followPointer&&s.followPointerDirty&&(n.pickCursorPos=s.pointerCanvasPos,n.schedulePickSurface=!0,n.update(),n.pickResult&&n.pickResult.worldPos?c=n.pickResult.worldPos:(h=1,c=null),s.followPointerDirty=!1),c){const t=Math.abs(d.lenVec3(d.subVec3(c,e.camera.eye,$u)));h=t/i.dollyProximityThreshold}h<i.dollyMinSpeed&&(h=i.dollyMinSpeed)}}else h=1,c=null;const u=r.dollyDelta*h;if(0===r.rotateDeltaY&&0===r.rotateDeltaX||(!i.firstPerson&&i.followPointer&&a.getPivoting()?(a.continuePivot(r.rotateDeltaY,r.rotateDeltaX),a.showPivot()):(0!==r.rotateDeltaX&&(i.firstPerson?o.pitch(-r.rotateDeltaX):o.orbitPitch(r.rotateDeltaX)),0!==r.rotateDeltaY&&(i.firstPerson?o.yaw(r.rotateDeltaY):o.orbitYaw(r.rotateDeltaY))),r.rotateDeltaX*=i.rotationInertia,r.rotateDeltaY*=i.rotationInertia,t="grabbing"),Math.abs(r.panDeltaX)<.001&&(r.panDeltaX=0),Math.abs(r.panDeltaY)<.001&&(r.panDeltaY=0),Math.abs(r.panDeltaZ)<.001&&(r.panDeltaZ=0),0!==r.panDeltaX||0!==r.panDeltaY||0!==r.panDeltaZ){const e=d.vec3();let s,n;if(e[0]=r.panDeltaX,e[1]=r.panDeltaY,e[2]=r.panDeltaZ,i.constrainVertical){o.xUp?(s=o.eye[0],n=o.look[0]):o.yUp?(s=o.eye[1],n=o.look[1]):o.zUp&&(s=o.eye[2],n=o.look[2]),o.pan(e);const t=o.eye,i=o.look;o.xUp?(t[0]=s,i[0]=n):o.yUp?(t[1]=s,i[1]=n):o.zUp&&(t[2]=s,i[2]=n),o.eye=t,o.look=i}else o.pan(e);t="grabbing"}if(r.panDeltaX*=i.panInertia,r.panDeltaY*=i.panInertia,r.panDeltaZ*=i.panInertia,0!==u){if(t=u<0?"zoom-in":"zoom-out",i.firstPerson){let e,t;if(i.constrainVertical&&(o.xUp?(e=o.eye[0],t=o.look[0]):o.yUp?(e=o.eye[1],t=o.look[1]):o.zUp&&(e=o.eye[2],t=o.look[2])),i.followPointer){l.dollyToCanvasPos(c,s.pointerCanvasPos,-u)&&(s.followPointerDirty=!0)}else o.pan([0,0,u]),o.ortho.scale=o.ortho.scale-u;if(i.constrainVertical){const i=o.eye,s=o.look;o.xUp?(i[0]=e,s[0]=t):o.yUp?(i[1]=e,s[1]=t):o.zUp&&(i[2]=e,s[2]=t),o.eye=i,o.look=s}}else if(i.planView)if(i.followPointer){l.dollyToCanvasPos(c,s.pointerCanvasPos,-u)&&(s.followPointerDirty=!0)}else o.ortho.scale=o.ortho.scale+u,o.zoom(u);else if(i.followPointer){l.dollyToCanvasPos(c,s.pointerCanvasPos,-u)&&(s.followPointerDirty=!0)}else o.ortho.scale=o.ortho.scale+u,o.zoom(u);r.dollyDelta*=i.dollyInertia}n.fireEvents(),document.body.style.cursor=t}))}destroy(){this._scene.off(this._onTick)}}class td{constructor(e,t,i,s,r){this._scene=e;const o=this._scene.canvas.canvas;o.addEventListener("mouseenter",this._mouseEnterHandler=()=>{s.mouseover=!0}),o.addEventListener("mouseleave",this._mouseLeaveHandler=()=>{s.mouseover=!1,o.style.cursor=null}),document.addEventListener("mousemove",this._mouseMoveHandler=e=>{id(e,o,s.pointerCanvasPos)}),o.addEventListener("mousedown",this._mouseDownHandler=e=>{i.active&&i.pointerEnabled&&(id(e,o,s.pointerCanvasPos),s.mouseover=!0)}),o.addEventListener("mouseup",this._mouseUpHandler=e=>{i.active&&i.pointerEnabled})}reset(){}destroy(){const e=this._scene.canvas.canvas;document.removeEventListener("mousemove",this._mouseMoveHandler),e.removeEventListener("mouseenter",this._mouseEnterHandler),e.removeEventListener("mouseleave",this._mouseLeaveHandler),e.removeEventListener("mousedown",this._mouseDownHandler),e.removeEventListener("mouseup",this._mouseUpHandler)}}function id(e,t,i){if(e){const{left:s,top:r}=t.getBoundingClientRect();i[0]=e.clientX-s,i[1]=e.clientY-r}else e=window.event,i[0]=e.x,i[1]=e.y;return i}const sd=function(e,t){if(e){let i=e.target,s=0,r=0;for(;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;t[0]=e.pageX-s,t[1]=e.pageY-r}else e=window.event,t[0]=e.x,t[1]=e.y;return t};class rd{constructor(e,t,i,s,r){this._scene=e;const o=t.pickController,n=t.pivotController,a=d.vec2(),l=d.vec2(),A=d.vec2(),h=d.vec2(),c=[],u=this._scene.canvas.canvas;let p=0,f=!1;this._onTick=e.on("tick",(()=>{f=!1})),u.addEventListener("touchstart",this._canvasTouchStartHandler=t=>{if(!i.active||!i.pointerEnabled)return;t.preventDefault();const r=t.touches,l=t.changedTouches;for(s.touchStartTime=Date.now(),1===r.length&&1===l.length&&(sd(r[0],a),i.followPointer&&(o.pickCursorPos=a,o.schedulePickSurface=!0,o.update(),i.planView||(o.picked&&o.pickedSurface&&o.pickResult&&o.pickResult.worldPos?(n.setPivotPos(o.pickResult.worldPos),!i.firstPerson&&n.startPivot()&&n.showPivot()):(i.smartPivot?n.setCanvasPivotPos(s.pointerCanvasPos):n.setPivotPos(e.camera.look),!i.firstPerson&&n.startPivot()&&n.showPivot()))));c.length<r.length;)c.push(d.vec2());for(let e=0,t=r.length;e<t;++e)sd(r[e],c[e]);p=r.length}),u.addEventListener("touchend",this._canvasTouchEndHandler=()=>{n.getPivoting()&&n.endPivot()}),u.addEventListener("touchmove",this._canvasTouchMoveHandler=t=>{if(!i.active||!i.pointerEnabled)return;if(t.stopPropagation(),t.preventDefault(),f)return;f=!0;const n=e.canvas.boundary,a=n[2],u=n[3],g=t.touches;if(t.touches.length===p){if(1===p){sd(g[0],l),d.subVec2(l,c[0],h);const t=h[0],o=h[1];if(null!==s.longTouchTimeout&&(Math.abs(t)>i.longTapRadius||Math.abs(o)>i.longTapRadius)&&(clearTimeout(s.longTouchTimeout),s.longTouchTimeout=null),i.planView){const s=e.camera;if("perspective"===s.projection){const n=Math.abs(e.camera.eyeLookDist)*Math.tan(s.perspective.fov/2*Math.PI/180);r.panDeltaX+=t*n/u*i.touchPanRate,r.panDeltaY+=o*n/u*i.touchPanRate}else r.panDeltaX+=.5*s.ortho.scale*(t/u)*i.touchPanRate,r.panDeltaY+=.5*s.ortho.scale*(o/u)*i.touchPanRate}else r.rotateDeltaY-=t/a*(1*i.dragRotationRate),r.rotateDeltaX+=o/u*(1.5*i.dragRotationRate)}else if(2===p){const t=g[0],n=g[1];sd(t,l),sd(n,A);const a=d.geometricMeanVec2(c[0],c[1]),h=d.geometricMeanVec2(l,A),p=d.vec2();d.subVec2(a,h,p);const f=p[0],m=p[1],_=e.camera,v=d.distVec2([t.pageX,t.pageY],[n.pageX,n.pageY]),b=(d.distVec2(c[0],c[1])-v)*i.touchDollyRate;if(r.dollyDelta=b,Math.abs(b)<1)if("perspective"===_.projection){const t=o.pickResult?o.pickResult.worldPos:e.center,s=Math.abs(d.lenVec3(d.subVec3(t,e.camera.eye,[])))*Math.tan(_.perspective.fov/2*Math.PI/180);r.panDeltaX-=f*s/u*i.touchPanRate,r.panDeltaY-=m*s/u*i.touchPanRate}else r.panDeltaX-=.5*_.ortho.scale*(f/u)*i.touchPanRate,r.panDeltaY-=.5*_.ortho.scale*(m/u)*i.touchPanRate;s.pointerCanvasPos=h}for(let e=0;e<p;++e)sd(g[e],c[e])}})}reset(){}destroy(){const e=this._scene.canvas.canvas;e.removeEventListener("touchstart",this._canvasTouchStartHandler),e.removeEventListener("touchend",this._canvasTouchEndHandler),e.removeEventListener("touchmove",this._canvasTouchMoveHandler),this._scene.off(this._onTick)}}const od=function(e,t){if(e){let i=e.target,s=0,r=0;for(;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;t[0]=e.pageX-s,t[1]=e.pageY-r}else e=window.event,t[0]=e.x,t[1]=e.y;return t};class nd{constructor(e,t,i,s,r){this._scene=e;const o=t.pickController,n=t.cameraControl;let a;const l=[],A=new Float32Array(2);let h=-1,c=-1;const u=this._scene.canvas.canvas,p=i=>{let s;i&&i.worldPos&&(s=i.worldPos);const r=i?i.entity.aabb:e.aabb;if(s){const i=e.camera;d.subVec3(i.eye,i.look,[]),t.cameraFlight.flyTo({aabb:r})}else t.cameraFlight.flyTo({aabb:r})};u.addEventListener("touchstart",this._canvasTouchStartHandler=e=>{if(!i.active||!i.pointerEnabled)return;null!==s.longTouchTimeout&&(clearTimeout(s.longTouchTimeout),s.longTouchTimeout=null);const r=e.touches,o=e.changedTouches;if(a=Date.now(),1===r.length&&1===o.length){h=a,od(r[0],A);const o=A[0],n=A[1],l=r[0].pageX,c=r[0].pageY;s.longTouchTimeout=setTimeout((()=>{t.cameraControl.fire("rightClick",{pagePos:[Math.round(l),Math.round(c)],canvasPos:[Math.round(o),Math.round(n)],event:e},!0),s.longTouchTimeout=null}),i.longTapTimeout)}else h=-1;for(;l.length<r.length;)l.push(new Float32Array(2));for(let e=0,t=r.length;e<t;++e)od(r[e],l[e]);l.length=r.length},{passive:!0}),u.addEventListener("touchend",this._canvasTouchEndHandler=e=>{if(!i.active||!i.pointerEnabled)return;const t=Date.now(),r=e.touches,a=e.changedTouches,u=n.hasSubs("pickedSurface");null!==s.longTouchTimeout&&(clearTimeout(s.longTouchTimeout),s.longTouchTimeout=null),0===r.length&&1===a.length&&h>-1&&t-h<150&&(c>-1&&h-c<325?(od(a[0],o.pickCursorPos),o.schedulePickEntity=!0,o.schedulePickSurface=u,o.update(),o.pickResult?(o.pickResult.touchInput=!0,n.fire("doublePicked",o.pickResult),o.pickedSurface&&n.fire("doublePickedSurface",o.pickResult),i.doublePickFlyTo&&p(o.pickResult)):(n.fire("doublePickedNothing"),i.doublePickFlyTo&&p()),c=-1):d.distVec2(l[0],A)<4&&(od(a[0],o.pickCursorPos),o.schedulePickEntity=!0,o.schedulePickSurface=u,o.update(),o.pickResult?(o.pickResult.touchInput=!0,n.fire("picked",o.pickResult),o.pickedSurface&&n.fire("pickedSurface",o.pickResult)):n.fire("pickedNothing"),c=t),h=-1),l.length=r.length;for(let e=0,t=r.length;e<t;++e)l[e][0]=r[e].pageX,l[e][1]=r[e].pageY},{passive:!0})}reset(){}destroy(){const e=this._scene.canvas.canvas;e.removeEventListener("touchstart",this._canvasTouchStartHandler),e.removeEventListener("touchend",this._canvasTouchEndHandler)}}class ad extends R{constructor(e,t={}){super(e,t),this.PAN_LEFT=0,this.PAN_RIGHT=1,this.PAN_UP=2,this.PAN_DOWN=3,this.PAN_FORWARDS=4,this.PAN_BACKWARDS=5,this.ROTATE_X_POS=6,this.ROTATE_X_NEG=7,this.ROTATE_Y_POS=8,this.ROTATE_Y_NEG=9,this.DOLLY_FORWARDS=10,this.DOLLY_BACKWARDS=11,this.AXIS_VIEW_RIGHT=12,this.AXIS_VIEW_BACK=13,this.AXIS_VIEW_LEFT=14,this.AXIS_VIEW_FRONT=15,this.AXIS_VIEW_TOP=16,this.AXIS_VIEW_BOTTOM=17,this._keyMap={},this.scene.canvas.canvas.oncontextmenu=e=>{e.preventDefault()},this._configs={longTapTimeout:600,longTapRadius:5,active:!0,keyboardLayout:"qwerty",navMode:"orbit",planView:!1,firstPerson:!1,followPointer:!0,doublePickFlyTo:!0,panRightClick:!0,showPivot:!1,pointerEnabled:!0,constrainVertical:!1,smartPivot:!1,doubleClickTimeFrame:250,snapToVertex:true,snapToEdge:true,snapRadius:30,dragRotationRate:360,keyboardRotationRate:90,rotationInertia:0,keyboardPanRate:1,touchPanRate:1,panInertia:.5,keyboardDollyRate:10,mouseWheelDollyRate:100,touchDollyRate:.2,dollyInertia:0,dollyProximityThreshold:30,dollyMinSpeed:.04},this._states={pointerCanvasPos:d.vec2(),mouseover:!1,followPointerDirty:!0,mouseDownClientX:0,mouseDownClientY:0,mouseDownCursorX:0,mouseDownCursorY:0,touchStartTime:null,activeTouches:[],tapStartPos:d.vec2(),tapStartTime:-1,lastTapTime:-1,longTouchTimeout:null},this._updates={rotateDeltaX:0,rotateDeltaY:0,panDeltaX:0,panDeltaY:0,panDeltaZ:0,dollyDelta:0};const i=this.scene;this._controllers={cameraControl:this,pickController:new Vu(this,this._configs),pivotController:new Qu(i,this._configs),panController:new Tu(i),cameraFlight:new $c(this,{duration:.5})},this._handlers=[new td(this.scene,this._controllers,this._configs,this._states,this._updates),new rd(this.scene,this._controllers,this._configs,this._states,this._updates),new ju(this.scene,this._controllers,this._configs,this._states,this._updates),new Yu(this.scene,this._controllers,this._configs,this._states,this._updates),new Zu(this.scene,this._controllers,this._configs,this._states,this._updates),new nd(this.scene,this._controllers,this._configs,this._states,this._updates),new qu(this.scene,this._controllers,this._configs,this._states,this._updates)],this._cameraUpdater=new ed(this.scene,this._controllers,this._configs,this._states,this._updates),this.navMode=t.navMode,t.planView&&(this.planView=t.planView),this.constrainVertical=t.constrainVertical,t.keyboardLayout?this.keyboardLayout=t.keyboardLayout:this.keyMap=t.keyMap,this.doublePickFlyTo=t.doublePickFlyTo,this.panRightClick=t.panRightClick,this.active=t.active,this.followPointer=t.followPointer,this.rotationInertia=t.rotationInertia,this.keyboardPanRate=t.keyboardPanRate,this.touchPanRate=t.touchPanRate,this.keyboardRotationRate=t.keyboardRotationRate,this.dragRotationRate=t.dragRotationRate,this.touchDollyRate=t.touchDollyRate,this.dollyInertia=t.dollyInertia,this.dollyProximityThreshold=t.dollyProximityThreshold,this.dollyMinSpeed=t.dollyMinSpeed,this.panInertia=t.panInertia,this.pointerEnabled=!0,this.keyboardDollyRate=t.keyboardDollyRate,this.mouseWheelDollyRate=t.mouseWheelDollyRate}set keyMap(e){if(e=e||"qwerty",y.isString(e)){const t=this.scene.input,i={};switch(e){default:this.error("Unsupported value for 'keyMap': "+e+" defaulting to 'qwerty'");case"qwerty":i[this.PAN_LEFT]=[t.KEY_A],i[this.PAN_RIGHT]=[t.KEY_D],i[this.PAN_UP]=[t.KEY_Z],i[this.PAN_DOWN]=[t.KEY_X],i[this.PAN_BACKWARDS]=[],i[this.PAN_FORWARDS]=[],i[this.DOLLY_FORWARDS]=[t.KEY_W,t.KEY_ADD],i[this.DOLLY_BACKWARDS]=[t.KEY_S,t.KEY_SUBTRACT],i[this.ROTATE_X_POS]=[t.KEY_DOWN_ARROW],i[this.ROTATE_X_NEG]=[t.KEY_UP_ARROW],i[this.ROTATE_Y_POS]=[t.KEY_Q,t.KEY_LEFT_ARROW],i[this.ROTATE_Y_NEG]=[t.KEY_E,t.KEY_RIGHT_ARROW],i[this.AXIS_VIEW_RIGHT]=[t.KEY_NUM_1],i[this.AXIS_VIEW_BACK]=[t.KEY_NUM_2],i[this.AXIS_VIEW_LEFT]=[t.KEY_NUM_3],i[this.AXIS_VIEW_FRONT]=[t.KEY_NUM_4],i[this.AXIS_VIEW_TOP]=[t.KEY_NUM_5],i[this.AXIS_VIEW_BOTTOM]=[t.KEY_NUM_6];break;case"azerty":i[this.PAN_LEFT]=[t.KEY_Q],i[this.PAN_RIGHT]=[t.KEY_D],i[this.PAN_UP]=[t.KEY_W],i[this.PAN_DOWN]=[t.KEY_X],i[this.PAN_BACKWARDS]=[],i[this.PAN_FORWARDS]=[],i[this.DOLLY_FORWARDS]=[t.KEY_Z,t.KEY_ADD],i[this.DOLLY_BACKWARDS]=[t.KEY_S,t.KEY_SUBTRACT],i[this.ROTATE_X_POS]=[t.KEY_DOWN_ARROW],i[this.ROTATE_X_NEG]=[t.KEY_UP_ARROW],i[this.ROTATE_Y_POS]=[t.KEY_A,t.KEY_LEFT_ARROW],i[this.ROTATE_Y_NEG]=[t.KEY_E,t.KEY_RIGHT_ARROW],i[this.AXIS_VIEW_RIGHT]=[t.KEY_NUM_1],i[this.AXIS_VIEW_BACK]=[t.KEY_NUM_2],i[this.AXIS_VIEW_LEFT]=[t.KEY_NUM_3],i[this.AXIS_VIEW_FRONT]=[t.KEY_NUM_4],i[this.AXIS_VIEW_TOP]=[t.KEY_NUM_5],i[this.AXIS_VIEW_BOTTOM]=[t.KEY_NUM_6]}this._keyMap=i}else{const t=e;this._keyMap=t}}get keyMap(){return this._keyMap}_isKeyDownForAction(e,t){const i=this._keyMap[e];if(!i)return!1;t||(t=this.scene.input.keyDown);for(let e=0,s=i.length;e<s;e++){if(t[i[e]])return!0}return!1}set pivotElement(e){this._controllers.pivotController.setPivotElement(e)}set active(e){e=!1!==e,this._configs.active=e,this._handlers[1]._active=e,this._handlers[5]._active=e}get active(){return this._configs.active}set snapToVertex(e){this._configs.snapToVertex=!!e}get snapToVertex(){return this._configs.snapToVertex}set snapToEdge(e){this._configs.snapToEdge=!!e}get snapToEdge(){return this._configs.snapToEdge}set snapRadius(e){e=e||30,this._configs.snapRadius=e}get snapRadius(){return this._configs.snapRadius}set navMode(e){"firstPerson"!==(e=e||"orbit")&&"orbit"!==e&&"planView"!==e&&(this.error("Unsupported value for navMode: "+e+" - supported values are 'orbit', 'firstPerson' and 'planView' - defaulting to 'orbit'"),e="orbit"),this._configs.firstPerson="firstPerson"===e,this._configs.planView="planView"===e,(this._configs.firstPerson||this._configs.planView)&&(this._controllers.pivotController.hidePivot(),this._controllers.pivotController.endPivot()),this._configs.navMode=e}get navMode(){return this._configs.navMode}set pointerEnabled(e){this._reset(),this._configs.pointerEnabled=!!e}_reset(){for(let e=0,t=this._handlers.length;e<t;e++){const t=this._handlers[e];t.reset&&t.reset()}this._updates.panDeltaX=0,this._updates.panDeltaY=0,this._updates.rotateDeltaX=0,this._updates.rotateDeltaY=0,this._updates.dolyDelta=0}get pointerEnabled(){return this._configs.pointerEnabled}set followPointer(e){this._configs.followPointer=!1!==e}get followPointer(){return this._configs.followPointer}set pivotPos(e){this._controllers.pivotController.setPivotPos(e)}get pivotPos(){return this._controllers.pivotController.getPivotPos()}set dollyToPointer(e){this.warn("dollyToPointer property is deprecated - replaced with followPointer"),this.followPointer=e}get dollyToPointer(){return this.warn("dollyToPointer property is deprecated - replaced with followPointer"),this.followPointer}set panToPointer(e){this.warn("panToPointer property is deprecated - replaced with followPointer")}get panToPointer(){return this.warn("panToPointer property is deprecated - replaced with followPointer"),!1}set planView(e){this._configs.planView=!!e,this._configs.firstPerson=!1,this._configs.planView&&(this._controllers.pivotController.hidePivot(),this._controllers.pivotController.endPivot()),this.warn("planView property is deprecated - replaced with navMode")}get planView(){return this.warn("planView property is deprecated - replaced with navMode"),this._configs.planView}set firstPerson(e){this.warn("firstPerson property is deprecated - replaced with navMode"),this._configs.firstPerson=!!e,this._configs.planView=!1,this._configs.firstPerson&&(this._controllers.pivotController.hidePivot(),this._controllers.pivotController.endPivot())}get firstPerson(){return this.warn("firstPerson property is deprecated - replaced with navMode"),this._configs.firstPerson}set constrainVertical(e){this._configs.constrainVertical=!!e}get constrainVertical(){return this._configs.constrainVertical}set doublePickFlyTo(e){this._configs.doublePickFlyTo=!1!==e}get doublePickFlyTo(){return this._configs.doublePickFlyTo}set panRightClick(e){this._configs.panRightClick=!1!==e}get panRightClick(){return this._configs.panRightClick}set rotationInertia(e){this._configs.rotationInertia=null!=e?e:0}get rotationInertia(){return this._configs.rotationInertia}set keyboardPanRate(e){this._configs.keyboardPanRate=null!=e?e:5}set touchPanRate(e){this._configs.touchPanRate=null!=e?e:1}get touchPanRate(){return this._configs.touchPanRate}get keyboardPanRate(){return this._configs.keyboardPanRate}set keyboardRotationRate(e){this._configs.keyboardRotationRate=null!=e?e:90}get keyboardRotationRate(){return this._configs.keyboardRotationRate}set dragRotationRate(e){this._configs.dragRotationRate=null!=e?e:360}get dragRotationRate(){return this._configs.dragRotationRate}set keyboardDollyRate(e){this._configs.keyboardDollyRate=null!=e?e:15}get keyboardDollyRate(){return this._configs.keyboardDollyRate}set touchDollyRate(e){this._configs.touchDollyRate=null!=e?e:.2}get touchDollyRate(){return this._configs.touchDollyRate}set mouseWheelDollyRate(e){this._configs.mouseWheelDollyRate=null!=e?e:100}get mouseWheelDollyRate(){return this._configs.mouseWheelDollyRate}set dollyInertia(e){this._configs.dollyInertia=null!=e?e:0}get dollyInertia(){return this._configs.dollyInertia}set dollyProximityThreshold(e){this._configs.dollyProximityThreshold=null!=e?e:35}get dollyProximityThreshold(){return this._configs.dollyProximityThreshold}set dollyMinSpeed(e){this._configs.dollyMinSpeed=null!=e?e:.04}get dollyMinSpeed(){return this._configs.dollyMinSpeed}set panInertia(e){this._configs.panInertia=null!=e?e:.5}get panInertia(){return this._configs.panInertia}set keyboardLayout(e){"qwerty"!==(e=e||"qwerty")&&"azerty"!==e&&(this.error("Unsupported value for keyboardLayout - defaulting to 'qwerty'"),e="qwerty"),this._configs.keyboardLayout=e,this.keyMap=this._configs.keyboardLayout}get keyboardLayout(){return this._configs.keyboardLayout}enablePivotSphere(e={}){this._controllers.pivotController.enablePivotSphere(e)}disablePivotSphere(){this._controllers.pivotController.disablePivotSphere()}set smartPivot(e){this._configs.smartPivot=!1!==e}get smartPivot(){return this._configs.smartPivot}set doubleClickTimeFrame(e){this._configs.doubleClickTimeFrame=null!=e?e:250}get doubleClickTimeFrame(){return this._configs.doubleClickTimeFrame}destroy(){this._destroyHandlers(),this._destroyControllers(),this._cameraUpdater.destroy(),super.destroy()}_destroyHandlers(){for(let e=0,t=this._handlers.length;e<t;e++){const t=this._handlers[e];t.destroy&&t.destroy()}}_destroyControllers(){for(let e=0,t=this._controllers.length;e<t;e++){const t=this._controllers[e];t.destroy&&t.destroy()}}}class ld{constructor(e,t,i,s,r){this.name=e,this.type=i,this.value=t,this.valueType=s,this.description=r}}class Ad{constructor(e){if(this.id=e.id,this.originalSystemId=e.originalSystemId,this.metaModels=[],this.name=e.name,this.type=e.type,this.properties=[],e.properties){const t=e.properties;for(let e=0,i=t.length;e<i;e++){const i=t[e];this.properties.push(new ld(i.name,i.value,i.type,i.valueType,i.description))}}}}class hd{constructor(e){this.metaModels=[],this.id=e.id,this.parentId=e.parentId,this.parent=null,this.originalSystemId=e.originalSystemId,this.name=e.name,this.type=e.type,this.propertySetIds=e.propertySetIds,this.propertySets=[],this.attributes=e.attributes||{},void 0!==e.external&&null!==e.external&&(this.external=e.external)}get metaModel(){return 1==this.metaModels.length?this.metaModels[0]:null}getObjectIDsInSubtree(){const e=[];return function t(i){if(!i)return;e.push(i.id);const s=i.children;if(s)for(var r=0,o=s.length;r<o;r++)t(s[r])}(this),e}withMetaObjectsInSubtree(e){!function t(i){if(!i)return;e(i);const s=i.children;if(s)for(var r=0,o=s.length;r<o;r++)t(s[r])}(this)}getObjectIDsInSubtreeByType(e){const t={};for(var i=0,s=e.length;i<s;i++)t[e[i]]=e[i];const r=[];return function e(i){if(!i)return;t[i.type]&&r.push(i.id);const s=i.children;if(s)for(var o=0,n=s.length;o<n;o++)e(s[o])}(this),r}getJSON(){var e={id:this.id,type:this.type,name:this.name};return this.parent&&(e.parent=this.parent.id),e}}class cd{constructor(e){this.id=e.id,this.projectId=e.projectId,this.revisionId=e.revisionId,this.author=e.author,this.createdAt=e.createdAt,this.creatingApplication=e.creatingApplication,this.schema=e.schema,this.metaScene=e.metaScene,this.propertySets=[],this.rootMetaObjects=[],this.metaObjects=[],this.graph=e.graph||{},this.metaScene.metaModels[this.id]=this,this.finalized=!1}get rootMetaObject(){return 1==this.rootMetaObjects.length?this.rootMetaObjects[0]:null}loadData(e,t={}){if(this.finalized)throw"MetaScene already finalized - can't add more data";this._globalizeIDs(e,t);const i=this.metaScene,s=e.properties;if(e.propertySets)for(let t=0,r=e.propertySets.length;t<r;t++){const r=e.propertySets[t];r.properties||(r.properties=[]);let o=i.propertySets[r.id];o||(s&&this._decompressProperties(s,r.properties),o=new Ad({id:r.id,originalSystemId:r.originalSystemId||r.id,type:r.type,name:r.name,properties:r.properties}),i.propertySets[o.id]=o),o.metaModels.push(this),this.propertySets.push(o)}if(e.metaObjects)for(let t=0,s=e.metaObjects.length;t<s;t++){const s=e.metaObjects[t],r=s.id;let o=i.metaObjects[r];if(!o){const e=s.type,t=s.originalSystemId,i=s.propertySets||s.propertySetIds;o=new hd({id:r,originalSystemId:t,parentId:s.parent,type:e,name:s.name,attributes:s.attributes,propertySetIds:i,external:s.external}),this.metaScene.metaObjects[r]=o,o.metaModels=[]}this.metaObjects.push(o),s.parent||(this.rootMetaObjects.push(o),i.rootMetaObjects[r]=o)}}_decompressProperties(e,t){for(let i=0,s=t.length;i<s;i++){const s=t[i];if(Number.isInteger(s)){const r=e[s];r&&(t[i]=r)}}}finalize(){if(this.finalized)throw"MetaScene already finalized - can't re-finalize";const e=this.metaScene;for(let t in e.metaObjects){const i=e.metaObjects[t];if(i.children&&(i.children=[]),i.propertySets&&(i.propertySets=[]),i.propertySetIds)for(let t=0,s=i.propertySetIds.length;t<s;t++){const s=i.propertySetIds[t],r=e.propertySets[s];i.propertySets.push(r)}}for(let t in e.metaObjects){const i=e.metaObjects[t];if(i.parentId){const t=e.metaObjects[i.parentId];t&&(i.parent=t,(t.children||(t.children=[])).push(i))}}for(let t in e.metaObjects){e.metaObjects[t].metaModels=[]}for(let t in e.metaModels){const i=e.metaModels[t];for(let e=0,t=i.metaObjects.length;e<t;e++){i.metaObjects[e].metaModels.push(i)}}e.metaObjectsByType={};for(let t in e.metaObjects){const i=e.metaObjects[t],s=i.type;(e.metaObjectsByType[s]||(e.metaObjectsByType[s]={}))[t]=i}this.finalized=!0,this.metaScene.fire("metaModelCreated",this.id)}getJSON(){const e={id:this.id,projectId:this.projectId,author:this.author,createdAt:this.createdAt,schema:this.schema,creatingApplication:this.creatingApplication,metaObjects:[],propertySets:[]};for(let t=0,i=this.metaObjects.length;t<i;t++){const i=this.metaObjects[t],s={id:i.id,originalSystemId:i.originalSystemId,extId:i.extId,type:i.type,name:i.name};i.parent&&(s.parent=i.parent.id),i.attributes&&(s.attributes=i.attributes),i.propertySetIds&&(s.propertySetIds=i.propertySetIds),e.metaObjects.push(s)}for(let t=0,i=this.propertySets.length;t<i;t++){const i=this.propertySets[t],s={id:i.id,originalSystemId:i.originalSystemId,extId:i.extId,type:i.type,name:i.name,propertyies:[]};for(let e=0,t=i.properties.length;e<t;e++){const t=i.properties[e],r={id:t.id,description:t.description,type:t.type,name:t.name,value:t.value,valueType:t.valueType};s.properties.push(r)}e.propertySets.push(s)}return e}_globalizeIDs(e,t){const i=!!t.globalizeObjectIds;if(e.metaObjects)for(let t=0,s=e.metaObjects.length;t<s;t++){const s=e.metaObjects[t];if(s.originalSystemId=s.id,s.parent&&(s.originalParentSystemId=s.parent),i&&(s.id=d.globalizeObjectId(this.id,s.id),s.parent&&(s.parent=d.globalizeObjectId(this.id,s.parent))),i){const e=s.propertySetIds;if(e){const t=[];for(let i=0,s=e.length;i<s;i++)t.push(d.globalizeObjectId(this.id,e[i]));s.propertySetIds=t,s.originalSystemPropertySetIds=e}}else s.originalSystemPropertySetIds=s.propertySetIds}if(e.propertySets)for(let t=0,s=e.propertySets.length;t<s;t++){const s=e.propertySets[t];s.originalSystemId=s.id,i&&(s.id=d.globalizeObjectId(this.id,s.id))}}}class ud{constructor(e,t){this.viewer=e,this.scene=t,this.metaModels={},this.propertySets={},this.metaObjects={},this.metaObjectsByType={},this.rootMetaObjects={},this._eventSubs={}}on(e,t){let i=this._eventSubs[e];i||(i=[],this._eventSubs[e]=i),i.push(t)}fire(e,t){const i=this._eventSubs[e];if(i)for(let e=0,s=i.length;e<s;e++)i[e](t)}off(e){}createMetaModel(e,t,i={}){const s=new cd({metaScene:this,id:e,projectId:t.projectId||"none",revisionId:t.revisionId||"none",author:t.author||"none",createdAt:t.createdAt||"none",creatingApplication:t.creatingApplication||"none",schema:t.schema||"none",propertySets:[]});return s.loadData(t),s.finalize(),s}destroyMetaModel(e){const t=this.metaModels[e];if(t){if(t.propertySets)for(let i=0,s=t.propertySets.length;i<s;i++){const s=t.propertySets[i];if(1===s.metaModels.length&&s.metaModels[0].id===e)delete this.propertySets[s.id];else{const t=[];for(let i=0,r=s.metaModels.length;i<r;i++)s.metaModels[i].id!==e&&t.push(s.metaModels[i]);s.metaModels=t}}if(t.metaObjects)for(let i=0,s=t.metaObjects.length;i<s;i++){const s=t.metaObjects[i];s.type;const r=s.id;1===s.metaModels.length&&s.metaModels[0].id===e&&(delete this.metaObjects[r],s.parent||delete this.rootMetaObjects[r])}for(let e in this.metaObjects){const t=this.metaObjects[e];if(t.children&&(t.children=[]),t.propertySets&&(t.propertySets=[]),t.propertySetIds)for(let e=0,i=t.propertySetIds.length;e<i;e++){const i=t.propertySetIds[e],s=this.propertySets[i];t.propertySets.push(s)}}this.metaObjectsByType={};for(let e in this.metaObjects){const t=this.metaObjects[e],i=t.type;t.children&&(t.children=null),(this.metaObjectsByType[i]||(this.metaObjectsByType[i]={}))[e]=t}for(let e in this.metaObjects){const t=this.metaObjects[e];if(t.parentId){const e=this.metaObjects[t.parentId];e&&(t.parent=e,(e.children||(e.children=[])).push(t))}}delete this.metaModels[e];for(let e in this.metaObjects){this.metaObjects[e].metaModels=[]}for(let e in this.metaModels){const t=this.metaModels[e];for(let e=0,i=t.metaObjects.length;e<i;e++){t.metaObjects[e].metaModels.push(t)}}this.fire("metaModelDestroyed",e)}}getObjectIDsByType(e){const t=this.metaObjectsByType[e];return t?Object.keys(t):[]}getObjectIDsInSubtree(e,t,i){const s=[],r=this.metaObjects[e],o=t&&t.length>0?dd(t):null,n=i&&i.length>0?dd(i):null,a=e=>{if(!e)return;var t=!0;(n&&n[e.type]||o&&!o[e.type])&&(t=!1),t&&s.push(e.id);const i=e.children;if(i)for(var r=0,l=i.length;r<l;r++)a(i[r])};return a(r),s}withMetaObjectsInSubtree(e,t){const i=this.metaObjects[e];i&&i.withMetaObjectsInSubtree(t)}}function dd(e){const t={};for(var i=0,s=e.length;i<s;i++)t[e[i]]=!0;return t}
17
+ **/let $h=null;function ec(e,t){const i=3*e,s=3*t;let r,o,n,a,l,A;const h=Math.min(r=$h[i],o=$h[i+1],n=$h[i+2]),c=Math.min(a=$h[s],l=$h[s+1],A=$h[s+2]);if(h!==c)return h-c;const u=Math.max(r,o,n),d=Math.max(a,l,A);return u!==d?u-d:0}let tc=null;function ic(e,t){let i=tc[2*e]-tc[2*t];return 0!==i?i:tc[2*e+1]-tc[2*t+1]}function sc(e,t,i=!1){const s=e.positionsCompressed||[],r=function(e,t){const i=new Int32Array(e.length/3);for(let e=0,t=i.length;e<t;e++)i[e]=e;$h=new Int32Array(e.length);for(let i=0,s=e.length;i<s;i++)$h[i]=e[i]>>t;i.sort(ec);const s=new Int32Array(e.length);for(let t=0,r=i.length;t<r;t++)s[3*t+0]=e[3*i[t]+0],s[3*t+1]=e[3*i[t]+1],s[3*t+2]=e[3*i[t]+2];return s}(e.indices||[],t),o=function(e){if(0===(e||[]).length)return[];let t=new Int32Array(e.length/2);for(let e=0,i=t.length;e<i;e++)t[e]=e;for(let t=0,i=e.length;t<i;t+=2)if(e[t]>e[t+1]){let i=e[t];e[t]=e[t+1],e[t+1]=i}tc=new Int32Array(e),t.sort(ic);const i=new Int32Array(e.length);for(let s=0,r=t.length;s<r;s++)i[2*s+0]=e[2*t[s]+0],i[2*s+1]=e[2*t[s]+1];return i}(e.edgeIndices||[]);function n(e,t){if(e>t){let i=e;e=t,t=i}function i(i,s){return i!==e?e-i:s!==t?t-s:0}let s=0,r=(o.length>>1)-1;for(;s<=r;){const e=r+s>>1,t=i(o[2*e],o[2*e+1]);if(t>0)s=e+1;else{if(!(t<0))return e;r=e-1}}return-s-1}const a=new Int32Array(o.length/2);a.fill(0);const l=s.length/3;if(l>8*(1<<t))return[e];const A=new Int32Array(l);A.fill(-1);const h=[];function c(){A.fill(-1);const e={positionsCompressed:[],indices:[],edgeIndices:[],maxNumPositions:(1<<t)-t,numPositions:0,bucketNumber:h.length};return h.push(e),e}let u=c();for(let t=0,i=r.length;t<i;t+=3){let i=0;const l=r[t],h=r[t+1],d=r[t+2];if(-1===A[l]&&i++,-1===A[h]&&i++,-1===A[d]&&i++,i+u.numPositions>u.maxNumPositions&&(u=c()),u.bucketNumber>8)return[e];let p;-1===A[l]&&(A[l]=u.numPositions++,u.positionsCompressed.push(s[3*l]),u.positionsCompressed.push(s[3*l+1]),u.positionsCompressed.push(s[3*l+2])),-1===A[h]&&(A[h]=u.numPositions++,u.positionsCompressed.push(s[3*h]),u.positionsCompressed.push(s[3*h+1]),u.positionsCompressed.push(s[3*h+2])),-1===A[d]&&(A[d]=u.numPositions++,u.positionsCompressed.push(s[3*d]),u.positionsCompressed.push(s[3*d+1]),u.positionsCompressed.push(s[3*d+2])),u.indices.push(A[l]),u.indices.push(A[h]),u.indices.push(A[d]),(p=n(l,h))>=0&&0===a[p]&&(a[p]=1,u.edgeIndices.push(A[o[2*p]]),u.edgeIndices.push(A[o[2*p+1]])),(p=n(l,d))>=0&&0===a[p]&&(a[p]=1,u.edgeIndices.push(A[o[2*p]]),u.edgeIndices.push(A[o[2*p+1]])),(p=n(h,d))>=0&&0===a[p]&&(a[p]=1,u.edgeIndices.push(A[o[2*p]]),u.edgeIndices.push(A[o[2*p+1]]))}const d=t/8*2,p=t/8,f=2*s.length+(r.length+o.length)*d;let g=0,m=-s.length/3;return h.forEach((e=>{g+=2*e.positionsCompressed.length+(e.indices.length+e.edgeIndices.length)*p,m+=e.positionsCompressed.length/3})),g>f?[e]:(i&&function(e,t){const i={},s={};let r=0;e.forEach((e=>{const t=e.indices,o=e.edgeIndices,n=e.positionsCompressed;for(let e=0,s=t.length;e<s;e+=3){const s=n[3*t[e]]+"_"+n[3*t[e]+1]+"_"+n[3*t[e]+2]+"/"+n[3*t[e+1]]+"_"+n[3*t[e+1]+1]+"_"+n[3*t[e+1]+2]+"/"+n[3*t[e+2]]+"_"+n[3*t[e+2]+1]+"_"+n[3*t[e+2]+2];i[s]=!0}r+=e.edgeIndices.length/2;for(let e=0,t=o.length;e<t;e+=2){const t=n[3*o[e]]+"_"+n[3*o[e]+1]+"_"+n[3*o[e]+2]+"/"+n[3*o[e+1]]+"_"+n[3*o[e+1]+1]+"_"+n[3*o[e+1]+2]+"/";s[t]=!0}}));{const e=t.indices;t.edgeIndices;const s=t.positionsCompressed;for(let t=0,r=e.length;t<r;t+=3){const r=s[3*e[t]]+"_"+s[3*e[t]+1]+"_"+s[3*e[t]+2]+"/"+s[3*e[t+1]]+"_"+s[3*e[t+1]+1]+"_"+s[3*e[t+1]+2]+"/"+s[3*e[t+2]]+"_"+s[3*e[t+2]+1]+"_"+s[3*e[t+2]+2];if(!(r in i))throw console.log("Not found "+r),"Ohhhh!"}}}(h,e),h)}const rc=d.vec4(4),oc=d.vec4(),nc=d.vec4(),ac=d.vec3([1,0,0]),lc=d.vec3([0,1,0]),Ac=d.vec3([0,0,1]);d.vec3(3),d.vec3(3);const hc=d.identityMat4();class cc{constructor(e){this._model=e.model,this.id=e.id,this._parentTransform=e.parent,this._childTransforms=[],this._meshes=[],this._scale=new Float32Array([1,1,1]),this._quaternion=d.identityQuaternion(new Float32Array(4)),this._rotation=new Float32Array(3),this._position=new Float32Array(3),this._localMatrix=d.identityMat4(new Float32Array(16)),this._worldMatrix=d.identityMat4(new Float32Array(16)),this._localMatrixDirty=!0,this._worldMatrixDirty=!0,e.matrix?this.matrix=e.matrix:(this.scale=e.scale,this.position=e.position,e.quaternion||(this.rotation=e.rotation)),e.parent&&e.parent._addChildTransform(this)}_addChildTransform(e){this._childTransforms.push(e),e._parentTransform=this,e._transformDirty(),e._setSubtreeAABBsDirty(this)}_addMesh(e){this._meshes.push(e),e.transform=this}get parentTransform(){return this._parentTransform}get meshes(){return this._meshes}set position(e){this._position.set(e||[0,0,0]),this._setLocalMatrixDirty(),this._model.glRedraw()}get position(){return this._position}set rotation(e){this._rotation.set(e||[0,0,0]),d.eulerToQuaternion(this._rotation,"XYZ",this._quaternion),this._setLocalMatrixDirty(),this._model.glRedraw()}get rotation(){return this._rotation}set quaternion(e){this._quaternion.set(e||[0,0,0,1]),d.quaternionToEuler(this._quaternion,"XYZ",this._rotation),this._setLocalMatrixDirty(),this._model.glRedraw()}get quaternion(){return this._quaternion}set scale(e){this._scale.set(e||[1,1,1]),this._setLocalMatrixDirty(),this._model.glRedraw()}get scale(){return this._scale}set matrix(e){this._localMatrix||(this._localMatrix=d.identityMat4()),this._localMatrix.set(e||hc),d.decomposeMat4(this._localMatrix,this._position,this._quaternion,this._scale),this._localMatrixDirty=!1,this._transformDirty(),this._model.glRedraw()}get matrix(){return this._localMatrixDirty&&(this._localMatrix||(this._localMatrix=d.identityMat4()),d.composeMat4(this._position,this._quaternion,this._scale,this._localMatrix),this._localMatrixDirty=!1),this._localMatrix}get worldMatrix(){return this._worldMatrixDirty&&this._buildWorldMatrix(),this._worldMatrix}rotate(e,t){return rc[0]=e[0],rc[1]=e[1],rc[2]=e[2],rc[3]=t*d.DEGTORAD,d.angleAxisToQuaternion(rc,oc),d.mulQuaternions(this.quaternion,oc,nc),this.quaternion=nc,this._setLocalMatrixDirty(),this._model.glRedraw(),this}rotateOnWorldAxis(e,t){return rc[0]=e[0],rc[1]=e[1],rc[2]=e[2],rc[3]=t*d.DEGTORAD,d.angleAxisToQuaternion(rc,oc),d.mulQuaternions(oc,this.quaternion,oc),this}rotateX(e){return this.rotate(ac,e)}rotateY(e){return this.rotate(lc,e)}rotateZ(e){return this.rotate(Ac,e)}translate(e){return this._position[0]+=e[0],this._position[1]+=e[1],this._position[2]+=e[2],this._setLocalMatrixDirty(),this._model.glRedraw(),this}translateX(e){return this._position[0]+=e,this._setLocalMatrixDirty(),this._model.glRedraw(),this}translateY(e){return this._position[1]+=e,this._setLocalMatrixDirty(),this._model.glRedraw(),this}translateZ(e){return this._position[2]+=e,this._setLocalMatrixDirty(),this._model.glRedraw(),this}_setLocalMatrixDirty(){this._localMatrixDirty=!0,this._transformDirty()}_transformDirty(){this._worldMatrixDirty=!0;for(let e=0,t=this._childTransforms.length;e<t;e++){const t=this._childTransforms[e];if(t._transformDirty(),t._meshes&&t._meshes.length>0){const e=t._meshes;for(let t=0,i=e.length;t<i;t++)e[t]._transformDirty()}}if(this._meshes&&this._meshes.length>0){const e=this._meshes;for(let t=0,i=e.length;t<i;t++)e[t]._transformDirty()}}_buildWorldMatrix(){const e=this.matrix;if(this._parentTransform)d.mulMat4(this._parentTransform.worldMatrix,e,this._worldMatrix);else for(let t=0,i=e.length;t<i;t++)this._worldMatrix[t]=e[t];this._worldMatrixDirty=!1}_setSubtreeAABBsDirty(e){if(e._aabbDirty=!0,e._childTransforms)for(let t=0,i=e._childTransforms.length;t<i;t++)this._setSubtreeAABBsDirty(e._childTransforms[t])}}const uc=d.vec3(),dc=d.OBB3(),pc=d.vec4(),fc=d.vec3([1,1,1]),gc=d.vec3([0,0,0]);d.vec3([0,0,0]);const mc=d.identityQuaternion(),_c=d.identityMat4(),vc=new Uint8Array([255,255,255]);class bc extends R{constructor(e,t={}){super(e,t),this._dtxEnabled=this.scene.dtxEnabled&&!1!==t.dtxEnabled,this._enableVertexWelding=!1,this._enableIndexBucketing=!1,this._vboBatchingLayerScratchMemory=(go++,fo),this._textureTranscoder=t.textureTranscoder||Xh(this.scene.viewer),this._maxGeometryBatchSize=t.maxGeometryBatchSize,this._aabb=d.collapseAABB3(),this._aabbDirty=!0,this._quantizationRanges={},this._vboInstancingLayers={},this._vboBatchingLayers={},this._dtxLayers={},this._meshList=[],this.layerList=[],this._entityList=[],this._geometries={},this._dtxBuckets={},this._textures={},this._textureSets={},this._transforms={},this._meshes={},this._unusedMeshes={},this._entities={},this.renderFlags=new rr,this.numGeometries=0,this.numPortions=0,this.numVisibleLayerPortions=0,this.numTransparentLayerPortions=0,this.numXRayedLayerPortions=0,this.numHighlightedLayerPortions=0,this.numSelectedLayerPortions=0,this.numEdgesLayerPortions=0,this.numPickableLayerPortions=0,this.numClippableLayerPortions=0,this.numCulledLayerPortions=0,this.numEntities=0,this._numTriangles=0,this._numLines=0,this._numPoints=0,this._edgeThreshold=t.edgeThreshold||10,this._origin=d.vec3(t.origin||[0,0,0]),this._position=d.vec3(t.position||[0,0,0]),this._rotation=d.vec3(t.rotation||[0,0,0]),this._quaternion=d.vec4(t.quaternion||[0,0,0,1]),this._conjugateQuaternion=d.vec4(t.quaternion||[0,0,0,1]),t.rotation&&d.eulerToQuaternion(this._rotation,"XYZ",this._quaternion),this._scale=d.vec3(t.scale||[1,1,1]),this._worldRotationMatrix=d.mat4(),this._worldRotationMatrixConjugate=d.mat4(),this._matrix=d.mat4(),this._matrixDirty=!0,this._rebuildMatrices(),this._worldNormalMatrix=d.mat4(),d.inverseMat4(this._matrix,this._worldNormalMatrix),d.transposeMat4(this._worldNormalMatrix),(t.matrix||t.position||t.rotation||t.scale||t.quaternion)&&(this._viewMatrix=d.mat4(),this._viewNormalMatrix=d.mat4(),this._viewMatrixDirty=!0,this._matrixNonIdentity=!0),this._opacity=1,this._colorize=[1,1,1],this._saoEnabled=!1!==t.saoEnabled,this._pbrEnabled=!1!==t.pbrEnabled,this._colorTextureEnabled=!1!==t.colorTextureEnabled,this._isModel=t.isModel,this._isModel&&this.scene._registerModel(this),this._onCameraViewMatrix=this.scene.camera.on("matrix",(()=>{this._viewMatrixDirty=!0})),this._meshesWithDirtyMatrices=[],this._numMeshesWithDirtyMatrices=0,this._onTick=this.scene.on("tick",(()=>{for(;this._numMeshesWithDirtyMatrices>0;)this._meshesWithDirtyMatrices[--this._numMeshesWithDirtyMatrices]._updateMatrix()})),this._createDefaultTextureSet(),this.visible=t.visible,this.culled=t.culled,this.pickable=t.pickable,this.clippable=t.clippable,this.collidable=t.collidable,this.castsShadow=t.castsShadow,this.receivesShadow=t.receivesShadow,this.xrayed=t.xrayed,this.highlighted=t.highlighted,this.selected=t.selected,this.edges=t.edges,this.colorize=t.colorize,this.opacity=t.opacity,this.backfaces=t.backfaces}_meshMatrixDirty(e){this._meshesWithDirtyMatrices[this._numMeshesWithDirtyMatrices++]=e}_createDefaultTextureSet(){const e=new kh({id:"defaultColorTexture",texture:new Hr({gl:this.scene.canvas.gl,preloadColor:[1,1,1,1]})}),t=new kh({id:"defaultMetalRoughTexture",texture:new Hr({gl:this.scene.canvas.gl,preloadColor:[0,1,1,1]})}),i=new kh({id:"defaultNormalsTexture",texture:new Hr({gl:this.scene.canvas.gl,preloadColor:[0,0,0,0]})}),s=new kh({id:"defaultEmissiveTexture",texture:new Hr({gl:this.scene.canvas.gl,preloadColor:[0,0,0,1]})}),r=new kh({id:"defaultOcclusionTexture",texture:new Hr({gl:this.scene.canvas.gl,preloadColor:[1,1,1,1]})});this._textures.defaultColorTexture=e,this._textures.defaultMetalRoughTexture=t,this._textures.defaultNormalsTexture=i,this._textures.defaultEmissiveTexture=s,this._textures.defaultOcclusionTexture=r,this._textureSets.defaultTextureSet=new Uh({id:"defaultTextureSet",model:this,colorTexture:e,metallicRoughnessTexture:t,normalsTexture:i,emissiveTexture:s,occlusionTexture:r})}get isPerformanceModel(){return!0}get transforms(){return this._transforms}get textures(){return this._textures}get textureSets(){return this._textureSets}get meshes(){return this._meshes}get objects(){return this._entities}get origin(){return this._origin}set position(e){this._position.set(e||[0,0,0]),this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}get position(){return this._position}set rotation(e){this._rotation.set(e||[0,0,0]),d.eulerToQuaternion(this._rotation,"XYZ",this._quaternion),this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}get rotation(){return this._rotation}set quaternion(e){this._quaternion.set(e||[0,0,0,1]),d.quaternionToEuler(this._quaternion,"XYZ",this._rotation),this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}get quaternion(){return this._quaternion}set scale(e){}get scale(){return this._scale}set matrix(e){this._matrix.set(e||_c),d.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrix),d.conjugateQuaternion(this._quaternion,this._conjugateQuaternion),d.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrixConjugate),this._matrix.set(this._worldRotationMatrix),d.translateMat4v(this._position,this._matrix),this._matrixDirty=!1,this._setWorldMatrixDirty(),this._sceneModelDirty(),this.glRedraw()}get matrix(){return this._matrixDirty&&this._rebuildMatrices(),this._matrix}get rotationMatrix(){return this._matrixDirty&&this._rebuildMatrices(),this._worldRotationMatrix}_rebuildMatrices(){this._matrixDirty&&(d.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrix),d.conjugateQuaternion(this._quaternion,this._conjugateQuaternion),d.quaternionToRotationMat4(this._quaternion,this._worldRotationMatrixConjugate),this._matrix.set(this._worldRotationMatrix),d.translateMat4v(this._position,this._matrix),this._matrixDirty=!1)}get rotationMatrixConjugate(){return this._matrixDirty&&this._rebuildMatrices(),this._worldRotationMatrixConjugate}_setWorldMatrixDirty(){this._matrixDirty=!0,this._aabbDirty=!0}_transformDirty(){this._matrixDirty=!0,this._aabbDirty=!0,this.scene._aabbDirty=!0}_sceneModelDirty(){this.scene._aabbDirty=!0,this._aabbDirty=!0,this.scene._aabbDirty=!0,this._matrixDirty=!0;for(let e=0,t=this._entityList.length;e<t;e++)this._entityList[e]._sceneModelDirty()}get worldMatrix(){return this.matrix}get worldNormalMatrix(){return this._worldNormalMatrix}get viewMatrix(){return this._viewMatrix?(this._matrixDirty&&(this._rebuildMatrices(),this._viewMatrixDirty=!0),this._viewMatrixDirty&&(d.mulMat4(this.scene.camera.viewMatrix,this._matrix,this._viewMatrix),d.inverseMat4(this._viewMatrix,this._viewNormalMatrix),d.transposeMat4(this._viewNormalMatrix),this._viewMatrixDirty=!1),this._viewMatrix):this.scene.camera.viewMatrix}get viewNormalMatrix(){return this._viewNormalMatrix?(this._matrixDirty&&(this._rebuildMatrices(),this._viewMatrixDirty=!0),this._viewMatrixDirty&&(d.mulMat4(this.scene.camera.viewMatrix,this._matrix,this._viewMatrix),d.inverseMat4(this._viewMatrix,this._viewNormalMatrix),d.transposeMat4(this._viewNormalMatrix),this._viewMatrixDirty=!1),d.inverseMat4(this._viewMatrix,this._viewNormalMatrix),d.transposeMat4(this._viewNormalMatrix),this._viewNormalMatrix):this.scene.camera.viewNormalMatrix}get backfaces(){return this._backfaces}set backfaces(e){e=!!e,this._backfaces=e,this.glRedraw()}get entityList(){return this._entityList}get isEntity(){return!0}get isModel(){return this._isModel}get isObject(){return!1}get aabb(){if(this._aabbDirty){d.collapseAABB3(this._aabb);for(let e=0,t=this._entityList.length;e<t;e++)d.expandAABB3(this._aabb,this._entityList[e].aabb);this._aabbDirty=!1}return this._aabb}get numTriangles(){return this._numTriangles}get numLines(){return this._numLines}get numPoints(){return this._numPoints}get visible(){return this.numVisibleLayerPortions>0}set visible(e){e=!1!==e,this._visible=e;for(let t=0,i=this._entityList.length;t<i;t++)this._entityList[t].visible=e;this.glRedraw()}get xrayed(){return this.numXRayedLayerPortions>0}set xrayed(e){e=!!e,this._xrayed=e;for(let t=0,i=this._entityList.length;t<i;t++)this._entityList[t].xrayed=e;this.glRedraw()}get highlighted(){return this.numHighlightedLayerPortions>0}set highlighted(e){e=!!e,this._highlighted=e;for(let t=0,i=this._entityList.length;t<i;t++)this._entityList[t].highlighted=e;this.glRedraw()}get selected(){return this.numSelectedLayerPortions>0}set selected(e){e=!!e,this._selected=e;for(let t=0,i=this._entityList.length;t<i;t++)this._entityList[t].selected=e;this.glRedraw()}get edges(){return this.numEdgesLayerPortions>0}set edges(e){e=!!e,this._edges=e;for(let t=0,i=this._entityList.length;t<i;t++)this._entityList[t].edges=e;this.glRedraw()}get culled(){return this._culled}set culled(e){e=!!e,this._culled=e;for(let t=0,i=this._entityList.length;t<i;t++)this._entityList[t].culled=e;this.glRedraw()}get clippable(){return this._clippable}set clippable(e){e=!1!==e,this._clippable=e;for(let t=0,i=this._entityList.length;t<i;t++)this._entityList[t].clippable=e;this.glRedraw()}get collidable(){return this._collidable}set collidable(e){e=!1!==e,this._collidable=e;for(let t=0,i=this._entityList.length;t<i;t++)this._entityList[t].collidable=e}get pickable(){return this.numPickableLayerPortions>0}set pickable(e){e=!1!==e,this._pickable=e;for(let t=0,i=this._entityList.length;t<i;t++)this._entityList[t].pickable=e}get colorize(){return this._colorize}set colorize(e){this._colorize=e;for(let t=0,i=this._entityList.length;t<i;t++)this._entityList[t].colorize=e}get opacity(){return this._opacity}set opacity(e){this._opacity=e;for(let t=0,i=this._entityList.length;t<i;t++)this._entityList[t].opacity=e}get castsShadow(){return this._castsShadow}set castsShadow(e){(e=!1!==e)!==this._castsShadow&&(this._castsShadow=e,this.glRedraw())}get receivesShadow(){return this._receivesShadow}set receivesShadow(e){(e=!1!==e)!==this._receivesShadow&&(this._receivesShadow=e,this.glRedraw())}get saoEnabled(){return this._saoEnabled}get pbrEnabled(){return this._pbrEnabled}get colorTextureEnabled(){return this._colorTextureEnabled}get isDrawable(){return!0}get isStateSortable(){return!1}get xrayMaterial(){return this.scene.xrayMaterial}get highlightMaterial(){return this.scene.highlightMaterial}get selectedMaterial(){return this.scene.selectedMaterial}get edgeMaterial(){return this.scene.edgeMaterial}getPickViewMatrix(e){return this._viewMatrix?this._viewMatrix:e}createQuantizationRange(e){void 0!==e.id&&null!==e.id?e.aabb?this.error("[createQuantizationRange] Config missing: aabb"):this._quantizationRanges[e.id]?this.error("[createQuantizationRange] QuantizationRange already created: "+e.id):this._quantizationRanges[e.id]={id:e.id,aabb:e.aabb,matrix:cn(e.aabb,d.mat4())}:this.error("[createQuantizationRange] Config missing: id")}createGeometry(e){if(void 0!==e.id&&null!==e.id)if(this._geometries[e.id])this.error("[createGeometry] Geometry already created: "+e.id);else if(void 0!==e.primitive&&null!==e.primitive||(e.primitive="triangles"),"points"===e.primitive||"lines"===e.primitive||"triangles"===e.primitive||"solid"===e.primitive||"surface"===e.primitive){if(!e.positions&&!e.positionsCompressed&&!e.buckets)return this.error("[createGeometry] Param expected: `positions`, `positionsCompressed' or 'buckets"),null;if(e.positionsCompressed&&!e.positionsDecodeMatrix&&!e.positionsDecodeBoundary)return this.error("[createGeometry] Param expected: `positionsDecodeMatrix` or 'positionsDecodeBoundary' (required for `positionsCompressed')"),null;if(e.positionsDecodeMatrix&&e.positionsDecodeBoundary)return this.error("[createGeometry] Only one of these params expected: `positionsDecodeMatrix` or 'positionsDecodeBoundary' (required for `positionsCompressed')"),null;if(e.uvCompressed&&!e.uvDecodeMatrix)return this.error("[createGeometry] Param expected: `uvDecodeMatrix` (required for `uvCompressed')"),null;if(!(e.buckets||e.indices||"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive)){const t=(e.positions||e.positionsCompressed).length/3;e.indices=this._createDefaultIndices(t)}if(!e.buckets&&!e.indices&&"points"!==e.primitive)return this.error(`[createGeometry] Param expected: indices (required for '${e.primitive}' primitive type)`),null;if(e.positionsDecodeBoundary&&(e.positionsDecodeMatrix=cn(e.positionsDecodeBoundary,d.mat4())),e.positions){const t=d.collapseAABB3();e.positionsDecodeMatrix=d.mat4(),d.expandAABB3Points3(t,e.positions),e.positionsCompressed=hn(e.positions,t,e.positionsDecodeMatrix),e.aabb=t}else if(e.positionsCompressed){const t=d.collapseAABB3();e.positionsDecodeMatrix=new Float64Array(e.positionsDecodeMatrix),e.positionsCompressed=new Uint16Array(e.positionsCompressed),d.expandAABB3Points3(t,e.positionsCompressed),Ht.decompressAABB(t,e.positionsDecodeMatrix),e.aabb=t}else if(e.buckets){const t=d.collapseAABB3();this._dtxBuckets[e.id]=e.buckets;for(let i=0,s=e.buckets.length;i<s;i++){const s=e.buckets[i];s.positions?d.expandAABB3Points3(t,s.positions):s.positionsCompressed&&d.expandAABB3Points3(t,s.positionsCompressed)}e.positionsDecodeMatrix&&Ht.decompressAABB(t,e.positionsDecodeMatrix),e.aabb=t}if(e.colorsCompressed&&e.colorsCompressed.length>0)e.colorsCompressed=new Uint8Array(e.colorsCompressed);else if(e.colors&&e.colors.length>0){const t=e.colors,i=new Uint8Array(t.length);for(let e=0,s=t.length;e<s;e++)i[e]=255*t[e];e.colorsCompressed=i}if(e.buckets||e.edgeIndices||"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive||(e.positions?e.edgeIndices=Lt(e.positions,e.indices,null,5):e.edgeIndices=Lt(e.positionsCompressed,e.indices,e.positionsDecodeMatrix,2)),e.uv){const t=Ht.getUVBounds(e.uv),i=Ht.compressUVs(e.uv,t.min,t.max);e.uvCompressed=i.quantized,e.uvDecodeMatrix=i.decodeMatrix}else e.uvCompressed&&(e.uvCompressed=new Uint16Array(e.uvCompressed),e.uvDecodeMatrix=new Float64Array(e.uvDecodeMatrix));e.normals&&(e.normals=null),this._geometries[e.id]=e,this._numTriangles+=e.indices?Math.round(e.indices.length/3):0,this.numGeometries++}else this.error(`[createGeometry] Unsupported value for 'primitive': '${e.primitive}' - supported values are 'points', 'lines', 'triangles', 'solid' and 'surface'. Defaulting to 'triangles'.`);else this.error("[createGeometry] Config missing: id")}createTexture(e){const t=e.id;if(null==t)return void this.error("[createTexture] Config missing: id");if(this._textures[t])return void this.error("[createTexture] Texture already created: "+t);if(!e.src&&!e.image&&!e.buffers)return this.error("[createTexture] Param expected: `src`, `image' or 'buffers'"),null;let i=e.minFilter||1008;1006!==i&&1007!==i&&1008!==i&&1005!==i&&1004!==i&&(this.error("[createTexture] Unsupported value for 'minFilter' - \n supported values are LinearFilter, LinearMipMapNearestFilter, NearestMipMapNearestFilter, \n NearestMipMapLinearFilter and LinearMipmapLinearFilter. Defaulting to LinearMipmapLinearFilter."),i=1008);let s=e.magFilter||1006;1006!==s&&1003!==s&&(this.error("[createTexture] Unsupported value for 'magFilter' - supported values are LinearFilter and NearestFilter. Defaulting to LinearFilter."),s=1006);let r=e.wrapS||1e3;1001!==r&&1002!==r&&1e3!==r&&(this.error("[createTexture] Unsupported value for 'wrapS' - supported values are ClampToEdgeWrapping, MirroredRepeatWrapping and RepeatWrapping. Defaulting to RepeatWrapping."),r=1e3);let o=e.wrapT||1e3;1001!==o&&1002!==o&&1e3!==o&&(this.error("[createTexture] Unsupported value for 'wrapT' - supported values are ClampToEdgeWrapping, MirroredRepeatWrapping and RepeatWrapping. Defaulting to RepeatWrapping."),o=1e3);let n=e.wrapR||1e3;1001!==n&&1002!==n&&1e3!==n&&(this.error("[createTexture] Unsupported value for 'wrapR' - supported values are ClampToEdgeWrapping, MirroredRepeatWrapping and RepeatWrapping. Defaulting to RepeatWrapping."),n=1e3);let a=e.encoding||3e3;3e3!==a&&3001!==a&&(this.error("[createTexture] Unsupported value for 'encoding' - supported values are LinearEncoding and sRGBEncoding. Defaulting to LinearEncoding."),a=3e3);const l=new Hr({gl:this.scene.canvas.gl,minFilter:i,magFilter:s,wrapS:r,wrapT:o,wrapR:n,encoding:a});if(e.preloadColor&&l.setPreloadColor(e.preloadColor),e.image){const t=e.image;t.crossOrigin="Anonymous",l.setImage(t,{minFilter:i,magFilter:s,wrapS:r,wrapT:o,wrapR:n,flipY:e.flipY,encoding:a})}else if(e.src){const t=e.src.split(".").pop();switch(t){case"jpeg":case"jpg":case"png":case"gif":const A=new Image;A.onload=()=>{l.setImage(A,{minFilter:i,magFilter:s,wrapS:r,wrapT:o,wrapR:n,flipY:e.flipY,encoding:a}),this.glRedraw()},A.src=e.src;break;default:this._textureTranscoder?y.loadArraybuffer(e.src,(e=>{e.byteLength?this._textureTranscoder.transcode([e],l).then((()=>{this.glRedraw()})):this.error("[createTexture] Can't create texture from 'src': file data is zero length")}),(function(e){this.error(`[createTexture] Can't create texture from 'src': ${e}`)})):this.error(`[createTexture] Can't create texture from 'src' - SceneModel needs to be configured with a TextureTranscoder for this file type ('${t}')`)}}else e.buffers&&(this._textureTranscoder?this._textureTranscoder.transcode(e.buffers,l).then((()=>{this.glRedraw()})):this.error("[createTexture] Can't create texture from 'buffers' - SceneModel needs to be configured with a TextureTranscoder for this option"));this._textures[t]=new kh({id:t,texture:l})}createTextureSet(e){const t=e.id;if(null==t)return void this.error("[createTextureSet] Config missing: id");if(this._textureSets[t])return void this.error(`[createTextureSet] Texture set already created: ${t}`);let i,s,r,o,n;if(void 0!==e.colorTextureId&&null!==e.colorTextureId){if(i=this._textures[e.colorTextureId],!i)return void this.error(`[createTextureSet] Texture not found: ${e.colorTextureId} - ensure that you create it first with createTexture()`)}else i=this._textures.defaultColorTexture;if(void 0!==e.metallicRoughnessTextureId&&null!==e.metallicRoughnessTextureId){if(s=this._textures[e.metallicRoughnessTextureId],!s)return void this.error(`[createTextureSet] Texture not found: ${e.metallicRoughnessTextureId} - ensure that you create it first with createTexture()`)}else s=this._textures.defaultMetalRoughTexture;if(void 0!==e.normalsTextureId&&null!==e.normalsTextureId){if(r=this._textures[e.normalsTextureId],!r)return void this.error(`[createTextureSet] Texture not found: ${e.normalsTextureId} - ensure that you create it first with createTexture()`)}else r=this._textures.defaultNormalsTexture;if(void 0!==e.emissiveTextureId&&null!==e.emissiveTextureId){if(o=this._textures[e.emissiveTextureId],!o)return void this.error(`[createTextureSet] Texture not found: ${e.emissiveTextureId} - ensure that you create it first with createTexture()`)}else o=this._textures.defaultEmissiveTexture;if(void 0!==e.occlusionTextureId&&null!==e.occlusionTextureId){if(n=this._textures[e.occlusionTextureId],!n)return void this.error(`[createTextureSet] Texture not found: ${e.occlusionTextureId} - ensure that you create it first with createTexture()`)}else n=this._textures.defaultOcclusionTexture;const a=new Uh({id:t,model:this,colorTexture:i,metallicRoughnessTexture:s,normalsTexture:r,emissiveTexture:o,occlusionTexture:n});return this._textureSets[t]=a,a}createTransform(e){if(void 0===e.id||null===e.id)return void this.error("[createTransform] SceneModel.createTransform() config missing: id");if(this._transforms[e.id])return void this.error(`[createTransform] SceneModel already has a transform with this ID: ${e.id}`);let t;if(e.parentTransformId&&(t=this._transforms[e.parentTransformId],!t))return void this.error("[createTransform] SceneModel.createTransform() config missing: id");const i=new cc({id:e.id,model:this,parent:t,matrix:e.matrix,position:e.position,scale:e.scale,rotation:e.rotation,quaternion:e.quaternion});return this._transforms[i.id]=i,i}createMesh(e){if(void 0===e.id||null===e.id)return this.error("[createMesh] SceneModel.createMesh() config missing: id"),!1;if(this._meshes[e.id])return this.error(`[createMesh] SceneModel already has a mesh with this ID: ${e.id}`),!1;if(!(void 0!==e.geometryId)){if(void 0!==e.primitive&&null!==e.primitive||(e.primitive="triangles"),"points"!==e.primitive&&"lines"!==e.primitive&&"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive)return this.error(`Unsupported value for 'primitive': '${primitive}' ('geometryId' is absent) - supported values are 'points', 'lines', 'triangles', 'solid' and 'surface'.`),!1;if(!e.positions&&!e.positionsCompressed&&!e.buckets)return this.error("Param expected: 'positions', 'positionsCompressed' or `buckets` ('geometryId' is absent)"),!1;if(e.positions&&(e.positionsDecodeMatrix||e.positionsDecodeBoundary))return this.error("Illegal params: 'positions' not expected with 'positionsDecodeMatrix'/'positionsDecodeBoundary' ('geometryId' is absent)"),!1;if(e.positionsCompressed&&!e.positionsDecodeMatrix&&!e.positionsDecodeBoundary)return this.error("Param expected: 'positionsCompressed' should be accompanied by 'positionsDecodeMatrix'/'positionsDecodeBoundary' ('geometryId' is absent)"),!1;if(e.uvCompressed&&!e.uvDecodeMatrix)return this.error("Param expected: 'uvCompressed' should be accompanied by `uvDecodeMatrix` ('geometryId' is absent)"),!1;if(!(e.buckets||e.indices||"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive)){const t=(e.positions||e.positionsCompressed).length/3;e.indices=this._createDefaultIndices(t)}if(!e.buckets&&!e.indices&&"points"!==e.primitive)return e.indices=this._createDefaultIndices(numIndices),this.error(`Param expected: indices (required for '${e.primitive}' primitive type)`),!1;if((e.matrix||e.position||e.rotation||e.scale)&&(e.positionsCompressed||e.positionsDecodeBoundary))return this.error("Unexpected params: 'matrix', 'rotation', 'scale', 'position' not allowed with 'positionsCompressed'"),!1;const t=!(!this._dtxEnabled||"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive||e.textureSetId);if(e.origin=e.origin?d.addVec3(this._origin,e.origin,d.vec3()):this._origin,e.matrix)e.meshMatrix=e.matrix;else if(e.scale||e.rotation||e.position||e.quaternion){const t=e.scale||fc,i=e.position||gc;e.rotation?(d.eulerToQuaternion(e.rotation,"XYZ",pc),e.meshMatrix=d.composeMat4(i,pc,t,d.mat4())):e.meshMatrix=d.composeMat4(i,e.quaternion||mc,t,d.mat4())}if(e.positionsDecodeBoundary&&(e.positionsDecodeMatrix=cn(e.positionsDecodeBoundary,d.mat4())),t){if(e.type=2,e.color=e.color?new Uint8Array([Math.floor(255*e.color[0]),Math.floor(255*e.color[1]),Math.floor(255*e.color[2])]):vc,e.opacity=void 0!==e.opacity&&null!==e.opacity?Math.floor(255*e.opacity):255,e.positions){const t=d.vec3(),i=[];J(e.positions,i,t)&&(e.positions=i,e.origin=d.addVec3(e.origin,t,t))}if(e.positions){const t=d.collapseAABB3();e.positionsDecodeMatrix=d.mat4(),d.expandAABB3Points3(t,e.positions),e.positionsCompressed=hn(e.positions,t,e.positionsDecodeMatrix),e.aabb=t}else if(e.positionsCompressed){const t=d.collapseAABB3();d.expandAABB3Points3(t,e.positionsCompressed),Ht.decompressAABB(t,e.positionsDecodeMatrix),e.aabb=t}if(e.buckets){const t=d.collapseAABB3();for(let i=0,s=e.buckets.length;i<s;i++){const s=e.buckets[i];s.positions?d.expandAABB3Points3(t,s.positions):s.positionsCompressed&&d.expandAABB3Points3(t,s.positionsCompressed)}e.positionsDecodeMatrix&&Ht.decompressAABB(t,e.positionsDecodeMatrix),e.aabb=t}e.meshMatrix&&(d.AABB3ToOBB3(e.aabb,dc),d.transformOBB3(e.meshMatrix,dc),d.OBB3ToAABB3(dc,e.aabb)),e.buckets||e.edgeIndices||"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive||(e.positions?e.edgeIndices=Lt(e.positions,e.indices,null,2):e.edgeIndices=Lt(e.positionsCompressed,e.indices,e.positionsDecodeMatrix,2)),e.buckets||(e.buckets=yc(e,this._enableVertexWelding&&this._enableIndexBucketing))}else{if(e.type=1,e.color=e.color?new Uint8Array([Math.floor(255*e.color[0]),Math.floor(255*e.color[1]),Math.floor(255*e.color[2])]):[255,255,255],e.opacity=void 0!==e.opacity&&null!==e.opacity?Math.floor(255*e.opacity):255,e.metallic=void 0!==e.metallic&&null!==e.metallic?Math.floor(255*e.metallic):0,e.roughness=void 0!==e.roughness&&null!==e.roughness?Math.floor(255*e.roughness):255,e.positions){const t=[];J(e.positions,t,uc)&&(e.positions=t,e.origin=d.addVec3(e.origin,uc,d.vec3()))}if(e.positions){const t=d.collapseAABB3();e.meshMatrix&&(d.transformPositions3(e.meshMatrix,e.positions,e.positions),e.meshMatrix=null),d.expandAABB3Points3(t,e.positions),e.aabb=t}else{const t=d.collapseAABB3();d.expandAABB3Points3(t,e.positionsCompressed),Ht.decompressAABB(t,e.positionsDecodeMatrix),e.aabb=t}if(e.meshMatrix&&(d.AABB3ToOBB3(e.aabb,dc),d.transformOBB3(e.meshMatrix,dc),d.OBB3ToAABB3(dc,e.aabb)),e.buckets||e.edgeIndices||"triangles"!==e.primitive&&"solid"!==e.primitive&&"surface"!==e.primitive||(e.positions?e.edgeIndices=Lt(e.positions,e.indices,null,2):e.edgeIndices=Lt(e.positionsCompressed,e.indices,e.positionsDecodeMatrix,2)),e.textureSetId&&(e.textureSet=this._textureSets[e.textureSetId],!e.textureSet))return this.error(`[createMesh] Texture set not found: ${e.textureSetId} - ensure that you create it first with createTextureSet()`),!1}}else{if(e.positions||e.positionsCompressed||e.indices||e.edgeIndices||e.normals||e.normalsCompressed||e.uv||e.uvCompressed||e.positionsDecodeMatrix)return this.error("Mesh geometry parameters not expected when instancing a geometry (not expected: positions, positionsCompressed, indices, edgeIndices, normals, normalsCompressed, uv, uvCompressed, positionsDecodeMatrix)"),!1;if(e.geometry=this._geometries[e.geometryId],!e.geometry)return this.error(`[createMesh] Geometry not found: ${e.geometryId} - ensure that you create it first with createGeometry()`),!1;if(e.origin=e.origin?d.addVec3(this._origin,e.origin,d.vec3()):this._origin,e.positionsDecodeMatrix=e.geometry.positionsDecodeMatrix,e.transformId){if(e.transform=this._transforms[e.transformId],!e.transform)return this.error(`[createMesh] Transform not found: ${e.transformId} - ensure that you create it first with createTransform()`),!1;e.aabb=e.geometry.aabb}else{if(e.matrix)e.meshMatrix=e.matrix;else if(e.scale||e.rotation||e.position||e.quaternion){const t=e.scale||fc,i=e.position||gc;e.rotation?(d.eulerToQuaternion(e.rotation,"XYZ",pc),e.meshMatrix=d.composeMat4(i,pc,t,d.mat4())):e.meshMatrix=d.composeMat4(i,e.quaternion||mc,t,d.mat4())}d.AABB3ToOBB3(e.geometry.aabb,dc),d.transformOBB3(e.meshMatrix,dc),e.aabb=d.OBB3ToAABB3(dc,d.AABB3())}if(!(!this._dtxEnabled||"triangles"!==e.geometry.primitive&&"solid"!==e.geometry.primitive&&"surface"!==e.geometry.primitive||e.textureSetId)){e.type=2,e.color=e.color?new Uint8Array([Math.floor(255*e.color[0]),Math.floor(255*e.color[1]),Math.floor(255*e.color[2])]):vc,e.opacity=void 0!==e.opacity&&null!==e.opacity?Math.floor(255*e.opacity):255;let t=this._dtxBuckets[e.geometryId];t||(t=yc(e.geometry,this._enableVertexWelding,this._enableIndexBucketing),this._dtxBuckets[e.geometryId]=t),e.buckets=t}else e.type=0,e.color=e.color?new Uint8Array([Math.floor(255*e.color[0]),Math.floor(255*e.color[1]),Math.floor(255*e.color[2])]):vc,e.opacity=void 0!==e.opacity&&null!==e.opacity?Math.floor(255*e.opacity):255,e.metallic=void 0!==e.metallic&&null!==e.metallic?Math.floor(255*e.metallic):0,e.roughness=void 0!==e.roughness&&null!==e.roughness?Math.floor(255*e.roughness):255,e.textureSetId&&(e.textureSet=this._textureSets[e.textureSetId])}return e.numPrimitives=this._getNumPrimitives(e),this._createMesh(e)}_createMesh(e){const t=new po(this,e.id,e.color,e.opacity,e.transform,e.textureSet);t.pickId=this.scene._renderer.getPickID(t);const i=t.pickId,s=i>>24&255,r=i>>16&255,o=i>>8&255,n=255&i;switch(e.pickColor=new Uint8Array([n,o,r,s]),e.solid="solid"===e.primitive,t.origin=d.vec3(e.origin),e.type){case 2:t.layer=this._getDTXLayer(e),t.aabb=e.aabb;break;case 1:t.layer=this._getVBOBatchingLayer(e),t.aabb=e.aabb;break;case 0:t.layer=this._getVBOInstancingLayer(e),t.aabb=e.aabb}return e.transform&&(e.meshMatrix=e.transform.worldMatrix),t.portionId=t.layer.createPortion(t,e),this._meshes[e.id]=t,this._unusedMeshes[e.id]=t,this._meshList.push(t),t}_getNumPrimitives(e){let t=0;switch(e.geometry?e.geometry.primitive:e.primitive){case"triangles":case"solid":case"surface":switch(e.type){case 2:for(let i=0,s=e.buckets.length;i<s;i++)t+=e.buckets[i].indices.length;break;case 1:t+=e.indices.length;break;case 0:t+=e.geometry.indices.length}return Math.round(t/3);case"points":switch(e.type){case 2:for(let i=0,s=e.buckets.length;i<s;i++)t+=e.buckets[i].positionsCompressed.length;break;case 1:t+=e.positions?e.positions.length:e.positionsCompressed.length;break;case 0:const i=e.geometry;t+=i.positions?i.positions.length:i.positionsCompressed.length}return Math.round(t);case"lines":case"line-strip":switch(e.type){case 2:for(let i=0,s=e.buckets.length;i<s;i++)t+=e.buckets[i].indices.length;break;case 1:t+=e.indices.length;break;case 0:t+=e.geometry.indices.length}return Math.round(t/2)}return 0}_getDTXLayer(e){const t=e.origin,i=e.geometry?e.geometry.primitive:e.primitive,s=`.${i}.${Math.round(t[0])}.${Math.round(t[1])}.${Math.round(t[2])}`;let r=this._dtxLayers[s];if(r){if(r.canCreatePortion(e))return r;r.finalize(),delete this._dtxLayers[s],r=null}switch(i){case"triangles":case"solid":case"surface":r=new Lh(this,{layerIndex:0,origin:t});break;case"lines":r=new uA(this,{layerIndex:0,origin:t});break;default:return}return this._dtxLayers[s]=r,this.layerList.push(r),r}_getVBOBatchingLayer(e){const t=this,i=e.origin,s=e.positionsDecodeMatrix||e.positionsDecodeBoundary?this._createHashStringFromMatrix(e.positionsDecodeMatrix||e.positionsDecodeBoundary):"-",r=e.textureSetId||"-",o=`${Math.round(i[0])}.${Math.round(i[1])}.${Math.round(i[2])}.${e.primitive}.${s}.${r}`;let n=this._vboBatchingLayers[o];if(n)return n;let a=e.textureSet;for(;!n;){switch(e.primitive){case"triangles":case"solid":case"surface":n=new xn({model:t,textureSet:a,layerIndex:0,scratchMemory:this._vboBatchingLayerScratchMemory,positionsDecodeMatrix:e.positionsDecodeMatrix,uvDecodeMatrix:e.uvDecodeMatrix,origin:i,maxGeometryBatchSize:this._maxGeometryBatchSize,solid:"solid"===e.primitive,autoNormals:!0});break;case"lines":n=new Ra({model:t,layerIndex:0,scratchMemory:this._vboBatchingLayerScratchMemory,positionsDecodeMatrix:e.positionsDecodeMatrix,uvDecodeMatrix:e.uvDecodeMatrix,origin:i,maxGeometryBatchSize:this._maxGeometryBatchSize});break;case"points":n=new Bl({model:t,layerIndex:0,scratchMemory:this._vboBatchingLayerScratchMemory,positionsDecodeMatrix:e.positionsDecodeMatrix,uvDecodeMatrix:e.uvDecodeMatrix,origin:i,maxGeometryBatchSize:this._maxGeometryBatchSize})}const s=e.positionsCompressed?e.positionsCompressed.length:e.positions.length;("points"===e.primitive?n.canCreatePortion(s):n.canCreatePortion(s,e.indices.length))||(n.finalize(),delete this._vboBatchingLayers[o],n=null)}return this._vboBatchingLayers[o]=n,this.layerList.push(n),n}_createHashStringFromMatrix(e){const t=e.join("");let i=0;for(let e=0;e<t.length;e++){i=(i<<5)-i+t.charCodeAt(e),i|=0}return(i>>>0).toString(16)}_getVBOInstancingLayer(e){const t=this,i=e.origin,s=e.textureSetId||"-",r=e.geometryId,o=`${Math.round(i[0])}.${Math.round(i[1])}.${Math.round(i[2])}.${s}.${r}`;let n=this._vboInstancingLayers[o];if(n)return n;let a=e.textureSet;const l=e.geometry;for(;!n;)switch(l.primitive){case"triangles":case"surface":n=new fa({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0,solid:!1});break;case"solid":n=new fa({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0,solid:!0});break;case"lines":n=new el({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0});break;case"points":n=new Kl({model:t,textureSet:a,geometry:l,origin:i,layerIndex:0})}return this._vboInstancingLayers[o]=n,this.layerList.push(n),n}createEntity(e){if(void 0===e.id?e.id=d.createUUID():this.scene.components[e.id]&&(this.error(`Scene already has a Component with this ID: ${e.id} - will assign random ID`),e.id=d.createUUID()),void 0===e.meshIds)return void this.error("Config missing: meshIds");let t=0;this._visible&&!1!==e.visible&&(t|=q),this._pickable&&!1!==e.pickable&&(t|=ee),this._culled&&!1!==e.culled&&(t|=$),this._clippable&&!1!==e.clippable&&(t|=te),this._collidable&&!1!==e.collidable&&(t|=ie),this._edges&&!1!==e.edges&&(t|=ne),this._xrayed&&!1!==e.xrayed&&(t|=se),this._highlighted&&!1!==e.highlighted&&(t|=re),this._selected&&!1!==e.selected&&(t|=oe),e.flags=t,this._createEntity(e)}_createEntity(e){let t=[];for(let i=0,s=e.meshIds.length;i<s;i++){const s=e.meshIds[i];let r=this._meshes[s];r?r.parent?this.error(`Mesh with ID "${s}" already belongs to object with ID "${r.parent.id}" - ignoring this mesh`):(t.push(r),delete this._unusedMeshes[s]):this.error(`Mesh with this ID not found: "${s}" - ignoring this mesh`)}const i=new Ae(this,e.isObject,e.id,t,e.flags,!0);this._entityList.push(i),this._entities[e.id]=i,this.numEntities++}finalize(){if(!this.destroyed){this._createDummyEntityForUnusedMeshes();for(let e=0,t=this.layerList.length;e<t;e++){this.layerList[e].finalize()}this._geometries={},this._dtxBuckets={},this._textures={},this._textureSets={},this._dtxLayers={},this._vboInstancingLayers={},this._vboBatchingLayers={};for(let e=0,t=this._entityList.length;e<t;e++){this._entityList[e]._finalize()}for(let e=0,t=this._entityList.length;e<t;e++){this._entityList[e]._finalize2()}this.layerList.sort(((e,t)=>e.sortId<t.sortId?-1:e.sortId>t.sortId?1:0));for(let e=0,t=this.layerList.length;e<t;e++){this.layerList[e].layerIndex=e}this.glRedraw(),this.scene._aabbDirty=!0,this._viewMatrixDirty=!0,this._matrixDirty=!0,this._aabbDirty=!0,this._setWorldMatrixDirty(),this._sceneModelDirty(),this.position=this._position}}stateSortCompare(e,t){}rebuildRenderFlags(){this.renderFlags.reset(),this._updateRenderFlagsVisibleLayers(),this.renderFlags.numLayers>0&&0===this.renderFlags.numVisibleLayers?this.renderFlags.culled=!0:this._updateRenderFlags()}_updateRenderFlagsVisibleLayers(){const e=this.renderFlags;e.numLayers=this.layerList.length,e.numVisibleLayers=0;for(let t=0,i=this.layerList.length;t<i;t++){const i=this.layerList[t];this._getActiveSectionPlanesForLayer(i)&&(e.visibleLayers[e.numVisibleLayers++]=t)}}_createDummyEntityForUnusedMeshes(){const e=Object.keys(this._unusedMeshes);if(e.length>0){const t=`${this.id}-dummyEntityForUnusedMeshes`;this.warn(`Creating dummy SceneModelEntity "${t}" for unused SceneMeshes: [${e.join(",")}]`),this.createEntity({id:t,meshIds:e,isObject:!0})}this._unusedMeshes={}}_getActiveSectionPlanesForLayer(e){const t=this.renderFlags,i=this.scene._sectionPlanesState.sectionPlanes,s=i.length,r=e.layerIndex*s;if(s>0)for(let e=0;e<s;e++){i[e].active?(t.sectionPlanesActivePerLayer[r+e]=!0,t.sectioned=!0):t.sectionPlanesActivePerLayer[r+e]=!1}return!0}_updateRenderFlags(){if(0===this.numVisibleLayerPortions)return;if(this.numCulledLayerPortions===this.numPortions)return;const e=this.renderFlags;if(e.colorOpaque=this.numTransparentLayerPortions<this.numPortions,this.numTransparentLayerPortions>0&&(e.colorTransparent=!0),this.numXRayedLayerPortions>0){const t=this.scene.xrayMaterial._state;t.fill&&(t.fillAlpha<1?e.xrayedSilhouetteTransparent=!0:e.xrayedSilhouetteOpaque=!0),t.edges&&(t.edgeAlpha<1?e.xrayedEdgesTransparent=!0:e.xrayedEdgesOpaque=!0)}if(this.numEdgesLayerPortions>0){this.scene.edgeMaterial._state.edges&&(e.edgesOpaque=this.numTransparentLayerPortions<this.numPortions,this.numTransparentLayerPortions>0&&(e.edgesTransparent=!0))}if(this.numSelectedLayerPortions>0){const t=this.scene.selectedMaterial._state;t.fill&&(t.fillAlpha<1?e.selectedSilhouetteTransparent=!0:e.selectedSilhouetteOpaque=!0),t.edges&&(t.edgeAlpha<1?e.selectedEdgesTransparent=!0:e.selectedEdgesOpaque=!0)}if(this.numHighlightedLayerPortions>0){const t=this.scene.highlightMaterial._state;t.fill&&(t.fillAlpha<1?e.highlightedSilhouetteTransparent=!0:e.highlightedSilhouetteOpaque=!0),t.edges&&(t.edgeAlpha<1?e.highlightedEdgesTransparent=!0:e.highlightedEdgesOpaque=!0)}}drawColorOpaque(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawColorOpaque(t,e)}}drawColorTransparent(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawColorTransparent(t,e)}}drawDepth(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawDepth(t,e)}}drawNormals(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawNormals(t,e)}}drawSilhouetteXRayed(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawSilhouetteXRayed(t,e)}}drawSilhouetteHighlighted(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawSilhouetteHighlighted(t,e)}}drawSilhouetteSelected(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawSilhouetteSelected(t,e)}}drawEdgesColorOpaque(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawEdgesColorOpaque(t,e)}}drawEdgesColorTransparent(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawEdgesColorTransparent(t,e)}}drawEdgesXRayed(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawEdgesXRayed(t,e)}}drawEdgesHighlighted(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawEdgesHighlighted(t,e)}}drawEdgesSelected(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawEdgesSelected(t,e)}}drawOcclusion(e){if(0===this.numVisibleLayerPortions)return;const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawOcclusion(t,e)}}drawShadow(e){if(0===this.numVisibleLayerPortions)return;const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawShadow(t,e)}}setPickMatrices(e,t){if(0===this._numVisibleLayerPortions)return;const i=this.renderFlags;for(let s=0,r=i.visibleLayers.length;s<r;s++){const r=i.visibleLayers[s],o=this.layerList[r];o.setPickMatrices&&o.setPickMatrices(e,t)}}drawPickMesh(e){if(0===this.numVisibleLayerPortions)return;const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawPickMesh(t,e)}}drawPickDepths(e){if(0===this.numVisibleLayerPortions)return;const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawPickDepths(t,e)}}drawPickNormals(e){if(0===this.numVisibleLayerPortions)return;const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i];this.layerList[s].drawPickNormals(t,e)}}drawSnapInit(e){if(0===this.numVisibleLayerPortions)return;const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i],r=this.layerList[s];r.drawSnapInit&&(e.snapPickOrigin=[0,0,0],e.snapPickCoordinateScale=[1,1,1],e.snapPickLayerNumber++,r.drawSnapInit(t,e),e.snapPickLayerParams[e.snapPickLayerNumber]={origin:e.snapPickOrigin.slice(),coordinateScale:e.snapPickCoordinateScale.slice()})}}drawSnap(e){if(0===this.numVisibleLayerPortions)return;const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i<s;i++){const s=t.visibleLayers[i],r=this.layerList[s];r.drawSnap&&(e.snapPickOrigin=[0,0,0],e.snapPickCoordinateScale=[1,1,1],e.snapPickLayerNumber++,r.drawSnap(t,e),e.snapPickLayerParams[e.snapPickLayerNumber]={origin:e.snapPickOrigin.slice(),coordinateScale:e.snapPickCoordinateScale.slice()})}}destroy(){for(let e in this._vboBatchingLayers)this._vboBatchingLayers.hasOwnProperty(e)&&this._vboBatchingLayers[e].destroy();this._vboBatchingLayers={};for(let e in this._vboInstancingLayers)this._vboInstancingLayers.hasOwnProperty(e)&&this._vboInstancingLayers[e].destroy();this._vboInstancingLayers={},this.scene.camera.off(this._onCameraViewMatrix),this.scene.off(this._onTick);for(let e=0,t=this.layerList.length;e<t;e++)this.layerList[e].destroy();this.layerList=[];for(let e=0,t=this._entityList.length;e<t;e++)this._entityList[e]._destroy();this._geometries={},this._dtxBuckets={},this._textures={},this._textureSets={},this._meshes={},this._entities={},this.scene._aabbDirty=!0,this._isModel&&this.scene._deregisterModel(this),0!==go&&(go--,0===go&&fo._clear()),super.destroy()}}function yc(e,t,i){let s,r,o,n;if(t||i?[s,r,o]=qh({positionsCompressed:e.positionsCompressed,indices:e.indices,edgeIndices:e.edgeIndices}):(s=e.positionsCompressed,r=e.indices,o=e.edgeIndices),i){n=sc({positionsCompressed:s,indices:r,edgeIndices:o},s.length/3>65536?16:8)}else n=[{positionsCompressed:s,indices:r,edgeIndices:o}];return n}class Bc extends R{constructor(e,t={}){if(super(e,t),this._positions=t.positions||[],t.indices)this._indices=t.indices;else{this._indices=[];for(let e=0,t=this._positions.length/3-1;e<t;e+=2)this._indices.push(e),this._indices.push(e+1)}this._sceneModel=new bc(this,{isModel:!1}),this._sceneModel.createMesh({id:"linesMesh",primitive:"lines",positions:this._positions,indices:this._indices}),this._sceneModel.createEntity({meshIds:["linesMesh"],visible:t.visible,clippable:t.clippable,collidable:t.collidable}),this._sceneModel.finalize(),this.scene._lineSetCreated(this)}set visible(e){this._sceneModel.visible=e}get visible(){return this._sceneModel.visible}get positions(){return this._positions}get indices(){return this._indices}destroy(){super.destroy(),this.scene._lineSetDestroyed(this)}}const wc=d.vec3(),xc=d.vec3(),Pc=d.vec3(),Cc=d.vec3();class Mc extends z{constructor(e,t={}){super("BCFViewpoints",e,t),this.originatingSystem=t.originatingSystem||"xeokit.io",this.authoringTool=t.authoringTool||"xeokit.io"}getViewpoint(e={}){const t=this.viewer.scene,i=t.camera,s=t.realWorldOffset,r=!0===e.reverseClippingPlanes;let o={},n=d.normalizeVec3(d.subVec3(i.look,i.eye,d.vec3())),a=i.eye,l=i.up;i.yUp&&(n=Ic(n),a=Ic(a),l=Ic(l));const A=Fc(d.addVec3(a,s));"ortho"===i.projection?o.orthogonal_camera={camera_view_point:A,camera_direction:Fc(n),camera_up_vector:Fc(l),view_to_world_scale:i.ortho.scale}:o.perspective_camera={camera_view_point:A,camera_direction:Fc(n),camera_up_vector:Fc(l),field_of_view:i.perspective.fov};const h=t.sectionPlanes;for(let e in h)if(h.hasOwnProperty(e)){let t=h[e];if(!t.active)continue;let n,a=t.pos;n=r?d.negateVec3(t.dir,d.vec3()):t.dir,i.yUp&&(a=Ic(a),n=Ic(n)),d.addVec3(a,s),a=Fc(a),n=Fc(n),o.clipping_planes||(o.clipping_planes=[]),o.clipping_planes.push({location:a,direction:n})}const c=t.lineSets;for(let e in c)if(c.hasOwnProperty(e)){const t=c[e];o.lines||(o.lines=[]);const i=t.positions,s=t.indices;for(let e=0,t=s.length/2;e<t;e++){const t=s[2*e],r=s[2*e+1];o.lines.push({start_point:{x:i[3*t+0],y:i[3*t+1],z:i[3*t+2]},end_point:{x:i[3*r+0],y:i[3*r+1],z:i[3*r+2]}})}}const u=t.bitmaps;for(let e in u)if(u.hasOwnProperty(e)){let t=u[e],r=t.pos,n=t.normal,a=t.up;i.yUp&&(r=Ic(r),n=Ic(n),a=Ic(a)),d.addVec3(r,s),o.bitmaps||(o.bitmaps=[]),o.bitmaps.push({bitmap_type:t.type,bitmap_data:t.imageData,location:Fc(r),normal:Fc(n),up:Fc(a),height:t.height})}o.components={visibility:{view_setup_hints:{spaces_visible:!!e.spacesVisible,space_boundaries_visible:!!e.spaceBoundariesVisible,openings_visible:!!e.openingsVisible,spaces_translucent:!!e.spaces_translucent,space_boundaries_translucent:!!e.space_boundaries_translucent,openings_translucent:!!e.openings_translucent}}};const p=new Set(t.opacityObjectIds),f=new Set(t.xrayedObjectIds),g=new Set(t.colorizedObjectIds),m=Object.values(t.objects).filter((e=>p.has(e.id)||g.has(e.id)||f.has(e.id))).reduce(((e,i)=>{let s,r=function(e){let t="";return t+=Math.round(255*e[0]).toString(16).padStart(2,"0"),t+=Math.round(255*e[1]).toString(16).padStart(2,"0"),t+=Math.round(255*e[2]).toString(16).padStart(2,"0"),t}(i.colorize);i.xrayed?(s=0===t.xrayMaterial.fillAlpha&&0!==t.xrayMaterial.edgeAlpha?.1:t.xrayMaterial.fillAlpha,s=Math.round(255*s).toString(16).padStart(2,"0"),r=s+r):p.has(i.id)&&(s=Math.round(255*i.opacity).toString(16).padStart(2,"0"),r=s+r),e[r]||(e[r]=[]);const o=i.id,n=i.originalSystemId,a={ifc_guid:n,originating_system:this.originatingSystem};return n!==o&&(a.authoring_tool_id=o),e[r].push(a),e}),{}),_=Object.entries(m).map((([e,t])=>({color:e,components:t})));o.components.coloring=_;const v=t.objectIds,b=t.visibleObjects,y=t.visibleObjectIds,B=v.filter((e=>!b[e])),w=t.selectedObjectIds;return e.defaultInvisible||y.length<B.length?(o.components.visibility.exceptions=this._createBCFComponents(y),o.components.visibility.default_visibility=!1):(o.components.visibility.exceptions=this._createBCFComponents(B),o.components.visibility.default_visibility=!0),o.components.selection=this._createBCFComponents(w),o.components.translucency=this._createBCFComponents(t.xrayedObjectIds),!1!==e.snapshot&&(o.snapshot={snapshot_type:"png",snapshot_data:this.viewer.getSnapshot({format:"png"})}),o}_createBCFComponents(e){const t=this.viewer.scene,i=[];for(let s=0,r=e.length;s<r;s++){const r=e[s],o=t.objects[r];if(o){const e={ifc_guid:o.originalSystemId,originating_system:this.originatingSystem};o.originalSystemId!==r&&(e.authoring_tool_id=r),i.push(e)}}return i}setViewpoint(e,t={}){if(!e)return;const i=this.viewer,s=i.scene,r=s.camera,o=!1!==t.rayCast,n=!1!==t.immediate,a=!1!==t.reset,l=s.realWorldOffset,A=!0===t.reverseClippingPlanes;if(s.clearSectionPlanes(),e.clipping_planes&&e.clipping_planes.length>0&&e.clipping_planes.forEach((function(e){let t=Ec(e.location,wc),i=Ec(e.direction,wc);A&&d.negateVec3(i),d.subVec3(t,l),r.yUp&&(t=Dc(t),i=Dc(i)),new Br(s,{pos:t,dir:i})})),s.clearLines(),e.lines&&e.lines.length>0){const t=[],i=[];let r=0;e.lines.forEach((e=>{e.start_point&&e.end_point&&(t.push(e.start_point.x),t.push(e.start_point.y),t.push(e.start_point.z),t.push(e.end_point.x),t.push(e.end_point.y),t.push(e.end_point.z),i.push(r++),i.push(r++))})),new Bc(s,{positions:t,indices:i,clippable:!1,collidable:!0})}if(s.clearBitmaps(),e.bitmaps&&e.bitmaps.length>0&&e.bitmaps.forEach((function(e){const t=e.bitmap_type||"jpg",i=e.bitmap_data;let o=Ec(e.location,xc),n=Ec(e.normal,Pc),a=Ec(e.up,Cc),l=e.height||1;t&&i&&o&&n&&a&&(r.yUp&&(o=Dc(o),n=Dc(n),a=Dc(a)),new Ao(s,{src:i,type:t,pos:o,normal:n,up:a,clippable:!1,collidable:!0,height:l}))})),a&&(s.setObjectsXRayed(s.xrayedObjectIds,!1),s.setObjectsHighlighted(s.highlightedObjectIds,!1),s.setObjectsSelected(s.selectedObjectIds,!1)),e.components){if(e.components.visibility){e.components.visibility.default_visibility?(s.setObjectsVisible(s.objectIds,!0),e.components.visibility.exceptions&&e.components.visibility.exceptions.forEach((e=>this._withBCFComponent(t,e,(e=>e.visible=!1))))):(s.setObjectsVisible(s.objectIds,!1),e.components.visibility.exceptions&&e.components.visibility.exceptions.forEach((e=>this._withBCFComponent(t,e,(e=>e.visible=!0)))));const r=e.components.visibility.view_setup_hints;r&&(!1===r.spaces_visible&&s.setObjectsVisible(i.metaScene.getObjectIDsByType("IfcSpace"),!1),void 0!==r.spaces_translucent&&s.setObjectsXRayed(i.metaScene.getObjectIDsByType("IfcSpace"),!0),r.space_boundaries_visible,!1===r.openings_visible&&s.setObjectsVisible(i.metaScene.getObjectIDsByType("IfcOpening"),!0),r.space_boundaries_translucent,void 0!==r.openings_translucent&&s.setObjectsXRayed(i.metaScene.getObjectIDsByType("IfcOpening"),!0))}e.components.selection&&(s.setObjectsSelected(s.selectedObjectIds,!1),e.components.selection.forEach((e=>this._withBCFComponent(t,e,(e=>e.selected=!0))))),e.components.translucency&&(s.setObjectsXRayed(s.xrayedObjectIds,!1),e.components.translucency.forEach((e=>this._withBCFComponent(t,e,(e=>e.xrayed=!0))))),e.components.coloring&&e.components.coloring.forEach((e=>{let i=e.color,s=0,r=!1;8===i.length&&(s=parseInt(i.substring(0,2),16)/256,s<=1&&s>=.95&&(s=1),i=i.substring(2),r=!0);const o=[parseInt(i.substring(0,2),16)/256,parseInt(i.substring(2,4),16)/256,parseInt(i.substring(4,6),16)/256];e.components.map((e=>this._withBCFComponent(t,e,(e=>{e.colorize=o,r&&(e.opacity=s)}))))}))}if(e.perspective_camera||e.orthogonal_camera){let a,A,h,c;if(e.perspective_camera?(a=Ec(e.perspective_camera.camera_view_point,wc),A=Ec(e.perspective_camera.camera_direction,wc),h=Ec(e.perspective_camera.camera_up_vector,wc),r.perspective.fov=e.perspective_camera.field_of_view,c="perspective"):(a=Ec(e.orthogonal_camera.camera_view_point,wc),A=Ec(e.orthogonal_camera.camera_direction,wc),h=Ec(e.orthogonal_camera.camera_up_vector,wc),r.ortho.scale=e.orthogonal_camera.view_to_world_scale,c="ortho"),d.subVec3(a,l),r.yUp&&(a=Dc(a),A=Dc(A),h=Dc(h)),o){const e=s.pick({pickSurface:!0,origin:a,direction:A});A=e?e.worldPos:d.addVec3(a,A,wc)}else A=d.addVec3(a,A,wc);n?(r.eye=a,r.look=A,r.up=h,r.projection=c):i.cameraFlight.flyTo({eye:a,look:A,up:h,duration:t.duration,projection:c})}}_withBCFComponent(e,t,i){const s=this.viewer,r=s.scene;if(t.authoring_tool_id&&t.originating_system===this.originatingSystem){const o=t.authoring_tool_id,n=r.objects[o];if(n)return void i(n);if(e.updateCompositeObjects){if(s.metaScene.metaObjects[o])return void r.withObjects(s.metaScene.getObjectIDsInSubtree(o),i)}}if(t.ifc_guid){const o=t.ifc_guid,n=r.objects[o];if(n)return void i(n);if(e.updateCompositeObjects){if(s.metaScene.metaObjects[o])return void r.withObjects(s.metaScene.getObjectIDsInSubtree(o),i)}Object.keys(r.models).forEach((t=>{const n=d.globalizeObjectId(t,o),a=r.objects[n];if(a)i(a);else if(e.updateCompositeObjects){s.metaScene.metaObjects[n]&&r.withObjects(s.metaScene.getObjectIDsInSubtree(n),i)}}))}}destroy(){super.destroy()}}function Fc(e){return{x:e[0],y:e[1],z:e[2]}}function Ec(e,t){return(t=new Float64Array(3))[0]=e.x,t[1]=e.y,t[2]=e.z,t}function Ic(e){return new Float64Array([e[0],-e[2],e[1]])}function Dc(e){return new Float64Array([e[0],e[2],-e[1]])}const Sc=d.vec3(),Tc=(e,t,i,s)=>{var r=e-i,o=t-s;return Math.sqrt(r*r+o*o)};class Rc extends R{constructor(e,t={}){if(super(e.viewer.scene,t),this.plugin=e,this._container=t.container,!this._container)throw"config missing: container";this._eventSubs={};var i=this.plugin.viewer.scene;this._originMarker=new ue(i,t.origin),this._targetMarker=new ue(i,t.target),this._originWorld=d.vec3(),this._targetWorld=d.vec3(),this._wp=new Float64Array(24),this._vp=new Float64Array(24),this._pp=new Float64Array(24),this._cp=new Float64Array(8),this._xAxisLabelCulled=!1,this._yAxisLabelCulled=!1,this._zAxisLabelCulled=!1,this._color=t.color||this.plugin.defaultColor;const s=t.onMouseOver?e=>{t.onMouseOver(e,this),this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mouseover",e))}:null,r=t.onMouseLeave?e=>{t.onMouseLeave(e,this),this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mouseleave",e))}:null,o=e=>{this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mousedown",e))},n=e=>{this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mouseup",e))},a=e=>{this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new MouseEvent("mousemove",e))},l=t.onContextMenu?e=>{t.onContextMenu(e,this)}:null,A=e=>{this.plugin.viewer.scene.canvas.canvas.dispatchEvent(new WheelEvent("wheel",e))};this._originDot=new fe(this._container,{fillColor:this._color,zIndex:void 0!==e.zIndex?e.zIndex+2:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._targetDot=new fe(this._container,{fillColor:this._color,zIndex:void 0!==e.zIndex?e.zIndex+2:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._lengthWire=new pe(this._container,{color:this._color,thickness:2,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._xAxisWire=new pe(this._container,{color:"#FF0000",thickness:1,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._yAxisWire=new pe(this._container,{color:"green",thickness:1,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._zAxisWire=new pe(this._container,{color:"blue",thickness:1,thicknessClickable:6,zIndex:void 0!==e.zIndex?e.zIndex+1:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._lengthLabel=new ge(this._container,{fillColor:this._color,prefix:"",text:"",zIndex:void 0!==e.zIndex?e.zIndex+4:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._xAxisLabel=new ge(this._container,{fillColor:"red",prefix:"X",text:"",zIndex:void 0!==e.zIndex?e.zIndex+3:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._yAxisLabel=new ge(this._container,{fillColor:"green",prefix:"Y",text:"",zIndex:void 0!==e.zIndex?e.zIndex+3:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._zAxisLabel=new ge(this._container,{fillColor:"blue",prefix:"Z",text:"",zIndex:void 0!==e.zIndex?e.zIndex+3:void 0,onMouseOver:s,onMouseLeave:r,onMouseWheel:A,onMouseDown:o,onMouseUp:n,onMouseMove:a,onContextMenu:l}),this._measurementOrientation="Horizontal",this._wpDirty=!1,this._vpDirty=!1,this._cpDirty=!1,this._sectionPlanesDirty=!0,this._visible=!1,this._originVisible=!1,this._targetVisible=!1,this._wireVisible=!1,this._axisVisible=!1,this._xAxisVisible=!1,this._yAxisVisible=!1,this._zAxisVisible=!1,this._axisEnabled=!0,this._xLabelEnabled=!1,this._yLabelEnabled=!1,this._zLabelEnabled=!1,this._lengthLabelEnabled=!1,this._labelsVisible=!1,this._labelsOnWires=!1,this._clickable=!1,this._originMarker.on("worldPos",(e=>{this._originWorld.set(e||[0,0,0]),this._wpDirty=!0,this._needUpdate(0)})),this._targetMarker.on("worldPos",(e=>{this._targetWorld.set(e||[0,0,0]),this._wpDirty=!0,this._needUpdate(0)})),this._onViewMatrix=i.camera.on("viewMatrix",(()=>{this._vpDirty=!0,this._needUpdate(0)})),this._onProjMatrix=i.camera.on("projMatrix",(()=>{this._cpDirty=!0,this._needUpdate()})),this._onCanvasBoundary=i.canvas.on("boundary",(()=>{this._cpDirty=!0,this._needUpdate(0)})),this._onMetricsUnits=i.metrics.on("units",(()=>{this._cpDirty=!0,this._needUpdate()})),this._onMetricsScale=i.metrics.on("scale",(()=>{this._cpDirty=!0,this._needUpdate()})),this._onMetricsOrigin=i.metrics.on("origin",(()=>{this._cpDirty=!0,this._needUpdate()})),this._onSectionPlaneUpdated=i.on("sectionPlaneUpdated",(()=>{this._sectionPlanesDirty=!0,this._needUpdate()})),this.approximate=t.approximate,this.visible=t.visible,this.originVisible=t.originVisible,this.targetVisible=t.targetVisible,this.wireVisible=t.wireVisible,this.axisVisible=t.axisVisible,this.xAxisVisible=t.xAxisVisible,this.yAxisVisible=t.yAxisVisible,this.zAxisVisible=t.zAxisVisible,this.xLabelEnabled=t.xLabelEnabled,this.yLabelEnabled=t.yLabelEnabled,this.zLabelEnabled=t.zLabelEnabled,this.lengthLabelEnabled=t.lengthLabelEnabled,this.labelsVisible=t.labelsVisible,this.labelsOnWires=t.labelsOnWires,this.useRotationAdjustment=t.useRotationAdjustment}_update(){if(!this._visible)return;const e=this.plugin.viewer.scene;if(this._wpDirty&&(this._measurementOrientation=function(e,t,i){return Math.abs(t[1]-e[1])>i?"Vertical":"Horizontal"}(this._originWorld,this._targetWorld,1),"Vertical"===this._measurementOrientation&&this.useRotationAdjustment?(this._wp[0]=this._originWorld[0],this._wp[1]=this._originWorld[1],this._wp[2]=this._originWorld[2],this._wp[3]=1,this._wp[4]=this._originWorld[0],this._wp[5]=this._originWorld[1],this._wp[6]=this._originWorld[2],this._wp[7]=1,this._wp[8]=this._originWorld[0],this._wp[9]=this._targetWorld[1],this._wp[10]=this._originWorld[2],this._wp[11]=1,this._wp[12]=this._targetWorld[0],this._wp[13]=this._targetWorld[1],this._wp[14]=this._targetWorld[2],this._wp[15]=1):(this._wp[0]=this._originWorld[0],this._wp[1]=this._originWorld[1],this._wp[2]=this._originWorld[2],this._wp[3]=1,this._wp[4]=this._targetWorld[0],this._wp[5]=this._originWorld[1],this._wp[6]=this._originWorld[2],this._wp[7]=1,this._wp[8]=this._targetWorld[0],this._wp[9]=this._targetWorld[1],this._wp[10]=this._originWorld[2],this._wp[11]=1,this._wp[12]=this._targetWorld[0],this._wp[13]=this._targetWorld[1],this._wp[14]=this._targetWorld[2],this._wp[15]=1),this._wpDirty=!1,this._vpDirty=!0),this._vpDirty&&(d.transformPositions4(e.camera.viewMatrix,this._wp,this._vp),this._vp[3]=1,this._vp[7]=1,this._vp[11]=1,this._vp[15]=1,this._vpDirty=!1,this._cpDirty=!0),this._sectionPlanesDirty){if(this._isSliced(this._originWorld)||this._isSliced(this._targetWorld))return this._xAxisLabel.setCulled(!0),this._yAxisLabel.setCulled(!0),this._zAxisLabel.setCulled(!0),this._lengthLabel.setCulled(!0),this._xAxisWire.setCulled(!0),this._yAxisWire.setCulled(!0),this._zAxisWire.setCulled(!0),this._lengthWire.setCulled(!0),this._originDot.setCulled(!0),void this._targetDot.setCulled(!0);this._xAxisLabel.setCulled(!1),this._yAxisLabel.setCulled(!1),this._zAxisLabel.setCulled(!1),this._lengthLabel.setCulled(!1),this._xAxisWire.setCulled(!1),this._yAxisWire.setCulled(!1),this._zAxisWire.setCulled(!1),this._lengthWire.setCulled(!1),this._originDot.setCulled(!1),this._targetDot.setCulled(!1),this._sectionPlanesDirty=!0}const t=this._originMarker.viewPos[2],i=this._targetMarker.viewPos[2];if(t>-.3||i>-.3)return this._xAxisLabel.setCulled(!0),this._yAxisLabel.setCulled(!0),this._zAxisLabel.setCulled(!0),this._lengthLabel.setCulled(!0),this._xAxisWire.setVisible(!1),this._yAxisWire.setVisible(!1),this._zAxisWire.setVisible(!1),this._lengthWire.setVisible(!1),this._originDot.setVisible(!1),void this._targetDot.setVisible(!1);if(this._cpDirty){d.transformPositions4(e.camera.project.matrix,this._vp,this._pp);var s=this._pp,r=this._cp,o=e.canvas.canvas.getBoundingClientRect();const t=this._container.getBoundingClientRect();var n=o.top-t.top,a=o.left-t.left,l=e.canvas.boundary,A=l[2],h=l[3],c=0;const i=this.plugin.viewer.scene.metrics,f=i.scale,g=i.units,m=i.unitsInfo[g].abbrev;for(var u=0,p=s.length;u<p;u+=4)r[c]=a+Math.floor((1+s[u+0]/s[u+3])*A/2),r[c+1]=n+Math.floor((1-s[u+1]/s[u+3])*h/2),c+=2;if(this._originDot.setPos(r[0],r[1]),this._targetDot.setPos(r[6],r[7]),this._lengthWire.setStartAndEnd(r[0],r[1],r[6],r[7]),this._xAxisWire.setStartAndEnd(r[0],r[1],r[2],r[3]),this._yAxisWire.setStartAndEnd(r[2],r[3],r[4],r[5]),this._zAxisWire.setStartAndEnd(r[4],r[5],r[6],r[7]),this.labelsVisible){if(this._lengthLabel.setPosOnWire(r[0],r[1],r[6],r[7]),this.labelsOnWires)this._xAxisLabel.setPosOnWire(r[0],r[1],r[2],r[3]),this._yAxisLabel.setPosOnWire(r[2],r[3],r[4],r[5]),this._zAxisLabel.setPosOnWire(r[4],r[5],r[6],r[7]);else{const e=35;let t=e;this._xAxisLabel.setPosOnWire(r[0],r[1]+t,r[6],r[7]+t),t+=e,this._yAxisLabel.setPosOnWire(r[0],r[1]+t,r[6],r[7]+t),t+=e,this._zAxisLabel.setPosOnWire(r[0],r[1]+t,r[6],r[7]+t)}const e=this._approximate?" ~ ":" = ";this._length=Math.abs(d.lenVec3(d.subVec3(this._targetWorld,this._originWorld,Sc))),this._lengthLabel.setText(e+(this._length*f).toFixed(2)+m);const t=Math.abs(Tc(r[0],r[1],r[2],r[3])),i=Math.abs(Tc(r[2],r[3],r[4],r[5])),s=Math.abs(Tc(r[4],r[5],r[6],r[7])),o=this.plugin.labelMinAxisLength;this.labelsOnWires?(this._xAxisLabelCulled=t<o,this._yAxisLabelCulled=i<o,this._zAxisLabelCulled=s<o):(this._xAxisLabelCulled=!1,this._yAxisLabelCulled=!1,this._zAxisLabelCulled=!1),this._xAxisLabelCulled?this._xAxisLabel.setCulled(!0):(this._xAxisLabel.setText(e+Math.abs((this._targetWorld[0]-this._originWorld[0])*f).toFixed(2)+m),this._xAxisLabel.setCulled(!this.axisVisible)),this._yAxisLabelCulled?this._yAxisLabel.setCulled(!0):(this._yAxisLabel.setText(e+Math.abs((this._targetWorld[1]-this._originWorld[1])*f).toFixed(2)+m),this._yAxisLabel.setCulled(!this.axisVisible)),this._zAxisLabelCulled?this._zAxisLabel.setCulled(!0):("Vertical"===this._measurementOrientation?(this._zAxisLabel.setPrefix(""),this._zAxisLabel.setText(e+Math.abs(d.lenVec3(d.subVec3(this._targetWorld,[this._originWorld[0],this._targetWorld[1],this._originWorld[2]],Sc))*f).toFixed(2)+m)):(this._zAxisLabel.setPrefix("Z"),this._zAxisLabel.setText(e+Math.abs((this._targetWorld[2]-this._originWorld[2])*f).toFixed(2)+m)),this._zAxisLabel.setCulled(!this.axisVisible))}else this._lengthLabel.setCulled(!0),this._xAxisLabel.setCulled(!0),this._yAxisLabel.setCulled(!0),this._zAxisLabel.setCulled(!0);this._originDot.setVisible(this._visible&&this._originVisible),this._targetDot.setVisible(this._visible&&this._targetVisible),this._xAxisWire.setVisible(this.axisVisible&&this.xAxisVisible),this._yAxisWire.setVisible(this.axisVisible&&this.yAxisVisible),this._zAxisWire.setVisible(this.axisVisible&&this.zAxisVisible),this._lengthWire.setVisible(this.wireVisible),this._lengthLabel.setCulled(!this.wireVisible),this._cpDirty=!1}}_isSliced(e){const t=this.scene._sectionPlanesState.sectionPlanes;for(let i=0,s=t.length;i<s;i++){const s=t[i];if(d.planeClipsPositions3(s.pos,s.dir,e,4))return!0}return!1}set approximate(e){e=!1!==e,this._approximate!==e&&(this._approximate=e,this._cpDirty=!0,this._needUpdate(0))}get approximate(){return this._approximate}get origin(){return this._originMarker}get target(){return this._targetMarker}get length(){this._update();const e=this.plugin.viewer.scene.metrics.scale;return this._length*e}get color(){return this._color}set color(e){this._color=e,this._originDot.setFillColor(e),this._targetDot.setFillColor(e),this._lengthWire.setColor(e),this._lengthLabel.setFillColor(e)}set visible(e){e=void 0!==e?Boolean(e):this.plugin.defaultVisible,this._visible=e,this._originDot.setVisible(this._visible&&this._originVisible),this._targetDot.setVisible(this._visible&&this._targetVisible),this._lengthWire.setVisible(this._visible&&this._wireVisible),this._lengthLabel.setVisible(this._visible&&this._wireVisible&&this._lengthLabelEnabled);const t=this._visible&&this._axisVisible&&this._xAxisVisible,i=this._visible&&this._axisVisible&&this._yAxisVisible,s=this._visible&&this._axisVisible&&this._zAxisVisible;this._xAxisWire.setVisible(t),this._yAxisWire.setVisible(i),this._zAxisWire.setVisible(s),this._xAxisLabel.setVisible(t&&!this._xAxisLabelCulled&&this._EnabledVisible),this._yAxisLabel.setVisible(i&&!this._yAxisLabelCulled&&this._yLabelEnabled),this._zAxisLabel.setVisible(s&&!this._zAxisLabelCulled&&this._zLabelEnabled),this._cpDirty=!0,this._needUpdate()}get visible(){return this._visible}set originVisible(e){e=void 0!==e?Boolean(e):this.plugin.defaultOriginVisible,this._originVisible=e,this._originDot.setVisible(this._visible&&this._originVisible)}get originVisible(){return this._originVisible}set targetVisible(e){e=void 0!==e?Boolean(e):this.plugin.defaultTargetVisible,this._targetVisible=e,this._targetDot.setVisible(this._visible&&this._targetVisible)}get targetVisible(){return this._targetVisible}set axisEnabled(e){e=void 0!==e?Boolean(e):this.plugin.defaultAxisVisible,this._axisEnabled=e;var t=this._visible&&this._axisVisible&&this._axisEnabled;this._xAxisWire.setVisible(t&&this._xAxisVisible),this._yAxisWire.setVisible(t&&this._yAxisVisible),this._zAxisWire.setVisible(t&&this._zAxisVisible),this._xAxisLabel.setVisible(t&&!this._xAxisLabelCulled&&this._xAxisVisible&&this._xLabelEnabled),this._yAxisLabel.setVisible(t&&!this._yAxisLabelCulled&&this._xAxisVisible&&this._yLabelEnabled),this._zAxisLabel.setVisible(t&&!this._zAxisLabelCulled&&this._xAxisVisible&&this._zLabelEnabled),this._cpDirty=!0,this._needUpdate()}get axisEnabled(){return this._axisEnabled}set axisVisible(e){e=void 0!==e?Boolean(e):this.plugin.defaultAxisVisible,this._axisVisible=e;var t=this._visible&&this._axisVisible&&this._axisEnabled;this._xAxisWire.setVisible(t&&this._xAxisVisible),this._yAxisWire.setVisible(t&&this._yAxisVisible),this._zAxisWire.setVisible(t&&this._zAxisVisible),this._xAxisLabel.setVisible(t&&!this._xAxisLabelCulled&&this._xAxisVisible),this._yAxisLabel.setVisible(t&&!this._yAxisLabelCulled&&this._yAxisVisible),this._zAxisLabel.setVisible(t&&!this._zAxisLabelCulled&&this._zAxisVisible),this._cpDirty=!0,this._needUpdate()}get axisVisible(){return this._axisVisible}set xAxisVisible(e){e=void 0!==e?Boolean(e):this.plugin.defaultAxisVisible,this._xAxisVisible=e;const t=this._visible&&this._axisVisible&&this._xAxisVisible&&this._axisEnabled;this._xAxisWire.setVisible(t),this._xAxisLabel.setVisible(t&&!this._xAxisLabelCulled&&this._xLabelEnabled),this._cpDirty=!0,this._needUpdate()}get xAxisVisible(){return this._xAxisVisible}set yAxisVisible(e){e=void 0!==e?Boolean(e):this.plugin.defaultAxisVisible,this._yAxisVisible=e;const t=this._visible&&this._axisVisible&&this._yAxisVisible&&this._axisEnabled;this._yAxisWire.setVisible(t),this._yAxisLabel.setVisible(t&&!this._yAxisLabelCulled&&this._yLabelEnabled),this._cpDirty=!0,this._needUpdate()}get yAxisVisible(){return this._yAxisVisible}set zAxisVisible(e){e=void 0!==e?Boolean(e):this.plugin.defaultAxisVisible,this._zAxisVisible=e;const t=this._visible&&this._axisVisible&&this._zAxisVisible&&this._axisEnabled;this._zAxisWire.setVisible(t),this._zAxisLabel.setVisible(t&&!this._zAxisLabelCulled&&this._zLabelEnabled),this._cpDirty=!0,this._needUpdate()}get zAxisVisible(){return this._zAxisVisible}set wireVisible(e){e=void 0!==e?Boolean(e):this.plugin.defaultWireVisible,this._wireVisible=e;var t=this._visible&&this._wireVisible;this._lengthLabel.setVisible(t&&this._lengthLabelEnabled),this._lengthWire.setVisible(t)}get wireVisible(){return this._wireVisible}set labelsVisible(e){e=void 0!==e?Boolean(e):this.plugin.defaultLabelsVisible,this._labelsVisible=e;var t=this._visible&&this._labelsVisible;this._xAxisLabel.setVisible(t&&!this._xAxisLabelCulled&&this._clickable&&this._axisEnabled&&this._xLabelEnabled),this._yAxisLabel.setVisible(t&&!this._yAxisLabelCulled&&this._clickable&&this._axisEnabled&&this._yLabelEnabled),this._zAxisLabel.setVisible(t&&!this._zAxisLabelCulled&&this._clickable&&this._axisEnabled&&this._zLabelEnabled),this._lengthLabel.setVisible(t&&this._lengthLabelEnabled),this._cpDirty=!0,this._needUpdate()}get labelsVisible(){return this._labelsVisible}set xLabelEnabled(e){e=void 0!==e?Boolean(e):this.plugin.defaultXLabelEnabled,this._xLabelEnabled=e;var t=this._visible&&this._labelsVisible;this._xAxisLabel.setVisible(t&&!this._xAxisLabelCulled&&this._clickable&&this._axisEnabled&&this._xLabelEnabled),this._cpDirty=!0,this._needUpdate()}get xLabelEnabled(){return this._xLabelEnabled}set yLabelEnabled(e){e=void 0!==e?Boolean(e):this.plugin.defaultYLabelEnabled,this._yLabelEnabled=e;var t=this._visible&&this._labelsVisible;this._yAxisLabel.setVisible(t&&!this._yAxisLabelCulled&&this._clickable&&this._axisEnabled&&this._yLabelEnabled),this._cpDirty=!0,this._needUpdate()}get yLabelEnabled(){return this._yLabelEnabled}set zLabelEnabled(e){e=void 0!==e?Boolean(e):this.plugin.defaultZLabelEnabled,this._zLabelEnabled=e;var t=this._visible&&this._labelsVisible;this._zAxisLabel.setVisible(t&&!this._zAxisLabelCulled&&this._clickable&&this._axisEnabled&&this._zLabelEnabled),this._cpDirty=!0,this._needUpdate()}get zLabelEnabled(){return this._zLabelEnabled}set lengthLabelEnabled(e){e=void 0!==e?Boolean(e):this.plugin.defaultLengthLabelEnabled,this._lengthLabelEnabled=e;var t=this._visible&&this._labelsVisible;this._lengthLabel.setVisible(t&&!this._lengthAxisLabelCulled&&this._clickable&&this._axisEnabled&&this._lengthLabelEnabled),this._cpDirty=!0,this._needUpdate()}get lengthLabelEnabled(){return this._lengthLabelEnabled}set labelsOnWires(e){e=void 0!==e?Boolean(e):this.plugin.defaultLabelsOnWires,this._labelsOnWires=e}get labelsOnWires(){return this._labelsOnWires}setHighlighted(e){this._originDot.setHighlighted(e),this._targetDot.setHighlighted(e),this._xAxisWire.setHighlighted(e),this._yAxisWire.setHighlighted(e),this._zAxisWire.setHighlighted(e),this._xAxisLabel.setHighlighted(e),this._yAxisLabel.setHighlighted(e),this._zAxisLabel.setHighlighted(e),this._lengthWire.setHighlighted(e),this._lengthLabel.setHighlighted(e)}set clickable(e){e=!!e,this._clickable=e,this._originDot.setClickable(this._clickable),this._targetDot.setClickable(this._clickable),this._xAxisWire.setClickable(this._clickable),this._yAxisWire.setClickable(this._clickable),this._zAxisWire.setClickable(this._clickable),this._lengthWire.setClickable(this._clickable),this._xAxisLabel.setClickable(this._clickable),this._yAxisLabel.setClickable(this._clickable),this._zAxisLabel.setClickable(this._clickable),this._lengthLabel.setClickable(this._clickable)}get clickable(){return this._clickable}destroy(){const e=this.plugin.viewer.scene,t=e.metrics;this._onViewMatrix&&e.camera.off(this._onViewMatrix),this._onProjMatrix&&e.camera.off(this._onProjMatrix),this._onCanvasBoundary&&e.canvas.off(this._onCanvasBoundary),this._onMetricsUnits&&t.off(this._onMetricsUnits),this._onMetricsScale&&t.off(this._onMetricsScale),this._onMetricsOrigin&&t.off(this._onMetricsOrigin),this._onSectionPlaneUpdated&&e.off(this._onSectionPlaneUpdated),this._originDot.destroy(),this._targetDot.destroy(),this._xAxisWire.destroy(),this._yAxisWire.destroy(),this._zAxisWire.destroy(),this._lengthLabel.destroy(),this._xAxisLabel.destroy(),this._yAxisLabel.destroy(),this._zAxisLabel.destroy(),this._lengthWire.destroy(),super.destroy()}}class Lc extends R{get active(){}set snapping(e){}get snapping(){return!0}activate(){}deactivate(){}reset(){}get currentMeasurement(){return null}destroy(){}}class Uc extends Lc{constructor(e,t={}){super(e.viewer.scene),this._canvasToPagePos=t.canvasToPagePos,this.pointerLens=t.pointerLens,this._active=!1,this._currentDistanceMeasurement=null,this._currentDistanceMeasurementInitState={wireVisible:null,axisVisible:null,xAxisVisible:null,yaxisVisible:null,zAxisVisible:null,targetVisible:null},this._initMarkerDiv(),this._onCameraControlHoverSnapOrSurface=null,this._onCameraControlHoverSnapOrSurfaceOff=null,this._onMouseDown=null,this._onMouseUp=null,this._onCanvasTouchStart=null,this._onCanvasTouchEnd=null,this._snapping=!1!==t.snapping,this._mouseState=0,this._attachPlugin(e,t)}_initMarkerDiv(){const e=document.createElement("div");e.setAttribute("id","myMarkerDiv");const t=this.scene.canvas.canvas;t.parentNode.insertBefore(e,t),e.style.background="black",e.style.border="2px solid blue",e.style.borderRadius="10px",e.style.width="5px",e.style.height="5px",e.style.top="-200px",e.style.left="-200px",e.style.margin="0 0",e.style.zIndex="100",e.style.position="absolute",e.style.pointerEvents="none",this._markerDiv=e}_destroyMarkerDiv(){if(this._markerDiv){const e=document.getElementById("myMarkerDiv");e.parentNode.removeChild(e),this._markerDiv=null}}_attachPlugin(e,t={}){this.distanceMeasurementsPlugin=e,this.plugin=e}get active(){return this._active}set snapping(e){e!==this._snapping?(this._snapping=e,this.deactivate(),this.activate()):this._snapping=e}get snapping(){return this._snapping}activate(){if(this._active)return;this._markerDiv||this._initMarkerDiv(),this.fire("activated",!0);const e=this.distanceMeasurementsPlugin,t=this.scene,i=e.viewer.cameraControl,s=t.canvas.canvas;t.input;let r=!1;const o=d.vec3(),n=d.vec2();let a,l;let A=null;this._mouseState=0;const h=e=>e.offsetTop+(e.offsetParent&&e.offsetParent!==s.parentNode&&h(e.offsetParent)),c=e=>e.offsetLeft+(e.offsetParent&&e.offsetParent!==s.parentNode&&c(e.offsetParent)),u=d.vec2();this._onCameraControlHoverSnapOrSurface=i.on(this._snapping?"hoverSnapOrSurface":"hoverSurface",(e=>{const t=e.snappedCanvasPos||e.canvasPos;r=!0,o.set(e.worldPos),n.set(e.canvasPos),0===this._mouseState?(this._canvasToPagePos?(this._canvasToPagePos(s,t,u),this._markerDiv.style.left=u[0]-5+"px",this._markerDiv.style.top=u[1]-5+"px"):(this._markerDiv.style.left=c(s)+t[0]-5+"px",this._markerDiv.style.top=h(s)+t[1]-5+"px"),this._markerDiv.style.background="pink",e.snappedToVertex||e.snappedToEdge?(this.pointerLens&&(this.pointerLens.visible=!0,this.pointerLens.canvasPos=e.canvasPos,this.pointerLens.snappedCanvasPos=e.snappedCanvasPos||e.canvasPos,this.pointerLens.snapped=!0),this._markerDiv.style.background="greenyellow",this._markerDiv.style.border="2px solid green"):(this.pointerLens&&(this.pointerLens.visible=!0,this.pointerLens.canvasPos=e.canvasPos,this.pointerLens.snappedCanvasPos=e.canvasPos,this.pointerLens.snapped=!1),this._markerDiv.style.background="pink",this._markerDiv.style.border="2px solid red"),A=e.entity):(this._markerDiv.style.left="-10000px",this._markerDiv.style.top="-10000px"),s.style.cursor="pointer",this._currentDistanceMeasurement&&(this._currentDistanceMeasurement.wireVisible=this._currentDistanceMeasurementInitState.wireVisible,this._currentDistanceMeasurement.axisVisible=this._currentDistanceMeasurementInitState.axisVisible&&this.distanceMeasurementsPlugin.defaultAxisVisible,this._currentDistanceMeasurement.xAxisVisible=this._currentDistanceMeasurementInitState.xAxisVisible&&this.distanceMeasurementsPlugin.defaultXAxisVisible,this._currentDistanceMeasurement.yAxisVisible=this._currentDistanceMeasurementInitState.yAxisVisible&&this.distanceMeasurementsPlugin.defaultYAxisVisible,this._currentDistanceMeasurement.zAxisVisible=this._currentDistanceMeasurementInitState.zAxisVisible&&this.distanceMeasurementsPlugin.defaultZAxisVisible,this._currentDistanceMeasurement.targetVisible=this._currentDistanceMeasurementInitState.targetVisible,this._currentDistanceMeasurement.target.worldPos=o.slice(),this._markerDiv.style.left="-10000px",this._markerDiv.style.top="-10000px")})),s.addEventListener("mousedown",this._onMouseDown=e=>{1===e.which&&(a=e.clientX,l=e.clientY)}),s.addEventListener("mouseup",this._onMouseUp=t=>{1===t.which&&(t.clientX>a+20||t.clientX<a-20||t.clientY>l+20||t.clientY<l-20||(this._currentDistanceMeasurement?r?(this._currentDistanceMeasurement.target.entity=A,A=null,this._currentDistanceMeasurement.clickable=!0,this.distanceMeasurementsPlugin.fire("measurementEnd",this._currentDistanceMeasurement),this._currentDistanceMeasurement=null):(this._currentDistanceMeasurement.destroy(),this.distanceMeasurementsPlugin.fire("measurementCancel",this._currentDistanceMeasurement),this._currentDistanceMeasurement=null,A=null):r&&(this._currentDistanceMeasurement=e.createMeasurement({id:d.createUUID(),origin:{worldPos:o.slice(),entity:A},target:{worldPos:o.slice(),entity:A},approximate:!0}),this._currentDistanceMeasurementInitState.axisVisible=this._currentDistanceMeasurement.axisVisible&&this.distanceMeasurementsPlugin.defaultAxisVisible,this._currentDistanceMeasurementInitState.xAxisVisible=this._currentDistanceMeasurement.xAxisVisible&&this.distanceMeasurementsPlugin.defaultXAxisVisible,this._currentDistanceMeasurementInitState.yAxisVisible=this._currentDistanceMeasurement.yAxisVisible&&this.distanceMeasurementsPlugin.defaultYAxisVisible,this._currentDistanceMeasurementInitState.zAxisVisible=this._currentDistanceMeasurement.zAxisVisible&&this.distanceMeasurementsPlugin.defaultZAxisVisible,this._currentDistanceMeasurementInitState.wireVisible=this._currentDistanceMeasurement.wireVisible,this._currentDistanceMeasurementInitState.targetVisible=this._currentDistanceMeasurement.targetVisible,this._currentDistanceMeasurement.clickable=!1,this._currentDistanceMeasurement.origin.entity=A,A=null,this.distanceMeasurementsPlugin.fire("measurementStart",this._currentDistanceMeasurement))))}),this._onCameraControlHoverSnapOrSurfaceOff=i.on(this._snapping?"hoverSnapOrSurfaceOff":"hoverOff",(e=>{this.pointerLens&&(this.pointerLens.visible=!0,this.pointerLens.canvasPos=e.canvasPos,this.pointerLens.snappedCanvasPos=e.snappedCanvasPos||e.canvasPos),r=!1,this._markerDiv.style.left="-100px",this._markerDiv.style.top="-100px",this._currentDistanceMeasurement&&(this._currentDistanceMeasurement.wireVisible=!1,this._currentDistanceMeasurement.targetVisible=!1,this._currentDistanceMeasurement.axisVisible=!1),s.style.cursor="default"})),this._active=!0}deactivate(){if(!this._active)return;this.fire("activated",!1),this.pointerLens&&(this.pointerLens.visible=!1),this._markerDiv&&this._destroyMarkerDiv(),this.reset();const e=this.scene.canvas.canvas;e.removeEventListener("mousedown",this._onMouseDown),e.removeEventListener("mouseup",this._onMouseUp);const t=this.distanceMeasurementsPlugin.viewer.cameraControl;t.off(this._onCameraControlHoverSnapOrSurface),t.off(this._onCameraControlHoverSnapOrSurfaceOff),this._currentDistanceMeasurement&&(this.distanceMeasurementsPlugin.fire("measurementCancel",this._currentDistanceMeasurement),this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),this._active=!1}reset(){this._active&&(this._destroyMarkerDiv(),this._initMarkerDiv(),this._currentDistanceMeasurement&&(this.distanceMeasurementsPlugin.fire("measurementCancel",this._currentDistanceMeasurement),this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),this._mouseState=0)}get currentMeasurement(){return this._currentDistanceMeasurement}destroy(){this.deactivate(),super.destroy()}}class kc extends z{constructor(e,t={}){super("DistanceMeasurements",e),this._pointerLens=t.pointerLens,this._container=t.container||document.body,this._defaultControl=null,this._measurements={},this.labelMinAxisLength=t.labelMinAxisLength,this.defaultVisible=!1!==t.defaultVisible,this.defaultOriginVisible=!1!==t.defaultOriginVisible,this.defaultTargetVisible=!1!==t.defaultTargetVisible,this.defaultWireVisible=!1!==t.defaultWireVisible,this.defaultXLabelEnabled=!1!==t.defaultXLabelEnabled,this.defaultYLabelEnabled=!1!==t.defaultYLabelEnabled,this.defaultZLabelEnabled=!1!==t.defaultZLabelEnabled,this.defaultLengthLabelEnabled=!1!==t.defaultLengthLabelEnabled,this.defaultLabelsVisible=!1!==t.defaultLabelsVisible,this.defaultAxisVisible=!1!==t.defaultAxisVisible,this.defaultXAxisVisible=!1!==t.defaultXAxisVisible,this.defaultYAxisVisible=!1!==t.defaultYAxisVisible,this.defaultZAxisVisible=!1!==t.defaultZAxisVisible,this.defaultColor=void 0!==t.defaultColor?t.defaultColor:"#00BBFF",this.zIndex=t.zIndex||1e4,this.defaultLabelsOnWires=!1!==t.defaultLabelsOnWires,this.useRotationAdjustment=void 0!==t.useRotationAdjustment&&!1!==t.useRotationAdjustment,this._onMouseOver=(e,t)=>{this.fire("mouseOver",{plugin:this,distanceMeasurement:t,measurement:t,event:e})},this._onMouseLeave=(e,t)=>{this.fire("mouseLeave",{plugin:this,distanceMeasurement:t,measurement:t,event:e})},this._onContextMenu=(e,t)=>{this.fire("contextMenu",{plugin:this,distanceMeasurement:t,measurement:t,event:e})}}getContainerElement(){return this._container}send(e,t){}get pointerLens(){return this._pointerLens}get control(){return this._defaultControl||(this._defaultControl=new Uc(this,{})),this._defaultControl}get measurements(){return this._measurements}set labelMinAxisLength(e){e<1&&(this.error("labelMinAxisLength must be >= 1; defaulting to 25"),e=25),this._labelMinAxisLength=e||25}get labelMinAxisLength(){return this._labelMinAxisLength}set useRotationAdjustment(e){e=void 0!==e&&Boolean(e),this._useRotationAdjustment=e}get useRotationAdjustment(){return this._useRotationAdjustment}createMeasurement(e={}){this.viewer.scene.components[e.id]&&(this.error("Viewer scene component with this ID already exists: "+e.id),delete e.id);const t=e.origin,i=e.target,s=new Rc(this,{id:e.id,plugin:this,container:this._container,origin:{entity:t.entity,worldPos:t.worldPos},target:{entity:i.entity,worldPos:i.worldPos},visible:e.visible,wireVisible:e.wireVisible,axisVisible:!1!==e.axisVisible&&!1!==this.defaultAxisVisible,xAxisVisible:!1!==e.xAxisVisible&&!1!==this.defaultXAxisVisible,yAxisVisible:!1!==e.yAxisVisible&&!1!==this.defaultYAxisVisible,zAxisVisibld:!1!==e.zAxisVisible&&!1!==this.defaultZAxisVisible,xLabelEnabled:!1!==e.xLabelEnabled&&!1!==this.defaultXLabelEnabled,yLabelEnabled:!1!==e.yLabelEnabled&&!1!==this.defaultYLabelEnabled,zLabelEnabled:!1!==e.zLabelEnabled&&!1!==this.defaultZLabelEnabled,lengthLabelEnabled:!1!==e.lengthLabelEnabled&&!1!==this.defaultLengthLabelEnabled,labelsVisible:!1!==e.labelsVisible&&!1!==this.defaultLabelsVisible,useRotationAdjustment:this.useRotationAdjustment,originVisible:e.originVisible,targetVisible:e.targetVisible,color:e.color,labelsOnWires:!1!==e.labelsOnWires&&!1!==this.defaultLabelsOnWires,onMouseOver:this._onMouseOver,onMouseLeave:this._onMouseLeave,onContextMenu:this._onContextMenu});return this._measurements[s.id]=s,s.clickable=!0,s.on("destroyed",(()=>{delete this._measurements[s.id]})),this.fire("measurementCreated",s),s}destroyMeasurement(e){const t=this._measurements[e];t?(t.destroy(),this.fire("measurementDestroyed",t)):this.log("DistanceMeasurement not found: "+e)}setLabelsShown(e){for(const[t,i]of Object.entries(this.measurements))i.labelShown=e}setAxisVisible(e){for(const[t,i]of Object.entries(this.measurements))i.axisVisible=e;this.defaultAxisVisible=e}getAxisVisible(){return this.defaultAxisVisible}clear(){const e=Object.keys(this._measurements);for(var t=0,i=e.length;t<i;t++)this.destroyMeasurement(e[t])}destroy(){this.clear(),super.destroy()}}class Oc extends Lc{constructor(e,t={}){super(e.viewer.scene),this.pointerLens=t.pointerLens,this.pointerCircle=new G(e.viewer),this._active=!1;const i=document.createElement("div"),s=this.scene.canvas.canvas;s.parentNode.insertBefore(i,s),i.style.background="black",i.style.border="2px solid blue",i.style.borderRadius="10px",i.style.width="5px",i.style.height="5px",i.style.margin="-200px -200px",i.style.zIndex="100",i.style.position="absolute",i.style.pointerEvents="none",this.markerDiv=i,this._currentDistanceMeasurement=null,this._currentDistanceMeasurementInitState={wireVisible:null,axisVisible:null,xAxisVisible:null,yaxisVisible:null,zAxisVisible:null,targetVisible:null},this._onCanvasTouchStart=null,this._onCanvasTouchEnd=null,this._longTouchTimeoutMs=300,this._snapping=!1!==t.snapping,this._touchState=0,this._attachPlugin(e,t)}_attachPlugin(e){this.distanceMeasurementsPlugin=e,this.plugin=e}get active(){return this._active}set snapping(e){e!==this._snapping?(this._snapping=e,this.deactivate(),this.activate()):this._snapping=e}get snapping(){return this._snapping}activate(){if(this._active)return;const e=this.plugin,t=this.scene,i=t.canvas.canvas;e.pointerLens;const s=d.vec3(),r=20;let o=null;this._touchState=0;const n=d.vec2(),a=d.vec2(),l=d.vec2();let A=null;const h=()=>{this.plugin.viewer.cameraControl.active=!1},c=()=>{this.plugin.viewer.cameraControl.active=!0},u=()=>{o&&(clearTimeout(o),o=null),this._currentDistanceMeasurement&&(this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),c(),this._touchState=0};i.addEventListener("touchstart",this._onCanvasTouchStart=i=>{const l=i.touches.length;if(1!==l)return void(o&&(clearTimeout(o),o=null));const c=i.touches[0],p=c.clientX,f=c.clientY;switch(n.set([p,f]),a.set([p,f]),this._touchState){case 0:if(1!==l&&null!==o)return void u();const i=t.pick({canvasPos:a,snapping:this._snapping,snapToEdge:this._snapping});if(i&&i.snapped)s.set(i.worldPos),this.pointerCircle.start(i.snappedCanvasPos);else{const e=t.pick({canvasPos:a,pickSurface:!0});if(!e||!e.worldPos)return;s.set(e.worldPos),this.pointerCircle.start(e.canvasPos)}o=setTimeout((()=>{1!==l||a[0]>n[0]+r||a[0]<n[0]-r||a[1]>n[1]+r||a[1]<n[1]-r||(this.pointerLens&&(this.pointerLens.visible=!0,this.pointerLens.canvasPos=n,this.pointerLens.cursorPos=n),this.pointerLens&&(this.pointerLens.canvasPos=a,this.pointerLens.snapped=!1),this.pointerLens&&(this.pointerLens.cursorPos=i.canvasPos,this.pointerLens.snapped=!0),this._currentDistanceMeasurement?this._currentDistanceMeasurement.origin.worldPos=s:(this._currentDistanceMeasurement=e.createMeasurement({id:d.createUUID(),origin:{worldPos:s,entity:i.entity},target:{worldPos:s,entity:i.entity}}),this._currentDistanceMeasurement.labelsVisible=!1,this._currentDistanceMeasurement.xAxisVisible=!1,this._currentDistanceMeasurement.yAxisVisible=!1,this._currentDistanceMeasurement.zAxisVisible=!1,this._currentDistanceMeasurement.wireVisible=!1,this._currentDistanceMeasurement.originVisible=!0,this._currentDistanceMeasurement.targetVisible=!1,this._currentDistanceMeasurement.clickable=!1),this.distanceMeasurementsPlugin.fire("measurementStart",this._currentDistanceMeasurement),this._touchState=2,h())}),this._longTouchTimeoutMs),this._touchState=1,A=c.identifier;break;case 3:if(1!==l&&null!==o)return clearTimeout(o),void(o=null);1===l&&(o=setTimeout((()=>{if(o=null,1!==l||a[0]>n[0]+r||a[0]<n[0]-r||a[1]>n[1]+r||a[1]<n[1]-r)return;this.pointerLens&&(this.pointerLens.visible=!0,this.pointerLens.canvasPos=n,this.pointerLens.snapped=!1);const e=t.pick({canvasPos:a,snapToVertex:this._snapping,snapToEdge:this._snapping});if(e&&e.snapped)this.pointerLens&&(this.pointerLens.cursorPos=e.snappedCanvasPos,this.pointerLens.snapped=!0),this.pointerCircle.start(e.snappedCanvasPos),s.set(e.worldPos),this._currentDistanceMeasurement.target.worldPos=e.worldPos,this._currentDistanceMeasurement.target.entity=e.entity,this._currentDistanceMeasurement.targetVisible=!0,this._currentDistanceMeasurement.wireVisible=!0,this._currentDistanceMeasurement.labelsVisible=!0,this.distanceMeasurementsPlugin.fire("measurementStart",this._currentDistanceMeasurement);else{const e=t.pick({canvasPos:a,pickSurface:!0});e&&e.worldPos?(this.pointerLens&&(this.pointerLens.cursorPos=e.canvasPos,this.pointerLens.snapped=!1),this.pointerCircle.start(e.canvasPos),s.set(e.worldPos),this._currentDistanceMeasurement.target.worldPos=e.worldPos,this._currentDistanceMeasurement.target.entity=e.entity,this._currentDistanceMeasurement.targetVisible=!0,this._currentDistanceMeasurement.wireVisible=!0,this._currentDistanceMeasurement.labelsVisible=!0,this.distanceMeasurementsPlugin.fire("measurementStart",this._currentDistanceMeasurement)):this.pointerLens&&(this.pointerLens.cursorPos=null,this.pointerLens.snapped=!1)}this._touchState=5,h()}),this._longTouchTimeoutMs),this._touchState=4),A=c.identifier;break;default:return null!==o&&(clearTimeout(o),o=null),void(this._touchState=7)}},{passive:!0}),i.addEventListener("touchmove",(i=>{this.pointerCircle.stop();const r=i.touches.length;if(1!==r||1!==i.changedTouches.length)return void(o&&(clearTimeout(o),o=null));const n=i.touches[0],l=n.clientX,h=n.clientY;if(n.identifier!==A)return;let c,u;switch(a.set([l,h]),this._touchState){case 2:this.pointerLens&&(this.pointerLens.canvasPos=a),c=t.pick({canvasPos:a,snapToVertex:this._snapping,snapToEdge:this._snapping}),c&&c.snapped?(this.pointerLens&&(this.pointerLens.snappedCanvasPos=c.snappedCanvasPos,this.pointerLens.snapped=!0),s.set(c.worldPos),this._currentDistanceMeasurement?this._currentDistanceMeasurement.origin.worldPos=c.worldPos:(this._currentDistanceMeasurement=e.createMeasurement({id:d.createUUID(),origin:{worldPos:c.worldPos,entity:c.entity},target:{worldPos:c.worldPos,entity:c.entity}}),this._currentDistanceMeasurement.labelsVisible=!1,this._currentDistanceMeasurement.xAxisVisible=!1,this._currentDistanceMeasurement.yAxisVisible=!1,this._currentDistanceMeasurement.zAxisVisible=!1,this._currentDistanceMeasurement.wireVisible=!1,this._currentDistanceMeasurement.originVisible=!0,this._currentDistanceMeasurement.targetVisible=!1,this._currentDistanceMeasurement.clickable=!1),this.distanceMeasurementsPlugin.fire("measurementStart",this._currentDistanceMeasurement)):(u=t.pick({canvasPos:a,pickSurface:!0}),u&&u.worldPos?(this.pointerLens&&(this.pointerLens.cursorPos=u.canvasPos,this.pointerLens.snapped=!1),s.set(u.worldPos),this._currentDistanceMeasurement?this._currentDistanceMeasurement.origin.worldPos=u.worldPos:(this._currentDistanceMeasurement=e.createMeasurement({id:d.createUUID(),origin:{worldPos:u.worldPos,entity:u.entity},target:{worldPos:u.worldPos,entity:u.entity}}),this._currentDistanceMeasurement.labelsVisible=!1,this._currentDistanceMeasurement.xAxisVisible=!1,this._currentDistanceMeasurement.yAxisVisible=!1,this._currentDistanceMeasurement.zAxisVisible=!1,this._currentDistanceMeasurement.wireVisible=!1,this._currentDistanceMeasurement.originVisible=!0,this._currentDistanceMeasurement.targetVisible=!1,this._currentDistanceMeasurement.clickable=!1),this.distanceMeasurementsPlugin.fire("measurementStart",this._currentDistanceMeasurement)):this.pointerLens&&(this.pointerLens.cursorPos=null,this.pointerLens.snapped=!1)),this._touchState=2;break;case 5:if(1!==r&&null!==o)return clearTimeout(o),o=null,this.pointerLens&&(this.pointerLens.visible=!1),void(this._touchState=7);this.pointerLens&&(this.pointerLens.canvasPos=a),c=t.pick({canvasPos:a,snapToVertex:this._snapping,snapToEdge:this._snapping}),c&&c.worldPos?(this.pointerLens&&(this.pointerLens.cursorPos=c.snappedCanvasPos,this.pointerLens.snapped=!0),this._currentDistanceMeasurement.target.worldPos=c.worldPos,this._currentDistanceMeasurement.target.entity=c.entity,this._currentDistanceMeasurement.targetVisible=!0,this._currentDistanceMeasurement.wireVisible=!0,this._currentDistanceMeasurement.labelsVisible=!0):(u=t.pick({canvasPos:a,pickSurface:!0}),u&&u.worldPos&&(this.pointerLens&&(this.pointerLens.cursorPos=u.canvasPos,this.pointerLens.snapped=!1),this._currentDistanceMeasurement.target.worldPos=u.worldPos,this._currentDistanceMeasurement.target.entity=u.entity,this._currentDistanceMeasurement.targetVisible=!0,this._currentDistanceMeasurement.wireVisible=!0,this._currentDistanceMeasurement.labelsVisible=!0)),this._touchState=5}}),{passive:!0}),i.addEventListener("touchend",this._onCanvasTouchEnd=i=>{this.pointerCircle.stop();const s=i.changedTouches.length;if(1!==s)return;const h=i.changedTouches[0],u=h.clientX,p=h.clientY;if(h.identifier===A)switch(o&&(clearTimeout(o),o=null),l.set([u,p]),this._touchState){case 1:{if(1!==s||u>n[0]+r||u<n[0]-r||p>n[1]+r||p<n[1]-r)return void(this._touchState=0);const i=t.pick({canvasPos:a,pickSurface:!0});i&&i.worldPos?(this._currentDistanceMeasurement=e.createMeasurement({id:d.createUUID(),origin:{worldPos:i.worldPos,entity:i.entity},target:{worldPos:i.worldPos,entity:i.entity}}),this._currentDistanceMeasurement.labelsVisible=!1,this._currentDistanceMeasurement.xAxisVisible=!1,this._currentDistanceMeasurement.yAxisVisible=!1,this._currentDistanceMeasurement.zAxisVisible=!1,this._currentDistanceMeasurement.wireVisible=!1,this._currentDistanceMeasurement.originVisible=!0,this._currentDistanceMeasurement.targetVisible=!1,this._currentDistanceMeasurement.clickable=!1,this._touchState=3,this.distanceMeasurementsPlugin.fire("measurementStart",this._currentDistanceMeasurement)):(this._currentDistanceMeasurement&&this._currentDistanceMeasurement.destroy(),this._touchState=0)}c();break;case 2:this.pointerLens&&(this.pointerLens.visible=!1),this._currentDistanceMeasurement?this._touchState=3:(this.pointerLens&&(this.pointerLens.snapped=!1,this.pointerLens.visible=!1),this._touchState=0),c();break;case 4:{if(1!==s||u>n[0]+r||u<n[0]-r||p>n[1]+r||p<n[1]-r)return void(this._touchState=3);const e=t.pick({canvasPos:a,pickSurface:!0});e&&e.worldPos?(this._currentDistanceMeasurement.target.worldPos=e.worldPos,this._currentDistanceMeasurement.target.entity=e.entity,this._currentDistanceMeasurement.targetVisible=!0,this._currentDistanceMeasurement.wireVisible=!0,this._currentDistanceMeasurement.labelsVisible=!0,this._currentDistanceMeasurement.xAxisVisible=!0,this._currentDistanceMeasurement.yAxisVisible=!0,this._currentDistanceMeasurement.zAxisVisible=!0,this._currentDistanceMeasurement.clickable=!0,this.distanceMeasurementsPlugin.fire("measurementEnd",this._currentDistanceMeasurement),this._currentDistanceMeasurement=null):this._currentDistanceMeasurement&&(this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),this._touchState=0}c();break;case 5:console.log("long touch"),this.pointerLens&&(this.pointerLens.visible=!1),this._currentDistanceMeasurement&&this._currentDistanceMeasurement.targetVisible?(this._currentDistanceMeasurement.clickable=!0,this.distanceMeasurementsPlugin.fire("measurementEnd",this._currentDistanceMeasurement),this._currentDistanceMeasurement=null,this._touchState=0):(this._currentDistanceMeasurement&&(this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),this._touchState=0),c()}},{passive:!0}),this._active=!0}deactivate(){if(!this._active)return;this.plugin.pointerLens&&(this.plugin.pointerLens.visible=!1),this.reset();const e=this.plugin.viewer.scene.canvas.canvas;e.removeEventListener("touchstart",this._onCanvasTouchStart),e.removeEventListener("touchend",this._onCanvasTouchEnd),this._currentDistanceMeasurement&&(this.distanceMeasurementsPlugin.fire("measurementCancel",this._currentDistanceMeasurement),this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),this._active=!1,this.plugin.viewer.cameraControl.active=!0}reset(){this._active&&(this._currentDistanceMeasurement&&(this.distanceMeasurementsPlugin.fire("measurementCancel",this._currentDistanceMeasurement),this._currentDistanceMeasurement.destroy(),this._currentDistanceMeasurement=null),this._mouseState=0)}get currentMeasurement(){return this._currentDistanceMeasurement}destroy(){this.deactivate(),super.destroy()}}class Nc extends z{constructor(e,t={}){super("FastNav",e),this._hideColorTexture=!1!==t.hideColorTexture,this._hidePBR=!1!==t.hidePBR,this._hideSAO=!1!==t.hideSAO,this._hideEdges=!1!==t.hideEdges,this._hideTransparentObjects=!!t.hideTransparentObjects,this._scaleCanvasResolution=!!t.scaleCanvasResolution,this._defaultScaleCanvasResolutionFactor=t.defaultScaleCanvasResolutionFactor||1,this._scaleCanvasResolutionFactor=t.scaleCanvasResolutionFactor||.6,this._delayBeforeRestore=!1!==t.delayBeforeRestore,this._delayBeforeRestoreSeconds=t.delayBeforeRestoreSeconds||.5;let i=1e3*this._delayBeforeRestoreSeconds,s=!1;const r=()=>{i=1e3*this._delayBeforeRestoreSeconds,s||(e.scene._renderer.setColorTextureEnabled(!this._hideColorTexture),e.scene._renderer.setPBREnabled(!this._hidePBR),e.scene._renderer.setSAOEnabled(!this._hideSAO),e.scene._renderer.setTransparentEnabled(!this._hideTransparentObjects),e.scene._renderer.setEdgesEnabled(!this._hideEdges),this._scaleCanvasResolution?e.scene.canvas.resolutionScale=this._scaleCanvasResolutionFactor:e.scene.canvas.resolutionScale=this._defaultScaleCanvasResolutionFactor,s=!0)},o=()=>{e.scene.canvas.resolutionScale=this._defaultScaleCanvasResolutionFactor,e.scene._renderer.setEdgesEnabled(!0),e.scene._renderer.setColorTextureEnabled(!0),e.scene._renderer.setPBREnabled(!0),e.scene._renderer.setSAOEnabled(!0),e.scene._renderer.setTransparentEnabled(!0),s=!1};this._onCanvasBoundary=e.scene.canvas.on("boundary",r),this._onCameraMatrix=e.scene.camera.on("matrix",r),this._onSceneTick=e.scene.on("tick",(e=>{s&&(i-=e.deltaTime,(!this._delayBeforeRestore||i<=0)&&o())}));let n=!1;this._onSceneMouseDown=e.scene.input.on("mousedown",(()=>{n=!0})),this._onSceneMouseUp=e.scene.input.on("mouseup",(()=>{n=!1})),this._onSceneMouseMove=e.scene.input.on("mousemove",(()=>{n&&r()}))}get hideColorTexture(){return this._hideColorTexture}set hideColorTexture(e){this._hideColorTexture=e}get hidePBR(){return this._hidePBR}set hidePBR(e){this._hidePBR=e}get hideSAO(){return this._hideSAO}set hideSAO(e){this._hideSAO=e}get hideEdges(){return this._hideEdges}set hideEdges(e){this._hideEdges=e}get hideTransparentObjects(){return this._hideTransparentObjects}set hideTransparentObjects(e){this._hideTransparentObjects=!1!==e}get scaleCanvasResolution(){return this._scaleCanvasResolution}set scaleCanvasResolution(e){this._scaleCanvasResolution=e}get defaultScaleCanvasResolutionFactor(){return this._defaultScaleCanvasResolutionFactor}set defaultScaleCanvasResolutionFactor(e){this._defaultScaleCanvasResolutionFactor=e||1}get scaleCanvasResolutionFactor(){return this._scaleCanvasResolutionFactor}set scaleCanvasResolutionFactor(e){this._scaleCanvasResolutionFactor=e||.6}get delayBeforeRestore(){return this._delayBeforeRestore}set delayBeforeRestore(e){this._delayBeforeRestore=e}get delayBeforeRestoreSeconds(){return this._delayBeforeRestoreSeconds}set delayBeforeRestoreSeconds(e){this._delayBeforeRestoreSeconds=null!=e?e:.5}send(e,t){}destroy(){this.viewer.scene.camera.off(this._onCameraMatrix),this.viewer.scene.canvas.off(this._onCanvasBoundary),this.viewer.scene.input.off(this._onSceneMouseDown),this.viewer.scene.input.off(this._onSceneMouseUp),this.viewer.scene.input.off(this._onSceneMouseMove),this.viewer.scene.off(this._onSceneTick),super.destroy()}}class Qc{constructor(){}getMetaModel(e,t,i){y.loadJSON(e,(e=>{t(e)}),(function(e){i(e)}))}getGLTF(e,t,i){y.loadArraybuffer(e,(e=>{t(e)}),(function(e){i(e)}))}getGLB(e,t,i){y.loadArraybuffer(e,(e=>{t(e)}),(function(e){i(e)}))}getArrayBuffer(e,t,i,s){!function(e,t,i,s){var r=()=>{};i=i||r,s=s||r;const o=/^data:(.*?)(;base64)?,(.*)$/,n=t.match(o);if(n){const e=!!n[2];var a=n[3];a=window.decodeURIComponent(a),e&&(a=window.atob(a));try{const e=new ArrayBuffer(a.length),t=new Uint8Array(e);for(var l=0;l<a.length;l++)t[l]=a.charCodeAt(l);I.scheduleTask((function(){i(e)}))}catch(e){I.scheduleTask((function(){s(e)}))}}else{const r=function(e){var t=e.lastIndexOf("/");return 0!==t?e.substring(0,t+1):""}(e),o=r+t,n=new XMLHttpRequest;n.open("GET",o,!0),n.responseType="arraybuffer",n.onreadystatechange=function(){4===n.readyState&&(200===n.status?i(n.response):s("loadArrayBuffer error : "+n.response))},n.send(null)}}(e,t,(e=>{i(e)}),(function(e){s(e)}))}}class Vc{constructor(e={}){this._eventSubIDMap=null,this._eventSubEvents=null,this._eventSubs=null,this._events=null,this._locale="en",this._messages={},this._locales=[],this._locale="en",this.messages=e.messages,this.locale=e.locale}set messages(e){this._messages=e||{},this._locales=Object.keys(this._messages),this.fire("updated",this)}loadMessages(e={}){for(let t in e)this._messages[t]=e[t];this.messages=this._messages}clearMessages(){this.messages={}}get locales(){return this._locales}set locale(e){e=e||"de",this._locale!==e&&(this._locale=e,this.fire("updated",e))}get locale(){return this._locale}translate(e,t){const i=this._messages[this._locale];if(!i)return null;const s=Hc(e,i);return s?t?jc(s,t):s:null}translatePlurals(e,t,i){const s=this._messages[this._locale];if(!s)return null;let r=Hc(e,s);return r=0===(t=parseInt(""+t,10))?r.zero:t>1?r.other:r.one,r?(r=jc(r,[t]),i&&(r=jc(r,i)),r):null}fire(e,t,i){this._events||(this._events={}),this._eventSubs||(this._eventSubs={}),!0!==i&&(this._events[e]=t||!0);const s=this._eventSubs[e];if(s)for(const e in s)if(s.hasOwnProperty(e)){s[e].callback(t)}}on(t,i){this._events||(this._events={}),this._eventSubIDMap||(this._eventSubIDMap=new e),this._eventSubEvents||(this._eventSubEvents={}),this._eventSubs||(this._eventSubs={});let s=this._eventSubs[t];s||(s={},this._eventSubs[t]=s);const r=this._eventSubIDMap.addItem();s[r]={callback:i},this._eventSubEvents[r]=t;const o=this._events[t];return void 0!==o&&i(o),r}off(e){if(null==e)return;if(!this._eventSubEvents)return;const t=this._eventSubEvents[e];if(t){delete this._eventSubEvents[e];const i=this._eventSubs[t];i&&delete i[e],this._eventSubIDMap.removeItem(e)}}}function Hc(e,t){if(t[e])return t[e];const i=e.split(".");let s=t;for(let e=0,t=i.length;s&&e<t;e++){s=s[i[e]]}return s}function jc(e,t=[]){return e.replace(/\{\{|\}\}|\{(\d+)\}/g,(function(e,i){return"{{"===e?"{":"}}"===e?"}":t[i]}))}class Gc extends R{constructor(e,t={}){super(e,t),this.t=t.t}set t(e){e=e||0,this._t=e<0?0:e>1?1:e}get t(){return this._t}get tangent(){return this.getTangent(this._t)}get length(){var e=this._getLengths();return e[e.length-1]}getTangent(e){var t=1e-4;void 0===e&&(e=this._t);var i=e-t,s=e+t;i<0&&(i=0),s>1&&(s=1);var r=this.getPoint(i),o=this.getPoint(s),n=d.subVec3(o,r,[]);return d.normalizeVec3(n,[])}getPointAt(e){var t=this.getUToTMapping(e);return this.getPoint(t)}getPoints(e){e||(e=5);var t,i=[];for(t=0;t<=e;t++)i.push(this.getPoint(t/e));return i}_getLengths(e){if(e||(e=this.__arcLengthDivisions?this.__arcLengthDivisions:200),this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var t,i,s=[],r=this.getPoint(0),o=0;for(s.push(0),i=1;i<=e;i++)t=this.getPoint(i/e),o+=d.lenVec3(d.subVec3(t,r,[])),s.push(o),r=t;return this.cacheArcLengths=s,s}_updateArcLengths(){this.needsUpdate=!0,this._getLengths()}getUToTMapping(e,t){var i,s=this._getLengths(),r=0,o=s.length;i=t||e*s[o-1];for(var n,a=0,l=o-1;a<=l;)if((n=s[r=Math.floor(a+(l-a)/2)]-i)<0)a=r+1;else{if(!(n>0)){l=r;break}l=r-1}if(s[r=l]===i)return r/(o-1);var A=s[r];return(r+(i-A)/(s[r+1]-A))/(o-1)}}class zc extends Gc{constructor(e,t={}){super(e,t),this.points=t.points,this.t=t.t}set points(e){this._points=e||[]}get points(){return this._points}set t(e){e=e||0,this._t=e<0?0:e>1?1:e}get t(){return this._t}get point(){return this.getPoint(this._t)}getPoint(e){var t=this.points;if(!(t.length<3)){var i=(t.length-1)*e,s=Math.floor(i),r=i-s,o=t[0===s?s:s-1],n=t[s],a=t[s>t.length-2?t.length-1:s+1],l=t[s>t.length-3?t.length-1:s+2],A=d.vec3();return A[0]=d.catmullRomInterpolate(o[0],n[0],a[0],l[0],r),A[1]=d.catmullRomInterpolate(o[1],n[1],a[1],l[1],r),A[2]=d.catmullRomInterpolate(o[2],n[2],a[2],l[2],r),A}this.error("Can't sample point from SplineCurve - not enough points on curve - returning [0,0,0].")}getJSON(){return{points:points,t:this._t}}}const Wc=d.vec3();class Kc extends R{get type(){return"CameraPath"}constructor(e,t={}){super(e,t),this._frames=[],this._eyeCurve=new zc(this),this._lookCurve=new zc(this),this._upCurve=new zc(this),t.frames&&(this.addFrames(t.frames),this.smoothFrameTimes(1))}get frames(){return this._frames}get eyeCurve(){return this._eyeCurve}get lookCurve(){return this._lookCurve}get upCurve(){return this._upCurve}saveFrame(e){const t=this.scene.camera;this.addFrame(e,t.eye,t.look,t.up)}addFrame(e,t,i,s){const r={t:e,eye:t.slice(0),look:i.slice(0),up:s.slice(0)};this._frames.push(r),this._eyeCurve.points.push(r.eye),this._lookCurve.points.push(r.look),this._upCurve.points.push(r.up)}addFrames(e){let t;for(let i=0,s=e.length;i<s;i++)t=e[i],this.addFrame(t.t||0,t.eye,t.look,t.up)}loadFrame(e){const t=this.scene.camera;e=(e/=this._frames[this._frames.length-1].t-this._frames[0].t)<0?0:e>1?1:e,t.eye=this._eyeCurve.getPoint(e,Wc),t.look=this._lookCurve.getPoint(e,Wc),t.up=this._upCurve.getPoint(e,Wc)}sampleFrame(e,t,i,s){e=e<0?0:e>1?1:e,this._eyeCurve.getPoint(e,t),this._lookCurve.getPoint(e,i),this._upCurve.getPoint(e,s)}smoothFrameTimes(e){if(0===this._frames.length)return;const t=d.vec3();var i=0;this._frames[0].t=0;const s=[];for(let e=1,o=this._frames.length;e<o;e++){var r=d.lenVec3(d.subVec3(this._frames[e].eye,this._frames[e-1].eye,t));s[e]=r,i+=r}for(let t=1,r=this._frames.length;t<r;t++){const r=s[t]/i*e;this._frames[t].t=this._frames[t-1].t+r}}clearFrames(){this._frames=[],this._eyeCurve.points=[],this._lookCurve.points=[],this._upCurve.points=[]}}const Xc=d.vec3(),Jc=d.vec3(),Yc=d.vec3(),Zc=d.vec3(),qc=d.vec3();class $c extends R{get type(){return"CameraFlightAnimation"}constructor(e,t={}){super(e,t),this._look1=d.vec3(),this._eye1=d.vec3(),this._up1=d.vec3(),this._look2=d.vec3(),this._eye2=d.vec3(),this._up2=d.vec3(),this._orthoScale1=1,this._orthoScale2=1,this._flying=!1,this._flyEyeLookUp=!1,this._flyingEye=!1,this._flyingLook=!1,this._callback=null,this._callbackScope=null,this._time1=null,this._time2=null,this.easing=!1!==t.easing,this.duration=t.duration,this.fit=t.fit,this.fitFOV=t.fitFOV,this.trail=t.trail}flyTo(e,t,i){e=e||this.scene,this._flying&&this.stop(),this._flying=!1,this._flyingEye=!1,this._flyingLook=!1,this._flyingEyeLookUp=!1,this._callback=t,this._callbackScope=i;const s=this.scene.camera,r=!!e.projection&&e.projection!==s.projection;let o,n,a,l,A;if(this._eye1[0]=s.eye[0],this._eye1[1]=s.eye[1],this._eye1[2]=s.eye[2],this._look1[0]=s.look[0],this._look1[1]=s.look[1],this._look1[2]=s.look[2],this._up1[0]=s.up[0],this._up1[1]=s.up[1],this._up1[2]=s.up[2],this._orthoScale1=s.ortho.scale,this._orthoScale2=e.orthoScale||this._orthoScale1,e.aabb)o=e.aabb;else if(6===e.length)o=e;else if(e.eye&&e.look||e.up)n=e.eye,a=e.look,l=e.up;else if(e.eye)n=e.eye;else if(e.look)a=e.look;else{let s=e;if((y.isNumeric(s)||y.isString(s))&&(A=s,s=this.scene.components[A],!s))return this.error("Component not found: "+y.inQuotes(A)),void(t&&(i?t.call(i):t()));r||(o=s.aabb||this.scene.aabb)}const h=e.poi;if(o){if(o[3]<o[0]||o[4]<o[1]||o[5]<o[2])return;if(o[3]===o[0]&&o[4]===o[1]&&o[5]===o[2])return;o=o.slice();const t=d.getAABB3Center(o);this._look2=h||t;const i=d.subVec3(this._eye1,this._look1,Xc),s=d.normalizeVec3(i),r=h?d.getAABB3DiagPoint(o,h):d.getAABB3Diag(o),n=e.fitFOV||this._fitFOV,a=Math.abs(r/Math.tan(n*d.DEGTORAD));this._orthoScale2=1.1*r,this._eye2[0]=this._look2[0]+s[0]*a,this._eye2[1]=this._look2[1]+s[1]*a,this._eye2[2]=this._look2[2]+s[2]*a,this._up2[0]=this._up1[0],this._up2[1]=this._up1[1],this._up2[2]=this._up1[2],this._flyingEyeLookUp=!0}else(n||a||l)&&(this._flyingEyeLookUp=!!n&&!!a&&!!l,this._flyingEye=!!n&&!a,this._flyingLook=!!a&&!n,n&&(this._eye2[0]=n[0],this._eye2[1]=n[1],this._eye2[2]=n[2]),a&&(this._look2[0]=a[0],this._look2[1]=a[1],this._look2[2]=a[2]),l&&(this._up2[0]=l[0],this._up2[1]=l[1],this._up2[2]=l[2]));r?("ortho"===e.projection&&"ortho"!==s.projection&&(this._projection2="ortho",this._projMatrix1=s.projMatrix.slice(),this._projMatrix2=s.ortho.matrix.slice(),s.projection="customProjection"),"perspective"===e.projection&&"perspective"!==s.projection&&(this._projection2="perspective",this._projMatrix1=s.projMatrix.slice(),this._projMatrix2=s.perspective.matrix.slice(),s.projection="customProjection")):this._projection2=null,this.fire("started",e,!0),this._time1=Date.now(),this._time2=this._time1+(e.duration?1e3*e.duration:this._duration),this._flying=!0,I.scheduleTask(this._update,this)}jumpTo(e){this._jumpTo(e)}_jumpTo(e){this._flying&&this.stop();const t=this.scene.camera;var i,s,r,o,n;if(e.aabb)i=e.aabb;else if(6===e.length)i=e;else if(e.eye||e.look||e.up)r=e.eye,o=e.look,n=e.up;else{let t=e;if((y.isNumeric(t)||y.isString(t))&&(s=t,t=this.scene.components[s],!t))return void this.error("Component not found: "+y.inQuotes(s));i=t.aabb||this.scene.aabb}const a=e.poi;if(i){if(i[3]<=i[0]||i[4]<=i[1]||i[5]<=i[2])return;var l=a?d.getAABB3DiagPoint(i,a):d.getAABB3Diag(i);let s;o=a||d.getAABB3Center(i,o),this._trail?d.subVec3(t.look,o,qc):d.subVec3(t.eye,t.look,qc),d.normalizeVec3(qc);s=(void 0!==e.fit?e.fit:this._fit)?Math.abs(l/Math.tan((e.fitFOV||this._fitFOV)*d.DEGTORAD)):d.lenVec3(d.subVec3(t.eye,t.look,Xc)),d.mulVec3Scalar(qc,s),t.eye=d.addVec3(o,qc,Xc),t.look=o,this.scene.camera.ortho.scale=1.1*l}else(r||o||n)&&(r&&(t.eye=r),o&&(t.look=o),n&&(t.up=n));e.projection&&(t.projection=e.projection)}_update(){if(!this._flying)return;let e=(Date.now()-this._time1)/(this._time2-this._time1);const t=e>=1;e>1&&(e=1);const i=this.easing?$c._ease(e,0,1,1):e,s=this.scene.camera;if(this._flyingEye||this._flyingLook?this._flyingEye?(d.subVec3(s.eye,s.look,qc),s.eye=d.lerpVec3(i,0,1,this._eye1,this._eye2,Yc),s.look=d.subVec3(Yc,qc,Jc)):this._flyingLook&&(s.look=d.lerpVec3(i,0,1,this._look1,this._look2,Jc),s.up=d.lerpVec3(i,0,1,this._up1,this._up2,Zc)):this._flyingEyeLookUp&&(s.eye=d.lerpVec3(i,0,1,this._eye1,this._eye2,Yc),s.look=d.lerpVec3(i,0,1,this._look1,this._look2,Jc),s.up=d.lerpVec3(i,0,1,this._up1,this._up2,Zc)),this._projection2){const t="ortho"===this._projection2?$c._easeOutExpo(e,0,1,1):$c._easeInCubic(e,0,1,1);s.customProjection.matrix=d.lerpMat4(t,0,1,this._projMatrix1,this._projMatrix2)}else s.ortho.scale=this._orthoScale1+e*(this._orthoScale2-this._orthoScale1);if(t)return s.ortho.scale=this._orthoScale2,void this.stop();I.scheduleTask(this._update,this)}static _ease(e,t,i,s){return-i*(e/=s)*(e-2)+t}static _easeInCubic(e,t,i,s){return i*(e/=s)*e*e+t}static _easeOutExpo(e,t,i,s){return i*(1-Math.pow(2,-10*e/s))+t}stop(){if(!this._flying)return;this._flying=!1,this._time1=null,this._time2=null,this._projection2&&(this.scene.camera.projection=this._projection2);const e=this._callback;e&&(this._callback=null,this._callbackScope?e.call(this._callbackScope):e()),this.fire("stopped",!0,!0)}cancel(){this._flying&&(this._flying=!1,this._time1=null,this._time2=null,this._callback&&(this._callback=null),this.fire("canceled",!0,!0))}set duration(e){this._duration=e?1e3*e:500,this.stop()}get duration(){return this._duration/1e3}set fit(e){this._fit=!1!==e}get fit(){return this._fit}set fitFOV(e){this._fitFOV=e||45}get fitFOV(){return this._fitFOV}set trail(e){this._trail=!!e}get trail(){return this._trail}destroy(){this.stop(),super.destroy()}}class eu extends R{get type(){return"CameraPathAnimation"}constructor(e,t={}){super(e,t),this._cameraFlightAnimation=new $c(this),this._t=0,this.state=eu.SCRUBBING,this._playingFromT=0,this._playingToT=0,this._playingRate=t.playingRate||1,this._playingDir=1,this._lastTime=null,this.cameraPath=t.cameraPath,this._tick=this.scene.on("tick",this._updateT,this)}_updateT(){const e=this._cameraPath;if(!e)return;let t,i;const s=performance.now(),r=this._lastTime?.001*(s-this._lastTime):0;if(this._lastTime=s,0!==r)switch(this.state){case eu.SCRUBBING:return;case eu.PLAYING:if(this._t+=this._playingRate*r,t=this._cameraPath.frames.length,0===t||this._playingDir<0&&this._t<=0||this._playingDir>0&&this._t>=this._cameraPath.frames[t-1].t)return this.state=eu.SCRUBBING,this._t=this._cameraPath.frames[t-1].t,void this.fire("stopped");e.loadFrame(this._t);break;case eu.PLAYING_TO:i=this._t+this._playingRate*r*this._playingDir,(this._playingDir<0&&i<=this._playingToT||this._playingDir>0&&i>=this._playingToT)&&(i=this._playingToT,this.state=eu.SCRUBBING,this.fire("stopped")),this._t=i,e.loadFrame(this._t)}}_ease(e,t,i,s){return-i*(e/=s)*(e-2)+t}set cameraPath(e){this._cameraPath=e}get cameraPath(){return this._cameraPath}set rate(e){this._playingRate=e}get rate(){return this._playingRate}play(){this._cameraPath&&(this._lastTime=null,this.state=eu.PLAYING)}playToT(e){this._cameraPath&&(this._playingFromT=this._t,this._playingToT=e,this._playingDir=this._playingToT-this._playingFromT<0?-1:1,this._lastTime=null,this.state=eu.PLAYING_TO)}playToFrame(e){const t=this._cameraPath;if(!t)return;const i=t.frames[e];i?this.playToT(i.t):this.error("playToFrame - frame index out of range: "+e)}flyToFrame(e,t){const i=this._cameraPath;if(!i)return;const s=i.frames[e];s?(this.state=eu.SCRUBBING,this._cameraFlightAnimation.flyTo(s,t)):this.error("flyToFrame - frame index out of range: "+e)}scrubToT(e){const t=this._cameraPath;if(!t)return;this.scene.camera&&(this._t=e,t.loadFrame(this._t),this.state=eu.SCRUBBING)}scrubToFrame(e){const t=this._cameraPath;if(!t)return;if(!this.scene.camera)return;t.frames[e]?(t.loadFrame(this._t),this.state=eu.SCRUBBING):this.error("playToFrame - frame index out of range: "+e)}stop(){this.state=eu.SCRUBBING,this.fire("stopped")}destroy(){super.destroy(),this.scene.off(this._tick)}}eu.STOPPED=0,eu.SCRUBBING=1,eu.PLAYING=2,eu.PLAYING_TO=3;const tu=d.vec3(),iu=d.vec3();d.vec3();const su=d.vec3([0,-1,0]),ru=d.vec4([0,0,0,1]);class ou extends R{constructor(e,t={}){super(e,t),this._src=null,this._image=null,this._pos=d.vec3(),this._origin=d.vec3(),this._rtcPos=d.vec3(),this._dir=d.vec3(),this._size=1,this._imageSize=d.vec2(),this._texture=new Xr(this),this._plane=new fr(this,{geometry:new zt(this,oo({center:[0,0,0],xSize:1,zSize:1,xSegments:10,zSegments:10})),material:new Yt(this,{diffuse:[0,0,0],ambient:[0,0,0],specular:[0,0,0],diffuseMap:this._texture,emissiveMap:this._texture,backfaces:!0}),clippable:t.clippable}),this._grid=new fr(this,{geometry:new zt(this,ro({size:1,divisions:10})),material:new Yt(this,{diffuse:[0,0,0],ambient:[0,0,0],emissive:[.2,.8,.2]}),position:[0,.001,0],clippable:t.clippable}),this._node=new Sr(this,{rotation:[0,0,0],position:[0,0,0],scale:[1,1,1],clippable:!1,children:[this._plane,this._grid]}),this._gridVisible=!1,this.visible=!0,this.gridVisible=t.gridVisible,this.position=t.position,this.rotation=t.rotation,this.dir=t.dir,this.size=t.size,this.collidable=t.collidable,this.clippable=t.clippable,this.pickable=t.pickable,this.opacity=t.opacity,t.image?this.image=t.image:this.src=t.src}set visible(e){this._plane.visible=e,this._grid.visible=this._gridVisible&&e}get visible(){return this._plane.visible}set gridVisible(e){e=!1!==e,this._gridVisible=e,this._grid.visible=this._gridVisible&&this.visible}get gridVisible(){return this._gridVisible}set image(e){this._image=e,this._image&&(this._imageSize[0]=e.width,this._imageSize[1]=e.height,this._updatePlaneSizeFromImage(),this._src=null,this._texture.image=this._image)}get image(){return this._image}set src(e){if(this._src=e,this._src){this._image=null;const e=new Image;e.onload=()=>{this._texture.image=e,this._imageSize[0]=e.width,this._imageSize[1]=e.height,this._updatePlaneSizeFromImage()},e.src=this._src}}get src(){return this._src}set position(e){this._pos.set(e||[0,0,0]),X(this._pos,this._origin,this._rtcPos),this._node.origin=this._origin,this._node.position=this._rtcPos}get position(){return this._pos}set rotation(e){this._node.rotation=e}get rotation(){return this._node.rotation}set size(e){this._size=null==e?1:e,this._image&&this._updatePlaneSizeFromImage()}get size(){return this._size}set dir(e){if(this._dir.set(e||[0,0,-1]),e){const t=this.scene.center,i=[-this._dir[0],-this._dir[1],-this._dir[2]];d.subVec3(t,this.position,tu);const s=-d.dotVec3(i,tu);d.normalizeVec3(i),d.mulVec3Scalar(i,s,iu),d.vec3PairToQuaternion(su,e,ru),this._node.quaternion=ru}}get dir(){return this._dir}set collidable(e){this._node.collidable=!1!==e}get collidable(){return this._node.collidable}set clippable(e){this._node.clippable=!1!==e}get clippable(){return this._node.clippable}set pickable(e){this._node.pickable=!1!==e}get pickable(){return this._node.pickable}set opacity(e){this._node.opacity=e}get opacity(){return this._node.opacity}destroy(){super.destroy()}_updatePlaneSizeFromImage(){const e=this._size,t=this._imageSize[0],i=this._imageSize[1];if(t>i){const s=i/t;this._node.scale=[e,1,e*s]}else{const s=t/i;this._node.scale=[e*s,1,e]}}}class nu extends Dt{get type(){return"PointLight"}constructor(e,t={}){super(e,t);const i=this;this._shadowRenderBuf=null,this._shadowViewMatrix=null,this._shadowProjMatrix=null,this._shadowViewMatrixDirty=!0,this._shadowProjMatrixDirty=!0;const s=this.scene.camera,r=this.scene.canvas;this._onCameraViewMatrix=s.on("viewMatrix",(()=>{this._shadowViewMatrixDirty=!0})),this._onCameraProjMatrix=s.on("projMatrix",(()=>{this._shadowProjMatrixDirty=!0})),this._onCanvasBoundary=r.on("boundary",(()=>{this._shadowProjMatrixDirty=!0})),this._state=new At({type:"point",pos:d.vec3([1,1,1]),color:d.vec3([.7,.7,.8]),intensity:1,attenuation:[0,0,0],space:t.space||"view",castsShadow:!1,getShadowViewMatrix:()=>{if(i._shadowViewMatrixDirty){i._shadowViewMatrix||(i._shadowViewMatrix=d.identityMat4());const e=i._state.pos,t=s.look,r=s.up;d.lookAtMat4v(e,t,r,i._shadowViewMatrix),i._shadowViewMatrixDirty=!1}return i._shadowViewMatrix},getShadowProjMatrix:()=>{if(i._shadowProjMatrixDirty){i._shadowProjMatrix||(i._shadowProjMatrix=d.identityMat4());const e=i.scene.canvas.canvas;d.perspectiveMat4(Math.PI/180*70,e.clientWidth/e.clientHeight,.1,500,i._shadowProjMatrix),i._shadowProjMatrixDirty=!1}return i._shadowProjMatrix},getShadowRenderBuf:()=>(i._shadowRenderBuf||(i._shadowRenderBuf=new st(i.scene.canvas.canvas,i.scene.canvas.gl,{size:[1024,1024]})),i._shadowRenderBuf)}),this.pos=t.pos,this.color=t.color,this.intensity=t.intensity,this.constantAttenuation=t.constantAttenuation,this.linearAttenuation=t.linearAttenuation,this.quadraticAttenuation=t.quadraticAttenuation,this.castsShadow=t.castsShadow,this.scene._lightCreated(this)}set pos(e){this._state.pos.set(e||[1,1,1]),this._shadowViewMatrixDirty=!0,this.glRedraw()}get pos(){return this._state.pos}set color(e){this._state.color.set(e||[.7,.7,.8]),this.glRedraw()}get color(){return this._state.color}set intensity(e){e=void 0!==e?e:1,this._state.intensity=e,this.glRedraw()}get intensity(){return this._state.intensity}set constantAttenuation(e){this._state.attenuation[0]=e||0,this.glRedraw()}get constantAttenuation(){return this._state.attenuation[0]}set linearAttenuation(e){this._state.attenuation[1]=e||0,this.glRedraw()}get linearAttenuation(){return this._state.attenuation[1]}set quadraticAttenuation(e){this._state.attenuation[2]=e||0,this.glRedraw()}get quadraticAttenuation(){return this._state.attenuation[2]}set castsShadow(e){e=!!e,this._state.castsShadow!==e&&(this._state.castsShadow=e,this._shadowViewMatrixDirty=!0,this.glRedraw())}get castsShadow(){return this._state.castsShadow}destroy(){const e=this.scene.camera,t=this.scene.canvas;e.off(this._onCameraViewMatrix),e.off(this._onCameraProjMatrix),t.off(this._onCanvasBoundary),super.destroy(),this._state.destroy(),this._shadowRenderBuf&&this._shadowRenderBuf.destroy(),this.scene._lightDestroyed(this),this.glRedraw()}}function au(e){if(!lu(e.width)||!lu(e.height)){const t=document.createElement("canvas");t.width=Au(e.width),t.height=Au(e.height);t.getContext("2d").drawImage(e,0,0,e.width,e.height,0,0,t.width,t.height),e=t}return e}function lu(e){return 0==(e&e-1)}function Au(e){--e;for(let t=1;t<32;t<<=1)e|=e>>t;return e+1}class hu extends R{get type(){return"CubeTexture"}constructor(e,t={}){super(e,t);const i=this.scene.canvas.gl;this._state=new At({texture:new Hr({gl:i,target:i.TEXTURE_CUBE_MAP}),flipY:this._checkFlipY(t.minFilter),encoding:this._checkEncoding(t.encoding),minFilter:1008,magFilter:1006,wrapS:1001,wrapT:1001,mipmaps:!0}),this._src=t.src,this._images=[],this._loadSrc(t.src),m.memory.textures++}_checkFlipY(e){return!!e}_checkEncoding(e){return 3e3!==(e=e||3e3)&&3001!==e&&(this.error("Unsupported value for 'encoding' - supported values are LinearEncoding and sRGBEncoding. Defaulting to LinearEncoding."),e=3e3),e}_webglContextRestored(){this.scene.canvas.gl,this._state.texture=null,this._src&&this._loadSrc(this._src)}_loadSrc(e){const t=this,i=this.scene.canvas.gl;this._images=[];let s=!1,r=0;for(let o=0;o<e.length;o++){const n=new Image;n.onload=function(){let e=n;const a=o;return function(){if(!s&&(e=au(e),t._images[a]=e,r++,6===r)){let e=t._state.texture;e||(e=new Hr({gl:i,target:i.TEXTURE_CUBE_MAP}),t._state.texture=e),e.setImage(t._images,t._state),t.fire("loaded",t._src,!1),t.glRedraw()}}}(),n.onerror=function(){s=!0},n.src=e[o]}}destroy(){super.destroy(),this._state.texture&&this._state.texture.destroy(),m.memory.textures--,this._state.destroy()}}class cu extends hu{get type(){return"ReflectionMap"}constructor(e,t={}){super(e,t),this.scene._lightsState.addReflectionMap(this._state),this.scene._reflectionMapCreated(this)}destroy(){super.destroy(),this.scene._reflectionMapDestroyed(this)}}class uu extends hu{get type(){return"LightMap"}constructor(e,t={}){super(e,t),this.scene._lightMapCreated(this)}destroy(){super.destroy(),this.scene._lightMapDestroyed(this)}}class du extends ue{constructor(e,t={}){super(e,{entity:t.entity,occludable:t.occludable,worldPos:t.worldPos}),this._occluded=!1,this._visible=!0,this._src=null,this._image=null,this._pos=d.vec3(),this._origin=d.vec3(),this._rtcPos=d.vec3(),this._dir=d.vec3(),this._size=1,this._imageSize=d.vec2(),this._texture=new Xr(this,{src:t.src}),this._geometry=new zt(this,{primitive:"triangles",positions:[3,3,0,-3,3,0,-3,-3,0,3,-3,0],normals:[-1,0,0,-1,0,0,-1,0,0,-1,0,0],uv:[1,-1,0,-1,0,0,1,0],indices:[0,1,2,0,2,3]}),this._mesh=new fr(this,{geometry:this._geometry,material:new Yt(this,{ambient:[.9,.3,.9],shininess:30,diffuseMap:this._texture,backfaces:!0}),scale:[1,1,1],position:t.worldPos,rotation:[90,0,0],billboard:"spherical",occluder:!1}),this.visible=!0,this.collidable=t.collidable,this.clippable=t.clippable,this.pickable=t.pickable,this.opacity=t.opacity,this.size=t.size,t.image?this.image=t.image:this.src=t.src}_setVisible(e){this._occluded=!e,this._mesh.visible=this._visible&&!this._occluded,super._setVisible(e)}set visible(e){this._visible=null==e||e,this._mesh.visible=this._visible&&!this._occluded}get visible(){return this._visible}set image(e){this._image=e,this._image&&(this._imageSize[0]=this._image.width,this._imageSize[1]=this._image.height,this._updatePlaneSizeFromImage(),this._src=null,this._texture.image=this._image)}get image(){return this._image}set src(e){if(this._src=e,this._src){this._image=null;const e=new Image;e.onload=()=>{this._texture.image=e,this._imageSize[0]=e.width,this._imageSize[1]=e.height,this._updatePlaneSizeFromImage()},e.src=this._src}}get src(){return this._src}set size(e){this._size=null==e?1:e,this._image&&this._updatePlaneSizeFromImage()}get size(){return this._size}set collidable(e){this._mesh.collidable=!1!==e}get collidable(){return this._mesh.collidable}set clippable(e){this._mesh.clippable=!1!==e}get clippable(){return this._mesh.clippable}set pickable(e){this._mesh.pickable=!1!==e}get pickable(){return this._mesh.pickable}set opacity(e){this._mesh.opacity=e}get opacity(){return this._mesh.opacity}_updatePlaneSizeFromImage(){const e=.5*this._size,t=this._imageSize[0],i=this._imageSize[1],s=i/t;this._geometry.positions=t>i?[e,e*s,0,-e,e*s,0,-e,-e*s,0,e,-e*s,0]:[e/s,e,0,-e/s,e,0,-e/s,-e,0,e/s,-e,0]}}class pu{constructor(e){this._eye=d.vec3(),this._look=d.vec3(),this._up=d.vec3(),this._projection={},e&&this.saveCamera(e)}saveCamera(e){const t=e.camera,i=t.project;switch(this._eye.set(t.eye),this._look.set(t.look),this._up.set(t.up),t.projection){case"perspective":this._projection={projection:"perspective",fov:i.fov,fovAxis:i.fovAxis,near:i.near,far:i.far};break;case"ortho":this._projection={projection:"ortho",scale:i.scale,near:i.near,far:i.far};break;case"frustum":this._projection={projection:"frustum",left:i.left,right:i.right,top:i.top,bottom:i.bottom,near:i.near,far:i.far};break;case"custom":this._projection={projection:"custom",matrix:i.matrix.slice()}}}restoreCamera(e,t){const i=e.camera,s=this._projection;function r(){switch(s.type){case"perspective":i.perspective.fov=s.fov,i.perspective.fovAxis=s.fovAxis,i.perspective.near=s.near,i.perspective.far=s.far;break;case"ortho":i.ortho.scale=s.scale,i.ortho.near=s.near,i.ortho.far=s.far;break;case"frustum":i.frustum.left=s.left,i.frustum.right=s.right,i.frustum.top=s.top,i.frustum.bottom=s.bottom,i.frustum.near=s.near,i.frustum.far=s.far;break;case"custom":i.customProjection.matrix=s.matrix}}t?e.viewer.cameraFlight.flyTo({eye:this._eye,look:this._look,up:this._up,orthoScale:s.scale,projection:s.projection},(()=>{r(),t()})):(i.eye=this._eye,i.look=this._look,i.up=this._up,r(),i.projection=s.projection)}}const fu=d.vec3();class gu{constructor(e){if(this.objectsVisible=[],this.objectsEdges=[],this.objectsXrayed=[],this.objectsHighlighted=[],this.objectsSelected=[],this.objectsClippable=[],this.objectsPickable=[],this.objectsColorize=[],this.objectsOpacity=[],this.numObjects=0,e){const t=e.metaScene.scene;this.saveObjects(t,e)}}saveObjects(e,t,i){this.numObjects=0,this._mask=i?y.apply(i,{}):null;const s=!i||i.visible,r=!i||i.edges,o=!i||i.xrayed,n=!i||i.highlighted,a=!i||i.selected,l=!i||i.clippable,A=!i||i.pickable,h=!i||i.colorize,c=!i||i.opacity,u=t.metaObjects,d=e.objects;for(let e=0,t=u.length;e<t;e++){const t=d[u[e].id];if(t){if(s&&(this.objectsVisible[e]=t.visible),r&&(this.objectsEdges[e]=t.edges),o&&(this.objectsXrayed[e]=t.xrayed),n&&(this.objectsHighlighted[e]=t.highlighted),a&&(this.objectsSelected[e]=t.selected),l&&(this.objectsClippable[e]=t.clippable),A&&(this.objectsPickable[e]=t.pickable),h){const i=t.colorize;this.objectsColorize[3*e+0]=i[0],this.objectsColorize[3*e+1]=i[1],this.objectsColorize[3*e+2]=i[2]}c&&(this.objectsOpacity[e]=t.opacity),this.numObjects++}}}restoreObjects(e,t){const i=this._mask,s=!i||i.visible,r=!i||i.edges,o=!i||i.xrayed,n=!i||i.highlighted,a=!i||i.selected,l=!i||i.clippable,A=!i||i.pickable,h=!i||i.colorize,c=!i||i.opacity,u=t.metaObjects,d=e.objects;for(let e=0,t=u.length;e<t;e++){const t=d[u[e].id];t&&(s&&(t.visible=this.objectsVisible[e]),r&&(t.edges=this.objectsEdges[e]),o&&(t.xrayed=this.objectsXrayed[e]),n&&(t.highlighted=this.objectsHighlighted[e]),a&&(t.selected=this.objectsSelected[e]),l&&(t.clippable=this.objectsClippable[e]),A&&(t.pickable=this.objectsPickable[e]),h&&(fu[0]=this.objectsColorize[3*e+0],fu[1]=this.objectsColorize[3*e+1],fu[2]=this.objectsColorize[3*e+2],t.colorize=fu),c&&(t.opacity=this.objectsOpacity[e]))}}}const mu=d.vec3();class _u{constructor(){this.objectsVisible=[],this.objectsEdges=[],this.objectsXrayed=[],this.objectsHighlighted=[],this.objectsSelected=[],this.objectsClippable=[],this.objectsPickable=[],this.objectsColorize=[],this.objectsHasColorize=[],this.objectsOpacity=[],this.numObjects=0}saveObjects(e,t){this.numObjects=0,this._mask=t?y.apply(t,{}):null;const i=e.objects,s=!t||t.visible,r=!t||t.edges,o=!t||t.xrayed,n=!t||t.highlighted,a=!t||t.selected,l=!t||t.clippable,A=!t||t.pickable,h=!t||t.colorize,c=!t||t.opacity;for(let e in i)if(i.hasOwnProperty(e)){const t=i[e],u=this.numObjects;if(s&&(this.objectsVisible[u]=t.visible),r&&(this.objectsEdges[u]=t.edges),o&&(this.objectsXrayed[u]=t.xrayed),n&&(this.objectsHighlighted[u]=t.highlighted),a&&(this.objectsSelected[u]=t.selected),l&&(this.objectsClippable[u]=t.clippable),A&&(this.objectsPickable[u]=t.pickable),h){const e=t.colorize;e?(this.objectsColorize[3*u+0]=e[0],this.objectsColorize[3*u+1]=e[1],this.objectsColorize[3*u+2]=e[2],this.objectsHasColorize[u]=!0):this.objectsHasColorize[u]=!1}c&&(this.objectsOpacity[u]=t.opacity),this.numObjects++}}restoreObjects(e){const t=this._mask,i=!t||t.visible,s=!t||t.edges,r=!t||t.xrayed,o=!t||t.highlighted,n=!t||t.selected,a=!t||t.clippable,l=!t||t.pickable,A=!t||t.colorize,h=!t||t.opacity;var c=0;const u=e.objects;for(let e in u)if(u.hasOwnProperty(e)){const t=u[e];i&&(t.visible=this.objectsVisible[c]),s&&(t.edges=this.objectsEdges[c]),r&&(t.xrayed=this.objectsXrayed[c]),o&&(t.highlighted=this.objectsHighlighted[c]),n&&(t.selected=this.objectsSelected[c]),a&&(t.clippable=this.objectsClippable[c]),l&&(t.pickable=this.objectsPickable[c]),A&&(this.objectsHasColorize[c]?(mu[0]=this.objectsColorize[3*c+0],mu[1]=this.objectsColorize[3*c+1],mu[2]=this.objectsColorize[3*c+2],t.colorize=mu):t.colorize=null),h&&(t.opacity=this.objectsOpacity[c]),c++}}}class vu extends Gc{constructor(e,t={}){super(e,t),this.v0=t.v0,this.v1=t.v1,this.v2=t.v2,this.v3=t.v3,this.t=t.t}set v0(e){this._v0=e||d.vec3([0,0,0])}get v0(){return this._v0}set v1(e){this._v1=e||d.vec3([0,0,0])}get v1(){return this._v1}set v2(e){this._v2=e||d.vec3([0,0,0])}get v2(){return this._v2}set v3(e){this.fire("v3",this._v3=e||d.vec3([0,0,0]))}get v3(){return this._v3}set t(e){e=e||0,this._t=e<0?0:e>1?1:e}get t(){return this._t}get point(){return this.getPoint(this._t)}getPoint(e){var t=d.vec3();return t[0]=d.b3(e,this._v0[0],this._v1[0],this._v2[0],this._v3[0]),t[1]=d.b3(e,this._v0[1],this._v1[1],this._v2[1],this._v3[1]),t[2]=d.b3(e,this._v0[2],this._v1[2],this._v2[2],this._v3[2]),t}getJSON(){return{v0:this._v0,v1:this._v1,v2:this._v2,v3:this._v3,t:this._t}}}class bu extends Gc{constructor(e,t={}){super(e,t),this._cachedLengths=[],this._dirty=!0,this._curves=[],this._t=0,this._dirtySubs=[],this._destroyedSubs=[],this.curves=t.curves||[],this.t=t.t}addCurve(e){this._curves.push(e),this._dirty=!0}set curves(e){var t,i,s;for(e=e||[],i=0,s=this._curves.length;i<s;i++)(t=this._curves[i]).off(this._dirtySubs[i]),t.off(this._destroyedSubs[i]);this._curves=[],this._dirtySubs=[],this._destroyedSubs=[];var r=this;function o(){r._dirty=!0}function n(){var e=this.id;for(i=0,s=r._curves.length;i<s;i++)if(r._curves[i].id===e)return r._curves=r._curves.slice(i,i+1),r._dirtySubs=r._dirtySubs.slice(i,i+1),r._destroyedSubs=r._destroyedSubs.slice(i,i+1),void(r._dirty=!0)}for(i=0,s=e.length;i<s;i++){if(t=e[i],y.isNumeric(t)||y.isString(t)){var a=t;if(!(t=this.scene.components[a])){this.error("Component not found: "+_inQuotes(a));continue}}var l=t.type;"xeokit.SplineCurve"===l||"xeokit.Path"===l||"xeokit.CubicBezierCurve"===l||"xeokit.QuadraticBezierCurve"===l?(this._curves.push(t),this._dirtySubs.push(t.on("dirty",o)),this._destroyedSubs.push(t.once("destroyed",n))):this.error("Component "+_inQuotes(t.id)+" is not a xeokit.SplineCurve, xeokit.Path or xeokit.QuadraticBezierCurve")}this._dirty=!0}get curves(){return this._curves}set t(e){e=e||0,this._t=e<0?0:e>1?1:e}get t(){return this._t}get point(){return this.getPoint(this._t)}get length(){var e=this._getCurveLengths();return e[e.length-1]}getPoint(e){for(var t,i=e*this.length,s=this._getCurveLengths(),r=0;r<s.length;){if(s[r]>=i){var o=1-(s[r]-i)/(t=this._curves[r]).length;return t.getPointAt(o)}r++}return null}_getCurveLengths(){if(!this._dirty)return this._cachedLengths;var e,t=[],i=0,s=this._curves.length;for(e=0;e<s;e++)i+=this._curves[e].length,t.push(i);return this._cachedLengths=t,this._dirty=!1,t}_getJSON(){for(var e=[],t=0,i=this._curves.length;t<i;t++)e.push(this._curves[t].id);return{curves:e,t:this._t}}destroy(){var e,t,i;for(super.destroy(),e=0,t=this._curves.length;e<t;e++)(i=this._curves[e]).off(this._dirtySubs[e]),i.off(this._destroyedSubs[e])}}class yu extends Gc{constructor(e,t={}){super(e,t),this.v0=t.v0,this.v1=t.v1,this.v2=t.v2,this.t=t.t}set v0(e){this._v0=e||d.vec3([0,0,0])}get v0(){return this._v0}set v1(e){this._v1=e||d.vec3([0,0,0])}get v1(){return this._v1}set v2(e){this._v2=e||d.vec3([0,0,0])}get v2(){return this._v2}set t(e){e=e||0,this._t=e<0?0:e>1?1:e}get t(){return this._t}get point(){return this.getPoint(this._t)}getPoint(e){var t=d.vec3();return t[0]=d.b2(e,this._v0[0],this._v1[0],this._v2[0]),t[1]=d.b2(e,this._v0[1],this._v1[1],this._v2[1]),t[2]=d.b2(e,this._v0[2],this._v1[2],this._v2[2]),t}getJSON(){return{v0:this._v0,v1:this._v1,v2:this._v2,t:this._t}}}class Bu extends bc{constructor(e,t={}){super(e,t)}}class wu extends R{constructor(e,t={}){super(e,t),this._skyboxMesh=new fr(this,{geometry:new zt(this,{primitive:"triangles",positions:[1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1],uv:[.5,.6666,.25,.6666,.25,.3333,.5,.3333,.5,.6666,.5,.3333,.75,.3333,.75,.6666,.5,.6666,.5,1,.25,1,.25,.6666,.25,.6666,0,.6666,0,.3333,.25,.3333,.25,0,.5,0,.5,.3333,.25,.3333,.75,.3333,1,.3333,1,.6666,.75,.6666],indices:[0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23]}),background:!0,scale:[2e3,2e3,2e3],rotation:[0,-90,0],material:new Yt(this,{ambient:[0,0,0],diffuse:[0,0,0],specular:[0,0,0],emissive:[1,1,1],emissiveMap:new Xr(this,{src:t.src,flipY:!0,wrapS:"clampToEdge",wrapT:"clampToEdge",encoding:t.encoding||"sRGB"}),backfaces:!0}),visible:!1,pickable:!1,clippable:!1,collidable:!1}),this.size=t.size,this.active=t.active}set size(e){this._size=e||1e3,this._skyboxMesh.scale=[this._size,this._size,this._size]}get size(){return this._size}set active(e){this._skyboxMesh.visible=e}get active(){return this._skyboxMesh.visible}}class xu{transcode(e,t,i={}){}destroy(){}}const Pu=d.vec4(),Cu=d.vec4(),Mu=d.vec3(),Fu=d.vec3(),Eu=d.vec3(),Iu=d.vec4(),Du=d.vec4(),Su=d.vec4();class Tu{constructor(e){this._scene=e}dollyToCanvasPos(e,t,i){let s=!1;const r=this._scene.camera;if(e){const t=d.subVec3(e,r.eye,Mu);s=d.lenVec3(t)<i}if("perspective"===r.projection){r.ortho.scale=r.ortho.scale-i;const s=this._unproject(t,Iu),o=d.subVec3(s,r.eye,Su),n=d.mulVec3Scalar(d.normalizeVec3(o),-i,[]);if(r.eye=[r.eye[0]-n[0],r.eye[1]-n[1],r.eye[2]-n[2]],r.look=[r.look[0]-n[0],r.look[1]-n[1],r.look[2]-n[2]],e){const t=d.subVec3(e,r.eye,Mu),i=d.lenVec3(t),s=d.mulVec3Scalar(d.normalizeVec3(d.subVec3(r.look,r.eye,Fu)),i);r.look=[r.eye[0]+s[0],r.eye[1]+s[1],r.eye[2]+s[2]]}}else if("ortho"===r.projection){const e=this._unproject(t,Iu);r.ortho.scale=r.ortho.scale-i,r.ortho._update();const s=this._unproject(t,Du),o=d.subVec3(s,e,Su),n=d.mulVec3Scalar(d.normalizeVec3(d.subVec3(r.look,r.eye,Mu)),-i,Fu),a=d.addVec3(o,n,Eu);r.eye=[r.eye[0]-a[0],r.eye[1]-a[1],r.eye[2]-a[2]],r.look=[r.look[0]-a[0],r.look[1]-a[1],r.look[2]-a[2]]}return s}_unproject(e,t){const i=this._scene.camera,s=i.project.transposedMatrix,r=s.subarray(8,12),o=s.subarray(12),n=[0,0,-1,1],a=d.dotVec4(n,r)/d.dotVec4(n,o);return i.project.unproject(e,a,Pu,Cu,t),t}destroy(){}}const Ru=d.vec3(),Lu=d.vec3(),Uu=d.vec3(),ku=d.vec4(),Ou=d.vec4(),Nu=d.vec4();class Qu{constructor(e,t){this._scene=e,this._configs=t,this._pivotWorldPos=d.vec3(),this._cameraOffset=d.vec3(),this._azimuth=0,this._polar=0,this._radius=0,this._pivotPosSet=!1,this._pivoting=!1,this._shown=!1,this._pivotSphereEnabled=!1,this._pivotSphere=null,this._pivotSphereSize=1,this._pivotSphereGeometry=null,this._pivotSphereMaterial=null,this._rtcCenter=d.vec3(),this._rtcPos=d.vec3(),this._pivotViewPos=d.vec4(),this._pivotProjPos=d.vec4(),this._pivotCanvasPos=d.vec2(),this._cameraDirty=!0,this._onViewMatrix=this._scene.camera.on("viewMatrix",(()=>{this._cameraDirty=!0})),this._onProjMatrix=this._scene.camera.on("projMatrix",(()=>{this._cameraDirty=!0})),this._onTick=this._scene.on("tick",(()=>{this.updatePivotElement(),this.updatePivotSphere()}))}createPivotSphere(){const e=this.getPivotPos(),t=d.vec3();d.decomposeMat4(d.inverseMat4(this._scene.viewer.camera.viewMatrix,d.mat4()),t,d.vec4(),d.vec3());const i=d.distVec3(t,e);let s=Math.tan(Math.PI/500)*i*this._pivotSphereSize;"ortho"==this._scene.camera.projection&&(s/=this._scene.camera.ortho.scale/2),X(e,this._rtcCenter,this._rtcPos),this._pivotSphereGeometry=new qr(this._scene,_r({radius:s})),this._pivotSphere=new fr(this._scene,{geometry:this._pivotSphereGeometry,material:this._pivotSphereMaterial,pickable:!1,position:this._rtcPos,rtcCenter:this._rtcCenter})}destroyPivotSphere(){this._pivotSphere&&(this._pivotSphere.destroy(),this._pivotSphere=null),this._pivotSphereGeometry&&(this._pivotSphereGeometry.destroy(),this._pivotSphereGeometry=null)}updatePivotElement(){const e=this._scene.camera,t=this._scene.canvas;if(this._pivoting&&this._cameraDirty){d.transformPoint3(e.viewMatrix,this.getPivotPos(),this._pivotViewPos),this._pivotViewPos[3]=1,d.transformPoint4(e.projMatrix,this._pivotViewPos,this._pivotProjPos);const i=t.boundary,s=i[2],r=i[3];this._pivotCanvasPos[0]=Math.floor((1+this._pivotProjPos[0]/this._pivotProjPos[3])*s/2),this._pivotCanvasPos[1]=Math.floor((1-this._pivotProjPos[1]/this._pivotProjPos[3])*r/2);let o=t._lastBoundingClientRect;if(!o||t._canvasSizeChanged){const e=t.canvas;o=t._lastBoundingClientRect=e.getBoundingClientRect()}this._pivotElement&&(this._pivotElement.style.left=Math.floor(o.left+this._pivotCanvasPos[0])-this._pivotElement.clientWidth/2+window.scrollX+"px",this._pivotElement.style.top=Math.floor(o.top+this._pivotCanvasPos[1])-this._pivotElement.clientHeight/2+window.scrollY+"px"),this._cameraDirty=!1}}updatePivotSphere(){this._pivoting&&this._pivotSphere&&(X(this.getPivotPos(),this._rtcCenter,this._rtcPos),d.compareVec3(this._rtcPos,this._pivotSphere.position)||(this.destroyPivotSphere(),this.createPivotSphere()))}setPivotElement(e){this._pivotElement=e}enablePivotSphere(e={}){this.destroyPivotSphere(),this._pivotSphereEnabled=!0,e.size&&(this._pivotSphereSize=e.size);const t=e.color||[1,0,0];this._pivotSphereMaterial=new Yt(this._scene,{emissive:t,ambient:t,specular:[0,0,0],diffuse:[0,0,0]})}disablePivotSphere(){this.destroyPivotSphere(),this._pivotSphereEnabled=!1}startPivot(){if(this._cameraLookingDownwards())return this._pivoting=!1,!1;const e=this._scene.camera;let t=d.lookAtMat4v(e.eye,e.look,e.worldUp);d.transformPoint3(t,this.getPivotPos(),this._cameraOffset);const i=this.getPivotPos();this._cameraOffset[2]+=d.distVec3(e.eye,i),t=d.inverseMat4(t);const s=d.transformVec3(t,this._cameraOffset),r=d.vec3();if(d.subVec3(e.eye,i,r),d.addVec3(r,s),e.zUp){const e=r[1];r[1]=r[2],r[2]=e}this._radius=d.lenVec3(r),this._polar=Math.acos(r[1]/this._radius),this._azimuth=Math.atan2(r[0],r[2]),this._pivoting=!0}_cameraLookingDownwards(){const e=this._scene.camera,t=d.normalizeVec3(d.subVec3(e.look,e.eye,Ru)),i=d.cross3Vec3(t,e.worldUp,Lu);return d.sqLenVec3(i)<=1e-4}getPivoting(){return this._pivoting}setPivotPos(e){this._pivotWorldPos.set(e),this._pivotPosSet=!0}setCanvasPivotPos(e){const t=this._scene.camera,i=Math.abs(d.distVec3(this._scene.center,t.eye)),s=t.project.transposedMatrix,r=s.subarray(8,12),o=s.subarray(12),n=[0,0,-1,1],a=d.dotVec4(n,r)/d.dotVec4(n,o),l=ku;t.project.unproject(e,a,Ou,Nu,l);const A=d.normalizeVec3(d.subVec3(l,t.eye,Ru)),h=d.addVec3(t.eye,d.mulVec3Scalar(A,i,Lu),Uu);this.setPivotPos(h)}getPivotPos(){return this._pivotPosSet?this._pivotWorldPos:this._scene.camera.look}continuePivot(e,t){if(!this._pivoting)return;if(0===e&&0===t)return;const i=this._scene.camera;var s=-e;const r=-t;1===i.worldUp[2]&&(s=-s),this._azimuth+=.01*-s,this._polar+=.01*r,this._polar=d.clamp(this._polar,.001,Math.PI-.001);const o=[this._radius*Math.sin(this._polar)*Math.sin(this._azimuth),this._radius*Math.cos(this._polar),this._radius*Math.sin(this._polar)*Math.cos(this._azimuth)];if(1===i.worldUp[2]){const e=o[1];o[1]=o[2],o[2]=e}const n=d.lenVec3(d.subVec3(i.look,i.eye,d.vec3())),a=this.getPivotPos();d.addVec3(o,a);let l=d.lookAtMat4v(o,a,i.worldUp);l=d.inverseMat4(l);const A=d.transformVec3(l,this._cameraOffset);l[12]-=A[0],l[13]-=A[1],l[14]-=A[2];const h=[l[8],l[9],l[10]];i.eye=[l[12],l[13],l[14]],d.subVec3(i.eye,d.mulVec3Scalar(h,n),i.look),i.up=[l[4],l[5],l[6]],this.showPivot()}showPivot(){this._shown||(this._pivotElement&&(this.updatePivotElement(),this._pivotElement.style.visibility="visible"),this._pivotSphereEnabled&&(this.destroyPivotSphere(),this.createPivotSphere()),this._shown=!0)}hidePivot(){this._shown&&(this._pivotElement&&(this._pivotElement.style.visibility="hidden"),this._pivotSphereEnabled&&this.destroyPivotSphere(),this._shown=!1)}endPivot(){this._pivoting=!1}destroy(){this.destroyPivotSphere(),this._scene.camera.off(this._onViewMatrix),this._scene.camera.off(this._onProjMatrix),this._scene.off(this._onTick)}}class Vu{constructor(e,t){this._scene=e.scene,this._cameraControl=e,this._scene.canvas.canvas.oncontextmenu=function(e){e.preventDefault()},this._configs=t,this.schedulePickEntity=!1,this.schedulePickSurface=!1,this.scheduleSnapOrPick=!1,this.pickCursorPos=d.vec2(),this.picked=!1,this.pickedSurface=!1,this.pickResult=null,this._lastPickedEntityId=null,this._lastHash=null,this._needFireEvents=0}update(){if(!this._configs.pointerEnabled)return;if(!this.schedulePickEntity&&!this.schedulePickSurface)return;const e=`${~~this.pickCursorPos[0]}-${~~this.pickCursorPos[1]}-${this.scheduleSnapOrPick}-${this.schedulePickSurface}-${this.schedulePickEntity}`;if(this._lastHash===e)return;this.picked=!1,this.pickedSurface=!1,this.snappedOrPicked=!1,this.hoveredSnappedOrSurfaceOff=!1;const t=this._cameraControl.hasSubs("hoverSurface");if(this.scheduleSnapOrPick){const e=this._scene.pick({canvasPos:this.pickCursorPos,snapRadius:this._configs.snapRadius,snapToVertex:this._configs.snapToVertex,snapToEdge:this._configs.snapToEdge});e&&(e.snappedToEdge||e.snappedToVertex)?(this.snapPickResult=e,this.snappedOrPicked=!0,this._needFireEvents++):(this.schedulePickSurface=!0,this.snapPickResult=null)}if(this.schedulePickSurface&&this.pickResult&&this.pickResult.worldPos){const e=this.pickResult.canvasPos;if(e[0]===this.pickCursorPos[0]&&e[1]===this.pickCursorPos[1])return this.picked=!0,this.pickedSurface=!0,this._needFireEvents+=t?1:0,this.schedulePickEntity=!1,this.schedulePickSurface=!1,this.scheduleSnapOrPick?this.snappedOrPicked=!0:this.hoveredSnappedOrSurfaceOff=!0,void(this.scheduleSnapOrPick=!1)}if(this.schedulePickEntity&&this.pickResult&&(this.pickResult.canvasPos||this.pickResult.snappedCanvasPos)){const e=this.pickResult.canvasPos||this.pickResult.snappedCanvasPos;if(e[0]===this.pickCursorPos[0]&&e[1]===this.pickCursorPos[1])return this.picked=!0,this.pickedSurface=!1,this.schedulePickEntity=!1,void(this.schedulePickSurface=!1)}this.schedulePickSurface||this.scheduleSnapOrPick&&!this.snapPickResult?(this.pickResult=this._scene.pick({pickSurface:!0,pickSurfaceNormal:!1,canvasPos:this.pickCursorPos}),this.pickResult?(this.picked=!0,this.scheduleSnapOrPick?this.snappedOrPicked=!0:this.pickedSurface=!0,this._needFireEvents++):this.scheduleSnapOrPick&&(this.hoveredSnappedOrSurfaceOff=!0,this._needFireEvents++)):(this.pickResult=this._scene.pick({canvasPos:this.pickCursorPos}),this.pickResult&&(this.picked=!0,this.pickedSurface=!1,this._needFireEvents++)),this.scheduleSnapOrPick=!1,this.schedulePickEntity=!1,this.schedulePickSurface=!1}fireEvents(){if(0!==this._needFireEvents){if(this.hoveredSnappedOrSurfaceOff&&this._cameraControl.fire("hoverSnapOrSurfaceOff",{canvasPos:this.pickCursorPos,pointerPos:this.pickCursorPos},!0),this.snappedOrPicked)if(this.snapPickResult){const e=new Le;e.entity=this.snapPickResult.entity,e.snappedToVertex=this.snapPickResult.snappedToVertex,e.snappedToEdge=this.snapPickResult.snappedToEdge,e.worldPos=this.snapPickResult.worldPos,e.canvasPos=this.pickCursorPos,e.snappedCanvasPos=this.snapPickResult.snappedCanvasPos,this._cameraControl.fire("hoverSnapOrSurface",e,!0),this.snapPickResult=null}else this._cameraControl.fire("hoverSnapOrSurface",this.pickResult,!0);if(this.picked&&this.pickResult&&(this.pickResult.entity||this.pickResult.worldPos)){if(this.pickResult.entity){const e=this.pickResult.entity.id;this._lastPickedEntityId!==e&&(void 0!==this._lastPickedEntityId&&this._cameraControl.fire("hoverOut",{entity:this._scene.objects[this._lastPickedEntityId]},!0),this._cameraControl.fire("hoverEnter",this.pickResult,!0),this._lastPickedEntityId=e)}this._cameraControl.fire("hover",this.pickResult,!0),this.pickResult.worldPos&&(this.pickedSurface=!0,this._cameraControl.fire("hoverSurface",this.pickResult,!0))}else void 0!==this._lastPickedEntityId&&(this._cameraControl.fire("hoverOut",{entity:this._scene.objects[this._lastPickedEntityId]},!0),this._lastPickedEntityId=void 0),this._cameraControl.fire("hoverOff",{canvasPos:this.pickCursorPos},!0);this.pickResult=null,this._needFireEvents=0}}}const Hu=d.vec2();class ju{constructor(e,t,i,s,r){this._scene=e;const o=t.pickController;let n,a,l,A=0,h=0,c=0,u=0,p=!1;const f=d.vec3();let g=!0;const m=this._scene.canvas.canvas,_=[];function v(e=!0){m.style.cursor="move",A=s.pointerCanvasPos[0],h=s.pointerCanvasPos[1],c=s.pointerCanvasPos[0],u=s.pointerCanvasPos[1],e&&(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickSurface=!0,o.update(),o.picked&&o.pickedSurface&&o.pickResult&&o.pickResult.worldPos?(p=!0,f.set(o.pickResult.worldPos)):p=!1)}document.addEventListener("keydown",this._documentKeyDownHandler=t=>{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;const s=t.keyCode;_[s]=!0}),document.addEventListener("keyup",this._documentKeyUpHandler=t=>{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;const s=t.keyCode;_[s]=!1}),m.addEventListener("mousedown",this._mouseDownHandler=t=>{if(i.active&&i.pointerEnabled)switch(t.which){case 1:_[e.input.KEY_SHIFT]||i.planView?(n=!0,v()):(n=!0,v(!1));break;case 2:a=!0,v();break;case 3:l=!0,i.panRightClick&&v()}}),document.addEventListener("mousemove",this._documentMouseMoveHandler=t=>{if(!i.active||!i.pointerEnabled)return;if(!n&&!a&&!l)return;const o=e.canvas.boundary,c=o[2],u=o[3],g=s.pointerCanvasPos[0],m=s.pointerCanvasPos[1],v=_[e.input.KEY_SHIFT]||i.planView||!i.panRightClick&&a||i.panRightClick&&l,b=document.pointerLockElement?t.movementX:g-A,y=document.pointerLockElement?t.movementY:m-h;if(v){const t=e.camera;if("perspective"===t.projection){const i=Math.abs(p?d.lenVec3(d.subVec3(f,e.camera.eye,[])):e.camera.eyeLookDist)*Math.tan(t.perspective.fov/2*Math.PI/180);r.panDeltaX+=1.5*b*i/u,r.panDeltaY+=1.5*y*i/u}else r.panDeltaX+=.5*t.ortho.scale*(b/u),r.panDeltaY+=.5*t.ortho.scale*(y/u)}else!n||a||l||i.planView||(i.firstPerson?(r.rotateDeltaY-=b/c*i.dragRotationRate/2,r.rotateDeltaX+=y/u*(i.dragRotationRate/4)):(r.rotateDeltaY-=b/c*(1.5*i.dragRotationRate),r.rotateDeltaX+=y/u*(1.5*i.dragRotationRate)));A=g,h=m}),m.addEventListener("mousemove",this._canvasMouseMoveHandler=e=>{i.active&&i.pointerEnabled&&s.mouseover&&(g=!0)}),document.addEventListener("mouseup",this._documentMouseUpHandler=e=>{if(i.active&&i.pointerEnabled)switch(e.which){case 1:case 2:case 3:n=!1,a=!1,l=!1}}),m.addEventListener("mouseup",this._mouseUpHandler=e=>{if(i.active&&i.pointerEnabled){if(3===e.which){!function(e,t){if(e){let i=e.target,s=0,r=0,o=0,n=0;for(;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,o+=i.scrollLeft,n+=i.scrollTop,i=i.offsetParent;t[0]=e.pageX+o-s,t[1]=e.pageY+n-r}else e=window.event,t[0]=e.x,t[1]=e.y}(e,Hu);const i=Hu[0],s=Hu[1];Math.abs(i-c)<3&&Math.abs(s-u)<3&&t.cameraControl.fire("rightClick",{pagePos:[Math.round(e.pageX),Math.round(e.pageY)],canvasPos:Hu,event:e},!0)}m.style.removeProperty("cursor")}}),m.addEventListener("mouseenter",this._mouseEnterHandler=()=>{i.active&&i.pointerEnabled});const b=1/60;let y=null;m.addEventListener("wheel",this._mouseWheelHandler=e=>{if(!i.active||!i.pointerEnabled)return;const t=performance.now()/1e3;var o=null!==y?t-y:0;y=t,o>.05&&(o=.05),o<b&&(o=b);const n=Math.max(-1,Math.min(1,40*-e.deltaY));if(0===n)return;const a=n/Math.abs(n);r.dollyDelta+=-a*o*i.mouseWheelDollyRate,g&&(s.followPointerDirty=!0,g=!1)},{passive:!0})}reset(){}destroy(){const e=this._scene.canvas.canvas;document.removeEventListener("keydown",this._documentKeyDownHandler),document.removeEventListener("keyup",this._documentKeyUpHandler),e.removeEventListener("mousedown",this._mouseDownHandler),document.removeEventListener("mousemove",this._documentMouseMoveHandler),e.removeEventListener("mousemove",this._canvasMouseMoveHandler),document.removeEventListener("mouseup",this._documentMouseUpHandler),e.removeEventListener("mouseup",this._mouseUpHandler),e.removeEventListener("mouseenter",this._mouseEnterHandler),e.removeEventListener("wheel",this._mouseWheelHandler)}}const Gu=d.vec3(),zu=d.vec3(),Wu=d.vec3(),Ku=d.vec3(),Xu=d.vec3(),Ju={eye:d.vec3(),look:d.vec3(),up:d.vec3()};class Yu{constructor(e,t,i,s){this._scene=e;const r=t.cameraControl,o=e.camera;this._onSceneKeyDown=e.input.on("keydown",(()=>{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;if(!s.mouseover)return;const n=r._isKeyDownForAction(r.AXIS_VIEW_RIGHT),a=r._isKeyDownForAction(r.AXIS_VIEW_BACK),l=r._isKeyDownForAction(r.AXIS_VIEW_LEFT),A=r._isKeyDownForAction(r.AXIS_VIEW_FRONT),h=r._isKeyDownForAction(r.AXIS_VIEW_TOP),c=r._isKeyDownForAction(r.AXIS_VIEW_BOTTOM);if(!(n||a||l||A||h||c))return;const u=e.aabb,p=d.getAABB3Diag(u);d.getAABB3Center(u,Gu);const f=Math.abs(p/Math.tan(t.cameraFlight.fitFOV*d.DEGTORAD)),g=1.1*p;Ju.orthoScale=g,n?(Ju.eye.set(d.addVec3(Gu,d.mulVec3Scalar(o.worldRight,f,zu),Xu)),Ju.look.set(Gu),Ju.up.set(o.worldUp)):a?(Ju.eye.set(d.addVec3(Gu,d.mulVec3Scalar(o.worldForward,f,zu),Xu)),Ju.look.set(Gu),Ju.up.set(o.worldUp)):l?(Ju.eye.set(d.addVec3(Gu,d.mulVec3Scalar(o.worldRight,-f,zu),Xu)),Ju.look.set(Gu),Ju.up.set(o.worldUp)):A?(Ju.eye.set(d.addVec3(Gu,d.mulVec3Scalar(o.worldForward,-f,zu),Xu)),Ju.look.set(Gu),Ju.up.set(o.worldUp)):h?(Ju.eye.set(d.addVec3(Gu,d.mulVec3Scalar(o.worldUp,f,zu),Xu)),Ju.look.set(Gu),Ju.up.set(d.normalizeVec3(d.mulVec3Scalar(o.worldForward,1,Wu),Ku))):c&&(Ju.eye.set(d.addVec3(Gu,d.mulVec3Scalar(o.worldUp,-f,zu),Xu)),Ju.look.set(Gu),Ju.up.set(d.normalizeVec3(d.mulVec3Scalar(o.worldForward,-1,Wu)))),!i.firstPerson&&i.followPointer&&t.pivotController.setPivotPos(Gu),t.cameraFlight.duration>0?t.cameraFlight.flyTo(Ju,(()=>{t.pivotController.getPivoting()&&i.followPointer&&t.pivotController.showPivot()})):(t.cameraFlight.jumpTo(Ju),t.pivotController.getPivoting()&&i.followPointer&&t.pivotController.showPivot())}))}reset(){}destroy(){this._scene.input.off(this._onSceneKeyDown)}}class Zu{constructor(e,t,i,s,r){this._scene=e;const o=t.pickController,n=t.pivotController,a=t.cameraControl;this._clicks=0,this._timeout=null,this._lastPickedEntityId=null;let l=!1,A=!1;const h=this._scene.canvas.canvas,c=i=>{let s;i&&i.worldPos&&(s=i.worldPos);const r=i&&i.entity?i.entity.aabb:e.aabb;if(s){const i=e.camera;d.subVec3(i.eye,i.look,[]),t.cameraFlight.flyTo({aabb:r})}else t.cameraFlight.flyTo({aabb:r})},u=e.tickify(this._canvasMouseMoveHandler=t=>{if(!i.active||!i.pointerEnabled)return;if(l||A)return;const r=a.hasSubs("hover"),n=a.hasSubs("hoverEnter"),h=a.hasSubs("hoverOut"),c=a.hasSubs("hoverOff"),u=a.hasSubs("hoverSurface"),d=a.hasSubs("hoverSnapOrSurface");if(r||n||h||c||u||d)if(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=!0,o.schedulePickSurface=u,o.scheduleSnapOrPick=d,o.update(),o.pickResult){if(o.pickResult.entity){const t=o.pickResult.entity.id;this._lastPickedEntityId!==t&&(void 0!==this._lastPickedEntityId&&a.fire("hoverOut",{entity:e.objects[this._lastPickedEntityId]},!0),a.fire("hoverEnter",o.pickResult,!0),this._lastPickedEntityId=t)}a.fire("hover",o.pickResult,!0),(o.pickResult.worldPos||o.pickResult.snappedWorldPos)&&a.fire("hoverSurface",o.pickResult,!0)}else void 0!==this._lastPickedEntityId&&(a.fire("hoverOut",{entity:e.objects[this._lastPickedEntityId]},!0),this._lastPickedEntityId=void 0),a.fire("hoverOff",{canvasPos:o.pickCursorPos},!0)});h.addEventListener("mousemove",u),h.addEventListener("mousedown",this._canvasMouseDownHandler=t=>{1===t.which&&(l=!0),3===t.which&&(A=!0);if(1===t.which&&i.active&&i.pointerEnabled&&(s.mouseDownClientX=t.clientX,s.mouseDownClientY=t.clientY,s.mouseDownCursorX=s.pointerCanvasPos[0],s.mouseDownCursorY=s.pointerCanvasPos[1],!i.firstPerson&&i.followPointer&&(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickSurface=!0,o.update(),1===t.which))){const t=o.pickResult;t&&t.worldPos?(n.setPivotPos(t.worldPos),n.startPivot()):(i.smartPivot?n.setCanvasPivotPos(s.pointerCanvasPos):n.setPivotPos(e.camera.look),n.startPivot())}}),document.addEventListener("mouseup",this._documentMouseUpHandler=e=>{1===e.which&&(l=!1),3===e.which&&(A=!1),n.getPivoting()&&n.endPivot()}),h.addEventListener("mouseup",this._canvasMouseUpHandler=r=>{if(!i.active||!i.pointerEnabled)return;if(!(1===r.which))return;if(n.hidePivot(),Math.abs(r.clientX-s.mouseDownClientX)>3||Math.abs(r.clientY-s.mouseDownClientY)>3)return;const l=a.hasSubs("picked"),A=a.hasSubs("pickedNothing"),h=a.hasSubs("pickedSurface"),u=a.hasSubs("doublePicked"),p=a.hasSubs("doublePickedSurface"),f=a.hasSubs("doublePickedNothing");if(!(i.doublePickFlyTo||u||p||f))return(l||A||h)&&(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=!0,o.schedulePickSurface=h,o.update(),o.pickResult?(a.fire("picked",o.pickResult,!0),o.pickedSurface&&a.fire("pickedSurface",o.pickResult,!0)):a.fire("pickedNothing",{canvasPos:s.pointerCanvasPos},!0)),void(this._clicks=0);if(this._clicks++,1===this._clicks){o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=i.doublePickFlyTo,o.schedulePickSurface=h,o.update();const e=o.pickResult,r=o.pickedSurface;this._timeout=setTimeout((()=>{e?(a.fire("picked",e,!0),r&&(a.fire("pickedSurface",e,!0),!i.firstPerson&&i.followPointer&&(t.pivotController.setPivotPos(e.worldPos),t.pivotController.startPivot()&&t.pivotController.showPivot()))):a.fire("pickedNothing",{canvasPos:s.pointerCanvasPos},!0),this._clicks=0}),i.doubleClickTimeFrame)}else{if(null!==this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null),o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=i.doublePickFlyTo||u||p,o.schedulePickSurface=o.schedulePickEntity&&p,o.update(),o.pickResult){if(a.fire("doublePicked",o.pickResult,!0),o.pickedSurface&&a.fire("doublePickedSurface",o.pickResult,!0),i.doublePickFlyTo&&(c(o.pickResult),!i.firstPerson&&i.followPointer)){const e=o.pickResult.entity.aabb,i=d.getAABB3Center(e);t.pivotController.setPivotPos(i),t.pivotController.startPivot()&&t.pivotController.showPivot()}}else if(a.fire("doublePickedNothing",{canvasPos:s.pointerCanvasPos},!0),i.doublePickFlyTo&&(c(),!i.firstPerson&&i.followPointer)){const i=e.aabb,s=d.getAABB3Center(i);t.pivotController.setPivotPos(s),t.pivotController.startPivot()&&t.pivotController.showPivot()}this._clicks=0}},!1)}reset(){this._clicks=0,this._lastPickedEntityId=null,this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null)}destroy(){const e=this._scene.canvas.canvas;e.removeEventListener("mousemove",this._canvasMouseMoveHandler),e.removeEventListener("mousedown",this._canvasMouseDownHandler),document.removeEventListener("mouseup",this._documentMouseUpHandler),e.removeEventListener("mouseup",this._canvasMouseUpHandler),this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null)}}class qu{constructor(e,t,i,s,r){this._scene=e;const o=e.input,n=[],a=e.canvas.canvas;let l=!0;this._onSceneMouseMove=o.on("mousemove",(()=>{l=!0})),this._onSceneKeyDown=o.on("keydown",(t=>{i.active&&i.pointerEnabled&&e.input.keyboardEnabled&&s.mouseover&&(n[t]=!0,t===o.KEY_SHIFT&&(a.style.cursor="move"))})),this._onSceneKeyUp=o.on("keyup",(s=>{i.active&&i.pointerEnabled&&e.input.keyboardEnabled&&(n[s]=!1,s===o.KEY_SHIFT&&(a.style.cursor=null),t.pivotController.getPivoting()&&t.pivotController.endPivot())})),this._onTick=e.on("tick",(a=>{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;if(!s.mouseover)return;const A=t.cameraControl,h=a.deltaTime/1e3;if(!i.planView){const e=A._isKeyDownForAction(A.ROTATE_Y_POS,n),s=A._isKeyDownForAction(A.ROTATE_Y_NEG,n),o=A._isKeyDownForAction(A.ROTATE_X_POS,n),a=A._isKeyDownForAction(A.ROTATE_X_NEG,n),l=h*i.keyboardRotationRate;(e||s||o||a)&&(!i.firstPerson&&i.followPointer&&t.pivotController.startPivot(),e?r.rotateDeltaY+=l:s&&(r.rotateDeltaY-=l),o?r.rotateDeltaX+=l:a&&(r.rotateDeltaX-=l),!i.firstPerson&&i.followPointer&&t.pivotController.startPivot())}if(!n[o.KEY_CTRL]&&!n[o.KEY_ALT]){const e=A._isKeyDownForAction(A.DOLLY_BACKWARDS,n),o=A._isKeyDownForAction(A.DOLLY_FORWARDS,n);if(e||o){const n=h*i.keyboardDollyRate;!i.firstPerson&&i.followPointer&&t.pivotController.startPivot(),o?r.dollyDelta-=n:e&&(r.dollyDelta+=n),l&&(s.followPointerDirty=!0,l=!1)}}const c=A._isKeyDownForAction(A.PAN_FORWARDS,n),u=A._isKeyDownForAction(A.PAN_BACKWARDS,n),d=A._isKeyDownForAction(A.PAN_LEFT,n),p=A._isKeyDownForAction(A.PAN_RIGHT,n),f=A._isKeyDownForAction(A.PAN_UP,n),g=A._isKeyDownForAction(A.PAN_DOWN,n),m=(n[o.KEY_ALT]?.3:1)*h*i.keyboardPanRate;(c||u||d||p||f||g)&&(!i.firstPerson&&i.followPointer&&t.pivotController.startPivot(),g?r.panDeltaY+=m:f&&(r.panDeltaY+=-m),p?r.panDeltaX+=-m:d&&(r.panDeltaX+=m),u?r.panDeltaZ+=m:c&&(r.panDeltaZ+=-m))}))}reset(){}destroy(){this._scene.off(this._onTick),this._scene.input.off(this._onSceneMouseMove),this._scene.input.off(this._onSceneKeyDown),this._scene.input.off(this._onSceneKeyUp)}}const $u=d.vec3();class ed{constructor(e,t,i,s,r){this._scene=e;const o=e.camera,n=t.pickController,a=t.pivotController,l=t.panController;let A=1,h=1,c=null;this._onTick=e.on("tick",(()=>{if(!i.active||!i.pointerEnabled)return;let t="default";if(Math.abs(r.dollyDelta)<.001&&(r.dollyDelta=0),Math.abs(r.rotateDeltaX)<.001&&(r.rotateDeltaX=0),Math.abs(r.rotateDeltaY)<.001&&(r.rotateDeltaY=0),0===r.rotateDeltaX&&0===r.rotateDeltaY||(r.dollyDelta=0),i.followPointer){if(--A<=0&&(A=1,0!==r.dollyDelta)){if(0===r.rotateDeltaY&&0===r.rotateDeltaX&&i.followPointer&&s.followPointerDirty&&(n.pickCursorPos=s.pointerCanvasPos,n.schedulePickSurface=!0,n.update(),n.pickResult&&n.pickResult.worldPos?c=n.pickResult.worldPos:(h=1,c=null),s.followPointerDirty=!1),c){const t=Math.abs(d.lenVec3(d.subVec3(c,e.camera.eye,$u)));h=t/i.dollyProximityThreshold}h<i.dollyMinSpeed&&(h=i.dollyMinSpeed)}}else h=1,c=null;const u=r.dollyDelta*h;if(0===r.rotateDeltaY&&0===r.rotateDeltaX||(!i.firstPerson&&i.followPointer&&a.getPivoting()?(a.continuePivot(r.rotateDeltaY,r.rotateDeltaX),a.showPivot()):(0!==r.rotateDeltaX&&(i.firstPerson?o.pitch(-r.rotateDeltaX):o.orbitPitch(r.rotateDeltaX)),0!==r.rotateDeltaY&&(i.firstPerson?o.yaw(r.rotateDeltaY):o.orbitYaw(r.rotateDeltaY))),r.rotateDeltaX*=i.rotationInertia,r.rotateDeltaY*=i.rotationInertia,t="grabbing"),Math.abs(r.panDeltaX)<.001&&(r.panDeltaX=0),Math.abs(r.panDeltaY)<.001&&(r.panDeltaY=0),Math.abs(r.panDeltaZ)<.001&&(r.panDeltaZ=0),0!==r.panDeltaX||0!==r.panDeltaY||0!==r.panDeltaZ){const e=d.vec3();let s,n;if(e[0]=r.panDeltaX,e[1]=r.panDeltaY,e[2]=r.panDeltaZ,i.constrainVertical){o.xUp?(s=o.eye[0],n=o.look[0]):o.yUp?(s=o.eye[1],n=o.look[1]):o.zUp&&(s=o.eye[2],n=o.look[2]),o.pan(e);const t=o.eye,i=o.look;o.xUp?(t[0]=s,i[0]=n):o.yUp?(t[1]=s,i[1]=n):o.zUp&&(t[2]=s,i[2]=n),o.eye=t,o.look=i}else o.pan(e);t="grabbing"}if(r.panDeltaX*=i.panInertia,r.panDeltaY*=i.panInertia,r.panDeltaZ*=i.panInertia,0!==u){if(t=u<0?"zoom-in":"zoom-out",i.firstPerson){let e,t;if(i.constrainVertical&&(o.xUp?(e=o.eye[0],t=o.look[0]):o.yUp?(e=o.eye[1],t=o.look[1]):o.zUp&&(e=o.eye[2],t=o.look[2])),i.followPointer){l.dollyToCanvasPos(c,s.pointerCanvasPos,-u)&&(s.followPointerDirty=!0)}else o.pan([0,0,u]),o.ortho.scale=o.ortho.scale-u;if(i.constrainVertical){const i=o.eye,s=o.look;o.xUp?(i[0]=e,s[0]=t):o.yUp?(i[1]=e,s[1]=t):o.zUp&&(i[2]=e,s[2]=t),o.eye=i,o.look=s}}else if(i.planView)if(i.followPointer){l.dollyToCanvasPos(c,s.pointerCanvasPos,-u)&&(s.followPointerDirty=!0)}else o.ortho.scale=o.ortho.scale+u,o.zoom(u);else if(i.followPointer){l.dollyToCanvasPos(c,s.pointerCanvasPos,-u)&&(s.followPointerDirty=!0)}else o.ortho.scale=o.ortho.scale+u,o.zoom(u);r.dollyDelta*=i.dollyInertia}n.fireEvents(),document.body.style.cursor=t}))}destroy(){this._scene.off(this._onTick)}}class td{constructor(e,t,i,s,r){this._scene=e;const o=this._scene.canvas.canvas;o.addEventListener("mouseenter",this._mouseEnterHandler=()=>{s.mouseover=!0}),o.addEventListener("mouseleave",this._mouseLeaveHandler=()=>{s.mouseover=!1,o.style.cursor=null}),document.addEventListener("mousemove",this._mouseMoveHandler=e=>{id(e,o,s.pointerCanvasPos)}),o.addEventListener("mousedown",this._mouseDownHandler=e=>{i.active&&i.pointerEnabled&&(id(e,o,s.pointerCanvasPos),s.mouseover=!0)}),o.addEventListener("mouseup",this._mouseUpHandler=e=>{i.active&&i.pointerEnabled})}reset(){}destroy(){const e=this._scene.canvas.canvas;document.removeEventListener("mousemove",this._mouseMoveHandler),e.removeEventListener("mouseenter",this._mouseEnterHandler),e.removeEventListener("mouseleave",this._mouseLeaveHandler),e.removeEventListener("mousedown",this._mouseDownHandler),e.removeEventListener("mouseup",this._mouseUpHandler)}}function id(e,t,i){if(e){const{left:s,top:r}=t.getBoundingClientRect();i[0]=e.clientX-s,i[1]=e.clientY-r}else e=window.event,i[0]=e.x,i[1]=e.y;return i}const sd=function(e,t){if(e){let i=e.target,s=0,r=0;for(;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;t[0]=e.pageX-s,t[1]=e.pageY-r}else e=window.event,t[0]=e.x,t[1]=e.y;return t};class rd{constructor(e,t,i,s,r){this._scene=e;const o=t.pickController,n=t.pivotController,a=d.vec2(),l=d.vec2(),A=d.vec2(),h=d.vec2(),c=[],u=this._scene.canvas.canvas;let p=0,f=!1;this._onTick=e.on("tick",(()=>{f=!1})),u.addEventListener("touchstart",this._canvasTouchStartHandler=t=>{if(!i.active||!i.pointerEnabled)return;t.preventDefault();const r=t.touches,l=t.changedTouches;for(s.touchStartTime=Date.now(),1===r.length&&1===l.length&&(sd(r[0],a),i.followPointer&&(o.pickCursorPos=a,o.schedulePickSurface=!0,o.update(),i.planView||(o.picked&&o.pickedSurface&&o.pickResult&&o.pickResult.worldPos?(n.setPivotPos(o.pickResult.worldPos),!i.firstPerson&&n.startPivot()&&n.showPivot()):(i.smartPivot?n.setCanvasPivotPos(s.pointerCanvasPos):n.setPivotPos(e.camera.look),!i.firstPerson&&n.startPivot()&&n.showPivot()))));c.length<r.length;)c.push(d.vec2());for(let e=0,t=r.length;e<t;++e)sd(r[e],c[e]);p=r.length}),u.addEventListener("touchend",this._canvasTouchEndHandler=()=>{n.getPivoting()&&n.endPivot()}),u.addEventListener("touchmove",this._canvasTouchMoveHandler=t=>{if(!i.active||!i.pointerEnabled)return;if(t.stopPropagation(),t.preventDefault(),f)return;f=!0;const n=e.canvas.boundary,a=n[2],u=n[3],g=t.touches;if(t.touches.length===p){if(1===p){sd(g[0],l),d.subVec2(l,c[0],h);const t=h[0],o=h[1];if(null!==s.longTouchTimeout&&(Math.abs(t)>i.longTapRadius||Math.abs(o)>i.longTapRadius)&&(clearTimeout(s.longTouchTimeout),s.longTouchTimeout=null),i.planView){const s=e.camera;if("perspective"===s.projection){const n=Math.abs(e.camera.eyeLookDist)*Math.tan(s.perspective.fov/2*Math.PI/180);r.panDeltaX+=t*n/u*i.touchPanRate,r.panDeltaY+=o*n/u*i.touchPanRate}else r.panDeltaX+=.5*s.ortho.scale*(t/u)*i.touchPanRate,r.panDeltaY+=.5*s.ortho.scale*(o/u)*i.touchPanRate}else r.rotateDeltaY-=t/a*(1*i.dragRotationRate),r.rotateDeltaX+=o/u*(1.5*i.dragRotationRate)}else if(2===p){const t=g[0],n=g[1];sd(t,l),sd(n,A);const a=d.geometricMeanVec2(c[0],c[1]),h=d.geometricMeanVec2(l,A),p=d.vec2();d.subVec2(a,h,p);const f=p[0],m=p[1],_=e.camera,v=d.distVec2([t.pageX,t.pageY],[n.pageX,n.pageY]),b=(d.distVec2(c[0],c[1])-v)*i.touchDollyRate;if(r.dollyDelta=b,Math.abs(b)<1)if("perspective"===_.projection){const t=o.pickResult?o.pickResult.worldPos:e.center,s=Math.abs(d.lenVec3(d.subVec3(t,e.camera.eye,[])))*Math.tan(_.perspective.fov/2*Math.PI/180);r.panDeltaX-=f*s/u*i.touchPanRate,r.panDeltaY-=m*s/u*i.touchPanRate}else r.panDeltaX-=.5*_.ortho.scale*(f/u)*i.touchPanRate,r.panDeltaY-=.5*_.ortho.scale*(m/u)*i.touchPanRate;s.pointerCanvasPos=h}for(let e=0;e<p;++e)sd(g[e],c[e])}})}reset(){}destroy(){const e=this._scene.canvas.canvas;e.removeEventListener("touchstart",this._canvasTouchStartHandler),e.removeEventListener("touchend",this._canvasTouchEndHandler),e.removeEventListener("touchmove",this._canvasTouchMoveHandler),this._scene.off(this._onTick)}}const od=function(e,t){if(e){let i=e.target,s=0,r=0;for(;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;t[0]=e.pageX-s,t[1]=e.pageY-r}else e=window.event,t[0]=e.x,t[1]=e.y;return t};class nd{constructor(e,t,i,s,r){this._scene=e;const o=t.pickController,n=t.cameraControl;let a;const l=[],A=new Float32Array(2);let h=-1,c=-1;const u=this._scene.canvas.canvas,p=i=>{let s;i&&i.worldPos&&(s=i.worldPos);const r=i?i.entity.aabb:e.aabb;if(s){const i=e.camera;d.subVec3(i.eye,i.look,[]),t.cameraFlight.flyTo({aabb:r})}else t.cameraFlight.flyTo({aabb:r})};u.addEventListener("touchstart",this._canvasTouchStartHandler=e=>{if(!i.active||!i.pointerEnabled)return;null!==s.longTouchTimeout&&(clearTimeout(s.longTouchTimeout),s.longTouchTimeout=null);const r=e.touches,o=e.changedTouches;if(a=Date.now(),1===r.length&&1===o.length){h=a,od(r[0],A);const o=A[0],n=A[1],l=r[0].pageX,c=r[0].pageY;s.longTouchTimeout=setTimeout((()=>{t.cameraControl.fire("rightClick",{pagePos:[Math.round(l),Math.round(c)],canvasPos:[Math.round(o),Math.round(n)],event:e},!0),s.longTouchTimeout=null}),i.longTapTimeout)}else h=-1;for(;l.length<r.length;)l.push(new Float32Array(2));for(let e=0,t=r.length;e<t;++e)od(r[e],l[e]);l.length=r.length},{passive:!0}),u.addEventListener("touchend",this._canvasTouchEndHandler=e=>{if(!i.active||!i.pointerEnabled)return;const t=Date.now(),r=e.touches,a=e.changedTouches,u=n.hasSubs("pickedSurface");null!==s.longTouchTimeout&&(clearTimeout(s.longTouchTimeout),s.longTouchTimeout=null),0===r.length&&1===a.length&&h>-1&&t-h<150&&(c>-1&&h-c<325?(od(a[0],o.pickCursorPos),o.schedulePickEntity=!0,o.schedulePickSurface=u,o.update(),o.pickResult?(o.pickResult.touchInput=!0,n.fire("doublePicked",o.pickResult),o.pickedSurface&&n.fire("doublePickedSurface",o.pickResult),i.doublePickFlyTo&&p(o.pickResult)):(n.fire("doublePickedNothing"),i.doublePickFlyTo&&p()),c=-1):d.distVec2(l[0],A)<4&&(od(a[0],o.pickCursorPos),o.schedulePickEntity=!0,o.schedulePickSurface=u,o.update(),o.pickResult?(o.pickResult.touchInput=!0,n.fire("picked",o.pickResult),o.pickedSurface&&n.fire("pickedSurface",o.pickResult)):n.fire("pickedNothing"),c=t),h=-1),l.length=r.length;for(let e=0,t=r.length;e<t;++e)l[e][0]=r[e].pageX,l[e][1]=r[e].pageY},{passive:!0})}reset(){}destroy(){const e=this._scene.canvas.canvas;e.removeEventListener("touchstart",this._canvasTouchStartHandler),e.removeEventListener("touchend",this._canvasTouchEndHandler)}}class ad extends R{constructor(e,t={}){super(e,t),this.PAN_LEFT=0,this.PAN_RIGHT=1,this.PAN_UP=2,this.PAN_DOWN=3,this.PAN_FORWARDS=4,this.PAN_BACKWARDS=5,this.ROTATE_X_POS=6,this.ROTATE_X_NEG=7,this.ROTATE_Y_POS=8,this.ROTATE_Y_NEG=9,this.DOLLY_FORWARDS=10,this.DOLLY_BACKWARDS=11,this.AXIS_VIEW_RIGHT=12,this.AXIS_VIEW_BACK=13,this.AXIS_VIEW_LEFT=14,this.AXIS_VIEW_FRONT=15,this.AXIS_VIEW_TOP=16,this.AXIS_VIEW_BOTTOM=17,this._keyMap={},this.scene.canvas.canvas.oncontextmenu=e=>{e.preventDefault()},this._configs={longTapTimeout:600,longTapRadius:5,active:!0,keyboardLayout:"qwerty",navMode:"orbit",planView:!1,firstPerson:!1,followPointer:!0,doublePickFlyTo:!0,panRightClick:!0,showPivot:!1,pointerEnabled:!0,constrainVertical:!1,smartPivot:!1,doubleClickTimeFrame:250,snapToVertex:true,snapToEdge:true,snapRadius:30,dragRotationRate:360,keyboardRotationRate:90,rotationInertia:0,keyboardPanRate:1,touchPanRate:1,panInertia:.5,keyboardDollyRate:10,mouseWheelDollyRate:100,touchDollyRate:.2,dollyInertia:0,dollyProximityThreshold:30,dollyMinSpeed:.04},this._states={pointerCanvasPos:d.vec2(),mouseover:!1,followPointerDirty:!0,mouseDownClientX:0,mouseDownClientY:0,mouseDownCursorX:0,mouseDownCursorY:0,touchStartTime:null,activeTouches:[],tapStartPos:d.vec2(),tapStartTime:-1,lastTapTime:-1,longTouchTimeout:null},this._updates={rotateDeltaX:0,rotateDeltaY:0,panDeltaX:0,panDeltaY:0,panDeltaZ:0,dollyDelta:0};const i=this.scene;this._controllers={cameraControl:this,pickController:new Vu(this,this._configs),pivotController:new Qu(i,this._configs),panController:new Tu(i),cameraFlight:new $c(this,{duration:.5})},this._handlers=[new td(this.scene,this._controllers,this._configs,this._states,this._updates),new rd(this.scene,this._controllers,this._configs,this._states,this._updates),new ju(this.scene,this._controllers,this._configs,this._states,this._updates),new Yu(this.scene,this._controllers,this._configs,this._states,this._updates),new Zu(this.scene,this._controllers,this._configs,this._states,this._updates),new nd(this.scene,this._controllers,this._configs,this._states,this._updates),new qu(this.scene,this._controllers,this._configs,this._states,this._updates)],this._cameraUpdater=new ed(this.scene,this._controllers,this._configs,this._states,this._updates),this.navMode=t.navMode,t.planView&&(this.planView=t.planView),this.constrainVertical=t.constrainVertical,t.keyboardLayout?this.keyboardLayout=t.keyboardLayout:this.keyMap=t.keyMap,this.doublePickFlyTo=t.doublePickFlyTo,this.panRightClick=t.panRightClick,this.active=t.active,this.followPointer=t.followPointer,this.rotationInertia=t.rotationInertia,this.keyboardPanRate=t.keyboardPanRate,this.touchPanRate=t.touchPanRate,this.keyboardRotationRate=t.keyboardRotationRate,this.dragRotationRate=t.dragRotationRate,this.touchDollyRate=t.touchDollyRate,this.dollyInertia=t.dollyInertia,this.dollyProximityThreshold=t.dollyProximityThreshold,this.dollyMinSpeed=t.dollyMinSpeed,this.panInertia=t.panInertia,this.pointerEnabled=!0,this.keyboardDollyRate=t.keyboardDollyRate,this.mouseWheelDollyRate=t.mouseWheelDollyRate}set keyMap(e){if(e=e||"qwerty",y.isString(e)){const t=this.scene.input,i={};switch(e){default:this.error("Unsupported value for 'keyMap': "+e+" defaulting to 'qwerty'");case"qwerty":i[this.PAN_LEFT]=[t.KEY_A],i[this.PAN_RIGHT]=[t.KEY_D],i[this.PAN_UP]=[t.KEY_Z],i[this.PAN_DOWN]=[t.KEY_X],i[this.PAN_BACKWARDS]=[],i[this.PAN_FORWARDS]=[],i[this.DOLLY_FORWARDS]=[t.KEY_W,t.KEY_ADD],i[this.DOLLY_BACKWARDS]=[t.KEY_S,t.KEY_SUBTRACT],i[this.ROTATE_X_POS]=[t.KEY_DOWN_ARROW],i[this.ROTATE_X_NEG]=[t.KEY_UP_ARROW],i[this.ROTATE_Y_POS]=[t.KEY_Q,t.KEY_LEFT_ARROW],i[this.ROTATE_Y_NEG]=[t.KEY_E,t.KEY_RIGHT_ARROW],i[this.AXIS_VIEW_RIGHT]=[t.KEY_NUM_1],i[this.AXIS_VIEW_BACK]=[t.KEY_NUM_2],i[this.AXIS_VIEW_LEFT]=[t.KEY_NUM_3],i[this.AXIS_VIEW_FRONT]=[t.KEY_NUM_4],i[this.AXIS_VIEW_TOP]=[t.KEY_NUM_5],i[this.AXIS_VIEW_BOTTOM]=[t.KEY_NUM_6];break;case"azerty":i[this.PAN_LEFT]=[t.KEY_Q],i[this.PAN_RIGHT]=[t.KEY_D],i[this.PAN_UP]=[t.KEY_W],i[this.PAN_DOWN]=[t.KEY_X],i[this.PAN_BACKWARDS]=[],i[this.PAN_FORWARDS]=[],i[this.DOLLY_FORWARDS]=[t.KEY_Z,t.KEY_ADD],i[this.DOLLY_BACKWARDS]=[t.KEY_S,t.KEY_SUBTRACT],i[this.ROTATE_X_POS]=[t.KEY_DOWN_ARROW],i[this.ROTATE_X_NEG]=[t.KEY_UP_ARROW],i[this.ROTATE_Y_POS]=[t.KEY_A,t.KEY_LEFT_ARROW],i[this.ROTATE_Y_NEG]=[t.KEY_E,t.KEY_RIGHT_ARROW],i[this.AXIS_VIEW_RIGHT]=[t.KEY_NUM_1],i[this.AXIS_VIEW_BACK]=[t.KEY_NUM_2],i[this.AXIS_VIEW_LEFT]=[t.KEY_NUM_3],i[this.AXIS_VIEW_FRONT]=[t.KEY_NUM_4],i[this.AXIS_VIEW_TOP]=[t.KEY_NUM_5],i[this.AXIS_VIEW_BOTTOM]=[t.KEY_NUM_6]}this._keyMap=i}else{const t=e;this._keyMap=t}}get keyMap(){return this._keyMap}_isKeyDownForAction(e,t){const i=this._keyMap[e];if(!i)return!1;t||(t=this.scene.input.keyDown);for(let e=0,s=i.length;e<s;e++){if(t[i[e]])return!0}return!1}set pivotElement(e){this._controllers.pivotController.setPivotElement(e)}set active(e){e=!1!==e,this._configs.active=e,this._handlers[1]._active=e,this._handlers[5]._active=e}get active(){return this._configs.active}set snapToVertex(e){this._configs.snapToVertex=!!e}get snapToVertex(){return this._configs.snapToVertex}set snapToEdge(e){this._configs.snapToEdge=!!e}get snapToEdge(){return this._configs.snapToEdge}set snapRadius(e){e=e||30,this._configs.snapRadius=e}get snapRadius(){return this._configs.snapRadius}set navMode(e){"firstPerson"!==(e=e||"orbit")&&"orbit"!==e&&"planView"!==e&&(this.error("Unsupported value for navMode: "+e+" - supported values are 'orbit', 'firstPerson' and 'planView' - defaulting to 'orbit'"),e="orbit"),this._configs.firstPerson="firstPerson"===e,this._configs.planView="planView"===e,(this._configs.firstPerson||this._configs.planView)&&(this._controllers.pivotController.hidePivot(),this._controllers.pivotController.endPivot()),this._configs.navMode=e}get navMode(){return this._configs.navMode}set pointerEnabled(e){this._reset(),this._configs.pointerEnabled=!!e}_reset(){for(let e=0,t=this._handlers.length;e<t;e++){const t=this._handlers[e];t.reset&&t.reset()}this._updates.panDeltaX=0,this._updates.panDeltaY=0,this._updates.rotateDeltaX=0,this._updates.rotateDeltaY=0,this._updates.dolyDelta=0}get pointerEnabled(){return this._configs.pointerEnabled}set followPointer(e){this._configs.followPointer=!1!==e}get followPointer(){return this._configs.followPointer}set pivotPos(e){this._controllers.pivotController.setPivotPos(e)}get pivotPos(){return this._controllers.pivotController.getPivotPos()}set dollyToPointer(e){this.warn("dollyToPointer property is deprecated - replaced with followPointer"),this.followPointer=e}get dollyToPointer(){return this.warn("dollyToPointer property is deprecated - replaced with followPointer"),this.followPointer}set panToPointer(e){this.warn("panToPointer property is deprecated - replaced with followPointer")}get panToPointer(){return this.warn("panToPointer property is deprecated - replaced with followPointer"),!1}set planView(e){this._configs.planView=!!e,this._configs.firstPerson=!1,this._configs.planView&&(this._controllers.pivotController.hidePivot(),this._controllers.pivotController.endPivot()),this.warn("planView property is deprecated - replaced with navMode")}get planView(){return this.warn("planView property is deprecated - replaced with navMode"),this._configs.planView}set firstPerson(e){this.warn("firstPerson property is deprecated - replaced with navMode"),this._configs.firstPerson=!!e,this._configs.planView=!1,this._configs.firstPerson&&(this._controllers.pivotController.hidePivot(),this._controllers.pivotController.endPivot())}get firstPerson(){return this.warn("firstPerson property is deprecated - replaced with navMode"),this._configs.firstPerson}set constrainVertical(e){this._configs.constrainVertical=!!e}get constrainVertical(){return this._configs.constrainVertical}set doublePickFlyTo(e){this._configs.doublePickFlyTo=!1!==e}get doublePickFlyTo(){return this._configs.doublePickFlyTo}set panRightClick(e){this._configs.panRightClick=!1!==e}get panRightClick(){return this._configs.panRightClick}set rotationInertia(e){this._configs.rotationInertia=null!=e?e:0}get rotationInertia(){return this._configs.rotationInertia}set keyboardPanRate(e){this._configs.keyboardPanRate=null!=e?e:5}set touchPanRate(e){this._configs.touchPanRate=null!=e?e:1}get touchPanRate(){return this._configs.touchPanRate}get keyboardPanRate(){return this._configs.keyboardPanRate}set keyboardRotationRate(e){this._configs.keyboardRotationRate=null!=e?e:90}get keyboardRotationRate(){return this._configs.keyboardRotationRate}set dragRotationRate(e){this._configs.dragRotationRate=null!=e?e:360}get dragRotationRate(){return this._configs.dragRotationRate}set keyboardDollyRate(e){this._configs.keyboardDollyRate=null!=e?e:15}get keyboardDollyRate(){return this._configs.keyboardDollyRate}set touchDollyRate(e){this._configs.touchDollyRate=null!=e?e:.2}get touchDollyRate(){return this._configs.touchDollyRate}set mouseWheelDollyRate(e){this._configs.mouseWheelDollyRate=null!=e?e:100}get mouseWheelDollyRate(){return this._configs.mouseWheelDollyRate}set dollyInertia(e){this._configs.dollyInertia=null!=e?e:0}get dollyInertia(){return this._configs.dollyInertia}set dollyProximityThreshold(e){this._configs.dollyProximityThreshold=null!=e?e:35}get dollyProximityThreshold(){return this._configs.dollyProximityThreshold}set dollyMinSpeed(e){this._configs.dollyMinSpeed=null!=e?e:.04}get dollyMinSpeed(){return this._configs.dollyMinSpeed}set panInertia(e){this._configs.panInertia=null!=e?e:.5}get panInertia(){return this._configs.panInertia}set keyboardLayout(e){"qwerty"!==(e=e||"qwerty")&&"azerty"!==e&&(this.error("Unsupported value for keyboardLayout - defaulting to 'qwerty'"),e="qwerty"),this._configs.keyboardLayout=e,this.keyMap=this._configs.keyboardLayout}get keyboardLayout(){return this._configs.keyboardLayout}enablePivotSphere(e={}){this._controllers.pivotController.enablePivotSphere(e)}disablePivotSphere(){this._controllers.pivotController.disablePivotSphere()}set smartPivot(e){this._configs.smartPivot=!1!==e}get smartPivot(){return this._configs.smartPivot}set doubleClickTimeFrame(e){this._configs.doubleClickTimeFrame=null!=e?e:250}get doubleClickTimeFrame(){return this._configs.doubleClickTimeFrame}destroy(){this._destroyHandlers(),this._destroyControllers(),this._cameraUpdater.destroy(),super.destroy()}_destroyHandlers(){for(let e=0,t=this._handlers.length;e<t;e++){const t=this._handlers[e];t.destroy&&t.destroy()}}_destroyControllers(){for(let e=0,t=this._controllers.length;e<t;e++){const t=this._controllers[e];t.destroy&&t.destroy()}}}class ld{constructor(e,t,i,s,r){this.name=e,this.type=i,this.value=t,this.valueType=s,this.description=r}}class Ad{constructor(e){if(this.id=e.id,this.originalSystemId=e.originalSystemId,this.metaModels=[],this.name=e.name,this.type=e.type,this.properties=[],e.properties){const t=e.properties;for(let e=0,i=t.length;e<i;e++){const i=t[e];this.properties.push(new ld(i.name,i.value,i.type,i.valueType,i.description))}}}}class hd{constructor(e){this.metaModels=[],this.id=e.id,this.parentId=e.parentId,this.parent=null,this.originalSystemId=e.originalSystemId,this.name=e.name,this.type=e.type,this.propertySetIds=e.propertySetIds,this.propertySets=[],this.attributes=e.attributes||{},void 0!==e.external&&null!==e.external&&(this.external=e.external)}get metaModel(){return 1==this.metaModels.length?this.metaModels[0]:null}getObjectIDsInSubtree(){const e=[];return function t(i){if(!i)return;e.push(i.id);const s=i.children;if(s)for(var r=0,o=s.length;r<o;r++)t(s[r])}(this),e}withMetaObjectsInSubtree(e){!function t(i){if(!i)return;e(i);const s=i.children;if(s)for(var r=0,o=s.length;r<o;r++)t(s[r])}(this)}getObjectIDsInSubtreeByType(e){const t={};for(var i=0,s=e.length;i<s;i++)t[e[i]]=e[i];const r=[];return function e(i){if(!i)return;t[i.type]&&r.push(i.id);const s=i.children;if(s)for(var o=0,n=s.length;o<n;o++)e(s[o])}(this),r}getJSON(){var e={id:this.id,type:this.type,name:this.name};return this.parent&&(e.parent=this.parent.id),e}}class cd{constructor(e){this.id=e.id,this.projectId=e.projectId,this.revisionId=e.revisionId,this.author=e.author,this.createdAt=e.createdAt,this.creatingApplication=e.creatingApplication,this.schema=e.schema,this.metaScene=e.metaScene,this.propertySets=[],this.rootMetaObjects=[],this.metaObjects=[],this.graph=e.graph||{},this.metaScene.metaModels[this.id]=this,this.finalized=!1}get rootMetaObject(){return 1==this.rootMetaObjects.length?this.rootMetaObjects[0]:null}loadData(e,t={}){if(this.finalized)throw"MetaScene already finalized - can't add more data";this._globalizeIDs(e,t);const i=this.metaScene,s=e.properties;if(e.propertySets)for(let t=0,r=e.propertySets.length;t<r;t++){const r=e.propertySets[t];r.properties||(r.properties=[]);let o=i.propertySets[r.id];o||(s&&this._decompressProperties(s,r.properties),o=new Ad({id:r.id,originalSystemId:r.originalSystemId||r.id,type:r.type,name:r.name,properties:r.properties}),i.propertySets[o.id]=o),o.metaModels.push(this),this.propertySets.push(o)}if(e.metaObjects)for(let t=0,s=e.metaObjects.length;t<s;t++){const s=e.metaObjects[t],r=s.id;let o=i.metaObjects[r];if(!o){const e=s.type,t=s.originalSystemId,i=s.propertySets||s.propertySetIds;o=new hd({id:r,originalSystemId:t,parentId:s.parent,type:e,name:s.name,attributes:s.attributes,propertySetIds:i,external:s.external}),this.metaScene.metaObjects[r]=o,o.metaModels=[]}this.metaObjects.push(o),s.parent||(this.rootMetaObjects.push(o),i.rootMetaObjects[r]=o)}}_decompressProperties(e,t){for(let i=0,s=t.length;i<s;i++){const s=t[i];if(Number.isInteger(s)){const r=e[s];r&&(t[i]=r)}}}finalize(){if(this.finalized)throw"MetaScene already finalized - can't re-finalize";const e=this.metaScene;for(let t in e.metaObjects){const i=e.metaObjects[t];if(i.children&&(i.children=[]),i.propertySets&&(i.propertySets=[]),i.propertySetIds)for(let t=0,s=i.propertySetIds.length;t<s;t++){const s=i.propertySetIds[t],r=e.propertySets[s];i.propertySets.push(r)}}for(let t in e.metaObjects){const i=e.metaObjects[t];if(i.parentId){const t=e.metaObjects[i.parentId];t&&(i.parent=t,(t.children||(t.children=[])).push(i))}}for(let t in e.metaObjects){e.metaObjects[t].metaModels=[]}for(let t in e.metaModels){const i=e.metaModels[t];for(let e=0,t=i.metaObjects.length;e<t;e++){i.metaObjects[e].metaModels.push(i)}}e.metaObjectsByType={};for(let t in e.metaObjects){const i=e.metaObjects[t],s=i.type;(e.metaObjectsByType[s]||(e.metaObjectsByType[s]={}))[t]=i}this.finalized=!0,this.metaScene.fire("metaModelCreated",this.id)}getJSON(){const e={id:this.id,projectId:this.projectId,author:this.author,createdAt:this.createdAt,schema:this.schema,creatingApplication:this.creatingApplication,metaObjects:[],propertySets:[]};for(let t=0,i=this.metaObjects.length;t<i;t++){const i=this.metaObjects[t],s={id:i.id,originalSystemId:i.originalSystemId,extId:i.extId,type:i.type,name:i.name};i.parent&&(s.parent=i.parent.id),i.attributes&&(s.attributes=i.attributes),i.propertySetIds&&(s.propertySetIds=i.propertySetIds),e.metaObjects.push(s)}for(let t=0,i=this.propertySets.length;t<i;t++){const i=this.propertySets[t],s={id:i.id,originalSystemId:i.originalSystemId,extId:i.extId,type:i.type,name:i.name,propertyies:[]};for(let e=0,t=i.properties.length;e<t;e++){const t=i.properties[e],r={id:t.id,description:t.description,type:t.type,name:t.name,value:t.value,valueType:t.valueType};s.properties.push(r)}e.propertySets.push(s)}return e}_globalizeIDs(e,t){const i=!!t.globalizeObjectIds;if(e.metaObjects)for(let t=0,s=e.metaObjects.length;t<s;t++){const s=e.metaObjects[t];if(s.originalSystemId=s.id,s.parent&&(s.originalParentSystemId=s.parent),i&&(s.id=d.globalizeObjectId(this.id,s.id),s.parent&&(s.parent=d.globalizeObjectId(this.id,s.parent))),i){const e=s.propertySetIds;if(e){const t=[];for(let i=0,s=e.length;i<s;i++)t.push(d.globalizeObjectId(this.id,e[i]));s.propertySetIds=t,s.originalSystemPropertySetIds=e}}else s.originalSystemPropertySetIds=s.propertySetIds}if(e.propertySets)for(let t=0,s=e.propertySets.length;t<s;t++){const s=e.propertySets[t];s.originalSystemId=s.id,i&&(s.id=d.globalizeObjectId(this.id,s.id))}}}class ud{constructor(e,t){this.viewer=e,this.scene=t,this.metaModels={},this.propertySets={},this.metaObjects={},this.metaObjectsByType={},this.rootMetaObjects={},this._eventSubs={}}on(e,t){let i=this._eventSubs[e];i||(i=[],this._eventSubs[e]=i),i.push(t)}fire(e,t){const i=this._eventSubs[e];if(i)for(let e=0,s=i.length;e<s;e++)i[e](t)}off(e){}createMetaModel(e,t,i={}){const s=new cd({metaScene:this,id:e,projectId:t.projectId||"none",revisionId:t.revisionId||"none",author:t.author||"none",createdAt:t.createdAt||"none",creatingApplication:t.creatingApplication||"none",schema:t.schema||"none",propertySets:[]});return s.loadData(t),s.finalize(),s}destroyMetaModel(e){const t=this.metaModels[e];if(t){if(t.propertySets)for(let i=0,s=t.propertySets.length;i<s;i++){const s=t.propertySets[i];if(1===s.metaModels.length&&s.metaModels[0].id===e)delete this.propertySets[s.id];else{const t=[];for(let i=0,r=s.metaModels.length;i<r;i++)s.metaModels[i].id!==e&&t.push(s.metaModels[i]);s.metaModels=t}}if(t.metaObjects)for(let i=0,s=t.metaObjects.length;i<s;i++){const s=t.metaObjects[i];s.type;const r=s.id;1===s.metaModels.length&&s.metaModels[0].id===e&&(delete this.metaObjects[r],s.parent||delete this.rootMetaObjects[r])}for(let e in this.metaObjects){const t=this.metaObjects[e];if(t.children&&(t.children=[]),t.propertySets&&(t.propertySets=[]),t.propertySetIds)for(let e=0,i=t.propertySetIds.length;e<i;e++){const i=t.propertySetIds[e],s=this.propertySets[i];t.propertySets.push(s)}}this.metaObjectsByType={};for(let e in this.metaObjects){const t=this.metaObjects[e],i=t.type;t.children&&(t.children=null),(this.metaObjectsByType[i]||(this.metaObjectsByType[i]={}))[e]=t}for(let e in this.metaObjects){const t=this.metaObjects[e];if(t.parentId){const e=this.metaObjects[t.parentId];e&&(t.parent=e,(e.children||(e.children=[])).push(t))}}delete this.metaModels[e];for(let e in this.metaObjects){this.metaObjects[e].metaModels=[]}for(let e in this.metaModels){const t=this.metaModels[e];for(let e=0,i=t.metaObjects.length;e<i;e++){t.metaObjects[e].metaModels.push(t)}}this.fire("metaModelDestroyed",e)}}getObjectIDsByType(e){const t=this.metaObjectsByType[e];return t?Object.keys(t):[]}getObjectIDsInSubtree(e,t,i){const s=[],r=this.metaObjects[e],o=t&&t.length>0?dd(t):null,n=i&&i.length>0?dd(i):null,a=e=>{if(!e)return;var t=!0;(n&&n[e.type]||o&&!o[e.type])&&(t=!1),t&&s.push(e.id);const i=e.children;if(i)for(var r=0,l=i.length;r<l;r++)a(i[r])};return a(r),s}withMetaObjectsInSubtree(e,t){const i=this.metaObjects[e];i&&i.withMetaObjectsInSubtree(t)}}function dd(e){const t={};for(var i=0,s=e.length;i<s;i++)t[e[i]]=!0;return t}
18
18
  /*!
19
19
  * html2canvas 1.4.1 <https://html2canvas.hertzen.com>
20
20
  * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
@@ -34,4 +34,4 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
34
34
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
35
35
  PERFORMANCE OF THIS SOFTWARE.
36
36
  ***************************************************************************** */var pd=function(e,t){return pd=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])},pd(e,t)};function fd(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function i(){this.constructor=e}pd(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}var gd=function(){return gd=Object.assign||function(e){for(var t,i=1,s=arguments.length;i<s;i++)for(var r in t=arguments[i])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},gd.apply(this,arguments)};function md(e,t,i,s){return new(i||(i=Promise))((function(r,o){function n(e){try{l(s.next(e))}catch(e){o(e)}}function a(e){try{l(s.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(n,a)}l((s=s.apply(e,t||[])).next())}))}function _d(e,t){var i,s,r,o,n={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(i)throw new TypeError("Generator is already executing.");for(;n;)try{if(i=1,s&&(r=2&o[0]?s.return:o[0]?s.throw||((r=s.return)&&r.call(s),0):s.next)&&!(r=r.call(s,o[1])).done)return r;switch(s=0,r&&(o=[2&o[0],r.value]),o[0]){case 0:case 1:r=o;break;case 4:return n.label++,{value:o[1],done:!1};case 5:n.label++,s=o[1],o=[0];continue;case 7:o=n.ops.pop(),n.trys.pop();continue;default:if(!(r=n.trys,(r=r.length>0&&r[r.length-1])||6!==o[0]&&2!==o[0])){n=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]<r[3])){n.label=o[1];break}if(6===o[0]&&n.label<r[1]){n.label=r[1],r=o;break}if(r&&n.label<r[2]){n.label=r[2],n.ops.push(o);break}r[2]&&n.ops.pop(),n.trys.pop();continue}o=t.call(e,n)}catch(e){o=[6,e],s=0}finally{i=r=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,a])}}}function vd(e,t,i){if(i||2===arguments.length)for(var s,r=0,o=t.length;r<o;r++)!s&&r in t||(s||(s=Array.prototype.slice.call(t,0,r)),s[r]=t[r]);return e.concat(s||t)}for(var bd=function(){function e(e,t,i,s){this.left=e,this.top=t,this.width=i,this.height=s}return e.prototype.add=function(t,i,s,r){return new e(this.left+t,this.top+i,this.width+s,this.height+r)},e.fromClientRect=function(t,i){return new e(i.left+t.windowBounds.left,i.top+t.windowBounds.top,i.width,i.height)},e.fromDOMRectList=function(t,i){var s=Array.from(i).find((function(e){return 0!==e.width}));return s?new e(s.left+t.windowBounds.left,s.top+t.windowBounds.top,s.width,s.height):e.EMPTY},e.EMPTY=new e(0,0,0,0),e}(),yd=function(e,t){return bd.fromClientRect(e,t.getBoundingClientRect())},Bd=function(e){for(var t=[],i=0,s=e.length;i<s;){var r=e.charCodeAt(i++);if(r>=55296&&r<=56319&&i<s){var o=e.charCodeAt(i++);56320==(64512&o)?t.push(((1023&r)<<10)+(1023&o)+65536):(t.push(r),i--)}else t.push(r)}return t},wd=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];if(String.fromCodePoint)return String.fromCodePoint.apply(String,e);var i=e.length;if(!i)return"";for(var s=[],r=-1,o="";++r<i;){var n=e[r];n<=65535?s.push(n):(n-=65536,s.push(55296+(n>>10),n%1024+56320)),(r+1===i||s.length>16384)&&(o+=String.fromCharCode.apply(String,s),s.length=0)}return o},xd="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Pd="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Cd=0;Cd<xd.length;Cd++)Pd[xd.charCodeAt(Cd)]=Cd;for(var Md="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Fd="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Ed=0;Ed<Md.length;Ed++)Fd[Md.charCodeAt(Ed)]=Ed;for(var Id=function(e,t,i){return e.slice?e.slice(t,i):new Uint16Array(Array.prototype.slice.call(e,t,i))},Dd=function(){function e(e,t,i,s,r,o){this.initialValue=e,this.errorValue=t,this.highStart=i,this.highValueIndex=s,this.index=r,this.data=o}return e.prototype.get=function(e){var t;if(e>=0){if(e<55296||e>56319&&e<=65535)return t=((t=this.index[e>>5])<<2)+(31&e),this.data[t];if(e<=65535)return t=((t=this.index[2048+(e-55296>>5)])<<2)+(31&e),this.data[t];if(e<this.highStart)return t=2080+(e>>11),t=this.index[t],t+=e>>5&63,t=((t=this.index[t])<<2)+(31&e),this.data[t];if(e<=1114111)return this.data[this.highValueIndex]}return this.errorValue},e}(),Sd="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Td="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Rd=0;Rd<Sd.length;Rd++)Td[Sd.charCodeAt(Rd)]=Rd;var Ld=10,Ud=13,kd=15,Od=17,Nd=18,Qd=19,Vd=20,Hd=21,jd=22,Gd=24,zd=25,Wd=26,Kd=27,Xd=28,Jd=30,Yd=32,Zd=33,qd=34,$d=35,ep=37,tp=38,ip=39,sp=40,rp=42,op=[9001,65288],np=function(e,t){var i,s,r,o=function(e){var t,i,s,r,o,n=.75*e.length,a=e.length,l=0;"="===e[e.length-1]&&(n--,"="===e[e.length-2]&&n--);var A="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&void 0!==Uint8Array.prototype.slice?new ArrayBuffer(n):new Array(n),h=Array.isArray(A)?A:new Uint8Array(A);for(t=0;t<a;t+=4)i=Fd[e.charCodeAt(t)],s=Fd[e.charCodeAt(t+1)],r=Fd[e.charCodeAt(t+2)],o=Fd[e.charCodeAt(t+3)],h[l++]=i<<2|s>>4,h[l++]=(15&s)<<4|r>>2,h[l++]=(3&r)<<6|63&o;return A}(e),n=Array.isArray(o)?function(e){for(var t=e.length,i=[],s=0;s<t;s+=4)i.push(e[s+3]<<24|e[s+2]<<16|e[s+1]<<8|e[s]);return i}(o):new Uint32Array(o),a=Array.isArray(o)?function(e){for(var t=e.length,i=[],s=0;s<t;s+=2)i.push(e[s+1]<<8|e[s]);return i}(o):new Uint16Array(o),l=Id(a,12,n[4]/2),A=2===n[5]?Id(a,(24+n[4])/2):(i=n,s=Math.ceil((24+n[4])/4),i.slice?i.slice(s,r):new Uint32Array(Array.prototype.slice.call(i,s,r)));return new Dd(n[0],n[1],n[2],n[3],l,A)}("KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA=="),ap=[Jd,36],lp=[1,2,3,5],Ap=[Ld,8],hp=[Kd,Wd],cp=lp.concat(Ap),up=[tp,ip,sp,qd,$d],dp=[kd,Ud],pp=function(e,t,i,s){var r=s[i];if(Array.isArray(e)?-1!==e.indexOf(r):e===r)for(var o=i;o<=s.length;){if((l=s[++o])===t)return!0;if(l!==Ld)break}if(r===Ld)for(o=i;o>0;){var n=s[--o];if(Array.isArray(e)?-1!==e.indexOf(n):e===n)for(var a=i;a<=s.length;){var l;if((l=s[++a])===t)return!0;if(l!==Ld)break}if(n!==Ld)break}return!1},fp=function(e,t){for(var i=e;i>=0;){var s=t[i];if(s!==Ld)return s;i--}return 0},gp=function(e,t,i,s,r){if(0===i[s])return"×";var o=s-1;if(Array.isArray(r)&&!0===r[o])return"×";var n=o-1,a=o+1,l=t[o],A=n>=0?t[n]:0,h=t[a];if(2===l&&3===h)return"×";if(-1!==lp.indexOf(l))return"!";if(-1!==lp.indexOf(h))return"×";if(-1!==Ap.indexOf(h))return"×";if(8===fp(o,t))return"÷";if(11===np.get(e[o]))return"×";if((l===Yd||l===Zd)&&11===np.get(e[a]))return"×";if(7===l||7===h)return"×";if(9===l)return"×";if(-1===[Ld,Ud,kd].indexOf(l)&&9===h)return"×";if(-1!==[Od,Nd,Qd,Gd,Xd].indexOf(h))return"×";if(fp(o,t)===jd)return"×";if(pp(23,jd,o,t))return"×";if(pp([Od,Nd],Hd,o,t))return"×";if(pp(12,12,o,t))return"×";if(l===Ld)return"÷";if(23===l||23===h)return"×";if(16===h||16===l)return"÷";if(-1!==[Ud,kd,Hd].indexOf(h)||14===l)return"×";if(36===A&&-1!==dp.indexOf(l))return"×";if(l===Xd&&36===h)return"×";if(h===Vd)return"×";if(-1!==ap.indexOf(h)&&l===zd||-1!==ap.indexOf(l)&&h===zd)return"×";if(l===Kd&&-1!==[ep,Yd,Zd].indexOf(h)||-1!==[ep,Yd,Zd].indexOf(l)&&h===Wd)return"×";if(-1!==ap.indexOf(l)&&-1!==hp.indexOf(h)||-1!==hp.indexOf(l)&&-1!==ap.indexOf(h))return"×";if(-1!==[Kd,Wd].indexOf(l)&&(h===zd||-1!==[jd,kd].indexOf(h)&&t[a+1]===zd)||-1!==[jd,kd].indexOf(l)&&h===zd||l===zd&&-1!==[zd,Xd,Gd].indexOf(h))return"×";if(-1!==[zd,Xd,Gd,Od,Nd].indexOf(h))for(var c=o;c>=0;){if((u=t[c])===zd)return"×";if(-1===[Xd,Gd].indexOf(u))break;c--}if(-1!==[Kd,Wd].indexOf(h))for(c=-1!==[Od,Nd].indexOf(l)?n:o;c>=0;){var u;if((u=t[c])===zd)return"×";if(-1===[Xd,Gd].indexOf(u))break;c--}if(tp===l&&-1!==[tp,ip,qd,$d].indexOf(h)||-1!==[ip,qd].indexOf(l)&&-1!==[ip,sp].indexOf(h)||-1!==[sp,$d].indexOf(l)&&h===sp)return"×";if(-1!==up.indexOf(l)&&-1!==[Vd,Wd].indexOf(h)||-1!==up.indexOf(h)&&l===Kd)return"×";if(-1!==ap.indexOf(l)&&-1!==ap.indexOf(h))return"×";if(l===Gd&&-1!==ap.indexOf(h))return"×";if(-1!==ap.concat(zd).indexOf(l)&&h===jd&&-1===op.indexOf(e[a])||-1!==ap.concat(zd).indexOf(h)&&l===Nd)return"×";if(41===l&&41===h){for(var d=i[o],p=1;d>0&&41===t[--d];)p++;if(p%2!=0)return"×"}return l===Yd&&h===Zd?"×":"÷"},mp=function(e,t){t||(t={lineBreak:"normal",wordBreak:"normal"});var i=function(e,t){void 0===t&&(t="strict");var i=[],s=[],r=[];return e.forEach((function(e,o){var n=np.get(e);if(n>50?(r.push(!0),n-=50):r.push(!1),-1!==["normal","auto","loose"].indexOf(t)&&-1!==[8208,8211,12316,12448].indexOf(e))return s.push(o),i.push(16);if(4===n||11===n){if(0===o)return s.push(o),i.push(Jd);var a=i[o-1];return-1===cp.indexOf(a)?(s.push(s[o-1]),i.push(a)):(s.push(o),i.push(Jd))}return s.push(o),31===n?i.push("strict"===t?Hd:ep):n===rp||29===n?i.push(Jd):43===n?e>=131072&&e<=196605||e>=196608&&e<=262141?i.push(ep):i.push(Jd):void i.push(n)})),[s,i,r]}(e,t.lineBreak),s=i[0],r=i[1],o=i[2];"break-all"!==t.wordBreak&&"break-word"!==t.wordBreak||(r=r.map((function(e){return-1!==[zd,Jd,rp].indexOf(e)?ep:e})));var n="keep-all"===t.wordBreak?o.map((function(t,i){return t&&e[i]>=19968&&e[i]<=40959})):void 0;return[s,r,n]},_p=function(){function e(e,t,i,s){this.codePoints=e,this.required="!"===t,this.start=i,this.end=s}return e.prototype.slice=function(){return wd.apply(void 0,this.codePoints.slice(this.start,this.end))},e}(),vp=function(e){return e>=48&&e<=57},bp=function(e){return vp(e)||e>=65&&e<=70||e>=97&&e<=102},yp=function(e){return 10===e||9===e||32===e},Bp=function(e){return function(e){return function(e){return e>=97&&e<=122}(e)||function(e){return e>=65&&e<=90}(e)}(e)||function(e){return e>=128}(e)||95===e},wp=function(e){return Bp(e)||vp(e)||45===e},xp=function(e){return e>=0&&e<=8||11===e||e>=14&&e<=31||127===e},Pp=function(e,t){return 92===e&&10!==t},Cp=function(e,t,i){return 45===e?Bp(t)||Pp(t,i):!!Bp(e)||!(92!==e||!Pp(e,t))},Mp=function(e,t,i){return 43===e||45===e?!!vp(t)||46===t&&vp(i):vp(46===e?t:e)},Fp=function(e){var t=0,i=1;43!==e[t]&&45!==e[t]||(45===e[t]&&(i=-1),t++);for(var s=[];vp(e[t]);)s.push(e[t++]);var r=s.length?parseInt(wd.apply(void 0,s),10):0;46===e[t]&&t++;for(var o=[];vp(e[t]);)o.push(e[t++]);var n=o.length,a=n?parseInt(wd.apply(void 0,o),10):0;69!==e[t]&&101!==e[t]||t++;var l=1;43!==e[t]&&45!==e[t]||(45===e[t]&&(l=-1),t++);for(var A=[];vp(e[t]);)A.push(e[t++]);var h=A.length?parseInt(wd.apply(void 0,A),10):0;return i*(r+a*Math.pow(10,-n))*Math.pow(10,l*h)},Ep={type:2},Ip={type:3},Dp={type:4},Sp={type:13},Tp={type:8},Rp={type:21},Lp={type:9},Up={type:10},kp={type:11},Op={type:12},Np={type:14},Qp={type:23},Vp={type:1},Hp={type:25},jp={type:24},Gp={type:26},zp={type:27},Wp={type:28},Kp={type:29},Xp={type:31},Jp={type:32},Yp=function(){function e(){this._value=[]}return e.prototype.write=function(e){this._value=this._value.concat(Bd(e))},e.prototype.read=function(){for(var e=[],t=this.consumeToken();t!==Jp;)e.push(t),t=this.consumeToken();return e},e.prototype.consumeToken=function(){var e=this.consumeCodePoint();switch(e){case 34:return this.consumeStringToken(34);case 35:var t=this.peekCodePoint(0),i=this.peekCodePoint(1),s=this.peekCodePoint(2);if(wp(t)||Pp(i,s)){var r=Cp(t,i,s)?2:1;return{type:5,value:this.consumeName(),flags:r}}break;case 36:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Sp;break;case 39:return this.consumeStringToken(39);case 40:return Ep;case 41:return Ip;case 42:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Np;break;case 43:if(Mp(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case 44:return Dp;case 45:var o=e,n=this.peekCodePoint(0),a=this.peekCodePoint(1);if(Mp(o,n,a))return this.reconsumeCodePoint(e),this.consumeNumericToken();if(Cp(o,n,a))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();if(45===n&&62===a)return this.consumeCodePoint(),this.consumeCodePoint(),jp;break;case 46:if(Mp(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case 47:if(42===this.peekCodePoint(0))for(this.consumeCodePoint();;){var l=this.consumeCodePoint();if(42===l&&47===(l=this.consumeCodePoint()))return this.consumeToken();if(-1===l)return this.consumeToken()}break;case 58:return Gp;case 59:return zp;case 60:if(33===this.peekCodePoint(0)&&45===this.peekCodePoint(1)&&45===this.peekCodePoint(2))return this.consumeCodePoint(),this.consumeCodePoint(),Hp;break;case 64:var A=this.peekCodePoint(0),h=this.peekCodePoint(1),c=this.peekCodePoint(2);if(Cp(A,h,c))return{type:7,value:this.consumeName()};break;case 91:return Wp;case 92:if(Pp(e,this.peekCodePoint(0)))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();break;case 93:return Kp;case 61:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Tp;break;case 123:return kp;case 125:return Op;case 117:case 85:var u=this.peekCodePoint(0),d=this.peekCodePoint(1);return 43!==u||!bp(d)&&63!==d||(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(e),this.consumeIdentLikeToken();case 124:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Lp;if(124===this.peekCodePoint(0))return this.consumeCodePoint(),Rp;break;case 126:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Up;break;case-1:return Jp}return yp(e)?(this.consumeWhiteSpace(),Xp):vp(e)?(this.reconsumeCodePoint(e),this.consumeNumericToken()):Bp(e)?(this.reconsumeCodePoint(e),this.consumeIdentLikeToken()):{type:6,value:wd(e)}},e.prototype.consumeCodePoint=function(){var e=this._value.shift();return void 0===e?-1:e},e.prototype.reconsumeCodePoint=function(e){this._value.unshift(e)},e.prototype.peekCodePoint=function(e){return e>=this._value.length?-1:this._value[e]},e.prototype.consumeUnicodeRangeToken=function(){for(var e=[],t=this.consumeCodePoint();bp(t)&&e.length<6;)e.push(t),t=this.consumeCodePoint();for(var i=!1;63===t&&e.length<6;)e.push(t),t=this.consumeCodePoint(),i=!0;if(i)return{type:30,start:parseInt(wd.apply(void 0,e.map((function(e){return 63===e?48:e}))),16),end:parseInt(wd.apply(void 0,e.map((function(e){return 63===e?70:e}))),16)};var s=parseInt(wd.apply(void 0,e),16);if(45===this.peekCodePoint(0)&&bp(this.peekCodePoint(1))){this.consumeCodePoint(),t=this.consumeCodePoint();for(var r=[];bp(t)&&r.length<6;)r.push(t),t=this.consumeCodePoint();return{type:30,start:s,end:parseInt(wd.apply(void 0,r),16)}}return{type:30,start:s,end:s}},e.prototype.consumeIdentLikeToken=function(){var e=this.consumeName();return"url"===e.toLowerCase()&&40===this.peekCodePoint(0)?(this.consumeCodePoint(),this.consumeUrlToken()):40===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:19,value:e}):{type:20,value:e}},e.prototype.consumeUrlToken=function(){var e=[];if(this.consumeWhiteSpace(),-1===this.peekCodePoint(0))return{type:22,value:""};var t=this.peekCodePoint(0);if(39===t||34===t){var i=this.consumeStringToken(this.consumeCodePoint());return 0===i.type&&(this.consumeWhiteSpace(),-1===this.peekCodePoint(0)||41===this.peekCodePoint(0))?(this.consumeCodePoint(),{type:22,value:i.value}):(this.consumeBadUrlRemnants(),Qp)}for(;;){var s=this.consumeCodePoint();if(-1===s||41===s)return{type:22,value:wd.apply(void 0,e)};if(yp(s))return this.consumeWhiteSpace(),-1===this.peekCodePoint(0)||41===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:22,value:wd.apply(void 0,e)}):(this.consumeBadUrlRemnants(),Qp);if(34===s||39===s||40===s||xp(s))return this.consumeBadUrlRemnants(),Qp;if(92===s){if(!Pp(s,this.peekCodePoint(0)))return this.consumeBadUrlRemnants(),Qp;e.push(this.consumeEscapedCodePoint())}else e.push(s)}},e.prototype.consumeWhiteSpace=function(){for(;yp(this.peekCodePoint(0));)this.consumeCodePoint()},e.prototype.consumeBadUrlRemnants=function(){for(;;){var e=this.consumeCodePoint();if(41===e||-1===e)return;Pp(e,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},e.prototype.consumeStringSlice=function(e){for(var t="";e>0;){var i=Math.min(5e4,e);t+=wd.apply(void 0,this._value.splice(0,i)),e-=i}return this._value.shift(),t},e.prototype.consumeStringToken=function(e){for(var t="",i=0;;){var s=this._value[i];if(-1===s||void 0===s||s===e)return{type:0,value:t+=this.consumeStringSlice(i)};if(10===s)return this._value.splice(0,i),Vp;if(92===s){var r=this._value[i+1];-1!==r&&void 0!==r&&(10===r?(t+=this.consumeStringSlice(i),i=-1,this._value.shift()):Pp(s,r)&&(t+=this.consumeStringSlice(i),t+=wd(this.consumeEscapedCodePoint()),i=-1))}i++}},e.prototype.consumeNumber=function(){var e=[],t=4,i=this.peekCodePoint(0);for(43!==i&&45!==i||e.push(this.consumeCodePoint());vp(this.peekCodePoint(0));)e.push(this.consumeCodePoint());i=this.peekCodePoint(0);var s=this.peekCodePoint(1);if(46===i&&vp(s))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),t=8;vp(this.peekCodePoint(0));)e.push(this.consumeCodePoint());i=this.peekCodePoint(0),s=this.peekCodePoint(1);var r=this.peekCodePoint(2);if((69===i||101===i)&&((43===s||45===s)&&vp(r)||vp(s)))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),t=8;vp(this.peekCodePoint(0));)e.push(this.consumeCodePoint());return[Fp(e),t]},e.prototype.consumeNumericToken=function(){var e=this.consumeNumber(),t=e[0],i=e[1],s=this.peekCodePoint(0),r=this.peekCodePoint(1),o=this.peekCodePoint(2);return Cp(s,r,o)?{type:15,number:t,flags:i,unit:this.consumeName()}:37===s?(this.consumeCodePoint(),{type:16,number:t,flags:i}):{type:17,number:t,flags:i}},e.prototype.consumeEscapedCodePoint=function(){var e=this.consumeCodePoint();if(bp(e)){for(var t=wd(e);bp(this.peekCodePoint(0))&&t.length<6;)t+=wd(this.consumeCodePoint());yp(this.peekCodePoint(0))&&this.consumeCodePoint();var i=parseInt(t,16);return 0===i||function(e){return e>=55296&&e<=57343}(i)||i>1114111?65533:i}return-1===e?65533:e},e.prototype.consumeName=function(){for(var e="";;){var t=this.consumeCodePoint();if(wp(t))e+=wd(t);else{if(!Pp(t,this.peekCodePoint(0)))return this.reconsumeCodePoint(t),e;e+=wd(this.consumeEscapedCodePoint())}}},e}(),Zp=function(){function e(e){this._tokens=e}return e.create=function(t){var i=new Yp;return i.write(t),new e(i.read())},e.parseValue=function(t){return e.create(t).parseComponentValue()},e.parseValues=function(t){return e.create(t).parseComponentValues()},e.prototype.parseComponentValue=function(){for(var e=this.consumeToken();31===e.type;)e=this.consumeToken();if(32===e.type)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(e);var t=this.consumeComponentValue();do{e=this.consumeToken()}while(31===e.type);if(32===e.type)return t;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},e.prototype.parseComponentValues=function(){for(var e=[];;){var t=this.consumeComponentValue();if(32===t.type)return e;e.push(t),e.push()}},e.prototype.consumeComponentValue=function(){var e=this.consumeToken();switch(e.type){case 11:case 28:case 2:return this.consumeSimpleBlock(e.type);case 19:return this.consumeFunction(e)}return e},e.prototype.consumeSimpleBlock=function(e){for(var t={type:e,values:[]},i=this.consumeToken();;){if(32===i.type||af(i,e))return t;this.reconsumeToken(i),t.values.push(this.consumeComponentValue()),i=this.consumeToken()}},e.prototype.consumeFunction=function(e){for(var t={name:e.value,values:[],type:18};;){var i=this.consumeToken();if(32===i.type||3===i.type)return t;this.reconsumeToken(i),t.values.push(this.consumeComponentValue())}},e.prototype.consumeToken=function(){var e=this._tokens.shift();return void 0===e?Jp:e},e.prototype.reconsumeToken=function(e){this._tokens.unshift(e)},e}(),qp=function(e){return 15===e.type},$p=function(e){return 17===e.type},ef=function(e){return 20===e.type},tf=function(e){return 0===e.type},sf=function(e,t){return ef(e)&&e.value===t},rf=function(e){return 31!==e.type},of=function(e){return 31!==e.type&&4!==e.type},nf=function(e){var t=[],i=[];return e.forEach((function(e){if(4===e.type){if(0===i.length)throw new Error("Error parsing function args, zero tokens for arg");return t.push(i),void(i=[])}31!==e.type&&i.push(e)})),i.length&&t.push(i),t},af=function(e,t){return 11===t&&12===e.type||(28===t&&29===e.type||2===t&&3===e.type)},lf=function(e){return 17===e.type||15===e.type},Af=function(e){return 16===e.type||lf(e)},hf=function(e){return e.length>1?[e[0],e[1]]:[e[0]]},cf={type:17,number:0,flags:4},uf={type:16,number:50,flags:4},df={type:16,number:100,flags:4},pf=function(e,t,i){var s=e[0],r=e[1];return[ff(s,t),ff(void 0!==r?r:s,i)]},ff=function(e,t){if(16===e.type)return e.number/100*t;if(qp(e))switch(e.unit){case"rem":case"em":return 16*e.number;default:return e.number}return e.number},gf=function(e,t){if(15===t.type)switch(t.unit){case"deg":return Math.PI*t.number/180;case"grad":return Math.PI/200*t.number;case"rad":return t.number;case"turn":return 2*Math.PI*t.number}throw new Error("Unsupported angle type")},mf=function(e){return 15===e.type&&("deg"===e.unit||"grad"===e.unit||"rad"===e.unit||"turn"===e.unit)},_f=function(e){switch(e.filter(ef).map((function(e){return e.value})).join(" ")){case"to bottom right":case"to right bottom":case"left top":case"top left":return[cf,cf];case"to top":case"bottom":return vf(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[cf,df];case"to right":case"left":return vf(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[df,df];case"to bottom":case"top":return vf(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[df,cf];case"to left":case"right":return vf(270)}return 0},vf=function(e){return Math.PI*e/180},bf=function(e,t){if(18===t.type){var i=Ff[t.name];if(void 0===i)throw new Error('Attempting to parse an unsupported color function "'+t.name+'"');return i(e,t.values)}if(5===t.type){if(3===t.value.length){var s=t.value.substring(0,1),r=t.value.substring(1,2),o=t.value.substring(2,3);return wf(parseInt(s+s,16),parseInt(r+r,16),parseInt(o+o,16),1)}if(4===t.value.length){s=t.value.substring(0,1),r=t.value.substring(1,2),o=t.value.substring(2,3);var n=t.value.substring(3,4);return wf(parseInt(s+s,16),parseInt(r+r,16),parseInt(o+o,16),parseInt(n+n,16)/255)}if(6===t.value.length){s=t.value.substring(0,2),r=t.value.substring(2,4),o=t.value.substring(4,6);return wf(parseInt(s,16),parseInt(r,16),parseInt(o,16),1)}if(8===t.value.length){s=t.value.substring(0,2),r=t.value.substring(2,4),o=t.value.substring(4,6),n=t.value.substring(6,8);return wf(parseInt(s,16),parseInt(r,16),parseInt(o,16),parseInt(n,16)/255)}}if(20===t.type){var a=If[t.value.toUpperCase()];if(void 0!==a)return a}return If.TRANSPARENT},yf=function(e){return 0==(255&e)},Bf=function(e){var t=255&e,i=255&e>>8,s=255&e>>16,r=255&e>>24;return t<255?"rgba("+r+","+s+","+i+","+t/255+")":"rgb("+r+","+s+","+i+")"},wf=function(e,t,i,s){return(e<<24|t<<16|i<<8|Math.round(255*s)<<0)>>>0},xf=function(e,t){if(17===e.type)return e.number;if(16===e.type){var i=3===t?1:255;return 3===t?e.number/100*i:Math.round(e.number/100*i)}return 0},Pf=function(e,t){var i=t.filter(of);if(3===i.length){var s=i.map(xf),r=s[0],o=s[1],n=s[2];return wf(r,o,n,1)}if(4===i.length){var a=i.map(xf),l=(r=a[0],o=a[1],n=a[2],a[3]);return wf(r,o,n,l)}return 0};function Cf(e,t,i){return i<0&&(i+=1),i>=1&&(i-=1),i<1/6?(t-e)*i*6+e:i<.5?t:i<2/3?6*(t-e)*(2/3-i)+e:e}var Mf=function(e,t){var i=t.filter(of),s=i[0],r=i[1],o=i[2],n=i[3],a=(17===s.type?vf(s.number):gf(e,s))/(2*Math.PI),l=Af(r)?r.number/100:0,A=Af(o)?o.number/100:0,h=void 0!==n&&Af(n)?ff(n,1):1;if(0===l)return wf(255*A,255*A,255*A,1);var c=A<=.5?A*(l+1):A+l-A*l,u=2*A-c,d=Cf(u,c,a+1/3),p=Cf(u,c,a),f=Cf(u,c,a-1/3);return wf(255*d,255*p,255*f,h)},Ff={hsl:Mf,hsla:Mf,rgb:Pf,rgba:Pf},Ef=function(e,t){return bf(e,Zp.create(t).parseComponentValue())},If={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},Df={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(e,t){return t.map((function(e){if(ef(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},Sf={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},Tf=function(e,t){var i=bf(e,t[0]),s=t[1];return s&&Af(s)?{color:i,stop:s}:{color:i,stop:null}},Rf=function(e,t){var i=e[0],s=e[e.length-1];null===i.stop&&(i.stop=cf),null===s.stop&&(s.stop=df);for(var r=[],o=0,n=0;n<e.length;n++){var a=e[n].stop;if(null!==a){var l=ff(a,t);l>o?r.push(l):r.push(o),o=l}else r.push(null)}var A=null;for(n=0;n<r.length;n++){var h=r[n];if(null===h)null===A&&(A=n);else if(null!==A){for(var c=n-A,u=(h-r[A-1])/(c+1),d=1;d<=c;d++)r[A+d-1]=u*d;A=null}}return e.map((function(e,i){return{color:e.color,stop:Math.max(Math.min(1,r[i]/t),0)}}))},Lf=function(e,t,i){var s="number"==typeof e?e:function(e,t,i){var s=t/2,r=i/2,o=ff(e[0],t)-s,n=r-ff(e[1],i);return(Math.atan2(n,o)+2*Math.PI)%(2*Math.PI)}(e,t,i),r=Math.abs(t*Math.sin(s))+Math.abs(i*Math.cos(s)),o=t/2,n=i/2,a=r/2,l=Math.sin(s-Math.PI/2)*a,A=Math.cos(s-Math.PI/2)*a;return[r,o-A,o+A,n-l,n+l]},Uf=function(e,t){return Math.sqrt(e*e+t*t)},kf=function(e,t,i,s,r){return[[0,0],[0,t],[e,0],[e,t]].reduce((function(e,t){var o=t[0],n=t[1],a=Uf(i-o,s-n);return(r?a<e.optimumDistance:a>e.optimumDistance)?{optimumCorner:t,optimumDistance:a}:e}),{optimumDistance:r?1/0:-1/0,optimumCorner:null}).optimumCorner},Of=function(e,t){var i=vf(180),s=[];return nf(t).forEach((function(t,r){if(0===r){var o=t[0];if(20===o.type&&-1!==["top","left","right","bottom"].indexOf(o.value))return void(i=_f(t));if(mf(o))return void(i=(gf(e,o)+vf(270))%vf(360))}var n=Tf(e,t);s.push(n)})),{angle:i,stops:s,type:1}},Nf=function(e,t){var i=0,s=3,r=[],o=[];return nf(t).forEach((function(t,n){var a=!0;if(0===n?a=t.reduce((function(e,t){if(ef(t))switch(t.value){case"center":return o.push(uf),!1;case"top":case"left":return o.push(cf),!1;case"right":case"bottom":return o.push(df),!1}else if(Af(t)||lf(t))return o.push(t),!1;return e}),a):1===n&&(a=t.reduce((function(e,t){if(ef(t))switch(t.value){case"circle":return i=0,!1;case"ellipse":return i=1,!1;case"contain":case"closest-side":return s=0,!1;case"farthest-side":return s=1,!1;case"closest-corner":return s=2,!1;case"cover":case"farthest-corner":return s=3,!1}else if(lf(t)||Af(t))return Array.isArray(s)||(s=[]),s.push(t),!1;return e}),a)),a){var l=Tf(e,t);r.push(l)}})),{size:s,shape:i,stops:r,position:o,type:2}},Qf=function(e,t){if(22===t.type){var i={url:t.value,type:0};return e.cache.addImage(t.value),i}if(18===t.type){var s=Hf[t.name];if(void 0===s)throw new Error('Attempting to parse an unsupported image function "'+t.name+'"');return s(e,t.values)}throw new Error("Unsupported image type "+t.type)};var Vf,Hf={"linear-gradient":function(e,t){var i=vf(180),s=[];return nf(t).forEach((function(t,r){if(0===r){var o=t[0];if(20===o.type&&"to"===o.value)return void(i=_f(t));if(mf(o))return void(i=gf(e,o))}var n=Tf(e,t);s.push(n)})),{angle:i,stops:s,type:1}},"-moz-linear-gradient":Of,"-ms-linear-gradient":Of,"-o-linear-gradient":Of,"-webkit-linear-gradient":Of,"radial-gradient":function(e,t){var i=0,s=3,r=[],o=[];return nf(t).forEach((function(t,n){var a=!0;if(0===n){var l=!1;a=t.reduce((function(e,t){if(l)if(ef(t))switch(t.value){case"center":return o.push(uf),e;case"top":case"left":return o.push(cf),e;case"right":case"bottom":return o.push(df),e}else(Af(t)||lf(t))&&o.push(t);else if(ef(t))switch(t.value){case"circle":return i=0,!1;case"ellipse":return i=1,!1;case"at":return l=!0,!1;case"closest-side":return s=0,!1;case"cover":case"farthest-side":return s=1,!1;case"contain":case"closest-corner":return s=2,!1;case"farthest-corner":return s=3,!1}else if(lf(t)||Af(t))return Array.isArray(s)||(s=[]),s.push(t),!1;return e}),a)}if(a){var A=Tf(e,t);r.push(A)}})),{size:s,shape:i,stops:r,position:o,type:2}},"-moz-radial-gradient":Nf,"-ms-radial-gradient":Nf,"-o-radial-gradient":Nf,"-webkit-radial-gradient":Nf,"-webkit-gradient":function(e,t){var i=vf(180),s=[],r=1;return nf(t).forEach((function(t,i){var o=t[0];if(0===i){if(ef(o)&&"linear"===o.value)return void(r=1);if(ef(o)&&"radial"===o.value)return void(r=2)}if(18===o.type)if("from"===o.name){var n=bf(e,o.values[0]);s.push({stop:cf,color:n})}else if("to"===o.name){n=bf(e,o.values[0]);s.push({stop:df,color:n})}else if("color-stop"===o.name){var a=o.values.filter(of);if(2===a.length){n=bf(e,a[1]);var l=a[0];$p(l)&&s.push({stop:{type:16,number:100*l.number,flags:l.flags},color:n})}}})),1===r?{angle:(i+vf(180))%vf(360),stops:s,type:r}:{size:3,shape:0,stops:s,position:[],type:r}}},jf={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(e,t){if(0===t.length)return[];var i=t[0];return 20===i.type&&"none"===i.value?[]:t.filter((function(e){return of(e)&&function(e){return!(20===e.type&&"none"===e.value||18===e.type&&!Hf[e.name])}(e)})).map((function(t){return Qf(e,t)}))}},Gf={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(e,t){return t.map((function(e){if(ef(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},zf={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(e,t){return nf(t).map((function(e){return e.filter(Af)})).map(hf)}},Wf={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(e,t){return nf(t).map((function(e){return e.filter(ef).map((function(e){return e.value})).join(" ")})).map(Kf)}},Kf=function(e){switch(e){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;default:return 0}};!function(e){e.AUTO="auto",e.CONTAIN="contain",e.COVER="cover"}(Vf||(Vf={}));var Xf,Jf={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(e,t){return nf(t).map((function(e){return e.filter(Yf)}))}},Yf=function(e){return ef(e)||Af(e)},Zf=function(e){return{name:"border-"+e+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},qf=Zf("top"),$f=Zf("right"),eg=Zf("bottom"),tg=Zf("left"),ig=function(e){return{name:"border-radius-"+e,initialValue:"0 0",prefix:!1,type:1,parse:function(e,t){return hf(t.filter(Af))}}},sg=ig("top-left"),rg=ig("top-right"),og=ig("bottom-right"),ng=ig("bottom-left"),ag=function(e){return{name:"border-"+e+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(e,t){switch(t){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},lg=ag("top"),Ag=ag("right"),hg=ag("bottom"),cg=ag("left"),ug=function(e){return{name:"border-"+e+"-width",initialValue:"0",type:0,prefix:!1,parse:function(e,t){return qp(t)?t.number:0}}},dg=ug("top"),pg=ug("right"),fg=ug("bottom"),gg=ug("left"),mg={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},_g={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(e,t){return"rtl"===t?1:0}},vg={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(e,t){return t.filter(ef).reduce((function(e,t){return e|bg(t.value)}),0)}},bg=function(e){switch(e){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},yg={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(e,t){switch(t){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},Bg={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(e,t){return 20===t.type&&"normal"===t.value?0:17===t.type||15===t.type?t.number:0}};!function(e){e.NORMAL="normal",e.STRICT="strict"}(Xf||(Xf={}));var wg,xg={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(e,t){return"strict"===t?Xf.STRICT:Xf.NORMAL}},Pg={name:"line-height",initialValue:"normal",prefix:!1,type:4},Cg=function(e,t){return ef(e)&&"normal"===e.value?1.2*t:17===e.type?t*e.number:Af(e)?ff(e,t):t},Mg={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(e,t){return 20===t.type&&"none"===t.value?null:Qf(e,t)}},Fg={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(e,t){return"inside"===t?0:1}},Eg={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(e,t){switch(t){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;default:return-1}}},Ig=function(e){return{name:"margin-"+e,initialValue:"0",prefix:!1,type:4}},Dg=Ig("top"),Sg=Ig("right"),Tg=Ig("bottom"),Rg=Ig("left"),Lg={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(e,t){return t.filter(ef).map((function(e){switch(e.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;default:return 0}}))}},Ug={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(e,t){return"break-word"===t?"break-word":"normal"}},kg=function(e){return{name:"padding-"+e,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},Og=kg("top"),Ng=kg("right"),Qg=kg("bottom"),Vg=kg("left"),Hg={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(e,t){switch(t){case"right":return 2;case"center":case"justify":return 1;default:return 0}}},jg={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(e,t){switch(t){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},Gg={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(e,t){return 1===t.length&&sf(t[0],"none")?[]:nf(t).map((function(t){for(var i={color:If.TRANSPARENT,offsetX:cf,offsetY:cf,blur:cf},s=0,r=0;r<t.length;r++){var o=t[r];lf(o)?(0===s?i.offsetX=o:1===s?i.offsetY=o:i.blur=o,s++):i.color=bf(e,o)}return i}))}},zg={name:"text-transform",initialValue:"none",prefix:!1,type:2,parse:function(e,t){switch(t){case"uppercase":return 2;case"lowercase":return 1;case"capitalize":return 3}return 0}},Wg={name:"transform",initialValue:"none",prefix:!0,type:0,parse:function(e,t){if(20===t.type&&"none"===t.value)return null;if(18===t.type){var i=Kg[t.name];if(void 0===i)throw new Error('Attempting to parse an unsupported transform function "'+t.name+'"');return i(t.values)}return null}},Kg={matrix:function(e){var t=e.filter((function(e){return 17===e.type})).map((function(e){return e.number}));return 6===t.length?t:null},matrix3d:function(e){var t=e.filter((function(e){return 17===e.type})).map((function(e){return e.number})),i=t[0],s=t[1];t[2],t[3];var r=t[4],o=t[5];t[6],t[7],t[8],t[9],t[10],t[11];var n=t[12],a=t[13];return t[14],t[15],16===t.length?[i,s,r,o,n,a]:null}},Xg={type:16,number:50,flags:4},Jg=[Xg,Xg],Yg={name:"transform-origin",initialValue:"50% 50%",prefix:!0,type:1,parse:function(e,t){var i=t.filter(Af);return 2!==i.length?Jg:[i[0],i[1]]}},Zg={name:"visible",initialValue:"none",prefix:!1,type:2,parse:function(e,t){switch(t){case"hidden":return 1;case"collapse":return 2;default:return 0}}};!function(e){e.NORMAL="normal",e.BREAK_ALL="break-all",e.KEEP_ALL="keep-all"}(wg||(wg={}));for(var qg={name:"word-break",initialValue:"normal",prefix:!1,type:2,parse:function(e,t){switch(t){case"break-all":return wg.BREAK_ALL;case"keep-all":return wg.KEEP_ALL;default:return wg.NORMAL}}},$g={name:"z-index",initialValue:"auto",prefix:!1,type:0,parse:function(e,t){if(20===t.type)return{auto:!0,order:0};if($p(t))return{auto:!1,order:t.number};throw new Error("Invalid z-index number parsed")}},em=function(e,t){if(15===t.type)switch(t.unit.toLowerCase()){case"s":return 1e3*t.number;case"ms":return t.number}throw new Error("Unsupported time type")},tm={name:"opacity",initialValue:"1",type:0,prefix:!1,parse:function(e,t){return $p(t)?t.number:1}},im={name:"text-decoration-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},sm={name:"text-decoration-line",initialValue:"none",prefix:!1,type:1,parse:function(e,t){return t.filter(ef).map((function(e){switch(e.value){case"underline":return 1;case"overline":return 2;case"line-through":return 3;case"none":return 4}return 0})).filter((function(e){return 0!==e}))}},rm={name:"font-family",initialValue:"",prefix:!1,type:1,parse:function(e,t){var i=[],s=[];return t.forEach((function(e){switch(e.type){case 20:case 0:i.push(e.value);break;case 17:i.push(e.number.toString());break;case 4:s.push(i.join(" ")),i.length=0}})),i.length&&s.push(i.join(" ")),s.map((function(e){return-1===e.indexOf(" ")?e:"'"+e+"'"}))}},om={name:"font-size",initialValue:"0",prefix:!1,type:3,format:"length"},nm={name:"font-weight",initialValue:"normal",type:0,prefix:!1,parse:function(e,t){return $p(t)?t.number:ef(t)&&"bold"===t.value?700:400}},am={name:"font-variant",initialValue:"none",type:1,prefix:!1,parse:function(e,t){return t.filter(ef).map((function(e){return e.value}))}},lm={name:"font-style",initialValue:"normal",prefix:!1,type:2,parse:function(e,t){switch(t){case"oblique":return"oblique";case"italic":return"italic";default:return"normal"}}},Am=function(e,t){return 0!=(e&t)},hm={name:"content",initialValue:"none",type:1,prefix:!1,parse:function(e,t){if(0===t.length)return[];var i=t[0];return 20===i.type&&"none"===i.value?[]:t}},cm={name:"counter-increment",initialValue:"none",prefix:!0,type:1,parse:function(e,t){if(0===t.length)return null;var i=t[0];if(20===i.type&&"none"===i.value)return null;for(var s=[],r=t.filter(rf),o=0;o<r.length;o++){var n=r[o],a=r[o+1];if(20===n.type){var l=a&&$p(a)?a.number:1;s.push({counter:n.value,increment:l})}}return s}},um={name:"counter-reset",initialValue:"none",prefix:!0,type:1,parse:function(e,t){if(0===t.length)return[];for(var i=[],s=t.filter(rf),r=0;r<s.length;r++){var o=s[r],n=s[r+1];if(ef(o)&&"none"!==o.value){var a=n&&$p(n)?n.number:0;i.push({counter:o.value,reset:a})}}return i}},dm={name:"duration",initialValue:"0s",prefix:!1,type:1,parse:function(e,t){return t.filter(qp).map((function(t){return em(e,t)}))}},pm={name:"quotes",initialValue:"none",prefix:!0,type:1,parse:function(e,t){if(0===t.length)return null;var i=t[0];if(20===i.type&&"none"===i.value)return null;var s=[],r=t.filter(tf);if(r.length%2!=0)return null;for(var o=0;o<r.length;o+=2){var n=r[o].value,a=r[o+1].value;s.push({open:n,close:a})}return s}},fm=function(e,t,i){if(!e)return"";var s=e[Math.min(t,e.length-1)];return s?i?s.open:s.close:""},gm={name:"box-shadow",initialValue:"none",type:1,prefix:!1,parse:function(e,t){return 1===t.length&&sf(t[0],"none")?[]:nf(t).map((function(t){for(var i={color:255,offsetX:cf,offsetY:cf,blur:cf,spread:cf,inset:!1},s=0,r=0;r<t.length;r++){var o=t[r];sf(o,"inset")?i.inset=!0:lf(o)?(0===s?i.offsetX=o:1===s?i.offsetY=o:2===s?i.blur=o:i.spread=o,s++):i.color=bf(e,o)}return i}))}},mm={name:"paint-order",initialValue:"normal",prefix:!1,type:1,parse:function(e,t){var i=[];return t.filter(ef).forEach((function(e){switch(e.value){case"stroke":i.push(1);break;case"fill":i.push(0);break;case"markers":i.push(2)}})),[0,1,2].forEach((function(e){-1===i.indexOf(e)&&i.push(e)})),i}},_m={name:"-webkit-text-stroke-color",initialValue:"currentcolor",prefix:!1,type:3,format:"color"},vm={name:"-webkit-text-stroke-width",initialValue:"0",type:0,prefix:!1,parse:function(e,t){return qp(t)?t.number:0}},bm=function(){function e(e,t){var i,s;this.animationDuration=wm(e,dm,t.animationDuration),this.backgroundClip=wm(e,Df,t.backgroundClip),this.backgroundColor=wm(e,Sf,t.backgroundColor),this.backgroundImage=wm(e,jf,t.backgroundImage),this.backgroundOrigin=wm(e,Gf,t.backgroundOrigin),this.backgroundPosition=wm(e,zf,t.backgroundPosition),this.backgroundRepeat=wm(e,Wf,t.backgroundRepeat),this.backgroundSize=wm(e,Jf,t.backgroundSize),this.borderTopColor=wm(e,qf,t.borderTopColor),this.borderRightColor=wm(e,$f,t.borderRightColor),this.borderBottomColor=wm(e,eg,t.borderBottomColor),this.borderLeftColor=wm(e,tg,t.borderLeftColor),this.borderTopLeftRadius=wm(e,sg,t.borderTopLeftRadius),this.borderTopRightRadius=wm(e,rg,t.borderTopRightRadius),this.borderBottomRightRadius=wm(e,og,t.borderBottomRightRadius),this.borderBottomLeftRadius=wm(e,ng,t.borderBottomLeftRadius),this.borderTopStyle=wm(e,lg,t.borderTopStyle),this.borderRightStyle=wm(e,Ag,t.borderRightStyle),this.borderBottomStyle=wm(e,hg,t.borderBottomStyle),this.borderLeftStyle=wm(e,cg,t.borderLeftStyle),this.borderTopWidth=wm(e,dg,t.borderTopWidth),this.borderRightWidth=wm(e,pg,t.borderRightWidth),this.borderBottomWidth=wm(e,fg,t.borderBottomWidth),this.borderLeftWidth=wm(e,gg,t.borderLeftWidth),this.boxShadow=wm(e,gm,t.boxShadow),this.color=wm(e,mg,t.color),this.direction=wm(e,_g,t.direction),this.display=wm(e,vg,t.display),this.float=wm(e,yg,t.cssFloat),this.fontFamily=wm(e,rm,t.fontFamily),this.fontSize=wm(e,om,t.fontSize),this.fontStyle=wm(e,lm,t.fontStyle),this.fontVariant=wm(e,am,t.fontVariant),this.fontWeight=wm(e,nm,t.fontWeight),this.letterSpacing=wm(e,Bg,t.letterSpacing),this.lineBreak=wm(e,xg,t.lineBreak),this.lineHeight=wm(e,Pg,t.lineHeight),this.listStyleImage=wm(e,Mg,t.listStyleImage),this.listStylePosition=wm(e,Fg,t.listStylePosition),this.listStyleType=wm(e,Eg,t.listStyleType),this.marginTop=wm(e,Dg,t.marginTop),this.marginRight=wm(e,Sg,t.marginRight),this.marginBottom=wm(e,Tg,t.marginBottom),this.marginLeft=wm(e,Rg,t.marginLeft),this.opacity=wm(e,tm,t.opacity);var r=wm(e,Lg,t.overflow);this.overflowX=r[0],this.overflowY=r[r.length>1?1:0],this.overflowWrap=wm(e,Ug,t.overflowWrap),this.paddingTop=wm(e,Og,t.paddingTop),this.paddingRight=wm(e,Ng,t.paddingRight),this.paddingBottom=wm(e,Qg,t.paddingBottom),this.paddingLeft=wm(e,Vg,t.paddingLeft),this.paintOrder=wm(e,mm,t.paintOrder),this.position=wm(e,jg,t.position),this.textAlign=wm(e,Hg,t.textAlign),this.textDecorationColor=wm(e,im,null!==(i=t.textDecorationColor)&&void 0!==i?i:t.color),this.textDecorationLine=wm(e,sm,null!==(s=t.textDecorationLine)&&void 0!==s?s:t.textDecoration),this.textShadow=wm(e,Gg,t.textShadow),this.textTransform=wm(e,zg,t.textTransform),this.transform=wm(e,Wg,t.transform),this.transformOrigin=wm(e,Yg,t.transformOrigin),this.visibility=wm(e,Zg,t.visibility),this.webkitTextStrokeColor=wm(e,_m,t.webkitTextStrokeColor),this.webkitTextStrokeWidth=wm(e,vm,t.webkitTextStrokeWidth),this.wordBreak=wm(e,qg,t.wordBreak),this.zIndex=wm(e,$g,t.zIndex)}return e.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&0===this.visibility},e.prototype.isTransparent=function(){return yf(this.backgroundColor)},e.prototype.isTransformed=function(){return null!==this.transform},e.prototype.isPositioned=function(){return 0!==this.position},e.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},e.prototype.isFloating=function(){return 0!==this.float},e.prototype.isInlineLevel=function(){return Am(this.display,4)||Am(this.display,33554432)||Am(this.display,268435456)||Am(this.display,536870912)||Am(this.display,67108864)||Am(this.display,134217728)},e}(),ym=function(e,t){this.content=wm(e,hm,t.content),this.quotes=wm(e,pm,t.quotes)},Bm=function(e,t){this.counterIncrement=wm(e,cm,t.counterIncrement),this.counterReset=wm(e,um,t.counterReset)},wm=function(e,t,i){var s=new Yp,r=null!=i?i.toString():t.initialValue;s.write(r);var o=new Zp(s.read());switch(t.type){case 2:var n=o.parseComponentValue();return t.parse(e,ef(n)?n.value:t.initialValue);case 0:return t.parse(e,o.parseComponentValue());case 1:return t.parse(e,o.parseComponentValues());case 4:return o.parseComponentValue();case 3:switch(t.format){case"angle":return gf(e,o.parseComponentValue());case"color":return bf(e,o.parseComponentValue());case"image":return Qf(e,o.parseComponentValue());case"length":var a=o.parseComponentValue();return lf(a)?a:cf;case"length-percentage":var l=o.parseComponentValue();return Af(l)?l:cf;case"time":return em(e,o.parseComponentValue())}}},xm=function(e,t){var i=function(e){switch(e.getAttribute("data-html2canvas-debug")){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}}(e);return 1===i||t===i},Pm=function(e,t){this.context=e,this.textNodes=[],this.elements=[],this.flags=0,xm(t,3),this.styles=new bm(e,window.getComputedStyle(t,null)),P_(t)&&(this.styles.animationDuration.some((function(e){return e>0}))&&(t.style.animationDuration="0s"),null!==this.styles.transform&&(t.style.transform="none")),this.bounds=yd(this.context,t),xm(t,4)&&(this.flags|=16)},Cm="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Mm="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Fm=0;Fm<Cm.length;Fm++)Mm[Cm.charCodeAt(Fm)]=Fm;for(var Em=function(e,t,i){return e.slice?e.slice(t,i):new Uint16Array(Array.prototype.slice.call(e,t,i))},Im=function(){function e(e,t,i,s,r,o){this.initialValue=e,this.errorValue=t,this.highStart=i,this.highValueIndex=s,this.index=r,this.data=o}return e.prototype.get=function(e){var t;if(e>=0){if(e<55296||e>56319&&e<=65535)return t=((t=this.index[e>>5])<<2)+(31&e),this.data[t];if(e<=65535)return t=((t=this.index[2048+(e-55296>>5)])<<2)+(31&e),this.data[t];if(e<this.highStart)return t=2080+(e>>11),t=this.index[t],t+=e>>5&63,t=((t=this.index[t])<<2)+(31&e),this.data[t];if(e<=1114111)return this.data[this.highValueIndex]}return this.errorValue},e}(),Dm="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Sm="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Tm=0;Tm<Dm.length;Tm++)Sm[Dm.charCodeAt(Tm)]=Tm;var Rm,Lm=8,Um=9,km=11,Om=12,Nm=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];if(String.fromCodePoint)return String.fromCodePoint.apply(String,e);var i=e.length;if(!i)return"";for(var s=[],r=-1,o="";++r<i;){var n=e[r];n<=65535?s.push(n):(n-=65536,s.push(55296+(n>>10),n%1024+56320)),(r+1===i||s.length>16384)&&(o+=String.fromCharCode.apply(String,s),s.length=0)}return o},Qm=function(e,t){var i,s,r,o=function(e){var t,i,s,r,o,n=.75*e.length,a=e.length,l=0;"="===e[e.length-1]&&(n--,"="===e[e.length-2]&&n--);var A="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&void 0!==Uint8Array.prototype.slice?new ArrayBuffer(n):new Array(n),h=Array.isArray(A)?A:new Uint8Array(A);for(t=0;t<a;t+=4)i=Mm[e.charCodeAt(t)],s=Mm[e.charCodeAt(t+1)],r=Mm[e.charCodeAt(t+2)],o=Mm[e.charCodeAt(t+3)],h[l++]=i<<2|s>>4,h[l++]=(15&s)<<4|r>>2,h[l++]=(3&r)<<6|63&o;return A}(e),n=Array.isArray(o)?function(e){for(var t=e.length,i=[],s=0;s<t;s+=4)i.push(e[s+3]<<24|e[s+2]<<16|e[s+1]<<8|e[s]);return i}(o):new Uint32Array(o),a=Array.isArray(o)?function(e){for(var t=e.length,i=[],s=0;s<t;s+=2)i.push(e[s+1]<<8|e[s]);return i}(o):new Uint16Array(o),l=Em(a,12,n[4]/2),A=2===n[5]?Em(a,(24+n[4])/2):(i=n,s=Math.ceil((24+n[4])/4),i.slice?i.slice(s,r):new Uint32Array(Array.prototype.slice.call(i,s,r)));return new Im(n[0],n[1],n[2],n[3],l,A)}("AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA="),Vm=function(e){return Qm.get(e)},Hm=function(e,t,i){var s=i-2,r=t[s],o=t[i-1],n=t[i];if(2===o&&3===n)return"×";if(2===o||3===o||4===o)return"÷";if(2===n||3===n||4===n)return"÷";if(o===Lm&&-1!==[Lm,Um,km,Om].indexOf(n))return"×";if(!(o!==km&&o!==Um||n!==Um&&10!==n))return"×";if((o===Om||10===o)&&10===n)return"×";if(13===n||5===n)return"×";if(7===n)return"×";if(1===o)return"×";if(13===o&&14===n){for(;5===r;)r=t[--s];if(14===r)return"×"}if(15===o&&15===n){for(var a=0;15===r;)a++,r=t[--s];if(a%2==0)return"×"}return"÷"},jm=function(e){var t=function(e){for(var t=[],i=0,s=e.length;i<s;){var r=e.charCodeAt(i++);if(r>=55296&&r<=56319&&i<s){var o=e.charCodeAt(i++);56320==(64512&o)?t.push(((1023&r)<<10)+(1023&o)+65536):(t.push(r),i--)}else t.push(r)}return t}(e),i=t.length,s=0,r=0,o=t.map(Vm);return{next:function(){if(s>=i)return{done:!0,value:null};for(var e="×";s<i&&"×"===(e=Hm(0,o,++s)););if("×"!==e||s===i){var n=Nm.apply(null,t.slice(r,s));return r=s,{value:n,done:!1}}return{done:!0,value:null}}}},Gm=function(e){return 0===e[0]&&255===e[1]&&0===e[2]&&255===e[3]},zm=function(e,t,i,s,r){var o="http://www.w3.org/2000/svg",n=document.createElementNS(o,"svg"),a=document.createElementNS(o,"foreignObject");return n.setAttributeNS(null,"width",e.toString()),n.setAttributeNS(null,"height",t.toString()),a.setAttributeNS(null,"width","100%"),a.setAttributeNS(null,"height","100%"),a.setAttributeNS(null,"x",i.toString()),a.setAttributeNS(null,"y",s.toString()),a.setAttributeNS(null,"externalResourcesRequired","true"),n.appendChild(a),a.appendChild(r),n},Wm=function(e){return new Promise((function(t,i){var s=new Image;s.onload=function(){return t(s)},s.onerror=i,s.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent((new XMLSerializer).serializeToString(e))}))},Km={get SUPPORT_RANGE_BOUNDS(){var e=function(e){if(e.createRange){var t=e.createRange();if(t.getBoundingClientRect){var i=e.createElement("boundtest");i.style.height="123px",i.style.display="block",e.body.appendChild(i),t.selectNode(i);var s=t.getBoundingClientRect(),r=Math.round(s.height);if(e.body.removeChild(i),123===r)return!0}}return!1}(document);return Object.defineProperty(Km,"SUPPORT_RANGE_BOUNDS",{value:e}),e},get SUPPORT_WORD_BREAKING(){var e=Km.SUPPORT_RANGE_BOUNDS&&function(e){var t=e.createElement("boundtest");t.style.width="50px",t.style.display="block",t.style.fontSize="12px",t.style.letterSpacing="0px",t.style.wordSpacing="0px",e.body.appendChild(t);var i=e.createRange();t.innerHTML="function"==typeof"".repeat?"&#128104;".repeat(10):"";var s=t.firstChild,r=Bd(s.data).map((function(e){return wd(e)})),o=0,n={},a=r.every((function(e,t){i.setStart(s,o),i.setEnd(s,o+e.length);var r=i.getBoundingClientRect();o+=e.length;var a=r.x>n.x||r.y>n.y;return n=r,0===t||a}));return e.body.removeChild(t),a}(document);return Object.defineProperty(Km,"SUPPORT_WORD_BREAKING",{value:e}),e},get SUPPORT_SVG_DRAWING(){var e=function(e){var t=new Image,i=e.createElement("canvas"),s=i.getContext("2d");if(!s)return!1;t.src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";try{s.drawImage(t,0,0),i.toDataURL()}catch(e){return!1}return!0}(document);return Object.defineProperty(Km,"SUPPORT_SVG_DRAWING",{value:e}),e},get SUPPORT_FOREIGNOBJECT_DRAWING(){var e="function"==typeof Array.from&&"function"==typeof window.fetch?function(e){var t=e.createElement("canvas"),i=100;t.width=i,t.height=i;var s=t.getContext("2d");if(!s)return Promise.reject(!1);s.fillStyle="rgb(0, 255, 0)",s.fillRect(0,0,i,i);var r=new Image,o=t.toDataURL();r.src=o;var n=zm(i,i,0,0,r);return s.fillStyle="red",s.fillRect(0,0,i,i),Wm(n).then((function(t){s.drawImage(t,0,0);var r=s.getImageData(0,0,i,i).data;s.fillStyle="red",s.fillRect(0,0,i,i);var n=e.createElement("div");return n.style.backgroundImage="url("+o+")",n.style.height="100px",Gm(r)?Wm(zm(i,i,0,0,n)):Promise.reject(!1)})).then((function(e){return s.drawImage(e,0,0),Gm(s.getImageData(0,0,i,i).data)})).catch((function(){return!1}))}(document):Promise.resolve(!1);return Object.defineProperty(Km,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:e}),e},get SUPPORT_CORS_IMAGES(){var e=void 0!==(new Image).crossOrigin;return Object.defineProperty(Km,"SUPPORT_CORS_IMAGES",{value:e}),e},get SUPPORT_RESPONSE_TYPE(){var e="string"==typeof(new XMLHttpRequest).responseType;return Object.defineProperty(Km,"SUPPORT_RESPONSE_TYPE",{value:e}),e},get SUPPORT_CORS_XHR(){var e="withCredentials"in new XMLHttpRequest;return Object.defineProperty(Km,"SUPPORT_CORS_XHR",{value:e}),e},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var e=!("undefined"==typeof Intl||!Intl.Segmenter);return Object.defineProperty(Km,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:e}),e}},Xm=function(e,t){this.text=e,this.bounds=t},Jm=function(e,t){var i=t.ownerDocument;if(i){var s=i.createElement("html2canvaswrapper");s.appendChild(t.cloneNode(!0));var r=t.parentNode;if(r){r.replaceChild(s,t);var o=yd(e,s);return s.firstChild&&r.replaceChild(s.firstChild,s),o}}return bd.EMPTY},Ym=function(e,t,i){var s=e.ownerDocument;if(!s)throw new Error("Node has no owner document");var r=s.createRange();return r.setStart(e,t),r.setEnd(e,t+i),r},Zm=function(e){if(Km.SUPPORT_NATIVE_TEXT_SEGMENTATION){var t=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(t.segment(e)).map((function(e){return e.segment}))}return function(e){for(var t,i=jm(e),s=[];!(t=i.next()).done;)t.value&&s.push(t.value.slice());return s}(e)},qm=function(e,t){return 0!==t.letterSpacing?Zm(e):function(e,t){if(Km.SUPPORT_NATIVE_TEXT_SEGMENTATION){var i=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(i.segment(e)).map((function(e){return e.segment}))}return e_(e,t)}(e,t)},$m=[32,160,4961,65792,65793,4153,4241],e_=function(e,t){for(var i,s=function(e,t){var i=Bd(e),s=mp(i,t),r=s[0],o=s[1],n=s[2],a=i.length,l=0,A=0;return{next:function(){if(A>=a)return{done:!0,value:null};for(var e="×";A<a&&"×"===(e=gp(i,o,r,++A,n)););if("×"!==e||A===a){var t=new _p(i,e,l,A);return l=A,{value:t,done:!1}}return{done:!0,value:null}}}}(e,{lineBreak:t.lineBreak,wordBreak:"break-word"===t.overflowWrap?"break-word":t.wordBreak}),r=[],o=function(){if(i.value){var e=i.value.slice(),t=Bd(e),s="";t.forEach((function(e){-1===$m.indexOf(e)?s+=wd(e):(s.length&&r.push(s),r.push(wd(e)),s="")})),s.length&&r.push(s)}};!(i=s.next()).done;)o();return r},t_=function(e,t,i){this.text=i_(t.data,i.textTransform),this.textBounds=function(e,t,i,s){var r=qm(t,i),o=[],n=0;return r.forEach((function(t){if(i.textDecorationLine.length||t.trim().length>0)if(Km.SUPPORT_RANGE_BOUNDS){var r=Ym(s,n,t.length).getClientRects();if(r.length>1){var a=Zm(t),l=0;a.forEach((function(t){o.push(new Xm(t,bd.fromDOMRectList(e,Ym(s,l+n,t.length).getClientRects()))),l+=t.length}))}else o.push(new Xm(t,bd.fromDOMRectList(e,r)))}else{var A=s.splitText(t.length);o.push(new Xm(t,Jm(e,s))),s=A}else Km.SUPPORT_RANGE_BOUNDS||(s=s.splitText(t.length));n+=t.length})),o}(e,this.text,i,t)},i_=function(e,t){switch(t){case 1:return e.toLowerCase();case 3:return e.replace(s_,r_);case 2:return e.toUpperCase();default:return e}},s_=/(^|\s|:|-|\(|\))([a-z])/g,r_=function(e,t,i){return e.length>0?t+i.toUpperCase():e},o_=function(e){function t(t,i){var s=e.call(this,t,i)||this;return s.src=i.currentSrc||i.src,s.intrinsicWidth=i.naturalWidth,s.intrinsicHeight=i.naturalHeight,s.context.cache.addImage(s.src),s}return fd(t,e),t}(Pm),n_=function(e){function t(t,i){var s=e.call(this,t,i)||this;return s.canvas=i,s.intrinsicWidth=i.width,s.intrinsicHeight=i.height,s}return fd(t,e),t}(Pm),a_=function(e){function t(t,i){var s=e.call(this,t,i)||this,r=new XMLSerializer,o=yd(t,i);return i.setAttribute("width",o.width+"px"),i.setAttribute("height",o.height+"px"),s.svg="data:image/svg+xml,"+encodeURIComponent(r.serializeToString(i)),s.intrinsicWidth=i.width.baseVal.value,s.intrinsicHeight=i.height.baseVal.value,s.context.cache.addImage(s.svg),s}return fd(t,e),t}(Pm),l_=function(e){function t(t,i){var s=e.call(this,t,i)||this;return s.value=i.value,s}return fd(t,e),t}(Pm),A_=function(e){function t(t,i){var s=e.call(this,t,i)||this;return s.start=i.start,s.reversed="boolean"==typeof i.reversed&&!0===i.reversed,s}return fd(t,e),t}(Pm),h_=[{type:15,flags:0,unit:"px",number:3}],c_=[{type:16,flags:0,number:50}],u_="password",d_=function(e){function t(t,i){var s,r=e.call(this,t,i)||this;switch(r.type=i.type.toLowerCase(),r.checked=i.checked,r.value=function(e){var t=e.type===u_?new Array(e.value.length+1).join("•"):e.value;return 0===t.length?e.placeholder||"":t}(i),"checkbox"!==r.type&&"radio"!==r.type||(r.styles.backgroundColor=3739148031,r.styles.borderTopColor=r.styles.borderRightColor=r.styles.borderBottomColor=r.styles.borderLeftColor=2779096575,r.styles.borderTopWidth=r.styles.borderRightWidth=r.styles.borderBottomWidth=r.styles.borderLeftWidth=1,r.styles.borderTopStyle=r.styles.borderRightStyle=r.styles.borderBottomStyle=r.styles.borderLeftStyle=1,r.styles.backgroundClip=[0],r.styles.backgroundOrigin=[0],r.bounds=(s=r.bounds).width>s.height?new bd(s.left+(s.width-s.height)/2,s.top,s.height,s.height):s.width<s.height?new bd(s.left,s.top+(s.height-s.width)/2,s.width,s.width):s),r.type){case"checkbox":r.styles.borderTopRightRadius=r.styles.borderTopLeftRadius=r.styles.borderBottomRightRadius=r.styles.borderBottomLeftRadius=h_;break;case"radio":r.styles.borderTopRightRadius=r.styles.borderTopLeftRadius=r.styles.borderBottomRightRadius=r.styles.borderBottomLeftRadius=c_}return r}return fd(t,e),t}(Pm),p_=function(e){function t(t,i){var s=e.call(this,t,i)||this,r=i.options[i.selectedIndex||0];return s.value=r&&r.text||"",s}return fd(t,e),t}(Pm),f_=function(e){function t(t,i){var s=e.call(this,t,i)||this;return s.value=i.value,s}return fd(t,e),t}(Pm),g_=function(e){function t(t,i){var s=e.call(this,t,i)||this;s.src=i.src,s.width=parseInt(i.width,10)||0,s.height=parseInt(i.height,10)||0,s.backgroundColor=s.styles.backgroundColor;try{if(i.contentWindow&&i.contentWindow.document&&i.contentWindow.document.documentElement){s.tree=b_(t,i.contentWindow.document.documentElement);var r=i.contentWindow.document.documentElement?Ef(t,getComputedStyle(i.contentWindow.document.documentElement).backgroundColor):If.TRANSPARENT,o=i.contentWindow.document.body?Ef(t,getComputedStyle(i.contentWindow.document.body).backgroundColor):If.TRANSPARENT;s.backgroundColor=yf(r)?yf(o)?s.styles.backgroundColor:o:r}}catch(e){}return s}return fd(t,e),t}(Pm),m_=["OL","UL","MENU"],__=function(e,t,i,s){for(var r=t.firstChild,o=void 0;r;r=o)if(o=r.nextSibling,w_(r)&&r.data.trim().length>0)i.textNodes.push(new t_(e,r,i.styles));else if(x_(r))if(N_(r)&&r.assignedNodes)r.assignedNodes().forEach((function(t){return __(e,t,i,s)}));else{var n=v_(e,r);n.styles.isVisible()&&(y_(r,n,s)?n.flags|=4:B_(n.styles)&&(n.flags|=2),-1!==m_.indexOf(r.tagName)&&(n.flags|=8),i.elements.push(n),r.slot,r.shadowRoot?__(e,r.shadowRoot,n,s):k_(r)||I_(r)||O_(r)||__(e,r,n,s))}},v_=function(e,t){return R_(t)?new o_(e,t):S_(t)?new n_(e,t):I_(t)?new a_(e,t):M_(t)?new l_(e,t):F_(t)?new A_(e,t):E_(t)?new d_(e,t):O_(t)?new p_(e,t):k_(t)?new f_(e,t):L_(t)?new g_(e,t):new Pm(e,t)},b_=function(e,t){var i=v_(e,t);return i.flags|=4,__(e,t,i,i),i},y_=function(e,t,i){return t.styles.isPositionedWithZIndex()||t.styles.opacity<1||t.styles.isTransformed()||D_(e)&&i.styles.isTransparent()},B_=function(e){return e.isPositioned()||e.isFloating()},w_=function(e){return e.nodeType===Node.TEXT_NODE},x_=function(e){return e.nodeType===Node.ELEMENT_NODE},P_=function(e){return x_(e)&&void 0!==e.style&&!C_(e)},C_=function(e){return"object"==typeof e.className},M_=function(e){return"LI"===e.tagName},F_=function(e){return"OL"===e.tagName},E_=function(e){return"INPUT"===e.tagName},I_=function(e){return"svg"===e.tagName},D_=function(e){return"BODY"===e.tagName},S_=function(e){return"CANVAS"===e.tagName},T_=function(e){return"VIDEO"===e.tagName},R_=function(e){return"IMG"===e.tagName},L_=function(e){return"IFRAME"===e.tagName},U_=function(e){return"STYLE"===e.tagName},k_=function(e){return"TEXTAREA"===e.tagName},O_=function(e){return"SELECT"===e.tagName},N_=function(e){return"SLOT"===e.tagName},Q_=function(e){return e.tagName.indexOf("-")>0},V_=function(){function e(){this.counters={}}return e.prototype.getCounterValue=function(e){var t=this.counters[e];return t&&t.length?t[t.length-1]:1},e.prototype.getCounterValues=function(e){var t=this.counters[e];return t||[]},e.prototype.pop=function(e){var t=this;e.forEach((function(e){return t.counters[e].pop()}))},e.prototype.parse=function(e){var t=this,i=e.counterIncrement,s=e.counterReset,r=!0;null!==i&&i.forEach((function(e){var i=t.counters[e.counter];i&&0!==e.increment&&(r=!1,i.length||i.push(1),i[Math.max(0,i.length-1)]+=e.increment)}));var o=[];return r&&s.forEach((function(e){var i=t.counters[e.counter];o.push(e.counter),i||(i=t.counters[e.counter]=[]),i.push(e.reset)})),o},e}(),H_={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},j_={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["Ք","Փ","Ւ","Ց","Ր","Տ","Վ","Ս","Ռ","Ջ","Պ","Չ","Ո","Շ","Ն","Յ","Մ","Ճ","Ղ","Ձ","Հ","Կ","Ծ","Խ","Լ","Ի","Ժ","Թ","Ը","Է","Զ","Ե","Դ","Գ","Բ","Ա"]},G_={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["י׳","ט׳","ח׳","ז׳","ו׳","ה׳","ד׳","ג׳","ב׳","א׳","ת","ש","ר","ק","צ","פ","ע","ס","נ","מ","ל","כ","יט","יח","יז","טז","טו","י","ט","ח","ז","ו","ה","ד","ג","ב","א"]},z_={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["ჵ","ჰ","ჯ","ჴ","ხ","ჭ","წ","ძ","ც","ჩ","შ","ყ","ღ","ქ","ფ","ჳ","ტ","ს","რ","ჟ","პ","ო","ჲ","ნ","მ","ლ","კ","ი","თ","ჱ","ზ","ვ","ე","დ","გ","ბ","ა"]},W_=function(e,t,i,s,r,o){return e<t||e>i?Z_(e,r,o.length>0):s.integers.reduce((function(t,i,r){for(;e>=i;)e-=i,t+=s.values[r];return t}),"")+o},K_=function(e,t,i,s){var r="";do{i||e--,r=s(e)+r,e/=t}while(e*t>=t);return r},X_=function(e,t,i,s,r){var o=i-t+1;return(e<0?"-":"")+(K_(Math.abs(e),o,s,(function(e){return wd(Math.floor(e%o)+t)}))+r)},J_=function(e,t,i){void 0===i&&(i=". ");var s=t.length;return K_(Math.abs(e),s,!1,(function(e){return t[Math.floor(e%s)]}))+i},Y_=function(e,t,i,s,r,o){if(e<-9999||e>9999)return Z_(e,4,r.length>0);var n=Math.abs(e),a=r;if(0===n)return t[0]+a;for(var l=0;n>0&&l<=4;l++){var A=n%10;0===A&&Am(o,1)&&""!==a?a=t[A]+a:A>1||1===A&&0===l||1===A&&1===l&&Am(o,2)||1===A&&1===l&&Am(o,4)&&e>100||1===A&&l>1&&Am(o,8)?a=t[A]+(l>0?i[l-1]:"")+a:1===A&&l>0&&(a=i[l-1]+a),n=Math.floor(n/10)}return(e<0?s:"")+a},Z_=function(e,t,i){var s=i?". ":"",r=i?"、":"",o=i?", ":"",n=i?" ":"";switch(t){case 0:return"•"+n;case 1:return"◦"+n;case 2:return"◾"+n;case 5:var a=X_(e,48,57,!0,s);return a.length<4?"0"+a:a;case 4:return J_(e,"〇一二三四五六七八九",r);case 6:return W_(e,1,3999,H_,3,s).toLowerCase();case 7:return W_(e,1,3999,H_,3,s);case 8:return X_(e,945,969,!1,s);case 9:return X_(e,97,122,!1,s);case 10:return X_(e,65,90,!1,s);case 11:return X_(e,1632,1641,!0,s);case 12:case 49:return W_(e,1,9999,j_,3,s);case 35:return W_(e,1,9999,j_,3,s).toLowerCase();case 13:return X_(e,2534,2543,!0,s);case 14:case 30:return X_(e,6112,6121,!0,s);case 15:return J_(e,"子丑寅卯辰巳午未申酉戌亥",r);case 16:return J_(e,"甲乙丙丁戊己庚辛壬癸",r);case 17:case 48:return Y_(e,"零一二三四五六七八九","十百千萬","負",r,14);case 47:return Y_(e,"零壹貳參肆伍陸柒捌玖","拾佰仟萬","負",r,15);case 42:return Y_(e,"零一二三四五六七八九","十百千萬","负",r,14);case 41:return Y_(e,"零壹贰叁肆伍陆柒捌玖","拾佰仟萬","负",r,15);case 26:return Y_(e,"〇一二三四五六七八九","十百千万","マイナス",r,0);case 25:return Y_(e,"零壱弐参四伍六七八九","拾百千万","マイナス",r,7);case 31:return Y_(e,"영일이삼사오육칠팔구","십백천만","마이너스",o,7);case 33:return Y_(e,"零一二三四五六七八九","十百千萬","마이너스",o,0);case 32:return Y_(e,"零壹貳參四五六七八九","拾百千","마이너스",o,7);case 18:return X_(e,2406,2415,!0,s);case 20:return W_(e,1,19999,z_,3,s);case 21:return X_(e,2790,2799,!0,s);case 22:return X_(e,2662,2671,!0,s);case 22:return W_(e,1,10999,G_,3,s);case 23:return J_(e,"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");case 24:return J_(e,"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");case 27:return X_(e,3302,3311,!0,s);case 28:return J_(e,"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン",r);case 29:return J_(e,"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス",r);case 34:return X_(e,3792,3801,!0,s);case 37:return X_(e,6160,6169,!0,s);case 38:return X_(e,4160,4169,!0,s);case 39:return X_(e,2918,2927,!0,s);case 40:return X_(e,1776,1785,!0,s);case 43:return X_(e,3046,3055,!0,s);case 44:return X_(e,3174,3183,!0,s);case 45:return X_(e,3664,3673,!0,s);case 46:return X_(e,3872,3881,!0,s);default:return X_(e,48,57,!0,s)}},q_=function(){function e(e,t,i){if(this.context=e,this.options=i,this.scrolledElements=[],this.referenceElement=t,this.counters=new V_,this.quoteDepth=0,!t.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(t.ownerDocument.documentElement,!1)}return e.prototype.toIFrame=function(e,t){var i=this,s=ev(e,t);if(!s.contentWindow)return Promise.reject("Unable to find iframe window");var r=e.defaultView.pageXOffset,o=e.defaultView.pageYOffset,n=s.contentWindow,a=n.document,l=sv(s).then((function(){return md(i,void 0,void 0,(function(){var e,i;return _d(this,(function(r){switch(r.label){case 0:return this.scrolledElements.forEach(lv),n&&(n.scrollTo(t.left,t.top),!/(iPad|iPhone|iPod)/g.test(navigator.userAgent)||n.scrollY===t.top&&n.scrollX===t.left||(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(n.scrollX-t.left,n.scrollY-t.top,0,0))),e=this.options.onclone,void 0===(i=this.clonedReferenceElement)?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:a.fonts&&a.fonts.ready?[4,a.fonts.ready]:[3,2];case 1:r.sent(),r.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,iv(a)]:[3,4];case 3:r.sent(),r.label=4;case 4:return"function"==typeof e?[2,Promise.resolve().then((function(){return e(a,i)})).then((function(){return s}))]:[2,s]}}))}))}));return a.open(),a.write(nv(document.doctype)+"<html></html>"),av(this.referenceElement.ownerDocument,r,o),a.replaceChild(a.adoptNode(this.documentElement),a.documentElement),a.close(),l},e.prototype.createElementClone=function(e){if(xm(e,2),S_(e))return this.createCanvasClone(e);if(T_(e))return this.createVideoClone(e);if(U_(e))return this.createStyleClone(e);var t=e.cloneNode(!1);return R_(t)&&(R_(e)&&e.currentSrc&&e.currentSrc!==e.src&&(t.src=e.currentSrc,t.srcset=""),"lazy"===t.loading&&(t.loading="eager")),Q_(t)?this.createCustomElementClone(t):t},e.prototype.createCustomElementClone=function(e){var t=document.createElement("html2canvascustomelement");return ov(e.style,t),t},e.prototype.createStyleClone=function(e){try{var t=e.sheet;if(t&&t.cssRules){var i=[].slice.call(t.cssRules,0).reduce((function(e,t){return t&&"string"==typeof t.cssText?e+t.cssText:e}),""),s=e.cloneNode(!1);return s.textContent=i,s}}catch(e){if(this.context.logger.error("Unable to access cssRules property",e),"SecurityError"!==e.name)throw e}return e.cloneNode(!1)},e.prototype.createCanvasClone=function(e){var t;if(this.options.inlineImages&&e.ownerDocument){var i=e.ownerDocument.createElement("img");try{return i.src=e.toDataURL(),i}catch(t){this.context.logger.info("Unable to inline canvas contents, canvas is tainted",e)}}var s=e.cloneNode(!1);try{s.width=e.width,s.height=e.height;var r=e.getContext("2d"),o=s.getContext("2d");if(o)if(!this.options.allowTaint&&r)o.putImageData(r.getImageData(0,0,e.width,e.height),0,0);else{var n=null!==(t=e.getContext("webgl2"))&&void 0!==t?t:e.getContext("webgl");if(n){var a=n.getContextAttributes();!1===(null==a?void 0:a.preserveDrawingBuffer)&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",e)}o.drawImage(e,0,0)}return s}catch(t){this.context.logger.info("Unable to clone canvas as it is tainted",e)}return s},e.prototype.createVideoClone=function(e){var t=e.ownerDocument.createElement("canvas");t.width=e.offsetWidth,t.height=e.offsetHeight;var i=t.getContext("2d");try{return i&&(i.drawImage(e,0,0,t.width,t.height),this.options.allowTaint||i.getImageData(0,0,t.width,t.height)),t}catch(t){this.context.logger.info("Unable to clone video as it is tainted",e)}var s=e.ownerDocument.createElement("canvas");return s.width=e.offsetWidth,s.height=e.offsetHeight,s},e.prototype.appendChildNode=function(e,t,i){x_(t)&&(function(e){return"SCRIPT"===e.tagName}(t)||t.hasAttribute("data-html2canvas-ignore")||"function"==typeof this.options.ignoreElements&&this.options.ignoreElements(t))||this.options.copyStyles&&x_(t)&&U_(t)||e.appendChild(this.cloneNode(t,i))},e.prototype.cloneChildNodes=function(e,t,i){for(var s=this,r=e.shadowRoot?e.shadowRoot.firstChild:e.firstChild;r;r=r.nextSibling)if(x_(r)&&N_(r)&&"function"==typeof r.assignedNodes){var o=r.assignedNodes();o.length&&o.forEach((function(e){return s.appendChildNode(t,e,i)}))}else this.appendChildNode(t,r,i)},e.prototype.cloneNode=function(e,t){if(w_(e))return document.createTextNode(e.data);if(!e.ownerDocument)return e.cloneNode(!1);var i=e.ownerDocument.defaultView;if(i&&x_(e)&&(P_(e)||C_(e))){var s=this.createElementClone(e);s.style.transitionProperty="none";var r=i.getComputedStyle(e),o=i.getComputedStyle(e,":before"),n=i.getComputedStyle(e,":after");this.referenceElement===e&&P_(s)&&(this.clonedReferenceElement=s),D_(s)&&cv(s);var a=this.counters.parse(new Bm(this.context,r)),l=this.resolvePseudoContent(e,s,o,Rm.BEFORE);Q_(e)&&(t=!0),T_(e)||this.cloneChildNodes(e,s,t),l&&s.insertBefore(l,s.firstChild);var A=this.resolvePseudoContent(e,s,n,Rm.AFTER);return A&&s.appendChild(A),this.counters.pop(a),(r&&(this.options.copyStyles||C_(e))&&!L_(e)||t)&&ov(r,s),0===e.scrollTop&&0===e.scrollLeft||this.scrolledElements.push([s,e.scrollLeft,e.scrollTop]),(k_(e)||O_(e))&&(k_(s)||O_(s))&&(s.value=e.value),s}return e.cloneNode(!1)},e.prototype.resolvePseudoContent=function(e,t,i,s){var r=this;if(i){var o=i.content,n=t.ownerDocument;if(n&&o&&"none"!==o&&"-moz-alt-content"!==o&&"none"!==i.display){this.counters.parse(new Bm(this.context,i));var a=new ym(this.context,i),l=n.createElement("html2canvaspseudoelement");ov(i,l),a.content.forEach((function(t){if(0===t.type)l.appendChild(n.createTextNode(t.value));else if(22===t.type){var i=n.createElement("img");i.src=t.value,i.style.opacity="1",l.appendChild(i)}else if(18===t.type){if("attr"===t.name){var s=t.values.filter(ef);s.length&&l.appendChild(n.createTextNode(e.getAttribute(s[0].value)||""))}else if("counter"===t.name){var o=t.values.filter(of),A=o[0],h=o[1];if(A&&ef(A)){var c=r.counters.getCounterValue(A.value),u=h&&ef(h)?Eg.parse(r.context,h.value):3;l.appendChild(n.createTextNode(Z_(c,u,!1)))}}else if("counters"===t.name){var d=t.values.filter(of),p=(A=d[0],d[1]);h=d[2];if(A&&ef(A)){var f=r.counters.getCounterValues(A.value),g=h&&ef(h)?Eg.parse(r.context,h.value):3,m=p&&0===p.type?p.value:"",_=f.map((function(e){return Z_(e,g,!1)})).join(m);l.appendChild(n.createTextNode(_))}}}else if(20===t.type)switch(t.value){case"open-quote":l.appendChild(n.createTextNode(fm(a.quotes,r.quoteDepth++,!0)));break;case"close-quote":l.appendChild(n.createTextNode(fm(a.quotes,--r.quoteDepth,!1)));break;default:l.appendChild(n.createTextNode(t.value))}})),l.className=Av+" "+hv;var A=s===Rm.BEFORE?" "+Av:" "+hv;return C_(t)?t.className.baseValue+=A:t.className+=A,l}}},e.destroy=function(e){return!!e.parentNode&&(e.parentNode.removeChild(e),!0)},e}();!function(e){e[e.BEFORE=0]="BEFORE",e[e.AFTER=1]="AFTER"}(Rm||(Rm={}));var $_,ev=function(e,t){var i=e.createElement("iframe");return i.className="html2canvas-container",i.style.visibility="hidden",i.style.position="fixed",i.style.left="-10000px",i.style.top="0px",i.style.border="0",i.width=t.width.toString(),i.height=t.height.toString(),i.scrolling="no",i.setAttribute("data-html2canvas-ignore","true"),e.body.appendChild(i),i},tv=function(e){return new Promise((function(t){e.complete?t():e.src?(e.onload=t,e.onerror=t):t()}))},iv=function(e){return Promise.all([].slice.call(e.images,0).map(tv))},sv=function(e){return new Promise((function(t,i){var s=e.contentWindow;if(!s)return i("No window assigned for iframe");var r=s.document;s.onload=e.onload=function(){s.onload=e.onload=null;var i=setInterval((function(){r.body.childNodes.length>0&&"complete"===r.readyState&&(clearInterval(i),t(e))}),50)}}))},rv=["all","d","content"],ov=function(e,t){for(var i=e.length-1;i>=0;i--){var s=e.item(i);-1===rv.indexOf(s)&&t.style.setProperty(s,e.getPropertyValue(s))}return t},nv=function(e){var t="";return e&&(t+="<!DOCTYPE ",e.name&&(t+=e.name),e.internalSubset&&(t+=e.internalSubset),e.publicId&&(t+='"'+e.publicId+'"'),e.systemId&&(t+='"'+e.systemId+'"'),t+=">"),t},av=function(e,t,i){e&&e.defaultView&&(t!==e.defaultView.pageXOffset||i!==e.defaultView.pageYOffset)&&e.defaultView.scrollTo(t,i)},lv=function(e){var t=e[0],i=e[1],s=e[2];t.scrollLeft=i,t.scrollTop=s},Av="___html2canvas___pseudoelement_before",hv="___html2canvas___pseudoelement_after",cv=function(e){uv(e,"."+Av+':before{\n content: "" !important;\n display: none !important;\n}\n .'+hv+':after{\n content: "" !important;\n display: none !important;\n}')},uv=function(e,t){var i=e.ownerDocument;if(i){var s=i.createElement("style");s.textContent=t,e.appendChild(s)}},dv=function(){function e(){}return e.getOrigin=function(t){var i=e._link;return i?(i.href=t,i.href=i.href,i.protocol+i.hostname+i.port):"about:blank"},e.isSameOrigin=function(t){return e.getOrigin(t)===e._origin},e.setContext=function(t){e._link=t.document.createElement("a"),e._origin=e.getOrigin(t.location.href)},e._origin="about:blank",e}(),pv=function(){function e(e,t){this.context=e,this._options=t,this._cache={}}return e.prototype.addImage=function(e){var t=Promise.resolve();return this.has(e)?t:yv(e)||_v(e)?((this._cache[e]=this.loadImage(e)).catch((function(){})),t):t},e.prototype.match=function(e){return this._cache[e]},e.prototype.loadImage=function(e){return md(this,void 0,void 0,(function(){var t,i,s,r,o=this;return _d(this,(function(n){switch(n.label){case 0:return t=dv.isSameOrigin(e),i=!vv(e)&&!0===this._options.useCORS&&Km.SUPPORT_CORS_IMAGES&&!t,s=!vv(e)&&!t&&!yv(e)&&"string"==typeof this._options.proxy&&Km.SUPPORT_CORS_XHR&&!i,t||!1!==this._options.allowTaint||vv(e)||yv(e)||s||i?(r=e,s?[4,this.proxy(r)]:[3,2]):[2];case 1:r=n.sent(),n.label=2;case 2:return this.context.logger.debug("Added image "+e.substring(0,256)),[4,new Promise((function(e,t){var s=new Image;s.onload=function(){return e(s)},s.onerror=t,(bv(r)||i)&&(s.crossOrigin="anonymous"),s.src=r,!0===s.complete&&setTimeout((function(){return e(s)}),500),o._options.imageTimeout>0&&setTimeout((function(){return t("Timed out ("+o._options.imageTimeout+"ms) loading image")}),o._options.imageTimeout)}))];case 3:return[2,n.sent()]}}))}))},e.prototype.has=function(e){return void 0!==this._cache[e]},e.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},e.prototype.proxy=function(e){var t=this,i=this._options.proxy;if(!i)throw new Error("No proxy defined");var s=e.substring(0,256);return new Promise((function(r,o){var n=Km.SUPPORT_RESPONSE_TYPE?"blob":"text",a=new XMLHttpRequest;a.onload=function(){if(200===a.status)if("text"===n)r(a.response);else{var e=new FileReader;e.addEventListener("load",(function(){return r(e.result)}),!1),e.addEventListener("error",(function(e){return o(e)}),!1),e.readAsDataURL(a.response)}else o("Failed to proxy resource "+s+" with status code "+a.status)},a.onerror=o;var l=i.indexOf("?")>-1?"&":"?";if(a.open("GET",""+i+l+"url="+encodeURIComponent(e)+"&responseType="+n),"text"!==n&&a instanceof XMLHttpRequest&&(a.responseType=n),t._options.imageTimeout){var A=t._options.imageTimeout;a.timeout=A,a.ontimeout=function(){return o("Timed out ("+A+"ms) proxying "+s)}}a.send()}))},e}(),fv=/^data:image\/svg\+xml/i,gv=/^data:image\/.*;base64,/i,mv=/^data:image\/.*/i,_v=function(e){return Km.SUPPORT_SVG_DRAWING||!Bv(e)},vv=function(e){return mv.test(e)},bv=function(e){return gv.test(e)},yv=function(e){return"blob"===e.substr(0,4)},Bv=function(e){return"svg"===e.substr(-3).toLowerCase()||fv.test(e)},wv=function(){function e(e,t){this.type=0,this.x=e,this.y=t}return e.prototype.add=function(t,i){return new e(this.x+t,this.y+i)},e}(),xv=function(e,t,i){return new wv(e.x+(t.x-e.x)*i,e.y+(t.y-e.y)*i)},Pv=function(){function e(e,t,i,s){this.type=1,this.start=e,this.startControl=t,this.endControl=i,this.end=s}return e.prototype.subdivide=function(t,i){var s=xv(this.start,this.startControl,t),r=xv(this.startControl,this.endControl,t),o=xv(this.endControl,this.end,t),n=xv(s,r,t),a=xv(r,o,t),l=xv(n,a,t);return i?new e(this.start,s,n,l):new e(l,a,o,this.end)},e.prototype.add=function(t,i){return new e(this.start.add(t,i),this.startControl.add(t,i),this.endControl.add(t,i),this.end.add(t,i))},e.prototype.reverse=function(){return new e(this.end,this.endControl,this.startControl,this.start)},e}(),Cv=function(e){return 1===e.type},Mv=function(e){var t=e.styles,i=e.bounds,s=pf(t.borderTopLeftRadius,i.width,i.height),r=s[0],o=s[1],n=pf(t.borderTopRightRadius,i.width,i.height),a=n[0],l=n[1],A=pf(t.borderBottomRightRadius,i.width,i.height),h=A[0],c=A[1],u=pf(t.borderBottomLeftRadius,i.width,i.height),d=u[0],p=u[1],f=[];f.push((r+a)/i.width),f.push((d+h)/i.width),f.push((o+p)/i.height),f.push((l+c)/i.height);var g=Math.max.apply(Math,f);g>1&&(r/=g,o/=g,a/=g,l/=g,h/=g,c/=g,d/=g,p/=g);var m=i.width-a,_=i.height-c,v=i.width-h,b=i.height-p,y=t.borderTopWidth,B=t.borderRightWidth,w=t.borderBottomWidth,x=t.borderLeftWidth,P=ff(t.paddingTop,e.bounds.width),C=ff(t.paddingRight,e.bounds.width),M=ff(t.paddingBottom,e.bounds.width),F=ff(t.paddingLeft,e.bounds.width);this.topLeftBorderDoubleOuterBox=r>0||o>0?Fv(i.left+x/3,i.top+y/3,r-x/3,o-y/3,$_.TOP_LEFT):new wv(i.left+x/3,i.top+y/3),this.topRightBorderDoubleOuterBox=r>0||o>0?Fv(i.left+m,i.top+y/3,a-B/3,l-y/3,$_.TOP_RIGHT):new wv(i.left+i.width-B/3,i.top+y/3),this.bottomRightBorderDoubleOuterBox=h>0||c>0?Fv(i.left+v,i.top+_,h-B/3,c-w/3,$_.BOTTOM_RIGHT):new wv(i.left+i.width-B/3,i.top+i.height-w/3),this.bottomLeftBorderDoubleOuterBox=d>0||p>0?Fv(i.left+x/3,i.top+b,d-x/3,p-w/3,$_.BOTTOM_LEFT):new wv(i.left+x/3,i.top+i.height-w/3),this.topLeftBorderDoubleInnerBox=r>0||o>0?Fv(i.left+2*x/3,i.top+2*y/3,r-2*x/3,o-2*y/3,$_.TOP_LEFT):new wv(i.left+2*x/3,i.top+2*y/3),this.topRightBorderDoubleInnerBox=r>0||o>0?Fv(i.left+m,i.top+2*y/3,a-2*B/3,l-2*y/3,$_.TOP_RIGHT):new wv(i.left+i.width-2*B/3,i.top+2*y/3),this.bottomRightBorderDoubleInnerBox=h>0||c>0?Fv(i.left+v,i.top+_,h-2*B/3,c-2*w/3,$_.BOTTOM_RIGHT):new wv(i.left+i.width-2*B/3,i.top+i.height-2*w/3),this.bottomLeftBorderDoubleInnerBox=d>0||p>0?Fv(i.left+2*x/3,i.top+b,d-2*x/3,p-2*w/3,$_.BOTTOM_LEFT):new wv(i.left+2*x/3,i.top+i.height-2*w/3),this.topLeftBorderStroke=r>0||o>0?Fv(i.left+x/2,i.top+y/2,r-x/2,o-y/2,$_.TOP_LEFT):new wv(i.left+x/2,i.top+y/2),this.topRightBorderStroke=r>0||o>0?Fv(i.left+m,i.top+y/2,a-B/2,l-y/2,$_.TOP_RIGHT):new wv(i.left+i.width-B/2,i.top+y/2),this.bottomRightBorderStroke=h>0||c>0?Fv(i.left+v,i.top+_,h-B/2,c-w/2,$_.BOTTOM_RIGHT):new wv(i.left+i.width-B/2,i.top+i.height-w/2),this.bottomLeftBorderStroke=d>0||p>0?Fv(i.left+x/2,i.top+b,d-x/2,p-w/2,$_.BOTTOM_LEFT):new wv(i.left+x/2,i.top+i.height-w/2),this.topLeftBorderBox=r>0||o>0?Fv(i.left,i.top,r,o,$_.TOP_LEFT):new wv(i.left,i.top),this.topRightBorderBox=a>0||l>0?Fv(i.left+m,i.top,a,l,$_.TOP_RIGHT):new wv(i.left+i.width,i.top),this.bottomRightBorderBox=h>0||c>0?Fv(i.left+v,i.top+_,h,c,$_.BOTTOM_RIGHT):new wv(i.left+i.width,i.top+i.height),this.bottomLeftBorderBox=d>0||p>0?Fv(i.left,i.top+b,d,p,$_.BOTTOM_LEFT):new wv(i.left,i.top+i.height),this.topLeftPaddingBox=r>0||o>0?Fv(i.left+x,i.top+y,Math.max(0,r-x),Math.max(0,o-y),$_.TOP_LEFT):new wv(i.left+x,i.top+y),this.topRightPaddingBox=a>0||l>0?Fv(i.left+Math.min(m,i.width-B),i.top+y,m>i.width+B?0:Math.max(0,a-B),Math.max(0,l-y),$_.TOP_RIGHT):new wv(i.left+i.width-B,i.top+y),this.bottomRightPaddingBox=h>0||c>0?Fv(i.left+Math.min(v,i.width-x),i.top+Math.min(_,i.height-w),Math.max(0,h-B),Math.max(0,c-w),$_.BOTTOM_RIGHT):new wv(i.left+i.width-B,i.top+i.height-w),this.bottomLeftPaddingBox=d>0||p>0?Fv(i.left+x,i.top+Math.min(b,i.height-w),Math.max(0,d-x),Math.max(0,p-w),$_.BOTTOM_LEFT):new wv(i.left+x,i.top+i.height-w),this.topLeftContentBox=r>0||o>0?Fv(i.left+x+F,i.top+y+P,Math.max(0,r-(x+F)),Math.max(0,o-(y+P)),$_.TOP_LEFT):new wv(i.left+x+F,i.top+y+P),this.topRightContentBox=a>0||l>0?Fv(i.left+Math.min(m,i.width+x+F),i.top+y+P,m>i.width+x+F?0:a-x+F,l-(y+P),$_.TOP_RIGHT):new wv(i.left+i.width-(B+C),i.top+y+P),this.bottomRightContentBox=h>0||c>0?Fv(i.left+Math.min(v,i.width-(x+F)),i.top+Math.min(_,i.height+y+P),Math.max(0,h-(B+C)),c-(w+M),$_.BOTTOM_RIGHT):new wv(i.left+i.width-(B+C),i.top+i.height-(w+M)),this.bottomLeftContentBox=d>0||p>0?Fv(i.left+x+F,i.top+b,Math.max(0,d-(x+F)),p-(w+M),$_.BOTTOM_LEFT):new wv(i.left+x+F,i.top+i.height-(w+M))};!function(e){e[e.TOP_LEFT=0]="TOP_LEFT",e[e.TOP_RIGHT=1]="TOP_RIGHT",e[e.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",e[e.BOTTOM_LEFT=3]="BOTTOM_LEFT"}($_||($_={}));var Fv=function(e,t,i,s,r){var o=(Math.sqrt(2)-1)/3*4,n=i*o,a=s*o,l=e+i,A=t+s;switch(r){case $_.TOP_LEFT:return new Pv(new wv(e,A),new wv(e,A-a),new wv(l-n,t),new wv(l,t));case $_.TOP_RIGHT:return new Pv(new wv(e,t),new wv(e+n,t),new wv(l,A-a),new wv(l,A));case $_.BOTTOM_RIGHT:return new Pv(new wv(l,t),new wv(l,t+a),new wv(e+n,A),new wv(e,A));case $_.BOTTOM_LEFT:default:return new Pv(new wv(l,A),new wv(l-n,A),new wv(e,t+a),new wv(e,t))}},Ev=function(e){return[e.topLeftBorderBox,e.topRightBorderBox,e.bottomRightBorderBox,e.bottomLeftBorderBox]},Iv=function(e){return[e.topLeftPaddingBox,e.topRightPaddingBox,e.bottomRightPaddingBox,e.bottomLeftPaddingBox]},Dv=function(e,t,i){this.offsetX=e,this.offsetY=t,this.matrix=i,this.type=0,this.target=6},Sv=function(e,t){this.path=e,this.target=t,this.type=1},Tv=function(e){this.opacity=e,this.type=2,this.target=6},Rv=function(e){return 1===e.type},Lv=function(e,t){return e.length===t.length&&e.some((function(e,i){return e===t[i]}))},Uv=function(e){this.element=e,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]},kv=function(){function e(e,t){if(this.container=e,this.parent=t,this.effects=[],this.curves=new Mv(this.container),this.container.styles.opacity<1&&this.effects.push(new Tv(this.container.styles.opacity)),null!==this.container.styles.transform){var i=this.container.bounds.left+this.container.styles.transformOrigin[0].number,s=this.container.bounds.top+this.container.styles.transformOrigin[1].number,r=this.container.styles.transform;this.effects.push(new Dv(i,s,r))}if(0!==this.container.styles.overflowX){var o=Ev(this.curves),n=Iv(this.curves);Lv(o,n)?this.effects.push(new Sv(o,6)):(this.effects.push(new Sv(o,2)),this.effects.push(new Sv(n,4)))}}return e.prototype.getEffects=function(e){for(var t=-1===[2,3].indexOf(this.container.styles.position),i=this.parent,s=this.effects.slice(0);i;){var r=i.effects.filter((function(e){return!Rv(e)}));if(t||0!==i.container.styles.position||!i.parent){if(s.unshift.apply(s,r),t=-1===[2,3].indexOf(i.container.styles.position),0!==i.container.styles.overflowX){var o=Ev(i.curves),n=Iv(i.curves);Lv(o,n)||s.unshift(new Sv(n,6))}}else s.unshift.apply(s,r);i=i.parent}return s.filter((function(t){return Am(t.target,e)}))},e}(),Ov=function(e,t,i,s){e.container.elements.forEach((function(r){var o=Am(r.flags,4),n=Am(r.flags,2),a=new kv(r,e);Am(r.styles.display,2048)&&s.push(a);var l=Am(r.flags,8)?[]:s;if(o||n){var A=o||r.styles.isPositioned()?i:t,h=new Uv(a);if(r.styles.isPositioned()||r.styles.opacity<1||r.styles.isTransformed()){var c=r.styles.zIndex.order;if(c<0){var u=0;A.negativeZIndex.some((function(e,t){return c>e.element.container.styles.zIndex.order?(u=t,!1):u>0})),A.negativeZIndex.splice(u,0,h)}else if(c>0){var d=0;A.positiveZIndex.some((function(e,t){return c>=e.element.container.styles.zIndex.order?(d=t+1,!1):d>0})),A.positiveZIndex.splice(d,0,h)}else A.zeroOrAutoZIndexOrTransformedOrOpacity.push(h)}else r.styles.isFloating()?A.nonPositionedFloats.push(h):A.nonPositionedInlineLevel.push(h);Ov(a,h,o?h:i,l)}else r.styles.isInlineLevel()?t.inlineLevel.push(a):t.nonInlineLevel.push(a),Ov(a,t,i,l);Am(r.flags,8)&&Nv(r,l)}))},Nv=function(e,t){for(var i=e instanceof A_?e.start:1,s=e instanceof A_&&e.reversed,r=0;r<t.length;r++){var o=t[r];o.container instanceof l_&&"number"==typeof o.container.value&&0!==o.container.value&&(i=o.container.value),o.listValue=Z_(i,o.container.styles.listStyleType,!0),i+=s?-1:1}},Qv=function(e,t){switch(t){case 0:return Hv(e.topLeftBorderBox,e.topLeftPaddingBox,e.topRightBorderBox,e.topRightPaddingBox);case 1:return Hv(e.topRightBorderBox,e.topRightPaddingBox,e.bottomRightBorderBox,e.bottomRightPaddingBox);case 2:return Hv(e.bottomRightBorderBox,e.bottomRightPaddingBox,e.bottomLeftBorderBox,e.bottomLeftPaddingBox);default:return Hv(e.bottomLeftBorderBox,e.bottomLeftPaddingBox,e.topLeftBorderBox,e.topLeftPaddingBox)}},Vv=function(e,t){var i=[];return Cv(e)?i.push(e.subdivide(.5,!1)):i.push(e),Cv(t)?i.push(t.subdivide(.5,!0)):i.push(t),i},Hv=function(e,t,i,s){var r=[];return Cv(e)?r.push(e.subdivide(.5,!1)):r.push(e),Cv(i)?r.push(i.subdivide(.5,!0)):r.push(i),Cv(s)?r.push(s.subdivide(.5,!0).reverse()):r.push(s),Cv(t)?r.push(t.subdivide(.5,!1).reverse()):r.push(t),r},jv=function(e){var t=e.bounds,i=e.styles;return t.add(i.borderLeftWidth,i.borderTopWidth,-(i.borderRightWidth+i.borderLeftWidth),-(i.borderTopWidth+i.borderBottomWidth))},Gv=function(e){var t=e.styles,i=e.bounds,s=ff(t.paddingLeft,i.width),r=ff(t.paddingRight,i.width),o=ff(t.paddingTop,i.width),n=ff(t.paddingBottom,i.width);return i.add(s+t.borderLeftWidth,o+t.borderTopWidth,-(t.borderRightWidth+t.borderLeftWidth+s+r),-(t.borderTopWidth+t.borderBottomWidth+o+n))},zv=function(e,t,i){var s=function(e,t){return 0===e?t.bounds:2===e?Gv(t):jv(t)}(Jv(e.styles.backgroundOrigin,t),e),r=function(e,t){return 0===e?t.bounds:2===e?Gv(t):jv(t)}(Jv(e.styles.backgroundClip,t),e),o=Xv(Jv(e.styles.backgroundSize,t),i,s),n=o[0],a=o[1],l=pf(Jv(e.styles.backgroundPosition,t),s.width-n,s.height-a);return[Yv(Jv(e.styles.backgroundRepeat,t),l,o,s,r),Math.round(s.left+l[0]),Math.round(s.top+l[1]),n,a]},Wv=function(e){return ef(e)&&e.value===Vf.AUTO},Kv=function(e){return"number"==typeof e},Xv=function(e,t,i){var s=t[0],r=t[1],o=t[2],n=e[0],a=e[1];if(!n)return[0,0];if(Af(n)&&a&&Af(a))return[ff(n,i.width),ff(a,i.height)];var l=Kv(o);if(ef(n)&&(n.value===Vf.CONTAIN||n.value===Vf.COVER))return Kv(o)?i.width/i.height<o!=(n.value===Vf.COVER)?[i.width,i.width/o]:[i.height*o,i.height]:[i.width,i.height];var A=Kv(s),h=Kv(r),c=A||h;if(Wv(n)&&(!a||Wv(a)))return A&&h?[s,r]:l||c?c&&l?[A?s:r*o,h?r:s/o]:[A?s:i.width,h?r:i.height]:[i.width,i.height];if(l){var u=0,d=0;return Af(n)?u=ff(n,i.width):Af(a)&&(d=ff(a,i.height)),Wv(n)?u=d*o:a&&!Wv(a)||(d=u/o),[u,d]}var p=null,f=null;if(Af(n)?p=ff(n,i.width):a&&Af(a)&&(f=ff(a,i.height)),null===p||a&&!Wv(a)||(f=A&&h?p/s*r:i.height),null!==f&&Wv(n)&&(p=A&&h?f/r*s:i.width),null!==p&&null!==f)return[p,f];throw new Error("Unable to calculate background-size for element")},Jv=function(e,t){var i=e[t];return void 0===i?e[0]:i},Yv=function(e,t,i,s,r){var o=t[0],n=t[1],a=i[0],l=i[1];switch(e){case 2:return[new wv(Math.round(s.left),Math.round(s.top+n)),new wv(Math.round(s.left+s.width),Math.round(s.top+n)),new wv(Math.round(s.left+s.width),Math.round(l+s.top+n)),new wv(Math.round(s.left),Math.round(l+s.top+n))];case 3:return[new wv(Math.round(s.left+o),Math.round(s.top)),new wv(Math.round(s.left+o+a),Math.round(s.top)),new wv(Math.round(s.left+o+a),Math.round(s.height+s.top)),new wv(Math.round(s.left+o),Math.round(s.height+s.top))];case 1:return[new wv(Math.round(s.left+o),Math.round(s.top+n)),new wv(Math.round(s.left+o+a),Math.round(s.top+n)),new wv(Math.round(s.left+o+a),Math.round(s.top+n+l)),new wv(Math.round(s.left+o),Math.round(s.top+n+l))];default:return[new wv(Math.round(r.left),Math.round(r.top)),new wv(Math.round(r.left+r.width),Math.round(r.top)),new wv(Math.round(r.left+r.width),Math.round(r.height+r.top)),new wv(Math.round(r.left),Math.round(r.height+r.top))]}},Zv=function(){function e(e){this._data={},this._document=e}return e.prototype.parseMetrics=function(e,t){var i=this._document.createElement("div"),s=this._document.createElement("img"),r=this._document.createElement("span"),o=this._document.body;i.style.visibility="hidden",i.style.fontFamily=e,i.style.fontSize=t,i.style.margin="0",i.style.padding="0",i.style.whiteSpace="nowrap",o.appendChild(i),s.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",s.width=1,s.height=1,s.style.margin="0",s.style.padding="0",s.style.verticalAlign="baseline",r.style.fontFamily=e,r.style.fontSize=t,r.style.margin="0",r.style.padding="0",r.appendChild(this._document.createTextNode("Hidden Text")),i.appendChild(r),i.appendChild(s);var n=s.offsetTop-r.offsetTop+2;i.removeChild(r),i.appendChild(this._document.createTextNode("Hidden Text")),i.style.lineHeight="normal",s.style.verticalAlign="super";var a=s.offsetTop-i.offsetTop+2;return o.removeChild(i),{baseline:n,middle:a}},e.prototype.getMetrics=function(e,t){var i=e+" "+t;return void 0===this._data[i]&&(this._data[i]=this.parseMetrics(e,t)),this._data[i]},e}(),qv=function(e,t){this.context=e,this.options=t},$v=function(e){function t(t,i){var s=e.call(this,t,i)||this;return s._activeEffects=[],s.canvas=i.canvas?i.canvas:document.createElement("canvas"),s.ctx=s.canvas.getContext("2d"),i.canvas||(s.canvas.width=Math.floor(i.width*i.scale),s.canvas.height=Math.floor(i.height*i.scale),s.canvas.style.width=i.width+"px",s.canvas.style.height=i.height+"px"),s.fontMetrics=new Zv(document),s.ctx.scale(s.options.scale,s.options.scale),s.ctx.translate(-i.x,-i.y),s.ctx.textBaseline="bottom",s._activeEffects=[],s.context.logger.debug("Canvas renderer initialized ("+i.width+"x"+i.height+") with scale "+i.scale),s}return fd(t,e),t.prototype.applyEffects=function(e){for(var t=this;this._activeEffects.length;)this.popEffect();e.forEach((function(e){return t.applyEffect(e)}))},t.prototype.applyEffect=function(e){this.ctx.save(),function(e){return 2===e.type}(e)&&(this.ctx.globalAlpha=e.opacity),function(e){return 0===e.type}(e)&&(this.ctx.translate(e.offsetX,e.offsetY),this.ctx.transform(e.matrix[0],e.matrix[1],e.matrix[2],e.matrix[3],e.matrix[4],e.matrix[5]),this.ctx.translate(-e.offsetX,-e.offsetY)),Rv(e)&&(this.path(e.path),this.ctx.clip()),this._activeEffects.push(e)},t.prototype.popEffect=function(){this._activeEffects.pop(),this.ctx.restore()},t.prototype.renderStack=function(e){return md(this,void 0,void 0,(function(){return _d(this,(function(t){switch(t.label){case 0:return e.element.container.styles.isVisible()?[4,this.renderStackContent(e)]:[3,2];case 1:t.sent(),t.label=2;case 2:return[2]}}))}))},t.prototype.renderNode=function(e){return md(this,void 0,void 0,(function(){return _d(this,(function(t){switch(t.label){case 0:return Am(e.container.flags,16),e.container.styles.isVisible()?[4,this.renderNodeBackgroundAndBorders(e)]:[3,3];case 1:return t.sent(),[4,this.renderNodeContent(e)];case 2:t.sent(),t.label=3;case 3:return[2]}}))}))},t.prototype.renderTextWithLetterSpacing=function(e,t,i){var s=this;0===t?this.ctx.fillText(e.text,e.bounds.left,e.bounds.top+i):Zm(e.text).reduce((function(t,r){return s.ctx.fillText(r,t,e.bounds.top+i),t+s.ctx.measureText(r).width}),e.bounds.left)},t.prototype.createFontStyle=function(e){var t=e.fontVariant.filter((function(e){return"normal"===e||"small-caps"===e})).join(""),i=rb(e.fontFamily).join(", "),s=qp(e.fontSize)?""+e.fontSize.number+e.fontSize.unit:e.fontSize.number+"px";return[[e.fontStyle,t,e.fontWeight,s,i].join(" "),i,s]},t.prototype.renderTextNode=function(e,t){return md(this,void 0,void 0,(function(){var i,s,r,o,n,a,l,A,h=this;return _d(this,(function(c){return i=this.createFontStyle(t),s=i[0],r=i[1],o=i[2],this.ctx.font=s,this.ctx.direction=1===t.direction?"rtl":"ltr",this.ctx.textAlign="left",this.ctx.textBaseline="alphabetic",n=this.fontMetrics.getMetrics(r,o),a=n.baseline,l=n.middle,A=t.paintOrder,e.textBounds.forEach((function(e){A.forEach((function(i){switch(i){case 0:h.ctx.fillStyle=Bf(t.color),h.renderTextWithLetterSpacing(e,t.letterSpacing,a);var s=t.textShadow;s.length&&e.text.trim().length&&(s.slice(0).reverse().forEach((function(i){h.ctx.shadowColor=Bf(i.color),h.ctx.shadowOffsetX=i.offsetX.number*h.options.scale,h.ctx.shadowOffsetY=i.offsetY.number*h.options.scale,h.ctx.shadowBlur=i.blur.number,h.renderTextWithLetterSpacing(e,t.letterSpacing,a)})),h.ctx.shadowColor="",h.ctx.shadowOffsetX=0,h.ctx.shadowOffsetY=0,h.ctx.shadowBlur=0),t.textDecorationLine.length&&(h.ctx.fillStyle=Bf(t.textDecorationColor||t.color),t.textDecorationLine.forEach((function(t){switch(t){case 1:h.ctx.fillRect(e.bounds.left,Math.round(e.bounds.top+a),e.bounds.width,1);break;case 2:h.ctx.fillRect(e.bounds.left,Math.round(e.bounds.top),e.bounds.width,1);break;case 3:h.ctx.fillRect(e.bounds.left,Math.ceil(e.bounds.top+l),e.bounds.width,1)}})));break;case 1:t.webkitTextStrokeWidth&&e.text.trim().length&&(h.ctx.strokeStyle=Bf(t.webkitTextStrokeColor),h.ctx.lineWidth=t.webkitTextStrokeWidth,h.ctx.lineJoin=window.chrome?"miter":"round",h.ctx.strokeText(e.text,e.bounds.left,e.bounds.top+a)),h.ctx.strokeStyle="",h.ctx.lineWidth=0,h.ctx.lineJoin="miter"}}))})),[2]}))}))},t.prototype.renderReplacedElement=function(e,t,i){if(i&&e.intrinsicWidth>0&&e.intrinsicHeight>0){var s=Gv(e),r=Iv(t);this.path(r),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(i,0,0,e.intrinsicWidth,e.intrinsicHeight,s.left,s.top,s.width,s.height),this.ctx.restore()}},t.prototype.renderNodeContent=function(e){return md(this,void 0,void 0,(function(){var i,s,r,o,n,a,l,A,h,c,u,d,p,f,g,m,_,v;return _d(this,(function(b){switch(b.label){case 0:this.applyEffects(e.getEffects(4)),i=e.container,s=e.curves,r=i.styles,o=0,n=i.textNodes,b.label=1;case 1:return o<n.length?(a=n[o],[4,this.renderTextNode(a,r)]):[3,4];case 2:b.sent(),b.label=3;case 3:return o++,[3,1];case 4:if(!(i instanceof o_))return[3,8];b.label=5;case 5:return b.trys.push([5,7,,8]),[4,this.context.cache.match(i.src)];case 6:return g=b.sent(),this.renderReplacedElement(i,s,g),[3,8];case 7:return b.sent(),this.context.logger.error("Error loading image "+i.src),[3,8];case 8:if(i instanceof n_&&this.renderReplacedElement(i,s,i.canvas),!(i instanceof a_))return[3,12];b.label=9;case 9:return b.trys.push([9,11,,12]),[4,this.context.cache.match(i.svg)];case 10:return g=b.sent(),this.renderReplacedElement(i,s,g),[3,12];case 11:return b.sent(),this.context.logger.error("Error loading svg "+i.svg.substring(0,255)),[3,12];case 12:return i instanceof g_&&i.tree?[4,new t(this.context,{scale:this.options.scale,backgroundColor:i.backgroundColor,x:0,y:0,width:i.width,height:i.height}).render(i.tree)]:[3,14];case 13:l=b.sent(),i.width&&i.height&&this.ctx.drawImage(l,0,0,i.width,i.height,i.bounds.left,i.bounds.top,i.bounds.width,i.bounds.height),b.label=14;case 14:if(i instanceof d_&&(A=Math.min(i.bounds.width,i.bounds.height),"checkbox"===i.type?i.checked&&(this.ctx.save(),this.path([new wv(i.bounds.left+.39363*A,i.bounds.top+.79*A),new wv(i.bounds.left+.16*A,i.bounds.top+.5549*A),new wv(i.bounds.left+.27347*A,i.bounds.top+.44071*A),new wv(i.bounds.left+.39694*A,i.bounds.top+.5649*A),new wv(i.bounds.left+.72983*A,i.bounds.top+.23*A),new wv(i.bounds.left+.84*A,i.bounds.top+.34085*A),new wv(i.bounds.left+.39363*A,i.bounds.top+.79*A)]),this.ctx.fillStyle=Bf(707406591),this.ctx.fill(),this.ctx.restore()):"radio"===i.type&&i.checked&&(this.ctx.save(),this.ctx.beginPath(),this.ctx.arc(i.bounds.left+A/2,i.bounds.top+A/2,A/4,0,2*Math.PI,!0),this.ctx.fillStyle=Bf(707406591),this.ctx.fill(),this.ctx.restore())),eb(i)&&i.value.length){switch(h=this.createFontStyle(r),_=h[0],c=h[1],u=this.fontMetrics.getMetrics(_,c).baseline,this.ctx.font=_,this.ctx.fillStyle=Bf(r.color),this.ctx.textBaseline="alphabetic",this.ctx.textAlign=ib(i.styles.textAlign),v=Gv(i),d=0,i.styles.textAlign){case 1:d+=v.width/2;break;case 2:d+=v.width}p=v.add(d,0,0,-v.height/2+1),this.ctx.save(),this.path([new wv(v.left,v.top),new wv(v.left+v.width,v.top),new wv(v.left+v.width,v.top+v.height),new wv(v.left,v.top+v.height)]),this.ctx.clip(),this.renderTextWithLetterSpacing(new Xm(i.value,p),r.letterSpacing,u),this.ctx.restore(),this.ctx.textBaseline="alphabetic",this.ctx.textAlign="left"}if(!Am(i.styles.display,2048))return[3,20];if(null===i.styles.listStyleImage)return[3,19];if(0!==(f=i.styles.listStyleImage).type)return[3,18];g=void 0,m=f.url,b.label=15;case 15:return b.trys.push([15,17,,18]),[4,this.context.cache.match(m)];case 16:return g=b.sent(),this.ctx.drawImage(g,i.bounds.left-(g.width+10),i.bounds.top),[3,18];case 17:return b.sent(),this.context.logger.error("Error loading list-style-image "+m),[3,18];case 18:return[3,20];case 19:e.listValue&&-1!==i.styles.listStyleType&&(_=this.createFontStyle(r)[0],this.ctx.font=_,this.ctx.fillStyle=Bf(r.color),this.ctx.textBaseline="middle",this.ctx.textAlign="right",v=new bd(i.bounds.left,i.bounds.top+ff(i.styles.paddingTop,i.bounds.width),i.bounds.width,Cg(r.lineHeight,r.fontSize.number)/2+1),this.renderTextWithLetterSpacing(new Xm(e.listValue,v),r.letterSpacing,Cg(r.lineHeight,r.fontSize.number)/2+2),this.ctx.textBaseline="bottom",this.ctx.textAlign="left"),b.label=20;case 20:return[2]}}))}))},t.prototype.renderStackContent=function(e){return md(this,void 0,void 0,(function(){var t,i,s,r,o,n,a,l,A,h,c,u,d,p,f;return _d(this,(function(g){switch(g.label){case 0:return Am(e.element.container.flags,16),[4,this.renderNodeBackgroundAndBorders(e.element)];case 1:g.sent(),t=0,i=e.negativeZIndex,g.label=2;case 2:return t<i.length?(f=i[t],[4,this.renderStack(f)]):[3,5];case 3:g.sent(),g.label=4;case 4:return t++,[3,2];case 5:return[4,this.renderNodeContent(e.element)];case 6:g.sent(),s=0,r=e.nonInlineLevel,g.label=7;case 7:return s<r.length?(f=r[s],[4,this.renderNode(f)]):[3,10];case 8:g.sent(),g.label=9;case 9:return s++,[3,7];case 10:o=0,n=e.nonPositionedFloats,g.label=11;case 11:return o<n.length?(f=n[o],[4,this.renderStack(f)]):[3,14];case 12:g.sent(),g.label=13;case 13:return o++,[3,11];case 14:a=0,l=e.nonPositionedInlineLevel,g.label=15;case 15:return a<l.length?(f=l[a],[4,this.renderStack(f)]):[3,18];case 16:g.sent(),g.label=17;case 17:return a++,[3,15];case 18:A=0,h=e.inlineLevel,g.label=19;case 19:return A<h.length?(f=h[A],[4,this.renderNode(f)]):[3,22];case 20:g.sent(),g.label=21;case 21:return A++,[3,19];case 22:c=0,u=e.zeroOrAutoZIndexOrTransformedOrOpacity,g.label=23;case 23:return c<u.length?(f=u[c],[4,this.renderStack(f)]):[3,26];case 24:g.sent(),g.label=25;case 25:return c++,[3,23];case 26:d=0,p=e.positiveZIndex,g.label=27;case 27:return d<p.length?(f=p[d],[4,this.renderStack(f)]):[3,30];case 28:g.sent(),g.label=29;case 29:return d++,[3,27];case 30:return[2]}}))}))},t.prototype.mask=function(e){this.ctx.beginPath(),this.ctx.moveTo(0,0),this.ctx.lineTo(this.canvas.width,0),this.ctx.lineTo(this.canvas.width,this.canvas.height),this.ctx.lineTo(0,this.canvas.height),this.ctx.lineTo(0,0),this.formatPath(e.slice(0).reverse()),this.ctx.closePath()},t.prototype.path=function(e){this.ctx.beginPath(),this.formatPath(e),this.ctx.closePath()},t.prototype.formatPath=function(e){var t=this;e.forEach((function(e,i){var s=Cv(e)?e.start:e;0===i?t.ctx.moveTo(s.x,s.y):t.ctx.lineTo(s.x,s.y),Cv(e)&&t.ctx.bezierCurveTo(e.startControl.x,e.startControl.y,e.endControl.x,e.endControl.y,e.end.x,e.end.y)}))},t.prototype.renderRepeat=function(e,t,i,s){this.path(e),this.ctx.fillStyle=t,this.ctx.translate(i,s),this.ctx.fill(),this.ctx.translate(-i,-s)},t.prototype.resizeImage=function(e,t,i){var s;if(e.width===t&&e.height===i)return e;var r=(null!==(s=this.canvas.ownerDocument)&&void 0!==s?s:document).createElement("canvas");return r.width=Math.max(1,t),r.height=Math.max(1,i),r.getContext("2d").drawImage(e,0,0,e.width,e.height,0,0,t,i),r},t.prototype.renderBackgroundImage=function(e){return md(this,void 0,void 0,(function(){var t,i,s,r,o,n;return _d(this,(function(a){switch(a.label){case 0:t=e.styles.backgroundImage.length-1,i=function(i){var r,o,n,a,l,A,h,c,u,d,p,f,g,m,_,v,b,y,B,w,x,P,C,M,F,E,I,D,S,T,R;return _d(this,(function(L){switch(L.label){case 0:if(0!==i.type)return[3,5];r=void 0,o=i.url,L.label=1;case 1:return L.trys.push([1,3,,4]),[4,s.context.cache.match(o)];case 2:return r=L.sent(),[3,4];case 3:return L.sent(),s.context.logger.error("Error loading background-image "+o),[3,4];case 4:return r&&(n=zv(e,t,[r.width,r.height,r.width/r.height]),v=n[0],P=n[1],C=n[2],B=n[3],w=n[4],m=s.ctx.createPattern(s.resizeImage(r,B,w),"repeat"),s.renderRepeat(v,m,P,C)),[3,6];case 5:1===i.type?(a=zv(e,t,[null,null,null]),v=a[0],P=a[1],C=a[2],B=a[3],w=a[4],l=Lf(i.angle,B,w),A=l[0],h=l[1],c=l[2],u=l[3],d=l[4],(p=document.createElement("canvas")).width=B,p.height=w,f=p.getContext("2d"),g=f.createLinearGradient(h,u,c,d),Rf(i.stops,A).forEach((function(e){return g.addColorStop(e.stop,Bf(e.color))})),f.fillStyle=g,f.fillRect(0,0,B,w),B>0&&w>0&&(m=s.ctx.createPattern(p,"repeat"),s.renderRepeat(v,m,P,C))):function(e){return 2===e.type}(i)&&(_=zv(e,t,[null,null,null]),v=_[0],b=_[1],y=_[2],B=_[3],w=_[4],x=0===i.position.length?[uf]:i.position,P=ff(x[0],B),C=ff(x[x.length-1],w),M=function(e,t,i,s,r){var o=0,n=0;switch(e.size){case 0:0===e.shape?o=n=Math.min(Math.abs(t),Math.abs(t-s),Math.abs(i),Math.abs(i-r)):1===e.shape&&(o=Math.min(Math.abs(t),Math.abs(t-s)),n=Math.min(Math.abs(i),Math.abs(i-r)));break;case 2:if(0===e.shape)o=n=Math.min(Uf(t,i),Uf(t,i-r),Uf(t-s,i),Uf(t-s,i-r));else if(1===e.shape){var a=Math.min(Math.abs(i),Math.abs(i-r))/Math.min(Math.abs(t),Math.abs(t-s)),l=kf(s,r,t,i,!0),A=l[0],h=l[1];n=a*(o=Uf(A-t,(h-i)/a))}break;case 1:0===e.shape?o=n=Math.max(Math.abs(t),Math.abs(t-s),Math.abs(i),Math.abs(i-r)):1===e.shape&&(o=Math.max(Math.abs(t),Math.abs(t-s)),n=Math.max(Math.abs(i),Math.abs(i-r)));break;case 3:if(0===e.shape)o=n=Math.max(Uf(t,i),Uf(t,i-r),Uf(t-s,i),Uf(t-s,i-r));else if(1===e.shape){a=Math.max(Math.abs(i),Math.abs(i-r))/Math.max(Math.abs(t),Math.abs(t-s));var c=kf(s,r,t,i,!1);A=c[0],h=c[1],n=a*(o=Uf(A-t,(h-i)/a))}}return Array.isArray(e.size)&&(o=ff(e.size[0],s),n=2===e.size.length?ff(e.size[1],r):o),[o,n]}(i,P,C,B,w),F=M[0],E=M[1],F>0&&E>0&&(I=s.ctx.createRadialGradient(b+P,y+C,0,b+P,y+C,F),Rf(i.stops,2*F).forEach((function(e){return I.addColorStop(e.stop,Bf(e.color))})),s.path(v),s.ctx.fillStyle=I,F!==E?(D=e.bounds.left+.5*e.bounds.width,S=e.bounds.top+.5*e.bounds.height,R=1/(T=E/F),s.ctx.save(),s.ctx.translate(D,S),s.ctx.transform(1,0,0,T,0,0),s.ctx.translate(-D,-S),s.ctx.fillRect(b,R*(y-S)+S,B,w*R),s.ctx.restore()):s.ctx.fill())),L.label=6;case 6:return t--,[2]}}))},s=this,r=0,o=e.styles.backgroundImage.slice(0).reverse(),a.label=1;case 1:return r<o.length?(n=o[r],[5,i(n)]):[3,4];case 2:a.sent(),a.label=3;case 3:return r++,[3,1];case 4:return[2]}}))}))},t.prototype.renderSolidBorder=function(e,t,i){return md(this,void 0,void 0,(function(){return _d(this,(function(s){return this.path(Qv(i,t)),this.ctx.fillStyle=Bf(e),this.ctx.fill(),[2]}))}))},t.prototype.renderDoubleBorder=function(e,t,i,s){return md(this,void 0,void 0,(function(){var r,o;return _d(this,(function(n){switch(n.label){case 0:return t<3?[4,this.renderSolidBorder(e,i,s)]:[3,2];case 1:return n.sent(),[2];case 2:return r=function(e,t){switch(t){case 0:return Hv(e.topLeftBorderBox,e.topLeftBorderDoubleOuterBox,e.topRightBorderBox,e.topRightBorderDoubleOuterBox);case 1:return Hv(e.topRightBorderBox,e.topRightBorderDoubleOuterBox,e.bottomRightBorderBox,e.bottomRightBorderDoubleOuterBox);case 2:return Hv(e.bottomRightBorderBox,e.bottomRightBorderDoubleOuterBox,e.bottomLeftBorderBox,e.bottomLeftBorderDoubleOuterBox);default:return Hv(e.bottomLeftBorderBox,e.bottomLeftBorderDoubleOuterBox,e.topLeftBorderBox,e.topLeftBorderDoubleOuterBox)}}(s,i),this.path(r),this.ctx.fillStyle=Bf(e),this.ctx.fill(),o=function(e,t){switch(t){case 0:return Hv(e.topLeftBorderDoubleInnerBox,e.topLeftPaddingBox,e.topRightBorderDoubleInnerBox,e.topRightPaddingBox);case 1:return Hv(e.topRightBorderDoubleInnerBox,e.topRightPaddingBox,e.bottomRightBorderDoubleInnerBox,e.bottomRightPaddingBox);case 2:return Hv(e.bottomRightBorderDoubleInnerBox,e.bottomRightPaddingBox,e.bottomLeftBorderDoubleInnerBox,e.bottomLeftPaddingBox);default:return Hv(e.bottomLeftBorderDoubleInnerBox,e.bottomLeftPaddingBox,e.topLeftBorderDoubleInnerBox,e.topLeftPaddingBox)}}(s,i),this.path(o),this.ctx.fill(),[2]}}))}))},t.prototype.renderNodeBackgroundAndBorders=function(e){return md(this,void 0,void 0,(function(){var t,i,s,r,o,n,a,l,A=this;return _d(this,(function(h){switch(h.label){case 0:return this.applyEffects(e.getEffects(2)),t=e.container.styles,i=!yf(t.backgroundColor)||t.backgroundImage.length,s=[{style:t.borderTopStyle,color:t.borderTopColor,width:t.borderTopWidth},{style:t.borderRightStyle,color:t.borderRightColor,width:t.borderRightWidth},{style:t.borderBottomStyle,color:t.borderBottomColor,width:t.borderBottomWidth},{style:t.borderLeftStyle,color:t.borderLeftColor,width:t.borderLeftWidth}],r=tb(Jv(t.backgroundClip,0),e.curves),i||t.boxShadow.length?(this.ctx.save(),this.path(r),this.ctx.clip(),yf(t.backgroundColor)||(this.ctx.fillStyle=Bf(t.backgroundColor),this.ctx.fill()),[4,this.renderBackgroundImage(e.container)]):[3,2];case 1:h.sent(),this.ctx.restore(),t.boxShadow.slice(0).reverse().forEach((function(t){A.ctx.save();var i,s,r,o,n,a=Ev(e.curves),l=t.inset?0:1e4,h=(i=a,s=-l+(t.inset?1:-1)*t.spread.number,r=(t.inset?1:-1)*t.spread.number,o=t.spread.number*(t.inset?-2:2),n=t.spread.number*(t.inset?-2:2),i.map((function(e,t){switch(t){case 0:return e.add(s,r);case 1:return e.add(s+o,r);case 2:return e.add(s+o,r+n);case 3:return e.add(s,r+n)}return e})));t.inset?(A.path(a),A.ctx.clip(),A.mask(h)):(A.mask(a),A.ctx.clip(),A.path(h)),A.ctx.shadowOffsetX=t.offsetX.number+l,A.ctx.shadowOffsetY=t.offsetY.number,A.ctx.shadowColor=Bf(t.color),A.ctx.shadowBlur=t.blur.number,A.ctx.fillStyle=t.inset?Bf(t.color):"rgba(0,0,0,1)",A.ctx.fill(),A.ctx.restore()})),h.label=2;case 2:o=0,n=0,a=s,h.label=3;case 3:return n<a.length?0!==(l=a[n]).style&&!yf(l.color)&&l.width>0?2!==l.style?[3,5]:[4,this.renderDashedDottedBorder(l.color,l.width,o,e.curves,2)]:[3,11]:[3,13];case 4:return h.sent(),[3,11];case 5:return 3!==l.style?[3,7]:[4,this.renderDashedDottedBorder(l.color,l.width,o,e.curves,3)];case 6:return h.sent(),[3,11];case 7:return 4!==l.style?[3,9]:[4,this.renderDoubleBorder(l.color,l.width,o,e.curves)];case 8:return h.sent(),[3,11];case 9:return[4,this.renderSolidBorder(l.color,o,e.curves)];case 10:h.sent(),h.label=11;case 11:o++,h.label=12;case 12:return n++,[3,3];case 13:return[2]}}))}))},t.prototype.renderDashedDottedBorder=function(e,t,i,s,r){return md(this,void 0,void 0,(function(){var o,n,a,l,A,h,c,u,d,p,f,g,m,_,v,b;return _d(this,(function(y){return this.ctx.save(),o=function(e,t){switch(t){case 0:return Vv(e.topLeftBorderStroke,e.topRightBorderStroke);case 1:return Vv(e.topRightBorderStroke,e.bottomRightBorderStroke);case 2:return Vv(e.bottomRightBorderStroke,e.bottomLeftBorderStroke);default:return Vv(e.bottomLeftBorderStroke,e.topLeftBorderStroke)}}(s,i),n=Qv(s,i),2===r&&(this.path(n),this.ctx.clip()),Cv(n[0])?(a=n[0].start.x,l=n[0].start.y):(a=n[0].x,l=n[0].y),Cv(n[1])?(A=n[1].end.x,h=n[1].end.y):(A=n[1].x,h=n[1].y),c=0===i||2===i?Math.abs(a-A):Math.abs(l-h),this.ctx.beginPath(),3===r?this.formatPath(o):this.formatPath(n.slice(0,2)),u=t<3?3*t:2*t,d=t<3?2*t:t,3===r&&(u=t,d=t),p=!0,c<=2*u?p=!1:c<=2*u+d?(u*=f=c/(2*u+d),d*=f):(g=Math.floor((c+d)/(u+d)),m=(c-g*u)/(g-1),d=(_=(c-(g+1)*u)/g)<=0||Math.abs(d-m)<Math.abs(d-_)?m:_),p&&(3===r?this.ctx.setLineDash([0,u+d]):this.ctx.setLineDash([u,d])),3===r?(this.ctx.lineCap="round",this.ctx.lineWidth=t):this.ctx.lineWidth=2*t+1.1,this.ctx.strokeStyle=Bf(e),this.ctx.stroke(),this.ctx.setLineDash([]),2===r&&(Cv(n[0])&&(v=n[3],b=n[0],this.ctx.beginPath(),this.formatPath([new wv(v.end.x,v.end.y),new wv(b.start.x,b.start.y)]),this.ctx.stroke()),Cv(n[1])&&(v=n[1],b=n[2],this.ctx.beginPath(),this.formatPath([new wv(v.end.x,v.end.y),new wv(b.start.x,b.start.y)]),this.ctx.stroke())),this.ctx.restore(),[2]}))}))},t.prototype.render=function(e){return md(this,void 0,void 0,(function(){var t;return _d(this,(function(i){switch(i.label){case 0:return this.options.backgroundColor&&(this.ctx.fillStyle=Bf(this.options.backgroundColor),this.ctx.fillRect(this.options.x,this.options.y,this.options.width,this.options.height)),s=new kv(e,null),r=new Uv(s),Ov(s,r,r,o=[]),Nv(s.container,o),t=r,[4,this.renderStack(t)];case 1:return i.sent(),this.applyEffects([]),[2,this.canvas]}var s,r,o}))}))},t}(qv),eb=function(e){return e instanceof f_||(e instanceof p_||e instanceof d_&&"radio"!==e.type&&"checkbox"!==e.type)},tb=function(e,t){switch(e){case 0:return Ev(t);case 2:return function(e){return[e.topLeftContentBox,e.topRightContentBox,e.bottomRightContentBox,e.bottomLeftContentBox]}(t);default:return Iv(t)}},ib=function(e){switch(e){case 1:return"center";case 2:return"right";default:return"left"}},sb=["-apple-system","system-ui"],rb=function(e){return/iPhone OS 15_(0|1)/.test(window.navigator.userAgent)?e.filter((function(e){return-1===sb.indexOf(e)})):e},ob=function(e){function t(t,i){var s=e.call(this,t,i)||this;return s.canvas=i.canvas?i.canvas:document.createElement("canvas"),s.ctx=s.canvas.getContext("2d"),s.options=i,s.canvas.width=Math.floor(i.width*i.scale),s.canvas.height=Math.floor(i.height*i.scale),s.canvas.style.width=i.width+"px",s.canvas.style.height=i.height+"px",s.ctx.scale(s.options.scale,s.options.scale),s.ctx.translate(-i.x,-i.y),s.context.logger.debug("EXPERIMENTAL ForeignObject renderer initialized ("+i.width+"x"+i.height+" at "+i.x+","+i.y+") with scale "+i.scale),s}return fd(t,e),t.prototype.render=function(e){return md(this,void 0,void 0,(function(){var t,i;return _d(this,(function(s){switch(s.label){case 0:return t=zm(this.options.width*this.options.scale,this.options.height*this.options.scale,this.options.scale,this.options.scale,e),[4,nb(t)];case 1:return i=s.sent(),this.options.backgroundColor&&(this.ctx.fillStyle=Bf(this.options.backgroundColor),this.ctx.fillRect(0,0,this.options.width*this.options.scale,this.options.height*this.options.scale)),this.ctx.drawImage(i,-this.options.x*this.options.scale,-this.options.y*this.options.scale),[2,this.canvas]}}))}))},t}(qv),nb=function(e){return new Promise((function(t,i){var s=new Image;s.onload=function(){t(s)},s.onerror=i,s.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent((new XMLSerializer).serializeToString(e))}))},ab=function(){function e(e){var t=e.id,i=e.enabled;this.id=t,this.enabled=i,this.start=Date.now()}return e.prototype.debug=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.enabled&&("undefined"!=typeof window&&window.console&&"function"==typeof console.debug?console.debug.apply(console,vd([this.id,this.getTime()+"ms"],e)):this.info.apply(this,e))},e.prototype.getTime=function(){return Date.now()-this.start},e.prototype.info=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.enabled&&"undefined"!=typeof window&&window.console&&"function"==typeof console.info&&console.info.apply(console,vd([this.id,this.getTime()+"ms"],e))},e.prototype.warn=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.enabled&&("undefined"!=typeof window&&window.console&&"function"==typeof console.warn?console.warn.apply(console,vd([this.id,this.getTime()+"ms"],e)):this.info.apply(this,e))},e.prototype.error=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.enabled&&("undefined"!=typeof window&&window.console&&"function"==typeof console.error?console.error.apply(console,vd([this.id,this.getTime()+"ms"],e)):this.info.apply(this,e))},e.instances={},e}(),lb=function(){function e(t,i){var s;this.windowBounds=i,this.instanceName="#"+e.instanceCount++,this.logger=new ab({id:this.instanceName,enabled:t.logging}),this.cache=null!==(s=t.cache)&&void 0!==s?s:new pv(this,t)}return e.instanceCount=1,e}(),Ab=function(e,t){return void 0===t&&(t={}),hb(e,t)};"undefined"!=typeof window&&dv.setContext(window);var hb=function(e,t){return md(void 0,void 0,void 0,(function(){var i,s,r,o,n,a,l,A,h,c,u,d,p,f,g,m,_,v,b,y,B,w,x,P,C,M,F,E,I,D,S,T,R,L,U,k,O,N;return _d(this,(function(Q){switch(Q.label){case 0:if(!e||"object"!=typeof e)return[2,Promise.reject("Invalid element provided as first argument")];if(!(i=e.ownerDocument))throw new Error("Element is not attached to a Document");if(!(s=i.defaultView))throw new Error("Document is not attached to a Window");return r={allowTaint:null!==(w=t.allowTaint)&&void 0!==w&&w,imageTimeout:null!==(x=t.imageTimeout)&&void 0!==x?x:15e3,proxy:t.proxy,useCORS:null!==(P=t.useCORS)&&void 0!==P&&P},o=gd({logging:null===(C=t.logging)||void 0===C||C,cache:t.cache},r),n={windowWidth:null!==(M=t.windowWidth)&&void 0!==M?M:s.innerWidth,windowHeight:null!==(F=t.windowHeight)&&void 0!==F?F:s.innerHeight,scrollX:null!==(E=t.scrollX)&&void 0!==E?E:s.pageXOffset,scrollY:null!==(I=t.scrollY)&&void 0!==I?I:s.pageYOffset},a=new bd(n.scrollX,n.scrollY,n.windowWidth,n.windowHeight),l=new lb(o,a),A=null!==(D=t.foreignObjectRendering)&&void 0!==D&&D,h={allowTaint:null!==(S=t.allowTaint)&&void 0!==S&&S,onclone:t.onclone,ignoreElements:t.ignoreElements,inlineImages:A,copyStyles:A},l.logger.debug("Starting document clone with size "+a.width+"x"+a.height+" scrolled to "+-a.left+","+-a.top),c=new q_(l,e,h),(u=c.clonedReferenceElement)?[4,c.toIFrame(i,a)]:[2,Promise.reject("Unable to find element in cloned iframe")];case 1:return d=Q.sent(),p=D_(u)||function(e){return"HTML"===e.tagName}(u)?function(e){var t=e.body,i=e.documentElement;if(!t||!i)throw new Error("Unable to get document size");var s=Math.max(Math.max(t.scrollWidth,i.scrollWidth),Math.max(t.offsetWidth,i.offsetWidth),Math.max(t.clientWidth,i.clientWidth)),r=Math.max(Math.max(t.scrollHeight,i.scrollHeight),Math.max(t.offsetHeight,i.offsetHeight),Math.max(t.clientHeight,i.clientHeight));return new bd(0,0,s,r)}(u.ownerDocument):yd(l,u),f=p.width,g=p.height,m=p.left,_=p.top,v=cb(l,u,t.backgroundColor),b={canvas:t.canvas,backgroundColor:v,scale:null!==(R=null!==(T=t.scale)&&void 0!==T?T:s.devicePixelRatio)&&void 0!==R?R:1,x:(null!==(L=t.x)&&void 0!==L?L:0)+m,y:(null!==(U=t.y)&&void 0!==U?U:0)+_,width:null!==(k=t.width)&&void 0!==k?k:Math.ceil(f),height:null!==(O=t.height)&&void 0!==O?O:Math.ceil(g)},A?(l.logger.debug("Document cloned, using foreign object rendering"),[4,new ob(l,b).render(u)]):[3,3];case 2:return y=Q.sent(),[3,5];case 3:return l.logger.debug("Document cloned, element located at "+m+","+_+" with size "+f+"x"+g+" using computed rendering"),l.logger.debug("Starting DOM parsing"),B=b_(l,u),v===B.styles.backgroundColor&&(B.styles.backgroundColor=If.TRANSPARENT),l.logger.debug("Starting renderer for element at "+b.x+","+b.y+" with size "+b.width+"x"+b.height),[4,new $v(l,b).render(B)];case 4:y=Q.sent(),Q.label=5;case 5:return(null===(N=t.removeContainer)||void 0===N||N)&&(q_.destroy(d)||l.logger.error("Cannot detach cloned iframe as it is not in the DOM anymore")),l.logger.debug("Finished rendering"),[2,y]}}))}))},cb=function(e,t,i){var s=t.ownerDocument,r=s.documentElement?Ef(e,getComputedStyle(s.documentElement).backgroundColor):If.TRANSPARENT,o=s.body?Ef(e,getComputedStyle(s.body).backgroundColor):If.TRANSPARENT,n="string"==typeof i?Ef(e,i):null===i?If.TRANSPARENT:4294967295;return t===s.documentElement?yf(r)?yf(o)?n:o:r:n};class ub{constructor(e){this.language="en",this.localeService=e.localeService||new Vc,this.scene=new hi(this,{canvasId:e.canvasId,canvasElement:e.canvasElement,keyboardEventsElement:e.keyboardEventsElement,contextAttr:{preserveDrawingBuffer:!1!==e.preserveDrawingBuffer,premultipliedAlpha:!!e.premultipliedAlpha,antialias:!1!==e.antialias},spinnerElementId:e.spinnerElementId,transparent:!1!==e.transparent,gammaInput:!0,gammaOutput:!1,backgroundColor:e.backgroundColor,backgroundColorFromAmbientLight:e.backgroundColorFromAmbientLight,ticksPerRender:1,ticksPerOcclusionTest:20,units:e.units,scale:e.scale,origin:e.origin,saoEnabled:e.saoEnabled,alphaDepthMask:!1!==e.alphaDepthMask,entityOffsetsEnabled:!!e.entityOffsetsEnabled,pickSurfacePrecisionEnabled:!!e.pickSurfacePrecisionEnabled,logarithmicDepthBufferEnabled:!!e.logarithmicDepthBufferEnabled,pbrEnabled:!!e.pbrEnabled,colorTextureEnabled:!1!==e.colorTextureEnabled,dtxEnabled:!!e.dtxEnabled,numCachedSectionPlanes:e.numCachedSectionPlanes}),this.metaScene=new ud(this,this.scene),this.id=e.id||this.scene.id,this.camera=this.scene.camera,this.cameraFlight=new $c(this.scene,{duration:.5}),this.cameraControl=new ad(this.scene,{doublePickFlyTo:!0}),this._plugins=[],this._eventSubs={}}get capabilities(){return this.scene.capabilities}on(e,t){let i=this._eventSubs[e];i||(i=[],this._eventSubs[e]=i),i.push(t)}fire(e,t){const i=this._eventSubs[e];if(i)for(let e=0,s=i.length;e<s;e++)i[e](t)}off(e){}log(e){console.log(`[xeokit viewer ${this.id}]: ${e}`)}error(e){console.error(`[xeokit viewer ${this.id}]: ${e}`)}addPlugin(e){this._plugins.push(e)}removePlugin(e){for(let t=0,i=this._plugins.length;t<i;t++){const i=this._plugins[t];if(i===e)return i.clear&&i.clear(),void this._plugins.splice(t,1)}}sendToPlugins(e,t){for(let i=0,s=this._plugins.length;i<s;i++){const s=this._plugins[i];s.send&&s.send(e,t)}}clear(){throw'Viewer#clear() no longer implemented - use \'#sendToPlugins("clear") instead'}resetView(){throw"Viewer#resetView() no longer implemented - use CameraMemento & ObjectsMemento classes instead"}beginSnapshot(){this._snapshotBegun||(this.scene._renderer.beginSnapshot(),this._snapshotBegun=!0)}getSnapshot(e={}){const t=!this._snapshotBegun,i=void 0!==e.width&&void 0!==e.height,s=this.scene.canvas.canvas,r=s.clientWidth,o=s.clientHeight,n=e.width?Math.floor(e.width):s.width,a=e.height?Math.floor(e.height):s.height;i&&(s.width=n,s.height=a),this._snapshotBegun||this.beginSnapshot({width:n,height:a}),e.includeGizmos||this.sendToPlugins("snapshotStarting");const l={};for(let e=0,t=this._plugins.length;e<t;e++){const t=this._plugins[e];if(t.getContainerElement){const e=t.getContainerElement();e!==document.body&&(l[e.id]||(l[e.id]=!0,Ab(e).then((function(e){document.body.appendChild(e)}))))}}this.scene._renderer.renderSnapshot();const A=this.scene._renderer.readSnapshot(e);return i&&(s.width=r,s.height=o,this.scene.glRedraw()),e.includeGizmos||this.sendToPlugins("snapshotFinished"),t&&this.endSnapshot(),A}async getSnapshotWithPlugins(e={}){const t=!this._snapshotBegun,i=void 0!==e.width&&void 0!==e.height,s=this.scene.canvas.canvas,r=s.clientWidth,o=s.clientHeight,n=e.width?Math.floor(e.width):s.width,a=e.height?Math.floor(e.height):s.height;i&&(s.width=n,s.height=a),this._snapshotBegun||this.beginSnapshot(),e.includeGizmos||this.sendToPlugins("snapshotStarting"),this.scene._renderer.renderSnapshot();const l=this.scene._renderer.readSnapshotAsCanvas();i&&(s.width=r,s.height=o,this.scene.glRedraw());const A={},h=[];for(let e=0,t=this._plugins.length;e<t;e++){const t=this._plugins[e];if(t.getContainerElement){const e=t.getContainerElement();e!==document.body&&(A[e.id]||(A[e.id]=!0,h.push(e)))}}for(let e=0,t=h.length;e<t;e++){const t=h[e];await Ab(t,{canvas:l,backgroundColor:null,scale:l.width/t.clientWidth})}e.includeGizmos||this.sendToPlugins("snapshotFinished"),t&&this.endSnapshot();let c=e.format||"png";return"jpeg"!==c&&"png"!==c&&"bmp"!==c&&(console.error("Unsupported image format: '"+c+"' - supported types are 'jpeg', 'bmp' and 'png' - defaulting to 'png'"),c="png"),e.includeGizmos||this.sendToPlugins("snapshotFinished"),t&&this.endSnapshot(),l.toDataURL(`image/${c}`)}endSnapshot(){this._snapshotBegun&&(this.scene._renderer.endSnapshot(),this.scene._renderer.render({force:!0}),this._snapshotBegun=!1)}destroy(){const e=this._plugins.slice();for(let t=0,i=e.length;t<i;t++){e[t].destroy()}this.scene.destroy()}}function db(e,t){if(!e)throw new Error(t||"loader assertion failed.")}const pb=Boolean("object"!=typeof process||"[object process]"!==String(process)||process.browser),fb="undefined"!=typeof process&&process.version&&/v([0-9]*)/.exec(process.version);fb&&parseFloat(fb[1]);function gb(e,t){if(!e)throw new Error(t||"loaders.gl assertion failed.")}const mb={self:"undefined"!=typeof self&&self,window:"undefined"!=typeof window&&window,global:"undefined"!=typeof global&&global,document:"undefined"!=typeof document&&document},_b=mb.global||mb.self||mb.window||{},vb="object"!=typeof process||"[object process]"!==String(process)||process.browser,bb="function"==typeof importScripts,yb="undefined"!=typeof window&&void 0!==window.orientation,Bb="undefined"!=typeof process&&process.version&&/v([0-9]*)/.exec(process.version);function wb(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}Bb&&parseFloat(Bb[1]);class xb{constructor(e,t){wb(this,"name",void 0),wb(this,"workerThread",void 0),wb(this,"isRunning",!0),wb(this,"result",void 0),wb(this,"_resolve",(()=>{})),wb(this,"_reject",(()=>{})),this.name=e,this.workerThread=t,this.result=new Promise(((e,t)=>{this._resolve=e,this._reject=t}))}postMessage(e,t){this.workerThread.postMessage({source:"loaders.gl",type:e,payload:t})}done(e){gb(this.isRunning),this.isRunning=!1,this._resolve(e)}error(e){gb(this.isRunning),this.isRunning=!1,this._reject(e)}}class Pb{}const Cb=new Map;function Mb(e){gb(e.source&&!e.url||!e.source&&e.url);let t=Cb.get(e.source||e.url);return t||(e.url&&(t=function(e){if(!e.startsWith("http"))return e;return Fb((t=e,"try {\n importScripts('".concat(t,"');\n} catch (error) {\n console.error(error);\n throw error;\n}")));var t}(e.url),Cb.set(e.url,t)),e.source&&(t=Fb(e.source),Cb.set(e.source,t))),gb(t),t}function Fb(e){const t=new Blob([e],{type:"application/javascript"});return URL.createObjectURL(t)}function Eb(e,t=!0,i){const s=i||new Set;if(e){if(Ib(e))s.add(e);else if(Ib(e.buffer))s.add(e.buffer);else if(ArrayBuffer.isView(e));else if(t&&"object"==typeof e)for(const i in e)Eb(e[i],t,s)}else;return void 0===i?Array.from(s):[]}function Ib(e){return!!e&&(e instanceof ArrayBuffer||("undefined"!=typeof MessagePort&&e instanceof MessagePort||("undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap||"undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas)))}const Db=()=>{};class Sb{static isSupported(){return"undefined"!=typeof Worker&&vb||void 0!==typeof Pb}constructor(e){wb(this,"name",void 0),wb(this,"source",void 0),wb(this,"url",void 0),wb(this,"terminated",!1),wb(this,"worker",void 0),wb(this,"onMessage",void 0),wb(this,"onError",void 0),wb(this,"_loadableURL","");const{name:t,source:i,url:s}=e;gb(i||s),this.name=t,this.source=i,this.url=s,this.onMessage=Db,this.onError=e=>console.log(e),this.worker=vb?this._createBrowserWorker():this._createNodeWorker()}destroy(){this.onMessage=Db,this.onError=Db,this.worker.terminate(),this.terminated=!0}get isRunning(){return Boolean(this.onMessage)}postMessage(e,t){t=t||Eb(e),this.worker.postMessage(e,t)}_getErrorFromErrorEvent(e){let t="Failed to load ";return t+="worker ".concat(this.name," from ").concat(this.url,". "),e.message&&(t+="".concat(e.message," in ")),e.lineno&&(t+=":".concat(e.lineno,":").concat(e.colno)),new Error(t)}_createBrowserWorker(){this._loadableURL=Mb({source:this.source,url:this.url});const e=new Worker(this._loadableURL,{name:this.name});return e.onmessage=e=>{e.data?this.onMessage(e.data):this.onError(new Error("No data received"))},e.onerror=e=>{this.onError(this._getErrorFromErrorEvent(e)),this.terminated=!0},e.onmessageerror=e=>console.error(e),e}_createNodeWorker(){let e;if(this.url){const t=this.url.includes(":/")||this.url.startsWith("/")?this.url:"./".concat(this.url);e=new Pb(t,{eval:!1})}else{if(!this.source)throw new Error("no worker");e=new Pb(this.source,{eval:!0})}return e.on("message",(e=>{this.onMessage(e)})),e.on("error",(e=>{this.onError(e)})),e.on("exit",(e=>{})),e}}class Tb{static isSupported(){return Sb.isSupported()}constructor(e){wb(this,"name","unnamed"),wb(this,"source",void 0),wb(this,"url",void 0),wb(this,"maxConcurrency",1),wb(this,"maxMobileConcurrency",1),wb(this,"onDebug",(()=>{})),wb(this,"reuseWorkers",!0),wb(this,"props",{}),wb(this,"jobQueue",[]),wb(this,"idleQueue",[]),wb(this,"count",0),wb(this,"isDestroyed",!1),this.source=e.source,this.url=e.url,this.setProps(e)}destroy(){this.idleQueue.forEach((e=>e.destroy())),this.isDestroyed=!0}setProps(e){this.props={...this.props,...e},void 0!==e.name&&(this.name=e.name),void 0!==e.maxConcurrency&&(this.maxConcurrency=e.maxConcurrency),void 0!==e.maxMobileConcurrency&&(this.maxMobileConcurrency=e.maxMobileConcurrency),void 0!==e.reuseWorkers&&(this.reuseWorkers=e.reuseWorkers),void 0!==e.onDebug&&(this.onDebug=e.onDebug)}async startJob(e,t=((e,t,i)=>e.done(i)),i=((e,t)=>e.error(t))){const s=new Promise((s=>(this.jobQueue.push({name:e,onMessage:t,onError:i,onStart:s}),this)));return this._startQueuedJob(),await s}async _startQueuedJob(){if(!this.jobQueue.length)return;const e=this._getAvailableWorker();if(!e)return;const t=this.jobQueue.shift();if(t){this.onDebug({message:"Starting job",name:t.name,workerThread:e,backlog:this.jobQueue.length});const i=new xb(t.name,e);e.onMessage=e=>t.onMessage(i,e.type,e.payload),e.onError=e=>t.onError(i,e),t.onStart(i);try{await i.result}finally{this.returnWorkerToQueue(e)}}}returnWorkerToQueue(e){this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency()?(e.destroy(),this.count--):this.idleQueue.push(e),this.isDestroyed||this._startQueuedJob()}_getAvailableWorker(){if(this.idleQueue.length>0)return this.idleQueue.shift()||null;if(this.count<this._getMaxConcurrency()){this.count++;const e="".concat(this.name.toLowerCase()," (#").concat(this.count," of ").concat(this.maxConcurrency,")");return new Sb({name:e,source:this.source,url:this.url})}return null}_getMaxConcurrency(){return yb?this.maxMobileConcurrency:this.maxConcurrency}}const Rb={maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:!0,onDebug:()=>{}};class Lb{static isSupported(){return Sb.isSupported()}static getWorkerFarm(e={}){return Lb._workerFarm=Lb._workerFarm||new Lb({}),Lb._workerFarm.setProps(e),Lb._workerFarm}constructor(e){wb(this,"props",void 0),wb(this,"workerPools",new Map),this.props={...Rb},this.setProps(e),this.workerPools=new Map}destroy(){for(const e of this.workerPools.values())e.destroy();this.workerPools=new Map}setProps(e){this.props={...this.props,...e};for(const e of this.workerPools.values())e.setProps(this._getWorkerPoolProps())}getWorkerPool(e){const{name:t,source:i,url:s}=e;let r=this.workerPools.get(t);return r||(r=new Tb({name:t,source:i,url:s}),r.setProps(this._getWorkerPoolProps()),this.workerPools.set(t,r)),r}_getWorkerPoolProps(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}}wb(Lb,"_workerFarm",void 0);var Ub=Object.freeze({__proto__:null,default:{}});const kb={};async function Ob(e,t=null,i={}){return t&&(e=function(e,t,i){if(e.startsWith("http"))return e;const s=i.modules||{};if(s[e])return s[e];if(!vb)return"modules/".concat(t,"/dist/libs/").concat(e);if(i.CDN)return gb(i.CDN.startsWith("http")),"".concat(i.CDN,"/").concat(t,"@").concat("3.2.6","/dist/libs/").concat(e);if(bb)return"../src/libs/".concat(e);return"modules/".concat(t,"/src/libs/").concat(e)}(e,t,i)),kb[e]=kb[e]||async function(e){if(e.endsWith("wasm")){const t=await fetch(e);return await t.arrayBuffer()}if(!vb)try{return Ub&&void 0}catch{return null}if(bb)return importScripts(e);const t=await fetch(e);return function(e,t){if(!vb)return;if(bb)return eval.call(_b,e),null;const i=document.createElement("script");i.id=t;try{i.appendChild(document.createTextNode(e))}catch(t){i.text=e}return document.body.appendChild(i),null}(await t.text(),e)}(e),await kb[e]}async function Nb(e,t,i,s,r){const o=e.id,n=function(e,t={}){const i=t[e.id]||{},s="".concat(e.id,"-worker.js");let r=i.workerUrl;if(r||"compression"!==e.id||(r=t.workerUrl),"test"===t._workerType&&(r="modules/".concat(e.module,"/dist/").concat(s)),!r){let t=e.version;"latest"===t&&(t="latest");const i=t?"@".concat(t):"";r="https://unpkg.com/@loaders.gl/".concat(e.module).concat(i,"/dist/").concat(s)}return gb(r),r}(e,i),a=Lb.getWorkerFarm(i).getWorkerPool({name:o,url:n});i=JSON.parse(JSON.stringify(i)),s=JSON.parse(JSON.stringify(s||{}));const l=await a.startJob("process-on-worker",Qb.bind(null,r));l.postMessage("process",{input:t,options:i,context:s});const A=await l.result;return await A.result}async function Qb(e,t,i,s){switch(i){case"done":t.done(s);break;case"error":t.error(new Error(s.error));break;case"process":const{id:r,input:o,options:n}=s;try{const i=await e(o,n);t.postMessage("done",{id:r,result:i})}catch(e){const i=e instanceof Error?e.message:"unknown error";t.postMessage("error",{id:r,error:i})}break;default:console.warn("parse-with-worker unknown message ".concat(i))}}function Vb(e,t,i){if(e.byteLength<=t+i)return"";const s=new DataView(e);let r="";for(let e=0;e<i;e++)r+=String.fromCharCode(s.getUint8(t+e));return r}function Hb(e){try{return JSON.parse(e)}catch(t){throw new Error('Failed to parse JSON from data starting with "'.concat(function(e,t=5){if("string"==typeof e)return e.slice(0,t);if(ArrayBuffer.isView(e))return Vb(e.buffer,e.byteOffset,t);if(e instanceof ArrayBuffer)return Vb(e,0,t);return""}(e),'"'))}}function jb(e){return e&&"object"==typeof e&&e.isBuffer}function Gb(e){if(jb(e))return function(e){if(jb(e))return new Uint8Array(e.buffer,e.byteOffset,e.length).slice().buffer;return e}(e);if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e))return 0===e.byteOffset&&e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);if("string"==typeof e){const t=e;return(new TextEncoder).encode(t).buffer}if(e&&"object"==typeof e&&e._toArrayBuffer)return e._toArrayBuffer();throw new Error("toArrayBuffer")}function zb(e,t,i){const s=void 0!==i?new Uint8Array(e).subarray(t,t+i):new Uint8Array(e).subarray(t);return new Uint8Array(s).buffer}function Wb(e,t){return db(e>=0),db(t>0),e+(t-1)&~(t-1)}function Kb(e,t,i){let s;if(e instanceof ArrayBuffer)s=new Uint8Array(e);else{const t=e.byteOffset,i=e.byteLength;s=new Uint8Array(e.buffer||e.arrayBuffer,t,i)}return t.set(s,i),i+Wb(s.byteLength,4)}async function Xb(e){const t=[];for await(const i of e)t.push(i);return function(...e){const t=e.map((e=>e instanceof ArrayBuffer?new Uint8Array(e):e)),i=t.reduce(((e,t)=>e+t.byteLength),0),s=new Uint8Array(i);let r=0;for(const e of t)s.set(e,r),r+=e.byteLength;return s.buffer}(...t)}const Jb={};const Yb=e=>"function"==typeof e,Zb=e=>null!==e&&"object"==typeof e,qb=e=>Zb(e)&&e.constructor==={}.constructor,$b=e=>"undefined"!=typeof Response&&e instanceof Response||e&&e.arrayBuffer&&e.text&&e.json,ey=e=>"undefined"!=typeof Blob&&e instanceof Blob,ty=e=>(e=>"undefined"!=typeof ReadableStream&&e instanceof ReadableStream||Zb(e)&&Yb(e.tee)&&Yb(e.cancel)&&Yb(e.getReader))(e)||(e=>Zb(e)&&Yb(e.read)&&Yb(e.pipe)&&(e=>"boolean"==typeof e)(e.readable))(e),iy=/^data:([-\w.]+\/[-\w.+]+)(;|,)/,sy=/^([-\w.]+\/[-\w.+]+)/;function ry(e){const t=sy.exec(e);return t?t[1]:e}function oy(e){const t=iy.exec(e);return t?t[1]:""}const ny=/\?.*/;function ay(e){if($b(e)){const t=ly(e.url||"");return{url:t,type:ry(e.headers.get("content-type")||"")||oy(t)}}return ey(e)?{url:ly(e.name||""),type:e.type||""}:"string"==typeof e?{url:ly(e),type:oy(e)}:{url:"",type:""}}function ly(e){return e.replace(ny,"")}async function Ay(e){if($b(e))return e;const t={},i=function(e){return $b(e)?e.headers["content-length"]||-1:ey(e)?e.size:"string"==typeof e?e.length:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e.byteLength:-1}(e);i>=0&&(t["content-length"]=String(i));const{url:s,type:r}=ay(e);r&&(t["content-type"]=r);const o=await async function(e){const t=5;if("string"==typeof e)return"data:,".concat(e.slice(0,t));if(e instanceof Blob){const t=e.slice(0,5);return await new Promise((e=>{const i=new FileReader;i.onload=t=>{var i;return e(null==t||null===(i=t.target)||void 0===i?void 0:i.result)},i.readAsDataURL(t)}))}if(e instanceof ArrayBuffer){const i=function(e){let t="";const i=new Uint8Array(e);for(let e=0;e<i.byteLength;e++)t+=String.fromCharCode(i[e]);return btoa(t)}(e.slice(0,t));return"data:base64,".concat(i)}return null}(e);o&&(t["x-first-bytes"]=o),"string"==typeof e&&(e=(new TextEncoder).encode(e));const n=new Response(e,{headers:t});return Object.defineProperty(n,"url",{value:s}),n}async function hy(e,t){if("string"==typeof e){e=function(e){for(const t in Jb)if(e.startsWith(t)){const i=Jb[t];e=e.replace(t,i)}return e.startsWith("http://")||e.startsWith("https://")||(e="".concat("").concat(e)),e}(e);let i=t;return null!=t&&t.fetch&&"function"!=typeof(null==t?void 0:t.fetch)&&(i=t.fetch),await fetch(e,i)}return await Ay(e)}const cy={self:"undefined"!=typeof self&&self,window:"undefined"!=typeof window&&window,global:"undefined"!=typeof global&&global,document:"undefined"!=typeof document&&document,process:"object"==typeof process&&process},uy=cy.window||cy.self||cy.global,dy=cy.process||{},py="undefined"!=typeof __VERSION__?__VERSION__:"untranspiled source",fy=!("object"==typeof process&&"[object process]"===String(process)&&!process.browser)||function(e){if("undefined"!=typeof window&&"object"==typeof window.process&&"renderer"===window.process.type)return!0;if("undefined"!=typeof process&&"object"==typeof process.versions&&Boolean(process.versions.electron))return!0;const t="object"==typeof navigator&&"string"==typeof navigator.userAgent&&navigator.userAgent,i=e||t;return!!(i&&i.indexOf("Electron")>=0)}();class gy{constructor(e,t,i="sessionStorage"){this.storage=function(e){try{const t=window[e],i="__storage_test__";return t.setItem(i,i),t.removeItem(i),t}catch(e){return null}}(i),this.id=e,this.config={},Object.assign(this.config,t),this._loadConfiguration()}getConfiguration(){return this.config}setConfiguration(e){return this.config={},this.updateConfiguration(e)}updateConfiguration(e){if(Object.assign(this.config,e),this.storage){const e=JSON.stringify(this.config);this.storage.setItem(this.id,e)}return this}_loadConfiguration(){let e={};if(this.storage){const t=this.storage.getItem(this.id);e=t?JSON.parse(t):{}}return Object.assign(this.config,e),this}}function my(e,t,i,s=600){const r=e.src.replace(/\(/g,"%28").replace(/\)/g,"%29");e.width>s&&(i=Math.min(i,s/e.width));const o=e.width*i,n=e.height*i,a=["font-size:1px;","padding:".concat(Math.floor(n/2),"px ").concat(Math.floor(o/2),"px;"),"line-height:".concat(n,"px;"),"background:url(".concat(r,");"),"background-size:".concat(o,"px ").concat(n,"px;"),"color:transparent;"].join("");return["".concat(t," %c+"),a]}const _y={BLACK:30,RED:31,GREEN:32,YELLOW:33,BLUE:34,MAGENTA:35,CYAN:36,WHITE:37,BRIGHT_BLACK:90,BRIGHT_RED:91,BRIGHT_GREEN:92,BRIGHT_YELLOW:93,BRIGHT_BLUE:94,BRIGHT_MAGENTA:95,BRIGHT_CYAN:96,BRIGHT_WHITE:97};function vy(e){return"string"==typeof e?_y[e.toUpperCase()]||_y.WHITE:e}function by(e,t){if(!e)throw new Error(t||"Assertion failed")}function yy(){let e;if(fy&&uy.performance)e=uy.performance.now();else if(dy.hrtime){const t=dy.hrtime();e=1e3*t[0]+t[1]/1e6}else e=Date.now();return e}const By={debug:fy&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},wy={enabled:!0,level:0};function xy(){}const Py={},Cy={once:!0};function My(e){for(const t in e)for(const i in e[t])return i||"untitled";return"empty"}class Fy{constructor({id:e}={id:""}){this.id=e,this.VERSION=py,this._startTs=yy(),this._deltaTs=yy(),this.LOG_THROTTLE_TIMEOUT=0,this._storage=new gy("__probe-".concat(this.id,"__"),wy),this.userData={},this.timeStamp("".concat(this.id," started")),function(e,t=["constructor"]){const i=Object.getPrototypeOf(e),s=Object.getOwnPropertyNames(i);for(const i of s)"function"==typeof e[i]&&(t.find((e=>i===e))||(e[i]=e[i].bind(e)))}(this),Object.seal(this)}set level(e){this.setLevel(e)}get level(){return this.getLevel()}isEnabled(){return this._storage.config.enabled}getLevel(){return this._storage.config.level}getTotal(){return Number((yy()-this._startTs).toPrecision(10))}getDelta(){return Number((yy()-this._deltaTs).toPrecision(10))}set priority(e){this.level=e}get priority(){return this.level}getPriority(){return this.level}enable(e=!0){return this._storage.updateConfiguration({enabled:e}),this}setLevel(e){return this._storage.updateConfiguration({level:e}),this}assert(e,t){by(e,t)}warn(e){return this._getLogFunction(0,e,By.warn,arguments,Cy)}error(e){return this._getLogFunction(0,e,By.error,arguments)}deprecated(e,t){return this.warn("`".concat(e,"` is deprecated and will be removed in a later version. Use `").concat(t,"` instead"))}removed(e,t){return this.error("`".concat(e,"` has been removed. Use `").concat(t,"` instead"))}probe(e,t){return this._getLogFunction(e,t,By.log,arguments,{time:!0,once:!0})}log(e,t){return this._getLogFunction(e,t,By.debug,arguments)}info(e,t){return this._getLogFunction(e,t,console.info,arguments)}once(e,t){return this._getLogFunction(e,t,By.debug||By.info,arguments,Cy)}table(e,t,i){return t?this._getLogFunction(e,t,console.table||xy,i&&[i],{tag:My(t)}):xy}image({logLevel:e,priority:t,image:i,message:s="",scale:r=1}){return this._shouldLog(e||t)?fy?function({image:e,message:t="",scale:i=1}){if("string"==typeof e){const s=new Image;return s.onload=()=>{const e=my(s,t,i);console.log(...e)},s.src=e,xy}const s=e.nodeName||"";if("img"===s.toLowerCase())return console.log(...my(e,t,i)),xy;if("canvas"===s.toLowerCase()){const s=new Image;return s.onload=()=>console.log(...my(s,t,i)),s.src=e.toDataURL(),xy}return xy}({image:i,message:s,scale:r}):function({image:e,message:t="",scale:i=1}){let s=null;try{s=module.require("asciify-image")}catch(e){}if(s)return()=>s(e,{fit:"box",width:"".concat(Math.round(80*i),"%")}).then((e=>console.log(e)));return xy}({image:i,message:s,scale:r}):xy}settings(){console.table?console.table(this._storage.config):console.log(this._storage.config)}get(e){return this._storage.config[e]}set(e,t){this._storage.updateConfiguration({[e]:t})}time(e,t){return this._getLogFunction(e,t,console.time?console.time:console.info)}timeEnd(e,t){return this._getLogFunction(e,t,console.timeEnd?console.timeEnd:console.info)}timeStamp(e,t){return this._getLogFunction(e,t,console.timeStamp||xy)}group(e,t,i={collapsed:!1}){i=Iy({logLevel:e,message:t,opts:i});const{collapsed:s}=i;return i.method=(s?console.groupCollapsed:console.group)||console.info,this._getLogFunction(i)}groupCollapsed(e,t,i={}){return this.group(e,t,Object.assign({},i,{collapsed:!0}))}groupEnd(e){return this._getLogFunction(e,"",console.groupEnd||xy)}withGroup(e,t,i){this.group(e,t)();try{i()}finally{this.groupEnd(e)()}}trace(){console.trace&&console.trace()}_shouldLog(e){return this.isEnabled()&&this.getLevel()>=Ey(e)}_getLogFunction(e,t,i,s=[],r){if(this._shouldLog(e)){r=Iy({logLevel:e,message:t,args:s,opts:r}),by(i=i||r.method),r.total=this.getTotal(),r.delta=this.getDelta(),this._deltaTs=yy();const o=r.tag||r.message;if(r.once){if(Py[o])return xy;Py[o]=yy()}return t=function(e,t,i){if("string"==typeof t){const s=i.time?function(e,t=8){const i=Math.max(t-e.length,0);return"".concat(" ".repeat(i)).concat(e)}(function(e){let t;return t=e<10?"".concat(e.toFixed(2),"ms"):e<100?"".concat(e.toFixed(1),"ms"):e<1e3?"".concat(e.toFixed(0),"ms"):"".concat((e/1e3).toFixed(2),"s"),t}(i.total)):"";t=i.time?"".concat(e,": ").concat(s," ").concat(t):"".concat(e,": ").concat(t),t=function(e,t,i){return fy||"string"!=typeof e||(t&&(t=vy(t),e="[".concat(t,"m").concat(e,"")),i&&(t=vy(i),e="[".concat(i+10,"m").concat(e,""))),e}(t,i.color,i.background)}return t}(this.id,r.message,r),i.bind(console,t,...r.args)}return xy}}function Ey(e){if(!e)return 0;let t;switch(typeof e){case"number":t=e;break;case"object":t=e.logLevel||e.priority||0;break;default:return 0}return by(Number.isFinite(t)&&t>=0),t}function Iy(e){const{logLevel:t,message:i}=e;e.logLevel=Ey(t);const s=e.args?Array.from(e.args):[];for(;s.length&&s.shift()!==i;);switch(e.args=s,typeof t){case"string":case"function":void 0!==i&&s.unshift(i),e.message=t;break;case"object":Object.assign(e,t)}"function"==typeof e.message&&(e.message=e.message());const r=typeof e.message;return by("string"===r||"object"===r),Object.assign(e,e.opts)}Fy.VERSION=py;const Dy=new Fy({id:"loaders.gl"});class Sy{log(){return()=>{}}info(){return()=>{}}warn(){return()=>{}}error(){return()=>{}}}const Ty={fetch:null,mimeType:void 0,nothrow:!1,log:new class{constructor(){wb(this,"console",void 0),this.console=console}log(...e){return this.console.log.bind(this.console,...e)}info(...e){return this.console.info.bind(this.console,...e)}warn(...e){return this.console.warn.bind(this.console,...e)}error(...e){return this.console.error.bind(this.console,...e)}},CDN:"https://unpkg.com/@loaders.gl",worker:!0,maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:pb,_nodeWorkers:!1,_workerType:"",limit:0,_limitMB:0,batchSize:"auto",batchDebounceMs:0,metadata:!1,transforms:[]},Ry={throws:"nothrow",dataType:"(no longer used)",uri:"baseUri",method:"fetch.method",headers:"fetch.headers",body:"fetch.body",mode:"fetch.mode",credentials:"fetch.credentials",cache:"fetch.cache",redirect:"fetch.redirect",referrer:"fetch.referrer",referrerPolicy:"fetch.referrerPolicy",integrity:"fetch.integrity",keepalive:"fetch.keepalive",signal:"fetch.signal"};function Ly(){globalThis.loaders=globalThis.loaders||{};const{loaders:e}=globalThis;return e._state=e._state||{},e._state}const Uy=()=>{const e=Ly();return e.globalOptions=e.globalOptions||{...Ty},e.globalOptions};function ky(e,t,i,s){return i=i||[],function(e,t){Ny(e,null,Ty,Ry,t);for(const i of t){const s=e&&e[i.id]||{},r=i.options&&i.options[i.id]||{},o=i.deprecatedOptions&&i.deprecatedOptions[i.id]||{};Ny(s,i.id,r,o,t)}}(e,i=Array.isArray(i)?i:[i]),function(e,t,i){const s={...e.options||{}};(function(e,t){t&&!("baseUri"in e)&&(e.baseUri=t)})(s,i),null===s.log&&(s.log=new Sy);return Vy(s,Uy()),Vy(s,t),s}(t,e,s)}function Oy(e,t){const i=Uy(),s=e||i;return"function"==typeof s.fetch?s.fetch:Zb(s.fetch)?e=>hy(e,s):null!=t&&t.fetch?null==t?void 0:t.fetch:hy}function Ny(e,t,i,s,r){const o=t||"Top level",n=t?"".concat(t,"."):"";for(const a in e){const l=!t&&Zb(e[a]),A="baseUri"===a&&!t,h="workerUrl"===a&&t;if(!(a in i)&&!A&&!h)if(a in s)Dy.warn("".concat(o," loader option '").concat(n).concat(a,"' no longer supported, use '").concat(s[a],"'"))();else if(!l){const e=Qy(a,r);Dy.warn("".concat(o," loader option '").concat(n).concat(a,"' not recognized. ").concat(e))()}}}function Qy(e,t){const i=e.toLowerCase();let s="";for(const r of t)for(const t in r.options){if(e===t)return"Did you mean '".concat(r.id,".").concat(t,"'?");const o=t.toLowerCase();(i.startsWith(o)||o.startsWith(i))&&(s=s||"Did you mean '".concat(r.id,".").concat(t,"'?"))}return s}function Vy(e,t){for(const i in t)if(i in t){const s=t[i];qb(s)&&qb(e[i])?e[i]={...e[i],...t[i]}:e[i]=t[i]}}function Hy(e){var t;if(!e)return!1;Array.isArray(e)&&(e=e[0]);return Array.isArray(null===(t=e)||void 0===t?void 0:t.extensions)}function jy(e){var t,i;let s;return db(e,"null loader"),db(Hy(e),"invalid loader"),Array.isArray(e)&&(s=e[1],e=e[0],e={...e,options:{...e.options,...s}}),(null!==(t=e)&&void 0!==t&&t.parseTextSync||null!==(i=e)&&void 0!==i&&i.parseText)&&(e.text=!0),e.text||(e.binary=!0),e}function Gy(){return(()=>{const e=Ly();return e.loaderRegistry=e.loaderRegistry||[],e.loaderRegistry})()}function zy(){return!("object"==typeof process&&"[object process]"===String(process)&&!process.browser)||function(e){if("undefined"!=typeof window&&"object"==typeof window.process&&"renderer"===window.process.type)return!0;if("undefined"!=typeof process&&"object"==typeof process.versions&&Boolean(process.versions.electron))return!0;const t="object"==typeof navigator&&"string"==typeof navigator.userAgent&&navigator.userAgent,i=e||t;return!!(i&&i.indexOf("Electron")>=0)}()}const Wy={self:"undefined"!=typeof self&&self,window:"undefined"!=typeof window&&window,global:"undefined"!=typeof global&&global,document:"undefined"!=typeof document&&document,process:"object"==typeof process&&process},Ky=Wy.window||Wy.self||Wy.global,Xy=Wy.process||{},Jy="undefined"!=typeof __VERSION__?__VERSION__:"untranspiled source";zy();class Yy{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"sessionStorage";wb(this,"storage",void 0),wb(this,"id",void 0),wb(this,"config",{}),this.storage=function(e){try{const t=window[e],i="__storage_test__";return t.setItem(i,i),t.removeItem(i),t}catch(e){return null}}(i),this.id=e,this.config={},Object.assign(this.config,t),this._loadConfiguration()}getConfiguration(){return this.config}setConfiguration(e){return this.config={},this.updateConfiguration(e)}updateConfiguration(e){if(Object.assign(this.config,e),this.storage){const e=JSON.stringify(this.config);this.storage.setItem(this.id,e)}return this}_loadConfiguration(){let e={};if(this.storage){const t=this.storage.getItem(this.id);e=t?JSON.parse(t):{}}return Object.assign(this.config,e),this}}function Zy(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:600;const r=e.src.replace(/\(/g,"%28").replace(/\)/g,"%29");e.width>s&&(i=Math.min(i,s/e.width));const o=e.width*i,n=e.height*i,a=["font-size:1px;","padding:".concat(Math.floor(n/2),"px ").concat(Math.floor(o/2),"px;"),"line-height:".concat(n,"px;"),"background:url(".concat(r,");"),"background-size:".concat(o,"px ").concat(n,"px;"),"color:transparent;"].join("");return["".concat(t," %c+"),a]}let qy;function $y(e){return"string"==typeof e?qy[e.toUpperCase()]||qy.WHITE:e}function eB(e,t){if(!e)throw new Error(t||"Assertion failed")}function tB(){let e;var t,i;if(zy&&"performance"in Ky)e=null==Ky||null===(t=Ky.performance)||void 0===t||null===(i=t.now)||void 0===i?void 0:i.call(t);else if("hrtime"in Xy){var s;const t=null==Xy||null===(s=Xy.hrtime)||void 0===s?void 0:s.call(Xy);e=1e3*t[0]+t[1]/1e6}else e=Date.now();return e}!function(e){e[e.BLACK=30]="BLACK",e[e.RED=31]="RED",e[e.GREEN=32]="GREEN",e[e.YELLOW=33]="YELLOW",e[e.BLUE=34]="BLUE",e[e.MAGENTA=35]="MAGENTA",e[e.CYAN=36]="CYAN",e[e.WHITE=37]="WHITE",e[e.BRIGHT_BLACK=90]="BRIGHT_BLACK",e[e.BRIGHT_RED=91]="BRIGHT_RED",e[e.BRIGHT_GREEN=92]="BRIGHT_GREEN",e[e.BRIGHT_YELLOW=93]="BRIGHT_YELLOW",e[e.BRIGHT_BLUE=94]="BRIGHT_BLUE",e[e.BRIGHT_MAGENTA=95]="BRIGHT_MAGENTA",e[e.BRIGHT_CYAN=96]="BRIGHT_CYAN",e[e.BRIGHT_WHITE=97]="BRIGHT_WHITE"}(qy||(qy={}));const iB={debug:zy&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},sB={enabled:!0,level:0};function rB(){}const oB={},nB={once:!0};class aB{constructor(){let{id:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{id:""};wb(this,"id",void 0),wb(this,"VERSION",Jy),wb(this,"_startTs",tB()),wb(this,"_deltaTs",tB()),wb(this,"_storage",void 0),wb(this,"userData",{}),wb(this,"LOG_THROTTLE_TIMEOUT",0),this.id=e,this._storage=new Yy("__probe-".concat(this.id,"__"),sB),this.userData={},this.timeStamp("".concat(this.id," started")),function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:["constructor"];const i=Object.getPrototypeOf(e),s=Object.getOwnPropertyNames(i);for(const i of s)"function"==typeof e[i]&&(t.find((e=>i===e))||(e[i]=e[i].bind(e)))}(this),Object.seal(this)}set level(e){this.setLevel(e)}get level(){return this.getLevel()}isEnabled(){return this._storage.config.enabled}getLevel(){return this._storage.config.level}getTotal(){return Number((tB()-this._startTs).toPrecision(10))}getDelta(){return Number((tB()-this._deltaTs).toPrecision(10))}set priority(e){this.level=e}get priority(){return this.level}getPriority(){return this.level}enable(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._storage.updateConfiguration({enabled:e}),this}setLevel(e){return this._storage.updateConfiguration({level:e}),this}get(e){return this._storage.config[e]}set(e,t){this._storage.updateConfiguration({[e]:t})}settings(){console.table?console.table(this._storage.config):console.log(this._storage.config)}assert(e,t){eB(e,t)}warn(e){return this._getLogFunction(0,e,iB.warn,arguments,nB)}error(e){return this._getLogFunction(0,e,iB.error,arguments)}deprecated(e,t){return this.warn("`".concat(e,"` is deprecated and will be removed in a later version. Use `").concat(t,"` instead"))}removed(e,t){return this.error("`".concat(e,"` has been removed. Use `").concat(t,"` instead"))}probe(e,t){return this._getLogFunction(e,t,iB.log,arguments,{time:!0,once:!0})}log(e,t){return this._getLogFunction(e,t,iB.debug,arguments)}info(e,t){return this._getLogFunction(e,t,console.info,arguments)}once(e,t){for(var i=arguments.length,s=new Array(i>2?i-2:0),r=2;r<i;r++)s[r-2]=arguments[r];return this._getLogFunction(e,t,iB.debug||iB.info,arguments,nB)}table(e,t,i){return t?this._getLogFunction(e,t,console.table||rB,i&&[i],{tag:hB(t)}):rB}image(e){let{logLevel:t,priority:i,image:s,message:r="",scale:o=1}=e;return this._shouldLog(t||i)?zy?function(e){let{image:t,message:i="",scale:s=1}=e;if("string"==typeof t){const e=new Image;return e.onload=()=>{const t=Zy(e,i,s);console.log(...t)},e.src=t,rB}const r=t.nodeName||"";if("img"===r.toLowerCase())return console.log(...Zy(t,i,s)),rB;if("canvas"===r.toLowerCase()){const e=new Image;return e.onload=()=>console.log(...Zy(e,i,s)),e.src=t.toDataURL(),rB}return rB}({image:s,message:r,scale:o}):function(e){let{image:t,message:i="",scale:s=1}=e,r=null;try{r=module.require("asciify-image")}catch(e){}if(r)return()=>r(t,{fit:"box",width:"".concat(Math.round(80*s),"%")}).then((e=>console.log(e)));return rB}({image:s,message:r,scale:o}):rB}time(e,t){return this._getLogFunction(e,t,console.time?console.time:console.info)}timeEnd(e,t){return this._getLogFunction(e,t,console.timeEnd?console.timeEnd:console.info)}timeStamp(e,t){return this._getLogFunction(e,t,console.timeStamp||rB)}group(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{collapsed:!1};const s=AB({logLevel:e,message:t,opts:i}),{collapsed:r}=i;return s.method=(r?console.groupCollapsed:console.group)||console.info,this._getLogFunction(s)}groupCollapsed(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.group(e,t,Object.assign({},i,{collapsed:!0}))}groupEnd(e){return this._getLogFunction(e,"",console.groupEnd||rB)}withGroup(e,t,i){this.group(e,t)();try{i()}finally{this.groupEnd(e)()}}trace(){console.trace&&console.trace()}_shouldLog(e){return this.isEnabled()&&this.getLevel()>=lB(e)}_getLogFunction(e,t,i,s,r){if(this._shouldLog(e)){r=AB({logLevel:e,message:t,args:s,opts:r}),eB(i=i||r.method),r.total=this.getTotal(),r.delta=this.getDelta(),this._deltaTs=tB();const o=r.tag||r.message;if(r.once){if(oB[o])return rB;oB[o]=tB()}return t=function(e,t,i){if("string"==typeof t){const s=i.time?function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8;const i=Math.max(t-e.length,0);return"".concat(" ".repeat(i)).concat(e)}(function(e){let t;return t=e<10?"".concat(e.toFixed(2),"ms"):e<100?"".concat(e.toFixed(1),"ms"):e<1e3?"".concat(e.toFixed(0),"ms"):"".concat((e/1e3).toFixed(2),"s"),t}(i.total)):"";t=i.time?"".concat(e,": ").concat(s," ").concat(t):"".concat(e,": ").concat(t),t=function(e,t,i){return zy||"string"!=typeof e||(t&&(t=$y(t),e="[".concat(t,"m").concat(e,"")),i&&(t=$y(i),e="[".concat(i+10,"m").concat(e,""))),e}(t,i.color,i.background)}return t}(this.id,r.message,r),i.bind(console,t,...r.args)}return rB}}function lB(e){if(!e)return 0;let t;switch(typeof e){case"number":t=e;break;case"object":t=e.logLevel||e.priority||0;break;default:return 0}return eB(Number.isFinite(t)&&t>=0),t}function AB(e){const{logLevel:t,message:i}=e;e.logLevel=lB(t);const s=e.args?Array.from(e.args):[];for(;s.length&&s.shift()!==i;);switch(typeof t){case"string":case"function":void 0!==i&&s.unshift(i),e.message=t;break;case"object":Object.assign(e,t)}"function"==typeof e.message&&(e.message=e.message());const r=typeof e.message;return eB("string"===r||"object"===r),Object.assign(e,{args:s},e.opts)}function hB(e){for(const t in e)for(const i in e[t])return i||"untitled";return"empty"}wb(aB,"VERSION",Jy);const cB=new aB({id:"loaders.gl"}),uB=/\.([^.]+)$/;function dB(e,t=[],i,s){if(!pB(e))return null;if(t&&!Array.isArray(t))return jy(t);let r=[];t&&(r=r.concat(t)),null!=i&&i.ignoreRegisteredLoaders||r.push(...Gy()),function(e){for(const t of e)jy(t)}(r);const o=function(e,t,i,s){const{url:r,type:o}=ay(e),n=r||(null==s?void 0:s.url);let a=null,l="";null!=i&&i.mimeType&&(a=gB(t,null==i?void 0:i.mimeType),l="match forced by supplied MIME type ".concat(null==i?void 0:i.mimeType));var A;a=a||function(e,t){const i=t&&uB.exec(t),s=i&&i[1];return s?function(e,t){t=t.toLowerCase();for(const i of e)for(const e of i.extensions)if(e.toLowerCase()===t)return i;return null}(e,s):null}(t,n),l=l||(a?"matched url ".concat(n):""),a=a||gB(t,o),l=l||(a?"matched MIME type ".concat(o):""),a=a||function(e,t){if(!t)return null;for(const i of e)if("string"==typeof t){if(mB(t,i))return i}else if(ArrayBuffer.isView(t)){if(_B(t.buffer,t.byteOffset,i))return i}else if(t instanceof ArrayBuffer){if(_B(t,0,i))return i}return null}(t,e),l=l||(a?"matched initial data ".concat(vB(e)):""),a=a||gB(t,null==i?void 0:i.fallbackMimeType),l=l||(a?"matched fallback MIME type ".concat(o):""),l&&cB.log(1,"selectLoader selected ".concat(null===(A=a)||void 0===A?void 0:A.name,": ").concat(l,"."));return a}(e,r,i,s);if(!(o||null!=i&&i.nothrow))throw new Error(fB(e));return o}function pB(e){return!(e instanceof Response&&204===e.status)}function fB(e){const{url:t,type:i}=ay(e);let s="No valid loader found (";s+=t?"".concat(function(e){const t=e&&e.lastIndexOf("/");return t>=0?e.substr(t+1):""}(t),", "):"no url provided, ",s+="MIME type: ".concat(i?'"'.concat(i,'"'):"not provided",", ");const r=e?vB(e):"";return s+=r?' first bytes: "'.concat(r,'"'):"first bytes: not available",s+=")",s}function gB(e,t){for(const i of e){if(i.mimeTypes&&i.mimeTypes.includes(t))return i;if(t==="application/x.".concat(i.id))return i}return null}function mB(e,t){if(t.testText)return t.testText(e);return(Array.isArray(t.tests)?t.tests:[t.tests]).some((t=>e.startsWith(t)))}function _B(e,t,i){return(Array.isArray(i.tests)?i.tests:[i.tests]).some((s=>function(e,t,i,s){if(s instanceof ArrayBuffer)return function(e,t,i){if(i=i||e.byteLength,e.byteLength<i||t.byteLength<i)return!1;const s=new Uint8Array(e),r=new Uint8Array(t);for(let e=0;e<s.length;++e)if(s[e]!==r[e])return!1;return!0}(s,e,s.byteLength);switch(typeof s){case"function":return s(e,i);case"string":return s===bB(e,t,s.length);default:return!1}}(e,t,i,s)))}function vB(e,t=5){if("string"==typeof e)return e.slice(0,t);if(ArrayBuffer.isView(e))return bB(e.buffer,e.byteOffset,t);if(e instanceof ArrayBuffer){return bB(e,0,t)}return""}function bB(e,t,i){if(e.byteLength<t+i)return"";const s=new DataView(e);let r="";for(let e=0;e<i;e++)r+=String.fromCharCode(s.getUint8(t+e));return r}const yB=262144;function BB(e,t){return pb?async function*(e,t){const i=e.getReader();let s;try{for(;;){const e=s||i.read();null!=t&&t._streamReadAhead&&(s=i.read());const{done:r,value:o}=await e;if(r)return;yield Gb(o)}}catch(e){i.releaseLock()}}(e,t):async function*(e,t){for await(const t of e)yield Gb(t)}(e)}function wB(e,t){if("string"==typeof e)return function*(e,t){const i=(null==t?void 0:t.chunkSize)||262144;let s=0;const r=new TextEncoder;for(;s<e.length;){const t=Math.min(e.length-s,i),o=e.slice(s,s+t);s+=t,yield r.encode(o)}}(e,t);if(e instanceof ArrayBuffer)return function*(e,t={}){const{chunkSize:i=yB}=t;let s=0;for(;s<e.byteLength;){const t=Math.min(e.byteLength-s,i),r=new ArrayBuffer(t),o=new Uint8Array(e,s,t);new Uint8Array(r).set(o),s+=t,yield r}}(e,t);if(ey(e))return async function*(e,t){const i=(null==t?void 0:t.chunkSize)||1048576;let s=0;for(;s<e.size;){const t=s+i,r=await e.slice(s,t).arrayBuffer();s=t,yield r}}(e,t);if(ty(e))return BB(e,t);if($b(e)){return BB(e.body,t)}throw new Error("makeIterator")}const xB="Cannot convert supplied data type";async function PB(e,t,i){const s=e instanceof ArrayBuffer||ArrayBuffer.isView(e);if("string"==typeof e||s)return function(e,t,i){if(t.text&&"string"==typeof e)return e;var s;if((s=e)&&"object"==typeof s&&s.isBuffer&&(e=e.buffer),e instanceof ArrayBuffer){const i=e;return t.text&&!t.binary?new TextDecoder("utf8").decode(i):i}if(ArrayBuffer.isView(e)){if(t.text&&!t.binary)return new TextDecoder("utf8").decode(e);let i=e.buffer;const s=e.byteLength||e.length;return 0===e.byteOffset&&s===i.byteLength||(i=i.slice(e.byteOffset,e.byteOffset+s)),i}throw new Error(xB)}(e,t);if(ey(e)&&(e=await Ay(e)),$b(e)){const i=e;return await async function(e){if(!e.ok){const t=await async function(e){let t="Failed to fetch resource ".concat(e.url," (").concat(e.status,"): ");try{const i=e.headers.get("Content-Type");let s=e.statusText;i.includes("application/json")&&(s+=" ".concat(await e.text())),t+=s,t=t.length>60?"".concat(t.slice(0,60),"..."):t}catch(e){}return t}(e);throw new Error(t)}}(i),t.binary?await i.arrayBuffer():await i.text()}if(ty(e)&&(e=wB(e,i)),(r=e)&&"function"==typeof r[Symbol.iterator]||(e=>e&&"function"==typeof e[Symbol.asyncIterator])(e))return Xb(e);var r;throw new Error(xB)}async function CB(e,t,i,s){gb(!s||"object"==typeof s),!t||Array.isArray(t)||Hy(t)||(s=void 0,i=t,t=void 0),e=await e,i=i||{};const{url:r}=ay(e),o=function(e,t){if(!t&&e&&!Array.isArray(e))return e;let i;if(e&&(i=Array.isArray(e)?e:[e]),t&&t.loaders){const e=Array.isArray(t.loaders)?t.loaders:[t.loaders];i=i?[...i,...e]:e}return i&&i.length?i:null}(t,s),n=await async function(e,t=[],i,s){if(!pB(e))return null;let r=dB(e,t,{...i,nothrow:!0},s);if(r)return r;if(ey(e)&&(r=dB(e=await e.slice(0,10).arrayBuffer(),t,i,s)),!(r||null!=i&&i.nothrow))throw new Error(fB(e));return r}(e,o,i);return n?(s=function(e,t,i=null){if(i)return i;const s={fetch:Oy(t,e),...e};return Array.isArray(s.loaders)||(s.loaders=null),s}({url:r,parse:CB,loaders:o},i=ky(i,n,o,r),s),await async function(e,t,i,s){if(function(e,t="3.2.6"){gb(e,"no worker provided");const i=e.version}(e),$b(t)){const e=t,{ok:i,redirected:r,status:o,statusText:n,type:a,url:l}=e,A=Object.fromEntries(e.headers.entries());s.response={headers:A,ok:i,redirected:r,status:o,statusText:n,type:a,url:l}}if(t=await PB(t,e,i),e.parseTextSync&&"string"==typeof t)return i.dataType="text",e.parseTextSync(t,i,s,e);if(function(e,t){return!!Lb.isSupported()&&!!(vb||null!=t&&t._nodeWorkers)&&e.worker&&(null==t?void 0:t.worker)}(e,i))return await Nb(e,t,i,s,CB);if(e.parseText&&"string"==typeof t)return await e.parseText(t,i,s,e);if(e.parse)return await e.parse(t,i,s,e);throw gb(!e.parseSync),new Error("".concat(e.id," loader - no parser found and worker is disabled"))}(n,e,i,s)):null}const MB="https://unpkg.com/@loaders.gl/textures@".concat("3.2.6","/dist/libs/basis_encoder.wasm"),FB="https://unpkg.com/@loaders.gl/textures@".concat("3.2.6","/dist/libs/basis_encoder.js");let EB,IB;async function DB(e){const t=e.modules||{};return t.basis?t.basis:(EB=EB||async function(e){let t=null,i=null;return[t,i]=await Promise.all([await Ob("basis_transcoder.js","textures",e),await Ob("basis_transcoder.wasm","textures",e)]),t=t||globalThis.BASIS,await function(e,t){const i={};t&&(i.wasmBinary=t);return new Promise((t=>{e(i).then((e=>{const{BasisFile:i,initializeBasis:s}=e;s(),t({BasisFile:i})}))}))}(t,i)}(e),await EB)}async function SB(e){const t=e.modules||{};return t.basisEncoder?t.basisEncoder:(IB=IB||async function(e){let t=null,i=null;return[t,i]=await Promise.all([await Ob(FB,"textures",e),await Ob(MB,"textures",e)]),t=t||globalThis.BASIS,await function(e,t){const i={};t&&(i.wasmBinary=t);return new Promise((t=>{e(i).then((e=>{const{BasisFile:i,KTX2File:s,initializeBasis:r,BasisEncoder:o}=e;r(),t({BasisFile:i,KTX2File:s,BasisEncoder:o})}))}))}(t,i)}(e),await IB)}const TB=33776,RB=33779,LB=35840,UB=35842,kB=36196,OB=37808,NB=["","WEBKIT_","MOZ_"],QB={WEBGL_compressed_texture_s3tc:"dxt",WEBGL_compressed_texture_s3tc_srgb:"dxt-srgb",WEBGL_compressed_texture_etc1:"etc1",WEBGL_compressed_texture_etc:"etc2",WEBGL_compressed_texture_pvrtc:"pvrtc",WEBGL_compressed_texture_atc:"atc",WEBGL_compressed_texture_astc:"astc",EXT_texture_compression_rgtc:"rgtc"};let VB=null;function HB(e){if(!VB){e=e||function(){try{return document.createElement("canvas").getContext("webgl")}catch(e){return null}}()||void 0,VB=new Set;for(const t of NB)for(const i in QB)if(e&&e.getExtension("".concat(t).concat(i))){const e=QB[i];VB.add(e)}}return VB}var jB,GB,zB,WB,KB,XB,JB,YB,ZB;(ZB=jB||(jB={}))[ZB.NONE=0]="NONE",ZB[ZB.BASISLZ=1]="BASISLZ",ZB[ZB.ZSTD=2]="ZSTD",ZB[ZB.ZLIB=3]="ZLIB",function(e){e[e.BASICFORMAT=0]="BASICFORMAT"}(GB||(GB={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.ETC1S=163]="ETC1S",e[e.UASTC=166]="UASTC"}(zB||(zB={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.SRGB=1]="SRGB"}(WB||(WB={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.LINEAR=1]="LINEAR",e[e.SRGB=2]="SRGB",e[e.ITU=3]="ITU",e[e.NTSC=4]="NTSC",e[e.SLOG=5]="SLOG",e[e.SLOG2=6]="SLOG2"}(KB||(KB={})),function(e){e[e.ALPHA_STRAIGHT=0]="ALPHA_STRAIGHT",e[e.ALPHA_PREMULTIPLIED=1]="ALPHA_PREMULTIPLIED"}(XB||(XB={})),function(e){e[e.RGB=0]="RGB",e[e.RRR=3]="RRR",e[e.GGG=4]="GGG",e[e.AAA=15]="AAA"}(JB||(JB={})),function(e){e[e.RGB=0]="RGB",e[e.RGBA=3]="RGBA",e[e.RRR=4]="RRR",e[e.RRRG=5]="RRRG"}(YB||(YB={}));const qB=[171,75,84,88,32,50,48,187,13,10,26,10];const $B={etc1:{basisFormat:0,compressed:!0,format:kB},etc2:{basisFormat:1,compressed:!0},bc1:{basisFormat:2,compressed:!0,format:TB},bc3:{basisFormat:3,compressed:!0,format:RB},bc4:{basisFormat:4,compressed:!0},bc5:{basisFormat:5,compressed:!0},"bc7-m6-opaque-only":{basisFormat:6,compressed:!0},"bc7-m5":{basisFormat:7,compressed:!0},"pvrtc1-4-rgb":{basisFormat:8,compressed:!0,format:LB},"pvrtc1-4-rgba":{basisFormat:9,compressed:!0,format:UB},"astc-4x4":{basisFormat:10,compressed:!0,format:OB},"atc-rgb":{basisFormat:11,compressed:!0},"atc-rgba-interpolated-alpha":{basisFormat:12,compressed:!0},rgba32:{basisFormat:13,compressed:!1},rgb565:{basisFormat:14,compressed:!1},bgr565:{basisFormat:15,compressed:!1},rgba4444:{basisFormat:16,compressed:!1}};function ew(e,t,i){const s=new e(new Uint8Array(t));try{if(!s.startTranscoding())throw new Error("Failed to start basis transcoding");const e=s.getNumImages(),t=[];for(let r=0;r<e;r++){const e=s.getNumLevels(r),o=[];for(let t=0;t<e;t++)o.push(tw(s,r,t,i));t.push(o)}return t}finally{s.close(),s.delete()}}function tw(e,t,i,s){const r=e.getImageWidth(t,i),o=e.getImageHeight(t,i),n=e.getHasAlpha(),{compressed:a,format:l,basisFormat:A}=rw(s,n),h=e.getImageTranscodedSizeInBytes(t,i,A),c=new Uint8Array(h);if(!e.transcodeImage(c,t,i,A,0,0))throw new Error("failed to start Basis transcoding");return{width:r,height:o,data:c,compressed:a,format:l,hasAlpha:n}}function iw(e,t,i){const s=new e(new Uint8Array(t));try{if(!s.startTranscoding())throw new Error("failed to start KTX2 transcoding");const e=s.getLevels(),t=[];for(let r=0;r<e;r++){t.push(sw(s,r,i));break}return[t]}finally{s.close(),s.delete()}}function sw(e,t,i){const{alphaFlag:s,height:r,width:o}=e.getImageLevelInfo(t,0,0),{compressed:n,format:a,basisFormat:l}=rw(i,s),A=e.getImageTranscodedSizeInBytes(t,0,0,l),h=new Uint8Array(A);if(!e.transcodeImage(h,t,0,0,l,0,-1,-1))throw new Error("Failed to transcode KTX2 image");return{width:o,height:r,data:h,compressed:n,hasAlpha:s,format:a}}function rw(e,t){let i=e&&e.basis&&e.basis.format;return"auto"===i&&(i=ow()),"object"==typeof i&&(i=t?i.alpha:i.noAlpha),i=i.toLowerCase(),$B[i]}function ow(){const e=HB();return e.has("astc")?"astc-4x4":e.has("dxt")?{alpha:"bc3",noAlpha:"bc1"}:e.has("pvrtc")?{alpha:"pvrtc1-4-rgba",noAlpha:"pvrtc1-4-rgb"}:e.has("etc1")?"etc1":e.has("etc2")?"etc2":"rgb565"}const nw={...{name:"Basis",id:"basis",module:"textures",version:"3.2.6",worker:!0,extensions:["basis","ktx2"],mimeTypes:["application/octet-stream","image/ktx2"],tests:["sB"],binary:!0,options:{basis:{format:"auto",libraryPath:"libs/",containerFormat:"auto",module:"transcoder"}}},parse:async function(e,t){if("auto"===t.basis.containerFormat){if(function(e){const t=new Uint8Array(e);return!(t.byteLength<qB.length||t[0]!==qB[0]||t[1]!==qB[1]||t[2]!==qB[2]||t[3]!==qB[3]||t[4]!==qB[4]||t[5]!==qB[5]||t[6]!==qB[6]||t[7]!==qB[7]||t[8]!==qB[8]||t[9]!==qB[9]||t[10]!==qB[10]||t[11]!==qB[11])}(e)){return iw((await SB(t)).KTX2File,e,t)}const{BasisFile:i}=await DB(t);return ew(i,e,t)}if("encoder"===t.basis.module){const i=await SB(t);return"ktx2"===t.basis.containerFormat?iw(i.KTX2File,e,t):ew(i.BasisFile,e,t)}{const{BasisFile:i}=await DB(t);return ew(i,e,t)}}},{_parseImageNode:aw}=globalThis,lw="undefined"!=typeof Image,Aw="undefined"!=typeof ImageBitmap,hw=Boolean(aw),cw=!!pb||hw;function uw(e){const t=function(e){if("undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap)return"imagebitmap";if("undefined"!=typeof Image&&e instanceof Image)return"image";if(e&&"object"==typeof e&&e.data&&e.width&&e.height)return"data";return null}(e);if(!t)throw new Error("Not an image");return t}const dw=/^data:image\/svg\+xml/,pw=/\.svg((\?|#).*)?$/;function fw(e){return e&&(dw.test(e)||pw.test(e))}function gw(e,t){if(fw(t))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(e)])}async function mw(e,t,i){const s=function(e,t){if(fw(t)){let t=(new TextDecoder).decode(e);try{"function"==typeof unescape&&"function"==typeof encodeURIComponent&&(t=unescape(encodeURIComponent(t)))}catch(e){throw new Error(e.message)}return"data:image/svg+xml;base64,".concat(btoa(t))}return gw(e,t)}(e,i),r=self.URL||self.webkitURL,o="string"!=typeof s&&r.createObjectURL(s);try{return await async function(e,t){const i=new Image;if(i.src=e,t.image&&t.image.decode&&i.decode)return await i.decode(),i;return await new Promise(((t,s)=>{try{i.onload=()=>t(i),i.onerror=t=>s(new Error("Could not load image ".concat(e,": ").concat(t)))}catch(e){s(e)}}))}(o||s,t)}finally{o&&r.revokeObjectURL(o)}}const _w={};let vw=!0;async function bw(e,t,i){let s;if(fw(i)){s=await mw(e,t,i)}else s=gw(e,i);const r=t&&t.imagebitmap;return await async function(e,t=null){!function(e){for(const t in e||_w)return!1;return!0}(t)&&vw||(t=null);if(t)try{return await createImageBitmap(e,t)}catch(e){console.warn(e),vw=!1}return await createImageBitmap(e)}(s,r)}function yw(e){const t=Bw(e);return function(e){const t=Bw(e);if(!(t.byteLength>=24&&2303741511===t.getUint32(0,false)))return null;return{mimeType:"image/png",width:t.getUint32(16,false),height:t.getUint32(20,false)}}(t)||function(e){const t=Bw(e);if(!(t.byteLength>=3&&65496===t.getUint16(0,false)&&255===t.getUint8(2)))return null;const{tableMarkers:i,sofMarkers:s}=function(){const e=new Set([65499,65476,65484,65501,65534]);for(let t=65504;t<65520;++t)e.add(t);const t=new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502]);return{tableMarkers:e,sofMarkers:t}}();let r=2;for(;r+9<t.byteLength;){const e=t.getUint16(r,false);if(s.has(e))return{mimeType:"image/jpeg",height:t.getUint16(r+5,false),width:t.getUint16(r+7,false)};if(!i.has(e))return null;r+=2,r+=t.getUint16(r,false)}return null}(t)||function(e){const t=Bw(e);if(!(t.byteLength>=10&&1195984440===t.getUint32(0,false)))return null;return{mimeType:"image/gif",width:t.getUint16(6,true),height:t.getUint16(8,true)}}(t)||function(e){const t=Bw(e);if(!(t.byteLength>=14&&16973===t.getUint16(0,false)&&t.getUint32(2,true)===t.byteLength))return null;return{mimeType:"image/bmp",width:t.getUint32(18,true),height:t.getUint32(22,true)}}(t)}function Bw(e){if(e instanceof DataView)return e;if(ArrayBuffer.isView(e))return new DataView(e.buffer);if(e instanceof ArrayBuffer)return new DataView(e);throw new Error("toDataView")}const ww={id:"image",module:"images",name:"Images",version:"3.2.6",mimeTypes:["image/png","image/jpeg","image/gif","image/webp","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],extensions:["png","jpg","jpeg","gif","webp","bmp","ico","svg"],parse:async function(e,t,i){const s=((t=t||{}).image||{}).type||"auto",{url:r}=i||{};let o;switch(function(e){switch(e){case"auto":case"data":return function(){if(Aw)return"imagebitmap";if(lw)return"image";if(cw)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}();default:return function(e){switch(e){case"auto":return Aw||lw||cw;case"imagebitmap":return Aw;case"image":return lw;case"data":return cw;default:throw new Error("@loaders.gl/images: image ".concat(e," not supported in this environment"))}}(e),e}}(s)){case"imagebitmap":o=await bw(e,t,r);break;case"image":o=await mw(e,t,r);break;case"data":o=await async function(e,t){const{mimeType:i}=yw(e)||{},s=globalThis._parseImageNode;return db(s),await s(e,i)}(e);break;default:db(!1)}return"data"===s&&(o=function(e){switch(uw(e)){case"data":return e;case"image":case"imagebitmap":const t=document.createElement("canvas"),i=t.getContext("2d");if(!i)throw new Error("getImageData");return t.width=e.width,t.height=e.height,i.drawImage(e,0,0),i.getImageData(0,0,e.width,e.height);default:throw new Error("getImageData")}}(o)),o},tests:[e=>Boolean(yw(new DataView(e)))],options:{image:{type:"auto",decode:!0}}},xw=["image/png","image/jpeg","image/gif"],Pw={};function Cw(e){return void 0===Pw[e]&&(Pw[e]=function(e){switch(e){case"image/webp":return function(){if(!pb)return!1;try{return 0===document.createElement("canvas").toDataURL("image/webp").indexOf("data:image/webp")}catch{return!1}}();case"image/svg":return pb;default:if(!pb){const{_parseImageNode:t}=globalThis;return Boolean(t)&&xw.includes(e)}return!0}}(e)),Pw[e]}function Mw(e,t){if(!e)throw new Error(t||"assert failed: gltf")}function Fw(e,t){if(e.startsWith("data:")||e.startsWith("http:")||e.startsWith("https:"))return e;const i=t.baseUri||t.uri;if(!i)throw new Error("'baseUri' must be provided to resolve relative url ".concat(e));return i.substr(0,i.lastIndexOf("/")+1)+e}const Ew=["SCALAR","VEC2","VEC3","VEC4"],Iw=[[Int8Array,5120],[Uint8Array,5121],[Int16Array,5122],[Uint16Array,5123],[Uint32Array,5125],[Float32Array,5126],[Float64Array,5130]],Dw=new Map(Iw),Sw={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Tw={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},Rw={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function Lw(e){return Ew[e-1]||Ew[0]}function Uw(e){const t=Dw.get(e.constructor);if(!t)throw new Error("Illegal typed array");return t}function kw(e,t){const i=Rw[e.componentType],s=Sw[e.type],r=Tw[e.componentType],o=e.count*s,n=e.count*s*r;return Mw(n>=0&&n<=t.byteLength),{ArrayType:i,length:o,byteLength:n}}const Ow={asset:{version:"2.0",generator:"loaders.gl"},buffers:[]};class Nw{constructor(e){wb(this,"gltf",void 0),wb(this,"sourceBuffers",void 0),wb(this,"byteLength",void 0),this.gltf=e||{json:{...Ow},buffers:[]},this.sourceBuffers=[],this.byteLength=0,this.gltf.buffers&&this.gltf.buffers[0]&&(this.byteLength=this.gltf.buffers[0].byteLength,this.sourceBuffers=[this.gltf.buffers[0]])}get json(){return this.gltf.json}getApplicationData(e){return this.json[e]}getExtraData(e){return(this.json.extras||{})[e]}getExtension(e){const t=this.getUsedExtensions().find((t=>t===e)),i=this.json.extensions||{};return t?i[e]||!0:null}getRequiredExtension(e){const t=this.getRequiredExtensions().find((t=>t===e));return t?this.getExtension(e):null}getRequiredExtensions(){return this.json.extensionsRequired||[]}getUsedExtensions(){return this.json.extensionsUsed||[]}getObjectExtension(e,t){return(e.extensions||{})[t]}getScene(e){return this.getObject("scenes",e)}getNode(e){return this.getObject("nodes",e)}getSkin(e){return this.getObject("skins",e)}getMesh(e){return this.getObject("meshes",e)}getMaterial(e){return this.getObject("materials",e)}getAccessor(e){return this.getObject("accessors",e)}getTexture(e){return this.getObject("textures",e)}getSampler(e){return this.getObject("samplers",e)}getImage(e){return this.getObject("images",e)}getBufferView(e){return this.getObject("bufferViews",e)}getBuffer(e){return this.getObject("buffers",e)}getObject(e,t){if("object"==typeof t)return t;const i=this.json[e]&&this.json[e][t];if(!i)throw new Error("glTF file error: Could not find ".concat(e,"[").concat(t,"]"));return i}getTypedArrayForBufferView(e){const t=(e=this.getBufferView(e)).buffer,i=this.gltf.buffers[t];Mw(i);const s=(e.byteOffset||0)+i.byteOffset;return new Uint8Array(i.arrayBuffer,s,e.byteLength)}getTypedArrayForAccessor(e){e=this.getAccessor(e);const t=this.getBufferView(e.bufferView),i=this.getBuffer(t.buffer).data,{ArrayType:s,length:r}=kw(e,t);return new s(i,t.byteOffset+e.byteOffset,r)}getTypedArrayForImageData(e){e=this.getAccessor(e);const t=this.getBufferView(e.bufferView),i=this.getBuffer(t.buffer).data,s=t.byteOffset||0;return new Uint8Array(i,s,t.byteLength)}addApplicationData(e,t){return this.json[e]=t,this}addExtraData(e,t){return this.json.extras=this.json.extras||{},this.json.extras[e]=t,this}addObjectExtension(e,t,i){return e.extensions=e.extensions||{},e.extensions[t]=i,this.registerUsedExtension(t),this}setObjectExtension(e,t,i){(e.extensions||{})[t]=i}removeObjectExtension(e,t){const i=e.extensions||{},s=i[t];return delete i[t],s}addExtension(e,t={}){return Mw(t),this.json.extensions=this.json.extensions||{},this.json.extensions[e]=t,this.registerUsedExtension(e),t}addRequiredExtension(e,t={}){return Mw(t),this.addExtension(e,t),this.registerRequiredExtension(e),t}registerUsedExtension(e){this.json.extensionsUsed=this.json.extensionsUsed||[],this.json.extensionsUsed.find((t=>t===e))||this.json.extensionsUsed.push(e)}registerRequiredExtension(e){this.registerUsedExtension(e),this.json.extensionsRequired=this.json.extensionsRequired||[],this.json.extensionsRequired.find((t=>t===e))||this.json.extensionsRequired.push(e)}removeExtension(e){this.json.extensionsRequired&&this._removeStringFromArray(this.json.extensionsRequired,e),this.json.extensionsUsed&&this._removeStringFromArray(this.json.extensionsUsed,e),this.json.extensions&&delete this.json.extensions[e]}setDefaultScene(e){this.json.scene=e}addScene(e){const{nodeIndices:t}=e;return this.json.scenes=this.json.scenes||[],this.json.scenes.push({nodes:t}),this.json.scenes.length-1}addNode(e){const{meshIndex:t,matrix:i}=e;this.json.nodes=this.json.nodes||[];const s={mesh:t};return i&&(s.matrix=i),this.json.nodes.push(s),this.json.nodes.length-1}addMesh(e){const{attributes:t,indices:i,material:s,mode:r=4}=e,o={primitives:[{attributes:this._addAttributes(t),mode:r}]};if(i){const e=this._addIndices(i);o.primitives[0].indices=e}return Number.isFinite(s)&&(o.primitives[0].material=s),this.json.meshes=this.json.meshes||[],this.json.meshes.push(o),this.json.meshes.length-1}addPointCloud(e){const t={primitives:[{attributes:this._addAttributes(e),mode:0}]};return this.json.meshes=this.json.meshes||[],this.json.meshes.push(t),this.json.meshes.length-1}addImage(e,t){const i=yw(e),s=t||(null==i?void 0:i.mimeType),r={bufferView:this.addBufferView(e),mimeType:s};return this.json.images=this.json.images||[],this.json.images.push(r),this.json.images.length-1}addBufferView(e){const t=e.byteLength;Mw(Number.isFinite(t)),this.sourceBuffers=this.sourceBuffers||[],this.sourceBuffers.push(e);const i={buffer:0,byteOffset:this.byteLength,byteLength:t};return this.byteLength+=Wb(t,4),this.json.bufferViews=this.json.bufferViews||[],this.json.bufferViews.push(i),this.json.bufferViews.length-1}addAccessor(e,t){const i={bufferView:e,type:Lw(t.size),componentType:t.componentType,count:t.count,max:t.max,min:t.min};return this.json.accessors=this.json.accessors||[],this.json.accessors.push(i),this.json.accessors.length-1}addBinaryBuffer(e,t={size:3}){const i=this.addBufferView(e);let s={min:t.min,max:t.max};s.min&&s.max||(s=this._getAccessorMinMax(e,t.size));const r={size:t.size,componentType:Uw(e),count:Math.round(e.length/t.size),min:s.min,max:s.max};return this.addAccessor(i,Object.assign(r,t))}addTexture(e){const{imageIndex:t}=e,i={source:t};return this.json.textures=this.json.textures||[],this.json.textures.push(i),this.json.textures.length-1}addMaterial(e){return this.json.materials=this.json.materials||[],this.json.materials.push(e),this.json.materials.length-1}createBinaryChunk(){var e,t;this.gltf.buffers=[];const i=this.byteLength,s=new ArrayBuffer(i),r=new Uint8Array(s);let o=0;for(const e of this.sourceBuffers||[])o=Kb(e,r,o);null!==(e=this.json)&&void 0!==e&&null!==(t=e.buffers)&&void 0!==t&&t[0]?this.json.buffers[0].byteLength=i:this.json.buffers=[{byteLength:i}],this.gltf.binary=s,this.sourceBuffers=[s]}_removeStringFromArray(e,t){let i=!0;for(;i;){const s=e.indexOf(t);s>-1?e.splice(s,1):i=!1}}_addAttributes(e={}){const t={};for(const i in e){const s=e[i],r=this._getGltfAttributeName(i),o=this.addBinaryBuffer(s.value,s);t[r]=o}return t}_addIndices(e){return this.addBinaryBuffer(e,{size:1})}_getGltfAttributeName(e){switch(e.toLowerCase()){case"position":case"positions":case"vertices":return"POSITION";case"normal":case"normals":return"NORMAL";case"color":case"colors":return"COLOR_0";case"texcoord":case"texcoords":return"TEXCOORD_0";default:return e}}_getAccessorMinMax(e,t){const i={min:null,max:null};if(e.length<t)return i;i.min=[],i.max=[];const s=e.subarray(0,t);for(const e of s)i.min.push(e),i.max.push(e);for(let s=t;s<e.length;s+=t)for(let r=0;r<t;r++)i.min[0+r]=Math.min(i.min[0+r],e[s+r]),i.max[0+r]=Math.max(i.max[0+r],e[s+r]);return i}}const Qw="B9h9z9tFBBBF8fL9gBB9gLaaaaaFa9gEaaaB9gFaFa9gEaaaFaEMcBFFFGGGEIIILF9wFFFLEFBFKNFaFCx/IFMO/LFVK9tv9t9vq95GBt9f9f939h9z9t9f9j9h9s9s9f9jW9vq9zBBp9tv9z9o9v9wW9f9kv9j9v9kv9WvqWv94h919m9mvqBF8Z9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv94h919m9mvqBGy9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv949TvZ91v9u9jvBEn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9P9jWBIi9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9R919hWBLn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9F949wBKI9z9iqlBOc+x8ycGBM/qQFTa8jUUUUBCU/EBlHL8kUUUUBC9+RKGXAGCFJAI9LQBCaRKAE2BBC+gF9HQBALAEAIJHOAGlAGTkUUUBRNCUoBAG9uC/wgBZHKCUGAKCUG9JyRVAECFJRICBRcGXEXAcAF9PQFAVAFAclAcAVJAF9JyRMGXGXAG9FQBAMCbJHKC9wZRSAKCIrCEJCGrRQANCUGJRfCBRbAIRTEXGXAOATlAQ9PQBCBRISEMATAQJRIGXAS9FQBCBRtCBREEXGXAOAIlCi9PQBCBRISLMANCU/CBJAEJRKGXGXGXGXGXATAECKrJ2BBAtCKZrCEZfIBFGEBMAKhB83EBAKCNJhB83EBSEMAKAI2BIAI2BBHmCKrHYAYCE6HYy86BBAKCFJAICIJAYJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCGJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCEJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCIJAYAmJHY2BBAI2BFHmCKrHPAPCE6HPy86BBAKCLJAYAPJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCKJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCOJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCNJAYAmJHY2BBAI2BGHmCKrHPAPCE6HPy86BBAKCVJAYAPJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCcJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCMJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCSJAYAmJHm2BBAI2BEHICKrHYAYCE6HYy86BBAKCQJAmAYJHm2BBAICIrCEZHYAYCE6HYy86BBAKCfJAmAYJHm2BBAICGrCEZHYAYCE6HYy86BBAKCbJAmAYJHK2BBAICEZHIAICE6HIy86BBAKAIJRISGMAKAI2BNAI2BBHmCIrHYAYCb6HYy86BBAKCFJAICNJAYJHY2BBAmCbZHmAmCb6Hmy86BBAKCGJAYAmJHm2BBAI2BFHYCIrHPAPCb6HPy86BBAKCEJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCIJAmAYJHm2BBAI2BGHYCIrHPAPCb6HPy86BBAKCLJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCKJAmAYJHm2BBAI2BEHYCIrHPAPCb6HPy86BBAKCOJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCNJAmAYJHm2BBAI2BIHYCIrHPAPCb6HPy86BBAKCVJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCcJAmAYJHm2BBAI2BLHYCIrHPAPCb6HPy86BBAKCMJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCSJAmAYJHm2BBAI2BKHYCIrHPAPCb6HPy86BBAKCQJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCfJAmAYJHm2BBAI2BOHICIrHYAYCb6HYy86BBAKCbJAmAYJHK2BBAICbZHIAICb6HIy86BBAKAIJRISFMAKAI8pBB83BBAKCNJAICNJ8pBB83BBAICTJRIMAtCGJRtAECTJHEAS9JQBMMGXAIQBCBRISEMGXAM9FQBANAbJ2BBRtCBRKAfREEXAEANCU/CBJAKJ2BBHTCFrCBATCFZl9zAtJHt86BBAEAGJREAKCFJHKAM9HQBMMAfCFJRfAIRTAbCFJHbAG9HQBMMABAcAG9sJANCUGJAMAG9sTkUUUBpANANCUGJAMCaJAG9sJAGTkUUUBpMAMCBAIyAcJRcAIQBMC9+RKSFMCBC99AOAIlAGCAAGCA9Ly6yRKMALCU/EBJ8kUUUUBAKM+OmFTa8jUUUUBCoFlHL8kUUUUBC9+RKGXAFCE9uHOCtJAI9LQBCaRKAE2BBHNC/wFZC/gF9HQBANCbZHVCF9LQBALCoBJCgFCUFT+JUUUBpALC84Jha83EBALC8wJha83EBALC8oJha83EBALCAJha83EBALCiJha83EBALCTJha83EBALha83ENALha83EBAEAIJC9wJRcAECFJHNAOJRMGXAF9FQBCQCbAVCF6yRSABRECBRVCBRQCBRfCBRICBRKEXGXAMAcuQBC9+RKSEMGXGXAN2BBHOC/vF9LQBALCoBJAOCIrCa9zAKJCbZCEWJHb8oGIRTAb8oGBRtGXAOCbZHbAS9PQBALAOCa9zAIJCbZCGWJ8oGBAVAbyROAb9FRbGXGXAGCG9HQBABAt87FBABCIJAO87FBABCGJAT87FBSFMAEAtjGBAECNJAOjGBAECIJATjGBMAVAbJRVALCoBJAKCEWJHmAOjGBAmATjGIALAICGWJAOjGBALCoBJAKCFJCbZHKCEWJHTAtjGBATAOjGIAIAbJRIAKCFJRKSGMGXGXAbCb6QBAQAbJAbC989zJCFJRQSFMAM1BBHbCgFZROGXGXAbCa9MQBAMCFJRMSFMAM1BFHbCgBZCOWAOCgBZqROGXAbCa9MQBAMCGJRMSFMAM1BGHbCgBZCfWAOqROGXAbCa9MQBAMCEJRMSFMAM1BEHbCgBZCdWAOqROGXAbCa9MQBAMCIJRMSFMAM2BIC8cWAOqROAMCLJRMMAOCFrCBAOCFZl9zAQJRQMGXGXAGCG9HQBABAt87FBABCIJAQ87FBABCGJAT87FBSFMAEAtjGBAECNJAQjGBAECIJATjGBMALCoBJAKCEWJHOAQjGBAOATjGIALAICGWJAQjGBALCoBJAKCFJCbZHKCEWJHOAtjGBAOAQjGIAICFJRIAKCFJRKSFMGXAOCDF9LQBALAIAcAOCbZJ2BBHbCIrHTlCbZCGWJ8oGBAVCFJHtATyROALAIAblCbZCGWJ8oGBAtAT9FHmJHtAbCbZHTyRbAT9FRTGXGXAGCG9HQBABAV87FBABCIJAb87FBABCGJAO87FBSFMAEAVjGBAECNJAbjGBAECIJAOjGBMALAICGWJAVjGBALCoBJAKCEWJHYAOjGBAYAVjGIALAICFJHICbZCGWJAOjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAIAmJCbZHICGWJAbjGBALCoBJAKCGJCbZHKCEWJHOAVjGBAOAbjGIAKCFJRKAIATJRIAtATJRVSFMAVCBAM2BBHYyHTAOC/+F6HPJROAYCbZRtGXGXAYCIrHmQBAOCFJRbSFMAORbALAIAmlCbZCGWJ8oGBROMGXGXAtQBAbCFJRVSFMAbRVALAIAYlCbZCGWJ8oGBRbMGXGXAP9FQBAMCFJRYSFMAM1BFHYCgFZRTGXGXAYCa9MQBAMCGJRYSFMAM1BGHYCgBZCOWATCgBZqRTGXAYCa9MQBAMCEJRYSFMAM1BEHYCgBZCfWATqRTGXAYCa9MQBAMCIJRYSFMAM1BIHYCgBZCdWATqRTGXAYCa9MQBAMCLJRYSFMAMCKJRYAM2BLC8cWATqRTMATCFrCBATCFZl9zAQJHQRTMGXGXAmCb6QBAYRPSFMAY1BBHMCgFZROGXGXAMCa9MQBAYCFJRPSFMAY1BFHMCgBZCOWAOCgBZqROGXAMCa9MQBAYCGJRPSFMAY1BGHMCgBZCfWAOqROGXAMCa9MQBAYCEJRPSFMAY1BEHMCgBZCdWAOqROGXAMCa9MQBAYCIJRPSFMAYCLJRPAY2BIC8cWAOqROMAOCFrCBAOCFZl9zAQJHQROMGXGXAtCb6QBAPRMSFMAP1BBHMCgFZRbGXGXAMCa9MQBAPCFJRMSFMAP1BFHMCgBZCOWAbCgBZqRbGXAMCa9MQBAPCGJRMSFMAP1BGHMCgBZCfWAbqRbGXAMCa9MQBAPCEJRMSFMAP1BEHMCgBZCdWAbqRbGXAMCa9MQBAPCIJRMSFMAPCLJRMAP2BIC8cWAbqRbMAbCFrCBAbCFZl9zAQJHQRbMGXGXAGCG9HQBABAT87FBABCIJAb87FBABCGJAO87FBSFMAEATjGBAECNJAbjGBAECIJAOjGBMALCoBJAKCEWJHYAOjGBAYATjGIALAICGWJATjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAICFJHICbZCGWJAOjGBALCoBJAKCGJCbZCEWJHOATjGBAOAbjGIALAIAm9FAmCb6qJHICbZCGWJAbjGBAIAt9FAtCb6qJRIAKCEJRKMANCFJRNABCKJRBAECSJREAKCbZRKAICbZRIAfCEJHfAF9JQBMMCBC99AMAc6yRKMALCoFJ8kUUUUBAKM/tIFGa8jUUUUBCTlRLC9+RKGXAFCLJAI9LQBCaRKAE2BBC/+FZC/QF9HQBALhB83ENAECFJRKAEAIJC98JREGXAF9FQBGXAGCG6QBEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMALCNJAICFZCGWqHGAICGrCBAICFrCFZl9zAG8oGBJHIjGBABAIjGBABCIJRBAFCaJHFQBSGMMEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMABAICGrCBAICFrCFZl9zALCNJAICFZCGWqHI8oGBJHG87FBAIAGjGBABCGJRBAFCaJHFQBMMCBC99AKAE6yRKMAKM+lLKFaF99GaG99FaG99GXGXAGCI9HQBAF9FQFEXGXGX9DBBB8/9DBBB+/ABCGJHG1BB+yAB1BBHE+yHI+L+TABCFJHL1BBHK+yHO+L+THN9DBBBB9gHVyAN9DBB/+hANAN+U9DBBBBANAVyHcAc+MHMAECa3yAI+SHIAI+UAcAMAKCa3yAO+SHcAc+U+S+S+R+VHO+U+SHN+L9DBBB9P9d9FQBAN+oRESFMCUUUU94REMAGAE86BBGXGX9DBBB8/9DBBB+/Ac9DBBBB9gyAcAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMALAG86BBGXGX9DBBB8/9DBBB+/AI9DBBBB9gyAIAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMABAG86BBABCIJRBAFCaJHFQBSGMMAF9FQBEXGXGX9DBBB8/9DBBB+/ABCIJHG8uFB+yAB8uFBHE+yHI+L+TABCGJHL8uFBHK+yHO+L+THN9DBBBB9gHVyAN9DB/+g6ANAN+U9DBBBBANAVyHcAc+MHMAECa3yAI+SHIAI+UAcAMAKCa3yAO+SHcAc+U+S+S+R+VHO+U+SHN+L9DBBB9P9d9FQBAN+oRESFMCUUUU94REMAGAE87FBGXGX9DBBB8/9DBBB+/Ac9DBBBB9gyAcAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMALAG87FBGXGX9DBBB8/9DBBB+/AI9DBBBB9gyAIAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMABAG87FBABCNJRBAFCaJHFQBMMM/SEIEaE99EaF99GXAF9FQBCBREABRIEXGXGX9D/zI818/AICKJ8uFBHLCEq+y+VHKAI8uFB+y+UHO9DB/+g6+U9DBBB8/9DBBB+/AO9DBBBB9gy+SHN+L9DBBB9P9d9FQBAN+oRVSFMCUUUU94RVMAICIJ8uFBRcAICGJ8uFBRMABALCFJCEZAEqCFWJAV87FBGXGXAKAM+y+UHN9DB/+g6+U9DBBB8/9DBBB+/AN9DBBBB9gy+SHS+L9DBBB9P9d9FQBAS+oRMSFMCUUUU94RMMABALCGJCEZAEqCFWJAM87FBGXGXAKAc+y+UHK9DB/+g6+U9DBBB8/9DBBB+/AK9DBBBB9gy+SHS+L9DBBB9P9d9FQBAS+oRcSFMCUUUU94RcMABALCaJCEZAEqCFWJAc87FBGXGX9DBBU8/AOAO+U+TANAN+U+TAKAK+U+THO9DBBBBAO9DBBBB9gy+R9DB/+g6+U9DBBB8/+SHO+L9DBBB9P9d9FQBAO+oRcSFMCUUUU94RcMABALCEZAEqCFWJAc87FBAICNJRIAECIJREAFCaJHFQBMMM9JBGXAGCGrAF9sHF9FQBEXABAB8oGBHGCNWCN91+yAGCi91CnWCUUU/8EJ+++U84GBABCIJRBAFCaJHFQBMMM9TFEaCBCB8oGUkUUBHFABCEJC98ZJHBjGUkUUBGXGXAB8/BCTWHGuQBCaREABAGlCggEJCTrXBCa6QFMAFREMAEM/lFFFaGXGXAFABqCEZ9FQBABRESFMGXGXAGCT9PQBABRESFMABREEXAEAF8oGBjGBAECIJAFCIJ8oGBjGBAECNJAFCNJ8oGBjGBAECSJAFCSJ8oGBjGBAECTJREAFCTJRFAGC9wJHGCb9LQBMMAGCI9JQBEXAEAF8oGBjGBAFCIJRFAECIJREAGC98JHGCE9LQBMMGXAG9FQBEXAEAF2BB86BBAECFJREAFCFJRFAGCaJHGQBMMABMoFFGaGXGXABCEZ9FQBABRESFMAFCgFZC+BwsN9sRIGXGXAGCT9PQBABRESFMABREEXAEAIjGBAECSJAIjGBAECNJAIjGBAECIJAIjGBAECTJREAGC9wJHGCb9LQBMMAGCI9JQBEXAEAIjGBAECIJREAGC98JHGCE9LQBMMGXAG9FQBEXAEAF86BBAECFJREAGCaJHGQBMMABMMMFBCUNMIT9kBB",Vw="B9h9z9tFBBBF8dL9gBB9gLaaaaaFa9gEaaaB9gGaaB9gFaFaEQSBBFBFFGEGEGIILF9wFFFLEFBFKNFaFCx/aFMO/LFVK9tv9t9vq95GBt9f9f939h9z9t9f9j9h9s9s9f9jW9vq9zBBp9tv9z9o9v9wW9f9kv9j9v9kv9WvqWv94h919m9mvqBG8Z9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv94h919m9mvqBIy9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv949TvZ91v9u9jvBLn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9P9jWBKi9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9R919hWBNn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9F949wBcI9z9iqlBMc/j9JSIBTEM9+FLa8jUUUUBCTlRBCBRFEXCBRGCBREEXABCNJAGJAECUaAFAGrCFZHIy86BBAEAIJREAGCFJHGCN9HQBMAFCx+YUUBJAE86BBAFCEWCxkUUBJAB8pEN83EBAFCFJHFCUG9HQBMMkRIbaG97FaK978jUUUUBCU/KBlHL8kUUUUBC9+RKGXAGCFJAI9LQBCaRKAE2BBC+gF9HQBALAEAIJHOAGlAG/8cBBCUoBAG9uC/wgBZHKCUGAKCUG9JyRNAECFJRKCBRVGXEXAVAF9PQFANAFAVlAVANJAF9JyRcGXGXAG9FQBAcCbJHIC9wZHMCE9sRSAMCFWRQAICIrCEJCGrRfCBRbEXAKRTCBRtGXEXGXAOATlAf9PQBCBRKSLMALCU/CBJAtAM9sJRmATAfJRKCBREGXAMCoB9JQBAOAKlC/gB9JQBCBRIEXAmAIJREGXGXGXGXGXATAICKrJ2BBHYCEZfIBFGEBMAECBDtDMIBSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCIJAnDeBJAeCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCNJAnDeBJAeCx+YUUBJ2BBJRKSFMAEAKDBBBDMIBAKCTJRKMGXGXGXGXGXAYCGrCEZfIBFGEBMAECBDtDMITSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMITAKCIJAnDeBJAeCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMITAKCNJAnDeBJAeCx+YUUBJ2BBJRKSFMAEAKDBBBDMITAKCTJRKMGXGXGXGXGXAYCIrCEZfIBFGEBMAECBDtDMIASEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIAAKCIJAnDeBJAeCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIAAKCNJAnDeBJAeCx+YUUBJ2BBJRKSFMAEAKDBBBDMIAAKCTJRKMGXGXGXGXGXAYCKrfIBFGEBMAECBDtDMI8wSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HYCEWCxkUUBJDBEBAYCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HYCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMI8wAKCIJAnDeBJAYCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HYCEWCxkUUBJDBEBAYCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HYCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMI8wAKCNJAnDeBJAYCx+YUUBJ2BBJRKSFMAEAKDBBBDMI8wAKCTJRKMAICoBJREAICUFJAM9LQFAERIAOAKlC/fB9LQBMMGXAEAM9PQBAECErRIEXGXAOAKlCi9PQBCBRKSOMAmAEJRYGXGXGXGXGXATAECKrJ2BBAICKZrCEZfIBFGEBMAYCBDtDMIBSEMAYAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCIJAnDeBJAeCx+YUUBJ2BBJRKSGMAYAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCNJAnDeBJAeCx+YUUBJ2BBJRKSFMAYAKDBBBDMIBAKCTJRKMAICGJRIAECTJHEAM9JQBMMGXAK9FQBAKRTAtCFJHtCI6QGSFMMCBRKSEMGXAM9FQBALCUGJAbJREALAbJDBGBRnCBRYEXAEALCU/CBJAYJHIDBIBHdCFD9tAdCFDbHPD9OD9hD9RHdAIAMJDBIBHiCFD9tAiAPD9OD9hD9RHiDQBTFtGmEYIPLdKeOnH8ZAIAQJDBIBHpCFD9tApAPD9OD9hD9RHpAIASJDBIBHyCFD9tAyAPD9OD9hD9RHyDQBTFtGmEYIPLdKeOnH8cDQBFTtGEmYILPdKOenHPAPDQBFGEBFGEBFGEBFGEAnD9uHnDyBjGBAEAGJHIAnAPAPDQILKOILKOILKOILKOD9uHnDyBjGBAIAGJHIAnAPAPDQNVcMNVcMNVcMNVcMD9uHnDyBjGBAIAGJHIAnAPAPDQSQfbSQfbSQfbSQfbD9uHnDyBjGBAIAGJHIAnA8ZA8cDQNVi8ZcMpySQ8c8dfb8e8fHPAPDQBFGEBFGEBFGEBFGED9uHnDyBjGBAIAGJHIAnAPAPDQILKOILKOILKOILKOD9uHnDyBjGBAIAGJHIAnAPAPDQNVcMNVcMNVcMNVcMD9uHnDyBjGBAIAGJHIAnAPAPDQSQfbSQfbSQfbSQfbD9uHnDyBjGBAIAGJHIAnAdAiDQNiV8ZcpMyS8cQ8df8eb8fHdApAyDQNiV8ZcpMyS8cQ8df8eb8fHiDQBFTtGEmYILPdKOenHPAPDQBFGEBFGEBFGEBFGED9uHnDyBjGBAIAGJHIAnAPAPDQILKOILKOILKOILKOD9uHnDyBjGBAIAGJHIAnAPAPDQNVcMNVcMNVcMNVcMD9uHnDyBjGBAIAGJHIAnAPAPDQSQfbSQfbSQfbSQfbD9uHnDyBjGBAIAGJHIAnAdAiDQNVi8ZcMpySQ8c8dfb8e8fHPAPDQBFGEBFGEBFGEBFGED9uHnDyBjGBAIAGJHIAnAPAPDQILKOILKOILKOILKOD9uHnDyBjGBAIAGJHIAnAPAPDQNVcMNVcMNVcMNVcMD9uHnDyBjGBAIAGJHIAnAPAPDQSQfbSQfbSQfbSQfbD9uHnDyBjGBAIAGJREAYCTJHYAM9JQBMMAbCIJHbAG9JQBMMABAVAG9sJALCUGJAcAG9s/8cBBALALCUGJAcCaJAG9sJAG/8cBBMAcCBAKyAVJRVAKQBMC9+RKSFMCBC99AOAKlAGCAAGCA9Ly6yRKMALCU/KBJ8kUUUUBAKMNBT+BUUUBM+KmFTa8jUUUUBCoFlHL8kUUUUBC9+RKGXAFCE9uHOCtJAI9LQBCaRKAE2BBHNC/wFZC/gF9HQBANCbZHVCF9LQBALCoBJCgFCUF/8MBALC84Jha83EBALC8wJha83EBALC8oJha83EBALCAJha83EBALCiJha83EBALCTJha83EBALha83ENALha83EBAEAIJC9wJRcAECFJHNAOJRMGXAF9FQBCQCbAVCF6yRSABRECBRVCBRQCBRfCBRICBRKEXGXAMAcuQBC9+RKSEMGXGXAN2BBHOC/vF9LQBALCoBJAOCIrCa9zAKJCbZCEWJHb8oGIRTAb8oGBRtGXAOCbZHbAS9PQBALAOCa9zAIJCbZCGWJ8oGBAVAbyROAb9FRbGXGXAGCG9HQBABAt87FBABCIJAO87FBABCGJAT87FBSFMAEAtjGBAECNJAOjGBAECIJATjGBMAVAbJRVALCoBJAKCEWJHmAOjGBAmATjGIALAICGWJAOjGBALCoBJAKCFJCbZHKCEWJHTAtjGBATAOjGIAIAbJRIAKCFJRKSGMGXGXAbCb6QBAQAbJAbC989zJCFJRQSFMAM1BBHbCgFZROGXGXAbCa9MQBAMCFJRMSFMAM1BFHbCgBZCOWAOCgBZqROGXAbCa9MQBAMCGJRMSFMAM1BGHbCgBZCfWAOqROGXAbCa9MQBAMCEJRMSFMAM1BEHbCgBZCdWAOqROGXAbCa9MQBAMCIJRMSFMAM2BIC8cWAOqROAMCLJRMMAOCFrCBAOCFZl9zAQJRQMGXGXAGCG9HQBABAt87FBABCIJAQ87FBABCGJAT87FBSFMAEAtjGBAECNJAQjGBAECIJATjGBMALCoBJAKCEWJHOAQjGBAOATjGIALAICGWJAQjGBALCoBJAKCFJCbZHKCEWJHOAtjGBAOAQjGIAICFJRIAKCFJRKSFMGXAOCDF9LQBALAIAcAOCbZJ2BBHbCIrHTlCbZCGWJ8oGBAVCFJHtATyROALAIAblCbZCGWJ8oGBAtAT9FHmJHtAbCbZHTyRbAT9FRTGXGXAGCG9HQBABAV87FBABCIJAb87FBABCGJAO87FBSFMAEAVjGBAECNJAbjGBAECIJAOjGBMALAICGWJAVjGBALCoBJAKCEWJHYAOjGBAYAVjGIALAICFJHICbZCGWJAOjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAIAmJCbZHICGWJAbjGBALCoBJAKCGJCbZHKCEWJHOAVjGBAOAbjGIAKCFJRKAIATJRIAtATJRVSFMAVCBAM2BBHYyHTAOC/+F6HPJROAYCbZRtGXGXAYCIrHmQBAOCFJRbSFMAORbALAIAmlCbZCGWJ8oGBROMGXGXAtQBAbCFJRVSFMAbRVALAIAYlCbZCGWJ8oGBRbMGXGXAP9FQBAMCFJRYSFMAM1BFHYCgFZRTGXGXAYCa9MQBAMCGJRYSFMAM1BGHYCgBZCOWATCgBZqRTGXAYCa9MQBAMCEJRYSFMAM1BEHYCgBZCfWATqRTGXAYCa9MQBAMCIJRYSFMAM1BIHYCgBZCdWATqRTGXAYCa9MQBAMCLJRYSFMAMCKJRYAM2BLC8cWATqRTMATCFrCBATCFZl9zAQJHQRTMGXGXAmCb6QBAYRPSFMAY1BBHMCgFZROGXGXAMCa9MQBAYCFJRPSFMAY1BFHMCgBZCOWAOCgBZqROGXAMCa9MQBAYCGJRPSFMAY1BGHMCgBZCfWAOqROGXAMCa9MQBAYCEJRPSFMAY1BEHMCgBZCdWAOqROGXAMCa9MQBAYCIJRPSFMAYCLJRPAY2BIC8cWAOqROMAOCFrCBAOCFZl9zAQJHQROMGXGXAtCb6QBAPRMSFMAP1BBHMCgFZRbGXGXAMCa9MQBAPCFJRMSFMAP1BFHMCgBZCOWAbCgBZqRbGXAMCa9MQBAPCGJRMSFMAP1BGHMCgBZCfWAbqRbGXAMCa9MQBAPCEJRMSFMAP1BEHMCgBZCdWAbqRbGXAMCa9MQBAPCIJRMSFMAPCLJRMAP2BIC8cWAbqRbMAbCFrCBAbCFZl9zAQJHQRbMGXGXAGCG9HQBABAT87FBABCIJAb87FBABCGJAO87FBSFMAEATjGBAECNJAbjGBAECIJAOjGBMALCoBJAKCEWJHYAOjGBAYATjGIALAICGWJATjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAICFJHICbZCGWJAOjGBALCoBJAKCGJCbZCEWJHOATjGBAOAbjGIALAIAm9FAmCb6qJHICbZCGWJAbjGBAIAt9FAtCb6qJRIAKCEJRKMANCFJRNABCKJRBAECSJREAKCbZRKAICbZRIAfCEJHfAF9JQBMMCBC99AMAc6yRKMALCoFJ8kUUUUBAKM/tIFGa8jUUUUBCTlRLC9+RKGXAFCLJAI9LQBCaRKAE2BBC/+FZC/QF9HQBALhB83ENAECFJRKAEAIJC98JREGXAF9FQBGXAGCG6QBEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMALCNJAICFZCGWqHGAICGrCBAICFrCFZl9zAG8oGBJHIjGBABAIjGBABCIJRBAFCaJHFQBSGMMEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMABAICGrCBAICFrCFZl9zALCNJAICFZCGWqHI8oGBJHG87FBAIAGjGBABCGJRBAFCaJHFQBMMCBC99AKAE6yRKMAKM/xLGEaK978jUUUUBCAlHE8kUUUUBGXGXAGCI9HQBGXAFC98ZHI9FQBABRGCBRLEXAGAGDBBBHKCiD+rFCiD+sFD/6FHOAKCND+rFCiD+sFD/6FAOD/gFAKCTD+rFCiD+sFD/6FHND/gFD/kFD/lFHVCBDtD+2FHcAOCUUUU94DtHMD9OD9RD/kFHO9DBB/+hDYAOAOD/mFAVAVD/mFANAcANAMD9OD9RD/kFHOAOD/mFD/kFD/kFD/jFD/nFHND/mF9DBBX9LDYHcD/kFCgFDtD9OAKCUUU94DtD9OD9QAOAND/mFAcD/kFCND+rFCU/+EDtD9OD9QAVAND/mFAcD/kFCTD+rFCUU/8ODtD9OD9QDMBBAGCTJRGALCIJHLAI9JQBMMAIAF9PQFAEAFCEZHLCGWHGqCBCTAGl/8MBAEABAICGWJHIAG/8cBBGXAL9FQBAEAEDBIBHKCiD+rFCiD+sFD/6FHOAKCND+rFCiD+sFD/6FAOD/gFAKCTD+rFCiD+sFD/6FHND/gFD/kFD/lFHVCBDtD+2FHcAOCUUUU94DtHMD9OD9RD/kFHO9DBB/+hDYAOAOD/mFAVAVD/mFANAcANAMD9OD9RD/kFHOAOD/mFD/kFD/kFD/jFD/nFHND/mF9DBBX9LDYHcD/kFCgFDtD9OAKCUUU94DtD9OD9QAOAND/mFAcD/kFCND+rFCU/+EDtD9OD9QAVAND/mFAcD/kFCTD+rFCUU/8ODtD9OD9QDMIBMAIAEAG/8cBBSFMABAFC98ZHGT+HUUUBAGAF9PQBAEAFCEZHICEWHLJCBCAALl/8MBAEABAGCEWJHGAL/8cBBAEAIT+HUUUBAGAEAL/8cBBMAECAJ8kUUUUBM+yEGGaO97GXAF9FQBCBRGEXABCTJHEAEDBBBHICBDtHLCUU98D8cFCUU98D8cEHKD9OABDBBBHOAIDQILKOSQfbPden8c8d8e8fCggFDtD9OD/6FAOAIDQBFGENVcMTtmYi8ZpyHICTD+sFD/6FHND/gFAICTD+rFCTD+sFD/6FHVD/gFD/kFD/lFHI9DB/+g6DYAVAIALD+2FHLAVCUUUU94DtHcD9OD9RD/kFHVAVD/mFAIAID/mFANALANAcD9OD9RD/kFHIAID/mFD/kFD/kFD/jFD/nFHND/mF9DBBX9LDYHLD/kFCTD+rFAVAND/mFALD/kFCggEDtD9OD9QHVAIAND/mFALD/kFCaDbCBDnGCBDnECBDnKCBDnOCBDncCBDnMCBDnfCBDnbD9OHIDQNVi8ZcMpySQ8c8dfb8e8fD9QDMBBABAOAKD9OAVAIDQBFTtGEmYILPdKOenD9QDMBBABCAJRBAGCIJHGAF9JQBMMM94FEa8jUUUUBCAlHE8kUUUUBABAFC98ZHIT+JUUUBGXAIAF9PQBAEAFCEZHLCEWHFJCBCAAFl/8MBAEABAICEWJHBAF/8cBBAEALT+JUUUBABAEAF/8cBBMAECAJ8kUUUUBM/hEIGaF97FaL978jUUUUBCTlRGGXAF9FQBCBREEXAGABDBBBHIABCTJHLDBBBHKDQILKOSQfbPden8c8d8e8fHOCTD+sFHNCID+rFDMIBAB9DBBU8/DY9D/zI818/DYANCEDtD9QD/6FD/nFHNAIAKDQBFGENVcMTtmYi8ZpyHICTD+rFCTD+sFD/6FD/mFHKAKD/mFANAICTD+sFD/6FD/mFHVAVD/mFANAOCTD+rFCTD+sFD/6FD/mFHOAOD/mFD/kFD/kFD/lFCBDtD+4FD/jF9DB/+g6DYHND/mF9DBBX9LDYHID/kFCggEDtHcD9OAVAND/mFAID/kFCTD+rFD9QHVAOAND/mFAID/kFCTD+rFAKAND/mFAID/kFAcD9OD9QHNDQBFTtGEmYILPdKOenHID8dBAGDBIBDyB+t+J83EBABCNJAID8dFAGDBIBDyF+t+J83EBALAVANDQNVi8ZcMpySQ8c8dfb8e8fHND8dBAGDBIBDyG+t+J83EBABCiJAND8dFAGDBIBDyE+t+J83EBABCAJRBAECIJHEAF9JQBMMM/3FGEaF978jUUUUBCoBlREGXAGCGrAF9sHIC98ZHL9FQBCBRGABRFEXAFAFDBBBHKCND+rFCND+sFD/6FAKCiD+sFCnD+rFCUUU/8EDtD+uFD/mFDMBBAFCTJRFAGCIJHGAL9JQBMMGXALAI9PQBAEAICEZHGCGWHFqCBCoBAFl/8MBAEABALCGWJHLAF/8cBBGXAG9FQBAEAEDBIBHKCND+rFCND+sFD/6FAKCiD+sFCnD+rFCUUU/8EDtD+uFD/mFDMIBMALAEAF/8cBBMM9TFEaCBCB8oGUkUUBHFABCEJC98ZJHBjGUkUUBGXGXAB8/BCTWHGuQBCaREABAGlCggEJCTrXBCa6QFMAFREMAEMMMFBCUNMIT9tBB",Hw=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),jw=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]),Gw={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},zw={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};async function Ww(e,t,i,s,r,o="NONE"){const n=await async function(){Kw||(Kw=async function(){let e=Qw;WebAssembly.validate(Hw)&&(e=Vw,console.log("Warning: meshopt_decoder is using experimental SIMD support"));const t=await WebAssembly.instantiate(function(e){const t=new Uint8Array(e.length);for(let i=0;i<e.length;++i){const s=e.charCodeAt(i);t[i]=s>96?s-71:s>64?s-65:s>47?s+4:s>46?63:62}let i=0;for(let s=0;s<e.length;++s)t[i++]=t[s]<60?jw[t[s]]:64*(t[s]-60)+t[++s];return t.buffer.slice(0,i)}(e),{});return await t.instance.exports.__wasm_call_ctors(),t.instance}());return Kw}();!function(e,t,i,s,r,o,n){const a=e.exports.sbrk,l=s+3&-4,A=a(l*r),h=a(o.length),c=new Uint8Array(e.exports.memory.buffer);c.set(o,h);const u=t(A,s,r,h,o.length);0===u&&n&&n(A,l,r);if(i.set(c.subarray(A,A+s*r)),a(A-a(0)),0!==u)throw new Error("Malformed buffer data: ".concat(u))}(n,n.exports[zw[r]],e,t,i,s,n.exports[Gw[o||"NONE"]])}let Kw;async function Xw(e,t){const i=e.getObjectExtension(t,"EXT_meshopt_compression");if(i){const{byteOffset:s=0,byteLength:r=0,byteStride:o,count:n,mode:a,filter:l="NONE",buffer:A}=i,h=e.gltf.buffers[A],c=new Uint8Array(h.arrayBuffer,h.byteOffset+s,r),u=new Uint8Array(e.gltf.buffers[t.buffer].arrayBuffer,t.byteOffset,t.byteLength);return await Ww(u,n,o,c,a,l),u}return null}var Jw=Object.freeze({__proto__:null,name:"EXT_meshopt_compression",decode:async function(e,t){var i;const s=new Nw(e);if(null==t||null===(i=t.gltf)||void 0===i||!i.decompressMeshes)return;const r=[];for(const t of e.json.bufferViews||[])r.push(Xw(s,t));await Promise.all(r),s.removeExtension("EXT_meshopt_compression")}});var Yw=Object.freeze({__proto__:null,name:"EXT_texture_webp",preprocess:function(e,t){const i=new Nw(e);if(!Cw("image/webp")){if(i.getRequiredExtensions().includes("EXT_texture_webp"))throw new Error("gltf: Required extension ".concat("EXT_texture_webp"," not supported by browser"));return}const{json:s}=i;for(const e of s.textures||[]){const t=i.getObjectExtension(e,"EXT_texture_webp");t&&(e.source=t.source),i.removeObjectExtension(e,"EXT_texture_webp")}i.removeExtension("EXT_texture_webp")}});var Zw=Object.freeze({__proto__:null,name:"KHR_texture_basisu",preprocess:function(e,t){const i=new Nw(e),{json:s}=i;for(const e of s.textures||[]){const t=i.getObjectExtension(e,"KHR_texture_basisu");t&&(e.source=t.source),i.removeObjectExtension(e,"KHR_texture_basisu")}i.removeExtension("KHR_texture_basisu")}});const qw={name:"Draco",id:"draco",module:"draco",shapes:["mesh"],version:"3.2.6",worker:!0,extensions:["drc"],mimeTypes:["application/octet-stream"],binary:!0,tests:["DRACO"],options:{draco:{decoderType:"object"==typeof WebAssembly?"wasm":"js",libraryPath:"libs/",extraAttributes:{},attributeNameEntry:void 0}}};class $w{constructor(e,t){wb(this,"fields",void 0),wb(this,"metadata",void 0),function(e,t){if(!e)throw new Error(t||"loader assertion failed.")}(Array.isArray(e)),function(e){const t={};for(const i of e)t[i.name]&&console.warn("Schema: duplicated field name",i.name,i),t[i.name]=!0}(e),this.fields=e,this.metadata=t||new Map}compareTo(e){if(this.metadata!==e.metadata)return!1;if(this.fields.length!==e.fields.length)return!1;for(let t=0;t<this.fields.length;++t)if(!this.fields[t].compareTo(e.fields[t]))return!1;return!0}select(...e){const t=Object.create(null);for(const i of e)t[i]=!0;const i=this.fields.filter((e=>t[e.name]));return new $w(i,this.metadata)}selectAt(...e){const t=e.map((e=>this.fields[e])).filter(Boolean);return new $w(t,this.metadata)}assign(e){let t,i=this.metadata;if(e instanceof $w){const s=e;t=s.fields,i=ex(ex(new Map,this.metadata),s.metadata)}else t=e;const s=Object.create(null);for(const e of this.fields)s[e.name]=e;for(const e of t)s[e.name]=e;const r=Object.values(s);return new $w(r,i)}}function ex(e,t){return new Map([...e||new Map,...t||new Map])}class tx{constructor(e,t,i=!1,s=new Map){wb(this,"name",void 0),wb(this,"type",void 0),wb(this,"nullable",void 0),wb(this,"metadata",void 0),this.name=e,this.type=t,this.nullable=i,this.metadata=s}get typeId(){return this.type&&this.type.typeId}clone(){return new tx(this.name,this.type,this.nullable,this.metadata)}compareTo(e){return this.name===e.name&&this.type===e.type&&this.nullable===e.nullable&&this.metadata===e.metadata}toString(){return"".concat(this.type).concat(this.nullable?", nullable":"").concat(this.metadata?", metadata: ".concat(this.metadata):"")}}let ix,sx,rx,ox;!function(e){e[e.NONE=0]="NONE",e[e.Null=1]="Null",e[e.Int=2]="Int",e[e.Float=3]="Float",e[e.Binary=4]="Binary",e[e.Utf8=5]="Utf8",e[e.Bool=6]="Bool",e[e.Decimal=7]="Decimal",e[e.Date=8]="Date",e[e.Time=9]="Time",e[e.Timestamp=10]="Timestamp",e[e.Interval=11]="Interval",e[e.List=12]="List",e[e.Struct=13]="Struct",e[e.Union=14]="Union",e[e.FixedSizeBinary=15]="FixedSizeBinary",e[e.FixedSizeList=16]="FixedSizeList",e[e.Map=17]="Map",e[e.Dictionary=-1]="Dictionary",e[e.Int8=-2]="Int8",e[e.Int16=-3]="Int16",e[e.Int32=-4]="Int32",e[e.Int64=-5]="Int64",e[e.Uint8=-6]="Uint8",e[e.Uint16=-7]="Uint16",e[e.Uint32=-8]="Uint32",e[e.Uint64=-9]="Uint64",e[e.Float16=-10]="Float16",e[e.Float32=-11]="Float32",e[e.Float64=-12]="Float64",e[e.DateDay=-13]="DateDay",e[e.DateMillisecond=-14]="DateMillisecond",e[e.TimestampSecond=-15]="TimestampSecond",e[e.TimestampMillisecond=-16]="TimestampMillisecond",e[e.TimestampMicrosecond=-17]="TimestampMicrosecond",e[e.TimestampNanosecond=-18]="TimestampNanosecond",e[e.TimeSecond=-19]="TimeSecond",e[e.TimeMillisecond=-20]="TimeMillisecond",e[e.TimeMicrosecond=-21]="TimeMicrosecond",e[e.TimeNanosecond=-22]="TimeNanosecond",e[e.DenseUnion=-23]="DenseUnion",e[e.SparseUnion=-24]="SparseUnion",e[e.IntervalDayTime=-25]="IntervalDayTime",e[e.IntervalYearMonth=-26]="IntervalYearMonth"}(ix||(ix={}));class nx{static isNull(e){return e&&e.typeId===ix.Null}static isInt(e){return e&&e.typeId===ix.Int}static isFloat(e){return e&&e.typeId===ix.Float}static isBinary(e){return e&&e.typeId===ix.Binary}static isUtf8(e){return e&&e.typeId===ix.Utf8}static isBool(e){return e&&e.typeId===ix.Bool}static isDecimal(e){return e&&e.typeId===ix.Decimal}static isDate(e){return e&&e.typeId===ix.Date}static isTime(e){return e&&e.typeId===ix.Time}static isTimestamp(e){return e&&e.typeId===ix.Timestamp}static isInterval(e){return e&&e.typeId===ix.Interval}static isList(e){return e&&e.typeId===ix.List}static isStruct(e){return e&&e.typeId===ix.Struct}static isUnion(e){return e&&e.typeId===ix.Union}static isFixedSizeBinary(e){return e&&e.typeId===ix.FixedSizeBinary}static isFixedSizeList(e){return e&&e.typeId===ix.FixedSizeList}static isMap(e){return e&&e.typeId===ix.Map}static isDictionary(e){return e&&e.typeId===ix.Dictionary}get typeId(){return ix.NONE}compareTo(e){return this===e}}sx=Symbol.toStringTag;class ax extends nx{constructor(e,t){super(),wb(this,"isSigned",void 0),wb(this,"bitWidth",void 0),this.isSigned=e,this.bitWidth=t}get typeId(){return ix.Int}get[sx](){return"Int"}toString(){return"".concat(this.isSigned?"I":"Ui","nt").concat(this.bitWidth)}}class lx extends ax{constructor(){super(!0,8)}}class Ax extends ax{constructor(){super(!0,16)}}class hx extends ax{constructor(){super(!0,32)}}class cx extends ax{constructor(){super(!1,8)}}class ux extends ax{constructor(){super(!1,16)}}class dx extends ax{constructor(){super(!1,32)}}const px=32,fx=64;rx=Symbol.toStringTag;class gx extends nx{constructor(e){super(),wb(this,"precision",void 0),this.precision=e}get typeId(){return ix.Float}get[rx](){return"Float"}toString(){return"Float".concat(this.precision)}}class mx extends gx{constructor(){super(px)}}class _x extends gx{constructor(){super(fx)}}ox=Symbol.toStringTag;class vx extends nx{constructor(e,t){super(),wb(this,"listSize",void 0),wb(this,"children",void 0),this.listSize=e,this.children=[t]}get typeId(){return ix.FixedSizeList}get valueType(){return this.children[0].type}get valueField(){return this.children[0]}get[ox](){return"FixedSizeList"}toString(){return"FixedSizeList[".concat(this.listSize,"]<").concat(this.valueType,">")}}function bx(e,t,i){const s=function(e){switch(e.constructor){case Int8Array:return new lx;case Uint8Array:return new cx;case Int16Array:return new Ax;case Uint16Array:return new ux;case Int32Array:return new hx;case Uint32Array:return new dx;case Float32Array:return new mx;case Float64Array:return new _x;default:throw new Error("array type not supported")}}(t.value),r=i||function(e){const t=new Map;"byteOffset"in e&&t.set("byteOffset",e.byteOffset.toString(10));"byteStride"in e&&t.set("byteStride",e.byteStride.toString(10));"normalized"in e&&t.set("normalized",e.normalized.toString());return t}(t);return new tx(e,new vx(t.size,new tx("value",s)),!1,r)}function yx(e,t,i){return bx(e,t,i?Bx(i.metadata):void 0)}function Bx(e){const t=new Map;for(const i in e)t.set("".concat(i,".string"),JSON.stringify(e[i]));return t}const wx={POSITION:"POSITION",NORMAL:"NORMAL",COLOR:"COLOR_0",TEX_COORD:"TEXCOORD_0"},xx={1:Int8Array,2:Uint8Array,3:Int16Array,4:Uint16Array,5:Int32Array,6:Uint32Array,9:Float32Array};class Px{constructor(e){wb(this,"draco",void 0),wb(this,"decoder",void 0),wb(this,"metadataQuerier",void 0),this.draco=e,this.decoder=new this.draco.Decoder,this.metadataQuerier=new this.draco.MetadataQuerier}destroy(){this.draco.destroy(this.decoder),this.draco.destroy(this.metadataQuerier)}parseSync(e,t={}){const i=new this.draco.DecoderBuffer;i.Init(new Int8Array(e),e.byteLength),this._disableAttributeTransforms(t);const s=this.decoder.GetEncodedGeometryType(i),r=s===this.draco.TRIANGULAR_MESH?new this.draco.Mesh:new this.draco.PointCloud;try{let e;switch(s){case this.draco.TRIANGULAR_MESH:e=this.decoder.DecodeBufferToMesh(i,r);break;case this.draco.POINT_CLOUD:e=this.decoder.DecodeBufferToPointCloud(i,r);break;default:throw new Error("DRACO: Unknown geometry type.")}if(!e.ok()||!r.ptr){const t="DRACO decompression failed: ".concat(e.error_msg());throw new Error(t)}const o=this._getDracoLoaderData(r,s,t),n=this._getMeshData(r,o,t),a=function(e){let t=1/0,i=1/0,s=1/0,r=-1/0,o=-1/0,n=-1/0;const a=e.POSITION?e.POSITION.value:[],l=a&&a.length;for(let e=0;e<l;e+=3){const l=a[e],A=a[e+1],h=a[e+2];t=l<t?l:t,i=A<i?A:i,s=h<s?h:s,r=l>r?l:r,o=A>o?A:o,n=h>n?h:n}return[[t,i,s],[r,o,n]]}(n.attributes),l=function(e,t,i){const s=Bx(t.metadata),r=[],o=function(e){const t={};for(const i in e){const s=e[i];t[s.name||"undefined"]=s}return t}(t.attributes);for(const t in e){const i=yx(t,e[t],o[t]);r.push(i)}if(i){const e=yx("indices",i);r.push(e)}return new $w(r,s)}(n.attributes,o,n.indices);return{loader:"draco",loaderData:o,header:{vertexCount:r.num_points(),boundingBox:a},...n,schema:l}}finally{this.draco.destroy(i),r&&this.draco.destroy(r)}}_getDracoLoaderData(e,t,i){const s=this._getTopLevelMetadata(e),r=this._getDracoAttributes(e,i);return{geometry_type:t,num_attributes:e.num_attributes(),num_points:e.num_points(),num_faces:e instanceof this.draco.Mesh?e.num_faces():0,metadata:s,attributes:r}}_getDracoAttributes(e,t){const i={};for(let s=0;s<e.num_attributes();s++){const r=this.decoder.GetAttribute(e,s),o=this._getAttributeMetadata(e,s);i[r.unique_id()]={unique_id:r.unique_id(),attribute_type:r.attribute_type(),data_type:r.data_type(),num_components:r.num_components(),byte_offset:r.byte_offset(),byte_stride:r.byte_stride(),normalized:r.normalized(),attribute_index:s,metadata:o};const n=this._getQuantizationTransform(r,t);n&&(i[r.unique_id()].quantization_transform=n);const a=this._getOctahedronTransform(r,t);a&&(i[r.unique_id()].octahedron_transform=a)}return i}_getMeshData(e,t,i){const s=this._getMeshAttributes(t,e,i);if(!s.POSITION)throw new Error("DRACO: No position attribute found.");return e instanceof this.draco.Mesh?"triangle-strip"===i.topology?{topology:"triangle-strip",mode:4,attributes:s,indices:{value:this._getTriangleStripIndices(e),size:1}}:{topology:"triangle-list",mode:5,attributes:s,indices:{value:this._getTriangleListIndices(e),size:1}}:{topology:"point-list",mode:0,attributes:s}}_getMeshAttributes(e,t,i){const s={};for(const r of Object.values(e.attributes)){const e=this._deduceAttributeName(r,i);r.name=e;const{value:o,size:n}=this._getAttributeValues(t,r);s[e]={value:o,size:n,byteOffset:r.byte_offset,byteStride:r.byte_stride,normalized:r.normalized}}return s}_getTriangleListIndices(e){const t=3*e.num_faces(),i=4*t,s=this.draco._malloc(i);try{return this.decoder.GetTrianglesUInt32Array(e,i,s),new Uint32Array(this.draco.HEAPF32.buffer,s,t).slice()}finally{this.draco._free(s)}}_getTriangleStripIndices(e){const t=new this.draco.DracoInt32Array;try{return this.decoder.GetTriangleStripsFromMesh(e,t),function(e){const t=e.size(),i=new Int32Array(t);for(let s=0;s<t;s++)i[s]=e.GetValue(s);return i}(t)}finally{this.draco.destroy(t)}}_getAttributeValues(e,t){const i=xx[t.data_type],s=t.num_components,r=e.num_points()*s,o=r*i.BYTES_PER_ELEMENT,n=function(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32;default:return e.DT_INVALID}}(this.draco,i);let a;const l=this.draco._malloc(o);try{const s=this.decoder.GetAttribute(e,t.attribute_index);this.decoder.GetAttributeDataArrayForAllPoints(e,s,n,o,l),a=new i(this.draco.HEAPF32.buffer,l,r).slice()}finally{this.draco._free(l)}return{value:a,size:s}}_deduceAttributeName(e,t){const i=e.unique_id;for(const[e,s]of Object.entries(t.extraAttributes||{}))if(s===i)return e;const s=e.attribute_type;for(const e in wx){if(this.draco[e]===s)return wx[e]}const r=t.attributeNameEntry||"name";return e.metadata[r]?e.metadata[r].string:"CUSTOM_ATTRIBUTE_".concat(i)}_getTopLevelMetadata(e){const t=this.decoder.GetMetadata(e);return this._getDracoMetadata(t)}_getAttributeMetadata(e,t){const i=this.decoder.GetAttributeMetadata(e,t);return this._getDracoMetadata(i)}_getDracoMetadata(e){if(!e||!e.ptr)return{};const t={},i=this.metadataQuerier.NumEntries(e);for(let s=0;s<i;s++){const i=this.metadataQuerier.GetEntryName(e,s);t[i]=this._getDracoMetadataField(e,i)}return t}_getDracoMetadataField(e,t){const i=new this.draco.DracoInt32Array;try{this.metadataQuerier.GetIntEntryArray(e,t,i);const s=function(e){const t=e.size(),i=new Int32Array(t);for(let s=0;s<t;s++)i[s]=e.GetValue(s);return i}(i);return{int:this.metadataQuerier.GetIntEntry(e,t),string:this.metadataQuerier.GetStringEntry(e,t),double:this.metadataQuerier.GetDoubleEntry(e,t),intArray:s}}finally{this.draco.destroy(i)}}_disableAttributeTransforms(e){const{quantizedAttributes:t=[],octahedronAttributes:i=[]}=e,s=[...t,...i];for(const e of s)this.decoder.SkipAttributeTransform(this.draco[e])}_getQuantizationTransform(e,t){const{quantizedAttributes:i=[]}=t,s=e.attribute_type();if(i.map((e=>this.decoder[e])).includes(s)){const t=new this.draco.AttributeQuantizationTransform;try{if(t.InitFromAttribute(e))return{quantization_bits:t.quantization_bits(),range:t.range(),min_values:new Float32Array([1,2,3]).map((e=>t.min_value(e)))}}finally{this.draco.destroy(t)}}return null}_getOctahedronTransform(e,t){const{octahedronAttributes:i=[]}=t,s=e.attribute_type();if(i.map((e=>this.decoder[e])).includes(s)){const t=new this.draco.AttributeQuantizationTransform;try{if(t.InitFromAttribute(e))return{quantization_bits:t.quantization_bits()}}finally{this.draco.destroy(t)}}return null}}const Cx="https://www.gstatic.com/draco/versioned/decoders/".concat("1.4.1","/draco_decoder.js"),Mx="https://www.gstatic.com/draco/versioned/decoders/".concat("1.4.1","/draco_wasm_wrapper.js"),Fx="https://www.gstatic.com/draco/versioned/decoders/".concat("1.4.1","/draco_decoder.wasm");let Ex;async function Ix(e){const t=e.modules||{};return Ex=t.draco3d?Ex||t.draco3d.createDecoderModule({}).then((e=>({draco:e}))):Ex||async function(e){let t,i;if("js"===(e.draco&&e.draco.decoderType))t=await Ob(Cx,"draco",e);else[t,i]=await Promise.all([await Ob(Mx,"draco",e),await Ob(Fx,"draco",e)]);return t=t||globalThis.DracoDecoderModule,await function(e,t){const i={};t&&(i.wasmBinary=t);return new Promise((t=>{e({...i,onModuleLoaded:e=>t({draco:e})})}))}(t,i)}(e),await Ex}const Dx={...qw,parse:async function(e,t){const{draco:i}=await Ix(t),s=new Px(i);try{return s.parseSync(e,null==t?void 0:t.draco)}finally{s.destroy()}}};function Sx(e){const{buffer:t,size:i,count:s}=function(e){let t=e,i=1,s=0;e&&e.value&&(t=e.value,i=e.size||1);t&&(ArrayBuffer.isView(t)||(t=function(e,t,i=!1){if(!e)return null;if(Array.isArray(e))return new t(e);if(i&&!(e instanceof t))return new t(e);return e}(t,Float32Array)),s=t.length/i);return{buffer:t,size:i,count:s}}(e);return{value:t,size:i,byteOffset:0,count:s,type:Lw(i),componentType:Uw(t)}}async function Tx(e,t,i,s){const r=e.getObjectExtension(t,"KHR_draco_mesh_compression");if(!r)return;const o=e.getTypedArrayForBufferView(r.bufferView),n=zb(o.buffer,o.byteOffset),{parse:a}=s,l={...i};delete l["3d-tiles"];const A=await a(n,Dx,l,s),h=function(e){const t={};for(const i in e){const s=e[i];if("indices"!==i){const e=Sx(s);t[i]=e}}return t}(A.attributes);for(const[i,s]of Object.entries(h))if(i in t.attributes){const r=t.attributes[i],o=e.getAccessor(r);null!=o&&o.min&&null!=o&&o.max&&(s.min=o.min,s.max=o.max)}t.attributes=h,A.indices&&(t.indices=Sx(A.indices)),function(e){if(!e.attributes&&Object.keys(e.attributes).length>0)throw new Error("glTF: Empty primitive detected: Draco decompression failure?")}(t)}function Rx(e,t,i=4,s,r){var o;if(!s.DracoWriter)throw new Error("options.gltf.DracoWriter not provided");const n=s.DracoWriter.encodeSync({attributes:e}),a=null==r||null===(o=r.parseSync)||void 0===o?void 0:o.call(r,{attributes:e}),l=s._addFauxAttributes(a.attributes);return{primitives:[{attributes:l,mode:i,extensions:{KHR_draco_mesh_compression:{bufferView:s.addBufferView(n),attributes:l}}}]}}function*Lx(e){for(const t of e.json.meshes||[])for(const e of t.primitives)yield e}var Ux=Object.freeze({__proto__:null,name:"KHR_draco_mesh_compression",preprocess:function(e,t,i){const s=new Nw(e);for(const e of Lx(s))s.getObjectExtension(e,"KHR_draco_mesh_compression")},decode:async function(e,t,i){var s;if(null==t||null===(s=t.gltf)||void 0===s||!s.decompressMeshes)return;const r=new Nw(e),o=[];for(const e of Lx(r))r.getObjectExtension(e,"KHR_draco_mesh_compression")&&o.push(Tx(r,e,t,i));await Promise.all(o),r.removeExtension("KHR_draco_mesh_compression")},encode:function(e,t={}){const i=new Nw(e);for(const e of i.json.meshes||[])Rx(e),i.addRequiredExtension("KHR_draco_mesh_compression")}});var kx=Object.freeze({__proto__:null,name:"KHR_lights_punctual",decode:async function(e){const t=new Nw(e),{json:i}=t,s=t.getExtension("KHR_lights_punctual");s&&(t.json.lights=s.lights,t.removeExtension("KHR_lights_punctual"));for(const e of i.nodes||[]){const i=t.getObjectExtension(e,"KHR_lights_punctual");i&&(e.light=i.light),t.removeObjectExtension(e,"KHR_lights_punctual")}},encode:async function(e){const t=new Nw(e),{json:i}=t;if(i.lights){const e=t.addExtension("KHR_lights_punctual");Mw(!e.lights),e.lights=i.lights,delete i.lights}if(t.json.lights){for(const e of t.json.lights){const i=e.node;t.addObjectExtension(i,"KHR_lights_punctual",e)}delete t.json.lights}}});function Ox(e,t){const i=Object.assign({},e.values);return Object.keys(e.uniforms||{}).forEach((t=>{e.uniforms[t].value&&!(t in i)&&(i[t]=e.uniforms[t].value)})),Object.keys(i).forEach((e=>{"object"==typeof i[e]&&void 0!==i[e].index&&(i[e].texture=t.getTexture(i[e].index))})),i}const Nx=[Jw,Yw,Zw,Ux,kx,Object.freeze({__proto__:null,name:"KHR_materials_unlit",decode:async function(e){const t=new Nw(e),{json:i}=t;t.removeExtension("KHR_materials_unlit");for(const e of i.materials||[]){e.extensions&&e.extensions.KHR_materials_unlit&&(e.unlit=!0),t.removeObjectExtension(e,"KHR_materials_unlit")}},encode:function(e){const t=new Nw(e),{json:i}=t;if(t.materials)for(const e of i.materials||[])e.unlit&&(delete e.unlit,t.addObjectExtension(e,"KHR_materials_unlit",{}),t.addExtension("KHR_materials_unlit"))}}),Object.freeze({__proto__:null,name:"KHR_techniques_webgl",decode:async function(e){const t=new Nw(e),{json:i}=t,s=t.getExtension("KHR_techniques_webgl");if(s){const e=function(e,t){const{programs:i=[],shaders:s=[],techniques:r=[]}=e,o=new TextDecoder;return s.forEach((e=>{if(!Number.isFinite(e.bufferView))throw new Error("KHR_techniques_webgl: no shader code");e.code=o.decode(t.getTypedArrayForBufferView(e.bufferView))})),i.forEach((e=>{e.fragmentShader=s[e.fragmentShader],e.vertexShader=s[e.vertexShader]})),r.forEach((e=>{e.program=i[e.program]})),r}(s,t);for(const s of i.materials||[]){const i=t.getObjectExtension(s,"KHR_techniques_webgl");i&&(s.technique=Object.assign({},i,e[i.technique]),s.technique.values=Ox(s.technique,t)),t.removeObjectExtension(s,"KHR_techniques_webgl")}t.removeExtension("KHR_techniques_webgl")}},encode:async function(e,t){}})];function Qx(e,t){var i;const s=(null==t||null===(i=t.gltf)||void 0===i?void 0:i.excludeExtensions)||{};return!(e in s&&!s[e])}const Vx={accessors:"accessor",animations:"animation",buffers:"buffer",bufferViews:"bufferView",images:"image",materials:"material",meshes:"mesh",nodes:"node",samplers:"sampler",scenes:"scene",skins:"skin",textures:"texture"},Hx={accessor:"accessors",animations:"animation",buffer:"buffers",bufferView:"bufferViews",image:"images",material:"materials",mesh:"meshes",node:"nodes",sampler:"samplers",scene:"scenes",skin:"skins",texture:"textures"};class jx{constructor(){wb(this,"idToIndexMap",{animations:{},accessors:{},buffers:{},bufferViews:{},images:{},materials:{},meshes:{},nodes:{},samplers:{},scenes:{},skins:{},textures:{}}),wb(this,"json",void 0)}normalize(e,t){this.json=e.json;const i=e.json;switch(i.asset&&i.asset.version){case"2.0":return;case void 0:case"1.0":break;default:return void console.warn("glTF: Unknown version ".concat(i.asset.version))}if(!t.normalize)throw new Error("glTF v1 is not supported.");console.warn("Converting glTF v1 to glTF v2 format. This is experimental and may fail."),this._addAsset(i),this._convertTopLevelObjectsToArrays(i),function(e){const t=new Nw(e),{json:i}=t;for(const e of i.images||[]){const i=t.getObjectExtension(e,"KHR_binary_glTF");i&&Object.assign(e,i),t.removeObjectExtension(e,"KHR_binary_glTF")}i.buffers&&i.buffers[0]&&delete i.buffers[0].uri,t.removeExtension("KHR_binary_glTF")}(e),this._convertObjectIdsToArrayIndices(i),this._updateObjects(i),this._updateMaterial(i)}_addAsset(e){e.asset=e.asset||{},e.asset.version="2.0",e.asset.generator=e.asset.generator||"Normalized to glTF 2.0 by loaders.gl"}_convertTopLevelObjectsToArrays(e){for(const t in Vx)this._convertTopLevelObjectToArray(e,t)}_convertTopLevelObjectToArray(e,t){const i=e[t];if(i&&!Array.isArray(i)){e[t]=[];for(const s in i){const r=i[s];r.id=r.id||s;const o=e[t].length;e[t].push(r),this.idToIndexMap[t][s]=o}}}_convertObjectIdsToArrayIndices(e){for(const t in Vx)this._convertIdsToIndices(e,t);"scene"in e&&(e.scene=this._convertIdToIndex(e.scene,"scene"));for(const t of e.textures)this._convertTextureIds(t);for(const t of e.meshes)this._convertMeshIds(t);for(const t of e.nodes)this._convertNodeIds(t);for(const t of e.scenes)this._convertSceneIds(t)}_convertTextureIds(e){e.source&&(e.source=this._convertIdToIndex(e.source,"image"))}_convertMeshIds(e){for(const t of e.primitives){const{attributes:e,indices:i,material:s}=t;for(const t in e)e[t]=this._convertIdToIndex(e[t],"accessor");i&&(t.indices=this._convertIdToIndex(i,"accessor")),s&&(t.material=this._convertIdToIndex(s,"material"))}}_convertNodeIds(e){e.children&&(e.children=e.children.map((e=>this._convertIdToIndex(e,"node")))),e.meshes&&(e.meshes=e.meshes.map((e=>this._convertIdToIndex(e,"mesh"))))}_convertSceneIds(e){e.nodes&&(e.nodes=e.nodes.map((e=>this._convertIdToIndex(e,"node"))))}_convertIdsToIndices(e,t){e[t]||(console.warn("gltf v1: json doesn't contain attribute ".concat(t)),e[t]=[]);for(const i of e[t])for(const e in i){const t=i[e],s=this._convertIdToIndex(t,e);i[e]=s}}_convertIdToIndex(e,t){const i=Hx[t];if(i in this.idToIndexMap){const s=this.idToIndexMap[i][e];if(!Number.isFinite(s))throw new Error("gltf v1: failed to resolve ".concat(t," with id ").concat(e));return s}return e}_updateObjects(e){for(const e of this.json.buffers)delete e.type}_updateMaterial(e){for(const s of e.materials){var t,i;s.pbrMetallicRoughness={baseColorFactor:[1,1,1,1],metallicFactor:1,roughnessFactor:1};const r=(null===(t=s.values)||void 0===t?void 0:t.tex)||(null===(i=s.values)||void 0===i?void 0:i.texture2d_0),o=e.textures.findIndex((e=>e.id===r));-1!==o&&(s.pbrMetallicRoughness.baseColorTexture={index:o})}}}const Gx={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},zx={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},Wx=10240,Kx=10241,Xx=10242,Jx=10243,Yx=10497,Zx={magFilter:Wx,minFilter:Kx,wrapS:Xx,wrapT:Jx},qx={[Wx]:9729,[Kx]:9986,[Xx]:Yx,[Jx]:Yx};class $x{constructor(){wb(this,"baseUri",""),wb(this,"json",{}),wb(this,"buffers",[]),wb(this,"images",[])}postProcess(e,t={}){const{json:i,buffers:s=[],images:r=[],baseUri:o=""}=e;return Mw(i),this.baseUri=o,this.json=i,this.buffers=s,this.images=r,this._resolveTree(this.json,t),this.json}_resolveTree(e,t={}){e.bufferViews&&(e.bufferViews=e.bufferViews.map(((e,t)=>this._resolveBufferView(e,t)))),e.images&&(e.images=e.images.map(((e,t)=>this._resolveImage(e,t)))),e.samplers&&(e.samplers=e.samplers.map(((e,t)=>this._resolveSampler(e,t)))),e.textures&&(e.textures=e.textures.map(((e,t)=>this._resolveTexture(e,t)))),e.accessors&&(e.accessors=e.accessors.map(((e,t)=>this._resolveAccessor(e,t)))),e.materials&&(e.materials=e.materials.map(((e,t)=>this._resolveMaterial(e,t)))),e.meshes&&(e.meshes=e.meshes.map(((e,t)=>this._resolveMesh(e,t)))),e.nodes&&(e.nodes=e.nodes.map(((e,t)=>this._resolveNode(e,t)))),e.skins&&(e.skins=e.skins.map(((e,t)=>this._resolveSkin(e,t)))),e.scenes&&(e.scenes=e.scenes.map(((e,t)=>this._resolveScene(e,t)))),void 0!==e.scene&&(e.scene=e.scenes[this.json.scene])}getScene(e){return this._get("scenes",e)}getNode(e){return this._get("nodes",e)}getSkin(e){return this._get("skins",e)}getMesh(e){return this._get("meshes",e)}getMaterial(e){return this._get("materials",e)}getAccessor(e){return this._get("accessors",e)}getCamera(e){return null}getTexture(e){return this._get("textures",e)}getSampler(e){return this._get("samplers",e)}getImage(e){return this._get("images",e)}getBufferView(e){return this._get("bufferViews",e)}getBuffer(e){return this._get("buffers",e)}_get(e,t){if("object"==typeof t)return t;const i=this.json[e]&&this.json[e][t];return i||console.warn("glTF file error: Could not find ".concat(e,"[").concat(t,"]")),i}_resolveScene(e,t){return e.id=e.id||"scene-".concat(t),e.nodes=(e.nodes||[]).map((e=>this.getNode(e))),e}_resolveNode(e,t){return e.id=e.id||"node-".concat(t),e.children&&(e.children=e.children.map((e=>this.getNode(e)))),void 0!==e.mesh?e.mesh=this.getMesh(e.mesh):void 0!==e.meshes&&e.meshes.length&&(e.mesh=e.meshes.reduce(((e,t)=>{const i=this.getMesh(t);return e.id=i.id,e.primitives=e.primitives.concat(i.primitives),e}),{primitives:[]})),void 0!==e.camera&&(e.camera=this.getCamera(e.camera)),void 0!==e.skin&&(e.skin=this.getSkin(e.skin)),e}_resolveSkin(e,t){return e.id=e.id||"skin-".concat(t),e.inverseBindMatrices=this.getAccessor(e.inverseBindMatrices),e}_resolveMesh(e,t){return e.id=e.id||"mesh-".concat(t),e.primitives&&(e.primitives=e.primitives.map((e=>{const t=(e={...e}).attributes;e.attributes={};for(const i in t)e.attributes[i]=this.getAccessor(t[i]);return void 0!==e.indices&&(e.indices=this.getAccessor(e.indices)),void 0!==e.material&&(e.material=this.getMaterial(e.material)),e}))),e}_resolveMaterial(e,t){if(e.id=e.id||"material-".concat(t),e.normalTexture&&(e.normalTexture={...e.normalTexture},e.normalTexture.texture=this.getTexture(e.normalTexture.index)),e.occlusionTexture&&(e.occlustionTexture={...e.occlustionTexture},e.occlusionTexture.texture=this.getTexture(e.occlusionTexture.index)),e.emissiveTexture&&(e.emmisiveTexture={...e.emmisiveTexture},e.emissiveTexture.texture=this.getTexture(e.emissiveTexture.index)),e.emissiveFactor||(e.emissiveFactor=e.emmisiveTexture?[1,1,1]:[0,0,0]),e.pbrMetallicRoughness){e.pbrMetallicRoughness={...e.pbrMetallicRoughness};const t=e.pbrMetallicRoughness;t.baseColorTexture&&(t.baseColorTexture={...t.baseColorTexture},t.baseColorTexture.texture=this.getTexture(t.baseColorTexture.index)),t.metallicRoughnessTexture&&(t.metallicRoughnessTexture={...t.metallicRoughnessTexture},t.metallicRoughnessTexture.texture=this.getTexture(t.metallicRoughnessTexture.index))}return e}_resolveAccessor(e,t){var i,s;if(e.id=e.id||"accessor-".concat(t),void 0!==e.bufferView&&(e.bufferView=this.getBufferView(e.bufferView)),e.bytesPerComponent=(i=e.componentType,zx[i]),e.components=(s=e.type,Gx[s]),e.bytesPerElement=e.bytesPerComponent*e.components,e.bufferView){const t=e.bufferView.buffer,{ArrayType:i,byteLength:s}=kw(e,e.bufferView),r=(e.bufferView.byteOffset||0)+(e.byteOffset||0)+t.byteOffset;let o=t.arrayBuffer.slice(r,r+s);e.bufferView.byteStride&&(o=this._getValueFromInterleavedBuffer(t,r,e.bufferView.byteStride,e.bytesPerElement,e.count)),e.value=new i(o)}return e}_getValueFromInterleavedBuffer(e,t,i,s,r){const o=new Uint8Array(r*s);for(let n=0;n<r;n++){const r=t+n*i;o.set(new Uint8Array(e.arrayBuffer.slice(r,r+s)),n*s)}return o.buffer}_resolveTexture(e,t){return e.id=e.id||"texture-".concat(t),e.sampler="sampler"in e?this.getSampler(e.sampler):qx,e.source=this.getImage(e.source),e}_resolveSampler(e,t){e.id=e.id||"sampler-".concat(t),e.parameters={};for(const t in e){const i=this._enumSamplerParameter(t);void 0!==i&&(e.parameters[i]=e[t])}return e}_enumSamplerParameter(e){return Zx[e]}_resolveImage(e,t){e.id=e.id||"image-".concat(t),void 0!==e.bufferView&&(e.bufferView=this.getBufferView(e.bufferView));const i=this.images[t];return i&&(e.image=i),e}_resolveBufferView(e,t){const i=e.buffer,s={id:"bufferView-".concat(t),...e,buffer:this.buffers[i]},r=this.buffers[i].arrayBuffer;let o=this.buffers[i].byteOffset||0;return"byteOffset"in e&&(o+=e.byteOffset),s.data=new Uint8Array(r,o,e.byteLength),s}_resolveCamera(e,t){return e.id=e.id||"camera-".concat(t),e.perspective,e.orthographic,e}}const eP=1735152710,tP=!0;function iP(e,t,i=0,s={}){const r=new DataView(t),o=function(e,t=0){return"".concat(String.fromCharCode(e.getUint8(t+0))).concat(String.fromCharCode(e.getUint8(t+1))).concat(String.fromCharCode(e.getUint8(t+2))).concat(String.fromCharCode(e.getUint8(t+3)))}(r,i+0),n=r.getUint32(i+4,tP),a=r.getUint32(i+8,tP);switch(Object.assign(e,{header:{byteOffset:i,byteLength:a,hasBinChunk:!1},type:o,version:n,json:{},binChunks:[]}),i+=12,e.version){case 1:return function(e,t,i){db(e.header.byteLength>20);const s=t.getUint32(i+0,tP),r=t.getUint32(i+4,tP);return i+=8,db(0===r),sP(e,t,i,s),i+=s,i+=rP(e,t,i,e.header.byteLength)}(e,r,i);case 2:return function(e,t,i,s){return db(e.header.byteLength>20),function(e,t,i,s){for(;i+8<=e.header.byteLength;){const r=t.getUint32(i+0,tP),o=t.getUint32(i+4,tP);switch(i+=8,o){case 1313821514:sP(e,t,i,r);break;case 5130562:rP(e,t,i,r);break;case 0:s.strict||sP(e,t,i,r);break;case 1:s.strict||rP(e,t,i,r)}i+=Wb(r,4)}}(e,t,i,s),i+e.header.byteLength}(e,r,i,{});default:throw new Error("Invalid GLB version ".concat(e.version,". Only supports v1 and v2."))}}function sP(e,t,i,s){const r=new Uint8Array(t.buffer,i,s),o=new TextDecoder("utf8").decode(r);return e.json=JSON.parse(o),Wb(s,4)}function rP(e,t,i,s){return e.header.hasBinChunk=!0,e.binChunks.push({byteOffset:i,byteLength:s,arrayBuffer:t.buffer}),Wb(s,4)}async function oP(e,t,i=0,s,r){var o,n,a,l;!function(e,t,i,s){s.uri&&(e.baseUri=s.uri);if(t instanceof ArrayBuffer&&!function(e,t=0,i={}){const s=new DataView(e),{magic:r=eP}=i,o=s.getUint32(t,!1);return o===r||o===eP}(t,i,s)){t=(new TextDecoder).decode(t)}if("string"==typeof t)e.json=Hb(t);else if(t instanceof ArrayBuffer){const r={};i=iP(r,t,i,s.glb),Mw("glTF"===r.type,"Invalid GLB magic string ".concat(r.type)),e._glb=r,e.json=r.json}else Mw(!1,"GLTF: must be ArrayBuffer or string");const r=e.json.buffers||[];if(e.buffers=new Array(r.length).fill(null),e._glb&&e._glb.header.hasBinChunk){const{binChunks:t}=e._glb;e.buffers[0]={arrayBuffer:t[0].arrayBuffer,byteOffset:t[0].byteOffset,byteLength:t[0].byteLength}}const o=e.json.images||[];e.images=new Array(o.length).fill({})}(e,t,i,s),function(e,t={}){(new jx).normalize(e,t)}(e,{normalize:null==s||null===(o=s.gltf)||void 0===o?void 0:o.normalize}),function(e,t={},i){const s=Nx.filter((e=>Qx(e.name,t)));for(const o of s){var r;null===(r=o.preprocess)||void 0===r||r.call(o,e,t,i)}}(e,s,r);const A=[];if(null!=s&&null!==(n=s.gltf)&&void 0!==n&&n.loadBuffers&&e.json.buffers&&await async function(e,t,i){const s=e.json.buffers||[];for(let n=0;n<s.length;++n){const a=s[n];if(a.uri){var r,o;const{fetch:s}=i;Mw(s);const l=Fw(a.uri,t),A=await(null==i||null===(r=i.fetch)||void 0===r?void 0:r.call(i,l)),h=await(null==A||null===(o=A.arrayBuffer)||void 0===o?void 0:o.call(A));e.buffers[n]={arrayBuffer:h,byteOffset:0,byteLength:h.byteLength},delete a.uri}else null===e.buffers[n]&&(e.buffers[n]={arrayBuffer:new ArrayBuffer(a.byteLength),byteOffset:0,byteLength:a.byteLength})}}(e,s,r),null!=s&&null!==(a=s.gltf)&&void 0!==a&&a.loadImages){const t=async function(e,t,i){const s=function(e){const t=new Set,i=e.json.textures||[];for(const e of i)void 0!==e.source&&t.add(e.source);return Array.from(t).sort()}(e),r=e.json.images||[],o=[];for(const n of s)o.push(nP(e,r[n],n,t,i));return await Promise.all(o)}(e,s,r);A.push(t)}const h=async function(e,t={},i){const s=Nx.filter((e=>Qx(e.name,t)));for(const o of s){var r;await(null===(r=o.decode)||void 0===r?void 0:r.call(o,e,t,i))}}(e,s,r);return A.push(h),await Promise.all(A),null!=s&&null!==(l=s.gltf)&&void 0!==l&&l.postProcess?function(e,t){return(new $x).postProcess(e,t)}(e,s):e}async function nP(e,t,i,s,r){const{fetch:o,parse:n}=r;let a;if(t.uri){const e=Fw(t.uri,s),i=await o(e);a=await i.arrayBuffer()}if(Number.isFinite(t.bufferView)){const i=function(e,t,i){const s=e.bufferViews[i];Mw(s);const r=t[s.buffer];Mw(r);const o=(s.byteOffset||0)+r.byteOffset;return new Uint8Array(r.arrayBuffer,o,s.byteLength)}(e.json,e.buffers,t.bufferView);a=zb(i.buffer,i.byteOffset,i.byteLength)}Mw(a,"glTF image has no data");let l=await n(a,[ww,nw],{mimeType:t.mimeType,basis:s.basis||{format:ow()}},r);l&&l[0]&&(l={compressed:!0,mipmaps:!1,width:l[0].width,height:l[0].height,data:l[0]}),e.images=e.images||[],e.images[i]=l}const aP={name:"glTF",id:"gltf",module:"gltf",version:"3.2.6",extensions:["gltf","glb"],mimeTypes:["model/gltf+json","model/gltf-binary"],text:!0,binary:!0,tests:["glTF"],parse:async function(e,t={},i){(t={...aP.options,...t}).gltf={...aP.options.gltf,...t.gltf};const{byteOffset:s=0}=t;return await oP({},e,s,t,i)},options:{gltf:{normalize:!0,loadBuffers:!0,loadImages:!0,decompressMeshes:!0,postProcess:!0},log:console},deprecatedOptions:{fetchImages:"gltf.loadImages",createImages:"gltf.loadImages",decompress:"gltf.decompressMeshes",postProcess:"gltf.postProcess",gltf:{decompress:"gltf.decompressMeshes"}}};class lP{constructor(e){}load(e,t,i,s,r,o,n){!function(e,t,i,s,r,o,n){const a=e.viewer.scene.canvas.spinner;a.processes++;"glb"===t.split(".").pop()?e.dataSource.getGLB(t,(n=>{s.basePath=hP(t),cP(e,t,n,i,s,r,o),a.processes--}),(e=>{a.processes--,n(e)})):e.dataSource.getGLTF(t,(n=>{s.basePath=hP(t),cP(e,t,n,i,s,r,o),a.processes--}),(e=>{a.processes--,n(e)}))}(e,t,i,s=s||{},r,(function(){I.scheduleTask((function(){r.scene.fire("modelLoaded",r.id),r.fire("loaded",!0,!1)})),o&&o()}),(function(t){e.error(t),n&&n(t),r.fire("error",t)}))}parse(e,t,i,s,r,o,n){cP(e,"",t,i,s=s||{},r,(function(){r.scene.fire("modelLoaded",r.id),r.fire("loaded",!0,!1),o&&o()}))}}function AP(e){const t={},i={},s=e.metaObjects||[],r={};for(let e=0,t=s.length;e<t;e++){const t=s[e];r[t.id]=t}for(let e=0,o=s.length;e<o;e++){const o=s[e];if(void 0!==o.parent&&null!==o.parent){const e=r[o.parent];if(o.type===e.type){let s=e;for(;s.parent&&r[s.parent].type===s.type;)s=r[s.parent];(t[s.id]||(t[s.id]={numChildren:0,countChildren:0})).numChildren++,i[o.id]=s}}}return{metaObjectsMap:r,eachRootStats:t,eachChildRoot:i}}function hP(e){const t=e.lastIndexOf("/");return 0!==t?e.substring(0,t+1):""}function cP(e,t,i,s,r,o,n){const a=e.viewer.scene.canvas.spinner;a.processes++,CB(i,aP,{baseUri:r.basePath}).then((i=>{const l={src:t,entityId:r.entityId,metaModelCorrections:s?AP(s):null,loadBuffer:r.loadBuffer,basePath:r.basePath,handlenode:r.handlenode,backfaces:!!r.backfaces,gltfData:i,scene:o.scene,plugin:e,sceneModel:o,numObjects:0,nodes:[],nextId:0,log:t=>{e.log(t)}};!function(e){const t=e.gltfData.textures;if(t)for(let i=0,s=t.length;i<s;i++)uP(e,t[i])}(l),function(e){const t=e.gltfData.materials;if(t)for(let i=0,s=t.length;i<s;i++){const s=t[i];s._textureSetId=dP(e,s),s._attributes=pP(e,s)}}(l),function(e){const t=e.gltfData,i=t.scene||t.scenes[0];if(!i)return void _P(e,"glTF has no default scene");!function(e,t){const i=t.nodes;if(!i)return;for(let t=0,s=i.length;t<s;t++){fP(e,i[t])}for(let t=0,s=i.length;t<s;t++){mP(e,i[t],0,null)}}(e,i)}(l),o.finalize(),a.processes--,n()}))}function uP(e,t){if(!t.source||!t.source.image)return;const i="texture-"+e.nextId++;let s=1005;switch(t.sampler.minFilter){case 9728:s=1003;break;case 9729:s=1006;break;case 9984:s=1004;break;case 9985:s=1007;break;case 9986:s=1005;break;case 9987:s=1008}let r=1006;switch(t.sampler.magFilter){case 9728:r=1003;break;case 9729:r=1006}let o=1e3;switch(t.sampler.wrapS){case 33071:o=1001;break;case 33648:o=1002;break;case 10497:o=1e3}let n=1e3;switch(t.sampler.wrapT){case 33071:n=1001;break;case 33648:n=1002;break;case 10497:n=1e3}let a=1e3;switch(t.sampler.wrapR){case 33071:a=1001;break;case 33648:a=1002;break;case 10497:a=1e3}e.sceneModel.createTexture({id:i,image:t.source.image,flipY:!!t.flipY,minFilter:s,magFilter:r,wrapS:o,wrapT:n,wrapR:a,encoding:3001}),t._textureId=i}function dP(e,t){const i={};t.normalTexture&&(i.normalTextureId=t.normalTexture.texture._textureId),t.occlusionTexture&&(i.occlusionTextureId=t.occlusionTexture.texture._textureId),t.emissiveTexture&&(i.emissiveTextureId=t.emissiveTexture.texture._textureId);const s=t.pbrMetallicRoughness;if(t.pbrMetallicRoughness){const r=t.pbrMetallicRoughness,o=r.baseColorTexture||r.colorTexture;o&&(o.texture?i.colorTextureId=o.texture._textureId:i.colorTextureId=e.gltfData.textures[o.index]._textureId),s.metallicRoughnessTexture&&(i.metallicRoughnessTextureId=s.metallicRoughnessTexture.texture._textureId)}const r=t.extensions;if(r){const t=r.KHR_materials_pbrSpecularGlossiness;if(t){t.specularTexture;const s=t.specularColorTexture;null!=s&&(i.colorTextureId=e.gltfData.textures[s.index]._textureId)}}return void 0!==i.normalTextureId||void 0!==i.occlusionTextureId||void 0!==i.emissiveTextureId||void 0!==i.colorTextureId||void 0!==i.metallicRoughnessTextureId?(i.id=`textureSet-${e.nextId++};`,e.sceneModel.createTextureSet(i),i.id):null}function pP(e,t){const i=t.extensions,s={color:new Float32Array([1,1,1,1]),opacity:1,metallic:0,roughness:1,doubleSided:!0};if(i){const e=i.KHR_materials_pbrSpecularGlossiness;if(e){const t=e.diffuseFactor;null!=t&&s.color.set(t)}const t=i.KHR_materials_common;if(t){const e=t.technique,i=t.values||{},r="BLINN"===e,o="PHONG"===e,n="LAMBERT"===e,a=i.diffuse;a&&(r||o||n)&&(y.isString(a)||s.color.set(a));const l=i.transparency;null!=l&&(s.opacity=l);const A=i.transparent;null!=A&&(s.opacity=A)}}const r=t.pbrMetallicRoughness;if(r){const e=r.baseColorFactor;e&&(s.color[0]=e[0],s.color[1]=e[1],s.color[2]=e[2],s.opacity=e[3]);const t=r.metallicFactor;null!=t&&(s.metallic=t);const i=r.roughnessFactor;null!=i&&(s.roughness=i)}return s.doubleSided=!1!==t.doubleSided,s}function fP(e,t){const i=t.mesh;if(i&&(i.instances=i.instances?i.instances+1:1),t.children){const i=t.children;for(let t=0,s=i.length;t<s;t++){const s=i[t];s?fP(e,s):_P(e,"Node not found: "+t)}}}const gP=[];function mP(e,t,i,s){let r;e.gltfData,t.matrix&&(r=t.matrix,s=s?d.mulMat4(s,r,d.mat4()):r),t.translation&&(r=d.translationMat4v(t.translation),s=s?d.mulMat4(s,r,d.mat4()):r),t.rotation&&(r=d.quaternionToMat4(t.rotation),s=s?d.mulMat4(s,r,d.mat4()):r),t.scale&&(r=d.scalingMat4v(t.scale),s=s?d.mulMat4(s,r,d.mat4()):r);const o=e.sceneModel;if(t.mesh){const i=t.mesh;if(e.handlenode){const i={};if(!e.handlenode(e.sceneModel.id,t,i))return;i.createEntity}const r=s?s.slice():d.identityMat4(),n=i.primitives.length;if(n>0)for(let t=0;t<n;t++){const s=i.primitives[t];if(s.mode<4)continue;const n={id:o.id+"."+e.numObjects++},a=s.material;a?(n.textureSetId=a._textureSetId,n.color=a._attributes.color,n.opacity=a._attributes.opacity,n.metallic=a._attributes.metallic,n.roughness=a._attributes.roughness):(n.color=new Float32Array([1,1,1]),n.opacity=1);const l=!1!==e.backfaces||a&&!1!==a.doubleSided;switch(s.mode){case 0:n.primitive="points";break;case 1:case 2:case 3:n.primitive="lines";break;default:n.primitive=l?"triangles":"solid"}const A=s.attributes.POSITION;if(!A)continue;n.localPositions=A.value,n.positions=new Float64Array(n.localPositions.length),s.attributes.NORMAL&&(n.normals=s.attributes.NORMAL.value),s.attributes.TEXCOORD_0&&(n.uv=s.attributes.TEXCOORD_0.value),s.indices&&(n.indices=s.indices.value),d.transformPositions3(r,n.localPositions,n.positions);const h=d.vec3();J(n.positions,n.positions,h)&&(n.origin=h),o.createMesh(n),gP.push(n.id)}}if(t.children){const r=t.children;for(let t=0,o=r.length;t<o;t++){mP(e,r[t],i+1,s)}}if(e.entityId)0===i&&(o.createEntity({id:e.entityId,meshIds:gP,isObject:!0}),gP.length=0);else{const s=t.name;if((null!=s||0===i)&&gP.length>0){null==s&&e.log("Warning: 'name' properties not found on glTF scene nodes - will randomly-generate object IDs in XKT");let t=s;if(e.metaModelCorrections){const i=e.metaModelCorrections.eachChildRoot[t];if(i){const t=e.metaModelCorrections.eachRootStats[i.id];t.countChildren++,t.countChildren>=t.numChildren&&(o.createEntity({id:i.id,meshIds:gP,isObject:!0}),gP.length=0)}else{e.metaModelCorrections.metaObjectsMap[t]&&(o.createEntity({id:t,meshIds:gP,isObject:!0}),gP.length=0)}}else o.createEntity({id:t,meshIds:gP,isObject:!0}),gP.length=0}}}function _P(e,t){e.plugin.error(t)}const vP={DEFAULT:{}};class bP extends z{constructor(e,t={}){super("GLTFLoader",e,t),this._sceneModelLoader=new lP(this,t),this.dataSource=t.dataSource,this.objectDefaults=t.objectDefaults}set dataSource(e){this._dataSource=e||new Qc}get dataSource(){return this._dataSource}set objectDefaults(e){this._objectDefaults=e||vP}get objectDefaults(){return this._objectDefaults}load(e={}){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);const t=new bc(this.viewer.scene,y.apply(e,{isModel:!0,dtxEnabled:e.dtxEnabled})),i=t.id;if(!e.src&&!e.gltf)return this.error("load() param expected: src or gltf"),t;if(e.metaModelSrc||e.metaModelJSON){const s=e.objectDefaults||this._objectDefaults||vP,r=r=>{let o;if(this.viewer.metaScene.createMetaModel(i,r,{includeTypes:e.includeTypes,excludeTypes:e.excludeTypes}),this.viewer.scene.canvas.spinner.processes--,e.includeTypes){o={};for(let t=0,i=e.includeTypes.length;t<i;t++)o[e.includeTypes[t]]=!0}if(e.excludeTypes){o||(o={});for(let t=0,i=e.excludeTypes.length;t<i;t++)o[e.excludeTypes[t]]=!0}e.readableGeometry=!1,e.handleGLTFNode=(e,t,i)=>{const r=t.name;if(!r)return!0;const o=r,n=this.viewer.metaScene.metaObjects[o],a=(n?n.type:"DEFAULT")||"DEFAULT";i.createEntity={id:o,isObject:!0};const l=s[a];return l&&(!1===l.visible&&(i.createEntity.visible=!1),l.colorize&&(i.createEntity.colorize=l.colorize),!1===l.pickable&&(i.createEntity.pickable=!1),void 0!==l.opacity&&null!==l.opacity&&(i.createEntity.opacity=l.opacity)),!0},e.src?this._sceneModelLoader.load(this,e.src,r,e,t):this._sceneModelLoader.parse(this,e.gltf,r,e,t)};if(e.metaModelSrc){const t=e.metaModelSrc;this.viewer.scene.canvas.spinner.processes++,this._dataSource.getMetaModel(t,(e=>{this.viewer.scene.canvas.spinner.processes--,r(e)}),(e=>{this.error(`load(): Failed to load model metadata for model '${i} from '${t}' - ${e}`),this.viewer.scene.canvas.spinner.processes--}))}else e.metaModelJSON&&r(e.metaModelJSON)}else e.handleGLTFNode=(e,t,i)=>{const s=t.name;if(!s)return!0;const r=s;return i.createEntity={id:r,isObject:!0},!0},e.src?this._sceneModelLoader.load(this,e.src,null,e,t):this._sceneModelLoader.parse(this,e.gltf,null,e,t);return t.once("destroyed",(()=>{this.viewer.metaScene.destroyMetaModel(i)})),t}destroy(){super.destroy()}}function yP(e,t,i={}){const s="lightgrey",r=i.hoverColor||"rgba(0,0,0,0.4)",o=i.textColor||"black",n=500,a=n+n/3,l=a/24,A=[{boundary:[6,6,6,6],color:i.frontColor||i.color||"#55FF55"},{boundary:[18,6,6,6],color:i.backColor||i.color||"#55FF55"},{boundary:[12,6,6,6],color:i.rightColor||i.color||"#FF5555"},{boundary:[0,6,6,6],color:i.leftColor||i.color||"#FF5555"},{boundary:[6,0,6,6],color:i.topColor||i.color||"#7777FF"},{boundary:[6,12,6,6],color:i.bottomColor||i.color||"#7777FF"}],h=[{label:"NavCube.front",boundaries:[[7,7,4,4]],dir:[0,1,0],up:[0,0,1]},{label:"NavCube.back",boundaries:[[19,7,4,4]],dir:[0,-1,0],up:[0,0,1]},{label:"NavCube.right",boundaries:[[13,7,4,4]],dir:[-1,0,0],up:[0,0,1]},{label:"NavCube.left",boundaries:[[1,7,4,4]],dir:[1,0,0],up:[0,0,1]},{label:"NavCube.top",boundaries:[[7,1,4,4]],dir:[0,0,-1],up:[0,1,0]},{label:"NavCube.bottom",boundaries:[[7,13,4,4]],dir:[0,0,1],up:[0,-1,0]},{boundaries:[[7,5,4,2]],dir:[0,1,-1],up:[0,1,1]},{boundaries:[[1,6,4,1],[6,1,1,4]],dir:[1,0,-1],up:[1,0,1]},{boundaries:[[7,0,4,1],[19,6,4,1]],dir:[0,-1,-1],up:[0,-1,1]},{boundaries:[[13,6,4,1],[11,1,1,4]],dir:[-1,0,-1],up:[-1,0,1]},{boundaries:[[7,11,4,2]],dir:[0,1,1],up:[0,-1,1]},{boundaries:[[1,11,4,1],[6,13,1,4]],dir:[1,0,1],up:[-1,0,1]},{boundaries:[[7,17,4,1],[19,11,4,1]],dir:[0,-1,1],up:[0,1,1]},{boundaries:[[13,11,4,1],[11,13,1,4]],dir:[-1,0,1],up:[1,0,1]},{boundaries:[[5,7,2,4]],dir:[1,1,0],up:[0,0,1]},{boundaries:[[11,7,2,4]],dir:[-1,1,0],up:[0,0,1]},{boundaries:[[17,7,2,4]],dir:[-1,-1,0],up:[0,0,1]},{boundaries:[[0,7,1,4],[23,7,1,4]],dir:[1,-1,0],up:[0,0,1]},{boundaries:[[5,11,2,2]],dir:[1,1,1],up:[-1,-1,1]},{boundaries:[[23,11,1,1],[6,17,1,1],[0,11,1,1]],dir:[1,-1,1],up:[-1,1,1]},{boundaries:[[5,5,2,2]],dir:[1,1,-1],up:[1,1,1]},{boundaries:[[11,17,1,1],[17,11,2,1]],dir:[-1,-1,1],up:[1,1,1]},{boundaries:[[17,6,2,1],[11,0,1,1]],dir:[-1,-1,-1],up:[-1,-1,1]},{boundaries:[[11,11,2,2]],dir:[-1,1,1],up:[1,-1,1]},{boundaries:[[0,6,1,1],[6,0,1,1],[23,6,1,1]],dir:[1,-1,-1],up:[1,-1,1]},{boundaries:[[11,5,2,2]],dir:[-1,1,-1],up:[-1,1,1]}];i.frontColor||i.color,i.backColor||i.color,i.rightColor||i.color,i.leftColor||i.color,i.topColor||i.color,i.bottomColor||i.color;const c=[{yUp:"",label:"NavCube.front",boundaries:[[7,7,4,4]],dir:[0,0,-1],up:[0,1,0]},{label:"NavCube.back",boundaries:[[19,7,4,4]],dir:[0,0,1],up:[0,1,0]},{label:"NavCube.right",boundaries:[[13,7,4,4]],dir:[-1,0,0],up:[0,1,0]},{label:"NavCube.left",boundaries:[[1,7,4,4]],dir:[1,0,0],up:[0,1,0]},{label:"NavCube.top",boundaries:[[7,1,4,4]],dir:[0,-1,0],up:[0,0,-1]},{label:"NavCube.bottom",boundaries:[[7,13,4,4]],dir:[0,1,0],up:[0,0,1]},{boundaries:[[7,5,4,2]],dir:[0,-.7071,-.7071],up:[0,.7071,-.7071]},{boundaries:[[1,6,4,1],[6,1,1,4]],dir:[1,-1,0],up:[1,1,0]},{boundaries:[[7,0,4,1],[19,6,4,1]],dir:[0,-.7071,.7071],up:[0,.7071,.7071]},{boundaries:[[13,6,4,1],[11,1,1,4]],dir:[-1,-1,0],up:[-1,1,0]},{boundaries:[[7,11,4,2]],dir:[0,1,-1],up:[0,1,1]},{boundaries:[[1,11,4,1],[6,13,1,4]],dir:[1,1,0],up:[-1,1,0]},{boundaries:[[7,17,4,1],[19,11,4,1]],dir:[0,1,1],up:[0,1,-1]},{boundaries:[[13,11,4,1],[11,13,1,4]],dir:[-1,1,0],up:[1,1,0]},{boundaries:[[5,7,2,4]],dir:[1,0,-1],up:[0,1,0]},{boundaries:[[11,7,2,4]],dir:[-1,0,-1],up:[0,1,0]},{boundaries:[[17,7,2,4]],dir:[-1,0,1],up:[0,1,0]},{boundaries:[[0,7,1,4],[23,7,1,4]],dir:[1,0,1],up:[0,1,0]},{boundaries:[[5,11,2,2]],dir:[.5,.7071,-.5],up:[-.5,.7071,.5]},{boundaries:[[23,11,1,1],[6,17,1,1],[0,11,1,1]],dir:[.5,.7071,.5],up:[-.5,.7071,-.5]},{boundaries:[[5,5,2,2]],dir:[.5,-.7071,-.5],up:[.5,.7071,-.5]},{boundaries:[[11,17,1,1],[17,11,2,1]],dir:[-.5,.7071,.5],up:[.5,.7071,-.5]},{boundaries:[[17,6,2,1],[11,0,1,1]],dir:[-.5,-.7071,.5],up:[-.5,.7071,.5]},{boundaries:[[11,11,2,2]],dir:[-.5,.7071,-.5],up:[.5,.7071,.5]},{boundaries:[[0,6,1,1],[6,0,1,1],[23,6,1,1]],dir:[.5,-.7071,.5],up:[.5,.7071,.5]},{boundaries:[[11,5,2,2]],dir:[-.5,-.7071,-.5],up:[-.5,.7071,-.5]}];for(let e=0,t=h.length;e<t;e++)d.normalizeVec3(h[e].dir,h[e].dir),d.normalizeVec3(h[e].up,h[e].up);for(let e=0,t=c.length;e<t;e++)d.normalizeVec3(c[e].dir,c[e].dir),d.normalizeVec3(c[e].up,c[e].up);var u=c;this._textureCanvas=document.createElement("canvas"),this._textureCanvas.width=a,this._textureCanvas.height=n,this._textureCanvas.style.width=a+"px",this._textureCanvas.style.height="500px",this._textureCanvas.style.padding="0",this._textureCanvas.style.margin="0",this._textureCanvas.style.top="0",this._textureCanvas.style.background=s,this._textureCanvas.style.position="absolute",this._textureCanvas.style.opacity="1.0",this._textureCanvas.style.visibility="hidden",this._textureCanvas.style["z-index"]=2e6;document.getElementsByTagName("body")[0].appendChild(this._textureCanvas);const p=this._textureCanvas.getContext("2d");let f=!1;function g(){for(let e=0,t=A.length;e<t;e++){const t=A[e],i=t.boundary,s=Math.round(i[0]*l),r=Math.round(i[1]*l),o=Math.round(i[2]*l),n=Math.round(i[3]*l);p.fillStyle=t.color,p.fillRect(s,r,o,n)}for(let t=0,A=u.length;t<A;t++){let A,h,c,d;const f=u[t],g=f.boundaries;for(var e=0,i=g.length;e<i;e++){const t=g[e];A=Math.round(t[0]*l),h=Math.round(t[1]*l),c=Math.round(t[2]*l),d=Math.round(t[3]*l),f.highlighted&&(p.fillStyle=f.highlighted?r:f.color||s,p.fillRect(A,h,c,d))}if(f.label){p.fillStyle=o,p.font="60px sans-serif",p.textAlign="center";var n=A+.5*c,a=h+.7*d;p.fillText(m(f.label),n,a,80)}}t.glRedraw()}const m=function(){const t={"NavCube.front":"NavCube.front","NavCube.back":"NavCube.back","NavCube.right":"NavCube.right","NavCube.left":"NavCube.left","NavCube.top":"NavCube.top","NavCube.bottom":"NavCube.bottom"},i={"NavCube.front":"NavCube.front","NavCube.back":"NavCube.back","NavCube.right":"NavCube.right","NavCube.left":"NavCube.left","NavCube.top":"NavCube.top","NavCube.bottom":"NavCube.bottom"},s={"NavCube.front":"FRONT","NavCube.back":"BACK","NavCube.right":"RIGHT","NavCube.left":"LEFT","NavCube.top":"TOP","NavCube.bottom":"BOTTOM"};return function(r){const o=f?i:t,n=o?o[r]:null;return n?e.localeService.translate(n)||s[n]||n:r}}();this.setZUp=function(){f=!0,u=h,this.clear()},this.setYUp=function(){f=!1,u=c,this.clear()},this.clear=function(){p.fillStyle=s,p.fillRect(0,0,a,n);for(var e=0,t=u.length;e<t;e++){u[e].highlighted=!1}g()},this.getArea=function(e){const t=e[0]*a,i=n-e[1]*n;for(var s=0,r=u.length;s<r;s++){const e=u[s].boundaries;for(var o=0,A=e.length;o<A;o++){const r=e[o];if(t>=r[0]*l&&t<=(r[0]+r[2])*l&&i>=r[1]*l&&i<=(r[1]+r[3])*l)return s}}return-1},this.setAreaHighlighted=function(e,t){var i=u[e];if(!i)throw"Area not found: "+e;i.highlighted=!!t,g()},this.getAreaDir=function(e){var t=u[e];if(!t)throw"Unknown area: "+e;return t.dir},this.getAreaUp=function(e){var t=u[e];if(!t)throw"Unknown area: "+e;return t.up},this.getImage=function(){return this._textureCanvas},this.destroy=function(){this._textureCanvas&&(this._textureCanvas.parentNode.removeChild(this._textureCanvas),this._textureCanvas=null)}}const BP=d.vec3(),wP=d.vec3();d.mat4();class xP extends z{constructor(e,t={}){super("NavCube",e,t),e.navCube=this;try{this._navCubeScene=new hi(e,{canvasId:t.canvasId,canvasElement:t.canvasElement,transparent:!0}),this._navCubeCanvas=this._navCubeScene.canvas.canvas,this._navCubeScene.input.keyboardEnabled=!1}catch(e){return void this.error(e)}const i=this._navCubeScene;i.clearLights(),new St(i,{dir:[.4,-.4,.8],color:[.8,1,1],intensity:1,space:"view"}),new St(i,{dir:[-.8,-.3,-.4],color:[.8,.8,.8],intensity:1,space:"view"}),new St(i,{dir:[.8,-.6,-.8],color:[1,1,1],intensity:1,space:"view"}),this._navCubeCamera=i.camera,this._navCubeCamera.ortho.scale=7,this._navCubeCamera.ortho.near=.1,this._navCubeCamera.ortho.far=2e3,i.edgeMaterial.edgeColor=[.2,.2,.2],i.edgeMaterial.edgeAlpha=.6,this._zUp=Boolean(e.camera.zUp);var s=this;this.setIsProjectNorth(t.isProjectNorth),this.setProjectNorthOffsetAngle(t.projectNorthOffsetAngle);const r=function(){const e=d.mat4();return function(t,i,r){return d.identityMat4(e),d.rotationMat4v(t*s._projectNorthOffsetAngle*d.DEGTORAD,[0,1,0],e),d.transformVec3(e,i,r)}}();this._synchCamera=function(){var t=d.rotationMat4c(-90*d.DEGTORAD,1,0,0),i=d.vec3(),o=d.vec3(),n=d.vec3();return function(){var a=e.camera.eye,l=e.camera.look,A=e.camera.up;i=d.mulVec3Scalar(d.normalizeVec3(d.subVec3(a,l,i)),5),s._isProjectNorth&&s._projectNorthOffsetAngle&&(i=r(-1,i,BP),A=r(-1,A,wP)),s._zUp?(d.transformVec3(t,i,o),d.transformVec3(t,A,n),s._navCubeCamera.look=[0,0,0],s._navCubeCamera.eye=d.transformVec3(t,i,o),s._navCubeCamera.up=d.transformPoint3(t,A,n)):(s._navCubeCamera.look=[0,0,0],s._navCubeCamera.eye=i,s._navCubeCamera.up=A)}}(),this._cubeTextureCanvas=new yP(e,i,t),this._cubeSampler=new Xr(i,{image:this._cubeTextureCanvas.getImage(),flipY:!0,wrapS:1001,wrapT:1001}),this._cubeMesh=new fr(i,{geometry:new zt(i,{primitive:"triangles",normals:[0,0,1,0,0,1,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1],positions:[1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1],uv:[.5,.6666,.25,.6666,.25,.3333,.5,.3333,.5,.6666,.5,.3333,.75,.3333,.75,.6666,.5,.6666,.5,1,.25,1,.25,.6666,.25,.6666,0,.6666,0,.3333,.25,.3333,.25,0,.5,0,.5,.3333,.25,.3333,.75,.3333,1,.3333,1,.6666,.75,.6666],indices:[0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23]}),material:new Yt(i,{diffuse:[.4,.4,.4],specular:[.4,.4,.4],emissive:[.6,.6,.6],diffuseMap:this._cubeSampler,emissiveMap:this._cubeSampler}),visible:!0,edges:!0}),this._shadow=!1===t.shadowVisible?null:new fr(i,{geometry:new zt(i,mr({center:[0,0,0],radiusTop:.001,radiusBottom:1.4,height:.01,radialSegments:20,heightSegments:1,openEnded:!0})),material:new Yt(i,{diffuse:[0,0,0],specular:[0,0,0],emissive:[0,0,0],alpha:.5}),position:[0,-1.5,0],visible:!0,pickable:!1,backfaces:!1}),this._onCameraMatrix=e.camera.on("matrix",this._synchCamera),this._onCameraWorldAxis=e.camera.on("worldAxis",(()=>{e.camera.zUp?(this._zUp=!0,this._cubeTextureCanvas.setZUp(),this._repaint(),this._synchCamera()):e.camera.yUp&&(this._zUp=!1,this._cubeTextureCanvas.setYUp(),this._repaint(),this._synchCamera())})),this._onCameraFOV=e.camera.perspective.on("fov",(e=>{this._synchProjection&&(this._navCubeCamera.perspective.fov=e)})),this._onCameraProjection=e.camera.on("projection",(e=>{this._synchProjection&&(this._navCubeCamera.projection="ortho"===e||"perspective"===e?e:"perspective")}));var o=-1;function n(e){var t=[0,0];if(e){for(var i=e.target,s=0,r=0;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;t[0]=e.pageX-s,t[1]=e.pageY-r}else e=window.event,t[0]=e.x,t[1]=e.y;return t}var a,l,A=null,h=null,c=!1,u=!1,p=.5;s._navCubeCanvas.addEventListener("mouseenter",s._onMouseEnter=function(e){u=!0}),s._navCubeCanvas.addEventListener("mouseleave",s._onMouseLeave=function(e){u=!1}),s._navCubeCanvas.addEventListener("mousedown",s._onMouseDown=function(e){if(1===e.which){A=e.x,h=e.y,a=e.clientX,l=e.clientY;var t=n(e),s=i.pick({canvasPos:t});c=!!s}}),document.addEventListener("mouseup",s._onMouseUp=function(e){if(1===e.which&&(c=!1,null!==A)){var t=n(e),a=i.pick({canvasPos:t,pickSurface:!0});if(a&&a.uv){var l=s._cubeTextureCanvas.getArea(a.uv);if(l>=0&&(document.body.style.cursor="pointer",o>=0&&(s._cubeTextureCanvas.setAreaHighlighted(o,!1),s._repaint(),o=-1),l>=0)){if(s._cubeTextureCanvas.setAreaHighlighted(l,!0),o=l,s._repaint(),e.x<A-3||e.x>A+3||e.y<h-3||e.y>h+3)return;var u=s._cubeTextureCanvas.getAreaDir(l);if(u){var d=s._cubeTextureCanvas.getAreaUp(l);s._isProjectNorth&&s._projectNorthOffsetAngle&&(u=r(1,u,BP),d=r(1,d,wP)),f(u,d,(function(){o>=0&&(s._cubeTextureCanvas.setAreaHighlighted(o,!1),s._repaint(),o=-1),document.body.style.cursor="pointer",o>=0&&(s._cubeTextureCanvas.setAreaHighlighted(o,!1),s._repaint(),o=-1),l>=0&&(s._cubeTextureCanvas.setAreaHighlighted(l,!1),o=-1,s._repaint())}))}}}}}),document.addEventListener("mousemove",s._onMouseMove=function(t){if(o>=0&&(s._cubeTextureCanvas.setAreaHighlighted(o,!1),s._repaint(),o=-1),1!==t.buttons||c){if(c){var r=t.clientX,A=t.clientY;return document.body.style.cursor="move",void function(t,i){var s=(t-a)*-p,r=(i-l)*-p;e.camera.orbitYaw(s),e.camera.orbitPitch(-r),a=t,l=i}(r,A)}if(u){var h=n(t),d=i.pick({canvasPos:h,pickSurface:!0});if(d){if(d.uv){document.body.style.cursor="pointer";var f=s._cubeTextureCanvas.getArea(d.uv);if(f===o)return;o>=0&&s._cubeTextureCanvas.setAreaHighlighted(o,!1),f>=0&&(s._cubeTextureCanvas.setAreaHighlighted(f,!0),s._repaint(),o=f)}}else document.body.style.cursor="default",o>=0&&(s._cubeTextureCanvas.setAreaHighlighted(o,!1),s._repaint(),o=-1)}}});var f=function(){var t=d.vec3();return function(i,r,o){var n=s._fitVisible?e.scene.getAABB(e.scene.visibleObjectIds):e.scene.aabb,a=d.getAABB3Diag(n);d.getAABB3Center(n,t);var l=Math.abs(a/Math.tan(s._cameraFitFOV*d.DEGTORAD));e.cameraControl.pivotPos=t,s._cameraFly?e.cameraFlight.flyTo({look:t,eye:[t[0]-l*i[0],t[1]-l*i[1],t[2]-l*i[2]],up:r||[0,1,0],orthoScale:1.1*a,fitFOV:s._cameraFitFOV,duration:s._cameraFlyDuration},o):e.cameraFlight.jumpTo({look:t,eye:[t[0]-l*i[0],t[1]-l*i[1],t[2]-l*i[2]],up:r||[0,1,0],orthoScale:1.1*a,fitFOV:s._cameraFitFOV},o)}}();this._onUpdated=e.localeService.on("updated",(()=>{this._cubeTextureCanvas.clear(),this._repaint()})),this.setVisible(t.visible),this.setCameraFitFOV(t.cameraFitFOV),this.setCameraFly(t.cameraFly),this.setCameraFlyDuration(t.cameraFlyDuration),this.setFitVisible(t.fitVisible),this.setSynchProjection(t.synchProjection)}send(e,t){if("language"===e)this._cubeTextureCanvas.clear(),this._repaint()}_repaint(){const e=this._cubeTextureCanvas.getImage();this._cubeMesh.material.diffuseMap.image=e,this._cubeMesh.material.emissiveMap.image=e}setVisible(e=!0){this._navCubeCanvas&&(this._cubeMesh.visible=e,this._shadow&&(this._shadow.visible=e),this._navCubeCanvas.style.visibility=e?"visible":"hidden")}getVisible(){return!!this._navCubeCanvas&&this._cubeMesh.visible}setFitVisible(e=!1){this._fitVisible=e}getFitVisible(){return this._fitVisible}setCameraFly(e=!0){this._cameraFly=e}getCameraFly(){return this._cameraFly}setCameraFitFOV(e=45){this._cameraFitFOV=e}getCameraFitFOV(){return this._cameraFitFOV}setCameraFlyDuration(e=.5){this._cameraFlyDuration=e}getCameraFlyDuration(){return this._cameraFlyDuration}setSynchProjection(e=!1){this._synchProjection=e}getSynchProjection(){return this._synchProjection}setIsProjectNorth(e=!1){this._isProjectNorth=e}getIsProjectNorth(){return this._isProjectNorth}setProjectNorthOffsetAngle(e){this._projectNorthOffsetAngle=e}getProjectNorthOffsetAngle(){return this._projectNorthOffsetAngle}destroy(){this._navCubeCanvas&&(this.viewer.localeService.off(this._onUpdated),this.viewer.camera.off(this._onCameraMatrix),this.viewer.camera.off(this._onCameraWorldAxis),this.viewer.camera.perspective.off(this._onCameraFOV),this.viewer.camera.off(this._onCameraProjection),this._navCubeCanvas.removeEventListener("mouseenter",this._onMouseEnter),this._navCubeCanvas.removeEventListener("mouseleave",this._onMouseLeave),this._navCubeCanvas.removeEventListener("mousedown",this._onMouseDown),document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),this._navCubeCanvas=null,this._cubeTextureCanvas.destroy(),this._cubeTextureCanvas=null,this._onMouseEnter=null,this._onMouseLeave=null,this._onMouseDown=null,this._onMouseMove=null,this._onMouseUp=null),this._navCubeScene.destroy(),this._navCubeScene=null,this._cubeMesh=null,this._shadow=null,super.destroy()}}const PP=d.vec3();class CP{load(e,t,i={}){var s=e.scene.canvas.spinner;s.processes++,MP(e,t,(function(t){!function(e,t,i){for(var s=t.basePath,r=Object.keys(t.materialLibraries),o=r.length,n=0,a=o;n<a;n++)EP(e,s,s+r[n],(function(){0==--o&&i()}))}(e,t,(function(){DP(e,t),s.processes--,I.scheduleTask((function(){e.fire("loaded",!0,!1)}))}))}))}parse(e,t,i,s){if(t){var r=FP(e,t,null);i&&IP(e,i,s),DP(e,r),e.src=null,e.fire("loaded",!0,!1)}else this.warn("load() param expected: objText")}}var MP=function(e,t,i){SP(t,(function(s){var r=FP(e,s,t);i(r)}),(function(t){e.error(t)}))},FP=function(){const e={vertex_pattern:/^v\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)/,normal_pattern:/^vn\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)/,uv_pattern:/^vt\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)/,face_vertex:/^f\s+(-?\d+)\s+(-?\d+)\s+(-?\d+)(?:\s+(-?\d+))?/,face_vertex_uv:/^f\s+(-?\d+)\/(-?\d+)\s+(-?\d+)\/(-?\d+)\s+(-?\d+)\/(-?\d+)(?:\s+(-?\d+)\/(-?\d+))?/,face_vertex_uv_normal:/^f\s+(-?\d+)\/(-?\d+)\/(-?\d+)\s+(-?\d+)\/(-?\d+)\/(-?\d+)\s+(-?\d+)\/(-?\d+)\/(-?\d+)(?:\s+(-?\d+)\/(-?\d+)\/(-?\d+))?/,face_vertex_normal:/^f\s+(-?\d+)\/\/(-?\d+)\s+(-?\d+)\/\/(-?\d+)\s+(-?\d+)\/\/(-?\d+)(?:\s+(-?\d+)\/\/(-?\d+))?/,object_pattern:/^[og]\s*(.+)?/,smoothing_pattern:/^s\s+(\d+|on|off)/,material_library_pattern:/^mtllib /,material_use_pattern:/^usemtl /};return function(s,r,o){var n={src:o=o||"",basePath:t(o),objects:[],object:{},positions:[],normals:[],uv:[],materialLibraries:{}};i(n,"",!1),-1!==r.indexOf("\r\n")&&(r=r.replace("\r\n","\n"));for(var a=r.split("\n"),l="",A="",h="",d=[],p="function"==typeof"".trimLeft,f=0,g=a.length;f<g;f++)if(l=a[f],0!==(l=p?l.trimLeft():l.trim()).length&&"#"!==(A=l.charAt(0)))if("v"===A)if(" "===(h=l.charAt(1))&&null!==(d=e.vertex_pattern.exec(l)))n.positions.push(parseFloat(d[1]),parseFloat(d[2]),parseFloat(d[3]));else if("n"===h&&null!==(d=e.normal_pattern.exec(l)))n.normals.push(parseFloat(d[1]),parseFloat(d[2]),parseFloat(d[3]));else{if("t"!==h||null===(d=e.uv_pattern.exec(l)))return void s.error("Unexpected vertex/normal/uv line: '"+l+"'");n.uv.push(parseFloat(d[1]),parseFloat(d[2]))}else if("f"===A)if(null!==(d=e.face_vertex_uv_normal.exec(l)))c(n,d[1],d[4],d[7],d[10],d[2],d[5],d[8],d[11],d[3],d[6],d[9],d[12]);else if(null!==(d=e.face_vertex_uv.exec(l)))c(n,d[1],d[3],d[5],d[7],d[2],d[4],d[6],d[8]);else if(null!==(d=e.face_vertex_normal.exec(l)))c(n,d[1],d[3],d[5],d[7],void 0,void 0,void 0,void 0,d[2],d[4],d[6],d[8]);else{if(null===(d=e.face_vertex.exec(l)))return void s.error("Unexpected face line: '"+l+"'");c(n,d[1],d[2],d[3],d[4])}else if("l"===A){var m=l.substring(1).trim().split(" "),_=[],v=[];if(-1===l.indexOf("/"))_=m;else for(var b=0,y=m.length;b<y;b++){var B=m[b].split("/");""!==B[0]&&_.push(B[0]),""!==B[1]&&v.push(B[1])}u(n,_,v)}else if(null!==(d=e.object_pattern.exec(l))){i(n,w=d[0].substr(1).trim(),!0)}else if(e.material_use_pattern.test(l)){var w=l.substring(7).trim();n.object.material.id=w}else if(e.material_library_pattern.test(l))n.materialLibraries[l.substring(7).trim()]=!0;else{if(null===(d=e.smoothing_pattern.exec(l))){if("\0"===l)continue;return void s.error("Unexpected line: '"+l+"'")}var x=d[1].trim().toLowerCase();n.object.material.smooth="1"===x||"on"===x}return n};function t(e){var t=e.lastIndexOf("/");return-1===t?e:e.substring(0,t+1)}function i(e,t,i){if(e.object&&!1===e.object.fromDeclaration)return e.object.id=t,void(e.object.fromDeclaration=!1!==i);e.object={id:t||"",geometry:{positions:[],normals:[],uv:[]},material:{id:"",smooth:!0},fromDeclaration:!1!==i},e.objects.push(e.object)}function s(e,t){var i=parseInt(e,10);return 3*(i>=0?i-1:i+t/3)}function r(e,t){var i=parseInt(e,10);return 3*(i>=0?i-1:i+t/3)}function o(e,t){var i=parseInt(e,10);return 2*(i>=0?i-1:i+t/2)}function n(e,t,i,s){var r=e.positions,o=e.object.geometry.positions;o.push(r[t+0]),o.push(r[t+1]),o.push(r[t+2]),o.push(r[i+0]),o.push(r[i+1]),o.push(r[i+2]),o.push(r[s+0]),o.push(r[s+1]),o.push(r[s+2])}function a(e,t){var i=e.positions,s=e.object.geometry.positions;s.push(i[t+0]),s.push(i[t+1]),s.push(i[t+2])}function l(e,t,i,s){var r=e.normals,o=e.object.geometry.normals;o.push(r[t+0]),o.push(r[t+1]),o.push(r[t+2]),o.push(r[i+0]),o.push(r[i+1]),o.push(r[i+2]),o.push(r[s+0]),o.push(r[s+1]),o.push(r[s+2])}function A(e,t,i,s){var r=e.uv,o=e.object.geometry.uv;o.push(r[t+0]),o.push(r[t+1]),o.push(r[i+0]),o.push(r[i+1]),o.push(r[s+0]),o.push(r[s+1])}function h(e,t){var i=e.uv,s=e.object.geometry.uv;s.push(i[t+0]),s.push(i[t+1])}function c(e,t,i,a,h,c,u,d,p,f,g,m,_){var v,b=e.positions.length,y=s(t,b),B=s(i,b),w=s(a,b);if(void 0===h?n(e,y,B,w):(n(e,y,B,v=s(h,b)),n(e,B,w,v)),void 0!==c){var x=e.uv.length;y=o(c,x),B=o(u,x),w=o(d,x),void 0===h?A(e,y,B,w):(A(e,y,B,v=o(p,x)),A(e,B,w,v))}if(void 0!==f){var P=e.normals.length;y=r(f,P),B=f===g?y:r(g,P),w=f===m?y:r(m,P),void 0===h?l(e,y,B,w):(l(e,y,B,v=r(_,P)),l(e,B,w,v))}}function u(e,t,i){e.object.geometry.type="Line";for(var r=e.positions.length,n=e.uv.length,l=0,A=t.length;l<A;l++)a(e,s(t[l],r));for(var c=0,u=i.length;c<u;c++)h(e,o(i[c],n))}}();var EP=function(e,t,i,s){SP(i,(function(i){IP(e,i,t),s()}),(function(t){e.error(t),s()}))},IP=function(){var e=/\s+/;return function(e,r,o){var n,a,l,A,h,c=r.split("\n"),u={id:"Default"},d=!1;o=o||"";for(var p=0;p<c.length;p++)if(0!==(n=c[p].trim()).length&&"#"!==n.charAt(0))switch(l=(l=(a=n.indexOf(" "))>=0?n.substring(0,a):n).toLowerCase(),A=(A=a>=0?n.substring(a+1):"").trim(),l.toLowerCase()){case"newmtl":i(e,u),u={id:A},d=!0;break;case"ka":u.ambient=s(A);break;case"kd":u.diffuse=s(A);break;case"ks":u.specular=s(A);break;case"map_kd":u.diffuseMap||(u.diffuseMap=t(e,o,A,"sRGB"));break;case"map_ks":u.specularMap||(u.specularMap=t(e,o,A,"linear"));break;case"map_bump":case"bump":u.normalMap||(u.normalMap=t(e,o,A));break;case"ns":u.shininess=parseFloat(A);break;case"d":(h=parseFloat(A))<1&&(u.alpha=h,u.alphaMode="blend");break;case"tr":(h=parseFloat(A))>0&&(u.alpha=1-h,u.alphaMode="blend")}d&&i(e,u)};function t(e,t,i,s){var r={},o=i.split(/\s+/),n=o.indexOf("-bm");return n>=0&&o.splice(n,2),(n=o.indexOf("-s"))>=0&&(r.scale=[parseFloat(o[n+1]),parseFloat(o[n+2])],o.splice(n,4)),(n=o.indexOf("-o"))>=0&&(r.translate=[parseFloat(o[n+1]),parseFloat(o[n+2])],o.splice(n,4)),r.src=t+o.join(" ").trim(),r.flipY=!0,r.encoding=s||"linear",new Xr(e,r).id}function i(e,t){new Yt(e,t)}function s(t){var i=t.split(e,3);return[parseFloat(i[0]),parseFloat(i[1]),parseFloat(i[2])]}}();function DP(e,t){for(var i=0,s=t.objects.length;i<s;i++){var r=t.objects[i],o=r.geometry;if(o.type,0===o.positions.length)continue;var n={primitive:"triangles",compressGeometry:!1};n.positions=o.positions,o.normals.length>0&&(n.normals=o.normals),o.uv.length>0&&(n.uv=o.uv);for(var a=new Array(n.positions.length/3),l=0;l<a.length;l++)a[l]=l;n.indices=a;const s=PP;J(o.positions,o.positions,s);var A,h=new zt(e,n),c=r.material.id;c&&""!==c?(A=e.scene.components[c])||e.error("Material not found: "+c):A=new Yt(e,{diffuse:[.6,.6,.6],backfaces:!0});var u=new fr(e,{id:e.id+"#"+r.id,origin:0!==s[0]||0!==s[1]||0!==s[2]?s:null,isObject:!0,geometry:h,material:A,pickable:!0});e.addChild(u)}}function SP(e,t,i){var s=new XMLHttpRequest;s.open("GET",e,!0),s.addEventListener("load",(function(e){var s=e.target.response;200===this.status?t&&t(s):0===this.status?(console.warn("loadFile: HTTP Status 0 received."),t&&t(s)):i&&i(e)}),!1),s.addEventListener("error",(function(e){i&&i(e)}),!1),s.send(null)}class TP extends z{constructor(e,t){super("OBJLoader",e,t),this._sceneGraphLoader=new CP}load(e={}){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);var t=new Sr(this.viewer.scene,y.apply(e,{isModel:!0}));const i=t.id,s=e.src;if(!s)return this.error("load() param expected: src"),t;if(e.metaModelSrc){const r=e.metaModelSrc;y.loadJSON(r,(r=>{this.viewer.metaScene.createMetaModel(i,r),this._sceneGraphLoader.load(t,s,e)}),(e=>{this.error(`load(): Failed to load model modelMetadata for model '${i} from '${r}' - ${e}`)}))}else this._sceneGraphLoader.load(t,s,e);return t.once("destroyed",(()=>{this.viewer.metaScene.destroyMetaModel(i)})),t}destroy(){super.destroy()}}const RP=new Float64Array([0,0,1]),LP=new Float64Array(4);class UP{constructor(e){this.id=null,this._viewer=e.viewer,this._visible=!1,this._pos=d.vec3(),this._origin=d.vec3(),this._rtcPos=d.vec3(),this._baseDir=d.vec3(),this._rootNode=null,this._displayMeshes=null,this._affordanceMeshes=null,this._ignoreNextSectionPlaneDirUpdate=!1,this._createNodes(),this._bindEvents()}_setSectionPlane(e){this._sectionPlane&&(this._sectionPlane.off(this._onSectionPlanePos),this._sectionPlane.off(this._onSectionPlaneDir),this._onSectionPlanePos=null,this._onSectionPlaneDir=null,this._sectionPlane=null),e&&(this.id=e.id,this._setPos(e.pos),this._setDir(e.dir),this._sectionPlane=e,this._onSectionPlanePos=e.on("pos",(()=>{this._setPos(this._sectionPlane.pos)})),this._onSectionPlaneDir=e.on("dir",(()=>{this._ignoreNextSectionPlaneDirUpdate?this._ignoreNextSectionPlaneDirUpdate=!1:this._setDir(this._sectionPlane.dir)})))}get sectionPlane(){return this._sectionPlane}_setPos(e){this._pos.set(e),X(this._pos,this._origin,this._rtcPos),this._rootNode.origin=this._origin,this._rootNode.position=this._rtcPos}_setDir(e){this._baseDir.set(e),this._rootNode.quaternion=d.vec3PairToQuaternion(RP,e,LP)}_setSectionPlaneDir(e){this._sectionPlane&&(this._ignoreNextSectionPlaneDirUpdate=!0,this._sectionPlane.dir=e)}setVisible(e=!0){if(this._visible!==e){var t;for(t in this._visible=e,this._displayMeshes)this._displayMeshes.hasOwnProperty(t)&&(this._displayMeshes[t].visible=e);if(!e)for(t in this._affordanceMeshes)this._affordanceMeshes.hasOwnProperty(t)&&(this._affordanceMeshes[t].visible=e)}}getVisible(){return this._visible}setCulled(e){var t;for(t in this._displayMeshes)this._displayMeshes.hasOwnProperty(t)&&(this._displayMeshes[t].culled=e);if(!e)for(t in this._affordanceMeshes)this._affordanceMeshes.hasOwnProperty(t)&&(this._affordanceMeshes[t].culled=e)}_createNodes(){const e=!1,t=this._viewer.scene,i=.01;this._rootNode=new Sr(t,{position:[0,0,0],scale:[5,5,5],isObject:!1});const s=this._rootNode,r={arrowHead:new zt(s,mr({radiusTop:.001,radiusBottom:.07,radialSegments:32,heightSegments:1,height:.2,openEnded:!1})),arrowHeadBig:new zt(s,mr({radiusTop:.001,radiusBottom:.09,radialSegments:32,heightSegments:1,height:.25,openEnded:!1})),arrowHeadHandle:new zt(s,mr({radiusTop:.09,radiusBottom:.09,radialSegments:8,heightSegments:1,height:.37,openEnded:!1})),curve:new zt(s,no({radius:.8,tube:i,radialSegments:64,tubeSegments:14,arc:2*Math.PI/4})),curveHandle:new zt(s,no({radius:.8,tube:.06,radialSegments:64,tubeSegments:14,arc:2*Math.PI/4})),hoop:new zt(s,no({radius:.8,tube:i,radialSegments:64,tubeSegments:8,arc:2*Math.PI})),axis:new zt(s,mr({radiusTop:i,radiusBottom:i,radialSegments:20,heightSegments:1,height:1,openEnded:!1})),axisHandle:new zt(s,mr({radiusTop:.08,radiusBottom:.08,radialSegments:20,heightSegments:1,height:1,openEnded:!1}))},o={pickable:new Yt(s,{diffuse:[1,1,0],alpha:0,alphaMode:"blend"}),red:new Yt(s,{diffuse:[1,0,0],emissive:[1,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),highlightRed:new qt(s,{edges:!1,fill:!0,fillColor:[1,0,0],fillAlpha:.6}),green:new Yt(s,{diffuse:[0,1,0],emissive:[0,1,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),highlightGreen:new qt(s,{edges:!1,fill:!0,fillColor:[0,1,0],fillAlpha:.6}),blue:new Yt(s,{diffuse:[0,0,1],emissive:[0,0,1],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),highlightBlue:new qt(s,{edges:!1,fill:!0,fillColor:[0,0,1],fillAlpha:.2}),center:new Yt(s,{diffuse:[0,0,0],emissive:[0,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80}),highlightBall:new qt(s,{edges:!1,fill:!0,fillColor:[.5,.5,.5],fillAlpha:.5,vertices:!1}),highlightPlane:new qt(s,{edges:!0,edgeWidth:3,fill:!1,fillColor:[.5,.5,.5],fillAlpha:.5,vertices:!1})};this._displayMeshes={plane:s.addChild(new fr(s,{geometry:new zt(s,{primitive:"triangles",positions:[.5,.5,0,.5,-.5,0,-.5,-.5,0,-.5,.5,0,.5,.5,-0,.5,-.5,-0,-.5,-.5,-0,-.5,.5,-0],indices:[0,1,2,2,3,0]}),material:new Yt(s,{emissive:[0,0,0],diffuse:[0,0,0],backfaces:!0}),opacity:.6,ghosted:!0,ghostMaterial:new qt(s,{edges:!1,filled:!0,fillColor:[1,1,0],edgeColor:[0,0,0],fillAlpha:.1,backfaces:!0}),pickable:!1,collidable:!0,clippable:!1,visible:!1,scale:[2.4,2.4,1],isObject:!1}),e),planeFrame:s.addChild(new fr(s,{geometry:new zt(s,no({center:[0,0,0],radius:1.7,tube:.02,radialSegments:4,tubeSegments:4,arc:2*Math.PI})),material:new Yt(s,{emissive:[0,0,0],diffuse:[0,0,0],specular:[0,0,0],shininess:0}),highlightMaterial:new qt(s,{edges:!1,edgeColor:[0,0,0],filled:!0,fillColor:[.8,.8,.8],fillAlpha:1}),pickable:!1,collidable:!1,clippable:!1,visible:!1,scale:[1,1,.1],rotation:[0,0,45],isObject:!1}),e),xCurve:s.addChild(new fr(s,{geometry:r.curve,material:o.red,matrix:function(){const e=d.rotationMat4v(90*d.DEGTORAD,[0,1,0],d.identityMat4()),t=d.rotationMat4v(270*d.DEGTORAD,[1,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),xCurveHandle:s.addChild(new fr(s,{geometry:r.curveHandle,material:o.pickable,matrix:function(){const e=d.rotationMat4v(90*d.DEGTORAD,[0,1,0],d.identityMat4()),t=d.rotationMat4v(270*d.DEGTORAD,[1,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),xCurveArrow1:s.addChild(new fr(s,{geometry:r.arrowHead,material:o.red,matrix:function(){const e=d.translateMat4c(0,-.07,-.8,d.identityMat4()),t=d.scaleMat4v([.6,.6,.6],d.identityMat4()),i=d.rotationMat4v(0*d.DEGTORAD,[0,0,1],d.identityMat4());return d.mulMat4(d.mulMat4(e,t,d.identityMat4()),i,d.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xCurveArrow2:s.addChild(new fr(s,{geometry:r.arrowHead,material:o.red,matrix:function(){const e=d.translateMat4c(0,-.8,-.07,d.identityMat4()),t=d.scaleMat4v([.6,.6,.6],d.identityMat4()),i=d.rotationMat4v(90*d.DEGTORAD,[1,0,0],d.identityMat4());return d.mulMat4(d.mulMat4(e,t,d.identityMat4()),i,d.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yCurve:s.addChild(new fr(s,{geometry:r.curve,material:o.green,rotation:[-90,0,0],pickable:!1,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),yCurveHandle:s.addChild(new fr(s,{geometry:r.curveHandle,material:o.pickable,rotation:[-90,0,0],pickable:!0,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),yCurveArrow1:s.addChild(new fr(s,{geometry:r.arrowHead,material:o.green,matrix:function(){const e=d.translateMat4c(.07,0,-.8,d.identityMat4()),t=d.scaleMat4v([.6,.6,.6],d.identityMat4()),i=d.rotationMat4v(90*d.DEGTORAD,[0,0,1],d.identityMat4());return d.mulMat4(d.mulMat4(e,t,d.identityMat4()),i,d.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yCurveArrow2:s.addChild(new fr(s,{geometry:r.arrowHead,material:o.green,matrix:function(){const e=d.translateMat4c(.8,0,-.07,d.identityMat4()),t=d.scaleMat4v([.6,.6,.6],d.identityMat4()),i=d.rotationMat4v(90*d.DEGTORAD,[1,0,0],d.identityMat4());return d.mulMat4(d.mulMat4(e,t,d.identityMat4()),i,d.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zCurve:s.addChild(new fr(s,{geometry:r.curve,material:o.blue,matrix:d.rotationMat4v(180*d.DEGTORAD,[1,0,0],d.identityMat4()),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zCurveHandle:s.addChild(new fr(s,{geometry:r.curveHandle,material:o.pickable,matrix:d.rotationMat4v(180*d.DEGTORAD,[1,0,0],d.identityMat4()),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zCurveCurveArrow1:s.addChild(new fr(s,{geometry:r.arrowHead,material:o.blue,matrix:function(){const e=d.translateMat4c(.8,-.07,0,d.identityMat4()),t=d.scaleMat4v([.6,.6,.6],d.identityMat4());return d.mulMat4(e,t,d.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zCurveArrow2:s.addChild(new fr(s,{geometry:r.arrowHead,material:o.blue,matrix:function(){const e=d.translateMat4c(.05,-.8,0,d.identityMat4()),t=d.scaleMat4v([.6,.6,.6],d.identityMat4()),i=d.rotationMat4v(90*d.DEGTORAD,[0,0,1],d.identityMat4());return d.mulMat4(d.mulMat4(e,t,d.identityMat4()),i,d.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),center:s.addChild(new fr(s,{geometry:new zt(s,_r({radius:.05})),material:o.center,pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xAxisArrow:s.addChild(new fr(s,{geometry:r.arrowHead,material:o.red,matrix:function(){const e=d.translateMat4c(0,1.1,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[0,0,1],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xAxisArrowHandle:s.addChild(new fr(s,{geometry:r.arrowHeadHandle,material:o.pickable,matrix:function(){const e=d.translateMat4c(0,1.1,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[0,0,1],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xAxis:s.addChild(new fr(s,{geometry:r.axis,material:o.red,matrix:function(){const e=d.translateMat4c(0,.5,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[0,0,1],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),xAxisHandle:s.addChild(new fr(s,{geometry:r.axisHandle,material:o.pickable,matrix:function(){const e=d.translateMat4c(0,.5,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[0,0,1],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yAxisArrow:s.addChild(new fr(s,{geometry:r.arrowHead,material:o.green,matrix:function(){const e=d.translateMat4c(0,1.1,0,d.identityMat4()),t=d.rotationMat4v(180*d.DEGTORAD,[1,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yAxisArrowHandle:s.addChild(new fr(s,{geometry:r.arrowHeadHandle,material:o.pickable,matrix:function(){const e=d.translateMat4c(0,1.1,0,d.identityMat4()),t=d.rotationMat4v(180*d.DEGTORAD,[1,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,opacity:.2,isObject:!1}),e),yShaft:s.addChild(new fr(s,{geometry:r.axis,material:o.green,position:[0,-.5,0],pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yShaftHandle:s.addChild(new fr(s,{geometry:r.axisHandle,material:o.pickable,position:[0,-.5,0],pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zAxisArrow:s.addChild(new fr(s,{geometry:r.arrowHead,material:o.blue,matrix:function(){const e=d.translateMat4c(0,1.1,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[.8,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zAxisArrowHandle:s.addChild(new fr(s,{geometry:r.arrowHeadHandle,material:o.pickable,matrix:function(){const e=d.translateMat4c(0,1.1,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[.8,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zShaft:s.addChild(new fr(s,{geometry:r.axis,material:o.blue,matrix:function(){const e=d.translateMat4c(0,.5,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[1,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),clippable:!1,pickable:!1,collidable:!0,visible:!1,isObject:!1}),e),zAxisHandle:s.addChild(new fr(s,{geometry:r.axisHandle,material:o.pickable,matrix:function(){const e=d.translateMat4c(0,.5,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[1,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),clippable:!1,pickable:!0,collidable:!0,visible:!1,isObject:!1}),e)},this._affordanceMeshes={planeFrame:s.addChild(new fr(s,{geometry:new zt(s,no({center:[0,0,0],radius:2,tube:i,radialSegments:4,tubeSegments:4,arc:2*Math.PI})),material:new Yt(s,{ambient:[1,1,1],diffuse:[0,0,0],emissive:[1,1,0]}),highlighted:!0,highlightMaterial:new qt(s,{edges:!1,filled:!0,fillColor:[1,1,0],fillAlpha:1}),pickable:!1,collidable:!1,clippable:!1,visible:!1,scale:[1,1,1],rotation:[0,0,45],isObject:!1}),e),xHoop:s.addChild(new fr(s,{geometry:r.hoop,material:o.red,highlighted:!0,highlightMaterial:o.highlightRed,matrix:function(){const e=d.rotationMat4v(90*d.DEGTORAD,[0,1,0],d.identityMat4()),t=d.rotationMat4v(270*d.DEGTORAD,[1,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yHoop:s.addChild(new fr(s,{geometry:r.hoop,material:o.green,highlighted:!0,highlightMaterial:o.highlightGreen,rotation:[-90,0,0],pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zHoop:s.addChild(new fr(s,{geometry:r.hoop,material:o.blue,highlighted:!0,highlightMaterial:o.highlightBlue,matrix:d.rotationMat4v(180*d.DEGTORAD,[1,0,0],d.identityMat4()),pickable:!1,collidable:!0,clippable:!1,backfaces:!0,visible:!1,isObject:!1}),e),xAxisArrow:s.addChild(new fr(s,{geometry:r.arrowHeadBig,material:o.red,matrix:function(){const e=d.translateMat4c(0,1.1,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[0,0,1],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),yAxisArrow:s.addChild(new fr(s,{geometry:r.arrowHeadBig,material:o.green,matrix:function(){const e=d.translateMat4c(0,1.1,0,d.identityMat4()),t=d.rotationMat4v(180*d.DEGTORAD,[1,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e),zAxisArrow:s.addChild(new fr(s,{geometry:r.arrowHeadBig,material:o.blue,matrix:function(){const e=d.translateMat4c(0,1.1,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[.8,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1,isObject:!1}),e)}}_bindEvents(){const e=this;var t=!1;const i=-1,s=0,r=1,o=2,n=3,a=4,l=5,A=this._rootNode;var h=null,c=null;const u=d.vec2(),p=d.vec3([1,0,0]),f=d.vec3([0,1,0]),g=d.vec3([0,0,1]),m=this._viewer.scene.canvas.canvas,_=this._viewer.camera,v=this._viewer.scene;{const e=d.vec3([0,0,0]);let t=-1;this._onCameraViewMatrix=v.camera.on("viewMatrix",(()=>{})),this._onCameraProjMatrix=v.camera.on("projMatrix",(()=>{})),this._onSceneTick=v.on("tick",(()=>{const i=Math.abs(d.lenVec3(d.subVec3(v.camera.eye,this._pos,e)));if(i!==t&&"perspective"===_.projection){const e=.07*(Math.tan(_.perspective.fov*d.DEGTORAD)*i);A.scale=[e,e,e],t=i}if("ortho"===_.projection){const e=_.ortho.scale/10;A.scale=[e,e,e],t=i}}))}const b=function(){const e=new Float64Array(2);return function(t){if(t){for(var i=t.target,s=0,r=0;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;e[0]=t.pageX-s,e[1]=t.pageY-r}else t=window.event,e[0]=t.x,e[1]=t.y;return e}}(),y=function(){const t=d.mat4();return function(i,s){return d.quaternionToMat4(e._rootNode.quaternion,t),d.transformVec3(t,i,s),d.normalizeVec3(s),s}}();var B=function(){const e=d.vec3();return function(t){const i=Math.abs(t[0]);return i>Math.abs(t[1])&&i>Math.abs(t[2])?d.cross3Vec3(t,[0,1,0],e):d.cross3Vec3(t,[1,0,0],e),d.cross3Vec3(e,t,e),d.normalizeVec3(e),e}}();const w=function(){const t=d.vec3(),i=d.vec3(),s=d.vec4();return function(r,o,n){y(r,s);const a=B(s,o,n);P(o,a,t),P(n,a,i),d.subVec3(i,t);const l=d.dotVec3(i,s);e._pos[0]+=s[0]*l,e._pos[1]+=s[1]*l,e._pos[2]+=s[2]*l,e._rootNode.position=e._pos,e._sectionPlane&&(e._sectionPlane.pos=e._pos)}}();var x=function(){const t=d.vec4(),i=d.vec4(),s=d.vec4(),r=d.vec4();return function(o,n,a){y(o,r);if(!(P(n,r,t)&&P(a,r,i))){const e=B(r,n,a);P(n,e,t,1),P(a,e,i,1);var l=d.dotVec3(t,r);t[0]-=l*r[0],t[1]-=l*r[1],t[2]-=l*r[2],l=d.dotVec3(i,r),i[0]-=l*r[0],i[1]-=l*r[1],i[2]-=l*r[2]}d.normalizeVec3(t),d.normalizeVec3(i),l=d.dotVec3(t,i),l=d.clamp(l,-1,1);var A=Math.acos(l)*d.RADTODEG;d.cross3Vec3(t,i,s),d.dotVec3(s,r)<0&&(A=-A),e._rootNode.rotate(o,A),C()}}(),P=function(){const t=d.vec4([0,0,0,1]),i=d.mat4();return function(s,r,o,n){n=n||0,t[0]=s[0]/m.width*2-1,t[1]=-(s[1]/m.height*2-1),t[2]=0,t[3]=1,d.mulMat4(_.projMatrix,_.viewMatrix,i),d.inverseMat4(i),d.transformVec4(i,t,t),d.mulVec4Scalar(t,1/t[3]);var a=_.eye;d.subVec4(t,a,t);const l=e._sectionPlane.pos;var A=-d.dotVec3(l,r)-n,h=d.dotVec3(r,t);if(Math.abs(h)>.005){var c=-(d.dotVec3(r,a)+A)/h;return d.mulVec3Scalar(t,c,o),d.addVec3(o,a),d.subVec3(o,l,o),!0}return!1}}();const C=function(){const t=d.vec3(),i=d.mat4();return function(){e.sectionPlane&&(d.quaternionToMat4(A.quaternion,i),d.transformVec3(i,[0,0,1],t),e._setSectionPlaneDir(t))}}();var M,F=!1;this._onCameraControlHover=this._viewer.cameraControl.on("hoverEnter",(e=>{if(!this._visible)return;if(F)return;var A;t=!1,M&&(M.visible=!1);switch(e.entity.id){case this._displayMeshes.xAxisArrowHandle.id:case this._displayMeshes.xAxisHandle.id:A=this._affordanceMeshes.xAxisArrow,h=s;break;case this._displayMeshes.yAxisArrowHandle.id:case this._displayMeshes.yShaftHandle.id:A=this._affordanceMeshes.yAxisArrow,h=r;break;case this._displayMeshes.zAxisArrowHandle.id:case this._displayMeshes.zAxisHandle.id:A=this._affordanceMeshes.zAxisArrow,h=o;break;case this._displayMeshes.xCurveHandle.id:A=this._affordanceMeshes.xHoop,h=n;break;case this._displayMeshes.yCurveHandle.id:A=this._affordanceMeshes.yHoop,h=a;break;case this._displayMeshes.zCurveHandle.id:A=this._affordanceMeshes.zHoop,h=l;break;default:return void(h=i)}A&&(A.visible=!0),M=A,t=!0})),this._onCameraControlHoverLeave=this._viewer.cameraControl.on("hoverOutEntity",(e=>{this._visible&&(M&&(M.visible=!1),M=null,h=i)})),m.addEventListener("mousedown",this._canvasMouseDownListener=e=>{if(e.preventDefault(),this._visible&&t&&(this._viewer.cameraControl.pointerEnabled=!1,1===e.which)){F=!0;var i=b(e);c=h,u[0]=i[0],u[1]=i[1]}}),m.addEventListener("mousemove",this._canvasMouseMoveListener=e=>{if(!this._visible)return;if(!F)return;var t=b(e);const i=t[0],A=t[1];switch(c){case s:w(p,u,t);break;case r:w(f,u,t);break;case o:w(g,u,t);break;case n:x(p,u,t);break;case a:x(f,u,t);break;case l:x(g,u,t)}u[0]=i,u[1]=A}),m.addEventListener("mouseup",this._canvasMouseUpListener=e=>{this._visible&&(this._viewer.cameraControl.pointerEnabled=!0,F&&(e.which,F=!1,t=!1))}),m.addEventListener("wheel",this._canvasWheelListener=e=>{if(this._visible)Math.max(-1,Math.min(1,40*-e.deltaY))})}_destroy(){this._unbindEvents(),this._destroyNodes()}_unbindEvents(){const e=this._viewer,t=e.scene,i=t.canvas.canvas,s=e.camera,r=e.cameraControl;t.off(this._onSceneTick),i.removeEventListener("mousedown",this._canvasMouseDownListener),i.removeEventListener("mousemove",this._canvasMouseMoveListener),i.removeEventListener("mouseup",this._canvasMouseUpListener),i.removeEventListener("wheel",this._canvasWheelListener),s.off(this._onCameraViewMatrix),s.off(this._onCameraProjMatrix),r.off(this._onCameraControlHover),r.off(this._onCameraControlHoverLeave)}_destroyNodes(){this._setSectionPlane(null),this._rootNode.destroy(),this._displayMeshes={},this._affordanceMeshes={}}}class kP{constructor(e,t,i){this.id=i.id,this._sectionPlane=i,this._mesh=new fr(t,{id:i.id,geometry:new zt(t,Wt({xSize:.5,ySize:.5,zSize:.001})),material:new Yt(t,{emissive:[1,1,1],diffuse:[0,0,0],backfaces:!1}),edgeMaterial:new ei(t,{edgeColor:[0,0,0],edgeAlpha:1,edgeWidth:1}),highlightMaterial:new qt(t,{fill:!0,fillColor:[.5,1,.5],fillAlpha:.7,edges:!0,edgeColor:[0,0,0],edgeAlpha:1,edgeWidth:1}),selectedMaterial:new qt(t,{fill:!0,fillColor:[0,0,1],fillAlpha:.7,edges:!0,edgeColor:[1,0,0],edgeAlpha:1,edgeWidth:1}),highlighted:!0,scale:[3,3,3],position:[0,0,0],rotation:[0,0,0],opacity:.3,edges:!0});{const e=d.vec3([0,0,0]),t=d.vec3(),i=d.vec3([0,0,1]),s=d.vec4(4),r=d.vec3(),o=()=>{const o=this._sectionPlane.scene.center,n=[-this._sectionPlane.dir[0],-this._sectionPlane.dir[1],-this._sectionPlane.dir[2]];d.subVec3(o,this._sectionPlane.pos,e);const a=-d.dotVec3(n,e);d.normalizeVec3(n),d.mulVec3Scalar(n,a,t);const l=d.vec3PairToQuaternion(i,this._sectionPlane.dir,s);r[0]=.1*t[0],r[1]=.1*t[1],r[2]=.1*t[2],this._mesh.quaternion=l,this._mesh.position=r};this._onSectionPlanePos=this._sectionPlane.on("pos",o),this._onSectionPlaneDir=this._sectionPlane.on("dir",o)}this._highlighted=!1,this._selected=!1}setHighlighted(e){this._highlighted=!!e,this._mesh.highlighted=this._highlighted,this._mesh.highlightMaterial.fillColor=e?[0,.7,0]:[0,0,0]}getHighlighted(){return this._highlighted}setSelected(e){this._selected=!!e,this._mesh.edgeMaterial.edgeWidth=e?3:1,this._mesh.highlightMaterial.edgeWidth=e?3:1}getSelected(){return this._selected}destroy(){this._sectionPlane.off(this._onSectionPlanePos),this._sectionPlane.off(this._onSectionPlaneDir),this._mesh.destroy()}}class OP{constructor(e,t){if(!(t.onHoverEnterPlane&&t.onHoverLeavePlane&&t.onClickedNothing&&t.onClickedPlane))throw"Missing config(s): onHoverEnterPlane, onHoverLeavePlane, onClickedNothing || onClickedPlane";this.plugin=e,this._viewer=e.viewer,this._onHoverEnterPlane=t.onHoverEnterPlane,this._onHoverLeavePlane=t.onHoverLeavePlane,this._onClickedNothing=t.onClickedNothing,this._onClickedPlane=t.onClickedPlane,this._visible=!0,this._planes={},this._canvas=t.overviewCanvas,this._scene=new hi(this._viewer,{canvasId:this._canvas.id,transparent:!0}),this._scene.clearLights(),new St(this._scene,{dir:[.4,-.4,.8],color:[.8,1,1],intensity:1,space:"view"}),new St(this._scene,{dir:[-.8,-.3,-.4],color:[.8,.8,.8],intensity:1,space:"view"}),new St(this._scene,{dir:[.8,-.6,-.8],color:[1,1,1],intensity:1,space:"view"}),this._scene.camera,this._scene.camera.perspective.fov=70,this._zUp=!1;{const e=this._scene.camera,t=d.rotationMat4c(-90*d.DEGTORAD,1,0,0),i=d.vec3(),s=d.vec3(),r=d.vec3();this._synchCamera=()=>{const o=this._viewer.camera.eye,n=this._viewer.camera.look,a=this._viewer.camera.up;d.mulVec3Scalar(d.normalizeVec3(d.subVec3(o,n,i)),7),this._zUp?(d.transformVec3(t,i,s),d.transformVec3(t,a,r),e.look=[0,0,0],e.eye=d.transformVec3(t,i,s),e.up=d.transformPoint3(t,a,r)):(e.look=[0,0,0],e.eye=i,e.up=a)}}this._onViewerCameraMatrix=this._viewer.camera.on("matrix",this._synchCamera),this._onViewerCameraWorldAxis=this._viewer.camera.on("worldAxis",this._synchCamera),this._onViewerCameraFOV=this._viewer.camera.perspective.on("fov",(e=>{this._scene.camera.perspective.fov=e}));var i=null;this._onInputMouseMove=this._scene.input.on("mousemove",(e=>{const t=this._scene.pick({canvasPos:e});if(t){if(!i||t.entity.id!==i.id){if(i){this._planes[i.id]&&this._onHoverLeavePlane(i.id)}i=t.entity;this._planes[i.id]&&this._onHoverEnterPlane(i.id)}}else i&&(this._onHoverLeavePlane(i.id),i=null)})),this._scene.canvas.canvas.addEventListener("mouseup",this._onCanvasMouseUp=()=>{if(i){this._planes[i.id]&&this._onClickedPlane(i.id)}else this._onClickedNothing()}),this._scene.canvas.canvas.addEventListener("mouseout",this._onCanvasMouseOut=()=>{i&&(this._onHoverLeavePlane(i.id),i=null)}),this.setVisible(t.overviewVisible)}addSectionPlane(e){this._planes[e.id]=new kP(this,this._scene,e)}setPlaneHighlighted(e,t){const i=this._planes[e];i&&i.setHighlighted(t)}setPlaneSelected(e,t){const i=this._planes[e];i&&i.setSelected(t)}removeSectionPlane(e){const t=this._planes[e.id];t&&(t.destroy(),delete this._planes[e.id])}setVisible(e=!0){this._visible=e,this._canvas.style.visibility=e?"visible":"hidden"}getVisible(){return this._visible}destroy(){this._viewer.camera.off(this._onViewerCameraMatrix),this._viewer.camera.off(this._onViewerCameraWorldAxis),this._viewer.camera.perspective.off(this._onViewerCameraFOV),this._scene.input.off(this._onInputMouseMove),this._scene.canvas.canvas.removeEventListener("mouseup",this._onCanvasMouseUp),this._scene.canvas.canvas.removeEventListener("mouseout",this._onCanvasMouseOut),this._scene.destroy()}}const NP=d.AABB3(),QP=d.vec3();class VP extends z{constructor(e,t={}){if(super("SectionPlanes",e),this._freeControls=[],this._sectionPlanes=e.scene.sectionPlanes,this._controls={},this._shownControlId=null,null!==t.overviewCanvasId&&void 0!==t.overviewCanvasId){const e=document.getElementById(t.overviewCanvasId);e?this._overview=new OP(this,{overviewCanvas:e,visible:t.overviewVisible,onHoverEnterPlane:e=>{this._overview.setPlaneHighlighted(e,!0)},onHoverLeavePlane:e=>{this._overview.setPlaneHighlighted(e,!1)},onClickedPlane:e=>{if(this.getShownControl()===e)return void this.hideControl();this.showControl(e);const t=this.sectionPlanes[e].pos;NP.set(this.viewer.scene.aabb),d.getAABB3Center(NP,QP),NP[0]+=t[0]-QP[0],NP[1]+=t[1]-QP[1],NP[2]+=t[2]-QP[2],NP[3]+=t[0]-QP[0],NP[4]+=t[1]-QP[1],NP[5]+=t[2]-QP[2],this.viewer.cameraFlight.flyTo({aabb:NP,fitFOV:65})},onClickedNothing:()=>{this.hideControl()}}):this.warn("Can't find overview canvas: '"+t.overviewCanvasId+"' - will create plugin without overview")}this._onSceneSectionPlaneCreated=e.scene.on("sectionPlaneCreated",(e=>{this._sectionPlaneCreated(e)}))}setOverviewVisible(e){this._overview&&this._overview.setVisible(e)}getOverviewVisible(){if(this._overview)return this._overview.getVisible()}get sectionPlanes(){return this._sectionPlanes}createSectionPlane(e={}){void 0!==e.id&&null!==e.id&&this.viewer.scene.components[e.id]&&(this.error("Viewer component with this ID already exists: "+e.id),delete e.id);return new Br(this.viewer.scene,{id:e.id,pos:e.pos,dir:e.dir,active:!0})}_sectionPlaneCreated(e){const t=this._freeControls.length>0?this._freeControls.pop():new UP(this);t._setSectionPlane(e),t.setVisible(!1),this._controls[e.id]=t,this._overview&&this._overview.addSectionPlane(e),e.once("destroyed",(()=>{this._sectionPlaneDestroyed(e)}))}flipSectionPlanes(){const e=this.viewer.scene.sectionPlanes;for(let t in e){e[t].flipDir()}}showControl(e){const t=this._controls[e];t?(this.hideControl(),t.setVisible(!0),this._overview&&this._overview.setPlaneSelected(e,!0),this._shownControlId=e):this.error("Control not found: "+e)}getShownControl(){return this._shownControlId}hideControl(){for(var e in this._controls)this._controls.hasOwnProperty(e)&&(this._controls[e].setVisible(!1),this._overview&&this._overview.setPlaneSelected(e,!1));this._shownControlId=null}destroySectionPlane(e){var t=this.viewer.scene.sectionPlanes[e];t?(this._sectionPlaneDestroyed(t),t.destroy(),e===this._shownControlId&&(this._shownControlId=null)):this.error("SectionPlane not found: "+e)}_sectionPlaneDestroyed(e){this._overview&&this._overview.removeSectionPlane(e);const t=this._controls[e.id];t&&(t.setVisible(!1),t._setSectionPlane(null),delete this._controls[e.id],this._freeControls.push(t))}clear(){const e=Object.keys(this._sectionPlanes);for(var t=0,i=e.length;t<i;t++)this.destroySectionPlane(e[t])}send(e,t){switch(e){case"snapshotStarting":for(let e in this._controls)this._controls.hasOwnProperty(e)&&this._controls[e].setCulled(!0);break;case"snapshotFinished":for(let e in this._controls)this._controls.hasOwnProperty(e)&&this._controls[e].setCulled(!1);break;case"clearSectionPlanes":this.clear()}}destroy(){this.clear(),this._overview&&this._overview.destroy(),this._destroyFreeControls(),super.destroy()}_destroyFreeControls(){for(var e=this._freeControls.pop();e;)e._destroy(),e=this._freeControls.pop();this.viewer.scene.off(this._onSceneSectionPlaneCreated)}}class HP{constructor(e,t,i,s,r,o){this.plugin=e,this.storeyId=r,this.modelId=s,this.storeyAABB=i.slice(),this.aabb=this.storeyAABB,this.modelAABB=t.slice(),this.numObjects=o}}class jP{constructor(e,t,i,s,r,o){this.storeyId=e,this.imageData=t,this.format=i,this.width=s,this.height=r}}const GP=d.vec3(),zP=d.mat4();class WP extends z{constructor(e,t={}){super("StoreyViews",e),this._objectsMemento=new _u,this._cameraMemento=new pu,this.storeys={},this.modelStoreys={},this._fitStoreyMaps=!!t.fitStoreyMaps,this._onModelLoaded=this.viewer.scene.on("modelLoaded",(e=>{this._registerModelStoreys(e),this.fire("storeys",this.storeys)}))}_registerModelStoreys(e){const t=this.viewer,i=t.scene,s=t.metaScene,r=s.metaModels[e],o=i.models[e];if(!r||!r.rootMetaObjects)return;const n=r.rootMetaObjects;for(let t=0,r=n.length;t<r;t++){const r=n[t].getObjectIDsInSubtreeByType(["IfcBuildingStorey"]);for(let t=0,n=r.length;t<n;t++){const n=r[t],a=s.metaObjects[n].getObjectIDsInSubtree(),l=i.getAABB(a),A=Math.random()>.5?a.length:0,h=new HP(this,o.aabb,l,e,n,A);h._onModelDestroyed=o.once("destroyed",(()=>{this._deregisterModelStoreys(e),this.fire("storeys",this.storeys)})),this.storeys[n]=h,this.modelStoreys[e]||(this.modelStoreys[e]={}),this.modelStoreys[e][n]=h}}}_deregisterModelStoreys(e){const t=this.modelStoreys[e];if(t){const i=this.viewer.scene;for(let e in t)if(t.hasOwnProperty(e)){const s=t[e],r=i.models[s.modelId];r&&r.off(s._onModelDestroyed),delete this.storeys[e]}delete this.modelStoreys[e]}}get fitStoreyMaps(){return this._fitStoreyMaps}gotoStoreyCamera(e,t={}){const i=this.storeys[e];if(!i)return this.error("IfcBuildingStorey not found with this ID: "+e),void(t.done&&t.done());const s=this.viewer,r=s.scene.camera,o=i.storeyAABB;if(o[3]<o[0]||o[4]<o[1]||o[5]<o[2])return void(t.done&&t.done());if(o[3]===o[0]&&o[4]===o[1]&&o[5]===o[2])return void(t.done&&t.done());const n=d.getAABB3Center(o),a=d.getAABB3Diag(o),l=Math.abs(a/Math.tan(45*d.DEGTORAD)),A=1.3*a,h=GP;h[0]=n[0]+r.worldUp[0]*l,h[1]=n[1]+r.worldUp[1]*l,h[2]=n[2]+r.worldUp[2]*l;const c=r.worldForward;t.done?s.cameraFlight.flyTo(y.apply(t,{eye:h,look:n,up:c,orthoScale:A}),(()=>{t.done()})):(s.cameraFlight.jumpTo(y.apply(t,{eye:h,look:n,up:c,orthoScale:A})),s.camera.ortho.scale=A)}showStoreyObjects(e,t={}){if(!this.storeys[e])return void this.error("IfcBuildingStorey not found with this ID: "+e);const i=this.viewer,s=i.scene;i.metaScene.metaObjects[e]&&(t.hideOthers&&s.setObjectsVisible(i.scene.visibleObjectIds,!1),this.withStoreyObjects(e,((e,t)=>{e&&(e.visible=!0)})))}withStoreyObjects(e,t){const i=this.viewer,s=i.scene,r=i.metaScene,o=r.metaObjects[e];if(!o)return;const n=o.getObjectIDsInSubtree();for(var a=0,l=n.length;a<l;a++){const e=n[a],i=r.metaObjects[e],o=s.objects[e];o&&t(o,i)}}createStoreyMap(e,t={}){const i=this.storeys[e];if(!i)return this.error("IfcBuildingStorey not found with this ID: "+e),"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==";const s=this.viewer,r=s.scene,o=t.format||"png",n=this._fitStoreyMaps?i.storeyAABB:i.modelAABB,a=Math.abs((n[5]-n[2])/(n[3]-n[0])),l=t.padding||0;let A,h;t.width&&t.height?(A=t.width,h=t.height):t.height?(h=t.height,A=Math.round(h/a)):t.width?(A=t.width,h=Math.round(A*a)):(A=300,h=Math.round(A*a)),this._objectsMemento.saveObjects(r),this._cameraMemento.saveCamera(r),this.showStoreyObjects(e,y.apply(t,{hideOthers:!0})),this._arrangeStoreyMapCamera(i);const c=s.getSnapshot({width:A,height:h,format:o});return this._objectsMemento.restoreObjects(r),this._cameraMemento.restoreCamera(r),new jP(e,c,o,A,h,l)}_arrangeStoreyMapCamera(e){const t=this.viewer,i=t.scene.camera,s=this._fitStoreyMaps?e.storeyAABB:e.modelAABB,r=d.getAABB3Center(s),o=GP;o[0]=r[0]+.5*i.worldUp[0],o[1]=r[1]+.5*i.worldUp[1],o[2]=r[2]+.5*i.worldUp[2];const n=i.worldForward;t.cameraFlight.jumpTo({eye:o,look:r,up:n});const a=(s[3]-s[0])/2,l=(s[4]-s[1])/2,A=(s[5]-s[2])/2,h=-a,c=+a,u=-l,p=+l,f=-A,g=+A;t.camera.customProjection.matrix=d.orthoMat4c(h,c,f,g,u,p,zP),t.camera.projection="customProjection"}pickStoreyMap(e,t,i={}){const s=e.storeyId,r=this.storeys[s];if(!r)return this.error("IfcBuildingStorey not found with this ID: "+s),null;const o=1-t[0]/e.width,n=1-t[1]/e.height,a=this._fitStoreyMaps?r.storeyAABB:r.modelAABB,l=a[0],A=a[1],h=a[2],c=a[3]-l,u=a[4]-A,p=a[5]-h,f=d.vec3([l+c*o,A+.5*u,h+p*n]),g=d.vec3([0,-1,0]),m=d.addVec3(f,g,GP),_=this.viewer.camera.worldForward,v=d.lookAtMat4v(f,m,_,zP);return this.viewer.scene.pick({pickSurface:i.pickSurface,pickInvisible:!0,matrix:v})}storeyMapToWorldPos(e,t,i={}){const s=e.storeyId,r=this.storeys[s];if(!r)return this.error("IfcBuildingStorey not found with this ID: "+s),null;const o=1-t[0]/e.width,n=1-t[1]/e.height,a=this._fitStoreyMaps?r.storeyAABB:r.modelAABB,l=a[0],A=a[1],h=a[2],c=a[3]-l,u=a[4]-A,p=a[5]-h;return d.vec3([l+c*o,A+.5*u,h+p*n])}getStoreyContainingWorldPos(e){for(var t in this.storeys){const i=this.storeys[t];if(d.point3AABB3Intersect(i.storeyAABB,e))return t}return null}worldPosToStoreyMap(e,t,i){const s=e.storeyId,r=this.storeys[s];if(!r)return this.error("IfcBuildingStorey not found with this ID: "+s),!1;const o=this._fitStoreyMaps?r.storeyAABB:r.modelAABB,n=o[0],a=o[1],l=o[2],A=o[3]-n,h=o[4]-a,c=o[5]-l,u=this.viewer.camera.worldUp,d=u[0]>u[1]&&u[0]>u[2],p=!d&&u[1]>u[0]&&u[1]>u[2];!d&&!p&&u[2]>u[0]&&(u[2],u[1]);const f=e.width/A,g=p?e.height/c:e.height/h;return i[0]=Math.floor(e.width-(t[0]-n)*f),i[1]=Math.floor(e.height-(t[2]-l)*g),i[0]>=0&&i[0]<e.width&&i[1]>=0&&i[1]<=e.height}worldDirToStoreyMap(e,t,i){const s=this.viewer.camera,r=s.eye,o=s.look,n=d.subVec3(o,r,GP),a=s.worldUp,l=a[0]>a[1]&&a[0]>a[2],A=!l&&a[1]>a[0]&&a[1]>a[2];!l&&!A&&a[2]>a[0]&&(a[2],a[1]),l?(i[0]=n[1],i[1]=n[2]):A?(i[0]=n[0],i[1]=n[2]):(i[0]=n[0],i[1]=n[1]),d.normalizeVec2(i)}destroy(){this.viewer.scene.off(this._onModelLoaded),super.destroy()}}const KP=new Float64Array([0,0,1]),XP=new Float64Array(4);class JP{constructor(e){this.id=null,this._viewer=e.viewer,this._plugin=e,this._visible=!1,this._pos=d.vec3(),this._origin=d.vec3(),this._rtcPos=d.vec3(),this._baseDir=d.vec3(),this._rootNode=null,this._displayMeshes=null,this._affordanceMeshes=null,this._ignoreNextSectionPlaneDirUpdate=!1,this._createNodes(),this._bindEvents()}_setSectionPlane(e){this._sectionPlane&&(this._sectionPlane.off(this._onSectionPlanePos),this._sectionPlane.off(this._onSectionPlaneDir),this._onSectionPlanePos=null,this._onSectionPlaneDir=null,this._sectionPlane=null),e&&(this.id=e.id,this._setPos(e.pos),this._setDir(e.dir),this._sectionPlane=e,this._onSectionPlanePos=e.on("pos",(()=>{this._setPos(this._sectionPlane.pos)})),this._onSectionPlaneDir=e.on("dir",(()=>{this._ignoreNextSectionPlaneDirUpdate?this._ignoreNextSectionPlaneDirUpdate=!1:this._setDir(this._sectionPlane.dir)})))}get sectionPlane(){return this._sectionPlane}_setPos(e){this._pos.set(e),X(this._pos,this._origin,this._rtcPos),this._rootNode.origin=this._origin,this._rootNode.position=this._rtcPos}_setDir(e){this._baseDir.set(e),this._rootNode.quaternion=d.vec3PairToQuaternion(KP,e,XP)}_setSectionPlaneDir(e){this._sectionPlane&&(this._ignoreNextSectionPlaneDirUpdate=!0,this._sectionPlane.dir=e)}setVisible(e=!0){if(this._visible!==e){var t;for(t in this._visible=e,this._displayMeshes)this._displayMeshes.hasOwnProperty(t)&&(this._displayMeshes[t].visible=e);if(!e)for(t in this._affordanceMeshes)this._affordanceMeshes.hasOwnProperty(t)&&(this._affordanceMeshes[t].visible=e)}}getVisible(){return this._visible}setCulled(e){var t;for(t in this._displayMeshes)this._displayMeshes.hasOwnProperty(t)&&(this._displayMeshes[t].culled=e);if(!e)for(t in this._affordanceMeshes)this._affordanceMeshes.hasOwnProperty(t)&&(this._affordanceMeshes[t].culled=e)}_createNodes(){const e=!1,t=this._viewer.scene,i=.01;this._rootNode=new Sr(t,{position:[0,0,0],scale:[5,5,5]});const s=this._rootNode,r={arrowHead:new zt(s,mr({radiusTop:.001,radiusBottom:.07,radialSegments:32,heightSegments:1,height:.2,openEnded:!1})),arrowHeadBig:new zt(s,mr({radiusTop:.001,radiusBottom:.09,radialSegments:32,heightSegments:1,height:.25,openEnded:!1})),axis:new zt(s,mr({radiusTop:i,radiusBottom:i,radialSegments:20,heightSegments:1,height:1,openEnded:!1}))},o={red:new Yt(s,{diffuse:[1,0,0],emissive:[1,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),green:new Yt(s,{diffuse:[0,1,0],emissive:[1,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),blue:new Yt(s,{diffuse:[0,0,1],emissive:[1,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),highlightRed:new qt(s,{edges:!1,fill:!0,fillColor:[1,0,0],fillAlpha:.6})};this._displayMeshes={plane:s.addChild(new fr(s,{geometry:new zt(s,{primitive:"triangles",positions:[.5,.5,0,.5,-.5,0,-.5,-.5,0,-.5,.5,0,.5,.5,-0,.5,-.5,-0,-.5,-.5,-0,-.5,.5,-0],indices:[0,1,2,2,3,0]}),material:new Yt(s,{emissive:[0,0,0],diffuse:[0,0,0],backfaces:!0}),opacity:.6,ghosted:!0,pickable:!1,collidable:!0,clippable:!1,visible:!1,scale:[2.4,2.4,1]}),e),planeFrame:s.addChild(new fr(s,{geometry:new zt(s,no({center:[0,0,0],radius:1.7,tube:.02,radialSegments:4,tubeSegments:4,arc:2*Math.PI})),material:new Yt(s,{emissive:[0,0,0],diffuse:[0,0,0],specular:[0,0,0],shininess:0}),pickable:!1,collidable:!1,clippable:!1,visible:!1,scale:[1,1,.1],rotation:[0,0,45]}),e),center:s.addChild(new fr(s,{geometry:new zt(s,_r({radius:.05})),material:o.center,pickable:!1,collidable:!0,clippable:!1,visible:!1}),e),zAxisArrow:s.addChild(new fr(s,{geometry:r.arrowHead,material:o.blue,matrix:function(){const e=d.translateMat4c(0,1.1,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[.8,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1}),e),zShaft:s.addChild(new fr(s,{geometry:r.axis,material:o.blue,matrix:function(){const e=d.translateMat4c(0,.5,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[1,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),clippable:!1,pickable:!1,collidable:!0,visible:!1}),e)},this._affordanceMeshes={planeFrame:s.addChild(new fr(s,{geometry:new zt(s,no({center:[0,0,0],radius:2,tube:i,radialSegments:4,tubeSegments:4,arc:2*Math.PI})),material:new Yt(s,{ambient:[1,1,1],diffuse:[0,0,0],emissive:[1,1,0]}),highlighted:!0,highlightMaterial:new qt(s,{edges:!1,filled:!0,fillColor:[1,1,0],fillAlpha:1}),pickable:!1,collidable:!1,clippable:!1,visible:!1,scale:[1,1,1],rotation:[0,0,45]}),e),zAxisArrow:s.addChild(new fr(s,{geometry:r.arrowHeadBig,material:o.blue,matrix:function(){const e=d.translateMat4c(0,1.1,0,d.identityMat4()),t=d.rotationMat4v(-90*d.DEGTORAD,[.8,0,0],d.identityMat4());return d.mulMat4(t,e,d.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1}),e)}}_bindEvents(){const e=this._rootNode,t=d.vec2(),i=this._viewer.camera,s=this._viewer.scene;let r=0,o=!1;{const t=d.vec3([0,0,0]);let n=-1;this._onCameraViewMatrix=s.camera.on("viewMatrix",(()=>{})),this._onCameraProjMatrix=s.camera.on("projMatrix",(()=>{})),this._onSceneTick=s.on("tick",(()=>{o=!1;const l=Math.abs(d.lenVec3(d.subVec3(s.camera.eye,this._pos,t)));if(l!==n&&"perspective"===i.projection){const t=.07*(Math.tan(i.perspective.fov*d.DEGTORAD)*l);e.scale=[t,t,t],n=l}if("ortho"===i.projection){const t=i.ortho.scale/10;e.scale=[t,t,t],n=l}0!==r&&(a(r),r=0)}))}const n=function(){const e=new Float64Array(2);return function(t){if(t){for(var i=t.target,s=0,r=0;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;e[0]=t.pageX-s,e[1]=t.pageY-r}else t=window.event,e[0]=t.x,e[1]=t.y;return e}}(),a=e=>{const t=this._sectionPlane.pos,i=this._sectionPlane.dir;d.addVec3(t,d.mulVec3Scalar(i,.1*e*this._plugin.getDragSensitivity(),d.vec3())),this._sectionPlane.pos=t};{let e=!1;this._plugin._controlElement.addEventListener("mousedown",this._canvasMouseDownListener=i=>{if(i.preventDefault(),this._visible&&(this._viewer.cameraControl.pointerEnabled=!1,1===i.which)){e=!0;var s=n(i);t[0]=s[0],t[1]=s[1]}}),this._plugin._controlElement.addEventListener("mousemove",this._canvasMouseMoveListener=i=>{if(!this._visible)return;if(!e)return;if(o)return;var s=n(i);const r=s[0],l=s[1];a(l-t[1]),t[0]=r,t[1]=l}),this._plugin._controlElement.addEventListener("mouseup",this._canvasMouseUpListener=t=>{this._visible&&(this._viewer.cameraControl.pointerEnabled=!0,e&&(t.which,e=!1))}),this._plugin._controlElement.addEventListener("wheel",this._canvasWheelListener=e=>{this._visible&&(r+=Math.max(-1,Math.min(1,40*-e.deltaY)))})}{let e,t,i=null;this._plugin._controlElement.addEventListener("touchstart",this._handleTouchStart=t=>{t.stopPropagation(),t.preventDefault(),this._visible&&(e=t.touches[0].clientY,i=e,r=0)}),this._plugin._controlElement.addEventListener("touchmove",this._handleTouchMove=e=>{e.stopPropagation(),e.preventDefault(),this._visible&&(o||(o=!0,t=e.touches[0].clientY,null!==i&&(r+=t-i),i=t))}),this._plugin._controlElement.addEventListener("touchend",this._handleTouchEnd=i=>{i.stopPropagation(),i.preventDefault(),this._visible&&(e=null,t=null,r=0)})}}_destroy(){this._unbindEvents(),this._destroyNodes()}_unbindEvents(){const e=this._viewer,t=e.scene,i=t.canvas.canvas,s=e.camera,r=this._plugin._controlElement;t.off(this._onSceneTick),i.removeEventListener("mousedown",this._canvasMouseDownListener),i.removeEventListener("mousemove",this._canvasMouseMoveListener),i.removeEventListener("mouseup",this._canvasMouseUpListener),i.removeEventListener("wheel",this._canvasWheelListener),r.removeEventListener("touchstart",this._handleTouchStart),r.removeEventListener("touchmove",this._handleTouchMove),r.removeEventListener("touchend",this._handleTouchEnd),s.off(this._onCameraViewMatrix),s.off(this._onCameraProjMatrix)}_destroyNodes(){this._setSectionPlane(null),this._rootNode.destroy(),this._displayMeshes={},this._affordanceMeshes={}}}class YP{constructor(e,t,i){this.id=i.id,this._sectionPlane=i,this._mesh=new fr(t,{id:i.id,geometry:new zt(t,Wt({xSize:.5,ySize:.5,zSize:.001})),material:new Yt(t,{emissive:[1,1,1],diffuse:[0,0,0],backfaces:!1}),edgeMaterial:new ei(t,{edgeColor:[0,0,0],edgeAlpha:1,edgeWidth:1}),highlightMaterial:new qt(t,{fill:!0,fillColor:[.5,1,.5],fillAlpha:.7,edges:!0,edgeColor:[0,0,0],edgeAlpha:1,edgeWidth:1}),selectedMaterial:new qt(t,{fill:!0,fillColor:[0,0,1],fillAlpha:.7,edges:!0,edgeColor:[1,0,0],edgeAlpha:1,edgeWidth:1}),highlighted:!0,scale:[3,3,3],position:[0,0,0],rotation:[0,0,0],opacity:.3,edges:!0});{const e=d.vec3([0,0,0]),t=d.vec3(),i=d.vec3([0,0,1]),s=d.vec4(4),r=d.vec3(),o=()=>{const o=this._sectionPlane.scene.center,n=[-this._sectionPlane.dir[0],-this._sectionPlane.dir[1],-this._sectionPlane.dir[2]];d.subVec3(o,this._sectionPlane.pos,e);const a=-d.dotVec3(n,e);d.normalizeVec3(n),d.mulVec3Scalar(n,a,t);const l=d.vec3PairToQuaternion(i,this._sectionPlane.dir,s);r[0]=.1*t[0],r[1]=.1*t[1],r[2]=.1*t[2],this._mesh.quaternion=l,this._mesh.position=r};this._onSectionPlanePos=this._sectionPlane.on("pos",o),this._onSectionPlaneDir=this._sectionPlane.on("dir",o)}this._highlighted=!1,this._selected=!1}setHighlighted(e){this._highlighted=!!e,this._mesh.highlighted=this._highlighted,this._mesh.highlightMaterial.fillColor=e?[0,.7,0]:[0,0,0]}getHighlighted(){return this._highlighted}setSelected(e){this._selected=!!e,this._mesh.edgeMaterial.edgeWidth=e?3:1,this._mesh.highlightMaterial.edgeWidth=e?3:1}getSelected(){return this._selected}destroy(){this._sectionPlane.off(this._onSectionPlanePos),this._sectionPlane.off(this._onSectionPlaneDir),this._mesh.destroy()}}class ZP{constructor(e,t){if(!(t.onHoverEnterPlane&&t.onHoverLeavePlane&&t.onClickedNothing&&t.onClickedPlane))throw"Missing config(s): onHoverEnterPlane, onHoverLeavePlane, onClickedNothing || onClickedPlane";this.plugin=e,this._viewer=e.viewer,this._onHoverEnterPlane=t.onHoverEnterPlane,this._onHoverLeavePlane=t.onHoverLeavePlane,this._onClickedNothing=t.onClickedNothing,this._onClickedPlane=t.onClickedPlane,this._visible=!0,this._planes={},this._canvas=t.overviewCanvas,this._scene=new hi(this._viewer,{canvasId:this._canvas.id,transparent:!0}),this._scene.clearLights(),new St(this._scene,{dir:[.4,-.4,.8],color:[.8,1,1],intensity:1,space:"view"}),new St(this._scene,{dir:[-.8,-.3,-.4],color:[.8,.8,.8],intensity:1,space:"view"}),new St(this._scene,{dir:[.8,-.6,-.8],color:[1,1,1],intensity:1,space:"view"}),this._scene.camera,this._scene.camera.perspective.fov=70,this._zUp=!1;{const e=this._scene.camera,t=d.rotationMat4c(-90*d.DEGTORAD,1,0,0),i=d.vec3(),s=d.vec3(),r=d.vec3();this._synchCamera=()=>{const o=this._viewer.camera.eye,n=this._viewer.camera.look,a=this._viewer.camera.up;d.mulVec3Scalar(d.normalizeVec3(d.subVec3(o,n,i)),7),this._zUp?(d.transformVec3(t,i,s),d.transformVec3(t,a,r),e.look=[0,0,0],e.eye=d.transformVec3(t,i,s),e.up=d.transformPoint3(t,a,r)):(e.look=[0,0,0],e.eye=i,e.up=a)}}this._onViewerCameraMatrix=this._viewer.camera.on("matrix",this._synchCamera),this._onViewerCameraWorldAxis=this._viewer.camera.on("worldAxis",this._synchCamera),this._onViewerCameraFOV=this._viewer.camera.perspective.on("fov",(e=>{this._scene.camera.perspective.fov=e}));var i=null;this._onInputMouseMove=this._scene.input.on("mousemove",(e=>{const t=this._scene.pick({canvasPos:e});if(t){if(!i||t.entity.id!==i.id){if(i){this._planes[i.id]&&this._onHoverLeavePlane(i.id)}i=t.entity;this._planes[i.id]&&this._onHoverEnterPlane(i.id)}}else i&&(this._onHoverLeavePlane(i.id),i=null)})),this._scene.canvas.canvas.addEventListener("mouseup",this._onCanvasMouseUp=()=>{if(i){this._planes[i.id]&&this._onClickedPlane(i.id)}else this._onClickedNothing()}),this._scene.canvas.canvas.addEventListener("mouseout",this._onCanvasMouseOut=()=>{i&&(this._onHoverLeavePlane(i.id),i=null)}),this.setVisible(t.overviewVisible)}addSectionPlane(e){this._planes[e.id]=new YP(this,this._scene,e)}setPlaneHighlighted(e,t){const i=this._planes[e];i&&i.setHighlighted(t)}setPlaneSelected(e,t){const i=this._planes[e];i&&i.setSelected(t)}removeSectionPlane(e){const t=this._planes[e.id];t&&(t.destroy(),delete this._planes[e.id])}setVisible(e=!0){this._visible=e,this._canvas.style.visibility=e?"visible":"hidden"}getVisible(){return this._visible}destroy(){this._viewer.camera.off(this._onViewerCameraMatrix),this._viewer.camera.off(this._onViewerCameraWorldAxis),this._viewer.camera.perspective.off(this._onViewerCameraFOV),this._scene.input.off(this._onInputMouseMove),this._scene.canvas.canvas.removeEventListener("mouseup",this._onCanvasMouseUp),this._scene.canvas.canvas.removeEventListener("mouseout",this._onCanvasMouseOut),this._scene.destroy()}}const qP=d.AABB3(),$P=d.vec3();class eC extends z{constructor(e,t={}){if(super("FaceAlignedSectionPlanesPlugin",e),this._freeControls=[],this._sectionPlanes=e.scene.sectionPlanes,this._controls={},this._shownControlId=null,this._dragSensitivity=t.dragSensitivity||1,null!==t.overviewCanvasId&&void 0!==t.overviewCanvasId){const e=document.getElementById(t.overviewCanvasId);e?this._overview=new ZP(this,{overviewCanvas:e,visible:t.overviewVisible,onHoverEnterPlane:e=>{this._overview.setPlaneHighlighted(e,!0)},onHoverLeavePlane:e=>{this._overview.setPlaneHighlighted(e,!1)},onClickedPlane:e=>{if(this.getShownControl()===e)return void this.hideControl();this.showControl(e);const t=this.sectionPlanes[e].pos;qP.set(this.viewer.scene.aabb),d.getAABB3Center(qP,$P),qP[0]+=t[0]-$P[0],qP[1]+=t[1]-$P[1],qP[2]+=t[2]-$P[2],qP[3]+=t[0]-$P[0],qP[4]+=t[1]-$P[1],qP[5]+=t[2]-$P[2],this.viewer.cameraFlight.flyTo({aabb:qP,fitFOV:65})},onClickedNothing:()=>{this.hideControl()}}):this.warn("Can't find overview canvas: '"+t.overviewCanvasId+"' - will create plugin without overview")}null===t.controlElementId||void 0===t.controlElementId?this.error("Parameter expected: controlElementId"):(this._controlElement=document.getElementById(t.controlElementId),this._controlElement||this.warn("Can't find control element: '"+t.controlElementId+"' - will create plugin without control element")),this._onSceneSectionPlaneCreated=e.scene.on("sectionPlaneCreated",(e=>{this._sectionPlaneCreated(e)}))}setDragSensitivity(e){this._dragSensitivity=e||1}getDragSensitivity(){return this._dragSensitivity}setOverviewVisible(e){this._overview&&this._overview.setVisible(e)}getOverviewVisible(){if(this._overview)return this._overview.getVisible()}get sectionPlanes(){return this._sectionPlanes}createSectionPlane(e={}){void 0!==e.id&&null!==e.id&&this.viewer.scene.components[e.id]&&(this.error("Viewer component with this ID already exists: "+e.id),delete e.id);return new Br(this.viewer.scene,{id:e.id,pos:e.pos,dir:e.dir,active:!0})}_sectionPlaneCreated(e){const t=this._freeControls.length>0?this._freeControls.pop():new JP(this);t._setSectionPlane(e),t.setVisible(!1),this._controls[e.id]=t,this._overview&&this._overview.addSectionPlane(e),e.once("destroyed",(()=>{this._sectionPlaneDestroyed(e)}))}flipSectionPlanes(){const e=this.viewer.scene.sectionPlanes;for(let t in e){e[t].flipDir()}}showControl(e){const t=this._controls[e];t?(this.hideControl(),t.setVisible(!0),this._overview&&this._overview.setPlaneSelected(e,!0),this._shownControlId=e):this.error("Control not found: "+e)}getShownControl(){return this._shownControlId}hideControl(){for(let e in this._controls)this._controls.hasOwnProperty(e)&&(this._controls[e].setVisible(!1),this._overview&&this._overview.setPlaneSelected(e,!1));this._shownControlId=null}destroySectionPlane(e){let t=this.viewer.scene.sectionPlanes[e];t?(this._sectionPlaneDestroyed(t),t.destroy(),e===this._shownControlId&&(this._shownControlId=null)):this.error("SectionPlane not found: "+e)}_sectionPlaneDestroyed(e){this._overview&&this._overview.removeSectionPlane(e);const t=this._controls[e.id];t&&(t.setVisible(!1),t._setSectionPlane(null),delete this._controls[e.id],this._freeControls.push(t))}clear(){const e=Object.keys(this._sectionPlanes);for(let t=0,i=e.length;t<i;t++)this.destroySectionPlane(e[t])}send(e,t){switch(e){case"snapshotStarting":for(let e in this._controls)this._controls.hasOwnProperty(e)&&this._controls[e].setCulled(!0);break;case"snapshotFinished":for(let e in this._controls)this._controls.hasOwnProperty(e)&&this._controls[e].setCulled(!1);break;case"clearSectionPlanes":this.clear()}}destroy(){this.clear(),this._overview&&this._overview.destroy(),this._destroyFreeControls(),super.destroy()}_destroyFreeControls(){let e=this._freeControls.pop();for(;e;)e._destroy(),e=this._freeControls.pop();this.viewer.scene.off(this._onSceneSectionPlaneCreated)}}class tC extends z{constructor(e){super("skyboxes",e),this.skyboxes={}}send(e,t){if("clear"===e)this.clear()}createSkybox(e,t){if(this.viewer.scene.components[e])return this.error("Component with this ID already exists: "+e),this;var i=new wu(this.viewer.scene,{id:e,pos:t.pos,dir:t.dir,active:!0});return this.skyboxes[e]=i,i}destroySkybox(e){var t=this.skyboxes[e];t?t.destroy():this.error("Skybox not found: "+e)}clear(){for(var e=Object.keys(this.viewer.scene.skyboxes),t=0,i=e.length;t<i;t++)this.destroySkybox(e[t])}destroy(){this.clear(),super.clear()}}class iC{getSTL(e,t,i){const s=new XMLHttpRequest;s.overrideMimeType("application/json"),s.open("GET",e,!0),s.responseType="arraybuffer",s.onreadystatechange=function(){4===s.readyState&&(200===s.status?t(s.response):i(s.statusText))},s.send(null)}}const sC=d.vec3();class rC{load(e,t,i,s,r,o){s=s||{};const n=e.viewer.scene.canvas.spinner;n.processes++,e.dataSource.getSTL(i,(function(i){!function(e,t,i,s){try{const r=hC(i);oC(r)?nC(e,r,t,s):aC(e,AC(i),t,s)}catch(e){t.fire("error",e)}}(e,t,i,s);try{const o=hC(i);oC(o)?nC(e,o,t,s):aC(e,AC(i),t,s),n.processes--,I.scheduleTask((function(){t.fire("loaded",!0,!1)})),r&&r()}catch(i){n.processes--,e.error(i),o&&o(i),t.fire("error",i)}}),(function(i){n.processes--,e.error(i),o&&o(i),t.fire("error",i)}))}parse(e,t,i,s){const r=e.viewer.scene.canvas.spinner;r.processes++;try{const o=hC(i);oC(o)?nC(e,o,t,s):aC(e,AC(i),t,s),r.processes--,I.scheduleTask((function(){t.fire("loaded",!0,!1)}))}catch(e){r.processes--,t.fire("error",e)}}}function oC(e){const t=new DataView(e);if(84+50*t.getUint32(80,!0)===t.byteLength)return!0;const i=[115,111,108,105,100];for(var s=0;s<5;s++)if(i[s]!==t.getUint8(s,!1))return!0;return!1}function nC(e,t,i,s){const r=new DataView(t),o=r.getUint32(80,!0);let n,a,l,A,h,c,u,d=!1,p=null,f=null,g=null,m=!1;for(let e=0;e<70;e++)1129270351===r.getUint32(e,!1)&&82===r.getUint8(e+4)&&61===r.getUint8(e+5)&&(d=!0,A=[],h=r.getUint8(e+6)/255,c=r.getUint8(e+7)/255,u=r.getUint8(e+8)/255,r.getUint8(e+9));const _=new Ur(i,{roughness:.5});let v=[],b=[],y=s.splitMeshes;for(let e=0;e<o;e++){let t=84+50*e,o=r.getFloat32(t,!0),B=r.getFloat32(t+4,!0),w=r.getFloat32(t+8,!0);if(d){let e=r.getUint16(t+48,!0);0==(32768&e)?(n=(31&e)/31,a=(e>>5&31)/31,l=(e>>10&31)/31):(n=h,a=c,l=u),(y&&n!==p||a!==f||l!==g)&&(null!==p&&(m=!0),p=n,f=a,g=l)}for(let e=1;e<=3;e++){let i=t+12*e;v.push(r.getFloat32(i,!0)),v.push(r.getFloat32(i+4,!0)),v.push(r.getFloat32(i+8,!0)),b.push(o,B,w),d&&A.push(n,a,l,1)}y&&m&&(lC(i,v,b,A,_,s),v=[],b=[],A=A?[]:null,m=!1)}v.length>0&&lC(i,v,b,A,_,s)}function aC(e,t,i,s){const r=/facet([\s\S]*?)endfacet/g;let o=0;const n=/[\s]+([+-]?(?:\d+.\d+|\d+.|\d+|.\d+)(?:[eE][+-]?\d+)?)/.source,a=new RegExp("vertex"+n+n+n,"g"),l=new RegExp("normal"+n+n+n,"g"),A=[],h=[];let c,u,d,p,f,g,m;for(;null!==(p=r.exec(t));){for(f=0,g=0,m=p[0];null!==(p=l.exec(m));)c=parseFloat(p[1]),u=parseFloat(p[2]),d=parseFloat(p[3]),g++;for(;null!==(p=a.exec(m));)A.push(parseFloat(p[1]),parseFloat(p[2]),parseFloat(p[3])),h.push(c,u,d),f++;1!==g&&e.error("Error in normal of face "+o),3!==f&&e.error("Error in positions of face "+o),o++}lC(i,A,h,null,new Ur(i,{roughness:.5}),s)}function lC(e,t,i,s,r,o){const n=new Int32Array(t.length/3);for(let e=0,t=n.length;e<t;e++)n[e]=e;i=i&&i.length>0?i:null,s=s&&s.length>0?s:null,o.smoothNormals&&d.faceToVertexNormals(t,i,o);const a=sC;J(t,t,a);const l=new zt(e,{primitive:"triangles",positions:t,normals:i,colors:s,indices:n}),A=new fr(e,{origin:0!==a[0]||0!==a[1]||0!==a[2]?a:null,geometry:l,material:r,edges:o.edges});e.addChild(A)}function AC(e){return"string"!=typeof e?function(e){if("undefined"!=typeof TextDecoder)return(new TextDecoder).decode(e);let t="";for(let i=0,s=e.length;i<s;i++)t+=String.fromCharCode(e[i]);return decodeURIComponent(escape(t))}(new Uint8Array(e)):e}function hC(e){if("string"==typeof e){const t=new Uint8Array(e.length);for(let i=0;i<e.length;i++)t[i]=255&e.charCodeAt(i);return t.buffer||t}return e}class cC extends z{constructor(e,t={}){super("STLLoader",e,t),this._sceneGraphLoader=new rC,this.dataSource=t.dataSource}set dataSource(e){this._dataSource=e||new iC}get dataSource(){return this._dataSource}load(e){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);const t=new Sr(this.viewer.scene,y.apply(e,{isModel:!0})),i=e.src,s=e.stl;return i||s?(i?this._sceneGraphLoader.load(this,t,i,e):this._sceneGraphLoader.parse(this,t,s,e),t):(this.error("load() param expected: either 'src' or 'stl'"),t)}}class uC{createRootNode(){return document.createElement("ul")}createNodeElement(e,t,i,s,r){const o=document.createElement("li");if(o.id=e.nodeId,e.xrayed&&o.classList.add("xrayed-node"),e.children.length>0){const i=document.createElement("a");i.href="#",i.id=`switch-${e.nodeId}`,i.textContent="+",i.classList.add("plus"),t&&i.addEventListener("click",t),o.appendChild(i)}const n=document.createElement("input");n.id=`checkbox-${e.nodeId}`,n.type="checkbox",n.checked=e.checked,n.style["pointer-events"]="all",i&&n.addEventListener("change",i),o.appendChild(n);const a=document.createElement("span");return a.textContent=e.title,o.appendChild(a),s&&(a.oncontextmenu=s),r&&(a.onclick=r),o}createDisabledNodeElement(e){const t=document.createElement("li"),i=document.createElement("a");i.href="#",i.textContent="!",i.classList.add("warn"),i.classList.add("warning"),t.appendChild(i);const s=document.createElement("span");return s.textContent=e,t.appendChild(s),t}addChildren(e,t){const i=document.createElement("ul");t.forEach((e=>{i.appendChild(e)})),e.parentElement.appendChild(i)}expand(e,t,i){e.classList.remove("plus"),e.classList.add("minus"),e.textContent="-",e.removeEventListener("click",t),e.addEventListener("click",i)}collapse(e,t,i){if(!e)return;const s=e.parentElement;if(!s)return;const r=s.querySelector("ul");r&&(s.removeChild(r),e.classList.remove("minus"),e.classList.add("plus"),e.textContent="+",e.removeEventListener("click",i),e.addEventListener("click",t))}isExpanded(e){return void 0!==e.parentElement.getElementsByTagName("li")[0]}getId(e){return e.parentElement.id}getIdFromCheckbox(e){return e.id.replace("checkbox-","")}getSwitchElement(e){return document.getElementById(`switch-${e}`)}isChecked(e){return e.checked}setCheckbox(e,t){const i=document.getElementById(`checkbox-${e}`);i&&t!==i.checked&&(i.checked=t)}setXRayed(e,t){const i=document.getElementById(e);i&&(t?i.classList.add("xrayed-node"):i.classList.remove("xrayed-node"))}setHighlighted(e,t){const i=document.getElementById(e);i&&(t?(i.scrollIntoView({block:"center"}),i.classList.add("highlighted-node")):i.classList.remove("highlighted-node"))}}const dC=[];class pC extends z{constructor(e,t={}){super("TreeViewPlugin",e),this.errors=[],this.valid=!0;const i=t.containerElement||document.getElementById(t.containerElementId);if(i instanceof HTMLElement){for(let e=0;;e++)if(!dC[e]){dC[e]=this,this._index=e,this._id=`tree-${e}`;break}if(this._containerElement=i,this._metaModels={},this._autoAddModels=!1!==t.autoAddModels,this._autoExpandDepth=t.autoExpandDepth||0,this._sortNodes=!1!==t.sortNodes,this._viewer=e,this._rootElement=null,this._muteSceneEvents=!1,this._muteTreeEvents=!1,this._rootNodes=[],this._objectNodes={},this._nodeNodes={},this._rootNames={},this._sortNodes=t.sortNodes,this._pruneEmptyNodes=t.pruneEmptyNodes,this._showListItemElementId=null,this._renderService=t.renderService||new uC,!this._renderService)throw new Error("TreeViewPlugin: no render service set");if(this._containerElement.oncontextmenu=e=>{e.preventDefault()},this._onObjectVisibility=this._viewer.scene.on("objectVisibility",(e=>{if(this._muteSceneEvents)return;const t=e.id,i=this._objectNodes[t];if(!i)return;const s=e.visible;if(!(s!==i.checked))return;this._muteTreeEvents=!0,i.checked=s,s?i.numVisibleEntities++:i.numVisibleEntities--,this._renderService.setCheckbox(i.nodeId,s);let r=i.parent;for(;r;)r.checked=s,s?r.numVisibleEntities++:r.numVisibleEntities--,this._renderService.setCheckbox(r.nodeId,r.numVisibleEntities>0),r=r.parent;this._muteTreeEvents=!1})),this._onObjectXrayed=this._viewer.scene.on("objectXRayed",(e=>{if(this._muteSceneEvents)return;const t=e.id,i=this._objectNodes[t];if(!i)return;this._muteTreeEvents=!0;const s=e.xrayed;s!==i.xrayed&&(i.xrayed=s,this._renderService.setXRayed(i.nodeId,s),this._muteTreeEvents=!1)})),this._switchExpandHandler=e=>{e.preventDefault(),e.stopPropagation();const t=e.target;this._expandSwitchElement(t)},this._switchCollapseHandler=e=>{e.preventDefault(),e.stopPropagation();const t=e.target;this._collapseSwitchElement(t)},this._checkboxChangeHandler=e=>{if(this._muteTreeEvents)return;this._muteSceneEvents=!0;const t=e.target,i=this._renderService.isChecked(t),s=this._renderService.getIdFromCheckbox(t),r=this._nodeNodes[s],o=this._viewer.scene.objects;let n=0;this._withNodeTree(r,(e=>{const t=e.objectId,s=o[t],r=0===e.children.length;e.numVisibleEntities=i?e.numEntities:0,r&&i!==e.checked&&n++,e.checked=i,this._renderService.setCheckbox(e.nodeId,i),s&&(s.visible=i)}));let a=r.parent;for(;a;)a.checked=i,i?a.numVisibleEntities+=n:a.numVisibleEntities-=n,this._renderService.setCheckbox(a.nodeId,a.numVisibleEntities>0),a=a.parent;this._muteSceneEvents=!1},this._hierarchy=t.hierarchy||"containment",this._autoExpandDepth=t.autoExpandDepth||0,this._autoAddModels){const e=Object.keys(this.viewer.metaScene.metaModels);for(let t=0,i=e.length;t<i;t++){const i=e[t];this.viewer.metaScene.metaModels[i].finalized&&this.addModel(i)}this.viewer.scene.on("modelLoaded",(e=>{this.viewer.metaScene.metaModels[e]&&this.addModel(e)}))}this.hierarchy=t.hierarchy}else this.error("Mandatory config expected: valid containerElementId or containerElement")}set hierarchy(e){"containment"!==(e=e||"containment")&&"storeys"!==e&&"types"!==e&&(this.error("Unsupported value for `hierarchy' - defaulting to 'containment'"),e="containment"),this._hierarchy!==e&&(this._hierarchy=e,this._createNodes())}get hierarchy(){return this._hierarchy}addModel(e,t={}){if(!this._containerElement)return;const i=this.viewer.scene.models[e];if(!i)throw"Model not found: "+e;const s=this.viewer.metaScene.metaModels[e];s?this._metaModels[e]?this.warn("Model already added: "+e):(this._metaModels[e]=s,t&&t.rootName&&(this._rootNames[e]=t.rootName),i.on("destroyed",(()=>{this.removeModel(i.id)})),this._createNodes()):this.error("MetaModel not found: "+e)}removeModel(e){if(!this._containerElement)return;this._metaModels[e]&&(this._rootNames[e]&&delete this._rootNames[e],delete this._metaModels[e],this._createNodes())}showNode(e){this.unShowNode();const t=this._objectNodes[e];if(!t)return;const i=t.nodeId,s=this._renderService.getSwitchElement(i);if(s)return this._expandSwitchElement(s),s.scrollIntoView(),!0;const r=[];r.unshift(t);let o=t.parent;for(;o;)r.unshift(o),o=o.parent;for(let e=0,t=r.length;e<t;e++){const t=this._renderService.getSwitchElement(r[e].nodeId);t&&this._expandSwitchElement(t)}this._renderService.setHighlighted(i,!0),this._showListItemElementId=i}unShowNode(){this._showListItemElementId&&(this._renderService.setHighlighted(this._showListItemElementId,!1),this._showListItemElementId=null)}expandToDepth(e){this.collapse();const t=(i,s)=>{if(s===e)return;const r=this._renderService.getSwitchElement(i.nodeId);if(r){this._expandSwitchElement(r);const e=i.children;for(var o=0,n=e.length;o<n;o++){const i=e[o];t(i,s+1)}}};for(let e=0,i=this._rootNodes.length;e<i;e++){const i=this._rootNodes[e];t(i,0)}}collapse(){for(let e=0,t=this._rootNodes.length;e<t;e++){const t=this._rootNodes[e].objectId;this._collapseNode(t)}}withNodeTree(e,t){t(e);const i=e.children;if(i)for(let e=0,s=i.length;e<s;e++)this.withNodeTree(i[e],t)}destroy(){this._containerElement&&(this._metaModels={},this._rootElement&&!this._destroyed&&(this._rootElement.parentNode.removeChild(this._rootElement),this._viewer.scene.off(this._onObjectVisibility),this._destroyed=!0),delete dC[this._index],super.destroy())}_createNodes(){this._rootElement&&(this._rootElement.parentNode.removeChild(this._rootElement),this._rootElement=null),this._rootNodes=[],this._objectNodes={},this._nodeNodes={},this._validate(),this.valid||"storeys"!==this._hierarchy?this._createEnabledNodes():this._createDisabledNodes()}_validate(){if(this.errors=[],"storeys"===this._hierarchy)this.valid=this._validateMetaModelForStoreysHierarchy();else this.valid=this._rootNodes.length>0;return this.valid}_validateMetaModelForStoreysHierarchy(e=0,t,i){return!0}_createEnabledNodes(){switch(this._pruneEmptyNodes&&this._findEmptyNodes(),this._hierarchy){case"storeys":this._createStoreysNodes(),0===this._rootNodes.length&&this.error("Failed to build storeys hierarchy");break;case"types":this._createTypesNodes();break;default:this._createContainmentNodes()}this._sortNodes&&this._doSortNodes(),this._synchNodesToEntities(),this._createTrees(),this.expandToDepth(this._autoExpandDepth)}_createDisabledNodes(){const e=this._renderService.createRootNode();this._rootElement=e,this._containerElement.appendChild(e);const t=this._viewer.metaScene.rootMetaObjects;for(let i in t){const s=t[i],r=s.type,o=s.name,n=o&&""!==o&&"Undefined"!==o&&"Default"!==o?o:r,a=this._renderService.createDisabledNodeElement(n);e.appendChild(a)}}_findEmptyNodes(){const e=this._viewer.metaScene.rootMetaObjects;for(let t in e)this._findEmptyNodes2(e[t])}_findEmptyNodes2(e,t=0){const i=this.viewer.scene,s=e.children,r=e.id,o=i.objects[r];if(e._countEntities=0,o&&e._countEntities++,s)for(let t=0,i=s.length;t<i;t++){const i=s[t];i._countEntities=this._findEmptyNodes2(i),e._countEntities+=i._countEntities}return e._countEntities}_createStoreysNodes(){const e=this._viewer.metaScene.rootMetaObjects;for(let t in e)this._createStoreysNodes2(e[t],null,null,null)}_createStoreysNodes2(e,t,i,s){if(this._pruneEmptyNodes&&0===e._countEntities)return;const r=e.type,o=e.name,n=e.children,a=e.id;if("IfcBuilding"===r)t={nodeId:`${this._id}-${a}`,objectId:a,title:0===e.metaModels.length?"na":this._rootNames[e.metaModels[0].id]||(o&&""!==o&&"Undefined"!==o&&"Default"!==o?o:r),type:r,parent:null,numEntities:0,numVisibleEntities:0,checked:!1,xrayed:!1,children:[]},this._rootNodes.push(t),this._objectNodes[t.objectId]=t,this._nodeNodes[t.nodeId]=t;else if("IfcBuildingStorey"===r){if(!t)return void this.error("Failed to build storeys hierarchy for model '"+this.metaModel.id+"' - model does not have an IfcBuilding object, or is not an IFC model");i={nodeId:`${this._id}-${a}`,objectId:a,title:o&&""!==o&&"Undefined"!==o&&"Default"!==o?o:r,type:r,parent:t,numEntities:0,numVisibleEntities:0,checked:!1,xrayed:!1,children:[]},t.children.push(i),this._objectNodes[i.objectId]=i,this._nodeNodes[i.nodeId]=i,s={}}else if(i){if(this._viewer.scene.objects[a]){let e=(s=s||{})[r];e||(e={nodeId:`${this._id}-${i.objectId}-${r}`,objectId:`${i.objectId}-${r}`,title:r,type:r,parent:i,numEntities:0,numVisibleEntities:0,checked:!1,xrayed:!1,children:[]},i.children.push(e),this._objectNodes[e.objectId]=e,this._nodeNodes[e.nodeId]=e,s[r]=e);const t={nodeId:`${this._id}-${a}`,objectId:a,title:o&&""!==o&&"Undefined"!==o&&"Default"!==o?o:r,type:r,parent:e,numEntities:0,numVisibleEntities:0,checked:!1,xrayed:!1,children:[]};e.children.push(t),this._objectNodes[t.objectId]=t,this._nodeNodes[t.nodeId]=t}}if(n)for(let e=0,r=n.length;e<r;e++){const r=n[e];this._createStoreysNodes2(r,t,i,s)}}_createTypesNodes(){const e=this._viewer.metaScene.rootMetaObjects;for(let t in e)this._createTypesNodes2(e[t],null,null)}_createTypesNodes2(e,t,i){if(this._pruneEmptyNodes&&0===e._countEntities)return;const s=e.type,r=e.name,o=e.children,n=e.id;if(e.parent){if(t){if(this._viewer.scene.objects[n]){let e=i[s];e||(e={nodeId:`${this._id}-${t.objectId}-${s}`,objectId:`${t.objectId}-${s}`,title:s,type:s,parent:t,numEntities:0,numVisibleEntities:0,checked:!1,xrayed:!1,children:[]},t.children.push(e),this._objectNodes[e.objectId]=e,this._nodeNodes[e.nodeId]=e,i[s]=e);const o={nodeId:`${this._id}-${n}`,objectId:n,title:r&&""!==r&&"Default"!==r?r:s,type:s,parent:e,numEntities:0,numVisibleEntities:0,checked:!1,xrayed:!1,children:[]};e.children.push(o),this._objectNodes[o.objectId]=o,this._nodeNodes[o.nodeId]=o}}}else t={nodeId:`${this._id}-${n}`,objectId:n,title:0===e.metaModels.length?"na":this._rootNames[e.metaModels[0].id]||(r&&""!==r&&"Undefined"!==r&&"Default"!==r?r:s),type:s,parent:null,numEntities:0,numVisibleEntities:0,checked:!1,xrayed:!1,children:[]},this._rootNodes.push(t),this._objectNodes[t.objectId]=t,this._nodeNodes[t.nodeId]=t,i={};if(o)for(let e=0,s=o.length;e<s;e++){const s=o[e];this._createTypesNodes2(s,t,i)}}_createContainmentNodes(){const e=this._viewer.metaScene.rootMetaObjects;for(let t in e)this._createContainmentNodes2(e[t],null)}_createContainmentNodes2(e,t){if(this._pruneEmptyNodes&&0===e._countEntities)return;const i=e.type,s=e.name||i,r=e.children,o=e.id,n={nodeId:`${this._id}-${o}`,objectId:o,title:t?s&&""!==s&&"Undefined"!==s&&"Default"!==s?s:i:0===e.metaModels.length?"na":this._rootNames[e.metaModels[0].id]||s,type:i,parent:t,numEntities:0,numVisibleEntities:0,checked:!1,xrayed:!1,children:[]};if(t?t.children.push(n):this._rootNodes.push(n),this._objectNodes[n.objectId]=n,this._nodeNodes[n.nodeId]=n,r)for(let e=0,t=r.length;e<t;e++){const t=r[e];this._createContainmentNodes2(t,n)}}_doSortNodes(){for(let e=0,t=this._rootNodes.length;e<t;e++){const t=this._rootNodes[e];this._sortChildren(t)}}_sortChildren(e){const t=e.children;if(t&&0!==t.length){"storeys"===this._hierarchy&&"IfcBuilding"===e.type?t.sort(this._getSpatialSortFunc()):t.sort(this._alphaSortFunc);for(let e=0,i=t.length;e<i;e++){const i=t[e];this._sortChildren(i)}}}_getSpatialSortFunc(){const e=this.viewer,t=e.scene,i=t.camera,s=e.metaScene;return this._spatialSortFunc||(this._spatialSortFunc=(e,r)=>{e.aabb&&r.aabb||(e.aabb||(e.aabb=t.getAABB(s.getObjectIDsInSubtree(e.objectId))),r.aabb||(r.aabb=t.getAABB(s.getObjectIDsInSubtree(r.objectId))));let o=0;return o=i.xUp?0:i.yUp?1:2,e.aabb[o]>r.aabb[o]?-1:e.aabb[o]<r.aabb[o]?1:0})}_alphaSortFunc(e,t){const i=e.title.toUpperCase(),s=t.title.toUpperCase();return i<s?-1:i>s?1:0}_synchNodesToEntities(){const e=Object.keys(this.viewer.metaScene.metaObjects),t=this._viewer.metaScene.metaObjects,i=this._viewer.scene.objects;for(let s=0,r=e.length;s<r;s++){const r=e[s];if(t[r]){const e=this._objectNodes[r];if(e){const t=i[r];if(t){const i=t.visible;e.numEntities=1,e.xrayed=t.xrayed,i?(e.numVisibleEntities=1,e.checked=!0):(e.numVisibleEntities=0,e.checked=!1);let s=e.parent;for(;s;)s.numEntities++,i&&(s.numVisibleEntities++,s.checked=!0),s=s.parent}}}}}_withNodeTree(e,t){t(e);const i=e.children;if(i)for(let e=0,s=i.length;e<s;e++)this._withNodeTree(i[e],t)}_createTrees(){if(0===this._rootNodes.length)return;const e=this._rootNodes.map((e=>this._createNodeElement(e))),t=this._renderService.createRootNode();e.forEach((e=>{t.appendChild(e)})),this._containerElement.appendChild(t),this._rootElement=t}_createNodeElement(e){return this._renderService.createNodeElement(e,this._switchExpandHandler,this._checkboxChangeHandler,(t=>{this.fire("contextmenu",{event:t,viewer:this._viewer,treeViewPlugin:this,treeViewNode:e}),t.preventDefault()}),(t=>{this.fire("nodeTitleClicked",{event:t,viewer:this._viewer,treeViewPlugin:this,treeViewNode:e}),t.preventDefault()}))}_expandSwitchElement(e){if(this._renderService.isExpanded(e))return;const t=this._renderService.getId(e),i=this._nodeNodes[t].children.map((e=>this._createNodeElement(e)));this._renderService.addChildren(e,i),this._renderService.expand(e,this._switchExpandHandler,this._switchCollapseHandler)}_collapseNode(e){const t=this._renderService.getSwitchElement(e);this._collapseSwitchElement(t)}_collapseSwitchElement(e){this._renderService.collapse(e,this._switchExpandHandler,this._switchCollapseHandler)}}class fC{constructor(e){this._scene=e,this._objects=[],this._objectsViewCulled=[],this._objectsDetailCulled=[],this._objectsChanged=[],this._objectsChangedList=[],this._modelInfos={},this._numObjects=0,this._lenObjectsChangedList=0,this._dirty=!0,this._onModelLoaded=e.on("modelLoaded",(t=>{const i=e.models[t];i&&this._addModel(i)})),this._onTick=e.on("tick",(()=>{this._dirty&&this._build(),this._applyChanges()}))}_addModel(e){const t={model:e,onDestroyed:e.on("destroyed",(()=>{this._removeModel(e)}))};this._modelInfos[e.id]=t,this._dirty=!0}_removeModel(e){const t=this._modelInfos[e.id];t&&(t.model.off(t.onDestroyed),delete this._modelInfos[e.id],this._dirty=!0)}_build(){if(!this._dirty)return;this._applyChanges();const e=this._scene.objects;for(let e=0;e<this._numObjects;e++)this._objects[e]=null;this._numObjects=0;for(let t in e){const i=e[t];this._objects[this._numObjects++]=i}this._lenObjectsChangedList=0,this._dirty=!1}_applyChanges(){if(this._lenObjectsChangedList>0){for(let e=0;e<this._lenObjectsChangedList;e++){const t=this._objectsChangedList[e],i=this._objects[t],s=this._objectsViewCulled[t],r=this._objectsDetailCulled[t],o=s||r;i.culled=o,this._objectsChanged[t]=!1}this._lenObjectsChangedList=0}}get objects(){return this._dirty&&this._build(),this._objects}get numObjects(){return this._dirty&&this._build(),this._numObjects}setObjectViewCulled(e,t){this._dirty&&this._build(),this._objectsViewCulled[e]!==t&&(this._objectsViewCulled[e]=t,this._objectsChanged[e]||(this._objectsChanged[e]=!0,this._objectsChangedList[this._lenObjectsChangedList++]=e))}setObjectDetailCulled(e,t){this._dirty&&this._build(),this._objectsDetailCulled[e]!==t&&(this._objectsDetailCulled[e]=t,this._objectsChanged[e]||(this._objectsChanged[e]=!0,this._objectsChangedList[this._lenObjectsChangedList++]=e))}_destroy(){this._clear(),this._scene.off(this._onModelLoaded),this._scene.off(this._onTick)}_clear(){for(let e in this._modelInfos){const t=this._modelInfos[e];t.model.off(t.onDestroyed)}this._modelInfos={},this._dirty=!0}}const gC={};const mC=new Float32Array(3);class _C extends z{constructor(e,t={}){super("ViewCull",e),this._objectCullStates=function(e){const t=e.id;let i=gC[t];return i||(i=new fC(e),gC[t]=i,e.on("destroyed",(()=>{delete gC[t],i._destroy()}))),i}(e.scene),this._maxTreeDepth=t.maxTreeDepth||8,this._modelInfos={},this._frustum=new N,this._kdRoot=null,this._frustumDirty=!1,this._kdTreeDirty=!1,this._onViewMatrix=e.scene.camera.on("viewMatrix",(()=>{this._frustumDirty=!0})),this._onProjMatrix=e.scene.camera.on("projMatMatrix",(()=>{this._frustumDirty=!0})),this._onModelLoaded=e.scene.on("modelLoaded",(e=>{const t=this.viewer.scene.models[e];t&&this._addModel(t)})),this._onSceneTick=e.scene.on("tick",(()=>{this._doCull()}))}set enabled(e){this._enabled=e}get enabled(){return this._enabled}_addModel(e){const t={model:e,onDestroyed:e.on("destroyed",(()=>{this._removeModel(e)}))};this._modelInfos[e.id]=t,this._kdTreeDirty=!0}_removeModel(e){const t=this._modelInfos[e.id];t&&(t.model.off(t.onDestroyed),delete this._modelInfos[e.id],this._kdTreeDirty=!0)}_doCull(){const e=this._frustumDirty||this._kdTreeDirty;if(this._frustumDirty&&this._buildFrustum(),this._kdTreeDirty&&this._buildKDTree(),e){const e=this._kdRoot;e&&this._visitKDNode(e)}}_buildFrustum(){const e=this.viewer.scene.camera;Q(this._frustum,e.viewMatrix,e.projMatrix),this._frustumDirty=!1}_buildKDTree(){const e=this.viewer.scene;this._kdRoot,this._kdRoot={aabb:e.getAABB(),intersection:N.INTERSECT};for(let e=0,t=this._objectCullStates.numObjects;e<t;e++){const t=this._objectCullStates.objects[e];this._insertEntityIntoKDTree(this._kdRoot,t,e,1)}this._kdTreeDirty=!1}_insertEntityIntoKDTree(e,t,i,s){const r=t.aabb;if(s>=this._maxTreeDepth)return e.objects=e.objects||[],e.objects.push(i),void d.expandAABB3(e.aabb,r);if(e.left&&d.containsAABB3(e.left.aabb,r))return void this._insertEntityIntoKDTree(e.left,t,i,s+1);if(e.right&&d.containsAABB3(e.right.aabb,r))return void this._insertEntityIntoKDTree(e.right,t,i,s+1);const o=e.aabb;mC[0]=o[3]-o[0],mC[1]=o[4]-o[1],mC[2]=o[5]-o[2];let n=0;if(mC[1]>mC[n]&&(n=1),mC[2]>mC[n]&&(n=2),!e.left){const a=o.slice();if(a[n+3]=(o[n]+o[n+3])/2,e.left={aabb:a,intersection:N.INTERSECT},d.containsAABB3(a,r))return void this._insertEntityIntoKDTree(e.left,t,i,s+1)}if(!e.right){const a=o.slice();if(a[n]=(o[n]+o[n+3])/2,e.right={aabb:a,intersection:N.INTERSECT},d.containsAABB3(a,r))return void this._insertEntityIntoKDTree(e.right,t,i,s+1)}e.objects=e.objects||[],e.objects.push(i),d.expandAABB3(e.aabb,r)}_visitKDNode(e,t=N.INTERSECT){if(t!==N.INTERSECT&&e.intersects===t)return;t===N.INTERSECT&&(t=V(this._frustum,e.aabb),e.intersects=t);const i=t===N.OUTSIDE,s=e.objects;if(s&&s.length>0)for(let e=0,t=s.length;e<t;e++){const t=s[e];this._objectCullStates.setObjectViewCulled(t,i)}e.left&&this._visitKDNode(e.left,t),e.right&&this._visitKDNode(e.right,t)}send(e,t){}destroy(){super.destroy(),this._clear();const e=this.viewer.scene,t=e.camera;e.off(this._onModelLoaded),e.off(this._onSceneTick),t.off(this._onViewMatrix),t.off(this._onProjMatrix)}_clear(){for(let e in this._modelInfos){const t=this._modelInfos[e];t.model.off(t.onDestroyed)}this._modelInfos={},this._kdRoot=null,this._kdTreeDirty=!0}}class vC{constructor(){}getManifest(e,t,i){y.loadJSON(e,(e=>{t(e)}),(function(e){i(e)}))}getMetaModel(e,t,i){y.loadJSON(e,(e=>{t(e)}),(function(e){i(e)}))}getXKT(e,t,i){var s=()=>{};t=t||s,i=i||s;const r=e.match(/^data:(.*?)(;base64)?,(.*)$/);if(r){const e=!!r[2];var o=r[3];o=window.decodeURIComponent(o),e&&(o=window.atob(o));try{const e=new ArrayBuffer(o.length),i=new Uint8Array(e);for(var n=0;n<o.length;n++)i[n]=o.charCodeAt(n);t(e)}catch(e){i(e)}}else{const s=new XMLHttpRequest;s.open("GET",e,!0),s.responseType="arraybuffer",s.onreadystatechange=function(){4===s.readyState&&(200===s.status?t(s.response):i("getXKT error : "+s.response))},s.send(null)}}}
37
- /*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).pako={})}(void 0,(function(e){function t(e){let t=e.length;for(;--t>=0;)e[t]=0}const i=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),s=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),r=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),o=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),n=new Array(576);t(n);const a=new Array(60);t(a);const l=new Array(512);t(l);const A=new Array(256);t(A);const h=new Array(29);t(h);const c=new Array(30);function u(e,t,i,s,r){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=s,this.max_length=r,this.has_stree=e&&e.length}let d,p,f;function g(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}t(c);const m=e=>e<256?l[e]:l[256+(e>>>7)],_=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},v=(e,t,i)=>{e.bi_valid>16-i?(e.bi_buf|=t<<e.bi_valid&65535,_(e,e.bi_buf),e.bi_buf=t>>16-e.bi_valid,e.bi_valid+=i-16):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=i)},b=(e,t,i)=>{v(e,i[2*t],i[2*t+1])},y=(e,t)=>{let i=0;do{i|=1&e,e>>>=1,i<<=1}while(--t>0);return i>>>1},B=(e,t,i)=>{const s=new Array(16);let r,o,n=0;for(r=1;r<=15;r++)n=n+i[r-1]<<1,s[r]=n;for(o=0;o<=t;o++){let t=e[2*o+1];0!==t&&(e[2*o]=y(s[t]++,t))}},w=e=>{let t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},x=e=>{e.bi_valid>8?_(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},P=(e,t,i,s)=>{const r=2*t,o=2*i;return e[r]<e[o]||e[r]===e[o]&&s[t]<=s[i]},C=(e,t,i)=>{const s=e.heap[i];let r=i<<1;for(;r<=e.heap_len&&(r<e.heap_len&&P(t,e.heap[r+1],e.heap[r],e.depth)&&r++,!P(t,s,e.heap[r],e.depth));)e.heap[i]=e.heap[r],i=r,r<<=1;e.heap[i]=s},M=(e,t,r)=>{let o,n,a,l,u=0;if(0!==e.sym_next)do{o=255&e.pending_buf[e.sym_buf+u++],o+=(255&e.pending_buf[e.sym_buf+u++])<<8,n=e.pending_buf[e.sym_buf+u++],0===o?b(e,n,t):(a=A[n],b(e,a+256+1,t),l=i[a],0!==l&&(n-=h[a],v(e,n,l)),o--,a=m(o),b(e,a,r),l=s[a],0!==l&&(o-=c[a],v(e,o,l)))}while(u<e.sym_next);b(e,256,t)},F=(e,t)=>{const i=t.dyn_tree,s=t.stat_desc.static_tree,r=t.stat_desc.has_stree,o=t.stat_desc.elems;let n,a,l,A=-1;for(e.heap_len=0,e.heap_max=573,n=0;n<o;n++)0!==i[2*n]?(e.heap[++e.heap_len]=A=n,e.depth[n]=0):i[2*n+1]=0;for(;e.heap_len<2;)l=e.heap[++e.heap_len]=A<2?++A:0,i[2*l]=1,e.depth[l]=0,e.opt_len--,r&&(e.static_len-=s[2*l+1]);for(t.max_code=A,n=e.heap_len>>1;n>=1;n--)C(e,i,n);l=o;do{n=e.heap[1],e.heap[1]=e.heap[e.heap_len--],C(e,i,1),a=e.heap[1],e.heap[--e.heap_max]=n,e.heap[--e.heap_max]=a,i[2*l]=i[2*n]+i[2*a],e.depth[l]=(e.depth[n]>=e.depth[a]?e.depth[n]:e.depth[a])+1,i[2*n+1]=i[2*a+1]=l,e.heap[1]=l++,C(e,i,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const i=t.dyn_tree,s=t.max_code,r=t.stat_desc.static_tree,o=t.stat_desc.has_stree,n=t.stat_desc.extra_bits,a=t.stat_desc.extra_base,l=t.stat_desc.max_length;let A,h,c,u,d,p,f=0;for(u=0;u<=15;u++)e.bl_count[u]=0;for(i[2*e.heap[e.heap_max]+1]=0,A=e.heap_max+1;A<573;A++)h=e.heap[A],u=i[2*i[2*h+1]+1]+1,u>l&&(u=l,f++),i[2*h+1]=u,h>s||(e.bl_count[u]++,d=0,h>=a&&(d=n[h-a]),p=i[2*h],e.opt_len+=p*(u+d),o&&(e.static_len+=p*(r[2*h+1]+d)));if(0!==f){do{for(u=l-1;0===e.bl_count[u];)u--;e.bl_count[u]--,e.bl_count[u+1]+=2,e.bl_count[l]--,f-=2}while(f>0);for(u=l;0!==u;u--)for(h=e.bl_count[u];0!==h;)c=e.heap[--A],c>s||(i[2*c+1]!==u&&(e.opt_len+=(u-i[2*c+1])*i[2*c],i[2*c+1]=u),h--)}})(e,t),B(i,A,e.bl_count)},E=(e,t,i)=>{let s,r,o=-1,n=t[1],a=0,l=7,A=4;for(0===n&&(l=138,A=3),t[2*(i+1)+1]=65535,s=0;s<=i;s++)r=n,n=t[2*(s+1)+1],++a<l&&r===n||(a<A?e.bl_tree[2*r]+=a:0!==r?(r!==o&&e.bl_tree[2*r]++,e.bl_tree[32]++):a<=10?e.bl_tree[34]++:e.bl_tree[36]++,a=0,o=r,0===n?(l=138,A=3):r===n?(l=6,A=3):(l=7,A=4))},I=(e,t,i)=>{let s,r,o=-1,n=t[1],a=0,l=7,A=4;for(0===n&&(l=138,A=3),s=0;s<=i;s++)if(r=n,n=t[2*(s+1)+1],!(++a<l&&r===n)){if(a<A)do{b(e,r,e.bl_tree)}while(0!=--a);else 0!==r?(r!==o&&(b(e,r,e.bl_tree),a--),b(e,16,e.bl_tree),v(e,a-3,2)):a<=10?(b(e,17,e.bl_tree),v(e,a-3,3)):(b(e,18,e.bl_tree),v(e,a-11,7));a=0,o=r,0===n?(l=138,A=3):r===n?(l=6,A=3):(l=7,A=4)}};let D=!1;const S=(e,t,i,s)=>{v(e,0+(s?1:0),3),x(e),_(e,i),_(e,~i),i&&e.pending_buf.set(e.window.subarray(t,t+i),e.pending),e.pending+=i};var T={_tr_init:e=>{D||((()=>{let e,t,o,g,m;const _=new Array(16);for(o=0,g=0;g<28;g++)for(h[g]=o,e=0;e<1<<i[g];e++)A[o++]=g;for(A[o-1]=g,m=0,g=0;g<16;g++)for(c[g]=m,e=0;e<1<<s[g];e++)l[m++]=g;for(m>>=7;g<30;g++)for(c[g]=m<<7,e=0;e<1<<s[g]-7;e++)l[256+m++]=g;for(t=0;t<=15;t++)_[t]=0;for(e=0;e<=143;)n[2*e+1]=8,e++,_[8]++;for(;e<=255;)n[2*e+1]=9,e++,_[9]++;for(;e<=279;)n[2*e+1]=7,e++,_[7]++;for(;e<=287;)n[2*e+1]=8,e++,_[8]++;for(B(n,287,_),e=0;e<30;e++)a[2*e+1]=5,a[2*e]=y(e,5);d=new u(n,i,257,286,15),p=new u(a,s,0,30,15),f=new u(new Array(0),r,0,19,7)})(),D=!0),e.l_desc=new g(e.dyn_ltree,d),e.d_desc=new g(e.dyn_dtree,p),e.bl_desc=new g(e.bl_tree,f),e.bi_buf=0,e.bi_valid=0,w(e)},_tr_stored_block:S,_tr_flush_block:(e,t,i,s)=>{let r,l,A=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,i=4093624447;for(t=0;t<=31;t++,i>>>=1)if(1&i&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),F(e,e.l_desc),F(e,e.d_desc),A=(e=>{let t;for(E(e,e.dyn_ltree,e.l_desc.max_code),E(e,e.dyn_dtree,e.d_desc.max_code),F(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*o[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),r=e.opt_len+3+7>>>3,l=e.static_len+3+7>>>3,l<=r&&(r=l)):r=l=i+5,i+4<=r&&-1!==t?S(e,t,i,s):4===e.strategy||l===r?(v(e,2+(s?1:0),3),M(e,n,a)):(v(e,4+(s?1:0),3),((e,t,i,s)=>{let r;for(v(e,t-257,5),v(e,i-1,5),v(e,s-4,4),r=0;r<s;r++)v(e,e.bl_tree[2*o[r]+1],3);I(e,e.dyn_ltree,t-1),I(e,e.dyn_dtree,i-1)})(e,e.l_desc.max_code+1,e.d_desc.max_code+1,A+1),M(e,e.dyn_ltree,e.dyn_dtree)),w(e),s&&x(e)},_tr_tally:(e,t,i)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=i,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[2*(A[i]+256+1)]++,e.dyn_dtree[2*m(t)]++),e.sym_next===e.sym_end),_tr_align:e=>{v(e,2,3),b(e,256,n),(e=>{16===e.bi_valid?(_(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)}},R=(e,t,i,s)=>{let r=65535&e|0,o=e>>>16&65535|0,n=0;for(;0!==i;){n=i>2e3?2e3:i,i-=n;do{r=r+t[s++]|0,o=o+r|0}while(--n);r%=65521,o%=65521}return r|o<<16|0};const L=new Uint32Array((()=>{let e,t=[];for(var i=0;i<256;i++){e=i;for(var s=0;s<8;s++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t})());var U=(e,t,i,s)=>{const r=L,o=s+i;e^=-1;for(let i=s;i<o;i++)e=e>>>8^r[255&(e^t[i])];return-1^e},k={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},O={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:N,_tr_stored_block:Q,_tr_flush_block:V,_tr_tally:H,_tr_align:j}=T,{Z_NO_FLUSH:G,Z_PARTIAL_FLUSH:z,Z_FULL_FLUSH:W,Z_FINISH:K,Z_BLOCK:X,Z_OK:J,Z_STREAM_END:Y,Z_STREAM_ERROR:Z,Z_DATA_ERROR:q,Z_BUF_ERROR:$,Z_DEFAULT_COMPRESSION:ee,Z_FILTERED:te,Z_HUFFMAN_ONLY:ie,Z_RLE:se,Z_FIXED:re,Z_DEFAULT_STRATEGY:oe,Z_UNKNOWN:ne,Z_DEFLATED:ae}=O,le=258,Ae=262,he=42,ce=113,ue=666,de=(e,t)=>(e.msg=k[t],t),pe=e=>2*e-(e>4?9:0),fe=e=>{let t=e.length;for(;--t>=0;)e[t]=0},ge=e=>{let t,i,s,r=e.w_size;t=e.hash_size,s=t;do{i=e.head[--s],e.head[s]=i>=r?i-r:0}while(--t);t=r,s=t;do{i=e.prev[--s],e.prev[s]=i>=r?i-r:0}while(--t)};let me=(e,t,i)=>(t<<e.hash_shift^i)&e.hash_mask;const _e=e=>{const t=e.state;let i=t.pending;i>e.avail_out&&(i=e.avail_out),0!==i&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+i),e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,0===t.pending&&(t.pending_out=0))},ve=(e,t)=>{V(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,_e(e.strm)},be=(e,t)=>{e.pending_buf[e.pending++]=t},ye=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},Be=(e,t,i,s)=>{let r=e.avail_in;return r>s&&(r=s),0===r?0:(e.avail_in-=r,t.set(e.input.subarray(e.next_in,e.next_in+r),i),1===e.state.wrap?e.adler=R(e.adler,t,r,i):2===e.state.wrap&&(e.adler=U(e.adler,t,r,i)),e.next_in+=r,e.total_in+=r,r)},we=(e,t)=>{let i,s,r=e.max_chain_length,o=e.strstart,n=e.prev_length,a=e.nice_match;const l=e.strstart>e.w_size-Ae?e.strstart-(e.w_size-Ae):0,A=e.window,h=e.w_mask,c=e.prev,u=e.strstart+le;let d=A[o+n-1],p=A[o+n];e.prev_length>=e.good_match&&(r>>=2),a>e.lookahead&&(a=e.lookahead);do{if(i=t,A[i+n]===p&&A[i+n-1]===d&&A[i]===A[o]&&A[++i]===A[o+1]){o+=2,i++;do{}while(A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&o<u);if(s=le-(u-o),o=u-le,s>n){if(e.match_start=t,n=s,s>=a)break;d=A[o+n-1],p=A[o+n]}}}while((t=c[t&h])>l&&0!=--r);return n<=e.lookahead?n:e.lookahead},xe=e=>{const t=e.w_size;let i,s,r;do{if(s=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-Ae)&&(e.window.set(e.window.subarray(t,t+t-s),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),ge(e),s+=t),0===e.strm.avail_in)break;if(i=Be(e.strm,e.window,e.strstart+e.lookahead,s),e.lookahead+=i,e.lookahead+e.insert>=3)for(r=e.strstart-e.insert,e.ins_h=e.window[r],e.ins_h=me(e,e.ins_h,e.window[r+1]);e.insert&&(e.ins_h=me(e,e.ins_h,e.window[r+3-1]),e.prev[r&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=r,r++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<Ae&&0!==e.strm.avail_in)},Pe=(e,t)=>{let i,s,r,o=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,n=0,a=e.strm.avail_in;do{if(i=65535,r=e.bi_valid+42>>3,e.strm.avail_out<r)break;if(r=e.strm.avail_out-r,s=e.strstart-e.block_start,i>s+e.strm.avail_in&&(i=s+e.strm.avail_in),i>r&&(i=r),i<o&&(0===i&&t!==K||t===G||i!==s+e.strm.avail_in))break;n=t===K&&i===s+e.strm.avail_in?1:0,Q(e,0,0,n),e.pending_buf[e.pending-4]=i,e.pending_buf[e.pending-3]=i>>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,_e(e.strm),s&&(s>i&&(s=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+s),e.strm.next_out),e.strm.next_out+=s,e.strm.avail_out-=s,e.strm.total_out+=s,e.block_start+=s,i-=s),i&&(Be(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}while(0===n);return a-=e.strm.avail_in,a&&(a>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=a&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-a,e.strm.next_in),e.strstart),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),n?4:t!==G&&t!==K&&0===e.strm.avail_in&&e.strstart===e.block_start?2:(r=e.window_size-e.strstart,e.strm.avail_in>r&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,r+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),r>e.strm.avail_in&&(r=e.strm.avail_in),r&&(Be(e.strm,e.window,e.strstart,r),e.strstart+=r,e.insert+=r>e.w_size-e.insert?e.w_size-e.insert:r),e.high_water<e.strstart&&(e.high_water=e.strstart),r=e.bi_valid+42>>3,r=e.pending_buf_size-r>65535?65535:e.pending_buf_size-r,o=r>e.w_size?e.w_size:r,s=e.strstart-e.block_start,(s>=o||(s||t===K)&&t!==G&&0===e.strm.avail_in&&s<=r)&&(i=s>r?r:s,n=t===K&&0===e.strm.avail_in&&i===s?1:0,Q(e,e.block_start,i,n),e.block_start+=i,_e(e.strm)),n?3:1)},Ce=(e,t)=>{let i,s;for(;;){if(e.lookahead<Ae){if(xe(e),e.lookahead<Ae&&t===G)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=me(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==i&&e.strstart-i<=e.w_size-Ae&&(e.match_length=we(e,i)),e.match_length>=3)if(s=H(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=me(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!=--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=me(e,e.ins_h,e.window[e.strstart+1]);else s=H(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(s&&(ve(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===K?(ve(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ve(e,!1),0===e.strm.avail_out)?1:2},Me=(e,t)=>{let i,s,r;for(;;){if(e.lookahead<Ae){if(xe(e),e.lookahead<Ae&&t===G)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=me(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==i&&e.prev_length<e.max_lazy_match&&e.strstart-i<=e.w_size-Ae&&(e.match_length=we(e,i),e.match_length<=5&&(e.strategy===te||3===e.match_length&&e.strstart-e.match_start>4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-3,s=H(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=r&&(e.ins_h=me(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!=--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,s&&(ve(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(s=H(e,0,e.window[e.strstart-1]),s&&ve(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(s=H(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===K?(ve(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ve(e,!1),0===e.strm.avail_out)?1:2};function Fe(e,t,i,s,r){this.good_length=e,this.max_lazy=t,this.nice_length=i,this.max_chain=s,this.func=r}const Ee=[new Fe(0,0,0,0,Pe),new Fe(4,4,8,4,Ce),new Fe(4,5,16,8,Ce),new Fe(4,6,32,32,Ce),new Fe(4,4,16,16,Me),new Fe(8,16,32,32,Me),new Fe(8,16,128,128,Me),new Fe(8,32,128,256,Me),new Fe(32,128,258,1024,Me),new Fe(32,258,258,4096,Me)];function Ie(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ae,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),fe(this.dyn_ltree),fe(this.dyn_dtree),fe(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),fe(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),fe(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const De=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==he&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==ce&&t.status!==ue?1:0},Se=e=>{if(De(e))return de(e,Z);e.total_in=e.total_out=0,e.data_type=ne;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?he:ce,e.adler=2===t.wrap?0:1,t.last_flush=-2,N(t),J},Te=e=>{const t=Se(e);var i;return t===J&&((i=e.state).window_size=2*i.w_size,fe(i.head),i.max_lazy_match=Ee[i.level].max_lazy,i.good_match=Ee[i.level].good_length,i.nice_match=Ee[i.level].nice_length,i.max_chain_length=Ee[i.level].max_chain,i.strstart=0,i.block_start=0,i.lookahead=0,i.insert=0,i.match_length=i.prev_length=2,i.match_available=0,i.ins_h=0),t},Re=(e,t,i,s,r,o)=>{if(!e)return Z;let n=1;if(t===ee&&(t=6),s<0?(n=0,s=-s):s>15&&(n=2,s-=16),r<1||r>9||i!==ae||s<8||s>15||t<0||t>9||o<0||o>re||8===s&&1!==n)return de(e,Z);8===s&&(s=9);const a=new Ie;return e.state=a,a.strm=e,a.status=he,a.wrap=n,a.gzhead=null,a.w_bits=s,a.w_size=1<<a.w_bits,a.w_mask=a.w_size-1,a.hash_bits=r+7,a.hash_size=1<<a.hash_bits,a.hash_mask=a.hash_size-1,a.hash_shift=~~((a.hash_bits+3-1)/3),a.window=new Uint8Array(2*a.w_size),a.head=new Uint16Array(a.hash_size),a.prev=new Uint16Array(a.w_size),a.lit_bufsize=1<<r+6,a.pending_buf_size=4*a.lit_bufsize,a.pending_buf=new Uint8Array(a.pending_buf_size),a.sym_buf=a.lit_bufsize,a.sym_end=3*(a.lit_bufsize-1),a.level=t,a.strategy=o,a.method=i,Te(e)};var Le=Re,Ue=(e,t)=>De(e)||2!==e.state.wrap?Z:(e.state.gzhead=t,J),ke=(e,t)=>{if(De(e)||t>X||t<0)return e?de(e,Z):Z;const i=e.state;if(!e.output||0!==e.avail_in&&!e.input||i.status===ue&&t!==K)return de(e,0===e.avail_out?$:Z);const s=i.last_flush;if(i.last_flush=t,0!==i.pending){if(_e(e),0===e.avail_out)return i.last_flush=-1,J}else if(0===e.avail_in&&pe(t)<=pe(s)&&t!==K)return de(e,$);if(i.status===ue&&0!==e.avail_in)return de(e,$);if(i.status===he&&0===i.wrap&&(i.status=ce),i.status===he){let t=ae+(i.w_bits-8<<4)<<8,s=-1;if(s=i.strategy>=ie||i.level<2?0:i.level<6?1:6===i.level?2:3,t|=s<<6,0!==i.strstart&&(t|=32),t+=31-t%31,ye(i,t),0!==i.strstart&&(ye(i,e.adler>>>16),ye(i,65535&e.adler)),e.adler=1,i.status=ce,_e(e),0!==i.pending)return i.last_flush=-1,J}if(57===i.status)if(e.adler=0,be(i,31),be(i,139),be(i,8),i.gzhead)be(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),be(i,255&i.gzhead.time),be(i,i.gzhead.time>>8&255),be(i,i.gzhead.time>>16&255),be(i,i.gzhead.time>>24&255),be(i,9===i.level?2:i.strategy>=ie||i.level<2?4:0),be(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(be(i,255&i.gzhead.extra.length),be(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=U(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69;else if(be(i,0),be(i,0),be(i,0),be(i,0),be(i,0),be(i,9===i.level?2:i.strategy>=ie||i.level<2?4:0),be(i,3),i.status=ce,_e(e),0!==i.pending)return i.last_flush=-1,J;if(69===i.status){if(i.gzhead.extra){let t=i.pending,s=(65535&i.gzhead.extra.length)-i.gzindex;for(;i.pending+s>i.pending_buf_size;){let r=i.pending_buf_size-i.pending;if(i.pending_buf.set(i.gzhead.extra.subarray(i.gzindex,i.gzindex+r),i.pending),i.pending=i.pending_buf_size,i.gzhead.hcrc&&i.pending>t&&(e.adler=U(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex+=r,_e(e),0!==i.pending)return i.last_flush=-1,J;t=0,s-=r}let r=new Uint8Array(i.gzhead.extra);i.pending_buf.set(r.subarray(i.gzindex,i.gzindex+s),i.pending),i.pending+=s,i.gzhead.hcrc&&i.pending>t&&(e.adler=U(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex=0}i.status=73}if(73===i.status){if(i.gzhead.name){let t,s=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>s&&(e.adler=U(e.adler,i.pending_buf,i.pending-s,s)),_e(e),0!==i.pending)return i.last_flush=-1,J;s=0}t=i.gzindex<i.gzhead.name.length?255&i.gzhead.name.charCodeAt(i.gzindex++):0,be(i,t)}while(0!==t);i.gzhead.hcrc&&i.pending>s&&(e.adler=U(e.adler,i.pending_buf,i.pending-s,s)),i.gzindex=0}i.status=91}if(91===i.status){if(i.gzhead.comment){let t,s=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>s&&(e.adler=U(e.adler,i.pending_buf,i.pending-s,s)),_e(e),0!==i.pending)return i.last_flush=-1,J;s=0}t=i.gzindex<i.gzhead.comment.length?255&i.gzhead.comment.charCodeAt(i.gzindex++):0,be(i,t)}while(0!==t);i.gzhead.hcrc&&i.pending>s&&(e.adler=U(e.adler,i.pending_buf,i.pending-s,s))}i.status=103}if(103===i.status){if(i.gzhead.hcrc){if(i.pending+2>i.pending_buf_size&&(_e(e),0!==i.pending))return i.last_flush=-1,J;be(i,255&e.adler),be(i,e.adler>>8&255),e.adler=0}if(i.status=ce,_e(e),0!==i.pending)return i.last_flush=-1,J}if(0!==e.avail_in||0!==i.lookahead||t!==G&&i.status!==ue){let s=0===i.level?Pe(i,t):i.strategy===ie?((e,t)=>{let i;for(;;){if(0===e.lookahead&&(xe(e),0===e.lookahead)){if(t===G)return 1;break}if(e.match_length=0,i=H(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(ve(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===K?(ve(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ve(e,!1),0===e.strm.avail_out)?1:2})(i,t):i.strategy===se?((e,t)=>{let i,s,r,o;const n=e.window;for(;;){if(e.lookahead<=le){if(xe(e),e.lookahead<=le&&t===G)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(r=e.strstart-1,s=n[r],s===n[++r]&&s===n[++r]&&s===n[++r])){o=e.strstart+le;do{}while(s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&r<o);e.match_length=le-(o-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(i=H(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=H(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(ve(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===K?(ve(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ve(e,!1),0===e.strm.avail_out)?1:2})(i,t):Ee[i.level].func(i,t);if(3!==s&&4!==s||(i.status=ue),1===s||3===s)return 0===e.avail_out&&(i.last_flush=-1),J;if(2===s&&(t===z?j(i):t!==X&&(Q(i,0,0,!1),t===W&&(fe(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),_e(e),0===e.avail_out))return i.last_flush=-1,J}return t!==K?J:i.wrap<=0?Y:(2===i.wrap?(be(i,255&e.adler),be(i,e.adler>>8&255),be(i,e.adler>>16&255),be(i,e.adler>>24&255),be(i,255&e.total_in),be(i,e.total_in>>8&255),be(i,e.total_in>>16&255),be(i,e.total_in>>24&255)):(ye(i,e.adler>>>16),ye(i,65535&e.adler)),_e(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?J:Y)},Oe=e=>{if(De(e))return Z;const t=e.state.status;return e.state=null,t===ce?de(e,q):J},Ne=(e,t)=>{let i=t.length;if(De(e))return Z;const s=e.state,r=s.wrap;if(2===r||1===r&&s.status!==he||s.lookahead)return Z;if(1===r&&(e.adler=R(e.adler,t,i,0)),s.wrap=0,i>=s.w_size){0===r&&(fe(s.head),s.strstart=0,s.block_start=0,s.insert=0);let e=new Uint8Array(s.w_size);e.set(t.subarray(i-s.w_size,i),0),t=e,i=s.w_size}const o=e.avail_in,n=e.next_in,a=e.input;for(e.avail_in=i,e.next_in=0,e.input=t,xe(s);s.lookahead>=3;){let e=s.strstart,t=s.lookahead-2;do{s.ins_h=me(s,s.ins_h,s.window[e+3-1]),s.prev[e&s.w_mask]=s.head[s.ins_h],s.head[s.ins_h]=e,e++}while(--t);s.strstart=e,s.lookahead=2,xe(s)}return s.strstart+=s.lookahead,s.block_start=s.strstart,s.insert=s.lookahead,s.lookahead=0,s.match_length=s.prev_length=2,s.match_available=0,e.next_in=n,e.input=a,e.avail_in=o,s.wrap=r,J};const Qe=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var Ve=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const i=t.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(const t in i)Qe(i,t)&&(e[t]=i[t])}}return e},He=e=>{let t=0;for(let i=0,s=e.length;i<s;i++)t+=e[i].length;const i=new Uint8Array(t);for(let t=0,s=0,r=e.length;t<r;t++){let r=e[t];i.set(r,s),s+=r.length}return i};let je=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){je=!1}const Ge=new Uint8Array(256);for(let e=0;e<256;e++)Ge[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Ge[254]=Ge[254]=1;var ze=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,i,s,r,o,n=e.length,a=0;for(r=0;r<n;r++)i=e.charCodeAt(r),55296==(64512&i)&&r+1<n&&(s=e.charCodeAt(r+1),56320==(64512&s)&&(i=65536+(i-55296<<10)+(s-56320),r++)),a+=i<128?1:i<2048?2:i<65536?3:4;for(t=new Uint8Array(a),o=0,r=0;o<a;r++)i=e.charCodeAt(r),55296==(64512&i)&&r+1<n&&(s=e.charCodeAt(r+1),56320==(64512&s)&&(i=65536+(i-55296<<10)+(s-56320),r++)),i<128?t[o++]=i:i<2048?(t[o++]=192|i>>>6,t[o++]=128|63&i):i<65536?(t[o++]=224|i>>>12,t[o++]=128|i>>>6&63,t[o++]=128|63&i):(t[o++]=240|i>>>18,t[o++]=128|i>>>12&63,t[o++]=128|i>>>6&63,t[o++]=128|63&i);return t},We=(e,t)=>{const i=t||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,t));let s,r;const o=new Array(2*i);for(r=0,s=0;s<i;){let t=e[s++];if(t<128){o[r++]=t;continue}let n=Ge[t];if(n>4)o[r++]=65533,s+=n-1;else{for(t&=2===n?31:3===n?15:7;n>1&&s<i;)t=t<<6|63&e[s++],n--;n>1?o[r++]=65533:t<65536?o[r++]=t:(t-=65536,o[r++]=55296|t>>10&1023,o[r++]=56320|1023&t)}}return((e,t)=>{if(t<65534&&e.subarray&&je)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let i="";for(let s=0;s<t;s++)i+=String.fromCharCode(e[s]);return i})(o,r)},Ke=(e,t)=>{(t=t||e.length)>e.length&&(t=e.length);let i=t-1;for(;i>=0&&128==(192&e[i]);)i--;return i<0||0===i?t:i+Ge[e[i]]>t?i:t},Xe=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Je=Object.prototype.toString,{Z_NO_FLUSH:Ye,Z_SYNC_FLUSH:Ze,Z_FULL_FLUSH:qe,Z_FINISH:$e,Z_OK:et,Z_STREAM_END:tt,Z_DEFAULT_COMPRESSION:it,Z_DEFAULT_STRATEGY:st,Z_DEFLATED:rt}=O;function ot(e){this.options=Ve({level:it,method:rt,chunkSize:16384,windowBits:15,memLevel:8,strategy:st},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Xe,this.strm.avail_out=0;let i=Le(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(i!==et)throw new Error(k[i]);if(t.header&&Ue(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?ze(t.dictionary):"[object ArrayBuffer]"===Je.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,i=Ne(this.strm,e),i!==et)throw new Error(k[i]);this._dict_set=!0}}function nt(e,t){const i=new ot(t);if(i.push(e,!0),i.err)throw i.msg||k[i.err];return i.result}ot.prototype.push=function(e,t){const i=this.strm,s=this.options.chunkSize;let r,o;if(this.ended)return!1;for(o=t===~~t?t:!0===t?$e:Ye,"string"==typeof e?i.input=ze(e):"[object ArrayBuffer]"===Je.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;)if(0===i.avail_out&&(i.output=new Uint8Array(s),i.next_out=0,i.avail_out=s),(o===Ze||o===qe)&&i.avail_out<=6)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else{if(r=ke(i,o),r===tt)return i.next_out>0&&this.onData(i.output.subarray(0,i.next_out)),r=Oe(this.strm),this.onEnd(r),this.ended=!0,r===et;if(0!==i.avail_out){if(o>0&&i.next_out>0)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else if(0===i.avail_in)break}else this.onData(i.output)}return!0},ot.prototype.onData=function(e){this.chunks.push(e)},ot.prototype.onEnd=function(e){e===et&&(this.result=He(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var at={Deflate:ot,deflate:nt,deflateRaw:function(e,t){return(t=t||{}).raw=!0,nt(e,t)},gzip:function(e,t){return(t=t||{}).gzip=!0,nt(e,t)},constants:O};const lt=16209;var At=function(e,t){let i,s,r,o,n,a,l,A,h,c,u,d,p,f,g,m,_,v,b,y,B,w,x,P;const C=e.state;i=e.next_in,x=e.input,s=i+(e.avail_in-5),r=e.next_out,P=e.output,o=r-(t-e.avail_out),n=r+(e.avail_out-257),a=C.dmax,l=C.wsize,A=C.whave,h=C.wnext,c=C.window,u=C.hold,d=C.bits,p=C.lencode,f=C.distcode,g=(1<<C.lenbits)-1,m=(1<<C.distbits)-1;e:do{d<15&&(u+=x[i++]<<d,d+=8,u+=x[i++]<<d,d+=8),_=p[u&g];t:for(;;){if(v=_>>>24,u>>>=v,d-=v,v=_>>>16&255,0===v)P[r++]=65535&_;else{if(!(16&v)){if(0==(64&v)){_=p[(65535&_)+(u&(1<<v)-1)];continue t}if(32&v){C.mode=16191;break e}e.msg="invalid literal/length code",C.mode=lt;break e}b=65535&_,v&=15,v&&(d<v&&(u+=x[i++]<<d,d+=8),b+=u&(1<<v)-1,u>>>=v,d-=v),d<15&&(u+=x[i++]<<d,d+=8,u+=x[i++]<<d,d+=8),_=f[u&m];i:for(;;){if(v=_>>>24,u>>>=v,d-=v,v=_>>>16&255,!(16&v)){if(0==(64&v)){_=f[(65535&_)+(u&(1<<v)-1)];continue i}e.msg="invalid distance code",C.mode=lt;break e}if(y=65535&_,v&=15,d<v&&(u+=x[i++]<<d,d+=8,d<v&&(u+=x[i++]<<d,d+=8)),y+=u&(1<<v)-1,y>a){e.msg="invalid distance too far back",C.mode=lt;break e}if(u>>>=v,d-=v,v=r-o,y>v){if(v=y-v,v>A&&C.sane){e.msg="invalid distance too far back",C.mode=lt;break e}if(B=0,w=c,0===h){if(B+=l-v,v<b){b-=v;do{P[r++]=c[B++]}while(--v);B=r-y,w=P}}else if(h<v){if(B+=l+h-v,v-=h,v<b){b-=v;do{P[r++]=c[B++]}while(--v);if(B=0,h<b){v=h,b-=v;do{P[r++]=c[B++]}while(--v);B=r-y,w=P}}}else if(B+=h-v,v<b){b-=v;do{P[r++]=c[B++]}while(--v);B=r-y,w=P}for(;b>2;)P[r++]=w[B++],P[r++]=w[B++],P[r++]=w[B++],b-=3;b&&(P[r++]=w[B++],b>1&&(P[r++]=w[B++]))}else{B=r-y;do{P[r++]=P[B++],P[r++]=P[B++],P[r++]=P[B++],b-=3}while(b>2);b&&(P[r++]=P[B++],b>1&&(P[r++]=P[B++]))}break}}break}}while(i<s&&r<n);b=d>>3,i-=b,d-=b<<3,u&=(1<<d)-1,e.next_in=i,e.next_out=r,e.avail_in=i<s?s-i+5:5-(i-s),e.avail_out=r<n?n-r+257:257-(r-n),C.hold=u,C.bits=d};const ht=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),ct=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),ut=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),dt=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var pt=(e,t,i,s,r,o,n,a)=>{const l=a.bits;let A,h,c,u,d,p,f=0,g=0,m=0,_=0,v=0,b=0,y=0,B=0,w=0,x=0,P=null;const C=new Uint16Array(16),M=new Uint16Array(16);let F,E,I,D=null;for(f=0;f<=15;f++)C[f]=0;for(g=0;g<s;g++)C[t[i+g]]++;for(v=l,_=15;_>=1&&0===C[_];_--);if(v>_&&(v=_),0===_)return r[o++]=20971520,r[o++]=20971520,a.bits=1,0;for(m=1;m<_&&0===C[m];m++);for(v<m&&(v=m),B=1,f=1;f<=15;f++)if(B<<=1,B-=C[f],B<0)return-1;if(B>0&&(0===e||1!==_))return-1;for(M[1]=0,f=1;f<15;f++)M[f+1]=M[f]+C[f];for(g=0;g<s;g++)0!==t[i+g]&&(n[M[t[i+g]]++]=g);if(0===e?(P=D=n,p=20):1===e?(P=ht,D=ct,p=257):(P=ut,D=dt,p=0),x=0,g=0,f=m,d=o,b=v,y=0,c=-1,w=1<<v,u=w-1,1===e&&w>852||2===e&&w>592)return 1;for(;;){F=f-y,n[g]+1<p?(E=0,I=n[g]):n[g]>=p?(E=D[n[g]-p],I=P[n[g]-p]):(E=96,I=0),A=1<<f-y,h=1<<b,m=h;do{h-=A,r[d+(x>>y)+h]=F<<24|E<<16|I|0}while(0!==h);for(A=1<<f-1;x&A;)A>>=1;if(0!==A?(x&=A-1,x+=A):x=0,g++,0==--C[f]){if(f===_)break;f=t[i+n[g]]}if(f>v&&(x&u)!==c){for(0===y&&(y=v),d+=m,b=f-y,B=1<<b;b+y<_&&(B-=C[b+y],!(B<=0));)b++,B<<=1;if(w+=1<<b,1===e&&w>852||2===e&&w>592)return 1;c=x&u,r[c]=v<<24|b<<16|d-o|0}}return 0!==x&&(r[d+x]=f-y<<24|64<<16|0),a.bits=v,0};const{Z_FINISH:ft,Z_BLOCK:gt,Z_TREES:mt,Z_OK:_t,Z_STREAM_END:vt,Z_NEED_DICT:bt,Z_STREAM_ERROR:yt,Z_DATA_ERROR:Bt,Z_MEM_ERROR:wt,Z_BUF_ERROR:xt,Z_DEFLATED:Pt}=O,Ct=16180,Mt=16190,Ft=16191,Et=16192,It=16194,Dt=16199,St=16200,Tt=16206,Rt=16209,Lt=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function Ut(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const kt=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode<Ct||t.mode>16211?1:0},Ot=e=>{if(kt(e))return yt;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=Ct,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,_t},Nt=e=>{if(kt(e))return yt;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,Ot(e)},Qt=(e,t)=>{let i;if(kt(e))return yt;const s=e.state;return t<0?(i=0,t=-t):(i=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?yt:(null!==s.window&&s.wbits!==t&&(s.window=null),s.wrap=i,s.wbits=t,Nt(e))},Vt=(e,t)=>{if(!e)return yt;const i=new Ut;e.state=i,i.strm=e,i.window=null,i.mode=Ct;const s=Qt(e,t);return s!==_t&&(e.state=null),s};let Ht,jt,Gt=!0;const zt=e=>{if(Gt){Ht=new Int32Array(512),jt=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(pt(1,e.lens,0,288,Ht,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;pt(2,e.lens,0,32,jt,0,e.work,{bits:5}),Gt=!1}e.lencode=Ht,e.lenbits=9,e.distcode=jt,e.distbits=5},Wt=(e,t,i,s)=>{let r;const o=e.state;return null===o.window&&(o.wsize=1<<o.wbits,o.wnext=0,o.whave=0,o.window=new Uint8Array(o.wsize)),s>=o.wsize?(o.window.set(t.subarray(i-o.wsize,i),0),o.wnext=0,o.whave=o.wsize):(r=o.wsize-o.wnext,r>s&&(r=s),o.window.set(t.subarray(i-s,i-s+r),o.wnext),(s-=r)?(o.window.set(t.subarray(i-s,i),0),o.wnext=s,o.whave=o.wsize):(o.wnext+=r,o.wnext===o.wsize&&(o.wnext=0),o.whave<o.wsize&&(o.whave+=r))),0};var Kt=Nt,Xt=Vt,Jt=(e,t)=>{let i,s,r,o,n,a,l,A,h,c,u,d,p,f,g,m,_,v,b,y,B,w,x=0;const P=new Uint8Array(4);let C,M;const F=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(kt(e)||!e.output||!e.input&&0!==e.avail_in)return yt;i=e.state,i.mode===Ft&&(i.mode=Et),n=e.next_out,r=e.output,l=e.avail_out,o=e.next_in,s=e.input,a=e.avail_in,A=i.hold,h=i.bits,c=a,u=l,w=_t;e:for(;;)switch(i.mode){case Ct:if(0===i.wrap){i.mode=Et;break}for(;h<16;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}if(2&i.wrap&&35615===A){0===i.wbits&&(i.wbits=15),i.check=0,P[0]=255&A,P[1]=A>>>8&255,i.check=U(i.check,P,2,0),A=0,h=0,i.mode=16181;break}if(i.head&&(i.head.done=!1),!(1&i.wrap)||(((255&A)<<8)+(A>>8))%31){e.msg="incorrect header check",i.mode=Rt;break}if((15&A)!==Pt){e.msg="unknown compression method",i.mode=Rt;break}if(A>>>=4,h-=4,B=8+(15&A),0===i.wbits&&(i.wbits=B),B>15||B>i.wbits){e.msg="invalid window size",i.mode=Rt;break}i.dmax=1<<i.wbits,i.flags=0,e.adler=i.check=1,i.mode=512&A?16189:Ft,A=0,h=0;break;case 16181:for(;h<16;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}if(i.flags=A,(255&i.flags)!==Pt){e.msg="unknown compression method",i.mode=Rt;break}if(57344&i.flags){e.msg="unknown header flags set",i.mode=Rt;break}i.head&&(i.head.text=A>>8&1),512&i.flags&&4&i.wrap&&(P[0]=255&A,P[1]=A>>>8&255,i.check=U(i.check,P,2,0)),A=0,h=0,i.mode=16182;case 16182:for(;h<32;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}i.head&&(i.head.time=A),512&i.flags&&4&i.wrap&&(P[0]=255&A,P[1]=A>>>8&255,P[2]=A>>>16&255,P[3]=A>>>24&255,i.check=U(i.check,P,4,0)),A=0,h=0,i.mode=16183;case 16183:for(;h<16;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}i.head&&(i.head.xflags=255&A,i.head.os=A>>8),512&i.flags&&4&i.wrap&&(P[0]=255&A,P[1]=A>>>8&255,i.check=U(i.check,P,2,0)),A=0,h=0,i.mode=16184;case 16184:if(1024&i.flags){for(;h<16;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}i.length=A,i.head&&(i.head.extra_len=A),512&i.flags&&4&i.wrap&&(P[0]=255&A,P[1]=A>>>8&255,i.check=U(i.check,P,2,0)),A=0,h=0}else i.head&&(i.head.extra=null);i.mode=16185;case 16185:if(1024&i.flags&&(d=i.length,d>a&&(d=a),d&&(i.head&&(B=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Uint8Array(i.head.extra_len)),i.head.extra.set(s.subarray(o,o+d),B)),512&i.flags&&4&i.wrap&&(i.check=U(i.check,s,d,o)),a-=d,o+=d,i.length-=d),i.length))break e;i.length=0,i.mode=16186;case 16186:if(2048&i.flags){if(0===a)break e;d=0;do{B=s[o+d++],i.head&&B&&i.length<65536&&(i.head.name+=String.fromCharCode(B))}while(B&&d<a);if(512&i.flags&&4&i.wrap&&(i.check=U(i.check,s,d,o)),a-=d,o+=d,B)break e}else i.head&&(i.head.name=null);i.length=0,i.mode=16187;case 16187:if(4096&i.flags){if(0===a)break e;d=0;do{B=s[o+d++],i.head&&B&&i.length<65536&&(i.head.comment+=String.fromCharCode(B))}while(B&&d<a);if(512&i.flags&&4&i.wrap&&(i.check=U(i.check,s,d,o)),a-=d,o+=d,B)break e}else i.head&&(i.head.comment=null);i.mode=16188;case 16188:if(512&i.flags){for(;h<16;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}if(4&i.wrap&&A!==(65535&i.check)){e.msg="header crc mismatch",i.mode=Rt;break}A=0,h=0}i.head&&(i.head.hcrc=i.flags>>9&1,i.head.done=!0),e.adler=i.check=0,i.mode=Ft;break;case 16189:for(;h<32;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}e.adler=i.check=Lt(A),A=0,h=0,i.mode=Mt;case Mt:if(0===i.havedict)return e.next_out=n,e.avail_out=l,e.next_in=o,e.avail_in=a,i.hold=A,i.bits=h,bt;e.adler=i.check=1,i.mode=Ft;case Ft:if(t===gt||t===mt)break e;case Et:if(i.last){A>>>=7&h,h-=7&h,i.mode=Tt;break}for(;h<3;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}switch(i.last=1&A,A>>>=1,h-=1,3&A){case 0:i.mode=16193;break;case 1:if(zt(i),i.mode=Dt,t===mt){A>>>=2,h-=2;break e}break;case 2:i.mode=16196;break;case 3:e.msg="invalid block type",i.mode=Rt}A>>>=2,h-=2;break;case 16193:for(A>>>=7&h,h-=7&h;h<32;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}if((65535&A)!=(A>>>16^65535)){e.msg="invalid stored block lengths",i.mode=Rt;break}if(i.length=65535&A,A=0,h=0,i.mode=It,t===mt)break e;case It:i.mode=16195;case 16195:if(d=i.length,d){if(d>a&&(d=a),d>l&&(d=l),0===d)break e;r.set(s.subarray(o,o+d),n),a-=d,o+=d,l-=d,n+=d,i.length-=d;break}i.mode=Ft;break;case 16196:for(;h<14;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}if(i.nlen=257+(31&A),A>>>=5,h-=5,i.ndist=1+(31&A),A>>>=5,h-=5,i.ncode=4+(15&A),A>>>=4,h-=4,i.nlen>286||i.ndist>30){e.msg="too many length or distance symbols",i.mode=Rt;break}i.have=0,i.mode=16197;case 16197:for(;i.have<i.ncode;){for(;h<3;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}i.lens[F[i.have++]]=7&A,A>>>=3,h-=3}for(;i.have<19;)i.lens[F[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,C={bits:i.lenbits},w=pt(0,i.lens,0,19,i.lencode,0,i.work,C),i.lenbits=C.bits,w){e.msg="invalid code lengths set",i.mode=Rt;break}i.have=0,i.mode=16198;case 16198:for(;i.have<i.nlen+i.ndist;){for(;x=i.lencode[A&(1<<i.lenbits)-1],g=x>>>24,m=x>>>16&255,_=65535&x,!(g<=h);){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}if(_<16)A>>>=g,h-=g,i.lens[i.have++]=_;else{if(16===_){for(M=g+2;h<M;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}if(A>>>=g,h-=g,0===i.have){e.msg="invalid bit length repeat",i.mode=Rt;break}B=i.lens[i.have-1],d=3+(3&A),A>>>=2,h-=2}else if(17===_){for(M=g+3;h<M;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}A>>>=g,h-=g,B=0,d=3+(7&A),A>>>=3,h-=3}else{for(M=g+7;h<M;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}A>>>=g,h-=g,B=0,d=11+(127&A),A>>>=7,h-=7}if(i.have+d>i.nlen+i.ndist){e.msg="invalid bit length repeat",i.mode=Rt;break}for(;d--;)i.lens[i.have++]=B}}if(i.mode===Rt)break;if(0===i.lens[256]){e.msg="invalid code -- missing end-of-block",i.mode=Rt;break}if(i.lenbits=9,C={bits:i.lenbits},w=pt(1,i.lens,0,i.nlen,i.lencode,0,i.work,C),i.lenbits=C.bits,w){e.msg="invalid literal/lengths set",i.mode=Rt;break}if(i.distbits=6,i.distcode=i.distdyn,C={bits:i.distbits},w=pt(2,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,C),i.distbits=C.bits,w){e.msg="invalid distances set",i.mode=Rt;break}if(i.mode=Dt,t===mt)break e;case Dt:i.mode=St;case St:if(a>=6&&l>=258){e.next_out=n,e.avail_out=l,e.next_in=o,e.avail_in=a,i.hold=A,i.bits=h,At(e,u),n=e.next_out,r=e.output,l=e.avail_out,o=e.next_in,s=e.input,a=e.avail_in,A=i.hold,h=i.bits,i.mode===Ft&&(i.back=-1);break}for(i.back=0;x=i.lencode[A&(1<<i.lenbits)-1],g=x>>>24,m=x>>>16&255,_=65535&x,!(g<=h);){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}if(m&&0==(240&m)){for(v=g,b=m,y=_;x=i.lencode[y+((A&(1<<v+b)-1)>>v)],g=x>>>24,m=x>>>16&255,_=65535&x,!(v+g<=h);){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}A>>>=v,h-=v,i.back+=v}if(A>>>=g,h-=g,i.back+=g,i.length=_,0===m){i.mode=16205;break}if(32&m){i.back=-1,i.mode=Ft;break}if(64&m){e.msg="invalid literal/length code",i.mode=Rt;break}i.extra=15&m,i.mode=16201;case 16201:if(i.extra){for(M=i.extra;h<M;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}i.length+=A&(1<<i.extra)-1,A>>>=i.extra,h-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=16202;case 16202:for(;x=i.distcode[A&(1<<i.distbits)-1],g=x>>>24,m=x>>>16&255,_=65535&x,!(g<=h);){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}if(0==(240&m)){for(v=g,b=m,y=_;x=i.distcode[y+((A&(1<<v+b)-1)>>v)],g=x>>>24,m=x>>>16&255,_=65535&x,!(v+g<=h);){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}A>>>=v,h-=v,i.back+=v}if(A>>>=g,h-=g,i.back+=g,64&m){e.msg="invalid distance code",i.mode=Rt;break}i.offset=_,i.extra=15&m,i.mode=16203;case 16203:if(i.extra){for(M=i.extra;h<M;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}i.offset+=A&(1<<i.extra)-1,A>>>=i.extra,h-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){e.msg="invalid distance too far back",i.mode=Rt;break}i.mode=16204;case 16204:if(0===l)break e;if(d=u-l,i.offset>d){if(d=i.offset-d,d>i.whave&&i.sane){e.msg="invalid distance too far back",i.mode=Rt;break}d>i.wnext?(d-=i.wnext,p=i.wsize-d):p=i.wnext-d,d>i.length&&(d=i.length),f=i.window}else f=r,p=n-i.offset,d=i.length;d>l&&(d=l),l-=d,i.length-=d;do{r[n++]=f[p++]}while(--d);0===i.length&&(i.mode=St);break;case 16205:if(0===l)break e;r[n++]=i.length,l--,i.mode=St;break;case Tt:if(i.wrap){for(;h<32;){if(0===a)break e;a--,A|=s[o++]<<h,h+=8}if(u-=l,e.total_out+=u,i.total+=u,4&i.wrap&&u&&(e.adler=i.check=i.flags?U(i.check,r,u,n-u):R(i.check,r,u,n-u)),u=l,4&i.wrap&&(i.flags?A:Lt(A))!==i.check){e.msg="incorrect data check",i.mode=Rt;break}A=0,h=0}i.mode=16207;case 16207:if(i.wrap&&i.flags){for(;h<32;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}if(4&i.wrap&&A!==(4294967295&i.total)){e.msg="incorrect length check",i.mode=Rt;break}A=0,h=0}i.mode=16208;case 16208:w=vt;break e;case Rt:w=Bt;break e;case 16210:return wt;default:return yt}return e.next_out=n,e.avail_out=l,e.next_in=o,e.avail_in=a,i.hold=A,i.bits=h,(i.wsize||u!==e.avail_out&&i.mode<Rt&&(i.mode<Tt||t!==ft))&&Wt(e,e.output,e.next_out,u-e.avail_out),c-=e.avail_in,u-=e.avail_out,e.total_in+=c,e.total_out+=u,i.total+=u,4&i.wrap&&u&&(e.adler=i.check=i.flags?U(i.check,r,u,e.next_out-u):R(i.check,r,u,e.next_out-u)),e.data_type=i.bits+(i.last?64:0)+(i.mode===Ft?128:0)+(i.mode===Dt||i.mode===It?256:0),(0===c&&0===u||t===ft)&&w===_t&&(w=xt),w},Yt=e=>{if(kt(e))return yt;let t=e.state;return t.window&&(t.window=null),e.state=null,_t},Zt=(e,t)=>{if(kt(e))return yt;const i=e.state;return 0==(2&i.wrap)?yt:(i.head=t,t.done=!1,_t)},qt=(e,t)=>{const i=t.length;let s,r,o;return kt(e)?yt:(s=e.state,0!==s.wrap&&s.mode!==Mt?yt:s.mode===Mt&&(r=1,r=R(r,t,i,0),r!==s.check)?Bt:(o=Wt(e,t,i,i),o?(s.mode=16210,wt):(s.havedict=1,_t)))},$t=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const ei=Object.prototype.toString,{Z_NO_FLUSH:ti,Z_FINISH:ii,Z_OK:si,Z_STREAM_END:ri,Z_NEED_DICT:oi,Z_STREAM_ERROR:ni,Z_DATA_ERROR:ai,Z_MEM_ERROR:li}=O;function Ai(e){this.options=Ve({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Xe,this.strm.avail_out=0;let i=Xt(this.strm,t.windowBits);if(i!==si)throw new Error(k[i]);if(this.header=new $t,Zt(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=ze(t.dictionary):"[object ArrayBuffer]"===ei.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(i=qt(this.strm,t.dictionary),i!==si)))throw new Error(k[i])}function hi(e,t){const i=new Ai(t);if(i.push(e),i.err)throw i.msg||k[i.err];return i.result}Ai.prototype.push=function(e,t){const i=this.strm,s=this.options.chunkSize,r=this.options.dictionary;let o,n,a;if(this.ended)return!1;for(n=t===~~t?t:!0===t?ii:ti,"[object ArrayBuffer]"===ei.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;){for(0===i.avail_out&&(i.output=new Uint8Array(s),i.next_out=0,i.avail_out=s),o=Jt(i,n),o===oi&&r&&(o=qt(i,r),o===si?o=Jt(i,n):o===ai&&(o=oi));i.avail_in>0&&o===ri&&i.state.wrap>0&&0!==e[i.next_in];)Kt(i),o=Jt(i,n);switch(o){case ni:case ai:case oi:case li:return this.onEnd(o),this.ended=!0,!1}if(a=i.avail_out,i.next_out&&(0===i.avail_out||o===ri))if("string"===this.options.to){let e=Ke(i.output,i.next_out),t=i.next_out-e,r=We(i.output,e);i.next_out=t,i.avail_out=s-t,t&&i.output.set(i.output.subarray(e,e+t),0),this.onData(r)}else this.onData(i.output.length===i.next_out?i.output:i.output.subarray(0,i.next_out));if(o!==si||0!==a){if(o===ri)return o=Yt(this.strm),this.onEnd(o),this.ended=!0,!0;if(0===i.avail_in)break}}return!0},Ai.prototype.onData=function(e){this.chunks.push(e)},Ai.prototype.onEnd=function(e){e===si&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=He(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var ci={Inflate:Ai,inflate:hi,inflateRaw:function(e,t){return(t=t||{}).raw=!0,hi(e,t)},ungzip:hi,constants:O};const{Deflate:ui,deflate:di,deflateRaw:pi,gzip:fi}=at,{Inflate:gi,inflate:mi,inflateRaw:_i,ungzip:vi}=ci;var bi=ui,yi=di,Bi=pi,wi=fi,xi=gi,Pi=mi,Ci=_i,Mi=vi,Fi=O,Ei={Deflate:bi,deflate:yi,deflateRaw:Bi,gzip:wi,Inflate:xi,inflate:Pi,inflateRaw:Ci,ungzip:Mi,constants:Fi};e.Deflate=bi,e.Inflate=xi,e.constants=Fi,e.default=Ei,e.deflate=yi,e.deflateRaw=Bi,e.gzip=wi,e.inflate=Pi,e.inflateRaw=Ci,e.ungzip=Mi,Object.defineProperty(e,"__esModule",{value:!0})}));var bC=Object.freeze({__proto__:null});let yC=window.pako||bC;yC.inflate||(yC=yC.default);const BC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const wC={version:1,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],meshPositions:e[4],meshIndices:e[5],meshEdgesIndices:e[6],meshColors:e[7],entityIDs:e[8],entityMeshes:e[9],entityIsObjects:e[10],positionsDecodeMatrix:e[11]}}(i),a=function(e){return{positions:new Uint16Array(yC.inflate(e.positions).buffer),normals:new Int8Array(yC.inflate(e.normals).buffer),indices:new Uint32Array(yC.inflate(e.indices).buffer),edgeIndices:new Uint32Array(yC.inflate(e.edgeIndices).buffer),meshPositions:new Uint32Array(yC.inflate(e.meshPositions).buffer),meshIndices:new Uint32Array(yC.inflate(e.meshIndices).buffer),meshEdgesIndices:new Uint32Array(yC.inflate(e.meshEdgesIndices).buffer),meshColors:new Uint8Array(yC.inflate(e.meshColors).buffer),entityIDs:yC.inflate(e.entityIDs,{to:"string"}),entityMeshes:new Uint32Array(yC.inflate(e.entityMeshes).buffer),entityIsObjects:new Uint8Array(yC.inflate(e.entityIsObjects).buffer),positionsDecodeMatrix:new Float32Array(yC.inflate(e.positionsDecodeMatrix).buffer)}}(n);!function(e,t,i,s,r,o){o.getNextId(),s.positionsCompression="precompressed",s.normalsCompression="precompressed";const n=i.positions,a=i.normals,l=i.indices,A=i.edgeIndices,h=i.meshPositions,c=i.meshIndices,u=i.meshEdgesIndices,p=i.meshColors,f=JSON.parse(i.entityIDs),g=i.entityMeshes,m=i.entityIsObjects,_=h.length,v=g.length;for(let r=0;r<v;r++){const o=f[r],b=t.globalizeObjectIds?d.globalizeObjectId(s.id,o):o,B=e.metaScene.metaObjects[b],w={},x={};if(B){if(t.excludeTypesMap&&B.type&&t.excludeTypesMap[B.type])continue;if(t.includeTypesMap&&B.type&&!t.includeTypesMap[B.type])continue;const e=t.objectDefaults?t.objectDefaults[B.type]||t.objectDefaults.DEFAULT:null;e&&(!1===e.visible&&(w.visible=!1),!1===e.pickable&&(w.pickable=!1),e.colorize&&(x.color=e.colorize),void 0!==e.opacity&&null!==e.opacity&&(x.opacity=e.opacity))}else if(t.excludeUnclassifiedObjects)continue;const P=r===v-1,C=[];for(let e=g[r],t=P?g.length:g[r+1];e<t;e++){const t=e===_-1,r=b+".mesh."+e,o=BC(p.subarray(4*e,4*e+3)),d=p[4*e+3]/255;s.createMesh(y.apply(x,{id:r,primitive:"triangles",positionsCompressed:n.subarray(h[e],t?n.length:h[e+1]),normalsCompressed:a.subarray(h[e],t?n.length:h[e+1]),indices:l.subarray(c[e],t?l.length:c[e+1]),edgeIndices:A.subarray(u[e],t?A.length:u[e+1]),positionsDecodeMatrix:i.positionsDecodeMatrix,color:o,opacity:d})),C.push(r)}s.createEntity(y.apply(w,{id:b,isObject:1===m[r],meshIds:C}))}}(e,t,a,s,0,o)}};let xC=window.pako||bC;xC.inflate||(xC=xC.default);const PC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const CC={version:2,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],meshPositions:e[4],meshIndices:e[5],meshEdgesIndices:e[6],meshColors:e[7],entityIDs:e[8],entityMeshes:e[9],entityIsObjects:e[10],positionsDecodeMatrix:e[11],entityMeshIds:e[12],entityMatrices:e[13],entityUsesInstancing:e[14]}}(i),a=function(e){return{positions:new Uint16Array(xC.inflate(e.positions).buffer),normals:new Int8Array(xC.inflate(e.normals).buffer),indices:new Uint32Array(xC.inflate(e.indices).buffer),edgeIndices:new Uint32Array(xC.inflate(e.edgeIndices).buffer),meshPositions:new Uint32Array(xC.inflate(e.meshPositions).buffer),meshIndices:new Uint32Array(xC.inflate(e.meshIndices).buffer),meshEdgesIndices:new Uint32Array(xC.inflate(e.meshEdgesIndices).buffer),meshColors:new Uint8Array(xC.inflate(e.meshColors).buffer),entityIDs:xC.inflate(e.entityIDs,{to:"string"}),entityMeshes:new Uint32Array(xC.inflate(e.entityMeshes).buffer),entityIsObjects:new Uint8Array(xC.inflate(e.entityIsObjects).buffer),positionsDecodeMatrix:new Float32Array(xC.inflate(e.positionsDecodeMatrix).buffer),entityMeshIds:new Uint32Array(xC.inflate(e.entityMeshIds).buffer),entityMatrices:new Float32Array(xC.inflate(e.entityMatrices).buffer),entityUsesInstancing:new Uint8Array(xC.inflate(e.entityUsesInstancing).buffer)}}(n);!function(e,t,i,s,r,o){const n=o.getNextId();s.positionsCompression="precompressed",s.normalsCompression="precompressed";const a=i.positions,l=i.normals,A=i.indices,h=i.edgeIndices,c=i.meshPositions,u=i.meshIndices,p=i.meshEdgesIndices,f=i.meshColors,g=JSON.parse(i.entityIDs),m=i.entityMeshes,_=i.entityIsObjects,v=i.entityMeshIds,b=i.entityMatrices,B=i.entityUsesInstancing,w=c.length,x=m.length,P={};for(let r=0;r<x;r++){const C=g[r],M=t.globalizeObjectIds?d.globalizeObjectId(s.id,C):C,F=e.metaScene.metaObjects[M],E={},I={},D=b.subarray(16*r,16*r+16);if(F){if(t.excludeTypesMap&&F.type&&t.excludeTypesMap[F.type])continue;if(t.includeTypesMap&&F.type&&!t.includeTypesMap[F.type])continue;const e=t.objectDefaults?t.objectDefaults[F.type]||t.objectDefaults.DEFAULT:null;e&&(!1===e.visible&&(E.visible=!1),!1===e.pickable&&(E.pickable=!1),e.colorize&&(I.color=e.colorize),void 0!==e.opacity&&null!==e.opacity&&(I.opacity=e.opacity))}else if(t.excludeUnclassifiedObjects)continue;const S=r===x-1,T=[];for(let e=m[r],t=S?v.length:m[r+1];e<t;e++){const t=v[e],d=t===w-1,g=o.getNextId(),m=PC(f.subarray(4*t,4*t+3)),_=f[4*t+3]/255,b=a.subarray(c[t],d?a.length:c[t+1]),x=l.subarray(c[t],d?a.length:c[t+1]),C=A.subarray(u[t],d?A.length:u[t+1]),M=h.subarray(p[t],d?h.length:p[t+1]);if(1===B[r]){const e=`${n}.geometry.${g}.${t}`;e in P||(s.createGeometry({id:e,positionsCompressed:b,normalsCompressed:x,indices:C,edgeIndices:M,primitive:"triangles",positionsDecodeMatrix:i.positionsDecodeMatrix}),P[e]=!0),s.createMesh(y.apply(I,{id:g,color:m,opacity:_,matrix:D,geometryId:e})),T.push(g)}else s.createMesh(y.apply(I,{id:g,primitive:"triangles",positionsCompressed:b,normalsCompressed:x,indices:C,edgeIndices:M,positionsDecodeMatrix:i.positionsDecodeMatrix,color:m,opacity:_})),T.push(g)}T.length&&s.createEntity(y.apply(E,{id:M,isObject:1===_[r],meshIds:T}))}}(e,t,a,s,0,o)}};let MC=window.pako||bC;MC.inflate||(MC=MC.default);const FC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const EC={version:3,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],meshPositions:e[4],meshIndices:e[5],meshEdgesIndices:e[6],meshColors:e[7],entityIDs:e[8],entityMeshes:e[9],entityIsObjects:e[10],instancedPositionsDecodeMatrix:e[11],batchedPositionsDecodeMatrix:e[12],entityMeshIds:e[13],entityMatrices:e[14],entityUsesInstancing:e[15]}}(i),a=function(e){return{positions:new Uint16Array(MC.inflate(e.positions).buffer),normals:new Int8Array(MC.inflate(e.normals).buffer),indices:new Uint32Array(MC.inflate(e.indices).buffer),edgeIndices:new Uint32Array(MC.inflate(e.edgeIndices).buffer),meshPositions:new Uint32Array(MC.inflate(e.meshPositions).buffer),meshIndices:new Uint32Array(MC.inflate(e.meshIndices).buffer),meshEdgesIndices:new Uint32Array(MC.inflate(e.meshEdgesIndices).buffer),meshColors:new Uint8Array(MC.inflate(e.meshColors).buffer),entityIDs:MC.inflate(e.entityIDs,{to:"string"}),entityMeshes:new Uint32Array(MC.inflate(e.entityMeshes).buffer),entityIsObjects:new Uint8Array(MC.inflate(e.entityIsObjects).buffer),instancedPositionsDecodeMatrix:new Float32Array(MC.inflate(e.instancedPositionsDecodeMatrix).buffer),batchedPositionsDecodeMatrix:new Float32Array(MC.inflate(e.batchedPositionsDecodeMatrix).buffer),entityMeshIds:new Uint32Array(MC.inflate(e.entityMeshIds).buffer),entityMatrices:new Float32Array(MC.inflate(e.entityMatrices).buffer),entityUsesInstancing:new Uint8Array(MC.inflate(e.entityUsesInstancing).buffer)}}(n);!function(e,t,i,s,r,o){const n=o.getNextId();s.positionsCompression="precompressed",s.normalsCompression="precompressed";const a=i.positions,l=i.normals,A=i.indices,h=i.edgeIndices,c=i.meshPositions,u=i.meshIndices,p=i.meshEdgesIndices,f=i.meshColors,g=JSON.parse(i.entityIDs),m=i.entityMeshes,_=i.entityIsObjects,v=i.entityMeshIds,b=i.entityMatrices,B=i.entityUsesInstancing,w=c.length,x=m.length,P={};for(let r=0;r<x;r++){const o=g[r],D=t.globalizeObjectIds?d.globalizeObjectId(s.id,o):o,S=e.metaScene.metaObjects[D],T={},R={},L=b.subarray(16*r,16*r+16);if(S){if(t.excludeTypesMap&&S.type&&t.excludeTypesMap[S.type])continue;if(t.includeTypesMap&&S.type&&!t.includeTypesMap[S.type])continue;const e=t.objectDefaults?t.objectDefaults[S.type]||t.objectDefaults.DEFAULT:null;e&&(!1===e.visible&&(T.visible=!1),!1===e.pickable&&(T.pickable=!1),e.colorize&&(R.color=e.colorize),void 0!==e.opacity&&null!==e.opacity&&(R.opacity=e.opacity))}else if(t.excludeUnclassifiedObjects)continue;const U=r===x-1,k=[];for(let e=m[r],t=U?v.length:m[r+1];e<t;e++){var C=v[e];const t=C===w-1,o=`${n}.${D}.mesh.${C}`,d=FC(f.subarray(4*C,4*C+3)),g=f[4*C+3]/255;var M=a.subarray(c[C],t?a.length:c[C+1]),F=l.subarray(c[C],t?a.length:c[C+1]),E=A.subarray(u[C],t?A.length:u[C+1]),I=h.subarray(p[C],t?h.length:p[C+1]);if(1===B[r]){const e=`${n}.geometry.${o}.${C}`;e in P||(s.createGeometry({id:e,positionsCompressed:M,normalsCompressed:F,indices:E,edgeIndices:I,primitive:"triangles",positionsDecodeMatrix:i.instancedPositionsDecodeMatrix}),P[e]=!0),s.createMesh(y.apply(R,{id:o,color:d,opacity:g,matrix:L,geometryId:e})),k.push(o)}else s.createMesh(y.apply(R,{id:o,primitive:"triangles",positionsCompressed:M,normalsCompressed:F,indices:E,edgeIndices:I,positionsDecodeMatrix:i.batchedPositionsDecodeMatrix,color:d,opacity:g})),k.push(o)}k.length&&s.createEntity(y.apply(T,{id:D,isObject:1===_[r],meshIds:k}))}}(e,t,a,s,0,o)}};let IC=window.pako||bC;IC.inflate||(IC=IC.default);const DC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const SC={version:4,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],decodeMatrices:e[4],matrices:e[5],eachPrimitivePositionsAndNormalsPortion:e[6],eachPrimitiveIndicesPortion:e[7],eachPrimitiveEdgeIndicesPortion:e[8],eachPrimitiveDecodeMatricesPortion:e[9],eachPrimitiveColor:e[10],primitiveInstances:e[11],eachEntityId:e[12],eachEntityPrimitiveInstancesPortion:e[13],eachEntityMatricesPortion:e[14],eachEntityMatrix:e[15]}}(i),a=function(e){return{positions:new Uint16Array(IC.inflate(e.positions).buffer),normals:new Int8Array(IC.inflate(e.normals).buffer),indices:new Uint32Array(IC.inflate(e.indices).buffer),edgeIndices:new Uint32Array(IC.inflate(e.edgeIndices).buffer),decodeMatrices:new Float32Array(IC.inflate(e.decodeMatrices).buffer),matrices:new Float32Array(IC.inflate(e.matrices).buffer),eachPrimitivePositionsAndNormalsPortion:new Uint32Array(IC.inflate(e.eachPrimitivePositionsAndNormalsPortion).buffer),eachPrimitiveIndicesPortion:new Uint32Array(IC.inflate(e.eachPrimitiveIndicesPortion).buffer),eachPrimitiveEdgeIndicesPortion:new Uint32Array(IC.inflate(e.eachPrimitiveEdgeIndicesPortion).buffer),eachPrimitiveDecodeMatricesPortion:new Uint32Array(IC.inflate(e.eachPrimitiveDecodeMatricesPortion).buffer),eachPrimitiveColor:new Uint8Array(IC.inflate(e.eachPrimitiveColor).buffer),primitiveInstances:new Uint32Array(IC.inflate(e.primitiveInstances).buffer),eachEntityId:IC.inflate(e.eachEntityId,{to:"string"}),eachEntityPrimitiveInstancesPortion:new Uint32Array(IC.inflate(e.eachEntityPrimitiveInstancesPortion).buffer),eachEntityMatricesPortion:new Uint32Array(IC.inflate(e.eachEntityMatricesPortion).buffer)}}(n);!function(e,t,i,s,r,o){const n=o.getNextId();s.positionsCompression="precompressed",s.normalsCompression="precompressed";const a=i.positions,l=i.normals,A=i.indices,h=i.edgeIndices,c=i.decodeMatrices,u=i.matrices,d=i.eachPrimitivePositionsAndNormalsPortion,p=i.eachPrimitiveIndicesPortion,f=i.eachPrimitiveEdgeIndicesPortion,g=i.eachPrimitiveDecodeMatricesPortion,m=i.eachPrimitiveColor,_=i.primitiveInstances,v=JSON.parse(i.eachEntityId),b=i.eachEntityPrimitiveInstancesPortion,B=i.eachEntityMatricesPortion,w=d.length,x=_.length,P=new Uint8Array(w),C=new Uint32Array(w),M=v.length;for(let e=0;e<w;e++)C[e]=e;C.sort(((e,t)=>g[e]<g[t]?-1:g[e]>g[t]?1:0));for(let e=0;e<x;e++)P[_[e]]++;const F={};for(let e=0;e<M;e++){const t=M-1,i=e===t,s=b[e],r=i?b[t]:b[e+1];for(let t=s;t<r;t++){const i=_[t];P[i]>1||(F[i]=e)}}for(let e=0;e<w;e++){const t=C[e],i=t===w-1,r=P[t]>1,o=DC(m.subarray(4*t,4*t+3)),u=m[4*t+3]/255,_=a.subarray(d[t],i?a.length:d[t+1]),b=l.subarray(d[t],i?l.length:d[t+1]),B=A.subarray(p[t],i?A.length:p[t+1]),x=h.subarray(f[t],i?h.length:f[t+1]),M=c.subarray(g[t],g[t]+16);if(r){const e=`${n}-geometry.${t}`;s.createGeometry({id:e,primitive:"triangles",positionsCompressed:_,normalsCompressed:b,indices:B,edgeIndices:x,positionsDecodeMatrix:M})}else{const e=`${n}-${t}`;v[F[t]];const i={};s.createMesh(y.apply(i,{id:e,primitive:"triangles",positionsCompressed:_,normalsCompressed:b,indices:B,edgeIndices:x,positionsDecodeMatrix:M,color:o,opacity:u}))}}let E=0;for(let e=0;e<M;e++){const t=M-1,i=e===t,r=v[e],o=b[e],a=i?b[t]:b[e+1],l=[];for(let t=o;t<a;t++){const i=_[t];if(P[i]>1){const t={},r=`${n}-instance.${E++}`,o=`${n}-geometry.${i}`,a=16*B[e],A=u.subarray(a,a+16);s.createMesh(y.apply(t,{id:r,geometryId:o,matrix:A})),l.push(r)}else l.push(i)}if(l.length>0){const e={};s.createEntity(y.apply(e,{id:r,isObject:!0,meshIds:l}))}}}(0,0,a,s,0,o)}};let TC=window.pako||bC;TC.inflate||(TC=TC.default);const RC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const LC={version:5,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],matrices:e[4],eachPrimitivePositionsAndNormalsPortion:e[5],eachPrimitiveIndicesPortion:e[6],eachPrimitiveEdgeIndicesPortion:e[7],eachPrimitiveColor:e[8],primitiveInstances:e[9],eachEntityId:e[10],eachEntityPrimitiveInstancesPortion:e[11],eachEntityMatricesPortion:e[12]}}(i),a=function(e){return{positions:new Float32Array(TC.inflate(e.positions).buffer),normals:new Int8Array(TC.inflate(e.normals).buffer),indices:new Uint32Array(TC.inflate(e.indices).buffer),edgeIndices:new Uint32Array(TC.inflate(e.edgeIndices).buffer),matrices:new Float32Array(TC.inflate(e.matrices).buffer),eachPrimitivePositionsAndNormalsPortion:new Uint32Array(TC.inflate(e.eachPrimitivePositionsAndNormalsPortion).buffer),eachPrimitiveIndicesPortion:new Uint32Array(TC.inflate(e.eachPrimitiveIndicesPortion).buffer),eachPrimitiveEdgeIndicesPortion:new Uint32Array(TC.inflate(e.eachPrimitiveEdgeIndicesPortion).buffer),eachPrimitiveColor:new Uint8Array(TC.inflate(e.eachPrimitiveColor).buffer),primitiveInstances:new Uint32Array(TC.inflate(e.primitiveInstances).buffer),eachEntityId:TC.inflate(e.eachEntityId,{to:"string"}),eachEntityPrimitiveInstancesPortion:new Uint32Array(TC.inflate(e.eachEntityPrimitiveInstancesPortion).buffer),eachEntityMatricesPortion:new Uint32Array(TC.inflate(e.eachEntityMatricesPortion).buffer)}}(n);!function(e,t,i,s,r,o){const n=o.getNextId();s.positionsCompression="disabled",s.normalsCompression="precompressed";const a=i.positions,l=i.normals,A=i.indices,h=i.edgeIndices,c=i.matrices,u=i.eachPrimitivePositionsAndNormalsPortion,d=i.eachPrimitiveIndicesPortion,p=i.eachPrimitiveEdgeIndicesPortion,f=i.eachPrimitiveColor,g=i.primitiveInstances,m=JSON.parse(i.eachEntityId),_=i.eachEntityPrimitiveInstancesPortion,v=i.eachEntityMatricesPortion,b=u.length,B=g.length,w=new Uint8Array(b),x=m.length;for(let e=0;e<B;e++)w[g[e]]++;const P={};for(let e=0;e<x;e++){const t=x-1,i=e===t,s=_[e],r=i?_[t]:_[e+1];for(let t=s;t<r;t++){const i=g[t];w[i]>1||(P[i]=e)}}for(let e=0;e<b;e++){const t=e===b-1,i=w[e]>1,r=RC(f.subarray(4*e,4*e+3)),o=f[4*e+3]/255,c=a.subarray(u[e],t?a.length:u[e+1]),g=l.subarray(u[e],t?l.length:u[e+1]),_=A.subarray(d[e],t?A.length:d[e+1]),v=h.subarray(p[e],t?h.length:p[e+1]);if(i){const t=`${n}-geometry.${e}`;s.createGeometry({id:t,primitive:"triangles",positionsCompressed:c,normalsCompressed:g,indices:_,edgeIndices:v})}else{const t=e;m[P[e]];const i={};s.createMesh(y.apply(i,{id:t,primitive:"triangles",positionsCompressed:c,normalsCompressed:g,indices:_,edgeIndices:v,color:r,opacity:o}))}}let C=0;for(let e=0;e<x;e++){const t=x-1,i=e===t,r=m[e],o=_[e],n=i?_[t]:_[e+1],a=[];for(let t=o;t<n;t++){const i=g[t];if(w[i]>1){const t={},r="instance."+C++,o="geometry"+i,n=16*v[e],l=c.subarray(n,n+16);s.createMesh(y.apply(t,{id:r,geometryId:o,matrix:l})),a.push(r)}else a.push(i)}if(a.length>0){const e={};s.createEntity(y.apply(e,{id:r,isObject:!0,meshIds:a}))}}}(0,0,a,s,0,o)}};let UC=window.pako||bC;UC.inflate||(UC=UC.default);const kC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const OC={version:6,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],matrices:e[4],reusedPrimitivesDecodeMatrix:e[5],eachPrimitivePositionsAndNormalsPortion:e[6],eachPrimitiveIndicesPortion:e[7],eachPrimitiveEdgeIndicesPortion:e[8],eachPrimitiveColorAndOpacity:e[9],primitiveInstances:e[10],eachEntityId:e[11],eachEntityPrimitiveInstancesPortion:e[12],eachEntityMatricesPortion:e[13],eachTileAABB:e[14],eachTileEntitiesPortion:e[15]}}(i),a=function(e){function t(e,t){return 0===e.length?[]:UC.inflate(e,t).buffer}return{positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),matrices:new Float32Array(t(e.matrices)),reusedPrimitivesDecodeMatrix:new Float32Array(t(e.reusedPrimitivesDecodeMatrix)),eachPrimitivePositionsAndNormalsPortion:new Uint32Array(t(e.eachPrimitivePositionsAndNormalsPortion)),eachPrimitiveIndicesPortion:new Uint32Array(t(e.eachPrimitiveIndicesPortion)),eachPrimitiveEdgeIndicesPortion:new Uint32Array(t(e.eachPrimitiveEdgeIndicesPortion)),eachPrimitiveColorAndOpacity:new Uint8Array(t(e.eachPrimitiveColorAndOpacity)),primitiveInstances:new Uint32Array(t(e.primitiveInstances)),eachEntityId:UC.inflate(e.eachEntityId,{to:"string"}),eachEntityPrimitiveInstancesPortion:new Uint32Array(t(e.eachEntityPrimitiveInstancesPortion)),eachEntityMatricesPortion:new Uint32Array(t(e.eachEntityMatricesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(n);!function(e,t,i,s,r,o){const n=o.getNextId(),a=i.positions,l=i.normals,A=i.indices,h=i.edgeIndices,c=i.matrices,u=i.reusedPrimitivesDecodeMatrix,p=i.eachPrimitivePositionsAndNormalsPortion,f=i.eachPrimitiveIndicesPortion,g=i.eachPrimitiveEdgeIndicesPortion,m=i.eachPrimitiveColorAndOpacity,_=i.primitiveInstances,v=JSON.parse(i.eachEntityId),b=i.eachEntityPrimitiveInstancesPortion,B=i.eachEntityMatricesPortion,w=i.eachTileAABB,x=i.eachTileEntitiesPortion,P=p.length,C=_.length,M=v.length,F=x.length,E=new Uint32Array(P);for(let e=0;e<C;e++){const t=_[e];void 0!==E[t]?E[t]++:E[t]=1}const I=d.vec3(),D=d.AABB3();for(let i=0;i<F;i++){const r=i===F-1,C=x[i],S=r?M:x[i+1],T=6*i,R=w.subarray(T,T+6);d.getAABB3Center(R,I),D[0]=R[0]-I[0],D[1]=R[1]-I[1],D[2]=R[2]-I[2],D[3]=R[3]-I[0],D[4]=R[4]-I[1],D[5]=R[5]-I[2];const L=Ht.createPositionsDecodeMatrix(D),U={};for(let r=C;r<S;r++){const w=v[r],x=t.globalizeObjectIds?d.globalizeObjectId(s.id,w):w,C=B[r],F=c.slice(C,C+16),D=r===M-1,S=b[r],T=D?_.length:b[r+1],R=[],k=e.metaScene.metaObjects[x],O={},N={};if(k){if(t.excludeTypesMap&&k.type&&t.excludeTypesMap[k.type])continue;if(t.includeTypesMap&&k.type&&!t.includeTypesMap[k.type])continue;const e=t.objectDefaults?t.objectDefaults[k.type]||t.objectDefaults.DEFAULT:null;e&&(!1===e.visible&&(O.visible=!1),!1===e.pickable&&(O.pickable=!1),e.colorize&&(N.color=e.colorize),void 0!==e.opacity&&null!==e.opacity&&(N.opacity=e.opacity))}else if(t.excludeUnclassifiedObjects)continue;for(let e=S;e<T;e++){const t=_[e],r=E[t]>1,c=t===P-1,d=a.subarray(p[t],c?a.length:p[t+1]),v=l.subarray(p[t],c?l.length:p[t+1]),b=A.subarray(f[t],c?A.length:f[t+1]),B=h.subarray(g[t],c?h.length:g[t+1]),w=kC(m.subarray(4*t,4*t+3)),x=m[4*t+3]/255,C=o.getNextId();if(r){const e=`${n}-geometry.${i}.${t}`;U[e]||(s.createGeometry({id:e,primitive:"triangles",positionsCompressed:d,indices:b,edgeIndices:B,positionsDecodeMatrix:u}),U[e]=!0),s.createMesh(y.apply(N,{id:C,geometryId:e,origin:I,matrix:F,color:w,opacity:x})),R.push(C)}else s.createMesh(y.apply(N,{id:C,origin:I,primitive:"triangles",positionsCompressed:d,normalsCompressed:v,indices:b,edgeIndices:B,positionsDecodeMatrix:L,color:w,opacity:x})),R.push(C)}R.length>0&&s.createEntity(y.apply(O,{id:x,isObject:!0,meshIds:R}))}}}(e,t,a,s,0,o)}};let NC=window.pako||bC;NC.inflate||(NC=NC.default);const QC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function VC(e){const t=[];for(let i=0,s=e.length;i<s;i+=3)t.push(e[i]),t.push(e[i+1]),t.push(e[i+2]),t.push(1);return t}const HC={version:7,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],colors:e[2],indices:e[3],edgeIndices:e[4],matrices:e[5],reusedGeometriesDecodeMatrix:e[6],eachGeometryPrimitiveType:e[7],eachGeometryPositionsPortion:e[8],eachGeometryNormalsPortion:e[9],eachGeometryColorsPortion:e[10],eachGeometryIndicesPortion:e[11],eachGeometryEdgeIndicesPortion:e[12],eachMeshGeometriesPortion:e[13],eachMeshMatricesPortion:e[14],eachMeshMaterial:e[15],eachEntityId:e[16],eachEntityMeshesPortion:e[17],eachTileAABB:e[18],eachTileEntitiesPortion:e[19]}}(i),a=function(e){function t(e,t){return 0===e.length?[]:NC.inflate(e,t).buffer}return{positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),colors:new Uint8Array(t(e.colors)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),matrices:new Float32Array(t(e.matrices)),reusedGeometriesDecodeMatrix:new Float32Array(t(e.reusedGeometriesDecodeMatrix)),eachGeometryPrimitiveType:new Uint8Array(t(e.eachGeometryPrimitiveType)),eachGeometryPositionsPortion:new Uint32Array(t(e.eachGeometryPositionsPortion)),eachGeometryNormalsPortion:new Uint32Array(t(e.eachGeometryNormalsPortion)),eachGeometryColorsPortion:new Uint32Array(t(e.eachGeometryColorsPortion)),eachGeometryIndicesPortion:new Uint32Array(t(e.eachGeometryIndicesPortion)),eachGeometryEdgeIndicesPortion:new Uint32Array(t(e.eachGeometryEdgeIndicesPortion)),eachMeshGeometriesPortion:new Uint32Array(t(e.eachMeshGeometriesPortion)),eachMeshMatricesPortion:new Uint32Array(t(e.eachMeshMatricesPortion)),eachMeshMaterial:new Uint8Array(t(e.eachMeshMaterial)),eachEntityId:NC.inflate(e.eachEntityId,{to:"string"}),eachEntityMeshesPortion:new Uint32Array(t(e.eachEntityMeshesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(n);!function(e,t,i,s,r,o){const n=o.getNextId(),a=i.positions,l=i.normals,A=i.colors,h=i.indices,c=i.edgeIndices,u=i.matrices,p=i.reusedGeometriesDecodeMatrix,f=i.eachGeometryPrimitiveType,g=i.eachGeometryPositionsPortion,m=i.eachGeometryNormalsPortion,_=i.eachGeometryColorsPortion,v=i.eachGeometryIndicesPortion,b=i.eachGeometryEdgeIndicesPortion,B=i.eachMeshGeometriesPortion,w=i.eachMeshMatricesPortion,x=i.eachMeshMaterial,P=JSON.parse(i.eachEntityId),C=i.eachEntityMeshesPortion,M=i.eachTileAABB,F=i.eachTileEntitiesPortion,E=g.length,I=B.length,D=P.length,S=F.length,T=new Uint32Array(E);for(let e=0;e<I;e++){const t=B[e];void 0!==T[t]?T[t]++:T[t]=1}const R=d.vec3(),L=d.AABB3();for(let i=0;i<S;i++){const r=i===S-1,I=F[i],U=r?D:F[i+1],k=6*i,O=M.subarray(k,k+6);d.getAABB3Center(O,R),L[0]=O[0]-R[0],L[1]=O[1]-R[1],L[2]=O[2]-R[2],L[3]=O[3]-R[0],L[4]=O[4]-R[1],L[5]=O[5]-R[2];const N=Ht.createPositionsDecodeMatrix(L),Q={};for(let r=I;r<U;r++){const M=P[r],F=t.globalizeObjectIds?d.globalizeObjectId(s.id,M):M,I=r===D-1,S=C[r],L=I?B.length:C[r+1],U=[],k=e.metaScene.metaObjects[F],O={},V={};if(k){if(t.excludeTypesMap&&k.type&&t.excludeTypesMap[k.type])continue;if(t.includeTypesMap&&k.type&&!t.includeTypesMap[k.type])continue;const e=t.objectDefaults?t.objectDefaults[k.type]||t.objectDefaults.DEFAULT:null;e&&(!1===e.visible&&(O.visible=!1),!1===e.pickable&&(O.pickable=!1),e.colorize&&(V.color=e.colorize),void 0!==e.opacity&&null!==e.opacity&&(V.opacity=e.opacity),void 0!==e.metallic&&null!==e.metallic&&(V.metallic=e.metallic),void 0!==e.roughness&&null!==e.roughness&&(V.roughness=e.roughness))}else if(t.excludeUnclassifiedObjects)continue;for(let e=S;e<L;e++){const t=B[e],r=T[t]>1,d=t===E-1,P=QC(x.subarray(6*e,6*e+3)),C=x[6*e+3]/255,M=x[6*e+4]/255,F=x[6*e+5]/255,I=o.getNextId();if(r){const r=w[e],o=u.slice(r,r+16),B=`${n}-geometry.${i}.${t}`;if(!Q[B]){let e,i,r,o,n,u;switch(f[t]){case 0:e="solid",i=a.subarray(g[t],d?a.length:g[t+1]),r=l.subarray(m[t],d?l.length:m[t+1]),n=h.subarray(v[t],d?h.length:v[t+1]),u=c.subarray(b[t],d?c.length:b[t+1]);break;case 1:e="surface",i=a.subarray(g[t],d?a.length:g[t+1]),r=l.subarray(m[t],d?l.length:m[t+1]),n=h.subarray(v[t],d?h.length:v[t+1]),u=c.subarray(b[t],d?c.length:b[t+1]);break;case 2:e="points",i=a.subarray(g[t],d?a.length:g[t+1]),o=VC(A.subarray(_[t],d?A.length:_[t+1]));break;case 3:e="lines",i=a.subarray(g[t],d?a.length:g[t+1]),n=h.subarray(v[t],d?h.length:v[t+1]);break;default:continue}s.createGeometry({id:B,primitive:e,positionsCompressed:i,normalsCompressed:r,colors:o,indices:n,edgeIndices:u,positionsDecodeMatrix:p}),Q[B]=!0}s.createMesh(y.apply(V,{id:I,geometryId:B,origin:R,matrix:o,color:P,metallic:M,roughness:F,opacity:C})),U.push(I)}else{let e,i,r,o,n,u;switch(f[t]){case 0:e="solid",i=a.subarray(g[t],d?a.length:g[t+1]),r=l.subarray(m[t],d?l.length:m[t+1]),n=h.subarray(v[t],d?h.length:v[t+1]),u=c.subarray(b[t],d?c.length:b[t+1]);break;case 1:e="surface",i=a.subarray(g[t],d?a.length:g[t+1]),r=l.subarray(m[t],d?l.length:m[t+1]),n=h.subarray(v[t],d?h.length:v[t+1]),u=c.subarray(b[t],d?c.length:b[t+1]);break;case 2:e="points",i=a.subarray(g[t],d?a.length:g[t+1]),o=VC(A.subarray(_[t],d?A.length:_[t+1]));break;case 3:e="lines",i=a.subarray(g[t],d?a.length:g[t+1]),n=h.subarray(v[t],d?h.length:v[t+1]);break;default:continue}s.createMesh(y.apply(V,{id:I,origin:R,primitive:e,positionsCompressed:i,normalsCompressed:r,colors:o,indices:n,edgeIndices:u,positionsDecodeMatrix:N,color:P,metallic:M,roughness:F,opacity:C})),U.push(I)}}U.length>0&&s.createEntity(y.apply(O,{id:F,isObject:!0,meshIds:U}))}}}(e,t,a,s,0,o)}};let jC=window.pako||bC;jC.inflate||(jC=jC.default);const GC=d.vec4(),zC=d.vec4();const WC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function KC(e){const t=[];for(let i=0,s=e.length;i<s;i+=3)t.push(e[i]),t.push(e[i+1]),t.push(e[i+2]),t.push(1);return t}const XC={version:8,parse:function(e,t,i,s,r,o){const n=function(e){return{types:e[0],eachMetaObjectId:e[1],eachMetaObjectType:e[2],eachMetaObjectName:e[3],eachMetaObjectParent:e[4],positions:e[5],normals:e[6],colors:e[7],indices:e[8],edgeIndices:e[9],matrices:e[10],reusedGeometriesDecodeMatrix:e[11],eachGeometryPrimitiveType:e[12],eachGeometryPositionsPortion:e[13],eachGeometryNormalsPortion:e[14],eachGeometryColorsPortion:e[15],eachGeometryIndicesPortion:e[16],eachGeometryEdgeIndicesPortion:e[17],eachMeshGeometriesPortion:e[18],eachMeshMatricesPortion:e[19],eachMeshMaterial:e[20],eachEntityMetaObject:e[21],eachEntityMeshesPortion:e[22],eachTileAABB:e[23],eachTileEntitiesPortion:e[24]}}(i),a=function(e){function t(e,t){return 0===e.length?[]:jC.inflate(e,t).buffer}return{types:jC.inflate(e.types,{to:"string"}),eachMetaObjectId:jC.inflate(e.eachMetaObjectId,{to:"string"}),eachMetaObjectType:new Uint32Array(t(e.eachMetaObjectType)),eachMetaObjectName:jC.inflate(e.eachMetaObjectName,{to:"string"}),eachMetaObjectParent:new Uint32Array(t(e.eachMetaObjectParent)),positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),colors:new Uint8Array(t(e.colors)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),matrices:new Float32Array(t(e.matrices)),reusedGeometriesDecodeMatrix:new Float32Array(t(e.reusedGeometriesDecodeMatrix)),eachGeometryPrimitiveType:new Uint8Array(t(e.eachGeometryPrimitiveType)),eachGeometryPositionsPortion:new Uint32Array(t(e.eachGeometryPositionsPortion)),eachGeometryNormalsPortion:new Uint32Array(t(e.eachGeometryNormalsPortion)),eachGeometryColorsPortion:new Uint32Array(t(e.eachGeometryColorsPortion)),eachGeometryIndicesPortion:new Uint32Array(t(e.eachGeometryIndicesPortion)),eachGeometryEdgeIndicesPortion:new Uint32Array(t(e.eachGeometryEdgeIndicesPortion)),eachMeshGeometriesPortion:new Uint32Array(t(e.eachMeshGeometriesPortion)),eachMeshMatricesPortion:new Uint32Array(t(e.eachMeshMatricesPortion)),eachMeshMaterial:new Uint8Array(t(e.eachMeshMaterial)),eachEntityMetaObject:new Uint32Array(t(e.eachEntityMetaObject)),eachEntityMeshesPortion:new Uint32Array(t(e.eachEntityMeshesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(n);!function(e,t,i,s,r,o){const n=o.getNextId(),a=JSON.parse(i.types),l=JSON.parse(i.eachMetaObjectId),A=i.eachMetaObjectType,h=JSON.parse(i.eachMetaObjectName),c=i.eachMetaObjectParent,u=i.positions,p=i.normals,f=i.colors,g=i.indices,m=i.edgeIndices,_=i.matrices,v=i.reusedGeometriesDecodeMatrix,b=i.eachGeometryPrimitiveType,B=i.eachGeometryPositionsPortion,w=i.eachGeometryNormalsPortion,x=i.eachGeometryColorsPortion,P=i.eachGeometryIndicesPortion,C=i.eachGeometryEdgeIndicesPortion,M=i.eachMeshGeometriesPortion,F=i.eachMeshMatricesPortion,E=i.eachMeshMaterial,I=i.eachEntityMetaObject,D=i.eachEntityMeshesPortion,S=i.eachTileAABB,T=i.eachTileEntitiesPortion,R=l.length,L=B.length,U=M.length,k=I.length,O=T.length;if(r){const e={metaObjects:[]};for(let t=0;t<R;t++){const i=l[t],s=a[A[t]]||"default",r=h[t],o=c[t],n=o!==t?l[o]:null;e.metaObjects.push({id:i,type:s,name:r,parent:n})}r.loadData(e,{includeTypes:t.includeTypes,excludeTypes:t.excludeTypes,globalizeObjectIds:t.globalizeObjectIds})}const N=new Uint32Array(L);for(let e=0;e<U;e++){const t=M[e];void 0!==N[t]?N[t]++:N[t]=1}const Q=d.vec3(),V=d.AABB3(),H={};for(let i=0;i<O;i++){const r=i===O-1,a=T[i],A=r?k:T[i+1],h=6*i,c=S.subarray(h,h+6);d.getAABB3Center(c,Q),V[0]=c[0]-Q[0],V[1]=c[1]-Q[1],V[2]=c[2]-Q[2],V[3]=c[3]-Q[0],V[4]=c[4]-Q[1],V[5]=c[5]-Q[2];const R=Ht.createPositionsDecodeMatrix(V),U={};for(let r=a;r<A;r++){const a=l[I[r]],A=t.globalizeObjectIds?d.globalizeObjectId(s.id,a):a,h=r===k-1,c=D[r],S=h?M.length:D[r+1],T=[],O=e.metaScene.metaObjects[A],j={},G={};if(O){if(t.excludeTypesMap&&O.type&&t.excludeTypesMap[O.type])continue;if(t.includeTypesMap&&O.type&&!t.includeTypesMap[O.type])continue;const e=t.objectDefaults?t.objectDefaults[O.type]||t.objectDefaults.DEFAULT:null;e&&(!1===e.visible&&(j.visible=!1),!1===e.pickable&&(j.pickable=!1),e.colorize&&(G.color=e.colorize),void 0!==e.opacity&&null!==e.opacity&&(G.opacity=e.opacity),void 0!==e.metallic&&null!==e.metallic&&(G.metallic=e.metallic),void 0!==e.roughness&&null!==e.roughness&&(G.roughness=e.roughness))}else if(t.excludeUnclassifiedObjects)continue;for(let e=c;e<S;e++){const r=M[e],a=N[r]>1,l=r===L-1,A=WC(E.subarray(6*e,6*e+3)),h=E[6*e+3]/255,c=E[6*e+4]/255,I=E[6*e+5]/255,D=o.getNextId();if(a){const o=F[e],a=_.slice(o,o+16),M=`${n}-geometry.${i}.${r}`;let E=H[M];if(!E){E={batchThisMesh:!t.reuseGeometries};let e=!1;switch(b[r]){case 0:E.primitiveName="solid",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryNormals=p.subarray(w[r],l?p.length:w[r+1]),E.geometryIndices=g.subarray(P[r],l?g.length:P[r+1]),E.geometryEdgeIndices=m.subarray(C[r],l?m.length:C[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 1:E.primitiveName="surface",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryNormals=p.subarray(w[r],l?p.length:w[r+1]),E.geometryIndices=g.subarray(P[r],l?g.length:P[r+1]),E.geometryEdgeIndices=m.subarray(C[r],l?m.length:C[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 2:E.primitiveName="points",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryColors=KC(f.subarray(x[r],l?f.length:x[r+1])),e=E.geometryPositions.length>0;break;case 3:E.primitiveName="lines",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryIndices=g.subarray(P[r],l?g.length:P[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;default:continue}if(e||(E=null),E&&(E.geometryPositions.length,E.batchThisMesh)){E.decompressedPositions=new Float32Array(E.geometryPositions.length);const e=E.geometryPositions,t=E.decompressedPositions;for(let i=0,s=e.length;i<s;i+=3)t[i+0]=e[i+0]*v[0]+v[12],t[i+1]=e[i+1]*v[5]+v[13],t[i+2]=e[i+2]*v[10]+v[14];E.geometryPositions=null,H[M]=E}}if(E)if(E.batchThisMesh){const e=E.decompressedPositions,t=new Uint16Array(e.length);for(let i=0,s=e.length;i<s;i+=3)GC[0]=e[i+0],GC[1]=e[i+1],GC[2]=e[i+2],GC[3]=1,d.transformVec4(a,GC,zC),Ht.compressPosition(zC,V,GC),t[i+0]=GC[0],t[i+1]=GC[1],t[i+2]=GC[2];s.createMesh(y.apply(G,{id:D,origin:Q,primitive:E.primitiveName,positionsCompressed:t,normalsCompressed:E.geometryNormals,colorsCompressed:E.geometryColors,indices:E.geometryIndices,edgeIndices:E.geometryEdgeIndices,positionsDecodeMatrix:R,color:A,metallic:c,roughness:I,opacity:h})),T.push(D)}else U[M]||(s.createGeometry({id:M,primitive:E.primitiveName,positionsCompressed:E.geometryPositions,normalsCompressed:E.geometryNormals,colorsCompressed:E.geometryColors,indices:E.geometryIndices,edgeIndices:E.geometryEdgeIndices,positionsDecodeMatrix:v}),U[M]=!0),s.createMesh(y.apply(G,{id:D,geometryId:M,origin:Q,matrix:a,color:A,metallic:c,roughness:I,opacity:h})),T.push(D)}else{let e,t,i,o,n,a,d=!1;switch(b[r]){case 0:e="solid",t=u.subarray(B[r],l?u.length:B[r+1]),i=p.subarray(w[r],l?p.length:w[r+1]),n=g.subarray(P[r],l?g.length:P[r+1]),a=m.subarray(C[r],l?m.length:C[r+1]),d=t.length>0&&n.length>0;break;case 1:e="surface",t=u.subarray(B[r],l?u.length:B[r+1]),i=p.subarray(w[r],l?p.length:w[r+1]),n=g.subarray(P[r],l?g.length:P[r+1]),a=m.subarray(C[r],l?m.length:C[r+1]),d=t.length>0&&n.length>0;break;case 2:e="points",t=u.subarray(B[r],l?u.length:B[r+1]),o=KC(f.subarray(x[r],l?f.length:x[r+1])),d=t.length>0;break;case 3:e="lines",t=u.subarray(B[r],l?u.length:B[r+1]),n=g.subarray(P[r],l?g.length:P[r+1]),d=t.length>0&&n.length>0;break;default:continue}d&&(s.createMesh(y.apply(G,{id:D,origin:Q,primitive:e,positionsCompressed:t,normalsCompressed:i,colorsCompressed:o,indices:n,edgeIndices:a,positionsDecodeMatrix:R,color:A,metallic:c,roughness:I,opacity:h})),T.push(D))}}T.length>0&&s.createEntity(y.apply(j,{id:A,isObject:!0,meshIds:T}))}}}(e,t,a,s,r,o)}};let JC=window.pako||bC;JC.inflate||(JC=JC.default);const YC=d.vec4(),ZC=d.vec4();const qC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const $C={version:9,parse:function(e,t,i,s,r,o){const n=function(e){return{metadata:e[0],positions:e[1],normals:e[2],colors:e[3],indices:e[4],edgeIndices:e[5],matrices:e[6],reusedGeometriesDecodeMatrix:e[7],eachGeometryPrimitiveType:e[8],eachGeometryPositionsPortion:e[9],eachGeometryNormalsPortion:e[10],eachGeometryColorsPortion:e[11],eachGeometryIndicesPortion:e[12],eachGeometryEdgeIndicesPortion:e[13],eachMeshGeometriesPortion:e[14],eachMeshMatricesPortion:e[15],eachMeshMaterial:e[16],eachEntityId:e[17],eachEntityMeshesPortion:e[18],eachTileAABB:e[19],eachTileEntitiesPortion:e[20]}}(i),a=function(e){function t(e,t){return 0===e.length?[]:JC.inflate(e,t).buffer}return{metadata:JSON.parse(JC.inflate(e.metadata,{to:"string"})),positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),colors:new Uint8Array(t(e.colors)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),matrices:new Float32Array(t(e.matrices)),reusedGeometriesDecodeMatrix:new Float32Array(t(e.reusedGeometriesDecodeMatrix)),eachGeometryPrimitiveType:new Uint8Array(t(e.eachGeometryPrimitiveType)),eachGeometryPositionsPortion:new Uint32Array(t(e.eachGeometryPositionsPortion)),eachGeometryNormalsPortion:new Uint32Array(t(e.eachGeometryNormalsPortion)),eachGeometryColorsPortion:new Uint32Array(t(e.eachGeometryColorsPortion)),eachGeometryIndicesPortion:new Uint32Array(t(e.eachGeometryIndicesPortion)),eachGeometryEdgeIndicesPortion:new Uint32Array(t(e.eachGeometryEdgeIndicesPortion)),eachMeshGeometriesPortion:new Uint32Array(t(e.eachMeshGeometriesPortion)),eachMeshMatricesPortion:new Uint32Array(t(e.eachMeshMatricesPortion)),eachMeshMaterial:new Uint8Array(t(e.eachMeshMaterial)),eachEntityId:JSON.parse(JC.inflate(e.eachEntityId,{to:"string"})),eachEntityMeshesPortion:new Uint32Array(t(e.eachEntityMeshesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(n);!function(e,t,i,s,r,o){const n=o.getNextId(),a=i.metadata,l=i.positions,A=i.normals,h=i.colors,c=i.indices,u=i.edgeIndices,p=i.matrices,f=i.reusedGeometriesDecodeMatrix,g=i.eachGeometryPrimitiveType,m=i.eachGeometryPositionsPortion,_=i.eachGeometryNormalsPortion,v=i.eachGeometryColorsPortion,b=i.eachGeometryIndicesPortion,B=i.eachGeometryEdgeIndicesPortion,w=i.eachMeshGeometriesPortion,x=i.eachMeshMatricesPortion,P=i.eachMeshMaterial,C=i.eachEntityId,M=i.eachEntityMeshesPortion,F=i.eachTileAABB,E=i.eachTileEntitiesPortion,I=m.length,D=w.length,S=M.length,T=E.length;r&&r.loadData(a,{includeTypes:t.includeTypes,excludeTypes:t.excludeTypes,globalizeObjectIds:t.globalizeObjectIds});const R=new Uint32Array(I);for(let e=0;e<D;e++){const t=w[e];void 0!==R[t]?R[t]++:R[t]=1}const L=d.vec3(),U=d.AABB3(),k={};for(let i=0;i<T;i++){const r=i===T-1,a=E[i],D=r?S-1:E[i+1]-1,O=6*i,N=F.subarray(O,O+6);d.getAABB3Center(N,L),U[0]=N[0]-L[0],U[1]=N[1]-L[1],U[2]=N[2]-L[2],U[3]=N[3]-L[0],U[4]=N[4]-L[1],U[5]=N[5]-L[2];const Q=Ht.createPositionsDecodeMatrix(U),V={};for(let r=a;r<=D;r++){const a=C[r],F=t.globalizeObjectIds?d.globalizeObjectId(s.id,a):a,E=r===S-1,D=M[r],T=E?w.length-1:M[r+1]-1,O=[],N=e.metaScene.metaObjects[F],H={},j={};if(N){if(t.excludeTypesMap&&N.type&&t.excludeTypesMap[N.type])continue;if(t.includeTypesMap&&N.type&&!t.includeTypesMap[N.type])continue;const e=t.objectDefaults?t.objectDefaults[N.type]||t.objectDefaults.DEFAULT:null;e&&(!1===e.visible&&(H.visible=!1),!1===e.pickable&&(H.pickable=!1),e.colorize&&(j.color=e.colorize),void 0!==e.opacity&&null!==e.opacity&&(j.opacity=e.opacity),void 0!==e.metallic&&null!==e.metallic&&(j.metallic=e.metallic),void 0!==e.roughness&&null!==e.roughness&&(j.roughness=e.roughness))}else if(t.excludeUnclassifiedObjects)continue;for(let e=D;e<=T;e++){const r=w[e],a=R[r]>1,C=r===I-1,M=qC(P.subarray(6*e,6*e+3)),F=P[6*e+3]/255,E=P[6*e+4]/255,D=P[6*e+5]/255,S=o.getNextId();if(a){const o=x[e],a=p.slice(o,o+16),w=`${n}-geometry.${i}.${r}`;let P=k[w];if(!P){P={batchThisMesh:!t.reuseGeometries};let e=!1;switch(g[r]){case 0:P.primitiveName="solid",P.geometryPositions=l.subarray(m[r],C?l.length:m[r+1]),P.geometryNormals=A.subarray(_[r],C?A.length:_[r+1]),P.geometryIndices=c.subarray(b[r],C?c.length:b[r+1]),P.geometryEdgeIndices=u.subarray(B[r],C?u.length:B[r+1]),e=P.geometryPositions.length>0&&P.geometryIndices.length>0;break;case 1:P.primitiveName="surface",P.geometryPositions=l.subarray(m[r],C?l.length:m[r+1]),P.geometryNormals=A.subarray(_[r],C?A.length:_[r+1]),P.geometryIndices=c.subarray(b[r],C?c.length:b[r+1]),P.geometryEdgeIndices=u.subarray(B[r],C?u.length:B[r+1]),e=P.geometryPositions.length>0&&P.geometryIndices.length>0;break;case 2:P.primitiveName="points",P.geometryPositions=l.subarray(m[r],C?l.length:m[r+1]),P.geometryColors=h.subarray(v[r],C?h.length:v[r+1]),e=P.geometryPositions.length>0;break;case 3:P.primitiveName="lines",P.geometryPositions=l.subarray(m[r],C?l.length:m[r+1]),P.geometryIndices=c.subarray(b[r],C?c.length:b[r+1]),e=P.geometryPositions.length>0&&P.geometryIndices.length>0;break;default:continue}if(e||(P=null),P&&(P.geometryPositions.length,P.batchThisMesh)){P.decompressedPositions=new Float32Array(P.geometryPositions.length),P.transformedAndRecompressedPositions=new Uint16Array(P.geometryPositions.length);const e=P.geometryPositions,t=P.decompressedPositions;for(let i=0,s=e.length;i<s;i+=3)t[i+0]=e[i+0]*f[0]+f[12],t[i+1]=e[i+1]*f[5]+f[13],t[i+2]=e[i+2]*f[10]+f[14];P.geometryPositions=null,k[w]=P}}if(P)if(P.batchThisMesh){const e=P.decompressedPositions,t=P.transformedAndRecompressedPositions;for(let i=0,s=e.length;i<s;i+=3)YC[0]=e[i+0],YC[1]=e[i+1],YC[2]=e[i+2],YC[3]=1,d.transformVec4(a,YC,ZC),Ht.compressPosition(ZC,U,YC),t[i+0]=YC[0],t[i+1]=YC[1],t[i+2]=YC[2];s.createMesh(y.apply(j,{id:S,origin:L,primitive:P.primitiveName,positionsCompressed:t,normalsCompressed:P.geometryNormals,colorsCompressed:P.geometryColors,indices:P.geometryIndices,edgeIndices:P.geometryEdgeIndices,positionsDecodeMatrix:Q,color:M,metallic:E,roughness:D,opacity:F})),O.push(S)}else V[w]||(s.createGeometry({id:w,primitive:P.primitiveName,positionsCompressed:P.geometryPositions,normalsCompressed:P.geometryNormals,colorsCompressed:P.geometryColors,indices:P.geometryIndices,edgeIndices:P.geometryEdgeIndices,positionsDecodeMatrix:f}),V[w]=!0),s.createMesh(y.apply(j,{id:S,geometryId:w,origin:L,matrix:a,color:M,metallic:E,roughness:D,opacity:F})),O.push(S)}else{let e,t,i,o,n,a,d=!1;switch(g[r]){case 0:e="solid",t=l.subarray(m[r],C?l.length:m[r+1]),i=A.subarray(_[r],C?A.length:_[r+1]),n=c.subarray(b[r],C?c.length:b[r+1]),a=u.subarray(B[r],C?u.length:B[r+1]),d=t.length>0&&n.length>0;break;case 1:e="surface",t=l.subarray(m[r],C?l.length:m[r+1]),i=A.subarray(_[r],C?A.length:_[r+1]),n=c.subarray(b[r],C?c.length:b[r+1]),a=u.subarray(B[r],C?u.length:B[r+1]),d=t.length>0&&n.length>0;break;case 2:e="points",t=l.subarray(m[r],C?l.length:m[r+1]),o=h.subarray(v[r],C?h.length:v[r+1]),d=t.length>0;break;case 3:e="lines",t=l.subarray(m[r],C?l.length:m[r+1]),n=c.subarray(b[r],C?c.length:b[r+1]),d=t.length>0&&n.length>0;break;default:continue}d&&(s.createMesh(y.apply(j,{id:S,origin:L,primitive:e,positionsCompressed:t,normalsCompressed:i,colorsCompressed:o,indices:n,edgeIndices:a,positionsDecodeMatrix:Q,color:M,metallic:E,roughness:D,opacity:F})),O.push(S))}}O.length>0&&s.createEntity(y.apply(H,{id:F,isObject:!0,meshIds:O}))}}}(e,t,a,s,r,o)}};let eM=window.pako||bC;eM.inflate||(eM=eM.default);const tM=d.vec4(),iM=d.vec4();const sM=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function rM(e,t){const i=[];if(t.length>1)for(let e=0,s=t.length-1;e<s;e++)i.push(t[e]),i.push(t[e+1]);else if(e.length>1)for(let t=0,s=e.length/3-1;t<s;t++)i.push(t),i.push(t+1);return i}!function(){const e=document.createElement("canvas"),t=e.getContext("2d")}();const oM={version:10,parse:function(e,t,i,s,r,o){const n=function(e){let t=0;return{metadata:e[t++],textureData:e[t++],eachTextureDataPortion:e[t++],eachTextureAttributes:e[t++],positions:e[t++],normals:e[t++],colors:e[t++],uvs:e[t++],indices:e[t++],edgeIndices:e[t++],eachTextureSetTextures:e[t++],matrices:e[t++],reusedGeometriesDecodeMatrix:e[t++],eachGeometryPrimitiveType:e[t++],eachGeometryPositionsPortion:e[t++],eachGeometryNormalsPortion:e[t++],eachGeometryColorsPortion:e[t++],eachGeometryUVsPortion:e[t++],eachGeometryIndicesPortion:e[t++],eachGeometryEdgeIndicesPortion:e[t++],eachMeshGeometriesPortion:e[t++],eachMeshMatricesPortion:e[t++],eachMeshTextureSet:e[t++],eachMeshMaterialAttributes:e[t++],eachEntityId:e[t++],eachEntityMeshesPortion:e[t++],eachTileAABB:e[t++],eachTileEntitiesPortion:e[t++]}}(i),a=function(e){function t(e,t){return 0===e.length?[]:eM.inflate(e,t).buffer}return{metadata:JSON.parse(eM.inflate(e.metadata,{to:"string"})),textureData:new Uint8Array(t(e.textureData)),eachTextureDataPortion:new Uint32Array(t(e.eachTextureDataPortion)),eachTextureAttributes:new Uint16Array(t(e.eachTextureAttributes)),positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),colors:new Uint8Array(t(e.colors)),uvs:new Float32Array(t(e.uvs)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),eachTextureSetTextures:new Int32Array(t(e.eachTextureSetTextures)),matrices:new Float32Array(t(e.matrices)),reusedGeometriesDecodeMatrix:new Float32Array(t(e.reusedGeometriesDecodeMatrix)),eachGeometryPrimitiveType:new Uint8Array(t(e.eachGeometryPrimitiveType)),eachGeometryPositionsPortion:new Uint32Array(t(e.eachGeometryPositionsPortion)),eachGeometryNormalsPortion:new Uint32Array(t(e.eachGeometryNormalsPortion)),eachGeometryColorsPortion:new Uint32Array(t(e.eachGeometryColorsPortion)),eachGeometryUVsPortion:new Uint32Array(t(e.eachGeometryUVsPortion)),eachGeometryIndicesPortion:new Uint32Array(t(e.eachGeometryIndicesPortion)),eachGeometryEdgeIndicesPortion:new Uint32Array(t(e.eachGeometryEdgeIndicesPortion)),eachMeshGeometriesPortion:new Uint32Array(t(e.eachMeshGeometriesPortion)),eachMeshMatricesPortion:new Uint32Array(t(e.eachMeshMatricesPortion)),eachMeshTextureSet:new Int32Array(t(e.eachMeshTextureSet)),eachMeshMaterialAttributes:new Uint8Array(t(e.eachMeshMaterialAttributes)),eachEntityId:JSON.parse(eM.inflate(e.eachEntityId,{to:"string"})),eachEntityMeshesPortion:new Uint32Array(t(e.eachEntityMeshesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(n);!function(e,t,i,s,r,o){const n=o.getNextId(),a=i.metadata,l=i.textureData,A=i.eachTextureDataPortion,h=i.eachTextureAttributes,c=i.positions,u=i.normals,p=i.colors,f=i.uvs,g=i.indices,m=i.edgeIndices,_=i.eachTextureSetTextures,v=i.matrices,b=i.reusedGeometriesDecodeMatrix,B=i.eachGeometryPrimitiveType,w=i.eachGeometryPositionsPortion,x=i.eachGeometryNormalsPortion,P=i.eachGeometryColorsPortion,C=i.eachGeometryUVsPortion,M=i.eachGeometryIndicesPortion,F=i.eachGeometryEdgeIndicesPortion,E=i.eachMeshGeometriesPortion,I=i.eachMeshMatricesPortion,D=i.eachMeshTextureSet,S=i.eachMeshMaterialAttributes,T=i.eachEntityId,R=i.eachEntityMeshesPortion,L=i.eachTileAABB,U=i.eachTileEntitiesPortion,k=A.length,O=_.length/5,N=w.length,Q=E.length,V=R.length,H=U.length;r&&r.loadData(a,{includeTypes:t.includeTypes,excludeTypes:t.excludeTypes,globalizeObjectIds:t.globalizeObjectIds});for(let e=0;e<k;e++){const t=e===k-1,i=A[e],r=t?l.length:A[e+1],o=r-i>0,a=9*e,c=1===h[a+0],u=h[a+1];h[a+2],h[a+3];const d=h[a+4],p=h[a+5],f=h[a+6],g=h[a+7],m=h[a+8];if(o){const t=new Uint8Array(l.subarray(i,r)).buffer,o=`${n}-texture-${e}`;if(c)s.createTexture({id:o,buffers:[t],minFilter:d,magFilter:p,wrapS:f,wrapT:g,wrapR:m});else{const e=new Blob([t],{type:10001===u?"image/jpeg":10002===u?"image/png":"image/gif"}),i=(window.URL||window.webkitURL).createObjectURL(e),r=document.createElement("img");r.src=i,s.createTexture({id:o,image:r,minFilter:d,magFilter:p,wrapS:f,wrapT:g,wrapR:m})}}}for(let e=0;e<O;e++){const t=5*e,i=`${n}-textureSet-${e}`,r=_[t+0],o=_[t+1],a=_[t+2],l=_[t+3],A=_[t+4];s.createTextureSet({id:i,colorTextureId:r>=0?`${n}-texture-${r}`:null,normalsTextureId:a>=0?`${n}-texture-${a}`:null,metallicRoughnessTextureId:o>=0?`${n}-texture-${o}`:null,emissiveTextureId:l>=0?`${n}-texture-${l}`:null,occlusionTextureId:A>=0?`${n}-texture-${A}`:null})}const j=new Uint32Array(N);for(let e=0;e<Q;e++){const t=E[e];void 0!==j[t]?j[t]++:j[t]=1}const G=d.vec3(),z=d.AABB3(),W={};for(let i=0;i<H;i++){const r=i===H-1,a=U[i],l=r?V-1:U[i+1]-1,A=6*i,h=L.subarray(A,A+6);d.getAABB3Center(h,G),z[0]=h[0]-G[0],z[1]=h[1]-G[1],z[2]=h[2]-G[2],z[3]=h[3]-G[0],z[4]=h[4]-G[1],z[5]=h[5]-G[2];const _=Ht.createPositionsDecodeMatrix(z),k={};for(let r=a;r<=l;r++){const a=T[r],l=t.globalizeObjectIds?d.globalizeObjectId(s.id,a):a,A=r===V-1,h=R[r],L=A?E.length-1:R[r+1]-1,U=[],O=e.metaScene.metaObjects[l],Q={},H={};if(O){if(t.excludeTypesMap&&O.type&&t.excludeTypesMap[O.type])continue;if(t.includeTypesMap&&O.type&&!t.includeTypesMap[O.type])continue;const e=t.objectDefaults?t.objectDefaults[O.type]||t.objectDefaults.DEFAULT:null;e&&(!1===e.visible&&(Q.visible=!1),!1===e.pickable&&(Q.pickable=!1),e.colorize&&(H.color=e.colorize),void 0!==e.opacity&&null!==e.opacity&&(H.opacity=e.opacity),void 0!==e.metallic&&null!==e.metallic&&(H.metallic=e.metallic),void 0!==e.roughness&&null!==e.roughness&&(H.roughness=e.roughness))}else if(t.excludeUnclassifiedObjects)continue;for(let e=h;e<=L;e++){const r=E[e],a=j[r]>1,l=r===N-1,A=D[e],h=A>=0?`${n}-textureSet-${A}`:null,T=sM(S.subarray(6*e,6*e+3)),R=S[6*e+3]/255,L=S[6*e+4]/255,O=S[6*e+5]/255,Q=o.getNextId();if(a){const o=I[e],a=v.slice(o,o+16),A=`${n}-geometry.${i}.${r}`;let E=W[A];if(!E){E={batchThisMesh:!t.reuseGeometries};let e=!1;switch(B[r]){case 0:E.primitiveName="solid",E.geometryPositions=c.subarray(w[r],l?c.length:w[r+1]),E.geometryNormals=u.subarray(x[r],l?u.length:x[r+1]),E.geometryUVs=f.subarray(C[r],l?f.length:C[r+1]),E.geometryIndices=g.subarray(M[r],l?g.length:M[r+1]),E.geometryEdgeIndices=m.subarray(F[r],l?m.length:F[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 1:E.primitiveName="surface",E.geometryPositions=c.subarray(w[r],l?c.length:w[r+1]),E.geometryNormals=u.subarray(x[r],l?u.length:x[r+1]),E.geometryUVs=f.subarray(C[r],l?f.length:C[r+1]),E.geometryIndices=g.subarray(M[r],l?g.length:M[r+1]),E.geometryEdgeIndices=m.subarray(F[r],l?m.length:F[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 2:E.primitiveName="points",E.geometryPositions=c.subarray(w[r],l?c.length:w[r+1]),E.geometryColors=p.subarray(P[r],l?p.length:P[r+1]),e=E.geometryPositions.length>0;break;case 3:E.primitiveName="lines",E.geometryPositions=c.subarray(w[r],l?c.length:w[r+1]),E.geometryIndices=g.subarray(M[r],l?g.length:M[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 4:E.primitiveName="lines",E.geometryPositions=c.subarray(w[r],l?c.length:w[r+1]),E.geometryIndices=rM(E.geometryPositions,g.subarray(M[r],l?g.length:M[r+1])),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;default:continue}if(e||(E=null),E&&(E.geometryPositions.length,E.batchThisMesh)){E.decompressedPositions=new Float32Array(E.geometryPositions.length),E.transformedAndRecompressedPositions=new Uint16Array(E.geometryPositions.length);const e=E.geometryPositions,t=E.decompressedPositions;for(let i=0,s=e.length;i<s;i+=3)t[i+0]=e[i+0]*b[0]+b[12],t[i+1]=e[i+1]*b[5]+b[13],t[i+2]=e[i+2]*b[10]+b[14];E.geometryPositions=null,W[A]=E}}if(E)if(E.batchThisMesh){const e=E.decompressedPositions,t=E.transformedAndRecompressedPositions;for(let i=0,s=e.length;i<s;i+=3)tM[0]=e[i+0],tM[1]=e[i+1],tM[2]=e[i+2],tM[3]=1,d.transformVec4(a,tM,iM),Ht.compressPosition(iM,z,tM),t[i+0]=tM[0],t[i+1]=tM[1],t[i+2]=tM[2];s.createMesh(y.apply(H,{id:Q,textureSetId:h,origin:G,primitive:E.primitiveName,positionsCompressed:t,normalsCompressed:E.geometryNormals,uv:E.geometryUVs,colorsCompressed:E.geometryColors,indices:E.geometryIndices,edgeIndices:E.geometryEdgeIndices,positionsDecodeMatrix:_,color:T,metallic:L,roughness:O,opacity:R})),U.push(Q)}else k[A]||(s.createGeometry({id:A,primitive:E.primitiveName,positionsCompressed:E.geometryPositions,normalsCompressed:E.geometryNormals,uv:E.geometryUVs,colorsCompressed:E.geometryColors,indices:E.geometryIndices,edgeIndices:E.geometryEdgeIndices,positionsDecodeMatrix:b}),k[A]=!0),s.createMesh(y.apply(H,{id:Q,geometryId:A,textureSetId:h,matrix:a,color:T,metallic:L,roughness:O,opacity:R,origin:G})),U.push(Q)}else{let e,t,i,o,n,a,A,d=!1;switch(B[r]){case 0:e="solid",t=c.subarray(w[r],l?c.length:w[r+1]),i=u.subarray(x[r],l?u.length:x[r+1]),o=f.subarray(C[r],l?f.length:C[r+1]),a=g.subarray(M[r],l?g.length:M[r+1]),A=m.subarray(F[r],l?m.length:F[r+1]),d=t.length>0&&a.length>0;break;case 1:e="surface",t=c.subarray(w[r],l?c.length:w[r+1]),i=u.subarray(x[r],l?u.length:x[r+1]),o=f.subarray(C[r],l?f.length:C[r+1]),a=g.subarray(M[r],l?g.length:M[r+1]),A=m.subarray(F[r],l?m.length:F[r+1]),d=t.length>0&&a.length>0;break;case 2:e="points",t=c.subarray(w[r],l?c.length:w[r+1]),n=p.subarray(P[r],l?p.length:P[r+1]),d=t.length>0;break;case 3:e="lines",t=c.subarray(w[r],l?c.length:w[r+1]),a=g.subarray(M[r],l?g.length:M[r+1]),d=t.length>0&&a.length>0;break;case 4:e="lines",t=c.subarray(w[r],l?c.length:w[r+1]),a=rM(t,g.subarray(M[r],l?g.length:M[r+1])),d=t.length>0&&a.length>0;break;default:continue}d&&(s.createMesh(y.apply(H,{id:Q,textureSetId:h,origin:G,primitive:e,positionsCompressed:t,normalsCompressed:i,uv:o&&o.length>0?o:null,colorsCompressed:n,indices:a,edgeIndices:A,positionsDecodeMatrix:_,color:T,metallic:L,roughness:O,opacity:R})),U.push(Q))}}U.length>0&&s.createEntity(y.apply(Q,{id:l,isObject:!0,meshIds:U}))}}}(e,t,a,s,r,o)}},nM={};nM[wC.version]=wC,nM[CC.version]=CC,nM[EC.version]=EC,nM[SC.version]=SC,nM[LC.version]=LC,nM[OC.version]=OC,nM[HC.version]=HC,nM[XC.version]=XC,nM[$C.version]=$C,nM[oM.version]=oM;class aM extends z{constructor(e,t={}){super("XKTLoader",e,t),this._maxGeometryBatchSize=t.maxGeometryBatchSize,this.textureTranscoder=t.textureTranscoder,this.dataSource=t.dataSource,this.objectDefaults=t.objectDefaults,this.includeTypes=t.includeTypes,this.excludeTypes=t.excludeTypes,this.excludeUnclassifiedObjects=t.excludeUnclassifiedObjects,this.reuseGeometries=t.reuseGeometries}get supportedVersions(){return Object.keys(nM)}get textureTranscoder(){return this._textureTranscoder}set textureTranscoder(e){this._textureTranscoder=e}get dataSource(){return this._dataSource}set dataSource(e){this._dataSource=e||new vC}get objectDefaults(){return this._objectDefaults}set objectDefaults(e){this._objectDefaults=e||vP}get includeTypes(){return this._includeTypes}set includeTypes(e){this._includeTypes=e}get excludeTypes(){return this._excludeTypes}set excludeTypes(e){this._excludeTypes=e}get excludeUnclassifiedObjects(){return this._excludeUnclassifiedObjects}set excludeUnclassifiedObjects(e){this._excludeUnclassifiedObjects=!!e}get globalizeObjectIds(){return this._globalizeObjectIds}set globalizeObjectIds(e){this._globalizeObjectIds=!!e}get reuseGeometries(){return this._reuseGeometries}set reuseGeometries(e){this._reuseGeometries=!1!==e}load(e={}){if(e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id),!(e.src||e.xkt||e.manifestSrc||e.manifest))return this.error("load() param expected: src, xkt, manifestSrc or manifestData"),o;const t={},i=e.includeTypes||this._includeTypes,s=e.excludeTypes||this._excludeTypes,r=e.objectDefaults||this._objectDefaults;if(t.reuseGeometries=null!==e.reuseGeometries&&void 0!==e.reuseGeometries?e.reuseGeometries:!1!==this._reuseGeometries,i){t.includeTypesMap={};for(let e=0,s=i.length;e<s;e++)t.includeTypesMap[i[e]]=!0}if(s){t.excludeTypesMap={};for(let e=0,i=s.length;e<i;e++)t.excludeTypesMap[s[e]]=!0}r&&(t.objectDefaults=r),t.excludeUnclassifiedObjects=void 0!==e.excludeUnclassifiedObjects?!!e.excludeUnclassifiedObjects:this._excludeUnclassifiedObjects,t.globalizeObjectIds=void 0!==e.globalizeObjectIds&&null!==e.globalizeObjectIds?!!e.globalizeObjectIds:this._globalizeObjectIds;const o=new bc(this.viewer.scene,y.apply(e,{isModel:!0,textureTranscoder:this._textureTranscoder,maxGeometryBatchSize:this._maxGeometryBatchSize,origin:e.origin,disableVertexWelding:e.disableVertexWelding||!1,disableIndexRebucketing:e.disableIndexRebucketing||!1,dtxEnabled:e.dtxEnabled})),n=o.id,a=new cd({metaScene:this.viewer.metaScene,id:n});this.viewer.scene.canvas.spinner.processes++;const l=()=>{o.finalize(),a.finalize(),this.viewer.scene.canvas.spinner.processes--,o.once("destroyed",(()=>{this.viewer.metaScene.destroyMetaModel(a.id)})),this.scheduleTask((()=>{o.destroyed||(o.scene.fire("modelLoaded",o.id),o.fire("loaded",!0,!1))}))},A=e=>{this.viewer.scene.canvas.spinner.processes--,this.error(e),o.fire("error",e)};let h=0;const c={getNextId:()=>`${n}.${h++}`};if(e.metaModelSrc||e.metaModelData)if(e.metaModelSrc){const r=e.metaModelSrc;this._dataSource.getMetaModel(r,(r=>{o.destroyed||(a.loadData(r,{includeTypes:i,excludeTypes:s,globalizeObjectIds:t.globalizeObjectIds}),e.src?this._loadModel(e.src,e,t,o,null,c,l,A):(this._parseModel(e.xkt,e,t,o,null,c),l()))}),(e=>{A(`load(): Failed to load model metadata for model '${n} from '${r}' - ${e}`)}))}else e.metaModelData&&(a.loadData(e.metaModelData,{includeTypes:i,excludeTypes:s,globalizeObjectIds:t.globalizeObjectIds}),e.src?this._loadModel(e.src,e,t,o,null,c,l,A):(this._parseModel(e.xkt,e,t,o,null,c),l()));else if(e.src)this._loadModel(e.src,e,t,o,a,c,l,A);else if(e.xkt)this._parseModel(e.xkt,e,t,o,a,c),l();else if(e.manifestSrc||e.manifest){const r=e.manifestSrc?function(e){const t=e.split("/");return t.pop(),t.join("/")+"/"}(e.manifestSrc):"",n=(e,o,n)=>{let l=0;const A=()=>{l>=e.length?o():this._dataSource.getMetaModel(`${r}${e[l]}`,(e=>{a.loadData(e,{includeTypes:i,excludeTypes:s,globalizeObjectIds:t.globalizeObjectIds}),l++,this.scheduleTask(A,100)}),n)};A()},h=(i,s,n)=>{let a=0;const l=()=>{a>=i.length?s():this._dataSource.getXKT(`${r}${i[a]}`,(i=>{this._parseModel(i,e,t,o,null,c),a++,this.scheduleTask(l,100)}),n)};l()},u=(i,s,n)=>{let l=0;const A=()=>{l>=i.length?s():this._dataSource.getXKT(`${r}${i[l]}`,(i=>{this._parseModel(i,e,t,o,a,c),l++,this.scheduleTask(A,100)}),n)};A()};if(e.manifest){const t=e.manifest,i=t.xktFiles;if(!i||0===i.length)return void A("load(): Failed to load model manifest - manifest not valid");const s=t.metaModelFiles;s?n(s,(()=>{h(i,l,A)}),A):u(i,l,A)}else this._dataSource.getManifest(e.manifestSrc,(e=>{if(o.destroyed)return;const t=e.xktFiles;if(!t||0===t.length)return void A("load(): Failed to load model manifest - manifest not valid");const i=e.metaModelFiles;i?n(i,(()=>{h(t,l,A)}),A):u(t,l,A)}),A)}return o}_loadModel(e,t,i,s,r,o,n,a){this._dataSource.getXKT(t.src,(e=>{this._parseModel(e,t,i,s,r,o),n()}),a)}_parseModel(e,t,i,s,r,o){if(s.destroyed)return;const n=new DataView(e),a=new Uint8Array(e),l=n.getUint32(0,!0),A=nM[l];if(!A)return void this.error("Unsupported .XKT file version: "+l+" - this XKTLoaderPlugin supports versions "+Object.keys(nM));this.log("Loading .xkt V"+l);const h=n.getUint32(4,!0),c=[];let u=4*(h+2);for(let e=0;e<h;e++){const t=n.getUint32(4*(e+2),!0);c.push(a.subarray(u,u+t)),u+=t}A.parse(this.viewer,i,c,s,r,o)}}var lM={};!function(e){var t,i="File format is not recognized.",s="Error while reading zip file.",r="Error while reading file data.",o=524288,n="text/plain";try{t=0===new Blob([new DataView(new ArrayBuffer(0))]).size}catch(e){}function a(){this.crc=-1}function l(){}function A(e,t){var i,s;return i=new ArrayBuffer(e),s=new Uint8Array(i),t&&s.set(t,0),{buffer:i,array:s,view:new DataView(i)}}function h(){}function c(e){var t,i=this;i.size=0,i.init=function(s,r){var o=new Blob([e],{type:n});(t=new d(o)).init((function(){i.size=t.size,s()}),r)},i.readUint8Array=function(e,i,s,r){t.readUint8Array(e,i,s,r)}}function u(t){var i,s=this;s.size=0,s.init=function(e){for(var r=t.length;"="==t.charAt(r-1);)r--;i=t.indexOf(",")+1,s.size=Math.floor(.75*(r-i)),e()},s.readUint8Array=function(s,r,o){var n,a=A(r),l=4*Math.floor(s/3),h=4*Math.ceil((s+r)/3),c=e.atob(t.substring(l+i,h+i)),u=s-3*Math.floor(l/4);for(n=u;n<u+r;n++)a.array[n-u]=c.charCodeAt(n);o(a.array)}}function d(e){var t=this;t.size=0,t.init=function(i){t.size=e.size,i()},t.readUint8Array=function(t,i,s,r){var o=new FileReader;o.onload=function(e){s(new Uint8Array(e.target.result))},o.onerror=r;try{o.readAsArrayBuffer(function(e,t,i){if(t<0||i<0||t+i>e.size)throw new RangeError("offset:"+t+", length:"+i+", size:"+e.size);return e.slice?e.slice(t,t+i):e.webkitSlice?e.webkitSlice(t,t+i):e.mozSlice?e.mozSlice(t,t+i):e.msSlice?e.msSlice(t,t+i):void 0}(e,t,i))}catch(e){r(e)}}}function p(){}function f(e){var i,s=this;s.init=function(e){i=new Blob([],{type:n}),e()},s.writeUint8Array=function(e,s){i=new Blob([i,t?e:e.buffer],{type:n}),s()},s.getData=function(t,s){var r=new FileReader;r.onload=function(e){t(e.target.result)},r.onerror=s,r.readAsText(i,e)}}function g(t){var i=this,s="",r="";i.init=function(e){s+="data:"+(t||"")+";base64,",e()},i.writeUint8Array=function(t,i){var o,n=r.length,a=r;for(r="",o=0;o<3*Math.floor((n+t.length)/3)-n;o++)a+=String.fromCharCode(t[o]);for(;o<t.length;o++)r+=String.fromCharCode(t[o]);a.length>2?s+=e.btoa(a):r=a,i()},i.getData=function(t){t(s+e.btoa(r))}}function m(e){var i,s=this;s.init=function(t){i=new Blob([],{type:e}),t()},s.writeUint8Array=function(s,r){i=new Blob([i,t?s:s.buffer],{type:e}),r()},s.getData=function(e){e(i)}}function _(e,t,i,s,r,n,a,l,A,h){var c,u,d,p=0,f=t.sn;function g(){e.removeEventListener("message",m,!1),l(u,d)}function m(t){var i=t.data,r=i.data,o=i.error;if(o)return o.toString=function(){return"Error: "+this.message},void A(o);if(i.sn===f)switch("number"==typeof i.codecTime&&(e.codecTime+=i.codecTime),"number"==typeof i.crcTime&&(e.crcTime+=i.crcTime),i.type){case"append":r?(u+=r.length,s.writeUint8Array(r,(function(){_()}),h)):_();break;case"flush":d=i.crc,r?(u+=r.length,s.writeUint8Array(r,(function(){g()}),h)):g();break;case"progress":a&&a(c+i.loaded,n);break;case"importScripts":case"newTask":case"echo":break;default:console.warn("zip.js:launchWorkerProcess: unknown message: ",i)}}function _(){(c=p*o)<=n?i.readUint8Array(r+c,Math.min(o,n-c),(function(i){a&&a(c,n);var s=0===c?t:{sn:f};s.type="append",s.data=i;try{e.postMessage(s,[i.buffer])}catch(t){e.postMessage(s)}p++}),A):e.postMessage({sn:f,type:"flush"})}u=0,e.addEventListener("message",m,!1),_()}function v(e,t,i,s,r,n,l,A,h,c){var u,d=0,p=0,f="input"===n,g="output"===n,m=new a;!function n(){var a;if((u=d*o)<r)t.readUint8Array(s+u,Math.min(o,r-u),(function(t){var s;try{s=e.append(t,(function(e){l&&l(u+e,r)}))}catch(e){return void h(e)}s?(p+=s.length,i.writeUint8Array(s,(function(){d++,setTimeout(n,1)}),c),g&&m.append(s)):(d++,setTimeout(n,1)),f&&m.append(t),l&&l(u,r)}),h);else{try{a=e.flush()}catch(e){return void h(e)}a?(g&&m.append(a),p+=a.length,i.writeUint8Array(a,(function(){A(p,m.get())}),c)):A(p,m.get())}}()}function b(t,i,s,r,o,n,a,A,h,c,u){var d="input";e.zip.useWebWorkers&&a?_(t,{sn:i,codecClass:"NOOP",crcType:d},s,r,o,n,h,A,c,u):v(new l,s,r,o,n,d,h,A,c,u)}function y(e){var t,i,s="",r=["Ç","ü","é","â","ä","à","å","ç","ê","ë","è","ï","î","ì","Ä","Å","É","æ","Æ","ô","ö","ò","û","ù","ÿ","Ö","Ü","ø","£","Ø","×","ƒ","á","í","ó","ú","ñ","Ñ","ª","º","¿","®","¬","½","¼","¡","«","»","_","_","_","¦","¦","Á","Â","À","©","¦","¦","+","+","¢","¥","+","+","-","-","+","-","+","ã","Ã","+","+","-","-","¦","-","+","¤","ð","Ð","Ê","Ë","È","i","Í","Î","Ï","+","+","_","_","¦","Ì","_","Ó","ß","Ô","Ò","õ","Õ","µ","þ","Þ","Ú","Û","Ù","ý","Ý","¯","´","­","±","_","¾","¶","§","÷","¸","°","¨","·","¹","³","²","_"," "];for(t=0;t<e.length;t++)s+=(i=255&e.charCodeAt(t))>127?r[i-128]:String.fromCharCode(i);return s}function B(e){return decodeURIComponent(escape(e))}function w(e){var t,i="";for(t=0;t<e.length;t++)i+=String.fromCharCode(e[t]);return i}function x(e,t,i,s,r){e.version=t.view.getUint16(i,!0),e.bitFlag=t.view.getUint16(i+2,!0),e.compressionMethod=t.view.getUint16(i+4,!0),e.lastModDateRaw=t.view.getUint32(i+6,!0),e.lastModDate=function(e){var t=(4294901760&e)>>16,i=65535&e;try{return new Date(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&i)>>11,(2016&i)>>5,2*(31&i),0)}catch(e){}}(e.lastModDateRaw),1!=(1&e.bitFlag)?((s||8!=(8&e.bitFlag))&&(e.crc32=t.view.getUint32(i+10,!0),e.compressedSize=t.view.getUint32(i+14,!0),e.uncompressedSize=t.view.getUint32(i+18,!0)),4294967295!==e.compressedSize&&4294967295!==e.uncompressedSize?(e.filenameLength=t.view.getUint16(i+22,!0),e.extraFieldLength=t.view.getUint16(i+24,!0)):r("File is using Zip64 (4gb+ file size).")):r("File contains encrypted entry.")}function P(t,o,n){var a=0;function l(){}l.prototype.getData=function(s,o,l,h){var c=this;function u(e,t){h&&!function(e){var t=A(4);return t.view.setUint32(0,e),c.crc32==t.view.getUint32(0)}(t)?n("CRC failed."):s.getData((function(e){o(e)}))}function d(e){n(e||r)}function p(e){n(e||"Error while writing file data.")}t.readUint8Array(c.offset,30,(function(r){var o,f=A(r.length,r);1347093252==f.view.getUint32(0)?(x(c,f,4,!1,n),o=c.offset+30+c.filenameLength+c.extraFieldLength,s.init((function(){0===c.compressionMethod?b(c._worker,a++,t,s,o,c.compressedSize,h,u,l,d,p):function(t,i,s,r,o,n,a,l,A,h,c){var u=a?"output":"none";e.zip.useWebWorkers?_(t,{sn:i,codecClass:"Inflater",crcType:u},s,r,o,n,A,l,h,c):v(new e.zip.Inflater,s,r,o,n,u,A,l,h,c)}(c._worker,a++,t,s,o,c.compressedSize,h,u,l,d,p)}),p)):n(i)}),d)};var h={getEntries:function(e){var r=this._worker;!function(e){t.size<22?n(i):r(22,(function(){r(Math.min(65558,t.size),(function(){n(i)}))}));function r(i,r){t.readUint8Array(t.size-i,i,(function(t){for(var i=t.length-22;i>=0;i--)if(80===t[i]&&75===t[i+1]&&5===t[i+2]&&6===t[i+3])return void e(new DataView(t.buffer,i,22));r()}),(function(){n(s)}))}}((function(o){var a,h;a=o.getUint32(16,!0),h=o.getUint16(8,!0),a<0||a>=t.size?n(i):t.readUint8Array(a,t.size-a,(function(t){var s,o,a,c,u=0,d=[],p=A(t.length,t);for(s=0;s<h;s++){if((o=new l)._worker=r,1347092738!=p.view.getUint32(u))return void n(i);x(o,p,u+6,!0,n),o.commentLength=p.view.getUint16(u+32,!0),o.directory=16==(16&p.view.getUint8(u+38)),o.offset=p.view.getUint32(u+42,!0),a=w(p.array.subarray(u+46,u+46+o.filenameLength)),o.filename=2048==(2048&o.bitFlag)?B(a):y(a),o.directory||"/"!=o.filename.charAt(o.filename.length-1)||(o.directory=!0),c=w(p.array.subarray(u+46+o.filenameLength+o.extraFieldLength,u+46+o.filenameLength+o.extraFieldLength+o.commentLength)),o.comment=2048==(2048&o.bitFlag)?B(c):y(c),d.push(o),u+=46+o.filenameLength+o.extraFieldLength+o.commentLength}e(d)}),(function(){n(s)}))}))},close:function(e){this._worker&&(this._worker.terminate(),this._worker=null),e&&e()},_worker:null};e.zip.useWebWorkers?I("inflater",(function(e){h._worker=e,o(h)}),(function(e){n(e)})):o(h)}function C(e){return unescape(encodeURIComponent(e))}function M(e){var t,i=[];for(t=0;t<e.length;t++)i.push(e.charCodeAt(t));return i}function F(t,i,s,o){var n={},a=[],l=0,h=0;function c(e){s(e||"Error while writing zip file.")}function u(e){s(e||r)}var d={add:function(i,r,d,p,f){var g,m,y,B=this._worker;function w(e,i){var s=A(16);l+=e||0,s.view.setUint32(0,1347094280),void 0!==i&&(g.view.setUint32(10,i,!0),s.view.setUint32(4,i,!0)),r&&(s.view.setUint32(8,e,!0),g.view.setUint32(14,e,!0),s.view.setUint32(12,r.size,!0),g.view.setUint32(18,r.size,!0)),t.writeUint8Array(s.array,(function(){l+=16,d()}),c)}function x(){f=f||{},i=i.trim(),f.directory&&"/"!=i.charAt(i.length-1)&&(i+="/"),n.hasOwnProperty(i)?s("File already exists."):(m=M(C(i)),a.push(i),function(e){var s;y=f.lastModDate||new Date,g=A(26),n[i]={headerArray:g.array,directory:f.directory,filename:m,offset:l,comment:M(C(f.comment||""))},g.view.setUint32(0,335546376),f.version&&g.view.setUint8(0,f.version),o||0===f.level||f.directory||g.view.setUint16(4,2048),g.view.setUint16(6,(y.getHours()<<6|y.getMinutes())<<5|y.getSeconds()/2,!0),g.view.setUint16(8,(y.getFullYear()-1980<<4|y.getMonth()+1)<<5|y.getDate(),!0),g.view.setUint16(22,m.length,!0),(s=A(30+m.length)).view.setUint32(0,1347093252),s.array.set(g.array,4),s.array.set(m,30),l+=s.array.length,t.writeUint8Array(s.array,e,c)}((function(){r?o||0===f.level?b(B,h++,r,t,0,r.size,!0,w,p,u,c):function(t,i,s,r,o,n,a,l,A){var h="input";e.zip.useWebWorkers?_(t,{sn:i,options:{level:o},codecClass:"Deflater",crcType:h},s,r,0,s.size,a,n,l,A):v(new e.zip.Deflater,s,r,0,s.size,h,a,n,l,A)}(B,h++,r,t,f.level,w,p,u,c):w()})))}r?r.init(x,u):x()},close:function(e){this._worker&&(this._worker.terminate(),this._worker=null);var i,s,r,o=0,h=0;for(s=0;s<a.length;s++)o+=46+(r=n[a[s]]).filename.length+r.comment.length;for(i=A(o+22),s=0;s<a.length;s++)r=n[a[s]],i.view.setUint32(h,1347092738),i.view.setUint16(h+4,5120),i.array.set(r.headerArray,h+6),i.view.setUint16(h+32,r.comment.length,!0),r.directory&&i.view.setUint8(h+38,16),i.view.setUint32(h+42,r.offset,!0),i.array.set(r.filename,h+46),i.array.set(r.comment,h+46+r.filename.length),h+=46+r.filename.length+r.comment.length;i.view.setUint32(h,1347093766),i.view.setUint16(h+8,a.length,!0),i.view.setUint16(h+10,a.length,!0),i.view.setUint32(h+12,o,!0),i.view.setUint32(h+16,l,!0),t.writeUint8Array(i.array,(function(){t.getData(e)}),c)},_worker:null};e.zip.useWebWorkers?I("deflater",(function(e){d._worker=e,i(d)}),(function(e){s(e)})):i(d)}a.prototype.append=function(e){for(var t=0|this.crc,i=this.table,s=0,r=0|e.length;s<r;s++)t=t>>>8^i[255&(t^e[s])];this.crc=t},a.prototype.get=function(){return~this.crc},a.prototype.table=function(){var e,t,i,s=[];for(e=0;e<256;e++){for(i=e,t=0;t<8;t++)1&i?i=i>>>1^3988292384:i>>>=1;s[e]=i}return s}(),l.prototype.append=function(e,t){return e},l.prototype.flush=function(){},c.prototype=new h,c.prototype.constructor=c,u.prototype=new h,u.prototype.constructor=u,d.prototype=new h,d.prototype.constructor=d,p.prototype.getData=function(e){e(this.data)},f.prototype=new p,f.prototype.constructor=f,g.prototype=new p,g.prototype.constructor=g,m.prototype=new p,m.prototype.constructor=m;var E={deflater:["z-worker.js","deflate.js"],inflater:["z-worker.js","inflate.js"]};function I(t,i,s){if(null===e.zip.workerScripts||null===e.zip.workerScriptsPath){var r;if(e.zip.workerScripts){if(r=e.zip.workerScripts[t],!Array.isArray(r))return void s(new Error("zip.workerScripts."+t+" is not an array!"));r=function(e){var t=document.createElement("a");return e.map((function(e){return t.href=e,t.href}))}(r)}else(r=E[t].slice(0))[0]=(e.zip.workerScriptsPath||"")+r[0];var o=new Worker(r[0]);o.codecTime=o.crcTime=0,o.postMessage({type:"importScripts",scripts:r.slice(1)}),o.addEventListener("message",(function e(t){var r=t.data;if(r.error)return o.terminate(),void s(r.error);"importScripts"===r.type&&(o.removeEventListener("message",e),o.removeEventListener("error",n),i(o))})),o.addEventListener("error",n)}else s(new Error("Either zip.workerScripts or zip.workerScriptsPath may be set, not both."));function n(e){o.terminate(),s(e)}}function D(e){console.error(e)}e.zip={Reader:h,Writer:p,BlobReader:d,Data64URIReader:u,TextReader:c,BlobWriter:m,Data64URIWriter:g,TextWriter:f,createReader:function(e,t,i){i=i||D,e.init((function(){P(e,t,i)}),i)},createWriter:function(e,t,i,s){i=i||D,s=!!s,e.init((function(){F(e,t,i,s)}),i)},useWebWorkers:!0,workerScriptsPath:null,workerScripts:null}}(lM);const AM=lM.zip;!function(e){var t,i,s=e.Reader,r=e.Writer;try{i=0===new Blob([new DataView(new ArrayBuffer(0))]).size}catch(e){}function o(e){var t=this;function i(i,s){var r;t.data?i():((r=new XMLHttpRequest).addEventListener("load",(function(){t.size||(t.size=Number(r.getResponseHeader("Content-Length"))||Number(r.response.byteLength)),t.data=new Uint8Array(r.response),i()}),!1),r.addEventListener("error",s,!1),r.open("GET",e),r.responseType="arraybuffer",r.send())}t.size=0,t.init=function(s,r){if(function(e){var t=document.createElement("a");return t.href=e,"http:"===t.protocol||"https:"===t.protocol}(e)){var o=new XMLHttpRequest;o.addEventListener("load",(function(){t.size=Number(o.getResponseHeader("Content-Length")),t.size?s():i(s,r)}),!1),o.addEventListener("error",r,!1),o.open("HEAD",e),o.send()}else i(s,r)},t.readUint8Array=function(e,s,r,o){i((function(){r(new Uint8Array(t.data.subarray(e,e+s)))}),o)}}function n(e){var t=this;t.size=0,t.init=function(i,s){var r=new XMLHttpRequest;r.addEventListener("load",(function(){t.size=Number(r.getResponseHeader("Content-Length")),"bytes"==r.getResponseHeader("Accept-Ranges")?i():s("HTTP Range not supported.")}),!1),r.addEventListener("error",s,!1),r.open("HEAD",e),r.send()},t.readUint8Array=function(t,i,s,r){!function(t,i,s,r){var o=new XMLHttpRequest;o.open("GET",e),o.responseType="arraybuffer",o.setRequestHeader("Range","bytes="+t+"-"+(t+i-1)),o.addEventListener("load",(function(){s(o.response)}),!1),o.addEventListener("error",r,!1),o.send()}(t,i,(function(e){s(new Uint8Array(e))}),r)}}function a(e){var t=this;t.size=0,t.init=function(i,s){t.size=e.byteLength,i()},t.readUint8Array=function(t,i,s,r){s(new Uint8Array(e.slice(t,t+i)))}}function l(){var e,t=this;t.init=function(t,i){e=new Uint8Array,t()},t.writeUint8Array=function(t,i,s){var r=new Uint8Array(e.length+t.length);r.set(e),r.set(t,e.length),e=r,i()},t.getData=function(t){t(e.buffer)}}function A(e,t){var s,r=this;r.init=function(t,i){e.createWriter((function(e){s=e,t()}),i)},r.writeUint8Array=function(e,r,o){var n=new Blob([i?e:e.buffer],{type:t});s.onwrite=function(){s.onwrite=null,r()},s.onerror=o,s.write(n)},r.getData=function(t){e.file(t)}}o.prototype=new s,o.prototype.constructor=o,n.prototype=new s,n.prototype.constructor=n,a.prototype=new s,a.prototype.constructor=a,l.prototype=new r,l.prototype.constructor=l,A.prototype=new r,A.prototype.constructor=A,e.FileWriter=A,e.HttpReader=o,e.HttpRangeReader=n,e.ArrayBufferReader=a,e.ArrayBufferWriter=l,e.fs&&((t=e.fs.ZipDirectoryEntry).prototype.addHttpContent=function(i,s,r){return function(i,s,r,o){if(i.directory)return o?new t(i.fs,s,r,i):new e.fs.ZipFileEntry(i.fs,s,r,i);throw"Parent entry is not a directory."}(this,i,{data:s,Reader:r?n:o})},t.prototype.importHttpContent=function(e,t,i,s){this.importZip(t?new n(e):new o(e),i,s)},e.fs.FS.prototype.importHttpContent=function(e,i,s,r){this.entries=[],this.root=new t(this),this.root.importHttpContent(e,i,s,r)})}(AM);const hM=["4.2"];class cM{constructor(e,t={}){this.supportedSchemas=hM,this._xrayOpacity=.7,this._src=null,this._options=t,this.viewpoint=null,t.workerScriptsPath?(AM.workerScriptsPath=t.workerScriptsPath,this.src=t.src,this.xrayOpacity=.7,this.displayEffect=t.displayEffect,this.createMetaModel=t.createMetaModel):e.error("Config expected: workerScriptsPath")}load(e,t,i,s,r,o){switch(s.materialType){case"MetallicMaterial":t._defaultMaterial=new Ur(t,{baseColor:[1,1,1],metallic:.6,roughness:.6});break;case"SpecularMaterial":t._defaultMaterial=new Nr(t,{diffuse:[1,1,1],specular:d.vec3([1,1,1]),glossiness:.5});break;default:t._defaultMaterial=new Yt(t,{reflectivity:.75,shiness:100,diffuse:[1,1,1]})}t._wireframeMaterial=new Tr(t,{color:[0,0,0],lineWidth:2});var n=t.scene.canvas.spinner;n.processes++,uM(e,t,i,s,(function(){n.processes--,r&&r(),t.fire("loaded",!0,!1)}),(function(e){n.processes--,t.error(e),o&&o(e),t.fire("error",e)}),(function(e){console.log("Error, Will Robinson: "+e)}))}}var uM=function(e,t,i,s,r,o){!function(e,t,i){var s=new bM;s.load(e,(function(){t(s)}),(function(e){i("Error loading ZIP archive: "+e)}))}(i,(function(i){dM(e,i,s,t,r,o)}),o)},dM=function(){return function(t,i,s,r,o){var n={plugin:t,zip:i,edgeThreshold:30,materialType:s.materialType,scene:r.scene,modelNode:r,info:{references:{}},materials:{}};s.createMetaModel&&(n.metaModelData={modelId:r.id,metaObjects:[{name:r.id,type:"Default",id:r.id}]}),r.scene.loading++,function(t,i){t.zip.getFile("Manifest.xml",(function(s,r){for(var o=r.children,n=0,a=o.length;n<a;n++){var l=o[n];if("Manifest"===l.type)e(t,l,i)}}))}(n,(function(){n.metaModelData&&t.viewer.metaScene.createMetaModel(r.id,n.metaModelData),r.scene.loading--,o()}))};function e(e,i,s){for(var r=i.children,o=0,n=r.length;o<n;o++){var a=r[o];if("Root"===a.type){var l=a.children[0];e.zip.getFile(l,(function(i,r){t(e,r,s)}))}}}function t(e,t,s){for(var r=t.children,o=0,n=r.length;o<n;o++){var a=r[o];if("Model_3dxml"===a.type)i(e,a,s)}}function i(e,t,i){for(var r=t.children,a=0,l=r.length;a<l;a++){var A=r[a];switch(A.type){case"Header":s(e,A);break;case"ProductStructure":o(e,A,i);break;case"DefaultView":n(e,A)}}}function s(e,t){for(var i=t.children,s={},o=0,n=i.length;o<n;o++){var a=i[o];switch(a.type){case"SchemaVersion":s.schemaVersion=a.children[0],r(e,s.schemaVersion)||e.plugin.error("Schema version not supported: "+s.schemaVersion+" - supported versions are: "+hM.join(","));break;case"Title":s.title=a.children[0];break;case"Author":s.author=a.children[0];break;case"Created":s.created=a.children[0]}}e.modelNode.meta=s}function r(e,t){for(var i=0,s=hM.length;i<s;i++)if(t===hM[i])return!0;return!1}function o(e,t,i){!function(e,t,i){for(var s={},r=t.children,o=0,n=0,l=r.length;n<l;n++){"ReferenceRep"===(A=r[n]).type&&o++}for(n=0,l=r.length;n<l;n++){var A;if("ReferenceRep"===(A=r[n]).type)if(A.associatedFile){var h=yM(A.associatedFile);!function(){var t=A.id;e.zip.getFile(h,(function(r,n){var l=r.getElementsByTagName("MaterialId");pM(e,l,(function(){var r={id:t};a(e,n,r),s[t]=r,0==--o&&i(s)}))}),(function(e){}))}()}}}(e,t,(function(s){for(var r=t.children,o={},n={},a={},l=0,A=r.length;l<A;l++){var h=r[l];switch(h.type){case"Reference3D":o[h.id]={type:"Reference3D",id:h.id,name:h.name,instance3Ds:{},instanceReps:{}};break;case"InstanceRep":for(var c=0,u=h.children.length;c<u;c++){switch((_=h.children[c]).type){case"IsAggregatedBy":p=_.children[0];break;case"IsInstanceOf":f=_.children[0]}}n[h.id]={type:"InstanceRep",id:h.id,name:h.name,isAggregatedBy:p,isInstanceOf:f,referenceReps:{}};break;case"Instance3D":var p,f,m;for(c=0,u=h.children.length;c<u;c++){var _;switch((_=h.children[c]).type){case"IsAggregatedBy":p=_.children[0];break;case"IsInstanceOf":f=_.children[0];break;case"RelativeMatrix":m=_.children[0]}}a[h.id]={type:"Instance3D",id:h.id,name:h.name,isAggregatedBy:p,isInstanceOf:f,relativeMatrix:m,reference3Ds:{}}}}for(var v in a){(y=o[(b=a[v]).isAggregatedBy])?y.instance3Ds[b.id]=b:alert("foo")}for(var v in a){var b,y=o[(b=a[v]).isInstanceOf];b.reference3Ds[y.id]=y,y.instance3D=b}for(var v in n){var B=s[(w=n[v]).isInstanceOf];B&&(w.referenceReps[B.id]=B)}for(var v in n){var w;(y=o[(w=n[v]).isAggregatedBy])&&(y.instanceReps[w.id]=w)}function x(e,t,i){for(var s in t.instance3Ds)P(e,t.instance3Ds[s],i);for(var s in t.instanceReps)C(e,t.instanceReps[s],i)}function P(e,t,i){if(t.relativeMatrix){var s=g(t.relativeMatrix,12),r=[s[9],s[10],s[11]],o=s.slice(0,9),n=d.mat3ToMat4(o,d.identityMat4()),a=new Sr(e.modelNode,{position:r});e.metaModelData&&e.metaModelData.metaObjects.push({id:a.id,type:"Default",name:t.name,parent:i?i.id:e.modelNode.id}),i?i.addChild(a,!0):e.modelNode.addChild(a,!0),i=a,a=new Sr(e.modelNode,{matrix:n}),e.metaModelData&&e.metaModelData.metaObjects.push({id:a.id,type:"Default",name:t.name,parent:i?i.id:e.modelNode.id}),i.addChild(a,!0),i=a}else{a=new Sr(e.modelNode,{});e.metaModelData&&e.metaModelData.metaObjects.push({id:a.id,type:"Default",name:t.name,parent:i?i.id:e.modelNode.id}),i?i.addChild(a,!0):e.modelNode.addChild(a,!0),i=a}for(var l in t.reference3Ds)x(e,t.reference3Ds[l],i)}function C(e,t,i){if(t.referenceReps)for(var s in t.referenceReps){var r=t.referenceReps[s];for(var o in r)if("id"!==o){var n=r[o],a="lines"===n.geometry.primitive?e.modelNode._wireframeMaterial:n.materialId?e.materials[n.materialId]:null,l=n.color,A=new fr(e.modelNode,{isObject:!0,geometry:n.geometry,material:a||e.modelNode._defaultMaterial,colorize:l,backfaces:!1});e.metaModelData&&e.metaModelData.metaObjects.push({id:A.id,type:"Default",name:t.name,parent:i?i.id:e.modelNode.id}),i?i.addChild(A,!0):e.modelNode.addChild(A,!0),A.colorize=l}}}for(var v in o){if(!(y=o[v]).instance3D)return x(e,y,null),void i()}alert("No root Reference3D element found in this modelNode - can't load."),i()}))}function n(e,t){for(var i=t.children,s=0,r=i.length;s<r;s++){var o=i[s];if("Viewpoint"===o.type){var n=o.children;e.modelNode.viewpoint={};for(var a=0,l=n.length;a<l;a++){var A=n[s];switch(A.type){case"Position":e.modelNode.viewpoint.eye=g(A.children[0],3);break;case"Sight":e.modelNode.viewpoint.look=g(A.children[0],3);break;case"Up":e.modelNode.viewpoint.up=g(A.children[0],3)}}}}}function a(e,t,i){for(var s=t.children,r=0,o=s.length;r<o;r++){var n=s[r];if("XMLRepresentation"===n.type)l(e,n,i)}}function l(e,t,i){for(var s=t.children,r=0,o=s.length;r<o;r++){var n=s[r];if("Root"===n.type)A(e,n,i)}}function A(e,t,i){t["xsi:type"];for(var s=t.children,r=0,o=s.length;r<o;r++){var n=s[r];if("Rep"===n.type)h(e,n,i)}}function h(e,t,i){t["xsi:type"];for(var s={edgeThreshold:e.edgeThreshold||30,compressGeometry:!0},r=t.children,o=0,n=r.length;o<n;o++){var a=r[o];switch(a.type){case"Rep":h(e,a,i);break;case"Edges":break;case"Faces":s.primitive="triangles",c(e,a,s);break;case"VertexBuffer":f(e,a,s);break;case"SurfaceAttributes":m(e,a,s)}}if(s.positions){var l=new zt(e.modelNode,s);i[l.id]={geometry:l,color:s.color||[1,1,1,1],materialId:s.materialId}}}function c(e,t,i){for(var s=t.children,r=0,o=s.length;r<o;r++){var n=s[r];if("Face"===n.type)u(e,n,i)}}function u(e,t,i){var s=t.strips;if(s){var r=function(e){for(var t=e.split(","),i=[],s=0,r=t.length;s<r;s++){var o=t[s].trim();if(o.length>0){for(var n=o.trim().split(" "),a=new Int16Array(n.length),l=0,A=0,h=n.length;A<h;A++)""!==n[A]&&(a[l++]=parseInt(n[A]));i.push(a)}}return i}(s);if(r.length>0){i.primitive="triangles";for(var o=[],n=0,a=r.length;n<a;n++)for(var l=p(r[n]),A=0,h=l.length;A<h;A++)o.push(l[A]);i.indices=o}}else{var c=t.triangles;c&&(i.primitive="triangles",i.indices=function(e){e=e.trim().split(" ");for(var t=new Int32Array(e.length),i=0,s=e.length;i<s;i++){var r=e[i];t[i]=parseInt(r)}return t}(c))}var u=t.children;for(n=0,a=u.length;n<a;n++){var d=u[n];if("SurfaceAttributes"===d.type)m(e,d,i)}}function p(e){for(var t=[],i=0,s=e.length;i<s-2;i++)1&i?(t.push(e[i]),t.push(e[i+2]),t.push(e[i+1])):(t.push(e[i]),t.push(e[i+1]),t.push(e[i+2]));return t}function f(e,t,i){for(var s=t.children,r=0,o=s.length;r<o;r++){var n=s[r];switch(n.type){case"Positions":i.positions=g(n.children[0],3);break;case"Normals":i.normals=g(n.children[0],3);break;case"TextureCoordinates":i.uv=g(n.children[0],2)}}}function g(e,t){e=e.split(",");for(var i=new Float32Array(e.length*t),s=0,r=0,o=e.length;r<o;r++)for(var n=e[r],a=0,l=(n=n.split(" ")).length;a<l;a++)""!==n[a]&&(i[s++]=parseFloat(n[a]));return i}function m(e,t,i){i.color=[1,1,1,1];for(var s,r,o=t.children,n=0,a=o.length;n<a;n++){var l=o[n];switch(l.type){case"Color":i.color[0]=l.red,i.color[1]=l.green,i.color[2]=l.blue,i.color[3]=l.alpha;break;case"MaterialApplication":for(var A=l.children,h=0,c=A.length;h<c;h++){var u=A[h];if("MaterialId"===u.type){var d=(s=u.id,r=void 0,-1!==(r=s.lastIndexOf("#"))?s.substring(r+1):s);e.materials[d]||e.plugin.error("material not found: "+d),i.materialId=d}}}}}}();function pM(e,t,i){var s={};!function r(o,n){if(o>=t.length)i();else{var a=t[o].id,l=a.lastIndexOf(":");l>0&&(a=a.substring(l+1));var A=a.lastIndexOf("#");A>0&&(a=a.substring(0,A)),s[a]?r(o+1):function(e,t,i){e.zip.getFile(t,(function(t,s){!function(e,t,i){for(var s,r=t.children,o=0,n=r.length;o<n;o++)"Model_3dxml"===(s=r[o]).type&&fM(e,s,i)}(e,s,i)}))}(e,a,(function(){s[a]=!0,r(o+1)}))}}(0)}function fM(e,t,i){for(var s,r=t.children,o=0,n=r.length;o<n;o++)"CATMaterialRef"===(s=r[o]).type&&gM(e,s,i)}function gM(e,t,i){for(var s={},r=t.children,o=0,n=0,a=r.length;n<a;n++){if("MaterialDomainInstance"===(d=r[n]).type){for(var l,A,h=0,c=d.children.length;h<c;h++){var u=d.children[h];switch(u.type){case"IsAggregatedBy":l=u.children[0];break;case"IsInstanceOf":A=u.children[0]}}s[A]=l}}for(n=0,a=r.length;n<a;n++){if("MaterialDomain"===(d=r[n]).type)o++}for(n=0,a=r.length;n<a;n++){var d;if("MaterialDomain"===(d=r[n]).type)d.associatedFile&&function(){var t=d.id,r=yM(d.associatedFile);e.zip.getFile(r,(function(r,n){e.materials[s[t]]=mM(e,n),0==--o&&i()}),(function(e){}))}()}}function mM(e,t){for(var i=t.children,s=0,r=i.length;s<r;s++){var o=i[s];if("Osm"===o.type)return _M(e,o)}}function _M(e,t){for(var i=t.children,s=0,r=i.length;s<r;s++){var o=i[s];switch(o.type){case"RenderingRootFeature":break;case"Feature":if("RenderingFeature"===o.Alias){var n,a,l,A,h={},c={},u=o.children;for(n=0,a=u.length;n<a;n++)switch((l=u[n]).Name){case"AmbientCoef":h.ambient=parseFloat(l.Value);break;case"DiffuseCoef":h.diffuse=parseFloat(l.Value);break;case"EmissiveCoef":h.emissive=parseFloat(l.Value);break;case"SpecularExponent":h.specular=parseFloat(l.Value)}for(n=0,a=u.length;n<a;n++)switch((l=u[n]).Name){case"AmbientColor":c.ambient=vM(l.Value,h.ambient);break;case"DiffuseColor":c.diffuse=vM(l.Value,h.diffuse);break;case"EmissiveColor":c.emissive=vM(l.Value,h.emissive);break;case"SpecularColor":c.specular=vM(l.Value,h.specular);break;case"Transparency":var d=1-parseFloat(l.Value);d<1&&(c.alpha=d,c.alphaMode="blend")}switch(e.materialType){case"MetallicMaterial":A=new Ur(e.modelNode,{baseColor:c.diffuse,metallic:.7,roughness:.5,emissive:c.emissive,alpha:c.alpha,alphaMode:c.alphaMode});break;case"SpecularMaterial":A=new Nr(e.modelNode,{diffuse:c.diffuse,specular:c.specular,glossiness:.5,emissive:c.emissive,alpha:c.alpha,alphaMode:c.alphaMode});break;default:A=new Yt(e.modelNode,{reflectivity:.5,ambient:c.ambient,diffuse:c.diffuse,specular:c.specular,emissive:c.emissive,alphaMode:c.alphaMode,alpha:t.alpha})}return A}}}}function vM(e,t){t=void 0!==t?t:.5;var i=e.indexOf("["),s=e.indexOf("]");e=(e=e.substring(i+1,s-i)).split(",");for(var r=new Float32Array(e.length),o=0,n=0,a=e.length;n<a;n++)for(var l=e[n],A=0,h=(l=l.trim().split(" ")).length;A<h;A++)""!==l[A]&&(r[o++]=parseFloat(l[A])*t);return r}var bM=function(){var e={};function t(e,i){if(e.nodeType===e.TEXT_NODE){var s=e.nodeValue;if(null===s.match(/^\s+$/))return s}else if(e.nodeType===e.ELEMENT_NODE||e.nodeType===e.DOCUMENT_NODE){var r={type:e.nodeName,children:[]};if(e.nodeType===e.ELEMENT_NODE)for(var o=0;o<e.attributes.length;o++){var n=e.attributes[o];r[i[n.nodeName]||n.nodeName]=n.nodeValue}for(var a=0;a<e.childNodes.length;a++){(o=t(e.childNodes[a],i))&&r.children.push(o)}return r}}this.load=function(t,i,s){AM.createReader(new AM.HttpReader(t),(function(t){t.getEntries((function(t){if(t.length>0)for(var s=0,r=t.length;s<r;s++){var o=t[s];e[o.filename]=o}i()}))}),s)},this.getFile=function(i,s,r){var o=e[i];if(!o){var n="ZIP entry not found: "+i;return console.error(n),void(r&&r(n))}o.getData(new AM.TextWriter,(function(e){var i=(new DOMParser).parseFromString(e,"text/xml"),r=t(i,{});s(i,r)}))},this.destroy=function(){undefined.close((function(){}))}};function yM(e){var t="urn:3DXML:";return 0===e.indexOf(t)?e.substring(t.length):e}class BM extends z{constructor(e,t={}){super("XML3DLoader",e,t),t.workerScriptsPath?(this._workerScriptsPath=t.workerScriptsPath,this._loader=new cM(this,t),this.supportedSchemas=this._loader.supportedSchemas):this.error("Config expected: workerScriptsPath")}load(e={}){e.workerScriptsPath=this._workerScriptsPath,e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);const t=new Sr(this.viewer.scene,y.apply(e,{isModel:!0})),i=e.src;return i?(this._loader.load(this,t,i,e),t):(this.error("load() param expected: src"),t)}}class wM{constructor(){}getIFC(e,t,i){var s=()=>{};t=t||s,i=i||s;const r=e.match(/^data:(.*?)(;base64)?,(.*)$/);if(r){const e=!!r[2];var o=r[3];o=window.decodeURIComponent(o),e&&(o=window.atob(o));try{const e=new ArrayBuffer(o.length),i=new Uint8Array(e);for(var n=0;n<o.length;n++)i[n]=o.charCodeAt(n);t(e)}catch(e){i(e)}}else{const s=new XMLHttpRequest;s.open("GET",e,!0),s.responseType="arraybuffer",s.onreadystatechange=function(){4===s.readyState&&(200===s.status?t(s.response):i("getXKT error : "+s.response))},s.send(null)}}}class xM extends z{constructor(e,t={}){if(super("ifcLoader",e,t),this.dataSource=t.dataSource,this.objectDefaults=t.objectDefaults,this.includeTypes=t.includeTypes,this.excludeTypes=t.excludeTypes,this.excludeUnclassifiedObjects=t.excludeUnclassifiedObjects,!t.WebIFC)throw"Parameter expected: WebIFC";if(!t.IfcAPI)throw"Parameter expected: IfcAPI";this._webIFC=t.WebIFC,this._ifcAPI=t.IfcAPI}get supportedVersions(){return["2x3","4"]}get dataSource(){return this._dataSource}set dataSource(e){this._dataSource=e||new wM}get objectDefaults(){return this._objectDefaults}set objectDefaults(e){this._objectDefaults=e||vP}get includeTypes(){return this._includeTypes}set includeTypes(e){this._includeTypes=e}get excludeTypes(){return this._excludeTypes}set excludeTypes(e){this._excludeTypes=e}get excludeUnclassifiedObjects(){return this._excludeUnclassifiedObjects}set excludeUnclassifiedObjects(e){this._excludeUnclassifiedObjects=!!e}get globalizeObjectIds(){return this._globalizeObjectIds}set globalizeObjectIds(e){this._globalizeObjectIds=!!e}load(e={}){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);const t=new bc(this.viewer.scene,y.apply(e,{isModel:!0}));if(!e.src&&!e.ifc)return this.error("load() param expected: src or IFC"),t;const i={autoNormals:!0};if(!1!==e.loadMetadata){const t=e.includeTypes||this._includeTypes,s=e.excludeTypes||this._excludeTypes,r=e.objectDefaults||this._objectDefaults;if(t){i.includeTypesMap={};for(let e=0,s=t.length;e<s;e++)i.includeTypesMap[t[e]]=!0}if(s){i.excludeTypesMap={};for(let e=0,t=s.length;e<t;e++)i.excludeTypesMap[s[e]]=!0}r&&(i.objectDefaults=r),i.excludeUnclassifiedObjects=void 0!==e.excludeUnclassifiedObjects?!!e.excludeUnclassifiedObjects:this._excludeUnclassifiedObjects,i.globalizeObjectIds=void 0!==e.globalizeObjectIds?!!e.globalizeObjectIds:this._globalizeObjectIds}try{e.src?this._loadModel(e.src,e,i,t):this._parseModel(e.ifc,e,i,t)}catch(e){this.error(e),t.fire("error",e)}return t}_loadModel(e,t,i,s){const r=this.viewer.scene.canvas.spinner;r.processes++,this._dataSource.getIFC(t.src,(e=>{this._parseModel(e,t,i,s),r.processes--}),(e=>{r.processes--,this.error(e),s.fire("error",e)}))}_parseModel(e,t,i,s){if(s.destroyed)return;const r=t.stats||{};if(r.sourceFormat="IFC",r.schemaVersion="",r.title="",r.author="",r.created="",r.numMetaObjects=0,r.numPropertySets=0,r.numObjects=0,r.numGeometries=0,r.numTriangles=0,r.numVertices=0,!this._ifcAPI)throw"WebIFCLoaderPlugin has no WebIFC instance configured - please inject via WebIFCLoaderPlugin constructor";const o=new Uint8Array(e),n=this._ifcAPI.OpenModel(o),a=this._ifcAPI.GetModelSchema(n),l=this._ifcAPI.GetLineIDsWithType(n,this._webIFC.IFCPROJECT).get(0),A=!1!==t.loadMetadata,h={modelID:n,modelSchema:a,sceneModel:s,loadMetadata:A,metadata:A?{id:"",projectId:""+l,author:"",createdAt:"",schema:"",creatingApplication:"",metaObjects:[],propertySets:[]}:null,metaObjects:{},options:i,log:function(e){},nextId:0,stats:r};if(A){if(i.includeTypes){h.includeTypes={};for(let e=0,t=i.includeTypes.length;e<t;e++)h.includeTypes[i.includeTypes[e]]=!0}if(i.excludeTypes){h.excludeTypes={};for(let e=0,t=i.excludeTypes.length;e<t;e++)h.excludeTypes[i.excludeTypes[e]]=!0}this._parseMetaObjects(h),this._parsePropertySets(h)}if(this._parseGeometry(h),s.finalize(),A){const e=s.id;this.viewer.metaScene.createMetaModel(e,h.metadata,i)}s.scene.once("tick",(()=>{s.destroyed||(s.scene.fire("modelLoaded",s.id),s.fire("loaded",!0,!1))}))}_parseMetaObjects(e){const t=this._ifcAPI.GetLineIDsWithType(e.modelID,this._webIFC.IFCPROJECT).get(0),i=this._ifcAPI.GetLine(e.modelID,t);this._parseSpatialChildren(e,i)}_parseSpatialChildren(e,t,i){const s=this._ifcAPI.GetNameFromTypeCode(t.type);if(e.includeTypes&&!e.includeTypes[s])return;if(e.excludeTypes&&e.excludeTypes[s])return;this._createMetaObject(e,t,i);const r=t.GlobalId.value;this._parseRelatedItemsOfType(e,t.expressID,"RelatingObject","RelatedObjects",this._webIFC.IFCRELAGGREGATES,r),this._parseRelatedItemsOfType(e,t.expressID,"RelatingStructure","RelatedElements",this._webIFC.IFCRELCONTAINEDINSPATIALSTRUCTURE,r)}_createMetaObject(e,t,i){const s=t.GlobalId.value,r=this._ifcAPI.GetNameFromTypeCode(t.type),o={id:s,name:t.Name&&""!==t.Name.value?t.Name.value:r,type:r,parent:i};e.metadata.metaObjects.push(o),e.metaObjects[s]=o,e.stats.numMetaObjects++}_parseRelatedItemsOfType(e,t,i,s,r,o){const n=this._ifcAPI.GetLineIDsWithType(e.modelID,r);for(let r=0;r<n.size();r++){const a=n.get(r),l=this._ifcAPI.GetLine(e.modelID,a),A=l[i];let h=!1;if(Array.isArray(A)){h=A.map((e=>e.value)).includes(t)}else h=A.value===t;if(h){const t=l[s];if(Array.isArray(t))t.forEach((t=>{const i=this._ifcAPI.GetLine(e.modelID,t.value);this._parseSpatialChildren(e,i,o)}));else{const i=this._ifcAPI.GetLine(e.modelID,t.value);this._parseSpatialChildren(e,i,o)}}}}_parsePropertySets(e){const t=this._ifcAPI.GetLineIDsWithType(e.modelID,this._webIFC.IFCRELDEFINESBYPROPERTIES);for(let i=0;i<t.size();i++){let s=t.get(i),r=this._ifcAPI.GetLine(e.modelID,s,!0);if(r){const t=r.RelatingPropertyDefinition;if(!t)continue;const i=t.GlobalId.value,s=t.HasProperties;if(s&&s.length>0){const o="Default",n=t.Name.value,a=[];for(let e=0,t=s.length;e<t;e++){const t=s[e],i=t.Name,r=t.NominalValue;if(i&&r){const e={name:i.value,type:r.type,value:r.value,valueType:r.valueType};t.Description?e.description=t.Description.value:r.description&&(e.description=r.description),a.push(e)}}const l={id:i,type:o,name:n,properties:a};e.metadata.propertySets.push(l),e.stats.numPropertySets++;const A=r.RelatedObjects;if(!A||0===A.length)return;for(let t=0,s=A.length;t<s;t++){const s=A[t].GlobalId.value,r=e.metaObjects[s];r&&(r.propertySetIds||(r.propertySetIds=[]),r.propertySetIds.push(i))}}}}}_parseGeometry(e){this._ifcAPI.StreamAllMeshes(e.modelID,(t=>{const i=t.expressID,s=t.geometries,r=[],o=this._ifcAPI.GetLine(e.modelID,i).GlobalId.value;if(e.loadMetadata){const t=o,i=e.metaObjects[t];if(e.includeTypes&&(!i||!e.includeTypes[i.type]))return;if(e.excludeTypes&&(!i||e.excludeTypes[i.type]))return}const n=d.mat4(),a=d.vec3();for(let t=0,i=s.size();t<i;t++){const i=s.get(t),o=this._ifcAPI.GetGeometry(e.modelID,i.geometryExpressID),l=this._ifcAPI.GetVertexArray(o.GetVertexData(),o.GetVertexDataSize()),A=this._ifcAPI.GetIndexArray(o.GetIndexData(),o.GetIndexDataSize()),h=new Float64Array(l.length/2),c=new Float32Array(l.length/2);for(let e=0,t=0,i=l.length/6;e<i;e++,t+=3)h[t+0]=l[6*e+0],h[t+1]=l[6*e+1],h[t+2]=l[6*e+2];n.set(i.flatTransformation),d.transformPositions3(n,h);const u=J(h,h,a);if(!e.options.autoNormals)for(let e=0,t=0,i=l.length/6;e<i;e++,t+=3)c[t+0]=l[6*e+3],c[t+1]=l[6*e+4],c[t+2]=l[6*e+5];e.stats.numGeometries++,e.stats.numVertices+=h.length/3,e.stats.numTriangles+=A.length/3;const p="mesh"+e.nextId++;e.sceneModel.createMesh({id:p,primitive:"triangles",origin:u?a:null,positions:h,normals:e.options.autoNormals?null:c,indices:A,color:[i.color.x,i.color.y,i.color.z],opacity:i.color.w}),r.push(p)}const l=e.options.globalizeObjectIds?d.globalizeObjectId(e.sceneModel.id,o):o;e.sceneModel.createEntity({id:l,meshIds:r,isObject:!0}),e.stats.numObjects++}))}}class PM{constructor(){}getLAS(e,t,i){var s=()=>{};t=t||s,i=i||s;const r=e.match(/^data:(.*?)(;base64)?,(.*)$/);if(r){const e=!!r[2];var o=r[3];o=window.decodeURIComponent(o),e&&(o=window.atob(o));try{const e=new ArrayBuffer(o.length),i=new Uint8Array(e);for(var n=0;n<o.length;n++)i[n]=o.charCodeAt(n);t(e)}catch(e){i(e)}}else{const s=new XMLHttpRequest;s.open("GET",e,!0),s.responseType="arraybuffer",s.onreadystatechange=function(){4===s.readyState&&(200===s.status?t(s.response):i("getXKT error : "+s.response))},s.send(null)}}}const CM={name:"LAS",id:"las",module:"las",version:"3.2.6",worker:!0,extensions:["las","laz"],mimeTypes:["application/octet-stream"],text:!0,binary:!0,tests:["LAS"],options:{las:{shape:"mesh",fp64:!1,skip:1,colorDepth:8}}},MM=[{item:"FileSignature",format:"char",size:4},{item:"FileSoureceID",format:"uShort",size:2},{item:"GlobalEncoding",format:"uShort",size:2},{item:"ProjectID1",format:"notUsed",size:4},{item:"ProjectID2",format:"notUsed",size:2},{item:"ProjectID3",format:"notUsed",size:2},{item:"ProjectID4",format:"notUsed",size:8},{item:"VersionMajor",format:"uChar",size:1},{item:"VersionMinor",format:"uChar",size:1},{item:"SystemIdentifier",format:"char",size:32},{item:"GeneratingSoftware",format:"char",size:32},{item:"CreationDay",format:"uShort",size:2},{item:"CreationYear",format:"uShort",size:2},{item:"HeaderSize",format:"uShort",size:2},{item:"OffsetToPointData",format:"uLong",size:4},{item:"NumberOfVariableLengthRecords",format:"uLong",size:4},{item:"PointDataFormatID",format:"uChar",size:1},{item:"PointDataRecordLength",format:"uShort",size:2},{item:"NumberOfPoints",format:"uLong",size:4},{item:"NumberOfPointByReturn",format:"uLong",size:20},{item:"ScaleFactorX",format:"double",size:8},{item:"ScaleFactorY",format:"double",size:8},{item:"ScaleFactorZ",format:"double",size:8},{item:"OffsetX",format:"double",size:8},{item:"OffsetY",format:"double",size:8},{item:"OffsetZ",format:"double",size:8},{item:"MaxX",format:"double",size:8},{item:"MinX",format:"double",size:8},{item:"MaxY",format:"double",size:8},{item:"MinY",format:"double",size:8},{item:"MaxZ",format:"double",size:8},{item:"MinZ",format:"double",size:8}],FM=[{item:"Reserved",format:"uShort",size:2},{item:"UserId",format:"char",size:16},{item:"RecordId",format:"uShort",size:2},{item:"RecordLengthAfterHeader",format:"uShort",size:2},{item:"Description",format:"char",size:32}],EM=e=>{let t=0,i=0,s=0;const r=new DataView(e),o=new Uint8Array(6e3),n=({item:s,format:o,size:n})=>{let a,l;switch(o){case"char":return l=new Uint8Array(e,t,n),t+=n,a=DM(l),[s,a];case"uShort":return a=r.getUint16(t,!0),t+=n,[s,a];case"uLong":return a=r.getUint32(t,!0),"NumberOfVariableLengthRecords"===s&&(i=a),t+=n,[s,a];case"uChar":return a=r.getUint8(t),t+=n,[s,a];case"double":return a=r.getFloat64(t,!0),t+=n,[s,a];default:t+=n}};return(()=>{const e={};MM.forEach((t=>{const i=n({...t});if(void 0!==i){if("FileSignature"===i[0]&&"LASF"!==i[1])throw new Error("Ivalid FileSignature. Is this a LAS/LAZ file");e[i[0]]=i[1]}}));const r=[];let a=i;for(;a--;){const e={};FM.forEach((i=>{const r=n({...i});e[r[0]]=r[1],"UserId"===r[0]&&"LASF_Projection"===r[1]&&(s=t-18+54)})),r.push(e)}const l=(e=>{if(void 0===e)return;const t=s+e.RecordLengthAfterHeader,i=o.slice(s,t),r=IM(i),n=new DataView(r);let a=6,l=Number(n.getUint16(a,!0));const A=[];for(;l--;){const e={};e.key=n.getUint16(a+=2,!0),e.tiffTagLocation=n.getUint16(a+=2,!0),e.count=n.getUint16(a+=2,!0),e.valueOffset=n.getUint16(a+=2,!0),A.push(e)}const h=A.find((e=>3072===e.key));if(h&&h.hasOwnProperty("valueOffset"))return h.valueOffset})(r.find((e=>"LASF_Projection"===e.UserId)));return l&&(e.epsg=l),e})()},IM=e=>{let t=new ArrayBuffer(e.length),i=new Uint8Array(t);for(let t=0;t<e.length;++t)i[t]=e[t];return t},DM=e=>{let t="";return e.forEach((e=>{let i=String.fromCharCode(e);"\0"!==i&&(t+=i)})),t.trim()};class SM extends z{constructor(e,t={}){super("lasLoader",e,t),this.dataSource=t.dataSource,this.skip=t.skip,this.fp64=t.fp64,this.colorDepth=t.colorDepth}get dataSource(){return this._dataSource}set dataSource(e){this._dataSource=e||new PM}get skip(){return this._skip}set skip(e){this._skip=e||1}get fp64(){return this._fp64}set fp64(e){this._fp64=!!e}get colorDepth(){return this._colorDepth}set colorDepth(e){this._colorDepth=e||"auto"}load(e={}){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);const t=new bc(this.viewer.scene,y.apply(e,{isModel:!0}));if(!e.src&&!e.las)return this.error("load() param expected: src or las"),t;const i={las:{skip:this._skip,fp64:this._fp64,colorDepth:this._colorDepth}};if(e.src)this._loadModel(e.src,e,i,t);else{const s=this.viewer.scene.canvas.spinner;s.processes++,this._parseModel(e.las,e,i,t).then((()=>{s.processes--}),(e=>{s.processes--,this.error(e),t.fire("error",e)}))}return t}_loadModel(e,t,i,s){const r=this.viewer.scene.canvas.spinner;r.processes++,this._dataSource.getLAS(t.src,(e=>{this._parseModel(e,t,i,s).then((()=>{r.processes--}),(e=>{r.processes--,this.error(e),s.fire("error",e)}))}),(e=>{r.processes--,this.error(e),s.fire("error",e)}))}_parseModel(e,t,i,s){function r(e){const i=e.value;if(t.rotateX&&i)for(let e=0,t=i.length;e<t;e+=3){const t=i[e+1];i[e+1]=i[e+2],i[e+2]=t}return i}function o(e,t){const i=e.value,s=e.size,r=t.value,o=4*r.length,n=new Uint8Array(o);for(let e=0,t=0,o=0,a=r.length;e<a;e++,o+=s,t+=4)n[t+0]=i[o+0],n[t+1]=i[o+1],n[t+2]=i[o+2],n[t+3]=Math.round(r[e]/65536*255);return n}function n(e){const t=e.intensity,i=4*t.length,s=new Uint8Array(i);for(let e=0,i=0,r=t.length;e<r;e++,i+=4)s[i+0]=0,s[i+1]=0,s[i+2]=0,s[i+3]=Math.round(t[e]/65536*255);return s}return new Promise(((a,l)=>{if(s.destroyed)return void l();const A=t.stats||{};A.sourceFormat="LAS",A.schemaVersion="",A.title="",A.author="",A.created="",A.numMetaObjects=0,A.numPropertySets=0,A.numObjects=0,A.numGeometries=0,A.numTriangles=0,A.numVertices=0;try{const A=EM(e);CB(e,CM,i).then((e=>{const h=e.attributes,c=e.loaderData,u=void 0!==c.pointsFormatId?c.pointsFormatId:-1;if(!h.POSITION)return s.finalize(),void l("No positions found in file");let p,f;switch(u){case 0:p=r(h.POSITION),f=n(h.intensity);break;case 1:if(!h.intensity)return s.finalize(),void l("No positions found in file");p=r(h.POSITION),f=n(h.intensity);break;case 2:case 3:if(!h.intensity)return s.finalize(),void l("No positions found in file");p=r(h.POSITION),f=o(h.COLOR_0,h.intensity)}const g=TM(p,15e5),m=TM(f,2e6),_=[];for(let e=0,t=g.length;e<t;e++){const t=`pointsMesh${e}`;_.push(t),s.createMesh({id:t,primitive:"points",positions:g[e],colorsCompressed:e<m.length?m[e]:null})}const v=t.entityId||d.createUUID();if(s.createEntity({id:v,meshIds:_,isObject:!0}),s.finalize(),t.metaModelJSON){const e=s.id;this.viewer.metaScene.createMetaModel(e,t.metaModelJSON,i)}else if(!1!==t.loadMetadata){const e=d.createUUID(),t={projectId:"",author:"",createdAt:"",schema:"",creatingApplication:"",metaObjects:[{id:e,name:"Model",type:"Model"},{id:v,name:"PointCloud (LAS)",type:"PointCloud",parent:e,attributes:A||{}}],propertySets:[]},r=s.id;this.viewer.metaScene.createMetaModel(r,t,i)}s.scene.once("tick",(()=>{s.destroyed||(s.scene.fire("modelLoaded",s.id),s.fire("loaded",!0,!1))})),a()}))}catch(e){s.finalize(),l(e)}}))}}function TM(e,t){if(t>=e.length)return e;let i=[];for(let s=0;s<e.length;s+=t)i.push(e.slice(s,s+t));return i}class RM{constructor(){}getCityJSON(e,t,i){y.loadJSON(e,(e=>{t(e)}),(function(e){i(e)}))}}function LM(e,t,i){i=i||2;var s,r,o,n,a,l,A,h=t&&t.length,c=h?t[0]*i:e.length,u=UM(e,0,c,i,!0),d=[];if(!u||u.next===u.prev)return d;if(h&&(u=function(e,t,i,s){var r,o,n,a=[];for(r=0,o=t.length;r<o;r++)(n=UM(e,t[r]*s,r<o-1?t[r+1]*s:e.length,s,!1))===n.next&&(n.steiner=!0),a.push(KM(n));for(a.sort(jM),r=0;r<a.length;r++)GM(a[r],i),i=kM(i,i.next);return i}(e,t,u,i)),e.length>80*i){s=o=e[0],r=n=e[1];for(var p=i;p<c;p+=i)(a=e[p])<s&&(s=a),(l=e[p+1])<r&&(r=l),a>o&&(o=a),l>n&&(n=l);A=0!==(A=Math.max(o-s,n-r))?1/A:0}return OM(u,d,i,s,r,A),d}function UM(e,t,i,s,r){var o,n;if(r===nF(e,t,i,s)>0)for(o=t;o<i;o+=s)n=sF(o,e[o],e[o+1],n);else for(o=i-s;o>=t;o-=s)n=sF(o,e[o],e[o+1],n);return n&&ZM(n,n.next)&&(rF(n),n=n.next),n}function kM(e,t){if(!e)return e;t||(t=e);var i,s=e;do{if(i=!1,s.steiner||!ZM(s,s.next)&&0!==YM(s.prev,s,s.next))s=s.next;else{if(rF(s),(s=t=s.prev)===s.next)break;i=!0}}while(i||s!==t);return t}function OM(e,t,i,s,r,o,n){if(e){!n&&o&&function(e,t,i,s){var r=e;do{null===r.z&&(r.z=WM(r.x,r.y,t,i,s)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==e);r.prevZ.nextZ=null,r.prevZ=null,function(e){var t,i,s,r,o,n,a,l,A=1;do{for(i=e,e=null,o=null,n=0;i;){for(n++,s=i,a=0,t=0;t<A&&(a++,s=s.nextZ);t++);for(l=A;a>0||l>0&&s;)0!==a&&(0===l||!s||i.z<=s.z)?(r=i,i=i.nextZ,a--):(r=s,s=s.nextZ,l--),o?o.nextZ=r:e=r,r.prevZ=o,o=r;i=s}o.nextZ=null,A*=2}while(n>1)}(r)}(e,s,r,o);for(var a,l,A=e;e.prev!==e.next;)if(a=e.prev,l=e.next,o?QM(e,s,r,o):NM(e))t.push(a.i/i),t.push(e.i/i),t.push(l.i/i),rF(e),e=l.next,A=l.next;else if((e=l)===A){n?1===n?OM(e=VM(kM(e),t,i),t,i,s,r,o,2):2===n&&HM(e,t,i,s,r,o):OM(kM(e),t,i,s,r,o,1);break}}}function NM(e){var t=e.prev,i=e,s=e.next;if(YM(t,i,s)>=0)return!1;for(var r=e.next.next;r!==e.prev;){if(XM(t.x,t.y,i.x,i.y,s.x,s.y,r.x,r.y)&&YM(r.prev,r,r.next)>=0)return!1;r=r.next}return!0}function QM(e,t,i,s){var r=e.prev,o=e,n=e.next;if(YM(r,o,n)>=0)return!1;for(var a=r.x<o.x?r.x<n.x?r.x:n.x:o.x<n.x?o.x:n.x,l=r.y<o.y?r.y<n.y?r.y:n.y:o.y<n.y?o.y:n.y,A=r.x>o.x?r.x>n.x?r.x:n.x:o.x>n.x?o.x:n.x,h=r.y>o.y?r.y>n.y?r.y:n.y:o.y>n.y?o.y:n.y,c=WM(a,l,t,i,s),u=WM(A,h,t,i,s),d=e.prevZ,p=e.nextZ;d&&d.z>=c&&p&&p.z<=u;){if(d!==e.prev&&d!==e.next&&XM(r.x,r.y,o.x,o.y,n.x,n.y,d.x,d.y)&&YM(d.prev,d,d.next)>=0)return!1;if(d=d.prevZ,p!==e.prev&&p!==e.next&&XM(r.x,r.y,o.x,o.y,n.x,n.y,p.x,p.y)&&YM(p.prev,p,p.next)>=0)return!1;p=p.nextZ}for(;d&&d.z>=c;){if(d!==e.prev&&d!==e.next&&XM(r.x,r.y,o.x,o.y,n.x,n.y,d.x,d.y)&&YM(d.prev,d,d.next)>=0)return!1;d=d.prevZ}for(;p&&p.z<=u;){if(p!==e.prev&&p!==e.next&&XM(r.x,r.y,o.x,o.y,n.x,n.y,p.x,p.y)&&YM(p.prev,p,p.next)>=0)return!1;p=p.nextZ}return!0}function VM(e,t,i){var s=e;do{var r=s.prev,o=s.next.next;!ZM(r,o)&&qM(r,s,s.next,o)&&tF(r,o)&&tF(o,r)&&(t.push(r.i/i),t.push(s.i/i),t.push(o.i/i),rF(s),rF(s.next),s=e=o),s=s.next}while(s!==e);return kM(s)}function HM(e,t,i,s,r,o){var n=e;do{for(var a=n.next.next;a!==n.prev;){if(n.i!==a.i&&JM(n,a)){var l=iF(n,a);return n=kM(n,n.next),l=kM(l,l.next),OM(n,t,i,s,r,o),void OM(l,t,i,s,r,o)}a=a.next}n=n.next}while(n!==e)}function jM(e,t){return e.x-t.x}function GM(e,t){if(t=function(e,t){var i,s=t,r=e.x,o=e.y,n=-1/0;do{if(o<=s.y&&o>=s.next.y&&s.next.y!==s.y){var a=s.x+(o-s.y)*(s.next.x-s.x)/(s.next.y-s.y);if(a<=r&&a>n){if(n=a,a===r){if(o===s.y)return s;if(o===s.next.y)return s.next}i=s.x<s.next.x?s:s.next}}s=s.next}while(s!==t);if(!i)return null;if(r===n)return i;var l,A=i,h=i.x,c=i.y,u=1/0;s=i;do{r>=s.x&&s.x>=h&&r!==s.x&&XM(o<c?r:n,o,h,c,o<c?n:r,o,s.x,s.y)&&(l=Math.abs(o-s.y)/(r-s.x),tF(s,e)&&(l<u||l===u&&(s.x>i.x||s.x===i.x&&zM(i,s)))&&(i=s,u=l)),s=s.next}while(s!==A);return i}(e,t),t){var i=iF(t,e);kM(t,t.next),kM(i,i.next)}}function zM(e,t){return YM(e.prev,e,t.prev)<0&&YM(t.next,e,e.next)<0}function WM(e,t,i,s,r){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-i)*r)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-s)*r)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function KM(e){var t=e,i=e;do{(t.x<i.x||t.x===i.x&&t.y<i.y)&&(i=t),t=t.next}while(t!==e);return i}function XM(e,t,i,s,r,o,n,a){return(r-n)*(t-a)-(e-n)*(o-a)>=0&&(e-n)*(s-a)-(i-n)*(t-a)>=0&&(i-n)*(o-a)-(r-n)*(s-a)>=0}function JM(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var i=e;do{if(i.i!==e.i&&i.next.i!==e.i&&i.i!==t.i&&i.next.i!==t.i&&qM(i,i.next,e,t))return!0;i=i.next}while(i!==e);return!1}(e,t)&&(tF(e,t)&&tF(t,e)&&function(e,t){var i=e,s=!1,r=(e.x+t.x)/2,o=(e.y+t.y)/2;do{i.y>o!=i.next.y>o&&i.next.y!==i.y&&r<(i.next.x-i.x)*(o-i.y)/(i.next.y-i.y)+i.x&&(s=!s),i=i.next}while(i!==e);return s}(e,t)&&(YM(e.prev,e,t.prev)||YM(e,t.prev,t))||ZM(e,t)&&YM(e.prev,e,e.next)>0&&YM(t.prev,t,t.next)>0)}function YM(e,t,i){return(t.y-e.y)*(i.x-t.x)-(t.x-e.x)*(i.y-t.y)}function ZM(e,t){return e.x===t.x&&e.y===t.y}function qM(e,t,i,s){var r=eF(YM(e,t,i)),o=eF(YM(e,t,s)),n=eF(YM(i,s,e)),a=eF(YM(i,s,t));return r!==o&&n!==a||(!(0!==r||!$M(e,i,t))||(!(0!==o||!$M(e,s,t))||(!(0!==n||!$M(i,e,s))||!(0!==a||!$M(i,t,s)))))}function $M(e,t,i){return t.x<=Math.max(e.x,i.x)&&t.x>=Math.min(e.x,i.x)&&t.y<=Math.max(e.y,i.y)&&t.y>=Math.min(e.y,i.y)}function eF(e){return e>0?1:e<0?-1:0}function tF(e,t){return YM(e.prev,e,e.next)<0?YM(e,t,e.next)>=0&&YM(e,e.prev,t)>=0:YM(e,t,e.prev)<0||YM(e,e.next,t)<0}function iF(e,t){var i=new oF(e.i,e.x,e.y),s=new oF(t.i,t.x,t.y),r=e.next,o=t.prev;return e.next=t,t.prev=e,i.next=r,r.prev=i,s.next=i,i.prev=s,o.next=s,s.prev=o,s}function sF(e,t,i,s){var r=new oF(e,t,i);return s?(r.next=s.next,r.prev=s,s.next.prev=r,s.next=r):(r.prev=r,r.next=r),r}function rF(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function oF(e,t,i){this.i=e,this.x=t,this.y=i,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function nF(e,t,i,s){for(var r=0,o=t,n=i-s;o<i;o+=s)r+=(e[n]-e[o])*(e[o+1]+e[n+1]),n=o;return r}LM.deviation=function(e,t,i,s){var r=t&&t.length,o=r?t[0]*i:e.length,n=Math.abs(nF(e,0,o,i));if(r)for(var a=0,l=t.length;a<l;a++){var A=t[a]*i,h=a<l-1?t[a+1]*i:e.length;n-=Math.abs(nF(e,A,h,i))}var c=0;for(a=0;a<s.length;a+=3){var u=s[a]*i,d=s[a+1]*i,p=s[a+2]*i;c+=Math.abs((e[u]-e[p])*(e[d+1]-e[u+1])-(e[u]-e[d])*(e[p+1]-e[u+1]))}return 0===n&&0===c?0:Math.abs((c-n)/n)},LM.flatten=function(e){for(var t=e[0][0].length,i={vertices:[],holes:[],dimensions:t},s=0,r=0;r<e.length;r++){for(var o=0;o<e[r].length;o++)for(var n=0;n<t;n++)i.vertices.push(e[r][o][n]);r>0&&(s+=e[r-1].length,i.holes.push(s))}return i};const aF=d.vec2(),lF=d.vec3(),AF=d.vec3(),hF=d.vec3();class cF extends z{constructor(e,t={}){super("cityJSONLoader",e,t),this.dataSource=t.dataSource}get dataSource(){return this._dataSource}set dataSource(e){this._dataSource=e||new RM}load(e={}){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);const t=new bc(this.viewer.scene,y.apply(e,{isModel:!0,edges:!0}));if(!e.src&&!e.cityJSON)return this.error("load() param expected: src or cityJSON"),t;const i={};if(e.src)this._loadModel(e.src,e,i,t);else{const s=this.viewer.scene.canvas.spinner;s.processes++,this._parseModel(e.cityJSON,e,i,t),s.processes--}return t}_loadModel(e,t,i,s){const r=this.viewer.scene.canvas.spinner;r.processes++,this._dataSource.getCityJSON(t.src,(e=>{this._parseModel(e,t,i,s),r.processes--}),(e=>{r.processes--,this.error(e),s.fire("error",e)}))}_parseModel(e,t,i,s){if(s.destroyed)return;const r=e.transform?this._transformVertices(e.vertices,e.transform,i.rotateX):e.vertices,o=t.stats||{};o.sourceFormat=e.type||"CityJSON",o.schemaVersion=e.version||"",o.title="",o.author="",o.created="",o.numMetaObjects=0,o.numPropertySets=0,o.numObjects=0,o.numGeometries=0,o.numTriangles=0,o.numVertices=0;const n=!1!==t.loadMetadata,a=n?{id:d.createUUID(),name:"Model",type:"Model"}:null,l=n?{id:"",projectId:"",author:"",createdAt:"",schema:e.version||"",creatingApplication:"",metaObjects:[a],propertySets:[]}:null,A={data:e,vertices:r,sceneModel:s,loadMetadata:n,metadata:l,rootMetaObject:a,nextId:0,stats:o};if(this._parseCityJSON(A),s.finalize(),n){const e=s.id;this.viewer.metaScene.createMetaModel(e,A.metadata,i)}s.scene.once("tick",(()=>{s.destroyed||(s.scene.fire("modelLoaded",s.id),s.fire("loaded",!0,!1))}))}_transformVertices(e,t,i){const s=[],r=t.scale||d.vec3([1,1,1]),o=t.translate||d.vec3([0,0,0]);for(let t=0,n=0;t<e.length;t++,n+=3){const n=e[t][0]*r[0]+o[0],a=e[t][1]*r[1]+o[1],l=e[t][2]*r[2]+o[2];i?s.push([n,l,a]):s.push([n,a,l])}return s}_parseCityJSON(e){const t=e.data.CityObjects;for(const i in t)if(t.hasOwnProperty(i)){const s=t[i];this._parseCityObject(e,s,i)}}_parseCityObject(e,t,i){const s=e.sceneModel,r=e.data;if(e.loadMetadata){const s=i,r=t.type,o=r+" : "+i,n=t.parents?t.parents[0]:e.rootMetaObject.id;e.metadata.metaObjects.push({id:s,name:o,type:r,parent:n})}if(e.stats.numMetaObjects++,!(t.geometry&&t.geometry.length>0))return;const o=[];for(let i=0,s=t.geometry.length;i<s;i++){const s=t.geometry[i];let n,a;const l=r.appearance;if(l){const e=l.materials;if(e){const t=s.material;if(t){const s=Object.keys(t);if(s.length>0){const r=t[s[0]];if(void 0!==r.value)n=e[r.value];else{const t=r.values;if(t){a=[];for(let s=0,r=t.length;s<r;s++){const s=e[t[i]];a.push(s)}}}}}}}a?this._parseGeometrySurfacesWithOwnMaterials(e,s,a,o):this._parseGeometrySurfacesWithSharedMaterial(e,s,n,o)}o.length>0&&(s.createEntity({id:i,meshIds:o,isObject:!0}),e.stats.numObjects++)}_parseGeometrySurfacesWithOwnMaterials(e,t,i,s){switch(t.type){case"MultiPoint":case"MultiLineString":break;case"MultiSurface":case"CompositeSurface":const r=t.boundaries;this._parseSurfacesWithOwnMaterials(e,i,r,s);break;case"Solid":const o=t.boundaries;for(let t=0;t<o.length;t++){const r=o[t];this._parseSurfacesWithOwnMaterials(e,i,r,s)}break;case"MultiSolid":case"CompositeSolid":const n=t.boundaries;for(let t=0;t<n.length;t++)for(let r=0;r<n[t].length;r++){const o=n[t][r];this._parseSurfacesWithOwnMaterials(e,i,o,s)}}}_parseSurfacesWithOwnMaterials(e,t,i,s){const r=e.vertices,o=e.sceneModel;for(let n=0;n<i.length;n++){const a=i[n],l=t[n]||{diffuseColor:[.8,.8,.8],transparency:1},A=[],h=[],c=[],u={positions:[],indices:[]};for(let t=0;t<a.length;t++){A.length>0&&h.push(A.length);const i=this._extractLocalIndices(e,a[t],c,u);A.push(...i)}if(3===A.length)u.indices.push(A[0]),u.indices.push(A[1]),u.indices.push(A[2]);else if(A.length>3){const e=[];for(let t=0;t<A.length;t++)e.push({x:r[c[A[t]]][0],y:r[c[A[t]]][1],z:r[c[A[t]]][2]});const t=this._getNormalOfPositions(e,d.vec3());let i=[];for(let s=0;s<e.length;s++)this._to2D(e[s],t,aF),i.unshift(aF[0]),i.unshift(aF[1]);const s=LM(i,h,2);for(let e=0;e<s.length;e+=3)u.indices.unshift(A[s[e]]),u.indices.unshift(A[s[e+1]]),u.indices.unshift(A[s[e+2]])}const p=""+e.nextId++;o.createMesh({id:p,primitive:"triangles",positions:u.positions,indices:u.indices,color:l&&l.diffuseColor?l.diffuseColor:[.8,.8,.8],opacity:l&&void 0!==l.transparency?1-l.transparency:1}),s.push(p),e.stats.numGeometries++,e.stats.numVertices+=u.positions.length/3,e.stats.numTriangles+=u.indices.length/3}}_parseGeometrySurfacesWithSharedMaterial(e,t,i,s){const r=e.sceneModel,o=[],n={positions:[],indices:[]};switch(t.type){case"MultiPoint":case"MultiLineString":break;case"MultiSurface":case"CompositeSurface":const i=t.boundaries;this._parseSurfacesWithSharedMaterial(e,i,o,n);break;case"Solid":const s=t.boundaries;for(let t=0;t<s.length;t++){const i=s[t];this._parseSurfacesWithSharedMaterial(e,i,o,n)}break;case"MultiSolid":case"CompositeSolid":const r=t.boundaries;for(let t=0;t<r.length;t++)for(let i=0;i<r[t].length;i++){const s=r[t][i];this._parseSurfacesWithSharedMaterial(e,s,o,n)}}if(n.positions.length>0&&n.indices.length>0){const t=""+e.nextId++;r.createMesh({id:t,primitive:"triangles",positions:n.positions,indices:n.indices,color:i&&i.diffuseColor?i.diffuseColor:[.8,.8,.8],opacity:1}),s.push(t),e.stats.numGeometries++,e.stats.numVertices+=n.positions.length/3,e.stats.numTriangles+=n.indices.length/3}}_parseSurfacesWithSharedMaterial(e,t,i,s){const r=e.vertices;for(let o=0;o<t.length;o++){let n=[],a=[];for(let r=0;r<t[o].length;r++){n.length>0&&a.push(n.length);const l=this._extractLocalIndices(e,t[o][r],i,s);n.push(...l)}if(3===n.length)s.indices.push(n[0]),s.indices.push(n[1]),s.indices.push(n[2]);else if(n.length>3){let e=[];for(let t=0;t<n.length;t++)e.push({x:r[i[n[t]]][0],y:r[i[n[t]]][1],z:r[i[n[t]]][2]});const t=this._getNormalOfPositions(e,d.vec3());let o=[];for(let i=0;i<e.length;i++)this._to2D(e[i],t,aF),o.unshift(aF[0]),o.unshift(aF[1]);const l=LM(o,a,2);for(let e=0;e<l.length;e+=3)s.indices.unshift(n[l[e]]),s.indices.unshift(n[l[e+1]]),s.indices.unshift(n[l[e+2]])}}}_extractLocalIndices(e,t,i,s){const r=e.vertices,o=[];for(let e=0,n=t.length;e<n;e++){const n=t[e];if(i.includes(n)){const e=i.indexOf(n);o.push(e)}else s.positions.push(r[n][0]),s.positions.push(r[n][1]),s.positions.push(r[n][2]),o.push(i.length),i.push(n)}return o}_getNormalOfPositions(e,t){for(let i=0;i<e.length;i++){let s=i+1;s===e.length&&(s=0),t[0]+=(e[i].y-e[s].y)*(e[i].z+e[s].z),t[1]+=(e[i].z-e[s].z)*(e[i].x+e[s].x),t[2]+=(e[i].x-e[s].x)*(e[i].y+e[s].y)}return d.normalizeVec3(t)}_to2D(e,t,i){const s=lF,r=AF,o=hF;s[0]=e.x,s[1]=e.y,s[2]=e.z,r[0]=t.x,r[1]=t.y,r[2]=t.z,o[0]=1.1,o[1]=1.1,o[2]=1.1;d.lenVec3(d.subVec3(o,r))<.01&&(o[0]+=1,o[1]+=2,o[2]+=3);const n=d.dotVec3(o,r),a=d.mulVec3Scalar(r,n,d.vec3());o[0]-=a[0],o[1]-=a[1],o[2]-=a[2],d.normalizeVec3(o);const l=d.cross3Vec3(r,o,d.vec3()),A=d.dotVec3(s,o),h=d.dotVec3(s,l);i[0]=A,i[1]=h}}class uF{constructor(){}getDotBIM(e,t,i){y.loadJSON(e,(e=>{t(e)}),(function(e){i(e)}))}}class dF extends z{constructor(e,t={}){super("DotBIMLoader",e,t),this.dataSource=t.dataSource,this.objectDefaults=t.objectDefaults}set dataSource(e){this._dataSource=e||new uF}get dataSource(){return this._dataSource}set objectDefaults(e){this._objectDefaults=e||vP}get objectDefaults(){return this._objectDefaults}load(e={}){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);const t=new bc(this.viewer.scene,y.apply(e,{isModel:!0,backfaces:e.backfaces,dtxEnabled:e.dtxEnabled,rotation:e.rotation,origin:e.origin})),i=t.id;if(!e.src&&!e.dotBIM)return this.error("load() param expected: src or dotBIM"),t;const s=e.objectDefaults||this._objectDefaults||vP;let r,o;if(e.includeTypes){r={};for(let t=0,i=e.includeTypes.length;t<i;t++)r[e.includeTypes[t]]=!0}if(e.excludeTypes){o={},r||(r={});for(let t=0,i=e.excludeTypes.length;t<i;t++)r[e.excludeTypes[t]]=!0}const n=e=>{const t=e.fileData,n=e.sceneModel,a={},l={},A=d.createUUID(),h=d.createUUID(),c=d.createUUID(),u=d.createUUID(),p={metaObjects:[{id:A,name:"IfcProject",type:"IfcProject",parent:null},{id:h,name:"IfcSite",type:"IfcSite",parent:A},{id:c,name:"IfcBuilding",type:"IfcBuilding",parent:h},{id:u,name:"IfcBuildingStorey",type:"IfcBuildingStorey",parent:c}],propertySets:[]};for(let e=0,i=t.meshes.length;e<i;e++){const i=t.meshes[e];a[i.mesh_id]=e}const f=e=>{if(l[e])return;const i=a[e],s=t.meshes[i];n.createGeometry({id:e,primitive:"triangles",positions:s.coordinates,indices:s.indices}),l[e]=!0},g=t.elements;for(let e=0,t=g.length;e<t;e++){const t=g[e],i=t.type;if(o&&o[i])continue;if(r&&!r[i])continue;const a=t.info,l=void 0!==t.guid?`${t.guid}`:void 0!==a&&void 0!==a.id?a.id:e,A=t.mesh_id;f(A);const h=`${l}-mesh`,c=t.vector,d=t.rotation,m=s?s[i]||s.DEFAULT:null;let _=!0,v=!0,b=t.color?[t.color.r/255,t.color.g/255,t.color.b/255]:[1,1,1],y=t.color?t.color.a/255:1;m&&(!1===m.visible&&(_=!1),!1===m.pickable&&(v=!1),m.colorize&&(b=m.colorize),void 0!==m.opacity&&null!==m.opacity&&(y=m.opacity)),n.createMesh({id:h,geometryId:A,color:b,opacity:y,quaternion:!d||0===d.qz&&0===d.qy&&0===d.qx&&1===d.qw?void 0:[d.qx,d.qy,d.qz,d.qw],position:c?[c.x,c.y,c.z]:void 0}),n.createEntity({id:l,meshIds:[h],visible:_,pickable:v,isObject:!0}),p.metaObjects.push({id:l,name:a&&a.Name&&"None"!==a.Name?a.Name:`${t.type} ${l}`,type:t.type,parent:u})}n.finalize(),this.viewer.metaScene.createMetaModel(i,p),n.scene.once("tick",(()=>{n.destroyed||(n.scene.fire("modelLoaded",n.id),n.fire("loaded",!0,!1))}))};if(e.src){const i=e.src;this.viewer.scene.canvas.spinner.processes++,this._dataSource.getDotBIM(i,(e=>{n({fileData:e,sceneModel:t,nextId:0,error:function(e){}}),this.viewer.scene.canvas.spinner.processes--}),(e=>{this.viewer.scene.canvas.spinner.processes--,this.error(e)}))}else if(e.dotBIM){const i={fileData:e.dotBIM,sceneModel:t,nextId:0,error:function(e){}};n(i)}return t.once("destroyed",(()=>{this.viewer.metaScene.destroyMetaModel(i)})),t}destroy(){super.destroy()}}export{Li as AlphaFormat,Tt as AmbientLight,be as AngleMeasurementsControl,ye as AngleMeasurementsMouseControl,Be as AngleMeasurementsPlugin,we as AngleMeasurementsTouchControl,Fe as AnnotationsPlugin,yr as AxisGizmoPlugin,Mc as BCFViewpointsPlugin,Ao as Bitmap,Pi as ByteType,pu as CameraMemento,Kc as CameraPath,eu as CameraPathAnimation,cF as CityJSONLoaderPlugin,ui as ClampToEdgeWrapping,R as Component,xs as CompressedMediaType,on as Configs,o as ContextMenu,vu as CubicBezierCurve,Gc as Curve,Qh as DefaultLoadingManager,Qi as DepthFormat,Vi as DepthStencilFormat,St as DirLight,Lc as DistanceMeasurementsControl,Uc as DistanceMeasurementsMouseControl,kc as DistanceMeasurementsPlugin,Oc as DistanceMeasurementsTouchControl,uF as DotBIMDefaultDataSource,dF as DotBIMLoaderPlugin,ei as EdgeMaterial,qt as EmphasisMaterial,eC as FaceAlignedSectionPlanesPlugin,Nc as FastNavPlugin,Ii as FloatType,Jr as Fresnel,N as Frustum,O as FrustumPlane,ys as GIFMediaType,Qc as GLTFDefaultDataSource,bP as GLTFLoaderPlugin,Di as HalfFloatType,ou as ImagePlane,Fi as IntType,Bs as JPEGMediaType,Wh as KTX2TextureTranscoder,SM as LASLoaderPlugin,Tr as LambertMaterial,uu as LightMap,Bc as LineSet,vs as LinearEncoding,vi as LinearFilter,wi as LinearMipMapLinearFilter,yi as LinearMipMapNearestFilter,Bi as LinearMipmapLinearFilter,bi as LinearMipmapNearestFilter,Vh as Loader,Nh as LoadingManager,Vc as LocaleService,Ni as LuminanceAlphaFormat,Oi as LuminanceFormat,e as Map,ue as Marker,H as MarqueePicker,j as MarqueePickerMouseControl,fr as Mesh,Ur as MetallicMaterial,di as MirroredRepeatWrapping,gu as ModelMemento,xP as NavCubePlugin,pi as NearestFilter,_i as NearestMipMapLinearFilter,fi as NearestMipMapNearestFilter,mi as NearestMipmapLinearFilter,gi as NearestMipmapNearestFilter,Sr as Node,TP as OBJLoaderPlugin,f as ObjectsKdTree3,_u as ObjectsMemento,ws as PNGMediaType,bu as Path,Bu as PerformanceModel,Yt as PhongMaterial,Le as PickResult,z as Plugin,nu as PointLight,G as PointerCircle,n as PointerLens,yu as QuadraticBezierCurve,g as Queue,ki as RGBAFormat,Wi as RGBAIntegerFormat,fs as RGBA_ASTC_10x10_Format,us as RGBA_ASTC_10x5_Format,ds as RGBA_ASTC_10x6_Format,ps as RGBA_ASTC_10x8_Format,gs as RGBA_ASTC_12x10_Format,ms as RGBA_ASTC_12x12_Format,rs as RGBA_ASTC_4x4_Format,os as RGBA_ASTC_5x4_Format,ns as RGBA_ASTC_5x5_Format,as as RGBA_ASTC_6x5_Format,ls as RGBA_ASTC_6x6_Format,As as RGBA_ASTC_8x5_Format,hs as RGBA_ASTC_8x6_Format,cs as RGBA_ASTC_8x8_Format,_s as RGBA_BPTC_Format,ss as RGBA_ETC2_EAC_Format,es as RGBA_PVRTC_2BPPV1_Format,$i as RGBA_PVRTC_4BPPV1_Format,Xi as RGBA_S3TC_DXT1_Format,Ji as RGBA_S3TC_DXT3_Format,Yi as RGBA_S3TC_DXT5_Format,Ui as RGBFormat,ts as RGB_ETC1_Format,is as RGB_ETC2_Format,qi as RGB_PVRTC_2BPPV1_Format,Zi as RGB_PVRTC_4BPPV1_Format,Ki as RGB_S3TC_DXT1_Format,Gi as RGFormat,zi as RGIntegerFormat,zt as ReadableGeometry,Hi as RedFormat,ji as RedIntegerFormat,cu as ReflectionMap,ci as RepeatWrapping,iC as STLDefaultDataSource,cC as STLLoaderPlugin,bc as SceneModel,po as SceneModelMesh,cc as SceneModelTransform,Br as SectionPlane,VP as SectionPlanesPlugin,Ci as ShortType,wu as Skybox,tC as SkyboxesPlugin,Nr as SpecularMaterial,zc as SplineCurve,du as SpriteMarker,WP as StoreyViewsPlugin,Xr as Texture,xu as TextureTranscoder,pC as TreeViewPlugin,xi as UnsignedByteType,Ri as UnsignedInt248Type,Ei as UnsignedIntType,Si as UnsignedShort4444Type,Ti as UnsignedShort5551Type,Mi as UnsignedShortType,qr as VBOGeometry,_C as ViewCullPlugin,ub as Viewer,xM as WebIFCLoaderPlugin,Gh as WorkerPool,vC as XKTDefaultDataSource,aM as XKTLoaderPlugin,BM as XML3DLoaderPlugin,Wt as buildBoxGeometry,io as buildBoxLinesGeometry,so as buildBoxLinesGeometryFromAABB,mr as buildCylinderGeometry,ro as buildGridGeometry,oo as buildPlaneGeometry,ao as buildPolylineGeometry,lo as buildPolylineGeometryFromCurve,_r as buildSphereGeometry,no as buildTorusGeometry,br as buildVectorTextGeometry,K as createRTCViewMat,V as frustumIntersectsAABB3,Xh as getKTX2TextureTranscoder,Z as getPlaneRTCPos,eo as load3DSGeometry,to as loadOBJGeometry,d as math,Y as rtcToWorldPos,bs as sRGBEncoding,Q as setFrustum,m as stats,y as utils,X as worldToRTCPos,J as worldToRTCPositions};
37
+ /*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).pako={})}(void 0,(function(e){function t(e){let t=e.length;for(;--t>=0;)e[t]=0}const i=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),s=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),r=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),o=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),n=new Array(576);t(n);const a=new Array(60);t(a);const l=new Array(512);t(l);const A=new Array(256);t(A);const h=new Array(29);t(h);const c=new Array(30);function u(e,t,i,s,r){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=s,this.max_length=r,this.has_stree=e&&e.length}let d,p,f;function g(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}t(c);const m=e=>e<256?l[e]:l[256+(e>>>7)],_=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},v=(e,t,i)=>{e.bi_valid>16-i?(e.bi_buf|=t<<e.bi_valid&65535,_(e,e.bi_buf),e.bi_buf=t>>16-e.bi_valid,e.bi_valid+=i-16):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=i)},b=(e,t,i)=>{v(e,i[2*t],i[2*t+1])},y=(e,t)=>{let i=0;do{i|=1&e,e>>>=1,i<<=1}while(--t>0);return i>>>1},B=(e,t,i)=>{const s=new Array(16);let r,o,n=0;for(r=1;r<=15;r++)n=n+i[r-1]<<1,s[r]=n;for(o=0;o<=t;o++){let t=e[2*o+1];0!==t&&(e[2*o]=y(s[t]++,t))}},w=e=>{let t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},x=e=>{e.bi_valid>8?_(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},P=(e,t,i,s)=>{const r=2*t,o=2*i;return e[r]<e[o]||e[r]===e[o]&&s[t]<=s[i]},C=(e,t,i)=>{const s=e.heap[i];let r=i<<1;for(;r<=e.heap_len&&(r<e.heap_len&&P(t,e.heap[r+1],e.heap[r],e.depth)&&r++,!P(t,s,e.heap[r],e.depth));)e.heap[i]=e.heap[r],i=r,r<<=1;e.heap[i]=s},M=(e,t,r)=>{let o,n,a,l,u=0;if(0!==e.sym_next)do{o=255&e.pending_buf[e.sym_buf+u++],o+=(255&e.pending_buf[e.sym_buf+u++])<<8,n=e.pending_buf[e.sym_buf+u++],0===o?b(e,n,t):(a=A[n],b(e,a+256+1,t),l=i[a],0!==l&&(n-=h[a],v(e,n,l)),o--,a=m(o),b(e,a,r),l=s[a],0!==l&&(o-=c[a],v(e,o,l)))}while(u<e.sym_next);b(e,256,t)},F=(e,t)=>{const i=t.dyn_tree,s=t.stat_desc.static_tree,r=t.stat_desc.has_stree,o=t.stat_desc.elems;let n,a,l,A=-1;for(e.heap_len=0,e.heap_max=573,n=0;n<o;n++)0!==i[2*n]?(e.heap[++e.heap_len]=A=n,e.depth[n]=0):i[2*n+1]=0;for(;e.heap_len<2;)l=e.heap[++e.heap_len]=A<2?++A:0,i[2*l]=1,e.depth[l]=0,e.opt_len--,r&&(e.static_len-=s[2*l+1]);for(t.max_code=A,n=e.heap_len>>1;n>=1;n--)C(e,i,n);l=o;do{n=e.heap[1],e.heap[1]=e.heap[e.heap_len--],C(e,i,1),a=e.heap[1],e.heap[--e.heap_max]=n,e.heap[--e.heap_max]=a,i[2*l]=i[2*n]+i[2*a],e.depth[l]=(e.depth[n]>=e.depth[a]?e.depth[n]:e.depth[a])+1,i[2*n+1]=i[2*a+1]=l,e.heap[1]=l++,C(e,i,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const i=t.dyn_tree,s=t.max_code,r=t.stat_desc.static_tree,o=t.stat_desc.has_stree,n=t.stat_desc.extra_bits,a=t.stat_desc.extra_base,l=t.stat_desc.max_length;let A,h,c,u,d,p,f=0;for(u=0;u<=15;u++)e.bl_count[u]=0;for(i[2*e.heap[e.heap_max]+1]=0,A=e.heap_max+1;A<573;A++)h=e.heap[A],u=i[2*i[2*h+1]+1]+1,u>l&&(u=l,f++),i[2*h+1]=u,h>s||(e.bl_count[u]++,d=0,h>=a&&(d=n[h-a]),p=i[2*h],e.opt_len+=p*(u+d),o&&(e.static_len+=p*(r[2*h+1]+d)));if(0!==f){do{for(u=l-1;0===e.bl_count[u];)u--;e.bl_count[u]--,e.bl_count[u+1]+=2,e.bl_count[l]--,f-=2}while(f>0);for(u=l;0!==u;u--)for(h=e.bl_count[u];0!==h;)c=e.heap[--A],c>s||(i[2*c+1]!==u&&(e.opt_len+=(u-i[2*c+1])*i[2*c],i[2*c+1]=u),h--)}})(e,t),B(i,A,e.bl_count)},E=(e,t,i)=>{let s,r,o=-1,n=t[1],a=0,l=7,A=4;for(0===n&&(l=138,A=3),t[2*(i+1)+1]=65535,s=0;s<=i;s++)r=n,n=t[2*(s+1)+1],++a<l&&r===n||(a<A?e.bl_tree[2*r]+=a:0!==r?(r!==o&&e.bl_tree[2*r]++,e.bl_tree[32]++):a<=10?e.bl_tree[34]++:e.bl_tree[36]++,a=0,o=r,0===n?(l=138,A=3):r===n?(l=6,A=3):(l=7,A=4))},I=(e,t,i)=>{let s,r,o=-1,n=t[1],a=0,l=7,A=4;for(0===n&&(l=138,A=3),s=0;s<=i;s++)if(r=n,n=t[2*(s+1)+1],!(++a<l&&r===n)){if(a<A)do{b(e,r,e.bl_tree)}while(0!=--a);else 0!==r?(r!==o&&(b(e,r,e.bl_tree),a--),b(e,16,e.bl_tree),v(e,a-3,2)):a<=10?(b(e,17,e.bl_tree),v(e,a-3,3)):(b(e,18,e.bl_tree),v(e,a-11,7));a=0,o=r,0===n?(l=138,A=3):r===n?(l=6,A=3):(l=7,A=4)}};let D=!1;const S=(e,t,i,s)=>{v(e,0+(s?1:0),3),x(e),_(e,i),_(e,~i),i&&e.pending_buf.set(e.window.subarray(t,t+i),e.pending),e.pending+=i};var T={_tr_init:e=>{D||((()=>{let e,t,o,g,m;const _=new Array(16);for(o=0,g=0;g<28;g++)for(h[g]=o,e=0;e<1<<i[g];e++)A[o++]=g;for(A[o-1]=g,m=0,g=0;g<16;g++)for(c[g]=m,e=0;e<1<<s[g];e++)l[m++]=g;for(m>>=7;g<30;g++)for(c[g]=m<<7,e=0;e<1<<s[g]-7;e++)l[256+m++]=g;for(t=0;t<=15;t++)_[t]=0;for(e=0;e<=143;)n[2*e+1]=8,e++,_[8]++;for(;e<=255;)n[2*e+1]=9,e++,_[9]++;for(;e<=279;)n[2*e+1]=7,e++,_[7]++;for(;e<=287;)n[2*e+1]=8,e++,_[8]++;for(B(n,287,_),e=0;e<30;e++)a[2*e+1]=5,a[2*e]=y(e,5);d=new u(n,i,257,286,15),p=new u(a,s,0,30,15),f=new u(new Array(0),r,0,19,7)})(),D=!0),e.l_desc=new g(e.dyn_ltree,d),e.d_desc=new g(e.dyn_dtree,p),e.bl_desc=new g(e.bl_tree,f),e.bi_buf=0,e.bi_valid=0,w(e)},_tr_stored_block:S,_tr_flush_block:(e,t,i,s)=>{let r,l,A=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,i=4093624447;for(t=0;t<=31;t++,i>>>=1)if(1&i&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),F(e,e.l_desc),F(e,e.d_desc),A=(e=>{let t;for(E(e,e.dyn_ltree,e.l_desc.max_code),E(e,e.dyn_dtree,e.d_desc.max_code),F(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*o[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),r=e.opt_len+3+7>>>3,l=e.static_len+3+7>>>3,l<=r&&(r=l)):r=l=i+5,i+4<=r&&-1!==t?S(e,t,i,s):4===e.strategy||l===r?(v(e,2+(s?1:0),3),M(e,n,a)):(v(e,4+(s?1:0),3),((e,t,i,s)=>{let r;for(v(e,t-257,5),v(e,i-1,5),v(e,s-4,4),r=0;r<s;r++)v(e,e.bl_tree[2*o[r]+1],3);I(e,e.dyn_ltree,t-1),I(e,e.dyn_dtree,i-1)})(e,e.l_desc.max_code+1,e.d_desc.max_code+1,A+1),M(e,e.dyn_ltree,e.dyn_dtree)),w(e),s&&x(e)},_tr_tally:(e,t,i)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=i,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[2*(A[i]+256+1)]++,e.dyn_dtree[2*m(t)]++),e.sym_next===e.sym_end),_tr_align:e=>{v(e,2,3),b(e,256,n),(e=>{16===e.bi_valid?(_(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)}},R=(e,t,i,s)=>{let r=65535&e|0,o=e>>>16&65535|0,n=0;for(;0!==i;){n=i>2e3?2e3:i,i-=n;do{r=r+t[s++]|0,o=o+r|0}while(--n);r%=65521,o%=65521}return r|o<<16|0};const L=new Uint32Array((()=>{let e,t=[];for(var i=0;i<256;i++){e=i;for(var s=0;s<8;s++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t})());var U=(e,t,i,s)=>{const r=L,o=s+i;e^=-1;for(let i=s;i<o;i++)e=e>>>8^r[255&(e^t[i])];return-1^e},k={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},O={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:N,_tr_stored_block:Q,_tr_flush_block:V,_tr_tally:H,_tr_align:j}=T,{Z_NO_FLUSH:G,Z_PARTIAL_FLUSH:z,Z_FULL_FLUSH:W,Z_FINISH:K,Z_BLOCK:X,Z_OK:J,Z_STREAM_END:Y,Z_STREAM_ERROR:Z,Z_DATA_ERROR:q,Z_BUF_ERROR:$,Z_DEFAULT_COMPRESSION:ee,Z_FILTERED:te,Z_HUFFMAN_ONLY:ie,Z_RLE:se,Z_FIXED:re,Z_DEFAULT_STRATEGY:oe,Z_UNKNOWN:ne,Z_DEFLATED:ae}=O,le=258,Ae=262,he=42,ce=113,ue=666,de=(e,t)=>(e.msg=k[t],t),pe=e=>2*e-(e>4?9:0),fe=e=>{let t=e.length;for(;--t>=0;)e[t]=0},ge=e=>{let t,i,s,r=e.w_size;t=e.hash_size,s=t;do{i=e.head[--s],e.head[s]=i>=r?i-r:0}while(--t);t=r,s=t;do{i=e.prev[--s],e.prev[s]=i>=r?i-r:0}while(--t)};let me=(e,t,i)=>(t<<e.hash_shift^i)&e.hash_mask;const _e=e=>{const t=e.state;let i=t.pending;i>e.avail_out&&(i=e.avail_out),0!==i&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+i),e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,0===t.pending&&(t.pending_out=0))},ve=(e,t)=>{V(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,_e(e.strm)},be=(e,t)=>{e.pending_buf[e.pending++]=t},ye=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},Be=(e,t,i,s)=>{let r=e.avail_in;return r>s&&(r=s),0===r?0:(e.avail_in-=r,t.set(e.input.subarray(e.next_in,e.next_in+r),i),1===e.state.wrap?e.adler=R(e.adler,t,r,i):2===e.state.wrap&&(e.adler=U(e.adler,t,r,i)),e.next_in+=r,e.total_in+=r,r)},we=(e,t)=>{let i,s,r=e.max_chain_length,o=e.strstart,n=e.prev_length,a=e.nice_match;const l=e.strstart>e.w_size-Ae?e.strstart-(e.w_size-Ae):0,A=e.window,h=e.w_mask,c=e.prev,u=e.strstart+le;let d=A[o+n-1],p=A[o+n];e.prev_length>=e.good_match&&(r>>=2),a>e.lookahead&&(a=e.lookahead);do{if(i=t,A[i+n]===p&&A[i+n-1]===d&&A[i]===A[o]&&A[++i]===A[o+1]){o+=2,i++;do{}while(A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&A[++o]===A[++i]&&o<u);if(s=le-(u-o),o=u-le,s>n){if(e.match_start=t,n=s,s>=a)break;d=A[o+n-1],p=A[o+n]}}}while((t=c[t&h])>l&&0!=--r);return n<=e.lookahead?n:e.lookahead},xe=e=>{const t=e.w_size;let i,s,r;do{if(s=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-Ae)&&(e.window.set(e.window.subarray(t,t+t-s),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),ge(e),s+=t),0===e.strm.avail_in)break;if(i=Be(e.strm,e.window,e.strstart+e.lookahead,s),e.lookahead+=i,e.lookahead+e.insert>=3)for(r=e.strstart-e.insert,e.ins_h=e.window[r],e.ins_h=me(e,e.ins_h,e.window[r+1]);e.insert&&(e.ins_h=me(e,e.ins_h,e.window[r+3-1]),e.prev[r&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=r,r++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<Ae&&0!==e.strm.avail_in)},Pe=(e,t)=>{let i,s,r,o=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,n=0,a=e.strm.avail_in;do{if(i=65535,r=e.bi_valid+42>>3,e.strm.avail_out<r)break;if(r=e.strm.avail_out-r,s=e.strstart-e.block_start,i>s+e.strm.avail_in&&(i=s+e.strm.avail_in),i>r&&(i=r),i<o&&(0===i&&t!==K||t===G||i!==s+e.strm.avail_in))break;n=t===K&&i===s+e.strm.avail_in?1:0,Q(e,0,0,n),e.pending_buf[e.pending-4]=i,e.pending_buf[e.pending-3]=i>>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,_e(e.strm),s&&(s>i&&(s=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+s),e.strm.next_out),e.strm.next_out+=s,e.strm.avail_out-=s,e.strm.total_out+=s,e.block_start+=s,i-=s),i&&(Be(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}while(0===n);return a-=e.strm.avail_in,a&&(a>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=a&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-a,e.strm.next_in),e.strstart),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),n?4:t!==G&&t!==K&&0===e.strm.avail_in&&e.strstart===e.block_start?2:(r=e.window_size-e.strstart,e.strm.avail_in>r&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,r+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),r>e.strm.avail_in&&(r=e.strm.avail_in),r&&(Be(e.strm,e.window,e.strstart,r),e.strstart+=r,e.insert+=r>e.w_size-e.insert?e.w_size-e.insert:r),e.high_water<e.strstart&&(e.high_water=e.strstart),r=e.bi_valid+42>>3,r=e.pending_buf_size-r>65535?65535:e.pending_buf_size-r,o=r>e.w_size?e.w_size:r,s=e.strstart-e.block_start,(s>=o||(s||t===K)&&t!==G&&0===e.strm.avail_in&&s<=r)&&(i=s>r?r:s,n=t===K&&0===e.strm.avail_in&&i===s?1:0,Q(e,e.block_start,i,n),e.block_start+=i,_e(e.strm)),n?3:1)},Ce=(e,t)=>{let i,s;for(;;){if(e.lookahead<Ae){if(xe(e),e.lookahead<Ae&&t===G)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=me(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==i&&e.strstart-i<=e.w_size-Ae&&(e.match_length=we(e,i)),e.match_length>=3)if(s=H(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=me(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!=--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=me(e,e.ins_h,e.window[e.strstart+1]);else s=H(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(s&&(ve(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===K?(ve(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ve(e,!1),0===e.strm.avail_out)?1:2},Me=(e,t)=>{let i,s,r;for(;;){if(e.lookahead<Ae){if(xe(e),e.lookahead<Ae&&t===G)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=me(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==i&&e.prev_length<e.max_lazy_match&&e.strstart-i<=e.w_size-Ae&&(e.match_length=we(e,i),e.match_length<=5&&(e.strategy===te||3===e.match_length&&e.strstart-e.match_start>4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-3,s=H(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=r&&(e.ins_h=me(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!=--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,s&&(ve(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(s=H(e,0,e.window[e.strstart-1]),s&&ve(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(s=H(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===K?(ve(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ve(e,!1),0===e.strm.avail_out)?1:2};function Fe(e,t,i,s,r){this.good_length=e,this.max_lazy=t,this.nice_length=i,this.max_chain=s,this.func=r}const Ee=[new Fe(0,0,0,0,Pe),new Fe(4,4,8,4,Ce),new Fe(4,5,16,8,Ce),new Fe(4,6,32,32,Ce),new Fe(4,4,16,16,Me),new Fe(8,16,32,32,Me),new Fe(8,16,128,128,Me),new Fe(8,32,128,256,Me),new Fe(32,128,258,1024,Me),new Fe(32,258,258,4096,Me)];function Ie(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ae,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),fe(this.dyn_ltree),fe(this.dyn_dtree),fe(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),fe(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),fe(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const De=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==he&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==ce&&t.status!==ue?1:0},Se=e=>{if(De(e))return de(e,Z);e.total_in=e.total_out=0,e.data_type=ne;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?he:ce,e.adler=2===t.wrap?0:1,t.last_flush=-2,N(t),J},Te=e=>{const t=Se(e);var i;return t===J&&((i=e.state).window_size=2*i.w_size,fe(i.head),i.max_lazy_match=Ee[i.level].max_lazy,i.good_match=Ee[i.level].good_length,i.nice_match=Ee[i.level].nice_length,i.max_chain_length=Ee[i.level].max_chain,i.strstart=0,i.block_start=0,i.lookahead=0,i.insert=0,i.match_length=i.prev_length=2,i.match_available=0,i.ins_h=0),t},Re=(e,t,i,s,r,o)=>{if(!e)return Z;let n=1;if(t===ee&&(t=6),s<0?(n=0,s=-s):s>15&&(n=2,s-=16),r<1||r>9||i!==ae||s<8||s>15||t<0||t>9||o<0||o>re||8===s&&1!==n)return de(e,Z);8===s&&(s=9);const a=new Ie;return e.state=a,a.strm=e,a.status=he,a.wrap=n,a.gzhead=null,a.w_bits=s,a.w_size=1<<a.w_bits,a.w_mask=a.w_size-1,a.hash_bits=r+7,a.hash_size=1<<a.hash_bits,a.hash_mask=a.hash_size-1,a.hash_shift=~~((a.hash_bits+3-1)/3),a.window=new Uint8Array(2*a.w_size),a.head=new Uint16Array(a.hash_size),a.prev=new Uint16Array(a.w_size),a.lit_bufsize=1<<r+6,a.pending_buf_size=4*a.lit_bufsize,a.pending_buf=new Uint8Array(a.pending_buf_size),a.sym_buf=a.lit_bufsize,a.sym_end=3*(a.lit_bufsize-1),a.level=t,a.strategy=o,a.method=i,Te(e)};var Le=Re,Ue=(e,t)=>De(e)||2!==e.state.wrap?Z:(e.state.gzhead=t,J),ke=(e,t)=>{if(De(e)||t>X||t<0)return e?de(e,Z):Z;const i=e.state;if(!e.output||0!==e.avail_in&&!e.input||i.status===ue&&t!==K)return de(e,0===e.avail_out?$:Z);const s=i.last_flush;if(i.last_flush=t,0!==i.pending){if(_e(e),0===e.avail_out)return i.last_flush=-1,J}else if(0===e.avail_in&&pe(t)<=pe(s)&&t!==K)return de(e,$);if(i.status===ue&&0!==e.avail_in)return de(e,$);if(i.status===he&&0===i.wrap&&(i.status=ce),i.status===he){let t=ae+(i.w_bits-8<<4)<<8,s=-1;if(s=i.strategy>=ie||i.level<2?0:i.level<6?1:6===i.level?2:3,t|=s<<6,0!==i.strstart&&(t|=32),t+=31-t%31,ye(i,t),0!==i.strstart&&(ye(i,e.adler>>>16),ye(i,65535&e.adler)),e.adler=1,i.status=ce,_e(e),0!==i.pending)return i.last_flush=-1,J}if(57===i.status)if(e.adler=0,be(i,31),be(i,139),be(i,8),i.gzhead)be(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),be(i,255&i.gzhead.time),be(i,i.gzhead.time>>8&255),be(i,i.gzhead.time>>16&255),be(i,i.gzhead.time>>24&255),be(i,9===i.level?2:i.strategy>=ie||i.level<2?4:0),be(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(be(i,255&i.gzhead.extra.length),be(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=U(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69;else if(be(i,0),be(i,0),be(i,0),be(i,0),be(i,0),be(i,9===i.level?2:i.strategy>=ie||i.level<2?4:0),be(i,3),i.status=ce,_e(e),0!==i.pending)return i.last_flush=-1,J;if(69===i.status){if(i.gzhead.extra){let t=i.pending,s=(65535&i.gzhead.extra.length)-i.gzindex;for(;i.pending+s>i.pending_buf_size;){let r=i.pending_buf_size-i.pending;if(i.pending_buf.set(i.gzhead.extra.subarray(i.gzindex,i.gzindex+r),i.pending),i.pending=i.pending_buf_size,i.gzhead.hcrc&&i.pending>t&&(e.adler=U(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex+=r,_e(e),0!==i.pending)return i.last_flush=-1,J;t=0,s-=r}let r=new Uint8Array(i.gzhead.extra);i.pending_buf.set(r.subarray(i.gzindex,i.gzindex+s),i.pending),i.pending+=s,i.gzhead.hcrc&&i.pending>t&&(e.adler=U(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex=0}i.status=73}if(73===i.status){if(i.gzhead.name){let t,s=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>s&&(e.adler=U(e.adler,i.pending_buf,i.pending-s,s)),_e(e),0!==i.pending)return i.last_flush=-1,J;s=0}t=i.gzindex<i.gzhead.name.length?255&i.gzhead.name.charCodeAt(i.gzindex++):0,be(i,t)}while(0!==t);i.gzhead.hcrc&&i.pending>s&&(e.adler=U(e.adler,i.pending_buf,i.pending-s,s)),i.gzindex=0}i.status=91}if(91===i.status){if(i.gzhead.comment){let t,s=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>s&&(e.adler=U(e.adler,i.pending_buf,i.pending-s,s)),_e(e),0!==i.pending)return i.last_flush=-1,J;s=0}t=i.gzindex<i.gzhead.comment.length?255&i.gzhead.comment.charCodeAt(i.gzindex++):0,be(i,t)}while(0!==t);i.gzhead.hcrc&&i.pending>s&&(e.adler=U(e.adler,i.pending_buf,i.pending-s,s))}i.status=103}if(103===i.status){if(i.gzhead.hcrc){if(i.pending+2>i.pending_buf_size&&(_e(e),0!==i.pending))return i.last_flush=-1,J;be(i,255&e.adler),be(i,e.adler>>8&255),e.adler=0}if(i.status=ce,_e(e),0!==i.pending)return i.last_flush=-1,J}if(0!==e.avail_in||0!==i.lookahead||t!==G&&i.status!==ue){let s=0===i.level?Pe(i,t):i.strategy===ie?((e,t)=>{let i;for(;;){if(0===e.lookahead&&(xe(e),0===e.lookahead)){if(t===G)return 1;break}if(e.match_length=0,i=H(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(ve(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===K?(ve(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ve(e,!1),0===e.strm.avail_out)?1:2})(i,t):i.strategy===se?((e,t)=>{let i,s,r,o;const n=e.window;for(;;){if(e.lookahead<=le){if(xe(e),e.lookahead<=le&&t===G)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(r=e.strstart-1,s=n[r],s===n[++r]&&s===n[++r]&&s===n[++r])){o=e.strstart+le;do{}while(s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&r<o);e.match_length=le-(o-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(i=H(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=H(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(ve(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===K?(ve(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ve(e,!1),0===e.strm.avail_out)?1:2})(i,t):Ee[i.level].func(i,t);if(3!==s&&4!==s||(i.status=ue),1===s||3===s)return 0===e.avail_out&&(i.last_flush=-1),J;if(2===s&&(t===z?j(i):t!==X&&(Q(i,0,0,!1),t===W&&(fe(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),_e(e),0===e.avail_out))return i.last_flush=-1,J}return t!==K?J:i.wrap<=0?Y:(2===i.wrap?(be(i,255&e.adler),be(i,e.adler>>8&255),be(i,e.adler>>16&255),be(i,e.adler>>24&255),be(i,255&e.total_in),be(i,e.total_in>>8&255),be(i,e.total_in>>16&255),be(i,e.total_in>>24&255)):(ye(i,e.adler>>>16),ye(i,65535&e.adler)),_e(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?J:Y)},Oe=e=>{if(De(e))return Z;const t=e.state.status;return e.state=null,t===ce?de(e,q):J},Ne=(e,t)=>{let i=t.length;if(De(e))return Z;const s=e.state,r=s.wrap;if(2===r||1===r&&s.status!==he||s.lookahead)return Z;if(1===r&&(e.adler=R(e.adler,t,i,0)),s.wrap=0,i>=s.w_size){0===r&&(fe(s.head),s.strstart=0,s.block_start=0,s.insert=0);let e=new Uint8Array(s.w_size);e.set(t.subarray(i-s.w_size,i),0),t=e,i=s.w_size}const o=e.avail_in,n=e.next_in,a=e.input;for(e.avail_in=i,e.next_in=0,e.input=t,xe(s);s.lookahead>=3;){let e=s.strstart,t=s.lookahead-2;do{s.ins_h=me(s,s.ins_h,s.window[e+3-1]),s.prev[e&s.w_mask]=s.head[s.ins_h],s.head[s.ins_h]=e,e++}while(--t);s.strstart=e,s.lookahead=2,xe(s)}return s.strstart+=s.lookahead,s.block_start=s.strstart,s.insert=s.lookahead,s.lookahead=0,s.match_length=s.prev_length=2,s.match_available=0,e.next_in=n,e.input=a,e.avail_in=o,s.wrap=r,J};const Qe=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var Ve=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const i=t.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(const t in i)Qe(i,t)&&(e[t]=i[t])}}return e},He=e=>{let t=0;for(let i=0,s=e.length;i<s;i++)t+=e[i].length;const i=new Uint8Array(t);for(let t=0,s=0,r=e.length;t<r;t++){let r=e[t];i.set(r,s),s+=r.length}return i};let je=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){je=!1}const Ge=new Uint8Array(256);for(let e=0;e<256;e++)Ge[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Ge[254]=Ge[254]=1;var ze=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,i,s,r,o,n=e.length,a=0;for(r=0;r<n;r++)i=e.charCodeAt(r),55296==(64512&i)&&r+1<n&&(s=e.charCodeAt(r+1),56320==(64512&s)&&(i=65536+(i-55296<<10)+(s-56320),r++)),a+=i<128?1:i<2048?2:i<65536?3:4;for(t=new Uint8Array(a),o=0,r=0;o<a;r++)i=e.charCodeAt(r),55296==(64512&i)&&r+1<n&&(s=e.charCodeAt(r+1),56320==(64512&s)&&(i=65536+(i-55296<<10)+(s-56320),r++)),i<128?t[o++]=i:i<2048?(t[o++]=192|i>>>6,t[o++]=128|63&i):i<65536?(t[o++]=224|i>>>12,t[o++]=128|i>>>6&63,t[o++]=128|63&i):(t[o++]=240|i>>>18,t[o++]=128|i>>>12&63,t[o++]=128|i>>>6&63,t[o++]=128|63&i);return t},We=(e,t)=>{const i=t||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,t));let s,r;const o=new Array(2*i);for(r=0,s=0;s<i;){let t=e[s++];if(t<128){o[r++]=t;continue}let n=Ge[t];if(n>4)o[r++]=65533,s+=n-1;else{for(t&=2===n?31:3===n?15:7;n>1&&s<i;)t=t<<6|63&e[s++],n--;n>1?o[r++]=65533:t<65536?o[r++]=t:(t-=65536,o[r++]=55296|t>>10&1023,o[r++]=56320|1023&t)}}return((e,t)=>{if(t<65534&&e.subarray&&je)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let i="";for(let s=0;s<t;s++)i+=String.fromCharCode(e[s]);return i})(o,r)},Ke=(e,t)=>{(t=t||e.length)>e.length&&(t=e.length);let i=t-1;for(;i>=0&&128==(192&e[i]);)i--;return i<0||0===i?t:i+Ge[e[i]]>t?i:t},Xe=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Je=Object.prototype.toString,{Z_NO_FLUSH:Ye,Z_SYNC_FLUSH:Ze,Z_FULL_FLUSH:qe,Z_FINISH:$e,Z_OK:et,Z_STREAM_END:tt,Z_DEFAULT_COMPRESSION:it,Z_DEFAULT_STRATEGY:st,Z_DEFLATED:rt}=O;function ot(e){this.options=Ve({level:it,method:rt,chunkSize:16384,windowBits:15,memLevel:8,strategy:st},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Xe,this.strm.avail_out=0;let i=Le(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(i!==et)throw new Error(k[i]);if(t.header&&Ue(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?ze(t.dictionary):"[object ArrayBuffer]"===Je.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,i=Ne(this.strm,e),i!==et)throw new Error(k[i]);this._dict_set=!0}}function nt(e,t){const i=new ot(t);if(i.push(e,!0),i.err)throw i.msg||k[i.err];return i.result}ot.prototype.push=function(e,t){const i=this.strm,s=this.options.chunkSize;let r,o;if(this.ended)return!1;for(o=t===~~t?t:!0===t?$e:Ye,"string"==typeof e?i.input=ze(e):"[object ArrayBuffer]"===Je.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;)if(0===i.avail_out&&(i.output=new Uint8Array(s),i.next_out=0,i.avail_out=s),(o===Ze||o===qe)&&i.avail_out<=6)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else{if(r=ke(i,o),r===tt)return i.next_out>0&&this.onData(i.output.subarray(0,i.next_out)),r=Oe(this.strm),this.onEnd(r),this.ended=!0,r===et;if(0!==i.avail_out){if(o>0&&i.next_out>0)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else if(0===i.avail_in)break}else this.onData(i.output)}return!0},ot.prototype.onData=function(e){this.chunks.push(e)},ot.prototype.onEnd=function(e){e===et&&(this.result=He(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var at={Deflate:ot,deflate:nt,deflateRaw:function(e,t){return(t=t||{}).raw=!0,nt(e,t)},gzip:function(e,t){return(t=t||{}).gzip=!0,nt(e,t)},constants:O};const lt=16209;var At=function(e,t){let i,s,r,o,n,a,l,A,h,c,u,d,p,f,g,m,_,v,b,y,B,w,x,P;const C=e.state;i=e.next_in,x=e.input,s=i+(e.avail_in-5),r=e.next_out,P=e.output,o=r-(t-e.avail_out),n=r+(e.avail_out-257),a=C.dmax,l=C.wsize,A=C.whave,h=C.wnext,c=C.window,u=C.hold,d=C.bits,p=C.lencode,f=C.distcode,g=(1<<C.lenbits)-1,m=(1<<C.distbits)-1;e:do{d<15&&(u+=x[i++]<<d,d+=8,u+=x[i++]<<d,d+=8),_=p[u&g];t:for(;;){if(v=_>>>24,u>>>=v,d-=v,v=_>>>16&255,0===v)P[r++]=65535&_;else{if(!(16&v)){if(0==(64&v)){_=p[(65535&_)+(u&(1<<v)-1)];continue t}if(32&v){C.mode=16191;break e}e.msg="invalid literal/length code",C.mode=lt;break e}b=65535&_,v&=15,v&&(d<v&&(u+=x[i++]<<d,d+=8),b+=u&(1<<v)-1,u>>>=v,d-=v),d<15&&(u+=x[i++]<<d,d+=8,u+=x[i++]<<d,d+=8),_=f[u&m];i:for(;;){if(v=_>>>24,u>>>=v,d-=v,v=_>>>16&255,!(16&v)){if(0==(64&v)){_=f[(65535&_)+(u&(1<<v)-1)];continue i}e.msg="invalid distance code",C.mode=lt;break e}if(y=65535&_,v&=15,d<v&&(u+=x[i++]<<d,d+=8,d<v&&(u+=x[i++]<<d,d+=8)),y+=u&(1<<v)-1,y>a){e.msg="invalid distance too far back",C.mode=lt;break e}if(u>>>=v,d-=v,v=r-o,y>v){if(v=y-v,v>A&&C.sane){e.msg="invalid distance too far back",C.mode=lt;break e}if(B=0,w=c,0===h){if(B+=l-v,v<b){b-=v;do{P[r++]=c[B++]}while(--v);B=r-y,w=P}}else if(h<v){if(B+=l+h-v,v-=h,v<b){b-=v;do{P[r++]=c[B++]}while(--v);if(B=0,h<b){v=h,b-=v;do{P[r++]=c[B++]}while(--v);B=r-y,w=P}}}else if(B+=h-v,v<b){b-=v;do{P[r++]=c[B++]}while(--v);B=r-y,w=P}for(;b>2;)P[r++]=w[B++],P[r++]=w[B++],P[r++]=w[B++],b-=3;b&&(P[r++]=w[B++],b>1&&(P[r++]=w[B++]))}else{B=r-y;do{P[r++]=P[B++],P[r++]=P[B++],P[r++]=P[B++],b-=3}while(b>2);b&&(P[r++]=P[B++],b>1&&(P[r++]=P[B++]))}break}}break}}while(i<s&&r<n);b=d>>3,i-=b,d-=b<<3,u&=(1<<d)-1,e.next_in=i,e.next_out=r,e.avail_in=i<s?s-i+5:5-(i-s),e.avail_out=r<n?n-r+257:257-(r-n),C.hold=u,C.bits=d};const ht=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),ct=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),ut=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),dt=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var pt=(e,t,i,s,r,o,n,a)=>{const l=a.bits;let A,h,c,u,d,p,f=0,g=0,m=0,_=0,v=0,b=0,y=0,B=0,w=0,x=0,P=null;const C=new Uint16Array(16),M=new Uint16Array(16);let F,E,I,D=null;for(f=0;f<=15;f++)C[f]=0;for(g=0;g<s;g++)C[t[i+g]]++;for(v=l,_=15;_>=1&&0===C[_];_--);if(v>_&&(v=_),0===_)return r[o++]=20971520,r[o++]=20971520,a.bits=1,0;for(m=1;m<_&&0===C[m];m++);for(v<m&&(v=m),B=1,f=1;f<=15;f++)if(B<<=1,B-=C[f],B<0)return-1;if(B>0&&(0===e||1!==_))return-1;for(M[1]=0,f=1;f<15;f++)M[f+1]=M[f]+C[f];for(g=0;g<s;g++)0!==t[i+g]&&(n[M[t[i+g]]++]=g);if(0===e?(P=D=n,p=20):1===e?(P=ht,D=ct,p=257):(P=ut,D=dt,p=0),x=0,g=0,f=m,d=o,b=v,y=0,c=-1,w=1<<v,u=w-1,1===e&&w>852||2===e&&w>592)return 1;for(;;){F=f-y,n[g]+1<p?(E=0,I=n[g]):n[g]>=p?(E=D[n[g]-p],I=P[n[g]-p]):(E=96,I=0),A=1<<f-y,h=1<<b,m=h;do{h-=A,r[d+(x>>y)+h]=F<<24|E<<16|I|0}while(0!==h);for(A=1<<f-1;x&A;)A>>=1;if(0!==A?(x&=A-1,x+=A):x=0,g++,0==--C[f]){if(f===_)break;f=t[i+n[g]]}if(f>v&&(x&u)!==c){for(0===y&&(y=v),d+=m,b=f-y,B=1<<b;b+y<_&&(B-=C[b+y],!(B<=0));)b++,B<<=1;if(w+=1<<b,1===e&&w>852||2===e&&w>592)return 1;c=x&u,r[c]=v<<24|b<<16|d-o|0}}return 0!==x&&(r[d+x]=f-y<<24|64<<16|0),a.bits=v,0};const{Z_FINISH:ft,Z_BLOCK:gt,Z_TREES:mt,Z_OK:_t,Z_STREAM_END:vt,Z_NEED_DICT:bt,Z_STREAM_ERROR:yt,Z_DATA_ERROR:Bt,Z_MEM_ERROR:wt,Z_BUF_ERROR:xt,Z_DEFLATED:Pt}=O,Ct=16180,Mt=16190,Ft=16191,Et=16192,It=16194,Dt=16199,St=16200,Tt=16206,Rt=16209,Lt=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function Ut(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const kt=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode<Ct||t.mode>16211?1:0},Ot=e=>{if(kt(e))return yt;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=Ct,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,_t},Nt=e=>{if(kt(e))return yt;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,Ot(e)},Qt=(e,t)=>{let i;if(kt(e))return yt;const s=e.state;return t<0?(i=0,t=-t):(i=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?yt:(null!==s.window&&s.wbits!==t&&(s.window=null),s.wrap=i,s.wbits=t,Nt(e))},Vt=(e,t)=>{if(!e)return yt;const i=new Ut;e.state=i,i.strm=e,i.window=null,i.mode=Ct;const s=Qt(e,t);return s!==_t&&(e.state=null),s};let Ht,jt,Gt=!0;const zt=e=>{if(Gt){Ht=new Int32Array(512),jt=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(pt(1,e.lens,0,288,Ht,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;pt(2,e.lens,0,32,jt,0,e.work,{bits:5}),Gt=!1}e.lencode=Ht,e.lenbits=9,e.distcode=jt,e.distbits=5},Wt=(e,t,i,s)=>{let r;const o=e.state;return null===o.window&&(o.wsize=1<<o.wbits,o.wnext=0,o.whave=0,o.window=new Uint8Array(o.wsize)),s>=o.wsize?(o.window.set(t.subarray(i-o.wsize,i),0),o.wnext=0,o.whave=o.wsize):(r=o.wsize-o.wnext,r>s&&(r=s),o.window.set(t.subarray(i-s,i-s+r),o.wnext),(s-=r)?(o.window.set(t.subarray(i-s,i),0),o.wnext=s,o.whave=o.wsize):(o.wnext+=r,o.wnext===o.wsize&&(o.wnext=0),o.whave<o.wsize&&(o.whave+=r))),0};var Kt=Nt,Xt=Vt,Jt=(e,t)=>{let i,s,r,o,n,a,l,A,h,c,u,d,p,f,g,m,_,v,b,y,B,w,x=0;const P=new Uint8Array(4);let C,M;const F=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(kt(e)||!e.output||!e.input&&0!==e.avail_in)return yt;i=e.state,i.mode===Ft&&(i.mode=Et),n=e.next_out,r=e.output,l=e.avail_out,o=e.next_in,s=e.input,a=e.avail_in,A=i.hold,h=i.bits,c=a,u=l,w=_t;e:for(;;)switch(i.mode){case Ct:if(0===i.wrap){i.mode=Et;break}for(;h<16;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}if(2&i.wrap&&35615===A){0===i.wbits&&(i.wbits=15),i.check=0,P[0]=255&A,P[1]=A>>>8&255,i.check=U(i.check,P,2,0),A=0,h=0,i.mode=16181;break}if(i.head&&(i.head.done=!1),!(1&i.wrap)||(((255&A)<<8)+(A>>8))%31){e.msg="incorrect header check",i.mode=Rt;break}if((15&A)!==Pt){e.msg="unknown compression method",i.mode=Rt;break}if(A>>>=4,h-=4,B=8+(15&A),0===i.wbits&&(i.wbits=B),B>15||B>i.wbits){e.msg="invalid window size",i.mode=Rt;break}i.dmax=1<<i.wbits,i.flags=0,e.adler=i.check=1,i.mode=512&A?16189:Ft,A=0,h=0;break;case 16181:for(;h<16;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}if(i.flags=A,(255&i.flags)!==Pt){e.msg="unknown compression method",i.mode=Rt;break}if(57344&i.flags){e.msg="unknown header flags set",i.mode=Rt;break}i.head&&(i.head.text=A>>8&1),512&i.flags&&4&i.wrap&&(P[0]=255&A,P[1]=A>>>8&255,i.check=U(i.check,P,2,0)),A=0,h=0,i.mode=16182;case 16182:for(;h<32;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}i.head&&(i.head.time=A),512&i.flags&&4&i.wrap&&(P[0]=255&A,P[1]=A>>>8&255,P[2]=A>>>16&255,P[3]=A>>>24&255,i.check=U(i.check,P,4,0)),A=0,h=0,i.mode=16183;case 16183:for(;h<16;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}i.head&&(i.head.xflags=255&A,i.head.os=A>>8),512&i.flags&&4&i.wrap&&(P[0]=255&A,P[1]=A>>>8&255,i.check=U(i.check,P,2,0)),A=0,h=0,i.mode=16184;case 16184:if(1024&i.flags){for(;h<16;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}i.length=A,i.head&&(i.head.extra_len=A),512&i.flags&&4&i.wrap&&(P[0]=255&A,P[1]=A>>>8&255,i.check=U(i.check,P,2,0)),A=0,h=0}else i.head&&(i.head.extra=null);i.mode=16185;case 16185:if(1024&i.flags&&(d=i.length,d>a&&(d=a),d&&(i.head&&(B=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Uint8Array(i.head.extra_len)),i.head.extra.set(s.subarray(o,o+d),B)),512&i.flags&&4&i.wrap&&(i.check=U(i.check,s,d,o)),a-=d,o+=d,i.length-=d),i.length))break e;i.length=0,i.mode=16186;case 16186:if(2048&i.flags){if(0===a)break e;d=0;do{B=s[o+d++],i.head&&B&&i.length<65536&&(i.head.name+=String.fromCharCode(B))}while(B&&d<a);if(512&i.flags&&4&i.wrap&&(i.check=U(i.check,s,d,o)),a-=d,o+=d,B)break e}else i.head&&(i.head.name=null);i.length=0,i.mode=16187;case 16187:if(4096&i.flags){if(0===a)break e;d=0;do{B=s[o+d++],i.head&&B&&i.length<65536&&(i.head.comment+=String.fromCharCode(B))}while(B&&d<a);if(512&i.flags&&4&i.wrap&&(i.check=U(i.check,s,d,o)),a-=d,o+=d,B)break e}else i.head&&(i.head.comment=null);i.mode=16188;case 16188:if(512&i.flags){for(;h<16;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}if(4&i.wrap&&A!==(65535&i.check)){e.msg="header crc mismatch",i.mode=Rt;break}A=0,h=0}i.head&&(i.head.hcrc=i.flags>>9&1,i.head.done=!0),e.adler=i.check=0,i.mode=Ft;break;case 16189:for(;h<32;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}e.adler=i.check=Lt(A),A=0,h=0,i.mode=Mt;case Mt:if(0===i.havedict)return e.next_out=n,e.avail_out=l,e.next_in=o,e.avail_in=a,i.hold=A,i.bits=h,bt;e.adler=i.check=1,i.mode=Ft;case Ft:if(t===gt||t===mt)break e;case Et:if(i.last){A>>>=7&h,h-=7&h,i.mode=Tt;break}for(;h<3;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}switch(i.last=1&A,A>>>=1,h-=1,3&A){case 0:i.mode=16193;break;case 1:if(zt(i),i.mode=Dt,t===mt){A>>>=2,h-=2;break e}break;case 2:i.mode=16196;break;case 3:e.msg="invalid block type",i.mode=Rt}A>>>=2,h-=2;break;case 16193:for(A>>>=7&h,h-=7&h;h<32;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}if((65535&A)!=(A>>>16^65535)){e.msg="invalid stored block lengths",i.mode=Rt;break}if(i.length=65535&A,A=0,h=0,i.mode=It,t===mt)break e;case It:i.mode=16195;case 16195:if(d=i.length,d){if(d>a&&(d=a),d>l&&(d=l),0===d)break e;r.set(s.subarray(o,o+d),n),a-=d,o+=d,l-=d,n+=d,i.length-=d;break}i.mode=Ft;break;case 16196:for(;h<14;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}if(i.nlen=257+(31&A),A>>>=5,h-=5,i.ndist=1+(31&A),A>>>=5,h-=5,i.ncode=4+(15&A),A>>>=4,h-=4,i.nlen>286||i.ndist>30){e.msg="too many length or distance symbols",i.mode=Rt;break}i.have=0,i.mode=16197;case 16197:for(;i.have<i.ncode;){for(;h<3;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}i.lens[F[i.have++]]=7&A,A>>>=3,h-=3}for(;i.have<19;)i.lens[F[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,C={bits:i.lenbits},w=pt(0,i.lens,0,19,i.lencode,0,i.work,C),i.lenbits=C.bits,w){e.msg="invalid code lengths set",i.mode=Rt;break}i.have=0,i.mode=16198;case 16198:for(;i.have<i.nlen+i.ndist;){for(;x=i.lencode[A&(1<<i.lenbits)-1],g=x>>>24,m=x>>>16&255,_=65535&x,!(g<=h);){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}if(_<16)A>>>=g,h-=g,i.lens[i.have++]=_;else{if(16===_){for(M=g+2;h<M;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}if(A>>>=g,h-=g,0===i.have){e.msg="invalid bit length repeat",i.mode=Rt;break}B=i.lens[i.have-1],d=3+(3&A),A>>>=2,h-=2}else if(17===_){for(M=g+3;h<M;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}A>>>=g,h-=g,B=0,d=3+(7&A),A>>>=3,h-=3}else{for(M=g+7;h<M;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}A>>>=g,h-=g,B=0,d=11+(127&A),A>>>=7,h-=7}if(i.have+d>i.nlen+i.ndist){e.msg="invalid bit length repeat",i.mode=Rt;break}for(;d--;)i.lens[i.have++]=B}}if(i.mode===Rt)break;if(0===i.lens[256]){e.msg="invalid code -- missing end-of-block",i.mode=Rt;break}if(i.lenbits=9,C={bits:i.lenbits},w=pt(1,i.lens,0,i.nlen,i.lencode,0,i.work,C),i.lenbits=C.bits,w){e.msg="invalid literal/lengths set",i.mode=Rt;break}if(i.distbits=6,i.distcode=i.distdyn,C={bits:i.distbits},w=pt(2,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,C),i.distbits=C.bits,w){e.msg="invalid distances set",i.mode=Rt;break}if(i.mode=Dt,t===mt)break e;case Dt:i.mode=St;case St:if(a>=6&&l>=258){e.next_out=n,e.avail_out=l,e.next_in=o,e.avail_in=a,i.hold=A,i.bits=h,At(e,u),n=e.next_out,r=e.output,l=e.avail_out,o=e.next_in,s=e.input,a=e.avail_in,A=i.hold,h=i.bits,i.mode===Ft&&(i.back=-1);break}for(i.back=0;x=i.lencode[A&(1<<i.lenbits)-1],g=x>>>24,m=x>>>16&255,_=65535&x,!(g<=h);){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}if(m&&0==(240&m)){for(v=g,b=m,y=_;x=i.lencode[y+((A&(1<<v+b)-1)>>v)],g=x>>>24,m=x>>>16&255,_=65535&x,!(v+g<=h);){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}A>>>=v,h-=v,i.back+=v}if(A>>>=g,h-=g,i.back+=g,i.length=_,0===m){i.mode=16205;break}if(32&m){i.back=-1,i.mode=Ft;break}if(64&m){e.msg="invalid literal/length code",i.mode=Rt;break}i.extra=15&m,i.mode=16201;case 16201:if(i.extra){for(M=i.extra;h<M;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}i.length+=A&(1<<i.extra)-1,A>>>=i.extra,h-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=16202;case 16202:for(;x=i.distcode[A&(1<<i.distbits)-1],g=x>>>24,m=x>>>16&255,_=65535&x,!(g<=h);){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}if(0==(240&m)){for(v=g,b=m,y=_;x=i.distcode[y+((A&(1<<v+b)-1)>>v)],g=x>>>24,m=x>>>16&255,_=65535&x,!(v+g<=h);){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}A>>>=v,h-=v,i.back+=v}if(A>>>=g,h-=g,i.back+=g,64&m){e.msg="invalid distance code",i.mode=Rt;break}i.offset=_,i.extra=15&m,i.mode=16203;case 16203:if(i.extra){for(M=i.extra;h<M;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}i.offset+=A&(1<<i.extra)-1,A>>>=i.extra,h-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){e.msg="invalid distance too far back",i.mode=Rt;break}i.mode=16204;case 16204:if(0===l)break e;if(d=u-l,i.offset>d){if(d=i.offset-d,d>i.whave&&i.sane){e.msg="invalid distance too far back",i.mode=Rt;break}d>i.wnext?(d-=i.wnext,p=i.wsize-d):p=i.wnext-d,d>i.length&&(d=i.length),f=i.window}else f=r,p=n-i.offset,d=i.length;d>l&&(d=l),l-=d,i.length-=d;do{r[n++]=f[p++]}while(--d);0===i.length&&(i.mode=St);break;case 16205:if(0===l)break e;r[n++]=i.length,l--,i.mode=St;break;case Tt:if(i.wrap){for(;h<32;){if(0===a)break e;a--,A|=s[o++]<<h,h+=8}if(u-=l,e.total_out+=u,i.total+=u,4&i.wrap&&u&&(e.adler=i.check=i.flags?U(i.check,r,u,n-u):R(i.check,r,u,n-u)),u=l,4&i.wrap&&(i.flags?A:Lt(A))!==i.check){e.msg="incorrect data check",i.mode=Rt;break}A=0,h=0}i.mode=16207;case 16207:if(i.wrap&&i.flags){for(;h<32;){if(0===a)break e;a--,A+=s[o++]<<h,h+=8}if(4&i.wrap&&A!==(4294967295&i.total)){e.msg="incorrect length check",i.mode=Rt;break}A=0,h=0}i.mode=16208;case 16208:w=vt;break e;case Rt:w=Bt;break e;case 16210:return wt;default:return yt}return e.next_out=n,e.avail_out=l,e.next_in=o,e.avail_in=a,i.hold=A,i.bits=h,(i.wsize||u!==e.avail_out&&i.mode<Rt&&(i.mode<Tt||t!==ft))&&Wt(e,e.output,e.next_out,u-e.avail_out),c-=e.avail_in,u-=e.avail_out,e.total_in+=c,e.total_out+=u,i.total+=u,4&i.wrap&&u&&(e.adler=i.check=i.flags?U(i.check,r,u,e.next_out-u):R(i.check,r,u,e.next_out-u)),e.data_type=i.bits+(i.last?64:0)+(i.mode===Ft?128:0)+(i.mode===Dt||i.mode===It?256:0),(0===c&&0===u||t===ft)&&w===_t&&(w=xt),w},Yt=e=>{if(kt(e))return yt;let t=e.state;return t.window&&(t.window=null),e.state=null,_t},Zt=(e,t)=>{if(kt(e))return yt;const i=e.state;return 0==(2&i.wrap)?yt:(i.head=t,t.done=!1,_t)},qt=(e,t)=>{const i=t.length;let s,r,o;return kt(e)?yt:(s=e.state,0!==s.wrap&&s.mode!==Mt?yt:s.mode===Mt&&(r=1,r=R(r,t,i,0),r!==s.check)?Bt:(o=Wt(e,t,i,i),o?(s.mode=16210,wt):(s.havedict=1,_t)))},$t=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const ei=Object.prototype.toString,{Z_NO_FLUSH:ti,Z_FINISH:ii,Z_OK:si,Z_STREAM_END:ri,Z_NEED_DICT:oi,Z_STREAM_ERROR:ni,Z_DATA_ERROR:ai,Z_MEM_ERROR:li}=O;function Ai(e){this.options=Ve({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Xe,this.strm.avail_out=0;let i=Xt(this.strm,t.windowBits);if(i!==si)throw new Error(k[i]);if(this.header=new $t,Zt(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=ze(t.dictionary):"[object ArrayBuffer]"===ei.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(i=qt(this.strm,t.dictionary),i!==si)))throw new Error(k[i])}function hi(e,t){const i=new Ai(t);if(i.push(e),i.err)throw i.msg||k[i.err];return i.result}Ai.prototype.push=function(e,t){const i=this.strm,s=this.options.chunkSize,r=this.options.dictionary;let o,n,a;if(this.ended)return!1;for(n=t===~~t?t:!0===t?ii:ti,"[object ArrayBuffer]"===ei.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;){for(0===i.avail_out&&(i.output=new Uint8Array(s),i.next_out=0,i.avail_out=s),o=Jt(i,n),o===oi&&r&&(o=qt(i,r),o===si?o=Jt(i,n):o===ai&&(o=oi));i.avail_in>0&&o===ri&&i.state.wrap>0&&0!==e[i.next_in];)Kt(i),o=Jt(i,n);switch(o){case ni:case ai:case oi:case li:return this.onEnd(o),this.ended=!0,!1}if(a=i.avail_out,i.next_out&&(0===i.avail_out||o===ri))if("string"===this.options.to){let e=Ke(i.output,i.next_out),t=i.next_out-e,r=We(i.output,e);i.next_out=t,i.avail_out=s-t,t&&i.output.set(i.output.subarray(e,e+t),0),this.onData(r)}else this.onData(i.output.length===i.next_out?i.output:i.output.subarray(0,i.next_out));if(o!==si||0!==a){if(o===ri)return o=Yt(this.strm),this.onEnd(o),this.ended=!0,!0;if(0===i.avail_in)break}}return!0},Ai.prototype.onData=function(e){this.chunks.push(e)},Ai.prototype.onEnd=function(e){e===si&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=He(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var ci={Inflate:Ai,inflate:hi,inflateRaw:function(e,t){return(t=t||{}).raw=!0,hi(e,t)},ungzip:hi,constants:O};const{Deflate:ui,deflate:di,deflateRaw:pi,gzip:fi}=at,{Inflate:gi,inflate:mi,inflateRaw:_i,ungzip:vi}=ci;var bi=ui,yi=di,Bi=pi,wi=fi,xi=gi,Pi=mi,Ci=_i,Mi=vi,Fi=O,Ei={Deflate:bi,deflate:yi,deflateRaw:Bi,gzip:wi,Inflate:xi,inflate:Pi,inflateRaw:Ci,ungzip:Mi,constants:Fi};e.Deflate=bi,e.Inflate=xi,e.constants=Fi,e.default=Ei,e.deflate=yi,e.deflateRaw=Bi,e.gzip=wi,e.inflate=Pi,e.inflateRaw=Ci,e.ungzip=Mi,Object.defineProperty(e,"__esModule",{value:!0})}));var bC=Object.freeze({__proto__:null});let yC=window.pako||bC;yC.inflate||(yC=yC.default);const BC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const wC={version:1,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],meshPositions:e[4],meshIndices:e[5],meshEdgesIndices:e[6],meshColors:e[7],entityIDs:e[8],entityMeshes:e[9],entityIsObjects:e[10],positionsDecodeMatrix:e[11]}}(i),a=function(e){return{positions:new Uint16Array(yC.inflate(e.positions).buffer),normals:new Int8Array(yC.inflate(e.normals).buffer),indices:new Uint32Array(yC.inflate(e.indices).buffer),edgeIndices:new Uint32Array(yC.inflate(e.edgeIndices).buffer),meshPositions:new Uint32Array(yC.inflate(e.meshPositions).buffer),meshIndices:new Uint32Array(yC.inflate(e.meshIndices).buffer),meshEdgesIndices:new Uint32Array(yC.inflate(e.meshEdgesIndices).buffer),meshColors:new Uint8Array(yC.inflate(e.meshColors).buffer),entityIDs:yC.inflate(e.entityIDs,{to:"string"}),entityMeshes:new Uint32Array(yC.inflate(e.entityMeshes).buffer),entityIsObjects:new Uint8Array(yC.inflate(e.entityIsObjects).buffer),positionsDecodeMatrix:new Float32Array(yC.inflate(e.positionsDecodeMatrix).buffer)}}(n);!function(e,t,i,s,r,o){o.getNextId(),s.positionsCompression="precompressed",s.normalsCompression="precompressed";const n=i.positions,a=i.normals,l=i.indices,A=i.edgeIndices,h=i.meshPositions,c=i.meshIndices,u=i.meshEdgesIndices,p=i.meshColors,f=JSON.parse(i.entityIDs),g=i.entityMeshes,m=i.entityIsObjects,_=h.length,v=g.length;for(let r=0;r<v;r++){const o=f[r],b=t.globalizeObjectIds?d.globalizeObjectId(s.id,o):o,B=e.metaScene.metaObjects[b],w={},x={};if(B){if(t.excludeTypesMap&&B.type&&t.excludeTypesMap[B.type])continue;if(t.includeTypesMap&&B.type&&!t.includeTypesMap[B.type])continue;const e=t.objectDefaults?t.objectDefaults[B.type]||t.objectDefaults.DEFAULT:null;e&&(!1===e.visible&&(w.visible=!1),!1===e.pickable&&(w.pickable=!1),e.colorize&&(x.color=e.colorize),void 0!==e.opacity&&null!==e.opacity&&(x.opacity=e.opacity))}else if(t.excludeUnclassifiedObjects)continue;const P=r===v-1,C=[];for(let e=g[r],t=P?g.length:g[r+1];e<t;e++){const t=e===_-1,r=b+".mesh."+e,o=BC(p.subarray(4*e,4*e+3)),d=p[4*e+3]/255;s.createMesh(y.apply(x,{id:r,primitive:"triangles",positionsCompressed:n.subarray(h[e],t?n.length:h[e+1]),normalsCompressed:a.subarray(h[e],t?n.length:h[e+1]),indices:l.subarray(c[e],t?l.length:c[e+1]),edgeIndices:A.subarray(u[e],t?A.length:u[e+1]),positionsDecodeMatrix:i.positionsDecodeMatrix,color:o,opacity:d})),C.push(r)}s.createEntity(y.apply(w,{id:b,isObject:1===m[r],meshIds:C}))}}(e,t,a,s,0,o)}};let xC=window.pako||bC;xC.inflate||(xC=xC.default);const PC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const CC={version:2,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],meshPositions:e[4],meshIndices:e[5],meshEdgesIndices:e[6],meshColors:e[7],entityIDs:e[8],entityMeshes:e[9],entityIsObjects:e[10],positionsDecodeMatrix:e[11],entityMeshIds:e[12],entityMatrices:e[13],entityUsesInstancing:e[14]}}(i),a=function(e){return{positions:new Uint16Array(xC.inflate(e.positions).buffer),normals:new Int8Array(xC.inflate(e.normals).buffer),indices:new Uint32Array(xC.inflate(e.indices).buffer),edgeIndices:new Uint32Array(xC.inflate(e.edgeIndices).buffer),meshPositions:new Uint32Array(xC.inflate(e.meshPositions).buffer),meshIndices:new Uint32Array(xC.inflate(e.meshIndices).buffer),meshEdgesIndices:new Uint32Array(xC.inflate(e.meshEdgesIndices).buffer),meshColors:new Uint8Array(xC.inflate(e.meshColors).buffer),entityIDs:xC.inflate(e.entityIDs,{to:"string"}),entityMeshes:new Uint32Array(xC.inflate(e.entityMeshes).buffer),entityIsObjects:new Uint8Array(xC.inflate(e.entityIsObjects).buffer),positionsDecodeMatrix:new Float32Array(xC.inflate(e.positionsDecodeMatrix).buffer),entityMeshIds:new Uint32Array(xC.inflate(e.entityMeshIds).buffer),entityMatrices:new Float32Array(xC.inflate(e.entityMatrices).buffer),entityUsesInstancing:new Uint8Array(xC.inflate(e.entityUsesInstancing).buffer)}}(n);!function(e,t,i,s,r,o){const n=o.getNextId();s.positionsCompression="precompressed",s.normalsCompression="precompressed";const a=i.positions,l=i.normals,A=i.indices,h=i.edgeIndices,c=i.meshPositions,u=i.meshIndices,p=i.meshEdgesIndices,f=i.meshColors,g=JSON.parse(i.entityIDs),m=i.entityMeshes,_=i.entityIsObjects,v=i.entityMeshIds,b=i.entityMatrices,B=i.entityUsesInstancing,w=c.length,x=m.length,P={};for(let r=0;r<x;r++){const C=g[r],M=t.globalizeObjectIds?d.globalizeObjectId(s.id,C):C,F=e.metaScene.metaObjects[M],E={},I={},D=b.subarray(16*r,16*r+16);if(F){if(t.excludeTypesMap&&F.type&&t.excludeTypesMap[F.type])continue;if(t.includeTypesMap&&F.type&&!t.includeTypesMap[F.type])continue;const e=t.objectDefaults?t.objectDefaults[F.type]||t.objectDefaults.DEFAULT:null;e&&(!1===e.visible&&(E.visible=!1),!1===e.pickable&&(E.pickable=!1),e.colorize&&(I.color=e.colorize),void 0!==e.opacity&&null!==e.opacity&&(I.opacity=e.opacity))}else if(t.excludeUnclassifiedObjects)continue;const S=r===x-1,T=[];for(let e=m[r],t=S?v.length:m[r+1];e<t;e++){const t=v[e],d=t===w-1,g=o.getNextId(),m=PC(f.subarray(4*t,4*t+3)),_=f[4*t+3]/255,b=a.subarray(c[t],d?a.length:c[t+1]),x=l.subarray(c[t],d?a.length:c[t+1]),C=A.subarray(u[t],d?A.length:u[t+1]),M=h.subarray(p[t],d?h.length:p[t+1]);if(1===B[r]){const e=`${n}.geometry.${g}.${t}`;e in P||(s.createGeometry({id:e,positionsCompressed:b,normalsCompressed:x,indices:C,edgeIndices:M,primitive:"triangles",positionsDecodeMatrix:i.positionsDecodeMatrix}),P[e]=!0),s.createMesh(y.apply(I,{id:g,color:m,opacity:_,matrix:D,geometryId:e})),T.push(g)}else s.createMesh(y.apply(I,{id:g,primitive:"triangles",positionsCompressed:b,normalsCompressed:x,indices:C,edgeIndices:M,positionsDecodeMatrix:i.positionsDecodeMatrix,color:m,opacity:_})),T.push(g)}T.length&&s.createEntity(y.apply(E,{id:M,isObject:1===_[r],meshIds:T}))}}(e,t,a,s,0,o)}};let MC=window.pako||bC;MC.inflate||(MC=MC.default);const FC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const EC={version:3,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],meshPositions:e[4],meshIndices:e[5],meshEdgesIndices:e[6],meshColors:e[7],entityIDs:e[8],entityMeshes:e[9],entityIsObjects:e[10],instancedPositionsDecodeMatrix:e[11],batchedPositionsDecodeMatrix:e[12],entityMeshIds:e[13],entityMatrices:e[14],entityUsesInstancing:e[15]}}(i),a=function(e){return{positions:new Uint16Array(MC.inflate(e.positions).buffer),normals:new Int8Array(MC.inflate(e.normals).buffer),indices:new Uint32Array(MC.inflate(e.indices).buffer),edgeIndices:new Uint32Array(MC.inflate(e.edgeIndices).buffer),meshPositions:new Uint32Array(MC.inflate(e.meshPositions).buffer),meshIndices:new Uint32Array(MC.inflate(e.meshIndices).buffer),meshEdgesIndices:new Uint32Array(MC.inflate(e.meshEdgesIndices).buffer),meshColors:new Uint8Array(MC.inflate(e.meshColors).buffer),entityIDs:MC.inflate(e.entityIDs,{to:"string"}),entityMeshes:new Uint32Array(MC.inflate(e.entityMeshes).buffer),entityIsObjects:new Uint8Array(MC.inflate(e.entityIsObjects).buffer),instancedPositionsDecodeMatrix:new Float32Array(MC.inflate(e.instancedPositionsDecodeMatrix).buffer),batchedPositionsDecodeMatrix:new Float32Array(MC.inflate(e.batchedPositionsDecodeMatrix).buffer),entityMeshIds:new Uint32Array(MC.inflate(e.entityMeshIds).buffer),entityMatrices:new Float32Array(MC.inflate(e.entityMatrices).buffer),entityUsesInstancing:new Uint8Array(MC.inflate(e.entityUsesInstancing).buffer)}}(n);!function(e,t,i,s,r,o){const n=o.getNextId();s.positionsCompression="precompressed",s.normalsCompression="precompressed";const a=i.positions,l=i.normals,A=i.indices,h=i.edgeIndices,c=i.meshPositions,u=i.meshIndices,p=i.meshEdgesIndices,f=i.meshColors,g=JSON.parse(i.entityIDs),m=i.entityMeshes,_=i.entityIsObjects,v=i.entityMeshIds,b=i.entityMatrices,B=i.entityUsesInstancing,w=c.length,x=m.length,P={};for(let r=0;r<x;r++){const o=g[r],D=t.globalizeObjectIds?d.globalizeObjectId(s.id,o):o,S=e.metaScene.metaObjects[D],T={},R={},L=b.subarray(16*r,16*r+16);if(S){if(t.excludeTypesMap&&S.type&&t.excludeTypesMap[S.type])continue;if(t.includeTypesMap&&S.type&&!t.includeTypesMap[S.type])continue;const e=t.objectDefaults?t.objectDefaults[S.type]||t.objectDefaults.DEFAULT:null;e&&(!1===e.visible&&(T.visible=!1),!1===e.pickable&&(T.pickable=!1),e.colorize&&(R.color=e.colorize),void 0!==e.opacity&&null!==e.opacity&&(R.opacity=e.opacity))}else if(t.excludeUnclassifiedObjects)continue;const U=r===x-1,k=[];for(let e=m[r],t=U?v.length:m[r+1];e<t;e++){var C=v[e];const t=C===w-1,o=`${n}.${D}.mesh.${C}`,d=FC(f.subarray(4*C,4*C+3)),g=f[4*C+3]/255;var M=a.subarray(c[C],t?a.length:c[C+1]),F=l.subarray(c[C],t?a.length:c[C+1]),E=A.subarray(u[C],t?A.length:u[C+1]),I=h.subarray(p[C],t?h.length:p[C+1]);if(1===B[r]){const e=`${n}.geometry.${o}.${C}`;e in P||(s.createGeometry({id:e,positionsCompressed:M,normalsCompressed:F,indices:E,edgeIndices:I,primitive:"triangles",positionsDecodeMatrix:i.instancedPositionsDecodeMatrix}),P[e]=!0),s.createMesh(y.apply(R,{id:o,color:d,opacity:g,matrix:L,geometryId:e})),k.push(o)}else s.createMesh(y.apply(R,{id:o,primitive:"triangles",positionsCompressed:M,normalsCompressed:F,indices:E,edgeIndices:I,positionsDecodeMatrix:i.batchedPositionsDecodeMatrix,color:d,opacity:g})),k.push(o)}k.length&&s.createEntity(y.apply(T,{id:D,isObject:1===_[r],meshIds:k}))}}(e,t,a,s,0,o)}};let IC=window.pako||bC;IC.inflate||(IC=IC.default);const DC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const SC={version:4,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],decodeMatrices:e[4],matrices:e[5],eachPrimitivePositionsAndNormalsPortion:e[6],eachPrimitiveIndicesPortion:e[7],eachPrimitiveEdgeIndicesPortion:e[8],eachPrimitiveDecodeMatricesPortion:e[9],eachPrimitiveColor:e[10],primitiveInstances:e[11],eachEntityId:e[12],eachEntityPrimitiveInstancesPortion:e[13],eachEntityMatricesPortion:e[14],eachEntityMatrix:e[15]}}(i),a=function(e){return{positions:new Uint16Array(IC.inflate(e.positions).buffer),normals:new Int8Array(IC.inflate(e.normals).buffer),indices:new Uint32Array(IC.inflate(e.indices).buffer),edgeIndices:new Uint32Array(IC.inflate(e.edgeIndices).buffer),decodeMatrices:new Float32Array(IC.inflate(e.decodeMatrices).buffer),matrices:new Float32Array(IC.inflate(e.matrices).buffer),eachPrimitivePositionsAndNormalsPortion:new Uint32Array(IC.inflate(e.eachPrimitivePositionsAndNormalsPortion).buffer),eachPrimitiveIndicesPortion:new Uint32Array(IC.inflate(e.eachPrimitiveIndicesPortion).buffer),eachPrimitiveEdgeIndicesPortion:new Uint32Array(IC.inflate(e.eachPrimitiveEdgeIndicesPortion).buffer),eachPrimitiveDecodeMatricesPortion:new Uint32Array(IC.inflate(e.eachPrimitiveDecodeMatricesPortion).buffer),eachPrimitiveColor:new Uint8Array(IC.inflate(e.eachPrimitiveColor).buffer),primitiveInstances:new Uint32Array(IC.inflate(e.primitiveInstances).buffer),eachEntityId:IC.inflate(e.eachEntityId,{to:"string"}),eachEntityPrimitiveInstancesPortion:new Uint32Array(IC.inflate(e.eachEntityPrimitiveInstancesPortion).buffer),eachEntityMatricesPortion:new Uint32Array(IC.inflate(e.eachEntityMatricesPortion).buffer)}}(n);!function(e,t,i,s,r,o){const n=o.getNextId();s.positionsCompression="precompressed",s.normalsCompression="precompressed";const a=i.positions,l=i.normals,A=i.indices,h=i.edgeIndices,c=i.decodeMatrices,u=i.matrices,d=i.eachPrimitivePositionsAndNormalsPortion,p=i.eachPrimitiveIndicesPortion,f=i.eachPrimitiveEdgeIndicesPortion,g=i.eachPrimitiveDecodeMatricesPortion,m=i.eachPrimitiveColor,_=i.primitiveInstances,v=JSON.parse(i.eachEntityId),b=i.eachEntityPrimitiveInstancesPortion,B=i.eachEntityMatricesPortion,w=d.length,x=_.length,P=new Uint8Array(w),C=new Uint32Array(w),M=v.length;for(let e=0;e<w;e++)C[e]=e;C.sort(((e,t)=>g[e]<g[t]?-1:g[e]>g[t]?1:0));for(let e=0;e<x;e++)P[_[e]]++;const F={};for(let e=0;e<M;e++){const t=M-1,i=e===t,s=b[e],r=i?b[t]:b[e+1];for(let t=s;t<r;t++){const i=_[t];P[i]>1||(F[i]=e)}}for(let e=0;e<w;e++){const t=C[e],i=t===w-1,r=P[t]>1,o=DC(m.subarray(4*t,4*t+3)),u=m[4*t+3]/255,_=a.subarray(d[t],i?a.length:d[t+1]),b=l.subarray(d[t],i?l.length:d[t+1]),B=A.subarray(p[t],i?A.length:p[t+1]),x=h.subarray(f[t],i?h.length:f[t+1]),M=c.subarray(g[t],g[t]+16);if(r){const e=`${n}-geometry.${t}`;s.createGeometry({id:e,primitive:"triangles",positionsCompressed:_,normalsCompressed:b,indices:B,edgeIndices:x,positionsDecodeMatrix:M})}else{const e=`${n}-${t}`;v[F[t]];const i={};s.createMesh(y.apply(i,{id:e,primitive:"triangles",positionsCompressed:_,normalsCompressed:b,indices:B,edgeIndices:x,positionsDecodeMatrix:M,color:o,opacity:u}))}}let E=0;for(let e=0;e<M;e++){const t=M-1,i=e===t,r=v[e],o=b[e],a=i?b[t]:b[e+1],l=[];for(let t=o;t<a;t++){const i=_[t];if(P[i]>1){const t={},r=`${n}-instance.${E++}`,o=`${n}-geometry.${i}`,a=16*B[e],A=u.subarray(a,a+16);s.createMesh(y.apply(t,{id:r,geometryId:o,matrix:A})),l.push(r)}else l.push(i)}if(l.length>0){const e={};s.createEntity(y.apply(e,{id:r,isObject:!0,meshIds:l}))}}}(0,0,a,s,0,o)}};let TC=window.pako||bC;TC.inflate||(TC=TC.default);const RC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const LC={version:5,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],matrices:e[4],eachPrimitivePositionsAndNormalsPortion:e[5],eachPrimitiveIndicesPortion:e[6],eachPrimitiveEdgeIndicesPortion:e[7],eachPrimitiveColor:e[8],primitiveInstances:e[9],eachEntityId:e[10],eachEntityPrimitiveInstancesPortion:e[11],eachEntityMatricesPortion:e[12]}}(i),a=function(e){return{positions:new Float32Array(TC.inflate(e.positions).buffer),normals:new Int8Array(TC.inflate(e.normals).buffer),indices:new Uint32Array(TC.inflate(e.indices).buffer),edgeIndices:new Uint32Array(TC.inflate(e.edgeIndices).buffer),matrices:new Float32Array(TC.inflate(e.matrices).buffer),eachPrimitivePositionsAndNormalsPortion:new Uint32Array(TC.inflate(e.eachPrimitivePositionsAndNormalsPortion).buffer),eachPrimitiveIndicesPortion:new Uint32Array(TC.inflate(e.eachPrimitiveIndicesPortion).buffer),eachPrimitiveEdgeIndicesPortion:new Uint32Array(TC.inflate(e.eachPrimitiveEdgeIndicesPortion).buffer),eachPrimitiveColor:new Uint8Array(TC.inflate(e.eachPrimitiveColor).buffer),primitiveInstances:new Uint32Array(TC.inflate(e.primitiveInstances).buffer),eachEntityId:TC.inflate(e.eachEntityId,{to:"string"}),eachEntityPrimitiveInstancesPortion:new Uint32Array(TC.inflate(e.eachEntityPrimitiveInstancesPortion).buffer),eachEntityMatricesPortion:new Uint32Array(TC.inflate(e.eachEntityMatricesPortion).buffer)}}(n);!function(e,t,i,s,r,o){const n=o.getNextId();s.positionsCompression="disabled",s.normalsCompression="precompressed";const a=i.positions,l=i.normals,A=i.indices,h=i.edgeIndices,c=i.matrices,u=i.eachPrimitivePositionsAndNormalsPortion,d=i.eachPrimitiveIndicesPortion,p=i.eachPrimitiveEdgeIndicesPortion,f=i.eachPrimitiveColor,g=i.primitiveInstances,m=JSON.parse(i.eachEntityId),_=i.eachEntityPrimitiveInstancesPortion,v=i.eachEntityMatricesPortion,b=u.length,B=g.length,w=new Uint8Array(b),x=m.length;for(let e=0;e<B;e++)w[g[e]]++;const P={};for(let e=0;e<x;e++){const t=x-1,i=e===t,s=_[e],r=i?_[t]:_[e+1];for(let t=s;t<r;t++){const i=g[t];w[i]>1||(P[i]=e)}}for(let e=0;e<b;e++){const t=e===b-1,i=w[e]>1,r=RC(f.subarray(4*e,4*e+3)),o=f[4*e+3]/255,c=a.subarray(u[e],t?a.length:u[e+1]),g=l.subarray(u[e],t?l.length:u[e+1]),_=A.subarray(d[e],t?A.length:d[e+1]),v=h.subarray(p[e],t?h.length:p[e+1]);if(i){const t=`${n}-geometry.${e}`;s.createGeometry({id:t,primitive:"triangles",positionsCompressed:c,normalsCompressed:g,indices:_,edgeIndices:v})}else{const t=e;m[P[e]];const i={};s.createMesh(y.apply(i,{id:t,primitive:"triangles",positionsCompressed:c,normalsCompressed:g,indices:_,edgeIndices:v,color:r,opacity:o}))}}let C=0;for(let e=0;e<x;e++){const t=x-1,i=e===t,r=m[e],o=_[e],n=i?_[t]:_[e+1],a=[];for(let t=o;t<n;t++){const i=g[t];if(w[i]>1){const t={},r="instance."+C++,o="geometry"+i,n=16*v[e],l=c.subarray(n,n+16);s.createMesh(y.apply(t,{id:r,geometryId:o,matrix:l})),a.push(r)}else a.push(i)}if(a.length>0){const e={};s.createEntity(y.apply(e,{id:r,isObject:!0,meshIds:a}))}}}(0,0,a,s,0,o)}};let UC=window.pako||bC;UC.inflate||(UC=UC.default);const kC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const OC={version:6,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],matrices:e[4],reusedPrimitivesDecodeMatrix:e[5],eachPrimitivePositionsAndNormalsPortion:e[6],eachPrimitiveIndicesPortion:e[7],eachPrimitiveEdgeIndicesPortion:e[8],eachPrimitiveColorAndOpacity:e[9],primitiveInstances:e[10],eachEntityId:e[11],eachEntityPrimitiveInstancesPortion:e[12],eachEntityMatricesPortion:e[13],eachTileAABB:e[14],eachTileEntitiesPortion:e[15]}}(i),a=function(e){function t(e,t){return 0===e.length?[]:UC.inflate(e,t).buffer}return{positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),matrices:new Float32Array(t(e.matrices)),reusedPrimitivesDecodeMatrix:new Float32Array(t(e.reusedPrimitivesDecodeMatrix)),eachPrimitivePositionsAndNormalsPortion:new Uint32Array(t(e.eachPrimitivePositionsAndNormalsPortion)),eachPrimitiveIndicesPortion:new Uint32Array(t(e.eachPrimitiveIndicesPortion)),eachPrimitiveEdgeIndicesPortion:new Uint32Array(t(e.eachPrimitiveEdgeIndicesPortion)),eachPrimitiveColorAndOpacity:new Uint8Array(t(e.eachPrimitiveColorAndOpacity)),primitiveInstances:new Uint32Array(t(e.primitiveInstances)),eachEntityId:UC.inflate(e.eachEntityId,{to:"string"}),eachEntityPrimitiveInstancesPortion:new Uint32Array(t(e.eachEntityPrimitiveInstancesPortion)),eachEntityMatricesPortion:new Uint32Array(t(e.eachEntityMatricesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(n);!function(e,t,i,s,r,o){const n=o.getNextId(),a=i.positions,l=i.normals,A=i.indices,h=i.edgeIndices,c=i.matrices,u=i.reusedPrimitivesDecodeMatrix,p=i.eachPrimitivePositionsAndNormalsPortion,f=i.eachPrimitiveIndicesPortion,g=i.eachPrimitiveEdgeIndicesPortion,m=i.eachPrimitiveColorAndOpacity,_=i.primitiveInstances,v=JSON.parse(i.eachEntityId),b=i.eachEntityPrimitiveInstancesPortion,B=i.eachEntityMatricesPortion,w=i.eachTileAABB,x=i.eachTileEntitiesPortion,P=p.length,C=_.length,M=v.length,F=x.length,E=new Uint32Array(P);for(let e=0;e<C;e++){const t=_[e];void 0!==E[t]?E[t]++:E[t]=1}const I=d.vec3(),D=d.AABB3();for(let i=0;i<F;i++){const r=i===F-1,C=x[i],S=r?M:x[i+1],T=6*i,R=w.subarray(T,T+6);d.getAABB3Center(R,I),D[0]=R[0]-I[0],D[1]=R[1]-I[1],D[2]=R[2]-I[2],D[3]=R[3]-I[0],D[4]=R[4]-I[1],D[5]=R[5]-I[2];const L=Ht.createPositionsDecodeMatrix(D),U={};for(let r=C;r<S;r++){const w=v[r],x=t.globalizeObjectIds?d.globalizeObjectId(s.id,w):w,C=B[r],F=c.slice(C,C+16),D=r===M-1,S=b[r],T=D?_.length:b[r+1],R=[],k=e.metaScene.metaObjects[x],O={},N={};if(k){if(t.excludeTypesMap&&k.type&&t.excludeTypesMap[k.type])continue;if(t.includeTypesMap&&k.type&&!t.includeTypesMap[k.type])continue;const e=t.objectDefaults?t.objectDefaults[k.type]||t.objectDefaults.DEFAULT:null;e&&(!1===e.visible&&(O.visible=!1),!1===e.pickable&&(O.pickable=!1),e.colorize&&(N.color=e.colorize),void 0!==e.opacity&&null!==e.opacity&&(N.opacity=e.opacity))}else if(t.excludeUnclassifiedObjects)continue;for(let e=S;e<T;e++){const t=_[e],r=E[t]>1,c=t===P-1,d=a.subarray(p[t],c?a.length:p[t+1]),v=l.subarray(p[t],c?l.length:p[t+1]),b=A.subarray(f[t],c?A.length:f[t+1]),B=h.subarray(g[t],c?h.length:g[t+1]),w=kC(m.subarray(4*t,4*t+3)),x=m[4*t+3]/255,C=o.getNextId();if(r){const e=`${n}-geometry.${i}.${t}`;U[e]||(s.createGeometry({id:e,primitive:"triangles",positionsCompressed:d,indices:b,edgeIndices:B,positionsDecodeMatrix:u}),U[e]=!0),s.createMesh(y.apply(N,{id:C,geometryId:e,origin:I,matrix:F,color:w,opacity:x})),R.push(C)}else s.createMesh(y.apply(N,{id:C,origin:I,primitive:"triangles",positionsCompressed:d,normalsCompressed:v,indices:b,edgeIndices:B,positionsDecodeMatrix:L,color:w,opacity:x})),R.push(C)}R.length>0&&s.createEntity(y.apply(O,{id:x,isObject:!0,meshIds:R}))}}}(e,t,a,s,0,o)}};let NC=window.pako||bC;NC.inflate||(NC=NC.default);const QC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function VC(e){const t=[];for(let i=0,s=e.length;i<s;i+=3)t.push(e[i]),t.push(e[i+1]),t.push(e[i+2]),t.push(1);return t}const HC={version:7,parse:function(e,t,i,s,r,o){const n=function(e){return{positions:e[0],normals:e[1],colors:e[2],indices:e[3],edgeIndices:e[4],matrices:e[5],reusedGeometriesDecodeMatrix:e[6],eachGeometryPrimitiveType:e[7],eachGeometryPositionsPortion:e[8],eachGeometryNormalsPortion:e[9],eachGeometryColorsPortion:e[10],eachGeometryIndicesPortion:e[11],eachGeometryEdgeIndicesPortion:e[12],eachMeshGeometriesPortion:e[13],eachMeshMatricesPortion:e[14],eachMeshMaterial:e[15],eachEntityId:e[16],eachEntityMeshesPortion:e[17],eachTileAABB:e[18],eachTileEntitiesPortion:e[19]}}(i),a=function(e){function t(e,t){return 0===e.length?[]:NC.inflate(e,t).buffer}return{positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),colors:new Uint8Array(t(e.colors)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),matrices:new Float32Array(t(e.matrices)),reusedGeometriesDecodeMatrix:new Float32Array(t(e.reusedGeometriesDecodeMatrix)),eachGeometryPrimitiveType:new Uint8Array(t(e.eachGeometryPrimitiveType)),eachGeometryPositionsPortion:new Uint32Array(t(e.eachGeometryPositionsPortion)),eachGeometryNormalsPortion:new Uint32Array(t(e.eachGeometryNormalsPortion)),eachGeometryColorsPortion:new Uint32Array(t(e.eachGeometryColorsPortion)),eachGeometryIndicesPortion:new Uint32Array(t(e.eachGeometryIndicesPortion)),eachGeometryEdgeIndicesPortion:new Uint32Array(t(e.eachGeometryEdgeIndicesPortion)),eachMeshGeometriesPortion:new Uint32Array(t(e.eachMeshGeometriesPortion)),eachMeshMatricesPortion:new Uint32Array(t(e.eachMeshMatricesPortion)),eachMeshMaterial:new Uint8Array(t(e.eachMeshMaterial)),eachEntityId:NC.inflate(e.eachEntityId,{to:"string"}),eachEntityMeshesPortion:new Uint32Array(t(e.eachEntityMeshesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(n);!function(e,t,i,s,r,o){const n=o.getNextId(),a=i.positions,l=i.normals,A=i.colors,h=i.indices,c=i.edgeIndices,u=i.matrices,p=i.reusedGeometriesDecodeMatrix,f=i.eachGeometryPrimitiveType,g=i.eachGeometryPositionsPortion,m=i.eachGeometryNormalsPortion,_=i.eachGeometryColorsPortion,v=i.eachGeometryIndicesPortion,b=i.eachGeometryEdgeIndicesPortion,B=i.eachMeshGeometriesPortion,w=i.eachMeshMatricesPortion,x=i.eachMeshMaterial,P=JSON.parse(i.eachEntityId),C=i.eachEntityMeshesPortion,M=i.eachTileAABB,F=i.eachTileEntitiesPortion,E=g.length,I=B.length,D=P.length,S=F.length,T=new Uint32Array(E);for(let e=0;e<I;e++){const t=B[e];void 0!==T[t]?T[t]++:T[t]=1}const R=d.vec3(),L=d.AABB3();for(let i=0;i<S;i++){const r=i===S-1,I=F[i],U=r?D:F[i+1],k=6*i,O=M.subarray(k,k+6);d.getAABB3Center(O,R),L[0]=O[0]-R[0],L[1]=O[1]-R[1],L[2]=O[2]-R[2],L[3]=O[3]-R[0],L[4]=O[4]-R[1],L[5]=O[5]-R[2];const N=Ht.createPositionsDecodeMatrix(L),Q={};for(let r=I;r<U;r++){const M=P[r],F=t.globalizeObjectIds?d.globalizeObjectId(s.id,M):M,I=r===D-1,S=C[r],L=I?B.length:C[r+1],U=[],k=e.metaScene.metaObjects[F],O={},V={};if(k){if(t.excludeTypesMap&&k.type&&t.excludeTypesMap[k.type])continue;if(t.includeTypesMap&&k.type&&!t.includeTypesMap[k.type])continue;const e=t.objectDefaults?t.objectDefaults[k.type]||t.objectDefaults.DEFAULT:null;e&&(!1===e.visible&&(O.visible=!1),!1===e.pickable&&(O.pickable=!1),e.colorize&&(V.color=e.colorize),void 0!==e.opacity&&null!==e.opacity&&(V.opacity=e.opacity),void 0!==e.metallic&&null!==e.metallic&&(V.metallic=e.metallic),void 0!==e.roughness&&null!==e.roughness&&(V.roughness=e.roughness))}else if(t.excludeUnclassifiedObjects)continue;for(let e=S;e<L;e++){const t=B[e],r=T[t]>1,d=t===E-1,P=QC(x.subarray(6*e,6*e+3)),C=x[6*e+3]/255,M=x[6*e+4]/255,F=x[6*e+5]/255,I=o.getNextId();if(r){const r=w[e],o=u.slice(r,r+16),B=`${n}-geometry.${i}.${t}`;if(!Q[B]){let e,i,r,o,n,u;switch(f[t]){case 0:e="solid",i=a.subarray(g[t],d?a.length:g[t+1]),r=l.subarray(m[t],d?l.length:m[t+1]),n=h.subarray(v[t],d?h.length:v[t+1]),u=c.subarray(b[t],d?c.length:b[t+1]);break;case 1:e="surface",i=a.subarray(g[t],d?a.length:g[t+1]),r=l.subarray(m[t],d?l.length:m[t+1]),n=h.subarray(v[t],d?h.length:v[t+1]),u=c.subarray(b[t],d?c.length:b[t+1]);break;case 2:e="points",i=a.subarray(g[t],d?a.length:g[t+1]),o=VC(A.subarray(_[t],d?A.length:_[t+1]));break;case 3:e="lines",i=a.subarray(g[t],d?a.length:g[t+1]),n=h.subarray(v[t],d?h.length:v[t+1]);break;default:continue}s.createGeometry({id:B,primitive:e,positionsCompressed:i,normalsCompressed:r,colors:o,indices:n,edgeIndices:u,positionsDecodeMatrix:p}),Q[B]=!0}s.createMesh(y.apply(V,{id:I,geometryId:B,origin:R,matrix:o,color:P,metallic:M,roughness:F,opacity:C})),U.push(I)}else{let e,i,r,o,n,u;switch(f[t]){case 0:e="solid",i=a.subarray(g[t],d?a.length:g[t+1]),r=l.subarray(m[t],d?l.length:m[t+1]),n=h.subarray(v[t],d?h.length:v[t+1]),u=c.subarray(b[t],d?c.length:b[t+1]);break;case 1:e="surface",i=a.subarray(g[t],d?a.length:g[t+1]),r=l.subarray(m[t],d?l.length:m[t+1]),n=h.subarray(v[t],d?h.length:v[t+1]),u=c.subarray(b[t],d?c.length:b[t+1]);break;case 2:e="points",i=a.subarray(g[t],d?a.length:g[t+1]),o=VC(A.subarray(_[t],d?A.length:_[t+1]));break;case 3:e="lines",i=a.subarray(g[t],d?a.length:g[t+1]),n=h.subarray(v[t],d?h.length:v[t+1]);break;default:continue}s.createMesh(y.apply(V,{id:I,origin:R,primitive:e,positionsCompressed:i,normalsCompressed:r,colors:o,indices:n,edgeIndices:u,positionsDecodeMatrix:N,color:P,metallic:M,roughness:F,opacity:C})),U.push(I)}}U.length>0&&s.createEntity(y.apply(O,{id:F,isObject:!0,meshIds:U}))}}}(e,t,a,s,0,o)}};let jC=window.pako||bC;jC.inflate||(jC=jC.default);const GC=d.vec4(),zC=d.vec4();const WC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function KC(e){const t=[];for(let i=0,s=e.length;i<s;i+=3)t.push(e[i]),t.push(e[i+1]),t.push(e[i+2]),t.push(1);return t}const XC={version:8,parse:function(e,t,i,s,r,o){const n=function(e){return{types:e[0],eachMetaObjectId:e[1],eachMetaObjectType:e[2],eachMetaObjectName:e[3],eachMetaObjectParent:e[4],positions:e[5],normals:e[6],colors:e[7],indices:e[8],edgeIndices:e[9],matrices:e[10],reusedGeometriesDecodeMatrix:e[11],eachGeometryPrimitiveType:e[12],eachGeometryPositionsPortion:e[13],eachGeometryNormalsPortion:e[14],eachGeometryColorsPortion:e[15],eachGeometryIndicesPortion:e[16],eachGeometryEdgeIndicesPortion:e[17],eachMeshGeometriesPortion:e[18],eachMeshMatricesPortion:e[19],eachMeshMaterial:e[20],eachEntityMetaObject:e[21],eachEntityMeshesPortion:e[22],eachTileAABB:e[23],eachTileEntitiesPortion:e[24]}}(i),a=function(e){function t(e,t){return 0===e.length?[]:jC.inflate(e,t).buffer}return{types:jC.inflate(e.types,{to:"string"}),eachMetaObjectId:jC.inflate(e.eachMetaObjectId,{to:"string"}),eachMetaObjectType:new Uint32Array(t(e.eachMetaObjectType)),eachMetaObjectName:jC.inflate(e.eachMetaObjectName,{to:"string"}),eachMetaObjectParent:new Uint32Array(t(e.eachMetaObjectParent)),positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),colors:new Uint8Array(t(e.colors)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),matrices:new Float32Array(t(e.matrices)),reusedGeometriesDecodeMatrix:new Float32Array(t(e.reusedGeometriesDecodeMatrix)),eachGeometryPrimitiveType:new Uint8Array(t(e.eachGeometryPrimitiveType)),eachGeometryPositionsPortion:new Uint32Array(t(e.eachGeometryPositionsPortion)),eachGeometryNormalsPortion:new Uint32Array(t(e.eachGeometryNormalsPortion)),eachGeometryColorsPortion:new Uint32Array(t(e.eachGeometryColorsPortion)),eachGeometryIndicesPortion:new Uint32Array(t(e.eachGeometryIndicesPortion)),eachGeometryEdgeIndicesPortion:new Uint32Array(t(e.eachGeometryEdgeIndicesPortion)),eachMeshGeometriesPortion:new Uint32Array(t(e.eachMeshGeometriesPortion)),eachMeshMatricesPortion:new Uint32Array(t(e.eachMeshMatricesPortion)),eachMeshMaterial:new Uint8Array(t(e.eachMeshMaterial)),eachEntityMetaObject:new Uint32Array(t(e.eachEntityMetaObject)),eachEntityMeshesPortion:new Uint32Array(t(e.eachEntityMeshesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(n);!function(e,t,i,s,r,o){const n=o.getNextId(),a=JSON.parse(i.types),l=JSON.parse(i.eachMetaObjectId),A=i.eachMetaObjectType,h=JSON.parse(i.eachMetaObjectName),c=i.eachMetaObjectParent,u=i.positions,p=i.normals,f=i.colors,g=i.indices,m=i.edgeIndices,_=i.matrices,v=i.reusedGeometriesDecodeMatrix,b=i.eachGeometryPrimitiveType,B=i.eachGeometryPositionsPortion,w=i.eachGeometryNormalsPortion,x=i.eachGeometryColorsPortion,P=i.eachGeometryIndicesPortion,C=i.eachGeometryEdgeIndicesPortion,M=i.eachMeshGeometriesPortion,F=i.eachMeshMatricesPortion,E=i.eachMeshMaterial,I=i.eachEntityMetaObject,D=i.eachEntityMeshesPortion,S=i.eachTileAABB,T=i.eachTileEntitiesPortion,R=l.length,L=B.length,U=M.length,k=I.length,O=T.length;if(r){const e={metaObjects:[]};for(let t=0;t<R;t++){const i=l[t],s=a[A[t]]||"default",r=h[t],o=c[t],n=o!==t?l[o]:null;e.metaObjects.push({id:i,type:s,name:r,parent:n})}r.loadData(e,{includeTypes:t.includeTypes,excludeTypes:t.excludeTypes,globalizeObjectIds:t.globalizeObjectIds})}const N=new Uint32Array(L);for(let e=0;e<U;e++){const t=M[e];void 0!==N[t]?N[t]++:N[t]=1}const Q=d.vec3(),V=d.AABB3(),H={};for(let i=0;i<O;i++){const r=i===O-1,a=T[i],A=r?k:T[i+1],h=6*i,c=S.subarray(h,h+6);d.getAABB3Center(c,Q),V[0]=c[0]-Q[0],V[1]=c[1]-Q[1],V[2]=c[2]-Q[2],V[3]=c[3]-Q[0],V[4]=c[4]-Q[1],V[5]=c[5]-Q[2];const R=Ht.createPositionsDecodeMatrix(V),U={};for(let r=a;r<A;r++){const a=l[I[r]],A=t.globalizeObjectIds?d.globalizeObjectId(s.id,a):a,h=r===k-1,c=D[r],S=h?M.length:D[r+1],T=[],O=e.metaScene.metaObjects[A],j={},G={};if(O){if(t.excludeTypesMap&&O.type&&t.excludeTypesMap[O.type])continue;if(t.includeTypesMap&&O.type&&!t.includeTypesMap[O.type])continue;const e=t.objectDefaults?t.objectDefaults[O.type]||t.objectDefaults.DEFAULT:null;e&&(!1===e.visible&&(j.visible=!1),!1===e.pickable&&(j.pickable=!1),e.colorize&&(G.color=e.colorize),void 0!==e.opacity&&null!==e.opacity&&(G.opacity=e.opacity),void 0!==e.metallic&&null!==e.metallic&&(G.metallic=e.metallic),void 0!==e.roughness&&null!==e.roughness&&(G.roughness=e.roughness))}else if(t.excludeUnclassifiedObjects)continue;for(let e=c;e<S;e++){const r=M[e],a=N[r]>1,l=r===L-1,A=WC(E.subarray(6*e,6*e+3)),h=E[6*e+3]/255,c=E[6*e+4]/255,I=E[6*e+5]/255,D=o.getNextId();if(a){const o=F[e],a=_.slice(o,o+16),M=`${n}-geometry.${i}.${r}`;let E=H[M];if(!E){E={batchThisMesh:!t.reuseGeometries};let e=!1;switch(b[r]){case 0:E.primitiveName="solid",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryNormals=p.subarray(w[r],l?p.length:w[r+1]),E.geometryIndices=g.subarray(P[r],l?g.length:P[r+1]),E.geometryEdgeIndices=m.subarray(C[r],l?m.length:C[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 1:E.primitiveName="surface",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryNormals=p.subarray(w[r],l?p.length:w[r+1]),E.geometryIndices=g.subarray(P[r],l?g.length:P[r+1]),E.geometryEdgeIndices=m.subarray(C[r],l?m.length:C[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 2:E.primitiveName="points",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryColors=KC(f.subarray(x[r],l?f.length:x[r+1])),e=E.geometryPositions.length>0;break;case 3:E.primitiveName="lines",E.geometryPositions=u.subarray(B[r],l?u.length:B[r+1]),E.geometryIndices=g.subarray(P[r],l?g.length:P[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;default:continue}if(e||(E=null),E&&(E.geometryPositions.length,E.batchThisMesh)){E.decompressedPositions=new Float32Array(E.geometryPositions.length);const e=E.geometryPositions,t=E.decompressedPositions;for(let i=0,s=e.length;i<s;i+=3)t[i+0]=e[i+0]*v[0]+v[12],t[i+1]=e[i+1]*v[5]+v[13],t[i+2]=e[i+2]*v[10]+v[14];E.geometryPositions=null,H[M]=E}}if(E)if(E.batchThisMesh){const e=E.decompressedPositions,t=new Uint16Array(e.length);for(let i=0,s=e.length;i<s;i+=3)GC[0]=e[i+0],GC[1]=e[i+1],GC[2]=e[i+2],GC[3]=1,d.transformVec4(a,GC,zC),Ht.compressPosition(zC,V,GC),t[i+0]=GC[0],t[i+1]=GC[1],t[i+2]=GC[2];s.createMesh(y.apply(G,{id:D,origin:Q,primitive:E.primitiveName,positionsCompressed:t,normalsCompressed:E.geometryNormals,colorsCompressed:E.geometryColors,indices:E.geometryIndices,edgeIndices:E.geometryEdgeIndices,positionsDecodeMatrix:R,color:A,metallic:c,roughness:I,opacity:h})),T.push(D)}else U[M]||(s.createGeometry({id:M,primitive:E.primitiveName,positionsCompressed:E.geometryPositions,normalsCompressed:E.geometryNormals,colorsCompressed:E.geometryColors,indices:E.geometryIndices,edgeIndices:E.geometryEdgeIndices,positionsDecodeMatrix:v}),U[M]=!0),s.createMesh(y.apply(G,{id:D,geometryId:M,origin:Q,matrix:a,color:A,metallic:c,roughness:I,opacity:h})),T.push(D)}else{let e,t,i,o,n,a,d=!1;switch(b[r]){case 0:e="solid",t=u.subarray(B[r],l?u.length:B[r+1]),i=p.subarray(w[r],l?p.length:w[r+1]),n=g.subarray(P[r],l?g.length:P[r+1]),a=m.subarray(C[r],l?m.length:C[r+1]),d=t.length>0&&n.length>0;break;case 1:e="surface",t=u.subarray(B[r],l?u.length:B[r+1]),i=p.subarray(w[r],l?p.length:w[r+1]),n=g.subarray(P[r],l?g.length:P[r+1]),a=m.subarray(C[r],l?m.length:C[r+1]),d=t.length>0&&n.length>0;break;case 2:e="points",t=u.subarray(B[r],l?u.length:B[r+1]),o=KC(f.subarray(x[r],l?f.length:x[r+1])),d=t.length>0;break;case 3:e="lines",t=u.subarray(B[r],l?u.length:B[r+1]),n=g.subarray(P[r],l?g.length:P[r+1]),d=t.length>0&&n.length>0;break;default:continue}d&&(s.createMesh(y.apply(G,{id:D,origin:Q,primitive:e,positionsCompressed:t,normalsCompressed:i,colorsCompressed:o,indices:n,edgeIndices:a,positionsDecodeMatrix:R,color:A,metallic:c,roughness:I,opacity:h})),T.push(D))}}T.length>0&&s.createEntity(y.apply(j,{id:A,isObject:!0,meshIds:T}))}}}(e,t,a,s,r,o)}};let JC=window.pako||bC;JC.inflate||(JC=JC.default);const YC=d.vec4(),ZC=d.vec4();const qC=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const $C={version:9,parse:function(e,t,i,s,r,o){const n=function(e){return{metadata:e[0],positions:e[1],normals:e[2],colors:e[3],indices:e[4],edgeIndices:e[5],matrices:e[6],reusedGeometriesDecodeMatrix:e[7],eachGeometryPrimitiveType:e[8],eachGeometryPositionsPortion:e[9],eachGeometryNormalsPortion:e[10],eachGeometryColorsPortion:e[11],eachGeometryIndicesPortion:e[12],eachGeometryEdgeIndicesPortion:e[13],eachMeshGeometriesPortion:e[14],eachMeshMatricesPortion:e[15],eachMeshMaterial:e[16],eachEntityId:e[17],eachEntityMeshesPortion:e[18],eachTileAABB:e[19],eachTileEntitiesPortion:e[20]}}(i),a=function(e){function t(e,t){return 0===e.length?[]:JC.inflate(e,t).buffer}return{metadata:JSON.parse(JC.inflate(e.metadata,{to:"string"})),positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),colors:new Uint8Array(t(e.colors)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),matrices:new Float32Array(t(e.matrices)),reusedGeometriesDecodeMatrix:new Float32Array(t(e.reusedGeometriesDecodeMatrix)),eachGeometryPrimitiveType:new Uint8Array(t(e.eachGeometryPrimitiveType)),eachGeometryPositionsPortion:new Uint32Array(t(e.eachGeometryPositionsPortion)),eachGeometryNormalsPortion:new Uint32Array(t(e.eachGeometryNormalsPortion)),eachGeometryColorsPortion:new Uint32Array(t(e.eachGeometryColorsPortion)),eachGeometryIndicesPortion:new Uint32Array(t(e.eachGeometryIndicesPortion)),eachGeometryEdgeIndicesPortion:new Uint32Array(t(e.eachGeometryEdgeIndicesPortion)),eachMeshGeometriesPortion:new Uint32Array(t(e.eachMeshGeometriesPortion)),eachMeshMatricesPortion:new Uint32Array(t(e.eachMeshMatricesPortion)),eachMeshMaterial:new Uint8Array(t(e.eachMeshMaterial)),eachEntityId:JSON.parse(JC.inflate(e.eachEntityId,{to:"string"})),eachEntityMeshesPortion:new Uint32Array(t(e.eachEntityMeshesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(n);!function(e,t,i,s,r,o){const n=o.getNextId(),a=i.metadata,l=i.positions,A=i.normals,h=i.colors,c=i.indices,u=i.edgeIndices,p=i.matrices,f=i.reusedGeometriesDecodeMatrix,g=i.eachGeometryPrimitiveType,m=i.eachGeometryPositionsPortion,_=i.eachGeometryNormalsPortion,v=i.eachGeometryColorsPortion,b=i.eachGeometryIndicesPortion,B=i.eachGeometryEdgeIndicesPortion,w=i.eachMeshGeometriesPortion,x=i.eachMeshMatricesPortion,P=i.eachMeshMaterial,C=i.eachEntityId,M=i.eachEntityMeshesPortion,F=i.eachTileAABB,E=i.eachTileEntitiesPortion,I=m.length,D=w.length,S=M.length,T=E.length;r&&r.loadData(a,{includeTypes:t.includeTypes,excludeTypes:t.excludeTypes,globalizeObjectIds:t.globalizeObjectIds});const R=new Uint32Array(I);for(let e=0;e<D;e++){const t=w[e];void 0!==R[t]?R[t]++:R[t]=1}const L=d.vec3(),U=d.AABB3(),k={};for(let i=0;i<T;i++){const r=i===T-1,a=E[i],D=r?S-1:E[i+1]-1,O=6*i,N=F.subarray(O,O+6);d.getAABB3Center(N,L),U[0]=N[0]-L[0],U[1]=N[1]-L[1],U[2]=N[2]-L[2],U[3]=N[3]-L[0],U[4]=N[4]-L[1],U[5]=N[5]-L[2];const Q=Ht.createPositionsDecodeMatrix(U),V={};for(let r=a;r<=D;r++){const a=C[r],F=t.globalizeObjectIds?d.globalizeObjectId(s.id,a):a,E=r===S-1,D=M[r],T=E?w.length-1:M[r+1]-1,O=[],N=e.metaScene.metaObjects[F],H={},j={};if(N){if(t.excludeTypesMap&&N.type&&t.excludeTypesMap[N.type])continue;if(t.includeTypesMap&&N.type&&!t.includeTypesMap[N.type])continue;const e=t.objectDefaults?t.objectDefaults[N.type]||t.objectDefaults.DEFAULT:null;e&&(!1===e.visible&&(H.visible=!1),!1===e.pickable&&(H.pickable=!1),e.colorize&&(j.color=e.colorize),void 0!==e.opacity&&null!==e.opacity&&(j.opacity=e.opacity),void 0!==e.metallic&&null!==e.metallic&&(j.metallic=e.metallic),void 0!==e.roughness&&null!==e.roughness&&(j.roughness=e.roughness))}else if(t.excludeUnclassifiedObjects)continue;for(let e=D;e<=T;e++){const r=w[e],a=R[r]>1,C=r===I-1,M=qC(P.subarray(6*e,6*e+3)),F=P[6*e+3]/255,E=P[6*e+4]/255,D=P[6*e+5]/255,S=o.getNextId();if(a){const o=x[e],a=p.slice(o,o+16),w=`${n}-geometry.${i}.${r}`;let P=k[w];if(!P){P={batchThisMesh:!t.reuseGeometries};let e=!1;switch(g[r]){case 0:P.primitiveName="solid",P.geometryPositions=l.subarray(m[r],C?l.length:m[r+1]),P.geometryNormals=A.subarray(_[r],C?A.length:_[r+1]),P.geometryIndices=c.subarray(b[r],C?c.length:b[r+1]),P.geometryEdgeIndices=u.subarray(B[r],C?u.length:B[r+1]),e=P.geometryPositions.length>0&&P.geometryIndices.length>0;break;case 1:P.primitiveName="surface",P.geometryPositions=l.subarray(m[r],C?l.length:m[r+1]),P.geometryNormals=A.subarray(_[r],C?A.length:_[r+1]),P.geometryIndices=c.subarray(b[r],C?c.length:b[r+1]),P.geometryEdgeIndices=u.subarray(B[r],C?u.length:B[r+1]),e=P.geometryPositions.length>0&&P.geometryIndices.length>0;break;case 2:P.primitiveName="points",P.geometryPositions=l.subarray(m[r],C?l.length:m[r+1]),P.geometryColors=h.subarray(v[r],C?h.length:v[r+1]),e=P.geometryPositions.length>0;break;case 3:P.primitiveName="lines",P.geometryPositions=l.subarray(m[r],C?l.length:m[r+1]),P.geometryIndices=c.subarray(b[r],C?c.length:b[r+1]),e=P.geometryPositions.length>0&&P.geometryIndices.length>0;break;default:continue}if(e||(P=null),P&&(P.geometryPositions.length,P.batchThisMesh)){P.decompressedPositions=new Float32Array(P.geometryPositions.length),P.transformedAndRecompressedPositions=new Uint16Array(P.geometryPositions.length);const e=P.geometryPositions,t=P.decompressedPositions;for(let i=0,s=e.length;i<s;i+=3)t[i+0]=e[i+0]*f[0]+f[12],t[i+1]=e[i+1]*f[5]+f[13],t[i+2]=e[i+2]*f[10]+f[14];P.geometryPositions=null,k[w]=P}}if(P)if(P.batchThisMesh){const e=P.decompressedPositions,t=P.transformedAndRecompressedPositions;for(let i=0,s=e.length;i<s;i+=3)YC[0]=e[i+0],YC[1]=e[i+1],YC[2]=e[i+2],YC[3]=1,d.transformVec4(a,YC,ZC),Ht.compressPosition(ZC,U,YC),t[i+0]=YC[0],t[i+1]=YC[1],t[i+2]=YC[2];s.createMesh(y.apply(j,{id:S,origin:L,primitive:P.primitiveName,positionsCompressed:t,normalsCompressed:P.geometryNormals,colorsCompressed:P.geometryColors,indices:P.geometryIndices,edgeIndices:P.geometryEdgeIndices,positionsDecodeMatrix:Q,color:M,metallic:E,roughness:D,opacity:F})),O.push(S)}else V[w]||(s.createGeometry({id:w,primitive:P.primitiveName,positionsCompressed:P.geometryPositions,normalsCompressed:P.geometryNormals,colorsCompressed:P.geometryColors,indices:P.geometryIndices,edgeIndices:P.geometryEdgeIndices,positionsDecodeMatrix:f}),V[w]=!0),s.createMesh(y.apply(j,{id:S,geometryId:w,origin:L,matrix:a,color:M,metallic:E,roughness:D,opacity:F})),O.push(S)}else{let e,t,i,o,n,a,d=!1;switch(g[r]){case 0:e="solid",t=l.subarray(m[r],C?l.length:m[r+1]),i=A.subarray(_[r],C?A.length:_[r+1]),n=c.subarray(b[r],C?c.length:b[r+1]),a=u.subarray(B[r],C?u.length:B[r+1]),d=t.length>0&&n.length>0;break;case 1:e="surface",t=l.subarray(m[r],C?l.length:m[r+1]),i=A.subarray(_[r],C?A.length:_[r+1]),n=c.subarray(b[r],C?c.length:b[r+1]),a=u.subarray(B[r],C?u.length:B[r+1]),d=t.length>0&&n.length>0;break;case 2:e="points",t=l.subarray(m[r],C?l.length:m[r+1]),o=h.subarray(v[r],C?h.length:v[r+1]),d=t.length>0;break;case 3:e="lines",t=l.subarray(m[r],C?l.length:m[r+1]),n=c.subarray(b[r],C?c.length:b[r+1]),d=t.length>0&&n.length>0;break;default:continue}d&&(s.createMesh(y.apply(j,{id:S,origin:L,primitive:e,positionsCompressed:t,normalsCompressed:i,colorsCompressed:o,indices:n,edgeIndices:a,positionsDecodeMatrix:Q,color:M,metallic:E,roughness:D,opacity:F})),O.push(S))}}O.length>0&&s.createEntity(y.apply(H,{id:F,isObject:!0,meshIds:O}))}}}(e,t,a,s,r,o)}};let eM=window.pako||bC;eM.inflate||(eM=eM.default);const tM=d.vec4(),iM=d.vec4();const sM=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function rM(e,t){const i=[];if(t.length>1)for(let e=0,s=t.length-1;e<s;e++)i.push(t[e]),i.push(t[e+1]);else if(e.length>1)for(let t=0,s=e.length/3-1;t<s;t++)i.push(t),i.push(t+1);return i}!function(){const e=document.createElement("canvas"),t=e.getContext("2d")}();const oM={version:10,parse:function(e,t,i,s,r,o){const n=function(e){let t=0;return{metadata:e[t++],textureData:e[t++],eachTextureDataPortion:e[t++],eachTextureAttributes:e[t++],positions:e[t++],normals:e[t++],colors:e[t++],uvs:e[t++],indices:e[t++],edgeIndices:e[t++],eachTextureSetTextures:e[t++],matrices:e[t++],reusedGeometriesDecodeMatrix:e[t++],eachGeometryPrimitiveType:e[t++],eachGeometryPositionsPortion:e[t++],eachGeometryNormalsPortion:e[t++],eachGeometryColorsPortion:e[t++],eachGeometryUVsPortion:e[t++],eachGeometryIndicesPortion:e[t++],eachGeometryEdgeIndicesPortion:e[t++],eachMeshGeometriesPortion:e[t++],eachMeshMatricesPortion:e[t++],eachMeshTextureSet:e[t++],eachMeshMaterialAttributes:e[t++],eachEntityId:e[t++],eachEntityMeshesPortion:e[t++],eachTileAABB:e[t++],eachTileEntitiesPortion:e[t++]}}(i),a=function(e){function t(e,t){return 0===e.length?[]:eM.inflate(e,t).buffer}return{metadata:JSON.parse(eM.inflate(e.metadata,{to:"string"})),textureData:new Uint8Array(t(e.textureData)),eachTextureDataPortion:new Uint32Array(t(e.eachTextureDataPortion)),eachTextureAttributes:new Uint16Array(t(e.eachTextureAttributes)),positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),colors:new Uint8Array(t(e.colors)),uvs:new Float32Array(t(e.uvs)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),eachTextureSetTextures:new Int32Array(t(e.eachTextureSetTextures)),matrices:new Float32Array(t(e.matrices)),reusedGeometriesDecodeMatrix:new Float32Array(t(e.reusedGeometriesDecodeMatrix)),eachGeometryPrimitiveType:new Uint8Array(t(e.eachGeometryPrimitiveType)),eachGeometryPositionsPortion:new Uint32Array(t(e.eachGeometryPositionsPortion)),eachGeometryNormalsPortion:new Uint32Array(t(e.eachGeometryNormalsPortion)),eachGeometryColorsPortion:new Uint32Array(t(e.eachGeometryColorsPortion)),eachGeometryUVsPortion:new Uint32Array(t(e.eachGeometryUVsPortion)),eachGeometryIndicesPortion:new Uint32Array(t(e.eachGeometryIndicesPortion)),eachGeometryEdgeIndicesPortion:new Uint32Array(t(e.eachGeometryEdgeIndicesPortion)),eachMeshGeometriesPortion:new Uint32Array(t(e.eachMeshGeometriesPortion)),eachMeshMatricesPortion:new Uint32Array(t(e.eachMeshMatricesPortion)),eachMeshTextureSet:new Int32Array(t(e.eachMeshTextureSet)),eachMeshMaterialAttributes:new Uint8Array(t(e.eachMeshMaterialAttributes)),eachEntityId:JSON.parse(eM.inflate(e.eachEntityId,{to:"string"})),eachEntityMeshesPortion:new Uint32Array(t(e.eachEntityMeshesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(n);!function(e,t,i,s,r,o){const n=o.getNextId(),a=i.metadata,l=i.textureData,A=i.eachTextureDataPortion,h=i.eachTextureAttributes,c=i.positions,u=i.normals,p=i.colors,f=i.uvs,g=i.indices,m=i.edgeIndices,_=i.eachTextureSetTextures,v=i.matrices,b=i.reusedGeometriesDecodeMatrix,B=i.eachGeometryPrimitiveType,w=i.eachGeometryPositionsPortion,x=i.eachGeometryNormalsPortion,P=i.eachGeometryColorsPortion,C=i.eachGeometryUVsPortion,M=i.eachGeometryIndicesPortion,F=i.eachGeometryEdgeIndicesPortion,E=i.eachMeshGeometriesPortion,I=i.eachMeshMatricesPortion,D=i.eachMeshTextureSet,S=i.eachMeshMaterialAttributes,T=i.eachEntityId,R=i.eachEntityMeshesPortion,L=i.eachTileAABB,U=i.eachTileEntitiesPortion,k=A.length,O=_.length/5,N=w.length,Q=E.length,V=R.length,H=U.length;r&&r.loadData(a,{includeTypes:t.includeTypes,excludeTypes:t.excludeTypes,globalizeObjectIds:t.globalizeObjectIds});for(let e=0;e<k;e++){const t=e===k-1,i=A[e],r=t?l.length:A[e+1],o=r-i>0,a=9*e,c=1===h[a+0],u=h[a+1];h[a+2],h[a+3];const d=h[a+4],p=h[a+5],f=h[a+6],g=h[a+7],m=h[a+8];if(o){const t=new Uint8Array(l.subarray(i,r)).buffer,o=`${n}-texture-${e}`;if(c)s.createTexture({id:o,buffers:[t],minFilter:d,magFilter:p,wrapS:f,wrapT:g,wrapR:m});else{const e=new Blob([t],{type:10001===u?"image/jpeg":10002===u?"image/png":"image/gif"}),i=(window.URL||window.webkitURL).createObjectURL(e),r=document.createElement("img");r.src=i,s.createTexture({id:o,image:r,minFilter:d,magFilter:p,wrapS:f,wrapT:g,wrapR:m})}}}for(let e=0;e<O;e++){const t=5*e,i=`${n}-textureSet-${e}`,r=_[t+0],o=_[t+1],a=_[t+2],l=_[t+3],A=_[t+4];s.createTextureSet({id:i,colorTextureId:r>=0?`${n}-texture-${r}`:null,normalsTextureId:a>=0?`${n}-texture-${a}`:null,metallicRoughnessTextureId:o>=0?`${n}-texture-${o}`:null,emissiveTextureId:l>=0?`${n}-texture-${l}`:null,occlusionTextureId:A>=0?`${n}-texture-${A}`:null})}const j=new Uint32Array(N);for(let e=0;e<Q;e++){const t=E[e];void 0!==j[t]?j[t]++:j[t]=1}const G=d.vec3(),z=d.AABB3(),W={};for(let i=0;i<H;i++){const r=i===H-1,a=U[i],l=r?V-1:U[i+1]-1,A=6*i,h=L.subarray(A,A+6);d.getAABB3Center(h,G),z[0]=h[0]-G[0],z[1]=h[1]-G[1],z[2]=h[2]-G[2],z[3]=h[3]-G[0],z[4]=h[4]-G[1],z[5]=h[5]-G[2];const _=Ht.createPositionsDecodeMatrix(z),k={};for(let r=a;r<=l;r++){const a=T[r],l=t.globalizeObjectIds?d.globalizeObjectId(s.id,a):a,A=r===V-1,h=R[r],L=A?E.length-1:R[r+1]-1,U=[],O=e.metaScene.metaObjects[l],Q={},H={};if(O){if(t.excludeTypesMap&&O.type&&t.excludeTypesMap[O.type])continue;if(t.includeTypesMap&&O.type&&!t.includeTypesMap[O.type])continue;const e=t.objectDefaults?t.objectDefaults[O.type]||t.objectDefaults.DEFAULT:null;e&&(!1===e.visible&&(Q.visible=!1),!1===e.pickable&&(Q.pickable=!1),e.colorize&&(H.color=e.colorize),void 0!==e.opacity&&null!==e.opacity&&(H.opacity=e.opacity),void 0!==e.metallic&&null!==e.metallic&&(H.metallic=e.metallic),void 0!==e.roughness&&null!==e.roughness&&(H.roughness=e.roughness))}else if(t.excludeUnclassifiedObjects)continue;for(let e=h;e<=L;e++){const r=E[e],a=j[r]>1,l=r===N-1,A=D[e],h=A>=0?`${n}-textureSet-${A}`:null,T=sM(S.subarray(6*e,6*e+3)),R=S[6*e+3]/255,L=S[6*e+4]/255,O=S[6*e+5]/255,Q=o.getNextId();if(a){const o=I[e],a=v.slice(o,o+16),A=`${n}-geometry.${i}.${r}`;let E=W[A];if(!E){E={batchThisMesh:!t.reuseGeometries};let e=!1;switch(B[r]){case 0:E.primitiveName="solid",E.geometryPositions=c.subarray(w[r],l?c.length:w[r+1]),E.geometryNormals=u.subarray(x[r],l?u.length:x[r+1]),E.geometryUVs=f.subarray(C[r],l?f.length:C[r+1]),E.geometryIndices=g.subarray(M[r],l?g.length:M[r+1]),E.geometryEdgeIndices=m.subarray(F[r],l?m.length:F[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 1:E.primitiveName="surface",E.geometryPositions=c.subarray(w[r],l?c.length:w[r+1]),E.geometryNormals=u.subarray(x[r],l?u.length:x[r+1]),E.geometryUVs=f.subarray(C[r],l?f.length:C[r+1]),E.geometryIndices=g.subarray(M[r],l?g.length:M[r+1]),E.geometryEdgeIndices=m.subarray(F[r],l?m.length:F[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 2:E.primitiveName="points",E.geometryPositions=c.subarray(w[r],l?c.length:w[r+1]),E.geometryColors=p.subarray(P[r],l?p.length:P[r+1]),e=E.geometryPositions.length>0;break;case 3:E.primitiveName="lines",E.geometryPositions=c.subarray(w[r],l?c.length:w[r+1]),E.geometryIndices=g.subarray(M[r],l?g.length:M[r+1]),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;case 4:E.primitiveName="lines",E.geometryPositions=c.subarray(w[r],l?c.length:w[r+1]),E.geometryIndices=rM(E.geometryPositions,g.subarray(M[r],l?g.length:M[r+1])),e=E.geometryPositions.length>0&&E.geometryIndices.length>0;break;default:continue}if(e||(E=null),E&&(E.geometryPositions.length,E.batchThisMesh)){E.decompressedPositions=new Float32Array(E.geometryPositions.length),E.transformedAndRecompressedPositions=new Uint16Array(E.geometryPositions.length);const e=E.geometryPositions,t=E.decompressedPositions;for(let i=0,s=e.length;i<s;i+=3)t[i+0]=e[i+0]*b[0]+b[12],t[i+1]=e[i+1]*b[5]+b[13],t[i+2]=e[i+2]*b[10]+b[14];E.geometryPositions=null,W[A]=E}}if(E)if(E.batchThisMesh){const e=E.decompressedPositions,t=E.transformedAndRecompressedPositions;for(let i=0,s=e.length;i<s;i+=3)tM[0]=e[i+0],tM[1]=e[i+1],tM[2]=e[i+2],tM[3]=1,d.transformVec4(a,tM,iM),Ht.compressPosition(iM,z,tM),t[i+0]=tM[0],t[i+1]=tM[1],t[i+2]=tM[2];s.createMesh(y.apply(H,{id:Q,textureSetId:h,origin:G,primitive:E.primitiveName,positionsCompressed:t,normalsCompressed:E.geometryNormals,uv:E.geometryUVs,colorsCompressed:E.geometryColors,indices:E.geometryIndices,edgeIndices:E.geometryEdgeIndices,positionsDecodeMatrix:_,color:T,metallic:L,roughness:O,opacity:R})),U.push(Q)}else k[A]||(s.createGeometry({id:A,primitive:E.primitiveName,positionsCompressed:E.geometryPositions,normalsCompressed:E.geometryNormals,uv:E.geometryUVs,colorsCompressed:E.geometryColors,indices:E.geometryIndices,edgeIndices:E.geometryEdgeIndices,positionsDecodeMatrix:b}),k[A]=!0),s.createMesh(y.apply(H,{id:Q,geometryId:A,textureSetId:h,matrix:a,color:T,metallic:L,roughness:O,opacity:R,origin:G})),U.push(Q)}else{let e,t,i,o,n,a,A,d=!1;switch(B[r]){case 0:e="solid",t=c.subarray(w[r],l?c.length:w[r+1]),i=u.subarray(x[r],l?u.length:x[r+1]),o=f.subarray(C[r],l?f.length:C[r+1]),a=g.subarray(M[r],l?g.length:M[r+1]),A=m.subarray(F[r],l?m.length:F[r+1]),d=t.length>0&&a.length>0;break;case 1:e="surface",t=c.subarray(w[r],l?c.length:w[r+1]),i=u.subarray(x[r],l?u.length:x[r+1]),o=f.subarray(C[r],l?f.length:C[r+1]),a=g.subarray(M[r],l?g.length:M[r+1]),A=m.subarray(F[r],l?m.length:F[r+1]),d=t.length>0&&a.length>0;break;case 2:e="points",t=c.subarray(w[r],l?c.length:w[r+1]),n=p.subarray(P[r],l?p.length:P[r+1]),d=t.length>0;break;case 3:e="lines",t=c.subarray(w[r],l?c.length:w[r+1]),a=g.subarray(M[r],l?g.length:M[r+1]),d=t.length>0&&a.length>0;break;case 4:e="lines",t=c.subarray(w[r],l?c.length:w[r+1]),a=rM(t,g.subarray(M[r],l?g.length:M[r+1])),d=t.length>0&&a.length>0;break;default:continue}d&&(s.createMesh(y.apply(H,{id:Q,textureSetId:h,origin:G,primitive:e,positionsCompressed:t,normalsCompressed:i,uv:o&&o.length>0?o:null,colorsCompressed:n,indices:a,edgeIndices:A,positionsDecodeMatrix:_,color:T,metallic:L,roughness:O,opacity:R})),U.push(Q))}}U.length>0&&s.createEntity(y.apply(Q,{id:l,isObject:!0,meshIds:U}))}}}(e,t,a,s,r,o)}},nM={};nM[wC.version]=wC,nM[CC.version]=CC,nM[EC.version]=EC,nM[SC.version]=SC,nM[LC.version]=LC,nM[OC.version]=OC,nM[HC.version]=HC,nM[XC.version]=XC,nM[$C.version]=$C,nM[oM.version]=oM;class aM extends z{constructor(e,t={}){super("XKTLoader",e,t),this._maxGeometryBatchSize=t.maxGeometryBatchSize,this.textureTranscoder=t.textureTranscoder,this.dataSource=t.dataSource,this.objectDefaults=t.objectDefaults,this.includeTypes=t.includeTypes,this.excludeTypes=t.excludeTypes,this.excludeUnclassifiedObjects=t.excludeUnclassifiedObjects,this.reuseGeometries=t.reuseGeometries}get supportedVersions(){return Object.keys(nM)}get textureTranscoder(){return this._textureTranscoder}set textureTranscoder(e){this._textureTranscoder=e}get dataSource(){return this._dataSource}set dataSource(e){this._dataSource=e||new vC}get objectDefaults(){return this._objectDefaults}set objectDefaults(e){this._objectDefaults=e||vP}get includeTypes(){return this._includeTypes}set includeTypes(e){this._includeTypes=e}get excludeTypes(){return this._excludeTypes}set excludeTypes(e){this._excludeTypes=e}get excludeUnclassifiedObjects(){return this._excludeUnclassifiedObjects}set excludeUnclassifiedObjects(e){this._excludeUnclassifiedObjects=!!e}get globalizeObjectIds(){return this._globalizeObjectIds}set globalizeObjectIds(e){this._globalizeObjectIds=!!e}get reuseGeometries(){return this._reuseGeometries}set reuseGeometries(e){this._reuseGeometries=!1!==e}load(e={}){if(e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id),!(e.src||e.xkt||e.manifestSrc||e.manifest))return this.error("load() param expected: src, xkt, manifestSrc or manifestData"),o;const t={},i=e.includeTypes||this._includeTypes,s=e.excludeTypes||this._excludeTypes,r=e.objectDefaults||this._objectDefaults;if(t.reuseGeometries=null!==e.reuseGeometries&&void 0!==e.reuseGeometries?e.reuseGeometries:!1!==this._reuseGeometries,i){t.includeTypesMap={};for(let e=0,s=i.length;e<s;e++)t.includeTypesMap[i[e]]=!0}if(s){t.excludeTypesMap={};for(let e=0,i=s.length;e<i;e++)t.excludeTypesMap[s[e]]=!0}r&&(t.objectDefaults=r),t.excludeUnclassifiedObjects=void 0!==e.excludeUnclassifiedObjects?!!e.excludeUnclassifiedObjects:this._excludeUnclassifiedObjects,t.globalizeObjectIds=void 0!==e.globalizeObjectIds&&null!==e.globalizeObjectIds?!!e.globalizeObjectIds:this._globalizeObjectIds;const o=new bc(this.viewer.scene,y.apply(e,{isModel:!0,textureTranscoder:this._textureTranscoder,maxGeometryBatchSize:this._maxGeometryBatchSize,origin:e.origin,disableVertexWelding:e.disableVertexWelding||!1,disableIndexRebucketing:e.disableIndexRebucketing||!1,dtxEnabled:e.dtxEnabled})),n=o.id,a=new cd({metaScene:this.viewer.metaScene,id:n});this.viewer.scene.canvas.spinner.processes++;const l=()=>{o.finalize(),a.finalize(),this.viewer.scene.canvas.spinner.processes--,o.once("destroyed",(()=>{this.viewer.metaScene.destroyMetaModel(a.id)})),this.scheduleTask((()=>{o.destroyed||(o.scene.fire("modelLoaded",o.id),o.fire("loaded",!0,!1))}))},A=e=>{this.viewer.scene.canvas.spinner.processes--,this.error(e),o.fire("error",e)};let h=0;const c={getNextId:()=>`${n}.${h++}`};if(e.metaModelSrc||e.metaModelData)if(e.metaModelSrc){const r=e.metaModelSrc;this._dataSource.getMetaModel(r,(r=>{o.destroyed||(a.loadData(r,{includeTypes:i,excludeTypes:s,globalizeObjectIds:t.globalizeObjectIds}),e.src?this._loadModel(e.src,e,t,o,null,c,l,A):(this._parseModel(e.xkt,e,t,o,null,c),l()))}),(e=>{A(`load(): Failed to load model metadata for model '${n} from '${r}' - ${e}`)}))}else e.metaModelData&&(a.loadData(e.metaModelData,{includeTypes:i,excludeTypes:s,globalizeObjectIds:t.globalizeObjectIds}),e.src?this._loadModel(e.src,e,t,o,null,c,l,A):(this._parseModel(e.xkt,e,t,o,null,c),l()));else if(e.src)this._loadModel(e.src,e,t,o,a,c,l,A);else if(e.xkt)this._parseModel(e.xkt,e,t,o,a,c),l();else if(e.manifestSrc||e.manifest){const r=e.manifestSrc?function(e){const t=e.split("/");return t.pop(),t.join("/")+"/"}(e.manifestSrc):"",n=(e,o,n)=>{let l=0;const A=()=>{l>=e.length?o():this._dataSource.getMetaModel(`${r}${e[l]}`,(e=>{a.loadData(e,{includeTypes:i,excludeTypes:s,globalizeObjectIds:t.globalizeObjectIds}),l++,this.scheduleTask(A,100)}),n)};A()},h=(i,s,n)=>{let a=0;const l=()=>{a>=i.length?s():this._dataSource.getXKT(`${r}${i[a]}`,(i=>{this._parseModel(i,e,t,o,null,c),a++,this.scheduleTask(l,100)}),n)};l()},u=(i,s,n)=>{let l=0;const A=()=>{l>=i.length?s():this._dataSource.getXKT(`${r}${i[l]}`,(i=>{this._parseModel(i,e,t,o,a,c),l++,this.scheduleTask(A,100)}),n)};A()};if(e.manifest){const t=e.manifest,i=t.xktFiles;if(!i||0===i.length)return void A("load(): Failed to load model manifest - manifest not valid");const s=t.metaModelFiles;s?n(s,(()=>{h(i,l,A)}),A):u(i,l,A)}else this._dataSource.getManifest(e.manifestSrc,(e=>{if(o.destroyed)return;const t=e.xktFiles;if(!t||0===t.length)return void A("load(): Failed to load model manifest - manifest not valid");const i=e.metaModelFiles;i?n(i,(()=>{h(t,l,A)}),A):u(t,l,A)}),A)}return o}_loadModel(e,t,i,s,r,o,n,a){this._dataSource.getXKT(t.src,(e=>{this._parseModel(e,t,i,s,r,o),n()}),a)}_parseModel(e,t,i,s,r,o){if(s.destroyed)return;const n=new DataView(e),a=new Uint8Array(e),l=n.getUint32(0,!0),A=nM[l];if(!A)return void this.error("Unsupported .XKT file version: "+l+" - this XKTLoaderPlugin supports versions "+Object.keys(nM));this.log("Loading .xkt V"+l);const h=n.getUint32(4,!0),c=[];let u=4*(h+2);for(let e=0;e<h;e++){const t=n.getUint32(4*(e+2),!0);c.push(a.subarray(u,u+t)),u+=t}A.parse(this.viewer,i,c,s,r,o)}}var lM={};!function(e){var t,i="File format is not recognized.",s="Error while reading zip file.",r="Error while reading file data.",o=524288,n="text/plain";try{t=0===new Blob([new DataView(new ArrayBuffer(0))]).size}catch(e){}function a(){this.crc=-1}function l(){}function A(e,t){var i,s;return i=new ArrayBuffer(e),s=new Uint8Array(i),t&&s.set(t,0),{buffer:i,array:s,view:new DataView(i)}}function h(){}function c(e){var t,i=this;i.size=0,i.init=function(s,r){var o=new Blob([e],{type:n});(t=new d(o)).init((function(){i.size=t.size,s()}),r)},i.readUint8Array=function(e,i,s,r){t.readUint8Array(e,i,s,r)}}function u(t){var i,s=this;s.size=0,s.init=function(e){for(var r=t.length;"="==t.charAt(r-1);)r--;i=t.indexOf(",")+1,s.size=Math.floor(.75*(r-i)),e()},s.readUint8Array=function(s,r,o){var n,a=A(r),l=4*Math.floor(s/3),h=4*Math.ceil((s+r)/3),c=e.atob(t.substring(l+i,h+i)),u=s-3*Math.floor(l/4);for(n=u;n<u+r;n++)a.array[n-u]=c.charCodeAt(n);o(a.array)}}function d(e){var t=this;t.size=0,t.init=function(i){t.size=e.size,i()},t.readUint8Array=function(t,i,s,r){var o=new FileReader;o.onload=function(e){s(new Uint8Array(e.target.result))},o.onerror=r;try{o.readAsArrayBuffer(function(e,t,i){if(t<0||i<0||t+i>e.size)throw new RangeError("offset:"+t+", length:"+i+", size:"+e.size);return e.slice?e.slice(t,t+i):e.webkitSlice?e.webkitSlice(t,t+i):e.mozSlice?e.mozSlice(t,t+i):e.msSlice?e.msSlice(t,t+i):void 0}(e,t,i))}catch(e){r(e)}}}function p(){}function f(e){var i,s=this;s.init=function(e){i=new Blob([],{type:n}),e()},s.writeUint8Array=function(e,s){i=new Blob([i,t?e:e.buffer],{type:n}),s()},s.getData=function(t,s){var r=new FileReader;r.onload=function(e){t(e.target.result)},r.onerror=s,r.readAsText(i,e)}}function g(t){var i=this,s="",r="";i.init=function(e){s+="data:"+(t||"")+";base64,",e()},i.writeUint8Array=function(t,i){var o,n=r.length,a=r;for(r="",o=0;o<3*Math.floor((n+t.length)/3)-n;o++)a+=String.fromCharCode(t[o]);for(;o<t.length;o++)r+=String.fromCharCode(t[o]);a.length>2?s+=e.btoa(a):r=a,i()},i.getData=function(t){t(s+e.btoa(r))}}function m(e){var i,s=this;s.init=function(t){i=new Blob([],{type:e}),t()},s.writeUint8Array=function(s,r){i=new Blob([i,t?s:s.buffer],{type:e}),r()},s.getData=function(e){e(i)}}function _(e,t,i,s,r,n,a,l,A,h){var c,u,d,p=0,f=t.sn;function g(){e.removeEventListener("message",m,!1),l(u,d)}function m(t){var i=t.data,r=i.data,o=i.error;if(o)return o.toString=function(){return"Error: "+this.message},void A(o);if(i.sn===f)switch("number"==typeof i.codecTime&&(e.codecTime+=i.codecTime),"number"==typeof i.crcTime&&(e.crcTime+=i.crcTime),i.type){case"append":r?(u+=r.length,s.writeUint8Array(r,(function(){_()}),h)):_();break;case"flush":d=i.crc,r?(u+=r.length,s.writeUint8Array(r,(function(){g()}),h)):g();break;case"progress":a&&a(c+i.loaded,n);break;case"importScripts":case"newTask":case"echo":break;default:console.warn("zip.js:launchWorkerProcess: unknown message: ",i)}}function _(){(c=p*o)<=n?i.readUint8Array(r+c,Math.min(o,n-c),(function(i){a&&a(c,n);var s=0===c?t:{sn:f};s.type="append",s.data=i;try{e.postMessage(s,[i.buffer])}catch(t){e.postMessage(s)}p++}),A):e.postMessage({sn:f,type:"flush"})}u=0,e.addEventListener("message",m,!1),_()}function v(e,t,i,s,r,n,l,A,h,c){var u,d=0,p=0,f="input"===n,g="output"===n,m=new a;!function n(){var a;if((u=d*o)<r)t.readUint8Array(s+u,Math.min(o,r-u),(function(t){var s;try{s=e.append(t,(function(e){l&&l(u+e,r)}))}catch(e){return void h(e)}s?(p+=s.length,i.writeUint8Array(s,(function(){d++,setTimeout(n,1)}),c),g&&m.append(s)):(d++,setTimeout(n,1)),f&&m.append(t),l&&l(u,r)}),h);else{try{a=e.flush()}catch(e){return void h(e)}a?(g&&m.append(a),p+=a.length,i.writeUint8Array(a,(function(){A(p,m.get())}),c)):A(p,m.get())}}()}function b(t,i,s,r,o,n,a,A,h,c,u){var d="input";e.zip.useWebWorkers&&a?_(t,{sn:i,codecClass:"NOOP",crcType:d},s,r,o,n,h,A,c,u):v(new l,s,r,o,n,d,h,A,c,u)}function y(e){var t,i,s="",r=["Ç","ü","é","â","ä","à","å","ç","ê","ë","è","ï","î","ì","Ä","Å","É","æ","Æ","ô","ö","ò","û","ù","ÿ","Ö","Ü","ø","£","Ø","×","ƒ","á","í","ó","ú","ñ","Ñ","ª","º","¿","®","¬","½","¼","¡","«","»","_","_","_","¦","¦","Á","Â","À","©","¦","¦","+","+","¢","¥","+","+","-","-","+","-","+","ã","Ã","+","+","-","-","¦","-","+","¤","ð","Ð","Ê","Ë","È","i","Í","Î","Ï","+","+","_","_","¦","Ì","_","Ó","ß","Ô","Ò","õ","Õ","µ","þ","Þ","Ú","Û","Ù","ý","Ý","¯","´","­","±","_","¾","¶","§","÷","¸","°","¨","·","¹","³","²","_"," "];for(t=0;t<e.length;t++)s+=(i=255&e.charCodeAt(t))>127?r[i-128]:String.fromCharCode(i);return s}function B(e){return decodeURIComponent(escape(e))}function w(e){var t,i="";for(t=0;t<e.length;t++)i+=String.fromCharCode(e[t]);return i}function x(e,t,i,s,r){e.version=t.view.getUint16(i,!0),e.bitFlag=t.view.getUint16(i+2,!0),e.compressionMethod=t.view.getUint16(i+4,!0),e.lastModDateRaw=t.view.getUint32(i+6,!0),e.lastModDate=function(e){var t=(4294901760&e)>>16,i=65535&e;try{return new Date(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&i)>>11,(2016&i)>>5,2*(31&i),0)}catch(e){}}(e.lastModDateRaw),1!=(1&e.bitFlag)?((s||8!=(8&e.bitFlag))&&(e.crc32=t.view.getUint32(i+10,!0),e.compressedSize=t.view.getUint32(i+14,!0),e.uncompressedSize=t.view.getUint32(i+18,!0)),4294967295!==e.compressedSize&&4294967295!==e.uncompressedSize?(e.filenameLength=t.view.getUint16(i+22,!0),e.extraFieldLength=t.view.getUint16(i+24,!0)):r("File is using Zip64 (4gb+ file size).")):r("File contains encrypted entry.")}function P(t,o,n){var a=0;function l(){}l.prototype.getData=function(s,o,l,h){var c=this;function u(e,t){h&&!function(e){var t=A(4);return t.view.setUint32(0,e),c.crc32==t.view.getUint32(0)}(t)?n("CRC failed."):s.getData((function(e){o(e)}))}function d(e){n(e||r)}function p(e){n(e||"Error while writing file data.")}t.readUint8Array(c.offset,30,(function(r){var o,f=A(r.length,r);1347093252==f.view.getUint32(0)?(x(c,f,4,!1,n),o=c.offset+30+c.filenameLength+c.extraFieldLength,s.init((function(){0===c.compressionMethod?b(c._worker,a++,t,s,o,c.compressedSize,h,u,l,d,p):function(t,i,s,r,o,n,a,l,A,h,c){var u=a?"output":"none";e.zip.useWebWorkers?_(t,{sn:i,codecClass:"Inflater",crcType:u},s,r,o,n,A,l,h,c):v(new e.zip.Inflater,s,r,o,n,u,A,l,h,c)}(c._worker,a++,t,s,o,c.compressedSize,h,u,l,d,p)}),p)):n(i)}),d)};var h={getEntries:function(e){var r=this._worker;!function(e){t.size<22?n(i):r(22,(function(){r(Math.min(65558,t.size),(function(){n(i)}))}));function r(i,r){t.readUint8Array(t.size-i,i,(function(t){for(var i=t.length-22;i>=0;i--)if(80===t[i]&&75===t[i+1]&&5===t[i+2]&&6===t[i+3])return void e(new DataView(t.buffer,i,22));r()}),(function(){n(s)}))}}((function(o){var a,h;a=o.getUint32(16,!0),h=o.getUint16(8,!0),a<0||a>=t.size?n(i):t.readUint8Array(a,t.size-a,(function(t){var s,o,a,c,u=0,d=[],p=A(t.length,t);for(s=0;s<h;s++){if((o=new l)._worker=r,1347092738!=p.view.getUint32(u))return void n(i);x(o,p,u+6,!0,n),o.commentLength=p.view.getUint16(u+32,!0),o.directory=16==(16&p.view.getUint8(u+38)),o.offset=p.view.getUint32(u+42,!0),a=w(p.array.subarray(u+46,u+46+o.filenameLength)),o.filename=2048==(2048&o.bitFlag)?B(a):y(a),o.directory||"/"!=o.filename.charAt(o.filename.length-1)||(o.directory=!0),c=w(p.array.subarray(u+46+o.filenameLength+o.extraFieldLength,u+46+o.filenameLength+o.extraFieldLength+o.commentLength)),o.comment=2048==(2048&o.bitFlag)?B(c):y(c),d.push(o),u+=46+o.filenameLength+o.extraFieldLength+o.commentLength}e(d)}),(function(){n(s)}))}))},close:function(e){this._worker&&(this._worker.terminate(),this._worker=null),e&&e()},_worker:null};e.zip.useWebWorkers?I("inflater",(function(e){h._worker=e,o(h)}),(function(e){n(e)})):o(h)}function C(e){return unescape(encodeURIComponent(e))}function M(e){var t,i=[];for(t=0;t<e.length;t++)i.push(e.charCodeAt(t));return i}function F(t,i,s,o){var n={},a=[],l=0,h=0;function c(e){s(e||"Error while writing zip file.")}function u(e){s(e||r)}var d={add:function(i,r,d,p,f){var g,m,y,B=this._worker;function w(e,i){var s=A(16);l+=e||0,s.view.setUint32(0,1347094280),void 0!==i&&(g.view.setUint32(10,i,!0),s.view.setUint32(4,i,!0)),r&&(s.view.setUint32(8,e,!0),g.view.setUint32(14,e,!0),s.view.setUint32(12,r.size,!0),g.view.setUint32(18,r.size,!0)),t.writeUint8Array(s.array,(function(){l+=16,d()}),c)}function x(){f=f||{},i=i.trim(),f.directory&&"/"!=i.charAt(i.length-1)&&(i+="/"),n.hasOwnProperty(i)?s("File already exists."):(m=M(C(i)),a.push(i),function(e){var s;y=f.lastModDate||new Date,g=A(26),n[i]={headerArray:g.array,directory:f.directory,filename:m,offset:l,comment:M(C(f.comment||""))},g.view.setUint32(0,335546376),f.version&&g.view.setUint8(0,f.version),o||0===f.level||f.directory||g.view.setUint16(4,2048),g.view.setUint16(6,(y.getHours()<<6|y.getMinutes())<<5|y.getSeconds()/2,!0),g.view.setUint16(8,(y.getFullYear()-1980<<4|y.getMonth()+1)<<5|y.getDate(),!0),g.view.setUint16(22,m.length,!0),(s=A(30+m.length)).view.setUint32(0,1347093252),s.array.set(g.array,4),s.array.set(m,30),l+=s.array.length,t.writeUint8Array(s.array,e,c)}((function(){r?o||0===f.level?b(B,h++,r,t,0,r.size,!0,w,p,u,c):function(t,i,s,r,o,n,a,l,A){var h="input";e.zip.useWebWorkers?_(t,{sn:i,options:{level:o},codecClass:"Deflater",crcType:h},s,r,0,s.size,a,n,l,A):v(new e.zip.Deflater,s,r,0,s.size,h,a,n,l,A)}(B,h++,r,t,f.level,w,p,u,c):w()})))}r?r.init(x,u):x()},close:function(e){this._worker&&(this._worker.terminate(),this._worker=null);var i,s,r,o=0,h=0;for(s=0;s<a.length;s++)o+=46+(r=n[a[s]]).filename.length+r.comment.length;for(i=A(o+22),s=0;s<a.length;s++)r=n[a[s]],i.view.setUint32(h,1347092738),i.view.setUint16(h+4,5120),i.array.set(r.headerArray,h+6),i.view.setUint16(h+32,r.comment.length,!0),r.directory&&i.view.setUint8(h+38,16),i.view.setUint32(h+42,r.offset,!0),i.array.set(r.filename,h+46),i.array.set(r.comment,h+46+r.filename.length),h+=46+r.filename.length+r.comment.length;i.view.setUint32(h,1347093766),i.view.setUint16(h+8,a.length,!0),i.view.setUint16(h+10,a.length,!0),i.view.setUint32(h+12,o,!0),i.view.setUint32(h+16,l,!0),t.writeUint8Array(i.array,(function(){t.getData(e)}),c)},_worker:null};e.zip.useWebWorkers?I("deflater",(function(e){d._worker=e,i(d)}),(function(e){s(e)})):i(d)}a.prototype.append=function(e){for(var t=0|this.crc,i=this.table,s=0,r=0|e.length;s<r;s++)t=t>>>8^i[255&(t^e[s])];this.crc=t},a.prototype.get=function(){return~this.crc},a.prototype.table=function(){var e,t,i,s=[];for(e=0;e<256;e++){for(i=e,t=0;t<8;t++)1&i?i=i>>>1^3988292384:i>>>=1;s[e]=i}return s}(),l.prototype.append=function(e,t){return e},l.prototype.flush=function(){},c.prototype=new h,c.prototype.constructor=c,u.prototype=new h,u.prototype.constructor=u,d.prototype=new h,d.prototype.constructor=d,p.prototype.getData=function(e){e(this.data)},f.prototype=new p,f.prototype.constructor=f,g.prototype=new p,g.prototype.constructor=g,m.prototype=new p,m.prototype.constructor=m;var E={deflater:["z-worker.js","deflate.js"],inflater:["z-worker.js","inflate.js"]};function I(t,i,s){if(null===e.zip.workerScripts||null===e.zip.workerScriptsPath){var r;if(e.zip.workerScripts){if(r=e.zip.workerScripts[t],!Array.isArray(r))return void s(new Error("zip.workerScripts."+t+" is not an array!"));r=function(e){var t=document.createElement("a");return e.map((function(e){return t.href=e,t.href}))}(r)}else(r=E[t].slice(0))[0]=(e.zip.workerScriptsPath||"")+r[0];var o=new Worker(r[0]);o.codecTime=o.crcTime=0,o.postMessage({type:"importScripts",scripts:r.slice(1)}),o.addEventListener("message",(function e(t){var r=t.data;if(r.error)return o.terminate(),void s(r.error);"importScripts"===r.type&&(o.removeEventListener("message",e),o.removeEventListener("error",n),i(o))})),o.addEventListener("error",n)}else s(new Error("Either zip.workerScripts or zip.workerScriptsPath may be set, not both."));function n(e){o.terminate(),s(e)}}function D(e){console.error(e)}e.zip={Reader:h,Writer:p,BlobReader:d,Data64URIReader:u,TextReader:c,BlobWriter:m,Data64URIWriter:g,TextWriter:f,createReader:function(e,t,i){i=i||D,e.init((function(){P(e,t,i)}),i)},createWriter:function(e,t,i,s){i=i||D,s=!!s,e.init((function(){F(e,t,i,s)}),i)},useWebWorkers:!0,workerScriptsPath:null,workerScripts:null}}(lM);const AM=lM.zip;!function(e){var t,i,s=e.Reader,r=e.Writer;try{i=0===new Blob([new DataView(new ArrayBuffer(0))]).size}catch(e){}function o(e){var t=this;function i(i,s){var r;t.data?i():((r=new XMLHttpRequest).addEventListener("load",(function(){t.size||(t.size=Number(r.getResponseHeader("Content-Length"))||Number(r.response.byteLength)),t.data=new Uint8Array(r.response),i()}),!1),r.addEventListener("error",s,!1),r.open("GET",e),r.responseType="arraybuffer",r.send())}t.size=0,t.init=function(s,r){if(function(e){var t=document.createElement("a");return t.href=e,"http:"===t.protocol||"https:"===t.protocol}(e)){var o=new XMLHttpRequest;o.addEventListener("load",(function(){t.size=Number(o.getResponseHeader("Content-Length")),t.size?s():i(s,r)}),!1),o.addEventListener("error",r,!1),o.open("HEAD",e),o.send()}else i(s,r)},t.readUint8Array=function(e,s,r,o){i((function(){r(new Uint8Array(t.data.subarray(e,e+s)))}),o)}}function n(e){var t=this;t.size=0,t.init=function(i,s){var r=new XMLHttpRequest;r.addEventListener("load",(function(){t.size=Number(r.getResponseHeader("Content-Length")),"bytes"==r.getResponseHeader("Accept-Ranges")?i():s("HTTP Range not supported.")}),!1),r.addEventListener("error",s,!1),r.open("HEAD",e),r.send()},t.readUint8Array=function(t,i,s,r){!function(t,i,s,r){var o=new XMLHttpRequest;o.open("GET",e),o.responseType="arraybuffer",o.setRequestHeader("Range","bytes="+t+"-"+(t+i-1)),o.addEventListener("load",(function(){s(o.response)}),!1),o.addEventListener("error",r,!1),o.send()}(t,i,(function(e){s(new Uint8Array(e))}),r)}}function a(e){var t=this;t.size=0,t.init=function(i,s){t.size=e.byteLength,i()},t.readUint8Array=function(t,i,s,r){s(new Uint8Array(e.slice(t,t+i)))}}function l(){var e,t=this;t.init=function(t,i){e=new Uint8Array,t()},t.writeUint8Array=function(t,i,s){var r=new Uint8Array(e.length+t.length);r.set(e),r.set(t,e.length),e=r,i()},t.getData=function(t){t(e.buffer)}}function A(e,t){var s,r=this;r.init=function(t,i){e.createWriter((function(e){s=e,t()}),i)},r.writeUint8Array=function(e,r,o){var n=new Blob([i?e:e.buffer],{type:t});s.onwrite=function(){s.onwrite=null,r()},s.onerror=o,s.write(n)},r.getData=function(t){e.file(t)}}o.prototype=new s,o.prototype.constructor=o,n.prototype=new s,n.prototype.constructor=n,a.prototype=new s,a.prototype.constructor=a,l.prototype=new r,l.prototype.constructor=l,A.prototype=new r,A.prototype.constructor=A,e.FileWriter=A,e.HttpReader=o,e.HttpRangeReader=n,e.ArrayBufferReader=a,e.ArrayBufferWriter=l,e.fs&&((t=e.fs.ZipDirectoryEntry).prototype.addHttpContent=function(i,s,r){return function(i,s,r,o){if(i.directory)return o?new t(i.fs,s,r,i):new e.fs.ZipFileEntry(i.fs,s,r,i);throw"Parent entry is not a directory."}(this,i,{data:s,Reader:r?n:o})},t.prototype.importHttpContent=function(e,t,i,s){this.importZip(t?new n(e):new o(e),i,s)},e.fs.FS.prototype.importHttpContent=function(e,i,s,r){this.entries=[],this.root=new t(this),this.root.importHttpContent(e,i,s,r)})}(AM);const hM=["4.2"];class cM{constructor(e,t={}){this.supportedSchemas=hM,this._xrayOpacity=.7,this._src=null,this._options=t,this.viewpoint=null,t.workerScriptsPath?(AM.workerScriptsPath=t.workerScriptsPath,this.src=t.src,this.xrayOpacity=.7,this.displayEffect=t.displayEffect,this.createMetaModel=t.createMetaModel):e.error("Config expected: workerScriptsPath")}load(e,t,i,s,r,o){switch(s.materialType){case"MetallicMaterial":t._defaultMaterial=new Ur(t,{baseColor:[1,1,1],metallic:.6,roughness:.6});break;case"SpecularMaterial":t._defaultMaterial=new Nr(t,{diffuse:[1,1,1],specular:d.vec3([1,1,1]),glossiness:.5});break;default:t._defaultMaterial=new Yt(t,{reflectivity:.75,shiness:100,diffuse:[1,1,1]})}t._wireframeMaterial=new Tr(t,{color:[0,0,0],lineWidth:2});var n=t.scene.canvas.spinner;n.processes++,uM(e,t,i,s,(function(){n.processes--,r&&r(),t.fire("loaded",!0,!1)}),(function(e){n.processes--,t.error(e),o&&o(e),t.fire("error",e)}),(function(e){console.log("Error, Will Robinson: "+e)}))}}var uM=function(e,t,i,s,r,o){!function(e,t,i){var s=new bM;s.load(e,(function(){t(s)}),(function(e){i("Error loading ZIP archive: "+e)}))}(i,(function(i){dM(e,i,s,t,r,o)}),o)},dM=function(){return function(t,i,s,r,o){var n={plugin:t,zip:i,edgeThreshold:30,materialType:s.materialType,scene:r.scene,modelNode:r,info:{references:{}},materials:{}};s.createMetaModel&&(n.metaModelData={modelId:r.id,metaObjects:[{name:r.id,type:"Default",id:r.id}]}),r.scene.loading++,function(t,i){t.zip.getFile("Manifest.xml",(function(s,r){for(var o=r.children,n=0,a=o.length;n<a;n++){var l=o[n];if("Manifest"===l.type)e(t,l,i)}}))}(n,(function(){n.metaModelData&&t.viewer.metaScene.createMetaModel(r.id,n.metaModelData),r.scene.loading--,o()}))};function e(e,i,s){for(var r=i.children,o=0,n=r.length;o<n;o++){var a=r[o];if("Root"===a.type){var l=a.children[0];e.zip.getFile(l,(function(i,r){t(e,r,s)}))}}}function t(e,t,s){for(var r=t.children,o=0,n=r.length;o<n;o++){var a=r[o];if("Model_3dxml"===a.type)i(e,a,s)}}function i(e,t,i){for(var r=t.children,a=0,l=r.length;a<l;a++){var A=r[a];switch(A.type){case"Header":s(e,A);break;case"ProductStructure":o(e,A,i);break;case"DefaultView":n(e,A)}}}function s(e,t){for(var i=t.children,s={},o=0,n=i.length;o<n;o++){var a=i[o];switch(a.type){case"SchemaVersion":s.schemaVersion=a.children[0],r(e,s.schemaVersion)||e.plugin.error("Schema version not supported: "+s.schemaVersion+" - supported versions are: "+hM.join(","));break;case"Title":s.title=a.children[0];break;case"Author":s.author=a.children[0];break;case"Created":s.created=a.children[0]}}e.modelNode.meta=s}function r(e,t){for(var i=0,s=hM.length;i<s;i++)if(t===hM[i])return!0;return!1}function o(e,t,i){!function(e,t,i){for(var s={},r=t.children,o=0,n=0,l=r.length;n<l;n++){"ReferenceRep"===(A=r[n]).type&&o++}for(n=0,l=r.length;n<l;n++){var A;if("ReferenceRep"===(A=r[n]).type)if(A.associatedFile){var h=yM(A.associatedFile);!function(){var t=A.id;e.zip.getFile(h,(function(r,n){var l=r.getElementsByTagName("MaterialId");pM(e,l,(function(){var r={id:t};a(e,n,r),s[t]=r,0==--o&&i(s)}))}),(function(e){}))}()}}}(e,t,(function(s){for(var r=t.children,o={},n={},a={},l=0,A=r.length;l<A;l++){var h=r[l];switch(h.type){case"Reference3D":o[h.id]={type:"Reference3D",id:h.id,name:h.name,instance3Ds:{},instanceReps:{}};break;case"InstanceRep":for(var c=0,u=h.children.length;c<u;c++){switch((_=h.children[c]).type){case"IsAggregatedBy":p=_.children[0];break;case"IsInstanceOf":f=_.children[0]}}n[h.id]={type:"InstanceRep",id:h.id,name:h.name,isAggregatedBy:p,isInstanceOf:f,referenceReps:{}};break;case"Instance3D":var p,f,m;for(c=0,u=h.children.length;c<u;c++){var _;switch((_=h.children[c]).type){case"IsAggregatedBy":p=_.children[0];break;case"IsInstanceOf":f=_.children[0];break;case"RelativeMatrix":m=_.children[0]}}a[h.id]={type:"Instance3D",id:h.id,name:h.name,isAggregatedBy:p,isInstanceOf:f,relativeMatrix:m,reference3Ds:{}}}}for(var v in a){(y=o[(b=a[v]).isAggregatedBy])?y.instance3Ds[b.id]=b:alert("foo")}for(var v in a){var b,y=o[(b=a[v]).isInstanceOf];b.reference3Ds[y.id]=y,y.instance3D=b}for(var v in n){var B=s[(w=n[v]).isInstanceOf];B&&(w.referenceReps[B.id]=B)}for(var v in n){var w;(y=o[(w=n[v]).isAggregatedBy])&&(y.instanceReps[w.id]=w)}function x(e,t,i){for(var s in t.instance3Ds)P(e,t.instance3Ds[s],i);for(var s in t.instanceReps)C(e,t.instanceReps[s],i)}function P(e,t,i){if(t.relativeMatrix){var s=g(t.relativeMatrix,12),r=[s[9],s[10],s[11]],o=s.slice(0,9),n=d.mat3ToMat4(o,d.identityMat4()),a=new Sr(e.modelNode,{position:r});e.metaModelData&&e.metaModelData.metaObjects.push({id:a.id,type:"Default",name:t.name,parent:i?i.id:e.modelNode.id}),i?i.addChild(a,!0):e.modelNode.addChild(a,!0),i=a,a=new Sr(e.modelNode,{matrix:n}),e.metaModelData&&e.metaModelData.metaObjects.push({id:a.id,type:"Default",name:t.name,parent:i?i.id:e.modelNode.id}),i.addChild(a,!0),i=a}else{a=new Sr(e.modelNode,{});e.metaModelData&&e.metaModelData.metaObjects.push({id:a.id,type:"Default",name:t.name,parent:i?i.id:e.modelNode.id}),i?i.addChild(a,!0):e.modelNode.addChild(a,!0),i=a}for(var l in t.reference3Ds)x(e,t.reference3Ds[l],i)}function C(e,t,i){if(t.referenceReps)for(var s in t.referenceReps){var r=t.referenceReps[s];for(var o in r)if("id"!==o){var n=r[o],a="lines"===n.geometry.primitive?e.modelNode._wireframeMaterial:n.materialId?e.materials[n.materialId]:null,l=n.color,A=new fr(e.modelNode,{isObject:!0,geometry:n.geometry,material:a||e.modelNode._defaultMaterial,colorize:l,backfaces:!1});e.metaModelData&&e.metaModelData.metaObjects.push({id:A.id,type:"Default",name:t.name,parent:i?i.id:e.modelNode.id}),i?i.addChild(A,!0):e.modelNode.addChild(A,!0),A.colorize=l}}}for(var v in o){if(!(y=o[v]).instance3D)return x(e,y,null),void i()}alert("No root Reference3D element found in this modelNode - can't load."),i()}))}function n(e,t){for(var i=t.children,s=0,r=i.length;s<r;s++){var o=i[s];if("Viewpoint"===o.type){var n=o.children;e.modelNode.viewpoint={};for(var a=0,l=n.length;a<l;a++){var A=n[s];switch(A.type){case"Position":e.modelNode.viewpoint.eye=g(A.children[0],3);break;case"Sight":e.modelNode.viewpoint.look=g(A.children[0],3);break;case"Up":e.modelNode.viewpoint.up=g(A.children[0],3)}}}}}function a(e,t,i){for(var s=t.children,r=0,o=s.length;r<o;r++){var n=s[r];if("XMLRepresentation"===n.type)l(e,n,i)}}function l(e,t,i){for(var s=t.children,r=0,o=s.length;r<o;r++){var n=s[r];if("Root"===n.type)A(e,n,i)}}function A(e,t,i){t["xsi:type"];for(var s=t.children,r=0,o=s.length;r<o;r++){var n=s[r];if("Rep"===n.type)h(e,n,i)}}function h(e,t,i){t["xsi:type"];for(var s={edgeThreshold:e.edgeThreshold||30,compressGeometry:!0},r=t.children,o=0,n=r.length;o<n;o++){var a=r[o];switch(a.type){case"Rep":h(e,a,i);break;case"Edges":break;case"Faces":s.primitive="triangles",c(e,a,s);break;case"VertexBuffer":f(e,a,s);break;case"SurfaceAttributes":m(e,a,s)}}if(s.positions){var l=new zt(e.modelNode,s);i[l.id]={geometry:l,color:s.color||[1,1,1,1],materialId:s.materialId}}}function c(e,t,i){for(var s=t.children,r=0,o=s.length;r<o;r++){var n=s[r];if("Face"===n.type)u(e,n,i)}}function u(e,t,i){var s=t.strips;if(s){var r=function(e){for(var t=e.split(","),i=[],s=0,r=t.length;s<r;s++){var o=t[s].trim();if(o.length>0){for(var n=o.trim().split(" "),a=new Int16Array(n.length),l=0,A=0,h=n.length;A<h;A++)""!==n[A]&&(a[l++]=parseInt(n[A]));i.push(a)}}return i}(s);if(r.length>0){i.primitive="triangles";for(var o=[],n=0,a=r.length;n<a;n++)for(var l=p(r[n]),A=0,h=l.length;A<h;A++)o.push(l[A]);i.indices=o}}else{var c=t.triangles;c&&(i.primitive="triangles",i.indices=function(e){e=e.trim().split(" ");for(var t=new Int32Array(e.length),i=0,s=e.length;i<s;i++){var r=e[i];t[i]=parseInt(r)}return t}(c))}var u=t.children;for(n=0,a=u.length;n<a;n++){var d=u[n];if("SurfaceAttributes"===d.type)m(e,d,i)}}function p(e){for(var t=[],i=0,s=e.length;i<s-2;i++)1&i?(t.push(e[i]),t.push(e[i+2]),t.push(e[i+1])):(t.push(e[i]),t.push(e[i+1]),t.push(e[i+2]));return t}function f(e,t,i){for(var s=t.children,r=0,o=s.length;r<o;r++){var n=s[r];switch(n.type){case"Positions":i.positions=g(n.children[0],3);break;case"Normals":i.normals=g(n.children[0],3);break;case"TextureCoordinates":i.uv=g(n.children[0],2)}}}function g(e,t){e=e.split(",");for(var i=new Float32Array(e.length*t),s=0,r=0,o=e.length;r<o;r++)for(var n=e[r],a=0,l=(n=n.split(" ")).length;a<l;a++)""!==n[a]&&(i[s++]=parseFloat(n[a]));return i}function m(e,t,i){i.color=[1,1,1,1];for(var s,r,o=t.children,n=0,a=o.length;n<a;n++){var l=o[n];switch(l.type){case"Color":i.color[0]=l.red,i.color[1]=l.green,i.color[2]=l.blue,i.color[3]=l.alpha;break;case"MaterialApplication":for(var A=l.children,h=0,c=A.length;h<c;h++){var u=A[h];if("MaterialId"===u.type){var d=(s=u.id,r=void 0,-1!==(r=s.lastIndexOf("#"))?s.substring(r+1):s);e.materials[d]||e.plugin.error("material not found: "+d),i.materialId=d}}}}}}();function pM(e,t,i){var s={};!function r(o,n){if(o>=t.length)i();else{var a=t[o].id,l=a.lastIndexOf(":");l>0&&(a=a.substring(l+1));var A=a.lastIndexOf("#");A>0&&(a=a.substring(0,A)),s[a]?r(o+1):function(e,t,i){e.zip.getFile(t,(function(t,s){!function(e,t,i){for(var s,r=t.children,o=0,n=r.length;o<n;o++)"Model_3dxml"===(s=r[o]).type&&fM(e,s,i)}(e,s,i)}))}(e,a,(function(){s[a]=!0,r(o+1)}))}}(0)}function fM(e,t,i){for(var s,r=t.children,o=0,n=r.length;o<n;o++)"CATMaterialRef"===(s=r[o]).type&&gM(e,s,i)}function gM(e,t,i){for(var s={},r=t.children,o=0,n=0,a=r.length;n<a;n++){if("MaterialDomainInstance"===(d=r[n]).type){for(var l,A,h=0,c=d.children.length;h<c;h++){var u=d.children[h];switch(u.type){case"IsAggregatedBy":l=u.children[0];break;case"IsInstanceOf":A=u.children[0]}}s[A]=l}}for(n=0,a=r.length;n<a;n++){if("MaterialDomain"===(d=r[n]).type)o++}for(n=0,a=r.length;n<a;n++){var d;if("MaterialDomain"===(d=r[n]).type)d.associatedFile&&function(){var t=d.id,r=yM(d.associatedFile);e.zip.getFile(r,(function(r,n){e.materials[s[t]]=mM(e,n),0==--o&&i()}),(function(e){}))}()}}function mM(e,t){for(var i=t.children,s=0,r=i.length;s<r;s++){var o=i[s];if("Osm"===o.type)return _M(e,o)}}function _M(e,t){for(var i=t.children,s=0,r=i.length;s<r;s++){var o=i[s];switch(o.type){case"RenderingRootFeature":break;case"Feature":if("RenderingFeature"===o.Alias){var n,a,l,A,h={},c={},u=o.children;for(n=0,a=u.length;n<a;n++)switch((l=u[n]).Name){case"AmbientCoef":h.ambient=parseFloat(l.Value);break;case"DiffuseCoef":h.diffuse=parseFloat(l.Value);break;case"EmissiveCoef":h.emissive=parseFloat(l.Value);break;case"SpecularExponent":h.specular=parseFloat(l.Value)}for(n=0,a=u.length;n<a;n++)switch((l=u[n]).Name){case"AmbientColor":c.ambient=vM(l.Value,h.ambient);break;case"DiffuseColor":c.diffuse=vM(l.Value,h.diffuse);break;case"EmissiveColor":c.emissive=vM(l.Value,h.emissive);break;case"SpecularColor":c.specular=vM(l.Value,h.specular);break;case"Transparency":var d=1-parseFloat(l.Value);d<1&&(c.alpha=d,c.alphaMode="blend")}switch(e.materialType){case"MetallicMaterial":A=new Ur(e.modelNode,{baseColor:c.diffuse,metallic:.7,roughness:.5,emissive:c.emissive,alpha:c.alpha,alphaMode:c.alphaMode});break;case"SpecularMaterial":A=new Nr(e.modelNode,{diffuse:c.diffuse,specular:c.specular,glossiness:.5,emissive:c.emissive,alpha:c.alpha,alphaMode:c.alphaMode});break;default:A=new Yt(e.modelNode,{reflectivity:.5,ambient:c.ambient,diffuse:c.diffuse,specular:c.specular,emissive:c.emissive,alphaMode:c.alphaMode,alpha:t.alpha})}return A}}}}function vM(e,t){t=void 0!==t?t:.5;var i=e.indexOf("["),s=e.indexOf("]");e=(e=e.substring(i+1,s-i)).split(",");for(var r=new Float32Array(e.length),o=0,n=0,a=e.length;n<a;n++)for(var l=e[n],A=0,h=(l=l.trim().split(" ")).length;A<h;A++)""!==l[A]&&(r[o++]=parseFloat(l[A])*t);return r}var bM=function(){var e={};function t(e,i){if(e.nodeType===e.TEXT_NODE){var s=e.nodeValue;if(null===s.match(/^\s+$/))return s}else if(e.nodeType===e.ELEMENT_NODE||e.nodeType===e.DOCUMENT_NODE){var r={type:e.nodeName,children:[]};if(e.nodeType===e.ELEMENT_NODE)for(var o=0;o<e.attributes.length;o++){var n=e.attributes[o];r[i[n.nodeName]||n.nodeName]=n.nodeValue}for(var a=0;a<e.childNodes.length;a++){(o=t(e.childNodes[a],i))&&r.children.push(o)}return r}}this.load=function(t,i,s){AM.createReader(new AM.HttpReader(t),(function(t){t.getEntries((function(t){if(t.length>0)for(var s=0,r=t.length;s<r;s++){var o=t[s];e[o.filename]=o}i()}))}),s)},this.getFile=function(i,s,r){var o=e[i];if(!o){var n="ZIP entry not found: "+i;return console.error(n),void(r&&r(n))}o.getData(new AM.TextWriter,(function(e){var i=(new DOMParser).parseFromString(e,"text/xml"),r=t(i,{});s(i,r)}))},this.destroy=function(){undefined.close((function(){}))}};function yM(e){var t="urn:3DXML:";return 0===e.indexOf(t)?e.substring(t.length):e}class BM extends z{constructor(e,t={}){super("XML3DLoader",e,t),t.workerScriptsPath?(this._workerScriptsPath=t.workerScriptsPath,this._loader=new cM(this,t),this.supportedSchemas=this._loader.supportedSchemas):this.error("Config expected: workerScriptsPath")}load(e={}){e.workerScriptsPath=this._workerScriptsPath,e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);const t=new Sr(this.viewer.scene,y.apply(e,{isModel:!0})),i=e.src;return i?(this._loader.load(this,t,i,e),t):(this.error("load() param expected: src"),t)}}class wM{constructor(){}getIFC(e,t,i){var s=()=>{};t=t||s,i=i||s;const r=e.match(/^data:(.*?)(;base64)?,(.*)$/);if(r){const e=!!r[2];var o=r[3];o=window.decodeURIComponent(o),e&&(o=window.atob(o));try{const e=new ArrayBuffer(o.length),i=new Uint8Array(e);for(var n=0;n<o.length;n++)i[n]=o.charCodeAt(n);t(e)}catch(e){i(e)}}else{const s=new XMLHttpRequest;s.open("GET",e,!0),s.responseType="arraybuffer",s.onreadystatechange=function(){4===s.readyState&&(200===s.status?t(s.response):i("getXKT error : "+s.response))},s.send(null)}}}class xM extends z{constructor(e,t={}){if(super("ifcLoader",e,t),this.dataSource=t.dataSource,this.objectDefaults=t.objectDefaults,this.includeTypes=t.includeTypes,this.excludeTypes=t.excludeTypes,this.excludeUnclassifiedObjects=t.excludeUnclassifiedObjects,!t.WebIFC)throw"Parameter expected: WebIFC";if(!t.IfcAPI)throw"Parameter expected: IfcAPI";this._webIFC=t.WebIFC,this._ifcAPI=t.IfcAPI}get supportedVersions(){return["2x3","4"]}get dataSource(){return this._dataSource}set dataSource(e){this._dataSource=e||new wM}get objectDefaults(){return this._objectDefaults}set objectDefaults(e){this._objectDefaults=e||vP}get includeTypes(){return this._includeTypes}set includeTypes(e){this._includeTypes=e}get excludeTypes(){return this._excludeTypes}set excludeTypes(e){this._excludeTypes=e}get excludeUnclassifiedObjects(){return this._excludeUnclassifiedObjects}set excludeUnclassifiedObjects(e){this._excludeUnclassifiedObjects=!!e}get globalizeObjectIds(){return this._globalizeObjectIds}set globalizeObjectIds(e){this._globalizeObjectIds=!!e}load(e={}){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);const t=new bc(this.viewer.scene,y.apply(e,{isModel:!0}));if(!e.src&&!e.ifc)return this.error("load() param expected: src or IFC"),t;const i={autoNormals:!0};if(!1!==e.loadMetadata){const t=e.includeTypes||this._includeTypes,s=e.excludeTypes||this._excludeTypes,r=e.objectDefaults||this._objectDefaults;if(t){i.includeTypesMap={};for(let e=0,s=t.length;e<s;e++)i.includeTypesMap[t[e]]=!0}if(s){i.excludeTypesMap={};for(let e=0,t=s.length;e<t;e++)i.excludeTypesMap[s[e]]=!0}r&&(i.objectDefaults=r),i.excludeUnclassifiedObjects=void 0!==e.excludeUnclassifiedObjects?!!e.excludeUnclassifiedObjects:this._excludeUnclassifiedObjects,i.globalizeObjectIds=void 0!==e.globalizeObjectIds?!!e.globalizeObjectIds:this._globalizeObjectIds}try{e.src?this._loadModel(e.src,e,i,t):this._parseModel(e.ifc,e,i,t)}catch(e){this.error(e),t.fire("error",e)}return t}_loadModel(e,t,i,s){const r=this.viewer.scene.canvas.spinner;r.processes++,this._dataSource.getIFC(t.src,(e=>{this._parseModel(e,t,i,s),r.processes--}),(e=>{r.processes--,this.error(e),s.fire("error",e)}))}_parseModel(e,t,i,s){if(s.destroyed)return;const r=t.stats||{};if(r.sourceFormat="IFC",r.schemaVersion="",r.title="",r.author="",r.created="",r.numMetaObjects=0,r.numPropertySets=0,r.numObjects=0,r.numGeometries=0,r.numTriangles=0,r.numVertices=0,!this._ifcAPI)throw"WebIFCLoaderPlugin has no WebIFC instance configured - please inject via WebIFCLoaderPlugin constructor";const o=new Uint8Array(e),n=this._ifcAPI.OpenModel(o),a=this._ifcAPI.GetModelSchema(n),l=this._ifcAPI.GetLineIDsWithType(n,this._webIFC.IFCPROJECT).get(0),A=!1!==t.loadMetadata,h={modelID:n,modelSchema:a,sceneModel:s,loadMetadata:A,metadata:A?{id:"",projectId:""+l,author:"",createdAt:"",schema:"",creatingApplication:"",metaObjects:[],propertySets:[]}:null,metaObjects:{},options:i,log:function(e){},nextId:0,stats:r};if(A){if(i.includeTypes){h.includeTypes={};for(let e=0,t=i.includeTypes.length;e<t;e++)h.includeTypes[i.includeTypes[e]]=!0}if(i.excludeTypes){h.excludeTypes={};for(let e=0,t=i.excludeTypes.length;e<t;e++)h.excludeTypes[i.excludeTypes[e]]=!0}this._parseMetaObjects(h),this._parsePropertySets(h)}if(this._parseGeometry(h),s.finalize(),A){const e=s.id;this.viewer.metaScene.createMetaModel(e,h.metadata,i)}s.scene.once("tick",(()=>{s.destroyed||(s.scene.fire("modelLoaded",s.id),s.fire("loaded",!0,!1))}))}_parseMetaObjects(e){const t=this._ifcAPI.GetLineIDsWithType(e.modelID,this._webIFC.IFCPROJECT).get(0),i=this._ifcAPI.GetLine(e.modelID,t);this._parseSpatialChildren(e,i)}_parseSpatialChildren(e,t,i){const s=this._ifcAPI.GetNameFromTypeCode(t.type);if(e.includeTypes&&!e.includeTypes[s])return;if(e.excludeTypes&&e.excludeTypes[s])return;this._createMetaObject(e,t,i);const r=t.GlobalId.value;this._parseRelatedItemsOfType(e,t.expressID,"RelatingObject","RelatedObjects",this._webIFC.IFCRELAGGREGATES,r),this._parseRelatedItemsOfType(e,t.expressID,"RelatingStructure","RelatedElements",this._webIFC.IFCRELCONTAINEDINSPATIALSTRUCTURE,r)}_createMetaObject(e,t,i){const s=t.GlobalId.value,r=this._ifcAPI.GetNameFromTypeCode(t.type),o={id:s,name:t.Name&&""!==t.Name.value?t.Name.value:r,type:r,parent:i};e.metadata.metaObjects.push(o),e.metaObjects[s]=o,e.stats.numMetaObjects++}_parseRelatedItemsOfType(e,t,i,s,r,o){const n=this._ifcAPI.GetLineIDsWithType(e.modelID,r);for(let r=0;r<n.size();r++){const a=n.get(r),l=this._ifcAPI.GetLine(e.modelID,a),A=l[i];let h=!1;if(Array.isArray(A)){h=A.map((e=>e.value)).includes(t)}else h=A.value===t;if(h){const t=l[s];if(Array.isArray(t))t.forEach((t=>{const i=this._ifcAPI.GetLine(e.modelID,t.value);this._parseSpatialChildren(e,i,o)}));else{const i=this._ifcAPI.GetLine(e.modelID,t.value);this._parseSpatialChildren(e,i,o)}}}}_parsePropertySets(e){const t=this._ifcAPI.GetLineIDsWithType(e.modelID,this._webIFC.IFCRELDEFINESBYPROPERTIES);for(let i=0;i<t.size();i++){let s=t.get(i),r=this._ifcAPI.GetLine(e.modelID,s,!0);if(r){const t=r.RelatingPropertyDefinition;if(!t)continue;const i=t.GlobalId.value,s=t.HasProperties;if(s&&s.length>0){const o="Default",n=t.Name.value,a=[];for(let e=0,t=s.length;e<t;e++){const t=s[e],i=t.Name,r=t.NominalValue;if(i&&r){const e={name:i.value,type:r.type,value:r.value,valueType:r.valueType};t.Description?e.description=t.Description.value:r.description&&(e.description=r.description),a.push(e)}}const l={id:i,type:o,name:n,properties:a};e.metadata.propertySets.push(l),e.stats.numPropertySets++;const A=r.RelatedObjects;if(!A||0===A.length)return;for(let t=0,s=A.length;t<s;t++){const s=A[t].GlobalId.value,r=e.metaObjects[s];r&&(r.propertySetIds||(r.propertySetIds=[]),r.propertySetIds.push(i))}}}}}_parseGeometry(e){this._ifcAPI.StreamAllMeshes(e.modelID,(t=>{const i=t.expressID,s=t.geometries,r=[],o=this._ifcAPI.GetLine(e.modelID,i).GlobalId.value;if(e.loadMetadata){const t=o,i=e.metaObjects[t];if(e.includeTypes&&(!i||!e.includeTypes[i.type]))return;if(e.excludeTypes&&(!i||e.excludeTypes[i.type]))return}const n=d.mat4(),a=d.vec3();for(let t=0,i=s.size();t<i;t++){const i=s.get(t),o=this._ifcAPI.GetGeometry(e.modelID,i.geometryExpressID),l=this._ifcAPI.GetVertexArray(o.GetVertexData(),o.GetVertexDataSize()),A=this._ifcAPI.GetIndexArray(o.GetIndexData(),o.GetIndexDataSize()),h=new Float64Array(l.length/2),c=new Float32Array(l.length/2);for(let e=0,t=0,i=l.length/6;e<i;e++,t+=3)h[t+0]=l[6*e+0],h[t+1]=l[6*e+1],h[t+2]=l[6*e+2];n.set(i.flatTransformation),d.transformPositions3(n,h);const u=J(h,h,a);if(!e.options.autoNormals)for(let e=0,t=0,i=l.length/6;e<i;e++,t+=3)c[t+0]=l[6*e+3],c[t+1]=l[6*e+4],c[t+2]=l[6*e+5];e.stats.numGeometries++,e.stats.numVertices+=h.length/3,e.stats.numTriangles+=A.length/3;const p="mesh"+e.nextId++;e.sceneModel.createMesh({id:p,primitive:"triangles",origin:u?a:null,positions:h,normals:e.options.autoNormals?null:c,indices:A,color:[i.color.x,i.color.y,i.color.z],opacity:i.color.w}),r.push(p)}const l=e.options.globalizeObjectIds?d.globalizeObjectId(e.sceneModel.id,o):o;e.sceneModel.createEntity({id:l,meshIds:r,isObject:!0}),e.stats.numObjects++}))}}class PM{constructor(){}getLAS(e,t,i){var s=()=>{};t=t||s,i=i||s;const r=e.match(/^data:(.*?)(;base64)?,(.*)$/);if(r){const e=!!r[2];var o=r[3];o=window.decodeURIComponent(o),e&&(o=window.atob(o));try{const e=new ArrayBuffer(o.length),i=new Uint8Array(e);for(var n=0;n<o.length;n++)i[n]=o.charCodeAt(n);t(e)}catch(e){i(e)}}else{const s=new XMLHttpRequest;s.open("GET",e,!0),s.responseType="arraybuffer",s.onreadystatechange=function(){4===s.readyState&&(200===s.status?t(s.response):i("getXKT error : "+s.response))},s.send(null)}}}const CM={name:"LAS",id:"las",module:"las",version:"3.2.6",worker:!0,extensions:["las","laz"],mimeTypes:["application/octet-stream"],text:!0,binary:!0,tests:["LAS"],options:{las:{shape:"mesh",fp64:!1,skip:1,colorDepth:8}}},MM=[{item:"FileSignature",format:"char",size:4},{item:"FileSoureceID",format:"uShort",size:2},{item:"GlobalEncoding",format:"uShort",size:2},{item:"ProjectID1",format:"notUsed",size:4},{item:"ProjectID2",format:"notUsed",size:2},{item:"ProjectID3",format:"notUsed",size:2},{item:"ProjectID4",format:"notUsed",size:8},{item:"VersionMajor",format:"uChar",size:1},{item:"VersionMinor",format:"uChar",size:1},{item:"SystemIdentifier",format:"char",size:32},{item:"GeneratingSoftware",format:"char",size:32},{item:"CreationDay",format:"uShort",size:2},{item:"CreationYear",format:"uShort",size:2},{item:"HeaderSize",format:"uShort",size:2},{item:"OffsetToPointData",format:"uLong",size:4},{item:"NumberOfVariableLengthRecords",format:"uLong",size:4},{item:"PointDataFormatID",format:"uChar",size:1},{item:"PointDataRecordLength",format:"uShort",size:2},{item:"NumberOfPoints",format:"uLong",size:4},{item:"NumberOfPointByReturn",format:"uLong",size:20},{item:"ScaleFactorX",format:"double",size:8},{item:"ScaleFactorY",format:"double",size:8},{item:"ScaleFactorZ",format:"double",size:8},{item:"OffsetX",format:"double",size:8},{item:"OffsetY",format:"double",size:8},{item:"OffsetZ",format:"double",size:8},{item:"MaxX",format:"double",size:8},{item:"MinX",format:"double",size:8},{item:"MaxY",format:"double",size:8},{item:"MinY",format:"double",size:8},{item:"MaxZ",format:"double",size:8},{item:"MinZ",format:"double",size:8}],FM=[{item:"Reserved",format:"uShort",size:2},{item:"UserId",format:"char",size:16},{item:"RecordId",format:"uShort",size:2},{item:"RecordLengthAfterHeader",format:"uShort",size:2},{item:"Description",format:"char",size:32}],EM=e=>{let t=0,i=0,s=0;const r=new DataView(e),o=new Uint8Array(6e3),n=({item:s,format:o,size:n})=>{let a,l;switch(o){case"char":return l=new Uint8Array(e,t,n),t+=n,a=DM(l),[s,a];case"uShort":return a=r.getUint16(t,!0),t+=n,[s,a];case"uLong":return a=r.getUint32(t,!0),"NumberOfVariableLengthRecords"===s&&(i=a),t+=n,[s,a];case"uChar":return a=r.getUint8(t),t+=n,[s,a];case"double":return a=r.getFloat64(t,!0),t+=n,[s,a];default:t+=n}};return(()=>{const e={};MM.forEach((t=>{const i=n({...t});if(void 0!==i){if("FileSignature"===i[0]&&"LASF"!==i[1])throw new Error("Ivalid FileSignature. Is this a LAS/LAZ file");e[i[0]]=i[1]}}));const r=[];let a=i;for(;a--;){const e={};FM.forEach((i=>{const r=n({...i});e[r[0]]=r[1],"UserId"===r[0]&&"LASF_Projection"===r[1]&&(s=t-18+54)})),r.push(e)}const l=(e=>{if(void 0===e)return;const t=s+e.RecordLengthAfterHeader,i=o.slice(s,t),r=IM(i),n=new DataView(r);let a=6,l=Number(n.getUint16(a,!0));const A=[];for(;l--;){const e={};e.key=n.getUint16(a+=2,!0),e.tiffTagLocation=n.getUint16(a+=2,!0),e.count=n.getUint16(a+=2,!0),e.valueOffset=n.getUint16(a+=2,!0),A.push(e)}const h=A.find((e=>3072===e.key));if(h&&h.hasOwnProperty("valueOffset"))return h.valueOffset})(r.find((e=>"LASF_Projection"===e.UserId)));return l&&(e.epsg=l),e})()},IM=e=>{let t=new ArrayBuffer(e.length),i=new Uint8Array(t);for(let t=0;t<e.length;++t)i[t]=e[t];return t},DM=e=>{let t="";return e.forEach((e=>{let i=String.fromCharCode(e);"\0"!==i&&(t+=i)})),t.trim()};class SM extends z{constructor(e,t={}){super("lasLoader",e,t),this.dataSource=t.dataSource,this.skip=t.skip,this.fp64=t.fp64,this.colorDepth=t.colorDepth}get dataSource(){return this._dataSource}set dataSource(e){this._dataSource=e||new PM}get skip(){return this._skip}set skip(e){this._skip=e||1}get fp64(){return this._fp64}set fp64(e){this._fp64=!!e}get colorDepth(){return this._colorDepth}set colorDepth(e){this._colorDepth=e||"auto"}load(e={}){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);const t=new bc(this.viewer.scene,y.apply(e,{isModel:!0}));if(!e.src&&!e.las)return this.error("load() param expected: src or las"),t;const i={las:{skip:this._skip,fp64:this._fp64,colorDepth:this._colorDepth}};if(e.src)this._loadModel(e.src,e,i,t);else{const s=this.viewer.scene.canvas.spinner;s.processes++,this._parseModel(e.las,e,i,t).then((()=>{s.processes--}),(e=>{s.processes--,this.error(e),t.fire("error",e)}))}return t}_loadModel(e,t,i,s){const r=this.viewer.scene.canvas.spinner;r.processes++,this._dataSource.getLAS(t.src,(e=>{this._parseModel(e,t,i,s).then((()=>{r.processes--}),(e=>{r.processes--,this.error(e),s.fire("error",e)}))}),(e=>{r.processes--,this.error(e),s.fire("error",e)}))}_parseModel(e,t,i,s){function r(e){const i=e.value;if(t.rotateX&&i)for(let e=0,t=i.length;e<t;e+=3){const t=i[e+1];i[e+1]=i[e+2],i[e+2]=t}return i}function o(e,t){const i=e.value,s=e.size,r=t.value,o=4*r.length,n=new Uint8Array(o);for(let e=0,t=0,o=0,a=r.length;e<a;e++,o+=s,t+=4)n[t+0]=i[o+0],n[t+1]=i[o+1],n[t+2]=i[o+2],n[t+3]=Math.round(r[e]/65536*255);return n}function n(e){const t=e.value,i=4*t.length,s=new Uint8Array(i);for(let e=0,i=0,r=t.length;e<r;e++,i+=4)s[i+0]=0,s[i+1]=0,s[i+2]=0,s[i+3]=Math.round(t[e]/65536*255);return s}return new Promise(((a,l)=>{if(s.destroyed)return void l();const A=t.stats||{};A.sourceFormat="LAS",A.schemaVersion="",A.title="",A.author="",A.created="",A.numMetaObjects=0,A.numPropertySets=0,A.numObjects=0,A.numGeometries=0,A.numTriangles=0,A.numVertices=0;try{const A=EM(e);CB(e,CM,i).then((e=>{const h=e.attributes,c=e.loaderData,u=void 0!==c.pointsFormatId?c.pointsFormatId:-1;if(!h.POSITION)return s.finalize(),void l("No positions found in file");let p,f;switch(u){case 0:p=r(h.POSITION),f=n(h.intensity);break;case 1:if(!h.intensity)return s.finalize(),void l("No positions found in file");p=r(h.POSITION),f=n(h.intensity);break;case 2:case 3:if(!h.intensity)return s.finalize(),void l("No positions found in file");p=r(h.POSITION),f=o(h.COLOR_0,h.intensity)}const g=TM(p,15e5),m=TM(f,2e6),_=[];for(let e=0,t=g.length;e<t;e++){const t=`pointsMesh${e}`;_.push(t),s.createMesh({id:t,primitive:"points",positions:g[e],colorsCompressed:e<m.length?m[e]:null})}const v=t.entityId||d.createUUID();if(s.createEntity({id:v,meshIds:_,isObject:!0}),s.finalize(),t.metaModelJSON){const e=s.id;this.viewer.metaScene.createMetaModel(e,t.metaModelJSON,i)}else if(!1!==t.loadMetadata){const e=d.createUUID(),t={projectId:"",author:"",createdAt:"",schema:"",creatingApplication:"",metaObjects:[{id:e,name:"Model",type:"Model"},{id:v,name:"PointCloud (LAS)",type:"PointCloud",parent:e,attributes:A||{}}],propertySets:[]},r=s.id;this.viewer.metaScene.createMetaModel(r,t,i)}s.scene.once("tick",(()=>{s.destroyed||(s.scene.fire("modelLoaded",s.id),s.fire("loaded",!0,!1))})),a()}))}catch(e){s.finalize(),l(e)}}))}}function TM(e,t){if(t>=e.length)return[e];let i=[];for(let s=0;s<e.length;s+=t)i.push(e.slice(s,s+t));return i}class RM{constructor(){}getCityJSON(e,t,i){y.loadJSON(e,(e=>{t(e)}),(function(e){i(e)}))}}function LM(e,t,i){i=i||2;var s,r,o,n,a,l,A,h=t&&t.length,c=h?t[0]*i:e.length,u=UM(e,0,c,i,!0),d=[];if(!u||u.next===u.prev)return d;if(h&&(u=function(e,t,i,s){var r,o,n,a=[];for(r=0,o=t.length;r<o;r++)(n=UM(e,t[r]*s,r<o-1?t[r+1]*s:e.length,s,!1))===n.next&&(n.steiner=!0),a.push(KM(n));for(a.sort(jM),r=0;r<a.length;r++)GM(a[r],i),i=kM(i,i.next);return i}(e,t,u,i)),e.length>80*i){s=o=e[0],r=n=e[1];for(var p=i;p<c;p+=i)(a=e[p])<s&&(s=a),(l=e[p+1])<r&&(r=l),a>o&&(o=a),l>n&&(n=l);A=0!==(A=Math.max(o-s,n-r))?1/A:0}return OM(u,d,i,s,r,A),d}function UM(e,t,i,s,r){var o,n;if(r===nF(e,t,i,s)>0)for(o=t;o<i;o+=s)n=sF(o,e[o],e[o+1],n);else for(o=i-s;o>=t;o-=s)n=sF(o,e[o],e[o+1],n);return n&&ZM(n,n.next)&&(rF(n),n=n.next),n}function kM(e,t){if(!e)return e;t||(t=e);var i,s=e;do{if(i=!1,s.steiner||!ZM(s,s.next)&&0!==YM(s.prev,s,s.next))s=s.next;else{if(rF(s),(s=t=s.prev)===s.next)break;i=!0}}while(i||s!==t);return t}function OM(e,t,i,s,r,o,n){if(e){!n&&o&&function(e,t,i,s){var r=e;do{null===r.z&&(r.z=WM(r.x,r.y,t,i,s)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==e);r.prevZ.nextZ=null,r.prevZ=null,function(e){var t,i,s,r,o,n,a,l,A=1;do{for(i=e,e=null,o=null,n=0;i;){for(n++,s=i,a=0,t=0;t<A&&(a++,s=s.nextZ);t++);for(l=A;a>0||l>0&&s;)0!==a&&(0===l||!s||i.z<=s.z)?(r=i,i=i.nextZ,a--):(r=s,s=s.nextZ,l--),o?o.nextZ=r:e=r,r.prevZ=o,o=r;i=s}o.nextZ=null,A*=2}while(n>1)}(r)}(e,s,r,o);for(var a,l,A=e;e.prev!==e.next;)if(a=e.prev,l=e.next,o?QM(e,s,r,o):NM(e))t.push(a.i/i),t.push(e.i/i),t.push(l.i/i),rF(e),e=l.next,A=l.next;else if((e=l)===A){n?1===n?OM(e=VM(kM(e),t,i),t,i,s,r,o,2):2===n&&HM(e,t,i,s,r,o):OM(kM(e),t,i,s,r,o,1);break}}}function NM(e){var t=e.prev,i=e,s=e.next;if(YM(t,i,s)>=0)return!1;for(var r=e.next.next;r!==e.prev;){if(XM(t.x,t.y,i.x,i.y,s.x,s.y,r.x,r.y)&&YM(r.prev,r,r.next)>=0)return!1;r=r.next}return!0}function QM(e,t,i,s){var r=e.prev,o=e,n=e.next;if(YM(r,o,n)>=0)return!1;for(var a=r.x<o.x?r.x<n.x?r.x:n.x:o.x<n.x?o.x:n.x,l=r.y<o.y?r.y<n.y?r.y:n.y:o.y<n.y?o.y:n.y,A=r.x>o.x?r.x>n.x?r.x:n.x:o.x>n.x?o.x:n.x,h=r.y>o.y?r.y>n.y?r.y:n.y:o.y>n.y?o.y:n.y,c=WM(a,l,t,i,s),u=WM(A,h,t,i,s),d=e.prevZ,p=e.nextZ;d&&d.z>=c&&p&&p.z<=u;){if(d!==e.prev&&d!==e.next&&XM(r.x,r.y,o.x,o.y,n.x,n.y,d.x,d.y)&&YM(d.prev,d,d.next)>=0)return!1;if(d=d.prevZ,p!==e.prev&&p!==e.next&&XM(r.x,r.y,o.x,o.y,n.x,n.y,p.x,p.y)&&YM(p.prev,p,p.next)>=0)return!1;p=p.nextZ}for(;d&&d.z>=c;){if(d!==e.prev&&d!==e.next&&XM(r.x,r.y,o.x,o.y,n.x,n.y,d.x,d.y)&&YM(d.prev,d,d.next)>=0)return!1;d=d.prevZ}for(;p&&p.z<=u;){if(p!==e.prev&&p!==e.next&&XM(r.x,r.y,o.x,o.y,n.x,n.y,p.x,p.y)&&YM(p.prev,p,p.next)>=0)return!1;p=p.nextZ}return!0}function VM(e,t,i){var s=e;do{var r=s.prev,o=s.next.next;!ZM(r,o)&&qM(r,s,s.next,o)&&tF(r,o)&&tF(o,r)&&(t.push(r.i/i),t.push(s.i/i),t.push(o.i/i),rF(s),rF(s.next),s=e=o),s=s.next}while(s!==e);return kM(s)}function HM(e,t,i,s,r,o){var n=e;do{for(var a=n.next.next;a!==n.prev;){if(n.i!==a.i&&JM(n,a)){var l=iF(n,a);return n=kM(n,n.next),l=kM(l,l.next),OM(n,t,i,s,r,o),void OM(l,t,i,s,r,o)}a=a.next}n=n.next}while(n!==e)}function jM(e,t){return e.x-t.x}function GM(e,t){if(t=function(e,t){var i,s=t,r=e.x,o=e.y,n=-1/0;do{if(o<=s.y&&o>=s.next.y&&s.next.y!==s.y){var a=s.x+(o-s.y)*(s.next.x-s.x)/(s.next.y-s.y);if(a<=r&&a>n){if(n=a,a===r){if(o===s.y)return s;if(o===s.next.y)return s.next}i=s.x<s.next.x?s:s.next}}s=s.next}while(s!==t);if(!i)return null;if(r===n)return i;var l,A=i,h=i.x,c=i.y,u=1/0;s=i;do{r>=s.x&&s.x>=h&&r!==s.x&&XM(o<c?r:n,o,h,c,o<c?n:r,o,s.x,s.y)&&(l=Math.abs(o-s.y)/(r-s.x),tF(s,e)&&(l<u||l===u&&(s.x>i.x||s.x===i.x&&zM(i,s)))&&(i=s,u=l)),s=s.next}while(s!==A);return i}(e,t),t){var i=iF(t,e);kM(t,t.next),kM(i,i.next)}}function zM(e,t){return YM(e.prev,e,t.prev)<0&&YM(t.next,e,e.next)<0}function WM(e,t,i,s,r){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-i)*r)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-s)*r)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function KM(e){var t=e,i=e;do{(t.x<i.x||t.x===i.x&&t.y<i.y)&&(i=t),t=t.next}while(t!==e);return i}function XM(e,t,i,s,r,o,n,a){return(r-n)*(t-a)-(e-n)*(o-a)>=0&&(e-n)*(s-a)-(i-n)*(t-a)>=0&&(i-n)*(o-a)-(r-n)*(s-a)>=0}function JM(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var i=e;do{if(i.i!==e.i&&i.next.i!==e.i&&i.i!==t.i&&i.next.i!==t.i&&qM(i,i.next,e,t))return!0;i=i.next}while(i!==e);return!1}(e,t)&&(tF(e,t)&&tF(t,e)&&function(e,t){var i=e,s=!1,r=(e.x+t.x)/2,o=(e.y+t.y)/2;do{i.y>o!=i.next.y>o&&i.next.y!==i.y&&r<(i.next.x-i.x)*(o-i.y)/(i.next.y-i.y)+i.x&&(s=!s),i=i.next}while(i!==e);return s}(e,t)&&(YM(e.prev,e,t.prev)||YM(e,t.prev,t))||ZM(e,t)&&YM(e.prev,e,e.next)>0&&YM(t.prev,t,t.next)>0)}function YM(e,t,i){return(t.y-e.y)*(i.x-t.x)-(t.x-e.x)*(i.y-t.y)}function ZM(e,t){return e.x===t.x&&e.y===t.y}function qM(e,t,i,s){var r=eF(YM(e,t,i)),o=eF(YM(e,t,s)),n=eF(YM(i,s,e)),a=eF(YM(i,s,t));return r!==o&&n!==a||(!(0!==r||!$M(e,i,t))||(!(0!==o||!$M(e,s,t))||(!(0!==n||!$M(i,e,s))||!(0!==a||!$M(i,t,s)))))}function $M(e,t,i){return t.x<=Math.max(e.x,i.x)&&t.x>=Math.min(e.x,i.x)&&t.y<=Math.max(e.y,i.y)&&t.y>=Math.min(e.y,i.y)}function eF(e){return e>0?1:e<0?-1:0}function tF(e,t){return YM(e.prev,e,e.next)<0?YM(e,t,e.next)>=0&&YM(e,e.prev,t)>=0:YM(e,t,e.prev)<0||YM(e,e.next,t)<0}function iF(e,t){var i=new oF(e.i,e.x,e.y),s=new oF(t.i,t.x,t.y),r=e.next,o=t.prev;return e.next=t,t.prev=e,i.next=r,r.prev=i,s.next=i,i.prev=s,o.next=s,s.prev=o,s}function sF(e,t,i,s){var r=new oF(e,t,i);return s?(r.next=s.next,r.prev=s,s.next.prev=r,s.next=r):(r.prev=r,r.next=r),r}function rF(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function oF(e,t,i){this.i=e,this.x=t,this.y=i,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function nF(e,t,i,s){for(var r=0,o=t,n=i-s;o<i;o+=s)r+=(e[n]-e[o])*(e[o+1]+e[n+1]),n=o;return r}LM.deviation=function(e,t,i,s){var r=t&&t.length,o=r?t[0]*i:e.length,n=Math.abs(nF(e,0,o,i));if(r)for(var a=0,l=t.length;a<l;a++){var A=t[a]*i,h=a<l-1?t[a+1]*i:e.length;n-=Math.abs(nF(e,A,h,i))}var c=0;for(a=0;a<s.length;a+=3){var u=s[a]*i,d=s[a+1]*i,p=s[a+2]*i;c+=Math.abs((e[u]-e[p])*(e[d+1]-e[u+1])-(e[u]-e[d])*(e[p+1]-e[u+1]))}return 0===n&&0===c?0:Math.abs((c-n)/n)},LM.flatten=function(e){for(var t=e[0][0].length,i={vertices:[],holes:[],dimensions:t},s=0,r=0;r<e.length;r++){for(var o=0;o<e[r].length;o++)for(var n=0;n<t;n++)i.vertices.push(e[r][o][n]);r>0&&(s+=e[r-1].length,i.holes.push(s))}return i};const aF=d.vec2(),lF=d.vec3(),AF=d.vec3(),hF=d.vec3();class cF extends z{constructor(e,t={}){super("cityJSONLoader",e,t),this.dataSource=t.dataSource}get dataSource(){return this._dataSource}set dataSource(e){this._dataSource=e||new RM}load(e={}){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);const t=new bc(this.viewer.scene,y.apply(e,{isModel:!0,edges:!0}));if(!e.src&&!e.cityJSON)return this.error("load() param expected: src or cityJSON"),t;const i={};if(e.src)this._loadModel(e.src,e,i,t);else{const s=this.viewer.scene.canvas.spinner;s.processes++,this._parseModel(e.cityJSON,e,i,t),s.processes--}return t}_loadModel(e,t,i,s){const r=this.viewer.scene.canvas.spinner;r.processes++,this._dataSource.getCityJSON(t.src,(e=>{this._parseModel(e,t,i,s),r.processes--}),(e=>{r.processes--,this.error(e),s.fire("error",e)}))}_parseModel(e,t,i,s){if(s.destroyed)return;const r=e.transform?this._transformVertices(e.vertices,e.transform,i.rotateX):e.vertices,o=t.stats||{};o.sourceFormat=e.type||"CityJSON",o.schemaVersion=e.version||"",o.title="",o.author="",o.created="",o.numMetaObjects=0,o.numPropertySets=0,o.numObjects=0,o.numGeometries=0,o.numTriangles=0,o.numVertices=0;const n=!1!==t.loadMetadata,a=n?{id:d.createUUID(),name:"Model",type:"Model"}:null,l=n?{id:"",projectId:"",author:"",createdAt:"",schema:e.version||"",creatingApplication:"",metaObjects:[a],propertySets:[]}:null,A={data:e,vertices:r,sceneModel:s,loadMetadata:n,metadata:l,rootMetaObject:a,nextId:0,stats:o};if(this._parseCityJSON(A),s.finalize(),n){const e=s.id;this.viewer.metaScene.createMetaModel(e,A.metadata,i)}s.scene.once("tick",(()=>{s.destroyed||(s.scene.fire("modelLoaded",s.id),s.fire("loaded",!0,!1))}))}_transformVertices(e,t,i){const s=[],r=t.scale||d.vec3([1,1,1]),o=t.translate||d.vec3([0,0,0]);for(let t=0,n=0;t<e.length;t++,n+=3){const n=e[t][0]*r[0]+o[0],a=e[t][1]*r[1]+o[1],l=e[t][2]*r[2]+o[2];i?s.push([n,l,a]):s.push([n,a,l])}return s}_parseCityJSON(e){const t=e.data.CityObjects;for(const i in t)if(t.hasOwnProperty(i)){const s=t[i];this._parseCityObject(e,s,i)}}_parseCityObject(e,t,i){const s=e.sceneModel,r=e.data;if(e.loadMetadata){const s=i,r=t.type,o=r+" : "+i,n=t.parents?t.parents[0]:e.rootMetaObject.id;e.metadata.metaObjects.push({id:s,name:o,type:r,parent:n})}if(e.stats.numMetaObjects++,!(t.geometry&&t.geometry.length>0))return;const o=[];for(let i=0,s=t.geometry.length;i<s;i++){const s=t.geometry[i];let n,a;const l=r.appearance;if(l){const e=l.materials;if(e){const t=s.material;if(t){const s=Object.keys(t);if(s.length>0){const r=t[s[0]];if(void 0!==r.value)n=e[r.value];else{const t=r.values;if(t){a=[];for(let s=0,r=t.length;s<r;s++){const s=e[t[i]];a.push(s)}}}}}}}a?this._parseGeometrySurfacesWithOwnMaterials(e,s,a,o):this._parseGeometrySurfacesWithSharedMaterial(e,s,n,o)}o.length>0&&(s.createEntity({id:i,meshIds:o,isObject:!0}),e.stats.numObjects++)}_parseGeometrySurfacesWithOwnMaterials(e,t,i,s){switch(t.type){case"MultiPoint":case"MultiLineString":break;case"MultiSurface":case"CompositeSurface":const r=t.boundaries;this._parseSurfacesWithOwnMaterials(e,i,r,s);break;case"Solid":const o=t.boundaries;for(let t=0;t<o.length;t++){const r=o[t];this._parseSurfacesWithOwnMaterials(e,i,r,s)}break;case"MultiSolid":case"CompositeSolid":const n=t.boundaries;for(let t=0;t<n.length;t++)for(let r=0;r<n[t].length;r++){const o=n[t][r];this._parseSurfacesWithOwnMaterials(e,i,o,s)}}}_parseSurfacesWithOwnMaterials(e,t,i,s){const r=e.vertices,o=e.sceneModel;for(let n=0;n<i.length;n++){const a=i[n],l=t[n]||{diffuseColor:[.8,.8,.8],transparency:1},A=[],h=[],c=[],u={positions:[],indices:[]};for(let t=0;t<a.length;t++){A.length>0&&h.push(A.length);const i=this._extractLocalIndices(e,a[t],c,u);A.push(...i)}if(3===A.length)u.indices.push(A[0]),u.indices.push(A[1]),u.indices.push(A[2]);else if(A.length>3){const e=[];for(let t=0;t<A.length;t++)e.push({x:r[c[A[t]]][0],y:r[c[A[t]]][1],z:r[c[A[t]]][2]});const t=this._getNormalOfPositions(e,d.vec3());let i=[];for(let s=0;s<e.length;s++)this._to2D(e[s],t,aF),i.unshift(aF[0]),i.unshift(aF[1]);const s=LM(i,h,2);for(let e=0;e<s.length;e+=3)u.indices.unshift(A[s[e]]),u.indices.unshift(A[s[e+1]]),u.indices.unshift(A[s[e+2]])}const p=""+e.nextId++;o.createMesh({id:p,primitive:"triangles",positions:u.positions,indices:u.indices,color:l&&l.diffuseColor?l.diffuseColor:[.8,.8,.8],opacity:l&&void 0!==l.transparency?1-l.transparency:1}),s.push(p),e.stats.numGeometries++,e.stats.numVertices+=u.positions.length/3,e.stats.numTriangles+=u.indices.length/3}}_parseGeometrySurfacesWithSharedMaterial(e,t,i,s){const r=e.sceneModel,o=[],n={positions:[],indices:[]};switch(t.type){case"MultiPoint":case"MultiLineString":break;case"MultiSurface":case"CompositeSurface":const i=t.boundaries;this._parseSurfacesWithSharedMaterial(e,i,o,n);break;case"Solid":const s=t.boundaries;for(let t=0;t<s.length;t++){const i=s[t];this._parseSurfacesWithSharedMaterial(e,i,o,n)}break;case"MultiSolid":case"CompositeSolid":const r=t.boundaries;for(let t=0;t<r.length;t++)for(let i=0;i<r[t].length;i++){const s=r[t][i];this._parseSurfacesWithSharedMaterial(e,s,o,n)}}if(n.positions.length>0&&n.indices.length>0){const t=""+e.nextId++;r.createMesh({id:t,primitive:"triangles",positions:n.positions,indices:n.indices,color:i&&i.diffuseColor?i.diffuseColor:[.8,.8,.8],opacity:1}),s.push(t),e.stats.numGeometries++,e.stats.numVertices+=n.positions.length/3,e.stats.numTriangles+=n.indices.length/3}}_parseSurfacesWithSharedMaterial(e,t,i,s){const r=e.vertices;for(let o=0;o<t.length;o++){let n=[],a=[];for(let r=0;r<t[o].length;r++){n.length>0&&a.push(n.length);const l=this._extractLocalIndices(e,t[o][r],i,s);n.push(...l)}if(3===n.length)s.indices.push(n[0]),s.indices.push(n[1]),s.indices.push(n[2]);else if(n.length>3){let e=[];for(let t=0;t<n.length;t++)e.push({x:r[i[n[t]]][0],y:r[i[n[t]]][1],z:r[i[n[t]]][2]});const t=this._getNormalOfPositions(e,d.vec3());let o=[];for(let i=0;i<e.length;i++)this._to2D(e[i],t,aF),o.unshift(aF[0]),o.unshift(aF[1]);const l=LM(o,a,2);for(let e=0;e<l.length;e+=3)s.indices.unshift(n[l[e]]),s.indices.unshift(n[l[e+1]]),s.indices.unshift(n[l[e+2]])}}}_extractLocalIndices(e,t,i,s){const r=e.vertices,o=[];for(let e=0,n=t.length;e<n;e++){const n=t[e];if(i.includes(n)){const e=i.indexOf(n);o.push(e)}else s.positions.push(r[n][0]),s.positions.push(r[n][1]),s.positions.push(r[n][2]),o.push(i.length),i.push(n)}return o}_getNormalOfPositions(e,t){for(let i=0;i<e.length;i++){let s=i+1;s===e.length&&(s=0),t[0]+=(e[i].y-e[s].y)*(e[i].z+e[s].z),t[1]+=(e[i].z-e[s].z)*(e[i].x+e[s].x),t[2]+=(e[i].x-e[s].x)*(e[i].y+e[s].y)}return d.normalizeVec3(t)}_to2D(e,t,i){const s=lF,r=AF,o=hF;s[0]=e.x,s[1]=e.y,s[2]=e.z,r[0]=t.x,r[1]=t.y,r[2]=t.z,o[0]=1.1,o[1]=1.1,o[2]=1.1;d.lenVec3(d.subVec3(o,r))<.01&&(o[0]+=1,o[1]+=2,o[2]+=3);const n=d.dotVec3(o,r),a=d.mulVec3Scalar(r,n,d.vec3());o[0]-=a[0],o[1]-=a[1],o[2]-=a[2],d.normalizeVec3(o);const l=d.cross3Vec3(r,o,d.vec3()),A=d.dotVec3(s,o),h=d.dotVec3(s,l);i[0]=A,i[1]=h}}class uF{constructor(){}getDotBIM(e,t,i){y.loadJSON(e,(e=>{t(e)}),(function(e){i(e)}))}}class dF extends z{constructor(e,t={}){super("DotBIMLoader",e,t),this.dataSource=t.dataSource,this.objectDefaults=t.objectDefaults}set dataSource(e){this._dataSource=e||new uF}get dataSource(){return this._dataSource}set objectDefaults(e){this._objectDefaults=e||vP}get objectDefaults(){return this._objectDefaults}load(e={}){e.id&&this.viewer.scene.components[e.id]&&(this.error("Component with this ID already exists in viewer: "+e.id+" - will autogenerate this ID"),delete e.id);const t=new bc(this.viewer.scene,y.apply(e,{isModel:!0,backfaces:e.backfaces,dtxEnabled:e.dtxEnabled,rotation:e.rotation,origin:e.origin})),i=t.id;if(!e.src&&!e.dotBIM)return this.error("load() param expected: src or dotBIM"),t;const s=e.objectDefaults||this._objectDefaults||vP;let r,o;if(e.includeTypes){r={};for(let t=0,i=e.includeTypes.length;t<i;t++)r[e.includeTypes[t]]=!0}if(e.excludeTypes){o={},r||(r={});for(let t=0,i=e.excludeTypes.length;t<i;t++)r[e.excludeTypes[t]]=!0}const n=e=>{const t=e.fileData,n=e.sceneModel,a={},l={},A=d.createUUID(),h=d.createUUID(),c=d.createUUID(),u=d.createUUID(),p={metaObjects:[{id:A,name:"IfcProject",type:"IfcProject",parent:null},{id:h,name:"IfcSite",type:"IfcSite",parent:A},{id:c,name:"IfcBuilding",type:"IfcBuilding",parent:h},{id:u,name:"IfcBuildingStorey",type:"IfcBuildingStorey",parent:c}],propertySets:[]};for(let e=0,i=t.meshes.length;e<i;e++){const i=t.meshes[e];a[i.mesh_id]=e}const f=e=>{if(l[e])return;const i=a[e],s=t.meshes[i];n.createGeometry({id:e,primitive:"triangles",positions:s.coordinates,indices:s.indices}),l[e]=!0},g=t.elements;for(let e=0,t=g.length;e<t;e++){const t=g[e],i=t.type;if(o&&o[i])continue;if(r&&!r[i])continue;const a=t.info,l=void 0!==t.guid?`${t.guid}`:void 0!==a&&void 0!==a.id?a.id:e,A=t.mesh_id;f(A);const h=`${l}-mesh`,c=t.vector,d=t.rotation,m=s?s[i]||s.DEFAULT:null;let _=!0,v=!0,b=t.color?[t.color.r/255,t.color.g/255,t.color.b/255]:[1,1,1],y=t.color?t.color.a/255:1;m&&(!1===m.visible&&(_=!1),!1===m.pickable&&(v=!1),m.colorize&&(b=m.colorize),void 0!==m.opacity&&null!==m.opacity&&(y=m.opacity)),n.createMesh({id:h,geometryId:A,color:b,opacity:y,quaternion:!d||0===d.qz&&0===d.qy&&0===d.qx&&1===d.qw?void 0:[d.qx,d.qy,d.qz,d.qw],position:c?[c.x,c.y,c.z]:void 0}),n.createEntity({id:l,meshIds:[h],visible:_,pickable:v,isObject:!0});for(let e in a){let t;e.startsWith("IFC_Pset_")&&(t||(t=[]),t.push({name:e,value:a[e]})),t&&p.propertySets.push({id:l,properties:t})}p.metaObjects.push({id:l,name:a&&a.Name&&"None"!==a.Name?a.Name:`${t.type} ${l}`,type:t.type,parent:u,propertySetIds:[l]})}n.finalize(),this.viewer.metaScene.createMetaModel(i,p),n.scene.once("tick",(()=>{n.destroyed||(n.scene.fire("modelLoaded",n.id),n.fire("loaded",!0,!1))}))};if(e.src){const i=e.src;this.viewer.scene.canvas.spinner.processes++,this._dataSource.getDotBIM(i,(e=>{n({fileData:e,sceneModel:t,nextId:0,error:function(e){}}),this.viewer.scene.canvas.spinner.processes--}),(e=>{this.viewer.scene.canvas.spinner.processes--,this.error(e)}))}else if(e.dotBIM){const i={fileData:e.dotBIM,sceneModel:t,nextId:0,error:function(e){}};n(i)}return t.once("destroyed",(()=>{this.viewer.metaScene.destroyMetaModel(i)})),t}destroy(){super.destroy()}}export{Li as AlphaFormat,Tt as AmbientLight,be as AngleMeasurementsControl,ye as AngleMeasurementsMouseControl,Be as AngleMeasurementsPlugin,we as AngleMeasurementsTouchControl,Fe as AnnotationsPlugin,yr as AxisGizmoPlugin,Mc as BCFViewpointsPlugin,Ao as Bitmap,Pi as ByteType,pu as CameraMemento,Kc as CameraPath,eu as CameraPathAnimation,cF as CityJSONLoaderPlugin,ui as ClampToEdgeWrapping,R as Component,xs as CompressedMediaType,on as Configs,o as ContextMenu,vu as CubicBezierCurve,Gc as Curve,Qh as DefaultLoadingManager,Qi as DepthFormat,Vi as DepthStencilFormat,St as DirLight,Lc as DistanceMeasurementsControl,Uc as DistanceMeasurementsMouseControl,kc as DistanceMeasurementsPlugin,Oc as DistanceMeasurementsTouchControl,uF as DotBIMDefaultDataSource,dF as DotBIMLoaderPlugin,ei as EdgeMaterial,qt as EmphasisMaterial,eC as FaceAlignedSectionPlanesPlugin,Nc as FastNavPlugin,Ii as FloatType,Jr as Fresnel,N as Frustum,O as FrustumPlane,ys as GIFMediaType,Qc as GLTFDefaultDataSource,bP as GLTFLoaderPlugin,Di as HalfFloatType,ou as ImagePlane,Fi as IntType,Bs as JPEGMediaType,Wh as KTX2TextureTranscoder,SM as LASLoaderPlugin,Tr as LambertMaterial,uu as LightMap,Bc as LineSet,vs as LinearEncoding,vi as LinearFilter,wi as LinearMipMapLinearFilter,yi as LinearMipMapNearestFilter,Bi as LinearMipmapLinearFilter,bi as LinearMipmapNearestFilter,Vh as Loader,Nh as LoadingManager,Vc as LocaleService,Ni as LuminanceAlphaFormat,Oi as LuminanceFormat,e as Map,ue as Marker,H as MarqueePicker,j as MarqueePickerMouseControl,fr as Mesh,Ur as MetallicMaterial,di as MirroredRepeatWrapping,gu as ModelMemento,xP as NavCubePlugin,pi as NearestFilter,_i as NearestMipMapLinearFilter,fi as NearestMipMapNearestFilter,mi as NearestMipmapLinearFilter,gi as NearestMipmapNearestFilter,Sr as Node,TP as OBJLoaderPlugin,f as ObjectsKdTree3,_u as ObjectsMemento,ws as PNGMediaType,bu as Path,Bu as PerformanceModel,Yt as PhongMaterial,Le as PickResult,z as Plugin,nu as PointLight,G as PointerCircle,n as PointerLens,yu as QuadraticBezierCurve,g as Queue,ki as RGBAFormat,Wi as RGBAIntegerFormat,fs as RGBA_ASTC_10x10_Format,us as RGBA_ASTC_10x5_Format,ds as RGBA_ASTC_10x6_Format,ps as RGBA_ASTC_10x8_Format,gs as RGBA_ASTC_12x10_Format,ms as RGBA_ASTC_12x12_Format,rs as RGBA_ASTC_4x4_Format,os as RGBA_ASTC_5x4_Format,ns as RGBA_ASTC_5x5_Format,as as RGBA_ASTC_6x5_Format,ls as RGBA_ASTC_6x6_Format,As as RGBA_ASTC_8x5_Format,hs as RGBA_ASTC_8x6_Format,cs as RGBA_ASTC_8x8_Format,_s as RGBA_BPTC_Format,ss as RGBA_ETC2_EAC_Format,es as RGBA_PVRTC_2BPPV1_Format,$i as RGBA_PVRTC_4BPPV1_Format,Xi as RGBA_S3TC_DXT1_Format,Ji as RGBA_S3TC_DXT3_Format,Yi as RGBA_S3TC_DXT5_Format,Ui as RGBFormat,ts as RGB_ETC1_Format,is as RGB_ETC2_Format,qi as RGB_PVRTC_2BPPV1_Format,Zi as RGB_PVRTC_4BPPV1_Format,Ki as RGB_S3TC_DXT1_Format,Gi as RGFormat,zi as RGIntegerFormat,zt as ReadableGeometry,Hi as RedFormat,ji as RedIntegerFormat,cu as ReflectionMap,ci as RepeatWrapping,iC as STLDefaultDataSource,cC as STLLoaderPlugin,bc as SceneModel,po as SceneModelMesh,cc as SceneModelTransform,Br as SectionPlane,VP as SectionPlanesPlugin,Ci as ShortType,wu as Skybox,tC as SkyboxesPlugin,Nr as SpecularMaterial,zc as SplineCurve,du as SpriteMarker,WP as StoreyViewsPlugin,Xr as Texture,xu as TextureTranscoder,pC as TreeViewPlugin,xi as UnsignedByteType,Ri as UnsignedInt248Type,Ei as UnsignedIntType,Si as UnsignedShort4444Type,Ti as UnsignedShort5551Type,Mi as UnsignedShortType,qr as VBOGeometry,_C as ViewCullPlugin,ub as Viewer,xM as WebIFCLoaderPlugin,Gh as WorkerPool,vC as XKTDefaultDataSource,aM as XKTLoaderPlugin,BM as XML3DLoaderPlugin,Wt as buildBoxGeometry,io as buildBoxLinesGeometry,so as buildBoxLinesGeometryFromAABB,mr as buildCylinderGeometry,ro as buildGridGeometry,oo as buildPlaneGeometry,ao as buildPolylineGeometry,lo as buildPolylineGeometryFromCurve,_r as buildSphereGeometry,no as buildTorusGeometry,br as buildVectorTextGeometry,K as createRTCViewMat,V as frustumIntersectsAABB3,Xh as getKTX2TextureTranscoder,Z as getPlaneRTCPos,eo as load3DSGeometry,to as loadOBJGeometry,d as math,Y as rtcToWorldPos,bs as sRGBEncoding,Q as setFrustum,m as stats,y as utils,X as worldToRTCPos,J as worldToRTCPositions};