wangjuncheng
2025-04-28 f54c45de2ec6dfadc825c064b75e6707513bd094
public/CimSDK/Workers/createVerticesFromHeightmap.js
@@ -3,4 +3,4 @@
 * Version 5.3.1
 */
import{a as mr,b as hr}from"./chunk-GNVRN42E.js";import{a as lr}from"./chunk-CQELY6Z3.js";import{a as Ae}from"./chunk-DMXICNHG.js";import{a as cr}from"./chunk-RPFXEG5U.js";import{a as or}from"./chunk-HV57XH4K.js";import"./chunk-P5SE5XVC.js";import{a as ur}from"./chunk-ZPRLAWII.js";import"./chunk-BUR4N7VJ.js";import"./chunk-33CJ2NM7.js";import{d as fr}from"./chunk-QHUUGFLC.js";import{b as De,g as sr,i as oe}from"./chunk-BHJLM5NY.js";import"./chunk-3LWOQSP3.js";import{b as _,d as ar,e as Se}from"./chunk-7DK7KB7Q.js";import{a as Ue}from"./chunk-JSZDCKFG.js";import"./chunk-YGIPMXAD.js";import{a as je}from"./chunk-54HAFFPJ.js";import{a as q}from"./chunk-5HWP5DW7.js";import{a as xe}from"./chunk-INT7THOB.js";import{c as Mr,d as Vr,e as ie}from"./chunk-PPCZYYBW.js";var dr=Mr((ei,Ee)=>{/* Copyright 2015-2018 Esri. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 @preserve */(function(){var M=function(){var A={};A.defaultNoDataValue=-34027999387901484e22,A.decode=function(r,a){a=a||{};var t=a.encodedMaskData||a.encodedMaskData===null,i=n(r,a.inputOffset||0,t),f=a.noDataValue!==null?a.noDataValue:A.defaultNoDataValue,o=T(i,a.pixelType||Float32Array,a.encodedMaskData,f,a.returnMask),c={width:i.width,height:i.height,pixelData:o.resultPixels,minValue:o.minValue,maxValue:i.pixels.maxValue,noDataValue:f};return o.resultMask&&(c.maskData=o.resultMask),a.returnEncodedMask&&i.mask&&(c.encodedMaskData=i.mask.bitset?i.mask.bitset:null),a.returnFileInfo&&(c.fileInfo=B(i),a.computeUsedBitDepths&&(c.fileInfo.bitDepths=W(i))),c};var T=function(r,a,t,i,f){var o=0,c=r.pixels.numBlocksX,m=r.pixels.numBlocksY,l=Math.floor(r.width/c),s=Math.floor(r.height/m),h=2*r.maxZError,u=Number.MAX_VALUE,g;t=t||(r.mask?r.mask.bitset:null);var v,U;v=new a(r.width*r.height),f&&t&&(U=new Uint8Array(r.width*r.height));for(var y=new Float32Array(l*s),V,w,S=0;S<=m;S++){var p=S!==m?s:r.height%m;if(p!==0)for(var d=0;d<=c;d++){var x=d!==c?l:r.width%c;if(x!==0){var k=S*r.width*s+d*l,D=r.width-x,I=r.pixels.blocks[o],E,F,L;I.encoding<2?(I.encoding===0?E=I.rawData:(e(I.stuffedData,I.bitsPerPixel,I.numValidPixels,I.offset,h,y,r.pixels.maxValue),E=y),F=0):I.encoding===2?L=0:L=I.offset;var X;if(t)for(w=0;w<p;w++){for(k&7&&(X=t[k>>3],X<<=k&7),V=0;V<x;V++)k&7||(X=t[k>>3]),X&128?(U&&(U[k]=1),g=I.encoding<2?E[F++]:L,u=u>g?g:u,v[k++]=g):(U&&(U[k]=0),v[k++]=i),X<<=1;k+=D}else if(I.encoding<2)for(w=0;w<p;w++){for(V=0;V<x;V++)g=E[F++],u=u>g?g:u,v[k++]=g;k+=D}else for(u=u>L?L:u,w=0;w<p;w++){for(V=0;V<x;V++)v[k++]=L;k+=D}if(I.encoding===1&&F!==I.numValidPixels)throw"Block and Mask do not match";o++}}}return{resultPixels:v,resultMask:U,minValue:u}},B=function(r){return{fileIdentifierString:r.fileIdentifierString,fileVersion:r.fileVersion,imageType:r.imageType,height:r.height,width:r.width,maxZError:r.maxZError,eofOffset:r.eofOffset,mask:r.mask?{numBlocksX:r.mask.numBlocksX,numBlocksY:r.mask.numBlocksY,numBytes:r.mask.numBytes,maxValue:r.mask.maxValue}:null,pixels:{numBlocksX:r.pixels.numBlocksX,numBlocksY:r.pixels.numBlocksY,numBytes:r.pixels.numBytes,maxValue:r.pixels.maxValue,noDataValue:r.noDataValue}}},W=function(r){for(var a=r.pixels.numBlocksX*r.pixels.numBlocksY,t={},i=0;i<a;i++){var f=r.pixels.blocks[i];f.encoding===0?t.float32=!0:f.encoding===1?t[f.bitsPerPixel]=!0:t[0]=!0}return Object.keys(t)},n=function(r,a,t){var i={},f=new Uint8Array(r,a,10);if(i.fileIdentifierString=String.fromCharCode.apply(null,f),i.fileIdentifierString.trim()!=="CntZImage")throw"Unexpected file identifier string: "+i.fileIdentifierString;a+=10;var o=new DataView(r,a,24);if(i.fileVersion=o.getInt32(0,!0),i.imageType=o.getInt32(4,!0),i.height=o.getUint32(8,!0),i.width=o.getUint32(12,!0),i.maxZError=o.getFloat64(16,!0),a+=24,!t)if(o=new DataView(r,a,16),i.mask={},i.mask.numBlocksY=o.getUint32(0,!0),i.mask.numBlocksX=o.getUint32(4,!0),i.mask.numBytes=o.getUint32(8,!0),i.mask.maxValue=o.getFloat32(12,!0),a+=16,i.mask.numBytes>0){var c=new Uint8Array(Math.ceil(i.width*i.height/8));o=new DataView(r,a,i.mask.numBytes);var m=o.getInt16(0,!0),l=2,s=0;do{if(m>0)for(;m--;)c[s++]=o.getUint8(l++);else{var h=o.getUint8(l++);for(m=-m;m--;)c[s++]=h}m=o.getInt16(l,!0),l+=2}while(l<i.mask.numBytes);if(m!==-32768||s<c.length)throw"Unexpected end of mask RLE encoding";i.mask.bitset=c,a+=i.mask.numBytes}else i.mask.numBytes|i.mask.numBlocksY|i.mask.maxValue||(i.mask.bitset=new Uint8Array(Math.ceil(i.width*i.height/8)));o=new DataView(r,a,16),i.pixels={},i.pixels.numBlocksY=o.getUint32(0,!0),i.pixels.numBlocksX=o.getUint32(4,!0),i.pixels.numBytes=o.getUint32(8,!0),i.pixels.maxValue=o.getFloat32(12,!0),a+=16;var u=i.pixels.numBlocksX,g=i.pixels.numBlocksY,v=u+(i.width%u>0?1:0),U=g+(i.height%g>0?1:0);i.pixels.blocks=new Array(v*U);for(var y=0,V=0;V<U;V++)for(var w=0;w<v;w++){var S=0,p=r.byteLength-a;o=new DataView(r,a,Math.min(10,p));var d={};i.pixels.blocks[y++]=d;var x=o.getUint8(0);if(S++,d.encoding=x&63,d.encoding>3)throw"Invalid block encoding ("+d.encoding+")";if(d.encoding===2){a++;continue}if(x!==0&&x!==2){if(x>>=6,d.offsetType=x,x===2)d.offset=o.getInt8(1),S++;else if(x===1)d.offset=o.getInt16(1,!0),S+=2;else if(x===0)d.offset=o.getFloat32(1,!0),S+=4;else throw"Invalid block offset type";if(d.encoding===1)if(x=o.getUint8(S),S++,d.bitsPerPixel=x&63,x>>=6,d.numValidPixelsType=x,x===2)d.numValidPixels=o.getUint8(S),S++;else if(x===1)d.numValidPixels=o.getUint16(S,!0),S+=2;else if(x===0)d.numValidPixels=o.getUint32(S,!0),S+=4;else throw"Invalid valid pixel count type"}if(a+=S,d.encoding!==3){var k,D;if(d.encoding===0){var I=(i.pixels.numBytes-1)/4;if(I!==Math.floor(I))throw"uncompressed block has invalid length";k=new ArrayBuffer(I*4),D=new Uint8Array(k),D.set(new Uint8Array(r,a,I*4));var E=new Float32Array(k);d.rawData=E,a+=I*4}else if(d.encoding===1){var F=Math.ceil(d.numValidPixels*d.bitsPerPixel/8),L=Math.ceil(F/4);k=new ArrayBuffer(L*4),D=new Uint8Array(k),D.set(new Uint8Array(r,a,F)),d.stuffedData=new Uint32Array(k),a+=F}}}return i.eofOffset=a,i},e=function(r,a,t,i,f,o,c){var m=(1<<a)-1,l=0,s,h=0,u,g,v=Math.ceil((c-i)/f),U=r.length*4-Math.ceil(a*t/8);for(r[r.length-1]<<=8*U,s=0;s<t;s++){if(h===0&&(g=r[l++],h=32),h>=a)u=g>>>h-a&m,h-=a;else{var y=a-h;u=(g&m)<<y&m,g=r[l++],h=32-y,u+=g>>>h}o[s]=u<v?i+u*f:c}return o};return A}(),J=function(){"use strict";var A={unstuff:function(n,e,r,a,t,i,f,o){var c=(1<<r)-1,m=0,l,s=0,h,u,g,v,U=n.length*4-Math.ceil(r*a/8);if(n[n.length-1]<<=8*U,t)for(l=0;l<a;l++)s===0&&(u=n[m++],s=32),s>=r?(h=u>>>s-r&c,s-=r):(g=r-s,h=(u&c)<<g&c,u=n[m++],s=32-g,h+=u>>>s),e[l]=t[h];else for(v=Math.ceil((o-i)/f),l=0;l<a;l++)s===0&&(u=n[m++],s=32),s>=r?(h=u>>>s-r&c,s-=r):(g=r-s,h=(u&c)<<g&c,u=n[m++],s=32-g,h+=u>>>s),e[l]=h<v?i+h*f:o},unstuffLUT:function(n,e,r,a,t,i){var f=(1<<e)-1,o=0,c=0,m=0,l=0,s=0,h,u=[],g=n.length*4-Math.ceil(e*r/8);n[n.length-1]<<=8*g;var v=Math.ceil((i-a)/t);for(c=0;c<r;c++)l===0&&(h=n[o++],l=32),l>=e?(s=h>>>l-e&f,l-=e):(m=e-l,s=(h&f)<<m&f,h=n[o++],l=32-m,s+=h>>>l),u[c]=s<v?a+s*t:i;return u.unshift(a),u},unstuff2:function(n,e,r,a,t,i,f,o){var c=(1<<r)-1,m=0,l,s=0,h=0,u,g,v;if(t)for(l=0;l<a;l++)s===0&&(g=n[m++],s=32,h=0),s>=r?(u=g>>>h&c,s-=r,h+=r):(v=r-s,u=g>>>h&c,g=n[m++],s=32-v,u|=(g&(1<<v)-1)<<r-v,h=v),e[l]=t[u];else{var U=Math.ceil((o-i)/f);for(l=0;l<a;l++)s===0&&(g=n[m++],s=32,h=0),s>=r?(u=g>>>h&c,s-=r,h+=r):(v=r-s,u=g>>>h&c,g=n[m++],s=32-v,u|=(g&(1<<v)-1)<<r-v,h=v),e[l]=u<U?i+u*f:o}return e},unstuffLUT2:function(n,e,r,a,t,i){var f=(1<<e)-1,o=0,c=0,m=0,l=0,s=0,h=0,u,g=[],v=Math.ceil((i-a)/t);for(c=0;c<r;c++)l===0&&(u=n[o++],l=32,h=0),l>=e?(s=u>>>h&f,l-=e,h+=e):(m=e-l,s=u>>>h&f,u=n[o++],l=32-m,s|=(u&(1<<m)-1)<<e-m,h=m),g[c]=s<v?a+s*t:i;return g.unshift(a),g},originalUnstuff:function(n,e,r,a){var t=(1<<r)-1,i=0,f,o=0,c,m,l,s=n.length*4-Math.ceil(r*a/8);for(n[n.length-1]<<=8*s,f=0;f<a;f++)o===0&&(m=n[i++],o=32),o>=r?(c=m>>>o-r&t,o-=r):(l=r-o,c=(m&t)<<l&t,m=n[i++],o=32-l,c+=m>>>o),e[f]=c;return e},originalUnstuff2:function(n,e,r,a){var t=(1<<r)-1,i=0,f,o=0,c=0,m,l,s;for(f=0;f<a;f++)o===0&&(l=n[i++],o=32,c=0),o>=r?(m=l>>>c&t,o-=r,c+=r):(s=r-o,m=l>>>c&t,l=n[i++],o=32-s,m|=(l&(1<<s)-1)<<r-s,c=s),e[f]=m;return e}},T={HUFFMAN_LUT_BITS_MAX:12,computeChecksumFletcher32:function(n){for(var e=65535,r=65535,a=n.length,t=Math.floor(a/2),i=0;t;){var f=t>=359?359:t;t-=f;do e+=n[i++]<<8,r+=e+=n[i++];while(--f);e=(e&65535)+(e>>>16),r=(r&65535)+(r>>>16)}return a&1&&(r+=e+=n[i]<<8),e=(e&65535)+(e>>>16),r=(r&65535)+(r>>>16),(r<<16|e)>>>0},readHeaderInfo:function(n,e){var r=e.ptr,a=new Uint8Array(n,r,6),t={};if(t.fileIdentifierString=String.fromCharCode.apply(null,a),t.fileIdentifierString.lastIndexOf("Lerc2",0)!==0)throw"Unexpected file identifier string (expect Lerc2 ): "+t.fileIdentifierString;r+=6;var i=new DataView(n,r,8),f=i.getInt32(0,!0);t.fileVersion=f,r+=4,f>=3&&(t.checksum=i.getUint32(4,!0),r+=4),i=new DataView(n,r,12),t.height=i.getUint32(0,!0),t.width=i.getUint32(4,!0),r+=8,f>=4?(t.numDims=i.getUint32(8,!0),r+=4):t.numDims=1,i=new DataView(n,r,40),t.numValidPixel=i.getUint32(0,!0),t.microBlockSize=i.getInt32(4,!0),t.blobSize=i.getInt32(8,!0),t.imageType=i.getInt32(12,!0),t.maxZError=i.getFloat64(16,!0),t.zMin=i.getFloat64(24,!0),t.zMax=i.getFloat64(32,!0),r+=40,e.headerInfo=t,e.ptr=r;var o,c;if(f>=3&&(c=f>=4?52:48,o=this.computeChecksumFletcher32(new Uint8Array(n,r-c,t.blobSize-14)),o!==t.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(n,e){var r=e.headerInfo,a=this.getDataTypeArray(r.imageType),t=r.numDims*this.getDataTypeSize(r.imageType),i=this.readSubArray(n,e.ptr,a,t),f=this.readSubArray(n,e.ptr+t,a,t);e.ptr+=2*t;var o,c=!0;for(o=0;o<r.numDims;o++)if(i[o]!==f[o]){c=!1;break}return r.minValues=i,r.maxValues=f,c},readSubArray:function(n,e,r,a){var t;if(r===Uint8Array)t=new Uint8Array(n,e,a);else{var i=new ArrayBuffer(a),f=new Uint8Array(i);f.set(new Uint8Array(n,e,a)),t=new r(i)}return t},readMask:function(n,e){var r=e.ptr,a=e.headerInfo,t=a.width*a.height,i=a.numValidPixel,f=new DataView(n,r,4),o={};if(o.numBytes=f.getUint32(0,!0),r+=4,(i===0||t===i)&&o.numBytes!==0)throw"invalid mask";var c,m;if(i===0)c=new Uint8Array(Math.ceil(t/8)),o.bitset=c,m=new Uint8Array(t),e.pixels.resultMask=m,r+=o.numBytes;else if(o.numBytes>0){c=new Uint8Array(Math.ceil(t/8)),f=new DataView(n,r,o.numBytes);var l=f.getInt16(0,!0),s=2,h=0,u=0;do{if(l>0)for(;l--;)c[h++]=f.getUint8(s++);else for(u=f.getUint8(s++),l=-l;l--;)c[h++]=u;l=f.getInt16(s,!0),s+=2}while(s<o.numBytes);if(l!==-32768||h<c.length)throw"Unexpected end of mask RLE encoding";m=new Uint8Array(t);var g=0,v=0;for(v=0;v<t;v++)v&7?(g=c[v>>3],g<<=v&7):g=c[v>>3],g&128&&(m[v]=1);e.pixels.resultMask=m,o.bitset=c,r+=o.numBytes}return e.ptr=r,e.mask=o,!0},readDataOneSweep:function(n,e,r){var a=e.ptr,t=e.headerInfo,i=t.numDims,f=t.width*t.height,o=t.imageType,c=t.numValidPixel*T.getDataTypeSize(o)*i,m,l=e.pixels.resultMask;if(r===Uint8Array)m=new Uint8Array(n,a,c);else{var s=new ArrayBuffer(c),h=new Uint8Array(s);h.set(new Uint8Array(n,a,c)),m=new r(s)}if(m.length===f*i)e.pixels.resultPixels=m;else{e.pixels.resultPixels=new r(f*i);var u=0,g=0,v=0,U=0;if(i>1)for(v=0;v<i;v++)for(U=v*f,g=0;g<f;g++)l[g]&&(e.pixels.resultPixels[U+g]=m[u++]);else for(g=0;g<f;g++)l[g]&&(e.pixels.resultPixels[g]=m[u++])}return a+=c,e.ptr=a,!0},readHuffmanTree:function(n,e){var r=this.HUFFMAN_LUT_BITS_MAX,a=new DataView(n,e.ptr,16);e.ptr+=16;var t=a.getInt32(0,!0);if(t<2)throw"unsupported Huffman version";var i=a.getInt32(4,!0),f=a.getInt32(8,!0),o=a.getInt32(12,!0);if(f>=o)return!1;var c=new Uint32Array(o-f);T.decodeBits(n,e,c);var m=[],l,s,h,u;for(l=f;l<o;l++)s=l-(l<i?0:i),m[s]={first:c[l-f],second:null};var g=n.byteLength-e.ptr,v=Math.ceil(g/4),U=new ArrayBuffer(v*4),y=new Uint8Array(U);y.set(new Uint8Array(n,e.ptr,g));var V=new Uint32Array(U),w=0,S,p=0;for(S=V[0],l=f;l<o;l++)s=l-(l<i?0:i),u=m[s].first,u>0&&(m[s].second=S<<w>>>32-u,32-w>=u?(w+=u,w===32&&(w=0,p++,S=V[p])):(w+=u-32,p++,S=V[p],m[s].second|=S>>>32-w));var d=0,x=0,k=new B;for(l=0;l<m.length;l++)m[l]!==void 0&&(d=Math.max(d,m[l].first));d>=r?x=r:x=d,d>=30&&console.log("WARning, large NUM LUT BITS IS "+d);var D=[],I,E,F,L,X,b;for(l=f;l<o;l++)if(s=l-(l<i?0:i),u=m[s].first,u>0)if(I=[u,s],u<=x)for(E=m[s].second<<x-u,F=1<<x-u,h=0;h<F;h++)D[E|h]=I;else for(E=m[s].second,b=k,L=u-1;L>=0;L--)X=E>>>L&1,X?(b.right||(b.right=new B),b=b.right):(b.left||(b.left=new B),b=b.left),L===0&&!b.val&&(b.val=I[1]);return{decodeLut:D,numBitsLUTQick:x,numBitsLUT:d,tree:k,stuffedData:V,srcPtr:p,bitPos:w}},readHuffman:function(n,e,r){var a=e.headerInfo,t=a.numDims,i=e.headerInfo.height,f=e.headerInfo.width,o=f*i,c=this.readHuffmanTree(n,e),m=c.decodeLut,l=c.tree,s=c.stuffedData,h=c.srcPtr,u=c.bitPos,g=c.numBitsLUTQick,v=c.numBitsLUT,U=e.headerInfo.imageType===0?128:0,y,V,w,S=e.pixels.resultMask,p,d,x,k,D,I,E,F=0;u>0&&(h++,u=0);var L=s[h],X=e.encodeMode===1,b=new r(o*t),O=b,ee;for(ee=0;ee<a.numDims;ee++){if(t>1&&(O=new r(b.buffer,o*ee,o),F=0),e.headerInfo.numValidPixel===f*i)for(I=0,k=0;k<i;k++)for(D=0;D<f;D++,I++){if(V=0,p=L<<u>>>32-g,d=p,32-u<g&&(p|=s[h+1]>>>64-u-g,d=p),m[d])V=m[d][1],u+=m[d][0];else for(p=L<<u>>>32-v,d=p,32-u<v&&(p|=s[h+1]>>>64-u-v,d=p),y=l,E=0;E<v;E++)if(x=p>>>v-E-1&1,y=x?y.right:y.left,!(y.left||y.right)){V=y.val,u=u+E+1;break}u>=32&&(u-=32,h++,L=s[h]),w=V-U,X?(D>0?w+=F:k>0?w+=O[I-f]:w+=F,w&=255,O[I]=w,F=w):O[I]=w}else for(I=0,k=0;k<i;k++)for(D=0;D<f;D++,I++)if(S[I]){if(V=0,p=L<<u>>>32-g,d=p,32-u<g&&(p|=s[h+1]>>>64-u-g,d=p),m[d])V=m[d][1],u+=m[d][0];else for(p=L<<u>>>32-v,d=p,32-u<v&&(p|=s[h+1]>>>64-u-v,d=p),y=l,E=0;E<v;E++)if(x=p>>>v-E-1&1,y=x?y.right:y.left,!(y.left||y.right)){V=y.val,u=u+E+1;break}u>=32&&(u-=32,h++,L=s[h]),w=V-U,X?(D>0&&S[I-1]?w+=F:k>0&&S[I-f]?w+=O[I-f]:w+=F,w&=255,O[I]=w,F=w):O[I]=w}e.ptr=e.ptr+(h+1)*4+(u>0?4:0)}e.pixels.resultPixels=b},decodeBits:function(n,e,r,a,t){{var i=e.headerInfo,f=i.fileVersion,o=0,c=new DataView(n,e.ptr,5),m=c.getUint8(0);o++;var l=m>>6,s=l===0?4:3-l,h=(m&32)>0,u=m&31,g=0;if(s===1)g=c.getUint8(o),o++;else if(s===2)g=c.getUint16(o,!0),o+=2;else if(s===4)g=c.getUint32(o,!0),o+=4;else throw"Invalid valid pixel count type";var v=2*i.maxZError,U,y,V,w,S,p,d,x,k,D,I=i.numDims>1?i.maxValues[t]:i.zMax;if(h){for(e.counter.lut++,x=c.getUint8(o),k=u,o++,w=Math.ceil((x-1)*u/8),S=Math.ceil(w/4),y=new ArrayBuffer(S*4),V=new Uint8Array(y),e.ptr+=o,V.set(new Uint8Array(n,e.ptr,w)),d=new Uint32Array(y),e.ptr+=w,D=0;x-1>>>D;)D++;w=Math.ceil(g*D/8),S=Math.ceil(w/4),y=new ArrayBuffer(S*4),V=new Uint8Array(y),V.set(new Uint8Array(n,e.ptr,w)),U=new Uint32Array(y),e.ptr+=w,f>=3?p=A.unstuffLUT2(d,u,x-1,a,v,I):p=A.unstuffLUT(d,u,x-1,a,v,I),f>=3?A.unstuff2(U,r,D,g,p):A.unstuff(U,r,D,g,p)}else e.counter.bitstuffer++,D=u,e.ptr+=o,D>0&&(w=Math.ceil(g*D/8),S=Math.ceil(w/4),y=new ArrayBuffer(S*4),V=new Uint8Array(y),V.set(new Uint8Array(n,e.ptr,w)),U=new Uint32Array(y),e.ptr+=w,f>=3?a==null?A.originalUnstuff2(U,r,D,g):A.unstuff2(U,r,D,g,!1,a,v,I):a==null?A.originalUnstuff(U,r,D,g):A.unstuff(U,r,D,g,!1,a,v,I))}},readTiles:function(n,e,r){var a=e.headerInfo,t=a.width,i=a.height,f=a.microBlockSize,o=a.imageType,c=T.getDataTypeSize(o),m=Math.ceil(t/f),l=Math.ceil(i/f);e.pixels.numBlocksY=l,e.pixels.numBlocksX=m,e.pixels.ptr=0;var s=0,h=0,u=0,g=0,v=0,U=0,y=0,V=0,w=0,S=0,p=0,d=0,x=0,k=0,D=0,I=0,E,F,L,X,b,O,ee=new r(f*f),Le=i%f||f,ve=t%f||f,de,le,Te=a.numDims,K,G=e.pixels.resultMask,re=e.pixels.resultPixels;for(u=0;u<l;u++)for(v=u!==l-1?f:Le,g=0;g<m;g++)for(U=g!==m-1?f:ve,p=u*t*f+g*f,d=t-U,K=0;K<Te;K++){if(Te>1&&(re=new r(e.pixels.resultPixels.buffer,t*i*K*c,t*i)),y=n.byteLength-e.ptr,E=new DataView(n,e.ptr,Math.min(10,y)),F={},I=0,V=E.getUint8(0),I++,w=V>>6&255,S=V>>2&15,S!==(g*f>>3&15))throw"integrity issue";if(O=V&3,O>3)throw e.ptr+=I,"Invalid block encoding ("+O+")";if(O===2){e.counter.constant++,e.ptr+=I;continue}else if(O===0){if(e.counter.uncompressed++,e.ptr+=I,x=v*U*c,k=n.byteLength-e.ptr,x=x<k?x:k,L=new ArrayBuffer(x%c===0?x:x+c-x%c),X=new Uint8Array(L),X.set(new Uint8Array(n,e.ptr,x)),b=new r(L),D=0,G)for(s=0;s<v;s++){for(h=0;h<U;h++)G[p]&&(re[p]=b[D++]),p++;p+=d}else for(s=0;s<v;s++){for(h=0;h<U;h++)re[p++]=b[D++];p+=d}e.ptr+=D*c}else if(de=T.getDataTypeUsed(o,w),le=T.getOnePixel(F,I,de,E),I+=T.getDataTypeSize(de),O===3)if(e.ptr+=I,e.counter.constantoffset++,G)for(s=0;s<v;s++){for(h=0;h<U;h++)G[p]&&(re[p]=le),p++;p+=d}else for(s=0;s<v;s++){for(h=0;h<U;h++)re[p++]=le;p+=d}else if(e.ptr+=I,T.decodeBits(n,e,ee,le,K),I=0,G)for(s=0;s<v;s++){for(h=0;h<U;h++)G[p]&&(re[p]=ee[I++]),p++;p+=d}else for(s=0;s<v;s++){for(h=0;h<U;h++)re[p++]=ee[I++];p+=d}}},formatFileInfo:function(n){return{fileIdentifierString:n.headerInfo.fileIdentifierString,fileVersion:n.headerInfo.fileVersion,imageType:n.headerInfo.imageType,height:n.headerInfo.height,width:n.headerInfo.width,numValidPixel:n.headerInfo.numValidPixel,microBlockSize:n.headerInfo.microBlockSize,blobSize:n.headerInfo.blobSize,maxZError:n.headerInfo.maxZError,pixelType:T.getPixelType(n.headerInfo.imageType),eofOffset:n.eofOffset,mask:n.mask?{numBytes:n.mask.numBytes}:null,pixels:{numBlocksX:n.pixels.numBlocksX,numBlocksY:n.pixels.numBlocksY,maxValue:n.headerInfo.zMax,minValue:n.headerInfo.zMin,noDataValue:n.noDataValue}}},constructConstantSurface:function(n){var e=n.headerInfo.zMax,r=n.headerInfo.numDims,a=n.headerInfo.height*n.headerInfo.width,t=a*r,i=0,f=0,o=0,c=n.pixels.resultMask;if(c)if(r>1)for(i=0;i<r;i++)for(o=i*a,f=0;f<a;f++)c[f]&&(n.pixels.resultPixels[o+f]=e);else for(f=0;f<a;f++)c[f]&&(n.pixels.resultPixels[f]=e);else if(n.pixels.resultPixels.fill)n.pixels.resultPixels.fill(e);else for(f=0;f<t;f++)n.pixels.resultPixels[f]=e},getDataTypeArray:function(n){var e;switch(n){case 0:e=Int8Array;break;case 1:e=Uint8Array;break;case 2:e=Int16Array;break;case 3:e=Uint16Array;break;case 4:e=Int32Array;break;case 5:e=Uint32Array;break;case 6:e=Float32Array;break;case 7:e=Float64Array;break;default:e=Float32Array}return e},getPixelType:function(n){var e;switch(n){case 0:e="S8";break;case 1:e="U8";break;case 2:e="S16";break;case 3:e="U16";break;case 4:e="S32";break;case 5:e="U32";break;case 6:e="F32";break;case 7:e="F64";break;default:e="F32"}return e},isValidPixelValue:function(n,e){if(e==null)return!1;var r;switch(n){case 0:r=e>=-128&&e<=127;break;case 1:r=e>=0&&e<=255;break;case 2:r=e>=-32768&&e<=32767;break;case 3:r=e>=0&&e<=65536;break;case 4:r=e>=-2147483648&&e<=2147483647;break;case 5:r=e>=0&&e<=4294967296;break;case 6:r=e>=-34027999387901484e22&&e<=34027999387901484e22;break;case 7:r=e>=5e-324&&e<=17976931348623157e292;break;default:r=!1}return r},getDataTypeSize:function(n){var e=0;switch(n){case 0:case 1:e=1;break;case 2:case 3:e=2;break;case 4:case 5:case 6:e=4;break;case 7:e=8;break;default:e=n}return e},getDataTypeUsed:function(n,e){var r=n;switch(n){case 2:case 4:r=n-e;break;case 3:case 5:r=n-2*e;break;case 6:e===0?r=n:e===1?r=2:r=1;break;case 7:e===0?r=n:r=n-2*e+1;break;default:r=n;break}return r},getOnePixel:function(n,e,r,a){var t=0;switch(r){case 0:t=a.getInt8(e);break;case 1:t=a.getUint8(e);break;case 2:t=a.getInt16(e,!0);break;case 3:t=a.getUint16(e,!0);break;case 4:t=a.getInt32(e,!0);break;case 5:t=a.getUInt32(e,!0);break;case 6:t=a.getFloat32(e,!0);break;case 7:t=a.getFloat64(e,!0);break;default:throw"the decoder does not understand this pixel type"}return t}},B=function(n,e,r){this.val=n,this.left=e,this.right=r},W={decode:function(n,e){e=e||{};var r=e.noDataValue,a=0,t={};if(t.ptr=e.inputOffset||0,t.pixels={},!!T.readHeaderInfo(n,t)){var i=t.headerInfo,f=i.fileVersion,o=T.getDataTypeArray(i.imageType);T.readMask(n,t),i.numValidPixel!==i.width*i.height&&!t.pixels.resultMask&&(t.pixels.resultMask=e.maskData);var c=i.width*i.height;if(t.pixels.resultPixels=new o(c*i.numDims),t.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0},i.numValidPixel!==0)if(i.zMax===i.zMin)T.constructConstantSurface(t);else if(f>=4&&T.checkMinMaxRanges(n,t))T.constructConstantSurface(t);else{var m=new DataView(n,t.ptr,2),l=m.getUint8(0);if(t.ptr++,l)T.readDataOneSweep(n,t,o);else if(f>1&&i.imageType<=1&&Math.abs(i.maxZError-.5)<1e-5){var s=m.getUint8(1);if(t.ptr++,t.encodeMode=s,s>2||f<4&&s>1)throw"Invalid Huffman flag "+s;s?T.readHuffman(n,t,o):T.readTiles(n,t,o)}else T.readTiles(n,t,o)}t.eofOffset=t.ptr;var h;e.inputOffset?(h=t.headerInfo.blobSize+e.inputOffset-t.ptr,Math.abs(h)>=1&&(t.eofOffset=e.inputOffset+t.headerInfo.blobSize)):(h=t.headerInfo.blobSize-t.ptr,Math.abs(h)>=1&&(t.eofOffset=t.headerInfo.blobSize));var u={width:i.width,height:i.height,pixelData:t.pixels.resultPixels,minValue:i.zMin,maxValue:i.zMax,validPixelCount:i.numValidPixel,dimCount:i.numDims,dimStats:{minValues:i.minValues,maxValues:i.maxValues},maskData:t.pixels.resultMask};if(t.pixels.resultMask&&T.isValidPixelValue(i.imageType,r)){var g=t.pixels.resultMask;for(a=0;a<c;a++)g[a]||(u.pixelData[a]=r);u.noDataValue=r}return t.noDataValue=r,e.returnFileInfo&&(u.fileInfo=T.formatFileInfo(t)),u}},getBandCount:function(n){var e=0,r=0,a={};for(a.ptr=0,a.pixels={};r<n.byteLength-58;)T.readHeaderInfo(n,a),r+=a.headerInfo.blobSize,e++,a.ptr=r;return e}};return W}(),C=function(){var A=new ArrayBuffer(4),T=new Uint8Array(A),B=new Uint32Array(A);return B[0]=1,T[0]===1}(),j={decode:function(A,T){if(!C)throw"Big endian system is not supported.";T=T||{};var B=T.inputOffset||0,W=new Uint8Array(A,B,10),n=String.fromCharCode.apply(null,W),e,r;if(n.trim()==="CntZImage")e=M,r=1;else if(n.substring(0,5)==="Lerc2")e=J,r=2;else throw"Unexpected file identifier string: "+n;for(var a=0,t=A.byteLength-10,i,f=[],o,c,m={width:0,height:0,pixels:[],pixelType:T.pixelType,mask:null,statistics:[]};B<t;){var l=e.decode(A,{inputOffset:B,encodedMaskData:i,maskData:c,returnMask:a===0,returnEncodedMask:a===0,returnFileInfo:!0,pixelType:T.pixelType||null,noDataValue:T.noDataValue||null});B=l.fileInfo.eofOffset,a===0&&(i=l.encodedMaskData,c=l.maskData,m.width=l.width,m.height=l.height,m.dimCount=l.dimCount||1,m.pixelType=l.pixelType||l.fileInfo.pixelType,m.mask=l.maskData),r>1&&l.fileInfo.mask&&l.fileInfo.mask.numBytes>0&&f.push(l.maskData),a++,m.pixels.push(l.pixelData),m.statistics.push({minValue:l.minValue,maxValue:l.maxValue,noDataValue:l.noDataValue,dimStats:l.dimStats})}var s,h,u;if(r>1&&f.length>1){for(u=m.width*m.height,m.bandMasks=f,c=new Uint8Array(u),c.set(f[0]),s=1;s<f.length;s++)for(o=f[s],h=0;h<u;h++)c[h]=c[h]&o[h];m.maskData=c}return m}};typeof define=="function"&&define.amd?define([],function(){return j}):typeof Ee<"u"&&Ee.exports?Ee.exports=j:this.Lerc=j})()});var Sr={NONE:0,LERC:1},gr=Object.freeze(Sr);var te={};function Dr(M,J){let C=0,j,A,T,B,W=J.length;for(T=J[0],j=1;j<=W;j++)B=J[j%W],M[0]>Math.min(T[0],B[0])&&M[0]<=Math.max(T[0],B[0])&&M[1]<=Math.max(T[1],B[1])&&T[0]!==B[0]&&(A=(M[0]-T[0])*(B[1]-T[1])/(B[0]-T[0])+T[1],(T[1]===B[1]||M[1]<=A)&&C++),T=B;return C%2!==0}te.DEFAULT_STRUCTURE=Object.freeze({heightScale:1,heightOffset:0,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1});var qe=new _,Ar=new De,Er=new _,Lr=new _;te.computeVertices=function(M){if(!ie(M)||!ie(M.heightmap))throw new xe("options.heightmap is required.");if(!ie(M.width)||!ie(M.height))throw new xe("options.width and options.height are required.");if(!ie(M.nativeRectangle))throw new xe("options.nativeRectangle is required.");if(!ie(M.skirtHeight))throw new xe("options.skirtHeight is required.");let J=M.flattenPolygonHeight||[1],C=M.flattenPolygon||[],j=M.VTN,A=Math.cos,T=Math.sin,B=Math.sqrt,W=Math.atan,n=Math.exp,e=Ue.PI_OVER_TWO,r=Ue.toRadians,a=M.heightmap,t=M.width,i=M.height,f=M.skirtHeight,o=f>0,c=q(M.isGeographic,!0),m=q(M.ellipsoid,Se.default),l=1/m.maximumRadius,s=oe.clone(M.nativeRectangle),h=oe.clone(M.rectangle),u,g,v,U;ie(h)?(u=h.west,g=h.south,v=h.east,U=h.north):c?(u=r(s.west),g=r(s.south),v=r(s.east),U=r(s.north)):(u=s.west*l,g=e-2*W(n(-s.south*l)),v=s.east*l,U=e-2*W(n(-s.north*l)));let y=M.relativeToCenter,V=ie(y);y=V?y:_.ZERO;let w=q(M.includeWebMercatorT,!1),S=q(M.exaggeration,1),p=q(M.exaggerationRelativeHeight,0),x=S!==1,k=q(M.structure,te.DEFAULT_STRUCTURE),D=q(k.heightScale,te.DEFAULT_STRUCTURE.heightScale),I=q(k.heightOffset,te.DEFAULT_STRUCTURE.heightOffset),E=q(k.elementsPerHeight,te.DEFAULT_STRUCTURE.elementsPerHeight),F=q(k.stride,te.DEFAULT_STRUCTURE.stride),L=q(k.elementMultiplier,te.DEFAULT_STRUCTURE.elementMultiplier),X=q(k.isBigEndian,te.DEFAULT_STRUCTURE.isBigEndian),b=oe.computeWidth(s),O=oe.computeHeight(s),ee=b/(t-1),Le=O/(i-1);c||(b*=l,O*=l);let ve=m.radiiSquared,de=ve.x,le=ve.y,Te=ve.z,K=65536,G=-65536,re=sr.eastNorthUpToFixedFrame(y,m),pr=De.inverseTransformation(re,Ar),Be,We;w&&(Be=Ae.geodeticLatitudeToMercatorAngle(g),We=1/(Ae.geodeticLatitudeToMercatorAngle(U)-Be));let ue=Er;ue.x=Number.POSITIVE_INFINITY,ue.y=Number.POSITIVE_INFINITY,ue.z=Number.POSITIVE_INFINITY;let ce=Lr;ce.x=Number.NEGATIVE_INFINITY,ce.y=Number.NEGATIVE_INFINITY,ce.z=Number.NEGATIVE_INFINITY;let Fe=Number.POSITIVE_INFINITY,we=t*i,Ir=f>0?t*2+i*2:0,ne=we+Ir,ae=new Array(ne),Ge=new Array(ne),Qe=new Array(ne),Je=w?new Array(ne):[],Ke=x?new Array(ne):[],be=new Array(ne),Ne=0,Ce=i,Oe=0,Re=t;o&&(--Ne,++Ce,--Oe,++Re);let ke=1e-5;for(let N=Ne;N<Ce;++N){let R=N;R<0&&(R=0),R>=i&&(R=i-1);let z=s.north-Le*R;c?z=r(z):z=e-2*W(n(-z*l));let me=(z-g)/(U-g);me=Ue.clamp(me,0,1);let Z=N===Ne,se=N===Ce-1;f>0&&(Z?z+=ke*O:se&&(z-=ke*O));let pe=A(z),he=T(z),ye=Te*he,Me;w&&(Me=(Ae.geodeticLatitudeToMercatorAngle(z)-Be)*We);for(let fe=Oe;fe<Re;++fe){let $=fe;$<0&&($=0),$>=t&&($=t-1);let Ie=R*(t*F)+$*F,H;if(E===1)H=a[Ie];else{H=0;let Y;if(X)for(Y=0;Y<E;++Y)H=H*L+a[Ie+Y];else for(Y=E-1;Y>=0;--Y)H=H*L+a[Ie+Y]}H=H*D+I,G=Math.max(G,H),K=Math.min(K,H);let Q=s.west+ee*$;c?Q=r(Q):Q=Q*l;let Xe=(Q-u)/(v-u);Xe=Ue.clamp(Xe,0,1);let P=R*t+$;if(be[P]=0,f>0){let Y=fe===Oe,Ve=fe===Re-1,nr=Z||se||Y||Ve;if((Z||se)&&(Y||Ve))continue;nr&&(H-=f,Y?(P=we+(i-R-1),Q-=ke*b):se?P=we+i+(t-$-1):Ve?(P=we+i+t+R,Q+=ke*b):Z&&(P=we+i+t+i+$),be[P]=1)}let _e=pe*A(Q),ze=pe*T(Q),ir=de*_e,tr=le*ze,Ze=1/B(ir*_e+tr*ze+ye*he),Tr=ir*Ze,kr=tr*Ze,yr=ye*Ze;for(let Y=0;Y<J.length;Y++)J[Y]!==1&&Dr([Q,z],C[Y])&&(H=J[Y]);let ge=new _;ge.x=Tr+_e*H,ge.y=kr+ze*H,ge.z=yr+he*H,De.multiplyByPoint(pr,ge,qe),_.minimumByComponent(qe,ue,ue),_.maximumByComponent(qe,ce,ce),Fe=Math.min(Fe,H),ae[P]=ge,Qe[P]=new ar(Xe,me),Ge[P]=H,w&&(Je[P]=Me),x&&(Ke[P]=m.geodeticSurfaceNormal(ge))}}let He=new Array(ne);if(f>0){let N=0;for(let R=0;R<i;++R){let z=-1,me=1;R<2&&(z=0),R>=i-1&&(me=0);for(let Z=0;Z<t;++Z){let se=-1,pe=1;Z<2&&(se=0),Z>=t-1&&(pe=0),N=R*t+Z;try{let he=ae[(R+z)*t+Z],ye=ae[(R+me)*t+Z],Me=ae[R*t+(Z+se)],fe=ae[R*t+(Z+pe)],$=_.subtract(Me,fe,new _),Ie=_.subtract(he,ye,new _),H=_.cross($,Ie,new _),Q=_.normalize(H,new _);He[N]=or.octEncodeFloat(Q)}catch{He[N]=0}}}}let xr=fr.fromPoints(ae),$e;ie(h)&&($e=cr.fromRectangle(h,K,G,m));let Pe;V&&(Pe=new mr(m).computeHorizonCullingPointPossiblyUnderEllipsoid(y,ae,K));let Ur=new ur(ue,ce,y),Ye=new hr(y,Ur,Fe,G,re,j?f>0:!1,w,x,S,p),er=new Float32Array(ne*Ye.stride),rr=0;for(let N=0;N<ne;++N)rr=Ye.encode(er,rr,ae[N],Qe[N],Ge[N],f>0?He[N]:void 0,Je[N],Ke[N],f>0||void 0,void 0,be[N]);return{vertices:er,maximumHeight:G,minimumHeight:K,encoding:Ye,boundingSphere3D:xr,orientedBoundingBox:$e,occludeePointInScaledSpace:Pe}};var vr=te;var wr=Vr(dr(),1);function Br(M,J){if(M.encoding===gr.LERC){let A;try{A=wr.default.decode(M.heightmap)}catch(B){throw new je(B)}if(A.statistics[0].minValue===Number.MAX_VALUE)throw new je("Invalid tile data");M.heightmap=A.pixels[0],M.width=A.width,M.height=A.height}M.ellipsoid=Se.clone(M.ellipsoid),M.rectangle=oe.clone(M.rectangle);let C=vr.computeVertices(M),j=C.vertices;return J.push(j.buffer),{vertices:j.buffer,numberOfAttributes:C.encoding.stride,minimumHeight:C.minimumHeight,maximumHeight:C.maximumHeight,gridWidth:M.width,gridHeight:M.height,boundingSphere3D:C.boundingSphere3D,orientedBoundingBox:C.orientedBoundingBox,occludeePointInScaledSpace:C.occludeePointInScaledSpace,encoding:C.encoding,westIndicesSouthToNorth:C.westIndicesSouthToNorth,southIndicesEastToWest:C.southIndicesEastToWest,eastIndicesNorthToSouth:C.eastIndicesNorthToSouth,northIndicesWestToEast:C.northIndicesWestToEast}}var fi=lr(Br);export{fi as default};
import{a as mr,b as hr}from"./chunk-FNJ2A2P5.js";import{a as lr}from"./chunk-6MN6BBPN.js";import{a as Ae}from"./chunk-NJVIDNJ6.js";import{a as cr}from"./chunk-W5L3OOEF.js";import{a as or}from"./chunk-EZRSLM27.js";import"./chunk-TBSK33NR.js";import{a as ur}from"./chunk-LSAUAD4X.js";import"./chunk-AIYLFSI3.js";import"./chunk-FBQDLPON.js";import{d as fr}from"./chunk-ZPW6H6BB.js";import{b as De,g as sr,i as oe}from"./chunk-HMXXHGCW.js";import"./chunk-NFDMGE7Q.js";import{b as _,d as ar,e as Se}from"./chunk-VDZXURWO.js";import{a as Ue}from"./chunk-UEFEFMYS.js";import"./chunk-YGIPMXAD.js";import{a as je}from"./chunk-PZ34T7DL.js";import{a as q}from"./chunk-5HWP5DW7.js";import{a as xe}from"./chunk-3K67FZLU.js";import{c as Mr,d as Vr,e as ie}from"./chunk-55TU6MJR.js";var dr=Mr((ei,Ee)=>{/* Copyright 2015-2018 Esri. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 @preserve */(function(){var M=function(){var A={};A.defaultNoDataValue=-34027999387901484e22,A.decode=function(r,a){a=a||{};var t=a.encodedMaskData||a.encodedMaskData===null,i=n(r,a.inputOffset||0,t),f=a.noDataValue!==null?a.noDataValue:A.defaultNoDataValue,o=T(i,a.pixelType||Float32Array,a.encodedMaskData,f,a.returnMask),c={width:i.width,height:i.height,pixelData:o.resultPixels,minValue:o.minValue,maxValue:i.pixels.maxValue,noDataValue:f};return o.resultMask&&(c.maskData=o.resultMask),a.returnEncodedMask&&i.mask&&(c.encodedMaskData=i.mask.bitset?i.mask.bitset:null),a.returnFileInfo&&(c.fileInfo=B(i),a.computeUsedBitDepths&&(c.fileInfo.bitDepths=W(i))),c};var T=function(r,a,t,i,f){var o=0,c=r.pixels.numBlocksX,m=r.pixels.numBlocksY,l=Math.floor(r.width/c),s=Math.floor(r.height/m),h=2*r.maxZError,u=Number.MAX_VALUE,g;t=t||(r.mask?r.mask.bitset:null);var v,U;v=new a(r.width*r.height),f&&t&&(U=new Uint8Array(r.width*r.height));for(var y=new Float32Array(l*s),V,w,S=0;S<=m;S++){var p=S!==m?s:r.height%m;if(p!==0)for(var d=0;d<=c;d++){var x=d!==c?l:r.width%c;if(x!==0){var k=S*r.width*s+d*l,D=r.width-x,I=r.pixels.blocks[o],E,F,L;I.encoding<2?(I.encoding===0?E=I.rawData:(e(I.stuffedData,I.bitsPerPixel,I.numValidPixels,I.offset,h,y,r.pixels.maxValue),E=y),F=0):I.encoding===2?L=0:L=I.offset;var X;if(t)for(w=0;w<p;w++){for(k&7&&(X=t[k>>3],X<<=k&7),V=0;V<x;V++)k&7||(X=t[k>>3]),X&128?(U&&(U[k]=1),g=I.encoding<2?E[F++]:L,u=u>g?g:u,v[k++]=g):(U&&(U[k]=0),v[k++]=i),X<<=1;k+=D}else if(I.encoding<2)for(w=0;w<p;w++){for(V=0;V<x;V++)g=E[F++],u=u>g?g:u,v[k++]=g;k+=D}else for(u=u>L?L:u,w=0;w<p;w++){for(V=0;V<x;V++)v[k++]=L;k+=D}if(I.encoding===1&&F!==I.numValidPixels)throw"Block and Mask do not match";o++}}}return{resultPixels:v,resultMask:U,minValue:u}},B=function(r){return{fileIdentifierString:r.fileIdentifierString,fileVersion:r.fileVersion,imageType:r.imageType,height:r.height,width:r.width,maxZError:r.maxZError,eofOffset:r.eofOffset,mask:r.mask?{numBlocksX:r.mask.numBlocksX,numBlocksY:r.mask.numBlocksY,numBytes:r.mask.numBytes,maxValue:r.mask.maxValue}:null,pixels:{numBlocksX:r.pixels.numBlocksX,numBlocksY:r.pixels.numBlocksY,numBytes:r.pixels.numBytes,maxValue:r.pixels.maxValue,noDataValue:r.noDataValue}}},W=function(r){for(var a=r.pixels.numBlocksX*r.pixels.numBlocksY,t={},i=0;i<a;i++){var f=r.pixels.blocks[i];f.encoding===0?t.float32=!0:f.encoding===1?t[f.bitsPerPixel]=!0:t[0]=!0}return Object.keys(t)},n=function(r,a,t){var i={},f=new Uint8Array(r,a,10);if(i.fileIdentifierString=String.fromCharCode.apply(null,f),i.fileIdentifierString.trim()!=="CntZImage")throw"Unexpected file identifier string: "+i.fileIdentifierString;a+=10;var o=new DataView(r,a,24);if(i.fileVersion=o.getInt32(0,!0),i.imageType=o.getInt32(4,!0),i.height=o.getUint32(8,!0),i.width=o.getUint32(12,!0),i.maxZError=o.getFloat64(16,!0),a+=24,!t)if(o=new DataView(r,a,16),i.mask={},i.mask.numBlocksY=o.getUint32(0,!0),i.mask.numBlocksX=o.getUint32(4,!0),i.mask.numBytes=o.getUint32(8,!0),i.mask.maxValue=o.getFloat32(12,!0),a+=16,i.mask.numBytes>0){var c=new Uint8Array(Math.ceil(i.width*i.height/8));o=new DataView(r,a,i.mask.numBytes);var m=o.getInt16(0,!0),l=2,s=0;do{if(m>0)for(;m--;)c[s++]=o.getUint8(l++);else{var h=o.getUint8(l++);for(m=-m;m--;)c[s++]=h}m=o.getInt16(l,!0),l+=2}while(l<i.mask.numBytes);if(m!==-32768||s<c.length)throw"Unexpected end of mask RLE encoding";i.mask.bitset=c,a+=i.mask.numBytes}else i.mask.numBytes|i.mask.numBlocksY|i.mask.maxValue||(i.mask.bitset=new Uint8Array(Math.ceil(i.width*i.height/8)));o=new DataView(r,a,16),i.pixels={},i.pixels.numBlocksY=o.getUint32(0,!0),i.pixels.numBlocksX=o.getUint32(4,!0),i.pixels.numBytes=o.getUint32(8,!0),i.pixels.maxValue=o.getFloat32(12,!0),a+=16;var u=i.pixels.numBlocksX,g=i.pixels.numBlocksY,v=u+(i.width%u>0?1:0),U=g+(i.height%g>0?1:0);i.pixels.blocks=new Array(v*U);for(var y=0,V=0;V<U;V++)for(var w=0;w<v;w++){var S=0,p=r.byteLength-a;o=new DataView(r,a,Math.min(10,p));var d={};i.pixels.blocks[y++]=d;var x=o.getUint8(0);if(S++,d.encoding=x&63,d.encoding>3)throw"Invalid block encoding ("+d.encoding+")";if(d.encoding===2){a++;continue}if(x!==0&&x!==2){if(x>>=6,d.offsetType=x,x===2)d.offset=o.getInt8(1),S++;else if(x===1)d.offset=o.getInt16(1,!0),S+=2;else if(x===0)d.offset=o.getFloat32(1,!0),S+=4;else throw"Invalid block offset type";if(d.encoding===1)if(x=o.getUint8(S),S++,d.bitsPerPixel=x&63,x>>=6,d.numValidPixelsType=x,x===2)d.numValidPixels=o.getUint8(S),S++;else if(x===1)d.numValidPixels=o.getUint16(S,!0),S+=2;else if(x===0)d.numValidPixels=o.getUint32(S,!0),S+=4;else throw"Invalid valid pixel count type"}if(a+=S,d.encoding!==3){var k,D;if(d.encoding===0){var I=(i.pixels.numBytes-1)/4;if(I!==Math.floor(I))throw"uncompressed block has invalid length";k=new ArrayBuffer(I*4),D=new Uint8Array(k),D.set(new Uint8Array(r,a,I*4));var E=new Float32Array(k);d.rawData=E,a+=I*4}else if(d.encoding===1){var F=Math.ceil(d.numValidPixels*d.bitsPerPixel/8),L=Math.ceil(F/4);k=new ArrayBuffer(L*4),D=new Uint8Array(k),D.set(new Uint8Array(r,a,F)),d.stuffedData=new Uint32Array(k),a+=F}}}return i.eofOffset=a,i},e=function(r,a,t,i,f,o,c){var m=(1<<a)-1,l=0,s,h=0,u,g,v=Math.ceil((c-i)/f),U=r.length*4-Math.ceil(a*t/8);for(r[r.length-1]<<=8*U,s=0;s<t;s++){if(h===0&&(g=r[l++],h=32),h>=a)u=g>>>h-a&m,h-=a;else{var y=a-h;u=(g&m)<<y&m,g=r[l++],h=32-y,u+=g>>>h}o[s]=u<v?i+u*f:c}return o};return A}(),J=function(){"use strict";var A={unstuff:function(n,e,r,a,t,i,f,o){var c=(1<<r)-1,m=0,l,s=0,h,u,g,v,U=n.length*4-Math.ceil(r*a/8);if(n[n.length-1]<<=8*U,t)for(l=0;l<a;l++)s===0&&(u=n[m++],s=32),s>=r?(h=u>>>s-r&c,s-=r):(g=r-s,h=(u&c)<<g&c,u=n[m++],s=32-g,h+=u>>>s),e[l]=t[h];else for(v=Math.ceil((o-i)/f),l=0;l<a;l++)s===0&&(u=n[m++],s=32),s>=r?(h=u>>>s-r&c,s-=r):(g=r-s,h=(u&c)<<g&c,u=n[m++],s=32-g,h+=u>>>s),e[l]=h<v?i+h*f:o},unstuffLUT:function(n,e,r,a,t,i){var f=(1<<e)-1,o=0,c=0,m=0,l=0,s=0,h,u=[],g=n.length*4-Math.ceil(e*r/8);n[n.length-1]<<=8*g;var v=Math.ceil((i-a)/t);for(c=0;c<r;c++)l===0&&(h=n[o++],l=32),l>=e?(s=h>>>l-e&f,l-=e):(m=e-l,s=(h&f)<<m&f,h=n[o++],l=32-m,s+=h>>>l),u[c]=s<v?a+s*t:i;return u.unshift(a),u},unstuff2:function(n,e,r,a,t,i,f,o){var c=(1<<r)-1,m=0,l,s=0,h=0,u,g,v;if(t)for(l=0;l<a;l++)s===0&&(g=n[m++],s=32,h=0),s>=r?(u=g>>>h&c,s-=r,h+=r):(v=r-s,u=g>>>h&c,g=n[m++],s=32-v,u|=(g&(1<<v)-1)<<r-v,h=v),e[l]=t[u];else{var U=Math.ceil((o-i)/f);for(l=0;l<a;l++)s===0&&(g=n[m++],s=32,h=0),s>=r?(u=g>>>h&c,s-=r,h+=r):(v=r-s,u=g>>>h&c,g=n[m++],s=32-v,u|=(g&(1<<v)-1)<<r-v,h=v),e[l]=u<U?i+u*f:o}return e},unstuffLUT2:function(n,e,r,a,t,i){var f=(1<<e)-1,o=0,c=0,m=0,l=0,s=0,h=0,u,g=[],v=Math.ceil((i-a)/t);for(c=0;c<r;c++)l===0&&(u=n[o++],l=32,h=0),l>=e?(s=u>>>h&f,l-=e,h+=e):(m=e-l,s=u>>>h&f,u=n[o++],l=32-m,s|=(u&(1<<m)-1)<<e-m,h=m),g[c]=s<v?a+s*t:i;return g.unshift(a),g},originalUnstuff:function(n,e,r,a){var t=(1<<r)-1,i=0,f,o=0,c,m,l,s=n.length*4-Math.ceil(r*a/8);for(n[n.length-1]<<=8*s,f=0;f<a;f++)o===0&&(m=n[i++],o=32),o>=r?(c=m>>>o-r&t,o-=r):(l=r-o,c=(m&t)<<l&t,m=n[i++],o=32-l,c+=m>>>o),e[f]=c;return e},originalUnstuff2:function(n,e,r,a){var t=(1<<r)-1,i=0,f,o=0,c=0,m,l,s;for(f=0;f<a;f++)o===0&&(l=n[i++],o=32,c=0),o>=r?(m=l>>>c&t,o-=r,c+=r):(s=r-o,m=l>>>c&t,l=n[i++],o=32-s,m|=(l&(1<<s)-1)<<r-s,c=s),e[f]=m;return e}},T={HUFFMAN_LUT_BITS_MAX:12,computeChecksumFletcher32:function(n){for(var e=65535,r=65535,a=n.length,t=Math.floor(a/2),i=0;t;){var f=t>=359?359:t;t-=f;do e+=n[i++]<<8,r+=e+=n[i++];while(--f);e=(e&65535)+(e>>>16),r=(r&65535)+(r>>>16)}return a&1&&(r+=e+=n[i]<<8),e=(e&65535)+(e>>>16),r=(r&65535)+(r>>>16),(r<<16|e)>>>0},readHeaderInfo:function(n,e){var r=e.ptr,a=new Uint8Array(n,r,6),t={};if(t.fileIdentifierString=String.fromCharCode.apply(null,a),t.fileIdentifierString.lastIndexOf("Lerc2",0)!==0)throw"Unexpected file identifier string (expect Lerc2 ): "+t.fileIdentifierString;r+=6;var i=new DataView(n,r,8),f=i.getInt32(0,!0);t.fileVersion=f,r+=4,f>=3&&(t.checksum=i.getUint32(4,!0),r+=4),i=new DataView(n,r,12),t.height=i.getUint32(0,!0),t.width=i.getUint32(4,!0),r+=8,f>=4?(t.numDims=i.getUint32(8,!0),r+=4):t.numDims=1,i=new DataView(n,r,40),t.numValidPixel=i.getUint32(0,!0),t.microBlockSize=i.getInt32(4,!0),t.blobSize=i.getInt32(8,!0),t.imageType=i.getInt32(12,!0),t.maxZError=i.getFloat64(16,!0),t.zMin=i.getFloat64(24,!0),t.zMax=i.getFloat64(32,!0),r+=40,e.headerInfo=t,e.ptr=r;var o,c;if(f>=3&&(c=f>=4?52:48,o=this.computeChecksumFletcher32(new Uint8Array(n,r-c,t.blobSize-14)),o!==t.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(n,e){var r=e.headerInfo,a=this.getDataTypeArray(r.imageType),t=r.numDims*this.getDataTypeSize(r.imageType),i=this.readSubArray(n,e.ptr,a,t),f=this.readSubArray(n,e.ptr+t,a,t);e.ptr+=2*t;var o,c=!0;for(o=0;o<r.numDims;o++)if(i[o]!==f[o]){c=!1;break}return r.minValues=i,r.maxValues=f,c},readSubArray:function(n,e,r,a){var t;if(r===Uint8Array)t=new Uint8Array(n,e,a);else{var i=new ArrayBuffer(a),f=new Uint8Array(i);f.set(new Uint8Array(n,e,a)),t=new r(i)}return t},readMask:function(n,e){var r=e.ptr,a=e.headerInfo,t=a.width*a.height,i=a.numValidPixel,f=new DataView(n,r,4),o={};if(o.numBytes=f.getUint32(0,!0),r+=4,(i===0||t===i)&&o.numBytes!==0)throw"invalid mask";var c,m;if(i===0)c=new Uint8Array(Math.ceil(t/8)),o.bitset=c,m=new Uint8Array(t),e.pixels.resultMask=m,r+=o.numBytes;else if(o.numBytes>0){c=new Uint8Array(Math.ceil(t/8)),f=new DataView(n,r,o.numBytes);var l=f.getInt16(0,!0),s=2,h=0,u=0;do{if(l>0)for(;l--;)c[h++]=f.getUint8(s++);else for(u=f.getUint8(s++),l=-l;l--;)c[h++]=u;l=f.getInt16(s,!0),s+=2}while(s<o.numBytes);if(l!==-32768||h<c.length)throw"Unexpected end of mask RLE encoding";m=new Uint8Array(t);var g=0,v=0;for(v=0;v<t;v++)v&7?(g=c[v>>3],g<<=v&7):g=c[v>>3],g&128&&(m[v]=1);e.pixels.resultMask=m,o.bitset=c,r+=o.numBytes}return e.ptr=r,e.mask=o,!0},readDataOneSweep:function(n,e,r){var a=e.ptr,t=e.headerInfo,i=t.numDims,f=t.width*t.height,o=t.imageType,c=t.numValidPixel*T.getDataTypeSize(o)*i,m,l=e.pixels.resultMask;if(r===Uint8Array)m=new Uint8Array(n,a,c);else{var s=new ArrayBuffer(c),h=new Uint8Array(s);h.set(new Uint8Array(n,a,c)),m=new r(s)}if(m.length===f*i)e.pixels.resultPixels=m;else{e.pixels.resultPixels=new r(f*i);var u=0,g=0,v=0,U=0;if(i>1)for(v=0;v<i;v++)for(U=v*f,g=0;g<f;g++)l[g]&&(e.pixels.resultPixels[U+g]=m[u++]);else for(g=0;g<f;g++)l[g]&&(e.pixels.resultPixels[g]=m[u++])}return a+=c,e.ptr=a,!0},readHuffmanTree:function(n,e){var r=this.HUFFMAN_LUT_BITS_MAX,a=new DataView(n,e.ptr,16);e.ptr+=16;var t=a.getInt32(0,!0);if(t<2)throw"unsupported Huffman version";var i=a.getInt32(4,!0),f=a.getInt32(8,!0),o=a.getInt32(12,!0);if(f>=o)return!1;var c=new Uint32Array(o-f);T.decodeBits(n,e,c);var m=[],l,s,h,u;for(l=f;l<o;l++)s=l-(l<i?0:i),m[s]={first:c[l-f],second:null};var g=n.byteLength-e.ptr,v=Math.ceil(g/4),U=new ArrayBuffer(v*4),y=new Uint8Array(U);y.set(new Uint8Array(n,e.ptr,g));var V=new Uint32Array(U),w=0,S,p=0;for(S=V[0],l=f;l<o;l++)s=l-(l<i?0:i),u=m[s].first,u>0&&(m[s].second=S<<w>>>32-u,32-w>=u?(w+=u,w===32&&(w=0,p++,S=V[p])):(w+=u-32,p++,S=V[p],m[s].second|=S>>>32-w));var d=0,x=0,k=new B;for(l=0;l<m.length;l++)m[l]!==void 0&&(d=Math.max(d,m[l].first));d>=r?x=r:x=d,d>=30&&console.log("WARning, large NUM LUT BITS IS "+d);var D=[],I,E,F,L,X,b;for(l=f;l<o;l++)if(s=l-(l<i?0:i),u=m[s].first,u>0)if(I=[u,s],u<=x)for(E=m[s].second<<x-u,F=1<<x-u,h=0;h<F;h++)D[E|h]=I;else for(E=m[s].second,b=k,L=u-1;L>=0;L--)X=E>>>L&1,X?(b.right||(b.right=new B),b=b.right):(b.left||(b.left=new B),b=b.left),L===0&&!b.val&&(b.val=I[1]);return{decodeLut:D,numBitsLUTQick:x,numBitsLUT:d,tree:k,stuffedData:V,srcPtr:p,bitPos:w}},readHuffman:function(n,e,r){var a=e.headerInfo,t=a.numDims,i=e.headerInfo.height,f=e.headerInfo.width,o=f*i,c=this.readHuffmanTree(n,e),m=c.decodeLut,l=c.tree,s=c.stuffedData,h=c.srcPtr,u=c.bitPos,g=c.numBitsLUTQick,v=c.numBitsLUT,U=e.headerInfo.imageType===0?128:0,y,V,w,S=e.pixels.resultMask,p,d,x,k,D,I,E,F=0;u>0&&(h++,u=0);var L=s[h],X=e.encodeMode===1,b=new r(o*t),O=b,ee;for(ee=0;ee<a.numDims;ee++){if(t>1&&(O=new r(b.buffer,o*ee,o),F=0),e.headerInfo.numValidPixel===f*i)for(I=0,k=0;k<i;k++)for(D=0;D<f;D++,I++){if(V=0,p=L<<u>>>32-g,d=p,32-u<g&&(p|=s[h+1]>>>64-u-g,d=p),m[d])V=m[d][1],u+=m[d][0];else for(p=L<<u>>>32-v,d=p,32-u<v&&(p|=s[h+1]>>>64-u-v,d=p),y=l,E=0;E<v;E++)if(x=p>>>v-E-1&1,y=x?y.right:y.left,!(y.left||y.right)){V=y.val,u=u+E+1;break}u>=32&&(u-=32,h++,L=s[h]),w=V-U,X?(D>0?w+=F:k>0?w+=O[I-f]:w+=F,w&=255,O[I]=w,F=w):O[I]=w}else for(I=0,k=0;k<i;k++)for(D=0;D<f;D++,I++)if(S[I]){if(V=0,p=L<<u>>>32-g,d=p,32-u<g&&(p|=s[h+1]>>>64-u-g,d=p),m[d])V=m[d][1],u+=m[d][0];else for(p=L<<u>>>32-v,d=p,32-u<v&&(p|=s[h+1]>>>64-u-v,d=p),y=l,E=0;E<v;E++)if(x=p>>>v-E-1&1,y=x?y.right:y.left,!(y.left||y.right)){V=y.val,u=u+E+1;break}u>=32&&(u-=32,h++,L=s[h]),w=V-U,X?(D>0&&S[I-1]?w+=F:k>0&&S[I-f]?w+=O[I-f]:w+=F,w&=255,O[I]=w,F=w):O[I]=w}e.ptr=e.ptr+(h+1)*4+(u>0?4:0)}e.pixels.resultPixels=b},decodeBits:function(n,e,r,a,t){{var i=e.headerInfo,f=i.fileVersion,o=0,c=new DataView(n,e.ptr,5),m=c.getUint8(0);o++;var l=m>>6,s=l===0?4:3-l,h=(m&32)>0,u=m&31,g=0;if(s===1)g=c.getUint8(o),o++;else if(s===2)g=c.getUint16(o,!0),o+=2;else if(s===4)g=c.getUint32(o,!0),o+=4;else throw"Invalid valid pixel count type";var v=2*i.maxZError,U,y,V,w,S,p,d,x,k,D,I=i.numDims>1?i.maxValues[t]:i.zMax;if(h){for(e.counter.lut++,x=c.getUint8(o),k=u,o++,w=Math.ceil((x-1)*u/8),S=Math.ceil(w/4),y=new ArrayBuffer(S*4),V=new Uint8Array(y),e.ptr+=o,V.set(new Uint8Array(n,e.ptr,w)),d=new Uint32Array(y),e.ptr+=w,D=0;x-1>>>D;)D++;w=Math.ceil(g*D/8),S=Math.ceil(w/4),y=new ArrayBuffer(S*4),V=new Uint8Array(y),V.set(new Uint8Array(n,e.ptr,w)),U=new Uint32Array(y),e.ptr+=w,f>=3?p=A.unstuffLUT2(d,u,x-1,a,v,I):p=A.unstuffLUT(d,u,x-1,a,v,I),f>=3?A.unstuff2(U,r,D,g,p):A.unstuff(U,r,D,g,p)}else e.counter.bitstuffer++,D=u,e.ptr+=o,D>0&&(w=Math.ceil(g*D/8),S=Math.ceil(w/4),y=new ArrayBuffer(S*4),V=new Uint8Array(y),V.set(new Uint8Array(n,e.ptr,w)),U=new Uint32Array(y),e.ptr+=w,f>=3?a==null?A.originalUnstuff2(U,r,D,g):A.unstuff2(U,r,D,g,!1,a,v,I):a==null?A.originalUnstuff(U,r,D,g):A.unstuff(U,r,D,g,!1,a,v,I))}},readTiles:function(n,e,r){var a=e.headerInfo,t=a.width,i=a.height,f=a.microBlockSize,o=a.imageType,c=T.getDataTypeSize(o),m=Math.ceil(t/f),l=Math.ceil(i/f);e.pixels.numBlocksY=l,e.pixels.numBlocksX=m,e.pixels.ptr=0;var s=0,h=0,u=0,g=0,v=0,U=0,y=0,V=0,w=0,S=0,p=0,d=0,x=0,k=0,D=0,I=0,E,F,L,X,b,O,ee=new r(f*f),Le=i%f||f,ve=t%f||f,de,le,Te=a.numDims,K,G=e.pixels.resultMask,re=e.pixels.resultPixels;for(u=0;u<l;u++)for(v=u!==l-1?f:Le,g=0;g<m;g++)for(U=g!==m-1?f:ve,p=u*t*f+g*f,d=t-U,K=0;K<Te;K++){if(Te>1&&(re=new r(e.pixels.resultPixels.buffer,t*i*K*c,t*i)),y=n.byteLength-e.ptr,E=new DataView(n,e.ptr,Math.min(10,y)),F={},I=0,V=E.getUint8(0),I++,w=V>>6&255,S=V>>2&15,S!==(g*f>>3&15))throw"integrity issue";if(O=V&3,O>3)throw e.ptr+=I,"Invalid block encoding ("+O+")";if(O===2){e.counter.constant++,e.ptr+=I;continue}else if(O===0){if(e.counter.uncompressed++,e.ptr+=I,x=v*U*c,k=n.byteLength-e.ptr,x=x<k?x:k,L=new ArrayBuffer(x%c===0?x:x+c-x%c),X=new Uint8Array(L),X.set(new Uint8Array(n,e.ptr,x)),b=new r(L),D=0,G)for(s=0;s<v;s++){for(h=0;h<U;h++)G[p]&&(re[p]=b[D++]),p++;p+=d}else for(s=0;s<v;s++){for(h=0;h<U;h++)re[p++]=b[D++];p+=d}e.ptr+=D*c}else if(de=T.getDataTypeUsed(o,w),le=T.getOnePixel(F,I,de,E),I+=T.getDataTypeSize(de),O===3)if(e.ptr+=I,e.counter.constantoffset++,G)for(s=0;s<v;s++){for(h=0;h<U;h++)G[p]&&(re[p]=le),p++;p+=d}else for(s=0;s<v;s++){for(h=0;h<U;h++)re[p++]=le;p+=d}else if(e.ptr+=I,T.decodeBits(n,e,ee,le,K),I=0,G)for(s=0;s<v;s++){for(h=0;h<U;h++)G[p]&&(re[p]=ee[I++]),p++;p+=d}else for(s=0;s<v;s++){for(h=0;h<U;h++)re[p++]=ee[I++];p+=d}}},formatFileInfo:function(n){return{fileIdentifierString:n.headerInfo.fileIdentifierString,fileVersion:n.headerInfo.fileVersion,imageType:n.headerInfo.imageType,height:n.headerInfo.height,width:n.headerInfo.width,numValidPixel:n.headerInfo.numValidPixel,microBlockSize:n.headerInfo.microBlockSize,blobSize:n.headerInfo.blobSize,maxZError:n.headerInfo.maxZError,pixelType:T.getPixelType(n.headerInfo.imageType),eofOffset:n.eofOffset,mask:n.mask?{numBytes:n.mask.numBytes}:null,pixels:{numBlocksX:n.pixels.numBlocksX,numBlocksY:n.pixels.numBlocksY,maxValue:n.headerInfo.zMax,minValue:n.headerInfo.zMin,noDataValue:n.noDataValue}}},constructConstantSurface:function(n){var e=n.headerInfo.zMax,r=n.headerInfo.numDims,a=n.headerInfo.height*n.headerInfo.width,t=a*r,i=0,f=0,o=0,c=n.pixels.resultMask;if(c)if(r>1)for(i=0;i<r;i++)for(o=i*a,f=0;f<a;f++)c[f]&&(n.pixels.resultPixels[o+f]=e);else for(f=0;f<a;f++)c[f]&&(n.pixels.resultPixels[f]=e);else if(n.pixels.resultPixels.fill)n.pixels.resultPixels.fill(e);else for(f=0;f<t;f++)n.pixels.resultPixels[f]=e},getDataTypeArray:function(n){var e;switch(n){case 0:e=Int8Array;break;case 1:e=Uint8Array;break;case 2:e=Int16Array;break;case 3:e=Uint16Array;break;case 4:e=Int32Array;break;case 5:e=Uint32Array;break;case 6:e=Float32Array;break;case 7:e=Float64Array;break;default:e=Float32Array}return e},getPixelType:function(n){var e;switch(n){case 0:e="S8";break;case 1:e="U8";break;case 2:e="S16";break;case 3:e="U16";break;case 4:e="S32";break;case 5:e="U32";break;case 6:e="F32";break;case 7:e="F64";break;default:e="F32"}return e},isValidPixelValue:function(n,e){if(e==null)return!1;var r;switch(n){case 0:r=e>=-128&&e<=127;break;case 1:r=e>=0&&e<=255;break;case 2:r=e>=-32768&&e<=32767;break;case 3:r=e>=0&&e<=65536;break;case 4:r=e>=-2147483648&&e<=2147483647;break;case 5:r=e>=0&&e<=4294967296;break;case 6:r=e>=-34027999387901484e22&&e<=34027999387901484e22;break;case 7:r=e>=5e-324&&e<=17976931348623157e292;break;default:r=!1}return r},getDataTypeSize:function(n){var e=0;switch(n){case 0:case 1:e=1;break;case 2:case 3:e=2;break;case 4:case 5:case 6:e=4;break;case 7:e=8;break;default:e=n}return e},getDataTypeUsed:function(n,e){var r=n;switch(n){case 2:case 4:r=n-e;break;case 3:case 5:r=n-2*e;break;case 6:e===0?r=n:e===1?r=2:r=1;break;case 7:e===0?r=n:r=n-2*e+1;break;default:r=n;break}return r},getOnePixel:function(n,e,r,a){var t=0;switch(r){case 0:t=a.getInt8(e);break;case 1:t=a.getUint8(e);break;case 2:t=a.getInt16(e,!0);break;case 3:t=a.getUint16(e,!0);break;case 4:t=a.getInt32(e,!0);break;case 5:t=a.getUInt32(e,!0);break;case 6:t=a.getFloat32(e,!0);break;case 7:t=a.getFloat64(e,!0);break;default:throw"the decoder does not understand this pixel type"}return t}},B=function(n,e,r){this.val=n,this.left=e,this.right=r},W={decode:function(n,e){e=e||{};var r=e.noDataValue,a=0,t={};if(t.ptr=e.inputOffset||0,t.pixels={},!!T.readHeaderInfo(n,t)){var i=t.headerInfo,f=i.fileVersion,o=T.getDataTypeArray(i.imageType);T.readMask(n,t),i.numValidPixel!==i.width*i.height&&!t.pixels.resultMask&&(t.pixels.resultMask=e.maskData);var c=i.width*i.height;if(t.pixels.resultPixels=new o(c*i.numDims),t.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0},i.numValidPixel!==0)if(i.zMax===i.zMin)T.constructConstantSurface(t);else if(f>=4&&T.checkMinMaxRanges(n,t))T.constructConstantSurface(t);else{var m=new DataView(n,t.ptr,2),l=m.getUint8(0);if(t.ptr++,l)T.readDataOneSweep(n,t,o);else if(f>1&&i.imageType<=1&&Math.abs(i.maxZError-.5)<1e-5){var s=m.getUint8(1);if(t.ptr++,t.encodeMode=s,s>2||f<4&&s>1)throw"Invalid Huffman flag "+s;s?T.readHuffman(n,t,o):T.readTiles(n,t,o)}else T.readTiles(n,t,o)}t.eofOffset=t.ptr;var h;e.inputOffset?(h=t.headerInfo.blobSize+e.inputOffset-t.ptr,Math.abs(h)>=1&&(t.eofOffset=e.inputOffset+t.headerInfo.blobSize)):(h=t.headerInfo.blobSize-t.ptr,Math.abs(h)>=1&&(t.eofOffset=t.headerInfo.blobSize));var u={width:i.width,height:i.height,pixelData:t.pixels.resultPixels,minValue:i.zMin,maxValue:i.zMax,validPixelCount:i.numValidPixel,dimCount:i.numDims,dimStats:{minValues:i.minValues,maxValues:i.maxValues},maskData:t.pixels.resultMask};if(t.pixels.resultMask&&T.isValidPixelValue(i.imageType,r)){var g=t.pixels.resultMask;for(a=0;a<c;a++)g[a]||(u.pixelData[a]=r);u.noDataValue=r}return t.noDataValue=r,e.returnFileInfo&&(u.fileInfo=T.formatFileInfo(t)),u}},getBandCount:function(n){var e=0,r=0,a={};for(a.ptr=0,a.pixels={};r<n.byteLength-58;)T.readHeaderInfo(n,a),r+=a.headerInfo.blobSize,e++,a.ptr=r;return e}};return W}(),C=function(){var A=new ArrayBuffer(4),T=new Uint8Array(A),B=new Uint32Array(A);return B[0]=1,T[0]===1}(),j={decode:function(A,T){if(!C)throw"Big endian system is not supported.";T=T||{};var B=T.inputOffset||0,W=new Uint8Array(A,B,10),n=String.fromCharCode.apply(null,W),e,r;if(n.trim()==="CntZImage")e=M,r=1;else if(n.substring(0,5)==="Lerc2")e=J,r=2;else throw"Unexpected file identifier string: "+n;for(var a=0,t=A.byteLength-10,i,f=[],o,c,m={width:0,height:0,pixels:[],pixelType:T.pixelType,mask:null,statistics:[]};B<t;){var l=e.decode(A,{inputOffset:B,encodedMaskData:i,maskData:c,returnMask:a===0,returnEncodedMask:a===0,returnFileInfo:!0,pixelType:T.pixelType||null,noDataValue:T.noDataValue||null});B=l.fileInfo.eofOffset,a===0&&(i=l.encodedMaskData,c=l.maskData,m.width=l.width,m.height=l.height,m.dimCount=l.dimCount||1,m.pixelType=l.pixelType||l.fileInfo.pixelType,m.mask=l.maskData),r>1&&l.fileInfo.mask&&l.fileInfo.mask.numBytes>0&&f.push(l.maskData),a++,m.pixels.push(l.pixelData),m.statistics.push({minValue:l.minValue,maxValue:l.maxValue,noDataValue:l.noDataValue,dimStats:l.dimStats})}var s,h,u;if(r>1&&f.length>1){for(u=m.width*m.height,m.bandMasks=f,c=new Uint8Array(u),c.set(f[0]),s=1;s<f.length;s++)for(o=f[s],h=0;h<u;h++)c[h]=c[h]&o[h];m.maskData=c}return m}};typeof define=="function"&&define.amd?define([],function(){return j}):typeof Ee<"u"&&Ee.exports?Ee.exports=j:this.Lerc=j})()});var Sr={NONE:0,LERC:1},gr=Object.freeze(Sr);var te={};function Dr(M,J){let C=0,j,A,T,B,W=J.length;for(T=J[0],j=1;j<=W;j++)B=J[j%W],M[0]>Math.min(T[0],B[0])&&M[0]<=Math.max(T[0],B[0])&&M[1]<=Math.max(T[1],B[1])&&T[0]!==B[0]&&(A=(M[0]-T[0])*(B[1]-T[1])/(B[0]-T[0])+T[1],(T[1]===B[1]||M[1]<=A)&&C++),T=B;return C%2!==0}te.DEFAULT_STRUCTURE=Object.freeze({heightScale:1,heightOffset:0,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1});var qe=new _,Ar=new De,Er=new _,Lr=new _;te.computeVertices=function(M){if(!ie(M)||!ie(M.heightmap))throw new xe("options.heightmap is required.");if(!ie(M.width)||!ie(M.height))throw new xe("options.width and options.height are required.");if(!ie(M.nativeRectangle))throw new xe("options.nativeRectangle is required.");if(!ie(M.skirtHeight))throw new xe("options.skirtHeight is required.");let J=M.flattenPolygonHeight||[1],C=M.flattenPolygon||[],j=M.VTN,A=Math.cos,T=Math.sin,B=Math.sqrt,W=Math.atan,n=Math.exp,e=Ue.PI_OVER_TWO,r=Ue.toRadians,a=M.heightmap,t=M.width,i=M.height,f=M.skirtHeight,o=f>0,c=q(M.isGeographic,!0),m=q(M.ellipsoid,Se.default),l=1/m.maximumRadius,s=oe.clone(M.nativeRectangle),h=oe.clone(M.rectangle),u,g,v,U;ie(h)?(u=h.west,g=h.south,v=h.east,U=h.north):c?(u=r(s.west),g=r(s.south),v=r(s.east),U=r(s.north)):(u=s.west*l,g=e-2*W(n(-s.south*l)),v=s.east*l,U=e-2*W(n(-s.north*l)));let y=M.relativeToCenter,V=ie(y);y=V?y:_.ZERO;let w=q(M.includeWebMercatorT,!1),S=q(M.exaggeration,1),p=q(M.exaggerationRelativeHeight,0),x=S!==1,k=q(M.structure,te.DEFAULT_STRUCTURE),D=q(k.heightScale,te.DEFAULT_STRUCTURE.heightScale),I=q(k.heightOffset,te.DEFAULT_STRUCTURE.heightOffset),E=q(k.elementsPerHeight,te.DEFAULT_STRUCTURE.elementsPerHeight),F=q(k.stride,te.DEFAULT_STRUCTURE.stride),L=q(k.elementMultiplier,te.DEFAULT_STRUCTURE.elementMultiplier),X=q(k.isBigEndian,te.DEFAULT_STRUCTURE.isBigEndian),b=oe.computeWidth(s),O=oe.computeHeight(s),ee=b/(t-1),Le=O/(i-1);c||(b*=l,O*=l);let ve=m.radiiSquared,de=ve.x,le=ve.y,Te=ve.z,K=65536,G=-65536,re=sr.eastNorthUpToFixedFrame(y,m),pr=De.inverseTransformation(re,Ar),Be,We;w&&(Be=Ae.geodeticLatitudeToMercatorAngle(g),We=1/(Ae.geodeticLatitudeToMercatorAngle(U)-Be));let ue=Er;ue.x=Number.POSITIVE_INFINITY,ue.y=Number.POSITIVE_INFINITY,ue.z=Number.POSITIVE_INFINITY;let ce=Lr;ce.x=Number.NEGATIVE_INFINITY,ce.y=Number.NEGATIVE_INFINITY,ce.z=Number.NEGATIVE_INFINITY;let Fe=Number.POSITIVE_INFINITY,we=t*i,Ir=f>0?t*2+i*2:0,ne=we+Ir,ae=new Array(ne),Ge=new Array(ne),Qe=new Array(ne),Je=w?new Array(ne):[],Ke=x?new Array(ne):[],be=new Array(ne),Ne=0,Ce=i,Oe=0,Re=t;o&&(--Ne,++Ce,--Oe,++Re);let ke=1e-5;for(let N=Ne;N<Ce;++N){let R=N;R<0&&(R=0),R>=i&&(R=i-1);let z=s.north-Le*R;c?z=r(z):z=e-2*W(n(-z*l));let me=(z-g)/(U-g);me=Ue.clamp(me,0,1);let Z=N===Ne,se=N===Ce-1;f>0&&(Z?z+=ke*O:se&&(z-=ke*O));let pe=A(z),he=T(z),ye=Te*he,Me;w&&(Me=(Ae.geodeticLatitudeToMercatorAngle(z)-Be)*We);for(let fe=Oe;fe<Re;++fe){let $=fe;$<0&&($=0),$>=t&&($=t-1);let Ie=R*(t*F)+$*F,H;if(E===1)H=a[Ie];else{H=0;let Y;if(X)for(Y=0;Y<E;++Y)H=H*L+a[Ie+Y];else for(Y=E-1;Y>=0;--Y)H=H*L+a[Ie+Y]}H=H*D+I,G=Math.max(G,H),K=Math.min(K,H);let Q=s.west+ee*$;c?Q=r(Q):Q=Q*l;let Xe=(Q-u)/(v-u);Xe=Ue.clamp(Xe,0,1);let P=R*t+$;if(be[P]=0,f>0){let Y=fe===Oe,Ve=fe===Re-1,nr=Z||se||Y||Ve;if((Z||se)&&(Y||Ve))continue;nr&&(H-=f,Y?(P=we+(i-R-1),Q-=ke*b):se?P=we+i+(t-$-1):Ve?(P=we+i+t+R,Q+=ke*b):Z&&(P=we+i+t+i+$),be[P]=1)}let _e=pe*A(Q),ze=pe*T(Q),ir=de*_e,tr=le*ze,Ze=1/B(ir*_e+tr*ze+ye*he),Tr=ir*Ze,kr=tr*Ze,yr=ye*Ze;for(let Y=0;Y<J.length;Y++)J[Y]!==1&&Dr([Q,z],C[Y])&&(H=J[Y]);let ge=new _;ge.x=Tr+_e*H,ge.y=kr+ze*H,ge.z=yr+he*H,De.multiplyByPoint(pr,ge,qe),_.minimumByComponent(qe,ue,ue),_.maximumByComponent(qe,ce,ce),Fe=Math.min(Fe,H),ae[P]=ge,Qe[P]=new ar(Xe,me),Ge[P]=H,w&&(Je[P]=Me),x&&(Ke[P]=m.geodeticSurfaceNormal(ge))}}let He=new Array(ne);if(f>0){let N=0;for(let R=0;R<i;++R){let z=-1,me=1;R<2&&(z=0),R>=i-1&&(me=0);for(let Z=0;Z<t;++Z){let se=-1,pe=1;Z<2&&(se=0),Z>=t-1&&(pe=0),N=R*t+Z;try{let he=ae[(R+z)*t+Z],ye=ae[(R+me)*t+Z],Me=ae[R*t+(Z+se)],fe=ae[R*t+(Z+pe)],$=_.subtract(Me,fe,new _),Ie=_.subtract(he,ye,new _),H=_.cross($,Ie,new _),Q=_.normalize(H,new _);He[N]=or.octEncodeFloat(Q)}catch{He[N]=0}}}}let xr=fr.fromPoints(ae),$e;ie(h)&&($e=cr.fromRectangle(h,K,G,m));let Pe;V&&(Pe=new mr(m).computeHorizonCullingPointPossiblyUnderEllipsoid(y,ae,K));let Ur=new ur(ue,ce,y),Ye=new hr(y,Ur,Fe,G,re,j?f>0:!1,w,x,S,p),er=new Float32Array(ne*Ye.stride),rr=0;for(let N=0;N<ne;++N)rr=Ye.encode(er,rr,ae[N],Qe[N],Ge[N],f>0?He[N]:void 0,Je[N],Ke[N],f>0||void 0,void 0,be[N]);return{vertices:er,maximumHeight:G,minimumHeight:K,encoding:Ye,boundingSphere3D:xr,orientedBoundingBox:$e,occludeePointInScaledSpace:Pe}};var vr=te;var wr=Vr(dr(),1);function Br(M,J){if(M.encoding===gr.LERC){let A;try{A=wr.default.decode(M.heightmap)}catch(B){throw new je(B)}if(A.statistics[0].minValue===Number.MAX_VALUE)throw new je("Invalid tile data");M.heightmap=A.pixels[0],M.width=A.width,M.height=A.height}M.ellipsoid=Se.clone(M.ellipsoid),M.rectangle=oe.clone(M.rectangle);let C=vr.computeVertices(M),j=C.vertices;return J.push(j.buffer),{vertices:j.buffer,numberOfAttributes:C.encoding.stride,minimumHeight:C.minimumHeight,maximumHeight:C.maximumHeight,gridWidth:M.width,gridHeight:M.height,boundingSphere3D:C.boundingSphere3D,orientedBoundingBox:C.orientedBoundingBox,occludeePointInScaledSpace:C.occludeePointInScaledSpace,encoding:C.encoding,westIndicesSouthToNorth:C.westIndicesSouthToNorth,southIndicesEastToWest:C.southIndicesEastToWest,eastIndicesNorthToSouth:C.eastIndicesNorthToSouth,northIndicesWestToEast:C.northIndicesWestToEast}}var fi=lr(Br);export{fi as default};