jupytergis-core 0.10.1__tar.gz → 0.11.1__tar.gz
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.
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/PKG-INFO +4 -3
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/_version.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/jgis_ydoc.py +9 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/package.json +5 -5
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/schemas/@jupytergis/jupytergis-core/jupytergis-settings.json +5 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/schemas/@jupytergis/jupytergis-core/package.json.orig +4 -4
- jupytergis_core-0.11.1/jupytergis_core/labextension/static/154.81bef68e01fc6079be77.js +1 -0
- jupytergis_core-0.11.1/jupytergis_core/labextension/static/211.dda210219d9ad86e1e84.js +1 -0
- jupytergis_core-0.11.1/jupytergis_core/labextension/static/234.ea90a64ba283577248b6.js +1 -0
- jupytergis_core-0.11.1/jupytergis_core/labextension/static/27.1f6ad99534ea85406d43.js +2 -0
- jupytergis_core-0.11.1/jupytergis_core/labextension/static/294.5fc61ad02851426049c0.js +8 -0
- jupytergis_core-0.11.1/jupytergis_core/labextension/static/376.28855d079a25782d0411.js +1 -0
- jupytergis_core-0.11.1/jupytergis_core/labextension/static/407.abbc95102c4ad7922738.js +1 -0
- jupytergis_core-0.11.1/jupytergis_core/labextension/static/432.4ba21c44d69bd7bb9b58.js +1 -0
- jupytergis_core-0.11.1/jupytergis_core/labextension/static/472.a64789520e563e648e15.js +1 -0
- jupytergis_core-0.11.1/jupytergis_core/labextension/static/542.01890bd351511c4a49a8.js +1 -0
- jupytergis_core-0.11.1/jupytergis_core/labextension/static/552.a4ebd32e9302cb6c9dce.js +1 -0
- jupytergis_core-0.11.1/jupytergis_core/labextension/static/555.f67c28bf17db0a6ce7f9.js +1 -0
- jupytergis_core-0.11.1/jupytergis_core/labextension/static/618.f39bbf3c06f1a62a664a.js +1 -0
- jupytergis_core-0.11.1/jupytergis_core/labextension/static/803.2b7be4ca03f1b0985a34.js +8 -0
- jupytergis_core-0.11.1/jupytergis_core/labextension/static/99.43df5aa4900a464c8c36.js +1 -0
- jupytergis_core-0.11.1/jupytergis_core/labextension/static/990.1fe67e669bf8d31bc0ac.js +1 -0
- jupytergis_core-0.11.1/jupytergis_core/labextension/static/991.ce3807f873148de479ba.js +1 -0
- jupytergis_core-0.11.1/jupytergis_core/labextension/static/remoteEntry.1181005e666f657a70d5.js +1 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/third-party-licenses.json +312 -6
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/__init__.py +1 -0
- {jupytergis_core-0.10.1/jupytergis_core/schema/interfaces/processing → jupytergis_core-0.11.1/jupytergis_core/schema/interfaces}/__init__.py +1 -1
- {jupytergis_core-0.10.1/jupytergis_core/schema/interfaces/project → jupytergis_core-0.11.1/jupytergis_core/schema/interfaces/export}/__init__.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/export/exportGeoJson.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/export/exportGeoTiff.py +1 -1
- jupytergis_core-0.11.1/jupytergis_core/schema/interfaces/geojson.py +513 -0
- {jupytergis_core-0.10.1/jupytergis_core/schema/interfaces → jupytergis_core-0.11.1/jupytergis_core/schema/interfaces/processing}/__init__.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/processing/boundingBoxes.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/processing/buffer.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/processing/centroids.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/processing/concaveHull.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/processing/convexHull.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/processing/dissolve.py +1 -1
- {jupytergis_core-0.10.1/jupytergis_core/schema/interfaces/export → jupytergis_core-0.11.1/jupytergis_core/schema/interfaces/project}/__init__.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/project/jgis.py +21 -1
- jupytergis_core-0.11.1/jupytergis_core/schema/interfaces/project/layers/__init__.py +3 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/project/layers/heatmapLayer.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/project/layers/hillshadeLayer.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/project/layers/imageLayer.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/project/layers/rasterLayer.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/project/layers/stacLayer.py +1 -1
- jupytergis_core-0.11.1/jupytergis_core/schema/interfaces/project/layers/storySegmentLayer.py +44 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/project/layers/vectorLayer.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/project/layers/vectorTileLayer.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/project/layers/webGlLayer.py +1 -1
- jupytergis_core-0.11.1/jupytergis_core/schema/interfaces/project/sources/__init__.py +3 -0
- jupytergis_core-0.10.1/jupytergis_core/schema/interfaces/geojson.py → jupytergis_core-0.11.1/jupytergis_core/schema/interfaces/project/sources/geoJsonSource.py +21 -38
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/project/sources/geoParquetSource.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/project/sources/geoTiffSource.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/project/sources/imageSource.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/project/sources/markerSource.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/project/sources/rasterDemSource.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/project/sources/rasterSource.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/project/sources/shapefileSource.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/project/sources/vectorTileSource.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/schema/interfaces/project/sources/videoSource.py +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/lib/factory.d.ts +2 -3
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/lib/factory.js +1 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/lib/jgisplugin/plugins.js +5 -5
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/package.json +4 -4
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/pyproject.toml +5 -4
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/schema/jupytergis-settings.json +5 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/src/factory.ts +2 -3
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/src/jgisplugin/plugins.ts +7 -8
- jupytergis_core-0.11.1/tsconfig.tsbuildinfo +1 -0
- jupytergis_core-0.10.1/jupytergis_core/labextension/static/154.234a33e9fcda783cc84b.js +0 -1
- jupytergis_core-0.10.1/jupytergis_core/labextension/static/211.083574a3909f85924cc7.js +0 -1
- jupytergis_core-0.10.1/jupytergis_core/labextension/static/234.2f0fc49f516ad354aa18.js +0 -1
- jupytergis_core-0.10.1/jupytergis_core/labextension/static/250.245296409de797297c09.js +0 -8
- jupytergis_core-0.10.1/jupytergis_core/labextension/static/27.6ee794baeb00791424c2.js +0 -2
- jupytergis_core-0.10.1/jupytergis_core/labextension/static/376.1dc881bb3edbaa917d71.js +0 -1
- jupytergis_core-0.10.1/jupytergis_core/labextension/static/397.075ccafc191603fcad13.js +0 -1
- jupytergis_core-0.10.1/jupytergis_core/labextension/static/407.e9ba4ebc707a690bc548.js +0 -1
- jupytergis_core-0.10.1/jupytergis_core/labextension/static/432.b81aa01fd224321ff376.js +0 -1
- jupytergis_core-0.10.1/jupytergis_core/labextension/static/472.5e2408d0777222e455cc.js +0 -1
- jupytergis_core-0.10.1/jupytergis_core/labextension/static/542.9766a06057be72a32b09.js +0 -1
- jupytergis_core-0.10.1/jupytergis_core/labextension/static/552.0936beb209d3ea5a1229.js +0 -1
- jupytergis_core-0.10.1/jupytergis_core/labextension/static/555.1cd3070a2aa23b05356b.js +0 -1
- jupytergis_core-0.10.1/jupytergis_core/labextension/static/618.f4d7698f69b3ad75e162.js +0 -1
- jupytergis_core-0.10.1/jupytergis_core/labextension/static/803.5f3759c98814aa602705.js +0 -8
- jupytergis_core-0.10.1/jupytergis_core/labextension/static/875.d4ee3ab5cce6d5530d48.js +0 -1
- jupytergis_core-0.10.1/jupytergis_core/labextension/static/991.d3fbaf84f451d24104e2.js +0 -1
- jupytergis_core-0.10.1/jupytergis_core/labextension/static/remoteEntry.4cf0418b1099b497df32.js +0 -1
- jupytergis_core-0.10.1/jupytergis_core/schema/interfaces/project/layers/__init__.py +0 -3
- jupytergis_core-0.10.1/jupytergis_core/schema/interfaces/project/sources/__init__.py +0 -3
- jupytergis_core-0.10.1/jupytergis_core/schema/interfaces/project/sources/geoJsonSource.py +0 -20
- jupytergis_core-0.10.1/tsconfig.tsbuildinfo +0 -1
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/.gitignore +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/LICENSE +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/README.md +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupyter-config/server-config/jupytergis_core.json +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/__init__.py +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/handler.py +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/026680ab0cd1523edc87.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/02ff7d503bbd90b21fc4.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/062a9554f6b4caac9713.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/064f37cecb8130ad66e8.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/08da2741746ddab81d04.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/0c6a0352b82839119f95.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/13c485bb93f5567f02fd.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/1474207a6b3ca1001e78.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/14b98240613d5256c621.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/1b97ea0f2b3af717cffa.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/1d440270da19a2f22fee.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/1ed164e010f3c0306d15.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/2218dfba22fc2b08e948.png +0 -0
- /jupytergis_core-0.10.1/jupytergis_core/labextension/static/27.6ee794baeb00791424c2.js.LICENSE.txt → /jupytergis_core-0.11.1/jupytergis_core/labextension/static/27.1f6ad99534ea85406d43.js.LICENSE.txt +0 -0
- /jupytergis_core-0.10.1/jupytergis_core/labextension/static/250.245296409de797297c09.js.LICENSE.txt → /jupytergis_core-0.11.1/jupytergis_core/labextension/static/294.5fc61ad02851426049c0.js.LICENSE.txt +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/2ab791b60c4058e664f8.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/2b24b6a745c11511f055.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/2d676bc0a01c2cd2fccb.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/2f02309ea499725612ea.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/32c7a73662cceb5bb1d7.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/350eec4ce9ae4bc10bca.wasm +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/363ca7c5f78deb6fd033.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/3ae0bf244442de7efc35.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/3d48be10ffea86eb15de.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/415edc3fa381260cf31e.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/42cbddf5e883673bc4e2.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/527ef171d5df15dc7da5.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/5bb02252f243f8c7494f.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/5d181edc3c046e1454a1.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/5f32ad48aefe00e51312.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/6e4f6b4d0dfca3bd4450.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/71d436fb44627b6bfbd7.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/7b225dc2d37cd3582156.png +0 -0
- /jupytergis_core-0.10.1/jupytergis_core/labextension/static/803.5f3759c98814aa602705.js.LICENSE.txt → /jupytergis_core-0.11.1/jupytergis_core/labextension/static/803.2b7be4ca03f1b0985a34.js.LICENSE.txt +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/843ab141e62516b9df5c.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/8814e17f6b110e8f3e42.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/88b2ae0d29edb684eae5.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/971a42d174dd17b9451a.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/a3c609f5bff95a7a53be.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/a86d626c9ed2e222d190.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/a9e286b0c0264a9fc737.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/ab309078b494f850430a.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/b15e3989b7b90b5a8d9d.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/b36717fbb06f21d53b01.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/ba4b6e82fe5a816c40a5.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/bb2b310570da7a3587e9.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/be92bcf7bb99753b4b3d.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/c2ffa011d7f52a0ddf45.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/d83457b1b925c1718f6d.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/e473e1e9f20af114bbb4.data +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/f2617180c6907263a7ff.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/fe99a6dbf5a71d308989.png +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/jupytergis_core/labextension/static/style.js +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/lib/externalcommand.d.ts +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/lib/externalcommand.js +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/lib/index.d.ts +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/lib/index.js +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/lib/jgisplugin/modelfactory.d.ts +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/lib/jgisplugin/modelfactory.js +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/lib/jgisplugin/plugins.d.ts +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/lib/layerBrowserRegistry.d.ts +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/lib/layerBrowserRegistry.js +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/lib/plugin.d.ts +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/lib/plugin.js +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/lib/schemaregistry.d.ts +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/lib/schemaregistry.js +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/scripts/bump-version.py +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/setup.py +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/src/externalcommand.ts +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/src/index.ts +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/src/jgisplugin/modelfactory.ts +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/src/layerBrowserRegistry.ts +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/src/plugin.ts +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/src/schemaregistry.ts +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/style/base.css +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/style/index.css +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/style/index.js +0 -0
- {jupytergis_core-0.10.1 → jupytergis_core-0.11.1}/tsconfig.json +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: jupytergis_core
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.11.1
|
|
4
4
|
Dynamic: Keywords
|
|
5
5
|
Summary: JupyterGIS core extension
|
|
6
6
|
Project-URL: Homepage, https://github.com/geojupyter/jupytergis
|
|
@@ -45,11 +45,12 @@ Classifier: Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt
|
|
|
45
45
|
Classifier: License :: OSI Approved :: BSD License
|
|
46
46
|
Classifier: Programming Language :: Python
|
|
47
47
|
Classifier: Programming Language :: Python :: 3
|
|
48
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
49
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
50
48
|
Classifier: Programming Language :: Python :: 3.10
|
|
51
49
|
Classifier: Programming Language :: Python :: 3.11
|
|
52
50
|
Classifier: Programming Language :: Python :: 3.12
|
|
51
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
52
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
53
|
+
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
53
54
|
Requires-Python: >=3.10
|
|
54
55
|
Requires-Dist: jupyter-ydoc<4,>=2
|
|
55
56
|
Description-Content-Type: text/markdown
|
|
@@ -13,6 +13,7 @@ class YJGIS(YBaseDoc):
|
|
|
13
13
|
super().__init__(*args, **kwargs)
|
|
14
14
|
self._ydoc["layers"] = self._ylayers = Map()
|
|
15
15
|
self._ydoc["sources"] = self._ysources = Map()
|
|
16
|
+
self._ydoc["stories"] = self._ystories = Map()
|
|
16
17
|
self._ydoc["options"] = self._yoptions = Map()
|
|
17
18
|
self._ydoc["layerTree"] = self._ylayerTree = Array()
|
|
18
19
|
self._ydoc["metadata"] = self._ymetadata = Map()
|
|
@@ -28,6 +29,7 @@ class YJGIS(YBaseDoc):
|
|
|
28
29
|
"""
|
|
29
30
|
layers = self._ylayers.to_py()
|
|
30
31
|
sources = self._ysources.to_py()
|
|
32
|
+
stories_map = self._ystories.to_py()
|
|
31
33
|
options = self._yoptions.to_py()
|
|
32
34
|
meta = self._ymetadata.to_py()
|
|
33
35
|
layers_tree = self._ylayerTree.to_py()
|
|
@@ -36,6 +38,7 @@ class YJGIS(YBaseDoc):
|
|
|
36
38
|
schemaVersion=SCHEMA_VERSION,
|
|
37
39
|
layers=layers,
|
|
38
40
|
sources=sources,
|
|
41
|
+
stories=stories_map,
|
|
39
42
|
options=options,
|
|
40
43
|
layerTree=layers_tree,
|
|
41
44
|
metadata=meta,
|
|
@@ -68,6 +71,9 @@ class YJGIS(YBaseDoc):
|
|
|
68
71
|
self._ysources.clear()
|
|
69
72
|
self._ysources.update(valueDict.get("sources", {}))
|
|
70
73
|
|
|
74
|
+
self._ystories.clear()
|
|
75
|
+
self._ystories.update(valueDict.get("stories", {}))
|
|
76
|
+
|
|
71
77
|
self._yoptions.clear()
|
|
72
78
|
self._yoptions.update(valueDict.get("options", {}))
|
|
73
79
|
|
|
@@ -88,6 +94,9 @@ class YJGIS(YBaseDoc):
|
|
|
88
94
|
self._subscriptions[self._ysources] = self._ysources.observe_deep(
|
|
89
95
|
partial(callback, "sources")
|
|
90
96
|
)
|
|
97
|
+
self._subscriptions[self._ystories] = self._ystories.observe_deep(
|
|
98
|
+
partial(callback, "stories")
|
|
99
|
+
)
|
|
91
100
|
self._subscriptions[self._yoptions] = self._yoptions.observe_deep(
|
|
92
101
|
partial(callback, "options")
|
|
93
102
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jupytergis/jupytergis-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.1",
|
|
4
4
|
"description": "JupyterGIS core extension",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jupyter",
|
|
@@ -53,9 +53,9 @@
|
|
|
53
53
|
"watch:labextension": "jupyter labextension watch ."
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
|
-
"@jupyter/collaborative-drive": "^
|
|
57
|
-
"@jupytergis/base": "^0.
|
|
58
|
-
"@jupytergis/schema": "^0.
|
|
56
|
+
"@jupyter/collaborative-drive": "^4.1.2",
|
|
57
|
+
"@jupytergis/base": "^0.11.1",
|
|
58
|
+
"@jupytergis/schema": "^0.11.1",
|
|
59
59
|
"@jupyterlab/application": "^4.3.0",
|
|
60
60
|
"@jupyterlab/apputils": "^4.3.0",
|
|
61
61
|
"@jupyterlab/docregistry": "^4.3.0",
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
}
|
|
121
121
|
},
|
|
122
122
|
"_build": {
|
|
123
|
-
"load": "static/remoteEntry.
|
|
123
|
+
"load": "static/remoteEntry.1181005e666f657a70d5.js",
|
|
124
124
|
"extension": "./extension",
|
|
125
125
|
"style": "./style"
|
|
126
126
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jupytergis/jupytergis-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.1",
|
|
4
4
|
"description": "JupyterGIS core extension",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jupyter",
|
|
@@ -53,9 +53,9 @@
|
|
|
53
53
|
"watch:labextension": "jupyter labextension watch ."
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
|
-
"@jupyter/collaborative-drive": "^
|
|
57
|
-
"@jupytergis/base": "^0.
|
|
58
|
-
"@jupytergis/schema": "^0.
|
|
56
|
+
"@jupyter/collaborative-drive": "^4.1.2",
|
|
57
|
+
"@jupytergis/base": "^0.11.1",
|
|
58
|
+
"@jupytergis/schema": "^0.11.1",
|
|
59
59
|
"@jupyterlab/application": "^4.3.0",
|
|
60
60
|
"@jupyterlab/apputils": "^4.3.0",
|
|
61
61
|
"@jupyterlab/docregistry": "^4.3.0",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_jupytergis_jupytergis_core=self.webpackChunk_jupytergis_jupytergis_core||[]).push([[154],{74660(e,t,r){function n(e,t){let r=e.length-t,n=0;do{for(let r=t;r>0;r--)e[n+t]+=e[n],n++;r-=t}while(r>0)}function o(e,t,r){let n=0,o=e.length;const i=o/r;for(;o>t;){for(let r=t;r>0;--r)e[n+t]+=e[n],++n;o-=t}const s=e.slice();for(let t=0;t<i;++t)for(let n=0;n<r;++n)e[r*t+n]=s[(r-n-1)*i+t]}r.d(t,{A:()=>i});class i{async decode(e,t){const r=await this.decodeBlock(t),i=e.Predictor||1;if(1!==i){const t=!e.StripOffsets;return function(e,t,r,i,s,l){if(!t||1===t)return e;for(let e=0;e<s.length;++e){if(s[e]%8!=0)throw new Error("When decoding with predictor, only multiple of 8 bits are supported.");if(s[e]!==s[0])throw new Error("When decoding with predictor, all samples must have the same size.")}const c=s[0]/8,f=2===l?1:s.length;for(let l=0;l<i&&!(l*f*r*c>=e.byteLength);++l){let i;if(2===t){switch(s[0]){case 8:i=new Uint8Array(e,l*f*r*c,f*r*c);break;case 16:i=new Uint16Array(e,l*f*r*c,f*r*c/2);break;case 32:i=new Uint32Array(e,l*f*r*c,f*r*c/4);break;default:throw new Error(`Predictor 2 not allowed with ${s[0]} bits per sample.`)}n(i,f)}else 3===t&&(i=new Uint8Array(e,l*f*r*c,f*r*c),o(i,f,c))}return e}(r,i,t?e.TileWidth:e.ImageWidth,t?e.TileLength:e.RowsPerStrip||e.ImageLength,e.BitsPerSample,e.PlanarConfiguration)}return r}}},87154(e,t,r){r.d(t,{default:()=>i});var n=r(74660);function o(e,t){for(let r=t.length-1;r>=0;r--)e.push(t[r]);return e}class i extends n.A{decodeBlock(e){return function(e){const t=new Uint16Array(4093),r=new Uint8Array(4093);for(let e=0;e<=257;e++)t[e]=4096,r[e]=e;let n=258,i=9,s=0;function l(){n=258,i=9}function c(e){const t=function(e,t,r){const n=t%8,o=Math.floor(t/8),i=8-n,s=t+r-8*(o+1);let l=8*(o+2)-(t+r);const c=8*(o+2)-t;if(l=Math.max(0,l),o>=e.length)return console.warn("ran off the end of the buffer before finding EOI_CODE (end on input code)"),257;let f=e[o]&2**(8-n)-1;f<<=r-i;let a=f;if(o+1<e.length){let t=e[o+1]>>>l;t<<=Math.max(0,r-c),a+=t}if(s>8&&o+2<e.length){const n=8*(o+3)-(t+r);a+=e[o+2]>>>n}return a}(e,s,i);return s+=i,t}function f(e,o){return r[n]=o,t[n]=e,n++,n-1}function a(e){const n=[];for(let o=e;4096!==o;o=t[o])n.push(r[o]);return n}const u=[];l();const h=new Uint8Array(e);let d,w=c(h);for(;257!==w;){if(256===w){for(l(),w=c(h);256===w;)w=c(h);if(257===w)break;if(w>256)throw new Error(`corrupted code at scanline ${w}`);o(u,a(w)),d=w}else if(w<n){const e=a(w);o(u,e),f(d,e[e.length-1]),d=w}else{const e=a(d);if(!e)throw new Error(`Bogus entry. Not in dictionary, ${d} / ${n}, position: ${s}`);o(u,e),u.push(e[e.length-1]),f(d,e[e.length-1]),d=w}n+1>=2**i&&(12===i?d=void 0:i++),w=c(h)}return new Uint8Array(u)}(e).buffer}}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_jupytergis_jupytergis_core=self.webpackChunk_jupytergis_jupytergis_core||[]).push([[211],{11211(e,t,n){function r(e,t){for(let n=0;n<t.length;n+=1e4)e.push(...t.slice(n,n+1e4))}function o(e,t){return e===t||(e instanceof Uint8Array&&t instanceof Uint8Array?o(Array.from(e),Array.from(t)):!(!e||!t||typeof e!=typeof t)&&(Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((e,n)=>o(e,t[n])):"object"==typeof e&&Object.keys(e).length===Object.keys(t).length&&Object.keys(e).every(n=>o(e[n],t[n]))))}async function i({url:e,byteLength:t,requestInit:n,fetch:r}){if(!e)throw new Error("missing url");const o=r??globalThis.fetch;let i;t||=await async function(e,t,n){const r=n??globalThis.fetch;return await r(e,{...t,method:"HEAD"}).then(e=>{if(!e.ok)throw new Error(`fetch head failed ${e.status}`);const t=e.headers.get("Content-Length");if(!t)throw new Error("missing content length");return parseInt(t)})}(e,n,o);const f=n||{};return{byteLength:t,async slice(t,n){if(i)return i.then(e=>e.slice(t,n));const r=new Headers(f.headers),s=void 0===n?"":n-1;r.set("Range",`bytes=${t}-${s}`);const a=await o(e,{...f,headers:r});if(!a.ok||!a.body)throw new Error(`fetch failed ${a.status}`);if(200===a.status)return i=a.arrayBuffer(),i.then(e=>e.slice(t,n));if(206===a.status)return a.arrayBuffer();throw new Error(`fetch received unexpected status code ${a.status}`)}}}function f(e){if(!e)return[];if(1===e.length)return e[0];const t=[];for(const n of e)r(t,n);return t}n.d(t,{asyncBufferFromUrl:()=>i,toGeoJson:()=>ue});const s=["BOOLEAN","INT32","INT64","INT96","FLOAT","DOUBLE","BYTE_ARRAY","FIXED_LEN_BYTE_ARRAY"],a=["PLAIN","GROUP_VAR_INT","PLAIN_DICTIONARY","RLE","BIT_PACKED","DELTA_BINARY_PACKED","DELTA_LENGTH_BYTE_ARRAY","DELTA_BYTE_ARRAY","RLE_DICTIONARY","BYTE_STREAM_SPLIT"],l=["REQUIRED","OPTIONAL","REPEATED"],c=["UTF8","MAP","MAP_KEY_VALUE","LIST","ENUM","DECIMAL","DATE","TIME_MILLIS","TIME_MICROS","TIMESTAMP_MILLIS","TIMESTAMP_MICROS","UINT_8","UINT_16","UINT_32","UINT_64","INT_8","INT_16","INT_32","INT_64","JSON","BSON","INTERVAL"],u=["UNCOMPRESSED","SNAPPY","GZIP","LZO","BROTLI","LZ4","ZSTD","LZ4_RAW"],d=["DATA_PAGE","INDEX_PAGE","DICTIONARY_PAGE","DATA_PAGE_V2"],_={timestampFromMilliseconds:e=>new Date(Number(e)),timestampFromMicroseconds:e=>new Date(Number(e/1000n)),timestampFromNanoseconds:e=>new Date(Number(e/1000000n)),dateFromDays:e=>new Date(864e5*e)};function p(e,t,n,r){if(t&&n.endsWith("_DICTIONARY")){let n=e;e instanceof Uint8Array&&!(t instanceof Uint8Array)&&(n=new t.constructor(e.length));for(let r=0;r<e.length;r++)n[r]=t[e[r]];return n}return h(e,r)}function h(e,t){const{element:n,parsers:r,utf8:o=!0}=t,{type:i,converted_type:f,logical_type:s}=n;if("DECIMAL"===f){const t=10**-(n.scale||0),r=new Array(e.length);for(let n=0;n<r.length;n++)e[0]instanceof Uint8Array?r[n]=y(e[n])*t:r[n]=Number(e[n])*t;return r}if(!f&&"INT96"===i){const t=new Array(e.length);for(let n=0;n<t.length;n++)t[n]=r.timestampFromNanoseconds(w(e[n]));return t}if("DATE"===f){const t=new Array(e.length);for(let n=0;n<t.length;n++)t[n]=r.dateFromDays(e[n]);return t}if("TIMESTAMP_MILLIS"===f){const t=new Array(e.length);for(let n=0;n<t.length;n++)t[n]=r.timestampFromMilliseconds(e[n]);return t}if("TIMESTAMP_MICROS"===f){const t=new Array(e.length);for(let n=0;n<t.length;n++)t[n]=r.timestampFromMicroseconds(e[n]);return t}if("JSON"===f){const t=new TextDecoder;return e.map(e=>JSON.parse(t.decode(e)))}if("BSON"===f)throw new Error("parquet bson not supported");if("INTERVAL"===f)throw new Error("parquet interval not supported");if("UTF8"===f||"STRING"===s?.type||o&&"BYTE_ARRAY"===i){const t=new TextDecoder,n=new Array(e.length);for(let r=0;r<n.length;r++)n[r]=e[r]&&t.decode(e[r]);return n}if("UINT_64"===f||"INTEGER"===s?.type&&64===s.bitWidth&&!s.isSigned){if(e instanceof BigInt64Array)return new BigUint64Array(e.buffer,e.byteOffset,e.length);const t=new BigUint64Array(e.length);for(let n=0;n<t.length;n++)t[n]=BigInt(e[n]);return t}if("UINT_32"===f||"INTEGER"===s?.type&&32===s.bitWidth&&!s.isSigned){if(e instanceof Int32Array)return new Uint32Array(e.buffer,e.byteOffset,e.length);const t=new Uint32Array(e.length);for(let n=0;n<t.length;n++)t[n]=e[n];return t}if("FLOAT16"===s?.type)return Array.from(e).map(g);if("TIMESTAMP"===s?.type){const{unit:t}=s;let n=r.timestampFromMilliseconds;"MICROS"===t&&(n=r.timestampFromMicroseconds),"NANOS"===t&&(n=r.timestampFromNanoseconds);const o=new Array(e.length);for(let t=0;t<o.length;t++)o[t]=n(e[t]);return o}return e}function y(e){let t=0;for(const n of e)t=256*t+n;const n=8*e.length;return t>=2**(n-1)&&(t-=2**n),t}function w(e){return 86400000000000n*((e>>64n)-2440588n)+(0xffffffffffffffffn&e)}function g(e){if(!e)return;const t=e[1]<<8|e[0],n=t>>15?-1:1,r=t>>10&31,o=1023&t;return 0===r?n*2**-14*(o/1024):31===r?o?NaN:n*(1/0):n*2**(r-15)*(1+o/1024)}function m(e,t,n){const r=e[t],o=[];let i=1;if(r.num_children)for(;o.length<r.num_children;){const r=e[t+i],f=m(e,t+i,[...n,r.name]);i+=f.count,o.push(f)}return{count:i,element:r,children:o,path:n}}function A(e,t){let n=m(e,0,[]);const r=[n];for(const e of t){const o=n.children.find(t=>t.element.name===e);if(!o)throw new Error(`parquet schema element not found: ${t}`);r.push(o),n=o}return r}function E(e){let t=0;for(const{element:n}of e)"REPEATED"===n.repetition_type&&t++;return t}function I(e){let t=0;for(const{element:n}of e.slice(1))"REQUIRED"!==n.repetition_type&&t++;return t}function b(e){let t=0;const n={};for(;e.offset<e.view.byteLength;){const[r,o,i]=R(e,t);if(t=i,0===r)break;n[`field_${o}`]=v(e,r)}return n}function v(e,t){switch(t){case 1:return!0;case 2:return!1;case 3:return e.view.getInt8(e.offset++);case 4:case 5:return function(e){const t=T(e);return t>>>1^-(1&t)}(e);case 6:return N(e);case 7:{const t=e.view.getFloat64(e.offset,!0);return e.offset+=8,t}case 8:{const t=T(e),n=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t,n}case 9:{const[t,n]=function(e){const t=e.view.getUint8(e.offset++),n=t>>4,r=L(t);return 15===n?[r,T(e)]:[r,n]}(e),r=1===t||2===t,o=new Array(n);for(let i=0;i<n;i++)o[i]=r?1===v(e,3):v(e,t);return o}case 12:{const t={};let n=0;for(;;){let r,o;if([r,o,n]=R(e,n),0===r)break;t[`field_${o}`]=v(e,r)}return t}default:throw new Error(`thrift unhandled type: ${t}`)}}function T(e){let t=0,n=0;for(;;){const r=e.view.getUint8(e.offset++);if(t|=(127&r)<<n,!(128&r))return t;n+=7}}function N(e){const t=function(e){let t=0n,n=0n;for(;;){const r=e.view.getUint8(e.offset++);if(t|=BigInt(127&r)<<n,!(128&r))return t;n+=7n}}(e);return t>>1n^-(1n&t)}function L(e){return 15&e}function R(e,t){const n=e.view.getUint8(e.offset++);if(!(15&n))return[0,0,t];const r=n>>4;let o;if(!r)throw new Error("non-delta field id not supported");return o=t+r,[L(n),o,o]}async function O(e,{parsers:t,initialFetchSize:n=524288}={}){if(!(e&&e.byteLength>=0))throw new Error("parquet expected AsyncBuffer");const r=Math.max(0,e.byteLength-n),o=await e.slice(r,e.byteLength),i=new DataView(o);if(827474256!==i.getUint32(o.byteLength-4,!0))throw new Error("parquet file invalid (footer != PAR1)");const f=i.getUint32(o.byteLength-8,!0);if(f>e.byteLength-8)throw new Error(`parquet metadata length ${f} exceeds available buffer ${e.byteLength-8}`);if(f+8>n){const n=e.byteLength-f-8,i=await e.slice(n,r),s=new ArrayBuffer(f+8),a=new Uint8Array(s);return a.set(new Uint8Array(i)),a.set(new Uint8Array(o),r-n),U(s,{parsers:t})}return U(o,{parsers:t})}function U(e,{parsers:t}={}){if(!(e instanceof ArrayBuffer))throw new Error("parquet expected ArrayBuffer");const n=new DataView(e);if(t={..._,...t},n.byteLength<8)throw new Error("parquet file is too short");if(827474256!==n.getUint32(n.byteLength-4,!0))throw new Error("parquet file invalid (footer != PAR1)");const r=n.byteLength-8,o=n.getUint32(r,!0);if(o>n.byteLength-8)throw new Error(`parquet metadata length ${o} exceeds available buffer ${n.byteLength-8}`);const i=b({view:n,offset:r-o}),f=new TextDecoder;function p(e){return e&&f.decode(e)}const h=i.field_1,y=i.field_2.map(e=>({type:s[e.field_1],type_length:e.field_2,repetition_type:l[e.field_3],name:p(e.field_4),num_children:e.field_5,converted_type:c[e.field_6],scale:e.field_7,precision:e.field_8,field_id:e.field_9,logical_type:S(e.field_10)})),w=y.filter(e=>e.type),g=i.field_3,m=i.field_4.map(e=>({columns:e.field_1.map((e,n)=>({file_path:p(e.field_1),file_offset:e.field_2,meta_data:e.field_3&&{type:s[e.field_3.field_1],encodings:e.field_3.field_2?.map(e=>a[e]),path_in_schema:e.field_3.field_3.map(p),codec:u[e.field_3.field_4],num_values:e.field_3.field_5,total_uncompressed_size:e.field_3.field_6,total_compressed_size:e.field_3.field_7,key_value_metadata:e.field_3.field_8,data_page_offset:e.field_3.field_9,index_page_offset:e.field_3.field_10,dictionary_page_offset:e.field_3.field_11,statistics:P(e.field_3.field_12,w[n],t),encoding_stats:e.field_3.field_13?.map(e=>({page_type:d[e.field_1],encoding:a[e.field_2],count:e.field_3})),bloom_filter_offset:e.field_3.field_14,bloom_filter_length:e.field_3.field_15,size_statistics:e.field_3.field_16&&{unencoded_byte_array_data_bytes:e.field_3.field_16.field_1,repetition_level_histogram:e.field_3.field_16.field_2,definition_level_histogram:e.field_3.field_16.field_3}},offset_index_offset:e.field_4,offset_index_length:e.field_5,column_index_offset:e.field_6,column_index_length:e.field_7,crypto_metadata:e.field_8,encrypted_column_metadata:e.field_9})),total_byte_size:e.field_2,num_rows:e.field_3,sorting_columns:e.field_4?.map(e=>({column_idx:e.field_1,descending:e.field_2,nulls_first:e.field_3})),file_offset:e.field_5,total_compressed_size:e.field_6,ordinal:e.field_7})),A=i.field_5?.map(e=>({key:p(e.field_1),value:p(e.field_2)}));return{version:h,schema:y,num_rows:g,row_groups:m,key_value_metadata:A,created_by:p(i.field_6),metadata_length:o}}function D({schema:e}){return A(e,[])[0]}function S(e){return e?.field_1?{type:"STRING"}:e?.field_2?{type:"MAP"}:e?.field_3?{type:"LIST"}:e?.field_4?{type:"ENUM"}:e?.field_5?{type:"DECIMAL",scale:e.field_5.field_1,precision:e.field_5.field_2}:e?.field_6?{type:"DATE"}:e?.field_7?{type:"TIME",isAdjustedToUTC:e.field_7.field_1,unit:B(e.field_7.field_2)}:e?.field_8?{type:"TIMESTAMP",isAdjustedToUTC:e.field_8.field_1,unit:B(e.field_8.field_2)}:e?.field_10?{type:"INTEGER",bitWidth:e.field_10.field_1,isSigned:e.field_10.field_2}:e?.field_11?{type:"NULL"}:e?.field_12?{type:"JSON"}:e?.field_13?{type:"BSON"}:e?.field_14?{type:"UUID"}:e?.field_15?{type:"FLOAT16"}:e}function B(e){if(e.field_1)return"MILLIS";if(e.field_2)return"MICROS";if(e.field_3)return"NANOS";throw new Error("parquet time unit required")}function P(e,t,n){return e&&{max:M(e.field_1,t,n),min:M(e.field_2,t,n),null_count:e.field_3,distinct_count:e.field_4,max_value:M(e.field_5,t,n),min_value:M(e.field_6,t,n),is_max_value_exact:e.field_7,is_min_value_exact:e.field_8}}function M(e,t,n){const{type:r,converted_type:o,logical_type:i}=t;if(void 0===e)return e;if("BOOLEAN"===r)return 1===e[0];if("BYTE_ARRAY"===r)return(new TextDecoder).decode(e);const f=new DataView(e.buffer,e.byteOffset,e.byteLength);return"FLOAT"===r&&4===f.byteLength?f.getFloat32(0,!0):"DOUBLE"===r&&8===f.byteLength?f.getFloat64(0,!0):"INT32"===r&&"DATE"===o?n.dateFromDays(f.getInt32(0,!0)):"INT64"===r&&"TIMESTAMP_MILLIS"===o?n.timestampFromMilliseconds(f.getBigInt64(0,!0)):"INT64"===r&&"TIMESTAMP_MICROS"===o?n.timestampFromMicroseconds(f.getBigInt64(0,!0)):"INT64"===r&&"TIMESTAMP"===i?.type&&"NANOS"===i?.unit?n.timestampFromNanoseconds(f.getBigInt64(0,!0)):"INT64"===r&&"TIMESTAMP"===i?.type&&"MICROS"===i?.unit?n.timestampFromMicroseconds(f.getBigInt64(0,!0)):"INT64"===r&&"TIMESTAMP"===i?.type?n.timestampFromMilliseconds(f.getBigInt64(0,!0)):"INT32"===r&&4===f.byteLength?f.getInt32(0,!0):"INT64"===r&&8===f.byteLength?f.getBigInt64(0,!0):"DECIMAL"===o?y(e)*10**-(t.scale||0):"FLOAT16"===i?.type?g(e):e}function $({dictionary_page_offset:e,data_page_offset:t,total_compressed_size:n}){const r=e||t;return{startByte:Number(r),endByte:Number(r+n)}}function F(e,t,n,r,o){const i=t?.length||n.length;if(!i)return r;const f=I(o),s=o.map(({element:e})=>e.repetition_type);let a=0;const l=[e];let c=e,u=0,d=0,_=0;if(n[0])for(;u<s.length-2&&_<n[0];)u++,"REQUIRED"!==s[u]&&(c=c.at(-1),l.push(c),d++),"REPEATED"===s[u]&&_++;for(let e=0;e<i;e++){const o=t?.length?t[e]:f,i=n[e];for(;u&&(i<_||"REPEATED"!==s[u]);)"REQUIRED"!==s[u]&&(l.pop(),d--),"REPEATED"===s[u]&&_--,u--;for(c=l.at(-1);(u<s.length-2||"REPEATED"===s[u+1])&&(d<o||"REQUIRED"===s[u+1]);){if(u++,"REQUIRED"!==s[u]){const e=[];c.push(e),c=e,l.push(e),d++}"REPEATED"===s[u]&&_++}o===f?c.push(r[a++]):u===s.length-2?c.push(null):c.push([])}if(!e.length)for(let e=0;e<f;e++){const e=[];c.push(e),c=e}return e}function q(e,t,n=0){const r=t.path.join("."),o="OPTIONAL"===t.element.repetition_type,i=o?n+1:n;if(function(e){if(!e)return!1;if("LIST"!==e.element.converted_type)return!1;if(e.children.length>1)return!1;const t=e.children[0];return!(t.children.length>1)&&"REPEATED"===t.element.repetition_type}(t)){let f=t.children[0],s=i;1===f.children.length&&(f=f.children[0],s++),q(e,f,s);const a=f.path.join("."),l=e.get(a);if(!l)throw new Error("parquet list column missing values");return o&&C(l,n),e.set(r,l),void e.delete(a)}if(function(e){if(!e)return!1;if("MAP"!==e.element.converted_type)return!1;if(e.children.length>1)return!1;const t=e.children[0];if(2!==t.children.length)return!1;if("REPEATED"!==t.element.repetition_type)return!1;const n=t.children.find(e=>"key"===e.element.name);if("REPEATED"===n?.element.repetition_type)return!1;const r=t.children.find(e=>"value"===e.element.name);return"REPEATED"!==r?.element.repetition_type}(t)){const f=t.children[0].element.name;q(e,t.children[0].children[0],i+1),q(e,t.children[0].children[1],i+1);const s=e.get(`${r}.${f}.key`),a=e.get(`${r}.${f}.value`);if(!s)throw new Error("parquet map column missing keys");if(!a)throw new Error("parquet map column missing values");if(s.length!==a.length)throw new Error("parquet map column key/value length mismatch");const l=Y(s,a,i);return o&&C(l,n),e.delete(`${r}.${f}.key`),e.delete(`${r}.${f}.value`),void e.set(r,l)}if(t.children.length){const i="REQUIRED"===t.element.repetition_type?n:n+1,f={};for(const n of t.children){q(e,n,i);const t=e.get(n.path.join("."));if(!t)throw new Error("parquet struct missing child data");f[n.element.name]=t}for(const n of t.children)e.delete(n.path.join("."));const s=x(f,i);o&&C(s,n),e.set(r,s)}}function C(e,t){for(let n=0;n<e.length;n++)t?C(e[n],t-1):e[n]=e[n][0]}function Y(e,t,n){const r=[];for(let o=0;o<e.length;o++)if(n)r.push(Y(e[o],t[o],n-1));else if(e[o]){const n={};for(let r=0;r<e[o].length;r++){const i=t[o][r];n[e[o][r]]=void 0===i?null:i}r.push(n)}else r.push(void 0);return r}function x(e,t){const n=Object.keys(e),r=e[n[0]]?.length,o=[];for(let i=0;i<r;i++){const f={};for(const t of n){if(e[t].length!==r)throw new Error("parquet struct parsing error");f[t]=e[t][i]}t?o.push(x(f,t-1)):o.push(f)}return o}function k(e,t,n){const r=n instanceof Int32Array,o=T(e),i=T(e);T(e);let f=N(e),s=0;n[s++]=r?Number(f):f;const a=o/i;for(;s<t;){const o=N(e),l=new Uint8Array(i);for(let t=0;t<i;t++)l[t]=e.view.getUint8(e.offset++);for(let c=0;c<i&&s<t;c++){const i=BigInt(l[c]);if(i){let l=0n,c=a;const u=(1n<<i)-1n;for(;c&&s<t;){let t=BigInt(e.view.getUint8(e.offset))>>l&u;for(l+=i;l>=8;)l-=8n,e.offset++,l&&(t|=BigInt(e.view.getUint8(e.offset))<<i-l&u);f+=o+t,n[s++]=r?Number(f):f,c--}c&&(e.offset+=Math.ceil((c*Number(i)+Number(l))/8))}else for(let e=0;e<a&&s<t;e++)f+=o,n[s++]=r?Number(f):f}}}function j(e,t,n){const r=new Int32Array(t);k(e,t,r);for(let o=0;o<t;o++)n[o]=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,r[o]),e.offset+=r[o]}function G(e){return 32-Math.clz32(e)}function z(e,t,n,r){void 0===r&&(r=e.view.getUint32(e.offset,!0),e.offset+=4);const o=e.offset;let i=0;for(;i<n.length;){const r=T(e);if(1&r)i=Q(e,r,t,n,i);else{const o=r>>>1;V(e,o,t,n,i),i+=o}}e.offset=o+r}function V(e,t,n,r,o){const i=n+7>>3;let f=0;for(let t=0;t<i;t++)f|=e.view.getUint8(e.offset++)<<(t<<3);for(let e=0;e<t;e++)r[o+e]=f}function Q(e,t,n,r,o){let i=t>>1<<3;const f=(1<<n)-1;let s=0;if(e.offset<e.view.byteLength)s=e.view.getUint8(e.offset++);else if(f)throw new Error(`parquet bitpack offset ${e.offset} out of range`);let a=8,l=0;for(;i;)l>8?(l-=8,a-=8,s>>>=8):a-l<n?(s|=e.view.getUint8(e.offset)<<a,e.offset++,a+=8):(o<r.length&&(r[o++]=s>>l&f),i--,l+=n);return o}function J(e,t,n,r){const o=function(e,t){switch(e){case"INT32":case"FLOAT":return 4;case"INT64":case"DOUBLE":return 8;case"FIXED_LEN_BYTE_ARRAY":if(!t)throw new Error("parquet byteWidth missing type_length");return t;default:throw new Error(`parquet unsupported type: ${e}`)}}(n,r),i=new Uint8Array(t*o);for(let n=0;n<o;n++)for(let r=0;r<t;r++)i[r*o+n]=e.view.getUint8(e.offset++);if("FLOAT"===n)return new Float32Array(i.buffer);if("DOUBLE"===n)return new Float64Array(i.buffer);if("INT32"===n)return new Int32Array(i.buffer);if("INT64"===n)return new BigInt64Array(i.buffer);if("FIXED_LEN_BYTE_ARRAY"===n){const e=new Array(t);for(let n=0;n<t;n++)e[n]=i.subarray(n*o,(n+1)*o);return e}throw new Error(`parquet byte_stream_split unsupported type: ${n}`)}function W(e,t,n,r){if(0===n)return[];if("BOOLEAN"===t)return function(e,t){const n=new Array(t);for(let r=0;r<t;r++){const t=e.offset+(r/8|0),o=r%8,i=e.view.getUint8(t);n[r]=!!(i&1<<o)}return e.offset+=Math.ceil(t/8),n}(e,n);if("INT32"===t)return function(e,t){const n=(e.view.byteOffset+e.offset)%4?new Int32Array(H(e.view.buffer,e.view.byteOffset+e.offset,4*t)):new Int32Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=4*t,n}(e,n);if("INT64"===t)return function(e,t){const n=(e.view.byteOffset+e.offset)%8?new BigInt64Array(H(e.view.buffer,e.view.byteOffset+e.offset,8*t)):new BigInt64Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=8*t,n}(e,n);if("INT96"===t)return function(e,t){const n=new Array(t);for(let r=0;r<t;r++){const t=e.view.getBigInt64(e.offset+12*r,!0),o=e.view.getInt32(e.offset+12*r+8,!0);n[r]=BigInt(o)<<64n|t}return e.offset+=12*t,n}(e,n);if("FLOAT"===t)return function(e,t){const n=(e.view.byteOffset+e.offset)%4?new Float32Array(H(e.view.buffer,e.view.byteOffset+e.offset,4*t)):new Float32Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=4*t,n}(e,n);if("DOUBLE"===t)return function(e,t){const n=(e.view.byteOffset+e.offset)%8?new Float64Array(H(e.view.buffer,e.view.byteOffset+e.offset,8*t)):new Float64Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=8*t,n}(e,n);if("BYTE_ARRAY"===t)return function(e,t){const n=new Array(t);for(let r=0;r<t;r++){const t=e.view.getUint32(e.offset,!0);e.offset+=4,n[r]=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t),e.offset+=t}return n}(e,n);if("FIXED_LEN_BYTE_ARRAY"===t){if(!r)throw new Error("parquet missing fixed length");return function(e,t,n){const r=new Array(t);for(let o=0;o<t;o++)r[o]=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,n),e.offset+=n;return r}(e,n,r)}throw new Error(`parquet unhandled type: ${t}`)}function H(e,t,n){const r=new ArrayBuffer(n);return new Uint8Array(r).set(new Uint8Array(e,t,n)),r}const K=[0,255,65535,16777215,4294967295];function X(e,t,n,r,o){for(let i=0;i<o;i++)n[r+i]=e[t+i]}function Z(e,t,n,r){let o;const i=r?.[n];if("UNCOMPRESSED"===n)o=e;else if(i)o=i(e,t);else{if("SNAPPY"!==n)throw new Error(`parquet unsupported compression codec: ${n}`);o=new Uint8Array(t),function(e,t){const n=e.byteLength,r=t.byteLength;let o=0,i=0;for(;o<n;){const t=e[o];if(o++,t<128)break}if(r&&o>=n)throw new Error("invalid snappy length header");for(;o<n;){const r=e[o];let f=0;if(o++,o>=n)throw new Error("missing eof marker");if(3&r){let s=0;switch(3&r){case 1:f=4+(r>>>2&7),s=e[o]+(r>>>5<<8),o++;break;case 2:if(n<=o+1)throw new Error("snappy error end of input");f=(r>>>2)+1,s=e[o]+(e[o+1]<<8),o+=2;break;case 3:if(n<=o+3)throw new Error("snappy error end of input");f=(r>>>2)+1,s=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+(e[o+3]<<24),o+=4}if(0===s||isNaN(s))throw new Error(`invalid offset ${s} pos ${o} inputLength ${n}`);if(s>i)throw new Error("cannot copy from before start of buffer");X(t,i-s,t,i,f),i+=f}else{let f=(r>>>2)+1;if(f>60){if(o+3>=n)throw new Error("snappy error literal pos + 3 >= inputLength");const t=f-60;f=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+(e[o+3]<<24),f=1+(f&K[t]),o+=t}if(o+f>n)throw new Error("snappy error literal exceeds input length");X(e,o,t,i,f),o+=f,i+=f}}if(i!==r)throw new Error("premature end of input")}(e,o)}if(o?.length!==t)throw new Error(`parquet decompressed page length ${o?.length} does not match header ${t}`);return o}function ee(e,{groupStart:t,selectStart:n,selectEnd:r},o,i){const{columnName:f}=o,s=[];let a,l,c=0;const u=i&&(()=>{l&&i({columnName:f,columnData:l,rowStart:t+c-l.length,rowEnd:t+c})});for(;c<r&&!(e.offset>=e.view.byteLength-1);){const t=ne(e);if("DICTIONARY_PAGE"===t.type)a=te(e,t,o,a,void 0,0),a=h(a,o);else{const r=l?.length||0,i=te(e,t,o,a,l,n-c);l===i?c+=i.length-r:(u?.(),s.push(i),c+=i.length,l=i)}}return u?.(),c>r&&l&&(s[s.length-1]=l.slice(0,r-(c-l.length))),s}function te(e,t,n,r,o,i){const{type:f,element:s,schemaPath:a,codec:l,compressors:c}=n,u=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t.compressed_page_size);if(e.offset+=t.compressed_page_size,"DATA_PAGE"===t.type){const e=t.data_page_header;if(!e)throw new Error("parquet data page header is undefined");if(i>e.num_values&&function(e){if(2!==e.length)return!1;const[,t]=e;return"REPEATED"!==t.element.repetition_type&&!t.children.length}(a))return new Array(e.num_values);const f=Z(u,Number(t.uncompressed_page_size),l,c),{definitionLevels:s,repetitionLevels:d,dataPage:_}=function(e,t,{type:n,element:r,schemaPath:o}){const i=new DataView(e.buffer,e.byteOffset,e.byteLength),f={view:i,offset:0};let s;const a=function(e,t,n){if(n.length>1){const r=E(n);if(r){const n=new Array(t.num_values);return z(e,G(r),n),n}}return[]}(f,t,o),{definitionLevels:l,numNulls:c}=function(e,t,n){const r=I(n);if(!r)return{definitionLevels:[],numNulls:0};const o=new Array(t.num_values);z(e,G(r),o);let i=t.num_values;for(const e of o)e===r&&i--;return 0===i&&(o.length=0),{definitionLevels:o,numNulls:i}}(f,t,o),u=t.num_values-c;if("PLAIN"===t.encoding)s=W(f,n,u,r.type_length);else if("PLAIN_DICTIONARY"===t.encoding||"RLE_DICTIONARY"===t.encoding||"RLE"===t.encoding){const e="BOOLEAN"===n?1:i.getUint8(f.offset++);e?(s=new Array(u),"BOOLEAN"===n?(z(f,e,s),s=s.map(e=>!!e)):z(f,e,s,i.byteLength-f.offset)):s=new Uint8Array(u)}else if("BYTE_STREAM_SPLIT"===t.encoding)s=J(f,u,n,r.type_length);else if("DELTA_BINARY_PACKED"===t.encoding)s="INT32"===n?new Int32Array(u):new BigInt64Array(u),k(f,u,s);else{if("DELTA_LENGTH_BYTE_ARRAY"!==t.encoding)throw new Error(`parquet unsupported encoding: ${t.encoding}`);s=new Array(u),j(f,u,s)}return{definitionLevels:l,repetitionLevels:a,dataPage:s}}(f,e,n);let h=p(_,r,e.encoding,n);if(d.length||s?.length)return F(Array.isArray(o)?o:[],s,d,h,a);for(let e=2;e<a.length;e++)"REQUIRED"!==a[e].element.repetition_type&&(h=Array.from(h,e=>[e]));return h}if("DATA_PAGE_V2"===t.type){const e=t.data_page_header_v2;if(!e)throw new Error("parquet data page header v2 is undefined");if(i>e.num_rows)return new Array(e.num_values);const{definitionLevels:f,repetitionLevels:s,dataPage:l}=function(e,t,n){const r={view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0},{type:o,element:i,schemaPath:f,codec:s,compressors:a}=n,l=t.data_page_header_v2;if(!l)throw new Error("parquet data page header v2 is undefined");const c=function(e,t,n){const r=E(n);if(!r)return[];const o=new Array(t.num_values);return z(e,G(r),o,t.repetition_levels_byte_length),o}(r,l,f);r.offset=l.repetition_levels_byte_length;const u=function(e,t,n){const r=I(n);if(r){const n=new Array(t.num_values);return z(e,G(r),n,t.definition_levels_byte_length),n}}(r,l,f),d=t.uncompressed_page_size-l.definition_levels_byte_length-l.repetition_levels_byte_length;let _=e.subarray(r.offset);!1!==l.is_compressed&&(_=Z(_,d,s,a));const p=new DataView(_.buffer,_.byteOffset,_.byteLength),h={view:p,offset:0};let y;const w=l.num_values-l.num_nulls;if("PLAIN"===l.encoding)y=W(h,o,w,i.type_length);else if("RLE"===l.encoding)y=new Array(w),z(h,1,y),y=y.map(e=>!!e);else if("PLAIN_DICTIONARY"===l.encoding||"RLE_DICTIONARY"===l.encoding){const e=p.getUint8(h.offset++);y=new Array(w),z(h,e,y,d-1)}else if("DELTA_BINARY_PACKED"===l.encoding)y="INT32"===o?new Int32Array(w):new BigInt64Array(w),k(h,w,y);else if("DELTA_LENGTH_BYTE_ARRAY"===l.encoding)y=new Array(w),j(h,w,y);else if("DELTA_BYTE_ARRAY"===l.encoding)y=new Array(w),function(e,t,n){const r=new Int32Array(t);k(e,t,r);const o=new Int32Array(t);k(e,t,o);for(let i=0;i<t;i++){const t=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,o[i]);r[i]?(n[i]=new Uint8Array(r[i]+o[i]),n[i].set(n[i-1].subarray(0,r[i])),n[i].set(t,r[i])):n[i]=t,e.offset+=o[i]}}(h,w,y);else{if("BYTE_STREAM_SPLIT"!==l.encoding)throw new Error(`parquet unsupported encoding: ${l.encoding}`);y=J(r,w,o,i.type_length)}return{definitionLevels:u,repetitionLevels:c,dataPage:y}}(u,t,n),c=p(l,r,e.encoding,n);return F(Array.isArray(o)?o:[],f,s,c,a)}if("DICTIONARY_PAGE"===t.type){const e=t.dictionary_page_header;if(!e)throw new Error("parquet dictionary page header is undefined");const n=Z(u,Number(t.uncompressed_page_size),l,c);return W({view:new DataView(n.buffer,n.byteOffset,n.byteLength),offset:0},f,e.num_values,s.type_length)}throw new Error(`parquet unsupported page type: ${t.type}`)}function ne(e){const t=b(e);return{type:d[t.field_1],uncompressed_page_size:t.field_2,compressed_page_size:t.field_3,crc:t.field_4,data_page_header:t.field_5&&{num_values:t.field_5.field_1,encoding:a[t.field_5.field_2],definition_level_encoding:a[t.field_5.field_3],repetition_level_encoding:a[t.field_5.field_4],statistics:t.field_5.field_5&&{max:t.field_5.field_5.field_1,min:t.field_5.field_5.field_2,null_count:t.field_5.field_5.field_3,distinct_count:t.field_5.field_5.field_4,max_value:t.field_5.field_5.field_5,min_value:t.field_5.field_5.field_6}},index_page_header:t.field_6,dictionary_page_header:t.field_7&&{num_values:t.field_7.field_1,encoding:a[t.field_7.field_2],is_sorted:t.field_7.field_3},data_page_header_v2:t.field_8&&{num_values:t.field_8.field_1,num_nulls:t.field_8.field_2,num_rows:t.field_8.field_3,encoding:a[t.field_8.field_4],definition_levels_byte_length:t.field_8.field_5,repetition_levels_byte_length:t.field_8.field_6,is_compressed:void 0===t.field_8.field_7||t.field_8.field_7,statistics:t.field_8.field_8}}}async function re({asyncColumns:e},t,n,r,o){const i=new Array(n),s=await Promise.all(e.map(({data:e})=>e.then(f))),a=e.map(e=>e.pathInSchema[0]).filter(e=>!r||r.includes(e)),l=r??a,c=l.map(t=>e.findIndex(e=>e.pathInSchema[0]===t));for(let r=t;r<n;r++)if("object"===o){const t={};for(let n=0;n<e.length;n++)t[e[n].pathInSchema[0]]=s[n][r];i[r]=t}else{const t=new Array(e.length);for(let e=0;e<l.length;e++)c[e]>=0&&(t[e]=s[c[e]][r]);i[r]=t}return i}function oe(e,t){const{asyncColumns:n}=e,r=[];for(const e of t.children)if(e.children.length){const t=n.filter(t=>t.pathInSchema[0]===e.element.name);if(!t.length)continue;const o=new Map,i=Promise.all(t.map(e=>e.data.then(t=>{o.set(e.pathInSchema.join("."),f(t))}))).then(()=>{q(o,e);const t=o.get(e.path.join("."));if(!t)throw new Error("parquet column data not assembled");return[t]});r.push({pathInSchema:e.path,data:i})}else{const t=n.find(t=>t.pathInSchema[0]===e.element.name);t&&r.push(t)}return{...e,asyncColumns:r}}function ie(e){if(!e.metadata)throw new Error("parquet requires metadata");const t=function({metadata:e,rowStart:t=0,rowEnd:n=1/0,columns:o}){if(!e)throw new Error("parquetPlan requires metadata");const i=[],f=[];let s=0;for(const a of e.row_groups){const e=Number(a.num_rows),l=s+e;if(e>0&&l>=t&&s<n){const l=[];for(const{file_path:e,meta_data:t}of a.columns){if(e)throw new Error("parquet file_path not supported");if(!t)throw new Error("parquet column metadata is undefined");o&&!o.includes(t.path_in_schema[0])||l.push($(t))}const c=Math.max(t-s,0),u=Math.min(n-s,e);i.push({ranges:l,rowGroup:a,groupStart:s,groupRows:e,selectStart:c,selectEnd:u});const d=l[l.length-1]?.endByte-l[0]?.startByte;if(!o&&d<33554432)f.push({startByte:l[0].startByte,endByte:l[l.length-1].endByte});else if(l.length)r(f,l);else if(o?.length)throw new Error(`parquet columns not found: ${o.join(", ")}`)}s=l}return isFinite(n)||(n=s),{metadata:e,rowStart:t,rowEnd:n,columns:o,fetches:f,groups:i}}(e);return e.file=function(e,{fetches:t}){const n=t.map(({startByte:t,endByte:n})=>e.slice(t,n));return{byteLength:e.byteLength,slice(r,o=e.byteLength){const i=t.findIndex(({startByte:e,endByte:t})=>e<=r&&o<=t);if(i<0)throw new Error(`no prefetch for range [${r}, ${o}]`);if(t[i].startByte!==r||t[i].endByte!==o){const e=r-t[i].startByte,f=o-t[i].startByte;return n[i]instanceof Promise?n[i].then(t=>t.slice(e,f)):n[i].slice(e,f)}return n[i]}}}(e.file,t),t.groups.map(n=>function(e,{metadata:t,columns:n},r){const{file:o,compressors:i,utf8:f}=e,s=[],a={..._,...e.parsers};for(const{file_path:l,meta_data:c}of r.rowGroup.columns){if(l)throw new Error("parquet file_path not supported");if(!c)throw new Error("parquet column metadata is undefined");const u=c.path_in_schema[0];if(n&&!n.includes(u))continue;const{startByte:d,endByte:_}=$(c),p=_-d;if(p>1<<30){console.warn(`parquet skipping huge column "${c.path_in_schema}" ${p} bytes`);continue}const h=Promise.resolve(o.slice(d,_));s.push({pathInSchema:c.path_in_schema,data:h.then(n=>{const o=A(t.schema,c.path_in_schema),s={view:new DataView(n),offset:0},l={columnName:c.path_in_schema.join("."),type:c.type,element:o[o.length-1].element,schemaPath:o,codec:c.codec,parsers:a,compressors:i,utf8:f};return ee(s,r,l,e.onPage)})})}return{groupStart:r.groupStart,groupRows:r.groupRows,asyncColumns:s}}(e,t,n))}function fe(e){return new Promise((t,n)=>{(async function(e){e.metadata??=await O(e.file);const t=await ie(e),{rowStart:n=0,rowEnd:o,columns:i,onChunk:f,onComplete:s,rowFormat:a}=e;if(!s&&!f){for(const{asyncColumns:e}of t)for(const{data:t}of e)await t;return}const l=D(e.metadata),c=t.map(e=>oe(e,l));if(f)for(const e of c)for(const t of e.asyncColumns)t.data.then(n=>{let r=e.groupStart;for(const e of n)f({columnName:t.pathInSchema[0],columnData:e,rowStart:r,rowEnd:r+e.length}),r+=e.length});if(s){const e=[];for(const t of c){const f=Math.max(n-t.groupStart,0),s=Math.min((o??1/0)-t.groupStart,t.groupRows);r(e,(await re(t,f,s,i,a)).slice(f,s))}s(e)}else for(const{asyncColumns:e}of c)for(const{data:t}of e)await t})({rowFormat:"object",...e,onComplete:t}).catch(n)})}function se(e,t){return e<t?-1:e>t?1:0}function ae(e,t={}){return"$and"in t&&Array.isArray(t.$and)?t.$and.every(t=>ae(e,t)):"$or"in t&&Array.isArray(t.$or)?t.$or.some(t=>ae(e,t)):"$nor"in t&&Array.isArray(t.$nor)?!t.$nor.some(t=>ae(e,t)):Object.entries(t).every(([t,n])=>{const r=e[t];return"object"!=typeof n||null===n||Array.isArray(n)?o(r,n):Object.entries(n||{}).every(([e,n])=>{switch(e){case"$gt":return r>n;case"$gte":return r>=n;case"$lt":return r<n;case"$lte":return r<=n;case"$eq":return o(r,n);case"$ne":return!o(r,n);case"$in":return Array.isArray(n)&&n.includes(r);case"$nin":return Array.isArray(n)&&!n.includes(r);case"$not":return!ae({[t]:r},{[t]:n});default:return!0}})})}function le(e){if(!e)return[];const t=[];return"$and"in e&&Array.isArray(e.$and)?t.push(...e.$and.flatMap(le)):"$or"in e&&Array.isArray(e.$or)?t.push(...e.$or.flatMap(le)):"$nor"in e&&Array.isArray(e.$nor)?t.push(...e.$nor.flatMap(le)):t.push(...Object.keys(e)),t}function ce(e){const t=new DataView(e.buffer,e.byteOffset,e.byteLength);let n=0;const r=e[n];n+=1;const o=1===r,i=t.getUint32(n,o);if(n+=4,1===i){const e=t.getFloat64(n,o);n+=8;const r=t.getFloat64(n,o);return n+=8,{type:"Point",coordinates:[e,r]}}if(2===i){const e=t.getUint32(n,o);n+=4;const r=[];for(let i=0;i<e;i++){const e=t.getFloat64(n,o);n+=8;const i=t.getFloat64(n,o);n+=8,r.push([e,i])}return{type:"LineString",coordinates:r}}if(3===i){const e=t.getUint32(n,o);n+=4;const r=[];for(let i=0;i<e;i++){const e=t.getUint32(n,o);n+=4;const i=[];for(let r=0;r<e;r++){const e=t.getFloat64(n,o);n+=8;const r=t.getFloat64(n,o);n+=8,i.push([e,r])}r.push(i)}return{type:"Polygon",coordinates:r}}if(6===i){const r=t.getUint32(n,o);n+=4;const i=[];for(let o=0;o<r;o++){const r=1===e[n];n+=1;const o=t.getUint32(n,r);if(n+=4,3!==o)throw new Error(`Expected Polygon in MultiPolygon, got ${o}`);const f=t.getUint32(n,r);n+=4;const s=[];for(let e=0;e<f;e++){const e=t.getUint32(n,r);n+=4;const o=[];for(let i=0;i<e;i++){const e=t.getFloat64(n,r);n+=8;const i=t.getFloat64(n,r);n+=8,o.push([e,i])}s.push(o)}i.push(s)}return{type:"MultiPolygon",coordinates:i}}if(4===i){const r=t.getUint32(n,o);n+=4;const i=[];for(let o=0;o<r;o++){const r=1===e[n];n+=1;const o=t.getUint32(n,r);if(n+=4,1!==o)throw new Error(`Expected Point in MultiPoint, got ${o}`);const f=t.getFloat64(n,r);n+=8;const s=t.getFloat64(n,r);n+=8,i.push([f,s])}return{type:"MultiPoint",coordinates:i}}if(5===i){const r=t.getUint32(n,o);n+=4;const i=[];for(let f=0;f<r;f++){const r=1===e[n];n+=1;const f=t.getUint32(n,r);if(n+=4,2!==f)throw new Error(`Expected LineString in MultiLineString, got ${f}`);const s=t.getUint32(n,o);n+=4;const a=[];for(let e=0;e<s;e++){const e=t.getFloat64(n,r);n+=8;const o=t.getFloat64(n,r);n+=8,a.push([e,o])}i.push(a)}return{type:"MultiLineString",coordinates:i}}throw new Error(`Unsupported geometry type: ${i}`)}async function ue({file:e,compressors:t}){const n=await O(e),r=n.key_value_metadata?.find(e=>"geo"===e.key);if(!r)throw new Error('Invalid GeoParquet file: missing "geo" metadata');const o=JSON.parse(r.value||"{}"),i=await async function(e){if(!(e.file&&e.file.byteLength>=0))throw new Error("parquet expected AsyncBuffer");e.metadata??=await O(e.file);const{metadata:t,rowStart:n=0,columns:r,orderBy:o,filter:i}=e;if(n<0)throw new Error("parquet rowStart must be positive");const s=e.rowEnd??Number(t.num_rows),a=le(i),l=D(e.metadata).children.map(e=>e.element.name),c=a.filter(e=>!l.includes(e));if(c.length)throw new Error(`parquet filter columns not found: ${c.join(", ")}`);if(o&&!l.includes(o))throw new Error(`parquet orderBy column not found: ${o}`);const u=r?l.filter(e=>r.includes(e)||a.includes(e)||e===o):void 0,d=!(!r||!u)&&r.length<u.length;if(i&&!o&&s<t.num_rows){const o=new Array;let f=0;for(const n of t.row_groups){const t=f+Number(n.num_rows),a=await fe({...e,rowStart:f,rowEnd:t,columns:u});for(const e of a)if(ae(e,i)){if(d&&u)for(const t of u)r&&!r.includes(t)&&delete e[t];o.push(e)}if(o.length>=s)break;f=t}return o.slice(n,s)}if(i){const t=await fe({...e,rowStart:void 0,rowEnd:void 0,columns:u});o&&t.sort((e,t)=>se(e[o],t[o]));const f=new Array;for(const e of t)if(ae(e,i)){if(d&&u)for(const t of u)r&&!r.includes(t)&&delete e[t];f.push(e)}return f.slice(n,s)}if("string"==typeof o){const t=await async function(e){if(1!==e.columns?.length)throw new Error("parquetReadColumn expected columns: [columnName]");e.metadata??=await O(e.file);const t=ie(e),n=D(e.metadata),r=t.map(e=>oe(e,n)),o=[];for(const e of r)o.push(f(await e.asyncColumns[0].data));return f(o)}({...e,rowStart:void 0,rowEnd:void 0,columns:[o]}),r=Array.from(t,(e,t)=>t).sort((e,n)=>se(t[e],t[n])).slice(n,s),i=await async function(e){const{file:t,rows:n}=e;e.metadata||=await O(t);const{row_groups:r}=e.metadata,o=Array(r.length).fill(!1);let i=0;const f=r.map(e=>i+=Number(e.num_rows));for(const e of n)o[f.findIndex(t=>e<t)]=!0;const s=[];let a;i=0;for(let e=0;e<o.length;e++){const t=i+Number(r[e].num_rows);o[e]?void 0===a&&(a=i):void 0!==a&&(s.push([a,t]),a=void 0),i=t}void 0!==a&&s.push([a,i]);const l=new Array(Number(e.metadata.num_rows));for(const[t,n]of s){const r=await fe({...e,rowStart:t,rowEnd:n});for(let e=t;e<n;e++)l[e]=r[e-t],l[e].__index__=e}return l}({...e,rows:r});return r.map(e=>i[e])}return await fe(e)}({file:e,utf8:!1,compressors:t}),s=[],a=o.primary_column||"geometry";for(const e of i){const t=e[a];if(!t)continue;const n=ce(t),r={};for(const t of Object.keys(e)){let n=e[t];if(t!==a&&null!==n){try{n=JSON.parse(n)}catch(e){}r[t]=n}}const o={type:"Feature",geometry:n,properties:r};s.push(o)}return{type:"FeatureCollection",features:s}}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_jupytergis_jupytergis_core=self.webpackChunk_jupytergis_jupytergis_core||[]).push([[234],{20234(e,o,r){r.r(o),r.d(o,{ICollaborativeContentProvider:()=>n,IGlobalAwareness:()=>a});var t=r(67262);const n=new t.Token("@jupyter/collaboration-extension:ICollaborativeContentProvider"),a=new t.Token("@jupyter/collaboration:IGlobalAwareness")}}]);
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! For license information please see 27.1f6ad99534ea85406d43.js.LICENSE.txt */
|
|
2
|
+
(self.webpackChunk_jupytergis_jupytergis_core=self.webpackChunk_jupytergis_jupytergis_core||[]).push([[27],{71027(A,I,g){"use strict";g.r(I),g.d(I,{default:()=>D,zstd:()=>r});var B=g(67341),Q=g(92322),C=g.n(Q);let E,i,e;const a={env:{emscripten_notify_memory_growth:function(A){e=new Uint8Array(i.exports.memory.buffer)}}},o="AGFzbQEAAAABpQEVYAF/AX9gAn9/AGADf39/AX9gBX9/f39/AX9gAX8AYAJ/fwF/YAR/f39/AX9gA39/fwBgBn9/f39/fwF/YAd/f39/f39/AX9gAn9/AX5gAn5+AX5gAABgBX9/f39/AGAGf39/f39/AGAIf39/f39/f38AYAl/f39/f39/f38AYAABf2AIf39/f39/f38Bf2ANf39/f39/f39/f39/fwF/YAF/AX4CJwEDZW52H2Vtc2NyaXB0ZW5fbm90aWZ5X21lbW9yeV9ncm93dGgABANpaAEFAAAFAgEFCwACAQABAgIFBQcAAwABDgsBAQcAEhMHAAUBDAQEAAANBwQCAgYCBAgDAwMDBgEACQkHBgICAAYGAgQUBwYGAwIGAAMCAQgBBwUGCgoEEQAEBAEIAwgDBQgDEA8IAAcABAUBcAECAgUEAQCAAgYJAX8BQaCgwAILB2AHBm1lbW9yeQIABm1hbGxvYwAoBGZyZWUAJgxaU1REX2lzRXJyb3IAaBlaU1REX2ZpbmREZWNvbXByZXNzZWRTaXplAFQPWlNURF9kZWNvbXByZXNzAEoGX3N0YXJ0ACQJBwEAQQELASQKussBaA8AIAAgACgCBCABajYCBAsZACAAKAIAIAAoAgRBH3F0QQAgAWtBH3F2CwgAIABBiH9LC34BBH9BAyEBIAAoAgQiA0EgTQRAIAAoAggiASAAKAIQTwRAIAAQDQ8LIAAoAgwiAiABRgRAQQFBAiADQSBJGw8LIAAgASABIAJrIANBA3YiBCABIARrIAJJIgEbIgJrIgQ2AgggACADIAJBA3RrNgIEIAAgBCgAADYCAAsgAQsUAQF/IAAgARACIQIgACABEAEgAgv3AQECfyACRQRAIABCADcCACAAQQA2AhAgAEIANwIIQbh/DwsgACABNgIMIAAgAUEEajYCECACQQRPBEAgACABIAJqIgFBfGoiAzYCCCAAIAMoAAA2AgAgAUF/ai0AACIBBEAgAEEIIAEQFGs2AgQgAg8LIABBADYCBEF/DwsgACABNgIIIAAgAS0AACIDNgIAIAJBfmoiBEEBTQRAIARBAWtFBEAgACABLQACQRB0IANyIgM2AgALIAAgAS0AAUEIdCADajYCAAsgASACakF/ai0AACIBRQRAIABBADYCBEFsDwsgAEEoIAEQFCACQQN0ams2AgQgAgsWACAAIAEpAAA3AAAgACABKQAINwAICy8BAX8gAUECdEGgHWooAgAgACgCAEEgIAEgACgCBGprQR9xdnEhAiAAIAEQASACCyEAIAFCz9bTvtLHq9lCfiAAfEIfiUKHla+vmLbem55/fgsdAQF/IAAoAgggACgCDEYEfyAAKAIEQSBGBUEACwuCBAEDfyACQYDAAE8EQCAAIAEgAhBnIAAPCyAAIAJqIQMCQCAAIAFzQQNxRQRAAkAgAkEBSARAIAAhAgwBCyAAQQNxRQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADTw0BIAJBA3ENAAsLAkAgA0F8cSIEQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgA0F8aiIEIABJBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAsMACAAIAEpAAA3AAALQQECfyAAKAIIIgEgACgCEEkEQEEDDwsgACAAKAIEIgJBB3E2AgQgACABIAJBA3ZrIgE2AgggACABKAAANgIAQQALDAAgACABKAIANgAAC/cCAQJ/AkAgACABRg0AAkAgASACaiAASwRAIAAgAmoiBCABSw0BCyAAIAEgAhALDwsgACABc0EDcSEDAkACQCAAIAFJBEAgAwRAIAAhAwwDCyAAQQNxRQRAIAAhAwwCCyAAIQMDQCACRQ0EIAMgAS0AADoAACABQQFqIQEgAkF/aiECIANBAWoiA0EDcQ0ACwwBCwJAIAMNACAEQQNxBEADQCACRQ0FIAAgAkF/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/QQ8hAiABIABJBEAgAUEE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";var t=g(74660),s=g(74244);const r=new class{init(){return E||(E="undefined"!=typeof fetch?fetch("data:application/wasm;base64,"+o).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,a)).then(this._init):WebAssembly.instantiate(Buffer.from(o,"base64"),a).then(this._init),E)}_init(A){i=A.instance,a.env.emscripten_notify_memory_growth(0)}decode(A,I=0){if(!i)throw new Error("ZSTDDecoder: Await .init() before decoding.");const g=A.byteLength,B=i.exports.malloc(g);e.set(A,B),I=I||Number(i.exports.ZSTD_findDecompressedSize(B,g));const Q=i.exports.malloc(I),C=i.exports.ZSTD_decompress(Q,I,B,g),E=e.slice(Q,Q+C);return i.exports.free(B),i.exports.free(Q),E}};class D extends t.A{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[s.TZ.AddCompression]}decodeBlock(A){switch(this.addCompression){case s.S3.None:break;case s.S3.Deflate:A=(0,B.UD)(new Uint8Array(A)).buffer;break;case s.S3.Zstandard:A=r.decode(new Uint8Array(A)).buffer;break;default:throw new Error(`Unsupported LERC additional compression method identifier: ${this.addCompression}`)}return C().decode(A,{returnPixelInterleavedDims:1===this.planarConfiguration}).pixels[0].buffer}}},92322(A,I){var g,B,Q,C,E,i,e,a,o,t,s,r,D;B={defaultNoDataValue:-34027999387901484e22,decode:function(A,I){var g=(I=I||{}).encodedMaskData||null===I.encodedMaskData,e=i(A,I.inputOffset||0,g),a=null!==I.noDataValue?I.noDataValue:B.defaultNoDataValue,o=Q(e,I.pixelType||Float32Array,I.encodedMaskData,a,I.returnMask),t={width:e.width,height:e.height,pixelData:o.resultPixels,minValue:o.minValue,maxValue:e.pixels.maxValue,noDataValue:a};return o.resultMask&&(t.maskData=o.resultMask),I.returnEncodedMask&&e.mask&&(t.encodedMaskData=e.mask.bitset?e.mask.bitset:null),I.returnFileInfo&&(t.fileInfo=C(e),I.computeUsedBitDepths&&(t.fileInfo.bitDepths=E(e))),t}},Q=function(A,I,g,B,Q){var C,E,i,a=0,o=A.pixels.numBlocksX,t=A.pixels.numBlocksY,s=Math.floor(A.width/o),r=Math.floor(A.height/t),D=2*A.maxZError,n=Number.MAX_VALUE;g=g||(A.mask?A.mask.bitset:null),E=new I(A.width*A.height),Q&&g&&(i=new Uint8Array(A.width*A.height));for(var w,h,f=new Float32Array(s*r),G=0;G<=t;G++){var y=G!==t?r:A.height%t;if(0!==y)for(var F=0;F<=o;F++){var l=F!==o?s:A.width%o;if(0!==l){var k,c,U,S,d=G*A.width*r+F*s,R=A.width-l,M=A.pixels.blocks[a];if(M.encoding<2?(0===M.encoding?k=M.rawData:(e(M.stuffedData,M.bitsPerPixel,M.numValidPixels,M.offset,D,f,A.pixels.maxValue),k=f),c=0):U=2===M.encoding?0:M.offset,g)for(h=0;h<y;h++){for(7&d&&(S=g[d>>3],S<<=7&d),w=0;w<l;w++)7&d||(S=g[d>>3]),128&S?(i&&(i[d]=1),n=n>(C=M.encoding<2?k[c++]:U)?C:n,E[d++]=C):(i&&(i[d]=0),E[d++]=B),S<<=1;d+=R}else if(M.encoding<2)for(h=0;h<y;h++){for(w=0;w<l;w++)n=n>(C=k[c++])?C:n,E[d++]=C;d+=R}else for(n=n>U?U:n,h=0;h<y;h++){for(w=0;w<l;w++)E[d++]=U;d+=R}if(1===M.encoding&&c!==M.numValidPixels)throw"Block and Mask do not match";a++}}}return{resultPixels:E,resultMask:i,minValue:n}},C=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 I=A.pixels.numBlocksX*A.pixels.numBlocksY,g={},B=0;B<I;B++){var Q=A.pixels.blocks[B];0===Q.encoding?g.float32=!0:1===Q.encoding?g[Q.bitsPerPixel]=!0:g[0]=!0}return Object.keys(g)},i=function(A,I,g){var B={},Q=new Uint8Array(A,I,10);if(B.fileIdentifierString=String.fromCharCode.apply(null,Q),"CntZImage"!==B.fileIdentifierString.trim())throw"Unexpected file identifier string: "+B.fileIdentifierString;I+=10;var C=new DataView(A,I,24);if(B.fileVersion=C.getInt32(0,!0),B.imageType=C.getInt32(4,!0),B.height=C.getUint32(8,!0),B.width=C.getUint32(12,!0),B.maxZError=C.getFloat64(16,!0),I+=24,!g)if(C=new DataView(A,I,16),B.mask={},B.mask.numBlocksY=C.getUint32(0,!0),B.mask.numBlocksX=C.getUint32(4,!0),B.mask.numBytes=C.getUint32(8,!0),B.mask.maxValue=C.getFloat32(12,!0),I+=16,B.mask.numBytes>0){var E=new Uint8Array(Math.ceil(B.width*B.height/8)),i=(C=new DataView(A,I,B.mask.numBytes)).getInt16(0,!0),e=2,a=0;do{if(i>0)for(;i--;)E[a++]=C.getUint8(e++);else{var o=C.getUint8(e++);for(i=-i;i--;)E[a++]=o}i=C.getInt16(e,!0),e+=2}while(e<B.mask.numBytes);if(-32768!==i||a<E.length)throw"Unexpected end of mask RLE encoding";B.mask.bitset=E,I+=B.mask.numBytes}else 0===(B.mask.numBytes|B.mask.numBlocksY|B.mask.maxValue)&&(B.mask.bitset=new Uint8Array(Math.ceil(B.width*B.height/8)));C=new DataView(A,I,16),B.pixels={},B.pixels.numBlocksY=C.getUint32(0,!0),B.pixels.numBlocksX=C.getUint32(4,!0),B.pixels.numBytes=C.getUint32(8,!0),B.pixels.maxValue=C.getFloat32(12,!0),I+=16;var t=B.pixels.numBlocksX,s=B.pixels.numBlocksY,r=t+(B.width%t>0?1:0),D=s+(B.height%s>0?1:0);B.pixels.blocks=new Array(r*D);for(var n=0,w=0;w<D;w++)for(var h=0;h<r;h++){var f=0,G=A.byteLength-I;C=new DataView(A,I,Math.min(10,G));var y={};B.pixels.blocks[n++]=y;var F=C.getUint8(0);if(f++,y.encoding=63&F,y.encoding>3)throw"Invalid block encoding ("+y.encoding+")";if(2!==y.encoding){if(0!==F&&2!==F){if(F>>=6,y.offsetType=F,2===F)y.offset=C.getInt8(1),f++;else if(1===F)y.offset=C.getInt16(1,!0),f+=2;else{if(0!==F)throw"Invalid block offset type";y.offset=C.getFloat32(1,!0),f+=4}if(1===y.encoding)if(F=C.getUint8(f),f++,y.bitsPerPixel=63&F,F>>=6,y.numValidPixelsType=F,2===F)y.numValidPixels=C.getUint8(f),f++;else if(1===F)y.numValidPixels=C.getUint16(f,!0),f+=2;else{if(0!==F)throw"Invalid valid pixel count type";y.numValidPixels=C.getUint32(f,!0),f+=4}}var l;if(I+=f,3!==y.encoding)if(0===y.encoding){var k=(B.pixels.numBytes-1)/4;if(k!==Math.floor(k))throw"uncompressed block has invalid length";l=new ArrayBuffer(4*k),new Uint8Array(l).set(new Uint8Array(A,I,4*k));var c=new Float32Array(l);y.rawData=c,I+=4*k}else if(1===y.encoding){var U=Math.ceil(y.numValidPixels*y.bitsPerPixel/8),S=Math.ceil(U/4);l=new ArrayBuffer(4*S),new Uint8Array(l).set(new Uint8Array(A,I,U)),y.stuffedData=new Uint32Array(l),I+=U}}else I++}return B.eofOffset=I,B},e=function(A,I,g,B,Q,C,E){var i,e,a,o=(1<<I)-1,t=0,s=0,r=Math.ceil((E-B)/Q),D=4*A.length-Math.ceil(I*g/8);for(A[A.length-1]<<=8*D,i=0;i<g;i++){if(0===s&&(a=A[t++],s=32),s>=I)e=a>>>s-I&o,s-=I;else{var n=I-s;e=(a&o)<<n&o,e+=(a=A[t++])>>>(s=32-n)}C[i]=e<r?B+e*Q:E}return C},t=B,s=function(){"use strict";var A=function(A,I,g,B,Q,C,E,i){var e,a,o,t,s,r=(1<<g)-1,D=0,n=0,w=4*A.length-Math.ceil(g*B/8);if(A[A.length-1]<<=8*w,Q)for(e=0;e<B;e++)0===n&&(o=A[D++],n=32),n>=g?(a=o>>>n-g&r,n-=g):(a=(o&r)<<(t=g-n)&r,a+=(o=A[D++])>>>(n=32-t)),I[e]=Q[a];else for(s=Math.ceil((i-C)/E),e=0;e<B;e++)0===n&&(o=A[D++],n=32),n>=g?(a=o>>>n-g&r,n-=g):(a=(o&r)<<(t=g-n)&r,a+=(o=A[D++])>>>(n=32-t)),I[e]=a<s?C+a*E:i},I=function(A,I,g,B,Q,C,E,i){var e,a,o,t,s=(1<<g)-1,r=0,D=0,n=0;if(Q)for(e=0;e<B;e++)0===D&&(o=A[r++],D=32,n=0),D>=g?(a=o>>>n&s,D-=g,n+=g):(a=o>>>n&s,D=32-(t=g-D),a|=((o=A[r++])&(1<<t)-1)<<g-t,n=t),I[e]=Q[a];else{var w=Math.ceil((i-C)/E);for(e=0;e<B;e++)0===D&&(o=A[r++],D=32,n=0),D>=g?(a=o>>>n&s,D-=g,n+=g):(a=o>>>n&s,D=32-(t=g-D),a|=((o=A[r++])&(1<<t)-1)<<g-t,n=t),I[e]=a<w?C+a*E:i}return I},g={HUFFMAN_LUT_BITS_MAX:12,computeChecksumFletcher32:function(A){for(var I=65535,g=65535,B=A.length,Q=Math.floor(B/2),C=0;Q;){var E=Q>=359?359:Q;Q-=E;do{I+=A[C++]<<8,g+=I+=A[C++]}while(--E);I=(65535&I)+(I>>>16),g=(65535&g)+(g>>>16)}return 1&B&&(g+=I+=A[C]<<8),((g=(65535&g)+(g>>>16))<<16|(I=(65535&I)+(I>>>16)))>>>0},readHeaderInfo:function(A,I){var g=I.ptr,B=new Uint8Array(A,g,6),Q={};if(Q.fileIdentifierString=String.fromCharCode.apply(null,B),0!==Q.fileIdentifierString.lastIndexOf("Lerc2",0))throw"Unexpected file identifier string (expect Lerc2 ): "+Q.fileIdentifierString;g+=6;var C,E=new DataView(A,g,8),i=E.getInt32(0,!0);if(Q.fileVersion=i,g+=4,i>=3&&(Q.checksum=E.getUint32(4,!0),g+=4),E=new DataView(A,g,12),Q.height=E.getUint32(0,!0),Q.width=E.getUint32(4,!0),g+=8,i>=4?(Q.numDims=E.getUint32(8,!0),g+=4):Q.numDims=1,E=new DataView(A,g,40),Q.numValidPixel=E.getUint32(0,!0),Q.microBlockSize=E.getInt32(4,!0),Q.blobSize=E.getInt32(8,!0),Q.imageType=E.getInt32(12,!0),Q.maxZError=E.getFloat64(16,!0),Q.zMin=E.getFloat64(24,!0),Q.zMax=E.getFloat64(32,!0),g+=40,I.headerInfo=Q,I.ptr=g,i>=3&&(C=i>=4?52:48,this.computeChecksumFletcher32(new Uint8Array(A,g-C,Q.blobSize-14))!==Q.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(A,I){var g=I.headerInfo,B=this.getDataTypeArray(g.imageType),Q=g.numDims*this.getDataTypeSize(g.imageType),C=this.readSubArray(A,I.ptr,B,Q),E=this.readSubArray(A,I.ptr+Q,B,Q);I.ptr+=2*Q;var i,e=!0;for(i=0;i<g.numDims;i++)if(C[i]!==E[i]){e=!1;break}return g.minValues=C,g.maxValues=E,e},readSubArray:function(A,I,g,B){var Q;if(g===Uint8Array)Q=new Uint8Array(A,I,B);else{var C=new ArrayBuffer(B);new Uint8Array(C).set(new Uint8Array(A,I,B)),Q=new g(C)}return Q},readMask:function(A,I){var g,B,Q=I.ptr,C=I.headerInfo,E=C.width*C.height,i=C.numValidPixel,e=new DataView(A,Q,4),a={};if(a.numBytes=e.getUint32(0,!0),Q+=4,(0===i||E===i)&&0!==a.numBytes)throw"invalid mask";if(0===i)g=new Uint8Array(Math.ceil(E/8)),a.bitset=g,B=new Uint8Array(E),I.pixels.resultMask=B,Q+=a.numBytes;else if(a.numBytes>0){g=new Uint8Array(Math.ceil(E/8));var o=(e=new DataView(A,Q,a.numBytes)).getInt16(0,!0),t=2,s=0,r=0;do{if(o>0)for(;o--;)g[s++]=e.getUint8(t++);else for(r=e.getUint8(t++),o=-o;o--;)g[s++]=r;o=e.getInt16(t,!0),t+=2}while(t<a.numBytes);if(-32768!==o||s<g.length)throw"Unexpected end of mask RLE encoding";B=new Uint8Array(E);var D=0,n=0;for(n=0;n<E;n++)7&n?(D=g[n>>3],D<<=7&n):D=g[n>>3],128&D&&(B[n]=1);I.pixels.resultMask=B,a.bitset=g,Q+=a.numBytes}return I.ptr=Q,I.mask=a,!0},readDataOneSweep:function(A,I,B,Q){var C,E=I.ptr,i=I.headerInfo,e=i.numDims,a=i.width*i.height,o=i.imageType,t=i.numValidPixel*g.getDataTypeSize(o)*e,s=I.pixels.resultMask;if(B===Uint8Array)C=new Uint8Array(A,E,t);else{var r=new ArrayBuffer(t);new Uint8Array(r).set(new Uint8Array(A,E,t)),C=new B(r)}if(C.length===a*e)I.pixels.resultPixels=Q?g.swapDimensionOrder(C,a,e,B,!0):C;else{I.pixels.resultPixels=new B(a*e);var D=0,n=0,w=0,h=0;if(e>1){if(Q){for(n=0;n<a;n++)if(s[n])for(h=n,w=0;w<e;w++,h+=a)I.pixels.resultPixels[h]=C[D++]}else for(n=0;n<a;n++)if(s[n])for(h=n*e,w=0;w<e;w++)I.pixels.resultPixels[h+w]=C[D++]}else for(n=0;n<a;n++)s[n]&&(I.pixels.resultPixels[n]=C[D++])}return E+=t,I.ptr=E,!0},readHuffmanTree:function(A,I){var Q=this.HUFFMAN_LUT_BITS_MAX,C=new DataView(A,I.ptr,16);if(I.ptr+=16,C.getInt32(0,!0)<2)throw"unsupported Huffman version";var E=C.getInt32(4,!0),i=C.getInt32(8,!0),e=C.getInt32(12,!0);if(i>=e)return!1;var a=new Uint32Array(e-i);g.decodeBits(A,I,a);var o,t,s,r,D=[];for(o=i;o<e;o++)D[t=o-(o<E?0:E)]={first:a[o-i],second:null};var n=A.byteLength-I.ptr,w=Math.ceil(n/4),h=new ArrayBuffer(4*w);new Uint8Array(h).set(new Uint8Array(A,I.ptr,n));var f,G=new Uint32Array(h),y=0,F=0;for(f=G[0],o=i;o<e;o++)(r=D[t=o-(o<E?0:E)].first)>0&&(D[t].second=f<<y>>>32-r,32-y>=r?32===(y+=r)&&(y=0,f=G[++F]):(y+=r-32,f=G[++F],D[t].second|=f>>>32-y));var l,k=0,c=new B;for(o=0;o<D.length;o++)void 0!==D[o]&&(k=Math.max(k,D[o].first));l=k>=Q?Q:k;var U,S,d,R,M,L=[];for(o=i;o<e;o++)if((r=D[t=o-(o<E?0:E)].first)>0)if(U=[r,t],r<=l)for(S=D[t].second<<l-r,d=1<<l-r,s=0;s<d;s++)L[S|s]=U;else for(S=D[t].second,M=c,R=r-1;R>=0;R--)S>>>R&1?(M.right||(M.right=new B),M=M.right):(M.left||(M.left=new B),M=M.left),0!==R||M.val||(M.val=U[1]);return{decodeLut:L,numBitsLUTQick:l,numBitsLUT:k,tree:c,stuffedData:G,srcPtr:F,bitPos:y}},readHuffman:function(A,I,B,Q){var C,E,i,e,a,o,t,s,r,D=I.headerInfo.numDims,n=I.headerInfo.height,w=I.headerInfo.width,h=w*n,f=this.readHuffmanTree(A,I),G=f.decodeLut,y=f.tree,F=f.stuffedData,l=f.srcPtr,k=f.bitPos,c=f.numBitsLUTQick,U=f.numBitsLUT,S=0===I.headerInfo.imageType?128:0,d=I.pixels.resultMask,R=0;k>0&&(l++,k=0);var M,L=F[l],N=1===I.encodeMode,J=new B(h*D),u=J;if(D<2||N){for(M=0;M<D;M++)if(D>1&&(u=new B(J.buffer,h*M,h),R=0),I.headerInfo.numValidPixel===w*n)for(s=0,o=0;o<n;o++)for(t=0;t<w;t++,s++){if(E=0,a=e=L<<k>>>32-c,32-k<c&&(a=e|=F[l+1]>>>64-k-c),G[a])E=G[a][1],k+=G[a][0];else for(a=e=L<<k>>>32-U,32-k<U&&(a=e|=F[l+1]>>>64-k-U),C=y,r=0;r<U;r++)if(!(C=e>>>U-r-1&1?C.right:C.left).left&&!C.right){E=C.val,k=k+r+1;break}k>=32&&(k-=32,L=F[++l]),i=E-S,N?(i+=t>0?R:o>0?u[s-w]:R,i&=255,u[s]=i,R=i):u[s]=i}else for(s=0,o=0;o<n;o++)for(t=0;t<w;t++,s++)if(d[s]){if(E=0,a=e=L<<k>>>32-c,32-k<c&&(a=e|=F[l+1]>>>64-k-c),G[a])E=G[a][1],k+=G[a][0];else for(a=e=L<<k>>>32-U,32-k<U&&(a=e|=F[l+1]>>>64-k-U),C=y,r=0;r<U;r++)if(!(C=e>>>U-r-1&1?C.right:C.left).left&&!C.right){E=C.val,k=k+r+1;break}k>=32&&(k-=32,L=F[++l]),i=E-S,N?(t>0&&d[s-1]?i+=R:o>0&&d[s-w]?i+=u[s-w]:i+=R,i&=255,u[s]=i,R=i):u[s]=i}}else for(s=0,o=0;o<n;o++)for(t=0;t<w;t++)if(s=o*w+t,!d||d[s])for(M=0;M<D;M++,s+=h){if(E=0,a=e=L<<k>>>32-c,32-k<c&&(a=e|=F[l+1]>>>64-k-c),G[a])E=G[a][1],k+=G[a][0];else for(a=e=L<<k>>>32-U,32-k<U&&(a=e|=F[l+1]>>>64-k-U),C=y,r=0;r<U;r++)if(!(C=e>>>U-r-1&1?C.right:C.left).left&&!C.right){E=C.val,k=k+r+1;break}k>=32&&(k-=32,L=F[++l]),i=E-S,u[s]=i}I.ptr=I.ptr+4*(l+1)+(k>0?4:0),I.pixels.resultPixels=J,D>1&&!Q&&(I.pixels.resultPixels=g.swapDimensionOrder(J,h,D,B))},decodeBits:function(g,B,Q,C,E){var i=B.headerInfo,e=i.fileVersion,a=0,o=g.byteLength-B.ptr>=5?5:g.byteLength-B.ptr,t=new DataView(g,B.ptr,o),s=t.getUint8(0);a++;var r=s>>6,D=0===r?4:3-r,n=(32&s)>0,w=31&s,h=0;if(1===D)h=t.getUint8(a),a++;else if(2===D)h=t.getUint16(a,!0),a+=2;else{if(4!==D)throw"Invalid valid pixel count type";h=t.getUint32(a,!0),a+=4}var f,G,y,F,l,k,c,U,S,d=2*i.maxZError,R=i.numDims>1?i.maxValues[E]:i.zMax;if(n){for(B.counter.lut++,U=t.getUint8(a),a++,F=Math.ceil((U-1)*w/8),l=Math.ceil(F/4),G=new ArrayBuffer(4*l),y=new Uint8Array(G),B.ptr+=a,y.set(new Uint8Array(g,B.ptr,F)),c=new Uint32Array(G),B.ptr+=F,S=0;U-1>>>S;)S++;F=Math.ceil(h*S/8),l=Math.ceil(F/4),G=new ArrayBuffer(4*l),(y=new Uint8Array(G)).set(new Uint8Array(g,B.ptr,F)),f=new Uint32Array(G),B.ptr+=F,k=e>=3?function(A,I,g,B,Q,C){var E,i=(1<<I)-1,e=0,a=0,o=0,t=0,s=0,r=0,D=[],n=Math.ceil((C-B)/Q);for(a=0;a<g;a++)0===t&&(E=A[e++],t=32,r=0),t>=I?(s=E>>>r&i,t-=I,r+=I):(s=E>>>r&i,t=32-(o=I-t),s|=((E=A[e++])&(1<<o)-1)<<I-o,r=o),D[a]=s<n?B+s*Q:C;return D.unshift(B),D}(c,w,U-1,C,d,R):function(A,I,g,B,Q,C){var E,i=(1<<I)-1,e=0,a=0,o=0,t=0,s=0,r=[],D=4*A.length-Math.ceil(I*g/8);A[A.length-1]<<=8*D;var n=Math.ceil((C-B)/Q);for(a=0;a<g;a++)0===t&&(E=A[e++],t=32),t>=I?(s=E>>>t-I&i,t-=I):(s=(E&i)<<(o=I-t)&i,s+=(E=A[e++])>>>(t=32-o)),r[a]=s<n?B+s*Q:C;return r.unshift(B),r}(c,w,U-1,C,d,R),e>=3?I(f,Q,S,h,k):A(f,Q,S,h,k)}else B.counter.bitstuffer++,S=w,B.ptr+=a,S>0&&(F=Math.ceil(h*S/8),l=Math.ceil(F/4),G=new ArrayBuffer(4*l),(y=new Uint8Array(G)).set(new Uint8Array(g,B.ptr,F)),f=new Uint32Array(G),B.ptr+=F,e>=3?null==C?function(A,I,g,B){var Q,C,E,i,e=(1<<g)-1,a=0,o=0,t=0;for(Q=0;Q<B;Q++)0===o&&(E=A[a++],o=32,t=0),o>=g?(C=E>>>t&e,o-=g,t+=g):(C=E>>>t&e,o=32-(i=g-o),C|=((E=A[a++])&(1<<i)-1)<<g-i,t=i),I[Q]=C}(f,Q,S,h):I(f,Q,S,h,!1,C,d,R):null==C?function(A,I,g,B){var Q,C,E,i,e=(1<<g)-1,a=0,o=0,t=4*A.length-Math.ceil(g*B/8);for(A[A.length-1]<<=8*t,Q=0;Q<B;Q++)0===o&&(E=A[a++],o=32),o>=g?(C=E>>>o-g&e,o-=g):(C=(E&e)<<(i=g-o)&e,C+=(E=A[a++])>>>(o=32-i)),I[Q]=C}(f,Q,S,h):A(f,Q,S,h,!1,C,d,R))},readTiles:function(A,I,B,Q){var C=I.headerInfo,E=C.width,i=C.height,e=E*i,a=C.microBlockSize,o=C.imageType,t=g.getDataTypeSize(o),s=Math.ceil(E/a),r=Math.ceil(i/a);I.pixels.numBlocksY=r,I.pixels.numBlocksX=s,I.pixels.ptr=0;var D,n,w,h,f,G,y,F,l,k,c=0,U=0,S=0,d=0,R=0,M=0,L=0,N=0,J=0,u=0,q=0,Y=0,m=0,p=0,x=0,H=new B(a*a),K=i%a||a,V=E%a||a,b=C.numDims,O=I.pixels.resultMask,v=I.pixels.resultPixels,X=C.fileVersion>=5?14:15,P=C.zMax;for(S=0;S<r;S++)for(R=S!==r-1?a:K,d=0;d<s;d++)for(u=S*E*a+d*a,q=E-(M=d!==s-1?a:V),F=0;F<b;F++){if(b>1?(k=v,u=S*E*a+d*a,v=new B(I.pixels.resultPixels.buffer,e*F*t,e),P=C.maxValues[F]):k=null,L=A.byteLength-I.ptr,n={},x=0,N=(D=new DataView(A,I.ptr,Math.min(10,L))).getUint8(0),x++,l=C.fileVersion>=5?4&N:0,J=N>>6&255,(N>>2&X)!=(d*a>>3&X))throw"integrity issue";if(l&&0===F)throw"integrity issue";if((f=3&N)>3)throw I.ptr+=x,"Invalid block encoding ("+f+")";if(2!==f)if(0===f){if(l)throw"integrity issue";if(I.counter.uncompressed++,I.ptr+=x,Y=(Y=R*M*t)<(m=A.byteLength-I.ptr)?Y:m,w=new ArrayBuffer(Y%t===0?Y:Y+t-Y%t),new Uint8Array(w).set(new Uint8Array(A,I.ptr,Y)),h=new B(w),p=0,O)for(c=0;c<R;c++){for(U=0;U<M;U++)O[u]&&(v[u]=h[p++]),u++;u+=q}else for(c=0;c<R;c++){for(U=0;U<M;U++)v[u++]=h[p++];u+=q}I.ptr+=p*t}else if(G=g.getDataTypeUsed(l&&o<6?4:o,J),y=g.getOnePixel(n,x,G,D),x+=g.getDataTypeSize(G),3===f)if(I.ptr+=x,I.counter.constantoffset++,O)for(c=0;c<R;c++){for(U=0;U<M;U++)O[u]&&(v[u]=l?Math.min(P,k[u]+y):y),u++;u+=q}else for(c=0;c<R;c++){for(U=0;U<M;U++)v[u]=l?Math.min(P,k[u]+y):y,u++;u+=q}else if(I.ptr+=x,g.decodeBits(A,I,H,y,F),x=0,l)if(O)for(c=0;c<R;c++){for(U=0;U<M;U++)O[u]&&(v[u]=H[x++]+k[u]),u++;u+=q}else for(c=0;c<R;c++){for(U=0;U<M;U++)v[u]=H[x++]+k[u],u++;u+=q}else if(O)for(c=0;c<R;c++){for(U=0;U<M;U++)O[u]&&(v[u]=H[x++]),u++;u+=q}else for(c=0;c<R;c++){for(U=0;U<M;U++)v[u++]=H[x++];u+=q}else{if(l)if(O)for(c=0;c<R;c++)for(U=0;U<M;U++)O[u]&&(v[u]=k[u]),u++;else for(c=0;c<R;c++)for(U=0;U<M;U++)v[u]=k[u],u++;I.counter.constant++,I.ptr+=x}}b>1&&!Q&&(I.pixels.resultPixels=g.swapDimensionOrder(I.pixels.resultPixels,e,b,B))},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:g.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,I){var g=A.headerInfo.zMax,B=A.headerInfo.zMin,Q=A.headerInfo.maxValues,C=A.headerInfo.numDims,E=A.headerInfo.height*A.headerInfo.width,i=0,e=0,a=0,o=A.pixels.resultMask,t=A.pixels.resultPixels;if(o)if(C>1){if(I)for(i=0;i<C;i++)for(a=i*E,g=Q[i],e=0;e<E;e++)o[e]&&(t[a+e]=g);else for(e=0;e<E;e++)if(o[e])for(a=e*C,i=0;i<C;i++)t[a+C]=Q[i]}else for(e=0;e<E;e++)o[e]&&(t[e]=g);else if(C>1&&B!==g)if(I)for(i=0;i<C;i++)for(a=i*E,g=Q[i],e=0;e<E;e++)t[a+e]=g;else for(e=0;e<E;e++)for(a=e*C,i=0;i<C;i++)t[a+i]=Q[i];else for(e=0;e<E*C;e++)t[e]=g},getDataTypeArray:function(A){var I;switch(A){case 0:I=Int8Array;break;case 1:I=Uint8Array;break;case 2:I=Int16Array;break;case 3:I=Uint16Array;break;case 4:I=Int32Array;break;case 5:I=Uint32Array;break;case 6:default:I=Float32Array;break;case 7:I=Float64Array}return I},getPixelType:function(A){var I;switch(A){case 0:I="S8";break;case 1:I="U8";break;case 2:I="S16";break;case 3:I="U16";break;case 4:I="S32";break;case 5:I="U32";break;case 6:default:I="F32";break;case 7:I="F64"}return I},isValidPixelValue:function(A,I){if(null==I)return!1;var g;switch(A){case 0:g=I>=-128&&I<=127;break;case 1:g=I>=0&&I<=255;break;case 2:g=I>=-32768&&I<=32767;break;case 3:g=I>=0&&I<=65536;break;case 4:g=I>=-2147483648&&I<=2147483647;break;case 5:g=I>=0&&I<=4294967296;break;case 6:g=I>=-34027999387901484e22&&I<=34027999387901484e22;break;case 7:g=I>=-17976931348623157e292&&I<=17976931348623157e292;break;default:g=!1}return g},getDataTypeSize:function(A){var I=0;switch(A){case 0:case 1:I=1;break;case 2:case 3:I=2;break;case 4:case 5:case 6:I=4;break;case 7:I=8;break;default:I=A}return I},getDataTypeUsed:function(A,I){var g=A;switch(A){case 2:case 4:g=A-I;break;case 3:case 5:g=A-2*I;break;case 6:g=0===I?A:1===I?2:1;break;case 7:g=0===I?A:A-2*I+1;break;default:g=A}return g},getOnePixel:function(A,I,g,B){var Q=0;switch(g){case 0:Q=B.getInt8(I);break;case 1:Q=B.getUint8(I);break;case 2:Q=B.getInt16(I,!0);break;case 3:Q=B.getUint16(I,!0);break;case 4:Q=B.getInt32(I,!0);break;case 5:Q=B.getUInt32(I,!0);break;case 6:Q=B.getFloat32(I,!0);break;case 7:Q=B.getFloat64(I,!0);break;default:throw"the decoder does not understand this pixel type"}return Q},swapDimensionOrder:function(A,I,g,B,Q){var C=0,E=0,i=0,e=0,a=A;if(g>1)if(a=new B(I*g),Q)for(C=0;C<I;C++)for(e=C,i=0;i<g;i++,e+=I)a[e]=A[E++];else for(C=0;C<I;C++)for(e=C,i=0;i<g;i++,e+=I)a[E++]=A[e];return a}},B=function(A,I,g){this.val=A,this.left=I,this.right=g};return{decode:function(A,I){var B=(I=I||{}).noDataValue,Q=0,C={};if(C.ptr=I.inputOffset||0,C.pixels={},g.readHeaderInfo(A,C)){var E=C.headerInfo,i=E.fileVersion,e=g.getDataTypeArray(E.imageType);if(i>5)throw"unsupported lerc version 2."+i;g.readMask(A,C),E.numValidPixel===E.width*E.height||C.pixels.resultMask||(C.pixels.resultMask=I.maskData);var a=E.width*E.height;C.pixels.resultPixels=new e(a*E.numDims),C.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0};var o,t=!I.returnPixelInterleavedDims;if(0!==E.numValidPixel)if(E.zMax===E.zMin)g.constructConstantSurface(C,t);else if(i>=4&&g.checkMinMaxRanges(A,C))g.constructConstantSurface(C,t);else{var s=new DataView(A,C.ptr,2),r=s.getUint8(0);if(C.ptr++,r)g.readDataOneSweep(A,C,e,t);else if(i>1&&E.imageType<=1&&Math.abs(E.maxZError-.5)<1e-5){var D=s.getUint8(1);if(C.ptr++,C.encodeMode=D,D>2||i<4&&D>1)throw"Invalid Huffman flag "+D;D?g.readHuffman(A,C,e,t):g.readTiles(A,C,e,t)}else g.readTiles(A,C,e,t)}C.eofOffset=C.ptr,I.inputOffset?(o=C.headerInfo.blobSize+I.inputOffset-C.ptr,Math.abs(o)>=1&&(C.eofOffset=I.inputOffset+C.headerInfo.blobSize)):(o=C.headerInfo.blobSize-C.ptr,Math.abs(o)>=1&&(C.eofOffset=C.headerInfo.blobSize));var n={width:E.width,height:E.height,pixelData:C.pixels.resultPixels,minValue:E.zMin,maxValue:E.zMax,validPixelCount:E.numValidPixel,dimCount:E.numDims,dimStats:{minValues:E.minValues,maxValues:E.maxValues},maskData:C.pixels.resultMask};if(C.pixels.resultMask&&g.isValidPixelValue(E.imageType,B)){var w=C.pixels.resultMask;for(Q=0;Q<a;Q++)w[Q]||(n.pixelData[Q]=B);n.noDataValue=B}return C.noDataValue=B,I.returnFileInfo&&(n.fileInfo=g.formatFileInfo(C)),n}},getBandCount:function(A){for(var I=0,B=0,Q={ptr:0,pixels:{}};B<A.byteLength-58;)g.readHeaderInfo(A,Q),B+=Q.headerInfo.blobSize,I++,Q.ptr=B;return I}}}(),a=new ArrayBuffer(4),o=new Uint8Array(a),new Uint32Array(a)[0]=1,r=1===o[0],D={decode:function(A,I){if(!r)throw"Big endian system is not supported.";var g,B,Q=(I=I||{}).inputOffset||0,C=new Uint8Array(A,Q,10),E=String.fromCharCode.apply(null,C);if("CntZImage"===E.trim())g=t,B=1;else{if("Lerc2"!==E.substring(0,5))throw"Unexpected file identifier string: "+E;g=s,B=2}for(var i,e,a,o,D,n,w=0,h=A.byteLength-10,f=[],G={width:0,height:0,pixels:[],pixelType:I.pixelType,mask:null,statistics:[]},y=0;Q<h;){var F=g.decode(A,{inputOffset:Q,encodedMaskData:i,maskData:a,returnMask:0===w,returnEncodedMask:0===w,returnFileInfo:!0,returnPixelInterleavedDims:I.returnPixelInterleavedDims,pixelType:I.pixelType||null,noDataValue:I.noDataValue||null});Q=F.fileInfo.eofOffset,a=F.maskData,0===w&&(i=F.encodedMaskData,G.width=F.width,G.height=F.height,G.dimCount=F.dimCount||1,G.pixelType=F.pixelType||F.fileInfo.pixelType,G.mask=a),B>1&&(a&&f.push(a),F.fileInfo.mask&&F.fileInfo.mask.numBytes>0&&y++),w++,G.pixels.push(F.pixelData),G.statistics.push({minValue:F.minValue,maxValue:F.maxValue,noDataValue:F.noDataValue,dimStats:F.dimStats})}if(B>1&&y>1){for(n=G.width*G.height,G.bandMasks=f,(a=new Uint8Array(n)).set(f[0]),o=1;o<f.length;o++)for(e=f[o],D=0;D<n;D++)a[D]=a[D]&e[D];G.maskData=a}return G}},void 0===(g=function(){return D}.apply(I,[]))||(A.exports=g)}}]);
|