@gisatcz/deckgl-geolib 1.12.0-dev.5 → 2.1.0-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +69 -64
  2. package/dist/cjs/index.js +5252 -4865
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/index.min.js +3 -3
  5. package/dist/cjs/index.min.js.map +1 -1
  6. package/dist/{esm/types/cogtiles/cogtiles.d.ts → cjs/types/core/CogTiles.d.ts} +17 -47
  7. package/dist/cjs/types/{geoimage/geoimage.d.ts → core/GeoImage.d.ts} +7 -6
  8. package/dist/cjs/types/core/index.d.ts +3 -0
  9. package/dist/cjs/types/index.d.ts +3 -11
  10. package/dist/{esm/types/cogbitmaplayer → cjs/types/layers}/CogBitmapLayer.d.ts +6 -5
  11. package/dist/cjs/types/{cogterrainlayer → layers}/CogTerrainLayer.d.ts +15 -8
  12. package/dist/cjs/types/layers/index.d.ts +2 -0
  13. package/dist/esm/index.js +5248 -4864
  14. package/dist/esm/index.js.map +1 -1
  15. package/dist/esm/index.min.js +3 -3
  16. package/dist/esm/index.min.js.map +1 -1
  17. package/dist/{cjs/types/cogtiles/cogtiles.d.ts → esm/types/core/CogTiles.d.ts} +17 -47
  18. package/dist/esm/types/{geoimage/geoimage.d.ts → core/GeoImage.d.ts} +7 -6
  19. package/dist/esm/types/core/index.d.ts +3 -0
  20. package/dist/esm/types/index.d.ts +3 -11
  21. package/dist/{cjs/types/cogbitmaplayer → esm/types/layers}/CogBitmapLayer.d.ts +6 -5
  22. package/dist/esm/types/{cogterrainlayer → layers}/CogTerrainLayer.d.ts +15 -8
  23. package/dist/esm/types/layers/index.d.ts +2 -0
  24. package/package.json +67 -26
  25. package/.eslintignore +0 -2
  26. package/.eslintrc.cjs +0 -3
  27. package/CHANGELOG.md +0 -166
  28. package/rollup.config.mjs +0 -77
  29. package/src/cogbitmaplayer/CogBitmapLayer.ts +0 -337
  30. package/src/cogbitmaplayer/README.md +0 -113
  31. package/src/cogterrainlayer/CogTerrainLayer.ts +0 -445
  32. package/src/cogterrainlayer/README.md +0 -118
  33. package/src/cogtiles/README.md +0 -72
  34. package/src/cogtiles/cogtiles.ts +0 -483
  35. package/src/cogtiles/lzw.js +0 -256
  36. package/src/geoimage/README.md +0 -129
  37. package/src/geoimage/delatin/index.ts +0 -495
  38. package/src/geoimage/geoimage.ts +0 -602
  39. package/src/geoimage/helpers/skirt.ts +0 -171
  40. package/src/index.ts +0 -11
  41. package/src/utilities/tileurls.ts +0 -21
  42. package/tsconfig.json +0 -6
  43. /package/dist/cjs/types/{geoimage → core}/delatin/index.d.ts +0 -0
  44. /package/dist/cjs/types/{geoimage → core}/helpers/skirt.d.ts +0 -0
  45. /package/dist/cjs/types/{utilities → utils}/tileurls.d.ts +0 -0
  46. /package/dist/esm/types/{geoimage → core}/delatin/index.d.ts +0 -0
  47. /package/dist/esm/types/{geoimage → core}/helpers/skirt.d.ts +0 -0
  48. /package/dist/esm/types/{utilities → utils}/tileurls.d.ts +0 -0
@@ -1,5 +1,5 @@
1
- "use strict";var A=require("@deck.gl/core"),e=require("@deck.gl/geo-layers"),t=require("@deck.gl/layers"),i=require("@deck.gl/extensions"),r=require("chroma-js"),a=require("@loaders.gl/schema"),n=require("@loaders.gl/loader-utils"),s=require("@deck.gl/mesh-layers");function o(A,e,t,i){return new(t||(t=Promise))((function(r,a){function n(A){try{o(i.next(A))}catch(A){a(A)}}function s(A){try{o(i.throw(A))}catch(A){a(A)}}function o(A){var e;A.done?r(A.value):(e=A.value,e instanceof t?e:new t((function(A){A(e)}))).then(n,s)}o((i=i.apply(A,e||[])).next())}))}function g(A){return(e,...t)=>h(A,e,t)}function l(A,e){return g(C(A,e).get)}const{apply:h,construct:I,defineProperty:B,get:c,getOwnPropertyDescriptor:C,getPrototypeOf:f,has:E,ownKeys:Q,set:d,setPrototypeOf:u}=Reflect,{iterator:w,species:p,toStringTag:m,for:y}=Symbol,D=Object,{create:k,defineProperty:b,freeze:_,is:S}=D,x=Array.prototype[w],F=g(x),G=ArrayBuffer;l(G.prototype,"byteLength");const U="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:null;U&&l(U.prototype,"byteLength");const R=f(Uint8Array);R.from;const M=R.prototype;M[w],g(M.keys),g(M.values),g(M.entries),g(M.set),g(M.reverse),g(M.fill),g(M.copyWithin),g(M.sort),g(M.slice),g(M.subarray),l(M,"buffer"),l(M,"byteOffset"),l(M,"length"),l(M,m);const L=Uint32Array,v=Float32Array,N=f([][w]()),T=g(N.next),q=g(function*(){}().next),O=f(N),J=g(DataView.prototype.getUint16),H=WeakMap,Y=H.prototype,z=g(Y.get),P=g(Y.set),K=new H,V=k(null,{next:{value:function(){const A=z(K,this);return T(A)}},[w]:{value:function(){return this}}});const Z=new H,X=k(O,{next:{value:function(){const A=z(Z,this);return q(A)},writable:!0,configurable:!0}});for(const A of Q(N))"next"!==A&&b(X,A,C(N,A));const W=new G(4),j=new v(W),$=new L(W),AA=new L(512),eA=new L(512);for(let A=0;A<256;++A){const e=A-127;e<-27?(AA[A]=0,AA[256|A]=32768,eA[A]=24,eA[256|A]=24):e<-14?(AA[A]=1024>>-e-14,AA[256|A]=1024>>-e-14|32768,eA[A]=-e-1,eA[256|A]=-e-1):e<=15?(AA[A]=e+15<<10,AA[256|A]=e+15<<10|32768,eA[A]=13,eA[256|A]=13):e<128?(AA[A]=31744,AA[256|A]=64512,eA[A]=24,eA[256|A]=24):(AA[A]=31744,AA[256|A]=64512,eA[A]=13,eA[256|A]=13)}const tA=new L(2048),iA=new L(64),rA=new L(64);for(let A=1;A<1024;++A){let e=A<<13,t=0;for(;0==(8388608&e);)e<<=1,t-=8388608;e&=-8388609,t+=947912704,tA[A]=e|t}for(let A=1024;A<2048;++A)tA[A]=939524096+(A-1024<<13);for(let A=1;A<31;++A)iA[A]=A<<23;iA[31]=1199570944,iA[32]=2147483648;for(let A=33;A<63;++A)iA[A]=2147483648+(A-32<<23);iA[63]=3347054592;for(let A=1;A<64;++A)32!==A&&(rA[A]=1024);function aA(A,e,...t){return function(A){const e=A>>10;return $[0]=tA[rA[e]+(1023&A)]+iA[e],j[0]}(J(A,e,...function(A){if(A[w]===x&&N.next===T)return A;const e=k(V);return P(K,e,F(A)),e}(t)))}function nA(A){return A&&A.__esModule&&Object.prototype.hasOwnProperty.call(A,"default")?A.default:A}var sA={exports:{}};function oA(A,e,t){const i=t&&t.debug||!1;i&&console.log("[xml-utils] getting "+e+" in "+A);const r="object"==typeof A?A.outer:A,a=r.slice(0,r.indexOf(">")+1),n=['"',"'"];for(let A=0;A<n.length;A++){const t=n[A],r=e+"\\="+t+"([^"+t+"]*)"+t;i&&console.log("[xml-utils] pattern:",r);const s=new RegExp(r).exec(a);if(i&&console.log("[xml-utils] match:",s),s)return s[1]}}sA.exports=oA,sA.exports.default=oA;var gA=nA(sA.exports),lA={exports:{}},hA={exports:{}},IA={exports:{}};function BA(A,e,t){const i=new RegExp(e).exec(A.slice(t));return i?t+i.index:-1}IA.exports=BA,IA.exports.default=BA;var cA=IA.exports,CA={exports:{}};function fA(A,e,t){const i=new RegExp(e).exec(A.slice(t));return i?t+i.index+i[0].length-1:-1}CA.exports=fA,CA.exports.default=fA;var EA=CA.exports,QA={exports:{}};function dA(A,e){const t=new RegExp(e,"g"),i=A.match(t);return i?i.length:0}QA.exports=dA,QA.exports.default=dA;var uA=QA.exports;const wA=cA,pA=EA,mA=uA;function yA(A,e,t){const i=t&&t.debug||!1,r=!(t&&!1===typeof t.nested),a=t&&t.startIndex||0;i&&console.log("[xml-utils] starting findTagByName with",e," and ",t);const n=wA(A,`<${e}[ \n>/]`,a);if(i&&console.log("[xml-utils] start:",n),-1===n)return;const s=A.slice(n+e.length);let o=pA(s,"^[^<]*[ /]>",0);const g=-1!==o&&"/"===s[o-1];if(i&&console.log("[xml-utils] selfClosing:",g),!1===g)if(r){let A=0,t=1,i=0;for(;-1!==(o=pA(s,"[ /]"+e+">",A));){const r=s.substring(A,o+1);if(t+=mA(r,"<"+e+"[ \n\t>]"),i+=mA(r,"</"+e+">"),i>=t)break;A=o}}else o=pA(s,"[ /]"+e+">",0);const l=n+e.length+o+1;if(i&&console.log("[xml-utils] end:",l),-1===l)return;const h=A.slice(n,l);let I;return I=g?null:h.slice(h.indexOf(">")+1,h.lastIndexOf("<")),{inner:I,outer:h,start:n,end:l}}hA.exports=yA,hA.exports.default=yA;const DA=hA.exports;function kA(A,e,t){const i=[],r=t&&t.debug||!1,a=!t||"boolean"!=typeof t.nested||t.nested;let n,s=t&&t.startIndex||0;for(;n=DA(A,e,{debug:r,startIndex:s});)s=a?n.start+1+e.length:n.end,i.push(n);return r&&console.log("findTagsByName found",i.length,"tags"),i}lA.exports=kA,lA.exports.default=kA;var bA=nA(lA.exports);const _A={315:"Artist",258:"BitsPerSample",265:"CellLength",264:"CellWidth",320:"ColorMap",259:"Compression",33432:"Copyright",306:"DateTime",338:"ExtraSamples",266:"FillOrder",289:"FreeByteCounts",288:"FreeOffsets",291:"GrayResponseCurve",290:"GrayResponseUnit",316:"HostComputer",270:"ImageDescription",257:"ImageLength",256:"ImageWidth",271:"Make",281:"MaxSampleValue",280:"MinSampleValue",272:"Model",254:"NewSubfileType",274:"Orientation",262:"PhotometricInterpretation",284:"PlanarConfiguration",296:"ResolutionUnit",278:"RowsPerStrip",277:"SamplesPerPixel",305:"Software",279:"StripByteCounts",273:"StripOffsets",255:"SubfileType",263:"Threshholding",282:"XResolution",283:"YResolution",326:"BadFaxLines",327:"CleanFaxData",343:"ClipPath",328:"ConsecutiveBadFaxLines",433:"Decode",434:"DefaultImageColor",269:"DocumentName",336:"DotRange",321:"HalftoneHints",346:"Indexed",347:"JPEGTables",285:"PageName",297:"PageNumber",317:"Predictor",319:"PrimaryChromaticities",532:"ReferenceBlackWhite",339:"SampleFormat",340:"SMinSampleValue",341:"SMaxSampleValue",559:"StripRowCounts",330:"SubIFDs",292:"T4Options",293:"T6Options",325:"TileByteCounts",323:"TileLength",324:"TileOffsets",322:"TileWidth",301:"TransferFunction",318:"WhitePoint",344:"XClipPathUnits",286:"XPosition",529:"YCbCrCoefficients",531:"YCbCrPositioning",530:"YCbCrSubSampling",345:"YClipPathUnits",287:"YPosition",37378:"ApertureValue",40961:"ColorSpace",36868:"DateTimeDigitized",36867:"DateTimeOriginal",34665:"Exif IFD",36864:"ExifVersion",33434:"ExposureTime",41728:"FileSource",37385:"Flash",40960:"FlashpixVersion",33437:"FNumber",42016:"ImageUniqueID",37384:"LightSource",37500:"MakerNote",37377:"ShutterSpeedValue",37510:"UserComment",33723:"IPTC",34675:"ICC Profile",700:"XMP",42112:"GDAL_METADATA",42113:"GDAL_NODATA",34377:"Photoshop",33550:"ModelPixelScale",33922:"ModelTiepoint",34264:"ModelTransformation",34735:"GeoKeyDirectory",34736:"GeoDoubleParams",34737:"GeoAsciiParams",50674:"LercParameters"},SA={};for(const A in _A)_A.hasOwnProperty(A)&&(SA[_A[A]]=parseInt(A,10));const xA=[SA.BitsPerSample,SA.ExtraSamples,SA.SampleFormat,SA.StripByteCounts,SA.StripOffsets,SA.StripRowCounts,SA.TileByteCounts,SA.TileOffsets,SA.SubIFDs],FA={1:"BYTE",2:"ASCII",3:"SHORT",4:"LONG",5:"RATIONAL",6:"SBYTE",7:"UNDEFINED",8:"SSHORT",9:"SLONG",10:"SRATIONAL",11:"FLOAT",12:"DOUBLE",13:"IFD",16:"LONG8",17:"SLONG8",18:"IFD8"},GA={};for(const A in FA)FA.hasOwnProperty(A)&&(GA[FA[A]]=parseInt(A,10));const UA=0,RA=1,MA=2,LA=3,vA=5,NA=6,TA=8,qA=0,OA=1,JA=0,HA=1,YA=2,zA={1024:"GTModelTypeGeoKey",1025:"GTRasterTypeGeoKey",1026:"GTCitationGeoKey",2048:"GeographicTypeGeoKey",2049:"GeogCitationGeoKey",2050:"GeogGeodeticDatumGeoKey",2051:"GeogPrimeMeridianGeoKey",2052:"GeogLinearUnitsGeoKey",2053:"GeogLinearUnitSizeGeoKey",2054:"GeogAngularUnitsGeoKey",2055:"GeogAngularUnitSizeGeoKey",2056:"GeogEllipsoidGeoKey",2057:"GeogSemiMajorAxisGeoKey",2058:"GeogSemiMinorAxisGeoKey",2059:"GeogInvFlatteningGeoKey",2060:"GeogAzimuthUnitsGeoKey",2061:"GeogPrimeMeridianLongGeoKey",2062:"GeogTOWGS84GeoKey",3072:"ProjectedCSTypeGeoKey",3073:"PCSCitationGeoKey",3074:"ProjectionGeoKey",3075:"ProjCoordTransGeoKey",3076:"ProjLinearUnitsGeoKey",3077:"ProjLinearUnitSizeGeoKey",3078:"ProjStdParallel1GeoKey",3079:"ProjStdParallel2GeoKey",3080:"ProjNatOriginLongGeoKey",3081:"ProjNatOriginLatGeoKey",3082:"ProjFalseEastingGeoKey",3083:"ProjFalseNorthingGeoKey",3084:"ProjFalseOriginLongGeoKey",3085:"ProjFalseOriginLatGeoKey",3086:"ProjFalseOriginEastingGeoKey",3087:"ProjFalseOriginNorthingGeoKey",3088:"ProjCenterLongGeoKey",3089:"ProjCenterLatGeoKey",3090:"ProjCenterEastingGeoKey",3091:"ProjCenterNorthingGeoKey",3092:"ProjScaleAtNatOriginGeoKey",3093:"ProjScaleAtCenterGeoKey",3094:"ProjAzimuthAngleGeoKey",3095:"ProjStraightVertPoleLongGeoKey",3096:"ProjRectifiedGridAngleGeoKey",4096:"VerticalCSTypeGeoKey",4097:"VerticalCitationGeoKey",4098:"VerticalDatumGeoKey",4099:"VerticalUnitsGeoKey"};const PA=new Map;function KA(A,e){Array.isArray(A)||(A=[A]),A.forEach((A=>PA.set(A,e)))}function VA(A,e,t,i=1){return new(Object.getPrototypeOf(A).constructor)(e*t*i)}function ZA(A,e,t){return(1-t)*A+t*e}function XA(A,e,t,i,r,a="nearest"){switch(a.toLowerCase()){case"nearest":return function(A,e,t,i,r){const a=e/i,n=t/r;return A.map((A=>{const s=VA(A,i,r);for(let o=0;o<r;++o){const r=Math.min(Math.round(n*o),t-1);for(let t=0;t<i;++t){const n=Math.min(Math.round(a*t),e-1),g=A[r*e+n];s[o*i+t]=g}}return s}))}(A,e,t,i,r);case"bilinear":case"linear":return function(A,e,t,i,r){const a=e/i,n=t/r;return A.map((A=>{const s=VA(A,i,r);for(let o=0;o<r;++o){const r=n*o,g=Math.floor(r),l=Math.min(Math.ceil(r),t-1);for(let t=0;t<i;++t){const n=a*t,h=n%1,I=Math.floor(n),B=Math.min(Math.ceil(n),e-1),c=A[g*e+I],C=A[g*e+B],f=A[l*e+I],E=A[l*e+B],Q=ZA(ZA(c,C,h),ZA(f,E,h),r%1);s[o*i+t]=Q}}return s}))}(A,e,t,i,r);default:throw new Error(`Unsupported resampling method: '${a}'`)}}function WA(A,e,t,i,r,a,n="nearest"){switch(n.toLowerCase()){case"nearest":return function(A,e,t,i,r,a){const n=e/i,s=t/r,o=VA(A,i,r,a);for(let g=0;g<r;++g){const r=Math.min(Math.round(s*g),t-1);for(let t=0;t<i;++t){const s=Math.min(Math.round(n*t),e-1);for(let n=0;n<a;++n){const l=A[r*e*a+s*a+n];o[g*i*a+t*a+n]=l}}}return o}(A,e,t,i,r,a);case"bilinear":case"linear":return function(A,e,t,i,r,a){const n=e/i,s=t/r,o=VA(A,i,r,a);for(let g=0;g<r;++g){const r=s*g,l=Math.floor(r),h=Math.min(Math.ceil(r),t-1);for(let t=0;t<i;++t){const s=n*t,I=s%1,B=Math.floor(s),c=Math.min(Math.ceil(s),e-1);for(let n=0;n<a;++n){const s=A[l*e*a+B*a+n],C=A[l*e*a+c*a+n],f=A[h*e*a+B*a+n],E=A[h*e*a+c*a+n],Q=ZA(ZA(s,C,I),ZA(f,E,I),r%1);o[g*i*a+t*a+n]=Q}}}return o}(A,e,t,i,r,a);default:throw new Error(`Unsupported resampling method: '${n}'`)}}function jA(A,e,t){let i=0;for(let r=e;r<t;++r)i+=A[r];return i}function $A(A,e,t){switch(A){case 1:if(e<=8)return new Uint8Array(t);if(e<=16)return new Uint16Array(t);if(e<=32)return new Uint32Array(t);break;case 2:if(8===e)return new Int8Array(t);if(16===e)return new Int16Array(t);if(32===e)return new Int32Array(t);break;case 3:switch(e){case 16:case 32:return new Float32Array(t);case 64:return new Float64Array(t)}}throw Error("Unsupported data format/bitsPerSample")}KA([void 0,1],(()=>Promise.resolve().then((function(){return st})).then((A=>A.default)))),KA(5,(()=>Promise.resolve().then((function(){return ht})).then((A=>A.default)))),KA(6,(()=>{throw new Error("old style JPEG compression is not supported.")})),KA(7,(()=>Promise.resolve().then((function(){return Dt})).then((A=>A.default)))),KA([8,32946],(()=>Promise.resolve().then((function(){return Ra})).then((A=>A.default)))),KA(32773,(()=>Promise.resolve().then((function(){return Ma})).then((A=>A.default)))),KA(34887,(()=>Promise.resolve().then((function(){return Ya})).then((async A=>(await A.zstd.init(),A))).then((A=>A.default)))),KA(50001,(()=>Promise.resolve().then((function(){return za})).then((A=>A.default))));var Ae=class{constructor(A,e,t,i,r,a){this.fileDirectory=A,this.geoKeys=e,this.dataView=t,this.littleEndian=i,this.tiles=r?{}:null,this.isTiled=!A.StripOffsets;const n=A.PlanarConfiguration;if(this.planarConfiguration=void 0===n?1:n,1!==this.planarConfiguration&&2!==this.planarConfiguration)throw new Error("Invalid planar configuration.");this.source=a}getFileDirectory(){return this.fileDirectory}getGeoKeys(){return this.geoKeys}getWidth(){return this.fileDirectory.ImageWidth}getHeight(){return this.fileDirectory.ImageLength}getSamplesPerPixel(){return void 0!==this.fileDirectory.SamplesPerPixel?this.fileDirectory.SamplesPerPixel:1}getTileWidth(){return this.isTiled?this.fileDirectory.TileWidth:this.getWidth()}getTileHeight(){return this.isTiled?this.fileDirectory.TileLength:void 0!==this.fileDirectory.RowsPerStrip?Math.min(this.fileDirectory.RowsPerStrip,this.getHeight()):this.getHeight()}getBlockWidth(){return this.getTileWidth()}getBlockHeight(A){return this.isTiled||(A+1)*this.getTileHeight()<=this.getHeight()?this.getTileHeight():this.getHeight()-A*this.getTileHeight()}getBytesPerPixel(){let A=0;for(let e=0;e<this.fileDirectory.BitsPerSample.length;++e)A+=this.getSampleByteSize(e);return A}getSampleByteSize(A){if(A>=this.fileDirectory.BitsPerSample.length)throw new RangeError(`Sample index ${A} is out of range.`);return Math.ceil(this.fileDirectory.BitsPerSample[A]/8)}getReaderForSample(A){const e=this.fileDirectory.SampleFormat?this.fileDirectory.SampleFormat[A]:1,t=this.fileDirectory.BitsPerSample[A];switch(e){case 1:if(t<=8)return DataView.prototype.getUint8;if(t<=16)return DataView.prototype.getUint16;if(t<=32)return DataView.prototype.getUint32;break;case 2:if(t<=8)return DataView.prototype.getInt8;if(t<=16)return DataView.prototype.getInt16;if(t<=32)return DataView.prototype.getInt32;break;case 3:switch(t){case 16:return function(A,e){return aA(this,A,e)};case 32:return DataView.prototype.getFloat32;case 64:return DataView.prototype.getFloat64}}throw Error("Unsupported data format/bitsPerSample")}getSampleFormat(A=0){return this.fileDirectory.SampleFormat?this.fileDirectory.SampleFormat[A]:1}getBitsPerSample(A=0){return this.fileDirectory.BitsPerSample[A]}getArrayForSample(A,e){return $A(this.getSampleFormat(A),this.getBitsPerSample(A),e)}async getTileOrStrip(A,e,t,i,r){const a=Math.ceil(this.getWidth()/this.getTileWidth()),n=Math.ceil(this.getHeight()/this.getTileHeight());let s;const{tiles:o}=this;let g,l;1===this.planarConfiguration?s=e*a+A:2===this.planarConfiguration&&(s=t*a*n+e*a+A),this.isTiled?(g=this.fileDirectory.TileOffsets[s],l=this.fileDirectory.TileByteCounts[s]):(g=this.fileDirectory.StripOffsets[s],l=this.fileDirectory.StripByteCounts[s]);const h=(await this.source.fetch([{offset:g,length:l}],r))[0];let I;return null!==o&&o[s]?I=o[s]:(I=(async()=>{let A=await i.decode(this.fileDirectory,h);const t=this.getSampleFormat(),r=this.getBitsPerSample();return function(A,e){return(1!==A&&2!==A||!(e<=32)||e%8!=0)&&(3!==A||16!==e&&32!==e&&64!==e)}(t,r)&&(A=function(A,e,t,i,r,a,n){const s=new DataView(A),o=2===t?1:i,g=$A(e,r,2===t?n*a:n*a*i),l=parseInt("1".repeat(r),2);if(1===e){let A;A=1===t?i*r:r;let e=a*A;0!=(7&e)&&(e=e+7&-8);for(let A=0;A<n;++A){const t=A*e;for(let e=0;e<a;++e){const i=t+e*o*r;for(let t=0;t<o;++t){const n=i+t*r,h=(A*a+e)*o+t,I=Math.floor(n/8),B=n%8;if(B+r<=8)g[h]=s.getUint8(I)>>8-r-B&l;else if(B+r<=16)g[h]=s.getUint16(I)>>16-r-B&l;else if(B+r<=24){const A=s.getUint16(I)<<8|s.getUint8(I+2);g[h]=A>>24-r-B&l}else g[h]=s.getUint32(I)>>32-r-B&l}}}}return g.buffer}(A,t,this.planarConfiguration,this.getSamplesPerPixel(),r,this.getTileWidth(),this.getBlockHeight(e))),A})(),null!==o&&(o[s]=I)),{x:A,y:e,sample:t,data:await I}}async _readRaster(A,e,t,i,r,a,n,s,o){const g=this.getTileWidth(),l=this.getTileHeight(),h=this.getWidth(),I=this.getHeight(),B=Math.max(Math.floor(A[0]/g),0),c=Math.min(Math.ceil(A[2]/g),Math.ceil(h/g)),C=Math.max(Math.floor(A[1]/l),0),f=Math.min(Math.ceil(A[3]/l),Math.ceil(I/l)),E=A[2]-A[0];let Q=this.getBytesPerPixel();const d=[],u=[];for(let A=0;A<e.length;++A)1===this.planarConfiguration?d.push(jA(this.fileDirectory.BitsPerSample,0,e[A])/8):d.push(0),u.push(this.getReaderForSample(e[A]));const w=[],{littleEndian:p}=this;for(let a=C;a<f;++a)for(let n=B;n<c;++n){let s;1===this.planarConfiguration&&(s=this.getTileOrStrip(n,a,0,r,o));for(let B=0;B<e.length;++B){const c=B,C=e[B];2===this.planarConfiguration&&(Q=this.getSampleByteSize(C),s=this.getTileOrStrip(n,a,C,r,o));const f=s.then((r=>{const a=r.data,n=new DataView(a),s=this.getBlockHeight(r.y),o=r.y*l,B=r.x*g,C=o+s,f=(r.x+1)*g,w=u[c],m=Math.min(s,s-(C-A[3]),I-o),y=Math.min(g,g-(f-A[2]),h-B);for(let r=Math.max(0,A[1]-o);r<m;++r)for(let a=Math.max(0,A[0]-B);a<y;++a){const s=(r*g+a)*Q,l=w.call(n,s+d[c],p);let h;i?(h=(r+o-A[1])*E*e.length+(a+B-A[0])*e.length+c,t[h]=l):(h=(r+o-A[1])*E+a+B-A[0],t[c][h]=l)}}));w.push(f)}}if(await Promise.all(w),a&&A[2]-A[0]!==a||n&&A[3]-A[1]!==n){let r;return r=i?WA(t,A[2]-A[0],A[3]-A[1],a,n,e.length,s):XA(t,A[2]-A[0],A[3]-A[1],a,n,s),r.width=a,r.height=n,r}return t.width=a||A[2]-A[0],t.height=n||A[3]-A[1],t}async readRasters({window:A,samples:e=[],interleave:t,pool:i=null,width:r,height:a,resampleMethod:n,fillValue:s,signal:o}={}){const g=A||[0,0,this.getWidth(),this.getHeight()];if(g[0]>g[2]||g[1]>g[3])throw new Error("Invalid subsets");const l=(g[2]-g[0])*(g[3]-g[1]),h=this.getSamplesPerPixel();if(e&&e.length){for(let A=0;A<e.length;++A)if(e[A]>=h)return Promise.reject(new RangeError(`Invalid sample index '${e[A]}'.`))}else for(let A=0;A<h;++A)e.push(A);let I;if(t){I=$A(this.fileDirectory.SampleFormat?Math.max.apply(null,this.fileDirectory.SampleFormat):1,Math.max.apply(null,this.fileDirectory.BitsPerSample),l*e.length),s&&I.fill(s)}else{I=[];for(let A=0;A<e.length;++A){const t=this.getArrayForSample(e[A],l);Array.isArray(s)&&A<s.length?t.fill(s[A]):s&&!Array.isArray(s)&&t.fill(s),I.push(t)}}const B=i||await async function(A){const e=PA.get(A.Compression);if(!e)throw new Error(`Unknown compression method identifier: ${A.Compression}`);return new(await e())(A)}(this.fileDirectory);return await this._readRaster(g,e,I,t,B,r,a,n,o)}async readRGB({window:A,interleave:e=!0,pool:t=null,width:i,height:r,resampleMethod:a,enableAlpha:n=!1,signal:s}={}){const o=A||[0,0,this.getWidth(),this.getHeight()];if(o[0]>o[2]||o[1]>o[3])throw new Error("Invalid subsets");const g=this.fileDirectory.PhotometricInterpretation;if(g===MA){let o=[0,1,2];if(this.fileDirectory.ExtraSamples!==qA&&n){o=[];for(let A=0;A<this.fileDirectory.BitsPerSample.length;A+=1)o.push(A)}return this.readRasters({window:A,interleave:e,samples:o,pool:t,width:i,height:r,resampleMethod:a,signal:s})}let l;switch(g){case UA:case RA:case LA:l=[0];break;case vA:l=[0,1,2,3];break;case NA:case TA:l=[0,1,2];break;default:throw new Error("Invalid or unsupported photometric interpretation.")}const h={window:o,interleave:!0,samples:l,pool:t,width:i,height:r,resampleMethod:a,signal:s},{fileDirectory:I}=this,B=await this.readRasters(h),c=2**this.fileDirectory.BitsPerSample[0];let C;switch(g){case UA:C=function(A,e){const{width:t,height:i}=A,r=new Uint8Array(t*i*3);let a;for(let t=0,i=0;t<A.length;++t,i+=3)a=256-A[t]/e*256,r[i]=a,r[i+1]=a,r[i+2]=a;return r}(B,c);break;case RA:C=function(A,e){const{width:t,height:i}=A,r=new Uint8Array(t*i*3);let a;for(let t=0,i=0;t<A.length;++t,i+=3)a=A[t]/e*256,r[i]=a,r[i+1]=a,r[i+2]=a;return r}(B,c);break;case LA:C=function(A,e){const{width:t,height:i}=A,r=new Uint8Array(t*i*3),a=e.length/3,n=e.length/3*2;for(let t=0,i=0;t<A.length;++t,i+=3){const s=A[t];r[i]=e[s]/65536*256,r[i+1]=e[s+a]/65536*256,r[i+2]=e[s+n]/65536*256}return r}(B,I.ColorMap);break;case vA:C=function(A){const{width:e,height:t}=A,i=new Uint8Array(e*t*3);for(let e=0,t=0;e<A.length;e+=4,t+=3){const r=A[e],a=A[e+1],n=A[e+2],s=A[e+3];i[t]=(255-r)/256*255*((255-s)/256),i[t+1]=(255-a)/256*255*((255-s)/256),i[t+2]=(255-n)/256*255*((255-s)/256)}return i}(B);break;case NA:C=function(A){const{width:e,height:t}=A,i=new Uint8ClampedArray(e*t*3);for(let e=0,t=0;e<A.length;e+=3,t+=3){const r=A[e],a=A[e+1],n=A[e+2];i[t]=r+1.402*(n-128),i[t+1]=r-.34414*(a-128)-.71414*(n-128),i[t+2]=r+1.772*(a-128)}return i}(B);break;case TA:C=function(A){const{width:e,height:t}=A,i=new Uint8Array(e*t*3);for(let e=0,t=0;e<A.length;e+=3,t+=3){let r,a,n,s=(A[e+0]+16)/116,o=(A[e+1]<<24>>24)/500+s,g=s-(A[e+2]<<24>>24)/200;o=.95047*(o*o*o>.008856?o*o*o:(o-16/116)/7.787),s=1*(s*s*s>.008856?s*s*s:(s-16/116)/7.787),g=1.08883*(g*g*g>.008856?g*g*g:(g-16/116)/7.787),r=3.2406*o+-1.5372*s+-.4986*g,a=-.9689*o+1.8758*s+.0415*g,n=.0557*o+-.204*s+1.057*g,r=r>.0031308?1.055*r**(1/2.4)-.055:12.92*r,a=a>.0031308?1.055*a**(1/2.4)-.055:12.92*a,n=n>.0031308?1.055*n**(1/2.4)-.055:12.92*n,i[t]=255*Math.max(0,Math.min(1,r)),i[t+1]=255*Math.max(0,Math.min(1,a)),i[t+2]=255*Math.max(0,Math.min(1,n))}return i}(B);break;default:throw new Error("Unsupported photometric interpretation.")}if(!e){const A=new Uint8Array(C.length/3),e=new Uint8Array(C.length/3),t=new Uint8Array(C.length/3);for(let i=0,r=0;i<C.length;i+=3,++r)A[r]=C[i],e[r]=C[i+1],t[r]=C[i+2];C=[A,e,t]}return C.width=B.width,C.height=B.height,C}getTiePoints(){if(!this.fileDirectory.ModelTiepoint)return[];const A=[];for(let e=0;e<this.fileDirectory.ModelTiepoint.length;e+=6)A.push({i:this.fileDirectory.ModelTiepoint[e],j:this.fileDirectory.ModelTiepoint[e+1],k:this.fileDirectory.ModelTiepoint[e+2],x:this.fileDirectory.ModelTiepoint[e+3],y:this.fileDirectory.ModelTiepoint[e+4],z:this.fileDirectory.ModelTiepoint[e+5]});return A}getGDALMetadata(A=null){const e={};if(!this.fileDirectory.GDAL_METADATA)return null;const t=this.fileDirectory.GDAL_METADATA;let i=bA(t,"Item");i=null===A?i.filter((A=>void 0===gA(A,"sample"))):i.filter((e=>Number(gA(e,"sample"))===A));for(let A=0;A<i.length;++A){const t=i[A];e[gA(t,"name")]=t.inner}return e}getGDALNoData(){if(!this.fileDirectory.GDAL_NODATA)return null;const A=this.fileDirectory.GDAL_NODATA;return Number(A.substring(0,A.length-1))}getOrigin(){const A=this.fileDirectory.ModelTiepoint,e=this.fileDirectory.ModelTransformation;if(A&&6===A.length)return[A[3],A[4],A[5]];if(e)return[e[3],e[7],e[11]];throw new Error("The image does not have an affine transformation.")}getResolution(A=null){const e=this.fileDirectory.ModelPixelScale,t=this.fileDirectory.ModelTransformation;if(e)return[e[0],-e[1],e[2]];if(t)return 0===t[1]&&0===t[4]?[t[0],-t[5],t[10]]:[Math.sqrt(t[0]*t[0]+t[4]*t[4]),-Math.sqrt(t[1]*t[1]+t[5]*t[5]),t[10]];if(A){const[e,t,i]=A.getResolution();return[e*A.getWidth()/this.getWidth(),t*A.getHeight()/this.getHeight(),i*A.getWidth()/this.getWidth()]}throw new Error("The image does not have an affine transformation.")}pixelIsArea(){return 1===this.geoKeys.GTRasterTypeGeoKey}getBoundingBox(A=!1){const e=this.getHeight(),t=this.getWidth();if(this.fileDirectory.ModelTransformation&&!A){const[A,i,r,a,n,s,o,g]=this.fileDirectory.ModelTransformation,l=[[0,0],[0,e],[t,0],[t,e]].map((([e,t])=>[a+A*e+i*t,g+n*e+s*t])),h=l.map((A=>A[0])),I=l.map((A=>A[1]));return[Math.min(...h),Math.min(...I),Math.max(...h),Math.max(...I)]}{const A=this.getOrigin(),i=this.getResolution(),r=A[0],a=A[1],n=r+i[0]*t,s=a+i[1]*e;return[Math.min(r,n),Math.min(a,s),Math.max(r,n),Math.max(a,s)]}}};class ee{constructor(A){this._dataView=new DataView(A)}get buffer(){return this._dataView.buffer}getUint64(A,e){const t=this.getUint32(A,e),i=this.getUint32(A+4,e);let r;if(e){if(r=t+2**32*i,!Number.isSafeInteger(r))throw new Error(`${r} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return r}if(r=2**32*t+i,!Number.isSafeInteger(r))throw new Error(`${r} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return r}getInt64(A,e){let t=0;const i=(128&this._dataView.getUint8(A+(e?7:0)))>0;let r=!0;for(let a=0;a<8;a++){let n=this._dataView.getUint8(A+(e?a:7-a));i&&(r?0!==n&&(n=255&~(n-1),r=!1):n=255&~n),t+=n*256**a}return i&&(t=-t),t}getUint8(A,e){return this._dataView.getUint8(A,e)}getInt8(A,e){return this._dataView.getInt8(A,e)}getUint16(A,e){return this._dataView.getUint16(A,e)}getInt16(A,e){return this._dataView.getInt16(A,e)}getUint32(A,e){return this._dataView.getUint32(A,e)}getInt32(A,e){return this._dataView.getInt32(A,e)}getFloat16(A,e){return aA(this._dataView,A,e)}getFloat32(A,e){return this._dataView.getFloat32(A,e)}getFloat64(A,e){return this._dataView.getFloat64(A,e)}}class te{constructor(A,e,t,i){this._dataView=new DataView(A),this._sliceOffset=e,this._littleEndian=t,this._bigTiff=i}get sliceOffset(){return this._sliceOffset}get sliceTop(){return this._sliceOffset+this.buffer.byteLength}get littleEndian(){return this._littleEndian}get bigTiff(){return this._bigTiff}get buffer(){return this._dataView.buffer}covers(A,e){return this.sliceOffset<=A&&this.sliceTop>=A+e}readUint8(A){return this._dataView.getUint8(A-this._sliceOffset,this._littleEndian)}readInt8(A){return this._dataView.getInt8(A-this._sliceOffset,this._littleEndian)}readUint16(A){return this._dataView.getUint16(A-this._sliceOffset,this._littleEndian)}readInt16(A){return this._dataView.getInt16(A-this._sliceOffset,this._littleEndian)}readUint32(A){return this._dataView.getUint32(A-this._sliceOffset,this._littleEndian)}readInt32(A){return this._dataView.getInt32(A-this._sliceOffset,this._littleEndian)}readFloat32(A){return this._dataView.getFloat32(A-this._sliceOffset,this._littleEndian)}readFloat64(A){return this._dataView.getFloat64(A-this._sliceOffset,this._littleEndian)}readUint64(A){const e=this.readUint32(A),t=this.readUint32(A+4);let i;if(this._littleEndian){if(i=e+2**32*t,!Number.isSafeInteger(i))throw new Error(`${i} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return i}if(i=2**32*e+t,!Number.isSafeInteger(i))throw new Error(`${i} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return i}readInt64(A){let e=0;const t=(128&this._dataView.getUint8(A+(this._littleEndian?7:0)))>0;let i=!0;for(let r=0;r<8;r++){let a=this._dataView.getUint8(A+(this._littleEndian?r:7-r));t&&(i?0!==a&&(a=255&~(a-1),i=!1):a=255&~a),e+=a*256**r}return t&&(e=-e),e}readOffset(A){return this._bigTiff?this.readUint64(A):this.readUint32(A)}}const ie="\r\n\r\n";function re(A){if(void 0!==Object.fromEntries)return Object.fromEntries(A);const e={};for(const[t,i]of A)e[t.toLowerCase()]=i;return e}function ae(A){return re(A.split("\r\n").map((A=>{const e=A.split(":").map((A=>A.trim()));return e[0]=e[0].toLowerCase(),e})))}function ne(A){let e,t,i;return A&&([,e,t,i]=A.match(/bytes (\d+)-(\d+)\/(\d+)/),e=parseInt(e,10),t=parseInt(t,10),i=parseInt(i,10)),{start:e,end:t,total:i}}class se{async fetch(A,e=undefined){return Promise.all(A.map((A=>this.fetchSlice(A,e))))}async fetchSlice(A){throw new Error(`fetching of slice ${A} not possible, not implemented`)}get fileSize(){return null}async close(){}}class oe extends Map{constructor(A={}){if(super(),!(A.maxSize&&A.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");if("number"==typeof A.maxAge&&0===A.maxAge)throw new TypeError("`maxAge` must be a number greater than 0");this.maxSize=A.maxSize,this.maxAge=A.maxAge||Number.POSITIVE_INFINITY,this.onEviction=A.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_emitEvictions(A){if("function"==typeof this.onEviction)for(const[e,t]of A)this.onEviction(e,t.value)}_deleteIfExpired(A,e){return"number"==typeof e.expiry&&e.expiry<=Date.now()&&("function"==typeof this.onEviction&&this.onEviction(A,e.value),this.delete(A))}_getOrDeleteIfExpired(A,e){if(!1===this._deleteIfExpired(A,e))return e.value}_getItemValue(A,e){return e.expiry?this._getOrDeleteIfExpired(A,e):e.value}_peek(A,e){const t=e.get(A);return this._getItemValue(A,t)}_set(A,e){this.cache.set(A,e),this._size++,this._size>=this.maxSize&&(this._size=0,this._emitEvictions(this.oldCache),this.oldCache=this.cache,this.cache=new Map)}_moveToRecent(A,e){this.oldCache.delete(A),this._set(A,e)}*_entriesAscending(){for(const A of this.oldCache){const[e,t]=A;if(!this.cache.has(e)){!1===this._deleteIfExpired(e,t)&&(yield A)}}for(const A of this.cache){const[e,t]=A;!1===this._deleteIfExpired(e,t)&&(yield A)}}get(A){if(this.cache.has(A)){const e=this.cache.get(A);return this._getItemValue(A,e)}if(this.oldCache.has(A)){const e=this.oldCache.get(A);if(!1===this._deleteIfExpired(A,e))return this._moveToRecent(A,e),e.value}}set(A,e,{maxAge:t=this.maxAge}={}){const i="number"==typeof t&&t!==Number.POSITIVE_INFINITY?Date.now()+t:void 0;this.cache.has(A)?this.cache.set(A,{value:e,expiry:i}):this._set(A,{value:e,expiry:i})}has(A){return this.cache.has(A)?!this._deleteIfExpired(A,this.cache.get(A)):!!this.oldCache.has(A)&&!this._deleteIfExpired(A,this.oldCache.get(A))}peek(A){return this.cache.has(A)?this._peek(A,this.cache):this.oldCache.has(A)?this._peek(A,this.oldCache):void 0}delete(A){const e=this.cache.delete(A);return e&&this._size--,this.oldCache.delete(A)||e}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}resize(A){if(!(A&&A>0))throw new TypeError("`maxSize` must be a number greater than 0");const e=[...this._entriesAscending()],t=e.length-A;t<0?(this.cache=new Map(e),this.oldCache=new Map,this._size=e.length):(t>0&&this._emitEvictions(e.slice(0,t)),this.oldCache=new Map(e.slice(t)),this.cache=new Map,this._size=0),this.maxSize=A}*keys(){for(const[A]of this)yield A}*values(){for(const[,A]of this)yield A}*[Symbol.iterator](){for(const A of this.cache){const[e,t]=A;!1===this._deleteIfExpired(e,t)&&(yield[e,t.value])}for(const A of this.oldCache){const[e,t]=A;if(!this.cache.has(e)){!1===this._deleteIfExpired(e,t)&&(yield[e,t.value])}}}*entriesDescending(){let A=[...this.cache];for(let e=A.length-1;e>=0;--e){const t=A[e],[i,r]=t;!1===this._deleteIfExpired(i,r)&&(yield[i,r.value])}A=[...this.oldCache];for(let e=A.length-1;e>=0;--e){const t=A[e],[i,r]=t;if(!this.cache.has(i)){!1===this._deleteIfExpired(i,r)&&(yield[i,r.value])}}}*entriesAscending(){for(const[A,e]of this._entriesAscending())yield[A,e.value]}get size(){if(!this._size)return this.oldCache.size;let A=0;for(const e of this.oldCache.keys())this.cache.has(e)||A++;return Math.min(this._size+A,this.maxSize)}entries(){return this.entriesAscending()}forEach(A,e=this){for(const[t,i]of this.entriesAscending())A.call(e,i,t,this)}get[Symbol.toStringTag](){return JSON.stringify([...this.entriesAscending()])}}class ge extends Error{constructor(A){super(A),Error.captureStackTrace&&Error.captureStackTrace(this,ge),this.name="AbortError"}}class le extends Error{constructor(A,e){super(e),this.errors=A,this.message=e,this.name="AggregateError"}}const he=le;class Ie{constructor(A,e,t=null){this.offset=A,this.length=e,this.data=t}get top(){return this.offset+this.length}}class Be{constructor(A,e,t){this.offset=A,this.length=e,this.blockIds=t}}class ce extends se{constructor(A,{blockSize:e=65536,cacheSize:t=100}={}){super(),this.source=A,this.blockSize=e,this.blockCache=new oe({maxSize:t,onEviction:(A,e)=>{this.evictedBlocks.set(A,e)}}),this.evictedBlocks=new Map,this.blockRequests=new Map,this.blockIdsToFetch=new Set,this.abortedBlockIds=new Set}get fileSize(){return this.source.fileSize}async fetch(A,e){const t=[],i=[],r=[];this.evictedBlocks.clear();for(const{offset:e,length:a}of A){let A=e+a;const{fileSize:n}=this;null!==n&&(A=Math.min(A,n));for(let a=Math.floor(e/this.blockSize)*this.blockSize;a<A;a+=this.blockSize){const A=Math.floor(a/this.blockSize);this.blockCache.has(A)||this.blockRequests.has(A)||(this.blockIdsToFetch.add(A),i.push(A)),this.blockRequests.has(A)&&t.push(this.blockRequests.get(A)),r.push(A)}}await async function(A){return new Promise((e=>setTimeout(e,A)))}(),this.fetchBlocks(e);const a=[];for(const A of i)this.blockRequests.has(A)&&a.push(this.blockRequests.get(A));await Promise.allSettled(t),await Promise.allSettled(a);const n=[],s=r.filter((A=>this.abortedBlockIds.has(A)||!this.blockCache.has(A)));if(s.forEach((A=>this.blockIdsToFetch.add(A))),s.length>0&&e&&!e.aborted){this.fetchBlocks(null);for(const A of s){const e=this.blockRequests.get(A);if(!e)throw new Error(`Block ${A} is not in the block requests`);n.push(e)}await Promise.allSettled(n)}if(e&&e.aborted)throw new ge("Request was aborted");const o=r.map((A=>this.blockCache.get(A)||this.evictedBlocks.get(A))),g=o.filter((A=>!A));if(g.length)throw new he(g,"Request failed");const l=new Map(function(A,e){const t=Array.isArray(A)?A:Array.from(A),i=Array.isArray(e)?e:Array.from(e);return t.map(((A,e)=>[A,i[e]]))}(r,o));return this.readSliceData(A,l)}fetchBlocks(A){if(this.blockIdsToFetch.size>0){const e=this.groupBlocks(this.blockIdsToFetch),t=this.source.fetch(e,A);for(let i=0;i<e.length;++i){const r=e[i];for(const e of r.blockIds)this.blockRequests.set(e,(async()=>{try{const A=(await t)[i],r=e*this.blockSize,a=r-A.offset,n=Math.min(a+this.blockSize,A.data.byteLength),s=A.data.slice(a,n),o=new Ie(r,s.byteLength,s,e);this.blockCache.set(e,o),this.abortedBlockIds.delete(e)}catch(t){if("AbortError"!==t.name)throw t;t.signal=A,this.blockCache.delete(e),this.abortedBlockIds.add(e)}finally{this.blockRequests.delete(e)}})())}this.blockIdsToFetch.clear()}}groupBlocks(A){const e=Array.from(A).sort(((A,e)=>A-e));if(0===e.length)return[];let t=[],i=null;const r=[];for(const A of e)null===i||i+1===A?(t.push(A),i=A):(r.push(new Be(t[0]*this.blockSize,t.length*this.blockSize,t)),t=[A],i=A);return r.push(new Be(t[0]*this.blockSize,t.length*this.blockSize,t)),r}readSliceData(A,e){return A.map((A=>{let t=A.offset+A.length;null!==this.fileSize&&(t=Math.min(this.fileSize,t));const i=Math.floor(A.offset/this.blockSize),r=Math.floor(t/this.blockSize),a=new ArrayBuffer(A.length),n=new Uint8Array(a);for(let a=i;a<=r;++a){const i=e.get(a),r=i.offset-A.offset;let s,o=0,g=0;r<0?o=-r:r>0&&(g=r),s=i.top-t<0?i.length-o:t-i.offset-o;const l=new Uint8Array(i.data,o,s);n.set(l,g)}return a}))}}class Ce{get ok(){return this.status>=200&&this.status<=299}get status(){throw new Error("not implemented")}getHeader(A){throw new Error("not implemented")}async getData(){throw new Error("not implemented")}}class fe{constructor(A){this.url=A}async request({headers:A,signal:e}={}){throw new Error("request is not implemented")}}class Ee extends Ce{constructor(A){super(),this.response=A}get status(){return this.response.status}getHeader(A){return this.response.headers.get(A)}async getData(){return this.response.arrayBuffer?await this.response.arrayBuffer():(await this.response.buffer()).buffer}}class Qe extends fe{constructor(A,e){super(A),this.credentials=e}async request({headers:A,signal:e}={}){const t=await fetch(this.url,{headers:A,credentials:this.credentials,signal:e});return new Ee(t)}}class de extends Ce{constructor(A,e){super(),this.xhr=A,this.data=e}get status(){return this.xhr.status}getHeader(A){return this.xhr.getResponseHeader(A)}async getData(){return this.data}}class ue extends fe{constructRequest(A,e){return new Promise(((t,i)=>{const r=new XMLHttpRequest;r.open("GET",this.url),r.responseType="arraybuffer";for(const[e,t]of Object.entries(A))r.setRequestHeader(e,t);r.onload=()=>{const A=r.response;t(new de(r,A))},r.onerror=i,r.onabort=()=>i(new ge("Request aborted")),r.send(),e&&(e.aborted&&r.abort(),e.addEventListener("abort",(()=>r.abort())))}))}async request({headers:A,signal:e}={}){return await this.constructRequest(A,e)}}var we={};class pe extends Ce{constructor(A,e){super(),this.response=A,this.dataPromise=e}get status(){return this.response.statusCode}getHeader(A){return this.response.headers[A]}async getData(){return await this.dataPromise}}class me extends fe{constructor(A){super(A),this.parsedUrl=we.parse(this.url),this.httpApi=(this.parsedUrl.protocol,we)}constructRequest(A,e){return new Promise(((t,i)=>{const r=this.httpApi.get({...this.parsedUrl,headers:A},(A=>{const e=new Promise((e=>{const t=[];A.on("data",(A=>{t.push(A)})),A.on("end",(()=>{const A=Buffer.concat(t).buffer;e(A)})),A.on("error",i)}));t(new pe(A,e))}));r.on("error",i),e&&(e.aborted&&r.destroy(new ge("Request aborted")),e.addEventListener("abort",(()=>r.destroy(new ge("Request aborted")))))}))}async request({headers:A,signal:e}={}){return await this.constructRequest(A,e)}}class ye extends se{constructor(A,e,t,i){super(),this.client=A,this.headers=e,this.maxRanges=t,this.allowFullFile=i,this._fileSize=null}async fetch(A,e){return this.maxRanges>=A.length?this.fetchSlices(A,e):(this.maxRanges>0&&A.length,Promise.all(A.map((A=>this.fetchSlice(A,e)))))}async fetchSlices(A,e){const t=await this.client.request({headers:{...this.headers,Range:`bytes=${A.map((({offset:A,length:e})=>`${A}-${A+e}`)).join(",")}`},signal:e});if(t.ok){if(206===t.status){const{type:i,params:r}=function(A){const[e,...t]=A.split(";").map((A=>A.trim()));return{type:e,params:re(t.map((A=>A.split("="))))}}(t.getHeader("content-type"));if("multipart/byteranges"===i){const A=function(A,e){let t=null;const i=new TextDecoder("ascii"),r=[],a=`--${e}`,n=`${a}--`;for(let e=0;e<10;++e)i.decode(new Uint8Array(A,e,a.length))===a&&(t=e);if(null===t)throw new Error("Could not find initial boundary");for(;t<A.byteLength;){const e=i.decode(new Uint8Array(A,t,Math.min(a.length+1024,A.byteLength-t)));if(0===e.length||e.startsWith(n))break;if(!e.startsWith(a))throw new Error("Part does not start with boundary");const s=e.substr(a.length+2);if(0===s.length)break;const o=s.indexOf(ie),g=ae(s.substr(0,o)),{start:l,end:h,total:I}=ne(g["content-range"]),B=t+a.length+o+ie.length,c=parseInt(h,10)+1-parseInt(l,10);r.push({headers:g,data:A.slice(B,B+c),offset:l,length:c,fileSize:I}),t=B+c+4}return r}(await t.getData(),r.boundary);return this._fileSize=A[0].fileSize||null,A}const a=await t.getData(),{start:n,end:s,total:o}=ne(t.getHeader("content-range"));this._fileSize=o||null;const g=[{data:a,offset:n,length:s-n}];if(A.length>1){const t=await Promise.all(A.slice(1).map((A=>this.fetchSlice(A,e))));return g.concat(t)}return g}{if(!this.allowFullFile)throw new Error("Server responded with full file");const A=await t.getData();return this._fileSize=A.byteLength,[{data:A,offset:0,length:A.byteLength}]}}throw new Error("Error fetching data.")}async fetchSlice(A,e){const{offset:t,length:i}=A,r=await this.client.request({headers:{...this.headers,Range:`bytes=${t}-${t+i}`},signal:e});if(r.ok){if(206===r.status){const A=await r.getData(),{total:e}=ne(r.getHeader("content-range"));return this._fileSize=e||null,{data:A,offset:t,length:i}}{if(!this.allowFullFile)throw new Error("Server responded with full file");const A=await r.getData();return this._fileSize=A.byteLength,{data:A,offset:0,length:A.byteLength}}}throw new Error("Error fetching data.")}get fileSize(){return this._fileSize}}function De(A,{blockSize:e,cacheSize:t}){return null===e?A:new ce(A,{blockSize:e,cacheSize:t})}function ke(A,{forceXHR:e=!1,...t}={}){return"function"!=typeof fetch||e?"undefined"!=typeof XMLHttpRequest?function(A,{headers:e={},maxRanges:t=0,allowFullFile:i=!1,...r}={}){const a=new ue(A);return De(new ye(a,e,t,i),r)}(A,t):function(A,{headers:e={},maxRanges:t=0,allowFullFile:i=!1,...r}={}){const a=new me(A);return De(new ye(a,e,t,i),r)}(A,t):function(A,{headers:e={},credentials:t,maxRanges:i=0,allowFullFile:r=!1,...a}={}){const n=new Qe(A,t);return De(new ye(n,e,i,r),a)}(A,t)}class be extends se{constructor(A){super(),this.arrayBuffer=A}fetchSlice(A,e){if(e&&e.aborted)throw new ge("Request aborted");return this.arrayBuffer.slice(A.offset,A.offset+A.length)}}function _e(A,e){let t=A.length-e,i=0;do{for(let t=e;t>0;t--)A[i+e]+=A[i],i++;t-=e}while(t>0)}function Se(A,e,t){let i=0,r=A.length;const a=r/t;for(;r>e;){for(let t=e;t>0;--t)A[i+e]+=A[i],++i;r-=e}const n=A.slice();for(let e=0;e<a;++e)for(let i=0;i<t;++i)A[t*e+i]=n[(t-i-1)*a+e]}class xe{async decode(A,e){const t=await this.decodeBlock(e),i=A.Predictor||1;if(1!==i){const e=!A.StripOffsets;return function(A,e,t,i,r,a){if(!e||1===e)return A;for(let A=0;A<r.length;++A){if(r[A]%8!=0)throw new Error("When decoding with predictor, only multiple of 8 bits are supported.");if(r[A]!==r[0])throw new Error("When decoding with predictor, all samples must have the same size.")}const n=r[0]/8,s=2===a?1:r.length;for(let a=0;a<i&&!(a*s*t*n>=A.byteLength);++a){let i;if(2===e){switch(r[0]){case 8:i=new Uint8Array(A,a*s*t*n,s*t*n);break;case 16:i=new Uint16Array(A,a*s*t*n,s*t*n/2);break;case 32:i=new Uint32Array(A,a*s*t*n,s*t*n/4);break;default:throw new Error(`Predictor 2 not allowed with ${r[0]} bits per sample.`)}_e(i,s)}else 3===e&&(i=new Uint8Array(A,a*s*t*n,s*t*n),Se(i,s,n))}return A}(t,i,e?A.TileWidth:A.ImageWidth,e?A.TileLength:A.RowsPerStrip||A.ImageLength,A.BitsPerSample,A.PlanarConfiguration)}return t}}function Fe(A){switch(A){case GA.BYTE:case GA.ASCII:case GA.SBYTE:case GA.UNDEFINED:return 1;case GA.SHORT:case GA.SSHORT:return 2;case GA.LONG:case GA.SLONG:case GA.FLOAT:case GA.IFD:return 4;case GA.RATIONAL:case GA.SRATIONAL:case GA.DOUBLE:case GA.LONG8:case GA.SLONG8:case GA.IFD8:return 8;default:throw new RangeError(`Invalid field type: ${A}`)}}function Ge(A,e,t,i){let r=null,a=null;const n=Fe(e);switch(e){case GA.BYTE:case GA.ASCII:case GA.UNDEFINED:r=new Uint8Array(t),a=A.readUint8;break;case GA.SBYTE:r=new Int8Array(t),a=A.readInt8;break;case GA.SHORT:r=new Uint16Array(t),a=A.readUint16;break;case GA.SSHORT:r=new Int16Array(t),a=A.readInt16;break;case GA.LONG:case GA.IFD:r=new Uint32Array(t),a=A.readUint32;break;case GA.SLONG:r=new Int32Array(t),a=A.readInt32;break;case GA.LONG8:case GA.IFD8:r=new Array(t),a=A.readUint64;break;case GA.SLONG8:r=new Array(t),a=A.readInt64;break;case GA.RATIONAL:r=new Uint32Array(2*t),a=A.readUint32;break;case GA.SRATIONAL:r=new Int32Array(2*t),a=A.readInt32;break;case GA.FLOAT:r=new Float32Array(t),a=A.readFloat32;break;case GA.DOUBLE:r=new Float64Array(t),a=A.readFloat64;break;default:throw new RangeError(`Invalid field type: ${e}`)}if(e!==GA.RATIONAL&&e!==GA.SRATIONAL)for(let e=0;e<t;++e)r[e]=a.call(A,i+e*n);else for(let e=0;e<t;e+=2)r[e]=a.call(A,i+e*n),r[e+1]=a.call(A,i+(e*n+4));return e===GA.ASCII?new TextDecoder("utf-8").decode(r):r}class Ue{constructor(A,e,t){this.fileDirectory=A,this.geoKeyDirectory=e,this.nextIFDByteOffset=t}}class Re extends Error{constructor(A){super(`No image at index ${A}`),this.index=A}}class Me{async readRasters(A={}){const{window:e,width:t,height:i}=A;let{resX:r,resY:a,bbox:n}=A;const s=await this.getImage();let o=s;const g=await this.getImageCount(),l=s.getBoundingBox();if(e&&n)throw new Error('Both "bbox" and "window" passed.');if(t||i){if(e){const[A,t]=s.getOrigin(),[i,r]=s.getResolution();n=[A+e[0]*i,t+e[1]*r,A+e[2]*i,t+e[3]*r]}const A=n||l;if(t){if(r)throw new Error("Both width and resX passed");r=(A[2]-A[0])/t}if(i){if(a)throw new Error("Both width and resY passed");a=(A[3]-A[1])/i}}if(r||a){const A=[];for(let e=0;e<g;++e){const t=await this.getImage(e),{SubfileType:i,NewSubfileType:r}=t.fileDirectory;(0===e||2===i||1&r)&&A.push(t)}A.sort(((A,e)=>A.getWidth()-e.getWidth()));for(let e=0;e<A.length;++e){const t=A[e],i=(l[2]-l[0])/t.getWidth(),n=(l[3]-l[1])/t.getHeight();if(o=t,r&&r>i||a&&a>n)break}}let h=e;if(n){const[A,e]=s.getOrigin(),[t,i]=o.getResolution(s);h=[Math.round((n[0]-A)/t),Math.round((n[1]-e)/i),Math.round((n[2]-A)/t),Math.round((n[3]-e)/i)],h=[Math.min(h[0],h[2]),Math.min(h[1],h[3]),Math.max(h[0],h[2]),Math.max(h[1],h[3])]}return o.readRasters({...A,window:h})}}class Le extends Me{constructor(A,e,t,i,r={}){super(),this.source=A,this.littleEndian=e,this.bigTiff=t,this.firstIFDOffset=i,this.cache=r.cache||!1,this.ifdRequests=[],this.ghostValues=null}async getSlice(A,e){const t=this.bigTiff?4048:1024;return new te((await this.source.fetch([{offset:A,length:void 0!==e?e:t}]))[0],A,this.littleEndian,this.bigTiff)}async parseFileDirectoryAt(A){const e=this.bigTiff?20:12,t=this.bigTiff?8:2;let i=await this.getSlice(A);const r=this.bigTiff?i.readUint64(A):i.readUint16(A),a=r*e+(this.bigTiff?16:6);i.covers(A,a)||(i=await this.getSlice(A,a));const n={};let s=A+(this.bigTiff?8:2);for(let A=0;A<r;s+=e,++A){const A=i.readUint16(s),e=i.readUint16(s+2),t=this.bigTiff?i.readUint64(s+4):i.readUint32(s+4);let r,a;const o=Fe(e),g=s+(this.bigTiff?12:8);if(o*t<=(this.bigTiff?8:4))r=Ge(i,e,t,g);else{const A=i.readOffset(g),a=Fe(e)*t;if(i.covers(A,a))r=Ge(i,e,t,A);else{r=Ge(await this.getSlice(A,a),e,t,A)}}a=1===t&&-1===xA.indexOf(A)&&e!==GA.RATIONAL&&e!==GA.SRATIONAL?r[0]:r,n[_A[A]]=a}const o=function(A){const e=A.GeoKeyDirectory;if(!e)return null;const t={};for(let i=4;i<=4*e[3];i+=4){const r=zA[e[i]],a=e[i+1]?_A[e[i+1]]:null,n=e[i+2],s=e[i+3];let o=null;if(a){if(o=A[a],null==o)throw new Error(`Could not get value of geoKey '${r}'.`);"string"==typeof o?o=o.substring(s,s+n-1):o.subarray&&(o=o.subarray(s,s+n),1===n&&(o=o[0]))}else o=s;t[r]=o}return t}(n),g=i.readOffset(A+t+e*r);return new Ue(n,o,g)}async requestIFD(A){if(this.ifdRequests[A])return this.ifdRequests[A];if(0===A)return this.ifdRequests[A]=this.parseFileDirectoryAt(this.firstIFDOffset),this.ifdRequests[A];if(!this.ifdRequests[A-1])try{this.ifdRequests[A-1]=this.requestIFD(A-1)}catch(e){if(e instanceof Re)throw new Re(A);throw e}return this.ifdRequests[A]=(async()=>{const e=await this.ifdRequests[A-1];if(0===e.nextIFDByteOffset)throw new Re(A);return this.parseFileDirectoryAt(e.nextIFDByteOffset)})(),this.ifdRequests[A]}async getImage(A=0){const e=await this.requestIFD(A);return new Ae(e.fileDirectory,e.geoKeyDirectory,this.dataView,this.littleEndian,this.cache,this.source)}async getImageCount(){let A=0,e=!0;for(;e;)try{await this.requestIFD(A),++A}catch(A){if(!(A instanceof Re))throw A;e=!1}return A}async getGhostValues(){const A=this.bigTiff?16:8;if(this.ghostValues)return this.ghostValues;const e="GDAL_STRUCTURAL_METADATA_SIZE=",t=e.length+100;let i=await this.getSlice(A,t);if(e===Ge(i,GA.ASCII,e.length,A)){const e=Ge(i,GA.ASCII,t,A).split("\n")[0],r=Number(e.split("=")[1].split(" ")[0])+e.length;r>t&&(i=await this.getSlice(A,r));const a=Ge(i,GA.ASCII,r,A);this.ghostValues={},a.split("\n").filter((A=>A.length>0)).map((A=>A.split("="))).forEach((([A,e])=>{this.ghostValues[A]=e}))}return this.ghostValues}static async fromSource(A,e,t){const i=(await A.fetch([{offset:0,length:1024}],t))[0],r=new ee(i),a=r.getUint16(0,0);let n;if(18761===a)n=!0;else{if(19789!==a)throw new TypeError("Invalid byte order value.");n=!1}const s=r.getUint16(2,n);let o;if(42===s)o=!1;else{if(43!==s)throw new TypeError("Invalid magic number.");o=!0;if(8!==r.getUint16(4,n))throw new Error("Unsupported offset byte-size.")}const g=o?r.getUint64(8,n):r.getUint32(4,n);return new Le(A,n,o,g,e)}close(){return"function"==typeof this.source.close&&this.source.close()}}async function ve(A,e){return Le.fromSource(function(A){return new be(A)}(A),e)}const Ne=Math.PI,Te=Ne/4,qe=180/Ne;class Oe{constructor(A=257){this.gridSize=A;const e=A-1;if(e&e-1)throw new Error(`Expected grid size to be 2^n+1, got ${A}.`);this.numTriangles=e*e*2-2,this.numParentTriangles=this.numTriangles-e*e,this.indices=new Uint32Array(this.gridSize*this.gridSize),this.coords=new Uint16Array(4*this.numTriangles);for(let A=0;A<this.numTriangles;A++){let t=A+2,i=0,r=0,a=0,n=0,s=0,o=0;for(1&t?a=n=s=e:i=r=o=e;(t>>=1)>1;){const A=i+a>>1,e=r+n>>1;1&t?(a=i,n=r,i=s,r=o):(i=a,r=n,a=s,n=o),s=A,o=e}const g=4*A;this.coords[g+0]=i,this.coords[g+1]=r,this.coords[g+2]=a,this.coords[g+3]=n}}createTile(A){return new Je(A,this)}}class Je{constructor(A,e){const t=e.gridSize;if(A.length!==t*t)throw new Error(`Expected terrain data of length ${t*t} (${t} x ${t}), got ${A.length}.`);this.terrain=A,this.martini=e,this.errors=new Float32Array(A.length),this.update()}update(){const{numTriangles:A,numParentTriangles:e,coords:t,gridSize:i}=this.martini,{terrain:r,errors:a}=this;for(let n=A-1;n>=0;n--){const A=4*n,s=t[A+0],o=t[A+1],g=t[A+2],l=t[A+3],h=s+g>>1,I=o+l>>1,B=h+I-o,c=I+s-h,C=(r[o*i+s]+r[l*i+g])/2,f=I*i+h,E=Math.abs(C-r[f]);if(a[f]=Math.max(a[f],E),n<e){const A=(o+c>>1)*i+(s+B>>1),e=(l+c>>1)*i+(g+B>>1);a[f]=Math.max(a[f],a[A],a[e])}}}getMesh(A=0){const{gridSize:e,indices:t}=this.martini,{errors:i}=this;let r=0,a=0;const n=e-1;function s(n,o,g,l,h,I){const B=n+g>>1,c=o+l>>1;Math.abs(n-h)+Math.abs(o-I)>1&&i[c*e+B]>A?(s(h,I,n,o,B,c),s(g,l,h,I,B,c)):(t[o*e+n]=t[o*e+n]||++r,t[l*e+g]=t[l*e+g]||++r,t[I*e+h]=t[I*e+h]||++r,a++)}t.fill(0),s(0,0,n,n,n,0),s(n,n,0,0,0,n);const o=new Uint16Array(2*r),g=new Uint32Array(3*a);let l=0;function h(r,a,n,s,I,B){const c=r+n>>1,C=a+s>>1;if(Math.abs(r-I)+Math.abs(a-B)>1&&i[C*e+c]>A)h(I,B,r,a,c,C),h(n,s,I,B,c,C);else{const A=t[a*e+r]-1,i=t[s*e+n]-1,h=t[B*e+I]-1;o[2*A]=r,o[2*A+1]=a,o[2*i]=n,o[2*i+1]=s,o[2*h]=I,o[2*h+1]=B,g[l++]=A,g[l++]=i,g[l++]=h}}return h(0,0,n,n,n,0),h(n,n,0,0,0,n),{vertices:o,triangles:g}}}function He(A,e,t,i){const r=i?function(A,e){A.westIndices.sort(((A,t)=>e[3*A+1]-e[3*t+1])),A.eastIndices.sort(((A,t)=>e[3*t+1]-e[3*A+1])),A.southIndices.sort(((A,t)=>e[3*t]-e[3*A])),A.northIndices.sort(((A,t)=>e[3*A]-e[3*t]));const t=[];for(const e in A){const i=A[e];for(let A=0;A<i.length-1;A++)t.push([i[A],i[A+1]])}return t}(i,A.POSITION.value):function(A){var e,t;const i=[];for(let e=0;e<A.length;e+=3)i.push([A[e],A[e+1]]),i.push([A[e+1],A[e+2]]),i.push([A[e+2],A[e]]);i.sort(((A,e)=>Math.min(...A)-Math.min(...e)||Math.max(...A)-Math.max(...e)));const r=[];let a=0;for(;a<i.length;)i[a][0]===(null===(e=i[a+1])||void 0===e?void 0:e[1])&&i[a][1]===(null===(t=i[a+1])||void 0===t?void 0:t[0])?a+=2:(r.push(i[a]),a++);return r}(e),a=new A.POSITION.value.constructor(6*r.length),s=new A.TEXCOORD_0.value.constructor(4*r.length),o=new e.constructor(6*r.length);for(let e=0;e<r.length;e++){Ye({edge:r[e],edgeIndex:e,attributes:A,skirtHeight:t,newPosition:a,newTexcoord0:s,newTriangles:o})}A.POSITION.value=n.concatenateTypedArrays(A.POSITION.value,a),A.TEXCOORD_0.value=n.concatenateTypedArrays(A.TEXCOORD_0.value,s);return{attributes:A,triangles:e instanceof Array?e.concat(o):n.concatenateTypedArrays(e,o)}}function Ye({edge:A,edgeIndex:e,attributes:t,skirtHeight:i,newPosition:r,newTexcoord0:a,newTriangles:n}){const s=t.POSITION.value.length,o=2*e,g=2*e+1;r.set(t.POSITION.value.subarray(3*A[0],3*A[0]+3),3*o),r[3*o+2]=r[3*o+2]-i,r.set(t.POSITION.value.subarray(3*A[1],3*A[1]+3),3*g),r[3*g+2]=r[3*g+2]-i,a.set(t.TEXCOORD_0.value.subarray(2*A[0],2*A[0]+2),2*o),a.set(t.TEXCOORD_0.value.subarray(2*A[1],2*A[1]+2),2*g);const l=2*e*3;n[l]=A[0],n[l+1]=s/3+g,n[l+2]=A[1],n[l+3]=s/3+g,n[l+4]=A[0],n[l+5]=s/3+o}const ze={type:"image",format:"uint8",useHeatMap:!0,useColorsBasedOnValues:!1,useAutoRange:!1,useDataForOpacity:!1,useSingleColor:!1,useColorClasses:!1,blurredTexture:!0,clipLow:null,clipHigh:null,multiplier:1,color:[255,0,255,255],colorScale:r.brewer.YlOrRd,colorScaleValueRange:[0,255],colorsBasedOnValues:null,colorClasses:null,alpha:100,useChannel:null,useChannelIndex:null,noDataValue:void 0,numOfChannels:void 0,nullColor:[0,0,0,0],unidentifiedColor:[0,0,0,0],clippedColor:[0,0,0,0],terrainColor:[133,133,133,255],terrainSkirtHeight:100,terrainMinValue:0,planarConfig:void 0};class Pe{constructor(){this.scale=(A,e,t,i,r)=>(A-e)*(r-i)/(t-e)+i}setUrl(A){return o(this,void 0,void 0,(function*(){const e=yield fetch(A),t=yield e.arrayBuffer(),i=yield ve(t),r=yield i.getImage(0);this.data=r}))}getMap(A,e,t){return o(this,void 0,void 0,(function*(){const i=Object.assign(Object.assign({},ze),e);switch(i.type){case"image":return this.getBitmap(A,i);case"terrain":return this.getHeightmap(A,i,t);default:return null}}))}getHeightmap(A,e,t){var i;return o(this,void 0,void 0,(function*(){let r,n,s=[];"string"==typeof A?(yield this.setUrl(A),s=yield this.data.readRasters(),r=this.data.getWidth(),n=this.data.getHeight()):(s=A.rasters,r=A.width,n=A.height);const o=Object.assign({},e);let g=s[0];null!==(i=o.useChannelIndex)&&void 0!==i||(o.useChannelIndex=null==o.useChannel?null:o.useChannel-1),null!=e.useChannelIndex&&s[o.useChannelIndex]&&(g=s[o.useChannelIndex]);const l=new Float32Array((r+1)*(n+1)),h=g.length/(r*n);let I=null===e.useChannelIndex?0:e.useChannelIndex;for(let A=0,t=0;t<n;t++)for(let i=0;i<r;i++,A++){const i=e.noDataValue&&g[I]===e.noDataValue?e.terrainMinValue:g[I]*e.multiplier;l[A+t]=i,I+=h}for(let A=(r+1)*r,e=0;e<r;e++,A++)l[A]=l[A-r-1];for(let A=n,e=0;e<n+1;e++,A+=n+1)l[A]=l[A-1];const{terrainSkirtHeight:B}=e;let c;c=Ke(t,r,l);const{vertices:C}=c;let{triangles:f}=c,E=function(A,e,t,i,r){const a=t+1,n=A.length/2,s=new Float32Array(3*n),o=new Float32Array(2*n),[g,l,h,I]=r||[0,0,t,i],B=(h-g)/t,c=(I-l)/i;for(let r=0;r<n;r++){const n=A[2*r],l=A[2*r+1],h=l*a+n;s[3*r+0]=n*B+g,s[3*r+1]=-l*c+I,s[3*r+2]=e[h],o[2*r+0]=n/t,o[2*r+1]=l/i}return{POSITION:{value:s,size:3},TEXCOORD_0:{value:o,size:2}}}(C,l,r,n,A.bounds);const Q=a.getMeshBoundingBox(E);if(B){const{attributes:A,triangles:e}=He(E,f,B);E=A,f=e}return{loaderData:{header:{}},header:{vertexCount:f.length,boundingBox:Q},mode:4,indices:{value:Uint32Array.from(f),size:1},attributes:E}}))}getBitmap(A,e){var t;return o(this,void 0,void 0,(function*(){const i=Object.assign({},e);let r,a,n,s=[];"string"==typeof A?(yield this.setUrl(A),s=yield this.data.readRasters(),r=s.length,a=this.data.getWidth(),n=this.data.getHeight()):(s=A.rasters,r=s.length,a=A.width,n=A.height);const o=document.createElement("canvas");o.width=a,o.height=n;const g=o.getContext("2d"),l=g.createImageData(a,n);let h,I,B,c;const C=a*n*4;if(i.unidentifiedColor=this.getColorFromChromaType(i.unidentifiedColor),i.nullColor=this.getColorFromChromaType(i.nullColor),i.clippedColor=this.getColorFromChromaType(i.clippedColor),i.color=this.getColorFromChromaType(i.color),null!==(t=i.useChannelIndex)&&void 0!==t||(i.useChannelIndex=null===e.useChannel?null:e.useChannel-1),null==i.useChannelIndex){if(1===r){if(s[0].length/(a*n)==1){const A=s[0];i.useAutoRange&&(i.colorScaleValueRange=this.getMinMax(A,i));this.getColorValue(A,i,C).forEach(((A,e)=>{l.data[e]=A}))}if(s[0].length/(a*n)==3){let A=0;for(let e=0;e<C;e+=4){const t=[s[0][A],s[0][A+1],s[0][A+2]],r=this.hasPixelsNoData(t,i.noDataValue)?i.nullColor:[...t,Math.floor(2.55*i.alpha)];[l.data[e],l.data[e+1],l.data[e+2],l.data[e+3]]=r,A+=3}}s[0].length/(a*n)==4&&s[0].forEach(((A,e)=>{l.data[e]=A}))}if(3===r){let A=0;for(let e=0;e<C;e+=4)h=s[0][A],I=s[1][A],B=s[2][A],c=Math.floor(2.55*i.alpha),l.data[e]=h,l.data[e+1]=I,l.data[e+2]=B,l.data[e+3]=c,A+=1}if(4===r){let A=0;for(let e=0;e<C;e+=4)h=s[0][A],I=s[1][A],B=s[2][A],c=Math.floor(2.55*i.alpha),l.data[e]=h,l.data[e+1]=I,l.data[e+2]=B,l.data[e+3]=c,A+=1}}else if(i.useChannelIndex<i.numOfChannels&&i.useChannelIndex>=0){let A=s[0];s[i.useChannelIndex]&&(A=s[i.useChannelIndex]),i.useAutoRange&&(i.colorScaleValueRange=this.getMinMax(A,i));this.getColorValue(A,i,C,i.numOfChannels).forEach(((A,e)=>{l.data[e]=A}))}else{console.log(`Defined channel(${e.useChannel}) or channel index(${e.useChannelIndex}) does not exist, choose a different channel or set the useChannel property to null if you want to visualize RGB(A) imagery`);this.getDefaultColor(C,i.nullColor).forEach(((A,e)=>{l.data[e]=A}))}g.putImageData(l,0,0);return o.toDataURL("image/png")}))}getMinMax(A,e){let t=e.maxValue?e.maxValue:Number.MIN_VALUE,i=e.minValue?e.minValue:Number.MAX_VALUE;for(let r=0;r<A.length;r+=1)void 0!==e.noDataValue&&A[r]===e.noDataValue||(A[r]>t&&(t=A[r]),A[r]<i&&(i=A[r]));return[i,t]}getColorValue(A,e,t,i=1){const a=r.scale(e.colorScale).domain(e.colorScaleValueRange);let n=null===e.useChannelIndex?0:e.useChannelIndex;const s=new Array(t),o=e.colorsBasedOnValues?e.colorsBasedOnValues.map((([A])=>A)):void 0,g=e.colorsBasedOnValues?e.colorsBasedOnValues.map((([,A])=>[...r(A).rgb(),Math.floor(2.55*e.alpha)])):void 0,l=e.useColorClasses?e.colorClasses.map((([A])=>[...r(A).rgb(),Math.floor(2.55*e.alpha)])):void 0,h=e.useColorClasses?e.colorClasses.map((([,A])=>A)):void 0,I=e.useColorClasses?e.colorClasses.map((([,,A],t)=>void 0!==A?A:t===e.colorClasses.length-1?[!0,!0]:[!0,!1])):void 0;for(let r=0;r<t;r+=4){let t=e.nullColor;if(!Number.isNaN(A[n])&&(void 0===e.noDataValue||A[n]!==e.noDataValue))if(null!=e.clipLow&&A[n]<=e.clipLow||null!=e.clipHigh&&A[n]>=e.clipHigh)t=e.clippedColor;else{if(e.useHeatMap&&(t=[...a(A[n]).rgb(),Math.floor(2.55*e.alpha)]),e.useColorsBasedOnValues){const i=o.indexOf(A[n]);t=i>-1?g[i]:e.unidentifiedColor}if(e.useColorClasses){const i=this.findClassIndex(A[n],h,I);t=i>-1?l[i]:e.unidentifiedColor}e.useSingleColor&&(t=e.color),e.useDataForOpacity&&(t[3]=this.scale(A[n],e.colorScaleValueRange[0],e.colorScaleValueRange.slice(-1)[0],0,255))}[s[r],s[r+1],s[r+2],s[r+3]]=t,n+=i}return s}findClassIndex(A,e,t){for(let i=0;i<e.length;i+=1){const[r,a]=e[i],[n,s]=t[i];if((n?A>=r:A>r)&&(s?A<=a:A<a))return i}return-1}getDefaultColor(A,e){const t=new Array(A);for(let i=0;i<A;i+=4)[t[i],t[i+1],t[i+2],t[i+3]]=e;return t}getColorFromChromaType(A){return Array.isArray(A)&&4===A.length?A:[...r(A).rgb(),255]}hasPixelsNoData(A,e){return void 0!==e&&A.every((A=>A===e))}}function Ke(A,e,t){const i=new Oe(e+1).createTile(t),{vertices:r,triangles:a}=i.getMesh(A);return{vertices:r,triangles:a}}const Ve=2*Math.PI*6378137,Ze=Ve/2,Xe=[-20037508.342789244,20037508.342789244],We={blurredTexture:!0};class je{constructor(A){this.cogZoomLookup=[0],this.cogResolutionLookup=[0],this.cogOrigin=[0,0],this.zoomRange=[0,0],this.loaded=!1,this.geo=new Pe,this.options=Object.assign(Object.assign({},We),A)}initializeCog(A){var e,t,i,r;return o(this,void 0,void 0,(function*(){this.cog=yield async function(A,e={},t){return Le.fromSource(ke(A,e),t)}(A);const a=yield this.cog.getImage();this.cogOrigin=a.getOrigin(),null!==(e=(i=this.options).noDataValue)&&void 0!==e||(i.noDataValue=this.getNoDataValue(a)),null!==(t=(r=this.options).format)&&void 0!==t||(r.format=this.getDataTypeFromTags(a)),this.options.numOfChannels=this.getNumberOfChannels(a),this.options.planarConfig=this.getPlanarConfiguration(a),[this.cogZoomLookup,this.cogResolutionLookup]=yield this.buildCogZoomResolutionLookup(this.cog),this.tileSize=a.getTileWidth(),this.zoomRange=this.calculateZoomRange(a,yield this.cog.getImageCount()),this.bounds=this.calculateBoundsAsLatLon(a)}))}getZoomRange(){return this.zoomRange}calculateZoomRange(A,e){const t=this.getZoomLevelFromResolution(A.getTileWidth(),A.getResolution()[0]);return[t-(e-1),t]}calculateBoundsAsLatLon(A){const e=A.getBoundingBox(),t=Math.min(e[0],e[2]),i=Math.max(e[0],e[2]),r=Math.min(e[1],e[3]),a=Math.max(e[1],e[3]),n=this.getLatLon([t,r]),s=this.getLatLon([i,a]);return[n[0],n[1],s[0],s[1]]}getZoomLevelFromResolution(A,e){return Math.round(Math.log2(Ve/(e*A)))}getBoundsAsLatLon(){return this.bounds}getLatLon(A){const e=Ze+A[0],t=-(Ze+(A[1]-Ve)),i=function(A){const[e,t]=A,i=e/512*(2*Ne)-Ne,r=2*(Math.atan(Math.exp(t/512*(2*Ne)-Ne))-Te);return[i*qe,r*qe]}([e*(512/Ve),t*(512/Ve)]);return[i[0],-i[1]]}buildCogZoomResolutionLookup(A){return o(this,void 0,void 0,(function*(){const e=yield A.getImageCount(),t=yield A.getImage(0),i=t.getResolution()[0],r=t.getWidth(),a=[],n=[];for(let t=0;t<e;t++){const e=i*(r/(yield A.getImage(t)).getWidth()),s=Math.round(Math.log2(156543.03125/e));a[t]=s,n[t]=e}return[a,n]}))}getImageIndexForZoomLevel(A){const e=this.cogZoomLookup[this.cogZoomLookup.length-1];if(A>this.cogZoomLookup[0])return 0;if(A<e)return this.cogZoomLookup.length-1;const t=this.cogZoomLookup.indexOf(A);return-1===t&&console.log("getImageIndexForZoomLevel: error in retrieving image by zoom index"),t}getTileFromImage(A,e,t){return o(this,void 0,void 0,(function*(){const i=this.getImageIndexForZoomLevel(t),r=yield this.cog.getImage(i),a=r.getTileWidth(),n=r.getTileHeight();if(!a||!n)throw new Error("The image is not tiled.");const s=this.cogOrigin[0]-Xe[0],o=Xe[1]-this.cogOrigin[1],g=Ve/a/Math.pow(2,t);this.cogResolutionLookup[i];const l=Math.floor(s/g),h=Math.floor(o/g),I=r.getHeight(),B=r.getWidth(),c=[A*a,e*n,(A+1)*a,(e+1)*n],C=[l,h,l+B,h+I],f=this.getIntersectionBBox(c,C,l,h,a),[E,Q,d,u,w]=f;if(u>0||w>0||E<a||Q<n){const A=this.createTileBuffer(this.options.format,a);A.fill(this.options.noDataValue);const e=yield r.readRasters({window:d}),t=Array(e.length*e[0].length);t.fill(this.options.noDataValue);for(let i=0;i<e.length;i++){for(let t=0;t<Q;t++)for(let r=0;r<E;r++){const s=w+t,o=u+r;s<a&&o<n?A[s*a+o]=e[i][t*e.width+r]:console.log("error in assigning data to tile buffer")}A.forEach(((A,e)=>{t[e*this.options.numOfChannels+i]=A}))}return[t]}return[yield r.readRasters({window:d,interleave:!0})]}))}getTile(A,e,t,i,r){return o(this,void 0,void 0,(function*(){const a=yield this.getTileFromImage(A,e,t);return this.geo.getMap({rasters:[a[0]],width:this.tileSize,height:this.tileSize,bounds:i},this.options,r)}))}getDataTypeFromTags(A){const e=A.getFileDirectory(),t=e.SampleFormat,i=e.BitsPerSample,r=t&&"number"==typeof t.length&&t.length>0?t[0]:t;let a;return a=1===r?"UInt":2===r?"Int":3===r?"Float":"Unknown",`${a}${i&&"number"==typeof i.length&&i.length>0?i[0]:i}`}getNoDataValue(A){const e=A.getGDALNoData();if(null==e)return void console.warn("No noData value defined — raster might be rendered incorrectly.");const t=String(e).replace(/\0/g,"").trim();if(""===t)return void console.warn("noData value is an empty string after cleanup.");const i=Number(t);return"nan"===t.toLowerCase()?NaN:Number.isNaN(i)?void console.warn(`Failed to parse numeric noData value: '${t}'`):i}getNumberOfChannels(A){return A.getSamplesPerPixel()}getIntersectionBBox(A,e,t=0,i=0,r=256){const a=Math.max(A[0],e[0]),n=Math.max(A[1],e[1]),s=Math.min(A[2],e[2]),o=Math.min(A[3],e[3]),g=Math.max(0,s-a),l=Math.max(0,o-n);let h=null,I=0,B=0;return g>0&&l>0&&(h=[a-t,n-i,s-t,o-i],I=a-A[0],B=n-A[1]),[g,l,h,I,B]}getPlanarConfiguration(A){const e=A.fileDirectory.PlanarConfiguration;if(1!==e&&2!==e)throw new Error("Invalid planar configuration.");return e}createTileBuffer(A,e){const t=e*e;switch(A){case"UInt8":return new Uint8Array(t);case"Int8":return new Int8Array(t);case"UInt16":return new Uint16Array(t);case"Int16":return new Int16Array(t);case"UInt32":return new Uint32Array(t);case"Int32":return new Int32Array(t);case"Float32":return new Float32Array(t);case"Float64":return new Float64Array(t);default:throw new Error(`Unsupported data type: ${A}`)}}}const $e={type:"object",value:null,validate:(A,e)=>e.optional&&null===A||"string"==typeof A||Array.isArray(A)&&A.every((A=>"string"==typeof A)),equal:(A,e)=>{if(A===e)return!0;if(!Array.isArray(A)||!Array.isArray(e))return!1;const t=A.length;if(t!==e.length)return!1;for(let i=0;i<t;i++)if(A[i]!==e[i])return!1;return!0}},At=Object.assign(Object.assign({},e.TileLayer.defaultProps),{bounds:{type:"array",value:null,optional:!0,compare:!0},rasterData:$e,blurredTexture:!0,opacity:1,clampToTerrain:!1,workerUrl:""});class et extends A.CompositeLayer{initializeState(A){const e=Object.create(null,{initializeState:{get:()=>super.initializeState}});return o(this,void 0,void 0,(function*(){e.initializeState.call(this,A),this.setState({bitmapCogTiles:new je(this.props.cogBitmapOptions),initialized:!1}),yield this.init()}))}init(){return o(this,void 0,void 0,(function*(){yield this.state.bitmapCogTiles.initializeCog(this.props.rasterData);const A=this.state.bitmapCogTiles.getZoomRange(),[e,t]=A;this.setState({initialized:!0,minZoom:e,maxZoom:t})}))}updateState({props:e,oldProps:t}){var i,r,a;const n=e.rasterData!==t.rasterData;if(n){const{rasterData:A}=e,t=A&&(Array.isArray(A)||A.includes("{x}")&&A.includes("{y}")||this.props.isTiled);this.setState({isTiled:t})}n||(e.bounds,t.bounds);this.state.isTiled,(null===(i=null==e?void 0:e.cogBitmapOptions)||void 0===i?void 0:i.useChannel)&&(null===(r=e.cogBitmapOptions)||void 0===r?void 0:r.useChannel)!==(null===(a=t.cogBitmapOptions)||void 0===a?void 0:a.useChannel)&&(this.state.bitmapCogTiles.options.useChannel=e.cogBitmapOptions.useChannel),e.workerUrl&&A.log.removed("workerUrl","loadOptions.terrain.workerUrl")()}getTiledBitmapData(A){return o(this,void 0,void 0,(function*(){return yield this.state.bitmapCogTiles.getTile(A.index.x,A.index.y,A.index.z)}))}renderSubLayers(A){const e=this.getSubLayerClass("image",t.BitmapLayer),{blurredTexture:r}=this.state.bitmapCogTiles.options,{opacity:a,clampToTerrain:n}=this.props,{data:s}=A;if(!s)return null;const{bbox:{west:o,south:g,east:l,north:h}}=A.tile;return new e(Object.assign(Object.assign({},A),{tileSize:this.state.bitmapCogTiles.tileSize}),Object.assign({data:null,image:s,_instanced:!1,bounds:[o,g,l,h],opacity:a,textureParameters:{minFilter:r?"linear":"nearest",magFilter:r?"linear":"nearest"},extensions:n?[new i._TerrainExtension]:[]},(null==n?void 0:n.terrainDrawMode)?{terrainDrawMode:n.terrainDrawMode}:{}))}renderLayers(){const{rasterData:A,blurredTexture:t,opacity:i,clampToTerrain:r,maxRequests:a,onTileLoad:n,onTileUnload:s,onTileError:o,maxCacheSize:g,maxCacheByteSize:l,refinementStrategy:h,cogBitmapOptions:I}=this.props;if(this.state.isTiled&&this.state.initialized){const{tileSize:A}=this.state.bitmapCogTiles;return new e.TileLayer(this.getSubLayerProps({id:"tiles"}),{getTileData:this.getTiledBitmapData.bind(this),renderSubLayers:this.renderSubLayers.bind(this),updateTriggers:{getTileData:[r,I.useChannel]},extent:this.state.bitmapCogTiles.getBoundsAsLatLon(),tileSize:A,minZoom:this.state.minZoom,maxZoom:this.state.maxZoom,maxRequests:a,onTileLoad:n,onTileUnload:s,onTileError:o,maxCacheSize:g,maxCacheByteSize:l,refinementStrategy:h})}return null}}et.defaultProps=At,et.layerName="CogBitmapLayer";const tt={type:"object",value:null,validate:(A,e)=>e.optional&&null===A||"string"==typeof A||Array.isArray(A)&&A.every((A=>"string"==typeof A)),equal:(A,e)=>{if(A===e)return!0;if(!Array.isArray(A)||!Array.isArray(e))return!1;const t=A.length;if(t!==e.length)return!1;for(let i=0;i<t;i++)if(A[i]!==e[i])return!1;return!0}},it=[1],rt=Object.assign(Object.assign({},e.TileLayer.defaultProps),{elevationData:tt,texture:Object.assign(Object.assign({},tt),{optional:!0}),meshMaxError:{type:"number",value:4},bounds:{type:"array",value:null,optional:!0,compare:!0},color:{type:"color",value:[255,255,255]},elevationDecoder:{type:"object",value:{rScaler:1,gScaler:0,bScaler:0,offset:0}},workerUrl:"",wireframe:!1,material:!0});class at extends A.CompositeLayer{initializeState(A){const e=Object.create(null,{initializeState:{get:()=>super.initializeState}});return o(this,void 0,void 0,(function*(){e.initializeState.call(this,A),this.setState({terrainCogTiles:new je(this.props.terrainOptions),initialized:!1}),yield this.init(this.terrainUrl)}))}init(A){return o(this,void 0,void 0,(function*(){yield this.state.terrainCogTiles.initializeCog(this.props.elevationData);const A=this.state.terrainCogTiles.getZoomRange(),[e,t]=A;this.setState({initialized:!0,minZoom:e,maxZoom:t})}))}updateState({props:e,oldProps:t}){const i=e.elevationData!==t.elevationData;if(i){const{elevationData:A}=e,t=A&&(Array.isArray(A)||A.includes("{x}")&&A.includes("{y}"))||this.props.isTiled;this.setState({isTiled:t})}i||e.meshMaxError!==t.meshMaxError||e.elevationDecoder!==t.elevationDecoder||(e.bounds,t.bounds);this.state.isTiled,e.workerUrl&&A.log.removed("workerUrl","loadOptions.terrain.workerUrl")()}loadTerrain({elevationData:A,bounds:e,elevationDecoder:t,meshMaxError:i,signal:r}){if(!A)return null;let a=this.getLoadOptions();a=Object.assign(Object.assign({},a),{_workerType:"test",terrain:Object.assign(Object.assign({skirtHeight:this.state.isTiled?2*i:0},null==a?void 0:a.terrain),{bounds:e,meshMaxError:i,elevationDecoder:t})});const{fetch:n}=this.props;return n(A,{propName:"elevationData",layer:this,loadOptions:a,signal:r,loaders:[]})}getTiledTerrainData(A){return o(this,void 0,void 0,(function*(){this.props;const{viewport:e}=this.context;let t=[0,0],i=[0,0];if(e.isGeospatial){const r=A.bbox;t=e.projectFlat([r.west,r.south]),i=e.projectFlat([r.east,r.north])}else{const e=A.bbox;t=[e.left,e.bottom],i=[e.right,e.top]}const r=[t[0],t[1],i[0],i[1]],a=yield this.state.terrainCogTiles.getTile(A.index.x,A.index.y,A.index.z,r,this.props.meshMaxError);return Promise.all([a])}))}renderSubLayers(e){const t=this.getSubLayerClass("mesh",s.SimpleMeshLayer),{color:i,wireframe:r,material:a}=this.props,{data:n}=e;if(!n)return null;const[o]=n;return new t(Object.assign(Object.assign({},e),{tileSize:256}),{data:it,mesh:o,_instanced:!1,coordinateSystem:A.COORDINATE_SYSTEM.CARTESIAN,getPosition:A=>[0,0,0],getColor:i,wireframe:r,material:a})}onViewportLoad(A){if(!A)return;const{zRange:e}=this.state,t=A.map((A=>A.content)).filter((A=>A&&A[0])).map((A=>{var e,t;const i=null===(t=null===(e=A[0])||void 0===e?void 0:e.header)||void 0===t?void 0:t.boundingBox;return null==i?void 0:i.map((A=>A[2]))}));if(0===t.length)return;const i=Math.min(...t.map((A=>A[0]))),r=Math.max(...t.map((A=>A[1])));(!e||i<e[0]||r>e[1])&&this.setState({zRange:[Number.isFinite(i)?i:0,Number.isFinite(r)?r:0]})}renderLayers(){const{color:A,material:t,elevationData:i,texture:r,wireframe:a,meshMaxError:n,elevationDecoder:s,tileSize:o,extent:g,maxRequests:l,onTileLoad:h,onTileUnload:I,onTileError:B,maxCacheSize:c,maxCacheByteSize:C,refinementStrategy:f}=this.props;if(this.state.isTiled&&this.state.initialized)return new e.TileLayer(this.getSubLayerProps({id:"tiles"}),{getTileData:this.getTiledTerrainData.bind(this),renderSubLayers:this.renderSubLayers.bind(this),updateTriggers:{getTileData:{elevationData:(E=i,Array.isArray(E)?E.join(";"):E||""),meshMaxError:n,elevationDecoder:s}},onViewportLoad:this.onViewportLoad.bind(this),zRange:this.state.zRange||null,tileSize:o,minZoom:this.state.minZoom,maxZoom:this.state.maxZoom,extent:g,maxRequests:l,onTileLoad:h,onTileUnload:I,onTileError:B,maxCacheSize:c,maxCacheByteSize:C,refinementStrategy:f});var E}}at.defaultProps=rt,at.layerName="TerrainLayer";var nt={CogBitmapLayer:et,CogTerrainLayer:at,cogtiles:je,GeoImage:Pe};var st=Object.freeze({__proto__:null,default:class extends xe{decodeBlock(A){return A}}});const ot=257;function gt(A,e){for(let t=e.length-1;t>=0;t--)A.push(e[t]);return A}function lt(A){const e=new Uint16Array(4093),t=new Uint8Array(4093);for(let A=0;A<=257;A++)e[A]=4096,t[A]=A;let i=258,r=9,a=0;function n(){i=258,r=9}function s(A){const e=function(A,e,t){const i=e%8,r=Math.floor(e/8),a=8-i,n=e+t-8*(r+1);let s=8*(r+2)-(e+t);const o=8*(r+2)-e;if(s=Math.max(0,s),r>=A.length)return console.warn("ran off the end of the buffer before finding EOI_CODE (end on input code)"),ot;let g=A[r]&2**(8-i)-1;g<<=t-a;let l=g;if(r+1<A.length){let e=A[r+1]>>>s;e<<=Math.max(0,t-o),l+=e}if(n>8&&r+2<A.length){const i=8*(r+3)-(e+t);l+=A[r+2]>>>i}return l}(A,a,r);return a+=r,e}function o(A,r){return t[i]=r,e[i]=A,i++,i-1}function g(A){const i=[];for(let r=A;4096!==r;r=e[r])i.push(t[r]);return i}const l=[];n();const h=new Uint8Array(A);let I,B=s(h);for(;B!==ot;){if(256===B){for(n(),B=s(h);256===B;)B=s(h);if(B===ot)break;if(B>256)throw new Error(`corrupted code at scanline ${B}`);gt(l,g(B)),I=B}else if(B<i){const A=g(B);gt(l,A),o(I,A[A.length-1]),I=B}else{const A=g(I);if(!A)throw new Error(`Bogus entry. Not in dictionary, ${I} / ${i}, position: ${a}`);gt(l,A),l.push(A[A.length-1]),o(I,A[A.length-1]),I=B}i+1>=2**r&&(12===r?I=void 0:r++),B=s(h)}return new Uint8Array(l)}var ht=Object.freeze({__proto__:null,default:class extends xe{decodeBlock(A){return lt(A).buffer}}});const It=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),Bt=4017,ct=799,Ct=3406,ft=2276,Et=1567,Qt=3784,dt=5793,ut=2896;function wt(A,e){let t=0;const i=[];let r=16;for(;r>0&&!A[r-1];)--r;i.push({children:[],index:0});let a,n=i[0];for(let s=0;s<r;s++){for(let r=0;r<A[s];r++){for(n=i.pop(),n.children[n.index]=e[t];n.index>0;)n=i.pop();for(n.index++,i.push(n);i.length<=s;)i.push(a={children:[],index:0}),n.children[n.index]=a.children,n=a;t++}s+1<r&&(i.push(a={children:[],index:0}),n.children[n.index]=a.children,n=a)}return i[0].children}function pt(A,e,t,i,r,a,n,s,o){const{mcusPerLine:g,progressive:l}=t,h=e;let I=e,B=0,c=0;function C(){if(c>0)return c--,B>>c&1;if(B=A[I++],255===B){const e=A[I++];if(e)throw new Error(`unexpected marker: ${(B<<8|e).toString(16)}`)}return c=7,B>>>7}function f(A){let e,t=A;for(;null!==(e=C());){if(t=t[e],"number"==typeof t)return t;if("object"!=typeof t)throw new Error("invalid huffman sequence")}return null}function E(A){let e=A,t=0;for(;e>0;){const A=C();if(null===A)return;t=t<<1|A,--e}return t}function Q(A){const e=E(A);return e>=1<<A-1?e:e+(-1<<A)+1}let d=0;let u,w=0;function p(A,e,t,i,r){const a=t%g,n=(t/g|0)*A.v+i,s=a*A.h+r;e(A,A.blocks[n][s])}function m(A,e,t){const i=t/A.blocksPerLine|0,r=t%A.blocksPerLine;e(A,A.blocks[i][r])}const y=i.length;let D,k,b,_,S,x;x=l?0===a?0===s?function(A,e){const t=f(A.huffmanTableDC),i=0===t?0:Q(t)<<o;A.pred+=i,e[0]=A.pred}:function(A,e){e[0]|=C()<<o}:0===s?function(A,e){if(d>0)return void d--;let t=a;const i=n;for(;t<=i;){const i=f(A.huffmanTableAC),r=15&i,a=i>>4;if(0===r){if(a<15){d=E(a)+(1<<a)-1;break}t+=16}else t+=a,e[It[t]]=Q(r)*(1<<o),t++}}:function(A,e){let t=a;const i=n;let r=0;for(;t<=i;){const i=It[t],a=e[i]<0?-1:1;switch(w){case 0:{const e=f(A.huffmanTableAC),t=15&e;if(r=e>>4,0===t)r<15?(d=E(r)+(1<<r),w=4):(r=16,w=1);else{if(1!==t)throw new Error("invalid ACn encoding");u=Q(t),w=r?2:3}continue}case 1:case 2:e[i]?e[i]+=(C()<<o)*a:(r--,0===r&&(w=2===w?3:0));break;case 3:e[i]?e[i]+=(C()<<o)*a:(e[i]=u<<o,w=0);break;case 4:e[i]&&(e[i]+=(C()<<o)*a)}t++}4===w&&(d--,0===d&&(w=0))}:function(A,e){const t=f(A.huffmanTableDC),i=0===t?0:Q(t);A.pred+=i,e[0]=A.pred;let r=1;for(;r<64;){const t=f(A.huffmanTableAC),i=15&t,a=t>>4;if(0===i){if(a<15)break;r+=16}else r+=a,e[It[r]]=Q(i),r++}};let F,G,U=0;G=1===y?i[0].blocksPerLine*i[0].blocksPerColumn:g*t.mcusPerColumn;const R=r||G;for(;U<G;){for(k=0;k<y;k++)i[k].pred=0;if(d=0,1===y)for(D=i[0],S=0;S<R;S++)m(D,x,U),U++;else for(S=0;S<R;S++){for(k=0;k<y;k++){D=i[k];const{h:A,v:e}=D;for(b=0;b<e;b++)for(_=0;_<A;_++)p(D,x,U,b,_)}if(U++,U===G)break}if(c=0,F=A[I]<<8|A[I+1],F<65280)throw new Error("marker was not found");if(!(F>=65488&&F<=65495))break;I+=2}return I-h}function mt(A,e){const t=[],{blocksPerLine:i,blocksPerColumn:r}=e,a=i<<3,n=new Int32Array(64),s=new Uint8Array(64);function o(A,t,i){const r=e.quantizationTable;let a,n,s,o,g,l,h,I,B;const c=i;let C;for(C=0;C<64;C++)c[C]=A[C]*r[C];for(C=0;C<8;++C){const A=8*C;0!==c[1+A]||0!==c[2+A]||0!==c[3+A]||0!==c[4+A]||0!==c[5+A]||0!==c[6+A]||0!==c[7+A]?(a=dt*c[0+A]+128>>8,n=dt*c[4+A]+128>>8,s=c[2+A],o=c[6+A],g=ut*(c[1+A]-c[7+A])+128>>8,I=ut*(c[1+A]+c[7+A])+128>>8,l=c[3+A]<<4,h=c[5+A]<<4,B=a-n+1>>1,a=a+n+1>>1,n=B,B=s*Qt+o*Et+128>>8,s=s*Et-o*Qt+128>>8,o=B,B=g-h+1>>1,g=g+h+1>>1,h=B,B=I+l+1>>1,l=I-l+1>>1,I=B,B=a-o+1>>1,a=a+o+1>>1,o=B,B=n-s+1>>1,n=n+s+1>>1,s=B,B=g*ft+I*Ct+2048>>12,g=g*Ct-I*ft+2048>>12,I=B,B=l*ct+h*Bt+2048>>12,l=l*Bt-h*ct+2048>>12,h=B,c[0+A]=a+I,c[7+A]=a-I,c[1+A]=n+h,c[6+A]=n-h,c[2+A]=s+l,c[5+A]=s-l,c[3+A]=o+g,c[4+A]=o-g):(B=dt*c[0+A]+512>>10,c[0+A]=B,c[1+A]=B,c[2+A]=B,c[3+A]=B,c[4+A]=B,c[5+A]=B,c[6+A]=B,c[7+A]=B)}for(C=0;C<8;++C){const A=C;0!==c[8+A]||0!==c[16+A]||0!==c[24+A]||0!==c[32+A]||0!==c[40+A]||0!==c[48+A]||0!==c[56+A]?(a=dt*c[0+A]+2048>>12,n=dt*c[32+A]+2048>>12,s=c[16+A],o=c[48+A],g=ut*(c[8+A]-c[56+A])+2048>>12,I=ut*(c[8+A]+c[56+A])+2048>>12,l=c[24+A],h=c[40+A],B=a-n+1>>1,a=a+n+1>>1,n=B,B=s*Qt+o*Et+2048>>12,s=s*Et-o*Qt+2048>>12,o=B,B=g-h+1>>1,g=g+h+1>>1,h=B,B=I+l+1>>1,l=I-l+1>>1,I=B,B=a-o+1>>1,a=a+o+1>>1,o=B,B=n-s+1>>1,n=n+s+1>>1,s=B,B=g*ft+I*Ct+2048>>12,g=g*Ct-I*ft+2048>>12,I=B,B=l*ct+h*Bt+2048>>12,l=l*Bt-h*ct+2048>>12,h=B,c[0+A]=a+I,c[56+A]=a-I,c[8+A]=n+h,c[48+A]=n-h,c[16+A]=s+l,c[40+A]=s-l,c[24+A]=o+g,c[32+A]=o-g):(B=dt*i[C+0]+8192>>14,c[0+A]=B,c[8+A]=B,c[16+A]=B,c[24+A]=B,c[32+A]=B,c[40+A]=B,c[48+A]=B,c[56+A]=B)}for(C=0;C<64;++C){const A=128+(c[C]+8>>4);t[C]=A<0?0:A>255?255:A}}for(let A=0;A<r;A++){const r=A<<3;for(let A=0;A<8;A++)t.push(new Uint8Array(a));for(let a=0;a<i;a++){o(e.blocks[A][a],s,n);let i=0;const g=a<<3;for(let A=0;A<8;A++){const e=t[r+A];for(let A=0;A<8;A++)e[g+A]=s[i++]}}}return t}class yt{constructor(){this.jfif=null,this.adobe=null,this.quantizationTables=[],this.huffmanTablesAC=[],this.huffmanTablesDC=[],this.resetFrames()}resetFrames(){this.frames=[]}parse(A){let e=0;function t(){const t=A[e]<<8|A[e+1];return e+=2,t}function i(){const i=t(),r=A.subarray(e,e+i-2);return e+=r.length,r}function r(A){let e,t,i=0,r=0;for(t in A.components)A.components.hasOwnProperty(t)&&(e=A.components[t],i<e.h&&(i=e.h),r<e.v&&(r=e.v));const a=Math.ceil(A.samplesPerLine/8/i),n=Math.ceil(A.scanLines/8/r);for(t in A.components)if(A.components.hasOwnProperty(t)){e=A.components[t];const s=Math.ceil(Math.ceil(A.samplesPerLine/8)*e.h/i),o=Math.ceil(Math.ceil(A.scanLines/8)*e.v/r),g=a*e.h,l=n*e.v,h=[];for(let A=0;A<l;A++){const A=[];for(let e=0;e<g;e++)A.push(new Int32Array(64));h.push(A)}e.blocksPerLine=s,e.blocksPerColumn=o,e.blocks=h}A.maxH=i,A.maxV=r,A.mcusPerLine=a,A.mcusPerColumn=n}let a=t();if(65496!==a)throw new Error("SOI not found");for(a=t();65497!==a;){switch(a){case 65280:break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:{const A=i();65504===a&&74===A[0]&&70===A[1]&&73===A[2]&&70===A[3]&&0===A[4]&&(this.jfif={version:{major:A[5],minor:A[6]},densityUnits:A[7],xDensity:A[8]<<8|A[9],yDensity:A[10]<<8|A[11],thumbWidth:A[12],thumbHeight:A[13],thumbData:A.subarray(14,14+3*A[12]*A[13])}),65518===a&&65===A[0]&&100===A[1]&&111===A[2]&&98===A[3]&&101===A[4]&&0===A[5]&&(this.adobe={version:A[6],flags0:A[7]<<8|A[8],flags1:A[9]<<8|A[10],transformCode:A[11]});break}case 65499:{const i=t()+e-2;for(;e<i;){const i=A[e++],r=new Int32Array(64);if(i>>4==0)for(let t=0;t<64;t++){r[It[t]]=A[e++]}else{if(i>>4!=1)throw new Error("DQT: invalid table spec");for(let A=0;A<64;A++){r[It[A]]=t()}}this.quantizationTables[15&i]=r}break}case 65472:case 65473:case 65474:{t();const i={extended:65473===a,progressive:65474===a,precision:A[e++],scanLines:t(),samplesPerLine:t(),components:{},componentsOrder:[]},n=A[e++];let s;for(let t=0;t<n;t++){s=A[e];const t=A[e+1]>>4,r=15&A[e+1],a=A[e+2];i.componentsOrder.push(s),i.components[s]={h:t,v:r,quantizationIdx:a},e+=3}r(i),this.frames.push(i);break}case 65476:{const i=t();for(let t=2;t<i;){const i=A[e++],r=new Uint8Array(16);let a=0;for(let t=0;t<16;t++,e++)r[t]=A[e],a+=r[t];const n=new Uint8Array(a);for(let t=0;t<a;t++,e++)n[t]=A[e];t+=17+a,i>>4==0?this.huffmanTablesDC[15&i]=wt(r,n):this.huffmanTablesAC[15&i]=wt(r,n)}break}case 65501:t(),this.resetInterval=t();break;case 65498:{t();const i=A[e++],r=[],a=this.frames[0];for(let t=0;t<i;t++){const t=a.components[A[e++]],i=A[e++];t.huffmanTableDC=this.huffmanTablesDC[i>>4],t.huffmanTableAC=this.huffmanTablesAC[15&i],r.push(t)}const n=A[e++],s=A[e++],o=A[e++],g=pt(A,e,a,r,this.resetInterval,n,s,o>>4,15&o);e+=g;break}case 65535:255!==A[e]&&e--;break;default:if(255===A[e-3]&&A[e-2]>=192&&A[e-2]<=254){e-=3;break}throw new Error(`unknown JPEG marker ${a.toString(16)}`)}a=t()}}getResult(){const{frames:A}=this;if(0===this.frames.length)throw new Error("no frames were decoded");this.frames.length>1&&console.warn("more than one frame is not supported");for(let A=0;A<this.frames.length;A++){const e=this.frames[A].components;for(const A of Object.keys(e))e[A].quantizationTable=this.quantizationTables[e[A].quantizationIdx],delete e[A].quantizationIdx}const e=A[0],{components:t,componentsOrder:i}=e,r=[],a=e.samplesPerLine,n=e.scanLines;for(let A=0;A<i.length;A++){const a=t[i[A]];r.push({lines:mt(0,a),scaleX:a.h/e.maxH,scaleY:a.v/e.maxV})}const s=new Uint8Array(a*n*r.length);let o=0;for(let A=0;A<n;++A)for(let e=0;e<a;++e)for(let t=0;t<r.length;++t){const i=r[t];s[o]=i.lines[0|A*i.scaleY][0|e*i.scaleX],++o}return s}}var Dt=Object.freeze({__proto__:null,default:class extends xe{constructor(A){super(),this.reader=new yt,A.JPEGTables&&this.reader.parse(A.JPEGTables)}decodeBlock(A){return this.reader.resetFrames(),this.reader.parse(new Uint8Array(A)),this.reader.getResult().buffer}}});
2
- /*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */function kt(A){let e=A.length;for(;--e>=0;)A[e]=0}const bt=256,_t=286,St=30,xt=15,Ft=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]),Gt=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]),Ut=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),Rt=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Mt=new Array(576);kt(Mt);const Lt=new Array(60);kt(Lt);const vt=new Array(512);kt(vt);const Nt=new Array(256);kt(Nt);const Tt=new Array(29);kt(Tt);const qt=new Array(St);function Ot(A,e,t,i,r){this.static_tree=A,this.extra_bits=e,this.extra_base=t,this.elems=i,this.max_length=r,this.has_stree=A&&A.length}let Jt,Ht,Yt;function zt(A,e){this.dyn_tree=A,this.max_code=0,this.stat_desc=e}kt(qt);const Pt=A=>A<256?vt[A]:vt[256+(A>>>7)],Kt=(A,e)=>{A.pending_buf[A.pending++]=255&e,A.pending_buf[A.pending++]=e>>>8&255},Vt=(A,e,t)=>{A.bi_valid>16-t?(A.bi_buf|=e<<A.bi_valid&65535,Kt(A,A.bi_buf),A.bi_buf=e>>16-A.bi_valid,A.bi_valid+=t-16):(A.bi_buf|=e<<A.bi_valid&65535,A.bi_valid+=t)},Zt=(A,e,t)=>{Vt(A,t[2*e],t[2*e+1])},Xt=(A,e)=>{let t=0;do{t|=1&A,A>>>=1,t<<=1}while(--e>0);return t>>>1},Wt=(A,e,t)=>{const i=new Array(16);let r,a,n=0;for(r=1;r<=xt;r++)n=n+t[r-1]<<1,i[r]=n;for(a=0;a<=e;a++){let e=A[2*a+1];0!==e&&(A[2*a]=Xt(i[e]++,e))}},jt=A=>{let e;for(e=0;e<_t;e++)A.dyn_ltree[2*e]=0;for(e=0;e<St;e++)A.dyn_dtree[2*e]=0;for(e=0;e<19;e++)A.bl_tree[2*e]=0;A.dyn_ltree[512]=1,A.opt_len=A.static_len=0,A.sym_next=A.matches=0},$t=A=>{A.bi_valid>8?Kt(A,A.bi_buf):A.bi_valid>0&&(A.pending_buf[A.pending++]=A.bi_buf),A.bi_buf=0,A.bi_valid=0},Ai=(A,e,t,i)=>{const r=2*e,a=2*t;return A[r]<A[a]||A[r]===A[a]&&i[e]<=i[t]},ei=(A,e,t)=>{const i=A.heap[t];let r=t<<1;for(;r<=A.heap_len&&(r<A.heap_len&&Ai(e,A.heap[r+1],A.heap[r],A.depth)&&r++,!Ai(e,i,A.heap[r],A.depth));)A.heap[t]=A.heap[r],t=r,r<<=1;A.heap[t]=i},ti=(A,e,t)=>{let i,r,a,n,s=0;if(0!==A.sym_next)do{i=255&A.pending_buf[A.sym_buf+s++],i+=(255&A.pending_buf[A.sym_buf+s++])<<8,r=A.pending_buf[A.sym_buf+s++],0===i?Zt(A,r,e):(a=Nt[r],Zt(A,a+bt+1,e),n=Ft[a],0!==n&&(r-=Tt[a],Vt(A,r,n)),i--,a=Pt(i),Zt(A,a,t),n=Gt[a],0!==n&&(i-=qt[a],Vt(A,i,n)))}while(s<A.sym_next);Zt(A,256,e)},ii=(A,e)=>{const t=e.dyn_tree,i=e.stat_desc.static_tree,r=e.stat_desc.has_stree,a=e.stat_desc.elems;let n,s,o,g=-1;for(A.heap_len=0,A.heap_max=573,n=0;n<a;n++)0!==t[2*n]?(A.heap[++A.heap_len]=g=n,A.depth[n]=0):t[2*n+1]=0;for(;A.heap_len<2;)o=A.heap[++A.heap_len]=g<2?++g:0,t[2*o]=1,A.depth[o]=0,A.opt_len--,r&&(A.static_len-=i[2*o+1]);for(e.max_code=g,n=A.heap_len>>1;n>=1;n--)ei(A,t,n);o=a;do{n=A.heap[1],A.heap[1]=A.heap[A.heap_len--],ei(A,t,1),s=A.heap[1],A.heap[--A.heap_max]=n,A.heap[--A.heap_max]=s,t[2*o]=t[2*n]+t[2*s],A.depth[o]=(A.depth[n]>=A.depth[s]?A.depth[n]:A.depth[s])+1,t[2*n+1]=t[2*s+1]=o,A.heap[1]=o++,ei(A,t,1)}while(A.heap_len>=2);A.heap[--A.heap_max]=A.heap[1],((A,e)=>{const t=e.dyn_tree,i=e.max_code,r=e.stat_desc.static_tree,a=e.stat_desc.has_stree,n=e.stat_desc.extra_bits,s=e.stat_desc.extra_base,o=e.stat_desc.max_length;let g,l,h,I,B,c,C=0;for(I=0;I<=xt;I++)A.bl_count[I]=0;for(t[2*A.heap[A.heap_max]+1]=0,g=A.heap_max+1;g<573;g++)l=A.heap[g],I=t[2*t[2*l+1]+1]+1,I>o&&(I=o,C++),t[2*l+1]=I,l>i||(A.bl_count[I]++,B=0,l>=s&&(B=n[l-s]),c=t[2*l],A.opt_len+=c*(I+B),a&&(A.static_len+=c*(r[2*l+1]+B)));if(0!==C){do{for(I=o-1;0===A.bl_count[I];)I--;A.bl_count[I]--,A.bl_count[I+1]+=2,A.bl_count[o]--,C-=2}while(C>0);for(I=o;0!==I;I--)for(l=A.bl_count[I];0!==l;)h=A.heap[--g],h>i||(t[2*h+1]!==I&&(A.opt_len+=(I-t[2*h+1])*t[2*h],t[2*h+1]=I),l--)}})(A,e),Wt(t,g,A.bl_count)},ri=(A,e,t)=>{let i,r,a=-1,n=e[1],s=0,o=7,g=4;for(0===n&&(o=138,g=3),e[2*(t+1)+1]=65535,i=0;i<=t;i++)r=n,n=e[2*(i+1)+1],++s<o&&r===n||(s<g?A.bl_tree[2*r]+=s:0!==r?(r!==a&&A.bl_tree[2*r]++,A.bl_tree[32]++):s<=10?A.bl_tree[34]++:A.bl_tree[36]++,s=0,a=r,0===n?(o=138,g=3):r===n?(o=6,g=3):(o=7,g=4))},ai=(A,e,t)=>{let i,r,a=-1,n=e[1],s=0,o=7,g=4;for(0===n&&(o=138,g=3),i=0;i<=t;i++)if(r=n,n=e[2*(i+1)+1],!(++s<o&&r===n)){if(s<g)do{Zt(A,r,A.bl_tree)}while(0!=--s);else 0!==r?(r!==a&&(Zt(A,r,A.bl_tree),s--),Zt(A,16,A.bl_tree),Vt(A,s-3,2)):s<=10?(Zt(A,17,A.bl_tree),Vt(A,s-3,3)):(Zt(A,18,A.bl_tree),Vt(A,s-11,7));s=0,a=r,0===n?(o=138,g=3):r===n?(o=6,g=3):(o=7,g=4)}};let ni=!1;const si=(A,e,t,i)=>{Vt(A,0+(i?1:0),3),$t(A),Kt(A,t),Kt(A,~t),t&&A.pending_buf.set(A.window.subarray(e,e+t),A.pending),A.pending+=t};var oi=(A,e,t,i)=>{let r,a,n=0;A.level>0?(2===A.strm.data_type&&(A.strm.data_type=(A=>{let e,t=4093624447;for(e=0;e<=31;e++,t>>>=1)if(1&t&&0!==A.dyn_ltree[2*e])return 0;if(0!==A.dyn_ltree[18]||0!==A.dyn_ltree[20]||0!==A.dyn_ltree[26])return 1;for(e=32;e<bt;e++)if(0!==A.dyn_ltree[2*e])return 1;return 0})(A)),ii(A,A.l_desc),ii(A,A.d_desc),n=(A=>{let e;for(ri(A,A.dyn_ltree,A.l_desc.max_code),ri(A,A.dyn_dtree,A.d_desc.max_code),ii(A,A.bl_desc),e=18;e>=3&&0===A.bl_tree[2*Rt[e]+1];e--);return A.opt_len+=3*(e+1)+5+5+4,e})(A),r=A.opt_len+3+7>>>3,a=A.static_len+3+7>>>3,a<=r&&(r=a)):r=a=t+5,t+4<=r&&-1!==e?si(A,e,t,i):4===A.strategy||a===r?(Vt(A,2+(i?1:0),3),ti(A,Mt,Lt)):(Vt(A,4+(i?1:0),3),((A,e,t,i)=>{let r;for(Vt(A,e-257,5),Vt(A,t-1,5),Vt(A,i-4,4),r=0;r<i;r++)Vt(A,A.bl_tree[2*Rt[r]+1],3);ai(A,A.dyn_ltree,e-1),ai(A,A.dyn_dtree,t-1)})(A,A.l_desc.max_code+1,A.d_desc.max_code+1,n+1),ti(A,A.dyn_ltree,A.dyn_dtree)),jt(A),i&&$t(A)},gi={_tr_init:A=>{ni||((()=>{let A,e,t,i,r;const a=new Array(16);for(t=0,i=0;i<28;i++)for(Tt[i]=t,A=0;A<1<<Ft[i];A++)Nt[t++]=i;for(Nt[t-1]=i,r=0,i=0;i<16;i++)for(qt[i]=r,A=0;A<1<<Gt[i];A++)vt[r++]=i;for(r>>=7;i<St;i++)for(qt[i]=r<<7,A=0;A<1<<Gt[i]-7;A++)vt[256+r++]=i;for(e=0;e<=xt;e++)a[e]=0;for(A=0;A<=143;)Mt[2*A+1]=8,A++,a[8]++;for(;A<=255;)Mt[2*A+1]=9,A++,a[9]++;for(;A<=279;)Mt[2*A+1]=7,A++,a[7]++;for(;A<=287;)Mt[2*A+1]=8,A++,a[8]++;for(Wt(Mt,287,a),A=0;A<St;A++)Lt[2*A+1]=5,Lt[2*A]=Xt(A,5);Jt=new Ot(Mt,Ft,257,_t,xt),Ht=new Ot(Lt,Gt,0,St,xt),Yt=new Ot(new Array(0),Ut,0,19,7)})(),ni=!0),A.l_desc=new zt(A.dyn_ltree,Jt),A.d_desc=new zt(A.dyn_dtree,Ht),A.bl_desc=new zt(A.bl_tree,Yt),A.bi_buf=0,A.bi_valid=0,jt(A)},_tr_stored_block:si,_tr_flush_block:oi,_tr_tally:(A,e,t)=>(A.pending_buf[A.sym_buf+A.sym_next++]=e,A.pending_buf[A.sym_buf+A.sym_next++]=e>>8,A.pending_buf[A.sym_buf+A.sym_next++]=t,0===e?A.dyn_ltree[2*t]++:(A.matches++,e--,A.dyn_ltree[2*(Nt[t]+bt+1)]++,A.dyn_dtree[2*Pt(e)]++),A.sym_next===A.sym_end),_tr_align:A=>{Vt(A,2,3),Zt(A,256,Mt),(A=>{16===A.bi_valid?(Kt(A,A.bi_buf),A.bi_buf=0,A.bi_valid=0):A.bi_valid>=8&&(A.pending_buf[A.pending++]=255&A.bi_buf,A.bi_buf>>=8,A.bi_valid-=8)})(A)}};var li=(A,e,t,i)=>{let r=65535&A|0,a=A>>>16&65535|0,n=0;for(;0!==t;){n=t>2e3?2e3:t,t-=n;do{r=r+e[i++]|0,a=a+r|0}while(--n);r%=65521,a%=65521}return r|a<<16|0};const hi=new Uint32Array((()=>{let A,e=[];for(var t=0;t<256;t++){A=t;for(var i=0;i<8;i++)A=1&A?3988292384^A>>>1:A>>>1;e[t]=A}return e})());var Ii=(A,e,t,i)=>{const r=hi,a=i+t;A^=-1;for(let t=i;t<a;t++)A=A>>>8^r[255&(A^e[t])];return-1^A},Bi={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"},ci={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:Ci,_tr_stored_block:fi,_tr_flush_block:Ei,_tr_tally:Qi,_tr_align:di}=gi,{Z_NO_FLUSH:ui,Z_PARTIAL_FLUSH:wi,Z_FULL_FLUSH:pi,Z_FINISH:mi,Z_BLOCK:yi,Z_OK:Di,Z_STREAM_END:ki,Z_STREAM_ERROR:bi,Z_DATA_ERROR:_i,Z_BUF_ERROR:Si,Z_DEFAULT_COMPRESSION:xi,Z_FILTERED:Fi,Z_HUFFMAN_ONLY:Gi,Z_RLE:Ui,Z_FIXED:Ri,Z_DEFAULT_STRATEGY:Mi,Z_UNKNOWN:Li,Z_DEFLATED:vi}=ci,Ni=258,Ti=262,qi=42,Oi=113,Ji=666,Hi=(A,e)=>(A.msg=Bi[e],e),Yi=A=>2*A-(A>4?9:0),zi=A=>{let e=A.length;for(;--e>=0;)A[e]=0},Pi=A=>{let e,t,i,r=A.w_size;e=A.hash_size,i=e;do{t=A.head[--i],A.head[i]=t>=r?t-r:0}while(--e);e=r,i=e;do{t=A.prev[--i],A.prev[i]=t>=r?t-r:0}while(--e)};let Ki=(A,e,t)=>(e<<A.hash_shift^t)&A.hash_mask;const Vi=A=>{const e=A.state;let t=e.pending;t>A.avail_out&&(t=A.avail_out),0!==t&&(A.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+t),A.next_out),A.next_out+=t,e.pending_out+=t,A.total_out+=t,A.avail_out-=t,e.pending-=t,0===e.pending&&(e.pending_out=0))},Zi=(A,e)=>{Ei(A,A.block_start>=0?A.block_start:-1,A.strstart-A.block_start,e),A.block_start=A.strstart,Vi(A.strm)},Xi=(A,e)=>{A.pending_buf[A.pending++]=e},Wi=(A,e)=>{A.pending_buf[A.pending++]=e>>>8&255,A.pending_buf[A.pending++]=255&e},ji=(A,e,t,i)=>{let r=A.avail_in;return r>i&&(r=i),0===r?0:(A.avail_in-=r,e.set(A.input.subarray(A.next_in,A.next_in+r),t),1===A.state.wrap?A.adler=li(A.adler,e,r,t):2===A.state.wrap&&(A.adler=Ii(A.adler,e,r,t)),A.next_in+=r,A.total_in+=r,r)},$i=(A,e)=>{let t,i,r=A.max_chain_length,a=A.strstart,n=A.prev_length,s=A.nice_match;const o=A.strstart>A.w_size-Ti?A.strstart-(A.w_size-Ti):0,g=A.window,l=A.w_mask,h=A.prev,I=A.strstart+Ni;let B=g[a+n-1],c=g[a+n];A.prev_length>=A.good_match&&(r>>=2),s>A.lookahead&&(s=A.lookahead);do{if(t=e,g[t+n]===c&&g[t+n-1]===B&&g[t]===g[a]&&g[++t]===g[a+1]){a+=2,t++;do{}while(g[++a]===g[++t]&&g[++a]===g[++t]&&g[++a]===g[++t]&&g[++a]===g[++t]&&g[++a]===g[++t]&&g[++a]===g[++t]&&g[++a]===g[++t]&&g[++a]===g[++t]&&a<I);if(i=Ni-(I-a),a=I-Ni,i>n){if(A.match_start=e,n=i,i>=s)break;B=g[a+n-1],c=g[a+n]}}}while((e=h[e&l])>o&&0!=--r);return n<=A.lookahead?n:A.lookahead},Ar=A=>{const e=A.w_size;let t,i,r;do{if(i=A.window_size-A.lookahead-A.strstart,A.strstart>=e+(e-Ti)&&(A.window.set(A.window.subarray(e,e+e-i),0),A.match_start-=e,A.strstart-=e,A.block_start-=e,A.insert>A.strstart&&(A.insert=A.strstart),Pi(A),i+=e),0===A.strm.avail_in)break;if(t=ji(A.strm,A.window,A.strstart+A.lookahead,i),A.lookahead+=t,A.lookahead+A.insert>=3)for(r=A.strstart-A.insert,A.ins_h=A.window[r],A.ins_h=Ki(A,A.ins_h,A.window[r+1]);A.insert&&(A.ins_h=Ki(A,A.ins_h,A.window[r+3-1]),A.prev[r&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=r,r++,A.insert--,!(A.lookahead+A.insert<3)););}while(A.lookahead<Ti&&0!==A.strm.avail_in)},er=(A,e)=>{let t,i,r,a=A.pending_buf_size-5>A.w_size?A.w_size:A.pending_buf_size-5,n=0,s=A.strm.avail_in;do{if(t=65535,r=A.bi_valid+42>>3,A.strm.avail_out<r)break;if(r=A.strm.avail_out-r,i=A.strstart-A.block_start,t>i+A.strm.avail_in&&(t=i+A.strm.avail_in),t>r&&(t=r),t<a&&(0===t&&e!==mi||e===ui||t!==i+A.strm.avail_in))break;n=e===mi&&t===i+A.strm.avail_in?1:0,fi(A,0,0,n),A.pending_buf[A.pending-4]=t,A.pending_buf[A.pending-3]=t>>8,A.pending_buf[A.pending-2]=~t,A.pending_buf[A.pending-1]=~t>>8,Vi(A.strm),i&&(i>t&&(i=t),A.strm.output.set(A.window.subarray(A.block_start,A.block_start+i),A.strm.next_out),A.strm.next_out+=i,A.strm.avail_out-=i,A.strm.total_out+=i,A.block_start+=i,t-=i),t&&(ji(A.strm,A.strm.output,A.strm.next_out,t),A.strm.next_out+=t,A.strm.avail_out-=t,A.strm.total_out+=t)}while(0===n);return s-=A.strm.avail_in,s&&(s>=A.w_size?(A.matches=2,A.window.set(A.strm.input.subarray(A.strm.next_in-A.w_size,A.strm.next_in),0),A.strstart=A.w_size,A.insert=A.strstart):(A.window_size-A.strstart<=s&&(A.strstart-=A.w_size,A.window.set(A.window.subarray(A.w_size,A.w_size+A.strstart),0),A.matches<2&&A.matches++,A.insert>A.strstart&&(A.insert=A.strstart)),A.window.set(A.strm.input.subarray(A.strm.next_in-s,A.strm.next_in),A.strstart),A.strstart+=s,A.insert+=s>A.w_size-A.insert?A.w_size-A.insert:s),A.block_start=A.strstart),A.high_water<A.strstart&&(A.high_water=A.strstart),n?4:e!==ui&&e!==mi&&0===A.strm.avail_in&&A.strstart===A.block_start?2:(r=A.window_size-A.strstart,A.strm.avail_in>r&&A.block_start>=A.w_size&&(A.block_start-=A.w_size,A.strstart-=A.w_size,A.window.set(A.window.subarray(A.w_size,A.w_size+A.strstart),0),A.matches<2&&A.matches++,r+=A.w_size,A.insert>A.strstart&&(A.insert=A.strstart)),r>A.strm.avail_in&&(r=A.strm.avail_in),r&&(ji(A.strm,A.window,A.strstart,r),A.strstart+=r,A.insert+=r>A.w_size-A.insert?A.w_size-A.insert:r),A.high_water<A.strstart&&(A.high_water=A.strstart),r=A.bi_valid+42>>3,r=A.pending_buf_size-r>65535?65535:A.pending_buf_size-r,a=r>A.w_size?A.w_size:r,i=A.strstart-A.block_start,(i>=a||(i||e===mi)&&e!==ui&&0===A.strm.avail_in&&i<=r)&&(t=i>r?r:i,n=e===mi&&0===A.strm.avail_in&&t===i?1:0,fi(A,A.block_start,t,n),A.block_start+=t,Vi(A.strm)),n?3:1)},tr=(A,e)=>{let t,i;for(;;){if(A.lookahead<Ti){if(Ar(A),A.lookahead<Ti&&e===ui)return 1;if(0===A.lookahead)break}if(t=0,A.lookahead>=3&&(A.ins_h=Ki(A,A.ins_h,A.window[A.strstart+3-1]),t=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart),0!==t&&A.strstart-t<=A.w_size-Ti&&(A.match_length=$i(A,t)),A.match_length>=3)if(i=Qi(A,A.strstart-A.match_start,A.match_length-3),A.lookahead-=A.match_length,A.match_length<=A.max_lazy_match&&A.lookahead>=3){A.match_length--;do{A.strstart++,A.ins_h=Ki(A,A.ins_h,A.window[A.strstart+3-1]),t=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart}while(0!=--A.match_length);A.strstart++}else A.strstart+=A.match_length,A.match_length=0,A.ins_h=A.window[A.strstart],A.ins_h=Ki(A,A.ins_h,A.window[A.strstart+1]);else i=Qi(A,0,A.window[A.strstart]),A.lookahead--,A.strstart++;if(i&&(Zi(A,!1),0===A.strm.avail_out))return 1}return A.insert=A.strstart<2?A.strstart:2,e===mi?(Zi(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(Zi(A,!1),0===A.strm.avail_out)?1:2},ir=(A,e)=>{let t,i,r;for(;;){if(A.lookahead<Ti){if(Ar(A),A.lookahead<Ti&&e===ui)return 1;if(0===A.lookahead)break}if(t=0,A.lookahead>=3&&(A.ins_h=Ki(A,A.ins_h,A.window[A.strstart+3-1]),t=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart),A.prev_length=A.match_length,A.prev_match=A.match_start,A.match_length=2,0!==t&&A.prev_length<A.max_lazy_match&&A.strstart-t<=A.w_size-Ti&&(A.match_length=$i(A,t),A.match_length<=5&&(A.strategy===Fi||3===A.match_length&&A.strstart-A.match_start>4096)&&(A.match_length=2)),A.prev_length>=3&&A.match_length<=A.prev_length){r=A.strstart+A.lookahead-3,i=Qi(A,A.strstart-1-A.prev_match,A.prev_length-3),A.lookahead-=A.prev_length-1,A.prev_length-=2;do{++A.strstart<=r&&(A.ins_h=Ki(A,A.ins_h,A.window[A.strstart+3-1]),t=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart)}while(0!=--A.prev_length);if(A.match_available=0,A.match_length=2,A.strstart++,i&&(Zi(A,!1),0===A.strm.avail_out))return 1}else if(A.match_available){if(i=Qi(A,0,A.window[A.strstart-1]),i&&Zi(A,!1),A.strstart++,A.lookahead--,0===A.strm.avail_out)return 1}else A.match_available=1,A.strstart++,A.lookahead--}return A.match_available&&(i=Qi(A,0,A.window[A.strstart-1]),A.match_available=0),A.insert=A.strstart<2?A.strstart:2,e===mi?(Zi(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(Zi(A,!1),0===A.strm.avail_out)?1:2};function rr(A,e,t,i,r){this.good_length=A,this.max_lazy=e,this.nice_length=t,this.max_chain=i,this.func=r}const ar=[new rr(0,0,0,0,er),new rr(4,4,8,4,tr),new rr(4,5,16,8,tr),new rr(4,6,32,32,tr),new rr(4,4,16,16,ir),new rr(8,16,32,32,ir),new rr(8,16,128,128,ir),new rr(8,32,128,256,ir),new rr(32,128,258,1024,ir),new rr(32,258,258,4096,ir)];function nr(){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=vi,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),zi(this.dyn_ltree),zi(this.dyn_dtree),zi(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),zi(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),zi(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 sr=A=>{if(!A)return 1;const e=A.state;return!e||e.strm!==A||e.status!==qi&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&e.status!==Oi&&e.status!==Ji?1:0},or=A=>{if(sr(A))return Hi(A,bi);A.total_in=A.total_out=0,A.data_type=Li;const e=A.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?qi:Oi,A.adler=2===e.wrap?0:1,e.last_flush=-2,Ci(e),Di},gr=A=>{const e=or(A);var t;return e===Di&&((t=A.state).window_size=2*t.w_size,zi(t.head),t.max_lazy_match=ar[t.level].max_lazy,t.good_match=ar[t.level].good_length,t.nice_match=ar[t.level].nice_length,t.max_chain_length=ar[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=2,t.match_available=0,t.ins_h=0),e},lr=(A,e,t,i,r,a)=>{if(!A)return bi;let n=1;if(e===xi&&(e=6),i<0?(n=0,i=-i):i>15&&(n=2,i-=16),r<1||r>9||t!==vi||i<8||i>15||e<0||e>9||a<0||a>Ri||8===i&&1!==n)return Hi(A,bi);8===i&&(i=9);const s=new nr;return A.state=s,s.strm=A,s.status=qi,s.wrap=n,s.gzhead=null,s.w_bits=i,s.w_size=1<<s.w_bits,s.w_mask=s.w_size-1,s.hash_bits=r+7,s.hash_size=1<<s.hash_bits,s.hash_mask=s.hash_size-1,s.hash_shift=~~((s.hash_bits+3-1)/3),s.window=new Uint8Array(2*s.w_size),s.head=new Uint16Array(s.hash_size),s.prev=new Uint16Array(s.w_size),s.lit_bufsize=1<<r+6,s.pending_buf_size=4*s.lit_bufsize,s.pending_buf=new Uint8Array(s.pending_buf_size),s.sym_buf=s.lit_bufsize,s.sym_end=3*(s.lit_bufsize-1),s.level=e,s.strategy=a,s.method=t,gr(A)};var hr={deflateInit:(A,e)=>lr(A,e,vi,15,8,Mi),deflateInit2:lr,deflateReset:gr,deflateResetKeep:or,deflateSetHeader:(A,e)=>sr(A)||2!==A.state.wrap?bi:(A.state.gzhead=e,Di),deflate:(A,e)=>{if(sr(A)||e>yi||e<0)return A?Hi(A,bi):bi;const t=A.state;if(!A.output||0!==A.avail_in&&!A.input||t.status===Ji&&e!==mi)return Hi(A,0===A.avail_out?Si:bi);const i=t.last_flush;if(t.last_flush=e,0!==t.pending){if(Vi(A),0===A.avail_out)return t.last_flush=-1,Di}else if(0===A.avail_in&&Yi(e)<=Yi(i)&&e!==mi)return Hi(A,Si);if(t.status===Ji&&0!==A.avail_in)return Hi(A,Si);if(t.status===qi&&0===t.wrap&&(t.status=Oi),t.status===qi){let e=vi+(t.w_bits-8<<4)<<8,i=-1;if(i=t.strategy>=Gi||t.level<2?0:t.level<6?1:6===t.level?2:3,e|=i<<6,0!==t.strstart&&(e|=32),e+=31-e%31,Wi(t,e),0!==t.strstart&&(Wi(t,A.adler>>>16),Wi(t,65535&A.adler)),A.adler=1,t.status=Oi,Vi(A),0!==t.pending)return t.last_flush=-1,Di}if(57===t.status)if(A.adler=0,Xi(t,31),Xi(t,139),Xi(t,8),t.gzhead)Xi(t,(t.gzhead.text?1:0)+(t.gzhead.hcrc?2:0)+(t.gzhead.extra?4:0)+(t.gzhead.name?8:0)+(t.gzhead.comment?16:0)),Xi(t,255&t.gzhead.time),Xi(t,t.gzhead.time>>8&255),Xi(t,t.gzhead.time>>16&255),Xi(t,t.gzhead.time>>24&255),Xi(t,9===t.level?2:t.strategy>=Gi||t.level<2?4:0),Xi(t,255&t.gzhead.os),t.gzhead.extra&&t.gzhead.extra.length&&(Xi(t,255&t.gzhead.extra.length),Xi(t,t.gzhead.extra.length>>8&255)),t.gzhead.hcrc&&(A.adler=Ii(A.adler,t.pending_buf,t.pending,0)),t.gzindex=0,t.status=69;else if(Xi(t,0),Xi(t,0),Xi(t,0),Xi(t,0),Xi(t,0),Xi(t,9===t.level?2:t.strategy>=Gi||t.level<2?4:0),Xi(t,3),t.status=Oi,Vi(A),0!==t.pending)return t.last_flush=-1,Di;if(69===t.status){if(t.gzhead.extra){let e=t.pending,i=(65535&t.gzhead.extra.length)-t.gzindex;for(;t.pending+i>t.pending_buf_size;){let r=t.pending_buf_size-t.pending;if(t.pending_buf.set(t.gzhead.extra.subarray(t.gzindex,t.gzindex+r),t.pending),t.pending=t.pending_buf_size,t.gzhead.hcrc&&t.pending>e&&(A.adler=Ii(A.adler,t.pending_buf,t.pending-e,e)),t.gzindex+=r,Vi(A),0!==t.pending)return t.last_flush=-1,Di;e=0,i-=r}let r=new Uint8Array(t.gzhead.extra);t.pending_buf.set(r.subarray(t.gzindex,t.gzindex+i),t.pending),t.pending+=i,t.gzhead.hcrc&&t.pending>e&&(A.adler=Ii(A.adler,t.pending_buf,t.pending-e,e)),t.gzindex=0}t.status=73}if(73===t.status){if(t.gzhead.name){let e,i=t.pending;do{if(t.pending===t.pending_buf_size){if(t.gzhead.hcrc&&t.pending>i&&(A.adler=Ii(A.adler,t.pending_buf,t.pending-i,i)),Vi(A),0!==t.pending)return t.last_flush=-1,Di;i=0}e=t.gzindex<t.gzhead.name.length?255&t.gzhead.name.charCodeAt(t.gzindex++):0,Xi(t,e)}while(0!==e);t.gzhead.hcrc&&t.pending>i&&(A.adler=Ii(A.adler,t.pending_buf,t.pending-i,i)),t.gzindex=0}t.status=91}if(91===t.status){if(t.gzhead.comment){let e,i=t.pending;do{if(t.pending===t.pending_buf_size){if(t.gzhead.hcrc&&t.pending>i&&(A.adler=Ii(A.adler,t.pending_buf,t.pending-i,i)),Vi(A),0!==t.pending)return t.last_flush=-1,Di;i=0}e=t.gzindex<t.gzhead.comment.length?255&t.gzhead.comment.charCodeAt(t.gzindex++):0,Xi(t,e)}while(0!==e);t.gzhead.hcrc&&t.pending>i&&(A.adler=Ii(A.adler,t.pending_buf,t.pending-i,i))}t.status=103}if(103===t.status){if(t.gzhead.hcrc){if(t.pending+2>t.pending_buf_size&&(Vi(A),0!==t.pending))return t.last_flush=-1,Di;Xi(t,255&A.adler),Xi(t,A.adler>>8&255),A.adler=0}if(t.status=Oi,Vi(A),0!==t.pending)return t.last_flush=-1,Di}if(0!==A.avail_in||0!==t.lookahead||e!==ui&&t.status!==Ji){let i=0===t.level?er(t,e):t.strategy===Gi?((A,e)=>{let t;for(;;){if(0===A.lookahead&&(Ar(A),0===A.lookahead)){if(e===ui)return 1;break}if(A.match_length=0,t=Qi(A,0,A.window[A.strstart]),A.lookahead--,A.strstart++,t&&(Zi(A,!1),0===A.strm.avail_out))return 1}return A.insert=0,e===mi?(Zi(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(Zi(A,!1),0===A.strm.avail_out)?1:2})(t,e):t.strategy===Ui?((A,e)=>{let t,i,r,a;const n=A.window;for(;;){if(A.lookahead<=Ni){if(Ar(A),A.lookahead<=Ni&&e===ui)return 1;if(0===A.lookahead)break}if(A.match_length=0,A.lookahead>=3&&A.strstart>0&&(r=A.strstart-1,i=n[r],i===n[++r]&&i===n[++r]&&i===n[++r])){a=A.strstart+Ni;do{}while(i===n[++r]&&i===n[++r]&&i===n[++r]&&i===n[++r]&&i===n[++r]&&i===n[++r]&&i===n[++r]&&i===n[++r]&&r<a);A.match_length=Ni-(a-r),A.match_length>A.lookahead&&(A.match_length=A.lookahead)}if(A.match_length>=3?(t=Qi(A,1,A.match_length-3),A.lookahead-=A.match_length,A.strstart+=A.match_length,A.match_length=0):(t=Qi(A,0,A.window[A.strstart]),A.lookahead--,A.strstart++),t&&(Zi(A,!1),0===A.strm.avail_out))return 1}return A.insert=0,e===mi?(Zi(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(Zi(A,!1),0===A.strm.avail_out)?1:2})(t,e):ar[t.level].func(t,e);if(3!==i&&4!==i||(t.status=Ji),1===i||3===i)return 0===A.avail_out&&(t.last_flush=-1),Di;if(2===i&&(e===wi?di(t):e!==yi&&(fi(t,0,0,!1),e===pi&&(zi(t.head),0===t.lookahead&&(t.strstart=0,t.block_start=0,t.insert=0))),Vi(A),0===A.avail_out))return t.last_flush=-1,Di}return e!==mi?Di:t.wrap<=0?ki:(2===t.wrap?(Xi(t,255&A.adler),Xi(t,A.adler>>8&255),Xi(t,A.adler>>16&255),Xi(t,A.adler>>24&255),Xi(t,255&A.total_in),Xi(t,A.total_in>>8&255),Xi(t,A.total_in>>16&255),Xi(t,A.total_in>>24&255)):(Wi(t,A.adler>>>16),Wi(t,65535&A.adler)),Vi(A),t.wrap>0&&(t.wrap=-t.wrap),0!==t.pending?Di:ki)},deflateEnd:A=>{if(sr(A))return bi;const e=A.state.status;return A.state=null,e===Oi?Hi(A,_i):Di},deflateSetDictionary:(A,e)=>{let t=e.length;if(sr(A))return bi;const i=A.state,r=i.wrap;if(2===r||1===r&&i.status!==qi||i.lookahead)return bi;if(1===r&&(A.adler=li(A.adler,e,t,0)),i.wrap=0,t>=i.w_size){0===r&&(zi(i.head),i.strstart=0,i.block_start=0,i.insert=0);let A=new Uint8Array(i.w_size);A.set(e.subarray(t-i.w_size,t),0),e=A,t=i.w_size}const a=A.avail_in,n=A.next_in,s=A.input;for(A.avail_in=t,A.next_in=0,A.input=e,Ar(i);i.lookahead>=3;){let A=i.strstart,e=i.lookahead-2;do{i.ins_h=Ki(i,i.ins_h,i.window[A+3-1]),i.prev[A&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=A,A++}while(--e);i.strstart=A,i.lookahead=2,Ar(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,A.next_in=n,A.input=s,A.avail_in=a,i.wrap=r,Di},deflateInfo:"pako deflate (from Nodeca project)"};const Ir=(A,e)=>Object.prototype.hasOwnProperty.call(A,e);var Br={assign:function(A){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const t=e.shift();if(t){if("object"!=typeof t)throw new TypeError(t+"must be non-object");for(const e in t)Ir(t,e)&&(A[e]=t[e])}}return A},flattenChunks:A=>{let e=0;for(let t=0,i=A.length;t<i;t++)e+=A[t].length;const t=new Uint8Array(e);for(let e=0,i=0,r=A.length;e<r;e++){let r=A[e];t.set(r,i),i+=r.length}return t}};let cr=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(A){cr=!1}const Cr=new Uint8Array(256);for(let A=0;A<256;A++)Cr[A]=A>=252?6:A>=248?5:A>=240?4:A>=224?3:A>=192?2:1;Cr[254]=Cr[254]=1;var fr={string2buf:A=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(A);let e,t,i,r,a,n=A.length,s=0;for(r=0;r<n;r++)t=A.charCodeAt(r),55296==(64512&t)&&r+1<n&&(i=A.charCodeAt(r+1),56320==(64512&i)&&(t=65536+(t-55296<<10)+(i-56320),r++)),s+=t<128?1:t<2048?2:t<65536?3:4;for(e=new Uint8Array(s),a=0,r=0;a<s;r++)t=A.charCodeAt(r),55296==(64512&t)&&r+1<n&&(i=A.charCodeAt(r+1),56320==(64512&i)&&(t=65536+(t-55296<<10)+(i-56320),r++)),t<128?e[a++]=t:t<2048?(e[a++]=192|t>>>6,e[a++]=128|63&t):t<65536?(e[a++]=224|t>>>12,e[a++]=128|t>>>6&63,e[a++]=128|63&t):(e[a++]=240|t>>>18,e[a++]=128|t>>>12&63,e[a++]=128|t>>>6&63,e[a++]=128|63&t);return e},buf2string:(A,e)=>{const t=e||A.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(A.subarray(0,e));let i,r;const a=new Array(2*t);for(r=0,i=0;i<t;){let e=A[i++];if(e<128){a[r++]=e;continue}let n=Cr[e];if(n>4)a[r++]=65533,i+=n-1;else{for(e&=2===n?31:3===n?15:7;n>1&&i<t;)e=e<<6|63&A[i++],n--;n>1?a[r++]=65533:e<65536?a[r++]=e:(e-=65536,a[r++]=55296|e>>10&1023,a[r++]=56320|1023&e)}}return((A,e)=>{if(e<65534&&A.subarray&&cr)return String.fromCharCode.apply(null,A.length===e?A:A.subarray(0,e));let t="";for(let i=0;i<e;i++)t+=String.fromCharCode(A[i]);return t})(a,r)},utf8border:(A,e)=>{(e=e||A.length)>A.length&&(e=A.length);let t=e-1;for(;t>=0&&128==(192&A[t]);)t--;return t<0||0===t?e:t+Cr[A[t]]>e?t:e}};var Er=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 Qr=Object.prototype.toString,{Z_NO_FLUSH:dr,Z_SYNC_FLUSH:ur,Z_FULL_FLUSH:wr,Z_FINISH:pr,Z_OK:mr,Z_STREAM_END:yr,Z_DEFAULT_COMPRESSION:Dr,Z_DEFAULT_STRATEGY:kr,Z_DEFLATED:br}=ci;function _r(A){this.options=Br.assign({level:Dr,method:br,chunkSize:16384,windowBits:15,memLevel:8,strategy:kr},A||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Er,this.strm.avail_out=0;let t=hr.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(t!==mr)throw new Error(Bi[t]);if(e.header&&hr.deflateSetHeader(this.strm,e.header),e.dictionary){let A;if(A="string"==typeof e.dictionary?fr.string2buf(e.dictionary):"[object ArrayBuffer]"===Qr.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,t=hr.deflateSetDictionary(this.strm,A),t!==mr)throw new Error(Bi[t]);this._dict_set=!0}}_r.prototype.push=function(A,e){const t=this.strm,i=this.options.chunkSize;let r,a;if(this.ended)return!1;for(a=e===~~e?e:!0===e?pr:dr,"string"==typeof A?t.input=fr.string2buf(A):"[object ArrayBuffer]"===Qr.call(A)?t.input=new Uint8Array(A):t.input=A,t.next_in=0,t.avail_in=t.input.length;;)if(0===t.avail_out&&(t.output=new Uint8Array(i),t.next_out=0,t.avail_out=i),(a===ur||a===wr)&&t.avail_out<=6)this.onData(t.output.subarray(0,t.next_out)),t.avail_out=0;else{if(r=hr.deflate(t,a),r===yr)return t.next_out>0&&this.onData(t.output.subarray(0,t.next_out)),r=hr.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===mr;if(0!==t.avail_out){if(a>0&&t.next_out>0)this.onData(t.output.subarray(0,t.next_out)),t.avail_out=0;else if(0===t.avail_in)break}else this.onData(t.output)}return!0},_r.prototype.onData=function(A){this.chunks.push(A)},_r.prototype.onEnd=function(A){A===mr&&(this.result=Br.flattenChunks(this.chunks)),this.chunks=[],this.err=A,this.msg=this.strm.msg};const Sr=16209;var xr=function(A,e){let t,i,r,a,n,s,o,g,l,h,I,B,c,C,f,E,Q,d,u,w,p,m,y,D;const k=A.state;t=A.next_in,y=A.input,i=t+(A.avail_in-5),r=A.next_out,D=A.output,a=r-(e-A.avail_out),n=r+(A.avail_out-257),s=k.dmax,o=k.wsize,g=k.whave,l=k.wnext,h=k.window,I=k.hold,B=k.bits,c=k.lencode,C=k.distcode,f=(1<<k.lenbits)-1,E=(1<<k.distbits)-1;A:do{B<15&&(I+=y[t++]<<B,B+=8,I+=y[t++]<<B,B+=8),Q=c[I&f];e:for(;;){if(d=Q>>>24,I>>>=d,B-=d,d=Q>>>16&255,0===d)D[r++]=65535&Q;else{if(!(16&d)){if(0==(64&d)){Q=c[(65535&Q)+(I&(1<<d)-1)];continue e}if(32&d){k.mode=16191;break A}A.msg="invalid literal/length code",k.mode=Sr;break A}u=65535&Q,d&=15,d&&(B<d&&(I+=y[t++]<<B,B+=8),u+=I&(1<<d)-1,I>>>=d,B-=d),B<15&&(I+=y[t++]<<B,B+=8,I+=y[t++]<<B,B+=8),Q=C[I&E];t:for(;;){if(d=Q>>>24,I>>>=d,B-=d,d=Q>>>16&255,!(16&d)){if(0==(64&d)){Q=C[(65535&Q)+(I&(1<<d)-1)];continue t}A.msg="invalid distance code",k.mode=Sr;break A}if(w=65535&Q,d&=15,B<d&&(I+=y[t++]<<B,B+=8,B<d&&(I+=y[t++]<<B,B+=8)),w+=I&(1<<d)-1,w>s){A.msg="invalid distance too far back",k.mode=Sr;break A}if(I>>>=d,B-=d,d=r-a,w>d){if(d=w-d,d>g&&k.sane){A.msg="invalid distance too far back",k.mode=Sr;break A}if(p=0,m=h,0===l){if(p+=o-d,d<u){u-=d;do{D[r++]=h[p++]}while(--d);p=r-w,m=D}}else if(l<d){if(p+=o+l-d,d-=l,d<u){u-=d;do{D[r++]=h[p++]}while(--d);if(p=0,l<u){d=l,u-=d;do{D[r++]=h[p++]}while(--d);p=r-w,m=D}}}else if(p+=l-d,d<u){u-=d;do{D[r++]=h[p++]}while(--d);p=r-w,m=D}for(;u>2;)D[r++]=m[p++],D[r++]=m[p++],D[r++]=m[p++],u-=3;u&&(D[r++]=m[p++],u>1&&(D[r++]=m[p++]))}else{p=r-w;do{D[r++]=D[p++],D[r++]=D[p++],D[r++]=D[p++],u-=3}while(u>2);u&&(D[r++]=D[p++],u>1&&(D[r++]=D[p++]))}break}}break}}while(t<i&&r<n);u=B>>3,t-=u,B-=u<<3,I&=(1<<B)-1,A.next_in=t,A.next_out=r,A.avail_in=t<i?i-t+5:5-(t-i),A.avail_out=r<n?n-r+257:257-(r-n),k.hold=I,k.bits=B};const Fr=15,Gr=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]),Ur=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]),Rr=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]),Mr=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 Lr=(A,e,t,i,r,a,n,s)=>{const o=s.bits;let g,l,h,I,B,c,C=0,f=0,E=0,Q=0,d=0,u=0,w=0,p=0,m=0,y=0,D=null;const k=new Uint16Array(16),b=new Uint16Array(16);let _,S,x,F=null;for(C=0;C<=Fr;C++)k[C]=0;for(f=0;f<i;f++)k[e[t+f]]++;for(d=o,Q=Fr;Q>=1&&0===k[Q];Q--);if(d>Q&&(d=Q),0===Q)return r[a++]=20971520,r[a++]=20971520,s.bits=1,0;for(E=1;E<Q&&0===k[E];E++);for(d<E&&(d=E),p=1,C=1;C<=Fr;C++)if(p<<=1,p-=k[C],p<0)return-1;if(p>0&&(0===A||1!==Q))return-1;for(b[1]=0,C=1;C<Fr;C++)b[C+1]=b[C]+k[C];for(f=0;f<i;f++)0!==e[t+f]&&(n[b[e[t+f]]++]=f);if(0===A?(D=F=n,c=20):1===A?(D=Gr,F=Ur,c=257):(D=Rr,F=Mr,c=0),y=0,f=0,C=E,B=a,u=d,w=0,h=-1,m=1<<d,I=m-1,1===A&&m>852||2===A&&m>592)return 1;for(;;){_=C-w,n[f]+1<c?(S=0,x=n[f]):n[f]>=c?(S=F[n[f]-c],x=D[n[f]-c]):(S=96,x=0),g=1<<C-w,l=1<<u,E=l;do{l-=g,r[B+(y>>w)+l]=_<<24|S<<16|x|0}while(0!==l);for(g=1<<C-1;y&g;)g>>=1;if(0!==g?(y&=g-1,y+=g):y=0,f++,0==--k[C]){if(C===Q)break;C=e[t+n[f]]}if(C>d&&(y&I)!==h){for(0===w&&(w=d),B+=E,u=C-w,p=1<<u;u+w<Q&&(p-=k[u+w],!(p<=0));)u++,p<<=1;if(m+=1<<u,1===A&&m>852||2===A&&m>592)return 1;h=y&I,r[h]=d<<24|u<<16|B-a|0}}return 0!==y&&(r[B+y]=C-w<<24|64<<16|0),s.bits=d,0};const{Z_FINISH:vr,Z_BLOCK:Nr,Z_TREES:Tr,Z_OK:qr,Z_STREAM_END:Or,Z_NEED_DICT:Jr,Z_STREAM_ERROR:Hr,Z_DATA_ERROR:Yr,Z_MEM_ERROR:zr,Z_BUF_ERROR:Pr,Z_DEFLATED:Kr}=ci,Vr=16180,Zr=16190,Xr=16191,Wr=16192,jr=16194,$r=16199,Aa=16200,ea=16206,ta=16209,ia=A=>(A>>>24&255)+(A>>>8&65280)+((65280&A)<<8)+((255&A)<<24);function ra(){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 aa=A=>{if(!A)return 1;const e=A.state;return!e||e.strm!==A||e.mode<Vr||e.mode>16211?1:0},na=A=>{if(aa(A))return Hr;const e=A.state;return A.total_in=A.total_out=e.total=0,A.msg="",e.wrap&&(A.adler=1&e.wrap),e.mode=Vr,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,qr},sa=A=>{if(aa(A))return Hr;const e=A.state;return e.wsize=0,e.whave=0,e.wnext=0,na(A)},oa=(A,e)=>{let t;if(aa(A))return Hr;const i=A.state;return e<0?(t=0,e=-e):(t=5+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?Hr:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=t,i.wbits=e,sa(A))},ga=(A,e)=>{if(!A)return Hr;const t=new ra;A.state=t,t.strm=A,t.window=null,t.mode=Vr;const i=oa(A,e);return i!==qr&&(A.state=null),i};let la,ha,Ia=!0;const Ba=A=>{if(Ia){la=new Int32Array(512),ha=new Int32Array(32);let e=0;for(;e<144;)A.lens[e++]=8;for(;e<256;)A.lens[e++]=9;for(;e<280;)A.lens[e++]=7;for(;e<288;)A.lens[e++]=8;for(Lr(1,A.lens,0,288,la,0,A.work,{bits:9}),e=0;e<32;)A.lens[e++]=5;Lr(2,A.lens,0,32,ha,0,A.work,{bits:5}),Ia=!1}A.lencode=la,A.lenbits=9,A.distcode=ha,A.distbits=5},ca=(A,e,t,i)=>{let r;const a=A.state;return null===a.window&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=new Uint8Array(a.wsize)),i>=a.wsize?(a.window.set(e.subarray(t-a.wsize,t),0),a.wnext=0,a.whave=a.wsize):(r=a.wsize-a.wnext,r>i&&(r=i),a.window.set(e.subarray(t-i,t-i+r),a.wnext),(i-=r)?(a.window.set(e.subarray(t-i,t),0),a.wnext=i,a.whave=a.wsize):(a.wnext+=r,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=r))),0};var Ca={inflateReset:sa,inflateReset2:oa,inflateResetKeep:na,inflateInit:A=>ga(A,15),inflateInit2:ga,inflate:(A,e)=>{let t,i,r,a,n,s,o,g,l,h,I,B,c,C,f,E,Q,d,u,w,p,m,y=0;const D=new Uint8Array(4);let k,b;const _=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(aa(A)||!A.output||!A.input&&0!==A.avail_in)return Hr;t=A.state,t.mode===Xr&&(t.mode=Wr),n=A.next_out,r=A.output,o=A.avail_out,a=A.next_in,i=A.input,s=A.avail_in,g=t.hold,l=t.bits,h=s,I=o,m=qr;A:for(;;)switch(t.mode){case Vr:if(0===t.wrap){t.mode=Wr;break}for(;l<16;){if(0===s)break A;s--,g+=i[a++]<<l,l+=8}if(2&t.wrap&&35615===g){0===t.wbits&&(t.wbits=15),t.check=0,D[0]=255&g,D[1]=g>>>8&255,t.check=Ii(t.check,D,2,0),g=0,l=0,t.mode=16181;break}if(t.head&&(t.head.done=!1),!(1&t.wrap)||(((255&g)<<8)+(g>>8))%31){A.msg="incorrect header check",t.mode=ta;break}if((15&g)!==Kr){A.msg="unknown compression method",t.mode=ta;break}if(g>>>=4,l-=4,p=8+(15&g),0===t.wbits&&(t.wbits=p),p>15||p>t.wbits){A.msg="invalid window size",t.mode=ta;break}t.dmax=1<<t.wbits,t.flags=0,A.adler=t.check=1,t.mode=512&g?16189:Xr,g=0,l=0;break;case 16181:for(;l<16;){if(0===s)break A;s--,g+=i[a++]<<l,l+=8}if(t.flags=g,(255&t.flags)!==Kr){A.msg="unknown compression method",t.mode=ta;break}if(57344&t.flags){A.msg="unknown header flags set",t.mode=ta;break}t.head&&(t.head.text=g>>8&1),512&t.flags&&4&t.wrap&&(D[0]=255&g,D[1]=g>>>8&255,t.check=Ii(t.check,D,2,0)),g=0,l=0,t.mode=16182;case 16182:for(;l<32;){if(0===s)break A;s--,g+=i[a++]<<l,l+=8}t.head&&(t.head.time=g),512&t.flags&&4&t.wrap&&(D[0]=255&g,D[1]=g>>>8&255,D[2]=g>>>16&255,D[3]=g>>>24&255,t.check=Ii(t.check,D,4,0)),g=0,l=0,t.mode=16183;case 16183:for(;l<16;){if(0===s)break A;s--,g+=i[a++]<<l,l+=8}t.head&&(t.head.xflags=255&g,t.head.os=g>>8),512&t.flags&&4&t.wrap&&(D[0]=255&g,D[1]=g>>>8&255,t.check=Ii(t.check,D,2,0)),g=0,l=0,t.mode=16184;case 16184:if(1024&t.flags){for(;l<16;){if(0===s)break A;s--,g+=i[a++]<<l,l+=8}t.length=g,t.head&&(t.head.extra_len=g),512&t.flags&&4&t.wrap&&(D[0]=255&g,D[1]=g>>>8&255,t.check=Ii(t.check,D,2,0)),g=0,l=0}else t.head&&(t.head.extra=null);t.mode=16185;case 16185:if(1024&t.flags&&(B=t.length,B>s&&(B=s),B&&(t.head&&(p=t.head.extra_len-t.length,t.head.extra||(t.head.extra=new Uint8Array(t.head.extra_len)),t.head.extra.set(i.subarray(a,a+B),p)),512&t.flags&&4&t.wrap&&(t.check=Ii(t.check,i,B,a)),s-=B,a+=B,t.length-=B),t.length))break A;t.length=0,t.mode=16186;case 16186:if(2048&t.flags){if(0===s)break A;B=0;do{p=i[a+B++],t.head&&p&&t.length<65536&&(t.head.name+=String.fromCharCode(p))}while(p&&B<s);if(512&t.flags&&4&t.wrap&&(t.check=Ii(t.check,i,B,a)),s-=B,a+=B,p)break A}else t.head&&(t.head.name=null);t.length=0,t.mode=16187;case 16187:if(4096&t.flags){if(0===s)break A;B=0;do{p=i[a+B++],t.head&&p&&t.length<65536&&(t.head.comment+=String.fromCharCode(p))}while(p&&B<s);if(512&t.flags&&4&t.wrap&&(t.check=Ii(t.check,i,B,a)),s-=B,a+=B,p)break A}else t.head&&(t.head.comment=null);t.mode=16188;case 16188:if(512&t.flags){for(;l<16;){if(0===s)break A;s--,g+=i[a++]<<l,l+=8}if(4&t.wrap&&g!==(65535&t.check)){A.msg="header crc mismatch",t.mode=ta;break}g=0,l=0}t.head&&(t.head.hcrc=t.flags>>9&1,t.head.done=!0),A.adler=t.check=0,t.mode=Xr;break;case 16189:for(;l<32;){if(0===s)break A;s--,g+=i[a++]<<l,l+=8}A.adler=t.check=ia(g),g=0,l=0,t.mode=Zr;case Zr:if(0===t.havedict)return A.next_out=n,A.avail_out=o,A.next_in=a,A.avail_in=s,t.hold=g,t.bits=l,Jr;A.adler=t.check=1,t.mode=Xr;case Xr:if(e===Nr||e===Tr)break A;case Wr:if(t.last){g>>>=7&l,l-=7&l,t.mode=ea;break}for(;l<3;){if(0===s)break A;s--,g+=i[a++]<<l,l+=8}switch(t.last=1&g,g>>>=1,l-=1,3&g){case 0:t.mode=16193;break;case 1:if(Ba(t),t.mode=$r,e===Tr){g>>>=2,l-=2;break A}break;case 2:t.mode=16196;break;case 3:A.msg="invalid block type",t.mode=ta}g>>>=2,l-=2;break;case 16193:for(g>>>=7&l,l-=7&l;l<32;){if(0===s)break A;s--,g+=i[a++]<<l,l+=8}if((65535&g)!=(g>>>16^65535)){A.msg="invalid stored block lengths",t.mode=ta;break}if(t.length=65535&g,g=0,l=0,t.mode=jr,e===Tr)break A;case jr:t.mode=16195;case 16195:if(B=t.length,B){if(B>s&&(B=s),B>o&&(B=o),0===B)break A;r.set(i.subarray(a,a+B),n),s-=B,a+=B,o-=B,n+=B,t.length-=B;break}t.mode=Xr;break;case 16196:for(;l<14;){if(0===s)break A;s--,g+=i[a++]<<l,l+=8}if(t.nlen=257+(31&g),g>>>=5,l-=5,t.ndist=1+(31&g),g>>>=5,l-=5,t.ncode=4+(15&g),g>>>=4,l-=4,t.nlen>286||t.ndist>30){A.msg="too many length or distance symbols",t.mode=ta;break}t.have=0,t.mode=16197;case 16197:for(;t.have<t.ncode;){for(;l<3;){if(0===s)break A;s--,g+=i[a++]<<l,l+=8}t.lens[_[t.have++]]=7&g,g>>>=3,l-=3}for(;t.have<19;)t.lens[_[t.have++]]=0;if(t.lencode=t.lendyn,t.lenbits=7,k={bits:t.lenbits},m=Lr(0,t.lens,0,19,t.lencode,0,t.work,k),t.lenbits=k.bits,m){A.msg="invalid code lengths set",t.mode=ta;break}t.have=0,t.mode=16198;case 16198:for(;t.have<t.nlen+t.ndist;){for(;y=t.lencode[g&(1<<t.lenbits)-1],f=y>>>24,E=y>>>16&255,Q=65535&y,!(f<=l);){if(0===s)break A;s--,g+=i[a++]<<l,l+=8}if(Q<16)g>>>=f,l-=f,t.lens[t.have++]=Q;else{if(16===Q){for(b=f+2;l<b;){if(0===s)break A;s--,g+=i[a++]<<l,l+=8}if(g>>>=f,l-=f,0===t.have){A.msg="invalid bit length repeat",t.mode=ta;break}p=t.lens[t.have-1],B=3+(3&g),g>>>=2,l-=2}else if(17===Q){for(b=f+3;l<b;){if(0===s)break A;s--,g+=i[a++]<<l,l+=8}g>>>=f,l-=f,p=0,B=3+(7&g),g>>>=3,l-=3}else{for(b=f+7;l<b;){if(0===s)break A;s--,g+=i[a++]<<l,l+=8}g>>>=f,l-=f,p=0,B=11+(127&g),g>>>=7,l-=7}if(t.have+B>t.nlen+t.ndist){A.msg="invalid bit length repeat",t.mode=ta;break}for(;B--;)t.lens[t.have++]=p}}if(t.mode===ta)break;if(0===t.lens[256]){A.msg="invalid code -- missing end-of-block",t.mode=ta;break}if(t.lenbits=9,k={bits:t.lenbits},m=Lr(1,t.lens,0,t.nlen,t.lencode,0,t.work,k),t.lenbits=k.bits,m){A.msg="invalid literal/lengths set",t.mode=ta;break}if(t.distbits=6,t.distcode=t.distdyn,k={bits:t.distbits},m=Lr(2,t.lens,t.nlen,t.ndist,t.distcode,0,t.work,k),t.distbits=k.bits,m){A.msg="invalid distances set",t.mode=ta;break}if(t.mode=$r,e===Tr)break A;case $r:t.mode=Aa;case Aa:if(s>=6&&o>=258){A.next_out=n,A.avail_out=o,A.next_in=a,A.avail_in=s,t.hold=g,t.bits=l,xr(A,I),n=A.next_out,r=A.output,o=A.avail_out,a=A.next_in,i=A.input,s=A.avail_in,g=t.hold,l=t.bits,t.mode===Xr&&(t.back=-1);break}for(t.back=0;y=t.lencode[g&(1<<t.lenbits)-1],f=y>>>24,E=y>>>16&255,Q=65535&y,!(f<=l);){if(0===s)break A;s--,g+=i[a++]<<l,l+=8}if(E&&0==(240&E)){for(d=f,u=E,w=Q;y=t.lencode[w+((g&(1<<d+u)-1)>>d)],f=y>>>24,E=y>>>16&255,Q=65535&y,!(d+f<=l);){if(0===s)break A;s--,g+=i[a++]<<l,l+=8}g>>>=d,l-=d,t.back+=d}if(g>>>=f,l-=f,t.back+=f,t.length=Q,0===E){t.mode=16205;break}if(32&E){t.back=-1,t.mode=Xr;break}if(64&E){A.msg="invalid literal/length code",t.mode=ta;break}t.extra=15&E,t.mode=16201;case 16201:if(t.extra){for(b=t.extra;l<b;){if(0===s)break A;s--,g+=i[a++]<<l,l+=8}t.length+=g&(1<<t.extra)-1,g>>>=t.extra,l-=t.extra,t.back+=t.extra}t.was=t.length,t.mode=16202;case 16202:for(;y=t.distcode[g&(1<<t.distbits)-1],f=y>>>24,E=y>>>16&255,Q=65535&y,!(f<=l);){if(0===s)break A;s--,g+=i[a++]<<l,l+=8}if(0==(240&E)){for(d=f,u=E,w=Q;y=t.distcode[w+((g&(1<<d+u)-1)>>d)],f=y>>>24,E=y>>>16&255,Q=65535&y,!(d+f<=l);){if(0===s)break A;s--,g+=i[a++]<<l,l+=8}g>>>=d,l-=d,t.back+=d}if(g>>>=f,l-=f,t.back+=f,64&E){A.msg="invalid distance code",t.mode=ta;break}t.offset=Q,t.extra=15&E,t.mode=16203;case 16203:if(t.extra){for(b=t.extra;l<b;){if(0===s)break A;s--,g+=i[a++]<<l,l+=8}t.offset+=g&(1<<t.extra)-1,g>>>=t.extra,l-=t.extra,t.back+=t.extra}if(t.offset>t.dmax){A.msg="invalid distance too far back",t.mode=ta;break}t.mode=16204;case 16204:if(0===o)break A;if(B=I-o,t.offset>B){if(B=t.offset-B,B>t.whave&&t.sane){A.msg="invalid distance too far back",t.mode=ta;break}B>t.wnext?(B-=t.wnext,c=t.wsize-B):c=t.wnext-B,B>t.length&&(B=t.length),C=t.window}else C=r,c=n-t.offset,B=t.length;B>o&&(B=o),o-=B,t.length-=B;do{r[n++]=C[c++]}while(--B);0===t.length&&(t.mode=Aa);break;case 16205:if(0===o)break A;r[n++]=t.length,o--,t.mode=Aa;break;case ea:if(t.wrap){for(;l<32;){if(0===s)break A;s--,g|=i[a++]<<l,l+=8}if(I-=o,A.total_out+=I,t.total+=I,4&t.wrap&&I&&(A.adler=t.check=t.flags?Ii(t.check,r,I,n-I):li(t.check,r,I,n-I)),I=o,4&t.wrap&&(t.flags?g:ia(g))!==t.check){A.msg="incorrect data check",t.mode=ta;break}g=0,l=0}t.mode=16207;case 16207:if(t.wrap&&t.flags){for(;l<32;){if(0===s)break A;s--,g+=i[a++]<<l,l+=8}if(4&t.wrap&&g!==(4294967295&t.total)){A.msg="incorrect length check",t.mode=ta;break}g=0,l=0}t.mode=16208;case 16208:m=Or;break A;case ta:m=Yr;break A;case 16210:return zr;default:return Hr}return A.next_out=n,A.avail_out=o,A.next_in=a,A.avail_in=s,t.hold=g,t.bits=l,(t.wsize||I!==A.avail_out&&t.mode<ta&&(t.mode<ea||e!==vr))&&ca(A,A.output,A.next_out,I-A.avail_out),h-=A.avail_in,I-=A.avail_out,A.total_in+=h,A.total_out+=I,t.total+=I,4&t.wrap&&I&&(A.adler=t.check=t.flags?Ii(t.check,r,I,A.next_out-I):li(t.check,r,I,A.next_out-I)),A.data_type=t.bits+(t.last?64:0)+(t.mode===Xr?128:0)+(t.mode===$r||t.mode===jr?256:0),(0===h&&0===I||e===vr)&&m===qr&&(m=Pr),m},inflateEnd:A=>{if(aa(A))return Hr;let e=A.state;return e.window&&(e.window=null),A.state=null,qr},inflateGetHeader:(A,e)=>{if(aa(A))return Hr;const t=A.state;return 0==(2&t.wrap)?Hr:(t.head=e,e.done=!1,qr)},inflateSetDictionary:(A,e)=>{const t=e.length;let i,r,a;return aa(A)?Hr:(i=A.state,0!==i.wrap&&i.mode!==Zr?Hr:i.mode===Zr&&(r=1,r=li(r,e,t,0),r!==i.check)?Yr:(a=ca(A,e,t,t),a?(i.mode=16210,zr):(i.havedict=1,qr)))},inflateInfo:"pako inflate (from Nodeca project)"};var fa=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 Ea=Object.prototype.toString,{Z_NO_FLUSH:Qa,Z_FINISH:da,Z_OK:ua,Z_STREAM_END:wa,Z_NEED_DICT:pa,Z_STREAM_ERROR:ma,Z_DATA_ERROR:ya,Z_MEM_ERROR:Da}=ci;function ka(A){this.options=Br.assign({chunkSize:65536,windowBits:15,to:""},A||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||A&&A.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Er,this.strm.avail_out=0;let t=Ca.inflateInit2(this.strm,e.windowBits);if(t!==ua)throw new Error(Bi[t]);if(this.header=new fa,Ca.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=fr.string2buf(e.dictionary):"[object ArrayBuffer]"===Ea.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(t=Ca.inflateSetDictionary(this.strm,e.dictionary),t!==ua)))throw new Error(Bi[t])}function ba(A,e){const t=new ka(e);if(t.push(A),t.err)throw t.msg||Bi[t.err];return t.result}ka.prototype.push=function(A,e){const t=this.strm,i=this.options.chunkSize,r=this.options.dictionary;let a,n,s;if(this.ended)return!1;for(n=e===~~e?e:!0===e?da:Qa,"[object ArrayBuffer]"===Ea.call(A)?t.input=new Uint8Array(A):t.input=A,t.next_in=0,t.avail_in=t.input.length;;){for(0===t.avail_out&&(t.output=new Uint8Array(i),t.next_out=0,t.avail_out=i),a=Ca.inflate(t,n),a===pa&&r&&(a=Ca.inflateSetDictionary(t,r),a===ua?a=Ca.inflate(t,n):a===ya&&(a=pa));t.avail_in>0&&a===wa&&t.state.wrap>0&&0!==A[t.next_in];)Ca.inflateReset(t),a=Ca.inflate(t,n);switch(a){case ma:case ya:case pa:case Da:return this.onEnd(a),this.ended=!0,!1}if(s=t.avail_out,t.next_out&&(0===t.avail_out||a===wa))if("string"===this.options.to){let A=fr.utf8border(t.output,t.next_out),e=t.next_out-A,r=fr.buf2string(t.output,A);t.next_out=e,t.avail_out=i-e,e&&t.output.set(t.output.subarray(A,A+e),0),this.onData(r)}else this.onData(t.output.length===t.next_out?t.output:t.output.subarray(0,t.next_out));if(a!==ua||0!==s){if(a===wa)return a=Ca.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(0===t.avail_in)break}}return!0},ka.prototype.onData=function(A){this.chunks.push(A)},ka.prototype.onEnd=function(A){A===ua&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Br.flattenChunks(this.chunks)),this.chunks=[],this.err=A,this.msg=this.strm.msg};var _a={Inflate:ka,inflate:ba,inflateRaw:function(A,e){return(e=e||{}).raw=!0,ba(A,e)},ungzip:ba,constants:ci};const{Inflate:Sa,inflate:xa,inflateRaw:Fa,ungzip:Ga}=_a;var Ua=xa;var Ra=Object.freeze({__proto__:null,default:class extends xe{decodeBlock(A){return Ua(new Uint8Array(A)).buffer}}});var Ma=Object.freeze({__proto__:null,default:class extends xe{decodeBlock(A){const e=new DataView(A),t=[];for(let i=0;i<A.byteLength;++i){let A=e.getInt8(i);if(A<0){const r=e.getUint8(i+1);A=-A;for(let e=0;e<=A;++e)t.push(r);i+=1}else{for(let r=0;r<=A;++r)t.push(e.getUint8(i+r+1));i+=A+1}}return new Uint8Array(t).buffer}}}),La={exports:{}};!function(A){
1
+ "use strict";var A=require("@deck.gl/core"),g=require("@deck.gl/geo-layers"),I=require("@deck.gl/layers"),e=require("@deck.gl/extensions"),t=require("@math.gl/web-mercator"),B=require("chroma-js"),i=require("@loaders.gl/schema"),C=require("@loaders.gl/loader-utils"),Q=require("@deck.gl/mesh-layers");function E(A){return(g,...I)=>a(A,g,I)}function s(A,g){return E(h(A,g).get)}const{apply:a,construct:o,defineProperty:r,get:n,getOwnPropertyDescriptor:h,getPrototypeOf:l,has:c,ownKeys:w,set:D,setPrototypeOf:d}=Reflect,{iterator:y,species:f,toStringTag:u,for:S}=Symbol,G=Object,{create:N,defineProperty:F,freeze:k,is:R}=G,L=Array.prototype[y],U=E(L),m=ArrayBuffer;s(m.prototype,"byteLength");const p="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:null;p&&s(p.prototype,"byteLength");const Y=l(Uint8Array);Y.from;const M=Y.prototype;M[y],E(M.keys),E(M.values),E(M.entries),E(M.set),E(M.reverse),E(M.fill),E(M.copyWithin),E(M.sort),E(M.slice),E(M.subarray),s(M,"buffer"),s(M,"byteOffset"),s(M,"length"),s(M,u);const K=Uint8Array,b=Uint16Array,J=Uint32Array,H=Float32Array,q=l([][y]()),x=E(q.next),_=E(function*(){}().next),T=l(q),O=E(DataView.prototype.getUint16),v=WeakMap,P=v.prototype,Z=E(P.get),V=E(P.set),z=new v,j=N(null,{next:{value:function(){const A=Z(z,this);return x(A)}},[y]:{value:function(){return this}}});const W=new v,X=N(T,{next:{value:function(){const A=Z(W,this);return _(A)},writable:!0,configurable:!0}});for(const A of w(q))"next"!==A&&F(X,A,h(q,A));const $=new m(4),AA=new H($),gA=new J($),IA=new b(512),eA=new K(512);for(let A=0;A<256;++A){const g=A-127;g<-24?(IA[A]=0,IA[256|A]=32768,eA[A]=24,eA[256|A]=24):g<-14?(IA[A]=1024>>-g-14,IA[256|A]=1024>>-g-14|32768,eA[A]=-g-1,eA[256|A]=-g-1):g<=15?(IA[A]=g+15<<10,IA[256|A]=g+15<<10|32768,eA[A]=13,eA[256|A]=13):g<128?(IA[A]=31744,IA[256|A]=64512,eA[A]=24,eA[256|A]=24):(IA[A]=31744,IA[256|A]=64512,eA[A]=13,eA[256|A]=13)}const tA=new J(2048);for(let A=1;A<1024;++A){let g=A<<13,I=0;for(;!(8388608&g);)g<<=1,I-=8388608;g&=-8388609,I+=947912704,tA[A]=g|I}for(let A=1024;A<2048;++A)tA[A]=939524096+(A-1024<<13);const BA=new J(64);for(let A=1;A<31;++A)BA[A]=A<<23;BA[31]=1199570944,BA[32]=2147483648;for(let A=33;A<63;++A)BA[A]=2147483648+(A-32<<23);BA[63]=3347054592;const iA=new b(64);for(let A=1;A<64;++A)32!==A&&(iA[A]=1024);function CA(A,g,...I){return function(A){const g=A>>10;return gA[0]=tA[iA[g]+(1023&A)]+BA[g],AA[0]}(O(A,g,...function(A){if(A[y]===L&&q.next===x)return A;const g=N(j);return V(z,g,U(A)),g}(I)))}function QA(A,g,I){const e=I&&I.debug||!1;e&&console.log("[xml-utils] getting "+g+" in "+A);const t="object"==typeof A?A.outer:A,B=t.slice(0,t.indexOf(">")+1),i=['"',"'"];for(let A=0;A<i.length;A++){const I=i[A],t=g+"\\="+I+"([^"+I+"]*)"+I;e&&console.log("[xml-utils] pattern:",t);const C=new RegExp(t).exec(B);if(e&&console.log("[xml-utils] match:",C),C)return C[1]}}function EA(A,g,I){const e=new RegExp(g).exec(A.slice(I));return e?I+e.index+e[0].length-1:-1}function sA(A,g){const I=new RegExp(g,"g"),e=A.match(I);return e?e.length:0}function aA(A,g,I){const e=I&&I.debug||!1,t=!(I&&!1===typeof I.nested),B=I&&I.startIndex||0;e&&console.log("[xml-utils] starting findTagByName with",g," and ",I);const i=function(A,g,I){const e=new RegExp(g).exec(A.slice(I));return e?I+e.index:-1}(A,`<${g}[ \n>/]`,B);if(e&&console.log("[xml-utils] start:",i),-1===i)return;const C=A.slice(i+g.length);let Q=EA(C,"^[^<]*[ /]>",0);const E=-1!==Q&&"/"===C[Q-1];if(e&&console.log("[xml-utils] selfClosing:",E),!1===E)if(t){let A=0,I=1,e=0;for(;-1!==(Q=EA(C,"[ /]"+g+">",A));){const t=C.substring(A,Q+1);if(I+=sA(t,"<"+g+"[ \n\t>]"),e+=sA(t,"</"+g+">"),e>=I)break;A=Q}}else Q=EA(C,"[ /]"+g+">",0);const s=i+g.length+Q+1;if(e&&console.log("[xml-utils] end:",s),-1===s)return;const a=A.slice(i,s);let o;return o=E?null:a.slice(a.indexOf(">")+1,a.lastIndexOf("<")),{inner:o,outer:a,start:i,end:s}}const oA=Object.freeze({BYTE:1,ASCII:2,SHORT:3,LONG:4,RATIONAL:5,SBYTE:6,UNDEFINED:7,SSHORT:8,SLONG:9,SRATIONAL:10,FLOAT:11,DOUBLE:12,IFD:13,LONG8:16,SLONG8:17,IFD8:18}),rA=Object.freeze({[oA.BYTE]:1,[oA.ASCII]:1,[oA.SBYTE]:1,[oA.UNDEFINED]:1,[oA.SHORT]:2,[oA.SSHORT]:2,[oA.LONG]:4,[oA.SLONG]:4,[oA.FLOAT]:4,[oA.IFD]:4,[oA.RATIONAL]:8,[oA.SRATIONAL]:8,[oA.DOUBLE]:8,[oA.LONG8]:8,[oA.SLONG8]:8,[oA.IFD8]:8});function nA(A){const g=rA[A];if(void 0===g)throw new RangeError(`Invalid field type: ${A}`);return g}const hA=[{tag:254,name:"NewSubfileType",fieldTypes:oA.LONG},{tag:255,name:"SubfileType",type:oA.SHORT},{tag:256,name:"ImageWidth",type:oA.SHORT},{tag:257,name:"ImageLength",type:oA.SHORT},{tag:258,name:"BitsPerSample",type:oA.SHORT,isArray:!0,eager:!0},{tag:259,name:"Compression",type:oA.SHORT},{tag:262,name:"PhotometricInterpretation",type:oA.SHORT},{tag:263,name:"Threshholding",type:oA.SHORT},{tag:264,name:"CellWidth",type:oA.SHORT},{tag:265,name:"CellLength",type:oA.SHORT},{tag:266,name:"FillOrder",type:oA.SHORT},{tag:269,name:"DocumentName",type:oA.ASCII},{tag:270,name:"ImageDescription",type:oA.ASCII},{tag:271,name:"Make",type:oA.ASCII},{tag:272,name:"Model",type:oA.ASCII},{tag:273,name:"StripOffsets",type:oA.SHORT,isArray:!0},{tag:274,name:"Orientation",type:oA.SHORT},{tag:277,name:"SamplesPerPixel",type:oA.SHORT},{tag:278,name:"RowsPerStrip",type:oA.SHORT},{tag:279,name:"StripByteCounts",type:oA.LONG,isArray:!0},{tag:280,name:"MinSampleValue",type:oA.SHORT,isArray:!0},{tag:281,name:"MaxSampleValue",type:oA.SHORT,isArray:!0},{tag:282,name:"XResolution",type:oA.RATIONAL},{tag:283,name:"YResolution",type:oA.RATIONAL},{tag:284,name:"PlanarConfiguration",fieldTypes:oA.SHORT},{tag:285,name:"PageName",type:oA.ASCII},{tag:286,name:"XPosition",type:oA.RATIONAL},{tag:287,name:"YPosition",type:oA.RATIONAL},{tag:288,name:"FreeOffsets",type:oA.LONG},{tag:289,name:"FreeByteCounts",type:oA.LONG},{tag:290,name:"GrayResponseUnit",type:oA.SHORT},{tag:291,name:"GrayResponseCurve",type:oA.SHORT,isArray:!0},{tag:292,name:"T4Options",type:oA.LONG},{tag:293,name:"T6Options",type:oA.LONG},{tag:296,name:"ResolutionUnit",type:oA.SHORT},{tag:297,name:"PageNumber",type:oA.SHORT,isArray:!0},{tag:301,name:"TransferFunction",type:oA.SHORT,isArray:!0},{tag:305,name:"Software",type:oA.ASCII},{tag:306,name:"DateTime",type:oA.ASCII},{tag:315,name:"Artist",type:oA.ASCII},{tag:316,name:"HostComputer",type:oA.ASCII},{tag:317,name:"Predictor",type:oA.SHORT},{tag:318,name:"WhitePoint",type:oA.RATIONAL,isArray:!0},{tag:319,name:"PrimaryChromaticities",type:oA.RATIONAL,isArray:!0},{tag:320,name:"ColorMap",type:oA.SHORT,isArray:!0},{tag:321,name:"HalftoneHints",type:oA.SHORT,isArray:!0},{tag:322,name:"TileWidth",type:oA.SHORT},{tag:323,name:"TileLength",type:oA.SHORT},{tag:324,name:"TileOffsets",type:oA.LONG,isArray:!0},{tag:325,name:"TileByteCounts",type:oA.SHORT,isArray:!0},{tag:332,name:"InkSet",type:oA.SHORT},{tag:333,name:"InkNames",type:oA.ASCII},{tag:334,name:"NumberOfInks",type:oA.SHORT},{tag:336,name:"DotRange",type:oA.BYTE,isArray:!0},{tag:337,name:"TargetPrinter",type:oA.ASCII},{tag:338,name:"ExtraSamples",type:oA.BYTE,isArray:!0},{tag:339,name:"SampleFormat",type:oA.SHORT,isArray:!0,eager:!0},{tag:340,name:"SMinSampleValue",isArray:!0},{tag:341,name:"SMaxSampleValue",isArray:!0},{tag:342,name:"TransferRange",type:oA.SHORT,isArray:!0},{tag:512,name:"JPEGProc",type:oA.SHORT},{tag:513,name:"JPEGInterchangeFormat",type:oA.LONG},{tag:514,name:"JPEGInterchangeFormatLngth",type:oA.LONG},{tag:515,name:"JPEGRestartInterval",type:oA.SHORT},{tag:517,name:"JPEGLosslessPredictors",type:oA.SHORT,isArray:!0},{tag:518,name:"JPEGPointTransforms",type:oA.SHORT,isArray:!0},{tag:519,name:"JPEGQTables",type:oA.LONG,isArray:!0},{tag:520,name:"JPEGDCTables",type:oA.LONG,isArray:!0},{tag:521,name:"JPEGACTables",type:oA.LONG,isArray:!0},{tag:529,name:"YCbCrCoefficients",type:oA.RATIONAL,isArray:!0},{tag:530,name:"YCbCrSubSampling",type:oA.SHORT,isArray:!0},{tag:531,name:"YCbCrPositioning",type:oA.SHORT},{tag:532,name:"ReferenceBlackWhite",type:oA.LONG,isArray:!0},{tag:33432,name:"Copyright",type:oA.ASCII},{tag:326,name:"BadFaxLines"},{tag:327,name:"CleanFaxData"},{tag:343,name:"ClipPath"},{tag:328,name:"ConsecutiveBadFaxLines"},{tag:433,name:"Decode"},{tag:434,name:"DefaultImageColor"},{tag:346,name:"Indexed"},{tag:347,name:"JPEGTables",isArray:!0,eager:!0},{tag:559,name:"StripRowCounts",isArray:!0},{tag:330,name:"SubIFDs",isArray:!0},{tag:344,name:"XClipPathUnits"},{tag:345,name:"YClipPathUnits"},{tag:37378,name:"ApertureValue"},{tag:40961,name:"ColorSpace"},{tag:36868,name:"DateTimeDigitized"},{tag:36867,name:"DateTimeOriginal"},{tag:34665,name:"Exif IFD",type:oA.LONG},{tag:36864,name:"ExifVersion"},{tag:33434,name:"ExposureTime"},{tag:41728,name:"FileSource"},{tag:37385,name:"Flash"},{tag:40960,name:"FlashpixVersion"},{tag:33437,name:"FNumber"},{tag:42016,name:"ImageUniqueID"},{tag:37384,name:"LightSource"},{tag:37500,name:"MakerNote"},{tag:37377,name:"ShutterSpeedValue"},{tag:37510,name:"UserComment"},{tag:33723,name:"IPTC"},{tag:34412,name:"CZ_LSMINFO"},{tag:34675,name:"ICC Profile"},{tag:700,name:"XMP"},{tag:42112,name:"GDAL_METADATA"},{tag:42113,name:"GDAL_NODATA",type:oA.ASCII},{tag:34377,name:"Photoshop"},{tag:33550,name:"ModelPixelScale",type:oA.DOUBLE,isArray:!0,eager:!0},{tag:33922,name:"ModelTiepoint",type:oA.DOUBLE,isArray:!0,eager:!0},{tag:34264,name:"ModelTransformation",type:oA.DOUBLE,isArray:!0,eager:!0},{tag:34735,name:"GeoKeyDirectory",type:oA.SHORT,isArray:!0,eager:!0},{tag:34736,name:"GeoDoubleParams",type:oA.DOUBLE,isArray:!0,eager:!0},{tag:34737,name:"GeoAsciiParams",type:oA.ASCII,eager:!0},{tag:50674,name:"LercParameters",eager:!0}],lA={},cA={};function wA(A,g,I,e=!1,t=!1){lA[g]=A,cA[A]={tag:A,name:g,type:"string"==typeof I?oA[I]:I,isArray:e,eager:t}}for(const A of hA)wA(A.tag,A.name,A.type,A.isArray,A.eager);function DA(A){return"number"==typeof A?A:lA[A]}const dA=0,yA=1,fA=2,uA=3,SA=5,GA=6,NA=8,FA=0,kA=1,RA=0,LA=1,UA=2,mA=Object.freeze({1024:"GTModelTypeGeoKey",1025:"GTRasterTypeGeoKey",1026:"GTCitationGeoKey",2048:"GeographicTypeGeoKey",2049:"GeogCitationGeoKey",2050:"GeogGeodeticDatumGeoKey",2051:"GeogPrimeMeridianGeoKey",2052:"GeogLinearUnitsGeoKey",2053:"GeogLinearUnitSizeGeoKey",2054:"GeogAngularUnitsGeoKey",2055:"GeogAngularUnitSizeGeoKey",2056:"GeogEllipsoidGeoKey",2057:"GeogSemiMajorAxisGeoKey",2058:"GeogSemiMinorAxisGeoKey",2059:"GeogInvFlatteningGeoKey",2060:"GeogAzimuthUnitsGeoKey",2061:"GeogPrimeMeridianLongGeoKey",2062:"GeogTOWGS84GeoKey",3072:"ProjectedCSTypeGeoKey",3073:"PCSCitationGeoKey",3074:"ProjectionGeoKey",3075:"ProjCoordTransGeoKey",3076:"ProjLinearUnitsGeoKey",3077:"ProjLinearUnitSizeGeoKey",3078:"ProjStdParallel1GeoKey",3079:"ProjStdParallel2GeoKey",3080:"ProjNatOriginLongGeoKey",3081:"ProjNatOriginLatGeoKey",3082:"ProjFalseEastingGeoKey",3083:"ProjFalseNorthingGeoKey",3084:"ProjFalseOriginLongGeoKey",3085:"ProjFalseOriginLatGeoKey",3086:"ProjFalseOriginEastingGeoKey",3087:"ProjFalseOriginNorthingGeoKey",3088:"ProjCenterLongGeoKey",3089:"ProjCenterLatGeoKey",3090:"ProjCenterEastingGeoKey",3091:"ProjCenterNorthingGeoKey",3092:"ProjScaleAtNatOriginGeoKey",3093:"ProjScaleAtCenterGeoKey",3094:"ProjAzimuthAngleGeoKey",3095:"ProjStraightVertPoleLongGeoKey",3096:"ProjRectifiedGridAngleGeoKey",4096:"VerticalCSTypeGeoKey",4097:"VerticalCitationGeoKey",4098:"VerticalDatumGeoKey",4099:"VerticalUnitsGeoKey"}),pA={};for(const A in mA)mA.hasOwnProperty(A)&&(pA[mA[A]]=parseInt(A,10));const YA=new Map;async function MA(A){const g=!A.hasTag("StripOffsets");return{tileWidth:g?await A.loadValue("TileWidth"):await A.loadValue("ImageWidth"),tileHeight:g?await A.loadValue("TileLength"):await A.loadValue("RowsPerStrip")||await A.loadValue("ImageLength"),planarConfiguration:await A.loadValue("PlanarConfiguration"),bitsPerSample:await A.loadValue("BitsPerSample"),predictor:await A.loadValue("Predictor")||1}}function KA(A,g,I=MA,e=!0){Array.isArray(A)||(A=[A]),A.forEach(A=>{YA.set(A,{importFn:g,decoderParameterFn:I,preferWorker:e})})}const bA=[{cases:[void 0,1],importFn:()=>Promise.resolve().then(function(){return AI}).then(A=>A.default),preferWorker:!1},{cases:5,importFn:()=>Promise.resolve().then(function(){return eI}).then(A=>A.default)},{cases:6,importFn:()=>{throw new Error("old style JPEG compression is not supported.")}},{cases:7,importFn:()=>Promise.resolve().then(function(){return cI}).then(A=>A.default),decoderParameterFn:async A=>({...await MA(A),JPEGTables:await A.loadValue("JPEGTables")})},{cases:[8,32946],importFn:()=>Promise.resolve().then(function(){return RB}).then(A=>A.default)},{cases:32773,importFn:()=>Promise.resolve().then(function(){return LB}).then(A=>A.default)},{cases:34887,importFn:()=>Promise.resolve().then(function(){return xB}).then(async A=>(await A.zstd.init(),A)).then(A=>A.default),decoderParameterFn:async A=>({...await MA(A),LercParameters:await A.loadValue("LercParameters")})},{cases:5e4,importFn:()=>Promise.resolve().then(function(){return zB}).then(async A=>(await A.zstd.init(),A)).then(A=>A.default)},{cases:50001,importFn:()=>Promise.resolve().then(function(){return jB}).then(A=>A.default),decoderParameterFn:async A=>({...await MA(A),samplesPerPixel:await A.loadValue("SamplesPerPixel")||4}),preferWorker:!1}];for(const A of bA){const{cases:g,importFn:I,decoderParameterFn:e,preferWorker:t}=A;KA(g,I,e,t)}function JA(A,g,I,e=1){return new(Object.getPrototypeOf(A).constructor)(g*I*e)}function HA(A,g,I){return(1-I)*A+I*g}function qA(A,g,I,e,t,B="nearest"){switch(B.toLowerCase()){case"nearest":return function(A,g,I,e,t){const B=g/e,i=I/t;return A.map(A=>{const C=JA(A,e,t);for(let Q=0;Q<t;++Q){const t=Math.min(Math.round(i*Q),I-1);for(let I=0;I<e;++I){const i=Math.min(Math.round(B*I),g-1),E=A[t*g+i];C[Q*e+I]=E}}return C})}(A,g,I,e,t);case"bilinear":case"linear":return function(A,g,I,e,t){const B=g/e,i=I/t;return A.map(A=>{const C=JA(A,e,t);for(let Q=0;Q<t;++Q){const t=i*Q,E=Math.floor(t),s=Math.min(Math.ceil(t),I-1);for(let I=0;I<e;++I){const i=B*I,a=i%1,o=Math.floor(i),r=Math.min(Math.ceil(i),g-1),n=A[E*g+o],h=A[E*g+r],l=A[s*g+o],c=A[s*g+r],w=HA(HA(n,h,a),HA(l,c,a),t%1);C[Q*e+I]=w}}return C})}(A,g,I,e,t);default:throw new Error(`Unsupported resampling method: '${B}'`)}}function xA(A,g,I,e,t,B,i="nearest"){switch(i.toLowerCase()){case"nearest":return function(A,g,I,e,t,B){const i=g/e,C=I/t,Q=JA(A,e,t,B);for(let E=0;E<t;++E){const t=Math.min(Math.round(C*E),I-1);for(let I=0;I<e;++I){const C=Math.min(Math.round(i*I),g-1);for(let i=0;i<B;++i){const s=A[t*g*B+C*B+i];Q[E*e*B+I*B+i]=s}}}return Q}(A,g,I,e,t,B);case"bilinear":case"linear":return function(A,g,I,e,t,B){const i=g/e,C=I/t,Q=JA(A,e,t,B);for(let E=0;E<t;++E){const t=C*E,s=Math.floor(t),a=Math.min(Math.ceil(t),I-1);for(let I=0;I<e;++I){const C=i*I,o=C%1,r=Math.floor(C),n=Math.min(Math.ceil(C),g-1);for(let i=0;i<B;++i){const C=A[s*g*B+r*B+i],h=A[s*g*B+n*B+i],l=A[a*g*B+r*B+i],c=A[a*g*B+n*B+i],w=HA(HA(C,h,o),HA(l,c,o),t%1);Q[E*e*B+I*B+i]=w}}}return Q}(A,g,I,e,t,B);default:throw new Error(`Unsupported resampling method: '${i}'`)}}function _A(A,g,I){let e=0;for(let t=g;t<I;++t)e+=A[t];return e}function TA(A,g,I){switch(A){case 1:if(g<=8)return new Uint8Array(I);if(g<=16)return new Uint16Array(I);if(g<=32)return new Uint32Array(I);break;case 2:if(8===g)return new Int8Array(I);if(16===g)return new Int16Array(I);if(32===g)return new Int32Array(I);break;case 3:switch(g){case 16:case 32:return new Float32Array(I);case 64:return new Float64Array(I)}}throw Error("Unsupported data format/bitsPerSample")}var OA=class{constructor(A,g,I,e){this.fileDirectory=A,this.littleEndian=g,this.tiles=I?{}:null,this.isTiled=!A.hasTag("StripOffsets");const t=A.getValue("PlanarConfiguration")??1;if(1!==t&&2!==t)throw new Error("Invalid planar configuration.");this.planarConfiguration=t,this.source=e}getFileDirectory(){return this.fileDirectory}getGeoKeys(){return this.fileDirectory.parseGeoKeyDirectory()}getWidth(){return this.fileDirectory.getValue("ImageWidth")}getHeight(){return this.fileDirectory.getValue("ImageLength")}getSamplesPerPixel(){return this.fileDirectory.hasTag("SamplesPerPixel")?this.fileDirectory.getValue("SamplesPerPixel"):1}getTileWidth(){return this.isTiled?this.fileDirectory.getValue("TileWidth"):this.getWidth()}getTileHeight(){return this.isTiled?this.fileDirectory.getValue("TileLength"):this.fileDirectory.hasTag("RowsPerStrip")?Math.min(this.fileDirectory.getValue("RowsPerStrip"),this.getHeight()):this.getHeight()}getBlockWidth(){return this.getTileWidth()}getBlockHeight(A){return this.isTiled||(A+1)*this.getTileHeight()<=this.getHeight()?this.getTileHeight():this.getHeight()-A*this.getTileHeight()}getBytesPerPixel(){let A=0;for(let g=0;g<this.fileDirectory.getValue("BitsPerSample").length;++g)A+=this.getSampleByteSize(g);return A}getSampleByteSize(A){const g=this.fileDirectory.getValue("BitsPerSample");if(A>=g.length)throw new RangeError(`Sample index ${A} is out of range.`);return Math.ceil(g[A]/8)}getReaderForSample(A){const g=this.fileDirectory.hasTag("SampleFormat")?this.fileDirectory.getValue("SampleFormat")[A]:1,I=this.fileDirectory.getValue("BitsPerSample")[A];switch(g){case 1:if(I<=8)return DataView.prototype.getUint8;if(I<=16)return DataView.prototype.getUint16;if(I<=32)return DataView.prototype.getUint32;break;case 2:if(I<=8)return DataView.prototype.getInt8;if(I<=16)return DataView.prototype.getInt16;if(I<=32)return DataView.prototype.getInt32;break;case 3:switch(I){case 16:return function(A,g){return CA(this,A,g)};case 32:return DataView.prototype.getFloat32;case 64:return DataView.prototype.getFloat64}}throw Error("Unsupported data format/bitsPerSample")}getSampleFormat(A=0){return this.fileDirectory.hasTag("SampleFormat")?this.fileDirectory.getValue("SampleFormat")[A]:1}getBitsPerSample(A=0){return this.fileDirectory.getValue("BitsPerSample")[A]}getArrayForSample(A,g){return TA(this.getSampleFormat(A),this.getBitsPerSample(A),g)}async getTileOrStrip(A,g,I,e,t){const B=Math.ceil(this.getWidth()/this.getTileWidth()),i=Math.ceil(this.getHeight()/this.getTileHeight());let C;const{tiles:Q}=this;if(1===this.planarConfiguration?C=g*B+A:2===this.planarConfiguration&&(C=I*B*i+g*B+A),void 0===C)throw new Error("Could not determine tile or strip index.");let E,s;if(this.isTiled?(E=await this.fileDirectory.loadValueIndexed("TileOffsets",C),s=await this.fileDirectory.loadValueIndexed("TileByteCounts",C)):(E=await this.fileDirectory.loadValueIndexed("StripOffsets",C),s=await this.fileDirectory.loadValueIndexed("StripByteCounts",C)),0===s){const e=this.getBlockHeight(g)*this.getTileWidth(),t=2===this.planarConfiguration?this.getSampleByteSize(I):this.getBytesPerPixel(),B=new ArrayBuffer(e*t);return this.getArrayForSample(I,B).fill(this.getGDALNoData()||0),{x:A,y:g,sample:I,data:B}}const a=(await this.source.fetch([{offset:E,length:s}],t))[0];let o;return null!==Q&&Q[C]?o=Q[C]:(o=(async()=>{let A=await e.decode(a);const I=this.getSampleFormat(),t=this.getBitsPerSample();return function(A,g){return(1!==A&&2!==A||!(g<=32)||g%8!=0)&&(3!==A||16!==g&&32!==g&&64!==g)}(I,t)&&(A=function(A,g,I,e,t,B,i){const C=new DataView(A),Q=2===I?1:e,E=TA(g,t,2===I?i*B:i*B*e),s=parseInt("1".repeat(t),2);if(1===g){let A;A=1===I?e*t:t;let g=B*A;7&g&&(g=g+7&-8);for(let A=0;A<i;++A){const I=A*g;for(let g=0;g<B;++g){const e=I+g*Q*t;for(let I=0;I<Q;++I){const i=e+I*t,a=(A*B+g)*Q+I,o=Math.floor(i/8),r=i%8;if(r+t<=8)E[a]=C.getUint8(o)>>8-t-r&s;else if(r+t<=16)E[a]=C.getUint16(o)>>16-t-r&s;else if(r+t<=24){const A=C.getUint16(o)<<8|C.getUint8(o+2);E[a]=A>>24-t-r&s}else E[a]=C.getUint32(o)>>32-t-r&s}}}}return E.buffer}(A,I,this.planarConfiguration,this.getSamplesPerPixel(),t,this.getTileWidth(),this.getBlockHeight(g))),A})(),null!==Q&&(Q[C]=o)),{x:A,y:g,sample:I,data:await o}}async _readRaster(A,g,I,e,t,B,i,C,Q){const E=this.getTileWidth(),s=this.getTileHeight(),a=this.getWidth(),o=this.getHeight(),r=Math.max(Math.floor(A[0]/E),0),n=Math.min(Math.ceil(A[2]/E),Math.ceil(a/E)),h=Math.max(Math.floor(A[1]/s),0),l=Math.min(Math.ceil(A[3]/s),Math.ceil(o/s)),c=A[2]-A[0];let w=this.getBytesPerPixel();const D=[],d=[];for(let A=0;A<g.length;++A)1===this.planarConfiguration?D.push(_A(await this.fileDirectory.loadValue("BitsPerSample"),0,g[A])/8):D.push(0),d.push(this.getReaderForSample(g[A]));const y=[],{littleEndian:f}=this;for(let B=h;B<l;++B)for(let i=r;i<n;++i){let C;1===this.planarConfiguration&&(C=this.getTileOrStrip(i,B,0,t,Q));for(let r=0;r<g.length;++r){const n=r,h=g[r];if(2===this.planarConfiguration&&(w=this.getSampleByteSize(h),C=this.getTileOrStrip(i,B,h,t,Q)),!C)throw new Error("Could not get tile or strip data.");const l=C.then(t=>{const B=t.data,i=new DataView(B),C=this.getBlockHeight(t.y),Q=t.y*s,r=t.x*E,h=Q+C,l=(t.x+1)*E,y=d[n],u=Math.min(C,C-(h-A[3]),o-Q),S=Math.min(E,E-(l-A[2]),a-r);for(let t=Math.max(0,A[1]-Q);t<u;++t)for(let B=Math.max(0,A[0]-r);B<S;++B){const C=(t*E+B)*w,s=y.call(i,C+D[n],f);let a;e?(a=(t+Q-A[1])*c*g.length+(B+r-A[0])*g.length+n,I[a]=s):(a=(t+Q-A[1])*c+B+r-A[0],I[n][a]=s)}});y.push(l)}}if(await Promise.all(y),B&&A[2]-A[0]!==B||i&&A[3]-A[1]!==i){let t;t=e?xA(I,A[2]-A[0],A[3]-A[1],B,i,g.length,C):qA(I,A[2]-A[0],A[3]-A[1],B,i,C);const Q=t;return Q.width=B??A[2]-A[0],Q.height=i??A[3]-A[1],Q}const u=I;return u.width=B||A[2]-A[0],u.height=i||A[3]-A[1],u}async readRasters(A={}){const{window:g,samples:I=[],pool:e=null,width:t,height:B,resampleMethod:i,fillValue:C,signal:Q}=A,E="interleave"in A&&A.interleave,s=g||[0,0,this.getWidth(),this.getHeight()];if(s[0]>s[2]||s[1]>s[3])throw new Error("Invalid subsets");const a=(s[2]-s[0])*(s[3]-s[1]),o=this.getSamplesPerPixel();if(I&&I.length){for(let A=0;A<I.length;++A)if(I[A]>=o)return Promise.reject(new RangeError(`Invalid sample index '${I[A]}'.`))}else for(let A=0;A<o;++A)I.push(A);let r;if(E){if(r=TA(this.fileDirectory.hasTag("SampleFormat")?Math.max.apply(null,this.fileDirectory.getValue("SampleFormat")):1,Math.max.apply(null,this.fileDirectory.getValue("BitsPerSample")),a*I.length),C){if(Array.isArray(C))throw new Error("When reading interleaved data, fillValue must be a single number.");r.fill(C)}}else{r=[];for(let A=0;A<I.length;++A){const g=this.getArrayForSample(I[A],a);Array.isArray(C)&&A<C.length?g.fill(C[A]):C&&!Array.isArray(C)&&g.fill(C),r.push(g)}}const n=this.fileDirectory.getValue("Compression")||1,h=await async function(A,g){if(!YA.has(A))throw new Error(`Unknown compression method identifier: ${A}`);const{decoderParameterFn:I}=YA.get(A);return I(g)}(n,this.fileDirectory),l=e?e.bindParameters(n,h):await async function(A,g){if(!YA.has(A))throw new Error(`Unknown compression method identifier: ${A}`);const{importFn:I}=YA.get(A);return new(await I())(g)}(n,h);return await this._readRaster(s,I,r,E,l,t,B,i,Q)}async readRGB(A={}){const{window:g,pool:I=null,width:e,height:t,resampleMethod:B,enableAlpha:i=!1,signal:C}=A,Q=("interleave"in A&&A.interleave)??!1,E=g||[0,0,this.getWidth(),this.getHeight()];if(E[0]>E[2]||E[1]>E[3])throw new Error("Invalid subsets");const s=this.fileDirectory.getValue("PhotometricInterpretation");if(s===fA){let A=[0,1,2];if(this.fileDirectory.getValue("ExtraSamples")!==FA&&i){A=[];for(let g=0;g<this.fileDirectory.getValue("BitsPerSample").length;g+=1)A.push(g)}return this.readRasters({window:g,interleave:Q,samples:A,pool:I,width:e,height:t,resampleMethod:B,signal:C})}let a;switch(s){case dA:case yA:case uA:a=[0];break;case SA:a=[0,1,2,3];break;case GA:case NA:a=[0,1,2];break;default:throw new Error("Invalid or unsupported photometric interpretation.")}const o={window:E,interleave:!0,samples:a,pool:I,width:e,height:t,resampleMethod:B,signal:C},{fileDirectory:r}=this,n=await this.readRasters(o),h=2**this.getBitsPerSample(0);let l;switch(s){case dA:l=function(A,g){const{width:I,height:e}=A,t=new Uint8Array(I*e*3);let B;for(let I=0,e=0;I<A.length;++I,e+=3)B=256-A[I]/g*256,t[e]=B,t[e+1]=B,t[e+2]=B;return t}(n,h);break;case yA:l=function(A,g){const{width:I,height:e}=A,t=new Uint8Array(I*e*3);let B;for(let I=0,e=0;I<A.length;++I,e+=3)B=A[I]/g*256,t[e]=B,t[e+1]=B,t[e+2]=B;return t}(n,h);break;case uA:l=function(A,g){const{width:I,height:e}=A,t=new Uint8Array(I*e*3),B=g.length/3,i=g.length/3*2;for(let I=0,e=0;I<A.length;++I,e+=3){const C=A[I];t[e]=g[C]/65536*256,t[e+1]=g[C+B]/65536*256,t[e+2]=g[C+i]/65536*256}return t}(n,await r.loadValue("ColorMap"));break;case SA:l=function(A){const{width:g,height:I}=A,e=new Uint8Array(g*I*3);for(let g=0,I=0;g<A.length;g+=4,I+=3){const t=A[g],B=A[g+1],i=A[g+2],C=A[g+3];e[I]=(255-t)/256*255*((255-C)/256),e[I+1]=(255-B)/256*255*((255-C)/256),e[I+2]=(255-i)/256*255*((255-C)/256)}return e}(n);break;case GA:l=function(A){const{width:g,height:I}=A,e=new Uint8ClampedArray(g*I*3);for(let g=0,I=0;g<A.length;g+=3,I+=3){const t=A[g],B=A[g+1],i=A[g+2];e[I]=t+1.402*(i-128),e[I+1]=t-.34414*(B-128)-.71414*(i-128),e[I+2]=t+1.772*(B-128)}return e}(n);break;case NA:l=function(A){const{width:g,height:I}=A,e=new Uint8Array(g*I*3);for(let g=0,I=0;g<A.length;g+=3,I+=3){let t,B,i,C=(A[g+0]+16)/116,Q=(A[g+1]<<24>>24)/500+C,E=C-(A[g+2]<<24>>24)/200;Q=.95047*(Q*Q*Q>.008856?Q*Q*Q:(Q-16/116)/7.787),C=1*(C*C*C>.008856?C*C*C:(C-16/116)/7.787),E=1.08883*(E*E*E>.008856?E*E*E:(E-16/116)/7.787),t=3.2406*Q+-1.5372*C+-.4986*E,B=-.9689*Q+1.8758*C+.0415*E,i=.0557*Q+-.204*C+1.057*E,t=t>.0031308?1.055*t**(1/2.4)-.055:12.92*t,B=B>.0031308?1.055*B**(1/2.4)-.055:12.92*B,i=i>.0031308?1.055*i**(1/2.4)-.055:12.92*i,e[I]=255*Math.max(0,Math.min(1,t)),e[I+1]=255*Math.max(0,Math.min(1,B)),e[I+2]=255*Math.max(0,Math.min(1,i))}return e}(n);break;default:throw new Error("Unsupported photometric interpretation.")}if(!Q){const A=new Uint8Array(l.length/3),g=new Uint8Array(l.length/3),I=new Uint8Array(l.length/3);for(let e=0,t=0;e<l.length;e+=3,++t)A[t]=l[e],g[t]=l[e+1],I[t]=l[e+2];l=[A,g,I]}const c=l;return c.width=n.width,c.height=n.height,c}async getTiePoints(){if(!this.fileDirectory.hasTag("ModelTiepoint"))return[];const A=await this.fileDirectory.loadValue("ModelTiepoint"),g=[];for(let I=0;I<A.length;I+=6)g.push({i:A[I],j:A[I+1],k:A[I+2],x:A[I+3],y:A[I+4],z:A[I+5]});return g}async getGDALMetadata(A=null){const g={};if(!this.fileDirectory.hasTag("GDAL_METADATA"))return null;let I=function(A,g,I){const e=[],t=I&&I.debug||!1,B=!I||"boolean"!=typeof I.nested||I.nested;let i,C=I&&I.startIndex||0;for(;i=aA(A,g,{debug:t,startIndex:C});)C=B?i.start+1+g.length:i.end,e.push(i);return t&&console.log("findTagsByName found",e.length,"tags"),e}(await this.fileDirectory.loadValue("GDAL_METADATA"),"Item");I=null===A?I.filter(A=>void 0===QA(A,"sample")):I.filter(g=>Number(QA(g,"sample"))===A);for(let A=0;A<I.length;++A){const e=I[A];g[QA(e,"name")]=e.inner}return g}getGDALNoData(){if(!this.fileDirectory.hasTag("GDAL_NODATA"))return null;const A=this.fileDirectory.getValue("GDAL_NODATA");return Number(A.substring(0,A.length-1))}getOrigin(){const A=this.fileDirectory.getValue("ModelTiepoint"),g=this.fileDirectory.getValue("ModelTransformation");if(A&&6===A.length)return[A[3],A[4],A[5]];if(g)return[g[3],g[7],g[11]];throw new Error("The image does not have an affine transformation.")}getResolution(A=null){const g=this.fileDirectory.getValue("ModelPixelScale"),I=this.fileDirectory.getValue("ModelTransformation");if(g)return[g[0],-g[1],g[2]];if(I)return 0===I[1]&&0===I[4]?[I[0],-I[5],I[10]]:[Math.sqrt(I[0]*I[0]+I[4]*I[4]),-Math.sqrt(I[1]*I[1]+I[5]*I[5]),I[10]];if(A){const[g,I,e]=A.getResolution();return[g*A.getWidth()/this.getWidth(),I*A.getHeight()/this.getHeight(),e*A.getWidth()/this.getWidth()]}throw new Error("The image does not have an affine transformation.")}pixelIsArea(){return 1===this.getGeoKeys()?.GTRasterTypeGeoKey}getBoundingBox(A=!1){const g=this.getHeight(),I=this.getWidth();if(this.fileDirectory.hasTag("ModelTransformation")&&!A){const[A,e,t,B,i,C,Q,E]=this.fileDirectory.getValue("ModelTransformation"),s=[[0,0],[0,g],[I,0],[I,g]].map(([g,I])=>[B+A*g+e*I,E+i*g+C*I]),a=s.map(A=>A[0]),o=s.map(A=>A[1]);return[Math.min(...a),Math.min(...o),Math.max(...a),Math.max(...o)]}{const A=this.getOrigin(),e=this.getResolution(),t=A[0],B=A[1],i=t+e[0]*I,C=B+e[1]*g;return[Math.min(t,i),Math.min(B,C),Math.max(t,i),Math.max(B,C)]}}};class vA{constructor(A){this._dataView=new DataView(A)}get buffer(){return this._dataView.buffer}getUint64(A,g){const I=this.getUint32(A,g),e=this.getUint32(A+4,g);let t;if(g){if(t=I+2**32*e,!Number.isSafeInteger(t))throw new Error(`${t} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return t}if(t=2**32*I+e,!Number.isSafeInteger(t))throw new Error(`${t} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return t}getInt64(A,g){let I=0;const e=(128&this._dataView.getUint8(A+(g?7:0)))>0;let t=!0;for(let B=0;B<8;B++){let i=this._dataView.getUint8(A+(g?B:7-B));e&&(t?0!==i&&(i=255&~(i-1),t=!1):i=255&~i),I+=i*256**B}return e&&(I=-I),I}getUint8(A){return this._dataView.getUint8(A)}getInt8(A){return this._dataView.getInt8(A)}getUint16(A,g){return this._dataView.getUint16(A,g)}getInt16(A,g){return this._dataView.getInt16(A,g)}getUint32(A,g){return this._dataView.getUint32(A,g)}getInt32(A,g){return this._dataView.getInt32(A,g)}getFloat16(A,g){return CA(this._dataView,A,g)}getFloat32(A,g){return this._dataView.getFloat32(A,g)}getFloat64(A,g){return this._dataView.getFloat64(A,g)}}class PA{constructor(A,g,I,e){this._dataView=new DataView(A),this._sliceOffset=g,this._littleEndian=I,this._bigTiff=e}get sliceOffset(){return this._sliceOffset}get sliceTop(){return this._sliceOffset+this.buffer.byteLength}get littleEndian(){return this._littleEndian}get bigTiff(){return this._bigTiff}get buffer(){return this._dataView.buffer}covers(A,g){return this.sliceOffset<=A&&this.sliceTop>=A+g}readUint8(A){return this._dataView.getUint8(A-this._sliceOffset)}readInt8(A){return this._dataView.getInt8(A-this._sliceOffset)}readUint16(A){return this._dataView.getUint16(A-this._sliceOffset,this._littleEndian)}readInt16(A){return this._dataView.getInt16(A-this._sliceOffset,this._littleEndian)}readUint32(A){return this._dataView.getUint32(A-this._sliceOffset,this._littleEndian)}readInt32(A){return this._dataView.getInt32(A-this._sliceOffset,this._littleEndian)}readFloat32(A){return this._dataView.getFloat32(A-this._sliceOffset,this._littleEndian)}readFloat64(A){return this._dataView.getFloat64(A-this._sliceOffset,this._littleEndian)}readUint64(A){const g=this.readUint32(A),I=this.readUint32(A+4);let e;if(this._littleEndian){if(e=g+2**32*I,!Number.isSafeInteger(e))throw new Error(`${e} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return e}if(e=2**32*g+I,!Number.isSafeInteger(e))throw new Error(`${e} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return e}readInt64(A){let g=0;const I=(128&this._dataView.getUint8(A+(this._littleEndian?7:0)))>0;let e=!0;for(let t=0;t<8;t++){let B=this._dataView.getUint8(A+(this._littleEndian?t:7-t));I&&(e?0!==B&&(B=255&~(B-1),e=!1):B=255&~B),g+=B*256**t}return I&&(g=-g),g}readOffset(A){return this._bigTiff?this.readUint64(A):this.readUint32(A)}}const ZA="\r\n\r\n";function VA(A){if(void 0!==Object.fromEntries)return Object.fromEntries(A);const g={};for(const[I,e]of A)g[I.toLowerCase()]=e;return g}function zA(A){return VA(A.split("\r\n").map(A=>{const g=A.split(":").map(A=>A.trim());return g[0]=g[0].toLowerCase(),g}))}function jA(A){let g=NaN,I=NaN,e=NaN;return A&&([,g,I,e]=(A.match(/bytes (\d+)-(\d+)\/(\d+)/)||[]).map(Number)),{start:g,end:I,total:e}}class WA{async fetch(A,g){return Promise.all(A.map(A=>this.fetchSlice(A,g)))}async fetchSlice(A,g){throw new Error(`fetching of slice ${A} not possible, not implemented`)}get fileSize(){return null}async close(){}}class XA extends Map{constructor(A={}){if(super(),!(A.maxSize&&A.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");if("number"==typeof A.maxAge&&0===A.maxAge)throw new TypeError("`maxAge` must be a number greater than 0");this.maxSize=A.maxSize,this.maxAge=A.maxAge||Number.POSITIVE_INFINITY,this.onEviction=A.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_emitEvictions(A){if("function"==typeof this.onEviction)for(const[g,I]of A)this.onEviction(g,I.value)}_deleteIfExpired(A,g){return"number"==typeof g.expiry&&g.expiry<=Date.now()&&("function"==typeof this.onEviction&&this.onEviction(A,g.value),this.delete(A))}_getOrDeleteIfExpired(A,g){if(!1===this._deleteIfExpired(A,g))return g.value}_getItemValue(A,g){return g.expiry?this._getOrDeleteIfExpired(A,g):g.value}_peek(A,g){const I=g.get(A);return this._getItemValue(A,I)}_set(A,g){this.cache.set(A,g),this._size++,this._size>=this.maxSize&&(this._size=0,this._emitEvictions(this.oldCache),this.oldCache=this.cache,this.cache=new Map)}_moveToRecent(A,g){this.oldCache.delete(A),this._set(A,g)}*_entriesAscending(){for(const A of this.oldCache){const[g,I]=A;if(!this.cache.has(g)){!1===this._deleteIfExpired(g,I)&&(yield A)}}for(const A of this.cache){const[g,I]=A;!1===this._deleteIfExpired(g,I)&&(yield A)}}get(A){if(this.cache.has(A)){const g=this.cache.get(A);return this._getItemValue(A,g)}if(this.oldCache.has(A)){const g=this.oldCache.get(A);if(!1===this._deleteIfExpired(A,g))return this._moveToRecent(A,g),g.value}}set(A,g,{maxAge:I=this.maxAge}={}){const e="number"==typeof I&&I!==Number.POSITIVE_INFINITY?Date.now()+I:void 0;return this.cache.has(A)?this.cache.set(A,{value:g,expiry:e}):this._set(A,{value:g,expiry:e}),this}has(A){return this.cache.has(A)?!this._deleteIfExpired(A,this.cache.get(A)):!!this.oldCache.has(A)&&!this._deleteIfExpired(A,this.oldCache.get(A))}peek(A){return this.cache.has(A)?this._peek(A,this.cache):this.oldCache.has(A)?this._peek(A,this.oldCache):void 0}delete(A){const g=this.cache.delete(A);return g&&this._size--,this.oldCache.delete(A)||g}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}resize(A){if(!(A&&A>0))throw new TypeError("`maxSize` must be a number greater than 0");const g=[...this._entriesAscending()],I=g.length-A;I<0?(this.cache=new Map(g),this.oldCache=new Map,this._size=g.length):(I>0&&this._emitEvictions(g.slice(0,I)),this.oldCache=new Map(g.slice(I)),this.cache=new Map,this._size=0),this.maxSize=A}*keys(){for(const[A]of this)yield A}*values(){for(const[,A]of this)yield A}*[Symbol.iterator](){for(const A of this.cache){const[g,I]=A;!1===this._deleteIfExpired(g,I)&&(yield[g,I.value])}for(const A of this.oldCache){const[g,I]=A;if(!this.cache.has(g)){!1===this._deleteIfExpired(g,I)&&(yield[g,I.value])}}}*entriesDescending(){let A=[...this.cache];for(let g=A.length-1;g>=0;--g){const I=A[g],[e,t]=I;!1===this._deleteIfExpired(e,t)&&(yield[e,t.value])}A=[...this.oldCache];for(let g=A.length-1;g>=0;--g){const I=A[g],[e,t]=I;if(!this.cache.has(e)){!1===this._deleteIfExpired(e,t)&&(yield[e,t.value])}}}*entriesAscending(){for(const[A,g]of this._entriesAscending())yield[A,g.value]}get size(){if(!this._size)return this.oldCache.size;let A=0;for(const g of this.oldCache.keys())this.cache.has(g)||A++;return Math.min(this._size+A,this.maxSize)}entries(){return this.entriesAscending()}forEach(A,g=this){for(const[I,e]of this.entriesAscending())A.call(g,e,I,this)}get[Symbol.toStringTag](){return JSON.stringify([...this.entriesAscending()])}}class $A extends Error{constructor(A){super(A),Error.captureStackTrace&&Error.captureStackTrace(this,$A),this.name="AbortError"}}class Ag extends Error{constructor(A,g){super(g),this.errors=A,this.message=g,this.name="AggregateError"}}const gg=Ag;class Ig{constructor(A,g,I){this.offset=A,this.length=g,this.data=I}get top(){return this.offset+this.length}}class eg{constructor(A,g,I){this.offset=A,this.length=g,this.blockIds=I}}class tg extends WA{constructor(A,{blockSize:g=65536,cacheSize:I=100}={}){super(),this.source=A,this.blockSize=g,this.blockCache=new XA({maxSize:I,onEviction:(A,g)=>{this.evictedBlocks.set(A,g)}}),this.evictedBlocks=new Map,this.blockRequests=new Map,this.blockIdsToFetch=new Set,this.abortedBlockIds=new Set}get fileSize(){return this.source.fileSize}async fetch(A,g){const I=[],e=[],t=[];this.evictedBlocks.clear();for(const{offset:g,length:B}of A){let A=g+B;const{fileSize:i}=this;null!==i&&(A=Math.min(A,i));for(let B=Math.floor(g/this.blockSize)*this.blockSize;B<A;B+=this.blockSize){const A=Math.floor(B/this.blockSize);this.blockCache.has(A)||this.blockRequests.has(A)||(this.blockIdsToFetch.add(A),e.push(A)),this.blockRequests.has(A)&&I.push(this.blockRequests.get(A)),t.push(A)}}await async function(A){return new Promise(g=>setTimeout(g,A))}(),this.fetchBlocks(g);const B=[];for(const A of e)this.blockRequests.has(A)&&B.push(this.blockRequests.get(A));await Promise.allSettled(I),await Promise.allSettled(B);const i=[],C=t.filter(A=>this.abortedBlockIds.has(A)||!this.blockCache.has(A));if(C.forEach(A=>this.blockIdsToFetch.add(A)),C.length>0&&g&&!g.aborted){this.fetchBlocks();for(const A of C){const g=this.blockRequests.get(A);if(!g)throw new Error(`Block ${A} is not in the block requests`);i.push(g)}await Promise.allSettled(i)}if(g&&g.aborted)throw new $A("Request was aborted");const Q=t.map(A=>this.blockCache.get(A)||this.evictedBlocks.get(A)),E=Q.filter(A=>!A);if(E.length)throw new gg(E,"Request failed");const s=new Map(function(A,g){const I=Array.isArray(A)?A:Array.from(A),e=Array.isArray(g)?g:Array.from(g);return I.map((A,g)=>[A,e[g]])}(t,Q));return this.readSliceData(A,s)}fetchBlocks(A){if(this.blockIdsToFetch.size>0){const g=this.groupBlocks(this.blockIdsToFetch),I=this.source.fetch(g,A);for(let e=0;e<g.length;++e){const t=g[e];for(const g of t.blockIds)this.blockRequests.set(g,(async()=>{try{const A=(await I)[e],t=g*this.blockSize,B=t-A.offset,i=Math.min(B+this.blockSize,A.data.byteLength),C=A.data.slice(B,i),Q=new Ig(t,C.byteLength,C);this.blockCache.set(g,Q),this.abortedBlockIds.delete(g)}catch(I){if("AbortError"!==I.name)throw I;I.signal=A,this.blockCache.delete(g),this.abortedBlockIds.add(g)}finally{this.blockRequests.delete(g)}})())}this.blockIdsToFetch.clear()}}groupBlocks(A){const g=Array.from(A).sort((A,g)=>A-g);if(0===g.length)return[];let I=[],e=null;const t=[];for(const A of g)null===e||e+1===A?(I.push(A),e=A):(t.push(new eg(I[0]*this.blockSize,I.length*this.blockSize,I)),I=[A],e=A);return t.push(new eg(I[0]*this.blockSize,I.length*this.blockSize,I)),t}readSliceData(A,g){return A.map(A=>{let I=A.offset+A.length;null!==this.fileSize&&(I=Math.min(this.fileSize,I));const e=Math.floor(A.offset/this.blockSize),t=Math.floor((I-1)/this.blockSize),B=new ArrayBuffer(A.length),i=new Uint8Array(B);for(let B=e;B<=t;++B){const e=g.get(B);if(!e)continue;const t=e.offset-A.offset;let C,Q=0,E=0;t<0?Q=-t:t>0&&(E=t),C=e.top-I<0?e.length-Q:I-e.offset-Q;const s=new Uint8Array(e.data,Q,C);i.set(s,E)}return B})}}class Bg{get ok(){return this.status>=200&&this.status<=299}get status(){throw new Error("not implemented")}getHeader(A){throw new Error("not implemented")}async getData(){throw new Error("not implemented")}}class ig{constructor(A){this.url=A}async request({headers:A,signal:g}={}){throw new Error("request is not implemented")}}class Cg extends Bg{constructor(A){super(),this.response=A}get status(){return this.response.status}getHeader(A){return this.response.headers.get(A)}async getData(){return this.response.arrayBuffer?await this.response.arrayBuffer():(await this.response.buffer()).buffer}}class Qg extends ig{constructor(A,g){super(A),this.credentials=g}async request({headers:A,signal:g}={}){const I=await fetch(this.url,{headers:A,credentials:this.credentials,signal:g});return new Cg(I)}}class Eg extends Bg{constructor(A,g){super(),this.xhr=A,this.data=g}get status(){return this.xhr.status}getHeader(A){return this.xhr.getResponseHeader(A)}async getData(){return this.data}}class sg extends ig{constructRequest(A,g){return new Promise((I,e)=>{const t=new XMLHttpRequest;t.open("GET",this.url),t.responseType="arraybuffer";for(const[g,I]of Object.entries(A))t.setRequestHeader(g,I);t.onload=()=>{const A=t.response;I(new Eg(t,A))},t.onerror=e,t.onabort=()=>e(new $A("Request aborted")),t.send(),g&&(g.aborted&&t.abort(),g.addEventListener("abort",()=>t.abort()))})}async request({headers:A,signal:g}={}){return await this.constructRequest(A,g)}}var ag={};class og extends Bg{constructor(A,g){super(),this.response=A,this.dataPromise=g}get status(){return this.response.statusCode}getHeader(A){return this.response.headers[A]}async getData(){return await this.dataPromise}}class rg extends ig{constructor(A){super(A),this.parsedUrl=ag.parse(this.url),this.httpApi=(this.parsedUrl.protocol,ag)}constructRequest(A,g){return new Promise((I,e)=>{const t=this.httpApi.get({...this.parsedUrl,headers:A},A=>{const g=new Promise(g=>{const I=[];A.on("data",A=>{I.push(A)}),A.on("end",()=>{const A=Buffer.concat(I).buffer;g(A)}),A.on("error",e)});I(new og(A,g))});t.on("error",e),g&&(g.aborted&&t.destroy(new $A("Request aborted")),g.addEventListener("abort",()=>t.destroy(new $A("Request aborted"))))})}async request({headers:A,signal:g}={}){return await this.constructRequest(A,g)}}class ng extends WA{constructor(A,{headers:g,maxRanges:I=0,allowFullFile:e}={}){super(),this.client=A,this.headers=g,this.maxRanges=I,this.allowFullFile=e,this._fileSize=null}async fetch(A,g){return this.maxRanges>=A.length?this.fetchSlices(A,g):(this.maxRanges>0&&A.length,Promise.all(A.map(A=>this.fetchSlice(A,g))))}async fetchSlices(A,g){const I=await this.client.request({headers:{...this.headers,Range:`bytes=${A.map(({offset:A,length:g})=>`${A}-${A+g}`).join(",")}`},signal:g});if(I.ok){if(206===I.status){const{type:e,params:t}=function(A){if(!A)return{type:null,params:{}};const[g,...I]=A.split(";").map(A=>A.trim());return{type:g,params:VA(I.map(A=>A.split("=")))}}(I.getHeader("content-type"));if("multipart/byteranges"===e){const A=function(A,g){let I=null;const e=new TextDecoder("ascii"),t=[],B=`--${g}`,i=`${B}--`;for(let g=0;g<10;++g)e.decode(new Uint8Array(A,g,B.length))===B&&(I=g);if(null===I)throw new Error("Could not find initial boundary");for(;I<A.byteLength;){const g=e.decode(new Uint8Array(A,I,Math.min(B.length+1024,A.byteLength-I)));if(0===g.length||g.startsWith(i))break;if(!g.startsWith(B))throw new Error("Part does not start with boundary");const C=g.substr(B.length+2);if(0===C.length)break;const Q=C.indexOf(ZA),E=zA(C.substr(0,Q)),{start:s,end:a,total:o}=jA(E["content-range"]),r=I+B.length+Q+4,n=a+1-s;t.push({headers:E,data:A.slice(r,r+n),offset:s,length:n,fileSize:o}),I=r+n+4}return t}(await I.getData(),t.boundary);return this._fileSize=A[0].fileSize||null,A}const B=await I.getData(),{start:i,end:C,total:Q}=jA(I.getHeader("content-range"));this._fileSize=Q||null;const E=[{data:B,offset:i,length:C-i}];if(A.length>1){const I=await Promise.all(A.slice(1).map(A=>this.fetchSlice(A,g)));return E.concat(I)}return E}{if(!this.allowFullFile)throw new Error("Server responded with full file");const A=await I.getData();return this._fileSize=A.byteLength,[{data:A,offset:0,length:A.byteLength}]}}throw new Error("Error fetching data.")}async fetchSlice(A,g){const{offset:I,length:e}=A,t=await this.client.request({headers:{...this.headers,Range:`bytes=${I}-${I+e}`},signal:g});if(t.ok){if(206===t.status){const A=await t.getData(),{total:g}=jA(t.getHeader("content-range"));return this._fileSize=g||null,{data:A,offset:I,length:e}}{if(!this.allowFullFile)throw new Error("Server responded with full file");const A=await t.getData();return this._fileSize=A.byteLength,{data:A,offset:0,length:A.byteLength}}}throw new Error("Error fetching data.")}get fileSize(){return this._fileSize}}function hg(A,{blockSize:g,cacheSize:I}){return null===g?A:new tg(A,{blockSize:g,cacheSize:I})}function lg(A,{forceXHR:g=!1,...I}={}){return"function"!=typeof fetch||g?"undefined"!=typeof XMLHttpRequest?function(A,{headers:g={},maxRanges:I=0,allowFullFile:e=!1,...t}={}){const B=new sg(A);return hg(new ng(B,{headers:g,maxRanges:I,allowFullFile:e}),t)}(A,I):function(A,{headers:g={},maxRanges:I=0,allowFullFile:e=!1,...t}={}){const B=new rg(A);return hg(new ng(B,{headers:g,maxRanges:I,allowFullFile:e}),t)}(A,I):function(A,{headers:g={},credentials:I,maxRanges:e=0,allowFullFile:t=!1,...B}={}){const i=new Qg(A,I);return hg(new ng(i,{headers:g,maxRanges:e,allowFullFile:t}),B)}(A,I)}class cg extends WA{constructor(A){super(),this.arrayBuffer=A}fetchSlice(A,g){if(g&&g.aborted)throw new $A("Request aborted");return this.arrayBuffer.slice(A.offset,A.offset+A.length)}}function wg(A,g){switch(A){case oA.BYTE:case oA.ASCII:case oA.UNDEFINED:return new Uint8Array(g);case oA.SBYTE:return new Int8Array(g);case oA.SHORT:return new Uint16Array(g);case oA.SSHORT:return new Int16Array(g);case oA.LONG:case oA.IFD:return new Uint32Array(g);case oA.SLONG:return new Int32Array(g);case oA.LONG8:case oA.IFD8:case oA.SLONG8:return new Array(g);case oA.RATIONAL:return new Uint32Array(2*g);case oA.SRATIONAL:return new Int32Array(2*g);case oA.FLOAT:return new Float32Array(g);case oA.DOUBLE:return new Float64Array(g);default:throw new RangeError(`Invalid field type: ${A}`)}}function Dg(A,g){switch(g){case oA.BYTE:case oA.ASCII:case oA.UNDEFINED:return A.readUint8;case oA.SBYTE:return A.readInt8;case oA.SHORT:return A.readUint16;case oA.SSHORT:return A.readInt16;case oA.LONG:case oA.IFD:return A.readUint32;case oA.SLONG:return A.readInt32;case oA.LONG8:case oA.IFD8:return A.readUint64;case oA.SLONG8:return A.readInt64;case oA.RATIONAL:return A.readUint32;case oA.SRATIONAL:return A.readInt32;case oA.FLOAT:return A.readFloat32;case oA.DOUBLE:return A.readFloat64;default:throw new RangeError(`Invalid field type: ${g}`)}}function dg(A=null,g,I,e,t,B,i=!1){const C=nA(e),Q=A||wg(e,t),E=e===oA.RATIONAL||e===oA.SRATIONAL;if(E)for(let A=0;A<t;A+=2)Q[A]=g.call(I,B+A*C),Q[A+1]=g.call(I,B+(A*C+4));else for(let A=0;A<t;++A)Q[A]=g.call(I,B+A*C);return e===oA.ASCII?new TextDecoder("utf-8").decode(Q):1!==t||i||E?Q:Q[0]}class yg{constructor(A,g,I,e,t){this.source=A,this.arrayOffset=g,this.littleEndian=I,this.fieldType=e,this.length=t,this.data=wg(e,t),this.itemSize=nA(e),this.maskBitmap=new Uint8Array(Math.ceil(t/8)),this.fetchIndexPromises=new Map,this.fullFetchPromise=null}async loadAll(){return this.fullFetchPromise||(this.fullFetchPromise=this.source.fetch([{offset:this.arrayOffset,length:this.itemSize*this.length}]).then(A=>{const g=new PA(A[0],this.arrayOffset,!0,!1),I=dg(this.data,Dg(g,this.fieldType),g,this.fieldType,this.length,this.arrayOffset,!0);return this.maskBitmap.fill(255),this.fetchIndexPromises.clear(),I})),this.fullFetchPromise}async get(A){if(A<0||A>=this.data.length)throw new RangeError(`Index ${A} out of bounds for length ${this.data.length}`);const g=Math.floor(A/8),I=1<<A%8,e=this.arrayOffset+A*this.itemSize;if(0===(this.maskBitmap[g]&I)){if(!this.fetchIndexPromises.has(A)){const t=this.source.fetch([{offset:e,length:this.itemSize}]).then(t=>{const B=new PA(t[0],this.arrayOffset+A*this.itemSize,!0,!1),i=Dg(B,this.fieldType).call(B,e);return this.data[A]=i,this.maskBitmap[g]|=I,this.fetchIndexPromises.delete(A),i});this.fetchIndexPromises.set(A,t)}return this.fetchIndexPromises.get(A)}return this.data[A]}}class fg{constructor(A,g,I,e){this.actualizedFields=A,this.deferredFields=g,this.deferredFieldsBeingResolved=new Map,this.deferredArrays=I,this.nextIFDByteOffset=e}hasTag(A){const g=DA(A);return this.actualizedFields.has(g)||this.deferredFields.has(g)||this.deferredArrays.has(g)}getValue(A){const g=DA(A);if(this.deferredFields.has(g)||this.deferredArrays.has(g)){const A=cA[g];throw new Error(`Field '${A?.name||`Tag${g}`}' (${g}) is deferred. Use loadValue() to load it asynchronously.`)}if(this.actualizedFields.has(g))return this.actualizedFields.get(g)}async loadValue(A){const g=DA(A);if(this.actualizedFields.has(g))return this.actualizedFields.get(g);if(this.deferredFieldsBeingResolved.has(g))return this.deferredFieldsBeingResolved.get(g);if(this.deferredFields.has(g)){const A=this.deferredFields.get(g);this.deferredFields.delete(g);const I=(async()=>{try{const I=await A();return this.actualizedFields.set(g,I),I}finally{this.deferredFieldsBeingResolved.delete(g)}})();return this.deferredFieldsBeingResolved.set(g,I),I}if(this.deferredArrays.has(g)){return this.deferredArrays.get(g).loadAll()}}async loadValueIndexed(A,g){const I=DA(A);if(this.actualizedFields.has(I)){return this.actualizedFields.get(I)[g]}if(this.deferredArrays.has(I)){return this.deferredArrays.get(I).get(g)}if(this.hasTag(I))return(await this.loadValue(I))[g]}parseGeoKeyDirectory(){const A=this.getValue("GeoKeyDirectory");if(!A)return null;const g={};for(let I=4;I<=4*A[3];I+=4){const e=mA[A[I]],t=A[I+1]||null,B=A[I+2],i=A[I+3];let C=null;if(t){if(C=this.getValue(t),null==C)throw new Error(`Could not get value of geoKey '${e}'.`);"string"==typeof C?C=C.substring(i,i+B-1):C.subarray&&(C=C.subarray(i,i+B),1===B&&(C=C[0]))}else C=i;g[e]=C}return g}toObject(){const A={};for(const[g,I]of this.actualizedFields.entries()){const e=cA[g];A[e?e.name:`Tag${g}`]=I}return A}}class ug{constructor(A,g,I,e=!1){this.source=A,this.littleEndian=g,this.bigTiff=I,this.eager=e}async getSlice(A,g){const I=this.bigTiff?4048:1024;return new PA((await this.source.fetch([{offset:A,length:void 0!==g?g:I}]))[0],A,this.littleEndian,this.bigTiff)}async parseFileDirectoryAt(A){const g=this.bigTiff?20:12,I=this.bigTiff?8:2;let e=await this.getSlice(A);const t=this.bigTiff?e.readUint64(A):e.readUint16(A),B=t*(g+(this.bigTiff?16:6));e.covers(A,B)||(e=await this.getSlice(A,B));const i=new Map,C=new Map,Q=new Map;let E=A+(this.bigTiff?8:2);for(let A=0;A<t;E+=g,++A){const A=e.readUint16(E),g=e.readUint16(E+2),I=this.bigTiff?e.readUint64(E+4):e.readUint32(E+4);let t=null,B=null,s=null;const a=nA(g),o=E+(this.bigTiff?12:8),r=cA[A]?.isArray,n=cA[A]?.eager||this.eager;if(a*I<=(this.bigTiff?8:4))t=dg(wg(g,I),Dg(e,g),e,g,I,o,r);else{const A=e.readOffset(o),i=nA(g)*I;if(e.covers(A,i))t=dg(wg(g,I),Dg(e,g),e,g,I,A,r);else if(n){const e=await this.getSlice(A,i);t=dg(wg(g,I),Dg(e,g),e,g,I,A,r)}else r?s=new yg(this.source,A,this.littleEndian,g,I):B=async()=>{const e=await this.getSlice(A,i);return dg(wg(g,I),Dg(e,g),e,g,I,A,r)}}null!==t?i.set(A,t):null!==B?C.set(A,B):null!==s&&Q.set(A,s)}const s=e.readOffset(A+I+g*t);return new fg(i,C,Q,s)}}function Sg(A,g){let I=A.length-g,e=0;do{for(let I=g;I>0;I--)A[e+g]+=A[e],e++;I-=g}while(I>0)}function Gg(A,g,I){let e=0,t=A.length;const B=t/I;for(;t>g;){for(let I=g;I>0;--I)A[e+g]+=A[e],++e;t-=g}const i=A.slice();for(let g=0;g<B;++g)for(let e=0;e<I;++e)A[I*g+e]=i[(I-e-1)*B+g]}class Ng{constructor(A){this.parameters=A}decodeBlock(A){throw new Error("decodeBlock not implemented")}async decode(A){const g=await this.decodeBlock(A),{tileWidth:I,tileHeight:e,predictor:t,bitsPerSample:B,planarConfiguration:i}=this.parameters;return 1!==t?function(A,g,I,e,t,B){if(!g||1===g)return A;for(let A=0;A<t.length;++A){if(t[A]%8!=0)throw new Error("When decoding with predictor, only multiple of 8 bits are supported.");if(t[A]!==t[0])throw new Error("When decoding with predictor, all samples must have the same size.")}const i=t[0]/8,C=2===B?1:t.length;for(let B=0;B<e&&!(B*C*I*i>=A.byteLength);++B){let e;if(2===g){switch(t[0]){case 8:e=new Uint8Array(A,B*C*I*i,C*I*i);break;case 16:e=new Uint16Array(A,B*C*I*i,C*I*i/2);break;case 32:e=new Uint32Array(A,B*C*I*i,C*I*i/4);break;default:throw new Error(`Predictor 2 not allowed with ${t[0]} bits per sample.`)}Sg(e,C)}else 3===g&&(e=new Uint8Array(A,B*C*I*i,C*I*i),Gg(e,C,i))}return A}(g,t,I,e,B,i):g}}function Fg(A,g,I,e){let t=null,B=null;const i=nA(g);switch(g){case oA.BYTE:case oA.ASCII:case oA.UNDEFINED:t=new Uint8Array(I),B=A.readUint8;break;case oA.SBYTE:t=new Int8Array(I),B=A.readInt8;break;case oA.SHORT:t=new Uint16Array(I),B=A.readUint16;break;case oA.SSHORT:t=new Int16Array(I),B=A.readInt16;break;case oA.LONG:case oA.IFD:t=new Uint32Array(I),B=A.readUint32;break;case oA.SLONG:t=new Int32Array(I),B=A.readInt32;break;case oA.LONG8:case oA.IFD8:t=new Array(I),B=A.readUint64;break;case oA.SLONG8:t=new Array(I),B=A.readInt64;break;case oA.RATIONAL:t=new Uint32Array(2*I),B=A.readUint32;break;case oA.SRATIONAL:t=new Int32Array(2*I),B=A.readInt32;break;case oA.FLOAT:t=new Float32Array(I),B=A.readFloat32;break;case oA.DOUBLE:t=new Float64Array(I),B=A.readFloat64}if(null===t||null===B)throw new RangeError(`Invalid field type: ${g}`);if(g!==oA.RATIONAL&&g!==oA.SRATIONAL)for(let g=0;g<I;++g)t[g]=B.call(A,e+g*i);else for(let g=0;g<I;g+=2)t[g]=B.call(A,e+g*i),t[g+1]=B.call(A,e+(g*i+4));return g===oA.ASCII?new TextDecoder("utf-8").decode(t):t}class kg extends Error{constructor(A){super(`No image at index ${A}`),this.index=A}}class Rg{async getImage(A=0){throw new Error("Not implemented")}async getImageCount(){throw new Error("Not implemented")}async readRasters(A={}){const{window:g,width:I,height:e}=A;let{resX:t,resY:B,bbox:i}=A;const C=await this.getImage();let Q=C;const E=await this.getImageCount(),s=C.getBoundingBox();if(g&&i)throw new Error('Both "bbox" and "window" passed.');if(I||e){if(g){const[A,I]=C.getOrigin(),[e,t]=C.getResolution();i=[A+g[0]*e,I+g[1]*t,A+g[2]*e,I+g[3]*t]}const A=i||s;if(I){if(t)throw new Error("Both width and resX passed");t=(A[2]-A[0])/I}if(e){if(B)throw new Error("Both width and resY passed");B=(A[3]-A[1])/e}}if(t||B){const A=[];for(let g=0;g<E;++g){const I=await this.getImage(g),e=I.fileDirectory.getValue("SubfileType"),t=I.fileDirectory.getValue("NewSubfileType");(0===g||2===e||1&t)&&A.push(I)}A.sort((A,g)=>A.getWidth()-g.getWidth());for(let g=0;g<A.length;++g){const I=A[g],e=(s[2]-s[0])/I.getWidth(),i=(s[3]-s[1])/I.getHeight();if(Q=I,t&&t>e||B&&B>i)break}}let a=g;if(i){const[A,g]=C.getOrigin(),[I,e]=Q.getResolution(C);a=[Math.round((i[0]-A)/I),Math.round((i[1]-g)/e),Math.round((i[2]-A)/I),Math.round((i[3]-g)/e)],a=[Math.min(a[0],a[2]),Math.min(a[1],a[3]),Math.max(a[0],a[2]),Math.max(a[1],a[3])]}return Q.readRasters({...A,window:a})}}class Lg extends Rg{constructor(A,g,I,e,t={}){super(),this.source=A,this.parser=new ug(A,g,I,!1),this.littleEndian=g,this.bigTiff=I,this.firstIFDOffset=e,this.cache=t.cache||!1,this.ifdRequests=[],this.ghostValues=null}async getSlice(A,g){const I=this.bigTiff?4048:1024;return new PA((await this.source.fetch([{offset:A,length:void 0!==g?g:I}]))[0],A,this.littleEndian,this.bigTiff)}async requestIFD(A){if(this.ifdRequests[A])return this.ifdRequests[A];if(0===A)return this.ifdRequests[A]=this.parser.parseFileDirectoryAt(this.firstIFDOffset),this.ifdRequests[A];if(!this.ifdRequests[A-1])try{this.ifdRequests[A-1]=this.requestIFD(A-1)}catch(g){if(g instanceof kg)throw new kg(A);throw g}return this.ifdRequests[A]=(async()=>{const g=await this.ifdRequests[A-1];if(0===g.nextIFDByteOffset)throw new kg(A);return this.parser.parseFileDirectoryAt(g.nextIFDByteOffset)})(),this.ifdRequests[A]}async getImage(A=0){return new OA(await this.requestIFD(A),this.littleEndian,this.cache,this.source)}async getImageCount(){let A=0,g=!0;for(;g;)try{await this.requestIFD(A),++A}catch(A){if(!(A instanceof kg))throw A;g=!1}return A}async getGhostValues(){const A=this.bigTiff?16:8;if(this.ghostValues)return this.ghostValues;const g="GDAL_STRUCTURAL_METADATA_SIZE=";let I=await this.getSlice(A,130);if(g===Fg(I,oA.ASCII,30,A)){const g=Fg(I,oA.ASCII,130,A).split("\n")[0],e=Number(g.split("=")[1].split(" ")[0])+g.length;e>130&&(I=await this.getSlice(A,e));const t=Fg(I,oA.ASCII,e,A);this.ghostValues={},t.split("\n").filter(A=>A.length>0).map(A=>A.split("=")).forEach(([A,g])=>{this.ghostValues[A]=g})}return this.ghostValues}static async fromSource(A,g,I){const e=(await A.fetch([{offset:0,length:1024}],I))[0],t=new vA(e),B=t.getUint16(0,0);let i;if(18761===B)i=!0;else{if(19789!==B)throw new TypeError("Invalid byte order value.");i=!1}const C=t.getUint16(2,i);let Q;if(42===C)Q=!1;else{if(43!==C)throw new TypeError("Invalid magic number.");Q=!0;if(8!==t.getUint16(4,i))throw new Error("Unsupported offset byte-size.")}const E=Q?t.getUint64(8,i):t.getUint32(4,i);return new Lg(A,i,Q,E,g)}close(){return"function"==typeof this.source.close&&this.source.close()}}async function Ug(A,g){return Lg.fromSource(function(A){return new cg(A)}(A),void 0,g)}class mg{constructor(A=257){this.gridSize=A;const g=A-1;if(g&g-1)throw new Error(`Expected grid size to be 2^n+1, got ${A}.`);this.numTriangles=g*g*2-2,this.numParentTriangles=this.numTriangles-g*g,this.indices=new Uint32Array(this.gridSize*this.gridSize),this.coords=new Uint16Array(4*this.numTriangles);for(let A=0;A<this.numTriangles;A++){let I=A+2,e=0,t=0,B=0,i=0,C=0,Q=0;for(1&I?B=i=C=g:e=t=Q=g;(I>>=1)>1;){const A=e+B>>1,g=t+i>>1;1&I?(B=e,i=t,e=C,t=Q):(e=B,t=i,B=C,i=Q),C=A,Q=g}const E=4*A;this.coords[E+0]=e,this.coords[E+1]=t,this.coords[E+2]=B,this.coords[E+3]=i}}createTile(A){return new pg(A,this)}}class pg{constructor(A,g){const I=g.gridSize;if(A.length!==I*I)throw new Error(`Expected terrain data of length ${I*I} (${I} x ${I}), got ${A.length}.`);this.terrain=A,this.martini=g,this.errors=new Float32Array(A.length),this.update()}update(){const{numTriangles:A,numParentTriangles:g,coords:I,gridSize:e}=this.martini,{terrain:t,errors:B}=this;for(let i=A-1;i>=0;i--){const A=4*i,C=I[A+0],Q=I[A+1],E=I[A+2],s=I[A+3],a=C+E>>1,o=Q+s>>1,r=a+o-Q,n=o+C-a,h=(t[Q*e+C]+t[s*e+E])/2,l=o*e+a,c=Math.abs(h-t[l]);if(B[l]=Math.max(B[l],c),i<g){const A=(Q+n>>1)*e+(C+r>>1),g=(s+n>>1)*e+(E+r>>1);B[l]=Math.max(B[l],B[A],B[g])}}}getMesh(A=0){const{gridSize:g,indices:I}=this.martini,{errors:e}=this;let t=0,B=0;const i=g-1;function C(i,Q,E,s,a,o){const r=i+E>>1,n=Q+s>>1;Math.abs(i-a)+Math.abs(Q-o)>1&&e[n*g+r]>A?(C(a,o,i,Q,r,n),C(E,s,a,o,r,n)):(I[Q*g+i]=I[Q*g+i]||++t,I[s*g+E]=I[s*g+E]||++t,I[o*g+a]=I[o*g+a]||++t,B++)}I.fill(0),C(0,0,i,i,i,0),C(i,i,0,0,0,i);const Q=new Uint16Array(2*t),E=new Uint32Array(3*B);let s=0;function a(t,B,i,C,o,r){const n=t+i>>1,h=B+C>>1;if(Math.abs(t-o)+Math.abs(B-r)>1&&e[h*g+n]>A)a(o,r,t,B,n,h),a(i,C,o,r,n,h);else{const A=I[B*g+t]-1,e=I[C*g+i]-1,a=I[r*g+o]-1;Q[2*A]=t,Q[2*A+1]=B,Q[2*e]=i,Q[2*e+1]=C,Q[2*a]=o,Q[2*a+1]=r,E[s++]=A,E[s++]=e,E[s++]=a}}return a(0,0,i,i,i,0),a(i,i,0,0,0,i),{vertices:Q,triangles:E}}}function Yg(A,g,I,e){const t=e?function(A,g){A.westIndices.sort((A,I)=>g[3*A+1]-g[3*I+1]),A.eastIndices.sort((A,I)=>g[3*I+1]-g[3*A+1]),A.southIndices.sort((A,I)=>g[3*I]-g[3*A]),A.northIndices.sort((A,I)=>g[3*A]-g[3*I]);const I=[];for(const g in A){const e=A[g];for(let A=0;A<e.length-1;A++)I.push([e[A],e[A+1]])}return I}(e,A.POSITION.value):function(A){const g=[];for(let I=0;I<A.length;I+=3)g.push([A[I],A[I+1]]),g.push([A[I+1],A[I+2]]),g.push([A[I+2],A[I]]);g.sort((A,g)=>Math.min(...A)-Math.min(...g)||Math.max(...A)-Math.max(...g));const I=[];let e=0;for(;e<g.length;)g[e][0]===g[e+1]?.[1]&&g[e][1]===g[e+1]?.[0]?e+=2:(I.push(g[e]),e++);return I}(g),B=new A.POSITION.value.constructor(6*t.length),i=new A.TEXCOORD_0.value.constructor(4*t.length),Q=new g.constructor(6*t.length);for(let g=0;g<t.length;g++){Mg({edge:t[g],edgeIndex:g,attributes:A,skirtHeight:I,newPosition:B,newTexcoord0:i,newTriangles:Q})}A.POSITION.value=C.concatenateTypedArrays(A.POSITION.value,B),A.TEXCOORD_0.value=C.concatenateTypedArrays(A.TEXCOORD_0.value,i);return{attributes:A,triangles:g instanceof Array?g.concat(Q):C.concatenateTypedArrays(g,Q)}}function Mg({edge:A,edgeIndex:g,attributes:I,skirtHeight:e,newPosition:t,newTexcoord0:B,newTriangles:i}){const C=I.POSITION.value.length,Q=2*g,E=2*g+1;t.set(I.POSITION.value.subarray(3*A[0],3*A[0]+3),3*Q),t[3*Q+2]=t[3*Q+2]-e,t.set(I.POSITION.value.subarray(3*A[1],3*A[1]+3),3*E),t[3*E+2]=t[3*E+2]-e,B.set(I.TEXCOORD_0.value.subarray(2*A[0],2*A[0]+2),2*Q),B.set(I.TEXCOORD_0.value.subarray(2*A[1],2*A[1]+2),2*E);const s=2*g*3;i[s]=A[0],i[s+1]=C/3+E,i[s+2]=A[1],i[s+3]=C/3+E,i[s+4]=A[0],i[s+5]=C/3+Q}function Kg(A,g,I,e,t,B){return(I-t)*(g-B)-(e-B)*(A-t)}class bg{constructor(A,g,I=g){this.data=A,this.width=g,this.height=I,this.coords=[],this.triangles=[],this._halfedges=[],this._candidates=[],this._queueIndices=[],this._queue=[],this._errors=[],this._rms=[],this._pending=[],this._pendingLen=0,this._rmsSum=0;const e=g-1,t=I-1,B=this._addPoint(0,0),i=this._addPoint(e,0),C=this._addPoint(0,t),Q=this._addPoint(e,t),E=this._addTriangle(Q,B,C,-1,-1,-1);this._addTriangle(B,Q,i,E,-1,-1),this._flush()}run(A=1){for(;this.getMaxError()>A;)this.refine()}refine(){this._step(),this._flush()}getMaxError(){return this._errors[0]}getRMSD(){return this._rmsSum>0?Math.sqrt(this._rmsSum/(this.width*this.height)):0}heightAt(A,g){return this.data[this.width*g+A]}_flush(){const{coords:A}=this;for(let g=0;g<this._pendingLen;g++){const I=this._pending[g],e=2*this.triangles[3*I+0],t=2*this.triangles[3*I+1],B=2*this.triangles[3*I+2];this._findCandidate(A[e],A[e+1],A[t],A[t+1],A[B],A[B+1],I)}this._pendingLen=0}_findCandidate(A,g,I,e,t,B,i){const C=Math.min(A,I,t),Q=Math.min(g,e,B),E=Math.max(A,I,t),s=Math.max(g,e,B);let a=Kg(I,e,t,B,C,Q),o=Kg(t,B,A,g,C,Q),r=Kg(A,g,I,e,C,Q);const n=e-g,h=A-I,l=B-e,c=I-t,w=g-B,D=t-A,d=Kg(A,g,I,e,t,B),y=this.heightAt(A,g)/d,f=this.heightAt(I,e)/d,u=this.heightAt(t,B)/d;let S=0,G=0,N=0,F=0;for(let A=Q;A<=s;A++){let g=0;a<0&&0!==l&&(g=Math.max(g,Math.floor(-a/l))),o<0&&0!==w&&(g=Math.max(g,Math.floor(-o/w))),r<0&&0!==n&&(g=Math.max(g,Math.floor(-r/n)));let I=a+l*g,e=o+w*g,t=r+n*g,B=!1;for(let i=C+g;i<=E;i++){if(I>=0&&e>=0&&t>=0){B=!0;const g=y*I+f*e+u*t,C=Math.abs(g-this.heightAt(i,A));F+=C*C,C>S&&(S=C,G=i,N=A)}else if(B)break;I+=l,e+=w,t+=n}a+=c,o+=D,r+=h}(G===A&&N===g||G===I&&N===e||G===t&&N===B)&&(S=0),this._candidates[2*i]=G,this._candidates[2*i+1]=N,this._rms[i]=F,this._queuePush(i,S,F)}_step(){const A=this._queuePop(),g=3*A+0,I=3*A+1,e=3*A+2,t=this.triangles[g],B=this.triangles[I],i=this.triangles[e],C=this.coords[2*t],Q=this.coords[2*t+1],E=this.coords[2*B],s=this.coords[2*B+1],a=this.coords[2*i],o=this.coords[2*i+1],r=this._candidates[2*A],n=this._candidates[2*A+1],h=this._addPoint(r,n);if(0===Kg(C,Q,E,s,r,n))this._handleCollinear(h,g);else if(0===Kg(E,s,a,o,r,n))this._handleCollinear(h,I);else if(0===Kg(a,o,C,Q,r,n))this._handleCollinear(h,e);else{const A=this._halfedges[g],C=this._halfedges[I],Q=this._halfedges[e],E=this._addTriangle(t,B,h,A,-1,-1,g),s=this._addTriangle(B,i,h,C,-1,E+1),a=this._addTriangle(i,t,h,Q,E+2,s+1);this._legalize(E),this._legalize(s),this._legalize(a)}}_addPoint(A,g){const I=this.coords.length>>1;return this.coords.push(A,g),I}_addTriangle(A,g,I,e,t,B,i=this.triangles.length){const C=i/3;return this.triangles[i+0]=A,this.triangles[i+1]=g,this.triangles[i+2]=I,this._halfedges[i+0]=e,this._halfedges[i+1]=t,this._halfedges[i+2]=B,e>=0&&(this._halfedges[e]=i+0),t>=0&&(this._halfedges[t]=i+1),B>=0&&(this._halfedges[B]=i+2),this._candidates[2*C+0]=0,this._candidates[2*C+1]=0,this._queueIndices[C]=-1,this._rms[C]=0,this._pending[this._pendingLen++]=C,i}_legalize(A){const g=this._halfedges[A];if(g<0)return;const I=A-A%3,e=g-g%3,t=I+(A+1)%3,B=I+(A+2)%3,i=e+(g+2)%3,C=e+(g+1)%3,Q=this.triangles[B],E=this.triangles[A],s=this.triangles[t],a=this.triangles[i],{coords:o}=this;if(!function(A,g,I,e,t,B,i,C){const Q=A-i,E=g-C,s=I-i,a=e-C,o=t-i,r=B-C,n=s*s+a*a,h=o*o+r*r;return Q*(a*h-n*r)-E*(s*h-n*o)+(Q*Q+E*E)*(s*r-a*o)<0}(o[2*Q],o[2*Q+1],o[2*E],o[2*E+1],o[2*s],o[2*s+1],o[2*a],o[2*a+1]))return;const r=this._halfedges[t],n=this._halfedges[B],h=this._halfedges[i],l=this._halfedges[C];this._queueRemove(I/3),this._queueRemove(e/3);const c=this._addTriangle(Q,a,s,-1,h,r,I),w=this._addTriangle(a,Q,E,c,n,l,e);this._legalize(c+1),this._legalize(w+2)}_handleCollinear(A,g){const I=g-g%3,e=I+(g+1)%3,t=I+(g+2)%3,B=this.triangles[t],i=this.triangles[g],C=this.triangles[e],Q=this._halfedges[e],E=this._halfedges[t],s=this._halfedges[g];if(s<0){const g=this._addTriangle(A,B,i,-1,E,-1,I),e=this._addTriangle(B,A,C,g,-1,Q);return this._legalize(g+1),void this._legalize(e+2)}const a=s-s%3,o=a+(s+2)%3,r=a+(s+1)%3,n=this.triangles[o],h=this._halfedges[o],l=this._halfedges[r];this._queueRemove(a/3);const c=this._addTriangle(B,i,A,E,-1,-1,I),w=this._addTriangle(i,n,A,l,-1,c+1,a),D=this._addTriangle(n,C,A,h,-1,w+1),d=this._addTriangle(C,B,A,Q,c+2,D+1);this._legalize(c),this._legalize(w),this._legalize(D),this._legalize(d)}_queuePush(A,g,I){const e=this._queue.length;this._queueIndices[A]=e,this._queue.push(A),this._errors.push(g),this._rmsSum+=I,this._queueUp(e)}_queuePop(){const A=this._queue.length-1;return this._queueSwap(0,A),this._queueDown(0,A),this._queuePopBack()}_queuePopBack(){const A=this._queue.pop();return this._errors.pop(),this._rmsSum-=this._rms[A],this._queueIndices[A]=-1,A}_queueRemove(A){const g=this._queueIndices[A];if(g<0){const g=this._pending.indexOf(A);if(-1===g)throw new Error("Broken triangulation (something went wrong).");return void(this._pending[g]=this._pending[--this._pendingLen])}const I=this._queue.length-1;I!==g&&(this._queueSwap(g,I),this._queueDown(g,I)||this._queueUp(g)),this._queuePopBack()}_queueLess(A,g){return this._errors[A]>this._errors[g]}_queueSwap(A,g){const I=this._queue[A],e=this._queue[g];this._queue[A]=e,this._queue[g]=I,this._queueIndices[I]=g,this._queueIndices[e]=A;const t=this._errors[A];this._errors[A]=this._errors[g],this._errors[g]=t}_queueUp(A){let g=A;for(;;){const A=g-1>>1;if(A===g||!this._queueLess(g,A))break;this._queueSwap(A,g),g=A}}_queueDown(A,g){let I=A;for(;;){const A=2*I+1;if(A>=g||A<0)break;const e=A+1;let t=A;if(e<g&&this._queueLess(e,A)&&(t=e),!this._queueLess(t,I))break;this._queueSwap(I,t),I=t}return I>A}}const Jg={type:"image",tesselator:"martini",format:"uint8",useHeatMap:!0,useColorsBasedOnValues:!1,useAutoRange:!1,useDataForOpacity:!1,useSingleColor:!1,useColorClasses:!1,blurredTexture:!0,clipLow:null,clipHigh:null,multiplier:1,color:[255,0,255,255],colorScale:B.brewer.YlOrRd,colorScaleValueRange:[0,255],colorsBasedOnValues:null,colorClasses:null,alpha:100,useChannel:null,useChannelIndex:null,noDataValue:void 0,numOfChannels:void 0,nullColor:[0,0,0,0],unidentifiedColor:[0,0,0,0],clippedColor:[0,0,0,0],terrainColor:[133,133,133,255],terrainSkirtHeight:100,terrainMinValue:0,planarConfig:void 0};class Hg{data;scale=(A,g,I,e,t)=>(A-g)*(t-e)/(I-g)+e;async setUrl(A){const g=await fetch(A),I=await g.arrayBuffer(),e=await Ug(I),t=await e.getImage(0);this.data=t}async getMap(A,g,I){const e={...Jg,...g};switch(e.type){case"image":return this.getBitmap(A,e);case"terrain":return this.getHeightmap(A,e,I);default:return null}}async getHeightmap(A,g,I){let e,t,B=[];"string"==typeof A?(await this.setUrl(A),B=await this.data.readRasters(),e=this.data.getWidth(),t=this.data.getHeight()):(B=A.rasters,e=A.width,t=A.height);const C={...g};let Q=B[0];C.useChannelIndex??=null==C.useChannel?null:C.useChannel-1,null!=g.useChannelIndex&&B[C.useChannelIndex]&&(Q=B[C.useChannelIndex]);const E=new Float32Array((e+1)*(t+1)),s=Q.length/(e*t);let a=null===g.useChannelIndex?0:g.useChannelIndex;for(let A=0,I=0;I<t;I++)for(let t=0;t<e;t++,A++){const e=g.noDataValue&&Q[a]===g.noDataValue?g.terrainMinValue:Q[a]*g.multiplier;E[A+I]=e,a+=s}if("martini"===g.tesselator){for(let A=(e+1)*e,g=0;g<e;g++,A++)E[A]=E[A-e-1];for(let A=t,g=0;g<t+1;g++,A+=t+1)E[A]=E[A-1]}const{terrainSkirtHeight:o}=g;let r;switch(g.tesselator){case"martini":r=qg(I,e,E);break;case"delatin":r=xg(I,e,t,E);break;default:r=e!==t||t&&e-1?xg(I,e,t,E):qg(I,e,E)}const{vertices:n}=r;let{triangles:h}=r,l=function(A,g,I,e,t){const B=I+1,i=A.length/2,C=new Float32Array(3*i),Q=new Float32Array(2*i),[E,s,a,o]=t||[0,0,I,e],r=(a-E)/I,n=(o-s)/e;for(let t=0;t<i;t++){const i=A[2*t],s=A[2*t+1],a=s*B+i;C[3*t+0]=i*r+E,C[3*t+1]=-s*n+o,C[3*t+2]=g[a],Q[2*t+0]=i/I,Q[2*t+1]=s/e}return{POSITION:{value:C,size:3},TEXCOORD_0:{value:Q,size:2}}}(n,E,e,t,A.bounds);const c=i.getMeshBoundingBox(l);if(o){const{attributes:A,triangles:g}=Yg(l,h,o);l=A,h=g}return{loaderData:{header:{}},header:{vertexCount:h.length,boundingBox:c},mode:4,indices:{value:Uint32Array.from(h),size:1},attributes:l}}async getBitmap(A,g){const I={...g};let e,t,B,i=[];"string"==typeof A?(await this.setUrl(A),i=await this.data.readRasters(),e=i.length,t=this.data.getWidth(),B=this.data.getHeight()):(i=A.rasters,e=i.length,t=A.width,B=A.height);const C=document.createElement("canvas");C.width=t,C.height=B;const Q=C.getContext("2d"),E=Q.createImageData(t,B);let s,a,o,r;const n=t*B*4;if(I.unidentifiedColor=this.getColorFromChromaType(I.unidentifiedColor),I.nullColor=this.getColorFromChromaType(I.nullColor),I.clippedColor=this.getColorFromChromaType(I.clippedColor),I.color=this.getColorFromChromaType(I.color),I.useChannelIndex??=null===g.useChannel?null:g.useChannel-1,null==I.useChannelIndex){if(1===e){if(i[0].length/(t*B)===1){const A=i[0];I.useAutoRange&&(I.colorScaleValueRange=this.getMinMax(A,I));this.getColorValue(A,I,n).forEach((A,g)=>{E.data[g]=A})}if(i[0].length/(t*B)===3){let A=0;for(let g=0;g<n;g+=4){const e=[i[0][A],i[0][A+1],i[0][A+2]],t=this.hasPixelsNoData(e,I.noDataValue)?I.nullColor:[...e,Math.floor(2.55*I.alpha)];[E.data[g],E.data[g+1],E.data[g+2],E.data[g+3]]=t,A+=3}}i[0].length/(t*B)===4&&i[0].forEach((A,g)=>{E.data[g]=A})}if(3===e){let A=0;for(let g=0;g<n;g+=4)s=i[0][A],a=i[1][A],o=i[2][A],r=Math.floor(2.55*I.alpha),E.data[g]=s,E.data[g+1]=a,E.data[g+2]=o,E.data[g+3]=r,A+=1}if(4===e){let A=0;for(let g=0;g<n;g+=4)s=i[0][A],a=i[1][A],o=i[2][A],r=Math.floor(2.55*I.alpha),E.data[g]=s,E.data[g+1]=a,E.data[g+2]=o,E.data[g+3]=r,A+=1}}else if(I.useChannelIndex<I.numOfChannels&&I.useChannelIndex>=0){let A=i[0];i[I.useChannelIndex]&&(A=i[I.useChannelIndex]),I.useAutoRange&&(I.colorScaleValueRange=this.getMinMax(A,I));this.getColorValue(A,I,n,I.numOfChannels).forEach((A,g)=>{E.data[g]=A})}else{console.log(`Defined channel(${g.useChannel}) or channel index(${g.useChannelIndex}) does not exist, choose a different channel or set the useChannel property to null if you want to visualize RGB(A) imagery`);this.getDefaultColor(n,I.nullColor).forEach((A,g)=>{E.data[g]=A})}Q.putImageData(E,0,0);return C.toDataURL("image/png")}getMinMax(A,g){let I=g.maxValue?g.maxValue:Number.MIN_VALUE,e=g.minValue?g.minValue:Number.MAX_VALUE;for(let t=0;t<A.length;t+=1)void 0!==g.noDataValue&&A[t]===g.noDataValue||(A[t]>I&&(I=A[t]),A[t]<e&&(e=A[t]));return[e,I]}getColorValue(A,g,I,e=1){const t=B.scale(g.colorScale).domain(g.colorScaleValueRange);let i=null===g.useChannelIndex?0:g.useChannelIndex;const C=new Array(I),Q=g.colorsBasedOnValues?g.colorsBasedOnValues.map(([A])=>A):void 0,E=g.colorsBasedOnValues?g.colorsBasedOnValues.map(([,A])=>[...B(A).rgb(),Math.floor(2.55*g.alpha)]):void 0,s=g.useColorClasses?g.colorClasses.map(([A])=>[...B(A).rgb(),Math.floor(2.55*g.alpha)]):void 0,a=g.useColorClasses?g.colorClasses.map(([,A])=>A):void 0,o=g.useColorClasses?g.colorClasses.map(([,,A],I)=>void 0!==A?A:I===g.colorClasses.length-1?[!0,!0]:[!0,!1]):void 0;for(let B=0;B<I;B+=4){let I=g.nullColor;if(!Number.isNaN(A[i])&&(void 0===g.noDataValue||A[i]!==g.noDataValue))if(null!=g.clipLow&&A[i]<=g.clipLow||null!=g.clipHigh&&A[i]>=g.clipHigh)I=g.clippedColor;else{if(g.useHeatMap&&(I=[...t(A[i]).rgb(),Math.floor(2.55*g.alpha)]),g.useColorsBasedOnValues){const e=Q.indexOf(A[i]);I=e>-1?E[e]:g.unidentifiedColor}if(g.useColorClasses){const e=this.findClassIndex(A[i],a,o);I=e>-1?s[e]:g.unidentifiedColor}g.useSingleColor&&(I=g.color),g.useDataForOpacity&&(I[3]=this.scale(A[i],g.colorScaleValueRange[0],g.colorScaleValueRange.slice(-1)[0],0,255))}[C[B],C[B+1],C[B+2],C[B+3]]=I,i+=e}return C}findClassIndex(A,g,I){for(let e=0;e<g.length;e+=1){const[t,B]=g[e],[i,C]=I[e];if((i?A>=t:A>t)&&(C?A<=B:A<B))return e}return-1}getDefaultColor(A,g){const I=new Array(A);for(let e=0;e<A;e+=4)[I[e],I[e+1],I[e+2],I[e+3]]=g;return I}getColorFromChromaType(A){return Array.isArray(A)&&4===A.length?A:[...B(A).rgb(),255]}hasPixelsNoData(A,g){return void 0!==g&&A.every(A=>A===g)}}function qg(A,g,I){const e=new mg(g+1).createTile(I),{vertices:t,triangles:B}=e.getMesh(A);return{vertices:t,triangles:B}}function xg(A,g,I,e){const t=new bg(e,g+1,I+1);t.run(A);const{coords:B,triangles:i}=t;return{vertices:B,triangles:i}}const _g=2*Math.PI*6378137,Tg=_g/2,Og=[-20037508.342789244,20037508.342789244],vg={blurredTexture:!0};class Pg{cog;cogZoomLookup=[];cogResolutionLookup=[];cogOrigin=[0,0];zoomRange=[0,0];tileSize;bounds;geo=new Hg;options;constructor(A){this.options={...vg,...A}}async initializeCog(A){if(this.cog)return;this.cog=await async function(A,g={},I){return Lg.fromSource(lg(A,g),void 0,I)}(A);const g=await this.cog.getImage(),I=g.fileDirectory;this.cogOrigin=g.getOrigin(),this.options.noDataValue??=await this.getNoDataValue(g),this.options.format??=await this.getDataTypeFromTags(I),this.options.numOfChannels=I.getValue("SamplesPerPixel"),this.options.planarConfig=I.getValue("PlanarConfiguration"),[this.cogZoomLookup,this.cogResolutionLookup]=await this.buildCogZoomResolutionLookup(this.cog),this.tileSize=g.getTileWidth(),this.zoomRange=this.calculateZoomRange(this.tileSize,g.getResolution()[0],await this.cog.getImageCount()),this.bounds=this.calculateBoundsAsLatLon(g.getBoundingBox())}getZoomRange(){return this.zoomRange}calculateZoomRange(A,g,I){const e=this.getZoomLevelFromResolution(A,g);return[e-(I-1),e]}calculateBoundsAsLatLon(A){const g=Math.min(A[0],A[2]),I=Math.max(A[0],A[2]),e=Math.min(A[1],A[3]),t=Math.max(A[1],A[3]),B=this.getLatLon([g,e]),i=this.getLatLon([I,t]);return[B[0],B[1],i[0],i[1]]}getZoomLevelFromResolution(A,g){return Math.round(Math.log2(_g/(g*A)))}getBoundsAsLatLon(){return this.bounds}getLatLon(A){const g=Tg+A[0],I=-(Tg+(A[1]-_g)),e=[g*(512/_g),I*(512/_g)],B=t.worldToLngLat(e);return[B[0],-B[1]]}async buildCogZoomResolutionLookup(A){const g=await A.getImageCount(),I=await A.getImage(0),e=I.getResolution()[0],t=I.getWidth(),B=[],i=[];for(let I=0;I<g;I++){const g=e*(t/(await A.getImage(I)).getWidth()),C=Math.round(Math.log2(156543.03125/g));B[I]=C,i[I]=g}return[B,i]}getImageIndexForZoomLevel(A){const g=this.cogZoomLookup[this.cogZoomLookup.length-1];if(A>this.cogZoomLookup[0])return 0;if(A<g)return this.cogZoomLookup.length-1;const I=this.cogZoomLookup.indexOf(A);return-1===I&&console.log("getImageIndexForZoomLevel: error in retrieving image by zoom index"),I}async getTileFromImage(A,g,I){const e=this.getImageIndexForZoomLevel(I),t=await this.cog.getImage(e),B=t.getTileWidth(),i=t.getTileHeight();if(!B||!i)throw new Error('GeoTIFF Error: The provided image is not tiled. Please use "rio cogeo create --web-optimized" to fix this.');const C=this.cogResolutionLookup[e],Q=t.getHeight(),E=t.getWidth(),[s,a]=this.cogOrigin,o=this.tileSize,r=_g/o/2**I,n=(Og[0]+A*o*r-s)/C,h=(a-(Og[1]-g*o*r))/C,l=Math.round(n),c=Math.round(h),w=l+o,D=c+o,d=Math.max(0,l),y=Math.max(0,c),f=Math.min(E,w),u=Math.min(Q,D),S=f-d,G=u-y;if(S<=0||G<=0)return[this.createEmptyTile()];const N=d-l,F=y-c,k=[d,y,f,u];if(N>0||F>0||S<B||G<i){const A=this.createTileBuffer(this.options.format,B);A.fill(this.options.noDataValue);const g=await t.readRasters({window:k}),I=Array(g.length*g[0].length);I.fill(this.options.noDataValue);for(let e=0;e<g.length;e+=1){for(let I=0;I<G;I+=1){const t=F+I,C=t*o,Q=I*g.width;for(let I=0;I<S;I+=1){const E=N+I;t<B&&E<i?A[C+E]=g[e][Q+I]:console.log("error in assigning data to tile buffer")}}for(let g=0;g<A.length;g+=1)I[g*this.options.numOfChannels+e]=A[g]}return[I]}return[await t.readRasters({window:k,interleave:!0})]}createEmptyTile(){const A=this.options.numOfChannels||1,g=this.tileSize*this.tileSize*A,I=new Float32Array(g);return void 0!==this.options.noDataValue&&I.fill(this.options.noDataValue),I}async getTile(A,g,I,e,t){const B=await this.getTileFromImage(A,g,I);return this.geo.getMap({rasters:[B[0]],width:this.tileSize,height:this.tileSize,bounds:e},this.options,t)}async getDataTypeFromTags(A){const g=A.hasTag("SampleFormat"),I=A.hasTag("BitsPerSample");if(!g||!I)return console.warn("Missing SampleFormat or BitsPerSample tags, defaulting to UInt8"),"UInt8";const e=A.getValue("SampleFormat"),t=A.getValue("BitsPerSample"),B=e&&"number"==typeof e.length&&e.length>0?e[0]:e;let i;return i=1===B?"UInt":2===B?"Int":3===B?"Float":"Unknown",`${i}${t&&"number"==typeof t.length&&t.length>0?t[0]:t}`}getNoDataValue(A){const g=A.getGDALNoData();if(null==g)return void console.warn("No noData value defined — raster might be rendered incorrectly.");const I=String(g).replace(/\0/g,"").trim();if(""===I)return void console.warn("noData value is an empty string after cleanup.");const e=Number(I);return"nan"===I.toLowerCase()?NaN:Number.isNaN(e)?void console.warn(`Failed to parse numeric noData value: '${I}'`):e}createTileBuffer(A,g){const I=g*g;switch(A){case"UInt8":return new Uint8Array(I);case"Int8":return new Int8Array(I);case"UInt16":return new Uint16Array(I);case"Int16":return new Int16Array(I);case"UInt32":return new Uint32Array(I);case"Int32":return new Int32Array(I);case"Float32":return new Float32Array(I);case"Float64":return new Float64Array(I);default:throw new Error(`Unsupported data type: ${A}`)}}}const Zg={type:"object",value:null,validate:(A,g)=>g.optional&&null===A||"string"==typeof A||Array.isArray(A)&&A.every(A=>"string"==typeof A),equal:(A,g)=>{if(A===g)return!0;if(!Array.isArray(A)||!Array.isArray(g))return!1;const I=A.length;if(I!==g.length)return!1;for(let e=0;e<I;e++)if(A[e]!==g[e])return!1;return!0}},Vg={...g.TileLayer.defaultProps,bounds:{type:"array",value:null,optional:!0,compare:!0},rasterData:Zg,clampToTerrain:!1,workerUrl:""};class zg extends A.CompositeLayer{static defaultProps=Vg;static layerName="CogBitmapLayer";async initializeState(A){super.initializeState(A),this.setState({bitmapCogTiles:this.props.cogTiles||new Pg(this.props.cogBitmapOptions),initialized:!1}),await this.init()}async init(){await this.state.bitmapCogTiles.initializeCog(this.props.rasterData);const A=this.state.bitmapCogTiles.getZoomRange(),[g,I]=A;this.setState({initialized:!0,minZoom:g,maxZoom:I})}updateState({props:g,oldProps:I}){const e=g.rasterData!==I.rasterData;if(e){const{rasterData:A}=g,I=A&&(Array.isArray(A)||A.includes("{x}")&&A.includes("{y}")||this.props.isTiled);this.setState({isTiled:I})}e||(g.bounds,I.bounds);this.state.isTiled,g?.cogBitmapOptions?.useChannel&&g.cogBitmapOptions?.useChannel!==I.cogBitmapOptions?.useChannel&&(this.state.bitmapCogTiles.options.useChannel=g.cogBitmapOptions.useChannel),g.workerUrl&&A.log.removed("workerUrl","loadOptions.terrain.workerUrl")()}async getTiledBitmapData(A){return await this.state.bitmapCogTiles.getTile(A.index.x,A.index.y,A.index.z)}renderSubLayers(A){const g=this.getSubLayerClass("image",I.BitmapLayer),{blurredTexture:t}=this.state.bitmapCogTiles.options,{clampToTerrain:B}=this.props,i="object"==typeof B&&null!==B&&"terrainDrawMode"in B,{data:C}=A;if(!C)return null;const{bbox:{west:Q,south:E,east:s,north:a}}=A.tile;return new g({...A,tileSize:this.state.bitmapCogTiles.tileSize},{data:null,image:C,_instanced:!1,bounds:[Q,E,s,a],textureParameters:{minFilter:t?"linear":"nearest",magFilter:t?"linear":"nearest"},extensions:B?[new e._TerrainExtension]:[],...i?{terrainDrawMode:B.terrainDrawMode}:{}})}renderLayers(){const{clampToTerrain:A,maxRequests:I,onTileLoad:e,onTileUnload:t,onTileError:B,maxCacheSize:i,maxCacheByteSize:C,refinementStrategy:Q,cogBitmapOptions:E}=this.props;if(this.state.isTiled&&this.state.initialized){const{tileSize:s}=this.state.bitmapCogTiles;return new g.TileLayer(this.getSubLayerProps({id:"tiles"}),{getTileData:this.getTiledBitmapData.bind(this),renderSubLayers:this.renderSubLayers.bind(this),updateTriggers:{getTileData:[A,E.useChannel]},extent:this.state.bitmapCogTiles.getBoundsAsLatLon(),tileSize:s,minZoom:this.state.minZoom,maxZoom:this.state.maxZoom,maxRequests:I,onTileLoad:e,onTileUnload:t,onTileError:B,maxCacheSize:i,maxCacheByteSize:C,refinementStrategy:Q})}return null}}const jg={type:"object",value:null,validate:(A,g)=>g.optional&&null===A||"string"==typeof A||Array.isArray(A)&&A.every(A=>"string"==typeof A),equal:(A,g)=>{if(A===g)return!0;if(!Array.isArray(A)||!Array.isArray(g))return!1;const I=A.length;if(I!==g.length)return!1;for(let e=0;e<I;e++)if(A[e]!==g[e])return!1;return!0}},Wg=[1],Xg={...g.TileLayer.defaultProps,elevationData:jg,texture:{...jg,optional:!0},meshMaxError:{type:"number",value:4},bounds:{type:"array",value:null,optional:!0,compare:!0},color:{type:"color",value:[255,255,255]},elevationDecoder:{type:"object",value:{rScaler:1,gScaler:0,bScaler:0,offset:0}},workerUrl:"",wireframe:!1,material:!0};class $g extends A.CompositeLayer{static defaultProps=Xg;static layerName="CogTerrainLayer";terrainUrl;async initializeState(A){super.initializeState(A),this.setState({terrainCogTiles:this.props.cogTiles||new Pg(this.props.terrainOptions),initialized:!1}),await this.init(this.terrainUrl)}async init(){await this.state.terrainCogTiles.initializeCog(this.props.elevationData);const A=this.state.terrainCogTiles.getZoomRange(),[g,I]=A;this.setState({initialized:!0,minZoom:g,maxZoom:I})}updateState({props:g,oldProps:I}){const e=g.elevationData!==I.elevationData;if(e){const{elevationData:A}=g,I=A&&(Array.isArray(A)||A.includes("{x}")&&A.includes("{y}"))||this.props.isTiled;this.setState({isTiled:I})}e||g.meshMaxError!==I.meshMaxError||g.elevationDecoder!==I.elevationDecoder||(g.bounds,I.bounds);this.state.isTiled,g.workerUrl&&A.log.removed("workerUrl","loadOptions.terrain.workerUrl")()}loadTerrain({elevationData:A,bounds:g,elevationDecoder:I,meshMaxError:e,signal:t}){if(!A)return null;let B=this.getLoadOptions();B={...B,_workerType:"test",terrain:{skirtHeight:this.state.isTiled?2*e:0,...B?.terrain,bounds:g,meshMaxError:e,elevationDecoder:I}};const{fetch:i}=this.props;return i(A,{propName:"elevationData",layer:this,loadOptions:B,signal:t,loaders:[]})}async getTiledTerrainData(A){const{viewport:g}=this.context;let I=[0,0],e=[0,0];if(g.isGeospatial){const t=A.bbox;I=g.projectFlat([t.west,t.south]),e=g.projectFlat([t.east,t.north])}else{const g=A.bbox;I=[g.left,g.bottom],e=[g.right,g.top]}const t=[I[0],I[1],e[0],e[1]],B=await this.state.terrainCogTiles.getTile(A.index.x,A.index.y,A.index.z,t,this.props.meshMaxError);return Promise.all([B,null])}renderSubLayers(g){const I=this.getSubLayerClass("mesh",Q.SimpleMeshLayer),{color:e,wireframe:t,material:B}=this.props,{data:i}=g;if(!i)return null;const[C]=i;return new I({...g,tileSize:256},{data:Wg,mesh:C,_instanced:!1,coordinateSystem:A.COORDINATE_SYSTEM.CARTESIAN,getColor:e,wireframe:t,material:B})}onViewportLoad(A){if(!A)return;const{zRange:g}=this.state,I=A.map(A=>A.content).filter(A=>A&&A[0]).map(A=>{const g=A[0]?.header?.boundingBox;return g?.map(A=>A[2])});if(0===I.length)return;const e=Math.min(...I.map(A=>A[0])),t=Math.max(...I.map(A=>A[1]));(!g||e<g[0]||t>g[1])&&this.setState({zRange:[Number.isFinite(e)?e:0,Number.isFinite(t)?t:0]})}renderLayers(){const{elevationData:A,meshMaxError:I,elevationDecoder:e,tileSize:t,extent:B,maxRequests:i,onTileLoad:C,onTileUnload:Q,onTileError:E,maxCacheSize:s,maxCacheByteSize:a,refinementStrategy:o}=this.props;if(this.state.isTiled&&this.state.initialized)return new g.TileLayer(this.getSubLayerProps({id:"tiles"}),{getTileData:this.getTiledTerrainData.bind(this),renderSubLayers:this.renderSubLayers.bind(this),updateTriggers:{getTileData:{elevationData:(r=A,Array.isArray(r)?r.join(";"):r||""),meshMaxError:I,elevationDecoder:e}},onViewportLoad:this.onViewportLoad.bind(this),zRange:this.state.zRange||null,tileSize:t,minZoom:this.state.minZoom,maxZoom:this.state.maxZoom,extent:B,maxRequests:i,onTileLoad:C,onTileUnload:Q,onTileError:E,maxCacheSize:s,maxCacheByteSize:a,refinementStrategy:o});var r}}var AI=Object.freeze({__proto__:null,default:class extends Ng{decodeBlock(A){return A}}});function gI(A,g){for(let I=g.length-1;I>=0;I--)A.push(g[I]);return A}function II(A){const g=new Uint16Array(4093),I=new Uint8Array(4093);for(let A=0;A<=257;A++)g[A]=4096,I[A]=A;let e=258,t=9,B=0;function i(){e=258,t=9}function C(A){const g=function(A,g,I){const e=g%8,t=Math.floor(g/8),B=8-e,i=g+I-8*(t+1);let C=8*(t+2)-(g+I);const Q=8*(t+2)-g;if(C=Math.max(0,C),t>=A.length)return console.warn("ran off the end of the buffer before finding EOI_CODE (end on input code)"),257;let E=A[t]&2**(8-e)-1;E<<=I-B;let s=E;if(t+1<A.length){let g=A[t+1]>>>C;g<<=Math.max(0,I-Q),s+=g}if(i>8&&t+2<A.length){const e=8*(t+3)-(g+I);s+=A[t+2]>>>e}return s}(A,B,t);return B+=t,g}function Q(A,t){return I[e]=t,g[e]=A,e++,e-1}function E(A){const e=[];for(let t=A;4096!==t;t=g[t])e.push(I[t]);return e}const s=[];i();const a=new Uint8Array(A);let o,r=C(a);for(;257!==r;){if(256===r){for(i(),r=C(a);256===r;)r=C(a);if(257===r)break;if(r>256)throw new Error(`corrupted code at scanline ${r}`);gI(s,E(r)),o=r}else if(r<e){const A=E(r);gI(s,A),Q(o,A[A.length-1]),o=r}else{const A=E(o);if(!A)throw new Error(`Bogus entry. Not in dictionary, ${o} / ${e}, position: ${B}`);gI(s,A),s.push(A[A.length-1]),Q(o,A[A.length-1]),o=r}e+1>=2**t&&(12===t?o=void 0:t++),r=C(a)}return new Uint8Array(s)}var eI=Object.freeze({__proto__:null,default:class extends Ng{decodeBlock(A){return II(A).buffer}}});const tI=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),BI=4017,iI=799,CI=3406,QI=2276,EI=1567,sI=3784,aI=5793,oI=2896;function rI(A,g){let I=0;const e=[];let t=16;for(;t>0&&!A[t-1];)--t;e.push({children:[],index:0});let B,i=e[0];for(let C=0;C<t;C++){for(let t=0;t<A[C];t++){if(i=e.pop(),!i)throw new Error("buildHuffmanTable: codeLength mismatch");for(i.children[i.index]=g[I];i.index>0;)if(i=e.pop(),!i)throw new Error("buildHuffmanTable: codeLength mismatch");for(i.index++,e.push(i);e.length<=C;)e.push(B={children:[],index:0}),i.children[i.index]=B.children,i=B;I++}C+1<t&&(e.push(B={children:[],index:0}),i.children[i.index]=B.children,i=B)}return e[0].children}function nI(A,g,I,e,t,B,i,C,Q){const{mcusPerLine:E,progressive:s}=I,a=g;let o=g,r=0,n=0;function h(){if(n>0)return n--,r>>n&1;if(r=A[o++],255===r){const g=A[o++];if(g)throw new Error(`unexpected marker: ${(r<<8|g).toString(16)}`)}return n=7,r>>>7}function l(A){let g,I=A;for(;null!==(g=h());){if(I=I[g],"number"==typeof I)return I;if("object"!=typeof I)throw new Error("invalid huffman sequence")}return null}function c(A){let g=A,I=0;for(;g>0;){const A=h();if(null===A)return;I=I<<1|A,--g}return I}function w(A){const g=c(A);if(void 0!==g)return g>=1<<A-1?g:g+(-1<<A)+1}let D=0;let d,y=0;function f(A,g,I,e,t){const B=I%E,i=(I/E|0)*A.v+e,C=B*A.h+t;g(A,A.blocks[i][C])}function u(A,g,I){const e=I/A.blocksPerLine|0,t=I%A.blocksPerLine;g(A,A.blocks[e][t])}const S=e.length;let G,N,F,k,R,L;L=s?0===B?0===C?function(A,g){const I=l(A.huffmanTableDC),e=w(I);if(void 0===e)throw new Error("Unexpected end of data in DC coefficient decoding");const t=0===I?0:e<<Q;A.pred+=t,g[0]=A.pred}:function(A,g){g[0]|=h()<<Q}:0===C?function(A,g){if(D>0)return void D--;let I=B;const e=i;for(;I<=e;){const e=l(A.huffmanTableAC);if(null===e)throw new Error("Unexpected end of data in AC coefficient decoding");const t=15&e,B=e>>4;if(0===t){if(B<15){const A=c(B);if(void 0===A)throw new Error("Unexpected end of data in AC coefficient decoding");D=A+(1<<B)-1;break}I+=16}else{I+=B;const A=tI[I],e=w(t);if(void 0===e)throw new Error("Unexpected end of data in AC coefficient decoding");g[A]=e*(1<<Q),I++}}}:function(A,g){let I=B;const e=i;let t=0;for(;I<=e;){const e=tI[I],B=g[e]<0?-1:1;switch(y){case 0:{const g=l(A.huffmanTableAC);if(null===g)throw new Error("Unexpected end of data in AC coefficient decoding");const I=15&g;if(t=g>>4,0===I)if(t<15){const A=c(t);if(void 0===A)throw new Error("Unexpected end of data in AC coefficient decoding");D=A+(1<<t),y=4}else t=16,y=1;else{if(1!==I)throw new Error("invalid ACn encoding");d=w(I),y=t?2:3}continue}case 1:case 2:g[e]?g[e]+=(h()<<Q)*B:(t--,0===t&&(y=2===y?3:0));break;case 3:g[e]?g[e]+=(h()<<Q)*B:(g[e]=d<<Q,y=0);break;case 4:g[e]&&(g[e]+=(h()<<Q)*B)}I++}4===y&&(D--,0===D&&(y=0))}:function(A,g){const I=l(A.huffmanTableDC),e=0===I?0:w(I);A.pred+=e,g[0]=A.pred;let t=1;for(;t<64;){const I=l(A.huffmanTableAC);if(null===I)throw new Error("Unexpected end of data in AC coefficient decoding");const e=15&I,B=I>>4;if(0===e){if(B<15)break;t+=16}else t+=B,g[tI[t]]=w(e),t++}};let U,m,p=0;m=1===S?e[0].blocksPerLine*e[0].blocksPerColumn:E*I.mcusPerColumn;const Y=t||m;for(;p<m;){for(N=0;N<S;N++)e[N].pred=0;if(D=0,1===S)for(G=e[0],R=0;R<Y;R++)u(G,L,p),p++;else for(R=0;R<Y;R++){for(N=0;N<S;N++){G=e[N];const{h:A,v:g}=G;for(F=0;F<g;F++)for(k=0;k<A;k++)f(G,L,p,F,k)}if(p++,p===m)break}if(n=0,U=A[o]<<8|A[o+1],U<65280)throw new Error("marker was not found");if(!(U>=65488&&U<=65495))break;o+=2}return o-a}function hI(A,g){const I=[],{blocksPerLine:e,blocksPerColumn:t}=g,B=e<<3,i=new Int32Array(64),C=new Uint8Array(64);function Q(A,I,e){const t=g.quantizationTable;let B,i,C,Q,E,s,a,o,r;const n=e;let h;for(h=0;h<64;h++)n[h]=A[h]*t[h];for(h=0;h<8;++h){const A=8*h;0!==n[1+A]||0!==n[2+A]||0!==n[3+A]||0!==n[4+A]||0!==n[5+A]||0!==n[6+A]||0!==n[7+A]?(B=aI*n[0+A]+128>>8,i=aI*n[4+A]+128>>8,C=n[2+A],Q=n[6+A],E=oI*(n[1+A]-n[7+A])+128>>8,o=oI*(n[1+A]+n[7+A])+128>>8,s=n[3+A]<<4,a=n[5+A]<<4,r=B-i+1>>1,B=B+i+1>>1,i=r,r=C*sI+Q*EI+128>>8,C=C*EI-Q*sI+128>>8,Q=r,r=E-a+1>>1,E=E+a+1>>1,a=r,r=o+s+1>>1,s=o-s+1>>1,o=r,r=B-Q+1>>1,B=B+Q+1>>1,Q=r,r=i-C+1>>1,i=i+C+1>>1,C=r,r=E*QI+o*CI+2048>>12,E=E*CI-o*QI+2048>>12,o=r,r=s*iI+a*BI+2048>>12,s=s*BI-a*iI+2048>>12,a=r,n[0+A]=B+o,n[7+A]=B-o,n[1+A]=i+a,n[6+A]=i-a,n[2+A]=C+s,n[5+A]=C-s,n[3+A]=Q+E,n[4+A]=Q-E):(r=aI*n[0+A]+512>>10,n[0+A]=r,n[1+A]=r,n[2+A]=r,n[3+A]=r,n[4+A]=r,n[5+A]=r,n[6+A]=r,n[7+A]=r)}for(h=0;h<8;++h){const A=h;0!==n[8+A]||0!==n[16+A]||0!==n[24+A]||0!==n[32+A]||0!==n[40+A]||0!==n[48+A]||0!==n[56+A]?(B=aI*n[0+A]+2048>>12,i=aI*n[32+A]+2048>>12,C=n[16+A],Q=n[48+A],E=oI*(n[8+A]-n[56+A])+2048>>12,o=oI*(n[8+A]+n[56+A])+2048>>12,s=n[24+A],a=n[40+A],r=B-i+1>>1,B=B+i+1>>1,i=r,r=C*sI+Q*EI+2048>>12,C=C*EI-Q*sI+2048>>12,Q=r,r=E-a+1>>1,E=E+a+1>>1,a=r,r=o+s+1>>1,s=o-s+1>>1,o=r,r=B-Q+1>>1,B=B+Q+1>>1,Q=r,r=i-C+1>>1,i=i+C+1>>1,C=r,r=E*QI+o*CI+2048>>12,E=E*CI-o*QI+2048>>12,o=r,r=s*iI+a*BI+2048>>12,s=s*BI-a*iI+2048>>12,a=r,n[0+A]=B+o,n[56+A]=B-o,n[8+A]=i+a,n[48+A]=i-a,n[16+A]=C+s,n[40+A]=C-s,n[24+A]=Q+E,n[32+A]=Q-E):(r=aI*e[h+0]+8192>>14,n[0+A]=r,n[8+A]=r,n[16+A]=r,n[24+A]=r,n[32+A]=r,n[40+A]=r,n[48+A]=r,n[56+A]=r)}for(h=0;h<64;++h){const A=128+(n[h]+8>>4);I[h]=A<0?0:A>255?255:A}}for(let A=0;A<t;A++){const t=A<<3;for(let A=0;A<8;A++)I.push(new Uint8Array(B));for(let B=0;B<e;B++){Q(g.blocks[A][B],C,i);let e=0;const E=B<<3;for(let A=0;A<8;A++){const g=I[t+A];for(let A=0;A<8;A++)g[E+A]=C[e++]}}}return I}class lI{constructor(){this.jfif=null,this.adobe=null,this.quantizationTables=[],this.huffmanTablesAC=[],this.huffmanTablesDC=[],this.frames=[]}resetFrames(){this.frames=[]}parse(A){let g=0;function I(){const I=A[g]<<8|A[g+1];return g+=2,I}function e(){const e=I(),t=A.subarray(g,g+e-2);return g+=t.length,t}function t(A){let g,I,e=0,t=0;for(I in A.components)A.components.hasOwnProperty(I)&&(g=A.components[I],e<g.h&&(e=g.h),t<g.v&&(t=g.v));const B=Math.ceil(A.samplesPerLine/8/e),i=Math.ceil(A.scanLines/8/t);for(I in A.components)if(A.components.hasOwnProperty(I)){g=A.components[I];const C=Math.ceil(Math.ceil(A.samplesPerLine/8)*g.h/e),Q=Math.ceil(Math.ceil(A.scanLines/8)*g.v/t),E=B*g.h,s=i*g.v,a=[];for(let A=0;A<s;A++){const A=[];for(let g=0;g<E;g++)A.push(new Int32Array(64));a.push(A)}g.blocksPerLine=C,g.blocksPerColumn=Q,g.blocks=a}A.maxH=e,A.maxV=t,A.mcusPerLine=B,A.mcusPerColumn=i}let B=I();if(65496!==B)throw new Error("SOI not found");for(B=I();65497!==B;){switch(B){case 65280:break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:{const A=e();65504===B&&74===A[0]&&70===A[1]&&73===A[2]&&70===A[3]&&0===A[4]&&(this.jfif={version:{major:A[5],minor:A[6]},densityUnits:A[7],xDensity:A[8]<<8|A[9],yDensity:A[10]<<8|A[11],thumbWidth:A[12],thumbHeight:A[13],thumbData:A.subarray(14,14+3*A[12]*A[13])}),65518===B&&65===A[0]&&100===A[1]&&111===A[2]&&98===A[3]&&101===A[4]&&0===A[5]&&(this.adobe={version:A[6],flags0:A[7]<<8|A[8],flags1:A[9]<<8|A[10],transformCode:A[11]});break}case 65499:{const e=I()+g-2;for(;g<e;){const e=A[g++],t=new Int32Array(64);if(e>>4){if(e>>4!=1)throw new Error("DQT: invalid table spec");for(let A=0;A<64;A++){t[tI[A]]=I()}}else for(let I=0;I<64;I++){t[tI[I]]=A[g++]}this.quantizationTables[15&e]=t}break}case 65472:case 65473:case 65474:{I();const e={extended:65473===B,progressive:65474===B,precision:A[g++],scanLines:I(),samplesPerLine:I(),components:{},componentsOrder:[]},i=A[g++];let C;for(let I=0;I<i;I++){C=A[g];const I=A[g+1]>>4,t=15&A[g+1],B=A[g+2];e.componentsOrder.push(C),e.components[C]={h:I,v:t,quantizationIdx:B},g+=3}t(e),this.frames.push(e);break}case 65476:{const e=I();for(let I=2;I<e;){const e=A[g++],t=new Uint8Array(16);let B=0;for(let I=0;I<16;I++,g++)t[I]=A[g],B+=t[I];const i=new Uint8Array(B);for(let I=0;I<B;I++,g++)i[I]=A[g];I+=17+B,e>>4?this.huffmanTablesAC[15&e]=rI(t,i):this.huffmanTablesDC[15&e]=rI(t,i)}break}case 65501:I(),this.resetInterval=I();break;case 65498:{I();const e=A[g++],t=[],B=this.frames[0];for(let I=0;I<e;I++){const I=B.components[A[g++]],e=A[g++];I.huffmanTableDC=this.huffmanTablesDC[e>>4],I.huffmanTableAC=this.huffmanTablesAC[15&e],t.push(I)}const i=A[g++],C=A[g++],Q=A[g++],E=nI(A,g,B,t,this.resetInterval,i,C,Q>>4,15&Q);g+=E;break}case 65535:255!==A[g]&&g--;break;default:if(255===A[g-3]&&A[g-2]>=192&&A[g-2]<=254){g-=3;break}throw new Error(`unknown JPEG marker ${B.toString(16)}`)}B=I()}}getResult(){const{frames:A}=this;if(0===this.frames.length)throw new Error("no frames were decoded");this.frames.length>1&&console.warn("more than one frame is not supported");for(let A=0;A<this.frames.length;A++){const g=this.frames[A].components;for(const A of Object.keys(g))g[A].quantizationTable=this.quantizationTables[g[A].quantizationIdx],delete g[A].quantizationIdx}const g=A[0],{components:I,componentsOrder:e}=g,t=[],B=g.samplesPerLine,i=g.scanLines;for(let A=0;A<e.length;A++){const B=I[e[A]];t.push({lines:hI(0,B),scaleX:B.h/g.maxH,scaleY:B.v/g.maxV})}const C=new Uint8Array(B*i*t.length);let Q=0;for(let A=0;A<i;++A)for(let g=0;g<B;++g)for(let I=0;I<t.length;++I){const e=t[I];C[Q]=e.lines[0|A*e.scaleY][0|g*e.scaleX],++Q}return C}}var cI=Object.freeze({__proto__:null,default:class extends Ng{constructor(A){super(A),this.reader=new lI,A.JPEGTables&&this.reader.parse(A.JPEGTables)}decodeBlock(A){return this.reader.resetFrames(),this.reader.parse(new Uint8Array(A)),this.reader.getResult().buffer}}});
2
+ /*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */function wI(A){let g=A.length;for(;--g>=0;)A[g]=0}const DI=256,dI=286,yI=30,fI=15,uI=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]),SI=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]),GI=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),NI=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),FI=new Array(576);wI(FI);const kI=new Array(60);wI(kI);const RI=new Array(512);wI(RI);const LI=new Array(256);wI(LI);const UI=new Array(29);wI(UI);const mI=new Array(yI);function pI(A,g,I,e,t){this.static_tree=A,this.extra_bits=g,this.extra_base=I,this.elems=e,this.max_length=t,this.has_stree=A&&A.length}let YI,MI,KI;function bI(A,g){this.dyn_tree=A,this.max_code=0,this.stat_desc=g}wI(mI);const JI=A=>A<256?RI[A]:RI[256+(A>>>7)],HI=(A,g)=>{A.pending_buf[A.pending++]=255&g,A.pending_buf[A.pending++]=g>>>8&255},qI=(A,g,I)=>{A.bi_valid>16-I?(A.bi_buf|=g<<A.bi_valid&65535,HI(A,A.bi_buf),A.bi_buf=g>>16-A.bi_valid,A.bi_valid+=I-16):(A.bi_buf|=g<<A.bi_valid&65535,A.bi_valid+=I)},xI=(A,g,I)=>{qI(A,I[2*g],I[2*g+1])},_I=(A,g)=>{let I=0;do{I|=1&A,A>>>=1,I<<=1}while(--g>0);return I>>>1},TI=(A,g,I)=>{const e=new Array(16);let t,B,i=0;for(t=1;t<=fI;t++)i=i+I[t-1]<<1,e[t]=i;for(B=0;B<=g;B++){let g=A[2*B+1];0!==g&&(A[2*B]=_I(e[g]++,g))}},OI=A=>{let g;for(g=0;g<dI;g++)A.dyn_ltree[2*g]=0;for(g=0;g<yI;g++)A.dyn_dtree[2*g]=0;for(g=0;g<19;g++)A.bl_tree[2*g]=0;A.dyn_ltree[512]=1,A.opt_len=A.static_len=0,A.sym_next=A.matches=0},vI=A=>{A.bi_valid>8?HI(A,A.bi_buf):A.bi_valid>0&&(A.pending_buf[A.pending++]=A.bi_buf),A.bi_buf=0,A.bi_valid=0},PI=(A,g,I,e)=>{const t=2*g,B=2*I;return A[t]<A[B]||A[t]===A[B]&&e[g]<=e[I]},ZI=(A,g,I)=>{const e=A.heap[I];let t=I<<1;for(;t<=A.heap_len&&(t<A.heap_len&&PI(g,A.heap[t+1],A.heap[t],A.depth)&&t++,!PI(g,e,A.heap[t],A.depth));)A.heap[I]=A.heap[t],I=t,t<<=1;A.heap[I]=e},VI=(A,g,I)=>{let e,t,B,i,C=0;if(0!==A.sym_next)do{e=255&A.pending_buf[A.sym_buf+C++],e+=(255&A.pending_buf[A.sym_buf+C++])<<8,t=A.pending_buf[A.sym_buf+C++],0===e?xI(A,t,g):(B=LI[t],xI(A,B+DI+1,g),i=uI[B],0!==i&&(t-=UI[B],qI(A,t,i)),e--,B=JI(e),xI(A,B,I),i=SI[B],0!==i&&(e-=mI[B],qI(A,e,i)))}while(C<A.sym_next);xI(A,256,g)},zI=(A,g)=>{const I=g.dyn_tree,e=g.stat_desc.static_tree,t=g.stat_desc.has_stree,B=g.stat_desc.elems;let i,C,Q,E=-1;for(A.heap_len=0,A.heap_max=573,i=0;i<B;i++)0!==I[2*i]?(A.heap[++A.heap_len]=E=i,A.depth[i]=0):I[2*i+1]=0;for(;A.heap_len<2;)Q=A.heap[++A.heap_len]=E<2?++E:0,I[2*Q]=1,A.depth[Q]=0,A.opt_len--,t&&(A.static_len-=e[2*Q+1]);for(g.max_code=E,i=A.heap_len>>1;i>=1;i--)ZI(A,I,i);Q=B;do{i=A.heap[1],A.heap[1]=A.heap[A.heap_len--],ZI(A,I,1),C=A.heap[1],A.heap[--A.heap_max]=i,A.heap[--A.heap_max]=C,I[2*Q]=I[2*i]+I[2*C],A.depth[Q]=(A.depth[i]>=A.depth[C]?A.depth[i]:A.depth[C])+1,I[2*i+1]=I[2*C+1]=Q,A.heap[1]=Q++,ZI(A,I,1)}while(A.heap_len>=2);A.heap[--A.heap_max]=A.heap[1],((A,g)=>{const I=g.dyn_tree,e=g.max_code,t=g.stat_desc.static_tree,B=g.stat_desc.has_stree,i=g.stat_desc.extra_bits,C=g.stat_desc.extra_base,Q=g.stat_desc.max_length;let E,s,a,o,r,n,h=0;for(o=0;o<=fI;o++)A.bl_count[o]=0;for(I[2*A.heap[A.heap_max]+1]=0,E=A.heap_max+1;E<573;E++)s=A.heap[E],o=I[2*I[2*s+1]+1]+1,o>Q&&(o=Q,h++),I[2*s+1]=o,s>e||(A.bl_count[o]++,r=0,s>=C&&(r=i[s-C]),n=I[2*s],A.opt_len+=n*(o+r),B&&(A.static_len+=n*(t[2*s+1]+r)));if(0!==h){do{for(o=Q-1;0===A.bl_count[o];)o--;A.bl_count[o]--,A.bl_count[o+1]+=2,A.bl_count[Q]--,h-=2}while(h>0);for(o=Q;0!==o;o--)for(s=A.bl_count[o];0!==s;)a=A.heap[--E],a>e||(I[2*a+1]!==o&&(A.opt_len+=(o-I[2*a+1])*I[2*a],I[2*a+1]=o),s--)}})(A,g),TI(I,E,A.bl_count)},jI=(A,g,I)=>{let e,t,B=-1,i=g[1],C=0,Q=7,E=4;for(0===i&&(Q=138,E=3),g[2*(I+1)+1]=65535,e=0;e<=I;e++)t=i,i=g[2*(e+1)+1],++C<Q&&t===i||(C<E?A.bl_tree[2*t]+=C:0!==t?(t!==B&&A.bl_tree[2*t]++,A.bl_tree[32]++):C<=10?A.bl_tree[34]++:A.bl_tree[36]++,C=0,B=t,0===i?(Q=138,E=3):t===i?(Q=6,E=3):(Q=7,E=4))},WI=(A,g,I)=>{let e,t,B=-1,i=g[1],C=0,Q=7,E=4;for(0===i&&(Q=138,E=3),e=0;e<=I;e++)if(t=i,i=g[2*(e+1)+1],!(++C<Q&&t===i)){if(C<E)do{xI(A,t,A.bl_tree)}while(0!==--C);else 0!==t?(t!==B&&(xI(A,t,A.bl_tree),C--),xI(A,16,A.bl_tree),qI(A,C-3,2)):C<=10?(xI(A,17,A.bl_tree),qI(A,C-3,3)):(xI(A,18,A.bl_tree),qI(A,C-11,7));C=0,B=t,0===i?(Q=138,E=3):t===i?(Q=6,E=3):(Q=7,E=4)}};let XI=!1;const $I=(A,g,I,e)=>{qI(A,0+(e?1:0),3),vI(A),HI(A,I),HI(A,~I),I&&A.pending_buf.set(A.window.subarray(g,g+I),A.pending),A.pending+=I};var Ae=(A,g,I,e)=>{let t,B,i=0;A.level>0?(2===A.strm.data_type&&(A.strm.data_type=(A=>{let g,I=4093624447;for(g=0;g<=31;g++,I>>>=1)if(1&I&&0!==A.dyn_ltree[2*g])return 0;if(0!==A.dyn_ltree[18]||0!==A.dyn_ltree[20]||0!==A.dyn_ltree[26])return 1;for(g=32;g<DI;g++)if(0!==A.dyn_ltree[2*g])return 1;return 0})(A)),zI(A,A.l_desc),zI(A,A.d_desc),i=(A=>{let g;for(jI(A,A.dyn_ltree,A.l_desc.max_code),jI(A,A.dyn_dtree,A.d_desc.max_code),zI(A,A.bl_desc),g=18;g>=3&&0===A.bl_tree[2*NI[g]+1];g--);return A.opt_len+=3*(g+1)+5+5+4,g})(A),t=A.opt_len+3+7>>>3,B=A.static_len+3+7>>>3,B<=t&&(t=B)):t=B=I+5,I+4<=t&&-1!==g?$I(A,g,I,e):4===A.strategy||B===t?(qI(A,2+(e?1:0),3),VI(A,FI,kI)):(qI(A,4+(e?1:0),3),((A,g,I,e)=>{let t;for(qI(A,g-257,5),qI(A,I-1,5),qI(A,e-4,4),t=0;t<e;t++)qI(A,A.bl_tree[2*NI[t]+1],3);WI(A,A.dyn_ltree,g-1),WI(A,A.dyn_dtree,I-1)})(A,A.l_desc.max_code+1,A.d_desc.max_code+1,i+1),VI(A,A.dyn_ltree,A.dyn_dtree)),OI(A),e&&vI(A)},ge={_tr_init:A=>{XI||((()=>{let A,g,I,e,t;const B=new Array(16);for(I=0,e=0;e<28;e++)for(UI[e]=I,A=0;A<1<<uI[e];A++)LI[I++]=e;for(LI[I-1]=e,t=0,e=0;e<16;e++)for(mI[e]=t,A=0;A<1<<SI[e];A++)RI[t++]=e;for(t>>=7;e<yI;e++)for(mI[e]=t<<7,A=0;A<1<<SI[e]-7;A++)RI[256+t++]=e;for(g=0;g<=fI;g++)B[g]=0;for(A=0;A<=143;)FI[2*A+1]=8,A++,B[8]++;for(;A<=255;)FI[2*A+1]=9,A++,B[9]++;for(;A<=279;)FI[2*A+1]=7,A++,B[7]++;for(;A<=287;)FI[2*A+1]=8,A++,B[8]++;for(TI(FI,287,B),A=0;A<yI;A++)kI[2*A+1]=5,kI[2*A]=_I(A,5);YI=new pI(FI,uI,257,dI,fI),MI=new pI(kI,SI,0,yI,fI),KI=new pI(new Array(0),GI,0,19,7)})(),XI=!0),A.l_desc=new bI(A.dyn_ltree,YI),A.d_desc=new bI(A.dyn_dtree,MI),A.bl_desc=new bI(A.bl_tree,KI),A.bi_buf=0,A.bi_valid=0,OI(A)},_tr_stored_block:$I,_tr_flush_block:Ae,_tr_tally:(A,g,I)=>(A.pending_buf[A.sym_buf+A.sym_next++]=g,A.pending_buf[A.sym_buf+A.sym_next++]=g>>8,A.pending_buf[A.sym_buf+A.sym_next++]=I,0===g?A.dyn_ltree[2*I]++:(A.matches++,g--,A.dyn_ltree[2*(LI[I]+DI+1)]++,A.dyn_dtree[2*JI(g)]++),A.sym_next===A.sym_end),_tr_align:A=>{qI(A,2,3),xI(A,256,FI),(A=>{16===A.bi_valid?(HI(A,A.bi_buf),A.bi_buf=0,A.bi_valid=0):A.bi_valid>=8&&(A.pending_buf[A.pending++]=255&A.bi_buf,A.bi_buf>>=8,A.bi_valid-=8)})(A)}};var Ie=(A,g,I,e)=>{let t=65535&A,B=A>>>16&65535,i=0;for(;0!==I;){i=I>2e3?2e3:I,I-=i;do{t=t+g[e++]|0,B=B+t|0}while(--i);t%=65521,B%=65521}return t|B<<16};const ee=new Uint32Array((()=>{let A,g=[];for(var I=0;I<256;I++){A=I;for(var e=0;e<8;e++)A=1&A?3988292384^A>>>1:A>>>1;g[I]=A}return g})());var te=(A,g,I,e)=>{const t=ee,B=e+I;A^=-1;for(let I=e;I<B;I++)A=A>>>8^t[255&(A^g[I])];return-1^A},Be={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"},ie={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:Ce,_tr_stored_block:Qe,_tr_flush_block:Ee,_tr_tally:se,_tr_align:ae}=ge,{Z_NO_FLUSH:oe,Z_PARTIAL_FLUSH:re,Z_FULL_FLUSH:ne,Z_FINISH:he,Z_BLOCK:le,Z_OK:ce,Z_STREAM_END:we,Z_STREAM_ERROR:De,Z_DATA_ERROR:de,Z_BUF_ERROR:ye,Z_DEFAULT_COMPRESSION:fe,Z_FILTERED:ue,Z_HUFFMAN_ONLY:Se,Z_RLE:Ge,Z_FIXED:Ne,Z_DEFAULT_STRATEGY:Fe,Z_UNKNOWN:ke,Z_DEFLATED:Re}=ie,Le=258,Ue=262,me=42,pe=113,Ye=666,Me=(A,g)=>(A.msg=Be[g],g),Ke=A=>2*A-(A>4?9:0),be=A=>{let g=A.length;for(;--g>=0;)A[g]=0},Je=A=>{let g,I,e,t=A.w_size;g=A.hash_size,e=g;do{I=A.head[--e],A.head[e]=I>=t?I-t:0}while(--g);g=t,e=g;do{I=A.prev[--e],A.prev[e]=I>=t?I-t:0}while(--g)};let He=(A,g,I)=>(g<<A.hash_shift^I)&A.hash_mask;const qe=A=>{const g=A.state;let I=g.pending;I>A.avail_out&&(I=A.avail_out),0!==I&&(A.output.set(g.pending_buf.subarray(g.pending_out,g.pending_out+I),A.next_out),A.next_out+=I,g.pending_out+=I,A.total_out+=I,A.avail_out-=I,g.pending-=I,0===g.pending&&(g.pending_out=0))},xe=(A,g)=>{Ee(A,A.block_start>=0?A.block_start:-1,A.strstart-A.block_start,g),A.block_start=A.strstart,qe(A.strm)},_e=(A,g)=>{A.pending_buf[A.pending++]=g},Te=(A,g)=>{A.pending_buf[A.pending++]=g>>>8&255,A.pending_buf[A.pending++]=255&g},Oe=(A,g,I,e)=>{let t=A.avail_in;return t>e&&(t=e),0===t?0:(A.avail_in-=t,g.set(A.input.subarray(A.next_in,A.next_in+t),I),1===A.state.wrap?A.adler=Ie(A.adler,g,t,I):2===A.state.wrap&&(A.adler=te(A.adler,g,t,I)),A.next_in+=t,A.total_in+=t,t)},ve=(A,g)=>{let I,e,t=A.max_chain_length,B=A.strstart,i=A.prev_length,C=A.nice_match;const Q=A.strstart>A.w_size-Ue?A.strstart-(A.w_size-Ue):0,E=A.window,s=A.w_mask,a=A.prev,o=A.strstart+Le;let r=E[B+i-1],n=E[B+i];A.prev_length>=A.good_match&&(t>>=2),C>A.lookahead&&(C=A.lookahead);do{if(I=g,E[I+i]===n&&E[I+i-1]===r&&E[I]===E[B]&&E[++I]===E[B+1]){B+=2,I++;do{}while(E[++B]===E[++I]&&E[++B]===E[++I]&&E[++B]===E[++I]&&E[++B]===E[++I]&&E[++B]===E[++I]&&E[++B]===E[++I]&&E[++B]===E[++I]&&E[++B]===E[++I]&&B<o);if(e=Le-(o-B),B=o-Le,e>i){if(A.match_start=g,i=e,e>=C)break;r=E[B+i-1],n=E[B+i]}}}while((g=a[g&s])>Q&&0!==--t);return i<=A.lookahead?i:A.lookahead},Pe=A=>{const g=A.w_size;let I,e,t;do{if(e=A.window_size-A.lookahead-A.strstart,A.strstart>=g+(g-Ue)&&(A.window.set(A.window.subarray(g,g+g-e),0),A.match_start-=g,A.strstart-=g,A.block_start-=g,A.insert>A.strstart&&(A.insert=A.strstart),Je(A),e+=g),0===A.strm.avail_in)break;if(I=Oe(A.strm,A.window,A.strstart+A.lookahead,e),A.lookahead+=I,A.lookahead+A.insert>=3)for(t=A.strstart-A.insert,A.ins_h=A.window[t],A.ins_h=He(A,A.ins_h,A.window[t+1]);A.insert&&(A.ins_h=He(A,A.ins_h,A.window[t+3-1]),A.prev[t&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=t,t++,A.insert--,!(A.lookahead+A.insert<3)););}while(A.lookahead<Ue&&0!==A.strm.avail_in)},Ze=(A,g)=>{let I,e,t,B=A.pending_buf_size-5>A.w_size?A.w_size:A.pending_buf_size-5,i=0,C=A.strm.avail_in;do{if(I=65535,t=A.bi_valid+42>>3,A.strm.avail_out<t)break;if(t=A.strm.avail_out-t,e=A.strstart-A.block_start,I>e+A.strm.avail_in&&(I=e+A.strm.avail_in),I>t&&(I=t),I<B&&(0===I&&g!==he||g===oe||I!==e+A.strm.avail_in))break;i=g===he&&I===e+A.strm.avail_in?1:0,Qe(A,0,0,i),A.pending_buf[A.pending-4]=I,A.pending_buf[A.pending-3]=I>>8,A.pending_buf[A.pending-2]=~I,A.pending_buf[A.pending-1]=~I>>8,qe(A.strm),e&&(e>I&&(e=I),A.strm.output.set(A.window.subarray(A.block_start,A.block_start+e),A.strm.next_out),A.strm.next_out+=e,A.strm.avail_out-=e,A.strm.total_out+=e,A.block_start+=e,I-=e),I&&(Oe(A.strm,A.strm.output,A.strm.next_out,I),A.strm.next_out+=I,A.strm.avail_out-=I,A.strm.total_out+=I)}while(0===i);return C-=A.strm.avail_in,C&&(C>=A.w_size?(A.matches=2,A.window.set(A.strm.input.subarray(A.strm.next_in-A.w_size,A.strm.next_in),0),A.strstart=A.w_size,A.insert=A.strstart):(A.window_size-A.strstart<=C&&(A.strstart-=A.w_size,A.window.set(A.window.subarray(A.w_size,A.w_size+A.strstart),0),A.matches<2&&A.matches++,A.insert>A.strstart&&(A.insert=A.strstart)),A.window.set(A.strm.input.subarray(A.strm.next_in-C,A.strm.next_in),A.strstart),A.strstart+=C,A.insert+=C>A.w_size-A.insert?A.w_size-A.insert:C),A.block_start=A.strstart),A.high_water<A.strstart&&(A.high_water=A.strstart),i?4:g!==oe&&g!==he&&0===A.strm.avail_in&&A.strstart===A.block_start?2:(t=A.window_size-A.strstart,A.strm.avail_in>t&&A.block_start>=A.w_size&&(A.block_start-=A.w_size,A.strstart-=A.w_size,A.window.set(A.window.subarray(A.w_size,A.w_size+A.strstart),0),A.matches<2&&A.matches++,t+=A.w_size,A.insert>A.strstart&&(A.insert=A.strstart)),t>A.strm.avail_in&&(t=A.strm.avail_in),t&&(Oe(A.strm,A.window,A.strstart,t),A.strstart+=t,A.insert+=t>A.w_size-A.insert?A.w_size-A.insert:t),A.high_water<A.strstart&&(A.high_water=A.strstart),t=A.bi_valid+42>>3,t=A.pending_buf_size-t>65535?65535:A.pending_buf_size-t,B=t>A.w_size?A.w_size:t,e=A.strstart-A.block_start,(e>=B||(e||g===he)&&g!==oe&&0===A.strm.avail_in&&e<=t)&&(I=e>t?t:e,i=g===he&&0===A.strm.avail_in&&I===e?1:0,Qe(A,A.block_start,I,i),A.block_start+=I,qe(A.strm)),i?3:1)},Ve=(A,g)=>{let I,e;for(;;){if(A.lookahead<Ue){if(Pe(A),A.lookahead<Ue&&g===oe)return 1;if(0===A.lookahead)break}if(I=0,A.lookahead>=3&&(A.ins_h=He(A,A.ins_h,A.window[A.strstart+3-1]),I=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart),0!==I&&A.strstart-I<=A.w_size-Ue&&(A.match_length=ve(A,I)),A.match_length>=3)if(e=se(A,A.strstart-A.match_start,A.match_length-3),A.lookahead-=A.match_length,A.match_length<=A.max_lazy_match&&A.lookahead>=3){A.match_length--;do{A.strstart++,A.ins_h=He(A,A.ins_h,A.window[A.strstart+3-1]),I=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart}while(0!==--A.match_length);A.strstart++}else A.strstart+=A.match_length,A.match_length=0,A.ins_h=A.window[A.strstart],A.ins_h=He(A,A.ins_h,A.window[A.strstart+1]);else e=se(A,0,A.window[A.strstart]),A.lookahead--,A.strstart++;if(e&&(xe(A,!1),0===A.strm.avail_out))return 1}return A.insert=A.strstart<2?A.strstart:2,g===he?(xe(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(xe(A,!1),0===A.strm.avail_out)?1:2},ze=(A,g)=>{let I,e,t;for(;;){if(A.lookahead<Ue){if(Pe(A),A.lookahead<Ue&&g===oe)return 1;if(0===A.lookahead)break}if(I=0,A.lookahead>=3&&(A.ins_h=He(A,A.ins_h,A.window[A.strstart+3-1]),I=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart),A.prev_length=A.match_length,A.prev_match=A.match_start,A.match_length=2,0!==I&&A.prev_length<A.max_lazy_match&&A.strstart-I<=A.w_size-Ue&&(A.match_length=ve(A,I),A.match_length<=5&&(A.strategy===ue||3===A.match_length&&A.strstart-A.match_start>4096)&&(A.match_length=2)),A.prev_length>=3&&A.match_length<=A.prev_length){t=A.strstart+A.lookahead-3,e=se(A,A.strstart-1-A.prev_match,A.prev_length-3),A.lookahead-=A.prev_length-1,A.prev_length-=2;do{++A.strstart<=t&&(A.ins_h=He(A,A.ins_h,A.window[A.strstart+3-1]),I=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart)}while(0!==--A.prev_length);if(A.match_available=0,A.match_length=2,A.strstart++,e&&(xe(A,!1),0===A.strm.avail_out))return 1}else if(A.match_available){if(e=se(A,0,A.window[A.strstart-1]),e&&xe(A,!1),A.strstart++,A.lookahead--,0===A.strm.avail_out)return 1}else A.match_available=1,A.strstart++,A.lookahead--}return A.match_available&&(e=se(A,0,A.window[A.strstart-1]),A.match_available=0),A.insert=A.strstart<2?A.strstart:2,g===he?(xe(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(xe(A,!1),0===A.strm.avail_out)?1:2};function je(A,g,I,e,t){this.good_length=A,this.max_lazy=g,this.nice_length=I,this.max_chain=e,this.func=t}const We=[new je(0,0,0,0,Ze),new je(4,4,8,4,Ve),new je(4,5,16,8,Ve),new je(4,6,32,32,Ve),new je(4,4,16,16,ze),new je(8,16,32,32,ze),new je(8,16,128,128,ze),new je(8,32,128,256,ze),new je(32,128,258,1024,ze),new je(32,258,258,4096,ze)];function Xe(){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=Re,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),be(this.dyn_ltree),be(this.dyn_dtree),be(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),be(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),be(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 $e=A=>{if(!A)return 1;const g=A.state;return!g||g.strm!==A||g.status!==me&&57!==g.status&&69!==g.status&&73!==g.status&&91!==g.status&&103!==g.status&&g.status!==pe&&g.status!==Ye?1:0},At=A=>{if($e(A))return Me(A,De);A.total_in=A.total_out=0,A.data_type=ke;const g=A.state;return g.pending=0,g.pending_out=0,g.wrap<0&&(g.wrap=-g.wrap),g.status=2===g.wrap?57:g.wrap?me:pe,A.adler=2===g.wrap?0:1,g.last_flush=-2,Ce(g),ce},gt=A=>{const g=At(A);var I;return g===ce&&((I=A.state).window_size=2*I.w_size,be(I.head),I.max_lazy_match=We[I.level].max_lazy,I.good_match=We[I.level].good_length,I.nice_match=We[I.level].nice_length,I.max_chain_length=We[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),g},It=(A,g,I,e,t,B)=>{if(!A)return De;let i=1;if(g===fe&&(g=6),e<0?(i=0,e=-e):e>15&&(i=2,e-=16),t<1||t>9||I!==Re||e<8||e>15||g<0||g>9||B<0||B>Ne||8===e&&1!==i)return Me(A,De);8===e&&(e=9);const C=new Xe;return A.state=C,C.strm=A,C.status=me,C.wrap=i,C.gzhead=null,C.w_bits=e,C.w_size=1<<C.w_bits,C.w_mask=C.w_size-1,C.hash_bits=t+7,C.hash_size=1<<C.hash_bits,C.hash_mask=C.hash_size-1,C.hash_shift=~~((C.hash_bits+3-1)/3),C.window=new Uint8Array(2*C.w_size),C.head=new Uint16Array(C.hash_size),C.prev=new Uint16Array(C.w_size),C.lit_bufsize=1<<t+6,C.pending_buf_size=4*C.lit_bufsize,C.pending_buf=new Uint8Array(C.pending_buf_size),C.sym_buf=C.lit_bufsize,C.sym_end=3*(C.lit_bufsize-1),C.level=g,C.strategy=B,C.method=I,gt(A)};var et={deflateInit:(A,g)=>It(A,g,Re,15,8,Fe),deflateInit2:It,deflateReset:gt,deflateResetKeep:At,deflateSetHeader:(A,g)=>$e(A)||2!==A.state.wrap?De:(A.state.gzhead=g,ce),deflate:(A,g)=>{if($e(A)||g>le||g<0)return A?Me(A,De):De;const I=A.state;if(!A.output||0!==A.avail_in&&!A.input||I.status===Ye&&g!==he)return Me(A,0===A.avail_out?ye:De);const e=I.last_flush;if(I.last_flush=g,0!==I.pending){if(qe(A),0===A.avail_out)return I.last_flush=-1,ce}else if(0===A.avail_in&&Ke(g)<=Ke(e)&&g!==he)return Me(A,ye);if(I.status===Ye&&0!==A.avail_in)return Me(A,ye);if(I.status===me&&0===I.wrap&&(I.status=pe),I.status===me){let g=Re+(I.w_bits-8<<4)<<8,e=-1;if(e=I.strategy>=Se||I.level<2?0:I.level<6?1:6===I.level?2:3,g|=e<<6,0!==I.strstart&&(g|=32),g+=31-g%31,Te(I,g),0!==I.strstart&&(Te(I,A.adler>>>16),Te(I,65535&A.adler)),A.adler=1,I.status=pe,qe(A),0!==I.pending)return I.last_flush=-1,ce}if(57===I.status)if(A.adler=0,_e(I,31),_e(I,139),_e(I,8),I.gzhead)_e(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)),_e(I,255&I.gzhead.time),_e(I,I.gzhead.time>>8&255),_e(I,I.gzhead.time>>16&255),_e(I,I.gzhead.time>>24&255),_e(I,9===I.level?2:I.strategy>=Se||I.level<2?4:0),_e(I,255&I.gzhead.os),I.gzhead.extra&&I.gzhead.extra.length&&(_e(I,255&I.gzhead.extra.length),_e(I,I.gzhead.extra.length>>8&255)),I.gzhead.hcrc&&(A.adler=te(A.adler,I.pending_buf,I.pending,0)),I.gzindex=0,I.status=69;else if(_e(I,0),_e(I,0),_e(I,0),_e(I,0),_e(I,0),_e(I,9===I.level?2:I.strategy>=Se||I.level<2?4:0),_e(I,3),I.status=pe,qe(A),0!==I.pending)return I.last_flush=-1,ce;if(69===I.status){if(I.gzhead.extra){let g=I.pending,e=(65535&I.gzhead.extra.length)-I.gzindex;for(;I.pending+e>I.pending_buf_size;){let t=I.pending_buf_size-I.pending;if(I.pending_buf.set(I.gzhead.extra.subarray(I.gzindex,I.gzindex+t),I.pending),I.pending=I.pending_buf_size,I.gzhead.hcrc&&I.pending>g&&(A.adler=te(A.adler,I.pending_buf,I.pending-g,g)),I.gzindex+=t,qe(A),0!==I.pending)return I.last_flush=-1,ce;g=0,e-=t}let t=new Uint8Array(I.gzhead.extra);I.pending_buf.set(t.subarray(I.gzindex,I.gzindex+e),I.pending),I.pending+=e,I.gzhead.hcrc&&I.pending>g&&(A.adler=te(A.adler,I.pending_buf,I.pending-g,g)),I.gzindex=0}I.status=73}if(73===I.status){if(I.gzhead.name){let g,e=I.pending;do{if(I.pending===I.pending_buf_size){if(I.gzhead.hcrc&&I.pending>e&&(A.adler=te(A.adler,I.pending_buf,I.pending-e,e)),qe(A),0!==I.pending)return I.last_flush=-1,ce;e=0}g=I.gzindex<I.gzhead.name.length?255&I.gzhead.name.charCodeAt(I.gzindex++):0,_e(I,g)}while(0!==g);I.gzhead.hcrc&&I.pending>e&&(A.adler=te(A.adler,I.pending_buf,I.pending-e,e)),I.gzindex=0}I.status=91}if(91===I.status){if(I.gzhead.comment){let g,e=I.pending;do{if(I.pending===I.pending_buf_size){if(I.gzhead.hcrc&&I.pending>e&&(A.adler=te(A.adler,I.pending_buf,I.pending-e,e)),qe(A),0!==I.pending)return I.last_flush=-1,ce;e=0}g=I.gzindex<I.gzhead.comment.length?255&I.gzhead.comment.charCodeAt(I.gzindex++):0,_e(I,g)}while(0!==g);I.gzhead.hcrc&&I.pending>e&&(A.adler=te(A.adler,I.pending_buf,I.pending-e,e))}I.status=103}if(103===I.status){if(I.gzhead.hcrc){if(I.pending+2>I.pending_buf_size&&(qe(A),0!==I.pending))return I.last_flush=-1,ce;_e(I,255&A.adler),_e(I,A.adler>>8&255),A.adler=0}if(I.status=pe,qe(A),0!==I.pending)return I.last_flush=-1,ce}if(0!==A.avail_in||0!==I.lookahead||g!==oe&&I.status!==Ye){let e=0===I.level?Ze(I,g):I.strategy===Se?((A,g)=>{let I;for(;;){if(0===A.lookahead&&(Pe(A),0===A.lookahead)){if(g===oe)return 1;break}if(A.match_length=0,I=se(A,0,A.window[A.strstart]),A.lookahead--,A.strstart++,I&&(xe(A,!1),0===A.strm.avail_out))return 1}return A.insert=0,g===he?(xe(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(xe(A,!1),0===A.strm.avail_out)?1:2})(I,g):I.strategy===Ge?((A,g)=>{let I,e,t,B;const i=A.window;for(;;){if(A.lookahead<=Le){if(Pe(A),A.lookahead<=Le&&g===oe)return 1;if(0===A.lookahead)break}if(A.match_length=0,A.lookahead>=3&&A.strstart>0&&(t=A.strstart-1,e=i[t],e===i[++t]&&e===i[++t]&&e===i[++t])){B=A.strstart+Le;do{}while(e===i[++t]&&e===i[++t]&&e===i[++t]&&e===i[++t]&&e===i[++t]&&e===i[++t]&&e===i[++t]&&e===i[++t]&&t<B);A.match_length=Le-(B-t),A.match_length>A.lookahead&&(A.match_length=A.lookahead)}if(A.match_length>=3?(I=se(A,1,A.match_length-3),A.lookahead-=A.match_length,A.strstart+=A.match_length,A.match_length=0):(I=se(A,0,A.window[A.strstart]),A.lookahead--,A.strstart++),I&&(xe(A,!1),0===A.strm.avail_out))return 1}return A.insert=0,g===he?(xe(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(xe(A,!1),0===A.strm.avail_out)?1:2})(I,g):We[I.level].func(I,g);if(3!==e&&4!==e||(I.status=Ye),1===e||3===e)return 0===A.avail_out&&(I.last_flush=-1),ce;if(2===e&&(g===re?ae(I):g!==le&&(Qe(I,0,0,!1),g===ne&&(be(I.head),0===I.lookahead&&(I.strstart=0,I.block_start=0,I.insert=0))),qe(A),0===A.avail_out))return I.last_flush=-1,ce}return g!==he?ce:I.wrap<=0?we:(2===I.wrap?(_e(I,255&A.adler),_e(I,A.adler>>8&255),_e(I,A.adler>>16&255),_e(I,A.adler>>24&255),_e(I,255&A.total_in),_e(I,A.total_in>>8&255),_e(I,A.total_in>>16&255),_e(I,A.total_in>>24&255)):(Te(I,A.adler>>>16),Te(I,65535&A.adler)),qe(A),I.wrap>0&&(I.wrap=-I.wrap),0!==I.pending?ce:we)},deflateEnd:A=>{if($e(A))return De;const g=A.state.status;return A.state=null,g===pe?Me(A,de):ce},deflateSetDictionary:(A,g)=>{let I=g.length;if($e(A))return De;const e=A.state,t=e.wrap;if(2===t||1===t&&e.status!==me||e.lookahead)return De;if(1===t&&(A.adler=Ie(A.adler,g,I,0)),e.wrap=0,I>=e.w_size){0===t&&(be(e.head),e.strstart=0,e.block_start=0,e.insert=0);let A=new Uint8Array(e.w_size);A.set(g.subarray(I-e.w_size,I),0),g=A,I=e.w_size}const B=A.avail_in,i=A.next_in,C=A.input;for(A.avail_in=I,A.next_in=0,A.input=g,Pe(e);e.lookahead>=3;){let A=e.strstart,g=e.lookahead-2;do{e.ins_h=He(e,e.ins_h,e.window[A+3-1]),e.prev[A&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=A,A++}while(--g);e.strstart=A,e.lookahead=2,Pe(e)}return e.strstart+=e.lookahead,e.block_start=e.strstart,e.insert=e.lookahead,e.lookahead=0,e.match_length=e.prev_length=2,e.match_available=0,A.next_in=i,A.input=C,A.avail_in=B,e.wrap=t,ce},deflateInfo:"pako deflate (from Nodeca project)"};const tt=(A,g)=>Object.prototype.hasOwnProperty.call(A,g);var Bt=function(A){const g=Array.prototype.slice.call(arguments,1);for(;g.length;){const I=g.shift();if(I){if("object"!=typeof I)throw new TypeError(I+"must be non-object");for(const g in I)tt(I,g)&&(A[g]=I[g])}}return A},it=A=>{let g=0;for(let I=0,e=A.length;I<e;I++)g+=A[I].length;const I=new Uint8Array(g);for(let g=0,e=0,t=A.length;g<t;g++){let t=A[g];I.set(t,e),e+=t.length}return I};let Ct=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(A){Ct=!1}const Qt=new Uint8Array(256);for(let A=0;A<256;A++)Qt[A]=A>=252?6:A>=248?5:A>=240?4:A>=224?3:A>=192?2:1;Qt[254]=Qt[254]=1;var Et=A=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(A);let g,I,e,t,B,i=A.length,C=0;for(t=0;t<i;t++)I=A.charCodeAt(t),55296==(64512&I)&&t+1<i&&(e=A.charCodeAt(t+1),56320==(64512&e)&&(I=65536+(I-55296<<10)+(e-56320),t++)),C+=I<128?1:I<2048?2:I<65536?3:4;for(g=new Uint8Array(C),B=0,t=0;B<C;t++)I=A.charCodeAt(t),55296==(64512&I)&&t+1<i&&(e=A.charCodeAt(t+1),56320==(64512&e)&&(I=65536+(I-55296<<10)+(e-56320),t++)),I<128?g[B++]=I:I<2048?(g[B++]=192|I>>>6,g[B++]=128|63&I):I<65536?(g[B++]=224|I>>>12,g[B++]=128|I>>>6&63,g[B++]=128|63&I):(g[B++]=240|I>>>18,g[B++]=128|I>>>12&63,g[B++]=128|I>>>6&63,g[B++]=128|63&I);return g},st=(A,g)=>{const I=g||A.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(A.subarray(0,g));let e,t;const B=new Array(2*I);for(t=0,e=0;e<I;){let g=A[e++];if(g<128){B[t++]=g;continue}let i=Qt[g];if(i>4)B[t++]=65533,e+=i-1;else{for(g&=2===i?31:3===i?15:7;i>1&&e<I;)g=g<<6|63&A[e++],i--;i>1?B[t++]=65533:g<65536?B[t++]=g:(g-=65536,B[t++]=55296|g>>10&1023,B[t++]=56320|1023&g)}}return((A,g)=>{if(g<65534&&A.subarray&&Ct)return String.fromCharCode.apply(null,A.length===g?A:A.subarray(0,g));let I="";for(let e=0;e<g;e++)I+=String.fromCharCode(A[e]);return I})(B,t)},at=(A,g)=>{(g=g||A.length)>A.length&&(g=A.length);let I=g-1;for(;I>=0&&128==(192&A[I]);)I--;return I<0||0===I?g:I+Qt[A[I]]>g?I:g};var ot=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 rt=Object.prototype.toString,{Z_NO_FLUSH:nt,Z_SYNC_FLUSH:ht,Z_FULL_FLUSH:lt,Z_FINISH:ct,Z_OK:wt,Z_STREAM_END:Dt,Z_DEFAULT_COMPRESSION:dt,Z_DEFAULT_STRATEGY:yt,Z_DEFLATED:ft}=ie;function ut(A){this.options=Bt({level:dt,method:ft,chunkSize:16384,windowBits:15,memLevel:8,strategy:yt},A||{});let g=this.options;g.raw&&g.windowBits>0?g.windowBits=-g.windowBits:g.gzip&&g.windowBits>0&&g.windowBits<16&&(g.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new ot,this.strm.avail_out=0;let I=et.deflateInit2(this.strm,g.level,g.method,g.windowBits,g.memLevel,g.strategy);if(I!==wt)throw new Error(Be[I]);if(g.header&&et.deflateSetHeader(this.strm,g.header),g.dictionary){let A;if(A="string"==typeof g.dictionary?Et(g.dictionary):"[object ArrayBuffer]"===rt.call(g.dictionary)?new Uint8Array(g.dictionary):g.dictionary,I=et.deflateSetDictionary(this.strm,A),I!==wt)throw new Error(Be[I]);this._dict_set=!0}}ut.prototype.push=function(A,g){const I=this.strm,e=this.options.chunkSize;let t,B;if(this.ended)return!1;for(B=g===~~g?g:!0===g?ct:nt,"string"==typeof A?I.input=Et(A):"[object ArrayBuffer]"===rt.call(A)?I.input=new Uint8Array(A):I.input=A,I.next_in=0,I.avail_in=I.input.length;;)if(0===I.avail_out&&(I.output=new Uint8Array(e),I.next_out=0,I.avail_out=e),(B===ht||B===lt)&&I.avail_out<=6)this.onData(I.output.subarray(0,I.next_out)),I.avail_out=0;else{if(t=et.deflate(I,B),t===Dt)return I.next_out>0&&this.onData(I.output.subarray(0,I.next_out)),t=et.deflateEnd(this.strm),this.onEnd(t),this.ended=!0,t===wt;if(0!==I.avail_out){if(B>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},ut.prototype.onData=function(A){this.chunks.push(A)},ut.prototype.onEnd=function(A){A===wt&&(this.result=it(this.chunks)),this.chunks=[],this.err=A,this.msg=this.strm.msg};const St=16209;var Gt=function(A,g){let I,e,t,B,i,C,Q,E,s,a,o,r,n,h,l,c,w,D,d,y,f,u,S,G;const N=A.state;I=A.next_in,S=A.input,e=I+(A.avail_in-5),t=A.next_out,G=A.output,B=t-(g-A.avail_out),i=t+(A.avail_out-257),C=N.dmax,Q=N.wsize,E=N.whave,s=N.wnext,a=N.window,o=N.hold,r=N.bits,n=N.lencode,h=N.distcode,l=(1<<N.lenbits)-1,c=(1<<N.distbits)-1;A:do{r<15&&(o+=S[I++]<<r,r+=8,o+=S[I++]<<r,r+=8),w=n[o&l];g:for(;;){if(D=w>>>24,o>>>=D,r-=D,D=w>>>16&255,0===D)G[t++]=65535&w;else{if(!(16&D)){if(64&D){if(32&D){N.mode=16191;break A}A.msg="invalid literal/length code",N.mode=St;break A}w=n[(65535&w)+(o&(1<<D)-1)];continue g}for(d=65535&w,D&=15,D&&(r<D&&(o+=S[I++]<<r,r+=8),d+=o&(1<<D)-1,o>>>=D,r-=D),r<15&&(o+=S[I++]<<r,r+=8,o+=S[I++]<<r,r+=8),w=h[o&c];;){if(D=w>>>24,o>>>=D,r-=D,D=w>>>16&255,16&D){if(y=65535&w,D&=15,r<D&&(o+=S[I++]<<r,r+=8,r<D&&(o+=S[I++]<<r,r+=8)),y+=o&(1<<D)-1,y>C){A.msg="invalid distance too far back",N.mode=St;break A}if(o>>>=D,r-=D,D=t-B,y>D){if(D=y-D,D>E&&N.sane){A.msg="invalid distance too far back",N.mode=St;break A}if(f=0,u=a,0===s){if(f+=Q-D,D<d){d-=D;do{G[t++]=a[f++]}while(--D);f=t-y,u=G}}else if(s<D){if(f+=Q+s-D,D-=s,D<d){d-=D;do{G[t++]=a[f++]}while(--D);if(f=0,s<d){D=s,d-=D;do{G[t++]=a[f++]}while(--D);f=t-y,u=G}}}else if(f+=s-D,D<d){d-=D;do{G[t++]=a[f++]}while(--D);f=t-y,u=G}for(;d>2;)G[t++]=u[f++],G[t++]=u[f++],G[t++]=u[f++],d-=3;d&&(G[t++]=u[f++],d>1&&(G[t++]=u[f++]))}else{f=t-y;do{G[t++]=G[f++],G[t++]=G[f++],G[t++]=G[f++],d-=3}while(d>2);d&&(G[t++]=G[f++],d>1&&(G[t++]=G[f++]))}break}if(64&D){A.msg="invalid distance code",N.mode=St;break A}w=h[(65535&w)+(o&(1<<D)-1)]}}break}}while(I<e&&t<i);d=r>>3,I-=d,r-=d<<3,o&=(1<<r)-1,A.next_in=I,A.next_out=t,A.avail_in=I<e?e-I+5:5-(I-e),A.avail_out=t<i?i-t+257:257-(t-i),N.hold=o,N.bits=r};const Nt=15,Ft=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]),kt=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]),Rt=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]),Lt=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 Ut=(A,g,I,e,t,B,i,C)=>{const Q=C.bits;let E,s,a,o,r,n,h=0,l=0,c=0,w=0,D=0,d=0,y=0,f=0,u=0,S=0,G=null;const N=new Uint16Array(16),F=new Uint16Array(16);let k,R,L,U=null;for(h=0;h<=Nt;h++)N[h]=0;for(l=0;l<e;l++)N[g[I+l]]++;for(D=Q,w=Nt;w>=1&&0===N[w];w--);if(D>w&&(D=w),0===w)return t[B++]=20971520,t[B++]=20971520,C.bits=1,0;for(c=1;c<w&&0===N[c];c++);for(D<c&&(D=c),f=1,h=1;h<=Nt;h++)if(f<<=1,f-=N[h],f<0)return-1;if(f>0&&(0===A||1!==w))return-1;for(F[1]=0,h=1;h<Nt;h++)F[h+1]=F[h]+N[h];for(l=0;l<e;l++)0!==g[I+l]&&(i[F[g[I+l]]++]=l);if(0===A?(G=U=i,n=20):1===A?(G=Ft,U=kt,n=257):(G=Rt,U=Lt,n=0),S=0,l=0,h=c,r=B,d=D,y=0,a=-1,u=1<<D,o=u-1,1===A&&u>852||2===A&&u>592)return 1;for(;;){k=h-y,i[l]+1<n?(R=0,L=i[l]):i[l]>=n?(R=U[i[l]-n],L=G[i[l]-n]):(R=96,L=0),E=1<<h-y,s=1<<d,c=s;do{s-=E,t[r+(S>>y)+s]=k<<24|R<<16|L}while(0!==s);for(E=1<<h-1;S&E;)E>>=1;if(0!==E?(S&=E-1,S+=E):S=0,l++,0===--N[h]){if(h===w)break;h=g[I+i[l]]}if(h>D&&(S&o)!==a){for(0===y&&(y=D),r+=c,d=h-y,f=1<<d;d+y<w&&(f-=N[d+y],!(f<=0));)d++,f<<=1;if(u+=1<<d,1===A&&u>852||2===A&&u>592)return 1;a=S&o,t[a]=D<<24|d<<16|r-B}}return 0!==S&&(t[r+S]=h-y<<24|64<<16),C.bits=D,0};const{Z_FINISH:mt,Z_BLOCK:pt,Z_TREES:Yt,Z_OK:Mt,Z_STREAM_END:Kt,Z_NEED_DICT:bt,Z_STREAM_ERROR:Jt,Z_DATA_ERROR:Ht,Z_MEM_ERROR:qt,Z_BUF_ERROR:xt,Z_DEFLATED:_t}=ie,Tt=16180,Ot=16190,vt=16191,Pt=16192,Zt=16194,Vt=16199,zt=16200,jt=16206,Wt=16209,Xt=A=>(A>>>24&255)+(A>>>8&65280)+((65280&A)<<8)+((255&A)<<24);function $t(){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 AB=A=>{if(!A)return 1;const g=A.state;return!g||g.strm!==A||g.mode<Tt||g.mode>16211?1:0},gB=A=>{if(AB(A))return Jt;const g=A.state;return A.total_in=A.total_out=g.total=0,A.msg="",g.wrap&&(A.adler=1&g.wrap),g.mode=Tt,g.last=0,g.havedict=0,g.flags=-1,g.dmax=32768,g.head=null,g.hold=0,g.bits=0,g.lencode=g.lendyn=new Int32Array(852),g.distcode=g.distdyn=new Int32Array(592),g.sane=1,g.back=-1,Mt},IB=A=>{if(AB(A))return Jt;const g=A.state;return g.wsize=0,g.whave=0,g.wnext=0,gB(A)},eB=(A,g)=>{let I;if(AB(A))return Jt;const e=A.state;return g<0?(I=0,g=-g):(I=5+(g>>4),g<48&&(g&=15)),g&&(g<8||g>15)?Jt:(null!==e.window&&e.wbits!==g&&(e.window=null),e.wrap=I,e.wbits=g,IB(A))},tB=(A,g)=>{if(!A)return Jt;const I=new $t;A.state=I,I.strm=A,I.window=null,I.mode=Tt;const e=eB(A,g);return e!==Mt&&(A.state=null),e};let BB,iB,CB=!0;const QB=A=>{if(CB){BB=new Int32Array(512),iB=new Int32Array(32);let g=0;for(;g<144;)A.lens[g++]=8;for(;g<256;)A.lens[g++]=9;for(;g<280;)A.lens[g++]=7;for(;g<288;)A.lens[g++]=8;for(Ut(1,A.lens,0,288,BB,0,A.work,{bits:9}),g=0;g<32;)A.lens[g++]=5;Ut(2,A.lens,0,32,iB,0,A.work,{bits:5}),CB=!1}A.lencode=BB,A.lenbits=9,A.distcode=iB,A.distbits=5},EB=(A,g,I,e)=>{let t;const B=A.state;return null===B.window&&(B.wsize=1<<B.wbits,B.wnext=0,B.whave=0,B.window=new Uint8Array(B.wsize)),e>=B.wsize?(B.window.set(g.subarray(I-B.wsize,I),0),B.wnext=0,B.whave=B.wsize):(t=B.wsize-B.wnext,t>e&&(t=e),B.window.set(g.subarray(I-e,I-e+t),B.wnext),(e-=t)?(B.window.set(g.subarray(I-e,I),0),B.wnext=e,B.whave=B.wsize):(B.wnext+=t,B.wnext===B.wsize&&(B.wnext=0),B.whave<B.wsize&&(B.whave+=t))),0};var sB={inflateReset:IB,inflateReset2:eB,inflateResetKeep:gB,inflateInit:A=>tB(A,15),inflateInit2:tB,inflate:(A,g)=>{let I,e,t,B,i,C,Q,E,s,a,o,r,n,h,l,c,w,D,d,y,f,u,S=0;const G=new Uint8Array(4);let N,F;const k=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(AB(A)||!A.output||!A.input&&0!==A.avail_in)return Jt;I=A.state,I.mode===vt&&(I.mode=Pt),i=A.next_out,t=A.output,Q=A.avail_out,B=A.next_in,e=A.input,C=A.avail_in,E=I.hold,s=I.bits,a=C,o=Q,u=Mt;A:for(;;)switch(I.mode){case Tt:if(0===I.wrap){I.mode=Pt;break}for(;s<16;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}if(2&I.wrap&&35615===E){0===I.wbits&&(I.wbits=15),I.check=0,G[0]=255&E,G[1]=E>>>8&255,I.check=te(I.check,G,2,0),E=0,s=0,I.mode=16181;break}if(I.head&&(I.head.done=!1),!(1&I.wrap)||(((255&E)<<8)+(E>>8))%31){A.msg="incorrect header check",I.mode=Wt;break}if((15&E)!==_t){A.msg="unknown compression method",I.mode=Wt;break}if(E>>>=4,s-=4,f=8+(15&E),0===I.wbits&&(I.wbits=f),f>15||f>I.wbits){A.msg="invalid window size",I.mode=Wt;break}I.dmax=1<<I.wbits,I.flags=0,A.adler=I.check=1,I.mode=512&E?16189:vt,E=0,s=0;break;case 16181:for(;s<16;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}if(I.flags=E,(255&I.flags)!==_t){A.msg="unknown compression method",I.mode=Wt;break}if(57344&I.flags){A.msg="unknown header flags set",I.mode=Wt;break}I.head&&(I.head.text=E>>8&1),512&I.flags&&4&I.wrap&&(G[0]=255&E,G[1]=E>>>8&255,I.check=te(I.check,G,2,0)),E=0,s=0,I.mode=16182;case 16182:for(;s<32;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}I.head&&(I.head.time=E),512&I.flags&&4&I.wrap&&(G[0]=255&E,G[1]=E>>>8&255,G[2]=E>>>16&255,G[3]=E>>>24&255,I.check=te(I.check,G,4,0)),E=0,s=0,I.mode=16183;case 16183:for(;s<16;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}I.head&&(I.head.xflags=255&E,I.head.os=E>>8),512&I.flags&&4&I.wrap&&(G[0]=255&E,G[1]=E>>>8&255,I.check=te(I.check,G,2,0)),E=0,s=0,I.mode=16184;case 16184:if(1024&I.flags){for(;s<16;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}I.length=E,I.head&&(I.head.extra_len=E),512&I.flags&&4&I.wrap&&(G[0]=255&E,G[1]=E>>>8&255,I.check=te(I.check,G,2,0)),E=0,s=0}else I.head&&(I.head.extra=null);I.mode=16185;case 16185:if(1024&I.flags&&(r=I.length,r>C&&(r=C),r&&(I.head&&(f=I.head.extra_len-I.length,I.head.extra||(I.head.extra=new Uint8Array(I.head.extra_len)),I.head.extra.set(e.subarray(B,B+r),f)),512&I.flags&&4&I.wrap&&(I.check=te(I.check,e,r,B)),C-=r,B+=r,I.length-=r),I.length))break A;I.length=0,I.mode=16186;case 16186:if(2048&I.flags){if(0===C)break A;r=0;do{f=e[B+r++],I.head&&f&&I.length<65536&&(I.head.name+=String.fromCharCode(f))}while(f&&r<C);if(512&I.flags&&4&I.wrap&&(I.check=te(I.check,e,r,B)),C-=r,B+=r,f)break A}else I.head&&(I.head.name=null);I.length=0,I.mode=16187;case 16187:if(4096&I.flags){if(0===C)break A;r=0;do{f=e[B+r++],I.head&&f&&I.length<65536&&(I.head.comment+=String.fromCharCode(f))}while(f&&r<C);if(512&I.flags&&4&I.wrap&&(I.check=te(I.check,e,r,B)),C-=r,B+=r,f)break A}else I.head&&(I.head.comment=null);I.mode=16188;case 16188:if(512&I.flags){for(;s<16;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}if(4&I.wrap&&E!==(65535&I.check)){A.msg="header crc mismatch",I.mode=Wt;break}E=0,s=0}I.head&&(I.head.hcrc=I.flags>>9&1,I.head.done=!0),A.adler=I.check=0,I.mode=vt;break;case 16189:for(;s<32;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}A.adler=I.check=Xt(E),E=0,s=0,I.mode=Ot;case Ot:if(0===I.havedict)return A.next_out=i,A.avail_out=Q,A.next_in=B,A.avail_in=C,I.hold=E,I.bits=s,bt;A.adler=I.check=1,I.mode=vt;case vt:if(g===pt||g===Yt)break A;case Pt:if(I.last){E>>>=7&s,s-=7&s,I.mode=jt;break}for(;s<3;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}switch(I.last=1&E,E>>>=1,s-=1,3&E){case 0:I.mode=16193;break;case 1:if(QB(I),I.mode=Vt,g===Yt){E>>>=2,s-=2;break A}break;case 2:I.mode=16196;break;case 3:A.msg="invalid block type",I.mode=Wt}E>>>=2,s-=2;break;case 16193:for(E>>>=7&s,s-=7&s;s<32;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}if((65535&E)!=(E>>>16^65535)){A.msg="invalid stored block lengths",I.mode=Wt;break}if(I.length=65535&E,E=0,s=0,I.mode=Zt,g===Yt)break A;case Zt:I.mode=16195;case 16195:if(r=I.length,r){if(r>C&&(r=C),r>Q&&(r=Q),0===r)break A;t.set(e.subarray(B,B+r),i),C-=r,B+=r,Q-=r,i+=r,I.length-=r;break}I.mode=vt;break;case 16196:for(;s<14;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}if(I.nlen=257+(31&E),E>>>=5,s-=5,I.ndist=1+(31&E),E>>>=5,s-=5,I.ncode=4+(15&E),E>>>=4,s-=4,I.nlen>286||I.ndist>30){A.msg="too many length or distance symbols",I.mode=Wt;break}I.have=0,I.mode=16197;case 16197:for(;I.have<I.ncode;){for(;s<3;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}I.lens[k[I.have++]]=7&E,E>>>=3,s-=3}for(;I.have<19;)I.lens[k[I.have++]]=0;if(I.lencode=I.lendyn,I.lenbits=7,N={bits:I.lenbits},u=Ut(0,I.lens,0,19,I.lencode,0,I.work,N),I.lenbits=N.bits,u){A.msg="invalid code lengths set",I.mode=Wt;break}I.have=0,I.mode=16198;case 16198:for(;I.have<I.nlen+I.ndist;){for(;S=I.lencode[E&(1<<I.lenbits)-1],l=S>>>24,c=S>>>16&255,w=65535&S,!(l<=s);){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}if(w<16)E>>>=l,s-=l,I.lens[I.have++]=w;else{if(16===w){for(F=l+2;s<F;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}if(E>>>=l,s-=l,0===I.have){A.msg="invalid bit length repeat",I.mode=Wt;break}f=I.lens[I.have-1],r=3+(3&E),E>>>=2,s-=2}else if(17===w){for(F=l+3;s<F;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}E>>>=l,s-=l,f=0,r=3+(7&E),E>>>=3,s-=3}else{for(F=l+7;s<F;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}E>>>=l,s-=l,f=0,r=11+(127&E),E>>>=7,s-=7}if(I.have+r>I.nlen+I.ndist){A.msg="invalid bit length repeat",I.mode=Wt;break}for(;r--;)I.lens[I.have++]=f}}if(I.mode===Wt)break;if(0===I.lens[256]){A.msg="invalid code -- missing end-of-block",I.mode=Wt;break}if(I.lenbits=9,N={bits:I.lenbits},u=Ut(1,I.lens,0,I.nlen,I.lencode,0,I.work,N),I.lenbits=N.bits,u){A.msg="invalid literal/lengths set",I.mode=Wt;break}if(I.distbits=6,I.distcode=I.distdyn,N={bits:I.distbits},u=Ut(2,I.lens,I.nlen,I.ndist,I.distcode,0,I.work,N),I.distbits=N.bits,u){A.msg="invalid distances set",I.mode=Wt;break}if(I.mode=Vt,g===Yt)break A;case Vt:I.mode=zt;case zt:if(C>=6&&Q>=258){A.next_out=i,A.avail_out=Q,A.next_in=B,A.avail_in=C,I.hold=E,I.bits=s,Gt(A,o),i=A.next_out,t=A.output,Q=A.avail_out,B=A.next_in,e=A.input,C=A.avail_in,E=I.hold,s=I.bits,I.mode===vt&&(I.back=-1);break}for(I.back=0;S=I.lencode[E&(1<<I.lenbits)-1],l=S>>>24,c=S>>>16&255,w=65535&S,!(l<=s);){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}if(c&&!(240&c)){for(D=l,d=c,y=w;S=I.lencode[y+((E&(1<<D+d)-1)>>D)],l=S>>>24,c=S>>>16&255,w=65535&S,!(D+l<=s);){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}E>>>=D,s-=D,I.back+=D}if(E>>>=l,s-=l,I.back+=l,I.length=w,0===c){I.mode=16205;break}if(32&c){I.back=-1,I.mode=vt;break}if(64&c){A.msg="invalid literal/length code",I.mode=Wt;break}I.extra=15&c,I.mode=16201;case 16201:if(I.extra){for(F=I.extra;s<F;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}I.length+=E&(1<<I.extra)-1,E>>>=I.extra,s-=I.extra,I.back+=I.extra}I.was=I.length,I.mode=16202;case 16202:for(;S=I.distcode[E&(1<<I.distbits)-1],l=S>>>24,c=S>>>16&255,w=65535&S,!(l<=s);){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}if(!(240&c)){for(D=l,d=c,y=w;S=I.distcode[y+((E&(1<<D+d)-1)>>D)],l=S>>>24,c=S>>>16&255,w=65535&S,!(D+l<=s);){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}E>>>=D,s-=D,I.back+=D}if(E>>>=l,s-=l,I.back+=l,64&c){A.msg="invalid distance code",I.mode=Wt;break}I.offset=w,I.extra=15&c,I.mode=16203;case 16203:if(I.extra){for(F=I.extra;s<F;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}I.offset+=E&(1<<I.extra)-1,E>>>=I.extra,s-=I.extra,I.back+=I.extra}if(I.offset>I.dmax){A.msg="invalid distance too far back",I.mode=Wt;break}I.mode=16204;case 16204:if(0===Q)break A;if(r=o-Q,I.offset>r){if(r=I.offset-r,r>I.whave&&I.sane){A.msg="invalid distance too far back",I.mode=Wt;break}r>I.wnext?(r-=I.wnext,n=I.wsize-r):n=I.wnext-r,r>I.length&&(r=I.length),h=I.window}else h=t,n=i-I.offset,r=I.length;r>Q&&(r=Q),Q-=r,I.length-=r;do{t[i++]=h[n++]}while(--r);0===I.length&&(I.mode=zt);break;case 16205:if(0===Q)break A;t[i++]=I.length,Q--,I.mode=zt;break;case jt:if(I.wrap){for(;s<32;){if(0===C)break A;C--,E|=e[B++]<<s,s+=8}if(o-=Q,A.total_out+=o,I.total+=o,4&I.wrap&&o&&(A.adler=I.check=I.flags?te(I.check,t,o,i-o):Ie(I.check,t,o,i-o)),o=Q,4&I.wrap&&(I.flags?E:Xt(E))!==I.check){A.msg="incorrect data check",I.mode=Wt;break}E=0,s=0}I.mode=16207;case 16207:if(I.wrap&&I.flags){for(;s<32;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}if(4&I.wrap&&E!==(4294967295&I.total)){A.msg="incorrect length check",I.mode=Wt;break}E=0,s=0}I.mode=16208;case 16208:u=Kt;break A;case Wt:u=Ht;break A;case 16210:return qt;default:return Jt}return A.next_out=i,A.avail_out=Q,A.next_in=B,A.avail_in=C,I.hold=E,I.bits=s,(I.wsize||o!==A.avail_out&&I.mode<Wt&&(I.mode<jt||g!==mt))&&EB(A,A.output,A.next_out,o-A.avail_out),a-=A.avail_in,o-=A.avail_out,A.total_in+=a,A.total_out+=o,I.total+=o,4&I.wrap&&o&&(A.adler=I.check=I.flags?te(I.check,t,o,A.next_out-o):Ie(I.check,t,o,A.next_out-o)),A.data_type=I.bits+(I.last?64:0)+(I.mode===vt?128:0)+(I.mode===Vt||I.mode===Zt?256:0),(0===a&&0===o||g===mt)&&u===Mt&&(u=xt),u},inflateEnd:A=>{if(AB(A))return Jt;let g=A.state;return g.window&&(g.window=null),A.state=null,Mt},inflateGetHeader:(A,g)=>{if(AB(A))return Jt;const I=A.state;return 2&I.wrap?(I.head=g,g.done=!1,Mt):Jt},inflateSetDictionary:(A,g)=>{const I=g.length;let e,t,B;return AB(A)?Jt:(e=A.state,0!==e.wrap&&e.mode!==Ot?Jt:e.mode===Ot&&(t=1,t=Ie(t,g,I,0),t!==e.check)?Ht:(B=EB(A,g,I,I),B?(e.mode=16210,qt):(e.havedict=1,Mt)))},inflateInfo:"pako inflate (from Nodeca project)"};var aB=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 oB=Object.prototype.toString,{Z_NO_FLUSH:rB,Z_FINISH:nB,Z_OK:hB,Z_STREAM_END:lB,Z_NEED_DICT:cB,Z_STREAM_ERROR:wB,Z_DATA_ERROR:DB,Z_MEM_ERROR:dB}=ie;function yB(A){this.options=Bt({chunkSize:65536,windowBits:15,to:""},A||{});const g=this.options;g.raw&&g.windowBits>=0&&g.windowBits<16&&(g.windowBits=-g.windowBits,0===g.windowBits&&(g.windowBits=-15)),!(g.windowBits>=0&&g.windowBits<16)||A&&A.windowBits||(g.windowBits+=32),g.windowBits>15&&g.windowBits<48&&(15&g.windowBits||(g.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new ot,this.strm.avail_out=0;let I=sB.inflateInit2(this.strm,g.windowBits);if(I!==hB)throw new Error(Be[I]);if(this.header=new aB,sB.inflateGetHeader(this.strm,this.header),g.dictionary&&("string"==typeof g.dictionary?g.dictionary=Et(g.dictionary):"[object ArrayBuffer]"===oB.call(g.dictionary)&&(g.dictionary=new Uint8Array(g.dictionary)),g.raw&&(I=sB.inflateSetDictionary(this.strm,g.dictionary),I!==hB)))throw new Error(Be[I])}function fB(A,g){const I=new yB(g);if(I.push(A),I.err)throw I.msg||Be[I.err];return I.result}yB.prototype.push=function(A,g){const I=this.strm,e=this.options.chunkSize,t=this.options.dictionary;let B,i,C;if(this.ended)return!1;for(i=g===~~g?g:!0===g?nB:rB,"[object ArrayBuffer]"===oB.call(A)?I.input=new Uint8Array(A):I.input=A,I.next_in=0,I.avail_in=I.input.length;;){for(0===I.avail_out&&(I.output=new Uint8Array(e),I.next_out=0,I.avail_out=e),B=sB.inflate(I,i),B===cB&&t&&(B=sB.inflateSetDictionary(I,t),B===hB?B=sB.inflate(I,i):B===DB&&(B=cB));I.avail_in>0&&B===lB&&I.state.wrap>0&&0!==A[I.next_in];)sB.inflateReset(I),B=sB.inflate(I,i);switch(B){case wB:case DB:case cB:case dB:return this.onEnd(B),this.ended=!0,!1}if(C=I.avail_out,I.next_out&&(0===I.avail_out||B===lB))if("string"===this.options.to){let A=at(I.output,I.next_out),g=I.next_out-A,t=st(I.output,A);I.next_out=g,I.avail_out=e-g,g&&I.output.set(I.output.subarray(A,A+g),0),this.onData(t)}else this.onData(I.output.length===I.next_out?I.output:I.output.subarray(0,I.next_out));if(B!==hB||0!==C){if(B===lB)return B=sB.inflateEnd(this.strm),this.onEnd(B),this.ended=!0,!0;if(0===I.avail_in)break}}return!0},yB.prototype.onData=function(A){this.chunks.push(A)},yB.prototype.onEnd=function(A){A===hB&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=it(this.chunks)),this.chunks=[],this.err=A,this.msg=this.strm.msg};var uB={Inflate:yB,inflate:fB,inflateRaw:function(A,g){return(g=g||{}).raw=!0,fB(A,g)},ungzip:fB,constants:ie};const{Inflate:SB,inflate:GB,inflateRaw:NB,ungzip:FB}=uB;var kB=GB;var RB=Object.freeze({__proto__:null,default:class extends Ng{decodeBlock(A){return kB(new Uint8Array(A)).buffer}}});var LB=Object.freeze({__proto__:null,default:class extends Ng{decodeBlock(A){const g=new DataView(A),I=[];for(let e=0;e<A.byteLength;++e){let A=g.getInt8(e);if(A<0){const t=g.getUint8(e+1);A=-A;for(let g=0;g<=A;++g)I.push(t);e+=1}else{for(let t=0;t<=A;++t)I.push(g.getUint8(e+t+1));e+=A+1}}return new Uint8Array(I).buffer}}});function UB(A){return A&&A.__esModule&&Object.prototype.hasOwnProperty.call(A,"default")?A.default:A}var mB,pB={exports:{}};mB=pB,
3
3
  /* Copyright 2015-2021 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 */
4
- !function(){var e,t,i,r,a,n,s,o,g,l,h,I,B,c,C,f,E=(e={defaultNoDataValue:-34027999387901484e22,decode:function(A,n){var s=(n=n||{}).encodedMaskData||null===n.encodedMaskData,o=a(A,n.inputOffset||0,s),g=null!==n.noDataValue?n.noDataValue:e.defaultNoDataValue,l=t(o,n.pixelType||Float32Array,n.encodedMaskData,g,n.returnMask),h={width:o.width,height:o.height,pixelData:l.resultPixels,minValue:l.minValue,maxValue:o.pixels.maxValue,noDataValue:g};return l.resultMask&&(h.maskData=l.resultMask),n.returnEncodedMask&&o.mask&&(h.encodedMaskData=o.mask.bitset?o.mask.bitset:null),n.returnFileInfo&&(h.fileInfo=i(o),n.computeUsedBitDepths&&(h.fileInfo.bitDepths=r(o))),h}},t=function(A,e,t,i,r){var a,s,o,g=0,l=A.pixels.numBlocksX,h=A.pixels.numBlocksY,I=Math.floor(A.width/l),B=Math.floor(A.height/h),c=2*A.maxZError,C=Number.MAX_VALUE;t=t||(A.mask?A.mask.bitset:null),s=new e(A.width*A.height),r&&t&&(o=new Uint8Array(A.width*A.height));for(var f,E,Q=new Float32Array(I*B),d=0;d<=h;d++){var u=d!==h?B:A.height%h;if(0!==u)for(var w=0;w<=l;w++){var p=w!==l?I:A.width%l;if(0!==p){var m,y,D,k,b=d*A.width*B+w*I,_=A.width-p,S=A.pixels.blocks[g];if(S.encoding<2?(0===S.encoding?m=S.rawData:(n(S.stuffedData,S.bitsPerPixel,S.numValidPixels,S.offset,c,Q,A.pixels.maxValue),m=Q),y=0):D=2===S.encoding?0:S.offset,t)for(E=0;E<u;E++){for(7&b&&(k=t[b>>3],k<<=7&b),f=0;f<p;f++)7&b||(k=t[b>>3]),128&k?(o&&(o[b]=1),C=C>(a=S.encoding<2?m[y++]:D)?a:C,s[b++]=a):(o&&(o[b]=0),s[b++]=i),k<<=1;b+=_}else if(S.encoding<2)for(E=0;E<u;E++){for(f=0;f<p;f++)C=C>(a=m[y++])?a:C,s[b++]=a;b+=_}else for(C=C>D?D:C,E=0;E<u;E++){for(f=0;f<p;f++)s[b++]=D;b+=_}if(1===S.encoding&&y!==S.numValidPixels)throw"Block and Mask do not match";g++}}}return{resultPixels:s,resultMask:o,minValue:C}},i=function(A){return{fileIdentifierString:A.fileIdentifierString,fileVersion:A.fileVersion,imageType:A.imageType,height:A.height,width:A.width,maxZError:A.maxZError,eofOffset:A.eofOffset,mask:A.mask?{numBlocksX:A.mask.numBlocksX,numBlocksY:A.mask.numBlocksY,numBytes:A.mask.numBytes,maxValue:A.mask.maxValue}:null,pixels:{numBlocksX:A.pixels.numBlocksX,numBlocksY:A.pixels.numBlocksY,numBytes:A.pixels.numBytes,maxValue:A.pixels.maxValue,noDataValue:A.noDataValue}}},r=function(A){for(var e=A.pixels.numBlocksX*A.pixels.numBlocksY,t={},i=0;i<e;i++){var r=A.pixels.blocks[i];0===r.encoding?t.float32=!0:1===r.encoding?t[r.bitsPerPixel]=!0:t[0]=!0}return Object.keys(t)},a=function(A,e,t){var i={},r=new Uint8Array(A,e,10);if(i.fileIdentifierString=String.fromCharCode.apply(null,r),"CntZImage"!==i.fileIdentifierString.trim())throw"Unexpected file identifier string: "+i.fileIdentifierString;e+=10;var a=new DataView(A,e,24);if(i.fileVersion=a.getInt32(0,!0),i.imageType=a.getInt32(4,!0),i.height=a.getUint32(8,!0),i.width=a.getUint32(12,!0),i.maxZError=a.getFloat64(16,!0),e+=24,!t)if(a=new DataView(A,e,16),i.mask={},i.mask.numBlocksY=a.getUint32(0,!0),i.mask.numBlocksX=a.getUint32(4,!0),i.mask.numBytes=a.getUint32(8,!0),i.mask.maxValue=a.getFloat32(12,!0),e+=16,i.mask.numBytes>0){var n=new Uint8Array(Math.ceil(i.width*i.height/8)),s=(a=new DataView(A,e,i.mask.numBytes)).getInt16(0,!0),o=2,g=0;do{if(s>0)for(;s--;)n[g++]=a.getUint8(o++);else{var l=a.getUint8(o++);for(s=-s;s--;)n[g++]=l}s=a.getInt16(o,!0),o+=2}while(o<i.mask.numBytes);if(-32768!==s||g<n.length)throw"Unexpected end of mask RLE encoding";i.mask.bitset=n,e+=i.mask.numBytes}else 0==(i.mask.numBytes|i.mask.numBlocksY|i.mask.maxValue)&&(i.mask.bitset=new Uint8Array(Math.ceil(i.width*i.height/8)));a=new DataView(A,e,16),i.pixels={},i.pixels.numBlocksY=a.getUint32(0,!0),i.pixels.numBlocksX=a.getUint32(4,!0),i.pixels.numBytes=a.getUint32(8,!0),i.pixels.maxValue=a.getFloat32(12,!0),e+=16;var h=i.pixels.numBlocksX,I=i.pixels.numBlocksY,B=h+(i.width%h>0?1:0),c=I+(i.height%I>0?1:0);i.pixels.blocks=new Array(B*c);for(var C=0,f=0;f<c;f++)for(var E=0;E<B;E++){var Q=0,d=A.byteLength-e;a=new DataView(A,e,Math.min(10,d));var u={};i.pixels.blocks[C++]=u;var w=a.getUint8(0);if(Q++,u.encoding=63&w,u.encoding>3)throw"Invalid block encoding ("+u.encoding+")";if(2!==u.encoding){if(0!==w&&2!==w){if(w>>=6,u.offsetType=w,2===w)u.offset=a.getInt8(1),Q++;else if(1===w)u.offset=a.getInt16(1,!0),Q+=2;else{if(0!==w)throw"Invalid block offset type";u.offset=a.getFloat32(1,!0),Q+=4}if(1===u.encoding)if(w=a.getUint8(Q),Q++,u.bitsPerPixel=63&w,w>>=6,u.numValidPixelsType=w,2===w)u.numValidPixels=a.getUint8(Q),Q++;else if(1===w)u.numValidPixels=a.getUint16(Q,!0),Q+=2;else{if(0!==w)throw"Invalid valid pixel count type";u.numValidPixels=a.getUint32(Q,!0),Q+=4}}var p;if(e+=Q,3!==u.encoding)if(0===u.encoding){var m=(i.pixels.numBytes-1)/4;if(m!==Math.floor(m))throw"uncompressed block has invalid length";p=new ArrayBuffer(4*m),new Uint8Array(p).set(new Uint8Array(A,e,4*m));var y=new Float32Array(p);u.rawData=y,e+=4*m}else if(1===u.encoding){var D=Math.ceil(u.numValidPixels*u.bitsPerPixel/8),k=Math.ceil(D/4);p=new ArrayBuffer(4*k),new Uint8Array(p).set(new Uint8Array(A,e,D)),u.stuffedData=new Uint32Array(p),e+=D}}else e++}return i.eofOffset=e,i},n=function(A,e,t,i,r,a,n){var s,o,g,l=(1<<e)-1,h=0,I=0,B=Math.ceil((n-i)/r),c=4*A.length-Math.ceil(e*t/8);for(A[A.length-1]<<=8*c,s=0;s<t;s++){if(0===I&&(g=A[h++],I=32),I>=e)o=g>>>I-e&l,I-=e;else{var C=e-I;o=(g&l)<<C&l,o+=(g=A[h++])>>>(I=32-C)}a[s]=o<B?i+o*r:n}return a},e),Q=(s=function(A,e,t,i,r,a,n,s){var o,g,l,h,I,B=(1<<t)-1,c=0,C=0,f=4*A.length-Math.ceil(t*i/8);if(A[A.length-1]<<=8*f,r)for(o=0;o<i;o++)0===C&&(l=A[c++],C=32),C>=t?(g=l>>>C-t&B,C-=t):(g=(l&B)<<(h=t-C)&B,g+=(l=A[c++])>>>(C=32-h)),e[o]=r[g];else for(I=Math.ceil((s-a)/n),o=0;o<i;o++)0===C&&(l=A[c++],C=32),C>=t?(g=l>>>C-t&B,C-=t):(g=(l&B)<<(h=t-C)&B,g+=(l=A[c++])>>>(C=32-h)),e[o]=g<I?a+g*n:s},o=function(A,e,t,i,r,a){var n,s=(1<<e)-1,o=0,g=0,l=0,h=0,I=0,B=[],c=4*A.length-Math.ceil(e*t/8);A[A.length-1]<<=8*c;var C=Math.ceil((a-i)/r);for(g=0;g<t;g++)0===h&&(n=A[o++],h=32),h>=e?(I=n>>>h-e&s,h-=e):(I=(n&s)<<(l=e-h)&s,I+=(n=A[o++])>>>(h=32-l)),B[g]=I<C?i+I*r:a;return B.unshift(i),B},g=function(A,e,t,i,r,a,n,s){var o,g,l,h,I=(1<<t)-1,B=0,c=0,C=0;if(r)for(o=0;o<i;o++)0===c&&(l=A[B++],c=32,C=0),c>=t?(g=l>>>C&I,c-=t,C+=t):(g=l>>>C&I,c=32-(h=t-c),g|=((l=A[B++])&(1<<h)-1)<<t-h,C=h),e[o]=r[g];else{var f=Math.ceil((s-a)/n);for(o=0;o<i;o++)0===c&&(l=A[B++],c=32,C=0),c>=t?(g=l>>>C&I,c-=t,C+=t):(g=l>>>C&I,c=32-(h=t-c),g|=((l=A[B++])&(1<<h)-1)<<t-h,C=h),e[o]=g<f?a+g*n:s}return e},l=function(A,e,t,i,r,a){var n,s=(1<<e)-1,o=0,g=0,l=0,h=0,I=0,B=0,c=[],C=Math.ceil((a-i)/r);for(g=0;g<t;g++)0===h&&(n=A[o++],h=32,B=0),h>=e?(I=n>>>B&s,h-=e,B+=e):(I=n>>>B&s,h=32-(l=e-h),I|=((n=A[o++])&(1<<l)-1)<<e-l,B=l),c[g]=I<C?i+I*r:a;return c.unshift(i),c},h=function(A,e,t,i){var r,a,n,s,o=(1<<t)-1,g=0,l=0,h=4*A.length-Math.ceil(t*i/8);for(A[A.length-1]<<=8*h,r=0;r<i;r++)0===l&&(n=A[g++],l=32),l>=t?(a=n>>>l-t&o,l-=t):(a=(n&o)<<(s=t-l)&o,a+=(n=A[g++])>>>(l=32-s)),e[r]=a;return e},I=function(A,e,t,i){var r,a,n,s,o=(1<<t)-1,g=0,l=0,h=0;for(r=0;r<i;r++)0===l&&(n=A[g++],l=32,h=0),l>=t?(a=n>>>h&o,l-=t,h+=t):(a=n>>>h&o,l=32-(s=t-l),a|=((n=A[g++])&(1<<s)-1)<<t-s,h=s),e[r]=a;return e},B={HUFFMAN_LUT_BITS_MAX:12,computeChecksumFletcher32:function(A){for(var e=65535,t=65535,i=A.length,r=Math.floor(i/2),a=0;r;){var n=r>=359?359:r;r-=n;do{e+=A[a++]<<8,t+=e+=A[a++]}while(--n);e=(65535&e)+(e>>>16),t=(65535&t)+(t>>>16)}return 1&i&&(t+=e+=A[a]<<8),((t=(65535&t)+(t>>>16))<<16|(e=(65535&e)+(e>>>16)))>>>0},readHeaderInfo:function(A,e){var t=e.ptr,i=new Uint8Array(A,t,6),r={};if(r.fileIdentifierString=String.fromCharCode.apply(null,i),0!==r.fileIdentifierString.lastIndexOf("Lerc2",0))throw"Unexpected file identifier string (expect Lerc2 ): "+r.fileIdentifierString;t+=6;var a,n=new DataView(A,t,8),s=n.getInt32(0,!0);if(r.fileVersion=s,t+=4,s>=3&&(r.checksum=n.getUint32(4,!0),t+=4),n=new DataView(A,t,12),r.height=n.getUint32(0,!0),r.width=n.getUint32(4,!0),t+=8,s>=4?(r.numDims=n.getUint32(8,!0),t+=4):r.numDims=1,n=new DataView(A,t,40),r.numValidPixel=n.getUint32(0,!0),r.microBlockSize=n.getInt32(4,!0),r.blobSize=n.getInt32(8,!0),r.imageType=n.getInt32(12,!0),r.maxZError=n.getFloat64(16,!0),r.zMin=n.getFloat64(24,!0),r.zMax=n.getFloat64(32,!0),t+=40,e.headerInfo=r,e.ptr=t,s>=3&&(a=s>=4?52:48,this.computeChecksumFletcher32(new Uint8Array(A,t-a,r.blobSize-14))!==r.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(A,e){var t=e.headerInfo,i=this.getDataTypeArray(t.imageType),r=t.numDims*this.getDataTypeSize(t.imageType),a=this.readSubArray(A,e.ptr,i,r),n=this.readSubArray(A,e.ptr+r,i,r);e.ptr+=2*r;var s,o=!0;for(s=0;s<t.numDims;s++)if(a[s]!==n[s]){o=!1;break}return t.minValues=a,t.maxValues=n,o},readSubArray:function(A,e,t,i){var r;if(t===Uint8Array)r=new Uint8Array(A,e,i);else{var a=new ArrayBuffer(i);new Uint8Array(a).set(new Uint8Array(A,e,i)),r=new t(a)}return r},readMask:function(A,e){var t,i,r=e.ptr,a=e.headerInfo,n=a.width*a.height,s=a.numValidPixel,o=new DataView(A,r,4),g={};if(g.numBytes=o.getUint32(0,!0),r+=4,(0===s||n===s)&&0!==g.numBytes)throw"invalid mask";if(0===s)t=new Uint8Array(Math.ceil(n/8)),g.bitset=t,i=new Uint8Array(n),e.pixels.resultMask=i,r+=g.numBytes;else if(g.numBytes>0){t=new Uint8Array(Math.ceil(n/8));var l=(o=new DataView(A,r,g.numBytes)).getInt16(0,!0),h=2,I=0,B=0;do{if(l>0)for(;l--;)t[I++]=o.getUint8(h++);else for(B=o.getUint8(h++),l=-l;l--;)t[I++]=B;l=o.getInt16(h,!0),h+=2}while(h<g.numBytes);if(-32768!==l||I<t.length)throw"Unexpected end of mask RLE encoding";i=new Uint8Array(n);var c=0,C=0;for(C=0;C<n;C++)7&C?(c=t[C>>3],c<<=7&C):c=t[C>>3],128&c&&(i[C]=1);e.pixels.resultMask=i,g.bitset=t,r+=g.numBytes}return e.ptr=r,e.mask=g,!0},readDataOneSweep:function(A,e,t,i){var r,a=e.ptr,n=e.headerInfo,s=n.numDims,o=n.width*n.height,g=n.imageType,l=n.numValidPixel*B.getDataTypeSize(g)*s,h=e.pixels.resultMask;if(t===Uint8Array)r=new Uint8Array(A,a,l);else{var I=new ArrayBuffer(l);new Uint8Array(I).set(new Uint8Array(A,a,l)),r=new t(I)}if(r.length===o*s)e.pixels.resultPixels=i?B.swapDimensionOrder(r,o,s,t,!0):r;else{e.pixels.resultPixels=new t(o*s);var c=0,C=0,f=0,E=0;if(s>1){if(i){for(C=0;C<o;C++)if(h[C])for(E=C,f=0;f<s;f++,E+=o)e.pixels.resultPixels[E]=r[c++]}else for(C=0;C<o;C++)if(h[C])for(E=C*s,f=0;f<s;f++)e.pixels.resultPixels[E+f]=r[c++]}else for(C=0;C<o;C++)h[C]&&(e.pixels.resultPixels[C]=r[c++])}return a+=l,e.ptr=a,!0},readHuffmanTree:function(A,e){var t=this.HUFFMAN_LUT_BITS_MAX,i=new DataView(A,e.ptr,16);if(e.ptr+=16,i.getInt32(0,!0)<2)throw"unsupported Huffman version";var r=i.getInt32(4,!0),a=i.getInt32(8,!0),n=i.getInt32(12,!0);if(a>=n)return!1;var s=new Uint32Array(n-a);B.decodeBits(A,e,s);var o,g,l,h,I=[];for(o=a;o<n;o++)I[g=o-(o<r?0:r)]={first:s[o-a],second:null};var C=A.byteLength-e.ptr,f=Math.ceil(C/4),E=new ArrayBuffer(4*f);new Uint8Array(E).set(new Uint8Array(A,e.ptr,C));var Q,d=new Uint32Array(E),u=0,w=0;for(Q=d[0],o=a;o<n;o++)(h=I[g=o-(o<r?0:r)].first)>0&&(I[g].second=Q<<u>>>32-h,32-u>=h?32===(u+=h)&&(u=0,Q=d[++w]):(u+=h-32,Q=d[++w],I[g].second|=Q>>>32-u));var p=0,m=0,y=new c;for(o=0;o<I.length;o++)void 0!==I[o]&&(p=Math.max(p,I[o].first));m=p>=t?t:p;var D,k,b,_,S,x=[];for(o=a;o<n;o++)if((h=I[g=o-(o<r?0:r)].first)>0)if(D=[h,g],h<=m)for(k=I[g].second<<m-h,b=1<<m-h,l=0;l<b;l++)x[k|l]=D;else for(k=I[g].second,S=y,_=h-1;_>=0;_--)k>>>_&1?(S.right||(S.right=new c),S=S.right):(S.left||(S.left=new c),S=S.left),0!==_||S.val||(S.val=D[1]);return{decodeLut:x,numBitsLUTQick:m,numBitsLUT:p,tree:y,stuffedData:d,srcPtr:w,bitPos:u}},readHuffman:function(A,e,t,i){var r,a,n,s,o,g,l,h,I,c=e.headerInfo.numDims,C=e.headerInfo.height,f=e.headerInfo.width,E=f*C,Q=this.readHuffmanTree(A,e),d=Q.decodeLut,u=Q.tree,w=Q.stuffedData,p=Q.srcPtr,m=Q.bitPos,y=Q.numBitsLUTQick,D=Q.numBitsLUT,k=0===e.headerInfo.imageType?128:0,b=e.pixels.resultMask,_=0;m>0&&(p++,m=0);var S,x=w[p],F=1===e.encodeMode,G=new t(E*c),U=G;if(c<2||F){for(S=0;S<c;S++)if(c>1&&(U=new t(G.buffer,E*S,E),_=0),e.headerInfo.numValidPixel===f*C)for(h=0,g=0;g<C;g++)for(l=0;l<f;l++,h++){if(a=0,o=s=x<<m>>>32-y,32-m<y&&(o=s|=w[p+1]>>>64-m-y),d[o])a=d[o][1],m+=d[o][0];else for(o=s=x<<m>>>32-D,32-m<D&&(o=s|=w[p+1]>>>64-m-D),r=u,I=0;I<D;I++)if(!(r=s>>>D-I-1&1?r.right:r.left).left&&!r.right){a=r.val,m=m+I+1;break}m>=32&&(m-=32,x=w[++p]),n=a-k,F?(n+=l>0?_:g>0?U[h-f]:_,n&=255,U[h]=n,_=n):U[h]=n}else for(h=0,g=0;g<C;g++)for(l=0;l<f;l++,h++)if(b[h]){if(a=0,o=s=x<<m>>>32-y,32-m<y&&(o=s|=w[p+1]>>>64-m-y),d[o])a=d[o][1],m+=d[o][0];else for(o=s=x<<m>>>32-D,32-m<D&&(o=s|=w[p+1]>>>64-m-D),r=u,I=0;I<D;I++)if(!(r=s>>>D-I-1&1?r.right:r.left).left&&!r.right){a=r.val,m=m+I+1;break}m>=32&&(m-=32,x=w[++p]),n=a-k,F?(l>0&&b[h-1]?n+=_:g>0&&b[h-f]?n+=U[h-f]:n+=_,n&=255,U[h]=n,_=n):U[h]=n}}else for(h=0,g=0;g<C;g++)for(l=0;l<f;l++)if(h=g*f+l,!b||b[h])for(S=0;S<c;S++,h+=E){if(a=0,o=s=x<<m>>>32-y,32-m<y&&(o=s|=w[p+1]>>>64-m-y),d[o])a=d[o][1],m+=d[o][0];else for(o=s=x<<m>>>32-D,32-m<D&&(o=s|=w[p+1]>>>64-m-D),r=u,I=0;I<D;I++)if(!(r=s>>>D-I-1&1?r.right:r.left).left&&!r.right){a=r.val,m=m+I+1;break}m>=32&&(m-=32,x=w[++p]),n=a-k,U[h]=n}e.ptr=e.ptr+4*(p+1)+(m>0?4:0),e.pixels.resultPixels=G,c>1&&!i&&(e.pixels.resultPixels=B.swapDimensionOrder(G,E,c,t))},decodeBits:function(A,e,t,i,r){var a=e.headerInfo,n=a.fileVersion,B=0,c=A.byteLength-e.ptr>=5?5:A.byteLength-e.ptr,C=new DataView(A,e.ptr,c),f=C.getUint8(0);B++;var E=f>>6,Q=0===E?4:3-E,d=(32&f)>0,u=31&f,w=0;if(1===Q)w=C.getUint8(B),B++;else if(2===Q)w=C.getUint16(B,!0),B+=2;else{if(4!==Q)throw"Invalid valid pixel count type";w=C.getUint32(B,!0),B+=4}var p,m,y,D,k,b,_,S,x,F=2*a.maxZError,G=a.numDims>1?a.maxValues[r]:a.zMax;if(d){for(e.counter.lut++,S=C.getUint8(B),B++,D=Math.ceil((S-1)*u/8),k=Math.ceil(D/4),m=new ArrayBuffer(4*k),y=new Uint8Array(m),e.ptr+=B,y.set(new Uint8Array(A,e.ptr,D)),_=new Uint32Array(m),e.ptr+=D,x=0;S-1>>>x;)x++;D=Math.ceil(w*x/8),k=Math.ceil(D/4),m=new ArrayBuffer(4*k),(y=new Uint8Array(m)).set(new Uint8Array(A,e.ptr,D)),p=new Uint32Array(m),e.ptr+=D,b=n>=3?l(_,u,S-1,i,F,G):o(_,u,S-1,i,F,G),n>=3?g(p,t,x,w,b):s(p,t,x,w,b)}else e.counter.bitstuffer++,x=u,e.ptr+=B,x>0&&(D=Math.ceil(w*x/8),k=Math.ceil(D/4),m=new ArrayBuffer(4*k),(y=new Uint8Array(m)).set(new Uint8Array(A,e.ptr,D)),p=new Uint32Array(m),e.ptr+=D,n>=3?null==i?I(p,t,x,w):g(p,t,x,w,!1,i,F,G):null==i?h(p,t,x,w):s(p,t,x,w,!1,i,F,G))},readTiles:function(A,e,t,i){var r=e.headerInfo,a=r.width,n=r.height,s=a*n,o=r.microBlockSize,g=r.imageType,l=B.getDataTypeSize(g),h=Math.ceil(a/o),I=Math.ceil(n/o);e.pixels.numBlocksY=I,e.pixels.numBlocksX=h,e.pixels.ptr=0;var c,C,f,E,Q,d,u,w,p,m,y=0,D=0,k=0,b=0,_=0,S=0,x=0,F=0,G=0,U=0,R=0,M=0,L=0,v=0,N=0,T=new t(o*o),q=n%o||o,O=a%o||o,J=r.numDims,H=e.pixels.resultMask,Y=e.pixels.resultPixels,z=r.fileVersion>=5?14:15,P=r.zMax;for(k=0;k<I;k++)for(_=k!==I-1?o:q,b=0;b<h;b++)for(U=k*a*o+b*o,R=a-(S=b!==h-1?o:O),w=0;w<J;w++){if(J>1?(m=Y,U=k*a*o+b*o,Y=new t(e.pixels.resultPixels.buffer,s*w*l,s),P=r.maxValues[w]):m=null,x=A.byteLength-e.ptr,C={},N=0,F=(c=new DataView(A,e.ptr,Math.min(10,x))).getUint8(0),N++,p=r.fileVersion>=5?4&F:0,G=F>>6&255,(F>>2&z)!=(b*o>>3&z))throw"integrity issue";if(p&&0===w)throw"integrity issue";if((Q=3&F)>3)throw e.ptr+=N,"Invalid block encoding ("+Q+")";if(2!==Q)if(0===Q){if(p)throw"integrity issue";if(e.counter.uncompressed++,e.ptr+=N,M=(M=_*S*l)<(L=A.byteLength-e.ptr)?M:L,f=new ArrayBuffer(M%l==0?M:M+l-M%l),new Uint8Array(f).set(new Uint8Array(A,e.ptr,M)),E=new t(f),v=0,H)for(y=0;y<_;y++){for(D=0;D<S;D++)H[U]&&(Y[U]=E[v++]),U++;U+=R}else for(y=0;y<_;y++){for(D=0;D<S;D++)Y[U++]=E[v++];U+=R}e.ptr+=v*l}else if(d=B.getDataTypeUsed(p&&g<6?4:g,G),u=B.getOnePixel(C,N,d,c),N+=B.getDataTypeSize(d),3===Q)if(e.ptr+=N,e.counter.constantoffset++,H)for(y=0;y<_;y++){for(D=0;D<S;D++)H[U]&&(Y[U]=p?Math.min(P,m[U]+u):u),U++;U+=R}else for(y=0;y<_;y++){for(D=0;D<S;D++)Y[U]=p?Math.min(P,m[U]+u):u,U++;U+=R}else if(e.ptr+=N,B.decodeBits(A,e,T,u,w),N=0,p)if(H)for(y=0;y<_;y++){for(D=0;D<S;D++)H[U]&&(Y[U]=T[N++]+m[U]),U++;U+=R}else for(y=0;y<_;y++){for(D=0;D<S;D++)Y[U]=T[N++]+m[U],U++;U+=R}else if(H)for(y=0;y<_;y++){for(D=0;D<S;D++)H[U]&&(Y[U]=T[N++]),U++;U+=R}else for(y=0;y<_;y++){for(D=0;D<S;D++)Y[U++]=T[N++];U+=R}else{if(p)if(H)for(y=0;y<_;y++)for(D=0;D<S;D++)H[U]&&(Y[U]=m[U]),U++;else for(y=0;y<_;y++)for(D=0;D<S;D++)Y[U]=m[U],U++;e.counter.constant++,e.ptr+=N}}J>1&&!i&&(e.pixels.resultPixels=B.swapDimensionOrder(e.pixels.resultPixels,s,J,t))},formatFileInfo:function(A){return{fileIdentifierString:A.headerInfo.fileIdentifierString,fileVersion:A.headerInfo.fileVersion,imageType:A.headerInfo.imageType,height:A.headerInfo.height,width:A.headerInfo.width,numValidPixel:A.headerInfo.numValidPixel,microBlockSize:A.headerInfo.microBlockSize,blobSize:A.headerInfo.blobSize,maxZError:A.headerInfo.maxZError,pixelType:B.getPixelType(A.headerInfo.imageType),eofOffset:A.eofOffset,mask:A.mask?{numBytes:A.mask.numBytes}:null,pixels:{numBlocksX:A.pixels.numBlocksX,numBlocksY:A.pixels.numBlocksY,maxValue:A.headerInfo.zMax,minValue:A.headerInfo.zMin,noDataValue:A.noDataValue}}},constructConstantSurface:function(A,e){var t=A.headerInfo.zMax,i=A.headerInfo.zMin,r=A.headerInfo.maxValues,a=A.headerInfo.numDims,n=A.headerInfo.height*A.headerInfo.width,s=0,o=0,g=0,l=A.pixels.resultMask,h=A.pixels.resultPixels;if(l)if(a>1){if(e)for(s=0;s<a;s++)for(g=s*n,t=r[s],o=0;o<n;o++)l[o]&&(h[g+o]=t);else for(o=0;o<n;o++)if(l[o])for(g=o*a,s=0;s<a;s++)h[g+a]=r[s]}else for(o=0;o<n;o++)l[o]&&(h[o]=t);else if(a>1&&i!==t)if(e)for(s=0;s<a;s++)for(g=s*n,t=r[s],o=0;o<n;o++)h[g+o]=t;else for(o=0;o<n;o++)for(g=o*a,s=0;s<a;s++)h[g+s]=r[s];else for(o=0;o<n*a;o++)h[o]=t},getDataTypeArray:function(A){var e;switch(A){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:default:e=Float32Array;break;case 7:e=Float64Array}return e},getPixelType:function(A){var e;switch(A){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:default:e="F32";break;case 7:e="F64"}return e},isValidPixelValue:function(A,e){if(null==e)return!1;var t;switch(A){case 0:t=e>=-128&&e<=127;break;case 1:t=e>=0&&e<=255;break;case 2:t=e>=-32768&&e<=32767;break;case 3:t=e>=0&&e<=65536;break;case 4:t=e>=-2147483648&&e<=2147483647;break;case 5:t=e>=0&&e<=4294967296;break;case 6:t=e>=-34027999387901484e22&&e<=34027999387901484e22;break;case 7:t=e>=-17976931348623157e292&&e<=17976931348623157e292;break;default:t=!1}return t},getDataTypeSize:function(A){var e=0;switch(A){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=A}return e},getDataTypeUsed:function(A,e){var t=A;switch(A){case 2:case 4:t=A-e;break;case 3:case 5:t=A-2*e;break;case 6:t=0===e?A:1===e?2:1;break;case 7:t=0===e?A:A-2*e+1;break;default:t=A}return t},getOnePixel:function(A,e,t,i){var r=0;switch(t){case 0:r=i.getInt8(e);break;case 1:r=i.getUint8(e);break;case 2:r=i.getInt16(e,!0);break;case 3:r=i.getUint16(e,!0);break;case 4:r=i.getInt32(e,!0);break;case 5:r=i.getUInt32(e,!0);break;case 6:r=i.getFloat32(e,!0);break;case 7:r=i.getFloat64(e,!0);break;default:throw"the decoder does not understand this pixel type"}return r},swapDimensionOrder:function(A,e,t,i,r){var a=0,n=0,s=0,o=0,g=A;if(t>1)if(g=new i(e*t),r)for(a=0;a<e;a++)for(o=a,s=0;s<t;s++,o+=e)g[o]=A[n++];else for(a=0;a<e;a++)for(o=a,s=0;s<t;s++,o+=e)g[n++]=A[o];return g}},c=function(A,e,t){this.val=A,this.left=e,this.right=t},{decode:function(A,e){var t=(e=e||{}).noDataValue,i=0,r={};if(r.ptr=e.inputOffset||0,r.pixels={},B.readHeaderInfo(A,r)){var a=r.headerInfo,n=a.fileVersion,s=B.getDataTypeArray(a.imageType);if(n>5)throw"unsupported lerc version 2."+n;B.readMask(A,r),a.numValidPixel===a.width*a.height||r.pixels.resultMask||(r.pixels.resultMask=e.maskData);var o=a.width*a.height;r.pixels.resultPixels=new s(o*a.numDims),r.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0};var g,l=!e.returnPixelInterleavedDims;if(0!==a.numValidPixel)if(a.zMax===a.zMin)B.constructConstantSurface(r,l);else if(n>=4&&B.checkMinMaxRanges(A,r))B.constructConstantSurface(r,l);else{var h=new DataView(A,r.ptr,2),I=h.getUint8(0);if(r.ptr++,I)B.readDataOneSweep(A,r,s,l);else if(n>1&&a.imageType<=1&&Math.abs(a.maxZError-.5)<1e-5){var c=h.getUint8(1);if(r.ptr++,r.encodeMode=c,c>2||n<4&&c>1)throw"Invalid Huffman flag "+c;c?B.readHuffman(A,r,s,l):B.readTiles(A,r,s,l)}else B.readTiles(A,r,s,l)}r.eofOffset=r.ptr,e.inputOffset?(g=r.headerInfo.blobSize+e.inputOffset-r.ptr,Math.abs(g)>=1&&(r.eofOffset=e.inputOffset+r.headerInfo.blobSize)):(g=r.headerInfo.blobSize-r.ptr,Math.abs(g)>=1&&(r.eofOffset=r.headerInfo.blobSize));var C={width:a.width,height:a.height,pixelData:r.pixels.resultPixels,minValue:a.zMin,maxValue:a.zMax,validPixelCount:a.numValidPixel,dimCount:a.numDims,dimStats:{minValues:a.minValues,maxValues:a.maxValues},maskData:r.pixels.resultMask};if(r.pixels.resultMask&&B.isValidPixelValue(a.imageType,t)){var f=r.pixels.resultMask;for(i=0;i<o;i++)f[i]||(C.pixelData[i]=t);C.noDataValue=t}return r.noDataValue=t,e.returnFileInfo&&(C.fileInfo=B.formatFileInfo(r)),C}},getBandCount:function(A){for(var e=0,t=0,i={ptr:0,pixels:{}};t<A.byteLength-58;)B.readHeaderInfo(A,i),t+=i.headerInfo.blobSize,e++,i.ptr=t;return e}}),d=(C=new ArrayBuffer(4),f=new Uint8Array(C),new Uint32Array(C)[0]=1,1===f[0]),u={decode:function(A,e){if(!d)throw"Big endian system is not supported.";var t,i,r=(e=e||{}).inputOffset||0,a=new Uint8Array(A,r,10),n=String.fromCharCode.apply(null,a);if("CntZImage"===n.trim())t=E,i=1;else{if("Lerc2"!==n.substring(0,5))throw"Unexpected file identifier string: "+n;t=Q,i=2}for(var s,o,g,l,h,I,B=0,c=A.byteLength-10,C=[],f={width:0,height:0,pixels:[],pixelType:e.pixelType,mask:null,statistics:[]},u=0;r<c;){var w=t.decode(A,{inputOffset:r,encodedMaskData:s,maskData:g,returnMask:0===B,returnEncodedMask:0===B,returnFileInfo:!0,returnPixelInterleavedDims:e.returnPixelInterleavedDims,pixelType:e.pixelType||null,noDataValue:e.noDataValue||null});r=w.fileInfo.eofOffset,g=w.maskData,0===B&&(s=w.encodedMaskData,f.width=w.width,f.height=w.height,f.dimCount=w.dimCount||1,f.pixelType=w.pixelType||w.fileInfo.pixelType,f.mask=g),i>1&&(g&&C.push(g),w.fileInfo.mask&&w.fileInfo.mask.numBytes>0&&u++),B++,f.pixels.push(w.pixelData),f.statistics.push({minValue:w.minValue,maxValue:w.maxValue,noDataValue:w.noDataValue,dimStats:w.dimStats})}if(i>1&&u>1){for(I=f.width*f.height,f.bandMasks=C,(g=new Uint8Array(I)).set(C[0]),l=1;l<C.length;l++)for(o=C[l],h=0;h<I;h++)g[h]=g[h]&o[h];f.maskData=g}return f}};A.exports?A.exports=u:this.Lerc=u}()}(La);var va=nA(La.exports);let Na,Ta,qa;const Oa={env:{emscripten_notify_memory_growth:function(A){qa=new Uint8Array(Ta.exports.memory.buffer)}}};const Ja="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEEdCAAbiECCyAAQQh2IgEgAkEYbCIAQYwIaigCAGwgAEGICGooAgBqIgJBA3YgAmogAEGACGooAgAgAEGECGooAgAgAWxqSQs3ACAAIAMgBCAFQYAQEDMiBRADBEAgBQ8LIAUgBEkEfyABIAIgAyAFaiAEIAVrIAAQMgVBuH8LC78DAQN/IwBBIGsiBSQAIAVBCGogAiADEAYiAhADRQRAIAAgAWoiB0F9aiEGIAUgBBAOIARBBGohAiAFLQACIQMDQEEAIAAgBkkgBUEIahAEGwRAIAAgAiAFQQhqIAMQAkECdGoiBC8BADsAACAFQQhqIAQtAAIQASAAIAQtAANqIgQgAiAFQQhqIAMQAkECdGoiAC8BADsAACAFQQhqIAAtAAIQASAEIAAtAANqIQAMAQUgB0F+aiEEA0AgBUEIahAEIAAgBEtyRQRAIAAgAiAFQQhqIAMQAkECdGoiBi8BADsAACAFQQhqIAYtAAIQASAAIAYtAANqIQAMAQsLA0AgACAES0UEQCAAIAIgBUEIaiADEAJBAnRqIgYvAQA7AAAgBUEIaiAGLQACEAEgACAGLQADaiEADAELCwJAIAAgB08NACAAIAIgBUEIaiADEAIiA0ECdGoiAC0AADoAACAALQADQQFGBEAgBUEIaiAALQACEAEMAQsgBSgCDEEfSw0AIAVBCGogAiADQQJ0ai0AAhABIAUoAgxBIUkNACAFQSA2AgwLIAFBbCAFQQhqEAobIQILCwsgBUEgaiQAIAILkgIBBH8jAEFAaiIJJAAgCSADQTQQCyEDAkAgBEECSA0AIAMgBEECdGooAgAhCSADQTxqIAgQIyADQQE6AD8gAyACOgA+QQAhBCADKAI8IQoDQCAEIAlGDQEgACAEQQJ0aiAKNgEAIARBAWohBAwAAAsAC0EAIQkDQCAGIAlGRQRAIAMgBSAJQQF0aiIKLQABIgtBAnRqIgwoAgAhBCADQTxqIAotAABBCHQgCGpB//8DcRAjIANBAjoAPyADIAcgC2siCiACajoAPiAEQQEgASAKa3RqIQogAygCPCELA0AgACAEQQJ0aiALNgEAIARBAWoiBCAKSQ0ACyAMIAo2AgAgCUEBaiEJDAELCyADQUBrJAALowIBCX8jAEHQAGsiCSQAIAlBEGogBUE0EAsaIAcgBmshDyAHIAFrIRADQAJAIAMgCkcEQEEBIAEgByACIApBAXRqIgYtAAEiDGsiCGsiC3QhDSAGLQAAIQ4gCUEQaiAMQQJ0aiIMKAIAIQYgCyAPTwRAIAAgBkECdGogCyAIIAUgCEE0bGogCCAQaiIIQQEgCEEBShsiCCACIAQgCEECdGooAgAiCEEBdGogAyAIayAHIA4QYyAGIA1qIQgMAgsgCUEMaiAOECMgCUEBOgAPIAkgCDoADiAGIA1qIQggCSgCDCELA0AgBiAITw0CIAAgBkECdGogCzYBACAGQQFqIQYMAAALAAsgCUHQAGokAA8LIAwgCDYCACAKQQFqIQoMAAALAAs0ACAAIAMgBCAFEDYiBRADBEAgBQ8LIAUgBEkEfyABIAIgAyAFaiAEIAVrIAAQNAVBuH8LCyMAIAA/AEEQdGtB//8DakEQdkAAQX9GBEBBAA8LQQAQAEEBCzsBAX8gAgRAA0AgACABIAJBgCAgAkGAIEkbIgMQCyEAIAFBgCBqIQEgAEGAIGohACACIANrIgINAAsLCwYAIAAQAwsLqBUJAEGICAsNAQAAAAEAAAACAAAAAgBBoAgLswYBAAAAAQAAAAIAAAACAAAAJgAAAIIAAAAhBQAASgAAAGcIAAAmAAAAwAEAAIAAAABJBQAASgAAAL4IAAApAAAALAIAAIAAAABJBQAASgAAAL4IAAAvAAAAygIAAIAAAACKBQAASgAAAIQJAAA1AAAAcwMAAIAAAACdBQAASgAAAKAJAAA9AAAAgQMAAIAAAADrBQAASwAAAD4KAABEAAAAngMAAIAAAABNBgAASwAAAKoKAABLAAAAswMAAIAAAADBBgAATQAAAB8NAABNAAAAUwQAAIAAAAAjCAAAUQAAAKYPAABUAAAAmQQAAIAAAABLCQAAVwAAALESAABYAAAA2gQAAIAAAABvCQAAXQAAACMUAABUAAAARQUAAIAAAABUCgAAagAAAIwUAABqAAAArwUAAIAAAAB2CQAAfAAAAE4QAAB8AAAA0gIAAIAAAABjBwAAkQAAAJAHAACSAAAAAAAAAAEAAAABAAAABQAAAA0AAAAdAAAAPQAAAH0AAAD9AAAA/QEAAP0DAAD9BwAA/Q8AAP0fAAD9PwAA/X8AAP3/AAD9/wEA/f8DAP3/BwD9/w8A/f8fAP3/PwD9/38A/f//AP3//wH9//8D/f//B/3//w/9//8f/f//P/3//38AAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACUAAAAnAAAAKQAAACsAAAAvAAAAMwAAADsAAABDAAAAUwAAAGMAAACDAAAAAwEAAAMCAAADBAAAAwgAAAMQAAADIAAAA0AAAAOAAAADAAEAQeAPC1EBAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAQcQQC4sBAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABIAAAAUAAAAFgAAABgAAAAcAAAAIAAAACgAAAAwAAAAQAAAAIAAAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAAAAQBBkBIL5gQBAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAAAEAAAAEAAAACAAAAAAAAAABAAEBBgAAAAAAAAQAAAAAEAAABAAAAAAgAAAFAQAAAAAAAAUDAAAAAAAABQQAAAAAAAAFBgAAAAAAAAUHAAAAAAAABQkAAAAAAAAFCgAAAAAAAAUMAAAAAAAABg4AAAAAAAEFEAAAAAAAAQUUAAAAAAABBRYAAAAAAAIFHAAAAAAAAwUgAAAAAAAEBTAAAAAgAAYFQAAAAAAABwWAAAAAAAAIBgABAAAAAAoGAAQAAAAADAYAEAAAIAAABAAAAAAAAAAEAQAAAAAAAAUCAAAAIAAABQQAAAAAAAAFBQAAACAAAAUHAAAAAAAABQgAAAAgAAAFCgAAAAAAAAULAAAAAAAABg0AAAAgAAEFEAAAAAAAAQUSAAAAIAABBRYAAAAAAAIFGAAAACAAAwUgAAAAAAADBSgAAAAAAAYEQAAAABAABgRAAAAAIAAHBYAAAAAAAAkGAAIAAAAACwYACAAAMAAABAAAAAAQAAAEAQAAACAAAAUCAAAAIAAABQMAAAAgAAAFBQAAACAAAAUGAAAAIAAABQgAAAAgAAAFCQAAACAAAAULAAAAIAAABQwAAAAAAAAGDwAAACAAAQUSAAAAIAABBRQAAAAgAAIFGAAAACAAAgUcAAAAIAADBSgAAAAgAAQFMAAAAAAAEAYAAAEAAAAPBgCAAAAAAA4GAEAAAAAADQYAIABBgBcLhwIBAAEBBQAAAAAAAAUAAAAAAAAGBD0AAAAAAAkF/QEAAAAADwX9fwAAAAAVBf3/HwAAAAMFBQAAAAAABwR9AAAAAAAMBf0PAAAAABIF/f8DAAAAFwX9/38AAAAFBR0AAAAAAAgE/QAAAAAADgX9PwAAAAAUBf3/DwAAAAIFAQAAABAABwR9AAAAAAALBf0HAAAAABEF/f8BAAAAFgX9/z8AAAAEBQ0AAAAQAAgE/QAAAAAADQX9HwAAAAATBf3/BwAAAAEFAQAAABAABgQ9AAAAAAAKBf0DAAAAABAF/f8AAAAAHAX9//8PAAAbBf3//wcAABoF/f//AwAAGQX9//8BAAAYBf3//wBBkBkLhgQBAAEBBgAAAAAAAAYDAAAAAAAABAQAAAAgAAAFBQAAAAAAAAUGAAAAAAAABQgAAAAAAAAFCQAAAAAAAAULAAAAAAAABg0AAAAAAAAGEAAAAAAAAAYTAAAAAAAABhYAAAAAAAAGGQAAAAAAAAYcAAAAAAAABh8AAAAAAAAGIgAAAAAAAQYlAAAAAAABBikAAAAAAAIGLwAAAAAAAwY7AAAAAAAEBlMAAAAAAAcGgwAAAAAACQYDAgAAEAAABAQAAAAAAAAEBQAAACAAAAUGAAAAAAAABQcAAAAgAAAFCQAAAAAAAAUKAAAAAAAABgwAAAAAAAAGDwAAAAAAAAYSAAAAAAAABhUAAAAAAAAGGAAAAAAAAAYbAAAAAAAABh4AAAAAAAAGIQAAAAAAAQYjAAAAAAABBicAAAAAAAIGKwAAAAAAAwYzAAAAAAAEBkMAAAAAAAUGYwAAAAAACAYDAQAAIAAABAQAAAAwAAAEBAAAABAAAAQFAAAAIAAABQcAAAAgAAAFCAAAACAAAAUKAAAAIAAABQsAAAAAAAAGDgAAAAAAAAYRAAAAAAAABhQAAAAAAAAGFwAAAAAAAAYaAAAAAAAABh0AAAAAAAAGIAAAAAAAEAYDAAEAAAAPBgOAAAAAAA4GA0AAAAAADQYDIAAAAAAMBgMQAAAAAAsGAwgAAAAACgYDBABBpB0L2QEBAAAAAwAAAAcAAAAPAAAAHwAAAD8AAAB/AAAA/wAAAP8BAAD/AwAA/wcAAP8PAAD/HwAA/z8AAP9/AAD//wAA//8BAP//AwD//wcA//8PAP//HwD//z8A//9/AP///wD///8B////A////wf///8P////H////z////9/AAAAAAEAAAACAAAABAAAAAAAAAACAAAABAAAAAgAAAAAAAAAAQAAAAIAAAABAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAcAAAAIAAAACQAAAAoAAAALAEGgIAsDwBBQ",Ha=new class{init(){return Na||(Na="undefined"!=typeof fetch?fetch("data:application/wasm;base64,"+Ja).then((A=>A.arrayBuffer())).then((A=>WebAssembly.instantiate(A,Oa))).then(this._init):WebAssembly.instantiate(Buffer.from(Ja,"base64"),Oa).then(this._init),Na)}_init(A){Ta=A.instance,Oa.env.emscripten_notify_memory_growth(0)}decode(A,e=0){if(!Ta)throw new Error("ZSTDDecoder: Await .init() before decoding.");const t=A.byteLength,i=Ta.exports.malloc(t);qa.set(A,i),e=e||Number(Ta.exports.ZSTD_findDecompressedSize(i,t));const r=Ta.exports.malloc(e),a=Ta.exports.ZSTD_decompress(r,e,i,t),n=qa.slice(r,r+a);return Ta.exports.free(i),Ta.exports.free(r),n}};var Ya=Object.freeze({__proto__:null,default:class extends xe{constructor(A){super(),this.planarConfiguration=void 0!==A.PlanarConfiguration?A.PlanarConfiguration:1,this.samplesPerPixel=void 0!==A.SamplesPerPixel?A.SamplesPerPixel:1,this.addCompression=A.LercParameters[OA]}decodeBlock(A){switch(this.addCompression){case JA:break;case HA:A=Ua(new Uint8Array(A)).buffer;break;case YA:A=Ha.decode(new Uint8Array(A)).buffer;break;default:throw new Error(`Unsupported LERC additional compression method identifier: ${this.addCompression}`)}return va.decode(A,{returnPixelInterleavedDims:1===this.planarConfiguration}).pixels[0].buffer}},zstd:Ha});var za=Object.freeze({__proto__:null,default:class extends xe{constructor(){if(super(),"undefined"==typeof createImageBitmap)throw new Error("Cannot decode WebImage as `createImageBitmap` is not available");if("undefined"==typeof document&&"undefined"==typeof OffscreenCanvas)throw new Error("Cannot decode WebImage as neither `document` nor `OffscreenCanvas` is not available")}async decode(A,e){const t=new Blob([e]),i=await createImageBitmap(t);let r;"undefined"!=typeof document?(r=document.createElement("canvas"),r.width=i.width,r.height=i.height):r=new OffscreenCanvas(i.width,i.height);const a=r.getContext("2d");return a.drawImage(i,0,0),a.getImageData(0,0,i.width,i.height).data.buffer}}});module.exports=nt;
4
+ function(){var A,g,I,e,t,B,i,C,Q,E,s,a,o,r,n,h,l=(A={defaultNoDataValue:-34027999387901484e22,decode:function(B,i){var C=(i=i||{}).encodedMaskData||null===i.encodedMaskData,Q=t(B,i.inputOffset||0,C),E=null!==i.noDataValue?i.noDataValue:A.defaultNoDataValue,s=g(Q,i.pixelType||Float32Array,i.encodedMaskData,E,i.returnMask),a={width:Q.width,height:Q.height,pixelData:s.resultPixels,minValue:s.minValue,maxValue:Q.pixels.maxValue,noDataValue:E};return s.resultMask&&(a.maskData=s.resultMask),i.returnEncodedMask&&Q.mask&&(a.encodedMaskData=Q.mask.bitset?Q.mask.bitset:null),i.returnFileInfo&&(a.fileInfo=I(Q),i.computeUsedBitDepths&&(a.fileInfo.bitDepths=e(Q))),a}},g=function(A,g,I,e,t){var i,C,Q,E=0,s=A.pixels.numBlocksX,a=A.pixels.numBlocksY,o=Math.floor(A.width/s),r=Math.floor(A.height/a),n=2*A.maxZError,h=Number.MAX_VALUE;I=I||(A.mask?A.mask.bitset:null),C=new g(A.width*A.height),t&&I&&(Q=new Uint8Array(A.width*A.height));for(var l,c,w=new Float32Array(o*r),D=0;D<=a;D++){var d=D!==a?r:A.height%a;if(0!==d)for(var y=0;y<=s;y++){var f=y!==s?o:A.width%s;if(0!==f){var u,S,G,N,F=D*A.width*r+y*o,k=A.width-f,R=A.pixels.blocks[E];if(R.encoding<2?(0===R.encoding?u=R.rawData:(B(R.stuffedData,R.bitsPerPixel,R.numValidPixels,R.offset,n,w,A.pixels.maxValue),u=w),S=0):G=2===R.encoding?0:R.offset,I)for(c=0;c<d;c++){for(7&F&&(N=I[F>>3],N<<=7&F),l=0;l<f;l++)7&F||(N=I[F>>3]),128&N?(Q&&(Q[F]=1),h=h>(i=R.encoding<2?u[S++]:G)?i:h,C[F++]=i):(Q&&(Q[F]=0),C[F++]=e),N<<=1;F+=k}else if(R.encoding<2)for(c=0;c<d;c++){for(l=0;l<f;l++)h=h>(i=u[S++])?i:h,C[F++]=i;F+=k}else for(h=h>G?G:h,c=0;c<d;c++){for(l=0;l<f;l++)C[F++]=G;F+=k}if(1===R.encoding&&S!==R.numValidPixels)throw"Block and Mask do not match";E++}}}return{resultPixels:C,resultMask:Q,minValue:h}},I=function(A){return{fileIdentifierString:A.fileIdentifierString,fileVersion:A.fileVersion,imageType:A.imageType,height:A.height,width:A.width,maxZError:A.maxZError,eofOffset:A.eofOffset,mask:A.mask?{numBlocksX:A.mask.numBlocksX,numBlocksY:A.mask.numBlocksY,numBytes:A.mask.numBytes,maxValue:A.mask.maxValue}:null,pixels:{numBlocksX:A.pixels.numBlocksX,numBlocksY:A.pixels.numBlocksY,numBytes:A.pixels.numBytes,maxValue:A.pixels.maxValue,noDataValue:A.noDataValue}}},e=function(A){for(var g=A.pixels.numBlocksX*A.pixels.numBlocksY,I={},e=0;e<g;e++){var t=A.pixels.blocks[e];0===t.encoding?I.float32=!0:1===t.encoding?I[t.bitsPerPixel]=!0:I[0]=!0}return Object.keys(I)},t=function(A,g,I){var e={},t=new Uint8Array(A,g,10);if(e.fileIdentifierString=String.fromCharCode.apply(null,t),"CntZImage"!==e.fileIdentifierString.trim())throw"Unexpected file identifier string: "+e.fileIdentifierString;g+=10;var B=new DataView(A,g,24);if(e.fileVersion=B.getInt32(0,!0),e.imageType=B.getInt32(4,!0),e.height=B.getUint32(8,!0),e.width=B.getUint32(12,!0),e.maxZError=B.getFloat64(16,!0),g+=24,!I)if(B=new DataView(A,g,16),e.mask={},e.mask.numBlocksY=B.getUint32(0,!0),e.mask.numBlocksX=B.getUint32(4,!0),e.mask.numBytes=B.getUint32(8,!0),e.mask.maxValue=B.getFloat32(12,!0),g+=16,e.mask.numBytes>0){var i=new Uint8Array(Math.ceil(e.width*e.height/8)),C=(B=new DataView(A,g,e.mask.numBytes)).getInt16(0,!0),Q=2,E=0;do{if(C>0)for(;C--;)i[E++]=B.getUint8(Q++);else{var s=B.getUint8(Q++);for(C=-C;C--;)i[E++]=s}C=B.getInt16(Q,!0),Q+=2}while(Q<e.mask.numBytes);if(-32768!==C||E<i.length)throw"Unexpected end of mask RLE encoding";e.mask.bitset=i,g+=e.mask.numBytes}else 0===(e.mask.numBytes|e.mask.numBlocksY|e.mask.maxValue)&&(e.mask.bitset=new Uint8Array(Math.ceil(e.width*e.height/8)));B=new DataView(A,g,16),e.pixels={},e.pixels.numBlocksY=B.getUint32(0,!0),e.pixels.numBlocksX=B.getUint32(4,!0),e.pixels.numBytes=B.getUint32(8,!0),e.pixels.maxValue=B.getFloat32(12,!0),g+=16;var a=e.pixels.numBlocksX,o=e.pixels.numBlocksY,r=a+(e.width%a>0?1:0),n=o+(e.height%o>0?1:0);e.pixels.blocks=new Array(r*n);for(var h=0,l=0;l<n;l++)for(var c=0;c<r;c++){var w=0,D=A.byteLength-g;B=new DataView(A,g,Math.min(10,D));var d={};e.pixels.blocks[h++]=d;var y=B.getUint8(0);if(w++,d.encoding=63&y,d.encoding>3)throw"Invalid block encoding ("+d.encoding+")";if(2!==d.encoding){if(0!==y&&2!==y){if(y>>=6,d.offsetType=y,2===y)d.offset=B.getInt8(1),w++;else if(1===y)d.offset=B.getInt16(1,!0),w+=2;else{if(0!==y)throw"Invalid block offset type";d.offset=B.getFloat32(1,!0),w+=4}if(1===d.encoding)if(y=B.getUint8(w),w++,d.bitsPerPixel=63&y,y>>=6,d.numValidPixelsType=y,2===y)d.numValidPixels=B.getUint8(w),w++;else if(1===y)d.numValidPixels=B.getUint16(w,!0),w+=2;else{if(0!==y)throw"Invalid valid pixel count type";d.numValidPixels=B.getUint32(w,!0),w+=4}}var f;if(g+=w,3!==d.encoding)if(0===d.encoding){var u=(e.pixels.numBytes-1)/4;if(u!==Math.floor(u))throw"uncompressed block has invalid length";f=new ArrayBuffer(4*u),new Uint8Array(f).set(new Uint8Array(A,g,4*u));var S=new Float32Array(f);d.rawData=S,g+=4*u}else if(1===d.encoding){var G=Math.ceil(d.numValidPixels*d.bitsPerPixel/8),N=Math.ceil(G/4);f=new ArrayBuffer(4*N),new Uint8Array(f).set(new Uint8Array(A,g,G)),d.stuffedData=new Uint32Array(f),g+=G}}else g++}return e.eofOffset=g,e},B=function(A,g,I,e,t,B,i){var C,Q,E,s=(1<<g)-1,a=0,o=0,r=Math.ceil((i-e)/t),n=4*A.length-Math.ceil(g*I/8);for(A[A.length-1]<<=8*n,C=0;C<I;C++){if(0===o&&(E=A[a++],o=32),o>=g)Q=E>>>o-g&s,o-=g;else{var h=g-o;Q=(E&s)<<h&s,Q+=(E=A[a++])>>>(o=32-h)}B[C]=Q<r?e+Q*t:i}return B},A),c=(i=function(A,g,I,e,t,B,i,C){var Q,E,s,a,o,r=(1<<I)-1,n=0,h=0,l=4*A.length-Math.ceil(I*e/8);if(A[A.length-1]<<=8*l,t)for(Q=0;Q<e;Q++)0===h&&(s=A[n++],h=32),h>=I?(E=s>>>h-I&r,h-=I):(E=(s&r)<<(a=I-h)&r,E+=(s=A[n++])>>>(h=32-a)),g[Q]=t[E];else for(o=Math.ceil((C-B)/i),Q=0;Q<e;Q++)0===h&&(s=A[n++],h=32),h>=I?(E=s>>>h-I&r,h-=I):(E=(s&r)<<(a=I-h)&r,E+=(s=A[n++])>>>(h=32-a)),g[Q]=E<o?B+E*i:C},C=function(A,g,I,e,t,B){var i,C=(1<<g)-1,Q=0,E=0,s=0,a=0,o=0,r=[],n=4*A.length-Math.ceil(g*I/8);A[A.length-1]<<=8*n;var h=Math.ceil((B-e)/t);for(E=0;E<I;E++)0===a&&(i=A[Q++],a=32),a>=g?(o=i>>>a-g&C,a-=g):(o=(i&C)<<(s=g-a)&C,o+=(i=A[Q++])>>>(a=32-s)),r[E]=o<h?e+o*t:B;return r.unshift(e),r},Q=function(A,g,I,e,t,B,i,C){var Q,E,s,a,o=(1<<I)-1,r=0,n=0,h=0;if(t)for(Q=0;Q<e;Q++)0===n&&(s=A[r++],n=32,h=0),n>=I?(E=s>>>h&o,n-=I,h+=I):(E=s>>>h&o,n=32-(a=I-n),E|=((s=A[r++])&(1<<a)-1)<<I-a,h=a),g[Q]=t[E];else{var l=Math.ceil((C-B)/i);for(Q=0;Q<e;Q++)0===n&&(s=A[r++],n=32,h=0),n>=I?(E=s>>>h&o,n-=I,h+=I):(E=s>>>h&o,n=32-(a=I-n),E|=((s=A[r++])&(1<<a)-1)<<I-a,h=a),g[Q]=E<l?B+E*i:C}return g},E=function(A,g,I,e,t,B){var i,C=(1<<g)-1,Q=0,E=0,s=0,a=0,o=0,r=0,n=[],h=Math.ceil((B-e)/t);for(E=0;E<I;E++)0===a&&(i=A[Q++],a=32,r=0),a>=g?(o=i>>>r&C,a-=g,r+=g):(o=i>>>r&C,a=32-(s=g-a),o|=((i=A[Q++])&(1<<s)-1)<<g-s,r=s),n[E]=o<h?e+o*t:B;return n.unshift(e),n},s=function(A,g,I,e){var t,B,i,C,Q=(1<<I)-1,E=0,s=0,a=4*A.length-Math.ceil(I*e/8);for(A[A.length-1]<<=8*a,t=0;t<e;t++)0===s&&(i=A[E++],s=32),s>=I?(B=i>>>s-I&Q,s-=I):(B=(i&Q)<<(C=I-s)&Q,B+=(i=A[E++])>>>(s=32-C)),g[t]=B;return g},a=function(A,g,I,e){var t,B,i,C,Q=(1<<I)-1,E=0,s=0,a=0;for(t=0;t<e;t++)0===s&&(i=A[E++],s=32,a=0),s>=I?(B=i>>>a&Q,s-=I,a+=I):(B=i>>>a&Q,s=32-(C=I-s),B|=((i=A[E++])&(1<<C)-1)<<I-C,a=C),g[t]=B;return g},o={HUFFMAN_LUT_BITS_MAX:12,computeChecksumFletcher32:function(A){for(var g=65535,I=65535,e=A.length,t=Math.floor(e/2),B=0;t;){var i=t>=359?359:t;t-=i;do{g+=A[B++]<<8,I+=g+=A[B++]}while(--i);g=(65535&g)+(g>>>16),I=(65535&I)+(I>>>16)}return 1&e&&(I+=g+=A[B]<<8),((I=(65535&I)+(I>>>16))<<16|(g=(65535&g)+(g>>>16)))>>>0},readHeaderInfo:function(A,g){var I=g.ptr,e=new Uint8Array(A,I,6),t={};if(t.fileIdentifierString=String.fromCharCode.apply(null,e),0!==t.fileIdentifierString.lastIndexOf("Lerc2",0))throw"Unexpected file identifier string (expect Lerc2 ): "+t.fileIdentifierString;I+=6;var B,i=new DataView(A,I,8),C=i.getInt32(0,!0);if(t.fileVersion=C,I+=4,C>=3&&(t.checksum=i.getUint32(4,!0),I+=4),i=new DataView(A,I,12),t.height=i.getUint32(0,!0),t.width=i.getUint32(4,!0),I+=8,C>=4?(t.numDims=i.getUint32(8,!0),I+=4):t.numDims=1,i=new DataView(A,I,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),I+=40,g.headerInfo=t,g.ptr=I,C>=3&&(B=C>=4?52:48,this.computeChecksumFletcher32(new Uint8Array(A,I-B,t.blobSize-14))!==t.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(A,g){var I=g.headerInfo,e=this.getDataTypeArray(I.imageType),t=I.numDims*this.getDataTypeSize(I.imageType),B=this.readSubArray(A,g.ptr,e,t),i=this.readSubArray(A,g.ptr+t,e,t);g.ptr+=2*t;var C,Q=!0;for(C=0;C<I.numDims;C++)if(B[C]!==i[C]){Q=!1;break}return I.minValues=B,I.maxValues=i,Q},readSubArray:function(A,g,I,e){var t;if(I===Uint8Array)t=new Uint8Array(A,g,e);else{var B=new ArrayBuffer(e);new Uint8Array(B).set(new Uint8Array(A,g,e)),t=new I(B)}return t},readMask:function(A,g){var I,e,t=g.ptr,B=g.headerInfo,i=B.width*B.height,C=B.numValidPixel,Q=new DataView(A,t,4),E={};if(E.numBytes=Q.getUint32(0,!0),t+=4,(0===C||i===C)&&0!==E.numBytes)throw"invalid mask";if(0===C)I=new Uint8Array(Math.ceil(i/8)),E.bitset=I,e=new Uint8Array(i),g.pixels.resultMask=e,t+=E.numBytes;else if(E.numBytes>0){I=new Uint8Array(Math.ceil(i/8));var s=(Q=new DataView(A,t,E.numBytes)).getInt16(0,!0),a=2,o=0,r=0;do{if(s>0)for(;s--;)I[o++]=Q.getUint8(a++);else for(r=Q.getUint8(a++),s=-s;s--;)I[o++]=r;s=Q.getInt16(a,!0),a+=2}while(a<E.numBytes);if(-32768!==s||o<I.length)throw"Unexpected end of mask RLE encoding";e=new Uint8Array(i);var n=0,h=0;for(h=0;h<i;h++)7&h?(n=I[h>>3],n<<=7&h):n=I[h>>3],128&n&&(e[h]=1);g.pixels.resultMask=e,E.bitset=I,t+=E.numBytes}return g.ptr=t,g.mask=E,!0},readDataOneSweep:function(A,g,I,e){var t,B=g.ptr,i=g.headerInfo,C=i.numDims,Q=i.width*i.height,E=i.imageType,s=i.numValidPixel*o.getDataTypeSize(E)*C,a=g.pixels.resultMask;if(I===Uint8Array)t=new Uint8Array(A,B,s);else{var r=new ArrayBuffer(s);new Uint8Array(r).set(new Uint8Array(A,B,s)),t=new I(r)}if(t.length===Q*C)g.pixels.resultPixels=e?o.swapDimensionOrder(t,Q,C,I,!0):t;else{g.pixels.resultPixels=new I(Q*C);var n=0,h=0,l=0,c=0;if(C>1){if(e){for(h=0;h<Q;h++)if(a[h])for(c=h,l=0;l<C;l++,c+=Q)g.pixels.resultPixels[c]=t[n++]}else for(h=0;h<Q;h++)if(a[h])for(c=h*C,l=0;l<C;l++)g.pixels.resultPixels[c+l]=t[n++]}else for(h=0;h<Q;h++)a[h]&&(g.pixels.resultPixels[h]=t[n++])}return B+=s,g.ptr=B,!0},readHuffmanTree:function(A,g){var I=this.HUFFMAN_LUT_BITS_MAX,e=new DataView(A,g.ptr,16);if(g.ptr+=16,e.getInt32(0,!0)<2)throw"unsupported Huffman version";var t=e.getInt32(4,!0),B=e.getInt32(8,!0),i=e.getInt32(12,!0);if(B>=i)return!1;var C=new Uint32Array(i-B);o.decodeBits(A,g,C);var Q,E,s,a,n=[];for(Q=B;Q<i;Q++)n[E=Q-(Q<t?0:t)]={first:C[Q-B],second:null};var h=A.byteLength-g.ptr,l=Math.ceil(h/4),c=new ArrayBuffer(4*l);new Uint8Array(c).set(new Uint8Array(A,g.ptr,h));var w,D=new Uint32Array(c),d=0,y=0;for(w=D[0],Q=B;Q<i;Q++)(a=n[E=Q-(Q<t?0:t)].first)>0&&(n[E].second=w<<d>>>32-a,32-d>=a?32===(d+=a)&&(d=0,w=D[++y]):(d+=a-32,w=D[++y],n[E].second|=w>>>32-d));var f=0,u=0,S=new r;for(Q=0;Q<n.length;Q++)void 0!==n[Q]&&(f=Math.max(f,n[Q].first));u=f>=I?I:f;var G,N,F,k,R,L=[];for(Q=B;Q<i;Q++)if((a=n[E=Q-(Q<t?0:t)].first)>0)if(G=[a,E],a<=u)for(N=n[E].second<<u-a,F=1<<u-a,s=0;s<F;s++)L[N|s]=G;else for(N=n[E].second,R=S,k=a-1;k>=0;k--)N>>>k&1?(R.right||(R.right=new r),R=R.right):(R.left||(R.left=new r),R=R.left),0!==k||R.val||(R.val=G[1]);return{decodeLut:L,numBitsLUTQick:u,numBitsLUT:f,tree:S,stuffedData:D,srcPtr:y,bitPos:d}},readHuffman:function(A,g,I,e){var t,B,i,C,Q,E,s,a,r,n=g.headerInfo.numDims,h=g.headerInfo.height,l=g.headerInfo.width,c=l*h,w=this.readHuffmanTree(A,g),D=w.decodeLut,d=w.tree,y=w.stuffedData,f=w.srcPtr,u=w.bitPos,S=w.numBitsLUTQick,G=w.numBitsLUT,N=0===g.headerInfo.imageType?128:0,F=g.pixels.resultMask,k=0;u>0&&(f++,u=0);var R,L=y[f],U=1===g.encodeMode,m=new I(c*n),p=m;if(n<2||U){for(R=0;R<n;R++)if(n>1&&(p=new I(m.buffer,c*R,c),k=0),g.headerInfo.numValidPixel===l*h)for(a=0,E=0;E<h;E++)for(s=0;s<l;s++,a++){if(B=0,Q=C=L<<u>>>32-S,32-u<S&&(Q=C|=y[f+1]>>>64-u-S),D[Q])B=D[Q][1],u+=D[Q][0];else for(Q=C=L<<u>>>32-G,32-u<G&&(Q=C|=y[f+1]>>>64-u-G),t=d,r=0;r<G;r++)if(!(t=C>>>G-r-1&1?t.right:t.left).left&&!t.right){B=t.val,u=u+r+1;break}u>=32&&(u-=32,L=y[++f]),i=B-N,U?(i+=s>0?k:E>0?p[a-l]:k,i&=255,p[a]=i,k=i):p[a]=i}else for(a=0,E=0;E<h;E++)for(s=0;s<l;s++,a++)if(F[a]){if(B=0,Q=C=L<<u>>>32-S,32-u<S&&(Q=C|=y[f+1]>>>64-u-S),D[Q])B=D[Q][1],u+=D[Q][0];else for(Q=C=L<<u>>>32-G,32-u<G&&(Q=C|=y[f+1]>>>64-u-G),t=d,r=0;r<G;r++)if(!(t=C>>>G-r-1&1?t.right:t.left).left&&!t.right){B=t.val,u=u+r+1;break}u>=32&&(u-=32,L=y[++f]),i=B-N,U?(s>0&&F[a-1]?i+=k:E>0&&F[a-l]?i+=p[a-l]:i+=k,i&=255,p[a]=i,k=i):p[a]=i}}else for(a=0,E=0;E<h;E++)for(s=0;s<l;s++)if(a=E*l+s,!F||F[a])for(R=0;R<n;R++,a+=c){if(B=0,Q=C=L<<u>>>32-S,32-u<S&&(Q=C|=y[f+1]>>>64-u-S),D[Q])B=D[Q][1],u+=D[Q][0];else for(Q=C=L<<u>>>32-G,32-u<G&&(Q=C|=y[f+1]>>>64-u-G),t=d,r=0;r<G;r++)if(!(t=C>>>G-r-1&1?t.right:t.left).left&&!t.right){B=t.val,u=u+r+1;break}u>=32&&(u-=32,L=y[++f]),i=B-N,p[a]=i}g.ptr=g.ptr+4*(f+1)+(u>0?4:0),g.pixels.resultPixels=m,n>1&&!e&&(g.pixels.resultPixels=o.swapDimensionOrder(m,c,n,I))},decodeBits:function(A,g,I,e,t){var B=g.headerInfo,o=B.fileVersion,r=0,n=A.byteLength-g.ptr>=5?5:A.byteLength-g.ptr,h=new DataView(A,g.ptr,n),l=h.getUint8(0);r++;var c=l>>6,w=0===c?4:3-c,D=(32&l)>0,d=31&l,y=0;if(1===w)y=h.getUint8(r),r++;else if(2===w)y=h.getUint16(r,!0),r+=2;else{if(4!==w)throw"Invalid valid pixel count type";y=h.getUint32(r,!0),r+=4}var f,u,S,G,N,F,k,R,L,U=2*B.maxZError,m=B.numDims>1?B.maxValues[t]:B.zMax;if(D){for(g.counter.lut++,R=h.getUint8(r),r++,G=Math.ceil((R-1)*d/8),N=Math.ceil(G/4),u=new ArrayBuffer(4*N),S=new Uint8Array(u),g.ptr+=r,S.set(new Uint8Array(A,g.ptr,G)),k=new Uint32Array(u),g.ptr+=G,L=0;R-1>>>L;)L++;G=Math.ceil(y*L/8),N=Math.ceil(G/4),u=new ArrayBuffer(4*N),(S=new Uint8Array(u)).set(new Uint8Array(A,g.ptr,G)),f=new Uint32Array(u),g.ptr+=G,F=o>=3?E(k,d,R-1,e,U,m):C(k,d,R-1,e,U,m),o>=3?Q(f,I,L,y,F):i(f,I,L,y,F)}else g.counter.bitstuffer++,L=d,g.ptr+=r,L>0&&(G=Math.ceil(y*L/8),N=Math.ceil(G/4),u=new ArrayBuffer(4*N),(S=new Uint8Array(u)).set(new Uint8Array(A,g.ptr,G)),f=new Uint32Array(u),g.ptr+=G,o>=3?null==e?a(f,I,L,y):Q(f,I,L,y,!1,e,U,m):null==e?s(f,I,L,y):i(f,I,L,y,!1,e,U,m))},readTiles:function(A,g,I,e){var t=g.headerInfo,B=t.width,i=t.height,C=B*i,Q=t.microBlockSize,E=t.imageType,s=o.getDataTypeSize(E),a=Math.ceil(B/Q),r=Math.ceil(i/Q);g.pixels.numBlocksY=r,g.pixels.numBlocksX=a,g.pixels.ptr=0;var n,h,l,c,w,D,d,y,f,u,S=0,G=0,N=0,F=0,k=0,R=0,L=0,U=0,m=0,p=0,Y=0,M=0,K=0,b=0,J=0,H=new I(Q*Q),q=i%Q||Q,x=B%Q||Q,_=t.numDims,T=g.pixels.resultMask,O=g.pixels.resultPixels,v=t.fileVersion>=5?14:15,P=t.zMax;for(N=0;N<r;N++)for(k=N!==r-1?Q:q,F=0;F<a;F++)for(p=N*B*Q+F*Q,Y=B-(R=F!==a-1?Q:x),y=0;y<_;y++){if(_>1?(u=O,p=N*B*Q+F*Q,O=new I(g.pixels.resultPixels.buffer,C*y*s,C),P=t.maxValues[y]):u=null,L=A.byteLength-g.ptr,h={},J=0,U=(n=new DataView(A,g.ptr,Math.min(10,L))).getUint8(0),J++,f=t.fileVersion>=5?4&U:0,m=U>>6&255,(U>>2&v)!=(F*Q>>3&v))throw"integrity issue";if(f&&0===y)throw"integrity issue";if((w=3&U)>3)throw g.ptr+=J,"Invalid block encoding ("+w+")";if(2!==w)if(0===w){if(f)throw"integrity issue";if(g.counter.uncompressed++,g.ptr+=J,M=(M=k*R*s)<(K=A.byteLength-g.ptr)?M:K,l=new ArrayBuffer(M%s===0?M:M+s-M%s),new Uint8Array(l).set(new Uint8Array(A,g.ptr,M)),c=new I(l),b=0,T)for(S=0;S<k;S++){for(G=0;G<R;G++)T[p]&&(O[p]=c[b++]),p++;p+=Y}else for(S=0;S<k;S++){for(G=0;G<R;G++)O[p++]=c[b++];p+=Y}g.ptr+=b*s}else if(D=o.getDataTypeUsed(f&&E<6?4:E,m),d=o.getOnePixel(h,J,D,n),J+=o.getDataTypeSize(D),3===w)if(g.ptr+=J,g.counter.constantoffset++,T)for(S=0;S<k;S++){for(G=0;G<R;G++)T[p]&&(O[p]=f?Math.min(P,u[p]+d):d),p++;p+=Y}else for(S=0;S<k;S++){for(G=0;G<R;G++)O[p]=f?Math.min(P,u[p]+d):d,p++;p+=Y}else if(g.ptr+=J,o.decodeBits(A,g,H,d,y),J=0,f)if(T)for(S=0;S<k;S++){for(G=0;G<R;G++)T[p]&&(O[p]=H[J++]+u[p]),p++;p+=Y}else for(S=0;S<k;S++){for(G=0;G<R;G++)O[p]=H[J++]+u[p],p++;p+=Y}else if(T)for(S=0;S<k;S++){for(G=0;G<R;G++)T[p]&&(O[p]=H[J++]),p++;p+=Y}else for(S=0;S<k;S++){for(G=0;G<R;G++)O[p++]=H[J++];p+=Y}else{if(f)if(T)for(S=0;S<k;S++)for(G=0;G<R;G++)T[p]&&(O[p]=u[p]),p++;else for(S=0;S<k;S++)for(G=0;G<R;G++)O[p]=u[p],p++;g.counter.constant++,g.ptr+=J}}_>1&&!e&&(g.pixels.resultPixels=o.swapDimensionOrder(g.pixels.resultPixels,C,_,I))},formatFileInfo:function(A){return{fileIdentifierString:A.headerInfo.fileIdentifierString,fileVersion:A.headerInfo.fileVersion,imageType:A.headerInfo.imageType,height:A.headerInfo.height,width:A.headerInfo.width,numValidPixel:A.headerInfo.numValidPixel,microBlockSize:A.headerInfo.microBlockSize,blobSize:A.headerInfo.blobSize,maxZError:A.headerInfo.maxZError,pixelType:o.getPixelType(A.headerInfo.imageType),eofOffset:A.eofOffset,mask:A.mask?{numBytes:A.mask.numBytes}:null,pixels:{numBlocksX:A.pixels.numBlocksX,numBlocksY:A.pixels.numBlocksY,maxValue:A.headerInfo.zMax,minValue:A.headerInfo.zMin,noDataValue:A.noDataValue}}},constructConstantSurface:function(A,g){var I=A.headerInfo.zMax,e=A.headerInfo.zMin,t=A.headerInfo.maxValues,B=A.headerInfo.numDims,i=A.headerInfo.height*A.headerInfo.width,C=0,Q=0,E=0,s=A.pixels.resultMask,a=A.pixels.resultPixels;if(s)if(B>1){if(g)for(C=0;C<B;C++)for(E=C*i,I=t[C],Q=0;Q<i;Q++)s[Q]&&(a[E+Q]=I);else for(Q=0;Q<i;Q++)if(s[Q])for(E=Q*B,C=0;C<B;C++)a[E+B]=t[C]}else for(Q=0;Q<i;Q++)s[Q]&&(a[Q]=I);else if(B>1&&e!==I)if(g)for(C=0;C<B;C++)for(E=C*i,I=t[C],Q=0;Q<i;Q++)a[E+Q]=I;else for(Q=0;Q<i;Q++)for(E=Q*B,C=0;C<B;C++)a[E+C]=t[C];else for(Q=0;Q<i*B;Q++)a[Q]=I},getDataTypeArray:function(A){var g;switch(A){case 0:g=Int8Array;break;case 1:g=Uint8Array;break;case 2:g=Int16Array;break;case 3:g=Uint16Array;break;case 4:g=Int32Array;break;case 5:g=Uint32Array;break;case 6:default:g=Float32Array;break;case 7:g=Float64Array}return g},getPixelType:function(A){var g;switch(A){case 0:g="S8";break;case 1:g="U8";break;case 2:g="S16";break;case 3:g="U16";break;case 4:g="S32";break;case 5:g="U32";break;case 6:default:g="F32";break;case 7:g="F64"}return g},isValidPixelValue:function(A,g){if(null==g)return!1;var I;switch(A){case 0:I=g>=-128&&g<=127;break;case 1:I=g>=0&&g<=255;break;case 2:I=g>=-32768&&g<=32767;break;case 3:I=g>=0&&g<=65536;break;case 4:I=g>=-2147483648&&g<=2147483647;break;case 5:I=g>=0&&g<=4294967296;break;case 6:I=g>=-34027999387901484e22&&g<=34027999387901484e22;break;case 7:I=g>=-17976931348623157e292&&g<=17976931348623157e292;break;default:I=!1}return I},getDataTypeSize:function(A){var g=0;switch(A){case 0:case 1:g=1;break;case 2:case 3:g=2;break;case 4:case 5:case 6:g=4;break;case 7:g=8;break;default:g=A}return g},getDataTypeUsed:function(A,g){var I=A;switch(A){case 2:case 4:I=A-g;break;case 3:case 5:I=A-2*g;break;case 6:I=0===g?A:1===g?2:1;break;case 7:I=0===g?A:A-2*g+1;break;default:I=A}return I},getOnePixel:function(A,g,I,e){var t=0;switch(I){case 0:t=e.getInt8(g);break;case 1:t=e.getUint8(g);break;case 2:t=e.getInt16(g,!0);break;case 3:t=e.getUint16(g,!0);break;case 4:t=e.getInt32(g,!0);break;case 5:t=e.getUInt32(g,!0);break;case 6:t=e.getFloat32(g,!0);break;case 7:t=e.getFloat64(g,!0);break;default:throw"the decoder does not understand this pixel type"}return t},swapDimensionOrder:function(A,g,I,e,t){var B=0,i=0,C=0,Q=0,E=A;if(I>1)if(E=new e(g*I),t)for(B=0;B<g;B++)for(Q=B,C=0;C<I;C++,Q+=g)E[Q]=A[i++];else for(B=0;B<g;B++)for(Q=B,C=0;C<I;C++,Q+=g)E[i++]=A[Q];return E}},r=function(A,g,I){this.val=A,this.left=g,this.right=I},{decode:function(A,g){var I=(g=g||{}).noDataValue,e=0,t={};if(t.ptr=g.inputOffset||0,t.pixels={},o.readHeaderInfo(A,t)){var B=t.headerInfo,i=B.fileVersion,C=o.getDataTypeArray(B.imageType);if(i>5)throw"unsupported lerc version 2."+i;o.readMask(A,t),B.numValidPixel===B.width*B.height||t.pixels.resultMask||(t.pixels.resultMask=g.maskData);var Q=B.width*B.height;t.pixels.resultPixels=new C(Q*B.numDims),t.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0};var E,s=!g.returnPixelInterleavedDims;if(0!==B.numValidPixel)if(B.zMax===B.zMin)o.constructConstantSurface(t,s);else if(i>=4&&o.checkMinMaxRanges(A,t))o.constructConstantSurface(t,s);else{var a=new DataView(A,t.ptr,2),r=a.getUint8(0);if(t.ptr++,r)o.readDataOneSweep(A,t,C,s);else if(i>1&&B.imageType<=1&&Math.abs(B.maxZError-.5)<1e-5){var n=a.getUint8(1);if(t.ptr++,t.encodeMode=n,n>2||i<4&&n>1)throw"Invalid Huffman flag "+n;n?o.readHuffman(A,t,C,s):o.readTiles(A,t,C,s)}else o.readTiles(A,t,C,s)}t.eofOffset=t.ptr,g.inputOffset?(E=t.headerInfo.blobSize+g.inputOffset-t.ptr,Math.abs(E)>=1&&(t.eofOffset=g.inputOffset+t.headerInfo.blobSize)):(E=t.headerInfo.blobSize-t.ptr,Math.abs(E)>=1&&(t.eofOffset=t.headerInfo.blobSize));var h={width:B.width,height:B.height,pixelData:t.pixels.resultPixels,minValue:B.zMin,maxValue:B.zMax,validPixelCount:B.numValidPixel,dimCount:B.numDims,dimStats:{minValues:B.minValues,maxValues:B.maxValues},maskData:t.pixels.resultMask};if(t.pixels.resultMask&&o.isValidPixelValue(B.imageType,I)){var l=t.pixels.resultMask;for(e=0;e<Q;e++)l[e]||(h.pixelData[e]=I);h.noDataValue=I}return t.noDataValue=I,g.returnFileInfo&&(h.fileInfo=o.formatFileInfo(t)),h}},getBandCount:function(A){for(var g=0,I=0,e={ptr:0,pixels:{}};I<A.byteLength-58;)o.readHeaderInfo(A,e),I+=e.headerInfo.blobSize,g++,e.ptr=I;return g}}),w=(n=new ArrayBuffer(4),h=new Uint8Array(n),new Uint32Array(n)[0]=1,1===h[0]),D={decode:function(A,g){if(!w)throw"Big endian system is not supported.";var I,e,t=(g=g||{}).inputOffset||0,B=new Uint8Array(A,t,10),i=String.fromCharCode.apply(null,B);if("CntZImage"===i.trim())I=l,e=1;else{if("Lerc2"!==i.substring(0,5))throw"Unexpected file identifier string: "+i;I=c,e=2}for(var C,Q,E,s,a,o,r=0,n=A.byteLength-10,h=[],D={width:0,height:0,pixels:[],pixelType:g.pixelType,mask:null,statistics:[]},d=0;t<n;){var y=I.decode(A,{inputOffset:t,encodedMaskData:C,maskData:E,returnMask:0===r,returnEncodedMask:0===r,returnFileInfo:!0,returnPixelInterleavedDims:g.returnPixelInterleavedDims,pixelType:g.pixelType||null,noDataValue:g.noDataValue||null});t=y.fileInfo.eofOffset,E=y.maskData,0===r&&(C=y.encodedMaskData,D.width=y.width,D.height=y.height,D.dimCount=y.dimCount||1,D.pixelType=y.pixelType||y.fileInfo.pixelType,D.mask=E),e>1&&(E&&h.push(E),y.fileInfo.mask&&y.fileInfo.mask.numBytes>0&&d++),r++,D.pixels.push(y.pixelData),D.statistics.push({minValue:y.minValue,maxValue:y.maxValue,noDataValue:y.noDataValue,dimStats:y.dimStats})}if(e>1&&d>1){for(o=D.width*D.height,D.bandMasks=h,(E=new Uint8Array(o)).set(h[0]),s=1;s<h.length;s++)for(Q=h[s],a=0;a<o;a++)E[a]=E[a]&Q[a];D.maskData=E}return D}};mB.exports?mB.exports=D:this.Lerc=D}();var YB=UB(pB.exports);let MB,KB,bB;const JB={env:{emscripten_notify_memory_growth:A=>{bB=new Uint8Array(KB.exports.memory.buffer)}}};const HB="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AikACDcACCAHIDo3AAAgEUEZSA0BIARBGGohBANAIAIpABAhOiAEIAIpABg3AAggBCA6NwAAIAIpACAhOiAEIAIpACg3ABggBCA6NwAQIAJBIGohAiAEQSBqIgQgCkkNAAsMAQsCQAJAIAUoAswCIhEgBUHgAWogJUEHcUEMbGoiDygCACICaiIHIBxLDQAgCSAPKAIEIgogAmoiBmogG0sNACAGQSBqIBQgCWtNDQELIAUgDygCCDYCoAEgBSAPKQIANwOYASAJIBQgBUGYAWogBUHMAmogHCALIBcgIhAgIQYMAQsgAiAJaiEEIA8oAgghFSARKQAAITogCSARKQAINwAIIAkgOjcAAAJAIAJBEUkNACARKQAQITogCSARKQAYNwAYIAkgOjcAECACQRBrQRFIDQAgEUEQaiECIAlBIGohEgNAIAIpABAhOiASIAIpABg3AAggEiA6NwAAIAIpACAhOiASIAIpACg3ABggEiA6NwAQIAJBIGohAiASQSBqIhIgBEkNAAsLIAQgFWshAiAFIAc2AswCIAQgC2sgFUkEQCAVIAQgF2tLDQwgIiAiIAIgC2siD2oiByAKak8EQCAKRQ0CIAQgByAK/AoAAAwCC0EAIA9rIgIEQCAEIAcgAvwKAAALIAogD2ohCiAEIA9rIQQgCyECCyAVQRBPBEAgAikAACE6IAQgAikACDcACCAEIDo3AAAgCkERSA0BIAQgCmohByAEQRBqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIAdJDQALDAELAkAgFUEHTQRAIAQgAi0AADoAACAEIAItAAE6AAEgBCACLQACOgACIAQgAi0AAzoAAyAEIAIgFUECdCIHQeAaaigCAGoiAigAADYABCACIAdBgBtqKAIAayECDAELIAQgAikAADcAAAsgCkEJSQ0AIAQgCmohDyAEQQhqIgcgAkEIaiICa0EPTARAA0AgByACKQAANwAAIAJBCGohAiAHQQhqIgcgD0kNAAwCCwALIAIpAAAhOiAHIAIpAAg3AAggByA6NwAAIApBGUgNACAEQRhqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIA9JDQALCyAGQYh/SwRAIAYhAwwLCyAFQeABaiAlQQdxQQxsaiICIA02AgggAiAMNgIEIAIgEDYCAAsgBiAJaiEJICVBAWohJSAQIC1qIAxqIS0MAQsLIAUoArABIAUoArQBRw0HIAUoAqwBQSBHDQcgDiAoayEQA0ACQCAOIBBMBEBBACECA0AgAkEDRg0CIDIgAkECdCIDaiADICZqKAIANgIAIAJBAWohAgwACwALIAVB4AFqIBBBB3FBDGxqIQoCfwJAIAgoAoTsAUECRgRAIAUoAswCIg8gCigCACIEaiIHIAgoAoDsASICSwRAIAIgD0cEQCACIA9rIgIgFCAJa0sNCyAJIA8gAhAfIAogBCACayIENgIAIAIgCWohCQsgBSAWNgLMAiAIQQA2AoTsAQJAAkACQCAEQYCABEoNACAJIAooAgQiDSAEaiIGaiAbSw0AIAZBIGogFCAJa00NAQsgBSAKKAIINgJQIAUgCikCADcDSCAJIBQgBUHIAGogBUHMAmogGSALIBcgIhAgIQYMAQsgBCAWaiEHIAQgCWohDCAKKAIIIQogFikAACE6IAkgFikACDcACCAJIDo3AAACQCAEQRFJDQAgHikAACE6IAkgHikACDcAGCAJIDo3ABAgBEEQa0ERSA0AIAlBIGohAiAeIQQDQCAEKQAQITogAiAEKQAYNwAIIAIgOjcAACAEKQAgITogAiAEKQAoNwAYIAIgOjcAECAEQSBqIQQgAkEgaiICIAxJDQALCyAMIAprIQIgBSAHNgLMAiAMIAtrIApJBEAgCiAMIBdrSw0PICIgIiACIAtrIgdqIgQgDWpPBEAgDUUNAiAMIAQgDfwKAAAMAgtBACAHayICBEAgDCAEIAL8CgAACyAHIA1qIQ0gDCAHayEMIAshAgsgCkEQTwRAIAIpAAAhOiAMIAIpAAg3AAggDCA6NwAAIA1BEUgNASAMIA1qIQcgDEEQaiEEA0AgAikAECE6IAQgAikAGDcACCAEIDo3AAAgAikAICE6IAQgAikAKDcAGCAEIDo3ABAgAkEgaiECIARBIGoiBCAHSQ0ACwwBCwJAIApBB00EQCAMIAItAAA6AAAgDCACLQABOgABIAwgAi0AAjoAAiAMIAItAAM6AAMgDCACIApBAnQiBEHgGmooAgBqIgIoAAA2AAQgAiAEQYAbaigCAGshAgwBCyAMIAIpAAA3AAALIA1BCUkNACAMIA1qIQcgDEEIaiIEIAJBCGoiAmtBD0wEQANAIAQgAikAADcAACACQQhqIQIgBEEIaiIEIAdJDQAMAgsACyACKQAAITogBCACKQAINwAIIAQgOjcAACANQRlIDQAgDEEYaiEEA0AgAikAECE6IAQgAikAGDcACCAEIDo3AAAgAikAICE6IAQgAikAKDcAGCAEIDo3ABAgAkEgaiECIARBIGoiBCAHSQ0ACwsgBkGJf08EQCAGIQMMDgsgGSEcIAYgCWoMAwsgB0EgayECAkACQCAHIBxLDQAgCSAKKAIEIhIgBGoiDGogAksNACAMQSBqIBQgCWtNDQELIAUgCigCCDYCYCAFIAopAgA3A1ggCSAUIAIgBUHYAGogBUHMAmogHCALIBcgIhAhIQwMAgsgBCAJaiEGIAooAgghCiAPKQAAITogCSAPKQAINwAIIAkgOjcAAAJAIARBEUkNACAPKQAQITogCSAPKQAYNwAYIAkgOjcAECAEQRBrQRFIDQAgD0EQaiECIAlBIGohBANAIAIpABAhOiAEIAIpABg3AAggBCA6NwAAIAIpACAhOiAEIAIpACg3ABggBCA6NwAQIAJBIGohAiAEQSBqIgQgBkkNAAsLIAYgCmshAiAFIAc2AswCIAYgC2sgCkkEQCAKIAYgF2tLDQ0gIiAiIAIgC2siB2oiBCASak8EQCASRQ0DIAYgBCAS/AoAAAwDC0EAIAdrIgIEQCAGIAQgAvwKAAALIAcgEmohEiAGIAdrIQYgCyECCyAKQRBPBEAgAikAACE6IAYgAikACDcACCAGIDo3AAAgEkERSA0CIAYgEmohByAGQRBqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIAdJDQALDAILAkAgCkEHTQRAIAYgAi0AADoAACAGIAItAAE6AAEgBiACLQACOgACIAYgAi0AAzoAAyAGIAIgCkECdCIEQeAaaigCAGoiAigAADYABCACIARBgBtqKAIAayECDAELIAYgAikAADcAAAsgEkEJSQ0BIAYgEmohByAGQQhqIgQgAkEIaiICa0EPTARAA0AgBCACKQAANwAAIAJBCGohAiAE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",qB=new class{init(){return MB||(MB="undefined"!=typeof fetch?fetch(`data:application/wasm;base64,${HB}`).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,JB)).then(this._init):WebAssembly.instantiate(Buffer.from(HB,"base64"),JB).then(this._init),MB)}_init(A){KB=A.instance,JB.env.emscripten_notify_memory_growth(0)}decode(A,g=0){if(!KB)throw new Error("ZSTDDecoder: Await .init() before decoding.");const I=A.byteLength,e=KB.exports.malloc(I);bB.set(A,e),g=g||Number(KB.exports.ZSTD_findDecompressedSize(e,I));const t=KB.exports.malloc(g),B=KB.exports.ZSTD_decompress(t,g,e,I),i=bB.slice(t,t+B);return KB.exports.free(e),KB.exports.free(t),i}};var xB=Object.freeze({__proto__:null,default:class extends Ng{decodeBlock(A){const g=this.parameters.LercParameters[kA];switch(g){case RA:break;case LA:A=kB(new Uint8Array(A)).buffer;break;case UA:A=qB.decode(new Uint8Array(A)).buffer;break;default:throw new Error(`Unsupported LERC additional compression method identifier: ${g}`)}return YB.decode(A,{returnPixelInterleavedDims:1===this.parameters.planarConfiguration}).pixels[0].buffer}},zstd:qB});let _B,TB,OB,vB;const PB={env:{emscripten_notify_memory_growth:A=>{OB=new Uint8Array(TB.exports.memory.buffer),vB=new DataView(OB.buffer)}}};const ZB="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QQhyIQBBACEDA0AgACADTQ0DIANBQGshAwwACwALQWwhCiAOIA5B/ABqIA5B+ABqIAUgBhAGIgJBiH9LDQEgDigCeCIDIARLDQEgACAOIA4oAnwgByAIIAMgDRAlIAEgADYCACACIQoMAQtBbCEKCyAOQYABaiQAIAoLcAEEfyAAQgA3AgAgAgRAIAFBCmohBiABKAIEIQRBACECQQAhAQNAIAEgBHZFBEAgAiAGIAFBA3RqLQAAIgUgAiAFSxshAiABQQFqIQEgAyAFQRZLaiEDDAELCyAAIAI2AgQgACADQQggBGt0NgIACwuuAQEEfyABIAIoAgQiAyABKAIEaiIENgIEIAAgA0ECdEGwGWooAgAgASgCAEEAIARrdnE2AgACQCAEQSFPBEAgAUGwGjYCCAwBCyABKAIIIgMgASgCEE8EQCABEAwMAQsgAyABKAIMIgVGDQAgASADIAMgBWsgBEEDdiIGIAMgBmsgBUkbIgNrIgU2AgggASAEIANBA3RrNgIEIAEgBSgAADYCAAsgACACQQhqNgIEC40CAgN/AX4gACACaiEEAkACQCACQQhOBEAgACABayICQXlIDQELA0AgACAETw0CIAAgAS0AADoAACAAQQFqIQAgAUEBaiEBDAALAAsCQAJAIAJBb0sNACAAIARBIGsiAksNACABKQAAIQYgACABKQAINwAIIAAgBjcAACACIABrIgVBEU4EQCAAQRBqIQAgASEDA0AgAykAECEGIAAgAykAGDcACCAAIAY3AAAgAykAICEGIAAgAykAKDcAGCAAIAY3ABAgA0EgaiEDIABBIGoiACACSQ0ACwsgASAFaiEBDAELIAAhAgsDQCACIARPDQEgAiABLQAAOgAAIAJBAWohAiABQQFqIQEMAAsACwvfAQEGf0G6fyEKAkAgAigCBCIIIAIoAgAiCWoiDSABIABrSw0AQWwhCiAJIAQgAygCACILa0sNACAAIAlqIgQgAigCCCIMayECIAAgAUEgayIBIAsgCUEAEDMgAyAJIAtqNgIAAkACQCAEIAVrIAxPBEAgAiEFDAELIAwgBCAGa0sNAiAHIAcgAiAFayIDaiICIAhqTwRAIAhFDQIgBCACIAj8CgAADAILQQAgA2siAARAIAQgAiAA/AoAAAsgAyAIaiEIIAQgA2shBAsgBCABIAUgCEEBEDML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",VB=new class{init(){return _B||(_B="undefined"!=typeof fetch?fetch(`data:application/wasm;base64,${ZB}`).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,PB)).then(this._init):WebAssembly.instantiate(Buffer.from(ZB,"base64"),PB).then(this._init),_B)}_init(A){TB=A.instance,PB.env.emscripten_notify_memory_growth(0)}decode(A,g=0){if(!TB)throw new Error("ZSTDDecoder: Await .init() before decoding.");const I=A.byteLength,e=TB.exports.malloc(I);if(OB.set(A,e),0===g&&(g=Number(TB.exports.ZSTD_findDecompressedSize(e,I))),-1===g){TB.exports.free(e);const g=[];for(const I of this.decodeStreaming([A]))g.push(I);if(1===g.length)return g[0];const I=g.reduce((A,g)=>A+g.byteLength,0),t=new Uint8Array(I);let B=0;for(const A of g)t.set(A,B),B+=A.byteLength;return t}const t=TB.exports.malloc(g),B=TB.exports.ZSTD_decompress(t,g,e,I),i=OB.slice(t,t+B);return TB.exports.free(e),TB.exports.free(t),i}*decodeStreaming(A){if(!TB)throw new Error("ZSTDDecoder: Await .init() before decoding.");const g=TB.exports.ZSTD_DStreamInSize(),I=TB.exports.malloc(g),e=TB.exports.ZSTD_DStreamOutSize(),t=TB.exports.malloc(e),B=TB.exports.ZSTD_createDCtx(),i=TB.exports.malloc(12),C=TB.exports.malloc(12);let Q=0;for(const g of A){const A=TB.exports.malloc(g.byteLength);for(OB.set(g,A),vB.setInt32(i,A,!0),vB.setInt32(i+4,g.byteLength,!0),vB.setInt32(i+4+4,0,!0);vB.getUint32(i+4+4,!0)<vB.getUint32(i+4,!0);){vB.setInt32(C,t,!0),vB.setInt32(C+4,e,!0),vB.setInt32(C+4+4,0,!0),Q=TB.exports.ZSTD_decompressStream(B,C,i);const A=vB.getUint32(C+4+4,!0);yield OB.slice(t,t+A)}TB.exports.free(A)}if(TB.exports.ZSTD_freeDCtx(B),TB.exports.free(I),TB.exports.free(t),TB.exports.free(i),TB.exports.free(C),0!==Q)throw new Error("Incomplete stream, more data expected.")}};var zB=Object.freeze({__proto__:null,default:class extends Ng{decodeBlock(A){return VB.decode(new Uint8Array(A)).buffer}},zstd:VB});var jB=Object.freeze({__proto__:null,default:class extends Ng{constructor(A){if(super(A),"undefined"==typeof createImageBitmap)throw new Error("Cannot decode WebImage as `createImageBitmap` is not available");if("undefined"==typeof document&&"undefined"==typeof OffscreenCanvas)throw new Error("Cannot decode WebImage as neither `document` nor `OffscreenCanvas` is not available")}async decodeBlock(A){const g=new Blob([A]),I=await createImageBitmap(g);let e;"undefined"!=typeof document?(e=document.createElement("canvas"),e.width=I.width,e.height=I.height):e=new OffscreenCanvas(I.width,I.height);const t=e.getContext("2d");t.drawImage(I,0,0);const B=t.getImageData(0,0,I.width,I.height).data,i=this.parameters.samplesPerPixel||4;if(4===i)return B.buffer;if(3===i){const A=new Uint8ClampedArray(I.width*I.height*3);for(let g=0,I=0;g<A.length;g+=3,I+=4)A[g]=B[I],A[g+1]=B[I+1],A[g+2]=B[I+2];return A.buffer}throw new Error(`Unsupported SamplesPerPixel value: ${i}`)}}});exports.CogBitmapLayer=zg,exports.CogTerrainLayer=$g,exports.CogTiles=Pg,exports.GeoImage=Hg;
5
5
  //# sourceMappingURL=index.min.js.map