@loaders.gl/tiles 4.5.3 → 5.0.0-alpha.10
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.
- package/LICENSE +14 -3
- package/README.md +136 -1
- package/dist/dist.dev.js +22570 -4947
- package/dist/dist.min.js +3 -1
- package/dist/image-set.d.ts +94 -0
- package/dist/image-set.d.ts.map +1 -0
- package/dist/image-set.js +243 -0
- package/dist/image-set.js.map +1 -0
- package/dist/index.cjs +10171 -2117
- package/dist/index.cjs.map +3 -4
- package/dist/index.d.ts +50 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -8
- package/dist/index.js.map +1 -1
- package/dist/point-cloud/point-cloud-tile.d.ts +47 -0
- package/dist/point-cloud/point-cloud-tile.d.ts.map +1 -0
- package/dist/point-cloud/point-cloud-tile.js +70 -0
- package/dist/point-cloud/point-cloud-tile.js.map +1 -0
- package/dist/point-cloud/point-cloud-tileset.d.ts +135 -0
- package/dist/point-cloud/point-cloud-tileset.d.ts.map +1 -0
- package/dist/point-cloud/point-cloud-tileset.js +549 -0
- package/dist/point-cloud/point-cloud-tileset.js.map +1 -0
- package/dist/point-cloud/types.d.ts +81 -0
- package/dist/point-cloud/types.d.ts.map +1 -0
- package/dist/point-cloud/types.js +5 -0
- package/dist/point-cloud/types.js.map +1 -0
- package/dist/raster-set.d.ts +124 -0
- package/dist/raster-set.d.ts.map +1 -0
- package/dist/raster-set.js +348 -0
- package/dist/raster-set.js.map +1 -0
- package/dist/spatial/format-spatial-reference.d.ts +68 -0
- package/dist/spatial/format-spatial-reference.d.ts.map +1 -0
- package/dist/spatial/format-spatial-reference.js +291 -0
- package/dist/spatial/format-spatial-reference.js.map +1 -0
- package/dist/spatial/get-spatial-coordinate-frame.d.ts +20 -0
- package/dist/spatial/get-spatial-coordinate-frame.d.ts.map +1 -0
- package/dist/spatial/get-spatial-coordinate-frame.js +139 -0
- package/dist/spatial/get-spatial-coordinate-frame.js.map +1 -0
- package/dist/spatial/i3s-elevation.d.ts +20 -0
- package/dist/spatial/i3s-elevation.d.ts.map +1 -0
- package/dist/spatial/i3s-elevation.js +90 -0
- package/dist/spatial/i3s-elevation.js.map +1 -0
- package/dist/spatial/i3s-spatial-transformer.d.ts +189 -0
- package/dist/spatial/i3s-spatial-transformer.d.ts.map +1 -0
- package/dist/spatial/i3s-spatial-transformer.js +686 -0
- package/dist/spatial/i3s-spatial-transformer.js.map +1 -0
- package/dist/spatial/normalize-crs-identifier.d.ts +15 -0
- package/dist/spatial/normalize-crs-identifier.d.ts.map +1 -0
- package/dist/spatial/normalize-crs-identifier.js +22 -0
- package/dist/spatial/normalize-crs-identifier.js.map +1 -0
- package/dist/spatial/spatial-coordinate-transformer.d.ts +52 -0
- package/dist/spatial/spatial-coordinate-transformer.d.ts.map +1 -0
- package/dist/spatial/spatial-coordinate-transformer.js +295 -0
- package/dist/spatial/spatial-coordinate-transformer.js.map +1 -0
- package/dist/spatial/spatial-resource-registry.d.ts +44 -0
- package/dist/spatial/spatial-resource-registry.d.ts.map +1 -0
- package/dist/spatial/spatial-resource-registry.js +67 -0
- package/dist/spatial/spatial-resource-registry.js.map +1 -0
- package/dist/spatial/spatial-types.d.ts +190 -0
- package/dist/spatial/spatial-types.d.ts.map +1 -0
- package/dist/spatial/spatial-types.js +192 -0
- package/dist/spatial/spatial-types.js.map +1 -0
- package/dist/spatial/tiles-3d-spatial-transformer.d.ts +32 -0
- package/dist/spatial/tiles-3d-spatial-transformer.d.ts.map +1 -0
- package/dist/spatial/tiles-3d-spatial-transformer.js +175 -0
- package/dist/spatial/tiles-3d-spatial-transformer.js.map +1 -0
- package/dist/tileset-2d/adapter.d.ts +37 -0
- package/dist/tileset-2d/adapter.d.ts.map +1 -0
- package/dist/tileset-2d/adapter.js +5 -0
- package/dist/tileset-2d/adapter.js.map +1 -0
- package/dist/tileset-2d/index.d.ts +7 -0
- package/dist/tileset-2d/index.d.ts.map +1 -0
- package/dist/tileset-2d/index.js +6 -0
- package/dist/tileset-2d/index.js.map +1 -0
- package/dist/tileset-2d/tile-2d-header.d.ts +68 -0
- package/dist/tileset-2d/tile-2d-header.d.ts.map +1 -0
- package/dist/tileset-2d/tile-2d-header.js +181 -0
- package/dist/tileset-2d/tile-2d-header.js.map +1 -0
- package/dist/tileset-2d/tileset-2d.d.ts +200 -0
- package/dist/tileset-2d/tileset-2d.d.ts.map +1 -0
- package/dist/tileset-2d/tileset-2d.js +532 -0
- package/dist/tileset-2d/tileset-2d.js.map +1 -0
- package/dist/tileset-2d/types.d.ts +44 -0
- package/dist/tileset-2d/types.d.ts.map +1 -0
- package/dist/tileset-2d/types.js +5 -0
- package/dist/tileset-2d/types.js.map +1 -0
- package/dist/tileset-2d.d.ts +2 -0
- package/dist/tileset-2d.d.ts.map +1 -0
- package/dist/tileset-2d.js +5 -0
- package/dist/tileset-2d.js.map +1 -0
- package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts +60 -0
- package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts.map +1 -0
- package/dist/tileset-3d/common/indexed-archive-tileset-source.js +130 -0
- package/dist/tileset-3d/common/indexed-archive-tileset-source.js.map +1 -0
- package/dist/tileset-3d/common/tile-3d-contracts.d.ts +63 -0
- package/dist/tileset-3d/common/tile-3d-contracts.d.ts.map +1 -0
- package/dist/tileset-3d/common/tile-3d-contracts.js +51 -0
- package/dist/tileset-3d/common/tile-3d-contracts.js.map +1 -0
- package/dist/tileset-3d/common/tile-3d.d.ts +410 -0
- package/dist/tileset-3d/common/tile-3d.d.ts.map +1 -0
- package/dist/tileset-3d/common/tile-3d.js +1056 -0
- package/dist/tileset-3d/common/tile-3d.js.map +1 -0
- package/dist/tileset-3d/common/tileset-3d.d.ts +360 -0
- package/dist/tileset-3d/common/tileset-3d.d.ts.map +1 -0
- package/dist/tileset-3d/common/tileset-3d.js +846 -0
- package/dist/tileset-3d/common/tileset-3d.js.map +1 -0
- package/dist/tileset-3d/common/tileset-cache.d.ts +29 -0
- package/dist/tileset-3d/common/tileset-cache.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d/common}/tileset-cache.js +12 -4
- package/dist/tileset-3d/common/tileset-cache.js.map +1 -0
- package/dist/tileset-3d/common/tileset-content-traversal.d.ts +37 -0
- package/dist/tileset-3d/common/tileset-content-traversal.d.ts.map +1 -0
- package/dist/tileset-3d/common/tileset-content-traversal.js +80 -0
- package/dist/tileset-3d/common/tileset-content-traversal.js.map +1 -0
- package/dist/tileset-3d/common/tileset-observability.d.ts +60 -0
- package/dist/tileset-3d/common/tileset-observability.d.ts.map +1 -0
- package/dist/tileset-3d/common/tileset-observability.js +39 -0
- package/dist/tileset-3d/common/tileset-observability.js.map +1 -0
- package/dist/tileset-3d/common/tileset-source.d.ts +228 -0
- package/dist/tileset-3d/common/tileset-source.d.ts.map +1 -0
- package/dist/tileset-3d/common/tileset-source.js +17 -0
- package/dist/tileset-3d/common/tileset-source.js.map +1 -0
- package/dist/{tileset → tileset-3d/common}/tileset-traverser.d.ts +35 -3
- package/dist/tileset-3d/common/tileset-traverser.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d/common}/tileset-traverser.js +61 -13
- package/dist/tileset-3d/common/tileset-traverser.js.map +1 -0
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts +182 -0
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts.map +1 -0
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js +681 -0
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js.map +1 -0
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts +221 -0
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts.map +1 -0
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js +770 -0
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js.map +1 -0
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts +110 -0
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts.map +1 -0
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js +331 -0
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js.map +1 -0
- package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.js +3 -0
- package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js.map +1 -0
- package/dist/tileset-3d/format-i3s/i3s-source.d.ts +116 -0
- package/dist/tileset-3d/format-i3s/i3s-source.d.ts.map +1 -0
- package/dist/tileset-3d/format-i3s/i3s-source.js +450 -0
- package/dist/tileset-3d/format-i3s/i3s-source.js.map +1 -0
- package/dist/tileset-3d/format-i3s/i3s-tile-manager.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.js +5 -2
- package/dist/tileset-3d/format-i3s/i3s-tile-manager.js.map +1 -0
- package/dist/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.d.ts +2 -2
- package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.js +17 -23
- package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/3d-tiles-options.d.ts +1 -1
- package/dist/tileset-3d/helpers/3d-tiles-options.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/3d-tiles-options.js +3 -0
- package/dist/tileset-3d/helpers/3d-tiles-options.js.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/bounding-volume.d.ts +7 -3
- package/dist/tileset-3d/helpers/bounding-volume.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/bounding-volume.js +20 -91
- package/dist/tileset-3d/helpers/bounding-volume.js.map +1 -0
- package/dist/tileset-3d/helpers/frame-state.d.ts +93 -0
- package/dist/tileset-3d/helpers/frame-state.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/frame-state.js +92 -10
- package/dist/tileset-3d/helpers/frame-state.js.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/i3s-lod.d.ts +1 -1
- package/dist/tileset-3d/helpers/i3s-lod.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/i3s-lod.js +21 -9
- package/dist/tileset-3d/helpers/i3s-lod.js.map +1 -0
- package/dist/tileset-3d/helpers/s2-bounding-volume.d.ts +17 -0
- package/dist/tileset-3d/helpers/s2-bounding-volume.d.ts.map +1 -0
- package/dist/tileset-3d/helpers/s2-bounding-volume.js +20 -0
- package/dist/tileset-3d/helpers/s2-bounding-volume.js.map +1 -0
- package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts +72 -0
- package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts.map +1 -0
- package/dist/tileset-3d/helpers/tiles-3d-lod.js +257 -0
- package/dist/tileset-3d/helpers/tiles-3d-lod.js.map +1 -0
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts +134 -0
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts.map +1 -0
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.js +179 -0
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.js.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/transform-utils.d.ts +1 -1
- package/dist/tileset-3d/helpers/transform-utils.d.ts.map +1 -0
- package/dist/tileset-3d/helpers/transform-utils.js.map +1 -0
- package/dist/tileset-3d/helpers/zoom.d.ts.map +1 -0
- package/dist/tileset-3d/helpers/zoom.js.map +1 -0
- package/dist/types.d.ts +14 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/doubly-linked-list.d.ts.map +1 -1
- package/dist/utils/doubly-linked-list.js +1 -0
- package/dist/utils/doubly-linked-list.js.map +1 -1
- package/dist/utils/managed-array.d.ts.map +1 -1
- package/dist/utils/managed-array.js +1 -0
- package/dist/utils/managed-array.js.map +1 -1
- package/package.json +12 -9
- package/src/image-set.ts +328 -0
- package/src/index.ts +157 -9
- package/src/point-cloud/point-cloud-tile.ts +80 -0
- package/src/point-cloud/point-cloud-tileset.ts +767 -0
- package/src/point-cloud/types.ts +99 -0
- package/src/raster-set.ts +504 -0
- package/src/spatial/format-spatial-reference.ts +385 -0
- package/src/spatial/get-spatial-coordinate-frame.ts +169 -0
- package/src/spatial/i3s-elevation.ts +96 -0
- package/src/spatial/i3s-spatial-transformer.ts +957 -0
- package/src/spatial/normalize-crs-identifier.ts +26 -0
- package/src/spatial/spatial-coordinate-transformer.ts +376 -0
- package/src/spatial/spatial-resource-registry.ts +79 -0
- package/src/spatial/spatial-types.ts +422 -0
- package/src/spatial/tiles-3d-spatial-transformer.ts +206 -0
- package/src/tileset-2d/adapter.ts +46 -0
- package/src/tileset-2d/index.ts +33 -0
- package/src/tileset-2d/tile-2d-header.ts +224 -0
- package/src/tileset-2d/tileset-2d.ts +715 -0
- package/src/tileset-2d/types.ts +39 -0
- package/src/tileset-2d.ts +5 -0
- package/src/tileset-3d/common/indexed-archive-tileset-source.ts +205 -0
- package/src/tileset-3d/common/tile-3d-contracts.ts +115 -0
- package/src/tileset-3d/common/tile-3d.ts +1310 -0
- package/src/tileset-3d/common/tileset-3d.ts +1166 -0
- package/src/{tileset → tileset-3d/common}/tileset-cache.ts +16 -8
- package/src/tileset-3d/common/tileset-content-traversal.ts +114 -0
- package/src/tileset-3d/common/tileset-observability.ts +100 -0
- package/src/tileset-3d/common/tileset-source.ts +284 -0
- package/src/{tileset → tileset-3d/common}/tileset-traverser.ts +74 -14
- package/src/tileset-3d/format-3d-tiles/implicit-tiling.ts +1059 -0
- package/src/tileset-3d/format-3d-tiles/tiles-3d-source.ts +1025 -0
- package/src/tileset-3d/format-3d-tiles/tileset-3d-traverser.ts +379 -0
- package/src/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.ts +4 -0
- package/src/tileset-3d/format-i3s/i3s-source.ts +557 -0
- package/src/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.ts +6 -2
- package/src/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.ts +20 -24
- package/src/{tileset → tileset-3d}/helpers/3d-tiles-options.ts +5 -1
- package/src/{tileset → tileset-3d}/helpers/bounding-volume.ts +31 -114
- package/src/tileset-3d/helpers/frame-state.ts +322 -0
- package/src/{tileset → tileset-3d}/helpers/i3s-lod.ts +24 -10
- package/src/tileset-3d/helpers/s2-bounding-volume.ts +35 -0
- package/src/tileset-3d/helpers/tiles-3d-lod.ts +370 -0
- package/src/tileset-3d/helpers/tiles-3d-request-priority.ts +301 -0
- package/src/{tileset → tileset-3d}/helpers/transform-utils.ts +1 -1
- package/src/types.ts +18 -0
- package/src/utils/doubly-linked-list.ts +2 -0
- package/src/utils/managed-array.ts +2 -0
- package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts +0 -7
- package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts.map +0 -1
- package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js +0 -53
- package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js.map +0 -1
- package/dist/tileset/format-i3s/i3s-pending-tiles-register.d.ts.map +0 -1
- package/dist/tileset/format-i3s/i3s-pending-tiles-register.js.map +0 -1
- package/dist/tileset/format-i3s/i3s-tile-manager.d.ts.map +0 -1
- package/dist/tileset/format-i3s/i3s-tile-manager.js.map +0 -1
- package/dist/tileset/format-i3s/i3s-tileset-traverser.d.ts.map +0 -1
- package/dist/tileset/format-i3s/i3s-tileset-traverser.js.map +0 -1
- package/dist/tileset/helpers/3d-tiles-options.d.ts.map +0 -1
- package/dist/tileset/helpers/3d-tiles-options.js.map +0 -1
- package/dist/tileset/helpers/bounding-volume.d.ts.map +0 -1
- package/dist/tileset/helpers/bounding-volume.js.map +0 -1
- package/dist/tileset/helpers/frame-state.d.ts +0 -28
- package/dist/tileset/helpers/frame-state.d.ts.map +0 -1
- package/dist/tileset/helpers/frame-state.js.map +0 -1
- package/dist/tileset/helpers/i3s-lod.d.ts.map +0 -1
- package/dist/tileset/helpers/i3s-lod.js.map +0 -1
- package/dist/tileset/helpers/tiles-3d-lod.d.ts +0 -8
- package/dist/tileset/helpers/tiles-3d-lod.d.ts.map +0 -1
- package/dist/tileset/helpers/tiles-3d-lod.js +0 -113
- package/dist/tileset/helpers/tiles-3d-lod.js.map +0 -1
- package/dist/tileset/helpers/transform-utils.d.ts.map +0 -1
- package/dist/tileset/helpers/transform-utils.js.map +0 -1
- package/dist/tileset/helpers/zoom.d.ts.map +0 -1
- package/dist/tileset/helpers/zoom.js.map +0 -1
- package/dist/tileset/tile-3d.d.ts +0 -230
- package/dist/tileset/tile-3d.d.ts.map +0 -1
- package/dist/tileset/tile-3d.js +0 -631
- package/dist/tileset/tile-3d.js.map +0 -1
- package/dist/tileset/tileset-3d.d.ts +0 -284
- package/dist/tileset/tileset-3d.d.ts.map +0 -1
- package/dist/tileset/tileset-3d.js +0 -814
- package/dist/tileset/tileset-3d.js.map +0 -1
- package/dist/tileset/tileset-cache.d.ts +0 -19
- package/dist/tileset/tileset-cache.d.ts.map +0 -1
- package/dist/tileset/tileset-cache.js.map +0 -1
- package/dist/tileset/tileset-traverser.d.ts.map +0 -1
- package/dist/tileset/tileset-traverser.js.map +0 -1
- package/src/tileset/format-3d-tiles/tileset-3d-traverser.ts +0 -63
- package/src/tileset/helpers/frame-state.ts +0 -183
- package/src/tileset/helpers/tiles-3d-lod.ts +0 -149
- package/src/tileset/tile-3d.ts +0 -788
- package/src/tileset/tileset-3d.ts +0 -1037
- /package/dist/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.d.ts +0 -0
- /package/dist/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.d.ts +0 -0
- /package/dist/{tileset → tileset-3d}/helpers/transform-utils.js +0 -0
- /package/dist/{tileset → tileset-3d}/helpers/zoom.d.ts +0 -0
- /package/dist/{tileset → tileset-3d}/helpers/zoom.js +0 -0
- /package/src/{tileset → tileset-3d}/helpers/zoom.ts +0 -0
package/dist/dist.min.js
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
else if (typeof define === 'function' && define.amd) define([], factory);
|
|
5
5
|
else if (typeof exports === 'object') exports['loaders'] = factory();
|
|
6
6
|
else root['loaders'] = factory();})(globalThis, function () {
|
|
7
|
-
"use strict";var __exports__=(()=>{var ar=Object.create;var Yt=Object.defineProperty;var hr=Object.getOwnPropertyDescriptor;var lr=Object.getOwnPropertyNames;var fr=Object.getPrototypeOf,mr=Object.prototype.hasOwnProperty;var pr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Ct=(e,t)=>{for(var s in t)Yt(e,s,{get:t[s],enumerable:!0})},Bt=(e,t,s,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of lr(t))!mr.call(e,r)&&r!==s&&Yt(e,r,{get:()=>t[r],enumerable:!(n=hr(t,r))||n.enumerable});return e},Gt=(e,t,s)=>(Bt(e,t,"default"),s&&Bt(s,t,"default")),Oe=(e,t,s)=>(s=e!=null?ar(fr(e)):{},Bt(t||!e||!e.__esModule?Yt(s,"default",{value:e,enumerable:!0}):s,e)),dr=e=>Bt(Yt({},"__esModule",{value:!0}),e);var Zt=pr((lc,ys)=>{ys.exports=globalThis.loaders});var Ft={};Ct(Ft,{LOD_METRIC_TYPE:()=>xe,TILESET_TYPE:()=>W,TILE_CONTENT_STATE:()=>Y,TILE_REFINEMENT:()=>Z,TILE_TYPE:()=>ue,Tile3D:()=>it,Tileset3D:()=>we,TilesetCache:()=>Rt,TilesetTraverser:()=>K,calculateTransformProps:()=>he,createBoundingVolume:()=>At,getFrameState:()=>de,getLodStatus:()=>Me});Gt(Ft,Oe(Zt(),1));var ur=1/Math.PI*180,xr=1/180*Math.PI,gr={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...gr}};var z=globalThis.mathgl.config;function Ae(e,{precision:t=z.precision}={}){return e=Mr(e),`${parseFloat(e.toPrecision(t))}`}function tt(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Ce(e){return _s(e)}function Pe(e){return j(e)}function _s(e,t){return Ss(e,s=>s*xr,t)}function j(e,t){return Ss(e,s=>s*ur,t)}function X(e,t,s){let n=z.EPSILON;s&&(z.EPSILON=s);try{if(e===t)return!0;if(tt(e)&&tt(t)){if(e.length!==t.length)return!1;for(let r=0;r<e.length;++r)if(!X(e[r],t[r]))return!1;return!0}return e&&e.equals?e.equals(t):t&&t.equals?t.equals(e):typeof e=="number"&&typeof t=="number"?Math.abs(e-t)<=z.EPSILON*Math.max(1,Math.abs(e),Math.abs(t)):!1}finally{z.EPSILON=n}}function Mr(e){return Math.round(e/z.EPSILON)*z.EPSILON}function Tr(e){return e.clone?e.clone():new Array(e.length)}function Ss(e,t,s){if(tt(e)){let n=e;s=s||Tr(n);for(let r=0;r<s.length&&r<n.length;++r){let i=typeof e=="number"?e:e[r];s[r]=t(i,r,s)}return s}return t(e)}var ot=class extends Array{clone(){return new this.constructor().copy(this)}fromArray(t,s=0){for(let n=0;n<this.ELEMENTS;++n)this[n]=t[n+s];return this.check()}toArray(t=[],s=0){for(let n=0;n<this.ELEMENTS;++n)t[s+n]=this[n];return t}toObject(t){return t}from(t){return Array.isArray(t)?this.copy(t):this.fromObject(t)}to(t){return t===this?this:tt(t)?this.toArray(t):this.toObject(t)}toTarget(t){return t?this.to(t):this}toFloat32Array(){return new Float32Array(this)}toString(){return this.formatString(z)}formatString(t){let s="";for(let n=0;n<this.ELEMENTS;++n)s+=(n>0?", ":"")+Ae(this[n],t);return`${t.printTypes?this.constructor.name:""}[${s}]`}equals(t){if(!t||this.length!==t.length)return!1;for(let s=0;s<this.ELEMENTS;++s)if(!X(this[s],t[s]))return!1;return!0}exactEquals(t){if(!t||this.length!==t.length)return!1;for(let s=0;s<this.ELEMENTS;++s)if(this[s]!==t[s])return!1;return!0}negate(){for(let t=0;t<this.ELEMENTS;++t)this[t]=-this[t];return this.check()}lerp(t,s,n){if(n===void 0)return this.lerp(this,t,s);for(let r=0;r<this.ELEMENTS;++r){let i=t[r],o=typeof s=="number"?s:s[r];this[r]=i+n*(o-i)}return this.check()}min(t){for(let s=0;s<this.ELEMENTS;++s)this[s]=Math.min(t[s],this[s]);return this.check()}max(t){for(let s=0;s<this.ELEMENTS;++s)this[s]=Math.max(t[s],this[s]);return this.check()}clamp(t,s){for(let n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],t[n]),s[n]);return this.check()}add(...t){for(let s of t)for(let n=0;n<this.ELEMENTS;++n)this[n]+=s[n];return this.check()}subtract(...t){for(let s of t)for(let n=0;n<this.ELEMENTS;++n)this[n]-=s[n];return this.check()}scale(t){if(typeof t=="number")for(let s=0;s<this.ELEMENTS;++s)this[s]*=t;else for(let s=0;s<this.ELEMENTS&&s<t.length;++s)this[s]*=t[s];return this.check()}multiplyByScalar(t){for(let s=0;s<this.ELEMENTS;++s)this[s]*=t;return this.check()}check(){if(z.debug&&!this.validate())throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);return this}validate(){let t=this.length===this.ELEMENTS;for(let s=0;s<this.ELEMENTS;++s)t=t&&Number.isFinite(this[s]);return t}sub(t){return this.subtract(t)}setScalar(t){for(let s=0;s<this.ELEMENTS;++s)this[s]=t;return this.check()}addScalar(t){for(let s=0;s<this.ELEMENTS;++s)this[s]+=t;return this.check()}subScalar(t){return this.addScalar(-t)}multiplyScalar(t){for(let s=0;s<this.ELEMENTS;++s)this[s]*=t;return this.check()}divideScalar(t){return this.multiplyByScalar(1/t)}clampScalar(t,s){for(let n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],t),s);return this.check()}get elements(){return this}};function yr(e,t){if(e.length!==t)return!1;for(let s=0;s<e.length;++s)if(!Number.isFinite(e[s]))return!1;return!0}function L(e){if(!Number.isFinite(e))throw new Error(`Invalid number ${JSON.stringify(e)}`);return e}function ct(e,t,s=""){if(z.debug&&!yr(e,t))throw new Error(`math.gl: ${s} some fields set to invalid numbers'`);return e}function U(e,t){if(!e)throw new Error(`math.gl assertion ${t}`)}var Mt=class extends ot{get x(){return this[0]}set x(t){this[0]=L(t)}get y(){return this[1]}set y(t){this[1]=L(t)}len(){return Math.sqrt(this.lengthSquared())}magnitude(){return this.len()}lengthSquared(){let t=0;for(let s=0;s<this.ELEMENTS;++s)t+=this[s]*this[s];return t}magnitudeSquared(){return this.lengthSquared()}distance(t){return Math.sqrt(this.distanceSquared(t))}distanceSquared(t){let s=0;for(let n=0;n<this.ELEMENTS;++n){let r=this[n]-t[n];s+=r*r}return L(s)}dot(t){let s=0;for(let n=0;n<this.ELEMENTS;++n)s+=this[n]*t[n];return L(s)}normalize(){let t=this.magnitude();if(t!==0)for(let s=0;s<this.ELEMENTS;++s)this[s]/=t;return this.check()}multiply(...t){for(let s of t)for(let n=0;n<this.ELEMENTS;++n)this[n]*=s[n];return this.check()}divide(...t){for(let s of t)for(let n=0;n<this.ELEMENTS;++n)this[n]/=s[n];return this.check()}lengthSq(){return this.lengthSquared()}distanceTo(t){return this.distance(t)}distanceToSquared(t){return this.distanceSquared(t)}getComponent(t){return U(t>=0&&t<this.ELEMENTS,"index is out of range"),L(this[t])}setComponent(t,s){return U(t>=0&&t<this.ELEMENTS,"index is out of range"),this[t]=s,this.check()}addVectors(t,s){return this.copy(t).add(s)}subVectors(t,s){return this.copy(t).subtract(s)}multiplyVectors(t,s){return this.copy(t).multiply(s)}addScaledVector(t,s){return this.add(new this.constructor(t).multiplyScalar(s))}};var V=typeof Float32Array<"u"?Float32Array:Array,Pt=Math.random;function Tt(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var _c=Math.PI/180;function _r(){let e=new V(2);return V!=Float32Array&&(e[0]=0,e[1]=0),e}function Es(e,t,s){let n=t[0],r=t[1];return e[0]=s[0]*n+s[3]*r+s[6],e[1]=s[1]*n+s[4]*r+s[7],e}function ws(e,t,s){let n=t[0],r=t[1];return e[0]=s[0]*n+s[4]*r+s[12],e[1]=s[1]*n+s[5]*r+s[13],e}var Sc=function(){let e=_r();return function(t,s,n,r,i,o){let c,a;for(s||(s=2),n||(n=0),r?a=Math.min(r*s+n,t.length):a=t.length,c=n;c<a;c+=s)e[0]=t[c],e[1]=t[c+1],i(e,e,o),t[c]=e[0],t[c+1]=e[1];return t}}();function Rs(e,t,s){let n=t[0],r=t[1],i=s[3]*n+s[7]*r||1;return e[0]=(s[0]*n+s[4]*r)/i,e[1]=(s[1]*n+s[5]*r)/i,e}function $t(e,t,s){let n=t[0],r=t[1],i=t[2],o=s[3]*n+s[7]*r+s[11]*i||1;return e[0]=(s[0]*n+s[4]*r+s[8]*i)/o,e[1]=(s[1]*n+s[5]*r+s[9]*i)/o,e[2]=(s[2]*n+s[6]*r+s[10]*i)/o,e}function Os(e,t,s){let n=t[0],r=t[1];return e[0]=s[0]*n+s[2]*r,e[1]=s[1]*n+s[3]*r,e[2]=t[2],e}function As(e,t,s){let n=t[0],r=t[1];return e[0]=s[0]*n+s[2]*r,e[1]=s[1]*n+s[3]*r,e[2]=t[2],e[3]=t[3],e}function jt(e,t,s){let n=t[0],r=t[1],i=t[2];return e[0]=s[0]*n+s[3]*r+s[6]*i,e[1]=s[1]*n+s[4]*r+s[7]*i,e[2]=s[2]*n+s[5]*r+s[8]*i,e[3]=t[3],e}var ut={};Ct(ut,{add:()=>Rr,angle:()=>ve,bezier:()=>Dr,ceil:()=>Or,clone:()=>Sr,copy:()=>Er,create:()=>Xt,cross:()=>pt,dist:()=>$r,distance:()=>Is,div:()=>Zr,divide:()=>Ls,dot:()=>Nt,equals:()=>Br,exactEquals:()=>Wr,floor:()=>Ar,forEach:()=>Qr,fromValues:()=>Qt,hermite:()=>Vr,inverse:()=>vr,len:()=>be,length:()=>Cs,lerp:()=>br,max:()=>Pr,min:()=>Cr,mul:()=>Gr,multiply:()=>Ns,negate:()=>qr,normalize:()=>Ne,random:()=>Ur,rotateX:()=>Le,rotateY:()=>Ie,rotateZ:()=>qe,round:()=>Nr,scale:()=>Lr,scaleAndAdd:()=>Ir,set:()=>wr,slerp:()=>zr,sqrDist:()=>jr,sqrLen:()=>Xr,squaredDistance:()=>qs,squaredLength:()=>vs,str:()=>Fr,sub:()=>Yr,subtract:()=>Ps,transformMat3:()=>Lt,transformMat4:()=>dt,transformQuat:()=>It,zero:()=>kr});function Xt(){let e=new V(3);return V!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function Sr(e){let t=new V(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Cs(e){let t=e[0],s=e[1],n=e[2];return Math.sqrt(t*t+s*s+n*n)}function Qt(e,t,s){let n=new V(3);return n[0]=e,n[1]=t,n[2]=s,n}function Er(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function wr(e,t,s,n){return e[0]=t,e[1]=s,e[2]=n,e}function Rr(e,t,s){return e[0]=t[0]+s[0],e[1]=t[1]+s[1],e[2]=t[2]+s[2],e}function Ps(e,t,s){return e[0]=t[0]-s[0],e[1]=t[1]-s[1],e[2]=t[2]-s[2],e}function Ns(e,t,s){return e[0]=t[0]*s[0],e[1]=t[1]*s[1],e[2]=t[2]*s[2],e}function Ls(e,t,s){return e[0]=t[0]/s[0],e[1]=t[1]/s[1],e[2]=t[2]/s[2],e}function Or(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function Ar(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function Cr(e,t,s){return e[0]=Math.min(t[0],s[0]),e[1]=Math.min(t[1],s[1]),e[2]=Math.min(t[2],s[2]),e}function Pr(e,t,s){return e[0]=Math.max(t[0],s[0]),e[1]=Math.max(t[1],s[1]),e[2]=Math.max(t[2],s[2]),e}function Nr(e,t){return e[0]=Tt(t[0]),e[1]=Tt(t[1]),e[2]=Tt(t[2]),e}function Lr(e,t,s){return e[0]=t[0]*s,e[1]=t[1]*s,e[2]=t[2]*s,e}function Ir(e,t,s,n){return e[0]=t[0]+s[0]*n,e[1]=t[1]+s[1]*n,e[2]=t[2]+s[2]*n,e}function Is(e,t){let s=t[0]-e[0],n=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(s*s+n*n+r*r)}function qs(e,t){let s=t[0]-e[0],n=t[1]-e[1],r=t[2]-e[2];return s*s+n*n+r*r}function vs(e){let t=e[0],s=e[1],n=e[2];return t*t+s*s+n*n}function qr(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function vr(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function Ne(e,t){let s=t[0],n=t[1],r=t[2],i=s*s+n*n+r*r;return i>0&&(i=1/Math.sqrt(i)),e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e}function Nt(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function pt(e,t,s){let n=t[0],r=t[1],i=t[2],o=s[0],c=s[1],a=s[2];return e[0]=r*a-i*c,e[1]=i*o-n*a,e[2]=n*c-r*o,e}function br(e,t,s,n){let r=t[0],i=t[1],o=t[2];return e[0]=r+n*(s[0]-r),e[1]=i+n*(s[1]-i),e[2]=o+n*(s[2]-o),e}function zr(e,t,s,n){let r=Math.acos(Math.min(Math.max(Nt(t,s),-1),1)),i=Math.sin(r),o=Math.sin((1-n)*r)/i,c=Math.sin(n*r)/i;return e[0]=o*t[0]+c*s[0],e[1]=o*t[1]+c*s[1],e[2]=o*t[2]+c*s[2],e}function Vr(e,t,s,n,r,i){let o=i*i,c=o*(2*i-3)+1,a=o*(i-2)+i,h=o*(i-1),l=o*(3-2*i);return e[0]=t[0]*c+s[0]*a+n[0]*h+r[0]*l,e[1]=t[1]*c+s[1]*a+n[1]*h+r[1]*l,e[2]=t[2]*c+s[2]*a+n[2]*h+r[2]*l,e}function Dr(e,t,s,n,r,i){let o=1-i,c=o*o,a=i*i,h=c*o,l=3*i*c,f=3*a*o,m=a*i;return e[0]=t[0]*h+s[0]*l+n[0]*f+r[0]*m,e[1]=t[1]*h+s[1]*l+n[1]*f+r[1]*m,e[2]=t[2]*h+s[2]*l+n[2]*f+r[2]*m,e}function Ur(e,t){t=t===void 0?1:t;let s=Pt()*2*Math.PI,n=Pt()*2-1,r=Math.sqrt(1-n*n)*t;return e[0]=Math.cos(s)*r,e[1]=Math.sin(s)*r,e[2]=n*t,e}function dt(e,t,s){let n=t[0],r=t[1],i=t[2],o=s[3]*n+s[7]*r+s[11]*i+s[15];return o=o||1,e[0]=(s[0]*n+s[4]*r+s[8]*i+s[12])/o,e[1]=(s[1]*n+s[5]*r+s[9]*i+s[13])/o,e[2]=(s[2]*n+s[6]*r+s[10]*i+s[14])/o,e}function Lt(e,t,s){let n=t[0],r=t[1],i=t[2];return e[0]=n*s[0]+r*s[3]+i*s[6],e[1]=n*s[1]+r*s[4]+i*s[7],e[2]=n*s[2]+r*s[5]+i*s[8],e}function It(e,t,s){let n=s[0],r=s[1],i=s[2],o=s[3],c=t[0],a=t[1],h=t[2],l=r*h-i*a,f=i*c-n*h,m=n*a-r*c,p=r*m-i*f,x=i*l-n*m,g=n*f-r*l,u=o*2;return l*=u,f*=u,m*=u,p*=2,x*=2,g*=2,e[0]=c+l+p,e[1]=a+f+x,e[2]=h+m+g,e}function Le(e,t,s,n){let r=[],i=[];return r[0]=t[0]-s[0],r[1]=t[1]-s[1],r[2]=t[2]-s[2],i[0]=r[0],i[1]=r[1]*Math.cos(n)-r[2]*Math.sin(n),i[2]=r[1]*Math.sin(n)+r[2]*Math.cos(n),e[0]=i[0]+s[0],e[1]=i[1]+s[1],e[2]=i[2]+s[2],e}function Ie(e,t,s,n){let r=[],i=[];return r[0]=t[0]-s[0],r[1]=t[1]-s[1],r[2]=t[2]-s[2],i[0]=r[2]*Math.sin(n)+r[0]*Math.cos(n),i[1]=r[1],i[2]=r[2]*Math.cos(n)-r[0]*Math.sin(n),e[0]=i[0]+s[0],e[1]=i[1]+s[1],e[2]=i[2]+s[2],e}function qe(e,t,s,n){let r=[],i=[];return r[0]=t[0]-s[0],r[1]=t[1]-s[1],r[2]=t[2]-s[2],i[0]=r[0]*Math.cos(n)-r[1]*Math.sin(n),i[1]=r[0]*Math.sin(n)+r[1]*Math.cos(n),i[2]=r[2],e[0]=i[0]+s[0],e[1]=i[1]+s[1],e[2]=i[2]+s[2],e}function ve(e,t){let s=e[0],n=e[1],r=e[2],i=t[0],o=t[1],c=t[2],a=Math.sqrt((s*s+n*n+r*r)*(i*i+o*o+c*c)),h=a&&Nt(e,t)/a;return Math.acos(Math.min(Math.max(h,-1),1))}function kr(e){return e[0]=0,e[1]=0,e[2]=0,e}function Fr(e){return`vec3(${e[0]}, ${e[1]}, ${e[2]})`}function Wr(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function Br(e,t){let s=e[0],n=e[1],r=e[2],i=t[0],o=t[1],c=t[2];return Math.abs(s-i)<=1e-6*Math.max(1,Math.abs(s),Math.abs(i))&&Math.abs(n-o)<=1e-6*Math.max(1,Math.abs(n),Math.abs(o))&&Math.abs(r-c)<=1e-6*Math.max(1,Math.abs(r),Math.abs(c))}var Yr=Ps,Gr=Ns,Zr=Ls,$r=Is,jr=qs,be=Cs,Xr=vs,Qr=function(){let e=Xt();return function(t,s,n,r,i,o){let c,a;for(s||(s=3),n||(n=0),r?a=Math.min(r*s+n,t.length):a=t.length,c=n;c<a;c+=s)e[0]=t[c],e[1]=t[c+1],e[2]=t[c+2],i(e,e,o),t[c]=e[0],t[c+1]=e[1],t[c+2]=e[2];return t}}();var ze=[0,0,0],Kt,d=class extends Mt{static get ZERO(){return Kt||(Kt=new d(0,0,0),Object.freeze(Kt)),Kt}constructor(t=0,s=0,n=0){super(-0,-0,-0),arguments.length===1&&tt(t)?this.copy(t):(z.debug&&(L(t),L(s),L(n)),this[0]=t,this[1]=s,this[2]=n)}set(t,s,n){return this[0]=t,this[1]=s,this[2]=n,this.check()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this.check()}fromObject(t){return z.debug&&(L(t.x),L(t.y),L(t.z)),this[0]=t.x,this[1]=t.y,this[2]=t.z,this.check()}toObject(t){return t.x=this[0],t.y=this[1],t.z=this[2],t}get ELEMENTS(){return 3}get z(){return this[2]}set z(t){this[2]=L(t)}angle(t){return ve(this,t)}cross(t){return pt(this,this,t),this.check()}rotateX({radians:t,origin:s=ze}){return Le(this,this,s,t),this.check()}rotateY({radians:t,origin:s=ze}){return Ie(this,this,s,t),this.check()}rotateZ({radians:t,origin:s=ze}){return qe(this,this,s,t),this.check()}transform(t){return this.transformAsPoint(t)}transformAsPoint(t){return dt(this,this,t),this.check()}transformAsVector(t){return $t(this,this,t),this.check()}transformByMatrix3(t){return Lt(this,this,t),this.check()}transformByMatrix2(t){return Os(this,this,t),this.check()}transformByQuaternion(t){return It(this,this,t),this.check()}};var Ht,_t=class extends Mt{static get ZERO(){return Ht||(Ht=new _t(0,0,0,0),Object.freeze(Ht)),Ht}constructor(t=0,s=0,n=0,r=0){super(-0,-0,-0,-0),tt(t)&&arguments.length===1?this.copy(t):(z.debug&&(L(t),L(s),L(n),L(r)),this[0]=t,this[1]=s,this[2]=n,this[3]=r)}set(t,s,n,r){return this[0]=t,this[1]=s,this[2]=n,this[3]=r,this.check()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this.check()}fromObject(t){return z.debug&&(L(t.x),L(t.y),L(t.z),L(t.w)),this[0]=t.x,this[1]=t.y,this[2]=t.z,this[3]=t.w,this}toObject(t){return t.x=this[0],t.y=this[1],t.z=this[2],t.w=this[3],t}get ELEMENTS(){return 4}get z(){return this[2]}set z(t){this[2]=L(t)}get w(){return this[3]}set w(t){this[3]=L(t)}transform(t){return dt(this,this,t),this.check()}transformByMatrix3(t){return jt(this,this,t),this.check()}transformByMatrix2(t){return As(this,this,t),this.check()}transformByQuaternion(t){return It(this,this,t),this.check()}applyMatrix4(t){return t.transform(this,this),this}};var St=class extends ot{toString(){let t="[";if(z.printRowMajor){t+="row-major:";for(let s=0;s<this.RANK;++s)for(let n=0;n<this.RANK;++n)t+=` ${this[n*this.RANK+s]}`}else{t+="column-major:";for(let s=0;s<this.ELEMENTS;++s)t+=` ${this[s]}`}return t+="]",t}getElementIndex(t,s){return s*this.RANK+t}getElement(t,s){return this[s*this.RANK+t]}setElement(t,s,n){return this[s*this.RANK+t]=L(n),this}getColumn(t,s=new Array(this.RANK).fill(-0)){let n=t*this.RANK;for(let r=0;r<this.RANK;++r)s[r]=this[n+r];return s}setColumn(t,s){let n=t*this.RANK;for(let r=0;r<this.RANK;++r)this[n+r]=s[r];return this}};function bs(){let e=new V(9);return V!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}function zs(e,t){if(e===t){let s=t[1],n=t[2],r=t[5];e[1]=t[3],e[2]=t[6],e[3]=s,e[5]=t[7],e[6]=n,e[7]=r}else e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8];return e}function Vs(e,t){let s=t[0],n=t[1],r=t[2],i=t[3],o=t[4],c=t[5],a=t[6],h=t[7],l=t[8],f=l*o-c*h,m=-l*i+c*a,p=h*i-o*a,x=s*f+n*m+r*p;return x?(x=1/x,e[0]=f*x,e[1]=(-l*n+r*h)*x,e[2]=(c*n-r*o)*x,e[3]=m*x,e[4]=(l*s-r*a)*x,e[5]=(-c*s+r*i)*x,e[6]=p*x,e[7]=(-h*s+n*a)*x,e[8]=(o*s-n*i)*x,e):null}function Ds(e){let t=e[0],s=e[1],n=e[2],r=e[3],i=e[4],o=e[5],c=e[6],a=e[7],h=e[8];return t*(h*i-o*a)+s*(-h*r+o*c)+n*(a*r-i*c)}function Ve(e,t,s){let n=t[0],r=t[1],i=t[2],o=t[3],c=t[4],a=t[5],h=t[6],l=t[7],f=t[8],m=s[0],p=s[1],x=s[2],g=s[3],u=s[4],M=s[5],E=s[6],y=s[7],T=s[8];return e[0]=m*n+p*o+x*h,e[1]=m*r+p*c+x*l,e[2]=m*i+p*a+x*f,e[3]=g*n+u*o+M*h,e[4]=g*r+u*c+M*l,e[5]=g*i+u*a+M*f,e[6]=E*n+y*o+T*h,e[7]=E*r+y*c+T*l,e[8]=E*i+y*a+T*f,e}function Us(e,t,s){let n=t[0],r=t[1],i=t[2],o=t[3],c=t[4],a=t[5],h=t[6],l=t[7],f=t[8],m=s[0],p=s[1];return e[0]=n,e[1]=r,e[2]=i,e[3]=o,e[4]=c,e[5]=a,e[6]=m*n+p*o+h,e[7]=m*r+p*c+l,e[8]=m*i+p*a+f,e}function ks(e,t,s){let n=t[0],r=t[1],i=t[2],o=t[3],c=t[4],a=t[5],h=t[6],l=t[7],f=t[8],m=Math.sin(s),p=Math.cos(s);return e[0]=p*n+m*o,e[1]=p*r+m*c,e[2]=p*i+m*a,e[3]=p*o-m*n,e[4]=p*c-m*r,e[5]=p*a-m*i,e[6]=h,e[7]=l,e[8]=f,e}function De(e,t,s){let n=s[0],r=s[1];return e[0]=n*t[0],e[1]=n*t[1],e[2]=n*t[2],e[3]=r*t[3],e[4]=r*t[4],e[5]=r*t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e}function Fs(e,t){let s=t[0],n=t[1],r=t[2],i=t[3],o=s+s,c=n+n,a=r+r,h=s*o,l=n*o,f=n*c,m=r*o,p=r*c,x=r*a,g=i*o,u=i*c,M=i*a;return e[0]=1-f-x,e[3]=l-M,e[6]=m+u,e[1]=l+M,e[4]=1-h-x,e[7]=p-g,e[2]=m-u,e[5]=p+g,e[8]=1-h-f,e}var Ue;(function(e){e[e.COL0ROW0=0]="COL0ROW0",e[e.COL0ROW1=1]="COL0ROW1",e[e.COL0ROW2=2]="COL0ROW2",e[e.COL1ROW0=3]="COL1ROW0",e[e.COL1ROW1=4]="COL1ROW1",e[e.COL1ROW2=5]="COL1ROW2",e[e.COL2ROW0=6]="COL2ROW0",e[e.COL2ROW1=7]="COL2ROW1",e[e.COL2ROW2=8]="COL2ROW2"})(Ue||(Ue={}));var Hr=Object.freeze([1,0,0,0,1,0,0,0,1]),D=class extends St{static get IDENTITY(){return ti()}static get ZERO(){return Jr()}get ELEMENTS(){return 9}get RANK(){return 3}get INDICES(){return Ue}constructor(t,...s){super(-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(t)?this.copy(t):s.length>0?this.copy([t,...s]):this.identity()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this[4]=t[4],this[5]=t[5],this[6]=t[6],this[7]=t[7],this[8]=t[8],this.check()}identity(){return this.copy(Hr)}fromObject(t){return this.check()}fromQuaternion(t){return Fs(this,t),this.check()}set(t,s,n,r,i,o,c,a,h){return this[0]=t,this[1]=s,this[2]=n,this[3]=r,this[4]=i,this[5]=o,this[6]=c,this[7]=a,this[8]=h,this.check()}setRowMajor(t,s,n,r,i,o,c,a,h){return this[0]=t,this[1]=r,this[2]=c,this[3]=s,this[4]=i,this[5]=a,this[6]=n,this[7]=o,this[8]=h,this.check()}determinant(){return Ds(this)}transpose(){return zs(this,this),this.check()}invert(){return Vs(this,this),this.check()}multiplyLeft(t){return Ve(this,t,this),this.check()}multiplyRight(t){return Ve(this,this,t),this.check()}rotate(t){return ks(this,this,t),this.check()}scale(t){return Array.isArray(t)?De(this,this,t):De(this,this,[t,t]),this.check()}translate(t){return Us(this,this,t),this.check()}transform(t,s){let n;switch(t.length){case 2:n=Es(s||[-0,-0],t,this);break;case 3:n=Lt(s||[-0,-0,-0],t,this);break;case 4:n=jt(s||[-0,-0,-0,-0],t,this);break;default:throw new Error("Illegal vector")}return ct(n,t.length),n}transformVector(t,s){return this.transform(t,s)}transformVector2(t,s){return this.transform(t,s)}transformVector3(t,s){return this.transform(t,s)}},Jt,te=null;function Jr(){return Jt||(Jt=new D([0,0,0,0,0,0,0,0,0]),Object.freeze(Jt)),Jt}function ti(){return te||(te=new D,Object.freeze(te)),te}var vt={};Ct(vt,{add:()=>Ri,adjoint:()=>oi,clone:()=>si,copy:()=>ni,create:()=>ei,decompose:()=>xi,determinant:()=>We,equals:()=>Pi,exactEquals:()=>Ci,frob:()=>wi,fromQuat:()=>Xe,fromQuat2:()=>pi,fromRotation:()=>hi,fromRotationTranslation:()=>Bs,fromRotationTranslationScale:()=>gi,fromRotationTranslationScaleOrigin:()=>Mi,fromScaling:()=>ai,fromTranslation:()=>ci,fromValues:()=>ri,fromXRotation:()=>li,fromYRotation:()=>fi,fromZRotation:()=>mi,frustum:()=>Qe,getRotation:()=>ui,getScaling:()=>Ys,getTranslation:()=>di,identity:()=>Ws,invert:()=>Fe,lookAt:()=>Je,mul:()=>Ni,multiply:()=>qt,multiplyScalar:()=>Oi,multiplyScalarAndAdd:()=>Ai,ortho:()=>He,orthoNO:()=>Zs,orthoZO:()=>_i,perspective:()=>Ke,perspectiveFromFieldOfView:()=>yi,perspectiveNO:()=>Gs,perspectiveZO:()=>Ti,rotate:()=>Ge,rotateX:()=>Ze,rotateY:()=>$e,rotateZ:()=>je,scale:()=>Ye,set:()=>ii,str:()=>Ei,sub:()=>Li,subtract:()=>$s,targetTo:()=>Si,translate:()=>Be,transpose:()=>ke});function ei(){let e=new V(16);return V!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function si(e){let t=new V(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function ni(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function ri(e,t,s,n,r,i,o,c,a,h,l,f,m,p,x,g){let u=new V(16);return u[0]=e,u[1]=t,u[2]=s,u[3]=n,u[4]=r,u[5]=i,u[6]=o,u[7]=c,u[8]=a,u[9]=h,u[10]=l,u[11]=f,u[12]=m,u[13]=p,u[14]=x,u[15]=g,u}function ii(e,t,s,n,r,i,o,c,a,h,l,f,m,p,x,g,u){return e[0]=t,e[1]=s,e[2]=n,e[3]=r,e[4]=i,e[5]=o,e[6]=c,e[7]=a,e[8]=h,e[9]=l,e[10]=f,e[11]=m,e[12]=p,e[13]=x,e[14]=g,e[15]=u,e}function Ws(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function ke(e,t){if(e===t){let s=t[1],n=t[2],r=t[3],i=t[6],o=t[7],c=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=s,e[6]=t[9],e[7]=t[13],e[8]=n,e[9]=i,e[11]=t[14],e[12]=r,e[13]=o,e[14]=c}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function Fe(e,t){let s=t[0],n=t[1],r=t[2],i=t[3],o=t[4],c=t[5],a=t[6],h=t[7],l=t[8],f=t[9],m=t[10],p=t[11],x=t[12],g=t[13],u=t[14],M=t[15],E=s*c-n*o,y=s*a-r*o,T=s*h-i*o,S=n*a-r*c,_=n*h-i*c,P=r*h-i*a,R=l*g-f*x,O=l*u-m*x,w=l*M-p*x,q=f*u-m*g,v=f*M-p*g,b=m*M-p*u,A=E*b-y*v+T*q+S*w-_*O+P*R;return A?(A=1/A,e[0]=(c*b-a*v+h*q)*A,e[1]=(r*v-n*b-i*q)*A,e[2]=(g*P-u*_+M*S)*A,e[3]=(m*_-f*P-p*S)*A,e[4]=(a*w-o*b-h*O)*A,e[5]=(s*b-r*w+i*O)*A,e[6]=(u*T-x*P-M*y)*A,e[7]=(l*P-m*T+p*y)*A,e[8]=(o*v-c*w+h*R)*A,e[9]=(n*w-s*v-i*R)*A,e[10]=(x*_-g*T+M*E)*A,e[11]=(f*T-l*_-p*E)*A,e[12]=(c*O-o*q-a*R)*A,e[13]=(s*q-n*O+r*R)*A,e[14]=(g*y-x*S-u*E)*A,e[15]=(l*S-f*y+m*E)*A,e):null}function oi(e,t){let s=t[0],n=t[1],r=t[2],i=t[3],o=t[4],c=t[5],a=t[6],h=t[7],l=t[8],f=t[9],m=t[10],p=t[11],x=t[12],g=t[13],u=t[14],M=t[15],E=s*c-n*o,y=s*a-r*o,T=s*h-i*o,S=n*a-r*c,_=n*h-i*c,P=r*h-i*a,R=l*g-f*x,O=l*u-m*x,w=l*M-p*x,q=f*u-m*g,v=f*M-p*g,b=m*M-p*u;return e[0]=c*b-a*v+h*q,e[1]=r*v-n*b-i*q,e[2]=g*P-u*_+M*S,e[3]=m*_-f*P-p*S,e[4]=a*w-o*b-h*O,e[5]=s*b-r*w+i*O,e[6]=u*T-x*P-M*y,e[7]=l*P-m*T+p*y,e[8]=o*v-c*w+h*R,e[9]=n*w-s*v-i*R,e[10]=x*_-g*T+M*E,e[11]=f*T-l*_-p*E,e[12]=c*O-o*q-a*R,e[13]=s*q-n*O+r*R,e[14]=g*y-x*S-u*E,e[15]=l*S-f*y+m*E,e}function We(e){let t=e[0],s=e[1],n=e[2],r=e[3],i=e[4],o=e[5],c=e[6],a=e[7],h=e[8],l=e[9],f=e[10],m=e[11],p=e[12],x=e[13],g=e[14],u=e[15],M=t*o-s*i,E=t*c-n*i,y=s*c-n*o,T=h*x-l*p,S=h*g-f*p,_=l*g-f*x,P=t*_-s*S+n*T,R=i*_-o*S+c*T,O=h*y-l*E+f*M,w=p*y-x*E+g*M;return a*P-r*R+u*O-m*w}function qt(e,t,s){let n=t[0],r=t[1],i=t[2],o=t[3],c=t[4],a=t[5],h=t[6],l=t[7],f=t[8],m=t[9],p=t[10],x=t[11],g=t[12],u=t[13],M=t[14],E=t[15],y=s[0],T=s[1],S=s[2],_=s[3];return e[0]=y*n+T*c+S*f+_*g,e[1]=y*r+T*a+S*m+_*u,e[2]=y*i+T*h+S*p+_*M,e[3]=y*o+T*l+S*x+_*E,y=s[4],T=s[5],S=s[6],_=s[7],e[4]=y*n+T*c+S*f+_*g,e[5]=y*r+T*a+S*m+_*u,e[6]=y*i+T*h+S*p+_*M,e[7]=y*o+T*l+S*x+_*E,y=s[8],T=s[9],S=s[10],_=s[11],e[8]=y*n+T*c+S*f+_*g,e[9]=y*r+T*a+S*m+_*u,e[10]=y*i+T*h+S*p+_*M,e[11]=y*o+T*l+S*x+_*E,y=s[12],T=s[13],S=s[14],_=s[15],e[12]=y*n+T*c+S*f+_*g,e[13]=y*r+T*a+S*m+_*u,e[14]=y*i+T*h+S*p+_*M,e[15]=y*o+T*l+S*x+_*E,e}function Be(e,t,s){let n=s[0],r=s[1],i=s[2],o,c,a,h,l,f,m,p,x,g,u,M;return t===e?(e[12]=t[0]*n+t[4]*r+t[8]*i+t[12],e[13]=t[1]*n+t[5]*r+t[9]*i+t[13],e[14]=t[2]*n+t[6]*r+t[10]*i+t[14],e[15]=t[3]*n+t[7]*r+t[11]*i+t[15]):(o=t[0],c=t[1],a=t[2],h=t[3],l=t[4],f=t[5],m=t[6],p=t[7],x=t[8],g=t[9],u=t[10],M=t[11],e[0]=o,e[1]=c,e[2]=a,e[3]=h,e[4]=l,e[5]=f,e[6]=m,e[7]=p,e[8]=x,e[9]=g,e[10]=u,e[11]=M,e[12]=o*n+l*r+x*i+t[12],e[13]=c*n+f*r+g*i+t[13],e[14]=a*n+m*r+u*i+t[14],e[15]=h*n+p*r+M*i+t[15]),e}function Ye(e,t,s){let n=s[0],r=s[1],i=s[2];return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=t[7]*r,e[8]=t[8]*i,e[9]=t[9]*i,e[10]=t[10]*i,e[11]=t[11]*i,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function Ge(e,t,s,n){let r=n[0],i=n[1],o=n[2],c=Math.sqrt(r*r+i*i+o*o),a,h,l,f,m,p,x,g,u,M,E,y,T,S,_,P,R,O,w,q,v,b,A,$;return c<1e-6?null:(c=1/c,r*=c,i*=c,o*=c,h=Math.sin(s),a=Math.cos(s),l=1-a,f=t[0],m=t[1],p=t[2],x=t[3],g=t[4],u=t[5],M=t[6],E=t[7],y=t[8],T=t[9],S=t[10],_=t[11],P=r*r*l+a,R=i*r*l+o*h,O=o*r*l-i*h,w=r*i*l-o*h,q=i*i*l+a,v=o*i*l+r*h,b=r*o*l+i*h,A=i*o*l-r*h,$=o*o*l+a,e[0]=f*P+g*R+y*O,e[1]=m*P+u*R+T*O,e[2]=p*P+M*R+S*O,e[3]=x*P+E*R+_*O,e[4]=f*w+g*q+y*v,e[5]=m*w+u*q+T*v,e[6]=p*w+M*q+S*v,e[7]=x*w+E*q+_*v,e[8]=f*b+g*A+y*$,e[9]=m*b+u*A+T*$,e[10]=p*b+M*A+S*$,e[11]=x*b+E*A+_*$,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function Ze(e,t,s){let n=Math.sin(s),r=Math.cos(s),i=t[4],o=t[5],c=t[6],a=t[7],h=t[8],l=t[9],f=t[10],m=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=i*r+h*n,e[5]=o*r+l*n,e[6]=c*r+f*n,e[7]=a*r+m*n,e[8]=h*r-i*n,e[9]=l*r-o*n,e[10]=f*r-c*n,e[11]=m*r-a*n,e}function $e(e,t,s){let n=Math.sin(s),r=Math.cos(s),i=t[0],o=t[1],c=t[2],a=t[3],h=t[8],l=t[9],f=t[10],m=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=i*r-h*n,e[1]=o*r-l*n,e[2]=c*r-f*n,e[3]=a*r-m*n,e[8]=i*n+h*r,e[9]=o*n+l*r,e[10]=c*n+f*r,e[11]=a*n+m*r,e}function je(e,t,s){let n=Math.sin(s),r=Math.cos(s),i=t[0],o=t[1],c=t[2],a=t[3],h=t[4],l=t[5],f=t[6],m=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=i*r+h*n,e[1]=o*r+l*n,e[2]=c*r+f*n,e[3]=a*r+m*n,e[4]=h*r-i*n,e[5]=l*r-o*n,e[6]=f*r-c*n,e[7]=m*r-a*n,e}function ci(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}function ai(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function hi(e,t,s){let n=s[0],r=s[1],i=s[2],o=Math.sqrt(n*n+r*r+i*i),c,a,h;return o<1e-6?null:(o=1/o,n*=o,r*=o,i*=o,a=Math.sin(t),c=Math.cos(t),h=1-c,e[0]=n*n*h+c,e[1]=r*n*h+i*a,e[2]=i*n*h-r*a,e[3]=0,e[4]=n*r*h-i*a,e[5]=r*r*h+c,e[6]=i*r*h+n*a,e[7]=0,e[8]=n*i*h+r*a,e[9]=r*i*h-n*a,e[10]=i*i*h+c,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function li(e,t){let s=Math.sin(t),n=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n,e[6]=s,e[7]=0,e[8]=0,e[9]=-s,e[10]=n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function fi(e,t){let s=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=0,e[2]=-s,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=s,e[9]=0,e[10]=n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function mi(e,t){let s=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=s,e[2]=0,e[3]=0,e[4]=-s,e[5]=n,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Bs(e,t,s){let n=t[0],r=t[1],i=t[2],o=t[3],c=n+n,a=r+r,h=i+i,l=n*c,f=n*a,m=n*h,p=r*a,x=r*h,g=i*h,u=o*c,M=o*a,E=o*h;return e[0]=1-(p+g),e[1]=f+E,e[2]=m-M,e[3]=0,e[4]=f-E,e[5]=1-(l+g),e[6]=x+u,e[7]=0,e[8]=m+M,e[9]=x-u,e[10]=1-(l+p),e[11]=0,e[12]=s[0],e[13]=s[1],e[14]=s[2],e[15]=1,e}function pi(e,t){let s=new V(3),n=-t[0],r=-t[1],i=-t[2],o=t[3],c=t[4],a=t[5],h=t[6],l=t[7],f=n*n+r*r+i*i+o*o;return f>0?(s[0]=(c*o+l*n+a*i-h*r)*2/f,s[1]=(a*o+l*r+h*n-c*i)*2/f,s[2]=(h*o+l*i+c*r-a*n)*2/f):(s[0]=(c*o+l*n+a*i-h*r)*2,s[1]=(a*o+l*r+h*n-c*i)*2,s[2]=(h*o+l*i+c*r-a*n)*2),Bs(e,t,s),e}function di(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function Ys(e,t){let s=t[0],n=t[1],r=t[2],i=t[4],o=t[5],c=t[6],a=t[8],h=t[9],l=t[10];return e[0]=Math.sqrt(s*s+n*n+r*r),e[1]=Math.sqrt(i*i+o*o+c*c),e[2]=Math.sqrt(a*a+h*h+l*l),e}function ui(e,t){let s=new V(3);Ys(s,t);let n=1/s[0],r=1/s[1],i=1/s[2],o=t[0]*n,c=t[1]*r,a=t[2]*i,h=t[4]*n,l=t[5]*r,f=t[6]*i,m=t[8]*n,p=t[9]*r,x=t[10]*i,g=o+l+x,u=0;return g>0?(u=Math.sqrt(g+1)*2,e[3]=.25*u,e[0]=(f-p)/u,e[1]=(m-a)/u,e[2]=(c-h)/u):o>l&&o>x?(u=Math.sqrt(1+o-l-x)*2,e[3]=(f-p)/u,e[0]=.25*u,e[1]=(c+h)/u,e[2]=(m+a)/u):l>x?(u=Math.sqrt(1+l-o-x)*2,e[3]=(m-a)/u,e[0]=(c+h)/u,e[1]=.25*u,e[2]=(f+p)/u):(u=Math.sqrt(1+x-o-l)*2,e[3]=(c-h)/u,e[0]=(m+a)/u,e[1]=(f+p)/u,e[2]=.25*u),e}function xi(e,t,s,n){t[0]=n[12],t[1]=n[13],t[2]=n[14];let r=n[0],i=n[1],o=n[2],c=n[4],a=n[5],h=n[6],l=n[8],f=n[9],m=n[10];s[0]=Math.sqrt(r*r+i*i+o*o),s[1]=Math.sqrt(c*c+a*a+h*h),s[2]=Math.sqrt(l*l+f*f+m*m);let p=1/s[0],x=1/s[1],g=1/s[2],u=r*p,M=i*x,E=o*g,y=c*p,T=a*x,S=h*g,_=l*p,P=f*x,R=m*g,O=u+T+R,w=0;return O>0?(w=Math.sqrt(O+1)*2,e[3]=.25*w,e[0]=(S-P)/w,e[1]=(_-E)/w,e[2]=(M-y)/w):u>T&&u>R?(w=Math.sqrt(1+u-T-R)*2,e[3]=(S-P)/w,e[0]=.25*w,e[1]=(M+y)/w,e[2]=(_+E)/w):T>R?(w=Math.sqrt(1+T-u-R)*2,e[3]=(_-E)/w,e[0]=(M+y)/w,e[1]=.25*w,e[2]=(S+P)/w):(w=Math.sqrt(1+R-u-T)*2,e[3]=(M-y)/w,e[0]=(_+E)/w,e[1]=(S+P)/w,e[2]=.25*w),e}function gi(e,t,s,n){let r=t[0],i=t[1],o=t[2],c=t[3],a=r+r,h=i+i,l=o+o,f=r*a,m=r*h,p=r*l,x=i*h,g=i*l,u=o*l,M=c*a,E=c*h,y=c*l,T=n[0],S=n[1],_=n[2];return e[0]=(1-(x+u))*T,e[1]=(m+y)*T,e[2]=(p-E)*T,e[3]=0,e[4]=(m-y)*S,e[5]=(1-(f+u))*S,e[6]=(g+M)*S,e[7]=0,e[8]=(p+E)*_,e[9]=(g-M)*_,e[10]=(1-(f+x))*_,e[11]=0,e[12]=s[0],e[13]=s[1],e[14]=s[2],e[15]=1,e}function Mi(e,t,s,n,r){let i=t[0],o=t[1],c=t[2],a=t[3],h=i+i,l=o+o,f=c+c,m=i*h,p=i*l,x=i*f,g=o*l,u=o*f,M=c*f,E=a*h,y=a*l,T=a*f,S=n[0],_=n[1],P=n[2],R=r[0],O=r[1],w=r[2],q=(1-(g+M))*S,v=(p+T)*S,b=(x-y)*S,A=(p-T)*_,$=(1-(m+M))*_,ft=(u+E)*_,mt=(x+y)*P,Re=(u-E)*P,Wt=(1-(m+g))*P;return e[0]=q,e[1]=v,e[2]=b,e[3]=0,e[4]=A,e[5]=$,e[6]=ft,e[7]=0,e[8]=mt,e[9]=Re,e[10]=Wt,e[11]=0,e[12]=s[0]+R-(q*R+A*O+mt*w),e[13]=s[1]+O-(v*R+$*O+Re*w),e[14]=s[2]+w-(b*R+ft*O+Wt*w),e[15]=1,e}function Xe(e,t){let s=t[0],n=t[1],r=t[2],i=t[3],o=s+s,c=n+n,a=r+r,h=s*o,l=n*o,f=n*c,m=r*o,p=r*c,x=r*a,g=i*o,u=i*c,M=i*a;return e[0]=1-f-x,e[1]=l+M,e[2]=m-u,e[3]=0,e[4]=l-M,e[5]=1-h-x,e[6]=p+g,e[7]=0,e[8]=m+u,e[9]=p-g,e[10]=1-h-f,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Qe(e,t,s,n,r,i,o){let c=1/(s-t),a=1/(r-n),h=1/(i-o);return e[0]=i*2*c,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=i*2*a,e[6]=0,e[7]=0,e[8]=(s+t)*c,e[9]=(r+n)*a,e[10]=(o+i)*h,e[11]=-1,e[12]=0,e[13]=0,e[14]=o*i*2*h,e[15]=0,e}function Gs(e,t,s,n,r){let i=1/Math.tan(t/2);if(e[0]=i/s,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=i,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,r!=null&&r!==1/0){let o=1/(n-r);e[10]=(r+n)*o,e[14]=2*r*n*o}else e[10]=-1,e[14]=-2*n;return e}var Ke=Gs;function Ti(e,t,s,n,r){let i=1/Math.tan(t/2);if(e[0]=i/s,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=i,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,r!=null&&r!==1/0){let o=1/(n-r);e[10]=r*o,e[14]=r*n*o}else e[10]=-1,e[14]=-n;return e}function yi(e,t,s,n){let r=Math.tan(t.upDegrees*Math.PI/180),i=Math.tan(t.downDegrees*Math.PI/180),o=Math.tan(t.leftDegrees*Math.PI/180),c=Math.tan(t.rightDegrees*Math.PI/180),a=2/(o+c),h=2/(r+i);return e[0]=a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=h,e[6]=0,e[7]=0,e[8]=-((o-c)*a*.5),e[9]=(r-i)*h*.5,e[10]=n/(s-n),e[11]=-1,e[12]=0,e[13]=0,e[14]=n*s/(s-n),e[15]=0,e}function Zs(e,t,s,n,r,i,o){let c=1/(t-s),a=1/(n-r),h=1/(i-o);return e[0]=-2*c,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*h,e[11]=0,e[12]=(t+s)*c,e[13]=(r+n)*a,e[14]=(o+i)*h,e[15]=1,e}var He=Zs;function _i(e,t,s,n,r,i,o){let c=1/(t-s),a=1/(n-r),h=1/(i-o);return e[0]=-2*c,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=h,e[11]=0,e[12]=(t+s)*c,e[13]=(r+n)*a,e[14]=i*h,e[15]=1,e}function Je(e,t,s,n){let r,i,o,c,a,h,l,f,m,p,x=t[0],g=t[1],u=t[2],M=n[0],E=n[1],y=n[2],T=s[0],S=s[1],_=s[2];return Math.abs(x-T)<1e-6&&Math.abs(g-S)<1e-6&&Math.abs(u-_)<1e-6?Ws(e):(f=x-T,m=g-S,p=u-_,r=1/Math.sqrt(f*f+m*m+p*p),f*=r,m*=r,p*=r,i=E*p-y*m,o=y*f-M*p,c=M*m-E*f,r=Math.sqrt(i*i+o*o+c*c),r?(r=1/r,i*=r,o*=r,c*=r):(i=0,o=0,c=0),a=m*c-p*o,h=p*i-f*c,l=f*o-m*i,r=Math.sqrt(a*a+h*h+l*l),r?(r=1/r,a*=r,h*=r,l*=r):(a=0,h=0,l=0),e[0]=i,e[1]=a,e[2]=f,e[3]=0,e[4]=o,e[5]=h,e[6]=m,e[7]=0,e[8]=c,e[9]=l,e[10]=p,e[11]=0,e[12]=-(i*x+o*g+c*u),e[13]=-(a*x+h*g+l*u),e[14]=-(f*x+m*g+p*u),e[15]=1,e)}function Si(e,t,s,n){let r=t[0],i=t[1],o=t[2],c=n[0],a=n[1],h=n[2],l=r-s[0],f=i-s[1],m=o-s[2],p=l*l+f*f+m*m;p>0&&(p=1/Math.sqrt(p),l*=p,f*=p,m*=p);let x=a*m-h*f,g=h*l-c*m,u=c*f-a*l;return p=x*x+g*g+u*u,p>0&&(p=1/Math.sqrt(p),x*=p,g*=p,u*=p),e[0]=x,e[1]=g,e[2]=u,e[3]=0,e[4]=f*u-m*g,e[5]=m*x-l*u,e[6]=l*g-f*x,e[7]=0,e[8]=l,e[9]=f,e[10]=m,e[11]=0,e[12]=r,e[13]=i,e[14]=o,e[15]=1,e}function Ei(e){return`mat4(${e[0]}, ${e[1]}, ${e[2]}, ${e[3]}, ${e[4]}, ${e[5]}, ${e[6]}, ${e[7]}, ${e[8]}, ${e[9]}, ${e[10]}, ${e[11]}, ${e[12]}, ${e[13]}, ${e[14]}, ${e[15]})`}function wi(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]+e[3]*e[3]+e[4]*e[4]+e[5]*e[5]+e[6]*e[6]+e[7]*e[7]+e[8]*e[8]+e[9]*e[9]+e[10]*e[10]+e[11]*e[11]+e[12]*e[12]+e[13]*e[13]+e[14]*e[14]+e[15]*e[15])}function Ri(e,t,s){return e[0]=t[0]+s[0],e[1]=t[1]+s[1],e[2]=t[2]+s[2],e[3]=t[3]+s[3],e[4]=t[4]+s[4],e[5]=t[5]+s[5],e[6]=t[6]+s[6],e[7]=t[7]+s[7],e[8]=t[8]+s[8],e[9]=t[9]+s[9],e[10]=t[10]+s[10],e[11]=t[11]+s[11],e[12]=t[12]+s[12],e[13]=t[13]+s[13],e[14]=t[14]+s[14],e[15]=t[15]+s[15],e}function $s(e,t,s){return e[0]=t[0]-s[0],e[1]=t[1]-s[1],e[2]=t[2]-s[2],e[3]=t[3]-s[3],e[4]=t[4]-s[4],e[5]=t[5]-s[5],e[6]=t[6]-s[6],e[7]=t[7]-s[7],e[8]=t[8]-s[8],e[9]=t[9]-s[9],e[10]=t[10]-s[10],e[11]=t[11]-s[11],e[12]=t[12]-s[12],e[13]=t[13]-s[13],e[14]=t[14]-s[14],e[15]=t[15]-s[15],e}function Oi(e,t,s){return e[0]=t[0]*s,e[1]=t[1]*s,e[2]=t[2]*s,e[3]=t[3]*s,e[4]=t[4]*s,e[5]=t[5]*s,e[6]=t[6]*s,e[7]=t[7]*s,e[8]=t[8]*s,e[9]=t[9]*s,e[10]=t[10]*s,e[11]=t[11]*s,e[12]=t[12]*s,e[13]=t[13]*s,e[14]=t[14]*s,e[15]=t[15]*s,e}function Ai(e,t,s,n){return e[0]=t[0]+s[0]*n,e[1]=t[1]+s[1]*n,e[2]=t[2]+s[2]*n,e[3]=t[3]+s[3]*n,e[4]=t[4]+s[4]*n,e[5]=t[5]+s[5]*n,e[6]=t[6]+s[6]*n,e[7]=t[7]+s[7]*n,e[8]=t[8]+s[8]*n,e[9]=t[9]+s[9]*n,e[10]=t[10]+s[10]*n,e[11]=t[11]+s[11]*n,e[12]=t[12]+s[12]*n,e[13]=t[13]+s[13]*n,e[14]=t[14]+s[14]*n,e[15]=t[15]+s[15]*n,e}function Ci(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function Pi(e,t){let s=e[0],n=e[1],r=e[2],i=e[3],o=e[4],c=e[5],a=e[6],h=e[7],l=e[8],f=e[9],m=e[10],p=e[11],x=e[12],g=e[13],u=e[14],M=e[15],E=t[0],y=t[1],T=t[2],S=t[3],_=t[4],P=t[5],R=t[6],O=t[7],w=t[8],q=t[9],v=t[10],b=t[11],A=t[12],$=t[13],ft=t[14],mt=t[15];return Math.abs(s-E)<=1e-6*Math.max(1,Math.abs(s),Math.abs(E))&&Math.abs(n-y)<=1e-6*Math.max(1,Math.abs(n),Math.abs(y))&&Math.abs(r-T)<=1e-6*Math.max(1,Math.abs(r),Math.abs(T))&&Math.abs(i-S)<=1e-6*Math.max(1,Math.abs(i),Math.abs(S))&&Math.abs(o-_)<=1e-6*Math.max(1,Math.abs(o),Math.abs(_))&&Math.abs(c-P)<=1e-6*Math.max(1,Math.abs(c),Math.abs(P))&&Math.abs(a-R)<=1e-6*Math.max(1,Math.abs(a),Math.abs(R))&&Math.abs(h-O)<=1e-6*Math.max(1,Math.abs(h),Math.abs(O))&&Math.abs(l-w)<=1e-6*Math.max(1,Math.abs(l),Math.abs(w))&&Math.abs(f-q)<=1e-6*Math.max(1,Math.abs(f),Math.abs(q))&&Math.abs(m-v)<=1e-6*Math.max(1,Math.abs(m),Math.abs(v))&&Math.abs(p-b)<=1e-6*Math.max(1,Math.abs(p),Math.abs(b))&&Math.abs(x-A)<=1e-6*Math.max(1,Math.abs(x),Math.abs(A))&&Math.abs(g-$)<=1e-6*Math.max(1,Math.abs(g),Math.abs($))&&Math.abs(u-ft)<=1e-6*Math.max(1,Math.abs(u),Math.abs(ft))&&Math.abs(M-mt)<=1e-6*Math.max(1,Math.abs(M),Math.abs(mt))}var Ni=qt,Li=$s;function Ii(){let e=new V(4);return V!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e}function js(e,t,s){return e[0]=t[0]+s[0],e[1]=t[1]+s[1],e[2]=t[2]+s[2],e[3]=t[3]+s[3],e}function Xs(e,t,s){return e[0]=t[0]*s,e[1]=t[1]*s,e[2]=t[2]*s,e[3]=t[3]*s,e}function Qs(e){let t=e[0],s=e[1],n=e[2],r=e[3];return Math.sqrt(t*t+s*s+n*n+r*r)}function Ks(e){let t=e[0],s=e[1],n=e[2],r=e[3];return t*t+s*s+n*n+r*r}function Hs(e,t){let s=t[0],n=t[1],r=t[2],i=t[3],o=s*s+n*n+r*r+i*i;return o>0&&(o=1/Math.sqrt(o)),e[0]=s*o,e[1]=n*o,e[2]=r*o,e[3]=i*o,e}function Js(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]}function tn(e,t,s,n){let r=t[0],i=t[1],o=t[2],c=t[3];return e[0]=r+n*(s[0]-r),e[1]=i+n*(s[1]-i),e[2]=o+n*(s[2]-o),e[3]=c+n*(s[3]-c),e}function en(e,t,s){let n=t[0],r=t[1],i=t[2],o=t[3];return e[0]=s[0]*n+s[4]*r+s[8]*i+s[12]*o,e[1]=s[1]*n+s[5]*r+s[9]*i+s[13]*o,e[2]=s[2]*n+s[6]*r+s[10]*i+s[14]*o,e[3]=s[3]*n+s[7]*r+s[11]*i+s[15]*o,e}function sn(e,t,s){let n=t[0],r=t[1],i=t[2],o=s[0],c=s[1],a=s[2],h=s[3],l=h*n+c*i-a*r,f=h*r+a*n-o*i,m=h*i+o*r-c*n,p=-o*n-c*r-a*i;return e[0]=l*h+p*-o+f*-a-m*-c,e[1]=f*h+p*-c+m*-o-l*-a,e[2]=m*h+p*-a+l*-c-f*-o,e[3]=t[3],e}var jc=function(){let e=Ii();return function(t,s,n,r,i,o){let c,a;for(s||(s=4),n||(n=0),r?a=Math.min(r*s+n,t.length):a=t.length,c=n;c<a;c+=s)e[0]=t[c],e[1]=t[c+1],e[2]=t[c+2],e[3]=t[c+3],i(e,e,o),t[c]=e[0],t[c+1]=e[1],t[c+2]=e[2],t[c+3]=e[3];return t}}();var ss;(function(e){e[e.COL0ROW0=0]="COL0ROW0",e[e.COL0ROW1=1]="COL0ROW1",e[e.COL0ROW2=2]="COL0ROW2",e[e.COL0ROW3=3]="COL0ROW3",e[e.COL1ROW0=4]="COL1ROW0",e[e.COL1ROW1=5]="COL1ROW1",e[e.COL1ROW2=6]="COL1ROW2",e[e.COL1ROW3=7]="COL1ROW3",e[e.COL2ROW0=8]="COL2ROW0",e[e.COL2ROW1=9]="COL2ROW1",e[e.COL2ROW2=10]="COL2ROW2",e[e.COL2ROW3=11]="COL2ROW3",e[e.COL3ROW0=12]="COL3ROW0",e[e.COL3ROW1=13]="COL3ROW1",e[e.COL3ROW2=14]="COL3ROW2",e[e.COL3ROW3=15]="COL3ROW3"})(ss||(ss={}));var vi=45*Math.PI/180,bi=1,ts=.1,es=500,zi=Object.freeze([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),N=class extends St{static get IDENTITY(){return Di()}static get ZERO(){return Vi()}get ELEMENTS(){return 16}get RANK(){return 4}get INDICES(){return ss}constructor(t){super(-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(t)?this.copy(t):this.identity()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this[4]=t[4],this[5]=t[5],this[6]=t[6],this[7]=t[7],this[8]=t[8],this[9]=t[9],this[10]=t[10],this[11]=t[11],this[12]=t[12],this[13]=t[13],this[14]=t[14],this[15]=t[15],this.check()}set(t,s,n,r,i,o,c,a,h,l,f,m,p,x,g,u){return this[0]=t,this[1]=s,this[2]=n,this[3]=r,this[4]=i,this[5]=o,this[6]=c,this[7]=a,this[8]=h,this[9]=l,this[10]=f,this[11]=m,this[12]=p,this[13]=x,this[14]=g,this[15]=u,this.check()}setRowMajor(t,s,n,r,i,o,c,a,h,l,f,m,p,x,g,u){return this[0]=t,this[1]=i,this[2]=h,this[3]=p,this[4]=s,this[5]=o,this[6]=l,this[7]=x,this[8]=n,this[9]=c,this[10]=f,this[11]=g,this[12]=r,this[13]=a,this[14]=m,this[15]=u,this.check()}toRowMajor(t){return t[0]=this[0],t[1]=this[4],t[2]=this[8],t[3]=this[12],t[4]=this[1],t[5]=this[5],t[6]=this[9],t[7]=this[13],t[8]=this[2],t[9]=this[6],t[10]=this[10],t[11]=this[14],t[12]=this[3],t[13]=this[7],t[14]=this[11],t[15]=this[15],t}identity(){return this.copy(zi)}fromObject(t){return this.check()}fromQuaternion(t){return Xe(this,t),this.check()}frustum(t){let{left:s,right:n,bottom:r,top:i,near:o=ts,far:c=es}=t;return c===1/0?Ui(this,s,n,r,i,o):Qe(this,s,n,r,i,o,c),this.check()}lookAt(t){let{eye:s,center:n=[0,0,0],up:r=[0,1,0]}=t;return Je(this,s,n,r),this.check()}ortho(t){let{left:s,right:n,bottom:r,top:i,near:o=ts,far:c=es}=t;return He(this,s,n,r,i,o,c),this.check()}orthographic(t){let{fovy:s=vi,aspect:n=bi,focalDistance:r=1,near:i=ts,far:o=es}=t;nn(s);let c=s/2,a=r*Math.tan(c),h=a*n;return this.ortho({left:-h,right:h,bottom:-a,top:a,near:i,far:o})}perspective(t){let{fovy:s=45*Math.PI/180,aspect:n=1,near:r=.1,far:i=500}=t;return nn(s),Ke(this,s,n,r,i),this.check()}determinant(){return We(this)}getScale(t=[-0,-0,-0]){return t[0]=Math.sqrt(this[0]*this[0]+this[1]*this[1]+this[2]*this[2]),t[1]=Math.sqrt(this[4]*this[4]+this[5]*this[5]+this[6]*this[6]),t[2]=Math.sqrt(this[8]*this[8]+this[9]*this[9]+this[10]*this[10]),t}getTranslation(t=[-0,-0,-0]){return t[0]=this[12],t[1]=this[13],t[2]=this[14],t}getRotation(t,s){t=t||[-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0],s=s||[-0,-0,-0];let n=this.getScale(s),r=1/n[0],i=1/n[1],o=1/n[2];return t[0]=this[0]*r,t[1]=this[1]*i,t[2]=this[2]*o,t[3]=0,t[4]=this[4]*r,t[5]=this[5]*i,t[6]=this[6]*o,t[7]=0,t[8]=this[8]*r,t[9]=this[9]*i,t[10]=this[10]*o,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}getRotationMatrix3(t,s){t=t||[-0,-0,-0,-0,-0,-0,-0,-0,-0],s=s||[-0,-0,-0];let n=this.getScale(s),r=1/n[0],i=1/n[1],o=1/n[2];return t[0]=this[0]*r,t[1]=this[1]*i,t[2]=this[2]*o,t[3]=this[4]*r,t[4]=this[5]*i,t[5]=this[6]*o,t[6]=this[8]*r,t[7]=this[9]*i,t[8]=this[10]*o,t}transpose(){return ke(this,this),this.check()}invert(){return Fe(this,this),this.check()}multiplyLeft(t){return qt(this,t,this),this.check()}multiplyRight(t){return qt(this,this,t),this.check()}rotateX(t){return Ze(this,this,t),this.check()}rotateY(t){return $e(this,this,t),this.check()}rotateZ(t){return je(this,this,t),this.check()}rotateXYZ(t){return this.rotateX(t[0]).rotateY(t[1]).rotateZ(t[2])}rotateAxis(t,s){return Ge(this,this,t,s),this.check()}scale(t){return Ye(this,this,Array.isArray(t)?t:[t,t,t]),this.check()}translate(t){return Be(this,this,t),this.check()}transform(t,s){return t.length===4?(s=en(s||[-0,-0,-0,-0],t,this),ct(s,4),s):this.transformAsPoint(t,s)}transformAsPoint(t,s){let{length:n}=t,r;switch(n){case 2:r=ws(s||[-0,-0],t,this);break;case 3:r=dt(s||[-0,-0,-0],t,this);break;default:throw new Error("Illegal vector")}return ct(r,t.length),r}transformAsVector(t,s){let n;switch(t.length){case 2:n=Rs(s||[-0,-0],t,this);break;case 3:n=$t(s||[-0,-0,-0],t,this);break;default:throw new Error("Illegal vector")}return ct(n,t.length),n}transformPoint(t,s){return this.transformAsPoint(t,s)}transformVector(t,s){return this.transformAsPoint(t,s)}transformDirection(t,s){return this.transformAsVector(t,s)}makeRotationX(t){return this.identity().rotateX(t)}makeTranslation(t,s,n){return this.identity().translate([t,s,n])}},ee,se;function Vi(){return ee||(ee=new N([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),Object.freeze(ee)),ee}function Di(){return se||(se=new N,Object.freeze(se)),se}function nn(e){if(e>Math.PI*2)throw Error("expected radians")}function Ui(e,t,s,n,r,i){let o=2*i/(s-t),c=2*i/(r-n),a=(s+t)/(s-t),h=(r+n)/(r-n),l=-1,f=-1,m=-2*i;return e[0]=o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=c,e[6]=0,e[7]=0,e[8]=a,e[9]=h,e[10]=l,e[11]=f,e[12]=0,e[13]=0,e[14]=m,e[15]=0,e}function rn(){let e=new V(4);return V!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}function on(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e}function ns(e,t,s){s=s*.5;let n=Math.sin(s);return e[0]=n*t[0],e[1]=n*t[1],e[2]=n*t[2],e[3]=Math.cos(s),e}function rs(e,t,s){let n=t[0],r=t[1],i=t[2],o=t[3],c=s[0],a=s[1],h=s[2],l=s[3];return e[0]=n*l+o*c+r*h-i*a,e[1]=r*l+o*a+i*c-n*h,e[2]=i*l+o*h+n*a-r*c,e[3]=o*l-n*c-r*a-i*h,e}function cn(e,t,s){s*=.5;let n=t[0],r=t[1],i=t[2],o=t[3],c=Math.sin(s),a=Math.cos(s);return e[0]=n*a+o*c,e[1]=r*a+i*c,e[2]=i*a-r*c,e[3]=o*a-n*c,e}function an(e,t,s){s*=.5;let n=t[0],r=t[1],i=t[2],o=t[3],c=Math.sin(s),a=Math.cos(s);return e[0]=n*a-i*c,e[1]=r*a+o*c,e[2]=i*a+n*c,e[3]=o*a-r*c,e}function hn(e,t,s){s*=.5;let n=t[0],r=t[1],i=t[2],o=t[3],c=Math.sin(s),a=Math.cos(s);return e[0]=n*a+r*c,e[1]=r*a-n*c,e[2]=i*a+o*c,e[3]=o*a-i*c,e}function ln(e,t){let s=t[0],n=t[1],r=t[2];return e[0]=s,e[1]=n,e[2]=r,e[3]=Math.sqrt(Math.abs(1-s*s-n*n-r*r)),e}function bt(e,t,s,n){let r=t[0],i=t[1],o=t[2],c=t[3],a=s[0],h=s[1],l=s[2],f=s[3],m,p,x,g,u;return m=r*a+i*h+o*l+c*f,m<0&&(m=-m,a=-a,h=-h,l=-l,f=-f),1-m>1e-6?(p=Math.acos(m),u=Math.sin(p),x=Math.sin((1-n)*p)/u,g=Math.sin(n*p)/u):(x=1-n,g=n),e[0]=x*r+g*a,e[1]=x*i+g*h,e[2]=x*o+g*l,e[3]=x*c+g*f,e}function fn(e,t){let s=t[0],n=t[1],r=t[2],i=t[3],o=s*s+n*n+r*r+i*i,c=o?1/o:0;return e[0]=-s*c,e[1]=-n*c,e[2]=-r*c,e[3]=i*c,e}function mn(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=t[3],e}function is(e,t){let s=t[0]+t[4]+t[8],n;if(s>0)n=Math.sqrt(s+1),e[3]=.5*n,n=.5/n,e[0]=(t[5]-t[7])*n,e[1]=(t[6]-t[2])*n,e[2]=(t[1]-t[3])*n;else{let r=0;t[4]>t[0]&&(r=1),t[8]>t[r*3+r]&&(r=2);let i=(r+1)%3,o=(r+2)%3;n=Math.sqrt(t[r*3+r]-t[i*3+i]-t[o*3+o]+1),e[r]=.5*n,n=.5/n,e[3]=(t[i*3+o]-t[o*3+i])*n,e[i]=(t[i*3+r]+t[r*3+i])*n,e[o]=(t[o*3+r]+t[r*3+o])*n}return e}var pn=js;var dn=Xs,un=Js,xn=tn,gn=Qs;var Mn=Ks;var Tn=Hs;var yn=function(){let e=Xt(),t=Qt(1,0,0),s=Qt(0,1,0);return function(n,r,i){let o=Nt(r,i);return o<-.999999?(pt(e,t,r),be(e)<1e-6&&pt(e,s,r),Ne(e,e),ns(n,e,Math.PI),n):o>.999999?(n[0]=0,n[1]=0,n[2]=0,n[3]=1,n):(pt(e,r,i),n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=1+o,Tn(n,n))}}(),aa=function(){let e=rn(),t=rn();return function(s,n,r,i,o,c){return bt(e,n,o,c),bt(t,r,i,c),bt(s,e,t,2*c*(1-c)),s}}(),ha=function(){let e=bs();return function(t,s,n,r){return e[0]=n[0],e[3]=n[1],e[6]=n[2],e[1]=r[0],e[4]=r[1],e[7]=r[2],e[2]=-s[0],e[5]=-s[1],e[8]=-s[2],Tn(t,is(t,e))}}();var ki=[0,0,0,1],at=class extends ot{constructor(t=0,s=0,n=0,r=1){super(-0,-0,-0,-0),Array.isArray(t)&&arguments.length===1?this.copy(t):this.set(t,s,n,r)}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this.check()}set(t,s,n,r){return this[0]=t,this[1]=s,this[2]=n,this[3]=r,this.check()}fromObject(t){return this[0]=t.x,this[1]=t.y,this[2]=t.z,this[3]=t.w,this.check()}fromMatrix3(t){return is(this,t),this.check()}fromAxisRotation(t,s){return ns(this,t,s),this.check()}identity(){return on(this),this.check()}setAxisAngle(t,s){return this.fromAxisRotation(t,s)}get ELEMENTS(){return 4}get x(){return this[0]}set x(t){this[0]=L(t)}get y(){return this[1]}set y(t){this[1]=L(t)}get z(){return this[2]}set z(t){this[2]=L(t)}get w(){return this[3]}set w(t){this[3]=L(t)}len(){return gn(this)}lengthSquared(){return Mn(this)}dot(t){return un(this,t)}rotationTo(t,s){return yn(this,t,s),this.check()}add(t){return pn(this,this,t),this.check()}calculateW(){return ln(this,this),this.check()}conjugate(){return mn(this,this),this.check()}invert(){return fn(this,this),this.check()}lerp(t,s,n){return n===void 0?this.lerp(this,t,s):(xn(this,t,s,n),this.check())}multiplyRight(t){return rs(this,this,t),this.check()}multiplyLeft(t){return rs(this,t,this),this.check()}normalize(){let t=this.len(),s=t>0?1/t:0;return this[0]=this[0]*s,this[1]=this[1]*s,this[2]=this[2]*s,this[3]=this[3]*s,t===0&&(this[3]=1),this.check()}rotateX(t){return cn(this,this,t),this.check()}rotateY(t){return an(this,this,t),this.check()}rotateZ(t){return hn(this,this,t),this.check()}scale(t){return dn(this,this,t),this.check()}slerp(t,s,n){let r,i,o;switch(arguments.length){case 1:({start:r=ki,target:i,ratio:o}=t);break;case 2:r=this,i=t,o=s;break;default:r=t,i=s,o=n}return bt(this,r,i,o),this.check()}transformVector4(t,s=new _t){return sn(s,t,this),ct(s,4)}lengthSq(){return this.lengthSquared()}setFromAxisAngle(t,s){return this.setAxisAngle(t,s)}premultiply(t){return this.multiplyLeft(t)}multiply(t){return this.multiplyRight(t)}};var st={};Ct(st,{EPSILON1:()=>Fi,EPSILON10:()=>Qi,EPSILON11:()=>Ki,EPSILON12:()=>Hi,EPSILON13:()=>Ji,EPSILON14:()=>to,EPSILON15:()=>eo,EPSILON16:()=>so,EPSILON17:()=>no,EPSILON18:()=>ro,EPSILON19:()=>io,EPSILON2:()=>Wi,EPSILON20:()=>oo,EPSILON3:()=>Bi,EPSILON4:()=>Yi,EPSILON5:()=>Gi,EPSILON6:()=>Zi,EPSILON7:()=>$i,EPSILON8:()=>ji,EPSILON9:()=>Xi,PI_OVER_FOUR:()=>ao,PI_OVER_SIX:()=>ho,PI_OVER_TWO:()=>co,TWO_PI:()=>lo});var Fi=.1,Wi=.01,Bi=.001,Yi=1e-4,Gi=1e-5,Zi=1e-6,$i=1e-7,ji=1e-8,Xi=1e-9,Qi=1e-10,Ki=1e-11,Hi=1e-12,Ji=1e-13,to=1e-14,eo=1e-15,so=1e-16,no=1e-17,ro=1e-18,io=1e-19,oo=1e-20,co=Math.PI/2,ao=Math.PI/4,ho=Math.PI/6,lo=Math.PI*2;var nt=6356752314245179e-9,mo={radii:[6378137,6378137,nt],radiiSquared:[6378137*6378137,6378137*6378137,nt*nt],oneOverRadii:[1/6378137,1/6378137,1/nt],oneOverRadiiSquared:[1/(6378137*6378137),1/(6378137*6378137),1/(nt*nt)],maximumRadius:Math.max(6378137,6378137,nt),centerToleranceSquared:.1};function ne(e){return e}var Da=new d;function po(e,t=[],s=ne){return"longitude"in e?(t[0]=s(e.longitude),t[1]=s(e.latitude),t[2]=e.height):"x"in e?(t[0]=s(e.x),t[1]=s(e.y),t[2]=e.z):(t[0]=s(e[0]),t[1]=s(e[1]),t[2]=e[2]),t}function _n(e,t=[]){return po(e,t,z._cartographicRadians?ne:Ce)}function uo(e,t,s=ne){return"longitude"in t?(t.longitude=s(e[0]),t.latitude=s(e[1]),t.height=e[2]):"x"in t?(t.x=s(e[0]),t.y=s(e[1]),t.z=e[2]):(t[0]=s(e[0]),t[1]=s(e[1]),t[2]=e[2]),t}function Sn(e,t){return uo(e,t,z._cartographicRadians?ne:Pe)}var En=1e-14,xo=new d,wn={up:{south:"east",north:"west",west:"south",east:"north"},down:{south:"west",north:"east",west:"north",east:"south"},south:{up:"west",down:"east",west:"down",east:"up"},north:{up:"east",down:"west",west:"up",east:"down"},west:{up:"north",down:"south",north:"down",south:"up"},east:{up:"south",down:"north",north:"up",south:"down"}},os={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},zt={east:new d,north:new d,up:new d,west:new d,south:new d,down:new d},go=new d,Mo=new d,To=new d;function cs(e,t,s,n,r,i){let o=wn[t]&&wn[t][s];U(o&&(!n||n===o));let c,a,h,l=xo.copy(r);if(X(l.x,0,En)&&X(l.y,0,En)){let m=Math.sign(l.z);c=go.fromArray(os[t]),t!=="east"&&t!=="west"&&c.scale(m),a=Mo.fromArray(os[s]),s!=="east"&&s!=="west"&&a.scale(m),h=To.fromArray(os[n]),n!=="east"&&n!=="west"&&h.scale(m)}else{let{up:m,east:p,north:x}=zt;p.set(-l.y,l.x,0).normalize(),e.geodeticSurfaceNormal(l,m),x.copy(m).cross(p);let{down:g,west:u,south:M}=zt;g.copy(m).scale(-1),u.copy(p).scale(-1),M.copy(x).scale(-1),c=zt[t],a=zt[s],h=zt[n]}return i[0]=c.x,i[1]=c.y,i[2]=c.z,i[3]=0,i[4]=a.x,i[5]=a.y,i[6]=a.z,i[7]=0,i[8]=h.x,i[9]=h.y,i[10]=h.z,i[11]=0,i[12]=l.x,i[13]=l.y,i[14]=l.z,i[15]=1,i}var Et=new d,yo=new d,_o=new d;function Rn(e,t,s=[]){let{oneOverRadii:n,oneOverRadiiSquared:r,centerToleranceSquared:i}=t;Et.from(e);let o=Et.x,c=Et.y,a=Et.z,h=n.x,l=n.y,f=n.z,m=o*o*h*h,p=c*c*l*l,x=a*a*f*f,g=m+p+x,u=Math.sqrt(1/g);if(!Number.isFinite(u))return;let M=yo;if(M.copy(e).scale(u),g<i)return M.to(s);let E=r.x,y=r.y,T=r.z,S=_o;S.set(M.x*E*2,M.y*y*2,M.z*T*2);let _=(1-u)*Et.len()/(.5*S.len()),P=0,R,O,w,q;do{_-=P,R=1/(1+_*E),O=1/(1+_*y),w=1/(1+_*T);let v=R*R,b=O*O,A=w*w,$=v*R,ft=b*O,mt=A*w;q=m*v+p*b+x*A-1;let Wt=-2*(m*$*E+p*ft*y+x*mt*T);P=q/Wt}while(Math.abs(q)>st.EPSILON12);return Et.scale([R,O,w]).to(s)}var re=new d,On=new d,wo=new d,H=new d,Ro=new d,ie=new d,C=class{constructor(t=0,s=0,n=0){this.centerToleranceSquared=st.EPSILON1,U(t>=0),U(s>=0),U(n>=0),this.radii=new d(t,s,n),this.radiiSquared=new d(t*t,s*s,n*n),this.radiiToTheFourth=new d(t*t*t*t,s*s*s*s,n*n*n*n),this.oneOverRadii=new d(t===0?0:1/t,s===0?0:1/s,n===0?0:1/n),this.oneOverRadiiSquared=new d(t===0?0:1/(t*t),s===0?0:1/(s*s),n===0?0:1/(n*n)),this.minimumRadius=Math.min(t,s,n),this.maximumRadius=Math.max(t,s,n),this.radiiSquared.z!==0&&(this.squaredXOverSquaredZ=this.radiiSquared.x/this.radiiSquared.z),Object.freeze(this)}equals(t){return this===t||Boolean(t&&this.radii.equals(t.radii))}toString(){return this.radii.toString()}cartographicToCartesian(t,s=[0,0,0]){let n=On,r=wo,[,,i]=t;this.geodeticSurfaceNormalCartographic(t,n),r.copy(this.radiiSquared).scale(n);let o=Math.sqrt(n.dot(r));return r.scale(1/o),n.scale(i),r.add(n),r.to(s)}cartesianToCartographic(t,s=[0,0,0]){ie.from(t);let n=this.scaleToGeodeticSurface(ie,H);if(!n)return;let r=this.geodeticSurfaceNormal(n,On),i=Ro;i.copy(ie).subtract(n);let o=Math.atan2(r.y,r.x),c=Math.asin(r.z),a=Math.sign(ut.dot(i,ie))*ut.length(i);return Sn([o,c,a],s)}eastNorthUpToFixedFrame(t,s=new N){return cs(this,"east","north","up",t,s)}localFrameToFixedFrame(t,s,n,r,i=new N){return cs(this,t,s,n,r,i)}geocentricSurfaceNormal(t,s=[0,0,0]){return re.from(t).normalize().to(s)}geodeticSurfaceNormalCartographic(t,s=[0,0,0]){let n=_n(t),r=n[0],i=n[1],o=Math.cos(i);return re.set(o*Math.cos(r),o*Math.sin(r),Math.sin(i)).normalize(),re.to(s)}geodeticSurfaceNormal(t,s=[0,0,0]){return re.from(t).scale(this.oneOverRadiiSquared).normalize().to(s)}scaleToGeodeticSurface(t,s){return Rn(t,this,s)}scaleToGeocentricSurface(t,s=[0,0,0]){H.from(t);let n=H.x,r=H.y,i=H.z,o=this.oneOverRadiiSquared,c=1/Math.sqrt(n*n*o.x+r*r*o.y+i*i*o.z);return H.multiplyScalar(c).to(s)}transformPositionToScaledSpace(t,s=[0,0,0]){return H.from(t).scale(this.oneOverRadii).to(s)}transformPositionFromScaledSpace(t,s=[0,0,0]){return H.from(t).scale(this.radii).to(s)}getSurfaceNormalIntersectionWithZAxis(t,s=0,n=[0,0,0]){U(X(this.radii.x,this.radii.y,st.EPSILON15)),U(this.radii.z>0),H.from(t);let r=H.z*(1-this.squaredXOverSquaredZ);if(!(Math.abs(r)>=this.radii.z-s))return H.set(0,0,r).to(n)}};C.WGS84=new C(6378137,6378137,nt);function Vt(){let e;if(typeof window<"u"&&window.performance)e=window.performance.now();else if(typeof process<"u"&&process.hrtime){let t=process.hrtime();e=t[0]*1e3+t[1]/1e6}else e=Date.now();return e}var xt=class{constructor(t,s){this.sampleSize=1,this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this.name=t,this.type=s,this.reset()}reset(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}setSampleSize(t){return this.sampleSize=t,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(t){return this._count+=t,this._samples++,this._checkSampling(),this}subtractCount(t){return this._count-=t,this._samples++,this._checkSampling(),this}addTime(t){return this._time+=t,this.lastTiming=t,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=Vt(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(Vt()-this._startTime),this._timerPending=!1,this._checkSampling(),this):this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}};var ht=class{constructor(t){this.stats={},this.id=t.id,this.stats={},this._initializeStats(t.stats),Object.seal(this)}get(t,s="count"){return this._getOrCreate({name:t,type:s})}get size(){return Object.keys(this.stats).length}reset(){for(let t of Object.values(this.stats))t.reset();return this}forEach(t){for(let s of Object.values(this.stats))t(s)}getTable(){let t={};return this.forEach(s=>{t[s.name]={time:s.time||0,count:s.count||0,average:s.getAverageTime()||0,hz:s.getHz()||0}}),t}_initializeStats(t=[]){t.forEach(s=>this._getOrCreate(s))}_getOrCreate(t){let{name:s,type:n}=t,r=this.stats[s];return r||(t instanceof xt?r=t:r=new xt(s,n),this.stats[s]=r),r}};function J(e,t){if(!e)throw new Error(t||"loader assertion failed.")}var Oo="Queued Requests",Ao="Active Requests",Co="Cancelled Requests",Po="Queued Requests Ever",No="Active Requests Ever",Lo={id:"request-scheduler",throttleRequests:!0,maxRequests:6,debounceTime:0},wt=class{props;stats;activeRequestCount=0;requestQueue=[];requestMap=new Map;updateTimer=null;constructor(t={}){this.props={...Lo,...t},this.stats=new ht({id:this.props.id}),this.stats.get(Oo),this.stats.get(Ao),this.stats.get(Co),this.stats.get(Po),this.stats.get(No)}setProps(t){t.throttleRequests!==void 0&&(this.props.throttleRequests=t.throttleRequests),t.maxRequests!==void 0&&(this.props.maxRequests=t.maxRequests),t.debounceTime!==void 0&&(this.props.debounceTime=t.debounceTime)}scheduleRequest(t,s=()=>0){if(!this.props.throttleRequests)return Promise.resolve({done:()=>{}});if(this.requestMap.has(t))return this.requestMap.get(t);let n={handle:t,priority:0,getPriority:s},r=new Promise(i=>(n.resolve=i,n));return this.requestQueue.push(n),this.requestMap.set(t,r),this._issueNewRequests(),r}_issueRequest(t){let{handle:s,resolve:n}=t,r=!1,i=()=>{r||(r=!0,this.requestMap.delete(s),this.activeRequestCount--,this.updateTimer===null&&(this.updateTimer=setTimeout(()=>this._issueNewRequestsAsync(),0)))};return this.activeRequestCount++,n?n({done:i}):Promise.resolve({done:i})}_issueNewRequests(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(()=>this._issueNewRequestsAsync(),this.props.debounceTime)}_issueNewRequestsAsync(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=null;let t=Math.max(this.props.maxRequests-this.activeRequestCount,0);if(t!==0){this._updateAllRequests();for(let s=0;s<t;++s){let n=this.requestQueue.shift();n&&this._issueRequest(n)}}}_updateAllRequests(){let t=this.requestQueue;for(let s=0;s<t.length;++s){let n=t[s];this._updateRequest(n)||(t.splice(s,1),this.requestMap.delete(n.handle),s--)}t.sort((s,n)=>s.priority-n.priority)}_updateRequest(t){return t.priority=t.getPriority(t.handle),t.priority<0?(t.resolve(null),!1):!0}};var oe={};Ct(oe,{dirname:()=>qo,filename:()=>Io,join:()=>vo,resolve:()=>bo});function An(){if(typeof process<"u"&&typeof process.cwd<"u")return process.cwd();let e=window.location?.pathname;return e?.slice(0,e.lastIndexOf("/")+1)||""}function Io(e){let t=e?e.lastIndexOf("/"):-1;return t>=0?e.substr(t+1):e}function qo(e){let t=e?e.lastIndexOf("/"):-1;return t>=0?e.substr(0,t):""}function vo(...e){let t="/";return e=e.map((s,n)=>(n&&(s=s.replace(new RegExp(`^${t}`),"")),n!==e.length-1&&(s=s.replace(new RegExp(`${t}$`),"")),s)),e.join(t)}function bo(...e){let t=[];for(let i=0;i<e.length;i++)t[i]=e[i];let s="",n=!1,r;for(let i=t.length-1;i>=-1&&!n;i--){let o;i>=0?o=t[i]:(r===void 0&&(r=An()),o=r),o.length!==0&&(s=`${o}/${s}`,n=o.charCodeAt(0)===Dt)}return s=zo(s,!n),n?`/${s}`:s.length>0?s:"."}var Dt=47,as=46;function zo(e,t){let s="",n=-1,r=0,i,o=!1;for(let c=0;c<=e.length;++c){if(c<e.length)i=e.charCodeAt(c);else{if(i===Dt)break;i=Dt}if(i===Dt){if(!(n===c-1||r===1))if(n!==c-1&&r===2){if(s.length<2||!o||s.charCodeAt(s.length-1)!==as||s.charCodeAt(s.length-2)!==as){if(s.length>2){let a=s.length-1,h=a;for(;h>=0&&s.charCodeAt(h)!==Dt;--h);if(h!==a){s=h===-1?"":s.slice(0,h),n=c,r=0,o=!1;continue}}else if(s.length===2||s.length===1){s="",n=c,r=0,o=!1;continue}}t&&(s.length>0?s+="/..":s="..",o=!0)}else{let a=e.slice(n+1,c);s.length>0?s+=`/${a}`:s=a,o=!1}n=c,r=0}else i===as&&r!==-1?++r:r=-1}return s}var ce=class{item;previous;next;constructor(t,s,n){this.item=t,this.previous=s,this.next=n}};var ae=class{head=null;tail=null;_length=0;get length(){return this._length}add(t){let s=new ce(t,this.tail,null);return this.tail?(this.tail.next=s,this.tail=s):(this.head=s,this.tail=s),++this._length,s}remove(t){t&&(t.previous&&t.next?(t.previous.next=t.next,t.next.previous=t.previous):t.previous?(t.previous.next=null,this.tail=t.previous):t.next?(t.next.previous=null,this.head=t.next):(this.head=null,this.tail=null),t.next=null,t.previous=null,--this._length)}splice(t,s){t!==s&&(this.remove(s),this._insert(t,s))}_insert(t,s){let n=t.next;t.next=s,this.tail===t?this.tail=s:n.previous=s,s.next=n,s.previous=t,++this._length}};var Rt=class{_list;_sentinel;_trimTiles;constructor(){this._list=new ae,this._sentinel=this._list.add("sentinel"),this._trimTiles=!1}reset(){this._list.splice(this._list.tail,this._sentinel)}touch(t){let s=t._cacheNode;s&&this._list.splice(this._sentinel,s)}add(t,s,n){s._cacheNode||(s._cacheNode=this._list.add(s),n&&n(t,s))}unloadTile(t,s,n){let r=s._cacheNode;r&&(this._list.remove(r),s._cacheNode=null,n&&n(t,s))}unloadTiles(t,s){let n=this._trimTiles;this._trimTiles=!1;let r=this._list,i=t.maximumMemoryUsage*1024*1024,o=this._sentinel,c=r.head;for(;c!==o&&(t.gpuMemoryUsageInBytes>i||n);){let a=c.item;c=c.next,this.unloadTile(t,a,s)}}trim(){this._trimTiles=!0}};function he(e,t){J(e),J(t);let{rtcCenter:s,gltfUpAxis:n}=t,{computedTransform:r,boundingVolume:{center:i}}=e,o=new N(r);switch(s&&o.translate(s),n){case"Z":break;case"Y":let m=new N().rotateX(Math.PI/2);o=o.multiplyRight(m);break;case"X":let p=new N().rotateY(-Math.PI/2);o=o.multiplyRight(p);break;default:break}t.isQuantized&&o.translate(t.quantizedVolumeOffset).scale(t.quantizedVolumeScale);let c=new d(i);t.cartesianModelMatrix=o,t.cartesianOrigin=c;let a=C.WGS84.cartesianToCartographic(c,new d),l=C.WGS84.eastNorthUpToFixedFrame(c).invert();t.cartographicModelMatrix=l.multiplyRight(o),t.cartographicOrigin=a;let f=Do(t);f&&(t.cartesianModelMatrix=new N(o).multiplyRight(f.matrix),t.cartographicModelMatrix.multiplyRight(f.matrix),f.matrix=N.IDENTITY),t.coordinateSystem||(t.modelMatrix=t.cartographicModelMatrix)}var Vo=1e6**2;function Do(e){let t=e.gltf;if(!t)return null;let s=typeof t.scene=="number"?t.scene:0,r=t.scenes?.[s]?.nodes?.[0];if(!r?.matrix)return null;let i=r.matrix;return i[12]*i[12]+i[13]*i[13]+i[14]*i[14]<=Vo?null:r}var k={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};var Ph=new d,Nh=new d;var Ut=new d,Cn=new d,Q=class{constructor(t=[0,0,0],s=0){this.radius=-0,this.center=new d,this.fromCenterRadius(t,s)}fromCenterRadius(t,s){return this.center.from(t),this.radius=s,this}fromCornerPoints(t,s){return s=Ut.from(s),this.center=new d().from(t).add(s).scale(.5),this.radius=this.center.distance(s),this}equals(t){return this===t||Boolean(t)&&this.center.equals(t.center)&&this.radius===t.radius}clone(){return new Q(this.center,this.radius)}union(t){let s=this.center,n=this.radius,r=t.center,i=t.radius,o=Ut.copy(r).subtract(s),c=o.magnitude();if(n>=c+i)return this.clone();if(i>=c+n)return t.clone();let a=(n+c+i)*.5;return Cn.copy(o).scale((-n+a)/c).add(s),this.center.copy(Cn),this.radius=a,this}expand(t){let n=Ut.from(t).subtract(this.center).magnitude();return n>this.radius&&(this.radius=n),this}transform(t){this.center.transform(t);let s=vt.getScaling(Ut,t);return this.radius=Math.max(s[0],Math.max(s[1],s[2]))*this.radius,this}distanceSquaredTo(t){let s=this.distanceTo(t);return s*s}distanceTo(t){let n=Ut.from(t).subtract(this.center);return Math.max(0,n.len()-this.radius)}intersectPlane(t){let s=this.center,n=this.radius,i=t.normal.dot(s)+t.distance;return i<-n?k.OUTSIDE:i<n?k.INTERSECTING:k.INSIDE}};var Uo=new d,ko=new d,le=new d,fe=new d,me=new d,Fo=new d,Wo=new d,rt={COLUMN0ROW0:0,COLUMN0ROW1:1,COLUMN0ROW2:2,COLUMN1ROW0:3,COLUMN1ROW1:4,COLUMN1ROW2:5,COLUMN2ROW0:6,COLUMN2ROW1:7,COLUMN2ROW2:8},et=class{constructor(t=[0,0,0],s=[0,0,0,0,0,0,0,0,0]){this.center=new d().from(t),this.halfAxes=new D(s)}get halfSize(){let t=this.halfAxes.getColumn(0),s=this.halfAxes.getColumn(1),n=this.halfAxes.getColumn(2);return[new d(t).len(),new d(s).len(),new d(n).len()]}get quaternion(){let t=this.halfAxes.getColumn(0),s=this.halfAxes.getColumn(1),n=this.halfAxes.getColumn(2),r=new d(t).normalize(),i=new d(s).normalize(),o=new d(n).normalize();return new at().fromMatrix3(new D([...r,...i,...o]))}fromCenterHalfSizeQuaternion(t,s,n){let r=new at(n),i=new D().fromQuaternion(r);return i[0]=i[0]*s[0],i[1]=i[1]*s[0],i[2]=i[2]*s[0],i[3]=i[3]*s[1],i[4]=i[4]*s[1],i[5]=i[5]*s[1],i[6]=i[6]*s[2],i[7]=i[7]*s[2],i[8]=i[8]*s[2],this.center=new d().from(t),this.halfAxes=i,this}clone(){return new et(this.center,this.halfAxes)}equals(t){return this===t||Boolean(t)&&this.center.equals(t.center)&&this.halfAxes.equals(t.halfAxes)}getBoundingSphere(t=new Q){let s=this.halfAxes,n=s.getColumn(0,le),r=s.getColumn(1,fe),i=s.getColumn(2,me),o=Uo.copy(n).add(r).add(i);return t.center.copy(this.center),t.radius=o.magnitude(),t}intersectPlane(t){let s=this.center,n=t.normal,r=this.halfAxes,i=n.x,o=n.y,c=n.z,a=Math.abs(i*r[rt.COLUMN0ROW0]+o*r[rt.COLUMN0ROW1]+c*r[rt.COLUMN0ROW2])+Math.abs(i*r[rt.COLUMN1ROW0]+o*r[rt.COLUMN1ROW1]+c*r[rt.COLUMN1ROW2])+Math.abs(i*r[rt.COLUMN2ROW0]+o*r[rt.COLUMN2ROW1]+c*r[rt.COLUMN2ROW2]),h=n.dot(s)+t.distance;return h<=-a?k.OUTSIDE:h>=a?k.INSIDE:k.INTERSECTING}distanceTo(t){return Math.sqrt(this.distanceSquaredTo(t))}distanceSquaredTo(t){let s=ko.from(t).subtract(this.center),n=this.halfAxes,r=n.getColumn(0,le),i=n.getColumn(1,fe),o=n.getColumn(2,me),c=r.magnitude(),a=i.magnitude(),h=o.magnitude();r.normalize(),i.normalize(),o.normalize();let l=0,f;return f=Math.abs(s.dot(r))-c,f>0&&(l+=f*f),f=Math.abs(s.dot(i))-a,f>0&&(l+=f*f),f=Math.abs(s.dot(o))-h,f>0&&(l+=f*f),l}computePlaneDistances(t,s,n=[-0,-0]){let r=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY,o=this.center,c=this.halfAxes,a=c.getColumn(0,le),h=c.getColumn(1,fe),l=c.getColumn(2,me),f=Fo.copy(a).add(h).add(l).add(o),m=Wo.copy(f).subtract(t),p=s.dot(m);return r=Math.min(p,r),i=Math.max(p,i),f.copy(o).add(a).add(h).subtract(l),m.copy(f).subtract(t),p=s.dot(m),r=Math.min(p,r),i=Math.max(p,i),f.copy(o).add(a).subtract(h).add(l),m.copy(f).subtract(t),p=s.dot(m),r=Math.min(p,r),i=Math.max(p,i),f.copy(o).add(a).subtract(h).subtract(l),m.copy(f).subtract(t),p=s.dot(m),r=Math.min(p,r),i=Math.max(p,i),o.copy(f).subtract(a).add(h).add(l),m.copy(f).subtract(t),p=s.dot(m),r=Math.min(p,r),i=Math.max(p,i),o.copy(f).subtract(a).add(h).subtract(l),m.copy(f).subtract(t),p=s.dot(m),r=Math.min(p,r),i=Math.max(p,i),o.copy(f).subtract(a).subtract(h).add(l),m.copy(f).subtract(t),p=s.dot(m),r=Math.min(p,r),i=Math.max(p,i),o.copy(f).subtract(a).subtract(h).subtract(l),m.copy(f).subtract(t),p=s.dot(m),r=Math.min(p,r),i=Math.max(p,i),n[0]=r,n[1]=i,n}transform(t){this.center.transformAsPoint(t);let s=this.halfAxes.getColumn(0,le);s.transformAsPoint(t);let n=this.halfAxes.getColumn(1,fe);n.transformAsPoint(t);let r=this.halfAxes.getColumn(2,me);return r.transformAsPoint(t),this.halfAxes=new D([...s,...n,...r]),this}getTransform(){throw new Error("not implemented")}};var Pn=new d,Nn=new d,B=class{constructor(t=[0,0,1],s=0){this.normal=new d,this.distance=-0,this.fromNormalDistance(t,s)}fromNormalDistance(t,s){return U(Number.isFinite(s)),this.normal.from(t).normalize(),this.distance=s,this}fromPointNormal(t,s){t=Pn.from(t),this.normal.from(s).normalize();let n=-this.normal.dot(t);return this.distance=n,this}fromCoefficients(t,s,n,r){return this.normal.set(t,s,n),U(X(this.normal.len(),1)),this.distance=r,this}clone(){return new B(this.normal,this.distance)}equals(t){return X(this.distance,t.distance)&&X(this.normal,t.normal)}getPointDistance(t){return this.normal.dot(t)+this.distance}transform(t){let s=Nn.copy(this.normal).transformAsVector(t).normalize(),n=this.normal.scale(-this.distance).transform(t);return this.fromPointNormal(n,s)}projectPointOntoPlane(t,s=[0,0,0]){let n=Pn.from(t),r=this.getPointDistance(n),i=Nn.copy(this.normal).scale(r);return n.subtract(i).to(s)}};var Ln=[new d([1,0,0]),new d([0,1,0]),new d([0,0,1])],In=new d,Bo=new d,F=class{constructor(t=[]){this.planes=t}fromBoundingSphere(t){this.planes.length=2*Ln.length;let s=t.center,n=t.radius,r=0;for(let i of Ln){let o=this.planes[r],c=this.planes[r+1];o||(o=this.planes[r]=new B),c||(c=this.planes[r+1]=new B);let a=In.copy(i).scale(-n).add(s);o.fromPointNormal(a,i);let h=In.copy(i).scale(n).add(s),l=Bo.copy(i).negate();c.fromPointNormal(h,l),r+=2}return this}computeVisibility(t){let s=k.INSIDE;for(let n of this.planes)switch(t.intersectPlane(n)){case k.OUTSIDE:return k.OUTSIDE;case k.INTERSECTING:s=k.INTERSECTING;break;default:}return s}computeVisibilityWithPlaneMask(t,s){if(U(Number.isFinite(s),"parentPlaneMask is required."),s===F.MASK_OUTSIDE||s===F.MASK_INSIDE)return s;let n=F.MASK_INSIDE,r=this.planes;for(let i=0;i<this.planes.length;++i){let o=i<31?1<<i:0;if(i<31&&!(s&o))continue;let c=r[i],a=t.intersectPlane(c);if(a===k.OUTSIDE)return F.MASK_OUTSIDE;a===k.INTERSECTING&&(n|=o)}return n}};F.MASK_OUTSIDE=4294967295;F.MASK_INSIDE=0;F.MASK_INDETERMINATE=2147483647;var jh=new d,Xh=new d,Qh=new d,Kh=new d,Hh=new d;var rl=new d,il=new d,ol=new d,cl=new d,al=new d,hl=new d,ll=new d,fl=new d,ml=new d,pl=new d,dl=new d,ul=new d;var Ml=new D,Tl=new D,yl=new D,_l=new D,Sl=new D;var Cl=new d,Pl=new d,Nl=new d,Ll=new d,Il=new d,ql=new D,vl={diagonal:new D,unitary:new D};var qn=new d,hs=new d,ls=new F([new B,new B,new B,new B,new B,new B]);function de(e,t){let{cameraDirection:s,cameraUp:n,height:r}=e,{metersPerUnit:i}=e.distanceScales,o=pe(e,e.center),c=C.WGS84.eastNorthUpToFixedFrame(o),a=e.unprojectPosition(e.cameraPosition),h=C.WGS84.cartographicToCartesian(a,new d),l=new d(c.transformAsVector(new d(s).scale(i))).normalize(),f=new d(c.transformAsVector(new d(n).scale(i))).normalize();$o(e);let m=e.constructor,{longitude:p,latitude:x,width:g,bearing:u,zoom:M}=e,E=new m({longitude:p,latitude:x,height:r,width:g,bearing:u,zoom:M,pitch:0});return{camera:{position:h,direction:l,up:f},viewport:e,topDownViewport:E,height:r,cullingVolume:ls,frameNumber:t,sseDenominator:1.15}}function bn(e,t,s){if(s===0||e.length<=s)return[e,[]];let n=[],{longitude:r,latitude:i}=t.viewport;for(let[h,l]of e.entries()){let[f,m]=l.header.mbs,p=Math.abs(r-f),x=Math.abs(i-m),g=Math.sqrt(x*x+p*p);n.push([h,g])}let o=n.sort((h,l)=>h[1]-l[1]),c=[];for(let h=0;h<s;h++)c.push(e[o[h][0]]);let a=[];for(let h=s;h<o.length;h++)a.push(e[o[h][0]]);return[c,a]}function $o(e){let t=e.getFrustumPlanes(),s=vn(t.near,e.cameraPosition),n=pe(e,s),r=pe(e,e.cameraPosition,hs),i=0;ls.planes[i++].fromPointNormal(n,qn.copy(n).subtract(r));for(let o in t){if(o==="near")continue;let c=t[o],a=vn(c,s,hs),h=pe(e,a,hs);ls.planes[i++].fromPointNormal(h,qn.copy(n).subtract(h))}}function vn(e,t,s=new d){let n=e.normal.dot(t);return s.copy(e.normal).scale(e.distance-n).add(t),s}function pe(e,t,s=new d){let n=e.unprojectPosition(t);return C.WGS84.cartographicToCartesian(n,s)}var jo=6378137,Xo=6378137,fs=6356752314245179e-9,Ot=new d;function zn(e,t){if(e instanceof et){let{halfAxes:s}=e,n=Qo(s);return Math.log2(fs/(n+t[2]))}else if(e instanceof Q){let{radius:s}=e;return Math.log2(fs/(s+t[2]))}else if(e.width&&e.height){let{width:s,height:n}=e,r=Math.log2(jo/s),i=Math.log2(Xo/n);return(r+i)/2}return 1}function ms(e,t,s){C.WGS84.cartographicToCartesian([e.xmax,e.ymax,e.zmax],Ot);let n=Math.sqrt(Math.pow(Ot[0]-s[0],2)+Math.pow(Ot[1]-s[1],2)+Math.pow(Ot[2]-s[2],2));return Math.log2(fs/(n+t[2]))}function Vn(e,t,s){let[n,r,i,o]=e;return ms({xmin:n,xmax:i,ymin:r,ymax:o,zmin:0,zmax:0},t,s)}function Qo(e){e.getColumn(0,Ot);let t=e.getColumn(1),s=e.getColumn(2);return Ot.add(t).add(s).len()}var Jn=Oe(Zt(),1);var Y={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,EXPIRED:4,FAILED:5},Z;(function(e){e[e.ADD=1]="ADD",e[e.REPLACE=2]="REPLACE"})(Z||(Z={}));var ue;(function(e){e.EMPTY="empty",e.SCENEGRAPH="scenegraph",e.POINTCLOUD="pointcloud",e.MESH="mesh"})(ue||(ue={}));var W;(function(e){e.I3S="I3S",e.TILES3D="TILES3D"})(W||(W={}));var xe;(function(e){e.GEOMETRIC_ERROR="geometricError",e.MAX_SCREEN_THRESHOLD="maxScreenThreshold"})(xe||(xe={}));var Dn={NOT_COMPUTED:-1,USE_OPTIMIZATION:1,SKIP_OPTIMIZATION:0};function Wn(e){return e!=null}var G=new d,ge=new d,Ko=new d,Ho=new d,gt=new d,Un=new d,kn=new d,Fn=new d;function At(e,t,s){if(J(e,"3D Tile: boundingVolume must be defined"),e.box)return Yn(e.box,t,s);if(e.region)return tc(e.region);if(e.sphere)return Jo(e.sphere,t,s);throw new Error("3D Tile: boundingVolume must contain a sphere, region, or box")}function Bn(e,t){if(e.box)return ec(t);if(e.region){let[s,n,r,i,o,c]=e.region;return[[j(s),j(n),o],[j(r),j(i),c]]}if(e.sphere)return sc(t);throw new Error("Unkown boundingVolume type")}function Yn(e,t,s){let n=new d(e[0],e[1],e[2]);t.transform(n,n);let r=[];if(e.length===10){let h=e.slice(3,6),l=new at;l.fromArray(e,6);let f=new d([1,0,0]),m=new d([0,1,0]),p=new d([0,0,1]);f.transformByQuaternion(l),f.scale(h[0]),m.transformByQuaternion(l),m.scale(h[1]),p.transformByQuaternion(l),p.scale(h[2]),r=[...f.toArray(),...m.toArray(),...p.toArray()]}else r=[...e.slice(3,6),...e.slice(6,9),...e.slice(9,12)];let i=t.transformAsVector(r.slice(0,3)),o=t.transformAsVector(r.slice(3,6)),c=t.transformAsVector(r.slice(6,9)),a=new D([i[0],i[1],i[2],o[0],o[1],o[2],c[0],c[1],c[2]]);return Wn(s)?(s.center=n,s.halfAxes=a,s):new et(n,a)}function Jo(e,t,s){let n=new d(e[0],e[1],e[2]);t.transform(n,n);let r=t.getScale(ge),i=Math.max(Math.max(r[0],r[1]),r[2]),o=e[3]*i;return Wn(s)?(s.center=n,s.radius=o,s):new Q(n,o)}function tc(e){let[t,s,n,r,i,o]=e,c=C.WGS84.cartographicToCartesian([j(t),j(r),i],Ko),a=C.WGS84.cartographicToCartesian([j(n),j(s),o],Ho),h=new d().addVectors(c,a).multiplyByScalar(.5);return C.WGS84.cartesianToCartographic(h,gt),C.WGS84.cartographicToCartesian([j(n),gt[1],gt[2]],Un),C.WGS84.cartographicToCartesian([gt[0],j(r),gt[2]],kn),C.WGS84.cartographicToCartesian([gt[0],gt[1],o],Fn),Yn([...h,...Un.subtract(h),...kn.subtract(h),...Fn.subtract(h)],new N)}function ec(e){let t=Gn(),{halfAxes:s}=e,n=new d(s.getColumn(0)),r=new d(s.getColumn(1)),i=new d(s.getColumn(2));for(let o=0;o<2;o++){for(let c=0;c<2;c++){for(let a=0;a<2;a++)G.copy(e.center),G.add(n),G.add(r),G.add(i),Zn(t,G),i.negate();r.negate()}n.negate()}return t}function sc(e){let t=Gn(),{center:s,radius:n}=e,r=C.WGS84.scaleToGeodeticSurface(s,G),i;r?i=C.WGS84.geodeticSurfaceNormal(r):i=new d(0,0,1);let o=new d(i[2],-i[1],0);o.len()>0?o.normalize():o=new d(0,1,0);let c=o.clone().cross(i);for(let a of[o,c,i]){ge.copy(a).scale(n);for(let h=0;h<2;h++)G.copy(s),G.add(ge),Zn(t,G),ge.negate()}return t}function Gn(){return[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]]}function Zn(e,t){C.WGS84.cartesianToCartographic(t,G),e[0][0]=Math.min(e[0][0],G[0]),e[0][1]=Math.min(e[0][1],G[1]),e[0][2]=Math.min(e[0][2],G[2]),e[1][0]=Math.max(e[1][0],G[0]),e[1][1]=Math.max(e[1][1],G[1]),e[1][2]=Math.max(e[1][2],G[2])}var p0=new d,d0=new d,u0=new N,x0=new d,g0=new d,M0=new d;function nc(e,t){let s=e*t;return 1-Math.exp(-(s*s))}function rc(e,t){if(e.dynamicScreenSpaceError&&e.dynamicScreenSpaceErrorComputedDensity){let s=e.dynamicScreenSpaceErrorComputedDensity,n=e.dynamicScreenSpaceErrorFactor;return nc(t,s)*n}return 0}function $n(e,t,s){let n=e.tileset,r=e.parent&&e.parent.lodMetricValue||e.lodMetricValue,i=s?r:e.lodMetricValue;if(i===0)return 0;let o=Math.max(e._distanceToCamera,1e-7),{height:c,sseDenominator:a}=t,{viewDistanceScale:h}=n.options,l=i*c*(h||1)/(o*a);return l-=rc(n,o),l}var ps=new d,jn=new d,lt=new d,Xn=new d,ic=new d,ds=new N,Qn=new N;function Me(e,t){if(e.lodMetricValue===0||isNaN(e.lodMetricValue))return"DIG";let s=2*us(e,t);return s<2?"OUT":!e.header.children||s<=e.lodMetricValue?"DRAW":e.header.children?"DIG":"OUT"}function us(e,t){let{topDownViewport:s}=t,n=e.header.mbs[1],r=e.header.mbs[0],i=e.header.mbs[2],o=e.header.mbs[3],c=[...e.boundingVolume.center],a=s.unprojectPosition(s.cameraPosition);C.WGS84.cartographicToCartesian(a,ps),jn.copy(ps).subtract(c).normalize(),C.WGS84.eastNorthUpToFixedFrame(c,ds),Qn.copy(ds).invert(),lt.copy(ps).transform(Qn);let h=Math.sqrt(lt[0]*lt[0]+lt[1]*lt[1]),l=h*h/lt[2];Xn.copy([lt[0],lt[1],l]);let m=Xn.transform(ds).subtract(c).normalize(),x=jn.cross(m).normalize().scale(o).add(c),g=C.WGS84.cartesianToCartographic(x),u=s.project([r,n,i]),M=s.project(g);return ic.copy(u).subtract(M).magnitude()}function Kn(e){return{assetGltfUpAxis:e.asset&&e.asset.gltfUpAxis||"Y"}}var kt=class{_map=new Map;_array;_length;constructor(t=0){this._array=new Array(t),this._length=t}get length(){return this._length}set length(t){this._length=t,t>this._array.length&&(this._array.length=t)}get values(){return this._array}get(t){return J(t<this._array.length),this._array[t]}set(t,s){J(t>=0),t>=this.length&&(this.length=t+1),this._map.has(this._array[t])&&this._map.delete(this._array[t]),this._array[t]=s,this._map.set(s,t)}delete(t){let s=this._map.get(t);s>=0&&(this._array.splice(s,1),this._map.delete(t),this.length--)}peek(){return this._array[this._length-1]}push(t){if(!this._map.has(t)){let s=this.length++;this._array[s]=t,this._map.set(t,s)}}pop(){let t=this._array[--this.length];return this._map.delete(t),t}reserve(t){J(t>=0),t>this._array.length&&(this._array.length=t)}resize(t){J(t>=0),this.length=t}trim(t){t==null&&(t=this.length),this._array.length=t}reset(){this._array=[],this._map=new Map,this._length=0}find(t){return this._map.has(t)}};var oc={loadSiblings:!1,skipLevelOfDetail:!1,updateTransforms:!0,onTraversalEnd:()=>{},viewportTraversersMap:{},basePath:""},K=class{options;root=null;selectedTiles={};requestedTiles={};emptyTiles={};lastUpdate=new Date().getTime();updateDebounceTime=1e3;_traversalStack=new kt;_emptyTraversalStack=new kt;_frameNumber=null;traversalFinished(t){return!0}constructor(t){this.options={...oc,...t}}traverse(t,s,n){this.root=t,this.options={...this.options,...n},this.reset(),this.updateTile(t,s),this._frameNumber=s.frameNumber,this.executeTraversal(t,s)}reset(){this.requestedTiles={},this.selectedTiles={},this.emptyTiles={},this._traversalStack.reset(),this._emptyTraversalStack.reset()}executeTraversal(t,s){let n=this._traversalStack;for(t._selectionDepth=1,n.push(t);n.length>0;){let i=n.pop(),o=!1;this.canTraverse(i,s)&&(this.updateChildTiles(i,s),o=this.updateAndPushChildren(i,s,n,i.hasRenderContent?i._selectionDepth+1:i._selectionDepth));let c=i.parent,a=Boolean(!c||c._shouldRefine),h=!o;i.hasRenderContent?i.refine===Z.ADD?(this.loadTile(i,s),this.selectTile(i,s)):i.refine===Z.REPLACE&&(this.loadTile(i,s),h&&this.selectTile(i,s)):(this.emptyTiles[i.id]=i,this.loadTile(i,s),h&&this.selectTile(i,s)),this.touchTile(i,s),i._shouldRefine=o&&a}let r=new Date().getTime();(this.traversalFinished(s)||r-this.lastUpdate>this.updateDebounceTime)&&(this.lastUpdate=r,this.options.onTraversalEnd(s))}updateChildTiles(t,s){let n=t.children;for(let r of n)this.updateTile(r,s)}updateAndPushChildren(t,s,n,r){let{loadSiblings:i,skipLevelOfDetail:o}=this.options,c=t.children;c.sort(this.compareDistanceToCamera.bind(this));let a=t.refine===Z.REPLACE&&t.hasRenderContent&&!o,h=!1,l=!0;for(let f of c)if(f._selectionDepth=r,f.isVisibleAndInRequestVolume?(n.find(f)&&n.delete(f),n.push(f),h=!0):(a||i)&&(this.loadTile(f,s),this.touchTile(f,s)),a){let m;if(f._inRequestVolume?f.hasRenderContent?m=f.contentAvailable:m=this.executeEmptyTraversal(f,s):m=!1,l=l&&m,!l)return!1}return h||(l=!1),l}updateTile(t,s){this.updateTileVisibility(t,s)}selectTile(t,s){this.shouldSelectTile(t)&&(t._selectedFrame=s.frameNumber,this.selectedTiles[t.id]=t)}loadTile(t,s){this.shouldLoadTile(t)&&(t._requestedFrame=s.frameNumber,t._priority=t._getPriority(),this.requestedTiles[t.id]=t)}touchTile(t,s){t.tileset._cache.touch(t),t._touchedFrame=s.frameNumber}canTraverse(t,s){return t.hasChildren?t.hasTilesetContent?!t.contentExpired:this.shouldRefine(t,s):!1}shouldLoadTile(t){return t.hasUnloadedContent||t.contentExpired}shouldSelectTile(t){return t.contentAvailable&&!this.options.skipLevelOfDetail}shouldRefine(t,s,n=!1){let r=t._screenSpaceError;return n&&(r=t.getScreenSpaceError(s,!0)),r>t.tileset.memoryAdjustedScreenSpaceError}updateTileVisibility(t,s){let n=[];if(this.options.viewportTraversersMap)for(let r in this.options.viewportTraversersMap)this.options.viewportTraversersMap[r]===s.viewport.id&&n.push(r);else n.push(s.viewport.id);t.updateVisibility(s,n)}compareDistanceToCamera(t,s){return t._distanceToCamera-s._distanceToCamera}anyChildrenVisible(t,s){let n=!1;for(let r of t.children)r.updateVisibility(s),n=n||r.isVisibleAndInRequestVolume;return n}executeEmptyTraversal(t,s){let n=!0,r=this._emptyTraversalStack;for(r.push(t);r.length>0;){let i=r.pop(),o=!i.hasRenderContent&&this.canTraverse(i,s),c=!i.hasRenderContent&&i.children.length===0;if(!o&&!i.contentAvailable&&!c&&(n=!1),this.updateTile(i,s),i.isVisibleAndInRequestVolume||(this.loadTile(i,s),this.touchTile(i,s)),o){let a=i.children;for(let h of a)r.push(h)}}return t.hasEmptyContent||n}};var Hn=new d;function cc(e){return e!=null}var it=class{tileset;header;id;url;parent;refine;type;contentUrl;lodMetricType="geometricError";lodMetricValue=0;boundingVolume=null;content=null;contentState=Y.UNLOADED;gpuMemoryUsageInBytes=0;children=[];depth=0;viewportIds=[];transform=new N;extensions=null;implicitTiling=null;userData={};computedTransform;hasEmptyContent=!1;hasTilesetContent=!1;traverser=new K({});_cacheNode=null;_frameNumber=null;_expireDate=null;_expiredContent=null;_boundingBox=void 0;_distanceToCamera=0;_screenSpaceError=0;_visibilityPlaneMask;_visible=void 0;_contentBoundingVolume;_viewerRequestVolume;_initialTransform=new N;_priority=0;_selectedFrame=0;_requestedFrame=0;_selectionDepth=0;_touchedFrame=0;_centerZDepth=0;_shouldRefine=!1;_stackLength=0;_visitedFrame=0;_inRequestVolume=!1;_lodJudge=null;tileDrawn=!0;constructor(t,s,n,r=""){this.header=s,this.tileset=t,this.id=r||s.id,this.url=s.url,this.parent=n,this.refine=this._getRefine(s.refine),this.type=s.type,this.contentUrl=s.contentUrl,this._initializeLodMetric(s),this._initializeTransforms(s),this._initializeBoundingVolumes(s),this._initializeContent(s),this._initializeRenderingState(s),Object.seal(this)}destroy(){this.header=null}isDestroyed(){return this.header===null}get selected(){return this._selectedFrame===this.tileset._frameNumber}get isVisible(){return this._visible}get isVisibleAndInRequestVolume(){return this._visible&&this._inRequestVolume}get hasRenderContent(){return!this.hasEmptyContent&&!this.hasTilesetContent}get hasChildren(){return this.children.length>0||this.header.children&&this.header.children.length>0}get contentReady(){return this.contentState===Y.READY||this.hasEmptyContent}get contentAvailable(){return Boolean(this.contentReady&&this.hasRenderContent||this._expiredContent&&!this.contentFailed)}get hasUnloadedContent(){return this.hasRenderContent&&this.contentUnloaded}get contentUnloaded(){return this.contentState===Y.UNLOADED}get contentExpired(){return this.contentState===Y.EXPIRED}get contentFailed(){return this.contentState===Y.FAILED}get distanceToCamera(){return this._distanceToCamera}get screenSpaceError(){return this._screenSpaceError}get boundingBox(){return this._boundingBox||(this._boundingBox=Bn(this.header.boundingVolume,this.boundingVolume)),this._boundingBox}getScreenSpaceError(t,s){switch(this.tileset.type){case W.I3S:return us(this,t);case W.TILES3D:return $n(this,t,s);default:throw new Error("Unsupported tileset type")}}unselect(){this._selectedFrame=0}_getGpuMemoryUsageInBytes(){return this.content.gpuMemoryUsageInBytes||this.content.byteLength||0}_getPriority(){let t=this.tileset._traverser,{skipLevelOfDetail:s}=t.options,n=this.refine===Z.ADD||s;if(n&&!this.isVisible&&this._visible!==void 0||this.tileset._frameNumber-this._touchedFrame>=1||this.contentState===Y.UNLOADED)return-1;let r=this.parent,o=r&&(!n||this._screenSpaceError===0||r.hasTilesetContent)?r._screenSpaceError:this._screenSpaceError,c=t.root?t.root._screenSpaceError:0;return Math.max(c-o,0)}async loadContent(){if(this.hasEmptyContent)return!1;if(this.content)return!0;this.contentExpired&&(this._expireDate=null),this.contentState=Y.LOADING;let s=await this.tileset._requestScheduler.scheduleRequest(this.id,this._getPriority.bind(this));if(!s)return this.contentState=Y.UNLOADED,!1;try{let n=this.tileset.getTileUrl(this.contentUrl),r=this.tileset.loader,i=this.tileset.loadOptions[r.id]||{},o={...this.tileset.loadOptions,[r.id]:{...i,isTileset:this.type==="json",...this._getLoaderSpecificOptions(r.id)}};return this.content=await(0,Jn.load)(n,r,o),this.tileset.options.contentLoader&&await this.tileset.options.contentLoader(this),this._isTileset()&&this.tileset._initializeTileHeaders(this.content,this),this.contentState=Y.READY,this._onContentLoaded(),!0}catch(n){throw this.contentState=Y.FAILED,n}finally{s.done()}}unloadContent(){return this.content&&this.content.destroy&&this.content.destroy(),this.content=null,this.header.content&&this.header.content.destroy&&this.header.content.destroy(),this.header.content=null,this.contentState=Y.UNLOADED,this.tileDrawn=!0,!0}updateVisibility(t,s){if(this._frameNumber===t.frameNumber)return;let n=this.parent,r=n?n._visibilityPlaneMask:F.MASK_INDETERMINATE;if(this.tileset._traverser.options.updateTransforms){let i=n?n.computedTransform:this.tileset.modelMatrix;this._updateTransform(i)}this._distanceToCamera=this.distanceToTile(t),this._screenSpaceError=this.getScreenSpaceError(t,!1),this._visibilityPlaneMask=this.visibility(t,r),this._visible=this._visibilityPlaneMask!==F.MASK_OUTSIDE,this._inRequestVolume=this.insideViewerRequestVolume(t),this._frameNumber=t.frameNumber,this.viewportIds=s}visibility(t,s){let{cullingVolume:n}=t,{boundingVolume:r}=this;return n.computeVisibilityWithPlaneMask(r,s)}contentVisibility(){return!0}distanceToTile(t){let s=this.boundingVolume;return Math.sqrt(Math.max(s.distanceSquaredTo(t.camera.position),0))}cameraSpaceZDepth({camera:t}){let s=this.boundingVolume;return Hn.subVectors(s.center,t.position),t.direction.dot(Hn)}insideViewerRequestVolume(t){let s=this._viewerRequestVolume;return!s||s.distanceSquaredTo(t.camera.position)<=0}updateExpiration(){if(cc(this._expireDate)&&this.contentReady&&!this.hasEmptyContent){let t=Date.now();Date.lessThan(this._expireDate,t)&&(this.contentState=Y.EXPIRED,this._expiredContent=this.content)}}get extras(){return this.header.extras}_initializeLodMetric(t){"lodMetricType"in t?this.lodMetricType=t.lodMetricType:(this.lodMetricType=this.parent&&this.parent.lodMetricType||this.tileset.lodMetricType,console.warn("3D Tile: Required prop lodMetricType is undefined. Using parent lodMetricType")),"lodMetricValue"in t?this.lodMetricValue=t.lodMetricValue:(this.lodMetricValue=this.parent&&this.parent.lodMetricValue||this.tileset.lodMetricValue,console.warn("3D Tile: Required prop lodMetricValue is undefined. Using parent lodMetricValue"))}_initializeTransforms(t){this.transform=t.transform?new N(t.transform):new N;let s=this.parent,n=this.tileset,r=s&&s.computedTransform?s.computedTransform.clone():n.modelMatrix.clone();this.computedTransform=new N(r).multiplyRight(this.transform);let i=s&&s._initialTransform?s._initialTransform.clone():new N;this._initialTransform=new N(i).multiplyRight(this.transform)}_initializeBoundingVolumes(t){this._contentBoundingVolume=null,this._viewerRequestVolume=null,this._updateBoundingVolume(t)}_initializeContent(t){this.content={_tileset:this.tileset,_tile:this},this.hasEmptyContent=!0,this.contentState=Y.UNLOADED,this.hasTilesetContent=!1,t.contentUrl&&(this.content=null,this.hasEmptyContent=!1)}_initializeRenderingState(t){this.depth=t.level||(this.parent?this.parent.depth+1:0),this._shouldRefine=!1,this._distanceToCamera=0,this._centerZDepth=0,this._screenSpaceError=0,this._visibilityPlaneMask=F.MASK_INDETERMINATE,this._visible=void 0,this._inRequestVolume=!1,this._stackLength=0,this._selectionDepth=0,this._frameNumber=0,this._touchedFrame=0,this._visitedFrame=0,this._selectedFrame=0,this._requestedFrame=0,this._priority=0}_getRefine(t){return t||this.parent&&this.parent.refine||Z.REPLACE}_isTileset(){return this.contentUrl.indexOf(".json")!==-1}_onContentLoaded(){switch(this.content&&this.content.type){case"vctr":case"geom":this.tileset._traverser.disableSkipLevelOfDetail=!0;break;default:}this._isTileset()?this.hasTilesetContent=!0:this.gpuMemoryUsageInBytes=this._getGpuMemoryUsageInBytes()}_updateBoundingVolume(t){this.boundingVolume=At(t.boundingVolume,this.computedTransform,this.boundingVolume);let s=t.content;s&&(s.boundingVolume&&(this._contentBoundingVolume=At(s.boundingVolume,this.computedTransform,this._contentBoundingVolume)),t.viewerRequestVolume&&(this._viewerRequestVolume=At(t.viewerRequestVolume,this.computedTransform,this._viewerRequestVolume)))}_updateTransform(t=new N){let s=t.clone().multiplyRight(this.transform);s.equals(this.computedTransform)||(this.computedTransform=s,this._updateBoundingVolume(this.header))}_getLoaderSpecificOptions(t){switch(t){case"i3s":return{...this.tileset.options.i3s,_tileOptions:{attributeUrls:this.header.attributeUrls,textureUrl:this.header.textureUrl,textureFormat:this.header.textureFormat,textureLoaderOptions:this.header.textureLoaderOptions,materialDefinition:this.header.materialDefinition,isDracoGeometry:this.header.isDracoGeometry,mbs:this.header.mbs},_tilesetOptions:{store:this.tileset.tileset.store,attributeStorageInfo:this.tileset.tileset.attributeStorageInfo,fields:this.tileset.tileset.fields},isTileHeader:!1};case"3d-tiles":case"cesium-ion":default:return Kn(this.tileset.tileset)}}};var Te=class extends K{compareDistanceToCamera(t,s){return s._distanceToCamera===0&&t._distanceToCamera===0?s._centerZDepth-t._centerZDepth:s._distanceToCamera-t._distanceToCamera}updateTileVisibility(t,s){if(super.updateTileVisibility(t,s),!t.isVisibleAndInRequestVolume)return;let n=t.children.length>0;if(t.hasTilesetContent&&n){let o=t.children[0];this.updateTileVisibility(o,s),t._visible=o._visible;return}if(this.meetsScreenSpaceErrorEarly(t,s)){t._visible=!1;return}let r=t.refine===Z.REPLACE,i=t._optimChildrenWithinParent===Dn.USE_OPTIMIZATION;if(r&&i&&n&&!this.anyChildrenVisible(t,s)){t._visible=!1;return}}meetsScreenSpaceErrorEarly(t,s){let{parent:n}=t;return!n||n.hasTilesetContent||n.refine!==Z.ADD?!1:!this.shouldRefine(t,s,!0)}};var tr=Oe(Zt(),1);var ye=class{frameNumberMap=new Map;register(t,s){let n=this.frameNumberMap.get(t)||new Map,r=n.get(s)||0;n.set(s,r+1),this.frameNumberMap.set(t,n)}deregister(t,s){let n=this.frameNumberMap.get(t);if(!n)return;let r=n.get(s)||1;n.set(s,r-1)}isZero(t,s){return(this.frameNumberMap.get(t)?.get(s)||0)===0}};var xs={REQUESTED:"REQUESTED",COMPLETED:"COMPLETED",ERROR:"ERROR"},_e=class{_statusMap;pendingTilesRegister=new ye;constructor(){this._statusMap={}}add(t,s,n,r){if(!this._statusMap[s]){let{frameNumber:i,viewport:{id:o}}=r;this._statusMap[s]={request:t,callback:n,key:s,frameState:r,status:xs.REQUESTED},this.pendingTilesRegister.register(o,i),t().then(c=>{this._statusMap[s].status=xs.COMPLETED;let{frameNumber:a,viewport:{id:h}}=this._statusMap[s].frameState;this.pendingTilesRegister.deregister(h,a),this._statusMap[s].callback(c,r)}).catch(c=>{this._statusMap[s].status=xs.ERROR;let{frameNumber:a,viewport:{id:h}}=this._statusMap[s].frameState;this.pendingTilesRegister.deregister(h,a),n(c)})}}update(t,s){if(this._statusMap[t]){let{frameNumber:n,viewport:{id:r}}=this._statusMap[t].frameState;this.pendingTilesRegister.deregister(r,n);let{frameNumber:i,viewport:{id:o}}=s;this.pendingTilesRegister.register(o,i),this._statusMap[t].frameState=s}}find(t){return this._statusMap[t]}hasPendingTiles(t,s){return!this.pendingTilesRegister.isZero(t,s)}};var Se=class extends K{_tileManager;constructor(t){super(t),this._tileManager=new _e}traversalFinished(t){return!this._tileManager.hasPendingTiles(t.viewport.id,this._frameNumber||0)}shouldRefine(t,s){return t._lodJudge=Me(t,s),t._lodJudge==="DIG"}updateChildTiles(t,s){let n=t.header.children||[],r=t.children,i=t.tileset;for(let o of n){let c=`${o.id}-${s.viewport.id}`,a=r&&r.find(h=>h.id===c);if(a)a&&this.updateTile(a,s);else{let h=()=>this._loadTile(o.id,i);this._tileManager.find(c)?this._tileManager.update(c,s):(i.tileset.nodePages&&(h=()=>i.tileset.nodePagesTile.formTileFromNodePages(o.id)),this._tileManager.add(h,c,f=>this._onTileLoad(f,t,c),s))}}return!1}async _loadTile(t,s){let{loader:n}=s,r=s.getTileUrl(`${s.url}/nodes/${t}`),i={...s.loadOptions,i3s:{...s.loadOptions.i3s,isTileHeader:!0}};return await(0,tr.load)(r,n,i)}_onTileLoad(t,s,n){let r=new it(s.tileset,t,s,n);s.children.push(r);let i=this._tileManager.find(r.id).frameState;this.updateTile(r,i),this._frameNumber===i.frameNumber&&(this.traversalFinished(i)||new Date().getTime()-this.lastUpdate>this.updateDebounceTime)&&this.executeTraversal(r,i)}};var ac={description:"",ellipsoid:C.WGS84,modelMatrix:new N,throttleRequests:!0,maxRequests:64,maximumMemoryUsage:32,memoryCacheOverflow:1,maximumTilesSelected:0,debounceTime:0,onTileLoad:()=>{},onTileUnload:()=>{},onTileError:()=>{},onTraversalComplete:e=>e,onUpdate:()=>{},contentLoader:void 0,viewDistanceScale:1,maximumScreenSpaceError:8,memoryAdjustedScreenSpaceError:!1,loadTiles:!0,updateTransforms:!0,viewportTraversersMap:null,loadOptions:{fetch:{}},attributions:[],basePath:"",i3s:{}},Ee="Tiles In Tileset(s)",gs="Tiles In Memory",er="Tiles In View",sr="Tiles To Render",nr="Tiles Loaded",Ms="Tiles Loading",rr="Tiles Unloaded",ir="Failed Tile Loads",or="Points/Vertices",Ts="Tile Memory Use",cr="Maximum Screen Space Error",we=class{options;loadOptions;type;tileset;loader;url;basePath;modelMatrix;ellipsoid;lodMetricType;lodMetricValue;refine;root=null;roots={};asset={};description="";properties;extras=null;attributions={};credits={};stats;contentFormats={draco:!1,meshopt:!1,dds:!1,ktx2:!1};cartographicCenter=null;cartesianCenter=null;zoom=1;boundingVolume=null;dynamicScreenSpaceErrorComputedDensity=0;maximumMemoryUsage=32;gpuMemoryUsageInBytes=0;memoryAdjustedScreenSpaceError=0;_cacheBytes=0;_cacheOverflowBytes=0;_frameNumber=0;_queryParams={};_extensionsUsed=[];_tiles={};_pendingCount=0;selectedTiles=[];traverseCounter=0;geometricError=0;lastUpdatedVieports=null;_requestedTiles=[];_emptyTiles=[];frameStateData={};_traverser;_cache=new Rt;_requestScheduler;_heldTiles=new Set;updatePromise=null;tilesetInitializationPromise;constructor(t,s){this.options={...ac,...s},this.tileset=t,this.loader=t.loader,this.type=t.type,this.url=t.url,this.basePath=t.basePath||oe.dirname(this.url),this.modelMatrix=this.options.modelMatrix,this.ellipsoid=this.options.ellipsoid,this.lodMetricType=t.lodMetricType,this.lodMetricValue=t.lodMetricValue,this.refine=t.root.refine,this.loadOptions=this.options.loadOptions||{},this._traverser=this._initializeTraverser(),this._requestScheduler=new wt({throttleRequests:this.options.throttleRequests,maxRequests:this.options.maxRequests}),this.memoryAdjustedScreenSpaceError=this.options.maximumScreenSpaceError,this._cacheBytes=this.options.maximumMemoryUsage*1024*1024,this._cacheOverflowBytes=this.options.memoryCacheOverflow*1024*1024,this.stats=new ht({id:this.url}),this._initializeStats(),this.tilesetInitializationPromise=this._initializeTileSet(t)}destroy(){this._destroy()}isLoaded(){return this._pendingCount===0&&this._frameNumber!==0&&this._requestedTiles.length===0}get tiles(){return Object.values(this._tiles)}get frameNumber(){return this._frameNumber}get queryParams(){return new URLSearchParams(this._queryParams).toString()}setProps(t){this.options={...this.options,...t}}getTileUrl(t){if(t.startsWith("data:"))return t;let n=t;return this.queryParams.length&&(n=`${t}${t.includes("?")?"&":"?"}${this.queryParams}`),n}hasExtension(t){return Boolean(this._extensionsUsed.indexOf(t)>-1)}update(t=null){this.tilesetInitializationPromise.then(()=>{!t&&this.lastUpdatedVieports?t=this.lastUpdatedVieports:this.lastUpdatedVieports=t,t&&this.doUpdate(t)})}async selectTiles(t=null){return await this.tilesetInitializationPromise,t&&(this.lastUpdatedVieports=t),this.updatePromise||(this.updatePromise=new Promise(s=>{setTimeout(()=>{this.lastUpdatedVieports&&this.doUpdate(this.lastUpdatedVieports),s(this._frameNumber),this.updatePromise=null},this.options.debounceTime)})),this.updatePromise}adjustScreenSpaceError(){this.gpuMemoryUsageInBytes<this._cacheBytes?this.memoryAdjustedScreenSpaceError=Math.max(this.memoryAdjustedScreenSpaceError/1.02,this.options.maximumScreenSpaceError):this.gpuMemoryUsageInBytes>this._cacheBytes+this._cacheOverflowBytes&&(this.memoryAdjustedScreenSpaceError*=1.02)}doUpdate(t){if("loadTiles"in this.options&&!this.options.loadTiles||this.traverseCounter>0)return;let s=t instanceof Array?t:[t];this._cache.reset(),this._frameNumber++,this.traverseCounter=s.length;let n=[];for(let r of s){let i=r.id;this._needTraverse(i)?n.push(i):this.traverseCounter--}for(let r of s){let i=r.id;if(this.roots[i]||(this.roots[i]=this._initializeTileHeaders(this.tileset,null)),!n.includes(i))continue;let o=de(r,this._frameNumber);this._traverser.traverse(this.roots[i],o,this.options)}}_needTraverse(t){let s=t;return this.options.viewportTraversersMap&&(s=this.options.viewportTraversersMap[t]),s===t}_onTraversalEnd(t){let s=t.viewport.id;this.frameStateData[s]||(this.frameStateData[s]={selectedTiles:[],_requestedTiles:[],_emptyTiles:[]});let n=this.frameStateData[s],r=Object.values(this._traverser.selectedTiles),[i,o]=bn(r,t,this.options.maximumTilesSelected);n.selectedTiles=i;for(let c of o)c.unselect();n._requestedTiles=Object.values(this._traverser.requestedTiles),n._emptyTiles=Object.values(this._traverser.emptyTiles),this.traverseCounter--,!(this.traverseCounter>0)&&this._updateTiles()}_updateTiles(){let t=this.selectedTiles;this.selectedTiles=[],this._requestedTiles=[],this._emptyTiles=[];for(let i in this.frameStateData){let o=this.frameStateData[i];this.selectedTiles=this.selectedTiles.concat(o.selectedTiles),this._requestedTiles=this._requestedTiles.concat(o._requestedTiles),this._emptyTiles=this._emptyTiles.concat(o._emptyTiles)}this.selectedTiles=this.options.onTraversalComplete(this.selectedTiles);let s=new Set(this.selectedTiles.map(i=>i.id)),n=this.selectedTiles.some(i=>!i.tileDrawn),r=0;if(n){for(let i of s)this._heldTiles.add(i);for(let i of this._heldTiles){if(s.has(i))continue;let o=this._tiles[i];o&&o.contentAvailable?(o._selectedFrame=this._frameNumber,this.selectedTiles.push(o),r++):this._heldTiles.delete(i)}}else this._heldTiles=s;r>0&&setTimeout(()=>{this.selectTiles()},0);for(let i of this.selectedTiles)this._tiles[i.id]=i;this._loadTiles(),this._unloadTiles(),this._updateStats(),this._tilesChanged(t,this.selectedTiles)&&this.options.onUpdate()}_tilesChanged(t,s){if(t.length!==s.length)return!0;let n=new Set(t.map(o=>o.id)),r=new Set(s.map(o=>o.id)),i=t.filter(o=>!r.has(o.id)).length>0;return i=i||s.filter(o=>!n.has(o.id)).length>0,i}_loadTiles(){this._requestedTiles.sort((t,s)=>t._priority-s._priority);for(let t of this._requestedTiles)t.contentUnloaded&&this._loadTile(t)}_unloadTiles(){this._cache.unloadTiles(this,(t,s)=>t._unloadTile(s))}_updateStats(){let t=0,s=0;for(let n of this.selectedTiles)n.contentAvailable&&n.content&&(t++,n.content.pointCount?s+=n.content.pointCount:s+=n.content.vertexCount);this.stats.get(er).count=this.selectedTiles.length,this.stats.get(sr).count=t,this.stats.get(or).count=s,this.stats.get(cr).count=this.memoryAdjustedScreenSpaceError}async _initializeTileSet(t){this.type===W.I3S&&(this.calculateViewPropsI3S(),t.root=await t.root),this.root=this._initializeTileHeaders(t,null),this.type===W.TILES3D&&(this._initializeTiles3DTileset(t),this.calculateViewPropsTiles3D()),this.type===W.I3S&&this._initializeI3STileset()}calculateViewPropsI3S(){let t=this.tileset.fullExtent;if(t){let{xmin:n,xmax:r,ymin:i,ymax:o,zmin:c,zmax:a}=t;this.cartographicCenter=new d(n+(r-n)/2,i+(o-i)/2,c+(a-c)/2),this.cartesianCenter=new d,C.WGS84.cartographicToCartesian(this.cartographicCenter,this.cartesianCenter),this.zoom=ms(t,this.cartographicCenter,this.cartesianCenter);return}let s=this.tileset.store?.extent;if(s){let[n,r,i,o]=s;this.cartographicCenter=new d(n+(i-n)/2,r+(o-r)/2,0),this.cartesianCenter=new d,C.WGS84.cartographicToCartesian(this.cartographicCenter,this.cartesianCenter),this.zoom=Vn(s,this.cartographicCenter,this.cartesianCenter);return}console.warn("Extent is not defined in the tileset header"),this.cartographicCenter=new d,this.zoom=1}calculateViewPropsTiles3D(){let t=this.root,{center:s}=t.boundingVolume;if(!s){console.warn("center was not pre-calculated for the root tile"),this.cartographicCenter=new d,this.zoom=1;return}s[0]!==0||s[1]!==0||s[2]!==0?(this.cartographicCenter=new d,C.WGS84.cartesianToCartographic(s,this.cartographicCenter)):this.cartographicCenter=new d(0,0,-C.WGS84.radii[0]),this.cartesianCenter=s,this.zoom=zn(t.boundingVolume,this.cartographicCenter)}_initializeStats(){this.stats.get(Ee),this.stats.get(Ms),this.stats.get(gs),this.stats.get(er),this.stats.get(sr),this.stats.get(nr),this.stats.get(rr),this.stats.get(ir),this.stats.get(or),this.stats.get(Ts,"memory"),this.stats.get(cr)}_initializeTileHeaders(t,s){let n=new it(this,t.root,s);if(s&&(s.children.push(n),n.depth=s.depth+1),this.type===W.TILES3D){let r=[];for(r.push(n);r.length>0;){let i=r.pop();this.stats.get(Ee).incrementCount();let o=i.header.children||[];for(let c of o){let a=new it(this,c,i);if(a.contentUrl?.includes("?session=")){let l=new URL(a.contentUrl).searchParams.get("session");l&&(this._queryParams.session=l)}i.children.push(a),a.depth=i.depth+1,r.push(a)}}}return n}_initializeTraverser(){let t;switch(this.type){case W.TILES3D:t=Te;break;case W.I3S:t=Se;break;default:t=K}return new t({basePath:this.basePath,onTraversalEnd:this._onTraversalEnd.bind(this)})}_destroyTileHeaders(t){this._destroySubtree(t)}async _loadTile(t){let s;try{this._onStartTileLoading(),s=await t.loadContent()}catch(n){this._onTileLoadError(t,n instanceof Error?n:new Error("load failed"))}finally{this._onEndTileLoading(),this._onTileLoad(t,s)}}_onTileLoadError(t,s){this.stats.get(ir).incrementCount();let n=s.message||s.toString(),r=t.url;console.error(`A 3D tile failed to load: ${t.url} ${n}`),this.options.onTileError(t,n,r)}_onTileLoad(t,s){if(s){if(this.type===W.I3S){let n=this.tileset?.nodePagesTile?.nodesInNodePages||0;this.stats.get(Ee).reset(),this.stats.get(Ee).addCount(n)}t&&t.content&&he(t,t.content),this.updateContentTypes(t),this._addTileToCache(t),this.options.onTileLoad(t)}}updateContentTypes(t){if(this.type===W.I3S)switch(t.header.isDracoGeometry&&(this.contentFormats.draco=!0),t.header.textureFormat){case"dds":this.contentFormats.dds=!0;break;case"ktx2":this.contentFormats.ktx2=!0;break;default:}else if(this.type===W.TILES3D){let{extensionsRemoved:s=[]}=t.content?.gltf||{};s.includes("KHR_draco_mesh_compression")&&(this.contentFormats.draco=!0),s.includes("EXT_meshopt_compression")&&(this.contentFormats.meshopt=!0),s.includes("KHR_texture_basisu")&&(this.contentFormats.ktx2=!0)}}_onStartTileLoading(){this._pendingCount++,this.stats.get(Ms).incrementCount()}_onEndTileLoading(){this._pendingCount--,this.stats.get(Ms).decrementCount()}_addTileToCache(t){this._cache.add(this,t,s=>s._updateCacheStats(t))}_updateCacheStats(t){this.stats.get(nr).incrementCount(),this.stats.get(gs).incrementCount(),this.gpuMemoryUsageInBytes+=t.gpuMemoryUsageInBytes||0,this.stats.get(Ts).count=this.gpuMemoryUsageInBytes,this.options.memoryAdjustedScreenSpaceError&&this.adjustScreenSpaceError()}_unloadTile(t){this.gpuMemoryUsageInBytes-=t.gpuMemoryUsageInBytes||0,this.stats.get(gs).decrementCount(),this.stats.get(rr).incrementCount(),this.stats.get(Ts).count=this.gpuMemoryUsageInBytes,this.options.onTileUnload(t),t.unloadContent()}_destroy(){let t=[];for(this.root&&t.push(this.root);t.length>0;){let s=t.pop();for(let n of s.children)t.push(n);this._destroyTile(s)}this.root=null}_destroySubtree(t){let s=t,n=[];for(n.push(s);n.length>0;){t=n.pop();for(let r of t.children)n.push(r);t!==s&&this._destroyTile(t)}s.children=[]}_destroyTile(t){this._cache.unloadTile(this,t),this._unloadTile(t),t.destroy()}_initializeTiles3DTileset(t){if(t.queryString){let s=new URLSearchParams(t.queryString),n=Object.fromEntries(s.entries());this._queryParams={...this._queryParams,...n}}if(this.asset=t.asset,!this.asset)throw new Error("Tileset must have an asset property.");if(this.asset.version!=="0.0"&&this.asset.version!=="1.0"&&this.asset.version!=="1.1")throw new Error("The tileset must be 3D Tiles version either 0.0 or 1.0 or 1.1.");"tilesetVersion"in this.asset&&(this._queryParams.v=this.asset.tilesetVersion),this.credits={attributions:this.options.attributions||[]},this.description=this.options.description||"",this.properties=t.properties,this.geometricError=t.geometricError,this._extensionsUsed=t.extensionsUsed||[],this.extras=t.extras}_initializeI3STileset(){let t=this.loadOptions.i3s;t&&typeof t=="object"&&"token"in t&&(this._queryParams.token=t.token)}};return dr(Ft);})();
|
|
7
|
+
"use strict";var __exports__=(()=>{var dd=Object.create;var pn=Object.defineProperty;var md=Object.getOwnPropertyDescriptor;var pd=Object.getOwnPropertyNames;var gd=Object.getPrototypeOf,Md=Object.prototype.hasOwnProperty;var yd=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(r){throw e=0,r}},co=(t,e)=>{for(var r in e)pn(t,r,{get:e[r],enumerable:!0})},mn=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of pd(e))!Md.call(t,i)&&i!==r&&pn(t,i,{get:()=>e[i],enumerable:!(n=md(e,i))||n.enumerable});return t},gn=(t,e,r)=>(mn(t,e,"default"),r&&mn(r,e,"default")),xd=(t,e,r)=>(r=t!=null?dd(gd(t)):{},mn(e||!t||!t.__esModule?pn(r,"default",{value:t,enumerable:!0}):r,t)),_d=t=>mn(pn({},"__esModule",{value:!0}),t);var Na=yd((SM,Ia)=>{Ia.exports=globalThis.loaders});var fn={};co(fn,{I3SSource:()=>Qi,I3SSpatialTransformer:()=>Mr,ImageSet:()=>eo,IndexedArchiveTilesetSource:()=>hi,LOD_METRIC_TYPE:()=>Qt,PointCloudTile:()=>yr,PointCloudTileset:()=>no,RasterSet:()=>to,STRATEGY_DEFAULT:()=>hn,STRATEGY_NEVER:()=>Pa,STRATEGY_REPLACE:()=>Ra,SharedTile2DHeader:()=>kt,SpatialCoordinateTransformer:()=>We,TILESET_TYPE:()=>fe,TILE_CONTENT_STATE:()=>le,TILE_REFINEMENT:()=>ne,TILE_TYPE:()=>tt,Tile3D:()=>Ne,Tiles3DSource:()=>Yi,Tiles3DSpatialTransformer:()=>Pt,Tileset2D:()=>ln,Tileset3D:()=>si,TilesetCache:()=>Zt,TilesetTraverser:()=>rt,applyTilesetSpatialOptions:()=>It,calculateTransformProps:()=>Jn,convertS2BoundingVolumeToOBB:()=>Hi,createBoundingVolume:()=>tr,createImplicitSubtreeReference:()=>wa,createTilesetSpatialReference:()=>Ie,get3DTilesSpatialReference:()=>gi,getFrameState:()=>ei,getGeoidModel:()=>Vi,getI3SSpatialReference:()=>pi,getLodStatus:()=>di,getSpatialCoordinateFrame:()=>xe,getTileset3DTraversalSnapshot:()=>sh,isTileset3DSource:()=>ii,markTilesetSpatialReferenceTransformed:()=>er,materializeImplicitSubtree:()=>$i,registerGeoidModel:()=>pa,registerGeoidModelFromPgm:()=>_0,registerSpatialCrs:()=>y0,registerSpatialDatumGrid:()=>x0,replaceImplicitUrlTemplate:()=>cn,traverseTilesetContents:()=>ah});gn(fn,xd(Na(),1));var j={};co(j,{EPSILON1:()=>Sd,EPSILON10:()=>Ad,EPSILON11:()=>Id,EPSILON12:()=>Nd,EPSILON13:()=>Od,EPSILON14:()=>Mn,EPSILON15:()=>Gd,EPSILON16:()=>Ld,EPSILON17:()=>qd,EPSILON18:()=>zd,EPSILON19:()=>Fd,EPSILON2:()=>wd,EPSILON20:()=>Bd,EPSILON3:()=>Ed,EPSILON4:()=>Td,EPSILON5:()=>bd,EPSILON6:()=>vd,EPSILON7:()=>Pd,EPSILON8:()=>Rd,EPSILON9:()=>Cd,PI:()=>Vt,PI_OVER_FOUR:()=>kd,PI_OVER_SIX:()=>Ud,PI_OVER_TWO:()=>Dd,TWO_PI:()=>xr});var Sd=.1,wd=.01,Ed=.001,Td=1e-4,bd=1e-5,vd=1e-6,Pd=1e-7,Rd=1e-8,Cd=1e-9,Ad=1e-10,Id=1e-11,Nd=1e-12,Od=1e-13,Mn=1e-14,Gd=1e-15,Ld=1e-16,qd=1e-17,zd=1e-18,Fd=1e-19,Bd=1e-20,Dd=Math.PI/2,kd=Math.PI/4,Ud=Math.PI/6,Vt=Math.PI,xr=Math.PI*2;var Vd=1/Math.PI*180,jd=1/180*Math.PI,Wd={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...Wd}};var K=globalThis.mathgl.config;function lo(t,{precision:e=K.precision}={}){return t=$d(t),`${parseFloat(t.toPrecision(e))}`}function Fe(t){return Array.isArray(t)||ArrayBuffer.isView(t)&&!(t instanceof DataView)}function ho(t){return yn(t)}function uo(t){return ye(t)}function yn(t,e){return mo(t,r=>r*jd,e)}function ye(t,e){return mo(t,r=>r*Vd,e)}function Oa(t,e){return Math.sign(t)===Math.sign(e)&&Math.abs(t)<Math.abs(e)?t:(t%e+e)%e}function fo(t,e){switch(e){case"negative-pi-to-pi":return Hd(t);case"zero-to-two-pi":return Ga(t);default:return t}}function Ga(t){if(t>=0&&t<=xr)return t;let e=Oa(t,xr);return Math.abs(e)<1e-14&&Math.abs(t)>1e-14?xr:e}function Hd(t){return t>=-Vt&&t<=Vt?t:Ga(t+Vt)-Vt}function _r(t,e,r){return mo(t,n=>Math.max(e,Math.min(r,n)))}function Ce(t,e,r){let n=K.EPSILON;r&&(K.EPSILON=r);try{if(t===e)return!0;if(Fe(t)&&Fe(e)){if(t.length!==e.length)return!1;for(let i=0;i<t.length;++i)if(!Ce(t[i],e[i]))return!1;return!0}return t&&t.equals?t.equals(e):e&&e.equals?e.equals(t):typeof t=="number"&&typeof e=="number"?Math.abs(t-e)<=K.EPSILON*Math.max(1,Math.abs(t),Math.abs(e)):!1}finally{K.EPSILON=n}}function $d(t){return Math.round(t/K.EPSILON)*K.EPSILON}function Yd(t){return t.clone?t.clone():new Array(t.length)}function mo(t,e,r){if(Fe(t)){let n=t;r=r||Yd(n);for(let i=0;i<r.length&&i<n.length;++i){let o=typeof t=="number"?t:t[i];r[i]=e(o,i,r)}return r}return e(t)}var Mt=class extends Array{clone(){return new this.constructor().copy(this)}fromArray(e,r=0){for(let n=0;n<this.ELEMENTS;++n)this[n]=e[n+r];return this.check()}toArray(e=[],r=0){for(let n=0;n<this.ELEMENTS;++n)e[r+n]=this[n];return e}toObject(e){return e}from(e){return Array.isArray(e)?this.copy(e):this.fromObject(e)}to(e){return e===this?this:Fe(e)?this.toArray(e):this.toObject(e)}toTarget(e){return e?this.to(e):this}toString(){return this.formatString(K)}formatString(e){let r="";for(let n=0;n<this.ELEMENTS;++n)r+=(n>0?", ":"")+lo(this[n],e);return`${e.printTypes?this.constructor.name:""}[${r}]`}equals(e){if(!e||this.length!==e.length)return!1;for(let r=0;r<this.ELEMENTS;++r)if(!Ce(this[r],e[r]))return!1;return!0}exactEquals(e){if(!e||this.length!==e.length)return!1;for(let r=0;r<this.ELEMENTS;++r)if(this[r]!==e[r])return!1;return!0}negate(){for(let e=0;e<this.ELEMENTS;++e)this[e]=-this[e];return this.check()}lerp(e,r,n){if(n===void 0)return this.lerp(this,e,r);for(let i=0;i<this.ELEMENTS;++i){let o=e[i],s=typeof r=="number"?r:r[i];this[i]=o+n*(s-o)}return this.check()}min(e){for(let r=0;r<this.ELEMENTS;++r)this[r]=Math.min(e[r],this[r]);return this.check()}max(e){for(let r=0;r<this.ELEMENTS;++r)this[r]=Math.max(e[r],this[r]);return this.check()}clamp(e,r){for(let n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],e[n]),r[n]);return this.check()}add(...e){for(let r of e)for(let n=0;n<this.ELEMENTS;++n)this[n]+=r[n];return this.check()}subtract(...e){for(let r of e)for(let n=0;n<this.ELEMENTS;++n)this[n]-=r[n];return this.check()}scale(e){if(typeof e=="number")for(let r=0;r<this.ELEMENTS;++r)this[r]*=e;else for(let r=0;r<this.ELEMENTS&&r<e.length;++r)this[r]*=e[r];return this.check()}multiplyByScalar(e){for(let r=0;r<this.ELEMENTS;++r)this[r]*=e;return this.check()}check(){if(K.debug&&!this.validate())throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);return this}validate(){let e=this.length===this.ELEMENTS;for(let r=0;r<this.ELEMENTS;++r)e=e&&Number.isFinite(this[r]);return e}};function Kd(t,e){if(t.length!==e)return!1;for(let r=0;r<t.length;++r)if(!Number.isFinite(t[r]))return!1;return!0}function H(t){if(!Number.isFinite(t))throw new Error(`Invalid number ${JSON.stringify(t)}`);return t}function jt(t,e,r=""){if(K.debug&&!Kd(t,e))throw new Error(`math.gl: ${r} some fields set to invalid numbers'`);return t}var Wt=class extends Mt{toString(){let e="[";if(K.printRowMajor){e+="row-major:";for(let r=0;r<this.RANK;++r)for(let n=0;n<this.RANK;++n)e+=` ${this[n*this.RANK+r]}`}else{e+="column-major:";for(let r=0;r<this.ELEMENTS;++r)e+=` ${this[r]}`}return e+="]",e}getElementIndex(e,r){return r*this.RANK+e}getElement(e,r){return this[r*this.RANK+e]}setElement(e,r,n){return this[r*this.RANK+e]=H(n),this}getColumn(e,r=new Array(this.RANK).fill(-0)){let n=e*this.RANK;for(let i=0;i<this.RANK;++i)r[i]=this[n+i];return r}setColumn(e,r){let n=e*this.RANK;for(let i=0;i<this.RANK;++i)this[n+i]=r[i];return this}};function ae(t,e){if(!t)throw new Error(`math.gl assertion ${e}`)}var Ht=class extends Mt{get x(){return this[0]}set x(e){this[0]=H(e)}get y(){return this[1]}set y(e){this[1]=H(e)}len(){return Math.sqrt(this.lengthSquared())}magnitude(){return this.len()}lengthSquared(){let e=0;for(let r=0;r<this.ELEMENTS;++r)e+=this[r]*this[r];return e}magnitudeSquared(){return this.lengthSquared()}distance(e){return Math.sqrt(this.distanceSquared(e))}distanceSquared(e){let r=0;for(let n=0;n<this.ELEMENTS;++n){let i=this[n]-e[n];r+=i*i}return H(r)}dot(e){let r=0;for(let n=0;n<this.ELEMENTS;++n)r+=this[n]*e[n];return H(r)}normalize(){let e=this.magnitude();if(e!==0)for(let r=0;r<this.ELEMENTS;++r)this[r]/=e;return this.check()}multiply(...e){for(let r of e)for(let n=0;n<this.ELEMENTS;++n)this[n]*=r[n];return this.check()}divide(...e){for(let r of e)for(let n=0;n<this.ELEMENTS;++n)this[n]/=r[n];return this.check()}lengthSq(){return this.lengthSquared()}distanceTo(e){return this.distance(e)}distanceToSquared(e){return this.distanceSquared(e)}getComponent(e){return ae(e>=0&&e<this.ELEMENTS,"index is out of range"),H(this[e])}setComponent(e,r){return ae(e>=0&&e<this.ELEMENTS,"index is out of range"),this[e]=r,this.check()}addVectors(e,r){return this.copy(e).add(r)}subVectors(e,r){return this.copy(e).subtract(r)}multiplyVectors(e,r){return this.copy(e).multiply(r)}addScaledVector(e,r){for(let n=0;n<this.ELEMENTS;++n)this[n]+=e[n]*r;return this.check()}};var xn=typeof Float32Array<"u"?Float32Array:Array;var zM=Math.PI/180;function La(t,e,r){let n=e[0],i=e[1];return t[0]=r[0]*n+r[2]*i,t[1]=r[1]*n+r[3]*i,t}function qa(t,e,r){let n=e[0],i=e[1];return t[0]=r[0]*n+r[2]*i+r[4],t[1]=r[1]*n+r[3]*i+r[5],t}function _n(t,e,r){let n=e[0],i=e[1];return t[0]=r[0]*n+r[3]*i+r[6],t[1]=r[1]*n+r[4]*i+r[7],t}function Sn(t,e,r){let n=e[0],i=e[1];return t[0]=r[0]*n+r[4]*i+r[12],t[1]=r[1]*n+r[5]*i+r[13],t}function wn(t,e,r){let n=e[0],i=e[1],o=r[3]*n+r[7]*i||1;return t[0]=(r[0]*n+r[4]*i)/o,t[1]=(r[1]*n+r[5]*i)/o,t}function En(t,e,r){let n=e[0],i=e[1],o=e[2],s=r[3]*n+r[7]*i+r[11]*o||1;return t[0]=(r[0]*n+r[4]*i+r[8]*o)/s,t[1]=(r[1]*n+r[5]*i+r[9]*o)/s,t[2]=(r[2]*n+r[6]*i+r[10]*o)/s,t}function za(t,e,r){let n=e[0],i=e[1];return t[0]=r[0]*n+r[2]*i,t[1]=r[1]*n+r[3]*i,t[2]=e[2],t}function Fa(t,e,r){let n=e[0],i=e[1],o=e[2];return t[0]=r[0]*n+r[3]*i+r[6]*o,t[1]=r[1]*n+r[4]*i+r[7]*o,t[2]=r[2]*n+r[5]*i+r[8]*o,t[3]=e[3],t}var Be=class extends Ht{constructor(e=0,r=0){super(2),Fe(e)&&arguments.length===1?this.copy(e):(K.debug&&(H(e),H(r)),this[0]=e,this[1]=r)}set(e,r){return this[0]=e,this[1]=r,this.check()}copy(e){return this[0]=e[0],this[1]=e[1],this.check()}fromObject(e){return K.debug&&(H(e.x),H(e.y)),this[0]=e.x,this[1]=e.y,this.check()}toObject(e){return e.x=this[0],e.y=this[1],e}get ELEMENTS(){return 2}horizontalAngle(){return Math.atan2(this.y,this.x)}verticalAngle(){return Math.atan2(this.x,this.y)}transform(e){return this.transformAsPoint(e)}transformAsPoint(e){return Sn(this,this,e),this.check()}transformAsVector(e){return wn(this,this,e),this.check()}transformByMatrix3(e){return _n(this,this,e),this.check()}transformByMatrix2x3(e){return qa(this,this,e),this.check()}transformByMatrix2(e){return La(this,this,e),this.check()}};function Ba(){let t=new xn(3);return xn!==Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function po(t){let e=t[0],r=t[1],n=t[2];return Math.sqrt(e*e+r*r+n*n)}function go(t,e,r){let n=new xn(3);return n[0]=t,n[1]=e,n[2]=r,n}function Da(t,e){let r=e[0],n=e[1],i=e[2],o=r*r+n*n+i*i;return o>0&&(o=1/Math.sqrt(o)),t[0]=e[0]*o,t[1]=e[1]*o,t[2]=e[2]*o,t}function wr(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function $t(t,e,r){let n=e[0],i=e[1],o=e[2],s=r[0],a=r[1],c=r[2];return t[0]=i*c-o*a,t[1]=o*s-n*c,t[2]=n*a-i*s,t}function Tn(t,e,r){let n=e[0],i=e[1],o=e[2],s=r[3]*n+r[7]*i+r[11]*o+r[15];return s=s||1,t[0]=(r[0]*n+r[4]*i+r[8]*o+r[12])/s,t[1]=(r[1]*n+r[5]*i+r[9]*o+r[13])/s,t[2]=(r[2]*n+r[6]*i+r[10]*o+r[14])/s,t}function bn(t,e,r){let n=e[0],i=e[1],o=e[2];return t[0]=n*r[0]+i*r[3]+o*r[6],t[1]=n*r[1]+i*r[4]+o*r[7],t[2]=n*r[2]+i*r[5]+o*r[8],t}function ka(t,e,r){let n=r[0],i=r[1],o=r[2],s=r[3],a=e[0],c=e[1],l=e[2],h=i*l-o*c,u=o*a-n*l,f=n*c-i*a,d=i*f-o*u,m=o*h-n*f,p=n*u-i*h,g=s*2;return h*=g,u*=g,f*=g,d*=2,m*=2,p*=2,t[0]=a+h+d,t[1]=c+u+m,t[2]=l+f+p,t}function Ua(t,e,r,n){let i=[],o=[];return i[0]=e[0]-r[0],i[1]=e[1]-r[1],i[2]=e[2]-r[2],o[0]=i[0],o[1]=i[1]*Math.cos(n)-i[2]*Math.sin(n),o[2]=i[1]*Math.sin(n)+i[2]*Math.cos(n),t[0]=o[0]+r[0],t[1]=o[1]+r[1],t[2]=o[2]+r[2],t}function Va(t,e,r,n){let i=[],o=[];return i[0]=e[0]-r[0],i[1]=e[1]-r[1],i[2]=e[2]-r[2],o[0]=i[2]*Math.sin(n)+i[0]*Math.cos(n),o[1]=i[1],o[2]=i[2]*Math.cos(n)-i[0]*Math.sin(n),t[0]=o[0]+r[0],t[1]=o[1]+r[1],t[2]=o[2]+r[2],t}function ja(t,e,r,n){let i=[],o=[];return i[0]=e[0]-r[0],i[1]=e[1]-r[1],i[2]=e[2]-r[2],o[0]=i[0]*Math.cos(n)-i[1]*Math.sin(n),o[1]=i[0]*Math.sin(n)+i[1]*Math.cos(n),o[2]=i[2],t[0]=o[0]+r[0],t[1]=o[1]+r[1],t[2]=o[2]+r[2],t}function Wa(t,e){let r=t[0],n=t[1],i=t[2],o=e[0],s=e[1],a=e[2],c=Math.sqrt((r*r+n*n+i*i)*(o*o+s*s+a*a)),l=c&&wr(t,e)/c;return Math.acos(Math.min(Math.max(l,-1),1))}var Ha=po;var Mo=[0,0,0],vn,M=class t extends Ht{static get ZERO(){return vn||(vn=new t(0,0,0),Object.freeze(vn)),vn}constructor(e=0,r=0,n=0){super(-0,-0,-0),arguments.length===1&&Fe(e)?this.copy(e):(K.debug&&(H(e),H(r),H(n)),this[0]=e,this[1]=r,this[2]=n)}set(e,r,n){return this[0]=e,this[1]=r,this[2]=n,this.check()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this.check()}fromObject(e){return K.debug&&(H(e.x),H(e.y),H(e.z)),this[0]=e.x,this[1]=e.y,this[2]=e.z,this.check()}toObject(e){return e.x=this[0],e.y=this[1],e.z=this[2],e}get ELEMENTS(){return 3}get z(){return this[2]}set z(e){this[2]=H(e)}angle(e){return Wa(this,e)}cross(e){return $t(this,this,e),this.check()}rotateX({radians:e,origin:r=Mo}){return Ua(this,this,r,e),this.check()}rotateY({radians:e,origin:r=Mo}){return Va(this,this,r,e),this.check()}rotateZ({radians:e,origin:r=Mo}){return ja(this,this,r,e),this.check()}transform(e){return this.transformAsPoint(e)}transformAsPoint(e){return Tn(this,this,e),this.check()}transformAsVector(e){return En(this,this,e),this.check()}transformByMatrix3(e){return bn(this,this,e),this.check()}transformByMatrix2(e){return za(this,this,e),this.check()}transformByQuaternion(e){return ka(this,this,e),this.check()}};function $a(t,e){if(t===e){let r=e[1],n=e[2],i=e[5];t[1]=e[3],t[2]=e[6],t[3]=r,t[5]=e[7],t[6]=n,t[7]=i}else t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8];return t}function Ya(t,e){let r=e[0],n=e[1],i=e[2],o=e[3],s=e[4],a=e[5],c=e[6],l=e[7],h=e[8],u=h*s-a*l,f=-h*o+a*c,d=l*o-s*c,m=r*u+n*f+i*d;return m?(m=1/m,t[0]=u*m,t[1]=(-h*n+i*l)*m,t[2]=(a*n-i*s)*m,t[3]=f*m,t[4]=(h*r-i*c)*m,t[5]=(-a*r+i*o)*m,t[6]=d*m,t[7]=(-l*r+n*c)*m,t[8]=(s*r-n*o)*m,t):null}function Ka(t){let e=t[0],r=t[1],n=t[2],i=t[3],o=t[4],s=t[5],a=t[6],c=t[7],l=t[8];return e*(l*o-s*c)+r*(-l*i+s*a)+n*(c*i-o*a)}function yo(t,e,r){let n=e[0],i=e[1],o=e[2],s=e[3],a=e[4],c=e[5],l=e[6],h=e[7],u=e[8],f=r[0],d=r[1],m=r[2],p=r[3],g=r[4],y=r[5],x=r[6],S=r[7],_=r[8];return t[0]=f*n+d*s+m*l,t[1]=f*i+d*a+m*h,t[2]=f*o+d*c+m*u,t[3]=p*n+g*s+y*l,t[4]=p*i+g*a+y*h,t[5]=p*o+g*c+y*u,t[6]=x*n+S*s+_*l,t[7]=x*i+S*a+_*h,t[8]=x*o+S*c+_*u,t}function Xa(t,e,r){let n=e[0],i=e[1],o=e[2],s=e[3],a=e[4],c=e[5],l=e[6],h=e[7],u=e[8],f=r[0],d=r[1];return t[0]=n,t[1]=i,t[2]=o,t[3]=s,t[4]=a,t[5]=c,t[6]=f*n+d*s+l,t[7]=f*i+d*a+h,t[8]=f*o+d*c+u,t}function Za(t,e,r){let n=e[0],i=e[1],o=e[2],s=e[3],a=e[4],c=e[5],l=e[6],h=e[7],u=e[8],f=Math.sin(r),d=Math.cos(r);return t[0]=d*n+f*s,t[1]=d*i+f*a,t[2]=d*o+f*c,t[3]=d*s-f*n,t[4]=d*a-f*i,t[5]=d*c-f*o,t[6]=l,t[7]=h,t[8]=u,t}function xo(t,e,r){let n=r[0],i=r[1];return t[0]=n*e[0],t[1]=n*e[1],t[2]=n*e[2],t[3]=i*e[3],t[4]=i*e[4],t[5]=i*e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t}function Qa(t,e){let r=e[0],n=e[1],i=e[2],o=e[3],s=r+r,a=n+n,c=i+i,l=r*s,h=n*s,u=n*a,f=i*s,d=i*a,m=i*c,p=o*s,g=o*a,y=o*c;return t[0]=1-u-m,t[3]=h-y,t[6]=f+g,t[1]=h+y,t[4]=1-l-m,t[7]=d-p,t[2]=f-g,t[5]=d+p,t[8]=1-l-u,t}var _o;(function(t){t[t.COL0ROW0=0]="COL0ROW0",t[t.COL0ROW1=1]="COL0ROW1",t[t.COL0ROW2=2]="COL0ROW2",t[t.COL1ROW0=3]="COL1ROW0",t[t.COL1ROW1=4]="COL1ROW1",t[t.COL1ROW2=5]="COL1ROW2",t[t.COL2ROW0=6]="COL2ROW0",t[t.COL2ROW1=7]="COL2ROW1",t[t.COL2ROW2=8]="COL2ROW2"})(_o||(_o={}));var Qd=Object.freeze([1,0,0,0,1,0,0,0,1]),$=class extends Wt{static get IDENTITY(){return em()}static get ZERO(){return Jd()}get ELEMENTS(){return 9}get RANK(){return 3}get INDICES(){return _o}constructor(e){super(-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(e)?this.copy(e):this.identity()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this[4]=e[4],this[5]=e[5],this[6]=e[6],this[7]=e[7],this[8]=e[8],this.check()}identity(){return this.copy(Qd)}fromObject(e){return this.check()}fromQuaternion(e){return Qa(this,e),this.check()}fromMatrix4(e){return this.set(e[0],e[1],e[2],e[4],e[5],e[6],e[8],e[9],e[10])}set(e,r,n,i,o,s,a,c,l){return this[0]=e,this[1]=r,this[2]=n,this[3]=i,this[4]=o,this[5]=s,this[6]=a,this[7]=c,this[8]=l,this.check()}setRowMajor(e,r,n,i,o,s,a,c,l){return this[0]=e,this[1]=i,this[2]=a,this[3]=r,this[4]=o,this[5]=c,this[6]=n,this[7]=s,this[8]=l,this.check()}determinant(){return Ka(this)}transpose(){return $a(this,this),this.check()}invert(){return Ya(this,this),this.check()}multiplyLeft(e){return yo(this,e,this),this.check()}multiplyRight(e){return yo(this,this,e),this.check()}rotate(e){return Za(this,this,e),this.check()}scale(e){return Array.isArray(e)?xo(this,this,e):xo(this,this,[e,e]),this.check()}translate(e){return Xa(this,this,e),this.check()}transform(e,r){let n;switch(e.length){case 2:n=_n(r||[-0,-0],e,this);break;case 3:n=bn(r||[-0,-0,-0],e,this);break;case 4:n=Fa(r||[-0,-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return jt(n,e.length),n}},Pn,Rn=null;function Jd(){return Pn||(Pn=new $([0,0,0,0,0,0,0,0,0]),Object.freeze(Pn)),Pn}function em(){return Rn||(Rn=new $,Object.freeze(Rn)),Rn}function tm(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Ja(t,e){if(t===e){let r=e[1],n=e[2],i=e[3],o=e[6],s=e[7],a=e[11];t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=r,t[6]=e[9],t[7]=e[13],t[8]=n,t[9]=o,t[11]=e[14],t[12]=i,t[13]=s,t[14]=a}else t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15];return t}function ec(t,e){let r=e[0],n=e[1],i=e[2],o=e[3],s=e[4],a=e[5],c=e[6],l=e[7],h=e[8],u=e[9],f=e[10],d=e[11],m=e[12],p=e[13],g=e[14],y=e[15],x=r*a-n*s,S=r*c-i*s,_=r*l-o*s,w=n*c-i*a,E=n*l-o*a,v=i*l-o*c,T=h*p-u*m,I=h*g-f*m,P=h*y-d*m,R=u*g-f*p,N=u*y-d*p,z=f*y-d*g,O=x*z-S*N+_*R+w*P-E*I+v*T;return O?(O=1/O,t[0]=(a*z-c*N+l*R)*O,t[1]=(i*N-n*z-o*R)*O,t[2]=(p*v-g*E+y*w)*O,t[3]=(f*E-u*v-d*w)*O,t[4]=(c*P-s*z-l*I)*O,t[5]=(r*z-i*P+o*I)*O,t[6]=(g*_-m*v-y*S)*O,t[7]=(h*v-f*_+d*S)*O,t[8]=(s*N-a*P+l*T)*O,t[9]=(n*P-r*N-o*T)*O,t[10]=(m*E-p*_+y*x)*O,t[11]=(u*_-h*E-d*x)*O,t[12]=(a*I-s*R-c*T)*O,t[13]=(r*R-n*I+i*T)*O,t[14]=(p*S-m*w-g*x)*O,t[15]=(h*w-u*S+f*x)*O,t):null}function tc(t){let e=t[0],r=t[1],n=t[2],i=t[3],o=t[4],s=t[5],a=t[6],c=t[7],l=t[8],h=t[9],u=t[10],f=t[11],d=t[12],m=t[13],p=t[14],g=t[15],y=e*s-r*o,x=e*a-n*o,S=r*a-n*s,_=l*m-h*d,w=l*p-u*d,E=h*p-u*m,v=e*E-r*w+n*_,T=o*E-s*w+a*_,I=l*S-h*x+u*y,P=d*S-m*x+p*y;return c*v-i*T+g*I-f*P}function So(t,e,r){let n=e[0],i=e[1],o=e[2],s=e[3],a=e[4],c=e[5],l=e[6],h=e[7],u=e[8],f=e[9],d=e[10],m=e[11],p=e[12],g=e[13],y=e[14],x=e[15],S=r[0],_=r[1],w=r[2],E=r[3];return t[0]=S*n+_*a+w*u+E*p,t[1]=S*i+_*c+w*f+E*g,t[2]=S*o+_*l+w*d+E*y,t[3]=S*s+_*h+w*m+E*x,S=r[4],_=r[5],w=r[6],E=r[7],t[4]=S*n+_*a+w*u+E*p,t[5]=S*i+_*c+w*f+E*g,t[6]=S*o+_*l+w*d+E*y,t[7]=S*s+_*h+w*m+E*x,S=r[8],_=r[9],w=r[10],E=r[11],t[8]=S*n+_*a+w*u+E*p,t[9]=S*i+_*c+w*f+E*g,t[10]=S*o+_*l+w*d+E*y,t[11]=S*s+_*h+w*m+E*x,S=r[12],_=r[13],w=r[14],E=r[15],t[12]=S*n+_*a+w*u+E*p,t[13]=S*i+_*c+w*f+E*g,t[14]=S*o+_*l+w*d+E*y,t[15]=S*s+_*h+w*m+E*x,t}function rc(t,e,r){let n=r[0],i=r[1],o=r[2],s,a,c,l,h,u,f,d,m,p,g,y;return e===t?(t[12]=e[0]*n+e[4]*i+e[8]*o+e[12],t[13]=e[1]*n+e[5]*i+e[9]*o+e[13],t[14]=e[2]*n+e[6]*i+e[10]*o+e[14],t[15]=e[3]*n+e[7]*i+e[11]*o+e[15]):(s=e[0],a=e[1],c=e[2],l=e[3],h=e[4],u=e[5],f=e[6],d=e[7],m=e[8],p=e[9],g=e[10],y=e[11],t[0]=s,t[1]=a,t[2]=c,t[3]=l,t[4]=h,t[5]=u,t[6]=f,t[7]=d,t[8]=m,t[9]=p,t[10]=g,t[11]=y,t[12]=s*n+h*i+m*o+e[12],t[13]=a*n+u*i+p*o+e[13],t[14]=c*n+f*i+g*o+e[14],t[15]=l*n+d*i+y*o+e[15]),t}function nc(t,e,r){let n=r[0],i=r[1],o=r[2];return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*o,t[9]=e[9]*o,t[10]=e[10]*o,t[11]=e[11]*o,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function ic(t,e,r,n){let i=n[0],o=n[1],s=n[2],a=Math.sqrt(i*i+o*o+s*s),c,l,h,u,f,d,m,p,g,y,x,S,_,w,E,v,T,I,P,R,N,z,O,k;return a<1e-6?null:(a=1/a,i*=a,o*=a,s*=a,l=Math.sin(r),c=Math.cos(r),h=1-c,u=e[0],f=e[1],d=e[2],m=e[3],p=e[4],g=e[5],y=e[6],x=e[7],S=e[8],_=e[9],w=e[10],E=e[11],v=i*i*h+c,T=o*i*h+s*l,I=s*i*h-o*l,P=i*o*h-s*l,R=o*o*h+c,N=s*o*h+i*l,z=i*s*h+o*l,O=o*s*h-i*l,k=s*s*h+c,t[0]=u*v+p*T+S*I,t[1]=f*v+g*T+_*I,t[2]=d*v+y*T+w*I,t[3]=m*v+x*T+E*I,t[4]=u*P+p*R+S*N,t[5]=f*P+g*R+_*N,t[6]=d*P+y*R+w*N,t[7]=m*P+x*R+E*N,t[8]=u*z+p*O+S*k,t[9]=f*z+g*O+_*k,t[10]=d*z+y*O+w*k,t[11]=m*z+x*O+E*k,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t)}function oc(t,e,r){let n=Math.sin(r),i=Math.cos(r),o=e[4],s=e[5],a=e[6],c=e[7],l=e[8],h=e[9],u=e[10],f=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=o*i+l*n,t[5]=s*i+h*n,t[6]=a*i+u*n,t[7]=c*i+f*n,t[8]=l*i-o*n,t[9]=h*i-s*n,t[10]=u*i-a*n,t[11]=f*i-c*n,t}function sc(t,e,r){let n=Math.sin(r),i=Math.cos(r),o=e[0],s=e[1],a=e[2],c=e[3],l=e[8],h=e[9],u=e[10],f=e[11];return e!==t&&(t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=o*i-l*n,t[1]=s*i-h*n,t[2]=a*i-u*n,t[3]=c*i-f*n,t[8]=o*n+l*i,t[9]=s*n+h*i,t[10]=a*n+u*i,t[11]=c*n+f*i,t}function ac(t,e,r){let n=Math.sin(r),i=Math.cos(r),o=e[0],s=e[1],a=e[2],c=e[3],l=e[4],h=e[5],u=e[6],f=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=o*i+l*n,t[1]=s*i+h*n,t[2]=a*i+u*n,t[3]=c*i+f*n,t[4]=l*i-o*n,t[5]=h*i-s*n,t[6]=u*i-a*n,t[7]=f*i-c*n,t}function cc(t,e){let r=e[0],n=e[1],i=e[2],o=e[4],s=e[5],a=e[6],c=e[8],l=e[9],h=e[10];return t[0]=Math.sqrt(r*r+n*n+i*i),t[1]=Math.sqrt(o*o+s*s+a*a),t[2]=Math.sqrt(c*c+l*l+h*h),t}function lc(t,e){let r=e[0],n=e[1],i=e[2],o=e[3],s=r+r,a=n+n,c=i+i,l=r*s,h=n*s,u=n*a,f=i*s,d=i*a,m=i*c,p=o*s,g=o*a,y=o*c;return t[0]=1-u-m,t[1]=h+y,t[2]=f-g,t[3]=0,t[4]=h-y,t[5]=1-l-m,t[6]=d+p,t[7]=0,t[8]=f+g,t[9]=d-p,t[10]=1-l-u,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function hc(t,e,r,n,i,o,s){let a=1/(r-e),c=1/(i-n),l=1/(o-s);return t[0]=o*2*a,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=o*2*c,t[6]=0,t[7]=0,t[8]=(r+e)*a,t[9]=(i+n)*c,t[10]=(s+o)*l,t[11]=-1,t[12]=0,t[13]=0,t[14]=s*o*2*l,t[15]=0,t}function rm(t,e,r,n,i){let o=1/Math.tan(e/2);if(t[0]=o/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=o,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,i!=null&&i!==1/0){let s=1/(n-i);t[10]=(i+n)*s,t[14]=2*i*n*s}else t[10]=-1,t[14]=-2*n;return t}var uc=rm;function nm(t,e,r,n,i,o,s){let a=1/(e-r),c=1/(n-i),l=1/(o-s);return t[0]=-2*a,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*c,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*l,t[11]=0,t[12]=(e+r)*a,t[13]=(i+n)*c,t[14]=(s+o)*l,t[15]=1,t}var fc=nm;function dc(t,e,r,n){let i,o,s,a,c,l,h,u,f,d,m=e[0],p=e[1],g=e[2],y=n[0],x=n[1],S=n[2],_=r[0],w=r[1],E=r[2];return Math.abs(m-_)<1e-6&&Math.abs(p-w)<1e-6&&Math.abs(g-E)<1e-6?tm(t):(u=m-_,f=p-w,d=g-E,i=1/Math.sqrt(u*u+f*f+d*d),u*=i,f*=i,d*=i,o=x*d-S*f,s=S*u-y*d,a=y*f-x*u,i=Math.sqrt(o*o+s*s+a*a),i?(i=1/i,o*=i,s*=i,a*=i):(o=0,s=0,a=0),c=f*a-d*s,l=d*o-u*a,h=u*s-f*o,i=Math.sqrt(c*c+l*l+h*h),i?(i=1/i,c*=i,l*=i,h*=i):(c=0,l=0,h=0),t[0]=o,t[1]=c,t[2]=u,t[3]=0,t[4]=s,t[5]=l,t[6]=f,t[7]=0,t[8]=a,t[9]=h,t[10]=d,t[11]=0,t[12]=-(o*m+s*p+a*g),t[13]=-(c*m+l*p+h*g),t[14]=-(u*m+f*p+d*g),t[15]=1,t)}function mc(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t}function pc(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t}function gc(t){let e=t[0],r=t[1],n=t[2],i=t[3];return Math.sqrt(e*e+r*r+n*n+i*i)}function Mc(t){let e=t[0],r=t[1],n=t[2],i=t[3];return e*e+r*r+n*n+i*i}function yc(t,e){let r=e[0],n=e[1],i=e[2],o=e[3],s=r*r+n*n+i*i+o*o;return s>0&&(s=1/Math.sqrt(s)),t[0]=r*s,t[1]=n*s,t[2]=i*s,t[3]=o*s,t}function xc(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}function _c(t,e,r,n){let i=e[0],o=e[1],s=e[2],a=e[3];return t[0]=i+n*(r[0]-i),t[1]=o+n*(r[1]-o),t[2]=s+n*(r[2]-s),t[3]=a+n*(r[3]-a),t}function Sc(t,e,r){let n=e[0],i=e[1],o=e[2],s=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*o+r[12]*s,t[1]=r[1]*n+r[5]*i+r[9]*o+r[13]*s,t[2]=r[2]*n+r[6]*i+r[10]*o+r[14]*s,t[3]=r[3]*n+r[7]*i+r[11]*o+r[15]*s,t}var To;(function(t){t[t.COL0ROW0=0]="COL0ROW0",t[t.COL0ROW1=1]="COL0ROW1",t[t.COL0ROW2=2]="COL0ROW2",t[t.COL0ROW3=3]="COL0ROW3",t[t.COL1ROW0=4]="COL1ROW0",t[t.COL1ROW1=5]="COL1ROW1",t[t.COL1ROW2=6]="COL1ROW2",t[t.COL1ROW3=7]="COL1ROW3",t[t.COL2ROW0=8]="COL2ROW0",t[t.COL2ROW1=9]="COL2ROW1",t[t.COL2ROW2=10]="COL2ROW2",t[t.COL2ROW3=11]="COL2ROW3",t[t.COL3ROW0=12]="COL3ROW0",t[t.COL3ROW1=13]="COL3ROW1",t[t.COL3ROW2=14]="COL3ROW2",t[t.COL3ROW3=15]="COL3ROW3"})(To||(To={}));var om=45*Math.PI/180,sm=1,wo=.1,Eo=500,am=Object.freeze([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),q=class extends Wt{static get IDENTITY(){return lm()}static get ZERO(){return cm()}get ELEMENTS(){return 16}get RANK(){return 4}get INDICES(){return To}constructor(e){super(-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(e)?this.copy(e):this.identity()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this[4]=e[4],this[5]=e[5],this[6]=e[6],this[7]=e[7],this[8]=e[8],this[9]=e[9],this[10]=e[10],this[11]=e[11],this[12]=e[12],this[13]=e[13],this[14]=e[14],this[15]=e[15],this.check()}set(e,r,n,i,o,s,a,c,l,h,u,f,d,m,p,g){return this[0]=e,this[1]=r,this[2]=n,this[3]=i,this[4]=o,this[5]=s,this[6]=a,this[7]=c,this[8]=l,this[9]=h,this[10]=u,this[11]=f,this[12]=d,this[13]=m,this[14]=p,this[15]=g,this.check()}setRowMajor(e,r,n,i,o,s,a,c,l,h,u,f,d,m,p,g){return this[0]=e,this[1]=o,this[2]=l,this[3]=d,this[4]=r,this[5]=s,this[6]=h,this[7]=m,this[8]=n,this[9]=a,this[10]=u,this[11]=p,this[12]=i,this[13]=c,this[14]=f,this[15]=g,this.check()}toRowMajor(e){return e[0]=this[0],e[1]=this[4],e[2]=this[8],e[3]=this[12],e[4]=this[1],e[5]=this[5],e[6]=this[9],e[7]=this[13],e[8]=this[2],e[9]=this[6],e[10]=this[10],e[11]=this[14],e[12]=this[3],e[13]=this[7],e[14]=this[11],e[15]=this[15],e}identity(){return this.copy(am)}fromObject(e){return this.check()}fromQuaternion(e){return lc(this,e),this.check()}fromMatrix3(e){return this.set(e[0],e[1],e[2],0,e[3],e[4],e[5],0,e[6],e[7],e[8],0,0,0,0,1)}frustum(e){let{left:r,right:n,bottom:i,top:o,near:s=wo,far:a=Eo}=e;return a===1/0?hm(this,r,n,i,o,s):hc(this,r,n,i,o,s,a),this.check()}lookAt(e){let{eye:r,center:n=[0,0,0],up:i=[0,1,0]}=e;return dc(this,r,n,i),this.check()}ortho(e){let{left:r,right:n,bottom:i,top:o,near:s=wo,far:a=Eo}=e;return fc(this,r,n,i,o,s,a),this.check()}orthographic(e){let{fovy:r=om,aspect:n=sm,focalDistance:i=1,near:o=wo,far:s=Eo}=e;wc(r);let a=r/2,c=i*Math.tan(a),l=c*n;return this.ortho({left:-l,right:l,bottom:-c,top:c,near:o,far:s})}perspective(e){let{fovy:r=45*Math.PI/180,aspect:n=1,near:i=.1,far:o=500}=e;return wc(r),uc(this,r,n,i,o),this.check()}determinant(){return tc(this)}getScale(e=[-0,-0,-0]){return e[0]=Math.sqrt(this[0]*this[0]+this[1]*this[1]+this[2]*this[2]),e[1]=Math.sqrt(this[4]*this[4]+this[5]*this[5]+this[6]*this[6]),e[2]=Math.sqrt(this[8]*this[8]+this[9]*this[9]+this[10]*this[10]),e}getTranslation(e=[-0,-0,-0]){return e[0]=this[12],e[1]=this[13],e[2]=this[14],e}getRotation(e,r){e=e||[-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0],r=r||[-0,-0,-0];let n=this.getScale(r),i=1/n[0],o=1/n[1],s=1/n[2];return e[0]=this[0]*i,e[1]=this[1]*o,e[2]=this[2]*s,e[3]=0,e[4]=this[4]*i,e[5]=this[5]*o,e[6]=this[6]*s,e[7]=0,e[8]=this[8]*i,e[9]=this[9]*o,e[10]=this[10]*s,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}getRotationMatrix3(e,r){e=e||[-0,-0,-0,-0,-0,-0,-0,-0,-0],r=r||[-0,-0,-0];let n=this.getScale(r),i=1/n[0],o=1/n[1],s=1/n[2];return e[0]=this[0]*i,e[1]=this[1]*o,e[2]=this[2]*s,e[3]=this[4]*i,e[4]=this[5]*o,e[5]=this[6]*s,e[6]=this[8]*i,e[7]=this[9]*o,e[8]=this[10]*s,e}transpose(){return Ja(this,this),this.check()}invert(){return ec(this,this),this.check()}multiplyLeft(e){return So(this,e,this),this.check()}multiplyRight(e){return So(this,this,e),this.check()}rotateX(e){return oc(this,this,e),this.check()}rotateY(e){return sc(this,this,e),this.check()}rotateZ(e){return ac(this,this,e),this.check()}rotateXYZ(e){return this.rotateX(e[0]).rotateY(e[1]).rotateZ(e[2])}rotateAxis(e,r){return ic(this,this,e,r),this.check()}scale(e){return nc(this,this,Array.isArray(e)?e:[e,e,e]),this.check()}translate(e){return rc(this,this,e),this.check()}transform(e,r){return e.length===4?(r=Sc(r||[-0,-0,-0,-0],e,this),jt(r,4),r):this.transformAsPoint(e,r)}transformAsPoint(e,r){let{length:n}=e,i;switch(n){case 2:i=Sn(r||[-0,-0],e,this);break;case 3:i=Tn(r||[-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return jt(i,e.length),i}transformAsVector(e,r){let n;switch(e.length){case 2:n=wn(r||[-0,-0],e,this);break;case 3:n=En(r||[-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return jt(n,e.length),n}makeRotationX(e){return this.identity().rotateX(e)}makeTranslation(e,r,n){return this.identity().translate([e,r,n])}},Cn,An;function cm(){return Cn||(Cn=new q([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),Object.freeze(Cn)),Cn}function lm(){return An||(An=new q,Object.freeze(An)),An}function wc(t){if(t>Math.PI*2)throw Error("expected radians")}function hm(t,e,r,n,i,o){let s=2*o/(r-e),a=2*o/(i-n),c=(r+e)/(r-e),l=(i+n)/(i-n),h=-1,u=-1,f=-2*o;return t[0]=s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=c,t[9]=l,t[10]=h,t[11]=u,t[12]=0,t[13]=0,t[14]=f,t[15]=0,t}function Ec(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t}function bo(t,e,r){r=r*.5;let n=Math.sin(r);return t[0]=n*e[0],t[1]=n*e[1],t[2]=n*e[2],t[3]=Math.cos(r),t}function vo(t,e,r){let n=e[0],i=e[1],o=e[2],s=e[3],a=r[0],c=r[1],l=r[2],h=r[3];return t[0]=n*h+s*a+i*l-o*c,t[1]=i*h+s*c+o*a-n*l,t[2]=o*h+s*l+n*c-i*a,t[3]=s*h-n*a-i*c-o*l,t}function Tc(t,e,r){r*=.5;let n=e[0],i=e[1],o=e[2],s=e[3],a=Math.sin(r),c=Math.cos(r);return t[0]=n*c+s*a,t[1]=i*c+o*a,t[2]=o*c-i*a,t[3]=s*c-n*a,t}function bc(t,e,r){r*=.5;let n=e[0],i=e[1],o=e[2],s=e[3],a=Math.sin(r),c=Math.cos(r);return t[0]=n*c-o*a,t[1]=i*c+s*a,t[2]=o*c+n*a,t[3]=s*c-i*a,t}function vc(t,e,r){r*=.5;let n=e[0],i=e[1],o=e[2],s=e[3],a=Math.sin(r),c=Math.cos(r);return t[0]=n*c+i*a,t[1]=i*c-n*a,t[2]=o*c+s*a,t[3]=s*c-o*a,t}function Pc(t,e){let r=e[0],n=e[1],i=e[2];return t[0]=r,t[1]=n,t[2]=i,t[3]=Math.sqrt(Math.abs(1-r*r-n*n-i*i)),t}function Rc(t,e,r,n){let i=e[0],o=e[1],s=e[2],a=e[3],c=r[0],l=r[1],h=r[2],u=r[3],f,d,m,p,g;return f=i*c+o*l+s*h+a*u,f<0&&(f=-f,c=-c,l=-l,h=-h,u=-u),1-f>1e-6?(d=Math.acos(f),g=Math.sin(d),m=Math.sin((1-n)*d)/g,p=Math.sin(n*d)/g):(m=1-n,p=n),t[0]=m*i+p*c,t[1]=m*o+p*l,t[2]=m*s+p*h,t[3]=m*a+p*u,t}function Cc(t,e){let r=e[0],n=e[1],i=e[2],o=e[3],s=r*r+n*n+i*i+o*o,a=s?1/s:0;return t[0]=-r*a,t[1]=-n*a,t[2]=-i*a,t[3]=o*a,t}function Ac(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=e[3],t}function Ic(t,e){let r=e[0]+e[4]+e[8],n;if(r>0)n=Math.sqrt(r+1),t[3]=.5*n,n=.5/n,t[0]=(e[5]-e[7])*n,t[1]=(e[6]-e[2])*n,t[2]=(e[1]-e[3])*n;else{let i=0;e[4]>e[0]&&(i=1),e[8]>e[i*3+i]&&(i=2);let o=(i+1)%3,s=(i+2)%3;n=Math.sqrt(e[i*3+i]-e[o*3+o]-e[s*3+s]+1),t[i]=.5*n,n=.5/n,t[3]=(e[o*3+s]-e[s*3+o])*n,t[o]=(e[o*3+i]+e[i*3+o])*n,t[s]=(e[s*3+i]+e[i*3+s])*n}return t}var Nc=mc;var Oc=pc,Gc=xc,Lc=_c,qc=gc;var zc=Mc;var um=yc;var Fc=(function(){let t=Ba(),e=go(1,0,0),r=go(0,1,0);return function(n,i,o){let s=wr(i,o);return s<-.999999?($t(t,e,i),Ha(t)<1e-6&&$t(t,r,i),Da(t,t),bo(n,t,Math.PI),n):s>.999999?(n[0]=0,n[1]=0,n[2]=0,n[3]=1,n):($t(t,i,o),n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=1+s,um(n,n))}})();var De=class extends Mt{constructor(e=0,r=0,n=0,i=1){super(-0,-0,-0,-0),Array.isArray(e)&&arguments.length===1?this.copy(e):this.set(e,r,n,i)}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this.check()}set(e,r,n,i){return this[0]=e,this[1]=r,this[2]=n,this[3]=i,this.check()}fromObject(e){return this[0]=e.x,this[1]=e.y,this[2]=e.z,this[3]=e.w,this.check()}fromMatrix3(e){return Ic(this,e),this.check()}fromEuler(e){switch(this.identity(),e.order){case"xyz":return this.rotateX(e.x).rotateY(e.y).rotateZ(e.z);case"yxz":return this.rotateY(e.y).rotateX(e.x).rotateZ(e.z);case"zxy":return this.rotateZ(e.z).rotateX(e.x).rotateY(e.y);case"zyx":return this.rotateZ(e.z).rotateY(e.y).rotateX(e.x);case"yzx":return this.rotateY(e.y).rotateZ(e.z).rotateX(e.x);case"xzy":return this.rotateX(e.x).rotateZ(e.z).rotateY(e.y);default:throw new Error("Unknown Euler angle order")}}fromAxisRotation(e,r){return bo(this,e,r),this.check()}identity(){return Ec(this),this.check()}setAxisAngle(e,r){return this.fromAxisRotation(e,r)}get ELEMENTS(){return 4}get x(){return this[0]}set x(e){this[0]=H(e)}get y(){return this[1]}set y(e){this[1]=H(e)}get z(){return this[2]}set z(e){this[2]=H(e)}get w(){return this[3]}set w(e){this[3]=H(e)}len(){return qc(this)}lengthSquared(){return zc(this)}dot(e){return Gc(this,e)}rotationTo(e,r){return Fc(this,e,r),this.check()}add(e){return Nc(this,this,e),this.check()}calculateW(){return Pc(this,this),this.check()}conjugate(){return Ac(this,this),this.check()}invert(){return Cc(this,this),this.check()}lerp(e,r,n){return n===void 0?this.lerp(this,e,r):(Lc(this,e,r,n),this.check())}multiplyRight(e){return vo(this,this,e),this.check()}multiplyLeft(e){return vo(this,e,this),this.check()}normalize(){let e=this.len(),r=e>0?1/e:0;return this[0]=this[0]*r,this[1]=this[1]*r,this[2]=this[2]*r,this[3]=this[3]*r,e===0&&(this[3]=1),this.check()}rotateX(e){return Tc(this,this,e),this.check()}rotateY(e){return bc(this,this,e),this.check()}rotateZ(e){return vc(this,this,e),this.check()}scale(e){return Oc(this,this,e),this.check()}slerp(e,r,n){let i,o,s;return arguments.length===2?(i=this,o=e,s=r):(i=e,o=r,s=n),Rc(this,i,o,s),this.check()}lengthSq(){return this.lengthSquared()}setFromAxisAngle(e,r){return this.setAxisAngle(e,r)}premultiply(e){return this.multiplyLeft(e)}multiply(e){return this.multiplyRight(e)}};function In(t,e,r=t){let n=t.x,i=t.y,o=t.z,{semiMajorAxis:s,semiMinorAxis:a,eccentricitySquared:c}=e,l=Math.sin(i),h=Math.cos(i),u=a/s,f=c<.9?s/Math.sqrt(1-c*l*l):s/Math.hypot(h,u*l),d=(f+o)*h*Math.cos(n),m=(f+o)*h*Math.sin(n),p=(f*(c<.9?1-c:u*u)+o)*l;return xt(r,d,m,p)}function Nn(t,e,r=t){let n=t.x,i=t.y,o=t.z,{semiMajorAxis:s,semiMinorAxis:a,eccentricitySquared:c}=e,l=Math.hypot(n,i),h=Math.hypot(n,i,o);if(!(h>0)||!Number.isFinite(h))return!1;if(c===0)return xt(r,l===0?0:Math.atan2(i,n),Math.atan2(o,l),h-s);if(l===0)return xt(r,0,Math.sign(o)*Math.PI/2,Math.abs(o)-a);let u=l/s,f=o/a;if(u*u+f*f<1-16*Number.EPSILON)return fm(n,i,o,l,s,a,r);if(c>=.9)return Bc(n,i,o,l,s,a,r);let d=o/h,m=l/h,p=1/Math.sqrt(1-c*(2-c)*m*m),g=m*(1-c)*p,y=d*p;for(let x=0;x<30;x++){let S=s/Math.sqrt(1-c*y*y),_=l*g+o*y-S*(1-c*y*y),w=c*S/(S+_);p=1/Math.sqrt(1-w*(2-w)*m*m);let E=m*(1-w)*p,v=d*p;if(Math.abs(v*g-E*y)<=1e-12){if(!Number.isFinite(_)||!Number.isFinite(v)||!Number.isFinite(E))break;return xt(r,Math.atan2(i,n),Math.atan2(v,Math.abs(E)),_)}g=E,y=v}return Bc(n,i,o,l,s,a,r)}function fm(t,e,r,n,i,o,s){let a=o/i,c=a*a,l=n/i,h=r/i,u=1-c;if(!(c>0)||a>1)return!1;if(r===0)return l<u?!1:xt(s,Math.atan2(e,t),0,n-i);let f=i*i,d=o*o,m=Number.isFinite(f)&&f>0?(d-c*f+yt(o,o,d)-c*yt(i,i,f)-yt(c,f,c*f))/f:0,p=n*n,g=t*t,y=e*e,x=g+y,S=Number.isFinite(p)&&p>0?(x-p+Po(g,y,x)+yt(t,t,g)+yt(e,e,y)-yt(n,n,p))/(2*n):0,_=i*c,w=n-i+_,E=S+Po(n-i,_,w)+yt(i,c,_)+i*m,v=Math.abs(h)*a;if(!(v>0))return!1;let T=0,I=c,P=Math.max(v,l-u);P>T&&P<I||(P=I/2);for(let R=0;R<128;R++){let N=u+P,z=l/N,O=v/P,k=i*P,U=w-k,ze=(U+(Po(w,-k,U)+E-yt(i,P,k)))/(i*N)*(z+1),re=ze+O*O;if(Math.abs(re)<=4*Number.EPSILON*(Math.abs(ze)+O*O)||I-T<=4*Number.EPSILON*P){let He=Math.atan2(h/P,l/N),Re=Math.sin(He),dn=Math.cos(He);return xt(s,Math.atan2(e,t),He,n*dn+r*Re-i*Math.hypot(dn,a*Re))}re>0?T=P:I=P;let lt=-2*(z*z/N+O*O/P),Je=P-re/lt,Ut=Number.isFinite(Je)&&Je>T&&Je<I?Je:T+(I-T)/2;if(Ut===P){let He=Math.atan2(h/P,l/N);return xt(s,Math.atan2(e,t),He,n*Math.cos(He)+r*Math.sin(He)-i*Math.hypot(Math.cos(He),a*Math.sin(He)))}P=Ut}return!1}function Po(t,e,r){let n=r-t;return t-(r-n)+(e-n)}function yt(t,e,r){let n=134217729*t,i=134217729*e;if(!Number.isFinite(n)||!Number.isFinite(i))return 0;let o=n-(n-t),s=i-(i-e),a=t-o,c=e-s;return o*s-r+o*c+a*s+a*c}function Bc(t,e,r,n,i,o,s){let a=o/i,c=a*a,l=n/i,h=r/i,u=Math.hypot(l,r/o);if(!Number.isFinite(u)||u<1-8*Number.EPSILON||!(c>0))return!1;let f=0,d=Math.hypot(l,h*a);if(!Number.isFinite(d))return!1;let m=u<=1+8*Number.EPSILON?0:d/2;for(let p=0;p<96;p++){let g=1+m,y=c+m,x=l/g,S=h*a/y,_=Math.hypot(x,S),w=_-1;if(Math.abs(w)<=4*Number.EPSILON){let T=Math.atan2(h/y,l/g),I=Math.sin(T),P=Math.cos(T),R=n*P+r*I-i*Math.hypot(P,a*I);return xt(s,Math.atan2(e,t),T,R)}w>0?f=m:d=m;let E=-(x*x/g+S*S/y)/_,v=m-w/E;m=Number.isFinite(v)&&v>f&&v<d?v:(f+d)/2}return!1}function xt(t,e,r,n){return!Number.isFinite(e)||!Number.isFinite(r)||!Number.isFinite(n)?!1:(t.x=e,t.y=r,t.z=n,!0)}var ht=6356752314245179e-9,dm={radii:[6378137,6378137,ht],radiiSquared:[6378137*6378137,6378137*6378137,ht*ht],oneOverRadii:[1/6378137,1/6378137,1/ht],oneOverRadiiSquared:[1/(6378137*6378137),1/(6378137*6378137),1/(ht*ht)],maximumRadius:Math.max(6378137,6378137,ht),centerToleranceSquared:.1};function Ro(t){return t}var jy=new M;function mm(t,e=[],r=Ro){return"longitude"in t?(e[0]=r(t.longitude),e[1]=r(t.latitude),e[2]=t.height):"x"in t?(e[0]=r(t.x),e[1]=r(t.y),e[2]=t.z):(e[0]=r(t[0]),e[1]=r(t[1]),e[2]=t[2]),e}function Co(t,e=[]){return mm(t,e,K._cartographicRadians?Ro:ho)}function Ao(t,e,r,n){let i=K._cartographicRadians?Ro:uo,o=i(t),s=i(e);return"longitude"in n?(n.longitude=o,n.latitude=s,n.height=r):"x"in n?(n.x=o,n.y=s,n.z=r):(n[0]=o,n[1]=s,n[2]=r),n}function Dc(){return{eastX:0,eastY:1,northZ:1,upX:1,upY:0,upZ:0}}function kc(t,e,r){let n=t.x,i=t.y,o=t.z,s=e.x,a=e.y,c=e.z;return o!==0?!1:pm(r,n,i,s*i-a*n,s,a,c)}function Uc(t,e,r,n,i,o){let s=Io(r),a=Io(n),c=Io(i),l=Math.abs(s),h=Math.abs(a),u=Math.abs(c);if(!l||!h||!u||l===h||l===u||h===u||(l%3+1===h?1:-1)*Math.sign(s*a*c)!==1||!Array.isArray(o)&&o.length<16)return!1;let d=t.eastX,m=t.eastY,p=t.northZ,g=t.upX,y=t.upY,x=t.upZ,S=-x*m,_=x*d,w=e.x,E=e.y,v=e.z,T=(l===1?d:l===2?S:g)*Math.sign(s),I=(l===1?m:l===2?_:y)*Math.sign(s),P=(l===1?0:l===2?p:x)*Math.sign(s),R=(h===1?d:h===2?S:g)*Math.sign(a),N=(h===1?m:h===2?_:y)*Math.sign(a),z=(h===1?0:h===2?p:x)*Math.sign(a),O=(u===1?d:u===2?S:g)*Math.sign(c),k=(u===1?m:u===2?_:y)*Math.sign(c),U=(u===1?0:u===2?p:x)*Math.sign(c);return!Number.isFinite(T)||!Number.isFinite(I)||!Number.isFinite(P)||!Number.isFinite(R)||!Number.isFinite(N)||!Number.isFinite(z)||!Number.isFinite(O)||!Number.isFinite(k)||!Number.isFinite(U)||!Number.isFinite(w)||!Number.isFinite(E)||!Number.isFinite(v)||o instanceof Float32Array&&(!Number.isFinite(Math.fround(T))||!Number.isFinite(Math.fround(I))||!Number.isFinite(Math.fround(P))||!Number.isFinite(Math.fround(R))||!Number.isFinite(Math.fround(N))||!Number.isFinite(Math.fround(z))||!Number.isFinite(Math.fround(O))||!Number.isFinite(Math.fround(k))||!Number.isFinite(Math.fround(U))||!Number.isFinite(Math.fround(w))||!Number.isFinite(Math.fround(E))||!Number.isFinite(Math.fround(v)))?!1:(o[0]=T,o[1]=I,o[2]=P,o[3]=0,o[4]=R,o[5]=N,o[6]=z,o[7]=0,o[8]=O,o[9]=k,o[10]=U,o[11]=0,o[12]=w,o[13]=E,o[14]=v,o[15]=1,!0)}function Io(t){switch(t){case"east":return 1;case"west":return-1;case"north":return 2;case"south":return-2;case"up":return 3;case"down":return-3;default:return 0}}function pm(t,e,r,n,i,o,s){return!Number.isFinite(e)||!Number.isFinite(r)||!Number.isFinite(n)||!Number.isFinite(i)||!Number.isFinite(o)||!Number.isFinite(s)?!1:(t.eastX=e,t.eastY=r,t.northZ=n,t.upX=i,t.upY=o,t.upZ=s,!0)}var Vc=1e-14,gm=new M,jc=Dc(),Wc={up:{south:"east",north:"west",west:"south",east:"north"},down:{south:"west",north:"east",west:"north",east:"south"},south:{up:"west",down:"east",west:"down",east:"up"},north:{up:"east",down:"west",west:"up",east:"down"},west:{up:"north",down:"south",north:"down",south:"up"},east:{up:"south",down:"north",north:"up",south:"down"}},No={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},Yt={east:new M,north:new M,up:new M,west:new M,south:new M,down:new M},Mm=new M,ym=new M,xm=new M;function Oo(t,e,r,n,i,o){let s=Wc[e]&&Wc[e][r];ae(s&&(!n||n===s));let a,c,l,h=gm.copy(i),u=Ce(h.x,0,Vc)&&Ce(h.y,0,Vc),f=t.radii;if(f.x===f.y&&f.x>0&&f.z>0&&f.z<=f.x&&(!u||h.z!==0)){let{east:I,up:P}=Yt;if(u?(I.set(0,1,0),P.set(0,0,Math.sign(h.z))):(I.set(-h.y,h.x,0).normalize(),t.geodeticSurfaceNormal(h,P)),!kc(I,P,jc)||!Uc(jc,h,e,r,n,o))throw new Error("Unsupported local frame");return o}if(u){let I=Math.sign(h.z);a=Mm.fromArray(No[e]),e!=="east"&&e!=="west"&&a.scale(I),c=ym.fromArray(No[r]),r!=="east"&&r!=="west"&&c.scale(I),l=xm.fromArray(No[n]),n!=="east"&&n!=="west"&&l.scale(I)}else{let{up:I,east:P,north:R}=Yt;P.set(-h.y,h.x,0).normalize(),t.geodeticSurfaceNormal(h,I),R.copy(I).cross(P);let{down:N,west:z,south:O}=Yt;N.copy(I).scale(-1),z.copy(P).scale(-1),O.copy(R).scale(-1),a=Yt[e],c=Yt[r],l=Yt[n]}let d=a.x,m=a.y,p=a.z,g=c.x,y=c.y,x=c.z,S=l.x,_=l.y,w=l.z,E=h.x,v=h.y,T=h.z;return o[0]=d,o[1]=m,o[2]=p,o[3]=0,o[4]=g,o[5]=y,o[6]=x,o[7]=0,o[8]=S,o[9]=_,o[10]=w,o[11]=0,o[12]=E,o[13]=v,o[14]=T,o[15]=1,o}var Hc=new M,_m=new M,Sm=new M;function $c(t,e,r=[]){let{oneOverRadii:n,oneOverRadiiSquared:i,centerToleranceSquared:o}=e,s=t,a="x"in t?s.x:t[0],c="x"in t?s.y:t[1],l="x"in t?s.z:t[2];if(!Number.isFinite(a)||!Number.isFinite(c)||!Number.isFinite(l))return;Hc.set(a,c,l);let h=n.x,u=n.y,f=n.z,d=a*a*h*h,m=c*c*u*u,p=l*l*f*f,g=d+m+p,y=Math.sqrt(1/g);if(!Number.isFinite(y)||!Number.isFinite(g))return;let x=_m;if(x.set(a,c,l).scale(y),g<o)return On(r,x.x,x.y,x.z);let S=i.x,_=i.y,w=i.z,E=Sm;E.set(x.x*S*2,x.y*_*2,x.z*w*2);let v=(1-y)*Hc.len()/(.5*E.len()),T=0,I,P,R,N;for(let z=0;z<64;z++){v-=T,I=1/(1+v*S),P=1/(1+v*_),R=1/(1+v*w);let O=I*I,k=P*P,U=R*R,Pe=O*I,ze=k*P,re=U*R;if(N=d*O+m*k+p*U-1,!Number.isFinite(N))return;if(Math.abs(N)<=j.EPSILON12)return On(r,a*I,c*P,l*R);let Je=-2*(d*Pe*S+m*ze*_+p*re*w);if(!Number.isFinite(Je)||Je===0||(T=N/Je,!Number.isFinite(T)))return}}function On(t,e,r,n){if(Fe(t))t[0]=e,t[1]=r,t[2]=n;else{let i=t;i.x=e,i.y=r,i.z=n}return t}var _e={x:0,y:0,z:0},Gn=new M,Yc=new M,Tm=new M,$e=new M,bm=new M,Er=new M,G=class t{static fromSpheroid(e){let{semiMajorAxis:r,semiMinorAxis:n}=e;return Kc(r,n),new t(r,r,n)}constructor(e=0,r=0,n=0){this.centerToleranceSquared=j.EPSILON1,ae(e>=0),ae(r>=0),ae(n>=0),this.radii=new M(e,r,n),this.radiiSquared=new M(e*e,r*r,n*n),this.radiiToTheFourth=new M(e*e*e*e,r*r*r*r,n*n*n*n),this.oneOverRadii=new M(e===0?0:1/e,r===0?0:1/r,n===0?0:1/n),this.oneOverRadiiSquared=new M(e===0?0:1/(e*e),r===0?0:1/(r*r),n===0?0:1/(n*n)),this.minimumRadius=Math.min(e,r,n),this.maximumRadius=Math.max(e,r,n),this.radiiSquared.z!==0&&(this.squaredXOverSquaredZ=this.radiiSquared.x/this.radiiSquared.z),e===r&&n>0&&n<=e&&Number.isFinite(this.radiiSquared.x)&&this.radiiSquared.z>0&&(this.spheroidGeometry=Object.freeze({semiMajorAxis:e,semiMinorAxis:n,eccentricitySquared:1-this.radiiSquared.z/this.radiiSquared.x})),Object.freeze(this)}toSpheroid(){let{x:e,y:r,z:n}=this.radii;if(e!==r)throw new Error("Spheroid requires equal X/Y radii");return Kc(e,n),Object.freeze({semiMajorAxis:e,semiMinorAxis:n})}equals(e){return this===e||!!(e&&this.radii.equals(e.radii))}toString(){return this.radii.toString()}cartographicToCartesian(e,r=[0,0,0]){if(this.spheroidGeometry){let a=Co(e,Er);return _e.x=a[0],_e.y=a[1],_e.z=a[2],In(_e,this.spheroidGeometry)?On(r,_e.x,_e.y,_e.z):void 0}let n=Yc,i=Tm,[,,o]=e;this.geodeticSurfaceNormalCartographic(e,n),i.copy(this.radiiSquared).scale(n);let s=Math.sqrt(n.dot(i));return i.scale(1/s),n.scale(o),i.add(n),i.to(r)}cartesianToCartographic(e,r=[0,0,0]){let n=e,i="x"in e?n.x:e[0],o="x"in e?n.y:e[1],s="x"in e?n.z:e[2];if(!Number.isFinite(i)||!Number.isFinite(o)||!Number.isFinite(s))return;if(this.spheroidGeometry&&Number.isFinite(i*i+o*o+s*s)&&Number.isFinite(this.oneOverRadiiSquared.x)&&Number.isFinite(this.oneOverRadiiSquared.z)){if(_e.x=i,_e.y=o,_e.z=s,!Nn(_e,this.spheroidGeometry))return;let d=i===0&&o===0?Math.atan2(o,i):_e.x;return Ao(d,_e.y,_e.z,r)}Er.set(i,o,s);let a=this.scaleToGeodeticSurface(Er,$e);if(!a)return;let c=this.geodeticSurfaceNormal(a,Yc),l=bm;l.copy(Er).subtract(a);let h=Math.atan2(c.y,c.x),u=Math.atan2(c.z,Math.hypot(c.x,c.y)),f=Math.sign(wr(l,Er))*po(l);return Ao(h,u,f,r)}eastNorthUpToFixedFrame(e,r=new q){return Oo(this,"east","north","up",e,r)}localFrameToFixedFrame(e,r,n,i,o=new q){return Oo(this,e,r,n,i,o)}geocentricSurfaceNormal(e,r=[0,0,0]){return Gn.from(e).normalize().to(r)}geodeticSurfaceNormalCartographic(e,r=[0,0,0]){let n=Co(e),i=n[0],o=n[1],s=Math.cos(o);return Gn.set(s*Math.cos(i),s*Math.sin(i),Math.sin(o)).normalize(),Gn.to(r)}geodeticSurfaceNormal(e,r=[0,0,0]){return Gn.from(e).scale(this.oneOverRadiiSquared).normalize().to(r)}scaleToGeodeticSurface(e,r){return $c(e,this,r)}scaleToGeocentricSurface(e,r=[0,0,0]){$e.from(e);let n=$e.x,i=$e.y,o=$e.z,s=this.oneOverRadiiSquared,a=1/Math.sqrt(n*n*s.x+i*i*s.y+o*o*s.z);return $e.multiplyByScalar(a).to(r)}transformPositionToScaledSpace(e,r=[0,0,0]){return $e.from(e).scale(this.oneOverRadii).to(r)}transformPositionFromScaledSpace(e,r=[0,0,0]){return $e.from(e).scale(this.radii).to(r)}getSurfaceNormalIntersectionWithZAxis(e,r=0,n=[0,0,0]){ae(Ce(this.radii.x,this.radii.y,j.EPSILON15)),ae(this.radii.z>0),$e.from(e);let i=$e.z*(1-this.squaredXOverSquaredZ);if(!(Math.abs(i)>=this.radii.z-r))return $e.set(0,0,i).to(n)}};G.WGS84=new G(6378137,6378137,ht);function Kc(t,e){if(!Number.isFinite(t)||!Number.isFinite(e)||t<=0||e<=0||e>t)throw new Error("Spheroid requires finite positive axes with semiMinorAxis <= semiMajorAxis")}var Go;(function(t){t.OUTSIDE="outside",t.INTERSECTING="intersecting",t.INSIDE="inside"})(Go||(Go={}));var cx=new M,lx=new M;var Tr=new M,Xc=new M,me=class t{constructor(e=[0,0,0],r=0){this.radius=-0,this.center=new M,this.fromCenterRadius(e,r)}fromCenterRadius(e,r){return this.center.from(e),this.radius=r,this}fromCornerPoints(e,r){return r=Tr.from(r),this.center=new M().from(e).add(r).scale(.5),this.radius=this.center.distance(r),this}equals(e){return this===e||!!e&&this.center.equals(e.center)&&this.radius===e.radius}clone(){return new t(this.center,this.radius)}union(e){let r=this.center,n=this.radius,i=e.center,o=e.radius,s=Tr.copy(i).subtract(r),a=s.magnitude();if(n>=a+o)return this.clone();if(o>=a+n)return e.clone();let c=(n+a+o)*.5;return Xc.copy(s).scale((-n+c)/a).add(r),this.center.copy(Xc),this.radius=c,this}expand(e){let n=Tr.from(e).subtract(this.center).magnitude();return n>this.radius&&(this.radius=n),this}transform(e){this.center.transform(e);let r=cc(Tr,e);return this.radius=Math.max(r[0],Math.max(r[1],r[2]))*this.radius,this}distanceSquaredTo(e){let r=this.distanceTo(e);return r*r}distanceTo(e){let n=Tr.from(e).subtract(this.center);return Math.max(0,n.len()-this.radius)}intersectPlane(e){let r=this.center,n=this.radius,o=e.normal.dot(r)+e.distance;return o<-n?"outside":o<n?"intersecting":"inside"}};var vm=new M,Pm=new M,Ln=new M,qn=new M,zn=new M,Rm=new M,Cm=new M,ut={COLUMN0ROW0:0,COLUMN0ROW1:1,COLUMN0ROW2:2,COLUMN1ROW0:3,COLUMN1ROW1:4,COLUMN1ROW2:5,COLUMN2ROW0:6,COLUMN2ROW1:7,COLUMN2ROW2:8},et=class t{constructor(e=[0,0,0],r=[0,0,0,0,0,0,0,0,0]){this.center=new M().from(e),this.halfAxes=new $(r)}get halfSize(){let e=this.halfAxes.getColumn(0),r=this.halfAxes.getColumn(1),n=this.halfAxes.getColumn(2);return[new M(e).len(),new M(r).len(),new M(n).len()]}get quaternion(){let e=this.halfAxes.getColumn(0),r=this.halfAxes.getColumn(1),n=this.halfAxes.getColumn(2),i=new M(e).normalize(),o=new M(r).normalize(),s=new M(n).normalize();return new De().fromMatrix3(new $([...i,...o,...s]))}fromCenterHalfSizeQuaternion(e,r,n){let i=new De(n),o=new $().fromQuaternion(i);return o[0]=o[0]*r[0],o[1]=o[1]*r[0],o[2]=o[2]*r[0],o[3]=o[3]*r[1],o[4]=o[4]*r[1],o[5]=o[5]*r[1],o[6]=o[6]*r[2],o[7]=o[7]*r[2],o[8]=o[8]*r[2],this.center=new M().from(e),this.halfAxes=o,this}clone(){return new t(this.center,this.halfAxes)}equals(e){return this===e||!!e&&this.center.equals(e.center)&&this.halfAxes.equals(e.halfAxes)}getBoundingSphere(e=new me){let r=this.halfAxes,n=r.getColumn(0,Ln),i=r.getColumn(1,qn),o=r.getColumn(2,zn),s=vm.copy(n).add(i).add(o);return e.center.copy(this.center),e.radius=s.magnitude(),e}intersectPlane(e){let r=this.center,n=e.normal,i=this.halfAxes,o=n.x,s=n.y,a=n.z,c=Math.abs(o*i[ut.COLUMN0ROW0]+s*i[ut.COLUMN0ROW1]+a*i[ut.COLUMN0ROW2])+Math.abs(o*i[ut.COLUMN1ROW0]+s*i[ut.COLUMN1ROW1]+a*i[ut.COLUMN1ROW2])+Math.abs(o*i[ut.COLUMN2ROW0]+s*i[ut.COLUMN2ROW1]+a*i[ut.COLUMN2ROW2]),l=n.dot(r)+e.distance;return l<=-c?"outside":l>=c?"inside":"intersecting"}distanceTo(e){return Math.sqrt(this.distanceSquaredTo(e))}distanceSquaredTo(e){let r=Pm.from(e).subtract(this.center),n=this.halfAxes,i=n.getColumn(0,Ln),o=n.getColumn(1,qn),s=n.getColumn(2,zn),a=i.magnitude(),c=o.magnitude(),l=s.magnitude();i.normalize(),o.normalize(),s.normalize();let h=0,u;return u=Math.abs(r.dot(i))-a,u>0&&(h+=u*u),u=Math.abs(r.dot(o))-c,u>0&&(h+=u*u),u=Math.abs(r.dot(s))-l,u>0&&(h+=u*u),h}computePlaneDistances(e,r,n=[-0,-0]){let i=Number.POSITIVE_INFINITY,o=Number.NEGATIVE_INFINITY,s=this.center,a=this.halfAxes,c=a.getColumn(0,Ln),l=a.getColumn(1,qn),h=a.getColumn(2,zn),u=Rm.copy(c).add(l).add(h).add(s),f=Cm.copy(u).subtract(e),d=r.dot(f);return i=Math.min(d,i),o=Math.max(d,o),u.copy(s).add(c).add(l).subtract(h),f.copy(u).subtract(e),d=r.dot(f),i=Math.min(d,i),o=Math.max(d,o),u.copy(s).add(c).subtract(l).add(h),f.copy(u).subtract(e),d=r.dot(f),i=Math.min(d,i),o=Math.max(d,o),u.copy(s).add(c).subtract(l).subtract(h),f.copy(u).subtract(e),d=r.dot(f),i=Math.min(d,i),o=Math.max(d,o),s.copy(u).subtract(c).add(l).add(h),f.copy(u).subtract(e),d=r.dot(f),i=Math.min(d,i),o=Math.max(d,o),s.copy(u).subtract(c).add(l).subtract(h),f.copy(u).subtract(e),d=r.dot(f),i=Math.min(d,i),o=Math.max(d,o),s.copy(u).subtract(c).subtract(l).add(h),f.copy(u).subtract(e),d=r.dot(f),i=Math.min(d,i),o=Math.max(d,o),s.copy(u).subtract(c).subtract(l).subtract(h),f.copy(u).subtract(e),d=r.dot(f),i=Math.min(d,i),o=Math.max(d,o),n[0]=i,n[1]=o,n}transform(e){this.center.transformAsPoint(e);let r=this.halfAxes.getColumn(0,Ln);r.transformAsPoint(e);let n=this.halfAxes.getColumn(1,qn);n.transformAsPoint(e);let i=this.halfAxes.getColumn(2,zn);return i.transformAsPoint(e),this.halfAxes=new $([...r,...n,...i]),this}getTransform(){throw new Error("not implemented")}};var Zc=new M,Qc=new M,ie=class t{constructor(e=[0,0,1],r=0){this.normal=new M,this.distance=-0,this.fromNormalDistance(e,r)}fromNormalDistance(e,r){return ae(Number.isFinite(r)),this.normal.from(e).normalize(),this.distance=r,this}fromPointNormal(e,r){e=Zc.from(e),this.normal.from(r).normalize();let n=-this.normal.dot(e);return this.distance=n,this}fromCoefficients(e,r,n,i){return this.normal.set(e,r,n),ae(Ce(this.normal.len(),1)),this.distance=i,this}clone(){return new t(this.normal,this.distance)}equals(e){return Ce(this.distance,e.distance)&&Ce(this.normal,e.normal)}getPointDistance(e){return this.normal.dot(e)+this.distance}transform(e){let r=Qc.copy(this.normal).transformAsVector(e).normalize(),n=this.normal.scale(-this.distance).transform(e);return this.fromPointNormal(n,r)}projectPointOntoPlane(e,r=[0,0,0]){let n=Zc.from(e),i=this.getPointDistance(n),o=Qc.copy(this.normal).scale(i);return n.subtract(o).to(r)}intersectWithRay(e,r=new M){let n=e.origin,i=e.direction,o=this.normal,s=o.dot(i);if(Math.abs(s)<j.EPSILON15)return;let a=(-this.distance-o.dot(n))/s;if(!(a<0))return r.copy(i).multiplyByScalar(a).add(n)}};var Jc=[new M([1,0,0]),new M([0,1,0]),new M([0,0,1])],el=new M,Am=new M,ce=class t{constructor(e=[]){this.planes=e}fromBoundingSphere(e){this.planes.length=2*Jc.length;let r=e.center,n=e.radius,i=0;for(let o of Jc){let s=this.planes[i],a=this.planes[i+1];s||(s=this.planes[i]=new ie),a||(a=this.planes[i+1]=new ie);let c=el.copy(o).scale(-n).add(r);s.fromPointNormal(c,o);let l=el.copy(o).scale(n).add(r),h=Am.copy(o).negate();a.fromPointNormal(l,h),i+=2}return this}computeVisibility(e){let r="inside";for(let n of this.planes)switch(e.intersectPlane(n)){case"outside":return"outside";case"intersecting":r="intersecting";break;default:}return r}computeVisibilityWithPlaneMask(e,r){if(ae(Number.isFinite(r),"parentPlaneMask is required."),r===t.MASK_OUTSIDE||r===t.MASK_INSIDE)return r;let n=t.MASK_INSIDE,i=this.planes;for(let o=0;o<this.planes.length;++o){let s=o<31?1<<o:0;if(o<31&&(r&s)===0)continue;let a=i[o],c=e.intersectPlane(a);if(c==="outside")return t.MASK_OUTSIDE;c==="intersecting"&&(n|=s)}return n}};ce.MASK_OUTSIDE=4294967295;ce.MASK_INSIDE=0;ce.MASK_INDETERMINATE=2147483647;var Dx=new M,kx=new M,Ux=new M,Vx=new M,jx=new M;var Xx=new M,Zx=new M,Qx=new M,Jx=new M,e_=new M,t_=new M,r_=new M,n_=new M,i_=new M,o_=new M,s_=new M,a_=new M;var h_=new $,u_=new $,f_=new $,d_=new $,m_=new $;var __=new M,S_=new M,w_=new M,E_=new M,T_=new M,b_=new $,v_={diagonal:new $,unitary:new $};var Gm=new M,Lo=new M,Lm=new q,qm=new M,br=class{constructor(e,r=G.WGS84){let n=r.scaleToGeodeticSurface(e,Gm),i=r.eastNorthUpToFixedFrame(n,Lm);this._origin=new M(n),this._xAxis=new M(Lo.from(i.getColumn(0))),this._yAxis=new M(Lo.from(i.getColumn(1)));let o=new M(Lo.from(i.getColumn(2)));this._plane=new ie().fromPointNormal(this._origin,o)}projectPointToNearestOnPlane(e,r){r||(r=new Be);let i=this._plane.projectPointOntoPlane(e,qm).subtract(this._origin),o=this._xAxis.dot(i),s=this._yAxis.dot(i);return r.x=o,r.y=s,r}get plane(){return this._plane}get origin(){return this._origin}get xAxis(){return this._xAxis}get yAxis(){return this._yAxis}get zAxis(){return this._plane.normal}};var Kt=class{constructor(e,r,n,i){this.west=e,this.south=r,this.east=n,this.north=i}static center(e,r){r||(r=new M);let n=e.east,i=e.west;n<i&&(n+=j.TWO_PI);let o=fo((i+n)*.5,"negative-pi-to-pi"),s=(e.south+e.north)*.5;return r.x=o,r.y=s,r.z=0,r}get width(){let e=this.east,r=this.west;return e<r&&(e+=j.TWO_PI),e-r}};var zm=new M,Fm=new M,Bm=new M,Dm=new M,km=new M,Um=new M,Vm=new M,jm=new M,nl=new M,Wm=new M,il=new M,Hm=new M,$m=new Be,Ym=new Be,Km=new Be,Xm=new Be,Zm=new Be,Qm=new ie,Jm=new M,ep=new M,tp=new M,rp=new M,np=new Be,ip=new M,op=new M,sp=new M(1,0,0),ap=new M(0,0,1);function vr(t,e=G.WGS84,r={}){if(!t||t.length!==6||t.some(x=>!Number.isFinite(x)))throw new Error("makeOBBFromRegion: region must contain exactly six finite numbers");let n=r.units==="degrees"?yn(1):1,[i,o,s,a,c,l]=t;if(c>l)throw new Error("makeOBBFromRegion: minimumHeight must not exceed maximumHeight");let h=o*n,u=a*n,f=ol(i*n),d=ol(s*n);s*n-i*n>=j.TWO_PI-1e-12&&(d=f+j.TWO_PI);let p=1e-12;if(h>u||h<-j.PI_OVER_TWO-p||u>j.PI_OVER_TWO+p)throw new Error("makeOBBFromRegion: latitude must be within [-\u03C0/2, \u03C0/2] and south \u2264 north");let g=Math.max(-j.PI_OVER_TWO,Math.min(j.PI_OVER_TWO,h)),y=Math.max(-j.PI_OVER_TWO,Math.min(j.PI_OVER_TWO,u));return cp([f,g,d,y,c,l],e,r.transform)}function ol(t){let e=((t+Math.PI)%j.TWO_PI+j.TWO_PI)%j.TWO_PI-Math.PI;return e===-Math.PI&&t>0?Math.PI:e}function cp(t,e,r){let n=new et,[i,o,s,a,c,l]=t,h=ye(a),u=ye(o),f,d,m,p,g,y,x,S=new Kt(i,o,s,a),_=Kt.center(S,Fm),w=new M([ye(_.x),ye(_.y),0]),E=_.x,v=w.x;if(S.width<=j.PI){let Ut=ye(i),He=e.cartographicToCartesian(w),Re=new br(He,e),dn=u<0&&h>0?0:w.y,id=Bm.copy([v,h,l]),io=Dm.copy([Ut,h,l]),od=km.copy([Ut,dn,l]),oo=Um.copy([Ut,u,l]),sd=Vm.copy([v,u,l]),ad=e.cartographicToCartesian(id,jm),so=e.cartographicToCartesian(io,nl),cd=e.cartographicToCartesian(od,Wm),ao=e.cartographicToCartesian(oo,il),ld=e.cartographicToCartesian(sd,Hm),hd=Re.projectPointToNearestOnPlane(ad,$m),Ca=Re.projectPointToNearestOnPlane(so,Ym),ud=Re.projectPointToNearestOnPlane(cd,Km),Aa=Re.projectPointToNearestOnPlane(ao,Xm),fd=Re.projectPointToNearestOnPlane(ld,Zm);return p=Math.min(Ca.x,ud.x,Aa.x),f=-p,d=Math.max(Ca.y,hd.y),g=Math.min(Aa.y,fd.y),io.z=oo.z=c,so=e.cartographicToCartesian(io,nl),ao=e.cartographicToCartesian(oo,il),x=Re.plane,y=Math.min(x.getPointDistance(so),x.getPointDistance(ao)),m=l,sl(cl(Re.origin,Re.xAxis,Re.yAxis,Re.zAxis,p,f,g,d,y,m,n),r)}let T=ye(s),I=o>0,P=a<0,R=I?u:P?h:0,N=e.cartographicToCartesian([v,R,l],Jm);N.z=0;let O=Math.abs(N.x)<j.EPSILON10&&Math.abs(N.y)<j.EPSILON10?sp:ep.copy(N).normalize(),k=ap,U=tp.copy(O).cross(k);x=Qm.fromPointNormal(N,O);let Pe=e.cartographicToCartesian([ye(E+j.PI_OVER_TWO),R,l],rp);f=x.projectPointOntoPlane(Pe,np).dot(U),p=-f;let re=P?c:l,lt=I?c:l;d=al(e,h,re,!0),g=al(e,u,lt,!1);let Je=e.cartographicToCartesian([T,R,l],op);return y=x.getPointDistance(Je),m=0,sl(cl(N,U,k,O,p,f,g,d,y,m,n),r)}function sl(t,e){if(!e)return t;let r=[0,1,2].map(a=>t.halfAxes.getColumn(a,new M)),n=e.transformAsPoint(t.center),i=[1/0,1/0,1/0],o=[-1/0,-1/0,-1/0];for(let a=0;a<8;a++){let c=new M(n);for(let l=0;l<3;l++){let h=e.transformAsVector(r[l]);c.add(new M(h).scale((a&1<<l)===0?-1:1))}for(let l=0;l<3;l++)i[l]=Math.min(i[l],c[l]),o[l]=Math.max(o[l],c[l])}t.center.copy(i).add(o).scale(.5);let s=new M(o).subtract(i).scale(.5);return t.halfAxes=new $().set(s.x,0,0,0,s.y,0,0,0,s.z),t}function al(t,e,r,n){let i=n?-1/0:1/0;for(let o of[0,90,180,270]){let s=t.cartographicToCartesian([o,e,r],ip).z;i=n?Math.max(i,s):Math.min(i,s)}return i}function cl(t,e,r,n,i,o,s,a,c,l,h){let u=h.center,f=h.halfAxes;f.setColumn(0,e),f.setColumn(1,r),f.setColumn(2,n);let d=zm.set((i+o)/2,(s+a)/2,(c+l)/2).transformByMatrix3(f),m=(o-i)/2,p=(a-s)/2,g=(l-c)/2;return f[0]*=m,f[1]*=m,f[2]*=m,f[3]*=p,f[4]*=p,f[5]*=p,f[6]*=g,f[7]*=g,f[8]*=g,u.copy(t).add(d),h}function Pr(){let t;if(typeof window<"u"&&window.performance)t=window.performance.now();else if(typeof process<"u"&&process.hrtime){let e=process.hrtime();t=e[0]*1e3+e[1]/1e6}else t=Date.now();return t}var Ct=class{constructor(e,r){this.sampleSize=1,this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this.name=e,this.type=r,this.reset()}reset(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}setSampleSize(e){return this.sampleSize=e,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(e){return this._count+=e,this._samples++,this._checkSampling(),this}subtractCount(e){return this._count-=e,this._samples++,this._checkSampling(),this}addTime(e){return this._time+=e,this.lastTiming=e,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=Pr(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(Pr()-this._startTime),this._timerPending=!1,this._checkSampling(),this):this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}};var ke=class{constructor(e){this.stats={},this.id=e.id,this.stats={},this._initializeStats(e.stats),Object.seal(this)}get(e,r="count"){return this._getOrCreate({name:e,type:r})}get size(){return Object.keys(this.stats).length}reset(){for(let e of Object.values(this.stats))e.reset();return this}forEach(e){for(let r of Object.values(this.stats))e(r)}getTable(){let e={};return this.forEach(r=>{e[r.name]={time:r.time||0,count:r.count||0,average:r.getAverageTime()||0,hz:r.getHz()||0}}),e}_initializeStats(e=[]){e.forEach(r=>this._getOrCreate(r))}_getOrCreate(e){let{name:r,type:n}=e,i=this.stats[r];return i||(e instanceof Ct?i=e:i=new Ct(r,n),this.stats[r]=i),i}};function Ye(t,e){if(!t)throw new Error(e||"loader assertion failed.")}function Bn(t,e,r){let n=r!==void 0?new Uint8Array(t).subarray(e,e+r):new Uint8Array(t).subarray(e);return new Uint8Array(n).buffer}var hp="Queued Requests",up="Active Requests",fp="Cancelled Requests",dp="Queued Requests Ever",mp="Active Requests Ever",pp={id:"request-scheduler",throttleRequests:!0,maxRequests:6,debounceTime:0},ft=class{props;stats;activeRequestCount=0;requestQueue=[];requestMap=new Map;updateTimer=null;constructor(e={}){this.props={...pp,...e},this.stats=new ke({id:this.props.id}),this.stats.get(hp),this.stats.get(up),this.stats.get(fp),this.stats.get(dp),this.stats.get(mp)}setProps(e){e.throttleRequests!==void 0&&(this.props.throttleRequests=e.throttleRequests),e.maxRequests!==void 0&&(this.props.maxRequests=e.maxRequests),e.debounceTime!==void 0&&(this.props.debounceTime=e.debounceTime)}scheduleRequest(e,r=()=>0){if(!this.props.throttleRequests)return Promise.resolve({done:()=>{}});if(this.requestMap.has(e))return this.requestMap.get(e);let n={handle:e,priority:0,getPriority:r},i=new Promise(o=>(n.resolve=o,n));return this.requestQueue.push(n),this.requestMap.set(e,i),this._issueNewRequests(),i}_issueRequest(e){let{handle:r,resolve:n}=e,i=!1,o=()=>{i||(i=!0,this.requestMap.delete(r),this.activeRequestCount--,this.scheduleRefill())};return this.activeRequestCount++,n?n({done:o}):Promise.resolve({done:o})}scheduleRefill(){this.updateTimer===null&&(this.updateTimer=setTimeout(()=>this._issueNewRequestsAsync(),0))}_issueNewRequests(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(()=>this._issueNewRequestsAsync(),this.props.debounceTime)}_issueNewRequestsAsync(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=null;let e=Math.max(this.props.maxRequests-this.activeRequestCount,0);if(e!==0){this._updateAllRequests();for(let r=0;r<e;++r){let n=this.requestQueue.shift();n&&this._issueRequest(n)}}}_updateAllRequests(){let e=this.requestQueue;for(let r=0;r<e.length;++r){let n=e[r];this._updateRequest(n)||(e.splice(r,1),this.requestMap.delete(n.handle),r--)}e.sort((r,n)=>r.priority-n.priority)}_updateRequest(e){return e.priority=e.getPriority(e.handle),e.priority<0?(e.resolve(null),!1):!0}};var gp=Number.POSITIVE_INFINITY,Mp=Number.POSITIVE_INFINITY,Rr=class{maxEntries;maxBytes;getByteLength;onRemove;entries=new Map;retainedByteLength=0;constructor(e={}){this.maxEntries=ll(e.maxEntries,gp,"maxEntries"),this.maxBytes=ll(e.maxBytes,Mp,"maxBytes"),this.getByteLength=e.getByteLength||(()=>0),this.onRemove=e.onRemove}get size(){return this.entries.size}get pendingSize(){let e=0;for(let r of this.entries.values())e+=r.pending?1:0;return e}get byteLength(){return this.retainedByteLength}get(e,r){let n=this.entries.get(e);if(n)return this.touch(e,n),this.waitForEntry(e,n,r)}has(e){return this.entries.has(e)}set(e,r){this.removeEntry(e,"replace");let n=hl(this.getByteLength(r)),i={promise:Promise.resolve(r),pending:!1,waiterCount:0,byteLength:n};return this.entries.set(e,i),this.retainedByteLength+=n,this.trim(),r}getOrLoad(e,r,n){let i=this.get(e,n);if(i)return i;if(n?.aborted)return Promise.reject(qo());let o=new AbortController,s,a,l={promise:new Promise((h,u)=>{s=h,a=u}),controller:o,pending:!0,waiterCount:0,byteLength:0};this.entries.set(e,l),l.promise.then(h=>this.handleLoadedValue(e,l,h),()=>this.handleLoadError(e,l));try{Promise.resolve(r(o.signal)).then(s,a)}catch(h){a(h)}return this.waitForEntry(e,l,n)}delete(e){return this.removeEntry(e,"delete")}clear(){for(let e of Array.from(this.entries.keys()))this.removeEntry(e,"clear")}handleLoadedValue(e,r,n){if(this.entries.get(e)===r){r.pending=!1,r.controller=void 0;try{r.byteLength=hl(this.getByteLength(n))}catch{this.removeEntry(e,"error");return}this.retainedByteLength+=r.byteLength,this.trim()}}handleLoadError(e,r){this.entries.get(e)===r&&this.removeEntry(e,r.controller?.signal.aborted?"abort":"error")}waitForEntry(e,r,n){return n?.aborted?Promise.reject(qo()):r.pending?(r.waiterCount++,new Promise((i,o)=>{let s=!0,a=()=>{s&&(s=!1,n?.removeEventListener("abort",c),r.waiterCount--)},c=()=>{s&&(a(),o(qo()),r.pending&&r.waiterCount===0&&this.entries.get(e)===r&&this.removeEntry(e,"abort"))};n?.addEventListener("abort",c,{once:!0}),r.promise.then(l=>{s&&(a(),i(l))},l=>{s&&(a(),o(l))})})):r.promise}touch(e,r){this.entries.delete(e),this.entries.set(e,r)}trim(){let e=this.entries.size-this.pendingSize;if(!(e<=this.maxEntries&&this.retainedByteLength<=this.maxBytes)){for(let[r,n]of this.entries)if(n.pending||(this.removeEntry(r,"evict"),e--),e<=this.maxEntries&&this.retainedByteLength<=this.maxBytes)break}}removeEntry(e,r){let n=this.entries.get(e);return n?(this.entries.delete(e),this.retainedByteLength-=n.byteLength,n.pending&&n.controller?.abort(),this.onRemove?.(e,r),!0):!1}};function qo(){let t=new Error("Request aborted");return t.name="AbortError",t}function ll(t,e,r){let n=t??e;if(n<0||Number.isNaN(n))throw new Error(`${r} must be a non-negative number`);return n}function hl(t){if(!Number.isFinite(t)||t<0)throw new Error("Request cache entry byte length must be a non-negative finite number");return t}var Y={logicalRanges:"Logical Range Requests",rangeBatches:"Range Request Batches",transportRanges:"Transport Ranges Created",completedTransportRanges:"Range Transport Requests Completed",coalescedRanges:"Coalesced Logical Ranges",requestedBytes:"Logical Range Request Bytes",transportBytes:"Range Transport Bytes Requested",responseBytes:"Range Response Bytes",networkTimeMs:"Range Network Time",overfetchBytes:"Range Overfetch Bytes",failedTransportRanges:"Range Transport Requests Failed",abortedLogicalRanges:"Aborted Logical Range Requests",fullResponseFallbacks:"Full Response Fallbacks"},zo={batchDelayMs:50,maxGapBytes:65536,rangeExpansionBytes:65536,maxMergedBytes:8388608,maxConcurrency:6,maxQueueSize:4096,maxRangeBytes:64*1024*1024,stats:dl("range-request-scheduler-default"),onEvent:()=>{}},Dn=class{props;stats;onEvent;pendingRequests=[];transportQueue=[];activeTransports=0;queuedRequests=0;logicalRequests=new Set;transportControllers=new Set;finalized=!1;flushTimer=null;constructor(e={}){let r=e.rangeExpansionBytes??e.maxGapBytes??zo.rangeExpansionBytes;this.props={batchDelayMs:e.batchDelayMs??zo.batchDelayMs,maxGapBytes:e.maxGapBytes??r,rangeExpansionBytes:r,maxMergedBytes:e.maxMergedBytes??zo.maxMergedBytes,maxConcurrency:e.maxConcurrency??6,maxQueueSize:e.maxQueueSize??4096,maxRangeBytes:e.maxRangeBytes??64*1024*1024};for(let n of[this.props.maxConcurrency,this.props.maxQueueSize,this.props.maxRangeBytes])if(!Number.isSafeInteger(n)||n<=0)throw new Error("Range scheduler limits must be positive integers");this.stats=e.stats||dl("range-request-scheduler"),this.onEvent=e.onEvent,ml(this.stats)}scheduleRequest(e){if(this.finalized)return Promise.reject(new Error("Range scheduler is finalized"));if(!Number.isSafeInteger(e.offset)||e.offset<0||!Number.isSafeInteger(e.length)||e.length>this.props.maxRangeBytes||!Number.isSafeInteger(e.offset+e.length))return Promise.reject(new Error("Invalid or oversized byte range"));if(this.queuedRequests>=this.props.maxQueueSize)return Promise.reject(new Error("Range scheduler queue limit exceeded"));if(e.length<0)return Promise.reject(new Error("Byte range length cannot be negative"));if(e.signal?.aborted)return Promise.reject(e.signal.reason??fl());if(e.length===0)return Promise.resolve(new ArrayBuffer(0));this.queuedRequests++;let r,n=new Promise((i,o)=>{r={...e,resolve:i,reject:o,settled:!1},this.logicalRequests.add(r),e.signal&&(r.abortListener=()=>{this.abortRequest(r),r.onAbort?.()},e.signal.addEventListener("abort",r.abortListener,{once:!0})),this.pendingRequests.push(r)});return this.trackEvent({type:"queued",sourceId:e.sourceId,offset:e.offset,length:e.length,logicalRequestCount:1,logicalBytes:e.length}),this.scheduleFlush(),n.finally(()=>{r.abortListener&&e.signal?.removeEventListener("abort",r.abortListener),this.queuedRequests--,this.logicalRequests.delete(r)})}fetch(e){let r=e.fetch||globalThis.fetch;return this.scheduleRequest({sourceId:e.sourceId||e.url,offset:e.offset,length:e.length,signal:e.signal,isolationKey:e.isolationKey??{},fetchRange:(n,i,o)=>xp({url:e.url,offset:n,length:i,signal:o,fetch:r,fetchOptions:e.fetchOptions})})}flush(){this.flushTimer!==null&&(clearTimeout(this.flushTimer),this.flushTimer=null);let e=this.pendingRequests;this.pendingRequests=[];let r=e.filter(i=>i.settled||i.signal?.aborted?(this.abortRequest(i),!1):!0),n=this.mergeRequests(r);r.length>0&&this.trackBatch(r,n),this.transportQueue.push(...n),this.startQueuedTransports()}finalize(){this.finalized=!0,this.flushTimer!==null&&clearTimeout(this.flushTimer),this.flushTimer=null;for(let e of this.logicalRequests)this.abortRequest(e),e.abortListener&&e.signal?.removeEventListener("abort",e.abortListener);for(let e of this.transportControllers)e.abort();this.transportQueue=[],this.pendingRequests=[],this.logicalRequests.clear()}startQueuedTransports(){for(;this.activeTransports<this.props.maxConcurrency&&this.transportQueue.length;){let e=this.transportQueue.shift();this.activeTransports++,this.fetchMergedRequest(e).finally(()=>{this.activeTransports--,this.startQueuedTransports()})}}scheduleFlush(){this.flushTimer===null&&(this.flushTimer=setTimeout(()=>this.flush(),this.props.batchDelayMs))}mergeRequests(e){e.sort((n,i)=>n.sourceId!==i.sourceId?n.sourceId<i.sourceId?-1:1:n.offset-i.offset);let r=[];for(let n of e){let i=n.offset+n.length,o=r[r.length-1];o&&_p(o,n,this.props)?(o.endOffset=Math.max(o.endOffset,i),o.requests.push(n)):r.push({sourceId:n.sourceId,isolationKey:n.isolationKey??n.sourceId,offset:n.offset,endOffset:i,fetchRange:n.fetchRange,requests:[n]})}return r}async fetchMergedRequest(e){let{offset:r,endOffset:n,fetchRange:i,requests:o}=e,s=new AbortController;this.transportControllers.add(s);let a=Cr(),c=()=>{o.every(l=>l.settled||l.signal?.aborted)&&s.abort()};try{for(let g of o)g.onAbort=c;if(c(),o.every(g=>g.settled))return;let l=Fo(o),h=n-r;this.trackEvent({type:"request",sourceId:e.sourceId,offset:r,length:h,logicalRequestCount:o.length,logicalBytes:l,transportBytes:h,overfetchBytes:Math.max(h-l,0)});let u=Sp(await i(r,h,s.signal)),{arrayBuffer:f}=u,d=u.fullResponse&&r===0&&f.byteLength<h,m=f.byteLength<h&&Number.isSafeInteger(u.sourceByteLength)&&r+f.byteLength===u.sourceByteLength;if(f.byteLength!==h&&!d&&!m)throw new Error(`Byte-range transport returned ${f.byteLength} bytes; expected ${h}`);let p=u.networkTimeMs??Cr()-a;this.trackEvent({type:"response",sourceId:e.sourceId,offset:r,length:h,logicalRequestCount:o.length,logicalBytes:l,transportBytes:h,responseBytes:u.transportBytes??f.byteLength,networkTimeMs:p,overfetchBytes:Math.max(h-l,0),status:u.status,fullResponse:u.fullResponse});for(let g of o){if(g.settled)continue;let y=g.offset-r;g.settled=!0,g.resolve(f.slice(y,y+g.length))}}catch(l){s.signal.aborted||this.trackEvent({type:"error",sourceId:e.sourceId,offset:r,length:n-r,logicalRequestCount:o.length,logicalBytes:Fo(o),networkTimeMs:Cr()-a,error:l});for(let h of o)h.settled||(h.signal?.aborted?this.abortRequest(h):(h.settled=!0,h.reject(l)))}finally{this.transportControllers.delete(s);for(let l of o)l.abortListener&&l.signal?.removeEventListener("abort",l.abortListener),l.onAbort=void 0}}abortRequest(e){if(!e.settled){e.settled=!0,this.pendingRequests=this.pendingRequests.filter(r=>r!==e);for(let r of this.transportQueue)r.requests=r.requests.filter(n=>!n.settled),r.requests.length&&(r.offset=Math.min(...r.requests.map(n=>n.offset)),r.endOffset=Math.max(...r.requests.map(n=>n.offset+n.length)));this.transportQueue=this.transportQueue.filter(r=>r.requests.length>0),e.reject(e.signal?.reason??fl()),this.trackEvent({type:"abort",sourceId:e.sourceId,offset:e.offset,length:e.length,logicalRequestCount:1,logicalBytes:e.length})}}trackEvent(e){yp(this.stats,e);try{this.onEvent?.(e)}catch{}}trackBatch(e,r){let n=Fo(e),i=r.reduce((o,s)=>o+s.endOffset-s.offset,0);this.trackEvent({type:"batch",logicalRequestCount:e.length,transportRequestCount:r.length,logicalBytes:n,transportBytes:i,overfetchBytes:Math.max(i-n,0)})}};function yp(t,e){switch((e.type==="response"||e.type==="error")&&e.networkTimeMs!==void 0&&t.get(Y.networkTimeMs,"time").addTime(e.networkTimeMs),e.type){case"queued":t.get(Y.logicalRanges,"count").incrementCount(),t.get(Y.requestedBytes,"count").addCount(e.logicalBytes||0);break;case"batch":t.get(Y.rangeBatches,"count").incrementCount(),t.get("Logical Ranges Batched","count").addCount(e.logicalRequestCount||0),t.get(Y.transportRanges,"count").addCount(e.transportRequestCount||0),t.get(Y.coalescedRanges,"count").addCount(Math.max((e.logicalRequestCount||0)-(e.transportRequestCount||0),0)),t.get(Y.transportBytes,"count").addCount(e.transportBytes||0),t.get(Y.overfetchBytes,"count").addCount(e.overfetchBytes||0);break;case"response":t.get(Y.completedTransportRanges,"count").incrementCount(),t.get(Y.responseBytes,"count").addCount(e.responseBytes||0),e.fullResponse&&t.get(Y.fullResponseFallbacks,"count").incrementCount();break;case"error":t.get(Y.failedTransportRanges,"count").incrementCount();break;case"abort":t.get(Y.abortedLogicalRanges,"count").incrementCount();break;default:}}function dl(t="range-request-scheduler"){let e=new ke({id:t});return ml(e),e}async function xp(t){let e=bp(t.signal),r=Cr();try{let n=!1,i=await t.fetch(t.url,ul(t.fetchOptions,t.offset,t.length,e.signal));if(i.status===416&&t.offset===0){let c=Ep(i.headers.get("Content-Range"));if(!c)throw new Error("Missing content-length on 416 response");i=await t.fetch(t.url,ul(t.fetchOptions,0,c,e.signal)),n=!0}if(i.status===200)throw e.abort(),await vp(i),new Error("Byte-range request failed: server returned 200 instead of 206");if(i.status!==206&&!i.ok)throw new Error(`Bad response code: ${i.status}`);let o=await i.arrayBuffer(),s=i.headers.get("Content-Range"),a=Tp(s);if(s&&!a)throw new Error(`Invalid Content-Range header: ${s}`);if(a){let c=a.endOffset-a.offset+1,l=t.offset+t.length-1;if(a.offset!==t.offset||a.endOffset>l||c!==o.byteLength||a.sourceByteLength!==void 0&&a.endOffset>=a.sourceByteLength)throw new Error(`Content-Range does not match requested range: ${s}`)}return{arrayBuffer:o,status:i.status,sourceByteLength:a?.sourceByteLength,transportBytes:o.byteLength,networkTimeMs:Cr()-r,fullResponse:n}}finally{e.removeAbortListener()}}function _p(t,e,r){if(t.sourceId!==e.sourceId||t.isolationKey!==(e.isolationKey??e.sourceId))return!1;let n=e.offset+e.length,i=e.offset-t.endOffset,o=Math.max(t.endOffset,n)-t.offset;return i<=r.rangeExpansionBytes&&o<=r.maxMergedBytes}function ml(t){t.get(Y.logicalRanges,"count"),t.get(Y.requestedBytes,"count"),t.get(Y.rangeBatches,"count"),t.get("Logical Ranges Batched","count"),t.get(Y.transportRanges,"count"),t.get(Y.coalescedRanges,"count"),t.get(Y.transportBytes,"count"),t.get(Y.completedTransportRanges,"count"),t.get(Y.responseBytes,"count"),t.get(Y.networkTimeMs,"time"),t.get(Y.overfetchBytes,"count"),t.get(Y.fullResponseFallbacks,"count"),t.get(Y.failedTransportRanges,"count"),t.get(Y.abortedLogicalRanges,"count")}function Fo(t){return t.reduce((e,r)=>e+r.length,0)}function Sp(t){return t instanceof ArrayBuffer?{arrayBuffer:t}:t}function ul(t,e,r,n){return{...t,signal:n,headers:{...wp(t?.headers),Range:`bytes=${e}-${e+r-1}`}}}function wp(t){return t?t instanceof Headers?Object.fromEntries(t.entries()):Array.isArray(t)?Object.fromEntries(t):t:{}}function Ep(t){let e=t?.match(/^bytes \*\/(\d+)$/);return e?Number(e[1]):null}function Tp(t){let e=t?.match(/^bytes (\d+)-(\d+)\/(\d+|\*)$/);if(!e)return null;let r=Number(e[1]),n=Number(e[2]),i=e[3]==="*"?void 0:Number(e[3]);return!Number.isSafeInteger(r)||!Number.isSafeInteger(n)||r>n||i!==void 0&&!Number.isSafeInteger(i)?null:{offset:r,endOffset:n,sourceByteLength:i}}function bp(t){let e=new AbortController,r=()=>e.abort(t?.reason);return t?.aborted?e.abort(t?.reason):t?.addEventListener("abort",r,{once:!0}),{signal:e.signal,abort:()=>e.abort(),removeAbortListener:()=>t?.removeEventListener("abort",r)}}async function vp(t){await t.body?.cancel().catch(()=>{})}function Cr(){return globalThis.performance?.now()??Date.now()}function fl(){if(typeof DOMException<"u")return new DOMException("Request aborted","AbortError");let t=new Error("Request aborted");return t.name="AbortError",t}var Ae={};co(Ae,{dirname:()=>Rp,filename:()=>Pp,join:()=>Cp,resolve:()=>Ap});function pl(){if(typeof process<"u"&&typeof process.cwd<"u")return process.cwd();let t=globalThis.location?.pathname;return t?.slice(0,t.lastIndexOf("/")+1)||""}function Pp(t){let e=t?t.lastIndexOf("/"):-1;return e>=0?t.substr(e+1):t}function Rp(t){let e=t?t.lastIndexOf("/"):-1;return e>=0?t.substr(0,e):""}function Cp(...t){return t=t.map((r,n)=>(n&&(r=r.replace(new RegExp("^/"),"")),n!==t.length-1&&(r=r.replace(new RegExp("/$"),"")),r)),t.join("/")}function Ap(...t){let e=[];for(let o=0;o<t.length;o++)e[o]=t[o];let r="",n=!1,i;for(let o=e.length-1;o>=-1&&!n;o--){let s;o>=0?s=e[o]:(i===void 0&&(i=pl()),s=i),s.length!==0&&(r=`${s}/${r}`,n=s.charCodeAt(0)===Ar)}return r=Ip(r,!n),n?`/${r}`:r.length>0?r:"."}var Ar=47,Bo=46;function Ip(t,e){let r="",n=-1,i=0,o,s=!1;for(let a=0;a<=t.length;++a){if(a<t.length)o=t.charCodeAt(a);else{if(o===Ar)break;o=Ar}if(o===Ar){if(!(n===a-1||i===1))if(n!==a-1&&i===2){if(r.length<2||!s||r.charCodeAt(r.length-1)!==Bo||r.charCodeAt(r.length-2)!==Bo){if(r.length>2){let c=r.length-1,l=c;for(;l>=0&&r.charCodeAt(l)!==Ar;--l);if(l!==c){r=l===-1?"":r.slice(0,l),n=a,i=0,s=!1;continue}}else if(r.length===2||r.length===1){r="",n=a,i=0,s=!1;continue}}e&&(r.length>0?r+="/..":r="..",s=!0)}else{let c=t.slice(n+1,a);r.length>0?r+=`/${c}`:r=c,s=!1}n=a,i=0}else o===Bo&&i!==-1?++i:i=-1}return r}var Xt=class{handle;size;bigsize;url;constructor(e){this.handle=e instanceof ArrayBuffer?new Blob([e]):e,this.size=e instanceof ArrayBuffer?e.byteLength:e.size,this.bigsize=BigInt(this.size),this.url=e instanceof File?e.name:""}async close(){}async stat(){return{size:this.handle.size,bigsize:BigInt(this.handle.size),isDirectory:!1}}async read(e,r,n){if(n?.aborted)throw new Error("Request aborted");let i=await this.handle.slice(Number(e),Number(e)+Number(r)).arrayBuffer();if(n?.aborted)throw new Error("Request aborted");return i}};function kn(t,e){return e?e.aborted?(t.catch(()=>{}),Promise.reject(e.reason)):new Promise((r,n)=>{let i=()=>{e.removeEventListener("abort",i),n(e.reason)};e.addEventListener("abort",i,{once:!0}),t.then(o=>{e.removeEventListener("abort",i),r(o)},o=>{e.removeEventListener("abort",i),n(o)})}):t}function Un(t,e){let r=new AbortController,n=[],i=()=>{for(let[o,s]of n)o.removeEventListener("abort",s)};for(let o of e){if(!o)continue;let s=()=>r.abort(o.reason);n.push([o,s]),o.addEventListener("abort",s,{once:!0}),o.aborted&&s()}try{return r.signal.throwIfAborted(),kn(t(r.signal),r.signal).catch(o=>{throw r.abort(o),o}).finally(i)}catch(o){return r.abort(o),i(),Promise.reject(o)}}var Wn=class{url;fetchFunction;fetchOptions;consistency;identityHints;countedFailures=new WeakSet;telemetry={requestedBytes:0,downloadedBytes:0,requestCount:0,networkTimeMs:0,abortCount:0,errorCount:0};constructor(e,r){zp(r.byteLength),this.url=e,this.fetchFunction=r.fetch||((n,i)=>globalThis.fetch(n,i)),this.fetchOptions=r.fetchOptions?{...r.fetchOptions,headers:new Headers(r.fetchOptions.headers)}:void 0,this.consistency=r.consistency||"best-effort",this.identityHints={byteLength:r.byteLength,etag:$n(r.etag),lastModified:$n(r.lastModified)}}getInitialIdentity(){let{byteLength:e,etag:r,lastModified:n}=this.identityHints;return e!==void 0&&(r!==void 0||n!==void 0)?Hn(e,r,n):e===0&&this.consistency==="best-effort"?Hn(0):null}getTelemetry(){return Object.freeze({...this.telemetry})}trackFailure(e){if(typeof e=="object"&&e!==null){if(this.countedFailures.has(e))return;this.countedFailures.add(e)}xl(e)?this.telemetry.abortCount++:this.telemetry.errorCount++}async requestRange(e,r,n,i){let o=Vn(),s=Fp(n,this.fetchOptions?.signal);this.telemetry.requestCount++,this.telemetry.requestedBytes+=r;try{let a=await this.fetchFunction(this.url,Np(this.fetchOptions,e,r,s.signal));if(Op(a,e,r,i))return await this.readEmptyIdentityProbe(a,o);if(a.status!==206)throw await jn(a),new Error(`HTTP byte-range request expected 206, received ${a.status}`);let c=await Gp(a),l=gl(a,c.byteLength),h=yl(i,l,this.identityHints,this.consistency)||qp(c,e,r);if(h)throw await jn(a),new Error(h);let u=await a.arrayBuffer();if(this.telemetry.downloadedBytes+=u.byteLength,u.byteLength!==r)throw new Error(`HTTP byte-range response contained ${u.byteLength} bytes; expected ${r}`);return{arrayBuffer:u,identity:Ml(i,l,this.identityHints),status:a.status,transportBytes:u.byteLength,networkTimeMs:Vn()-o}}catch(a){throw(i===null||!xl(a))&&this.trackFailure(a),a}finally{s.removeAbortListeners(),this.telemetry.networkTimeMs+=Vn()-o}}async readEmptyIdentityProbe(e,r){let n=gl(e,0),i=yl(null,n,this.identityHints,this.consistency);if(await jn(e),i)throw new Error(i);return{arrayBuffer:new ArrayBuffer(0),identity:Ml(null,n,this.identityHints),status:e.status,transportBytes:0,networkTimeMs:Vn()-r}}};function Np(t,e,r,n){let i=new Headers(t?.headers);return i.set("Range",`bytes=${e}-${e+r-1}`),{...t,method:"GET",body:void 0,headers:i,signal:n}}function Op(t,e,r,n){return t.status===416&&n===null&&e===0&&r===1&&/^bytes \*\/0$/i.test(t.headers.get("Content-Range")||"")}async function Gp(t){try{return Lp(t.headers.get("Content-Range"))}catch(e){throw await jn(t),e}}function Lp(t){let e=t?.match(/^bytes (\d+)-(\d+)\/(\d+)$/);if(!e)throw new Error("HTTP byte-range response has an invalid Content-Range header");return{offset:Number(e[1]),endOffset:Number(e[2]),byteLength:Number(e[3])}}function gl(t,e){return Hn(e,$n(t.headers.get("ETag")),$n(t.headers.get("Last-Modified")))}function Ml(t,e,r){return t||Hn(e.byteLength,e.etag??r.etag,e.lastModified??r.lastModified)}function qp(t,e,r){return!Number.isSafeInteger(t.offset)||!Number.isSafeInteger(t.endOffset)||!Number.isSafeInteger(t.byteLength)||t.offset<0||t.endOffset<t.offset||t.endOffset>=t.byteLength?"HTTP byte-range response has invalid range bounds":t.offset!==e||t.endOffset!==e+r-1?"HTTP byte-range response does not match the requested range":null}function yl(t,e,r,n){let i=t?.byteLength??r.byteLength;if(i!==void 0&&e.byteLength!==i)return"HTTP file length changed while the file was open";let o=t?.etag??r.etag,s=t?.lastModified??r.lastModified;return o?e.etag?o===e.etag?null:"HTTP file ETag changed while the file was open":n==="strict"?"HTTP byte-range response is missing the pinned ETag":s&&e.lastModified&&s!==e.lastModified?"HTTP file Last-Modified value changed while the file was open":null:s?e.lastModified&&s!==e.lastModified?"HTTP file Last-Modified value changed while the file was open":n==="strict"&&!e.lastModified?"HTTP byte-range response is missing the pinned Last-Modified value":null:n==="strict"&&!e.etag&&!e.lastModified?"HTTP byte-range response does not provide an ETag or Last-Modified validator":null}function Hn(t,e,r){return Object.freeze({byteLength:t,etag:e,lastModified:r})}function zp(t){if(t!==void 0&&(!Number.isSafeInteger(t)||t<0))throw new Error("HttpFile byteLength must be a non-negative safe integer")}async function jn(t){await t.body?.cancel().catch(()=>{})}function $n(t){return t||void 0}function Vn(){return globalThis.performance?.now()??Date.now()}function xl(t){return t instanceof Error&&t.name==="AbortError"||t instanceof Error&&/aborted/i.test(t.message)}function Fp(...t){let e=new AbortController,r=[...new Set(t.filter(i=>!!i))],n=()=>e.abort();for(let i of r)i.aborted?e.abort():i.addEventListener("abort",n,{once:!0});return{signal:e.signal,removeAbortListeners:()=>{for(let i of r)i.removeEventListener("abort",n)}}}var Ir=class t{handle;url;transport;rangeScheduler;schedulerIsolationKey={};suppliedByteLength;identity;openPromise=null;closed=!1;constructor(e,r={}){this.handle=e,this.url=e,this.transport=new Wn(e,r),this.rangeScheduler=r.rangeScheduler||new Dn({batchDelayMs:0,...r.rangeSchedulerProps}),this.suppliedByteLength=r.byteLength,this.identity=this.transport.getInitialIdentity()}static async open(e,r={},n){let i=new t(e,r);return await i.open(n),i}async open(e){if(this.assertOpen(),e?.aborted){let r=Sl();throw this.transport.trackFailure(r),r}return await this.getIdentity(e),this}get size(){return this.identity?.byteLength??this.suppliedByteLength??0}get bigsize(){return BigInt(this.size)}getIdentitySnapshot(){return this.identity}getTelemetry(){return this.transport.getTelemetry()}async close(){this.closed=!0}async stat(){this.assertOpen();let e=await this.getIdentity();return{size:e.byteLength,bigsize:BigInt(e.byteLength),isDirectory:!1}}async read(e=0,r=0,n){if(this.assertOpen(),n?.aborted){let s=Sl();throw this.transport.trackFailure(s),s}let i=await this.getIdentity(n),o=_l(e);if(Dp(o,r,i.byteLength),r===0)return new ArrayBuffer(0);try{return await this.rangeScheduler.scheduleRequest({sourceId:this.url,isolationKey:this.schedulerIsolationKey,offset:o,length:r,signal:n,fetchRange:this.fetchScheduledRange})}catch(s){throw this.transport.trackFailure(s),s}}async fetchRange(e,r,n){let i=_l(e),o=await this.read(i,r,n),s=Bp(this.identity,i,r);return new Response(o,{status:206,headers:s})}fetchScheduledRange=async(e,r,n)=>{let i=await this.getIdentity(n),o=await this.transport.requestRange(e,r,n,i);return{arrayBuffer:o.arrayBuffer,status:o.status,transportBytes:o.transportBytes,networkTimeMs:o.networkTimeMs}};getIdentity(e){if(this.identity)return Promise.resolve(this.identity);if(!this.openPromise){let n=this.probeIdentity().catch(i=>{throw this.openPromise===n&&(this.openPromise=null),i});this.openPromise=n}return kn(this.openPromise,e).catch(r=>{throw this.transport.trackFailure(r),r})}async probeIdentity(){try{let e=await this.transport.requestRange(0,1,void 0,null);return this.identity=e.identity,e.identity}catch(e){throw this.transport.trackFailure(e),e}}assertOpen(){if(this.closed)throw new Error("HttpFile is closed")}};function Bp(t,e,r){let n=new Headers;return r>0&&t&&n.set("Content-Range",`bytes ${e}-${e+r-1}/${t.byteLength}`),t?.etag&&n.set("ETag",t.etag),t?.lastModified&&n.set("Last-Modified",t.lastModified),n}function _l(t){let e=Number(t);if(!Number.isSafeInteger(e)||e<0)throw new Error("HTTP byte-range offset must be a non-negative safe integer");return e}function Dp(t,e,r){if(!Number.isSafeInteger(e)||e<0)throw new Error("HTTP byte-range length must be a non-negative safe integer");if(t+e>r)throw new Error("HTTP byte range extends beyond the end of the file")}function Sl(){if(typeof DOMException<"u")return new DOMException("Request aborted","AbortError");let t=new Error("Request aborted");return t.name="AbortError",t}function Yn(t={}){if(t.coordinateEpoch!==void 0&&!Number.isFinite(t.coordinateEpoch))throw new Error("Spatial reference coordinate epoch must be a finite decimal year");return Object.freeze({crs:wl(t.crs||{state:"absent",provenance:"unknown"}),vertical:t.vertical?wl(t.vertical):void 0,coordinateEpoch:t.coordinateEpoch,coordinateFrame:t.coordinateFrame||"unknown",coordinateOrder:Object.freeze([...t.coordinateOrder||[]]),units:t.units?Object.freeze([...t.units]):void 0})}function Se(t){if(typeof t=="object")return"projjson";let e=t.trim();return/^[A-Z][A-Z0-9_]*\s*[\[(]/i.test(e)?"wkt":/(?:^|\s)\+?proj=/i.test(e)?"proj-string":/^[A-Z][A-Z0-9._-]*(?::[A-Z0-9._-]+)+$/i.test(e)||/^urn:ogc:def:crs:/i.test(e)||/^https?:\/\//i.test(e)||/^[A-Z][A-Z0-9._-]*$/i.test(e)?"identifier":"opaque"}function wl(t){return t.state==="explicit"||t.state==="default"?Object.freeze({...t,definition:El(t.definition),alternatives:t.alternatives?Object.freeze(t.alternatives.map(e=>Object.freeze({...e,definition:El(e.definition)}))):void 0}):Object.freeze({...t})}function El(t){return typeof t=="string"?t:Do(t)}function Do(t){return Array.isArray(t)?Object.freeze(t.map(e=>Do(e))):t&&typeof t=="object"?Object.freeze(Object.fromEntries(Object.entries(t).map(([e,r])=>[e,Do(r)]))):t}var Kn=class extends SyntaxError{constructor(e,r,n){let i=Jp(r,n);super(`${e} at ${i.line}:${i.column}`),this.name="WKTCRSSyntaxError",this.offset=n,this.line=i.line,this.column=i.column}},Xn=class extends Error{constructor(e){super(e[0]?.message||"WKT validation failed"),this.name="WKTCRSValidationError",this.issues=e}},kp=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[Ee][+-]?\d+)?$/,Up=/^[A-Za-z][A-Za-z0-9_]*/,Nr=new Set(["COMPD_CS","CONCAT_MT","FITTED_CS","GEOCCS","GEOGCS","INVERSE_MT","LOCAL_CS","PARAM_MT","PASSTHROUGH_MT","PROJCS","VERT_CS"]),Uo=new Set([...Nr,"AUTHORITY","AXIS","CONCAT_MT","DATUM","INVERSE_MT","LOCAL_DATUM","PARAMETER","PARAM_MT","PASSTHROUGH_MT","PRIMEM","PROJECTION","SPHEROID","TOWGS84","UNIT","VERT_DATUM"]),Vp=new Set(Nr),jp=new Set([...Uo,"EXTENSION"]),Wp=new Set([...Nr,"COMPDCS","LOCALCS","VERTCS"]),Hp=new Set([...Uo,"COMPDCS","LOCALCS","VDATUM","VERTCS"]),Tl=new Set(["BOUNDCRS","COMPOUNDCRS","COORDINATEOPERATION","ENGCRS","ENGINEERINGCRS","GEODCRS","GEODETICCRS","PARAMETRICCRS","PROJCRS","PROJECTEDCRS","TIMECRS","VERTCRS","VERTICALCRS"]),bl=new Set([...Tl,"CONCATENATEDOPERATION","COORDINATEMETADATA","DERIVEDPROJCRS","GEOGCRS","GEOGRAPHICCRS","POINTMOTIONOPERATION"]),vl=new Set([...bl,"ABRIDGEDTRANSFORMATION","ANCHOR","ANGLEUNIT","AREA","AXIS","BASEENGCRS","BASEGEODCRS","BASEGEOGCRS","BASEPARAMCRS","BASEPROJCRS","BASETIMECRS","BASEVERTCRS","BBOX","BEARING","CALENDAR","CITATION","CONVERSION","COORDEPOCH","CS","DATUM","DERIVINGCONVERSION","DYNAMIC","EDATUM","ELLIPSOID","ENGINEERINGDATUM","ENSEMBLE","ENSEMBLEACCURACY","EPOCH","FRAMEEPOCH","GEODETICDATUM","GEOIDMODEL","ID","INTERPOLATIONCRS","LENGTHUNIT","MEMBER","MERIDIAN","METHOD","MODEL","OPERATIONACCURACY","ORDER","PARAMETER","PARAMETERFILE","PARAMETRICDATUM","PARAMETRICUNIT","PDATUM","PRIMEM","PRIMEMERIDIAN","REMARK","SCALEUNIT","SCOPE","SOURCECRS","STEP","TARGETCRS","TDATUM","TEMPORALQUANTITY","TIMEEXTENT","TIMEORIGIN","TIMEUNIT","TIMEDATUM","TRIAXIAL","TRF","URI","USAGE","VDATUM","VERSION","VERTICALDATUM","VERTICALEXTENT","VELOCITYGRID","VRF"]),$p=new Set(["BASEGEOGCRS","CALENDAR","CONCATENATEDOPERATION","COORDEPOCH","COORDINATEMETADATA","DERIVEDPROJCRS","DYNAMIC","ENSEMBLE","ENSEMBLEACCURACY","EPOCH","FRAMEEPOCH","GEOGCRS","GEOGRAPHICCRS","GEOIDMODEL","MEMBER","MODEL","POINTMOTIONOPERATION","STEP","TEMPORALQUANTITY","TRF","TRIAXIAL","VELOCITYGRID","VRF"]),Yp=new Set([...vl].filter(t=>!$p.has(t))),Kp={wkt1:Nr,gdal:Vp,esri:Wp,"wkt2:2015":Tl,"wkt2:2019":bl},Xp={wkt1:Uo,gdal:jp,esri:Hp,"wkt2:2015":Yp,"wkt2:2019":vl};function Or(t,e){let n={type:"wkt-crs",root:new ko(t).parse()};if(e?.strict){let i=Pl(n,{profile:e.profile,allowExtensions:!1});if(i.length>0)throw new Xn(i)}return n}function Pl(t,e){if(!t||t.type!=="wkt-crs"||t.root?.type!=="node")throw new TypeError("validateWKTCRS expects a WKTCRSAst");let r=Zp(t.root.keyword,e?.profile||"auto"),n=Kp[r],i=Xp[r],o=[],s=t.root.keyword.toUpperCase();return n.has(s)||o.push({code:"invalid-root",message:`${t.root.keyword} is not a ${r} root keyword`,path:[],keyword:t.root.keyword}),Rl(t.root,[],a=>{let c=a.node.keyword.toUpperCase();!e?.allowExtensions&&!i.has(c)&&o.push({code:"unknown-keyword",message:`${a.node.keyword} is not defined by the ${r} profile`,path:a.path,keyword:a.node.keyword}),a.node.values.length===0&&o.push({code:"empty-node",message:`${a.node.keyword} must contain at least one value`,path:a.path,keyword:a.node.keyword});let l=Qp(a.node);l&&o.push({code:"invalid-value",message:l,path:a.path,keyword:a.node.keyword})}),o}var ko=class{constructor(e){this.offset=0,this.source=e}parse(){this.skipWhitespace();let e=this.parseNode();return this.skipWhitespace(),this.offset!==this.source.length&&this.fail("Unexpected content after WKT root"),e}parseNode(){let e=this.parseKeyword();return this.parseNodeAfterKeyword(e)}parseNodeAfterKeyword(e){this.skipWhitespace();let r=this.source[this.offset];r!=="["&&r!=="("&&this.fail(`Expected '[' or '(' after ${e}`),this.offset++;let n=r==="["?"bracket":"parenthesis",i=r==="["?"]":")",o=[];if(this.skipWhitespace(),this.source[this.offset]===i)return this.offset++,{type:"node",keyword:e,delimiter:n,values:o};for(;this.offset<this.source.length;){o.push(this.parseValue()),this.skipWhitespace();let s=this.source[this.offset];if(s===","){this.offset++,this.skipWhitespace(),this.source[this.offset]===i&&this.fail("Expected a WKT value after comma");continue}if(s===i)return this.offset++,{type:"node",keyword:e,delimiter:n,values:o};(s==="]"||s===")")&&this.fail(`Expected '${i}' to close ${e}`),this.fail(`Expected ',' or '${i}' in ${e}`)}this.fail(`Unterminated ${e} node`)}parseValue(){if(this.skipWhitespace(),this.source[this.offset]==='"')return this.parseString();let r=this.offset;for(;this.offset<this.source.length&&!/[\s,\[\]()"]/.test(this.source[this.offset]);)this.offset++;r===this.offset&&this.fail("Expected a WKT value");let n=this.source.slice(r,this.offset);return this.source[this.offset]==='"'&&this.fail("Unexpected quote in unquoted WKT value"),this.skipWhitespace(),this.source[this.offset]==="["||this.source[this.offset]==="("?(/^[A-Za-z][A-Za-z0-9_]*$/.test(n)||this.fail(`Invalid WKT keyword '${n}'`),this.parseNodeAfterKeyword(n)):kp.test(n)?{type:"number",value:Number(n),raw:n}:{type:"enumeration",value:n}}parseKeyword(){let e=this.source.slice(this.offset).match(Up);return e||this.fail("Expected a WKT keyword"),this.offset+=e[0].length,e[0]}parseString(){this.offset++;let e="";for(;this.offset<this.source.length;){let r=this.source[this.offset++];if(r==='"'){if(this.source[this.offset]==='"'){e+='"',this.offset++;continue}return{type:"string",value:e}}e+=r}this.fail("Unterminated WKT string")}skipWhitespace(){for(;this.offset<this.source.length&&/\s/.test(this.source[this.offset]);)this.offset++}fail(e){throw new Kn(e,this.source,this.offset)}};function Zp(t,e){return e!=="auto"?e:Nr.has(t.toUpperCase())?"wkt1":"wkt2:2019"}function Qp(t){let e=t.keyword.toUpperCase(),r=t.values,n=(o,...s)=>!!(r[o]&&s.includes(r[o].type)),i=(o,...s)=>r.length===o&&s.every((a,c)=>n(c,a));if(["ANGLEUNIT","LENGTHUNIT","PARAMETRICUNIT","SCALEUNIT","TIMEUNIT","TEMPORALQUANTITY","UNIT"].includes(e)&&!(r.length>=2&&n(0,"string")&&n(1,"number")))return`${t.keyword} must start with a quoted name and numeric conversion factor`;if(e==="CS"&&!i(2,"enumeration","number"))return`${t.keyword} must contain a coordinate-system type and dimension`;if(e==="BBOX"&&!i(4,"number","number","number","number"))return`${t.keyword} must contain four numeric bounds`;if(["ENSEMBLEACCURACY","EPOCH","COORDEPOCH","FRAMEEPOCH","OPERATIONACCURACY","ORDER"].includes(e)&&!i(1,"number"))return`${t.keyword} must contain one number`;if(["ANCHOR","AREA","CALENDAR","CITATION","REMARK","SCOPE","URI","VERSION"].includes(e)&&!i(1,"string"))return`${t.keyword} must contain one quoted string`;if(["ELLIPSOID","SPHEROID","TRIAXIAL"].includes(e)&&!(r.length>=3&&n(0,"string")&&n(1,"number")&&n(2,"number")))return`${t.keyword} must start with a quoted name and numeric ellipsoid axes`;if(["PARAMETER"].includes(e)&&!(r.length>=2&&n(0,"string")&&n(1,"number")))return`${t.keyword} must start with a quoted name and numeric value`;if(e==="PARAMETERFILE"&&!i(2,"string","string"))return`${t.keyword} must contain a quoted name and file name`;if(["AUTHORITY","ID"].includes(e)&&!(r.length>=2&&n(0,"string")&&n(1,"string","number")))return`${t.keyword} must start with a quoted authority and identifier`;if(["AXIS"].includes(e)&&!(r.length>=2&&n(0,"string")&&n(1,"enumeration")))return`${t.keyword} must start with a quoted name and axis direction`;if(["METHOD","PROJECTION"].includes(e)&&!(r.length>=1&&n(0,"string")))return`${t.keyword} must start with a quoted name`;if(e==="TIMEEXTENT"){let o=s=>n(s,"enumeration","string");if(r.length!==2||!o(0)||!o(1))return`${t.keyword} must contain two date-time or quoted values`}if(e==="VERTICALEXTENT"&&(r.length<2||r.length>3||!n(0,"number")||!n(1,"number")||r.length===3&&!n(2,"node")))return`${t.keyword} must contain two numeric bounds and an optional unit`;if(e==="COORDINATEMETADATA"&&(r.length<1||r.length>2||!n(0,"node")||r.length===2&&(!n(1,"node")||!["EPOCH","COORDEPOCH"].includes(r[1].keyword.toUpperCase()))))return`${t.keyword} must contain a CRS and an optional coordinate epoch`;if(e==="BOUNDCRS"){let o=r.slice(0,3).map(s=>s.type==="node"?s.keyword.toUpperCase():"");if(o[0]!=="SOURCECRS"||o[1]!=="TARGETCRS"||o[2]!=="ABRIDGEDTRANSFORMATION")return`${t.keyword} must start with SOURCECRS, TARGETCRS, and ABRIDGEDTRANSFORMATION`}return["COMPOUNDCRS","CONCATENATEDOPERATION","COORDINATEOPERATION","DERIVEDPROJCRS","ENGCRS","ENGINEERINGCRS","GEODCRS","GEODETICCRS","GEOGCRS","GEOGRAPHICCRS","PARAMETRICCRS","POINTMOTIONOPERATION","PROJCRS","PROJECTEDCRS","TIMECRS","VERTCRS","VERTICALCRS"].includes(e)&&!n(0,"string")?`${t.keyword} must start with a quoted name`:null}function Rl(t,e,r){r({node:t,path:e});for(let n=0;n<t.values.length;n++){let i=t.values[n];i.type==="node"&&Rl(i,[...e,n],r)}}function Jp(t,e){let r=1,n=1;for(let i=0;i<e&&i<t.length;i++)t[i]===`
|
|
8
|
+
`?(r++,n=1):n++;return{line:r,column:n}}var dt=class extends SyntaxError{constructor(e,r,n){let i=i1(r,n);super(`${e} at ${i.line}:${i.column}`),this.name="PROJStringSyntaxError",this.offset=n,this.line=i.line,this.column=i.column}};function Gr(t){let e=r1(t);if(e.length===0)throw new dt("PROJ string is empty",t,0);return{type:"proj-string",parameters:e.map(n=>t1(n.raw,n.offset,t))}}var e1=/^[+-]?\d+(?:\.\d*)?d(?:\d+(?:\.\d*)?'(?:\d+(?:\.\d*)?")?)?[NSEW]?$/i;function t1(t,e,r){let n=t.startsWith("+")?t.slice(1):t;if(!n)throw new dt("Expected a parameter after '+'",r,e);let i=n.indexOf("="),o=i<0?n:n.slice(0,i);if(!o||/[\s+=]/.test(o))throw new dt(`Invalid PROJ parameter name '${o}'`,r,e);if(i<0)return{type:"parameter",name:o};let s=n.slice(i+1),a=n1(s,r,e+i+1);return{type:"parameter",name:o,value:a,rawValue:s}}function r1(t){let e=[],r=0;for(;r<t.length;){for(;r<t.length&&/\s/.test(t[r]);)r++;if(r>=t.length)break;let n=r,i=null,o=!1;for(;r<t.length;){let s=t[r];if(o){o=!1,r++;continue}if(s==="\\"&&i){o=!0,r++;continue}if(i){s===i&&(i=null),r++;continue}if((s==='"'||s==="'")&&t[r-1]==="="){i=s,r++;continue}if(/\s/.test(s))break;r++}if(i)throw new dt("Unterminated quoted PROJ value",t,n);e.push({raw:t.slice(n,r),offset:n})}return e}function n1(t,e,r){if(!t)return"";let n=t[0];if(n!=='"'&&n!=="'"){if((t.includes('"')||t.includes("'"))&&!e1.test(t))throw new dt("Quote must begin a PROJ parameter value",e,r);return t}if(t[t.length-1]!==n)throw new dt("Unterminated quoted PROJ value",e,r);let i="";for(let o=1;o<t.length-1;o++){let s=t[o];s==="\\"&&o+1<t.length-1?i+=t[++o]:i+=s}return i}function i1(t,e){let r=1,n=1;for(let i=0;i<e&&i<t.length;i++)t[i]===`
|
|
9
|
+
`?(r++,n=1):n++;return{line:r,column:n}}var Zn=class{item;previous;next;constructor(e,r,n){this.item=e,this.previous=r,this.next=n}};var Qn=class{head=null;tail=null;_length=0;get length(){return this._length}add(e){let r=new Zn(e,this.tail,null);return this.tail?(this.tail.next=r,this.tail=r):(this.head=r,this.tail=r),++this._length,r}remove(e){e&&(e.previous&&e.next?(e.previous.next=e.next,e.next.previous=e.previous):e.previous?(e.previous.next=null,this.tail=e.previous):e.next?(e.next.previous=null,this.head=e.next):(this.head=null,this.tail=null),e.next=null,e.previous=null,--this._length)}splice(e,r){e!==r&&(this.remove(r),this._insert(e,r))}_insert(e,r){let n=e.next;e.next=r,this.tail===e?this.tail=r:n.previous=r,r.next=n,r.previous=e,++this._length}};var Zt=class{_list;_sentinel;_trimTiles;constructor(){this._list=new Qn,this._sentinel=this._list.add("sentinel"),this._trimTiles=!1}reset(){this._list.splice(this._list.tail,this._sentinel)}touch(e){let r=e._cacheNode;r&&this._list.splice(this._sentinel,r)}add(e,r,n){r._cacheNode||(r._cacheNode=this._list.add(r),n&&n(e,r))}unloadTile(e,r,n){let i=r._cacheNode;i&&(this._list.remove(i),r._cacheNode=null,n&&n(e,r))}unloadTiles(e,r){let n=this._trimTiles;this._trimTiles=!1;let i=this._list,o=this._sentinel,s=i.head;for(;s!==o&&(e.gpuMemoryUsageInBytes>e.cacheBytes||n);){let a=s.item;s=s.next,this.unloadTile(e,a,r)}}trim(){this._trimTiles=!0}};function Jn(t,e){Ye(t),Ye(e);let{rtcCenter:r,gltfUpAxis:n}=e,{computedTransform:i,boundingVolume:{center:o}}=t,s=new q(i);switch(r&&s.translate(r),n){case"Z":break;case"Y":let f=new q().rotateX(Math.PI/2);s=s.multiplyRight(f);break;case"X":let d=new q().rotateY(-Math.PI/2);s=s.multiplyRight(d);break;default:break}e.isQuantized&&s.translate(e.quantizedVolumeOffset).scale(e.quantizedVolumeScale);let a=new M(o);e.cartesianModelMatrix=s,e.cartesianOrigin=a;let c=G.WGS84.cartesianToCartographic(a,new M),h=G.WGS84.eastNorthUpToFixedFrame(a).invert();e.cartographicModelMatrix=h.multiplyRight(s),e.cartographicOrigin=c;let u=s1(e);u&&(e.cartesianModelMatrix=new q(s).multiplyRight(u.matrix),e.cartographicModelMatrix.multiplyRight(u.matrix),u.matrix=q.IDENTITY),e.coordinateSystem||(e.modelMatrix=e.cartographicModelMatrix)}var o1=1e6**2;function s1(t){let e=t.gltf;if(!e)return null;let r=typeof e.scene=="number"?e.scene:0,i=e.scenes?.[r]?.nodes?.[0];if(!i?.matrix)return null;let o=i.matrix;return o[12]*o[12]+o[13]*o[13]+o[14]*o[14]<=o1?null:i}var Cl=new M,Vo=new M,a1=1e-5,c1=1e-7,jo=new ce([new ie,new ie,new ie,new ie,new ie,new ie]);function ei(t,e,r={}){let{cameraUp:n,height:i}=t,o=t.cameraDirection,{metersPerUnit:s}=t.distanceScales,a=Lr(t,t.center),c=G.WGS84.eastNorthUpToFixedFrame(a),l=t.unprojectPosition(t.cameraPosition),h=G.WGS84.cartographicToCartesian(l,new M),u;if(o)u=new M(c.transformAsVector(new M(o).scale(s))).normalize();else{let E=t.getFrustumPlanes().near,v=Wo(E,t.cameraPosition),T=Lr(t,v);u=new M(T).subtract(h).normalize()}let f=new M(c.transformAsVector(new M(n).scale(s))).normalize();l1(t);let d=t.constructor,{longitude:m,latitude:p,width:g,bearing:y,zoom:x,position:S}=t,_=new d({longitude:m,latitude:p,height:i,width:g,bearing:y,zoom:x,position:S,pitch:0}),w=Number.isFinite(t.fovy)&&Number(t.fovy)>0&&Number(t.fovy)<180?Number(t.fovy)*Math.PI/180:Math.PI/3;return{camera:{position:h,direction:u,up:f,cartographicPosition:l,verticalFieldOfView:w,timeSinceMovement:r.timeSinceCameraMovement??Number.POSITIVE_INFINITY},viewport:t,topDownViewport:_,height:i,cullingVolume:jo,clippingPlanes:t.clippingPlanes,frameNumber:e,sseDenominator:2*Math.tan(w/2),dynamicScreenSpaceErrorDensity:0}}function Al(t,e,r,n){let i=Array.from(e),o=Array.from(r),s=t?i.length!==t.position.length||i.some((l,h)=>Math.abs(l-t.position[h])>a1):!1,a=t?o.length!==t.direction.length||o.some((l,h)=>Math.abs(l-t.direction[h])>c1):!1,c=s||a?n:t?.lastMovementTime??Number.NEGATIVE_INFINITY;return{state:{position:i,direction:o,lastMovementTime:c},timeSinceMovement:Math.max((n-c)/1e3,0)}}function Il(t,e,r){if(r===0||t.length<=r)return[t,[]];let n=[],{longitude:i,latitude:o}=e.viewport;for(let[l,h]of t.entries()){let[u,f]=h.header.mbs,d=Math.abs(i-u),m=Math.abs(o-f),p=Math.sqrt(m*m+d*d);n.push([l,p])}let s=n.sort((l,h)=>l[1]-h[1]),a=[];for(let l=0;l<r;l++)a.push(t[s[l][0]]);let c=[];for(let l=r;l<s.length;l++)c.push(t[s[l][0]]);return[a,c]}function l1(t){let e=t.getFrustumPlanes(),r=Wo(e.near,t.cameraPosition),n=Lr(t,r),i=Lr(t,t.cameraPosition,Vo),o=0;jo.planes[o++].fromPointNormal(n,Cl.copy(n).subtract(i));for(let s in e){if(s==="near")continue;let a=e[s],c=Wo(a,r,Vo),l=Lr(t,c,Vo);jo.planes[o++].fromPointNormal(l,Cl.copy(n).subtract(l))}}function Wo(t,e,r=new M){let n=t.normal.dot(e);return r.copy(t.normal).scale(t.distance-n).add(e),r}function Lr(t,e,r=new M){let n=t.unprojectPosition(e);return G.WGS84.cartographicToCartesian(n,r)}var ql=new M,h1=new M,At=new M,Nl=new M,qr=new M,Ol=new M,Gl=new M,Ll=new M,ti=new De,u1=new M(0,0,1);function zl(t,e){t._updateTransform(e)}function Fl(t,e,r){if(!Number.isFinite(r.dynamicScreenSpaceErrorDensity)||r.dynamicScreenSpaceErrorDensity<=0)return 0;let n=p1(t),i=n.region?g1(n.region,e):M1(t,n,e);if(!i)return 0;let o=_r(r.dynamicScreenSpaceErrorHeightFalloff,0,1),s=i.minimumHeight+(i.maximumHeight-i.minimumHeight)*o,a=i.maximumHeight-s,c=a>0?_r((i.cameraHeight-s)/a,0,1):i.cameraHeight>=i.maximumHeight?1:0,h=(1-_r(Math.abs(i.cameraDirection.dot(i.upDirection)),0,1))*(1-c);return r.dynamicScreenSpaceErrorDensity*h}function f1(t,e){let r=t*e;return 1-Math.exp(-(r*r))}function d1(t,e,r){return e<=0||r<=0||!Number.isFinite(e)||!Number.isFinite(r)?0:f1(t,e)*r}function Bl(t,e,r,n=1){let i=t.tileset,o=t.parent&&t.parent.lodMetricValue||t.lodMetricValue,s=r?o:t.lodMetricValue;if(s===0)return 0;let{viewDistanceScale:a}=i.options,c=a||1,l=Number.isFinite(n)?Math.max(n,0):1,h=m1(s,e,c,l);if(h!==null)return h;let u=Math.max(t._distanceToCamera,1e-7),{height:f,sseDenominator:d}=e,m=s*f*l*c/(u*d);return i.options.dynamicScreenSpaceError&&!e.viewport.orthographic&&(m-=d1(u,e.dynamicScreenSpaceErrorDensity,i.options.dynamicScreenSpaceErrorFactor)),m}function m1(t,e,r,n){let i=e.viewport;if(!i?.orthographic)return null;let o=i.metersPerPixel;return!Number.isFinite(o)||!o||o<=0?null:t*r*n/o}function p1(t){return t.header.content?.boundingVolume||t.header.boundingVolume}function g1(t,e){let r=ql.copy(e.camera.position).normalize(),n=qr.copy(e.camera.direction).normalize();return{cameraHeight:e.camera.cartographicPosition[2],minimumHeight:t[4],maximumHeight:t[5],cameraDirection:n,upDirection:r}}function M1(t,e,r){let n=y1(e,At);if(n===null)return null;let i=new q(t.computedTransform).invert(),o=t.tileset.ellipsoid;if(Math.hypot(At[0],At[1],At[2])>o.minimumRadius){let a=o.cartesianToCartographic(At,h1),c=ql.copy(r.camera.position).normalize(),l=qr.copy(r.camera.direction).normalize();return{cameraHeight:r.camera.cartographicPosition[2],minimumHeight:0,maximumHeight:a[2]*2,cameraDirection:l,upDirection:c}}return i.transformAsPoint(r.camera.position,Nl),i.transformAsVector(r.camera.direction,qr),qr.normalize(),{cameraHeight:Nl[2],minimumHeight:At[2]-n,maximumHeight:At[2]+n,cameraDirection:qr,upDirection:u1}}function y1(t,e){if(t.box){let r=t.box;return e.set(r[0],r[1],r[2]),x1(r)}if(t.sphere){let r=t.sphere;return e.set(r[0],r[1],r[2]),r[3]}return null}function x1(t){return t.length===10?(ti.fromArray(t,6),Ol.set(t[3],0,0).transformByQuaternion(ti),Gl.set(0,t[4],0).transformByQuaternion(ti),Ll.set(0,0,t[5]).transformByQuaternion(ti),Math.abs(Ol[2])+Math.abs(Gl[2])+Math.abs(Ll[2])):Math.abs(t[5])+Math.abs(t[8])+Math.abs(t[11])}var le={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,EXPIRED:4,FAILED:5},ne;(function(t){t[t.ADD=1]="ADD",t[t.REPLACE=2]="REPLACE"})(ne||(ne={}));var tt;(function(t){t.EMPTY="empty",t.SCENEGRAPH="scenegraph",t.POINTCLOUD="pointcloud",t.MESH="mesh"})(tt||(tt={}));var fe;(function(t){t.I3S="I3S",t.TILES3D="TILES3D"})(fe||(fe={}));var Qt;(function(t){t.GEOMETRIC_ERROR="geometricError",t.MAX_SCREEN_THRESHOLD="maxScreenThreshold"})(Qt||(Qt={}));var Dl={NOT_COMPUTED:-1,USE_OPTIMIZATION:1,SKIP_OPTIMIZATION:0};var kl=1e4,_1=1e4,S1=1e8,w1=new me,Ul=new M,Vl=new M,Ho=new M,ri=new M;function $o(t,e,r){return t+(e-t)*r}function jl(t,e){let r=t instanceof me?t:t.getBoundingSphere(w1),{center:n,radius:i}=r;Ul.copy(n).subtract(e.position);let o=Math.max(Ul.dot(e.direction),0);return Vl.copy(e.direction).scale(o).add(e.position),Ho.copy(Vl).subtract(n),Ho.magnitude()<=i||(ri.copy(Ho).normalize().scale(i).add(n).subtract(e.position),ri.magnitude()===0)?0:(ri.normalize(),Math.min(Math.max(1-ri.dot(e.direction),0),1))}function Wl(t,e,r,n){return!Number.isFinite(n)||n<=0||n>.5?!1:t>r?!0:e!==void 0&&e>r}function Hl(t){let e=Number.isFinite(t.foveatedConeSize)?Math.min(Math.max(t.foveatedConeSize,0),1):1,r=t.refinement===ne.REPLACE;if(r&&!t.skipLevelOfDetail||!t.foveatedScreenSpaceError||e>=1||r&&t.skipLevelOfDetail&&t.priorityProgressiveResolution)return!1;let n=Number.isFinite(t.verticalFieldOfView)&&t.verticalFieldOfView>0?t.verticalFieldOfView:Math.PI/3,i=1-Math.cos(n*.5),o=e*i;if(t.foveatedFactor<=o||i<=o)return!1;let s=Math.min(Math.max((t.foveatedFactor-o)/(i-o),0),1),c=(typeof t.interpolationCallback=="function"?t.interpolationCallback:$o)(t.minimumScreenSpaceErrorRelaxation,t.maximumScreenSpaceError,s),l=Number.isFinite(c)?Math.min(Math.max(c,0),t.maximumScreenSpaceError):0,h=t.screenSpaceError===0&&t.parentScreenSpaceError!==void 0?t.parentScreenSpaceError*.5:t.screenSpaceError;return t.maximumScreenSpaceError-l<=h}function $l(t,e,r){return t&&Number.isFinite(e)&&Number.isFinite(r)&&r>0&&e<r}function Yl(t){let e=t.rootScreenSpaceError>0?Math.min(Math.max(t.reverseScreenSpaceError/t.rootScreenSpaceError,0),1):0,r=Math.floor(e*(kl-1)),n=Number.isFinite(t.foveatedFactor)?Math.min(Math.max(t.foveatedFactor,0),1):0,i=Math.floor(n*(kl-1))*_1;return(t.priorityProgressiveResolution?0:S1)+i+r}var Jt="EPSG:4326",ni="EPSG:4978";function zr(t){let e=t.trim().toUpperCase(),r=e.match(/(?:\/DEF\/CRS\/|URN:OGC:DEF:CRS:)([A-Z0-9_-]+)(?:\/|::)(?:[^/:]*[/:])?([A-Z0-9_.-]+)$/);return r?`${r[1]}:${r[2]}`:e}function xe(t){if(typeof t=="string"){let r=Se(t);return r==="wkt"?E1(t):r==="proj-string"?T1(t):Yo(t)||"projected"}let e=t;return e.type==="BoundCRS"&&e.source_crs?xe(e.source_crs):e.type==="CompoundCRS"&&e.components?.[0]?xe(e.components[0]):String(e.type).includes("Projected")?"projected":String(e.type).includes("Geographic")?"geographic":String(e.type).includes("Geodetic")?e.coordinate_system?.subtype==="Cartesian"?"geocentric":"geographic":"unknown"}function Yo(t){if(typeof t!="string")return;let e=zr(t);if(e===ni)return"geocentric";if(e===Jt||e==="OGC:CRS84")return"geographic";let r=/^EPSG:(\d+)$/.exec(e);if(!r)return;let n=Number(r[1]);if(n===7789)return"geocentric";if(n===4490||n===4979)return"geographic";if(n===3857||n>=32601&&n<=32660||n>=32701&&n<=32760)return"projected"}function E1(t){let e;try{e=Or(t).root}catch{return"unknown"}switch(e.keyword.toUpperCase()){case"GEOCCS":return"geocentric";case"GEOGCS":case"GEOGCRS":case"GEOGRAPHICCRS":case"GEOGRAPHIC2DCRS":case"GEOGRAPHIC3DCRS":return"geographic";case"PROJCS":case"PROJCRS":case"PROJECTEDCRS":return"projected";case"GEODCRS":case"GEODETICCRS":{let n=e.values.find(i=>i.type==="node"&&i.keyword.toUpperCase()==="CS")?.values[0];return n?.type!=="enumeration"&&n?.type!=="string"?"unknown":n.value.toUpperCase()==="CARTESIAN"?"geocentric":n.value.toUpperCase()==="ELLIPSOIDAL"?"geographic":"unknown"}default:return"unknown"}}function T1(t){try{let e=Gr(t).parameters.find(r=>r.name.toLowerCase()==="proj")?.value;switch(e?.toLowerCase()){case"longlat":case"latlong":return"geographic";case"geocent":return"geocentric";default:return e?"projected":"unknown"}}catch{return"unknown"}}function Ie(t,e={}){let r=e.sourceCrs!==void 0,n=e.sourceCrs||t.sourceCrs,i=e.outputCoordinates||"auto",o=e.targetCrs||(i==="ecef"?"EPSG:4978":void 0),s=e.targetHeightReference||"native",a=t.verticalUnitScale??1,c=t.elevationUnitScale??1,l=t.elevationOffset||0,h=t.elevationMode==="onTheGround"||t.elevationMode==="relativeToGround"||t.elevationMode==="relativeToScene",u=t.elevationMode==="relativeToScene"?!!e.sceneElevationProvider:!h||!!e.terrainElevationProvider,f=a!==1||c!==1||t.elevationMode!==void 0&&(h||t.elevationMode==="absoluteHeight"&&l!==0),d=s!=="native"&&s!==t.heightReference,m=!!o||s!=="native"||i!=="auto"||f,p=i!=="target-crs"||!!o,g=!d||(t.heightReference||"unknown")!=="unknown",y=Number.isFinite(a)&&a>0&&Number.isFinite(c)&&c>0,x=!!n&&m&&p&&g&&y&&u&&i!=="local-enu",S=r?"caller-override":t.provenance||"unknown",_=r&&n?xe(n):t.coordinateFrame,w=r?"explicit":t.sourceCrsState||(n?S==="format-default"?"default":"explicit":"absent"),E=Yn({crs:n?{state:w==="default"?"default":"explicit",definition:n,representation:!r&&t.sourceCrsRepresentation||Se(n),provenance:S,alternatives:r?void 0:t.sourceCrsAlternatives}:{state:w==="unknown"?"unknown":"absent",provenance:S},vertical:t.verticalCrs?{state:"explicit",definition:t.verticalCrs,representation:Se(t.verticalCrs),provenance:t.provenance||"metadata"}:void 0,coordinateEpoch:e.coordinateEpoch??t.coordinateEpoch,coordinateFrame:_,coordinateOrder:v1(t.axisOrder),units:r?void 0:t.units}),v=Ko(E.crs),T=E.vertical?Ko(E.vertical):void 0,I=o?b1(o):void 0;return Object.freeze({...E,sourceCrs:v,verticalCrs:T,verticalUnitScale:a,coordinateEpoch:e.coordinateEpoch??t.coordinateEpoch,heightReference:t.heightReference||"unknown",elevationMode:t.elevationMode,elevationOffset:t.elevationOffset,elevationUnit:t.elevationUnit,elevationUnitScale:c,coordinateFrame:_||"unknown",axisOrder:t.axisOrder||"unknown",provenance:S,targetCrs:I,targetHeightReference:s,outputCoordinates:i,status:m?x?"transformable":"unresolved":"native",warnings:Object.freeze([...t.warnings||[]])})}function It(t,e={}){return Ie({sourceCrs:t?.sourceCrs,sourceCrsState:t?.crs.state,sourceCrsRepresentation:t?.crs.state==="explicit"||t?.crs.state==="default"?t.crs.representation:void 0,sourceCrsAlternatives:t?.crs.state==="explicit"||t?.crs.state==="default"?t.crs.alternatives:void 0,verticalCrs:t?.verticalCrs,units:t?.units,verticalUnitScale:t?.verticalUnitScale,coordinateEpoch:t?.coordinateEpoch,heightReference:t?.heightReference,elevationMode:t?.elevationMode,elevationOffset:t?.elevationOffset,elevationUnit:t?.elevationUnit,elevationUnitScale:t?.elevationUnitScale,coordinateFrame:t?.coordinateFrame,axisOrder:t?.axisOrder,provenance:t?.provenance,warnings:t?.warnings},e)}function Ko(t){return t.state==="explicit"||t.state==="default"?t.definition:void 0}function b1(t){let e=Yn({crs:{state:"explicit",definition:t,representation:Se(t),provenance:"caller-override"}}),r=Ko(e.crs);if(!r)throw new Error("Failed to normalize a known target CRS definition");return r}function v1(t){switch(t){case"xy":return["x","y"];case"yx":return["y","x"];case"xyz":return["x","y","z"];default:return[]}}function er(t){if(t.status!=="transformable"&&t.status!=="transformed")throw new Error("Only a transformable spatial reference can be marked as transformed");return Object.freeze({...t,status:"transformed"})}function ii(t){return!!(t&&typeof t=="object"&&"initialize"in t&&"getRootTileset"in t&&"initializeTileHeaders"in t&&"loadTileContent"in t)}var ai=1024*1024,ih=512*ai,oh=512*ai,P1=32*ai,R1=ai;function oi(t,e){if(!Number.isFinite(t)||t<0)throw new Error(`${e} must be a finite number greater than or equal to 0`);return t}function Kl(t,e){let r=t.cacheBytes??e;return oi(r,"cacheBytes")}function Xl(t,e){let r=t.maximumCacheOverflowBytes??e;return oi(r,"maximumCacheOverflowBytes")}var Xo={description:"",ellipsoid:G.WGS84,modelMatrix:new q,throttleRequests:!0,maxRequests:64,cacheBytes:ih,maximumCacheOverflowBytes:oh,maximumTilesSelected:0,debounceTime:0,onTileLoad:()=>{},onTileUnload:()=>{},onTileError:()=>{},onSourceError:()=>{},onTilesetError:()=>{},onTraversalComplete:t=>t,onUpdate:()=>{},contentLoader:void 0,viewDistanceScale:1,progressiveResolutionHeightFraction:.3,foveatedScreenSpaceError:!0,foveatedConeSize:.1,foveatedMinimumScreenSpaceErrorRelaxation:0,foveatedInterpolationCallback:$o,foveatedTimeDelay:.2,maximumScreenSpaceError:8,skipLevelOfDetail:!1,baseScreenSpaceError:1024,skipScreenSpaceErrorFactor:16,skipLevels:1,immediatelyLoadDesiredLevelOfDetail:!1,dynamicScreenSpaceError:!0,dynamicScreenSpaceErrorDensity:2e-4,dynamicScreenSpaceErrorFactor:24,dynamicScreenSpaceErrorHeightFalloff:.25,memoryAdjustedScreenSpaceError:!0,loadTiles:!0,updateTransforms:!0,viewportTraversersMap:null,loadOptions:{fetch:{}},attributions:[],basePath:"",i3s:{},spatial:{}},Zo="Tiles In Tileset(s)",Qo="Tiles In Memory",Zl="Tiles In View",Ql="Tiles To Render",Jl="Tiles Loaded",Jo="Tiles Loading",eh="Tiles Unloaded",th="Failed Tile Loads",rh="Points/Vertices",es="Tile Memory Use",nh="Maximum Screen Space Error",si=class{options;loadOptions;source;type;tileset;loader;url;basePath;modelMatrix;ellipsoid;lodMetricType;lodMetricValue;refine;root=null;roots={};asset={};schema=null;schemaUri=null;groups=[];metadata=null;statistics=null;spatialReference=Ie({});description="";properties;extras=null;attributions={};credits={};stats;contentFormats;cartographicCenter=null;cartesianCenter=null;zoom=1;boundingVolume=null;dynamicScreenSpaceErrorComputedDensity=0;gpuMemoryUsageInBytes=0;memoryAdjustedScreenSpaceError=0;_cacheBytes=ih;_maximumCacheOverflowBytes=oh;_frameNumber=0;_tiles={};_pendingCount=0;selectedTiles=[];traverseCounter=0;geometricError=0;lastUpdatedVieports=null;_requestedTiles=[];_emptyTiles=[];frameStateData={};_cameraMotionStates={};_deferredTraversalTimeout=null;_traverser;_cache=new Zt;_requestScheduler;_heldTiles=new Set;updatePromise=null;tilesetInitializationPromise;constructor(e,r){if(!ii(e))throw new Error("Tileset3D requires a Tileset3DSource instance");let n=r||{},i=e.type===fe.TILES3D,o=i?Xo.cacheBytes:P1,s=i?Xo.maximumCacheOverflowBytes:R1,a=Kl(n,o),c=Xl(n,s);this.options={...Xo,...n,cacheBytes:a,maximumCacheOverflowBytes:c,memoryAdjustedScreenSpaceError:n.memoryAdjustedScreenSpaceError??i},this.loadOptions=this.options.loadOptions||{},this.source=e,this.tileset=null,this.loader=this.source.loader,this.type=this.source.type,this.url=this.source.url,this.basePath=this.source.basePath,this.modelMatrix=this.options.modelMatrix,this.ellipsoid=this.options.ellipsoid,this.lodMetricType="",this.lodMetricValue=0,this.refine="",this.contentFormats=this.source.contentFormats,this._traverser=this._initializeTraverser(),this._requestScheduler=new ft({throttleRequests:this.options.throttleRequests,maxRequests:this.options.maxRequests}),this.memoryAdjustedScreenSpaceError=this.options.maximumScreenSpaceError,this._cacheBytes=a,this._maximumCacheOverflowBytes=c;let l=this._getSourceMetadata();l&&(this.spatialReference=It(l.spatialReference,this.options.spatial)),this.stats=new ke({id:this.url}),this._initializeStats(),this.tilesetInitializationPromise=this._initializeTileSet()}destroy(){this._clearDeferredTraversal(),this.source.destroy?.(),this._destroy()}isLoaded(){return this._pendingCount===0&&this._frameNumber!==0&&this._requestedTiles.length===0}get tiles(){return Object.values(this._tiles)}get frameNumber(){return this._frameNumber}get requestedTiles(){return this._requestedTiles.slice()}get emptyTiles(){return this._emptyTiles.slice()}get cacheBytes(){return this._cacheBytes}set cacheBytes(e){this._cacheBytes=oi(e,"cacheBytes"),this.options.cacheBytes=this._cacheBytes}get maximumCacheOverflowBytes(){return this._maximumCacheOverflowBytes}set maximumCacheOverflowBytes(e){this._maximumCacheOverflowBytes=oi(e,"maximumCacheOverflowBytes"),this.options.maximumCacheOverflowBytes=this._maximumCacheOverflowBytes}get queryParams(){let e=this.source.getTileUrl(this.url),r=e.indexOf("?");return r>=0?e.slice(r+1):""}setProps(e){let r=Kl(e,this.cacheBytes),n=Xl(e,this.maximumCacheOverflowBytes);this.options={...this.options,...e,cacheBytes:r,maximumCacheOverflowBytes:n},this._cacheBytes=r,this._maximumCacheOverflowBytes=n}getTileUrl(e){return this.source.getTileUrl(e)}hasExtension(e){return!!this.source.hasExtension?.(e)}update(e=null){this.tilesetInitializationPromise.then(()=>{!e&&this.lastUpdatedVieports?e=this.lastUpdatedVieports:this.lastUpdatedVieports=e,e&&this.doUpdate(e)})}async selectTiles(e=null){return await this.tilesetInitializationPromise,e&&(this.lastUpdatedVieports=e),this.updatePromise||(this.updatePromise=new Promise(r=>{setTimeout(()=>{this.lastUpdatedVieports&&this.doUpdate(this.lastUpdatedVieports),r(this._frameNumber),this.updatePromise=null},this.options.debounceTime)})),this.updatePromise}adjustScreenSpaceError(){this.gpuMemoryUsageInBytes<this.cacheBytes?this.memoryAdjustedScreenSpaceError=Math.max(this.memoryAdjustedScreenSpaceError/1.02,this.options.maximumScreenSpaceError):this.gpuMemoryUsageInBytes>this.cacheBytes+this.maximumCacheOverflowBytes&&(this.memoryAdjustedScreenSpaceError*=1.02)}doUpdate(e){if("loadTiles"in this.options&&!this.options.loadTiles||this.traverseCounter>0)return;let r=e instanceof Array?e:[e],n=new Set(r.map(a=>a.id));for(let a of Object.keys(this.frameStateData))n.has(a)||delete this.frameStateData[a];this._cache.reset(),this._frameNumber++,this.traverseCounter=r.length;let i=Date.now(),o=Number.POSITIVE_INFINITY,s=[];for(let a of r){let c=a.id;this._needTraverse(c)?s.push(c):this.traverseCounter--}for(let a of r){let c=a.id;if(this.roots[c]||(this.roots[c]=this._initializeTileHeaders(this.tileset,null)),!s.includes(c))continue;let l=ei(a,this._frameNumber),h=this.roots[c],u=Al(this._cameraMotionStates[c],l.camera.position,l.camera.direction,i);this._cameraMotionStates[c]=u.state,l.camera.timeSinceMovement=u.timeSinceMovement,zl(h,this.modelMatrix),l.dynamicScreenSpaceErrorDensity=this.type===fe.TILES3D&&this.options.dynamicScreenSpaceError&&!l.viewport.orthographic?Fl(h,l,this.options):0,this.dynamicScreenSpaceErrorComputedDensity=l.dynamicScreenSpaceErrorDensity,this._traverser.traverse(h,l,this.options),Object.keys(this._traverser.deferredTiles).length>0&&(o=Math.min(o,Math.max(this.options.foveatedTimeDelay-u.timeSinceMovement,0)))}Number.isFinite(o)?this._scheduleDeferredTraversal(o):this._clearDeferredTraversal()}_scheduleDeferredTraversal(e){this._clearDeferredTraversal(),this._deferredTraversalTimeout=setTimeout(()=>{this._deferredTraversalTimeout=null,this.selectTiles().catch(r=>{let n=r instanceof Error?r:new Error(String(r));this._onTilesetError(n)})},Math.max(e*1e3,0))}_clearDeferredTraversal(){this._deferredTraversalTimeout!==null&&(clearTimeout(this._deferredTraversalTimeout),this._deferredTraversalTimeout=null)}_needTraverse(e){let r=e;return this.options.viewportTraversersMap&&(r=this.options.viewportTraversersMap[e]),r===e}_onTraversalEnd(e){let r=e.viewport.id;this.frameStateData[r]||(this.frameStateData[r]={selectedTiles:[],_requestedTiles:[],_emptyTiles:[]});let n=this.frameStateData[r],i=Object.values(this._traverser.selectedTiles),[o,s]=Il(i,e,this.options.maximumTilesSelected);n.selectedTiles=o;for(let a of s)a.unselect();n._requestedTiles=Object.values(this._traverser.requestedTiles),n._emptyTiles=Object.values(this._traverser.emptyTiles),this.traverseCounter--,!(this.traverseCounter>0)&&this._updateTiles()}_updateTiles(){let e=this.selectedTiles;this.selectedTiles=[],this._requestedTiles=[],this._emptyTiles=[];for(let o in this.frameStateData){let s=this.frameStateData[o];this.selectedTiles=this.selectedTiles.concat(s.selectedTiles),this._requestedTiles=this._requestedTiles.concat(s._requestedTiles),this._emptyTiles=this._emptyTiles.concat(s._emptyTiles)}this.selectedTiles=this.options.onTraversalComplete(this.selectedTiles);let r=new Set(this.selectedTiles.map(o=>o.id)),n=this.selectedTiles.some(o=>!o.tileDrawn),i=0;if(n){for(let o of r)this._heldTiles.add(o);for(let o of this._heldTiles){if(r.has(o))continue;let s=this._tiles[o];s&&s.contentAvailable?(s._selectedFrame=this._frameNumber,this.selectedTiles.push(s),i++):this._heldTiles.delete(o)}}else this._heldTiles=r;i>0&&setTimeout(()=>{this.selectTiles()},0);for(let o of this.selectedTiles)this._tiles[o.id]=o;this._loadTiles(),this._unloadTiles(),this._updateStats(),this._tilesChanged(e,this.selectedTiles)&&this.options.onUpdate()}_tilesChanged(e,r){if(e.length!==r.length)return!0;let n=new Set(e.map(s=>s.id)),i=new Set(r.map(s=>s.id)),o=e.some(s=>!i.has(s.id));return o=o||r.some(s=>!n.has(s.id)),o}_loadTiles(){this._requestedTiles.sort((e,r)=>e._priority-r._priority);for(let e of this._requestedTiles)e.contentUnloaded&&this._loadTile(e)}_unloadTiles(){this._cache.unloadTiles(this,(e,r)=>e._unloadTile(r)),this.options.memoryAdjustedScreenSpaceError&&this.adjustScreenSpaceError()}_updateStats(){let e=0,r=0;for(let n of this.selectedTiles)if(n.contentAvailable&&n.content){e++;let i=n.contents.length?n.contents:[n.content];for(let o of i)o.pointCount?r+=o.pointCount:r+=o.vertexCount||0}this.stats.get(Zl).count=this.selectedTiles.length,this.stats.get(Ql).count=e,this.stats.get(rh).count=r,this.stats.get(nh).count=this.memoryAdjustedScreenSpaceError}async _initializeTileSet(){try{let e=this.source.initialize(),r=this._getSourceMetadata();r&&this._syncSourceState(r),r?.tileset?.root&&typeof r.tileset.root.then!="function"&&(!this.source.prepareTileset||this.spatialReference?.status==="native")&&(this.root=this._initializeTileHeaders(r.tileset,null),this._applyViewState()),await e;let n=this.source.getMetadata();this._syncSourceState(n),await this.source.prepareTileset?.(this),this.root||(this.root=this._initializeTileHeaders(n.tileset,null)),this._applyViewState()}catch(e){let r=e instanceof Error?e:new Error(String(e));throw this._onSourceError(r,this.root),this._onTilesetError(r),r}}_initializeStats(){this.stats.get(Zo),this.stats.get(Jo),this.stats.get(Qo),this.stats.get(Zl),this.stats.get(Ql),this.stats.get(Jl),this.stats.get(eh),this.stats.get(th),this.stats.get(rh),this.stats.get(es,"memory"),this.stats.get(nh)}_initializeTileHeaders(e,r){return this.source.initializeTileHeaders(this,e,r)}_initializeTraverser(){return this.source.createTraverser({basePath:this.basePath,onTraversalEnd:this._onTraversalEnd.bind(this)})}_destroyTileHeaders(e){this._destroySubtree(e)}async _loadTile(e){let r=null;try{this._onStartTileLoading(),r=await e.loadContent()}catch(n){let i=n instanceof Error?n:new Error("load failed");this._onSourceError(i,e),this._onTileLoadError(e,i)}finally{this._onEndTileLoading(),this._onTileLoad(e,r)}}async _loadTileChildren(e,r){try{this._onStartTileLoading(),await e.loadChildren(r)}catch(n){let i=n instanceof Error?n:new Error("subtree load failed");this._onSourceError(i,e),this._onTileLoadError(e,i)}finally{this._onEndTileLoading()}}_onTileLoadError(e,r){this.stats.get(th).incrementCount();let n=r.message||r.toString(),i=e.url;console.error(`A 3D tile failed to load: ${e.url} ${n}`),this.options.onTileError(e,n,i)}_onSourceError(e,r=null){this.options.onSourceError(e,this.source,r)}_onTilesetError(e){this.options.onTilesetError(e,this)}_onTileLoad(e,r){if(!r?.loaded)return;e.content&&Jn(e,e.content),this.source.onTileLoaded?.(this,e,r),this._syncSourceState(this.source.getMetadata());let n=this.source.getTilesTotalCount?.();n&&(this.stats.get(Zo).reset(),this.stats.get(Zo).addCount(n)),this._addTileToCache(e),this.options.onTileLoad(e)}_onStartTileLoading(){this._pendingCount++,this.stats.get(Jo).incrementCount()}_onEndTileLoading(){this._pendingCount--,this.stats.get(Jo).decrementCount()}_addTileToCache(e){this._cache.add(this,e,r=>r._updateCacheStats(e))}_updateCacheStats(e){this.stats.get(Jl).incrementCount(),this.stats.get(Qo).incrementCount(),this.gpuMemoryUsageInBytes+=e.gpuMemoryUsageInBytes||0,this.stats.get(es).count=this.gpuMemoryUsageInBytes,this.options.memoryAdjustedScreenSpaceError&&this.adjustScreenSpaceError()}_unloadTile(e){this.gpuMemoryUsageInBytes-=e.gpuMemoryUsageInBytes||0,this.stats.get(Qo).decrementCount(),this.stats.get(eh).incrementCount(),this.stats.get(es).count=this.gpuMemoryUsageInBytes,this.options.onTileUnload(e),e.unloadContent()}_destroy(){let e=[];for(this.root&&e.push(this.root);e.length>0;){let r=e.pop();for(let n of r.children)e.push(n);this._destroyTile(r)}this.root=null}_destroySubtree(e){let r=e,n=[r];for(;n.length>0;){e=n.pop();for(let i of e.children)n.push(i);e!==r&&this._destroyTile(e)}r.children=[]}_destroyTile(e){this._cache.unloadTile(this,e),this._unloadTile(e),e.destroy()}_syncSourceState(e){this.tileset=e.tileset,this.loader=e.loader,this.type=e.type,this.url=e.url,this.basePath=e.basePath,this.lodMetricType=e.lodMetricType,this.lodMetricValue=e.lodMetricValue,this.refine=e.refine,this.contentFormats=this.source.contentFormats,this.asset=this.source.asset||this.asset;let r=e.tileset;this.schema=r.schema||null,this.schemaUri=r.schemaUri||null,this.groups=r.groups||[],this.metadata=r.metadata||null,this.statistics=r.statistics??null;let n=It(e.spatialReference,this.options.spatial);this.spatialReference=C1(this.spatialReference,n),this.properties=this.source.properties??this.properties,this.extras=this.source.extras??this.extras,this.options.attributions?.length?this.credits={attributions:this.options.attributions}:this.credits=this.source.credits||this.credits}_applyViewState(){let e=this.source.getViewState(this.root);this.asset=e.asset||this.source.asset||{},this.properties=e.properties??this.source.properties,this.extras=e.extras??this.source.extras??null,this.credits=e.credits||this.source.credits||this.credits||{attributions:this.options.attributions||[]},this.description=e.description||this.options.description||"",this.boundingVolume=e.boundingVolume||this.root?.boundingVolume||null,this.cartographicCenter=e.cartographicCenter||new M,this.cartesianCenter=e.cartesianCenter||null,this.zoom=e.zoom||1,this.geometricError=this.tileset?.geometricError||0}_getSourceMetadata(){try{return this.source.getMetadata()}catch{return null}}};function C1(t,e){return t?.status==="transformed"&&t.sourceCrs===e.sourceCrs&&t.targetCrs===e.targetCrs&&t.targetHeightReference===e.targetHeightReference&&t.outputCoordinates===e.outputCoordinates?t:e}function sh(t){let e=t.selectedTiles.slice(),r=t.requestedTiles.slice(),n=t.emptyTiles.slice(),i=c=>c.map(l=>String(l.id)).sort(),o=c=>{let l=t.stats.get(c).count;return typeof l=="number"&&Number.isFinite(l)?l:0},a=t.source.getImplicitTilingStats?.();return{frameNumber:t.frameNumber,selectedTileIds:i(e),requestedTileIds:i(r),emptyTileIds:i(n),visibleTileCount:e.length,renderableTileCount:e.filter(c=>c.contentAvailable&&!!c.content).length,loadingTileCount:o("Tiles Loading"),loadedTileCount:o("Tiles Loaded"),failedTileCount:o("Failed Tile Loads"),cachedTileCount:o("Tiles In Memory"),cacheBytes:t.gpuMemoryUsageInBytes,maximumScreenSpaceError:t.memoryAdjustedScreenSpaceError,...a?{implicitTiling:a}:{}}}async function*ah(t,e={}){if(await t.tilesetInitializationPromise,ci(e.signal),!t.root)throw new Error("Tileset initialization completed without a root tile");let r=[t.root],n=new Set;for(;r.length>0;){ci(e.signal);let i=r.pop();if(n.has(i))continue;if(n.add(i),i.header.implicitSubtree&&i.childrenState!=="ready"){let s=t.source.loadTileChildrenForTraversal;if(!s)throw new Error("Tileset source does not support camera-independent subtree loading");if(!(await s.call(t.source,i,e.signal)).loaded)throw new Error(`Unable to load implicit subtree for tile ${i.id}`);i.childrenState="ready"}if(t.type===fe.I3S&&t.source.loadTileChildrenForTraversal&&!(await t.source.loadTileChildrenForTraversal(i,e.signal)).loaded)throw new Error(`Unable to load I3S child nodes for tile ${i.id}`);ci(e.signal);let o=i.contentUrls.length>0&&!i.content;try{if(o){let s=await i.loadContentForTraversal();if(ci(e.signal),!s.loaded)throw new Error(`Unable to load tile content for tile ${i.id}`);t.source.onTileLoaded?.(t,i,s)}yield{tile:i,contents:i.contentEntries}}finally{e.unloadContent&&o&&i.unloadContent()}for(let s=i.children.length-1;s>=0;s--)r.push(i.children[s])}}function ci(t){if(t?.aborted)throw t.reason??new DOMException("The operation was aborted","AbortError")}var hi=class{sourceUrl;options;archivePromise;constructor(e){this.options=e,this.sourceUrl=A1(e.data,e.fallbackFilename)}async loadRoot(e,r,n){let i=this.options.rootPath?`${li(this.sourceUrl)}/${this.options.rootPath}`:e;return await this.parseArchiveResource(i,this.options.rootPath,r,n,this.options.rootMode)}async loadResource(e,r,n){let i=this.resolveArchivePath(e,e);return await this.parseArchiveResource(e,i,r,n)}async parseArchiveResource(e,r,n,i,o){let s=this.options.getCoreApi();if(!s)throw new Error(this.options.missingCoreApiMessage);let a=await this.loadFile(r,o),c=this.createArchiveFetch(e);return await s.parse(a,n,{...i,fetch:c},{url:e,fetch:c,_parse:s.parse,loaders:[n],coreApi:s})}createArchiveFetch(e){return async r=>{let n=typeof r=="string"?r:r instanceof URL?r.toString():r.url,i=this.resolveArchivePath(n,e),o=await this.loadFile(i);return new Response(o,{status:200})}}async loadFile(e,r){this.archivePromise||=this.openArchiveReadableFile().then(i=>this.options.parseArchive(i));let n=await this.archivePromise;return await this.options.getFile(n,e,r)}async openArchiveReadableFile(){let{data:e}=this.options;if(typeof e!="string")return new Xt(e);if(/^https?:\/\//i.test(e))return new Ir(e);let r=this.options.getCoreApi();if(!r)throw new Error(this.options.missingCoreApiMessage);let n=await r.fetchFile(e);return new Xt(await n.arrayBuffer())}resolveArchivePath(e,r){let n=li(e),i=li(this.sourceUrl),o=li(r),s=o===i?i:Ae.dirname(o),a=new RegExp(`\\.${this.options.archiveExtension}/(.*)$`,"i"),c=n.match(a);if(c?.[1])return c[1];let l=/^[a-z][a-z0-9+.-]*:/i.test(n)||n.startsWith("/"),h=n.startsWith(i)?n:o===i&&!l?`${i}/${n}`:/^[a-z][a-z0-9+.-]*:\/\//i.test(o)?new URL(n,o).href:Ae.resolve(s,n);return h===i?"":h.startsWith(`${i}/`)?h.slice(i.length+1):h.replace(/^\/+/,"")}};function A1(t,e){return typeof t=="string"?t:`memory://${"name"in t&&typeof t.name=="string"&&t.name?t.name:e}`}function li(t){return t.split(/[?#]/,1)[0]}function ui(t){let e=[],r=new Set,n=i=>{if(!i||typeof i!="object"||r.has(i))return;r.add(i);let o=i,s=o.extensions?.EXT_mesh_features?.featureIds;if(Array.isArray(s))for(let a of s){if(!a||typeof a!="object")continue;let c=a.texture?"texture":a.implicit?"implicit":a.attribute!==void 0?"attribute":a.propertyTable!==void 0?"property-table":"constant";e.push({source:c,attribute:a.attribute,propertyTable:a.propertyTable,constant:a.constant,texture:a.texture,implicit:a.implicit,values:a.values,details:a})}for(let a of Object.values(o))n(a)};return n(t),e}function hh(t){return t!=null}var pe=new M,fi=new M,ch=new q;function tr(t,e,r,n=e){if(Ye(t,"3D Tile: boundingVolume must be defined"),t.box){let i=t.s2VolumeInfo?ch:e;return lh(t.box,i,r)}if(t.region){let i=vr(t.region),o=e.equals(n)?ch:e.clone().multiplyRight(n.clone().invert());return lh([...i.center,...i.halfAxes],o,r)}if(t.sphere)return I1(t.sphere,e,r);throw new Error("3D Tile: boundingVolume must contain a sphere, region, or box")}function uh(t,e,r=!1){if(t.box||t.region&&r)return N1(e);if(t.region){let[n,i,o,s,a,c]=t.region;return[[ye(n),ye(i),a],[ye(o),ye(s),c]]}if(t.sphere)return O1(e);throw new Error("Unkown boundingVolume type")}function lh(t,e,r){let n=new M(t[0],t[1],t[2]);e.transform(n,n);let i=[];if(t.length===10){let l=t.slice(3,6),h=new De;h.fromArray(t,6);let u=new M([1,0,0]),f=new M([0,1,0]),d=new M([0,0,1]);u.transformByQuaternion(h),u.scale(l[0]),f.transformByQuaternion(h),f.scale(l[1]),d.transformByQuaternion(h),d.scale(l[2]),i=[...u.toArray(),...f.toArray(),...d.toArray()]}else i=[...t.slice(3,6),...t.slice(6,9),...t.slice(9,12)];let o=e.transformAsVector(i.slice(0,3)),s=e.transformAsVector(i.slice(3,6)),a=e.transformAsVector(i.slice(6,9)),c=new $([o[0],o[1],o[2],s[0],s[1],s[2],a[0],a[1],a[2]]);return hh(r)?(r.center=n,r.halfAxes=c,r):new et(n,c)}function I1(t,e,r){let n=new M(t[0],t[1],t[2]);e.transform(n,n);let i=e.getScale(fi),o=Math.max(Math.max(i[0],i[1]),i[2]),s=t[3]*o;return hh(r)?(r.center=n,r.radius=s,r):new me(n,s)}function N1(t){let e=fh(),{halfAxes:r}=t,n=new M(r.getColumn(0)),i=new M(r.getColumn(1)),o=new M(r.getColumn(2));for(let s=0;s<2;s++){for(let a=0;a<2;a++){for(let c=0;c<2;c++)pe.copy(t.center),pe.add(n),pe.add(i),pe.add(o),dh(e,pe),o.negate();i.negate()}n.negate()}return e}function O1(t){let e=fh(),{center:r,radius:n}=t,i=G.WGS84.scaleToGeodeticSurface(r,pe),o;i?o=G.WGS84.geodeticSurfaceNormal(i):o=new M(0,0,1);let s=new M(o[2],-o[1],0);s.len()>0?s.normalize():s=new M(0,1,0);let a=s.clone().cross(o);for(let c of[s,a,o]){fi.copy(c).scale(n);for(let l=0;l<2;l++)pe.copy(r),pe.add(fi),dh(e,pe),fi.negate()}return e}function fh(){return[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]]}function dh(t,e){G.WGS84.cartesianToCartographic(e,pe),t[0][0]=Math.min(t[0][0],pe[0]),t[0][1]=Math.min(t[0][1],pe[1]),t[0][2]=Math.min(t[0][2],pe[2]),t[1][0]=Math.max(t[1][0],pe[0]),t[1][1]=Math.max(t[1][1],pe[1]),t[1][2]=Math.max(t[1][2],pe[2])}var ts=new M,mh=new M,_t=new M,ph=new M,G1=new M,rs=new q,gh=new q;function di(t,e){if(t.lodMetricValue===0||Number.isNaN(t.lodMetricValue))return"DIG";let r=2*ns(t,e);if(r<2)return"OUT";if(!t.header.children)return"DRAW";switch(t.lodMetricType){case"screenSpaceRelative":{let n=e.topDownViewport.height||1;return r/n<=t.lodMetricValue?"DRAW":"DIG"}case"distanceRangeFromDefaultCamera":return t.distanceToTile(e)>=t.lodMetricValue?"DRAW":"DIG";case"maxScreenThresholdSQ":{let n=Math.sqrt(t.lodMetricValue/(Math.PI*.25));return r<=n?"DRAW":"DIG"}default:return r<=t.lodMetricValue?"DRAW":"DIG"}}function ns(t,e){let{topDownViewport:r}=e,n=t.header.i3sLodMbs||t.header.mbs,i=n[1],o=n[0],s=n[2],a=n[3],c=[...t.boundingVolume.center],l=r.unprojectPosition(r.cameraPosition);G.WGS84.cartographicToCartesian(l,ts),mh.copy(ts).subtract(c).normalize(),G.WGS84.eastNorthUpToFixedFrame(c,rs),gh.copy(rs).invert(),_t.copy(ts).transform(gh);let h=Math.sqrt(_t[0]*_t[0]+_t[1]*_t[1]),u=h*h/_t[2];ph.copy([_t[0],_t[1],u]);let d=ph.transform(rs).subtract(c).normalize(),p=mh.cross(d).normalize().scale(a).add(c),g=G.WGS84.cartesianToCartographic(p),y=r.project([o,i,s]),x=r.project(g);return G1.copy(y).subtract(x).magnitude()}var Fr=class{_map=new Map;_array;_length;constructor(e=0){this._array=new Array(e),this._length=e}get length(){return this._length}set length(e){this._length=e,e>this._array.length&&(this._array.length=e)}get values(){return this._array}get(e){return Ye(e<this._array.length),this._array[e]}set(e,r){Ye(e>=0),e>=this.length&&(this.length=e+1),this._map.has(this._array[e])&&this._map.delete(this._array[e]),this._array[e]=r,this._map.set(r,e)}delete(e){let r=this._map.get(e);r>=0&&(this._array.splice(r,1),this._map.delete(e),this.length--)}peek(){return this._array[this._length-1]}push(e){if(!this._map.has(e)){let r=this.length++;this._array[r]=e,this._map.set(e,r)}}pop(){let e=this._array[--this.length];return this._map.delete(e),e}reserve(e){Ye(e>=0),e>this._array.length&&(this._array.length=e)}resize(e){Ye(e>=0),this.length=e}trim(e){e==null&&(e=this.length),this._array.length=e}reset(){this._array=[],this._map=new Map,this._length=0}find(e){return this._map.has(e)}};var L1={loadSiblings:!1,skipLevelOfDetail:!1,baseScreenSpaceError:1024,skipScreenSpaceErrorFactor:16,skipLevels:1,immediatelyLoadDesiredLevelOfDetail:!1,updateTransforms:!0,onTraversalEnd:()=>{},viewportTraversersMap:{},basePath:""},rt=class{options;disableSkipLevelOfDetail=!1;root=null;selectedTiles={};requestedTiles={};deferredTiles={};emptyTiles={};lastUpdate=new Date().getTime();updateDebounceTime=1e3;_traversalStack=new Fr;_emptyTraversalStack=new Fr;_frameNumber=null;traversalFinished(e){return!0}constructor(e){this.options={...L1,...e}}isSkipLevelOfDetailEnabled(){return this.options.skipLevelOfDetail&&!this.disableSkipLevelOfDetail}traverse(e,r,n){this.root=e,this.options={...this.options,...n},this.reset(),this.updateTile(e,r),this._frameNumber=r.frameNumber,this.executeTraversal(e,r)}reset(){this.requestedTiles={},this.deferredTiles={},this.selectedTiles={},this.emptyTiles={},this._traversalStack.reset(),this._emptyTraversalStack.reset()}executeTraversal(e,r){let n=this._traversalStack;for(e._selectionDepth=1,n.push(e);n.length>0;){let i=n.pop(),o=!1;this.canTraverse(i,r)&&(this.updateChildTiles(i,r),o=this.updateAndPushChildren(i,r,n,i.hasRenderContent?i._selectionDepth+1:i._selectionDepth));let s=i.parent,a=!!(!s||s._shouldRefine),c=!o;i.hasRenderContent?i.refine===ne.ADD?(this.loadTile(i,r),this.selectTile(i,r)):i.refine===ne.REPLACE&&(this.loadTile(i,r),(c||this.isSkipLevelOfDetailEnabled())&&this.selectTile(i,r)):(this.emptyTiles[i.id]=i,this.loadTile(i,r),c&&this.selectTile(i,r)),this.touchTile(i,r),i._shouldRefine=o&&a}this.completeTraversal(r)}completeTraversal(e){let r=new Date().getTime();(this.traversalFinished(e)||r-this.lastUpdate>this.updateDebounceTime)&&(this.lastUpdate=r,this.options.onTraversalEnd(e))}updateChildTiles(e,r){let n=e.children;for(let i of n)this.updateTile(i,r)}updateAndPushChildren(e,r,n,i){let{loadSiblings:o}=this.options,s=this.isSkipLevelOfDetailEnabled(),a=e.children;a.sort(this.compareDistanceToCamera.bind(this));let c=e.refine===ne.REPLACE&&e.hasRenderContent&&!s,l=!1,h=!0;for(let u of a)if(u._selectionDepth=i,u.isVisibleAndInRequestVolume?(n.find(u)&&n.delete(u),n.push(u),l=!0):(c||o)&&u._inRequestVolume&&(this.loadTile(u,r),this.touchTile(u,r)),c){let f;if(u._inRequestVolume?u.hasRenderContent?f=u.contentAvailable:f=this.executeEmptyTraversal(u,r):f=!1,h=h&&f,!h)return!1}return l||(h=!1),h}updateTile(e,r){this.updateTileVisibility(e,r)}selectTile(e,r){this.shouldSelectTile(e,r)&&(e._selectedFrame=r.frameNumber,this.selectedTiles[e.id]=e)}loadTile(e,r){if(this.shouldLoadTile(e)){if(this.shouldDeferTileRequest(e)){this.deferredTiles[e.id]=e;return}e._requestedFrame=r.frameNumber,e._priority=e._getPriority(),this.requestedTiles[e.id]=e}}shouldDeferTileRequest(e){return e.priorityDeferred}touchTile(e,r){e.tileset._cache.touch(e),e._touchedFrame=r.frameNumber}canTraverse(e,r){return e.hasChildren?e.hasTilesetContent?!e.contentExpired:this.shouldRefine(e,r):!1}shouldLoadTile(e){return e.hasUnloadedContent||e.contentExpired}shouldSelectTile(e,r){return e.contentAvailable&&e.contentVisibility(r)!=="outside"}shouldRefine(e,r,n=!1){let i=e._screenSpaceError;return n&&(i=e.getScreenSpaceError(r,!0)),i>e.tileset.memoryAdjustedScreenSpaceError}updateTileVisibility(e,r){let n=[];if(this.options.viewportTraversersMap)for(let i in this.options.viewportTraversersMap)this.options.viewportTraversersMap[i]===r.viewport.id&&n.push(i);else n.push(r.viewport.id);e.updateVisibility(r,n)}compareDistanceToCamera(e,r){return e._distanceToCamera-r._distanceToCamera}anyChildrenVisible(e,r){let n=!1;for(let i of e.children)i.updateVisibility(r),n=n||i.isVisibleAndInRequestVolume;return n}executeEmptyTraversal(e,r){let n=!0,i=!1,o=this._emptyTraversalStack;for(o.push(e);o.length>0;){let s=o.pop(),a=!s.hasRenderContent&&this.canTraverse(s,r),c=!s.hasRenderContent&&s.children.length===0;if(s.header.implicitSubtree&&(i=!0,n=!1),!a&&!s.contentAvailable&&!c&&(n=!1),this.updateTile(s,r),s.isVisibleAndInRequestVolume||(this.loadTile(s,r),this.touchTile(s,r)),a){let l=s.children;for(let h of l)o.push(h)}}return e.hasEmptyContent&&!i||n}};var is=new M;function q1(t,e,r,n,i=[]){let o=t.length?t:[e],s=!1,a=!1;for(let c of o){let l="inside";if(n!==ce.MASK_INSIDE&&(l=r.computeVisibility(c),l==="outside"))continue;let h=!1;for(let u of i)if(c.intersectPlane(u)==="outside"){h=!0;break}h||(s=!0,a=a||l==="intersecting")}return s?a?"intersecting":"inside":"outside"}function Mh(t){if(!t||typeof t!="object")return!1;let e=t;return e.shape==="tileset3d"||e.type==="tileset3d"||!!e.tileset}function z1(t){return t!=null}var Ne=class{tileset;header;id;url;parent;refine;type;contentUrl;contentUrls=[];lodMetricType="geometricError";lodMetricValue=0;_unscaledLodMetricValue=0;_scaleGeometricError=!0;boundingVolume=null;content=null;contents=[];contentEntries=[];metadataContext={};featureIdSets=[];vectorContent=null;metadata=null;contentMetadata=[];contentState=le.UNLOADED;gpuMemoryUsageInBytes=0;children=[];childrenState="ready";depth=0;viewportIds=[];transform=new q;extensions=null;implicitTiling=null;userData={};computedTransform;hasEmptyContent=!1;hasTilesetContent=!1;traverser=new rt({});_cacheNode=null;_frameNumber=null;_expireDate=null;_expiredContent=null;_childrenPromise=null;_boundingBox=void 0;_distanceToCamera=0;_screenSpaceError=0;_screenSpaceErrorProgressiveResolution=0;_priorityProgressiveResolution=!1;_foveatedFactor=0;priorityDeferred=!1;_visibilityPlaneMask;_visible=void 0;_contentBoundingVolume;_contentBoundingVolumes=[];_contentBoundingVolumeHeaders=[];_viewerRequestVolume;get contentBoundingVolume(){return this._contentBoundingVolume}get contentBoundingVolumes(){return this._contentBoundingVolumes}get viewerRequestVolume(){return this._viewerRequestVolume}_initialTransform=new q;_priority=0;_selectedFrame=0;_requestedFrame=0;_selectionDepth=0;_touchedFrame=0;_centerZDepth=0;_shouldRefine=!1;_stackLength=0;_visitedFrame=0;_inRequestVolume=!1;_lodJudge=null;tileDrawn=!0;constructor(e,r,n,i=""){this.header=r,this.tileset=e,this.id=i||r.id,this.url=r.url,this.parent=n,this.refine=this._getRefine(r.refine),this.type=r.type,this.contentUrl=r.contentUrl,this.contentUrls=r.contentUrls||(r.contentUrl?[r.contentUrl]:[]),this._initializeMetadata(r),this.childrenState=r.implicitSubtree?"unloaded":"ready",this._initializeLodMetric(r),this._initializeTransforms(r),this._updateLodMetricScale(),this._initializeBoundingVolumes(r),this._initializeContent(r),this._initializeContentEntries(r),this._initializeRenderingState(r),Object.seal(this)}destroy(){this.header=null}isDestroyed(){return this.header===null}get selected(){return this._selectedFrame===this.tileset._frameNumber}get isVisible(){return this._visible}get isVisibleAndInRequestVolume(){return this._visible&&this._inRequestVolume}get hasRenderContent(){return!this.hasEmptyContent&&!this.hasTilesetContent}get hasChildren(){return this.children.length>0||this.header.children&&this.header.children.length>0||!!(this.header.implicitSubtree&&this.childrenState!=="ready")}get hasUnloadedChildren(){return!!(this.header.implicitSubtree&&(this.childrenState==="unloaded"||this.childrenState==="failed"))}get childrenLoading(){return this.childrenState==="loading"}get contentReady(){return this.contentState===le.READY||this.hasEmptyContent}get contentAvailable(){return!!(this.contentReady&&this.hasRenderContent||this._expiredContent&&!this.contentFailed)}get hasUnloadedContent(){return this.hasRenderContent&&this.contentUnloaded}get contentUnloaded(){return this.contentState===le.UNLOADED}get contentExpired(){return this.contentState===le.EXPIRED}get contentFailed(){return this.contentState===le.FAILED}get distanceToCamera(){return this._distanceToCamera}get screenSpaceError(){return this._screenSpaceError}get boundingBox(){return this._boundingBox||(this._boundingBox=uh(this.header.boundingVolume,this.boundingVolume,!this.computedTransform.equals(this._initialTransform))),this._boundingBox}getScreenSpaceError(e,r,n=1){switch(this.tileset.type){case fe.I3S:return ns(this,e);case fe.TILES3D:return Bl(this,e,r,n);default:throw new Error("Unsupported tileset type")}}unselect(){this._selectedFrame=0}_getGpuMemoryUsageInBytes(){return(this.contents.length?this.contents:[this.content]).reduce((r,n)=>r+(n?.gpuMemoryUsageInBytes||n?.byteLength||0),0)}_getPriority(){return this._calculateRequestPriority(!1)}_getChildrenPriority(){return this._calculateRequestPriority(!0)}_calculateRequestPriority(e){let r=this.tileset._traverser,n=r.options.skipLevelOfDetail&&!r.disableSkipLevelOfDetail,i=this.refine===ne.ADD||n;if(i&&!this.isVisible&&this._visible!==void 0||this.tileset._frameNumber-this._touchedFrame>=1||this.priorityDeferred||!e&&this.contentState===le.UNLOADED)return-1;let o=this.parent,a=o&&(!i||this._screenSpaceError===0||o.hasTilesetContent)?o._screenSpaceError:this._screenSpaceError,c=r.root?r.root._screenSpaceError:0,l=Math.max(c-a,0);return Yl({priorityProgressiveResolution:this._priorityProgressiveResolution,foveatedFactor:this._foveatedFactor,reverseScreenSpaceError:l,rootScreenSpaceError:c})}async loadContent(){if(this.hasEmptyContent)return{loaded:!1};if(this.content)return{loaded:!0};this.contentExpired&&(this._expireDate=null),this.contentState=le.LOADING;let r=await this.tileset._requestScheduler.scheduleRequest(this.id,this._getPriority.bind(this));if(!r)return this.contentState=le.UNLOADED,{loaded:!1};try{return await this._loadContentFromSource()}catch(n){throw this.contentState=le.FAILED,n}finally{r.done()}}async loadContentForTraversal(){if(this.hasEmptyContent)return{loaded:!1};if(this.content)return{loaded:!0,contents:this.contents};this.contentState=le.LOADING;try{return await this._loadContentFromSource()}catch(e){throw this.contentState=le.FAILED,e}}async _loadContentFromSource(){let e=await this.tileset.source.loadTileContent(this);return e.contents&&(this.contents=e.contents,this.content=this.contents[0]||null),this.vectorContent=this.contents.find(r=>!!r?.vectorContent)?.vectorContent||null,this.tileset.options.contentLoader&&await this.tileset.options.contentLoader(this),this.contentState=le.READY,this._onContentLoaded(),this._updateContentEntriesAfterLoad(e),e}async loadChildren(e){if(!this.header.implicitSubtree||this.childrenState==="ready")return{loaded:!1,tileCount:0,childSubtreeCount:0};if(this._childrenPromise)return await this._childrenPromise;if(!this.tileset.source.loadTileChildren)throw new Error("Tileset source does not support lazy tile children");this.childrenState="loading",this._childrenPromise=this._loadChildrenWithScheduler(e);try{return await this._childrenPromise}finally{this._childrenPromise=null}}async _loadChildrenWithScheduler(e){let r=await this.tileset._requestScheduler.scheduleRequest(`${this.id}:implicit-subtree`,this._getChildrenPriority.bind(this));if(!r)return this.childrenState="unloaded",{loaded:!1,tileCount:0,childSubtreeCount:0};try{let n=await this.tileset.source.loadTileChildren(this,e);return this.childrenState=n.loaded?"ready":"unloaded",n}catch(n){throw this.childrenState="failed",n}finally{r.done()}}applyImplicitSubtreeHeader(e){let r=this.header.transform,n=this.header.transformMatrix,i=e.transform!==void 0;this.header={...this.header,...e,transform:i?e.transform:r,transformMatrix:i?e.transformMatrix:n,implicitSubtree:void 0},i&&this._initializeTransforms(this.header),this.refine=this._getRefine(e.refine),this.type=e.type,this.contentUrl=e.contentUrl,this.contentUrls=e.contentUrls||(e.contentUrl?[e.contentUrl]:[]),this._initializeMetadata(this.header),this._initializeLodMetric(e),this._updateLodMetricScale(),this._initializeBoundingVolumes(this.header),this._boundingBox=void 0,this._initializeContent(this.header),this._initializeContentEntries(this.header)}_initializeMetadata(e){this.metadata=e.metadata||null;let r=Array.isArray(e.content)?e.content:[e.content];this.contentMetadata=r.filter(Boolean).map(a=>a.metadata||null);let i=(r.find(Boolean)||{}).group,o=typeof i=="number"?this.tileset.groups?.[i]||null:i||null,s={tileset:this.tileset.metadata||null,group:o,tile:this.metadata,content:this.contentMetadata[0]||null,subtree:e.implicitMetadata||null};this.tileset.groups&&(s.groups=this.tileset.groups),this.metadataContext=s}_updateContentEntriesAfterLoad(e){if(e.contentEntries){this.contentEntries=e.contentEntries.map((r,n)=>({...r,index:n,boundingVolume:r.boundingVolume||this._contentBoundingVolumes[n]||this.boundingVolume,payload:r.payload??this.contents[n]??null,featureIds:r.featureIds?.length?r.featureIds:ui(r.payload??this.contents[n]),renderable:!!(r.renderable!==!1&&(r.payload??this.contents[n])&&!Mh(r.payload??this.contents[n]))})),this.featureIdSets=this.contentEntries.flatMap(r=>r.featureIds);return}this.contentEntries=this.contentEntries.map((r,n)=>({...r,payload:this.contents[n]??null,featureIds:ui(this.contents[n]),renderable:!!this.contents[n]&&!Mh(this.contents[n])})),this.featureIdSets=this.contentEntries.flatMap(r=>r.featureIds)}getContentEntry(e){return this.contentEntries[e]||null}isContentRenderable(e){return!!this.contentEntries[e]?.renderable}_initializeContentEntries(e){let r=Array.isArray(e.content)?e.content:e.content?[e.content]:[];this.contentEntries=r.map((n,i)=>{let o=n||{};return{index:i,uri:this.contentUrls[i]||o.uri||o.url,group:o.group,type:o.type,payload:null,metadata:o.metadata||null,boundingVolume:this._contentBoundingVolumes[i]||this.boundingVolume,featureIds:this._getFeatureIdSets(o),renderable:!1}})}_getFeatureIdSets(e){return ui(e)}unloadContent(){for(let e of this.contents.length?this.contents:[this.content])e&&e.destroy&&e.destroy();return this.contents=[],this.content=null,this.vectorContent=null,this.contentEntries=this.contentEntries.map(e=>({...e,payload:null,renderable:!1})),this.featureIdSets=this.contentEntries.flatMap(e=>e.featureIds),this.header.content&&this.header.content.destroy&&this.header.content.destroy(),this.header.content=null,this.contentState=le.UNLOADED,this.tileDrawn=!0,!0}updateVisibility(e,r){if(this._frameNumber===e.frameNumber)return;let n=this.parent,i=n?n._visibilityPlaneMask:ce.MASK_INDETERMINATE;if(this.tileset._traverser.options.updateTransforms){let o=n?n.computedTransform:this.tileset.modelMatrix;this._updateTransform(o)}this._distanceToCamera=this.distanceToTile(e),this._screenSpaceError=this.getScreenSpaceError(e,!1),this._updateRequestPriorityMetrics(e),this._visibilityPlaneMask=this.visibility(e,i),this._visible=this._visibilityPlaneMask!==ce.MASK_OUTSIDE,this._inRequestVolume=this.insideViewerRequestVolume(e),this._frameNumber=e.frameNumber,this.viewportIds=r}_updateRequestPriorityMetrics(e){if(this.tileset.type!==fe.TILES3D){this._screenSpaceErrorProgressiveResolution=this._screenSpaceError,this._priorityProgressiveResolution=!1,this._foveatedFactor=0,this.priorityDeferred=!1;return}let r=this.tileset.options,n=r.progressiveResolutionHeightFraction;if(this._screenSpaceErrorProgressiveResolution=this.getScreenSpaceError(e,!1,n),this._priorityProgressiveResolution=Wl(this._screenSpaceErrorProgressiveResolution,this.parent?._screenSpaceErrorProgressiveResolution,this.tileset.memoryAdjustedScreenSpaceError,n),!r.foveatedScreenSpaceError||e.viewport?.orthographic||!e.camera?.position||!e.camera?.direction){this._foveatedFactor=0,this.priorityDeferred=!1;return}this._foveatedFactor=jl(this.boundingVolume,e.camera);let i=this.tileset._traverser,o=i.options.skipLevelOfDetail&&!i.disableSkipLevelOfDetail,s=Hl({refinement:this.refine,skipLevelOfDetail:o,foveatedScreenSpaceError:r.foveatedScreenSpaceError,foveatedConeSize:r.foveatedConeSize,minimumScreenSpaceErrorRelaxation:r.foveatedMinimumScreenSpaceErrorRelaxation,interpolationCallback:r.foveatedInterpolationCallback,foveatedFactor:this._foveatedFactor,verticalFieldOfView:e.camera.verticalFieldOfView,screenSpaceError:this._screenSpaceError,parentScreenSpaceError:this.parent?._screenSpaceError,maximumScreenSpaceError:this.tileset.memoryAdjustedScreenSpaceError,priorityProgressiveResolution:this._priorityProgressiveResolution});this.priorityDeferred=$l(s,e.camera.timeSinceMovement,r.foveatedTimeDelay)}visibility(e,r){let{cullingVolume:n}=e,{boundingVolume:i}=this;return n.computeVisibilityWithPlaneMask(i,r)}contentVisibility(e,r){let n=r===void 0?this._contentBoundingVolumes:this._contentBoundingVolumes[r]?[this._contentBoundingVolumes[r]]:[];return q1(n,this.boundingVolume,e.cullingVolume,this._visibilityPlaneMask,e.clippingPlanes)}distanceToTile(e){let r=this.boundingVolume;return Math.sqrt(Math.max(r.distanceSquaredTo(e.camera.position),0))}cameraSpaceZDepth({camera:e}){let r=this.boundingVolume;return is.subVectors(r.center,e.position),e.direction.dot(is)}insideViewerRequestVolume(e){let r=this._viewerRequestVolume;return!r||r.distanceSquaredTo(e.camera.position)<=0}updateExpiration(){if(z1(this._expireDate)&&this.contentReady&&!this.hasEmptyContent){let e=Date.now();Date.lessThan(this._expireDate,e)&&(this.contentState=le.EXPIRED,this._expiredContent=this.content)}}get extras(){return this.header.extras}_initializeLodMetric(e){this._scaleGeometricError=typeof e._scaleGeometricError=="boolean"?e._scaleGeometricError:this.parent?._scaleGeometricError??!0,"lodMetricType"in e?this.lodMetricType=e.lodMetricType:(this.lodMetricType=this.parent&&this.parent.lodMetricType||this.tileset.lodMetricType,console.warn("3D Tile: Required prop lodMetricType is undefined. Using parent lodMetricType")),"lodMetricValue"in e?this._unscaledLodMetricValue=e.lodMetricValue:(this._unscaledLodMetricValue=this.parent?this.parent._unscaledLodMetricValue:this.tileset.lodMetricValue,console.warn("3D Tile: Required prop lodMetricValue is undefined. Using parent lodMetricValue")),this.lodMetricValue=this._unscaledLodMetricValue}_initializeTransforms(e){this.transform=e.transform?new q(e.transform):new q;let r=this.parent,n=this.tileset,i=r&&r.computedTransform?r.computedTransform.clone():n.modelMatrix.clone();this.computedTransform=new q(i).multiplyRight(this.transform);let o=r&&r._initialTransform?r._initialTransform.clone():new q;this._initialTransform=new q(o).multiplyRight(this.transform)}_updateLodMetricScale(){if(this.lodMetricType!==Qt.GEOMETRIC_ERROR||!this._scaleGeometricError){this.lodMetricValue=this._unscaledLodMetricValue;return}let e=this.computedTransform.getScale(is),r=Math.max(e[0],e[1],e[2]);this.lodMetricValue=this._unscaledLodMetricValue*r}_initializeBoundingVolumes(e){this._contentBoundingVolume=null,this._contentBoundingVolumeHeaders=[],this._viewerRequestVolume=null,this._updateBoundingVolume(e)}_initializeContent(e){this.content={_tileset:this.tileset,_tile:this},this.contents=[],this.hasEmptyContent=!0,this.contentState=le.UNLOADED,this.hasTilesetContent=!1,(e.contentUrl||e.contentUrls?.length)&&(this.content=null,this.hasEmptyContent=!1)}_initializeRenderingState(e){this.depth=e.level||(this.parent?this.parent.depth+1:0),this._shouldRefine=!1,this._distanceToCamera=0,this._centerZDepth=0,this._screenSpaceError=0,this._screenSpaceErrorProgressiveResolution=0,this._priorityProgressiveResolution=!1,this._foveatedFactor=0,this.priorityDeferred=!1,this._visibilityPlaneMask=ce.MASK_INDETERMINATE,this._visible=void 0,this._inRequestVolume=!1,this._stackLength=0,this._selectionDepth=0,this._frameNumber=0,this._touchedFrame=0,this._visitedFrame=0,this._selectedFrame=0,this._requestedFrame=0,this._priority=0}_getRefine(e){return e||this.parent&&this.parent.refine||ne.REPLACE}_isTileset(){return(this.contents.length?this.contents:[this.content]).some(e=>e?.shape==="tileset3d")}_onContentLoaded(){let e=this.contents.length?this.contents:[this.content];for(let r of e)switch(r&&r.type){case"vctr":case"geom":this.tileset._traverser.disableSkipLevelOfDetail=!0;break;default:}this._isTileset()?this.hasTilesetContent=!0:this.gpuMemoryUsageInBytes=this._getGpuMemoryUsageInBytes()}_updateBoundingVolume(e){this._boundingBox=void 0,this.boundingVolume=tr(e.boundingVolume,this.computedTransform,this.boundingVolume,this._initialTransform),e.viewerRequestVolume&&(this._viewerRequestVolume=tr(e.viewerRequestVolume,this.computedTransform,this._viewerRequestVolume,this._initialTransform));let r=e.content;r&&(this._contentBoundingVolumeHeaders=Array.isArray(r)?r:[r]);let n=r?Array.isArray(r)?r:[r]:this._contentBoundingVolumeHeaders;this._contentBoundingVolumes=n.length?n.map(i=>i?.boundingVolume?tr(i.boundingVolume,this.computedTransform,void 0,this._initialTransform):this.boundingVolume):[this.boundingVolume],this._contentBoundingVolume=this._contentBoundingVolumes[0]||null}_updateTransform(e=new q){let r=e.clone().multiplyRight(this.transform);r.equals(this.computedTransform)||(this.computedTransform=r,this._updateLodMetricScale(),this._updateBoundingVolume(this.header))}};var mi=class extends rt{pendingImplicitSubtrees=new Map;traversalFinished(e){let r=`${e.viewport.id}:`;for(let[n,i]of this.pendingImplicitSubtrees)if(n.startsWith(r)&&i===e.frameNumber)return!1;return!0}executeTraversal(e,r){if(!this.isSkipLevelOfDetailEnabled()){super.executeTraversal(e,r);return}this.executeSkipTraversal(e,r)}executeSkipTraversal(e,r){let n=[e];for(e._selectionDepth=e.parent?e.parent._selectionDepth:1;n.length>0;){let i=n.pop(),o=!i.parent||i.parent._shouldRefine,s=this.canTraverse(i,r)&&this.updateAndPushSkipChildren(i,r,n)&&o,a=!s&&o;i.hasRenderContent?i.refine===ne.ADD?(this.loadTile(i,r),this.selectDesiredTile(i,r)):i.refine===ne.REPLACE&&(this.isInBaseTraversal(i,r)?(this.loadTile(i,r),a&&this.selectDesiredTile(i,r)):a?(this.loadTile(i,r),this.selectDesiredTile(i,r)):this.hasReachedSkippingThreshold(i,r)&&this.loadTile(i,r)):(this.emptyTiles[i.id]=i,this.loadTile(i,r),a&&this.selectDesiredTile(i,r)),this.touchTile(i,r),i._shouldRefine=s}this.completeTraversal(r)}updateAndPushSkipChildren(e,r,n){this.updateChildTiles(e,r),e.children.sort(this.compareDistanceToCamera.bind(this));let i=!1;for(let o of e.children)o._selectionDepth=e.hasRenderContent?e._selectionDepth+1:e._selectionDepth,o.isVisibleAndInRequestVolume?(n.push(o),i=!0):this.options.loadSiblings&&(this.loadTile(o,r),this.touchTile(o,r));return i}isInBaseTraversal(e,r){if(this.options.immediatelyLoadDesiredLevelOfDetail)return!1;if(!this.findNearestRequestedOrLoadedAncestor(e,r))return!0;let n=Number.isFinite(this.options.baseScreenSpaceError)?Math.max(this.options.baseScreenSpaceError,0):1024,i=Math.max(n,e.tileset.memoryAdjustedScreenSpaceError);return e._screenSpaceError===0&&e.parent?e.parent._screenSpaceError>i:e._screenSpaceError>i}hasReachedSkippingThreshold(e,r){if(this.options.immediatelyLoadDesiredLevelOfDetail)return!1;if(e._priorityProgressiveResolution&&e._screenSpaceErrorProgressiveResolution<=e.tileset.memoryAdjustedScreenSpaceError&&!!(e.parent&&e.parent._screenSpaceErrorProgressiveResolution>e.tileset.memoryAdjustedScreenSpaceError))return!0;let i=this.findNearestRequestedOrLoadedAncestor(e,r);if(!i)return!1;let o=Number.isFinite(this.options.skipScreenSpaceErrorFactor)&&this.options.skipScreenSpaceErrorFactor>0?this.options.skipScreenSpaceErrorFactor:16,s=Number.isFinite(this.options.skipLevels)?Math.max(Math.floor(this.options.skipLevels),0):1;return e._screenSpaceError<i._screenSpaceError/o&&e.depth>i.depth+s}findNearestRequestedOrLoadedAncestor(e,r){let n=e.parent;for(;n;){if(n.hasRenderContent&&!n.contentFailed&&(!n.hasUnloadedContent||n._requestedFrame===r.frameNumber))return n;n=n.parent}return null}selectDesiredTile(e,r){let n=e;for(;n;){if(this.shouldSelectTile(n,r)){this.selectTile(n,r);return}n=n.parent}this.selectLoadedDescendants(e,r)}selectLoadedDescendants(e,r){let n=[{tile:e,depth:0}];for(;n.length>0;){let{tile:i,depth:o}=n.pop();for(let s of i.children)this.updateTile(s,r),s.isVisibleAndInRequestVolume&&(s.contentAvailable?(this.selectTile(s,r),this.touchTile(s,r)):o<1&&n.push({tile:s,depth:o+1}))}}compareDistanceToCamera(e,r){return r._distanceToCamera===0&&e._distanceToCamera===0?r._centerZDepth-e._centerZDepth:r._distanceToCamera-e._distanceToCamera}updateChildTiles(e,r){let n=e.header.implicitSubtree?.coordinates.level===0;if(e.hasUnloadedChildren&&e.isVisibleAndInRequestVolume&&(n||this.shouldRefine(e,r))){let i=`${r.viewport.id}:${e.id}`;this.pendingImplicitSubtrees.has(i)||(this.pendingImplicitSubtrees.set(i,r.frameNumber),e.tileset._loadTileChildren(e,r).finally(()=>{this.handleImplicitSubtreeLoad(e,r,i)}))}super.updateChildTiles(e,r)}handleImplicitSubtreeLoad(e,r,n){this.pendingImplicitSubtrees.delete(n),this._frameNumber===r.frameNumber&&(e.childrenState==="ready"?this.executeTraversal(e,r):this.traversalFinished(r)&&this.options.onTraversalEnd(r))}updateTileVisibility(e,r){if(super.updateTileVisibility(e,r),!e.isVisibleAndInRequestVolume)return;let n=e.children.length>0;if(e.hasTilesetContent&&n){let s=e.children[0];this.updateTileVisibility(s,r),e._visible=s._visible;return}if(this.meetsScreenSpaceErrorEarly(e,r)){e._visible=!1;return}let i=e.refine===ne.REPLACE,o=e._optimChildrenWithinParent===Dl.USE_OPTIMIZATION;if(i&&o&&n&&!this.anyChildrenVisible(e,r)){e._visible=!1;return}}meetsScreenSpaceErrorEarly(e,r){let{parent:n}=e;return!n||n.hasTilesetContent||n.refine!==ne.ADD?!1:!this.shouldRefine(e,r,!0)}};var F1=6378137,B1=6378137,os=6356752314245179e-9,rr=new M;function yh(t,e){if(t instanceof et){let{halfAxes:r}=t,n=D1(r);return Math.log2(os/(n+e[2]))}else if(t instanceof me){let{radius:r}=t;return Math.log2(os/(r+e[2]))}else if(t.width&&t.height){let{width:r,height:n}=t,i=Math.log2(F1/r),o=Math.log2(B1/n);return(i+o)/2}return 1}function ss(t,e,r){G.WGS84.cartographicToCartesian([t.xmax,t.ymax,t.zmax],rr);let n=Math.sqrt(Math.pow(rr[0]-r[0],2)+Math.pow(rr[1]-r[1],2)+Math.pow(rr[2]-r[2],2));return Math.log2(os/(n+e[2]))}function xh(t,e,r){let[n,i,o,s]=t;return ss({xmin:n,xmax:o,ymin:i,ymax:s,zmin:0,zmax:0},e,r)}function D1(t){t.getColumn(0,rr);let e=t.getColumn(1),r=t.getColumn(2);return rr.add(e).add(r).len()}var k1=Object.freeze({meter:1,millimeter:.001,centimeter:.01,decimeter:.1,kilometer:1e3,foot:.3048,yard:.9144,mile:1609.344,"us-foot":.3048006096012192,"us-inch":.0254000508001016,"us-yard":.9144018288036576,"us-mile":1609.3472186944373,"clarke-foot":.3047972654,"clarke-yard":.9143917962,"clarke-link":.201166195164,"sears-yard":.914398414616,"sears-foot":.304799471539,"sears-chain":20.1167651216,"sears-1922-truncated-chain":20.116756,"benoit-1895-b-chain":20.1167824944,"indian-yard":.914398530744,"indian-1937-yard":.91439523,"gold-coast-foot":.304799710181}),U1=Object.freeze({m:"meter",metre:"meter",meters:"meter",metres:"meter",mm:"millimeter",millimetre:"millimeter",millimeters:"millimeter",millimetres:"millimeter",cm:"centimeter",centimetre:"centimeter",centimeters:"centimeter",centimetres:"centimeter",dm:"decimeter",decimetre:"decimeter",decimeters:"decimeter",decimetres:"decimeter",km:"kilometer",kilometre:"kilometer",kilometers:"kilometer",kilometres:"kilometer",ft:"foot",feet:"foot","us-survey-foot":"us-foot","us-survey-feet":"us-foot",yd:"yard",yards:"yard",mi:"mile",miles:"mile"});function Br(t){if(!t)return;let e=t.trim().toLowerCase().replaceAll("_","-"),r=U1[e]||e;return k1[r]}function _h(t,e){return e!==void 0?Number.isFinite(e)&&e>0?e:void 0:t?Br(t):1}function pi(t){let e=t.spatialReference||t.fullExtent?.spatialReference,r=$1(e),n=t.heightModelInfo?.vertCRS||Y1(e),i=t.heightModelInfo?.heightModel,o=t.heightModelInfo?.heightUnit,s=_h(o,t.ZFactor),a=i==="ellipsoidal"?"ellipsoidal":i==="gravity_related_height"?"orthometric":"unknown",c=Eh(e),l=c===void 0?r?xe(r):"unknown":xe(`EPSG:${c}`),h=V1(l,o,t.ZFactor),u=[],f=j1(t.elevationInfo?.mode),d=t.elevationInfo?t.elevationInfo.unit||"meter":void 0,m=Br(d);return s===void 0&&u.push(t.ZFactor!==void 0?`I3S ZFactor ${t.ZFactor} is not a positive finite conversion factor`:`Unsupported I3S vertical unit ${o}`),t.elevationInfo&&m===void 0&&u.push(`Unsupported I3S elevation unit ${d}`),t.elevationInfo?.mode&&!f&&u.push(`Unsupported I3S elevation mode ${t.elevationInfo.mode}`),f&&f!=="absoluteHeight"&&u.push(`I3S elevation mode ${f} requires a terrain or scene elevation provider`),Ie({sourceCrs:r,sourceCrsRepresentation:c!==void 0?"identifier":r?"wkt":void 0,sourceCrsAlternatives:c!==void 0&&e?.wkt?[{definition:e.wkt,representation:"wkt"}]:void 0,verticalCrs:n,units:h,verticalUnitScale:s??Number.NaN,heightReference:a,elevationMode:f,elevationOffset:t.elevationInfo?.offset,elevationUnit:d,elevationUnitScale:t.elevationInfo?.mode&&!f?Number.NaN:m??(t.elevationInfo?Number.NaN:1),coordinateFrame:l,axisOrder:r?"xyz":"unknown",provenance:r?"metadata":"unknown",warnings:u})}function V1(t,e,r){if(t==="geocentric")return["meter","meter","meter"];if(t==="geographic"&&(e||r===void 0))return["degree","degree",e||"meter"]}function j1(t){switch(t){case"absoluteHeight":case"onTheGround":case"relativeToGround":case"relativeToScene":return t;default:return}}function gi(t){let e=W1(t);if(e)return e;let r=Sh(t,"TILESET_CRS_GEOCENTRIC"),n=Sh(t,"TILESET_CRS_COORDINATE_EPOCH"),i=[],o,s="unknown",a;typeof r=="string"&&r.toUpperCase()!=="UNKNOWN"?(o=r,s="metadata",a="explicit"):r!==void 0?(i.push("3D Tiles geocentric CRS is explicitly unknown"),s="metadata",a="unknown"):t.root?.boundingVolume?.region?(o="EPSG:4978",s="format-default",a="default"):t.schemaUri&&!t.schema&&i.push("External 3D Tiles metadata schema must be loaded before CRS semantics can resolve");let c=wh(n);return n!==void 0&&c===void 0&&i.push("3D Tiles coordinate epoch is not a finite decimal year"),Ie({sourceCrs:o,sourceCrsState:a,sourceCrsRepresentation:o?"identifier":void 0,coordinateEpoch:c,heightReference:o?"ellipsoidal":"unknown",coordinateFrame:o?"geocentric":"unknown",axisOrder:o?"xyz":"unknown",provenance:s,warnings:i})}function W1(t){let e=t.extensions?.EXT_geospatial_crs;if(!e)return;let r=[],n,i,o,s;if(e.format==="wkid"){let h=e.extensions?.EXT_geospatial_crs_wkid;typeof h?.authority=="string"&&Number.isInteger(h.wkid)?(n=`${h.authority}:${h.wkid}`,s="identifier",Number.isInteger(h.vcsWkid)&&(i=`${h.authority}:${h.vcsWkid}`),o=wh(h.epoch),h.epoch!==void 0&&o===void 0&&r.push("EXT_geospatial_crs_wkid epoch is not a finite decimal year")):r.push("EXT_geospatial_crs_wkid requires string authority and integer wkid")}else if(e.format==="wkt2"){let h=e.extensions?.EXT_geospatial_crs_wkt2;typeof h?.wkt2=="string"&&h.wkt2.trim()?(n=h.wkt2,s="wkt"):r.push("EXT_geospatial_crs_wkt2 requires a nonempty wkt2 string")}else r.push(`Unsupported EXT_geospatial_crs format ${String(e.format)}`);let a=s==="wkt"?xe(n):Yo(n)||"unknown",c=H1(i);i&&!c&&r.push(`Unsupported vertical CRS ${String(i)}; vertical unit and height reference are unknown`);let l=i?c?.unit:"meter";return Ie({sourceCrs:n,sourceCrsState:n?"explicit":"unknown",sourceCrsRepresentation:s,verticalCrs:i,coordinateEpoch:o,units:a==="geocentric"?["meter","meter","meter"]:a==="geographic"&&l?["degree","degree",l]:void 0,verticalUnitScale:i?c?.verticalUnitScale??Number.NaN:1,heightReference:i?c?.heightReference??"unknown":n?"ellipsoidal":"unknown",coordinateFrame:a,axisOrder:n?"xyz":"unknown",provenance:"metadata",warnings:r})}function H1(t){if(typeof t!="string")return;let e=/^EPSG:(\d+)$/i.exec(t);if(e)switch(Number(e[1])){case 5702:case 6360:return{unit:"us-foot",verticalUnitScale:1200/3937,heightReference:"orthometric"};case 5703:return{unit:"meter",verticalUnitScale:1,heightReference:"orthometric"};default:return}}function wh(t){if(typeof t!="string"&&typeof t!="number"||typeof t=="string"&&!t.trim())return;let e=Number(t);return Number.isFinite(e)?e:void 0}function $1(t){let e=Eh(t);return e!==void 0?`EPSG:${e}`:t?.wkt}function Y1(t){let e=t?.latestVcsWkid??t?.vcsWkid;return e===void 0?void 0:`EPSG:${e}`}function Eh(t){return t?.latestWkid??t?.wkid}function Sh(t,e){let r=t.metadata?.class;if(!r)return;let i=t.schema?.classes?.[r]?.properties,o=t.metadata?.properties;for(let[s,a]of Object.entries(i||{}))if(a.semantic===e)return o?.[s]}var as=Symbol.for("@math.gl/projection/projection-implementations");function cs(){let t=globalThis;return t[as]||(t[as]=new WeakMap),t[as]}function Th(t){return"create"in t?t:cs().get(t)?.implementation}function bh(t){if("create"in t)return Promise.resolve(t);let e=cs().get(t);if(e||(e={load:()=>t.preload()},cs().set(t,e)),e.implementation)return Promise.resolve(e.implementation);let r=e;return r.pending||(r.pending=Promise.resolve().then(r.load).then(n=>{let i=s=>s.toLowerCase().replace(/[\s_-]/g,""),o=new Set([n.name,...n.aliases||[]].map(i));if(typeof n.create!="function"||![t.name,...t.aliases||[]].every(s=>o.has(i(s))))throw new Error("Loaded projection does not match descriptor: "+t.name);return r.implementation=n,n}).catch(n=>{throw r.pending=void 0,n})),r.pending}function vh(){return{x:0,y:0,z:0}}var St=class{constructor(){this.point=vh(),this.points=[this.point],this.active=0}get depth(){return this.active}acquire(){var e;let r=this.active++;return(e=this.points)[r]||(e[r]=vh()),this.points[r]}release(e){this.active>0&&this.points[this.active-1]===e&&this.active--}};function Ue(t,e){let r=new St,n=(i,o,s)=>{let a=r.acquire();try{return a.x=i,a.y=o,a.z=0,s(a),[a.x,a.y]}finally{r.release(a)}};return{forward(i,o){return n(i,o,t)},inverse(i,o){return n(i,o,e)},forwardInPlace:t,inverseInPlace:e}}function mt(t,e,r=!1){let n=e?t.inverseInPlace:t.forwardInPlace;if(n)return n.bind(t);if(r){let o=e?t.inverse3D:t.forward3D;return s=>{let a=o.call(t,[s.x,s.y,s.z]);s.x=a[0],s.y=a[1],s.z=a[2]}}let i=e?t.inverse:t.forward;return o=>{let s=i.call(t,o.x,o.y);o.x=s[0],o.y=s[1]}}var Mi=34028234663852886e22;function yi(t,e,r){if(!(Array.isArray(t)||t instanceof Float32Array||t instanceof Float64Array))throw new Error("Scalar input requires a number array, Float32Array or Float64Array");if(!(Array.isArray(e)||e instanceof Float32Array||e instanceof Float64Array)||e.length<r)throw new Error("Scalar output requires a preallocated number array, Float32Array or Float64Array with sufficient capacity");if(t===e||Array.isArray(t)||Array.isArray(e))return;let n=t,i=e,o=typeof SharedArrayBuffer<"u"&&n.buffer instanceof SharedArrayBuffer&&i.buffer instanceof SharedArrayBuffer;if((n.buffer===i.buffer||o)&&n.byteOffset<i.byteOffset+r*i.BYTES_PER_ELEMENT&&i.byteOffset<n.byteOffset+n.byteLength)throw new Error("Scalar input/output views overlap; use the same view for in-place projection")}function Ph(t,e,r,n){if(e instanceof Float32Array){if(Math.abs(r.x)>Mi||Math.abs(r.y)>Mi||n>=3&&Math.abs(r.z)>Mi)throw new Error("Projected coordinate exceeds Float32 range");for(let i=3;i<t.length;i++){let o=t[i];if(Number.isFinite(o)&&Math.abs(o)>Mi)throw new Error("Trailing ordinate exceeds Float32 range")}}for(let i=3;i<t.length;i++)e[i]=t[i];return e[0]=r.x,e[1]=r.y,n>=3&&(e[2]=r.z),e}var Rh,Ch=Symbol.for("@math.gl/projection/TypeScriptCRSError"),Oe=class t extends Error{static[(Rh=Ch,Symbol.hasInstance)](e){return this!==t?Function.prototype[Symbol.hasInstance].call(this,e):e instanceof Error&&e[Ch]===!0}constructor(e,r){super(r),this.reason=e,this[Rh]=!0,this.name="TypeScriptCRSError"}};function D(t){throw new Oe("missing-transform-stage",t)}function Ah(t,e){if(typeof t=="string"||"type"in t)return{definition:t,lossy:!1};let r=t,n="crs"in r?r:void 0,i="crs"in r?r.crs:r;if(i.state!=="explicit"&&i.state!=="default")throw new Oe("unknown-syntax","Cannot transform an "+i.state+" CRS reference");let o=!1;return n?.coordinateEpoch!==void 0&&D("Coordinate epochs require a time-dependent transformation"),n?.vertical&&n.vertical.state!=="absent"&&(e.mode!=="horizontal"&&D("A separately declared vertical CRS requires explicit horizontal extraction"),o=!0),{definition:i.definition,spatialReference:n,lossy:o}}function Ih(t,e){if(!e)return t;if(e.coordinateFrame!=="unknown"&&e.coordinateFrame!==t.kind)throw new Error("SpatialReference coordinate frame disagrees with its CRS");let r=e.coordinateOrder,n=t.kind==="geocentric"?{x:"e",y:"n",z:"u"}:{longitude:"e",lon:"e",latitude:"n",lat:"n",easting:"e",northing:"n",height:"u",altitude:"u",x:"e",y:"n",z:"u"},i;if(r.length&&(i=r.slice(0,3).map(o=>n[o.toLowerCase()]||"?").join(""),i.length===2&&(i+="u"),(i.length!==3||!i.includes("e")||!i.includes("n")||!i.includes("u"))&&D("Unsupported SpatialReference coordinate order"),(r.length>4||r.length>3&&!["m","measure"].includes(r[3]))&&D("Unsupported fourth coordinate component")),e.units?.length){let o={m:1,meter:1,metre:1,meters:1,metres:1,km:1e3,ft:.3048,"us-ft":.3048006096012192,degree:Math.PI/180,degrees:Math.PI/180,radian:1,radians:1,grad:Math.PI/200};for(let s=0;s<Math.min(e.units.length,3);s++){let a=(i||"enu")[s]==="u",c=t.kind==="geocentric"?t.toMeter:a?t.verticalUnit:t.kind==="geographic"?t.angularUnit:t.toMeter;(Math.abs((o[e.units[s]]??NaN)-c)>1e-12||o[e.units[s]]===void 0)&&D("SpatialReference units disagree with its CRS")}}return Object.freeze({...t,storedAxis:i})}var te=Math.PI/180;function L(t,e,r){if(!Object.prototype.hasOwnProperty.call(t,e))return r;let n=t[e];if(typeof n!="string"||!/^[+-]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?$/i.test(n))throw new Error(`Invalid numeric PROJ parameter: +${e}`);let i=Number(n);if(!Number.isFinite(i))throw new Error(`Invalid numeric PROJ parameter: +${e}`);return i}function Dr(t,e){let r=L(t,e,0);if(Math.abs(r)>=90)throw new Error(`+${e} must be between -90 and 90 degrees`);return r*te}function Ve(t){if(Math.abs(t)<=Math.PI)return t;let e=2*Math.PI;return((t+Math.PI)%e+e)%e-Math.PI}var Nh={towgs84:"0,0,0",ellipse:"WGS84"},Oh={towgs84:"0,0,0",ellipse:"GRS80"},ls={wgs84:Nh,WGS84:Nh,nad83:Oh,North_American_Datum_1983:Oh},Gh=new WeakMap,Nt=t=>t.toLowerCase().replace(/[\s_-]/g,"");function nr(t){if(!t.datumCatalogs?.length)return ls;let e=Gh.get(t);if(e?.catalogs===t.datumCatalogs)return e.definitions;let r=Object.assign(Object.create(null),ls),n=new Map(Object.entries(ls).map(([i,o])=>[Nt(i),{definition:o,owner:-1}]));return t.datumCatalogs.forEach((i,o)=>{if(!i.name||!i.datums)throw new Error("Invalid datum catalogue plugin");for(let[s,a]of Object.entries(i.datums)){let c=Nt(s);if(!c||c==="none"||!a||["ellipse","towgs84","nadgrids"].some(h=>a[h]!==void 0&&typeof a[h]!="string"))throw new Error("Invalid datum definition: "+s);let l=n.get(c);if(l&&(l.owner!==o||l.definition.ellipse!==a.ellipse||l.definition.towgs84!==a.towgs84||l.definition.nadgrids!==a.nadgrids))throw new Error("Conflicting datum registration: "+s);n.set(c,{definition:a,owner:o}),r[s]=a}}),Gh.set(t,{catalogs:t.datumCatalogs,definitions:r}),r}var K1={MERIT:{a:6378137,rf:298.257,ellipseName:"MERIT 1983"},SGS85:{a:6378136,rf:298.257,ellipseName:"Soviet Geodetic System 85"},GRS80:{a:6378137,rf:298.257222101,ellipseName:"GRS 1980(IUGG, 1980)"},IAU76:{a:6378140,rf:298.257,ellipseName:"IAU 1976"},airy:{a:6377563396e-3,b:635625691e-2,ellipseName:"Airy 1830"},APL4:{a:6378137,rf:298.25,ellipseName:"Appl. Physics. 1965"},NWL9D:{a:6378145,rf:298.25,ellipseName:"Naval Weapons Lab., 1965"},mod_airy:{a:6377340189e-3,b:6356034446e-3,ellipseName:"Modified Airy"},andrae:{a:637710443e-2,rf:300,ellipseName:"Andrae 1876 (Den., Iclnd.)"},aust_SA:{a:6378160,rf:298.25,ellipseName:"Australian Natl & S. Amer. 1969"},GRS67:{a:6378160,rf:298.247167427,ellipseName:"GRS 67(IUGG 1967)"},bessel:{a:6377397155e-3,rf:299.1528128,ellipseName:"Bessel 1841"},bess_nam:{a:6377483865e-3,rf:299.1528128,ellipseName:"Bessel 1841 (Namibia)"},clrk66:{a:63782064e-1,b:63565838e-1,ellipseName:"Clarke 1866"},clrk80:{a:6378249145e-3,rf:293.4663,ellipseName:"Clarke 1880 mod."},clrk80ign:{a:63782492e-1,b:6356515,rf:293.4660213,ellipseName:"Clarke 1880 (IGN)"},clrk58:{a:6378293645208759e-9,rf:294.2606763692654,ellipseName:"Clarke 1858"},CPM:{a:63757387e-1,rf:334.29,ellipseName:"Comm. des Poids et Mesures 1799"},delmbr:{a:6376428,rf:311.5,ellipseName:"Delambre 1810 (Belgium)"},engelis:{a:637813605e-2,rf:298.2566,ellipseName:"Engelis 1985"},evrst30:{a:6377276345e-3,rf:300.8017,ellipseName:"Everest 1830"},evrst48:{a:6377304063e-3,rf:300.8017,ellipseName:"Everest 1948"},evrst56:{a:6377301243e-3,rf:300.8017,ellipseName:"Everest 1956"},evrst69:{a:6377295664e-3,rf:300.8017,ellipseName:"Everest 1969"},evrstSS:{a:6377298556e-3,rf:300.8017,ellipseName:"Everest (Sabah & Sarawak)"},fschr60:{a:6378166,rf:298.3,ellipseName:"Fischer (Mercury Datum) 1960"},fschr60m:{a:6378155,rf:298.3,ellipseName:"Fischer 1960"},fschr68:{a:6378150,rf:298.3,ellipseName:"Fischer 1968"},helmert:{a:6378200,rf:298.3,ellipseName:"Helmert 1906"},hough:{a:6378270,rf:297,ellipseName:"Hough"},intl:{a:6378388,rf:297,ellipseName:"International 1909 (Hayford)"},kaula:{a:6378163,rf:298.24,ellipseName:"Kaula 1961"},lerch:{a:6378139,rf:298.257,ellipseName:"Lerch 1979"},mprts:{a:6397300,rf:191,ellipseName:"Maupertius 1738"},new_intl:{a:63781575e-1,b:63567722e-1,ellipseName:"New International 1967"},plessis:{a:6376523,b:6355863,ellipseName:"Plessis 1817 (France)"},krass:{a:6378245,rf:298.3,ellipseName:"Krassovsky, 1942"},SEasia:{a:6378155,b:63567733205e-4,ellipseName:"Southeast Asia"},walbeck:{a:6376896,b:63558348467e-4,ellipseName:"Walbeck"},WGS60:{a:6378165,rf:298.3,ellipseName:"WGS 60"},WGS66:{a:6378145,rf:298.25,ellipseName:"WGS 66"},WGS72:{a:6378135,rf:298.26,ellipseName:"WGS 72"},WGS84:{a:6378137,rf:298.257223563,ellipseName:"WGS 84"},sphere:{a:6370997,b:6370997,ellipseName:"Normal Sphere (r=6370997)"}},Lh=K1;var we={};we.greenwich=0;we.lisbon=-9.131906111111;we.paris=2.337229166667;we.bogota=-74.080916666667;we.madrid=-3.687938888889;we.rome=12.452333333333;we.bern=7.439583333333;we.jakarta=106.807719444444;we.ferro=-17.666666666667;we.brussels=4.367975;we.stockholm=18.058277777778;we.athens=23.7163375;we.oslo=10.722916666667;var qh=we;var zh={mm:{to_meter:.001},cm:{to_meter:.01},ft:{to_meter:.3048},"us-ft":{to_meter:1200/3937},fath:{to_meter:1.8288},kmi:{to_meter:1852},"us-ch":{to_meter:20.1168402336805},"us-mi":{to_meter:1609.34721869444},km:{to_meter:1e3},"ind-ft":{to_meter:.30479841},"ind-yd":{to_meter:.91439523},mi:{to_meter:1609.344},yd:{to_meter:.9144},ch:{to_meter:20.1168},link:{to_meter:.201168},dm:{to_meter:.1},in:{to_meter:.0254},"ind-ch":{to_meter:20.11669506},"us-in":{to_meter:.025400050800101},"us-yd":{to_meter:.914401828803658}};var Fh={WGS84:"+proj=longlat +datum=WGS84","EPSG:4326":"+proj=longlat +datum=WGS84","EPSG:4269":"+proj=longlat +datum=NAD83","EPSG:4978":"+proj=geocent +datum=WGS84","EPSG:4979":"+proj=longlat +datum=WGS84","EPSG:3857":"+proj=merc +a=6378137 +b=6378137 +nadgrids=@null +units=m","EPSG:3785":"EPSG:3857",GOOGLE:"EPSG:3857","EPSG:900913":"EPSG:3857","EPSG:102113":"EPSG:3857"},xi=["proj","datum","ellps","a","b","rf","f","R","units","to_meter","vunits","vto_meter","no_defs","type","title","towgs84","nadgrids","geoidgrids","axis","pm","over","lon_wrap"],Vh=["no_defs","over"],nt=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),Bh=t=>t.toLowerCase().replace(/[\s_-]/g,"");function hs(t,e){let r=Object.keys(t).find(n=>Bh(n)===Bh(e));return r===void 0?void 0:t[r]}function Dh(t){if(/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i.test(t)){let r=Number(t);if(Number.isFinite(r))return r}if(/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?r$/i.test(t)){let r=Number(t.slice(0,-1))/te;if(Number.isFinite(r))return r}let e=/^([+-]?)(\d+(?:\.\d*)?)(?:d(?:(\d+(?:\.\d*)?)'(?:(\d+(?:\.\d*)?)")?)?)?([NSEW])?$/i.exec(t);if(e&&(/d/i.test(t)||e[5])){let r=Number(e[3]||0),n=Number(e[4]||0);if(r<60&&n<60){let i=e[1]==="-"?-1:1,o=/[SW]/i.test(e[5]||"")?-1:1,s=i*o*(Number(e[2])+r/60+n/3600);if(Number.isFinite(s))return s}}throw new Error("Invalid angular parameter: "+t)}function kr(t,e={}){let r=nr(e),n=Ah(t,e),i=n.definition,o=e.aliases||{},s=new Set;for(;typeof i=="string"&&(nt(o,i)||nt(Fh,i));){if(s.has(i))throw new Error("Circular CRS alias: "+i);s.add(i),i=nt(o,i)?o[i]:Fh[i]}if(typeof i=="string"){let R=/^EPSG:(326|327)(\d{2})$/.exec(i);R&&Number(R[2])>=1&&Number(R[2])<=60&&(i="+proj=utm +datum=WGS84 +zone="+Number(R[2])+(R[1]==="327"?" +south":"")),(i==="EPSG:5041"||i==="EPSG:5042")&&(i="+proj=stere +datum=WGS84 +lat_0="+(i==="EPSG:5041"?90:-90)+" +k_0=0.994 +x_0=2000000 +y_0=2000000")}let a;if(Se(i)==="proj-string"&&typeof i=="string"){let R=Object.create(null);for(let N of Gr(i).parameters){if(nt(R,N.name))throw new Error("Duplicate PROJ parameter: +"+N.name);R[N.name]=N.value}a={parameters:R}}else{let R=e.parsers?.find(N=>N.canParse(i));if(!R){let N=["wkt","projjson"].includes(Se(i));throw new Oe(N?"missing-parser":"unknown-syntax","Unsupported CRS definition; register a WKT or PROJJSON parser for structured definitions")}a=R.parse(i,e)}let c={...a.parameters};for(let R of["lon_0","lat_0","lat_1","lat_2","lat_ts","lon_wrap","lon_1","lon_2","lonc","alpha","gamma","tilt","azi","o_alpha","o_lon_c","o_lat_c","o_lon_p","o_lat_p","o_lon_1","o_lat_1","o_lon_2","o_lat_2"])c[R]!==void 0&&(c[R]=String(Dh(c[R])));let l=c.proj,h=l?.toLowerCase(),u=h==="geocentric"?"geocent":["longlat","latlong","latlon","lonlat","identity","geocent"].includes(h)?h:l;if(!u)throw new Error("CRS requires +proj");let f=["longlat","latlong","latlon","lonlat"].includes(u)?"geographic":u==="geocent"?"geocentric":u==="identity"?"identity":"projected",d=c.datum,m=d&&d!=="none"?hs(r,d):void 0;d&&d!=="none"&&!m&&D("Unknown datum: "+d+"; register a datumCatalogs plugin");let p=Uh(c,m?.ellipse),g=c.nadgrids??m?.nadgrids,y=g===void 0?void 0:g.split(",").map(R=>{let N=R.startsWith("@"),z=N?R.slice(1):R;if(!z||/\s/.test(z))throw new Error("Invalid datum grid name");return Object.freeze({name:z,optional:N})}),x=c.towgs84??m?.towgs84,S;if(x!==void 0&&(S=x.split(",").map(R=>L({value:R},"value",NaN)),![3,7].includes(S.length)||S.some(R=>!Number.isFinite(R))||S.length===7&&S[6]<=-1e6))throw new Error("+towgs84 requires three or seven finite values and positive scale");d==="none"&&(S=void 0),y&&d!=="none"&&(S=[0,0,0]);let _=g==="@null"||g==="null"?Uh({ellps:"WGS84"}):p,w=c.axis||"enu";if(w.length!==3||!/[ew]/.test(w)||!/[ns]/.test(w)||!/[ud]/.test(w))throw new Error("Invalid axis: "+w);let E=a.angularUnit??te;if(f==="geographic"&&(c.units&&c.units!=="degrees"||nt(c,"to_meter")))throw new Error("Geographic coordinates must use angular units");if(f!=="geographic"&&c.units==="degrees")throw new Error("Linear coordinates require linear units");let v=kh(c,"units","to_meter"),T=a.verticalUnit??kh(c,"vunits","vto_meter");if(!(T>0)||!Number.isFinite(T))throw new Error("Invalid vertical unit");if(!(E>0)||!Number.isFinite(E))throw new Error("Invalid angular unit");let I=c.pm,P=I===void 0?0:(hs(qh,I)??Dh(I))*te;return Ih(Object.freeze({kind:f,projection:u,parameters:Object.freeze(c),ellipsoid:p,datum:Object.freeze({ellipsoid:_,towgs84:S&&Object.freeze(S),grids:d==="none"||g==="@null"||g==="null"?void 0:y&&Object.freeze(y)}),angularUnit:E,toMeter:v,verticalUnit:T,primeMeridian:P,axis:w,longitudeWrap:c.lon_wrap===void 0?void 0:Number(c.lon_wrap)*te,lossy:!!(a.lossy||n.lossy)}),n.spatialReference)}function kh(t,e,r){let n=t[e],i=zh;if(e==="vunits"&&n==="degrees")throw new Error("Height requires linear units");if(n&&!["m","degrees"].includes(n)&&!nt(i,n))throw new Error("Unsupported units: "+n);let o=L(t,r,n&&i[n]?i[n].to_meter:1);if(!(o>0))throw new Error("+"+r+" must be positive");return o}function Uh(t,e){let r=e||t.ellps||"WGS84",n=hs(Lh,r);if(!n)throw new Error("Unsupported ellipsoid: "+r);let i=L(t,"a",n.a),o=L(t,"f",NaN),s=L(t,"rf",Number.isNaN(o)?n.rf||0:o===0?0:1/o),a=L(t,"b",s?i*(1-1/s):nt(t,"f")||nt(t,"rf")||nt(t,"a")?i:n.b||i),c=L(t,"R",0);if(i<=0||a<=0||a>i||s<0||s>0&&s<=1||nt(t,"R")&&c<=0||!Number.isNaN(o)&&(o<0||o>=1))throw new Error("Invalid ellipsoid dimensions");return Object.freeze({semiMajorAxis:c||i,semiMinorAxis:c||a,eccentricitySquared:c?0:1-(a/i)**2})}var us=Math.PI/(180*3600),_i={ellipsoid:{semiMajorAxis:6378137,semiMinorAxis:6356752314245179e-9,eccentricitySquared:.0066943799901413165},towgs84:[0,0,0]};function wi(t,e){if(Math.abs(t.y)>Math.PI/2)throw new Error("Latitude outside geocentric domain");if(!In(t,e))throw new Error("Geocentric coordinate must be finite")}function Ei(t,e){let r=t.x,n=t.y,i=t.z,{semiMajorAxis:o,semiMinorAxis:s,eccentricitySquared:a}=e;if(r===0&&n===0&&i===0)throw new Error("Geodetic coordinates are undefined at the Earth center");if(a!==0&&Math.abs(r)<1e-12*o&&Math.abs(n)<1e-12*o&&Math.hypot(r,n)<1e-12*o){if(!Number.isFinite(Math.hypot(r,n,i)))throw new Error("Geocentric radius must be finite");t.x=0,t.y=Math.sign(i)*Math.PI/2,t.z=Math.abs(i)-s;return}if(!Nn(t,e))throw Number.isFinite(Math.hypot(r,n,i))?new Error("Geocentric inverse did not converge"):new Error("Geocentric radius must be finite")}function jh(t,e){let r=t[0],n=t[1],i=t[2],o=(t[3]||0)*us,s=(t[4]||0)*us,a=(t[5]||0)*us,c=1+(t[6]||0)/1e6;return e?l=>{let h=(l.x-r)/c,u=(l.y-n)/c,f=(l.z-i)/c;l.x=h+a*u-s*f,l.y=-a*h+u+o*f,l.z=s*h-o*u+f}:l=>{let h=l.x,u=l.y,f=l.z;l.x=c*(h-a*u+s*f)+r,l.y=c*(a*h+u-o*f)+n,l.z=c*(-s*h+o*u+f)+i}}function Si(t){return!!t.towgs84?.some(e=>e!==0)}function ds(t,e){if(!(!t.towgs84||!e.towgs84)){if(t.grids||e.grids){if(t.grids&&e.grids&&t.ellipsoid.semiMajorAxis===e.ellipsoid.semiMajorAxis&&t.ellipsoid.eccentricitySquared===e.ellipsoid.eccentricitySquared&&t.grids.length===e.grids.length&&t.grids.every((n,i)=>n.name===e.grids[i].name&&n.optional===e.grids[i].optional&&n.grid===e.grids[i].grid))return;let r=ds(t.grids?_i:t,e.grids?_i:e);return n=>{t.grids&&Wh(n,t,!1),r?.(n),e.grids&&Wh(n,e,!0)}}if(Si(t)||Si(e)){let r=fs(t,_i),n=fs(_i,e);return i=>{r?.(i),n?.(i)}}return fs(t,e)}}function fs(t,e){if(!t.towgs84||!e.towgs84)return;let r=t.ellipsoid,n=e.ellipsoid,i=!0;for(let a=0;a<7;a++)(t.towgs84[a]||0)!==(e.towgs84[a]||0)&&(i=!1);if(r.semiMajorAxis===n.semiMajorAxis&&Math.abs(r.eccentricitySquared-n.eccentricitySquared)<=5e-11&&i)return;let o=Si(t)?jh(t.towgs84,!1):void 0,s=Si(e)?jh(e.towgs84,!0):void 0;return a=>{wi(a,r),o?.(a),s?.(a),Ei(a,n)}}function Wh(t,e,r){for(let n of e.grids){if(n.name==="null")return;if(!n.grid){if(n.optional)continue;throw new Error("Required datum grid is not registered: "+n.name)}let i=!1;if(n.grid.shiftInPlace)i=n.grid.shiftInPlace(t,r);else{let o=n.grid.shift(t.x,t.y,r);o&&(t.x=o[0],t.y=o[1],i=!0)}if(i){if(!Number.isFinite(t.x)||!Number.isFinite(t.y)||Math.abs(t.y)>Math.PI/2)throw new Error("Datum grid produced a coordinate outside the geographic domain");return}}throw new Error("No datum grid covers coordinate: "+e.grids.map(n=>n.name).join(","))}function Hh(t,e){let r={x:t[0],y:t[1],z:t[2]};return wi(r,e),[r.x,r.y,r.z]}function $h(t,e){let r={x:t[0],y:t[1],z:t[2]};return Ei(r,e),[r.x,r.y,r.z]}function Yh(t,e={}){if(t===void 0)return;let r=[];for(let n of t.split(",")){let i=n.startsWith("@"),o=i?n.slice(1):n;if(!o||/\s/.test(o))throw new Error("Invalid vertical grid name");if(o==="null"){r.push(null);break}let s=Object.prototype.hasOwnProperty.call(e,o)?e[o]:void 0;if(s){if(typeof s.getOffset!="function")throw new Error("Invalid vertical grid: "+o);r.push(s.getOffset.bind(s))}else i||D("Required vertical grid is not registered: "+o)}return(n,i)=>{for(let o of r){if(!o)return 0;let s=o(n,i);if(s!==void 0){if(!Number.isFinite(s))throw new Error("Vertical grid returned a non-finite offset");return s}}throw new Error("No vertical grid covers this coordinate")}}var Ot=class t{static async create(e={}){let r=await Promise.all(Kh(e).map(bh));return new t({...e,projections:r})}constructor(e={}){this.coordinateScratch=new St;let r=e.projections||[],n=Jh(r);if(r.some(i=>!("create"in i))){let i=kr(e.from??"WGS84",e),o=kr(e.to??"WGS84",e);this.lossy=i.lossy||o.lossy,this.deferred={options:{...e,projections:[...r]}}}else{let i=e,o=n,s=Xh(i.from??"WGS84",o,i),a=Xh(i.to??"WGS84",o,i);this.lossy=s.lossy||a.lossy,this.lossy&&(s.kind==="geocentric"||a.kind==="geocentric")&&D("Horizontal extraction cannot supply ellipsoidal height for geocentric coordinates"),this.lossy&&(s.verticalGrid||a.verticalGrid)&&D("Horizontal extraction cannot be combined with vertical grids"),this.forwardTransform=Qh(s,a,!!e.enforceAxis),this.inverseTransform=Qh(a,s,!!e.enforceAxis)}this.project=this.project.bind(this),this.unproject=this.unproject.bind(this),this.projectTo=this.projectTo.bind(this),this.unprojectTo=this.unprojectTo.bind(this),this.projectToSync=this.projectToSync.bind(this),this.unprojectToSync=this.unprojectToSync.bind(this),this.projectFlat=this.projectFlat.bind(this),this.unprojectFlat=this.unprojectFlat.bind(this),this.projectSync=this.projectSync.bind(this),this.unprojectSync=this.unprojectSync.bind(this),this.projectFlatSync=this.projectFlatSync.bind(this),this.unprojectFlatSync=this.unprojectFlatSync.bind(this)}load(){let e=this.deferred;return e?e.implementation?Promise.resolve(e.implementation):(e.pending||(e.pending=t.create(e.options).then(r=>(e.implementation=r,r)).catch(r=>{throw e.pending=void 0,r})),e.pending):Promise.resolve(this)}loadSync(){let e=this.deferred;if(!e)return this;if(!e.implementation){let r=Kh(e.options).map(n=>{let i=Th(n);if(!i)throw new Error("Projection is not preloaded: "+n.name+". Call preload() first.");return i});e.implementation=new t({...e.options,projections:r})}return e.implementation}projectSync(e){return this.deferred?this.loadSync().project(e):ir(e,this.forwardTransform,this.coordinateScratch)}unprojectSync(e){return this.deferred?this.loadSync().unproject(e):ir(e,this.inverseTransform,this.coordinateScratch)}projectFlatSync(e,r=2){return this.deferred?this.loadSync().projectFlat(e,r):Ti(e,r,this.forwardTransform,this.coordinateScratch)}unprojectFlatSync(e,r=2){return this.deferred?this.loadSync().unprojectFlat(e,r):Ti(e,r,this.inverseTransform,this.coordinateScratch)}async preload(){await this.load()}project(e){return this.deferred?this.projectLoaded(e,!1):ir(e,this.forwardTransform,this.coordinateScratch)}unproject(e){return this.deferred?this.projectLoaded(e,!0):ir(e,this.inverseTransform,this.coordinateScratch)}projectTo(e,r){return this.deferred?this.projectToLoaded(e,r,!1):this.projectToSync(e,r)}unprojectTo(e,r){return this.deferred?this.projectToLoaded(e,r,!0):this.unprojectToSync(e,r)}projectToSync(e,r){return this.deferred?this.loadSync().projectTo(e,r):(yi(e,r,Math.max(e.length,this.forwardTransform.geocentricOutput?3:2)),ir(e,this.forwardTransform,this.coordinateScratch,r))}unprojectToSync(e,r){return this.deferred?this.loadSync().unprojectTo(e,r):(yi(e,r,Math.max(e.length,this.inverseTransform.geocentricOutput?3:2)),ir(e,this.inverseTransform,this.coordinateScratch,r))}projectToLoaded(e,r,n){yi(e,r,e.length);let i=e.slice();return this.load().then(o=>n?o.unprojectTo(i,r):o.projectTo(i,r))}projectLoaded(e,r){let n=e.slice();return this.load().then(i=>r?i.unproject(n):i.project(n))}projectFlat(e,r=2){return this.deferred?this.load().then(i=>i.projectFlat(e,r)):Ti(e,r,this.forwardTransform,this.coordinateScratch)}unprojectFlat(e,r=2){return this.deferred?this.load().then(i=>i.unprojectFlat(e,r)):Ti(e,r,this.inverseTransform,this.coordinateScratch)}};function Kh(t){let e=Jh(t.projections||[]),r=new Set;for(let n of[t.from??"WGS84",t.to??"WGS84"]){let i=kr(n,t);if(["geographic","identity"].includes(i.kind))continue;let o=e.get(bi(i.projection));if(!o)throw new Oe("missing-plugin","Projection plugin is not registered: "+i.projection);r.add(o)}return[...r]}var bi=t=>t.toLowerCase().replace(/[\s_-]/g,"");function Jh(t){let e=new Map;for(let r of t)for(let n of new Set([r.name,...r.aliases||[]].map(bi))){if(!n||["longlat","latlong","latlon","lonlat","identity"].includes(n)||e.has(n))throw new Error("Duplicate or reserved projection plugin: "+n);e.set(n,r)}return e}function Xh(t,e,r){let n=kr(t,r),i=e.get(bi(n.projection));if(!["geographic","identity"].includes(n.kind)&&!i)throw new Oe("missing-plugin","Projection plugin is not registered: "+n.projection);let o=new Set([...xi,...i?.parameters||[]]);for(let d of Object.keys(n.parameters)){if(!o.has(d))throw new Oe("missing-transform-stage","Unsupported PROJ parameter: +"+d);let m=Vh.includes(d)||i?.flags?.includes(d);if(m&&n.parameters[d]!==void 0)throw new Error("Expected a flag without a value: +"+d);if(!m&&!n.parameters[d])throw new Error("PROJ parameter requires a value: +"+d)}if(n.parameters.type&&n.parameters.type!=="crs")throw new Error("Only +type=crs is supported");let s=bi(n.projection)==="fasttransversemercator"?Object.freeze({...n.parameters,approx:void 0}):n.parameters,a=i?.create({...n.ellipsoid,parameters:s});if(n.kind==="geocentric"&&(!a?.forward3D||!a?.inverse3D))throw new Error("Geocentric plugin must implement 3D operations");let c=n.datum.grids,l=c?.findIndex(d=>d.name==="null")??-1,h=c?.slice(0,l<0?void 0:l+1).map(d=>{let m=Object.prototype.hasOwnProperty.call(r.datumGrids||{},d.name)?r.datumGrids[d.name]:void 0;if(m&&typeof m.shift!="function")throw new Error("Invalid prepared datum grid: "+d.name);return Object.freeze({...d,grid:m})});for(let d of h||[]){if(d.name==="null")break;!d.optional&&!d.grid&&D("Required datum grid is not registered: "+d.name)}let u=h?Object.freeze({...n.datum,grids:Object.freeze(h)}):n.datum,f=Yh(n.parameters.geoidgrids,r.verticalGrids);return f&&(n.kind==="geocentric"||n.kind==="identity"||n.lossy)&&D("Vertical grids require a non-lossy geographic or projected CRS"),{...n,datum:u,implementation:a,verticalGrid:f}}function ms(t){return Number.isFinite(t.x)&&Number.isFinite(t.y)&&Number.isFinite(t.z)}function Zh(t,e){if(t==="enu")return;let r=[0,0,0],n=[0,0,0];for(let i=0;i<3;i++){let o=t[i],s="ew".includes(o)?0:"ns".includes(o)?1:2;r[e?i:s]=e?s:i,n[e?i:s]="wsd".includes(o)?-1:1}return i=>{let o=i.x,s=i.y,a=i.z;i.x=n[0]*(r[0]===0?o:r[0]===1?s:a),i.y=n[1]*(r[1]===0?o:r[1]===1?s:a),i.z=n[2]*(r[2]===0?o:r[2]===1?s:a)}}function Qh(t,e,r){let n=t.storedAxis||(r?t.axis:"enu"),i=e.storedAxis||(r?e.axis:"enu"),o=Zh(n,!1),s=Zh(i,!0),a=t.implementation&&mt(t.implementation,!0,t.kind==="geocentric"),c=e.implementation&&mt(e.implementation,!1,e.kind==="geocentric"),l=ds(t.datum,e.datum),h=t.lossy||e.lossy,u=t.kind==="geocentric",f=t.kind==="geographic"?t.angularUnit:t.toMeter,d=e.kind==="geographic"?e.angularUnit:e.toMeter,m=u?1:t.verticalUnit,p=e.kind==="geocentric"?d:e.verticalUnit,g=t.primeMeridian,y=e.primeMeridian,x=e.kind==="geographic"?e.longitudeWrap:void 0,S;if(!l&&!t.verticalGrid&&!e.verticalGrid&&!h&&!o&&!s&&!g&&!y&&t.verticalUnit===1&&e.verticalUnit===1&&x===void 0){let _=Object.freeze({inputScale:f,outputScale:d});t.kind==="geographic"&&e.kind==="projected"&&(S=e.implementation?.createForwardFlat?.(_)),t.kind==="projected"&&e.kind==="geographic"&&(S=t.implementation?.createInverseFlat?.(_))}return{flat:S,requiresInputZ:!!(t.verticalGrid||e.verticalGrid)||t.kind==="geocentric"||/[ud]/.test(n.slice(0,2))||/[ud]/.test(i.slice(0,2)),geocentricOutput:e.kind==="geocentric",run(_){if(!ms(_))throw new Error("Coordinates must contain finite x, y and optional z values");o?.(_);let w=_.z;if(h&&(_.z=0),f!==1&&(_.x*=f,_.y*=f,u&&(_.z*=f)),a?.(_),m!==1&&(_.z*=m),Math.abs(_.y)>Math.PI/2||!ms(_))throw new Error("Coordinate is outside the geographic domain");if(_.x+=g,t.verticalGrid&&(_.z+=t.verticalGrid(_.x,_.y)),l?.(_),e.verticalGrid&&(_.z-=e.verticalGrid(_.x,_.y)),_.x-=y,x!==void 0&&(_.x=x+Ve(_.x-x)),c?.(_),d!==1&&(_.x/=d,_.y/=d),p!==1&&(_.z/=p),h&&(_.z=w),s?.(_),!ms(_))throw new Error("Projection produced non-finite coordinates")}}}function ir(t,e,r,n){if(t.length<2)throw new Error("Coordinates must contain finite x, y and optional z values");if(t.length<3&&e.requiresInputZ)throw new Error("This transform requires three ordinates");let i=Math.max(t.length,e.geocentricOutput?3:2),o=r.acquire();try{if(o.x=t[0],o.y=t[1],o.z=t.length>=3?t[2]:0,e.run(o),n)return Ph(t,n,o,i);let s=t.slice();return s[0]=o.x,s[1]=o.y,(t.length>=3||e.geocentricOutput)&&(s[2]=o.z),s}finally{r.release(o)}}function Ti(t,e,r,n){if(!(t instanceof Float32Array||t instanceof Float64Array))throw new Error("In-place projection requires a Float32Array or Float64Array");if(!Number.isSafeInteger(e)||e<2||t.length%e!==0)throw new Error("Dimension must be an integer >= 2 and divide the typed array length");if(e<3&&(r.requiresInputZ||r.geocentricOutput))throw new Error("This transform requires a dimension of at least 3");if(r.flat)return r.flat(t,e),t;let i=n.acquire();try{let o=t instanceof Float32Array;for(let s=0;s<t.length;s+=e){if(i.x=t[s],i.y=t[s+1],i.z=e>=3?t[s+2]:0,r.run(i),o&&(Math.abs(i.x)>34028234663852886e22||Math.abs(i.y)>34028234663852886e22||e>=3&&Math.abs(i.z)>34028234663852886e22))throw new Error("Projected coordinate exceeds Float32 range");t[s]=i.x,t[s+1]=i.y,e>=3&&(t[s+2]=i.z)}return t}finally{n.release(i)}}var vi=class{constructor(e={}){this.options=X1(e)}createProjection(e={}){return new Ot({...this.options,...e})}async createProjectionAsync(e={}){return Ot.create({...this.options,...e})}};function X1(t){return{...t,projections:t.projections&&[...t.projections],parsers:t.parsers&&[...t.parsers],datumCatalogs:t.datumCatalogs&&[...t.datumCatalogs],aliases:t.aliases&&JSON.parse(JSON.stringify(t.aliases)),datumGrids:t.datumGrids&&{...t.datumGrids},verticalGrids:t.verticalGrids&&{...t.verticalGrids}}}function Ke(t,e){return{...Ue(t,e),createForwardFlat(r){return this.forwardInPlace===t?eu(t,!1,r):void 0},createInverseFlat(r){return this.inverseInPlace===e?eu(e,!0,r):void 0}}}function eu(t,e,{inputScale:r,outputScale:n}){let i=new St;return(o,s)=>{let a=i.acquire();try{let c=o instanceof Float32Array;for(let l=0;l<o.length;l+=s){if(a.x=o[l],a.y=o[l+1],a.z=s>=3?o[l+2]:0,!Number.isFinite(a.x)||!Number.isFinite(a.y)||!Number.isFinite(a.z))throw new Error("Coordinates must contain finite x, y and optional z values");if(r!==1&&(a.x*=r,a.y*=r),e&&t(a),Math.abs(a.y)>Math.PI/2||!Number.isFinite(a.x)||!Number.isFinite(a.y))throw new Error("Coordinate is outside the geographic domain");if(a.x+=0,a.x-=0,e||t(a),n!==1&&(a.x/=n,a.y/=n),!Number.isFinite(a.x)||!Number.isFinite(a.y))throw new Error("Projection produced non-finite coordinates");if(c&&(Math.abs(a.x)>34028234663852886e22||Math.abs(a.y)>34028234663852886e22))throw new Error("Projected coordinate exceeds Float32 range");o[l]=a.x,o[l+1]=a.y}}finally{i.release(a)}}}var ps={name:"merc",aliases:["Mercator","Popular Visualisation Pseudo Mercator","Mercator_1SP","Mercator_Auxiliary_Sphere","Mercator_Variant_A"],parameters:["lon_0","lat_ts","k","k_0","x_0","y_0"],create({semiMajorAxis:t,eccentricitySquared:e,parameters:r}){let n=Math.sqrt(e),i=Object.prototype.hasOwnProperty.call(r,"over")?h=>h:Ve,o=L(r,"lon_0",0)*te,s=L(r,"x_0",0),a=L(r,"y_0",0),c=L(r,"k_0",L(r,"k",1));if(Object.prototype.hasOwnProperty.call(r,"lat_ts")){let h=Dr(r,"lat_ts");c=Math.cos(h)/Math.sqrt(1-e*Math.sin(h)**2)}if(c<=0)throw new Error("Mercator scale must be positive");let l=t*c;return Ke(h=>{let u=h.x,f=h.y;if(Math.abs(f)>=Math.PI/2)throw new Error("Mercator is undefined at the poles");let d=Math.asinh(Math.tan(f));h.x=s+l*i(u-o),h.y=a+l*(n===0?d+0:d-n*Math.atanh(n*Math.sin(f)))},h=>{let u=h.x,d=(h.y-a)/l,m=Math.atan(Math.sinh(d));if(n===0){h.x=i(o+(u-s)/l),h.y=m+0;return}for(let p=0;p<30;p++){let g=Math.atan(Math.sinh(d+n*Math.atanh(n*Math.sin(m))));if(Math.abs(g-m)<1e-13){h.x=i(o+(u-s)/l),h.y=g;return}m=g}throw new Error("Mercator inverse did not converge")})}};var gs={name:"eqc",aliases:["Equirectangular","Equidistant_Cylindrical","Equidistant_Cylindrical_Spherical"],parameters:["lon_0","lat_0","lat_ts","x_0","y_0"],create({semiMajorAxis:t,parameters:e}){let r=Object.prototype.hasOwnProperty.call(e,"over")?c=>c:Ve,n=L(e,"lon_0",0)*te,i=Dr(e,"lat_0"),o=Math.cos(Dr(e,"lat_ts")),s=L(e,"x_0",0),a=L(e,"y_0",0);return Ue(c=>{c.x=s+t*o*r(c.x-n),c.y=a+t*(c.y-i)},c=>{c.x=r(n+(c.x-s)/(t*o)),c.y=i+(c.y-a)/t})}};var de=["lon_0","lat_0","x_0","y_0"],pt=["k","k_0"];function wt(t,e,r=0){let n=L(t,e,r);if(e!=="lon_0"&&Math.abs(n)>90)throw new Error("Latitude parameter must be between -90 and 90 degrees: +"+e);return n*te}function Xe(t,e){let r=Object.prototype.hasOwnProperty.call(t,e);if(r&&t[e]!==void 0)throw new Error("Expected a flag without a value: +"+e);return r}function he({semiMajorAxis:t,eccentricitySquared:e,parameters:r}){let n=L(r,"k_0",L(r,"k",1));if(n<=0)throw new Error("Projection scale must be positive");return{a:t,b:t*Math.sqrt(1-e),es:e,e:Math.sqrt(e),ep2:e/(1-e),sphere:e===0,over:Xe(r,"over"),long0:wt(r,"lon_0"),lat0:wt(r,"lat_0"),lat1:wt(r,"lat_1"),lat2:wt(r,"lat_2",L(r,"lat_1",0)),lat_ts:wt(r,"lat_ts",NaN),x0:L(r,"x_0",0),y0:L(r,"y_0",0),k0:n}}function or(t,e){if(!Object.prototype.hasOwnProperty.call(e,"lat_1"))throw new Error("Conic projections require +lat_1");if(Math.abs(t.lat1+t.lat2)<1e-10||Math.abs(t.lat1)>=Math.PI/2||Math.abs(t.lat2)>=Math.PI/2)throw new Error("Conic standard parallels must not be opposite or at a pole")}function se(t,e,r,n,i=Ue){let o=(s,a)=>{let c=s(e,a);if(!c||typeof c!="object"||!Number.isFinite(c.x)||!Number.isFinite(c.y))throw new Error(t+": coordinate outside projection domain or inverse did not converge");a.x=c.x,a.y=c.y};return i(s=>o(r,s),s=>o(n,s))}function Et(t,e){let r=mt(e,!1);return Ue(n=>{let i=n.x,o=n.y,s=Math.atan2(Math.sin(i-t.long0),Math.cos(i-t.long0)),a=Math.abs(Math.abs(t.lat0)-Math.PI/2)<1e-10;if(Math.abs(o+t.lat0)<1e-10&&(a||Math.abs(Math.abs(s)-Math.PI)<1e-10))throw new Error("Azimuthal projection is undefined at the antipode");r(n)},mt(e,!0))}function Ee(t,e,r){var n=t*e;return r/Math.sqrt(1-n*n)}var b=Math.PI/2,V=Math.PI/4,Tt=Math.PI*2,Z=3.14159265359,Ms=Math.PI/180,ys=180/Math.PI,xs=Math.PI/(180*3600);function Ge(t,e,r){var n=t*r,i=.5*t;return n=Math.pow((1-n)/(1+n),i),Math.tan(.5*(b-e))/n}function it(t){return t<0?-1:1}function C(t,e){return e||Math.abs(t)<=Z?t:t-it(t)*Tt}function Gt(t,e){for(var r=.5*t,n,i,o=b-2*Math.atan(e),s=0;s<=15;s++)if(n=t*Math.sin(o),i=b-2*Math.atan(e*Math.pow((1-n)/(1+n),r))-o,o+=i,Math.abs(i)<=1e-10)return o;return-9999}function Z1(t){if(t.k0||(t.k0=1),t.x0=t.x0||0,t.y0=t.y0||0,t.long0=t.long0||0,!(Math.abs(t.lat1+t.lat2)<1e-10)){var e=t.b/t.a;t.e=Math.sqrt(1-e*e);var r=Math.sin(t.lat1),n=Math.cos(t.lat1),i=Ee(t.e,r,n),o=Ge(t.e,t.lat1,r),s=Math.sin(t.lat2),a=Math.cos(t.lat2),c=Ee(t.e,s,a),l=Ge(t.e,t.lat2,s),h=Ge(t.e,t.lat0,Math.sin(t.lat0));Math.abs(t.lat1-t.lat2)>1e-10?t.ns=Math.log(i/c)/Math.log(o/l):t.ns=r,Number.isNaN(t.ns)&&(t.ns=r),t.f0=i/(t.ns*Math.pow(o,t.ns)),t.rh=Math.abs(Math.abs(t.lat0)-b)<1e-10?0:t.a*t.f0*Math.pow(h,t.ns)}}function tu(t,e){var r=e.x,n=e.y;Math.abs(2*Math.abs(n)-Math.PI)<=1e-10&&(n=it(n)*(b-2*1e-10));var i=Math.abs(Math.abs(n)-b),o,s;if(i>1e-10)o=Ge(t.e,n,Math.sin(n)),s=t.a*t.f0*Math.pow(o,t.ns);else{if(i=n*t.ns,i<=0)return null;s=0}var a=t.ns*C(r-t.long0,t.over);return e.x=t.k0*(s*Math.sin(a))+t.x0,e.y=t.k0*(t.rh-s*Math.cos(a))+t.y0,e}function ru(t,e){var r,n,i,o,s,a=(e.x-t.x0)/t.k0,c=t.rh-(e.y-t.y0)/t.k0;t.ns>0?(r=Math.sqrt(a*a+c*c),n=1):(r=-Math.sqrt(a*a+c*c),n=-1);var l=0;if(r!==0&&(l=Math.atan2(n*a,n*c)),r!==0||t.ns>0){if(n=1/t.ns,i=Math.pow(r/(t.a*t.f0),n),o=Gt(t.e,i),o===-9999)return null}else o=-b;return s=C(l/t.ns+t.long0,t.over),e.x=s,e.y=o,e}function nu(t){let e={...t,ns:0,f0:0,rh:0};return Z1(e),e}var _s={name:"lcc",aliases:["Lambert Tangential Conformal Conic Projection","Lambert_Conformal_Conic","Lambert_Conformal_Conic_1SP","Lambert_Conformal_Conic_2SP","Lambert Conic Conformal (1SP)","Lambert Conic Conformal (2SP)"],parameters:[...de,...pt,"lat_1","lat_2"],create(t){let e=he(t);or(e,t.parameters);let r=nu(e),n=se("lcc",r,tu,ru);return Ke(i=>{let o=i.y;if(Math.abs(o)===Math.PI/2&&o*r.ns<0)throw new Error("Lambert conformal conic is undefined at the opposite pole");n.forwardInPlace(i)},n.inverseInPlace)}};function Te(t,e){var r;return t>1e-7?(r=t*e,(1-t*t)*(e/(1-r*r)-.5/t*Math.log((1-r)/(1+r)))):2*e}function be(t){return Math.abs(t)>1&&(t=t>1?1:-1),Math.asin(t)}function Q1(t){Math.abs(t.lat1+t.lat2)<1e-10||(t.temp=t.b/t.a,t.es=1-Math.pow(t.temp,2),t.e3=Math.sqrt(t.es),t.sin_po=Math.sin(t.lat1),t.cos_po=Math.cos(t.lat1),t.t1=t.sin_po,t.con=t.sin_po,t.ms1=Ee(t.e3,t.sin_po,t.cos_po),t.qs1=Te(t.e3,t.sin_po),t.sin_po=Math.sin(t.lat2),t.cos_po=Math.cos(t.lat2),t.t2=t.sin_po,t.ms2=Ee(t.e3,t.sin_po,t.cos_po),t.qs2=Te(t.e3,t.sin_po),t.sin_po=Math.sin(t.lat0),t.cos_po=Math.cos(t.lat0),t.t3=t.sin_po,t.qs0=Te(t.e3,t.sin_po),Math.abs(t.lat1-t.lat2)>1e-10?t.ns0=(t.ms1*t.ms1-t.ms2*t.ms2)/(t.qs2-t.qs1):t.ns0=t.con,t.c=t.ms1*t.ms1+t.ns0*t.qs1,t.rh=t.a*Math.sqrt(t.c-t.ns0*t.qs0)/t.ns0)}function iu(t,e){var r=e.x,n=e.y;t.sin_phi=Math.sin(n),t.cos_phi=Math.cos(n);var i=Te(t.e3,t.sin_phi),o=t.a*Math.sqrt(t.c-t.ns0*i)/t.ns0,s=t.ns0*C(r-t.long0,t.over),a=o*Math.sin(s)+t.x0,c=t.rh-o*Math.cos(s)+t.y0;return e.x=a,e.y=c,e}function ou(t,e){var r,n,i,o,s,a;return e.x-=t.x0,e.y=t.rh-e.y+t.y0,t.ns0>=0?(r=Math.sqrt(e.x*e.x+e.y*e.y),i=1):(r=-Math.sqrt(e.x*e.x+e.y*e.y),i=-1),o=0,r!==0&&(o=Math.atan2(i*e.x,i*e.y)),i=r*t.ns0/t.a,t.sphere?a=Math.asin((t.c-i*i)/(2*t.ns0)):(n=(t.c-i*i)/t.ns0,a=J1(t.e3,n)),s=C(o/t.ns0+t.long0,t.over),e.x=s,e.y=a,e}function J1(t,e){var r,n,i,o,s,a=be(.5*e);if(t<1e-10)return a;for(var c=t*t,l=1;l<=25;l++)if(r=Math.sin(a),n=Math.cos(a),i=t*r,o=1-i*i,s=.5*o*o/n*(e/(1-c)-r/o+.5/t*Math.log((1-i)/(1+i))),a=a+s,Math.abs(s)<=1e-7)return a;return null}function su(t){let e={...t,temp:0,e3:0,sin_po:0,cos_po:0,t1:0,con:0,ms1:0,qs1:0,t2:0,ms2:0,qs2:0,t3:0,qs0:0,ns0:0,c:0,rh:0,sin_phi:0,cos_phi:0};return Q1(e),e}var Ss={name:"aea",aliases:["Albers_Conic_Equal_Area","Albers_Equal_Area","Albers"],parameters:[...de,"lat_1","lat_2"],create(t){let e=he(t);return or(e,t.parameters),se("aea",su(e),iu,ou,Ke)}};var eg=1,tg=.25,au=.046875,cu=.01953125,lu=.01068115234375,rg=.75,ng=.46875,ig=.013020833333333334,og=.007120768229166667,sg=.3645833333333333,ag=.005696614583333333,cg=.3076171875;function ot(t){var e=[];e[0]=eg-t*(tg+t*(au+t*(cu+t*lu))),e[1]=t*(rg-t*(au+t*(cu+t*lu)));var r=t*t;return e[2]=r*(ng-t*(ig+t*og)),r*=t,e[3]=r*(sg-t*ag),e[4]=r*t*cg,e}function ue(t,e,r,n){return r*=e,e*=e,n[0]*t-r*(n[1]+e*(n[2]+e*(n[3]+e*n[4])))}var lg=20;function st(t,e,r){for(var n=1/(1-e),i=t,o=lg;o;--o){var s=Math.sin(i),a=1-e*s*s;if(a=(ue(i,s,Math.cos(i),r)-t)*(a*Math.sqrt(a))*n,i-=a,Math.abs(a)<1e-10)return i}return i}function Ze(t){return Math.abs(t)<b?t:t-it(t)*Math.PI}function hg(t){Math.abs(t.lat1+t.lat2)<1e-10||(t.temp=t.b/t.a,t.es=1-Math.pow(t.temp,2),t.e=Math.sqrt(t.es),t.en=ot(t.es),t.sin_phi=Math.sin(t.lat1),t.cos_phi=Math.cos(t.lat1),t.ms1=Ee(t.e,t.sin_phi,t.cos_phi),t.ml1=ue(t.lat1,Math.sin(t.lat1),Math.cos(t.lat1),t.en),Math.abs(t.lat1-t.lat2)<1e-10?t.ns=t.sin_phi:(t.sin_phi=Math.sin(t.lat2),t.cos_phi=Math.cos(t.lat2),t.ms2=Ee(t.e,t.sin_phi,t.cos_phi),t.ml2=ue(t.lat2,Math.sin(t.lat2),Math.cos(t.lat2),t.en),t.ns=(t.ms1-t.ms2)/(t.ml2-t.ml1)),t.g=t.ml1+t.ms1/t.ns,t.ml0=ue(t.lat0,Math.sin(t.lat0),Math.cos(t.lat0),t.en),t.rh=t.a*(t.g-t.ml0))}function hu(t,e){var r=e.x,n=e.y,i;if(t.sphere)i=t.a*(t.g-n);else{var o=ue(n,Math.sin(n),Math.cos(n),t.en);i=t.a*(t.g-o)}var s=t.ns*C(r-t.long0,t.over),a=t.x0+i*Math.sin(s),c=t.y0+t.rh-i*Math.cos(s);return e.x=a,e.y=c,e}function uu(t,e){e.x-=t.x0,e.y=t.rh-e.y+t.y0;var r,n,i,o;t.ns>=0?(n=Math.sqrt(e.x*e.x+e.y*e.y),r=1):(n=-Math.sqrt(e.x*e.x+e.y*e.y),r=-1);var s=0;if(n!==0&&(s=Math.atan2(r*e.x,r*e.y)),t.sphere)return o=C(t.long0+s/t.ns,t.over),i=Ze(t.g-n/t.a),e.x=o,e.y=i,e;var a=t.g-n/t.a;return i=st(a,t.es,t.en),o=C(t.long0+s/t.ns,t.over),e.x=o,e.y=i,e}function fu(t){let e={...t,temp:0,en:[],sin_phi:0,cos_phi:0,ms1:0,ml1:0,ns:0,ms2:0,ml2:0,g:0,ml0:0,rh:0};return hg(e),e}var ws={name:"eqdc",aliases:["Equidistant_Conic"],parameters:[...de,"lat_1","lat_2"],create(t){let e=he(t);return or(e,t.parameters),se("eqdc",fu(e),hu,uu,Ke)}};var ug=.3333333333333333,fg=.17222222222222222,dg=.10257936507936508,mg=.06388888888888888,pg=.0664021164021164,gg=.016415012942191543;function Ur(t){var e,r=[];return r[0]=t*ug,e=t*t,r[0]+=e*fg,r[1]=e*mg,e*=t,r[0]+=e*dg,r[1]+=e*pg,r[2]=e*gg,r}function Vr(t,e){var r=t+t;return t+e[0]*Math.sin(r)+e[1]*Math.sin(r+r)+e[2]*Math.sin(r+r+r)}var at=1,gt=2,je=3,Le=4;function Mg(t){var e=Math.abs(t.lat0);if(Math.abs(e-b)<1e-10?t.mode=t.lat0<0?at:gt:Math.abs(e)<1e-10?t.mode=je:t.mode=Le,t.es>0){var r;switch(t.qp=Te(t.e,1),t.mmf=.5/(1-t.es),t.apa=Ur(t.es),t.mode){case gt:t.dd=1;break;case at:t.dd=1;break;case je:t.rq=Math.sqrt(.5*t.qp),t.dd=1/t.rq,t.xmf=1,t.ymf=.5*t.qp;break;case Le:t.rq=Math.sqrt(.5*t.qp),r=Math.sin(t.lat0),t.sinb1=Te(t.e,r)/t.qp,t.cosb1=Math.sqrt(1-t.sinb1*t.sinb1),t.dd=Math.cos(t.lat0)/(Math.sqrt(1-t.es*r*r)*t.rq*t.cosb1),t.xmf=t.rq,t.ymf=t.xmf/t.dd,t.xmf*=t.dd;break}}else t.mode===Le&&(t.sinph0=Math.sin(t.lat0),t.cosph0=Math.cos(t.lat0))}function du(t,e){var r,n,i,o,s,a,c,l,h,u,f=e.x,d=e.y;if(f=C(f-t.long0,t.over),t.sphere){if(s=Math.sin(d),u=Math.cos(d),i=Math.cos(f),t.mode===Le||t.mode===je){if(n=t.mode===je?1+u*i:1+t.sinph0*s+t.cosph0*u*i,n<=1e-10)return null;n=Math.sqrt(2/n),r=n*u*Math.sin(f),n*=t.mode===je?s:t.cosph0*s-t.sinph0*u*i}else if(t.mode===gt||t.mode===at){if(t.mode===gt&&(i=-i),Math.abs(d+t.lat0)<1e-10)return null;n=V-d*.5,n=2*(t.mode===at?Math.cos(n):Math.sin(n)),r=n*Math.sin(f),n*=i}}else{switch(c=0,l=0,h=0,i=Math.cos(f),o=Math.sin(f),s=Math.sin(d),a=Te(t.e,s),(t.mode===Le||t.mode===je)&&(c=a/t.qp,l=Math.sqrt(1-c*c)),t.mode){case Le:h=1+t.sinb1*c+t.cosb1*l*i;break;case je:h=1+l*i;break;case gt:h=b+d,a=t.qp-a;break;case at:h=d-b,a=t.qp+a;break}if(Math.abs(h)<1e-10)return null;switch(t.mode){case Le:case je:h=Math.sqrt(2/h),t.mode===Le?n=t.ymf*h*(t.cosb1*c-t.sinb1*l*i):(h=Math.sqrt(2/(1+l*i)),n=h*c*t.ymf),r=t.xmf*h*l*o;break;case gt:case at:a>=0?(h=Math.sqrt(a),r=h*o,n=i*(t.mode===at?h:-h)):r=n=0;break}}return e.x=t.a*r+t.x0,e.y=t.a*n+t.y0,e}function mu(t,e){e.x-=t.x0,e.y-=t.y0;var r=e.x/t.a,n=e.y/t.a,i,o,s,a,c,l,h;if(t.sphere){var u=0,f,d=0;if(f=Math.sqrt(r*r+n*n),o=f*.5,o>1)return null;switch(o=2*Math.asin(o),(t.mode===Le||t.mode===je)&&(d=Math.sin(o),u=Math.cos(o)),t.mode){case je:o=Math.abs(f)<=1e-10?0:Math.asin(n*d/f),r*=d,n=u*f;break;case Le:o=Math.abs(f)<=1e-10?t.lat0:Math.asin(u*t.sinph0+n*d*t.cosph0/f),r*=d*t.cosph0,n=(u-Math.sin(o)*t.sinph0)*f;break;case gt:n=-n,o=b-o;break;case at:o-=b;break}i=n===0&&(t.mode===je||t.mode===Le)?0:Math.atan2(r,n)}else{if(h=0,t.mode===Le||t.mode===je){if(r/=t.dd,n*=t.dd,l=Math.sqrt(r*r+n*n),l<1e-10)return e.x=t.long0,e.y=t.lat0,e;a=2*Math.asin(.5*l/t.rq),s=Math.cos(a),r*=a=Math.sin(a),t.mode===Le?(h=s*t.sinb1+n*a*t.cosb1/l,c=t.qp*h,n=l*t.cosb1*s-n*t.sinb1*a):(h=n*a/l,c=t.qp*h,n=l*s)}else if(t.mode===gt||t.mode===at){if(t.mode===gt&&(n=-n),c=r*r+n*n,!c)return e.x=t.long0,e.y=t.lat0,e;h=1-c/t.qp,t.mode===at&&(h=-h)}i=Math.atan2(r,n),o=Vr(Math.asin(h),t.apa)}return e.x=C(t.long0+i,t.over),e.y=o,e}function pu(t){let e={...t,mode:0,qp:0,mmf:0,apa:[],dd:0,rq:0,xmf:0,ymf:0,sinb1:0,cosb1:0,sinph0:0,cosph0:0};return Mg(e),e}var Es={name:"laea",aliases:["Lambert Azimuthal Equal Area","Lambert_Azimuthal_Equal_Area"],parameters:de,create(t){let e=he(t);return Et(e,se("laea",pu(e),du,mu))}};function gu(t,e,r){return e*=r,Math.tan(.5*(b+t))*Math.pow((1-e)/(1+e),.5*r)}function yg(t){t.x0=t.x0||0,t.y0=t.y0||0,t.lat0=t.lat0||0,t.long0=t.long0||0,t.coslat0=Math.cos(t.lat0),t.sinlat0=Math.sin(t.lat0),t.sphere?!Number.isNaN(t.lat_ts)&&Math.abs(t.coslat0)<=1e-10&&(t.k0=.5*(1+it(t.lat0)*Math.sin(t.lat_ts))):(Math.abs(t.coslat0)<=1e-10&&(t.lat0>0?t.con=1:t.con=-1),t.cons=Math.sqrt(Math.pow(1+t.e,1+t.e)*Math.pow(1-t.e,1-t.e)),!Number.isNaN(t.lat_ts)&&Math.abs(t.coslat0)<=1e-10&&Math.abs(Math.cos(t.lat_ts))>1e-10&&(t.k0=.5*t.cons*Ee(t.e,Math.sin(t.lat_ts),Math.cos(t.lat_ts))/Ge(t.e,t.con*t.lat_ts,t.con*Math.sin(t.lat_ts))),t.ms1=Ee(t.e,t.sinlat0,t.coslat0),t.X0=2*Math.atan(gu(t.lat0,t.sinlat0,t.e))-b,t.cosX0=Math.cos(t.X0),t.sinX0=Math.sin(t.X0))}function Mu(t,e){var r=e.x,n=e.y,i=Math.sin(n),o=Math.cos(n),s,a,c,l,h,u,f=C(r-t.long0,t.over);return Math.abs(Math.abs(r-t.long0)-Math.PI)<=1e-10&&Math.abs(n+t.lat0)<=1e-10?(e.x=NaN,e.y=NaN,e):t.sphere?(s=2*t.k0/(1+t.sinlat0*i+t.coslat0*o*Math.cos(f)),e.x=t.a*s*o*Math.sin(f)+t.x0,e.y=t.a*s*(t.coslat0*i-t.sinlat0*o*Math.cos(f))+t.y0,e):(a=2*Math.atan(gu(n,i,t.e))-b,l=Math.cos(a),c=Math.sin(a),Math.abs(t.coslat0)<=1e-10?(h=Ge(t.e,n*t.con,t.con*i),u=2*t.a*t.k0*h/t.cons,e.x=t.x0+u*Math.sin(r-t.long0),e.y=t.y0-t.con*u*Math.cos(r-t.long0),e):(Math.abs(t.sinlat0)<1e-10?(s=2*t.a*t.k0/(1+l*Math.cos(f)),e.y=s*c+t.y0):(s=2*t.a*t.k0*t.ms1/(t.cosX0*(1+t.sinX0*c+t.cosX0*l*Math.cos(f))),e.y=s*(t.cosX0*c-t.sinX0*l*Math.cos(f))+t.y0),e.x=s*l*Math.sin(f)+t.x0,e))}function yu(t,e){e.x-=t.x0,e.y-=t.y0;var r,n,i,o,s,a=Math.sqrt(e.x*e.x+e.y*e.y);if(t.sphere){var c=2*Math.atan(a/(2*t.a*t.k0));return r=t.long0,n=t.lat0,a<=1e-10?(e.x=r,e.y=n,e):(n=Math.asin(Math.cos(c)*t.sinlat0+e.y*Math.sin(c)*t.coslat0/a),Math.abs(t.coslat0)<1e-10?t.lat0>0?r=C(t.long0+Math.atan2(e.x,-1*e.y),t.over):r=C(t.long0+Math.atan2(e.x,e.y),t.over):r=C(t.long0+Math.atan2(e.x*Math.sin(c),a*t.coslat0*Math.cos(c)-e.y*t.sinlat0*Math.sin(c)),t.over),e.x=r,e.y=n,e)}else if(Math.abs(t.coslat0)<=1e-10){if(a<=1e-10)return n=t.lat0,r=t.long0,e.x=r,e.y=n,e;e.x*=t.con,e.y*=t.con,i=a*t.cons/(2*t.a*t.k0),n=t.con*Gt(t.e,i),r=t.con*C(t.con*t.long0+Math.atan2(e.x,-1*e.y),t.over)}else o=2*Math.atan(a*t.cosX0/(2*t.a*t.k0*t.ms1)),r=t.long0,a<=1e-10?s=t.X0:(s=Math.asin(Math.cos(o)*t.sinX0+e.y*Math.sin(o)*t.cosX0/a),r=C(t.long0+Math.atan2(e.x*Math.sin(o),a*t.cosX0*Math.cos(o)-e.y*t.sinX0*Math.sin(o)),t.over)),n=-1*Gt(t.e,Math.tan(.5*(b+s)));return e.x=r,e.y=n,e}function xu(t){let e={...t,coslat0:0,sinlat0:0,con:0,cons:0,ms1:0,X0:0,cosX0:0,sinX0:0};return yg(e),e}var Ts={name:"stere",aliases:["Stereographic_South_Pole","Polar_Stereographic_variant_A","Polar_Stereographic_variant_B","Polar_Stereographic"],parameters:[...de,...pt,"lat_ts"],create(t){let e=he(t);return Et(e,se("stere",xu(e),Mu,yu))}};function Pi(t,e){return Math.pow((1-t)/(1+t),e)}var xg=20;function _g(t){var e=Math.sin(t.lat0),r=Math.cos(t.lat0);r*=r,t.rc=Math.sqrt(1-t.es)/(1-t.es*e*e),t.C=Math.sqrt(1+t.es*r*r/(1-t.es)),t.phic0=Math.asin(e/t.C),t.ratexp=.5*t.C*t.e,t.K=Math.tan(.5*t.phic0+V)/(Math.pow(Math.tan(.5*t.lat0+V),t.C)*Pi(t.e*e,t.ratexp))}function _u(t,e){var r=e.x,n=e.y;return e.y=2*Math.atan(t.K*Math.pow(Math.tan(.5*n+V),t.C)*Pi(t.e*Math.sin(n),t.ratexp))-b,e.x=t.C*r,e}function Su(t,e){for(var r=1e-14,n=e.x/t.C,i=e.y,o=Math.pow(Math.tan(.5*i+V)/t.K,1/t.C),s=xg;s>0&&(i=2*Math.atan(o*Pi(t.e*Math.sin(e.y),-.5*t.e))-b,!(Math.abs(i-e.y)<r));--s)e.y=i;return s?(e.x=n,e.y=i,e):null}function wu(t){let e={...t,rc:0,C:0,phic0:0,ratexp:0,K:0};return _g(e),e}function oe(t,e){t=Math.abs(t),e=Math.abs(e);var r=Math.max(t,e),n=Math.min(t,e)/(r||1);return r*Math.sqrt(1+Math.pow(n,2))}function Sg(t){t.rc&&(t.sinc0=Math.sin(t.phic0),t.cosc0=Math.cos(t.phic0),t.R2=2*t.rc)}function Eu(t,e){var r,n,i,o;return e.x=C(e.x-t.long0,t.over),_u(t,e),r=Math.sin(e.y),n=Math.cos(e.y),i=Math.cos(e.x),o=t.k0*t.R2/(1+t.sinc0*r+t.cosc0*n*i),e.x=o*n*Math.sin(e.x),e.y=o*(t.cosc0*r-t.sinc0*n*i),e.x=t.a*e.x+t.x0,e.y=t.a*e.y+t.y0,e}function Tu(t,e){var r,n,i,o,s;if(e.x=(e.x-t.x0)/t.a,e.y=(e.y-t.y0)/t.a,e.x/=t.k0,e.y/=t.k0,s=oe(e.x,e.y),s){var a=2*Math.atan2(s,t.R2);r=Math.sin(a),n=Math.cos(a),o=Math.asin(n*t.sinc0+e.y*r*t.cosc0/s),i=Math.atan2(e.x*r,s*t.cosc0*n-e.y*t.sinc0*r)}else o=t.phic0,i=0;if(e.x=i,e.y=o,!Su(t,e))throw new Error("Oblique stereographic inverse did not converge");return e.x=C(e.x+t.long0,t.over),e}function bu(t){let e={...wu(t),sinc0:0,cosc0:0,R2:0};return Sg(e),e}var bs={name:"sterea",aliases:["Stereographic_North_Pole","Oblique_Stereographic","Oblique Stereographic Alternative","Double_Stereographic"],parameters:[...de,...pt],create(t){let e=he(t);if(Math.abs(e.lat0)===Math.PI/2)throw new Error("sterea requires a non-polar origin; use stere at the poles");return Et(e,se("sterea",bu(e),Eu,Tu))}};function vs(t,e){let r=1-t*Math.sin(e)**2;return(1-t)/(r*Math.sqrt(r))}function Ri(t,e,r,n){return vs(t,e-r*n)+vs(t,e+r*n)}function Lt(t,e,r,n){let i=(n-r)/8,o=0;for(let s=0;s<4;s++){let a=r+(2*s+1)*i;o+=i*(.362683783378362*Ri(e,a,i,.1834346424956498)+.3137066458778873*Ri(e,a,i,.525532409916329)+.2223810344533745*Ri(e,a,i,.7966664774136267)+.1012285362903763*Ri(e,a,i,.9602898564975363))}return t*o}function Ps(t,e,r){let n=Math.PI/2,i=Lt(t,e,0,n);if(!Number.isFinite(r)||Math.abs(r)>i)return NaN;let o=-n,s=n,a=r/i*n;for(let c=0;c<48;c++){let l=Lt(t,e,0,a)-r;if(Math.abs(l)<=8*Number.EPSILON*t)return a;l>0?s=a:o=a;let h=a-l/(t*vs(e,a));a=h>o&&h<s?h:(o+s)/2}return NaN}function vu(t,e,r,n,i,o,s){let a=n-e,c=Math.atan((1-o)*Math.tan(t)),l=Math.atan((1-o)*Math.tan(r)),h=Math.sin(c),u=Math.cos(c),f=Math.sin(l),d=Math.cos(l),m=a,p,g=100,y,x,S,_,w,E,v,T,I,P,R,N,z,O;do{if(y=Math.sin(m),x=Math.cos(m),S=Math.sqrt(d*y*(d*y)+(u*f-h*d*x)*(u*f-h*d*x)),S===0){s.x=0,s.y=0;return}_=h*f+u*d*x,w=Math.atan2(S,_),E=u*d*y/S,v=1-E*E,T=v!==0?_-2*h*f/v:0,I=o/16*v*(4+o*(4-3*v)),p=m,m=a+(1-I)*o*E*(w+I*S*(T+I*_*(-1+2*T*T)))}while(Math.abs(m-p)>1e-12&&--g>0);if(g===0){s.x=NaN,s.y=NaN;return}P=v*(i*i-i*(1-o)*(i*(1-o)))/(i*(1-o)*(i*(1-o))),R=1+P/16384*(4096+P*(-768+P*(320-175*P))),N=P/1024*(256+P*(-128+P*(74-47*P))),z=N*S*(T+N/4*(_*(-1+2*T*T)-N/6*T*(-3+4*S*S)*(-3+4*T*T))),O=i*(1-o)*R*(w-z);let k=Math.atan2(d*y,u*f-h*d*x);s.x=k,s.y=O}function Pu(t,e,r,n,i,o,s){let a=Math.atan((1-o)*Math.tan(t)),c=Math.sin(a),l=Math.cos(a),h=Math.sin(r),u=Math.cos(r),f=Math.atan2(c,l*u),d=l*h,m=1-d*d,p=m*(i*i-i*(1-o)*(i*(1-o)))/(i*(1-o)*(i*(1-o))),g=1+p/16384*(4096+p*(-768+p*(320-175*p))),y=p/1024*(256+p*(-128+p*(74-47*p))),x=n/(i*(1-o)*g),S,_=100,w,E,v,T;do w=Math.cos(2*f+x),E=Math.sin(x),v=Math.cos(x),T=y*E*(w+y/4*(v*(-1+2*w*w)-y/6*w*(-3+4*E*E)*(-3+4*w*w))),S=x,x=n/(i*(1-o)*g)+T;while(Math.abs(x-S)>1e-12&&--_>0);if(_===0){s.x=NaN,s.y=NaN;return}let I=c*E-l*v*u,P=Math.atan2(c*v+l*E*u,(1-o)*Math.sqrt(d*d+I*I)),R=Math.atan2(E*h,l*v-c*E*u),N=o/16*m*(4+o*(4-3*m)),z=R-(1-N)*o*d*(x+N*E*(w+N*v*(-1+2*w*w))),O=e+z;s.x=O,s.y=P}function wg(t){t.sin_p12=Math.sin(t.lat0),t.cos_p12=Math.cos(t.lat0),t.x0=t.x0||0,t.y0=t.y0||0,t.long0=t.long0||0,t.f=t.es/(1+Math.sqrt(1-t.es))}function Ru(t,e){var r=e.x,n=e.y,i=Math.sin(e.y),o=Math.cos(e.y),s=C(r-t.long0,t.over),a,c,l,h,u;if(t.sphere)return Math.abs(t.sin_p12-1)<=1e-10?(e.x=t.x0+t.a*(b-n)*Math.sin(s),e.y=t.y0-t.a*(b-n)*Math.cos(s),e):Math.abs(t.sin_p12+1)<=1e-10?(e.x=t.x0+t.a*(b+n)*Math.sin(s),e.y=t.y0+t.a*(b+n)*Math.cos(s),e):(h=t.sin_p12*i+t.cos_p12*o*Math.cos(s),c=Math.acos(h),l=c?c/Math.sin(c):1,e.x=t.x0+t.a*l*o*Math.sin(s),e.y=t.y0+t.a*l*(t.cos_p12*i-t.sin_p12*o*Math.cos(s)),e);if(Math.abs(t.sin_p12-1)<=1e-10)return a=Lt(t.a,t.es,n,b),e.x=t.x0+a*Math.sin(s),e.y=t.y0-a*Math.cos(s),e;if(Math.abs(t.sin_p12+1)<=1e-10)return a=Lt(t.a,t.es,-b,n),e.x=t.x0+a*Math.sin(s),e.y=t.y0+a*Math.cos(s),e;{if(Math.abs(s)<1e-10&&Math.abs(n-t.lat0)<1e-10)return e.x=t.x0,e.y=t.y0,e;vu(t.lat0,t.long0,n,r,t.a,t.f,e),u=e.x;let f=e.y;return e.x=t.x0+f*Math.sin(u),e.y=t.y0+f*Math.cos(u),e}}function Cu(t,e){e.x-=t.x0,e.y-=t.y0;var r,n,i,o,s,a,c,l,h,u,f;if(t.sphere){if(r=Math.sqrt(e.x*e.x+e.y*e.y),r>2*b*t.a)return null;if(n=r/t.a,i=Math.sin(n),o=Math.cos(n),s=t.long0,Math.abs(r)<=1e-10)a=t.lat0;else if(a=be(o*t.sin_p12+e.y*i*t.cos_p12/r),c=Math.abs(t.lat0)-b,Math.abs(c)<=1e-10)if(t.lat0>=0){if(!Number.isFinite(a))return null;s=C(t.long0+Math.atan2(e.x,-e.y),t.over)}else s=C(t.long0-Math.atan2(-e.x,e.y),t.over);else s=C(t.long0+Math.atan2(e.x*i,r*t.cos_p12*o-e.y*t.sin_p12*i),t.over);return e.x=s,e.y=a,e}else return Math.abs(t.sin_p12-1)<=1e-10?(l=Lt(t.a,t.es,0,b),r=Math.sqrt(e.x*e.x+e.y*e.y),h=l-r,a=Ps(t.a,t.es,h),Number.isFinite(a)?(s=C(t.long0+Math.atan2(e.x,-1*e.y),t.over),e.x=s,e.y=a,e):null):Math.abs(t.sin_p12+1)<=1e-10?(l=Lt(t.a,t.es,0,b),r=Math.sqrt(e.x*e.x+e.y*e.y),h=r-l,a=Ps(t.a,t.es,h),Number.isFinite(a)?(s=C(t.long0+Math.atan2(e.x,e.y),t.over),e.x=s,e.y=a,e):null):(u=Math.atan2(e.x,e.y),f=Math.sqrt(e.x*e.x+e.y*e.y),Pu(t.lat0,t.long0,u,f,t.a,t.f,e),e)}function Au(t){let e={...t,sin_p12:0,cos_p12:0,f:0};return wg(e),e}var Rs={name:"aeqd",aliases:["Azimuthal_Equidistant"],parameters:de,create(t){let e=he(t);return Et(e,se("aeqd",Au(e),Ru,Cu))}};function qt(t){var e=Math.exp(t);return e=(e-1/e)/2,e}function Iu(t){var e=1+t,r=e-1;return r===0?t:t*Math.log(e)/r}function Nu(t){var e=Math.abs(t);return e=Iu(e*(1+e/(oe(1,e)+1))),t<0?-e:e}function Ci(t,e){for(var r=2*Math.cos(2*e),n=t.length-1,i=t[n],o=0,s;--n>=0;)s=-o+r*i+t[n],o=i,i=s;return e+s*Math.sin(2*e)}function Ou(t,e){for(var r=2*Math.cos(e),n=t.length-1,i=t[n],o=0,s;--n>=0;)s=-o+r*i+t[n],o=i,i=s;return Math.sin(e)*s}function jr(t){var e=Math.exp(t);return e=(e+1/e)/2,e}function Cs(t,e,r,n){for(var i=Math.sin(e),o=Math.cos(e),s=qt(r),a=jr(r),c=2*o*a,l=-2*i*s,h=t.length-1,u=t[h],f=0,d=0,m=0,p,g;--h>=0;)p=d,g=f,d=u,f=m,u=-p+c*d-l*f+t[h],m=-g+l*d+c*f;c=i*a,l=o*s,n.x=c*u-l*m,n.y=c*m+l*u}function Eg(t){t.x0=t.x0!==void 0?t.x0:0,t.y0=t.y0!==void 0?t.y0:0,t.long0=t.long0!==void 0?t.long0:0,t.lat0=t.lat0!==void 0?t.lat0:0,t.k0=t.k0!==void 0?t.k0:1,t.cgb=[],t.cbg=[],t.utg=[],t.gtu=[];var e=t.es/(1+Math.sqrt(1-t.es)),r=e/(2-e),n=r;t.cgb[0]=r*(2+r*(-2/3+r*(-2+r*(116/45+r*(26/45+r*(-2854/675)))))),t.cbg[0]=r*(-2+r*(2/3+r*(4/3+r*(-82/45+r*(32/45+r*(4642/4725)))))),n=n*r,t.cgb[1]=n*(7/3+r*(-8/5+r*(-227/45+r*(2704/315+r*(2323/945))))),t.cbg[1]=n*(5/3+r*(-16/15+r*(-13/9+r*(904/315+r*(-1522/945))))),n=n*r,t.cgb[2]=n*(56/15+r*(-136/35+r*(-1262/105+r*(73814/2835)))),t.cbg[2]=n*(-26/15+r*(34/21+r*(8/5+r*(-12686/2835)))),n=n*r,t.cgb[3]=n*(4279/630+r*(-332/35+r*(-399572/14175))),t.cbg[3]=n*(1237/630+r*(-12/5+r*(-24832/14175))),n=n*r,t.cgb[4]=n*(4174/315+r*(-144838/6237)),t.cbg[4]=n*(-734/315+r*(109598/31185)),n=n*r,t.cgb[5]=n*(601676/22275),t.cbg[5]=n*(444337/155925),n=Math.pow(r,2),t.Qn=t.k0/(1+r)*(1+n*(1/4+n*(1/64+n/256))),t.utg[0]=r*(-.5+r*(2/3+r*(-37/96+r*(1/360+r*(81/512+r*(-96199/604800)))))),t.gtu[0]=r*(.5+r*(-2/3+r*(5/16+r*(41/180+r*(-127/288+r*(7891/37800)))))),t.utg[1]=n*(-1/48+r*(-1/15+r*(437/1440+r*(-46/105+r*(1118711/3870720))))),t.gtu[1]=n*(13/48+r*(-3/5+r*(557/1440+r*(281/630+r*(-1983433/1935360))))),n=n*r,t.utg[2]=n*(-17/480+r*(37/840+r*(209/4480+r*(-5569/90720)))),t.gtu[2]=n*(61/240+r*(-103/140+r*(15061/26880+r*(167603/181440)))),n=n*r,t.utg[3]=n*(-4397/161280+r*(11/504+r*(830251/7257600))),t.gtu[3]=n*(49561/161280+r*(-179/168+r*(6601661/7257600))),n=n*r,t.utg[4]=n*(-4583/161280+r*(108847/3991680)),t.gtu[4]=n*(34729/80640+r*(-3418889/1995840)),n=n*r,t.utg[5]=n*(-20648693/638668800),t.gtu[5]=n*(212378941/319334400);var i=Ci(t.cbg,t.lat0);t.Zb=-t.Qn*(i+Ou(t.gtu,2*i))}function Gu(t,e){var r=C(e.x-t.long0,t.over),n=e.y;n=Ci(t.cbg,n);var i=Math.sin(n),o=Math.cos(n),s=Math.sin(r),a=Math.cos(r);n=Math.atan2(i,a*o),r=Math.atan2(s*o,oe(i,o*a)),r=Nu(Math.tan(r)),Cs(t.gtu,2*n,2*r,e),n=n+e.x,r=r+e.y;var c,l;return Math.abs(r)<=2.623395162778?(c=t.a*(t.Qn*r)+t.x0,l=t.a*(t.Qn*n+t.Zb)+t.y0):(c=1/0,l=1/0),e.x=c,e.y=l,e}function Lu(t,e){var r=(e.x-t.x0)*(1/t.a),n=(e.y-t.y0)*(1/t.a);n=(n-t.Zb)/t.Qn,r=r/t.Qn;var i,o;if(Math.abs(r)<=2.623395162778){Cs(t.utg,2*n,2*r,e),n=n+e.x,r=r+e.y,r=Math.atan(qt(r));var s=Math.sin(n),a=Math.cos(n),c=Math.sin(r),l=Math.cos(r);n=Math.atan2(s*l,oe(c,l*a)),r=Math.atan2(c,l*a),i=C(r+t.long0,t.over),o=Ci(t.cgb,n)}else i=1/0,o=1/0;return e.x=i,e.y=o,e}function qu(t){let e={...t,cgb:[],cbg:[],utg:[],gtu:[],Qn:0,Zb:0};return Eg(e),e}function Tg(t){t.x0=t.x0!==void 0?t.x0:0,t.y0=t.y0!==void 0?t.y0:0,t.long0=t.long0!==void 0?t.long0:0,t.lat0=t.lat0!==void 0?t.lat0:0,t.es&&(t.en=ot(t.es),t.ml0=ue(t.lat0,Math.sin(t.lat0),Math.cos(t.lat0),t.en))}function zu(t,e){var r=e.x,n=e.y,i=C(r-t.long0,t.over),o,s,a,c=Math.sin(n),l=Math.cos(n);if(t.es){var u=l*i,f=Math.pow(u,2),d=t.ep2*Math.pow(l,2),m=Math.pow(d,2),p=Math.abs(l)>1e-10?Math.tan(n):0,g=Math.pow(p,2),y=Math.pow(g,2);o=1-t.es*Math.pow(c,2),u=u/Math.sqrt(o);var x=ue(n,c,l,t.en);s=t.a*(t.k0*u*(1+f/6*(1-g+d+f/20*(5-18*g+y+14*d-58*g*d+f/42*(61+179*y-y*g-479*g)))))+t.x0,a=t.a*(t.k0*(x-t.ml0+c*i*u/2*(1+f/12*(5-g+9*d+4*m+f/30*(61+y-58*g+270*d-330*g*d+f/56*(1385+543*y-y*g-3111*g))))))+t.y0}else{var h=l*Math.sin(i);if(Math.abs(Math.abs(h)-1)<1e-10)return 93;if(s=.5*t.a*t.k0*Math.log((1+h)/(1-h))+t.x0,a=l*Math.cos(i)/Math.sqrt(1-Math.pow(h,2)),h=Math.abs(a),h>=1){if(h-1>1e-10)return 93;a=0}else a=Math.acos(a);n<0&&(a=-a),a=t.a*t.k0*(a-t.lat0)+t.y0}return e.x=s,e.y=a,e}function Fu(t,e){var r,n,i,o,s=(e.x-t.x0)*(1/t.a),a=(e.y-t.y0)*(1/t.a);if(t.es)if(r=t.ml0+a/t.k0,n=st(r,t.es,t.en),Math.abs(n)<b){var f=Math.sin(n),d=Math.cos(n),m=Math.abs(d)>1e-10?Math.tan(n):0,p=t.ep2*Math.pow(d,2),g=Math.pow(p,2),y=Math.pow(m,2),x=Math.pow(y,2);r=1-t.es*Math.pow(f,2);var S=s*Math.sqrt(r)/t.k0,_=Math.pow(S,2);r=r*m,i=n-r*_/(1-t.es)*.5*(1-_/12*(5+3*y-9*p*y+p-4*g-_/30*(61+90*y-252*p*y+45*x+46*p-_/56*(1385+3633*y+4095*x+1574*x*y)))),o=C(t.long0+S*(1-_/6*(1+2*y+p-_/20*(5+28*y+24*x+8*p*y+6*p-_/42*(61+662*y+1320*x+720*x*y))))/d,t.over)}else i=b*it(a),o=0;else{var c=Math.exp(s/t.k0),l=.5*(c-1/c),h=t.lat0+a/t.k0,u=Math.cos(h);r=Math.sqrt((1-Math.pow(u,2))/(1+Math.pow(l,2))),i=Math.asin(r),Math.sin(h)<0&&(i=-i),l===0&&u===0?o=0:o=C(Math.atan2(l,u)+t.long0,t.over)}return e.x=o,e.y=i,e}function Bu(t){let e={...t,en:[],ml0:0};return Tg(e),e}function Ai(t){let e=he(t);if(Xe(t.parameters,"approx"))return se("tmerc +approx",Bu(e),zu,Fu,Ke);if(e.sphere)throw new Error("Spherical transverse Mercator requires +approx");return se("etmerc",qu(e),Gu,Lu,Ke)}var As={name:"tmerc",aliases:["Fast_Transverse_Mercator","Fast Transverse Mercator","Transverse_Mercator","Transverse Mercator","Gauss Kruger","Gauss_Kruger"],parameters:[...de,...pt,"approx"],flags:["approx"],create:Ai},Is={name:"etmerc",aliases:["Extended_Transverse_Mercator","Extended Transverse Mercator"],parameters:[...de,...pt,"approx"],flags:["approx"],create:Ai};var Ns={name:"utm",aliases:["Universal Transverse Mercator System"],parameters:["zone","south","approx"],flags:["south","approx"],create(t){let e=L(t.parameters,"zone",NaN);if(!Number.isInteger(e)||e<1||e>60)throw new Error("UTM requires an integer +zone from 1 to 60");let r=Xe(t.parameters,"south");return Ai({...t,parameters:{...t.parameters,lat_0:"0",lon_0:String(6*e-183),x_0:"500000",y_0:r?"10000000":"0",k_0:"0.9996"}})}};var Os={name:"geocent",aliases:["Geocentric","geocentric","Geocent"],parameters:[],create({semiMajorAxis:t,semiMinorAxis:e,eccentricitySquared:r}){let n={semiMajorAxis:t,eccentricitySquared:r,semiMinorAxis:e??t*Math.sqrt(1-r)};return{forward(){throw new Error("Geocentric projection requires the 3D pipeline")},inverse(){throw new Error("Geocentric projection requires the 3D pipeline")},forwardInPlace:i=>wi(i,n),inverseInPlace:i=>Ei(i,n),forward3D:i=>Hh(i,n),inverse3D:i=>$h(i,n)}}};function F(t){let e=he(t);return{...e,x0:0,y0:0,lat_ts:Number.isNaN(e.lat_ts)?0:e.lat_ts}}function B(t,e,r,n,i,o){let s=se(t,r,n,i),a=L(e.parameters,"x_0",0),c=L(e.parameters,"y_0",0);return Ue(l=>{o?.(l.x,l.y),s.forwardInPlace(l),l.x+=a,l.y+=c},l=>{l.x-=a,l.y-=c,s.inverseInPlace(l)})}function bt(t,e=0,r=!1){return(n,i)=>{let o=Math.sin(t.lat0)*Math.sin(i)+Math.cos(t.lat0)*Math.cos(i)*Math.cos(n-t.long0);if(r?o<e-1e-14:o<=e+1e-14)throw new Error("Coordinate is outside the visible projection horizon")}}var Wr=1e-10;function bg(t){var e;if(t.phi1=t.lat1,Math.abs(t.phi1)<Wr)throw new Error;t.es?(t.en=ot(t.es),t.am1=Math.sin(t.phi1),e=Math.cos(t.phi1),t.m1=ue(t.phi1,t.am1,e,t.en),t.am1=e/(Math.sqrt(1-t.es*t.am1*t.am1)*t.am1)):Math.abs(t.phi1)+Wr>=b?t.cphi1=0:t.cphi1=1/Math.tan(t.phi1)}function vg(t,e){var r=C(e.x-(t.long0||0),t.over),n=e.y,i,o,s;return o=Math.sin(n),s=Math.cos(n),i=t.am1+t.m1-ue(n,o,s,t.en),o=s*r/(i*Math.sqrt(1-t.es*o*o)),e.x=i*Math.sin(o),e.y=t.am1-i*Math.cos(o),e.x=t.a*e.x+(t.x0||0),e.y=t.a*e.y+(t.y0||0),e}function Pg(t,e){e.x=(e.x-(t.x0||0))/t.a,e.y=(e.y-(t.y0||0))/t.a;var r,n,i,o;if(e.y=t.am1-e.y,n=oe(e.x,e.y),t.phi1<0&&(n=-n),o=st(t.am1+t.m1-n,t.es,t.en),r=Math.abs(o),r<b)r=Math.sin(o),i=n*Math.atan2(Math.sign(t.phi1)*e.x,Math.sign(t.phi1)*e.y)*Math.sqrt(1-t.es*r*r)/Math.cos(o);else if(Math.abs(r-b)<=Wr)i=0;else throw new Error;return e.x=C(i+(t.long0||0),t.over),e.y=Ze(o),e}function Rg(t,e){var r=C(e.x-(t.long0||0),t.over),n=e.y,i,o;return o=t.cphi1+t.phi1-n,Math.abs(o)>Wr?(i=r*Math.cos(n)/o,e.x=o*Math.sin(i),e.y=t.cphi1-o*Math.cos(i)):e.x=e.y=0,e.x=t.a*e.x+(t.x0||0),e.y=t.a*e.y+(t.y0||0),e}function Cg(t,e){e.x=(e.x-(t.x0||0))/t.a,e.y=(e.y-(t.y0||0))/t.a;var r,n;e.y=t.cphi1-e.y;var i=oe(e.x,e.y);if(t.phi1<0&&(i=-i),n=t.cphi1+t.phi1-i,Math.abs(n)>b)throw new Error;return Math.abs(Math.abs(n)-b)<=Wr?r=0:r=i*Math.atan2(Math.sign(t.phi1)*e.x,Math.sign(t.phi1)*e.y)/Math.cos(n),e.x=C(r+(t.long0||0),t.over),e.y=Ze(n),e}function Du(t,e){return t.es?vg(t,e):Rg(t,e)}function ku(t,e){return t.es?Pg(t,e):Cg(t,e)}function Uu(t,e={}){let r={...t,phi1:0,en:[],m1:0,am1:0,cphi1:0,...e};return bg(r),r}var Gs={name:"bonne",aliases:["Bonne (Werner lat_1=90)"],parameters:["lon_0","x_0","y_0","lat_1"],create(t){let e=F(t);if(!Object.prototype.hasOwnProperty.call(t.parameters,"lat_1")||Math.abs(e.lat1)<1e-10)throw new Error("Bonne requires a nonzero lat_1");let r=Uu(e);return B("bonne",t,r,Du,ku)}};function Hr(t,e,r){var n=e*r;return t/Math.sqrt(1-n*n)}function Ag(t){t.sphere||(t.en=ot(t.es),t.ml0=t.a*ue(t.lat0,Math.sin(t.lat0),Math.cos(t.lat0),t.en))}function qs(t,e){var r,n,i=e.x,o=e.y;if(i=C(i-t.long0,t.over),t.sphere)r=t.a*Math.asin(Math.cos(o)*Math.sin(i)),n=t.a*(Math.atan2(Math.tan(o),Math.cos(i))-t.lat0);else{var s=Math.sin(o),a=Math.cos(o),c=Hr(t.a,t.e,s),l=Math.tan(o)*Math.tan(o),h=i*Math.cos(o),u=h*h,f=t.es*a*a/(1-t.es),d=t.a*ue(o,s,a,t.en);r=c*h*(1-u*l*(1/6+(8-l+8*f)*u/120)),n=d-t.ml0+c*s/a*u*(.5+(5-l+6*f)*u/24)}return e.x=r+t.x0,e.y=n+t.y0,e}function Vu(t,e){e.x-=t.x0,e.y-=t.y0;var r=e.x/t.a,n=e.y/t.a,i,o;if(t.sphere){var s=n+t.lat0;i=Math.asin(Math.sin(s)*Math.cos(r)),o=Math.atan2(Math.tan(r),Math.cos(s))}else{var a=t.ml0/t.a+n,c=st(a,t.es,t.en);if(Math.abs(Math.abs(c)-b)<=1e-10)return e.x=t.long0,e.y=Math.sign(c)*b,e;var l=Hr(t.a,t.e,Math.sin(c)),h=l*l*l/t.a/t.a*(1-t.es),u=Math.pow(Math.tan(c),2),f=r*t.a/l,d=f*f;i=c-l*Math.tan(c)/h*f*f*(.5-(1+3*u)*f*f/24),o=f*(1-d*(u/3-(1+3*u)*u*d/15))/Math.cos(c)}if(!t.sphere){let m=e.x+t.x0,p=e.y+t.y0,g=t.scratch,y=!1;for(let x=0;x<12;x++){Ls(t,o,i);let S=g.x-m,_=g.y-p;if(Math.max(Math.abs(S),Math.abs(_))<1e-7){y=!0;break}let w=1e-7,E=i>b-w?-w:w,v=g.x,T=g.y;Ls(t,o+w,i);let I=(g.x-v)/w,P=(g.y-T)/w;Ls(t,o,i+E);let R=(g.x-v)/E,N=(g.y-T)/E,z=I*N-R*P;if(!Number.isFinite(z)||Math.abs(z)<1e-12||(o-=(N*S-R*_)/z,i-=(I*_-P*S)/z,!Number.isFinite(o)||Math.abs(i)>b))break}if(!y)throw new Error("Cassini inverse did not converge")}return e.x=C(o+t.long0,t.over),e.y=Ze(i),e}function Ls(t,e,r){t.scratch.x=e+t.long0,t.scratch.y=r,qs(t,t.scratch)}function ju(t,e={}){let r={...t,en:[],scratch:{x:0,y:0},ml0:0,...e};return Ag(r),r}var zs={name:"cass",aliases:["Cassini","Cassini_Soldner"],parameters:["lon_0","x_0","y_0","lat_0"],create(t){let e=F(t),r=ju(e);return B("cass",t,r,qs,Vu)}};function Wu(t,e){var r=1-(1-t*t)/(2*t)*Math.log((1-t)/(1+t));let n=4*Number.EPSILON*r;if(Math.abs(e)>r+n)return NaN;if(Math.abs(Math.abs(e)-r)<=n)return e<0?-1*b:b;for(var i=Math.asin(.5*e),o,s,a,c,l=0;l<30;l++)if(s=Math.sin(i),a=Math.cos(i),c=t*s,o=Math.pow(1-c*c,2)/(2*a)*(e/(1-t*t)-s/(1-c*c)+.5/t*Math.log((1-c)/(1+c))),i+=o,Math.abs(o)<=1e-10)return i;return NaN}function Ig(t){t.sphere||(t.k0=Ee(t.e,Math.sin(t.lat_ts),Math.cos(t.lat_ts)))}function Hu(t,e){var r=e.x,n=e.y,i,o,s=C(r-t.long0,t.over);if(t.sphere)i=t.x0+t.a*s*Math.cos(t.lat_ts),o=t.y0+t.a*Math.sin(n)/Math.cos(t.lat_ts);else{var a=Te(t.e,Math.sin(n));i=t.x0+t.a*t.k0*s,o=t.y0+t.a*a*.5/t.k0}return e.x=i,e.y=o,e}function $u(t,e){e.x-=t.x0,e.y-=t.y0;var r,n;return t.sphere?(r=C(t.long0+e.x/t.a/Math.cos(t.lat_ts),t.over),n=Math.asin(e.y/t.a*Math.cos(t.lat_ts))):(n=Wu(t.e,2*e.y*t.k0/t.a),r=C(t.long0+e.x/(t.a*t.k0),t.over)),e.x=r,e.y=n,e}function Yu(t,e={}){let r={...t,...e};return Ig(r),r}var Fs={name:"cea",aliases:[],parameters:["lon_0","x_0","y_0","lat_ts"],create(t){let e=F(t);if(Math.abs(e.lat_ts)>=Math.PI/2)throw new Error("CEA standard parallel must be away from the poles");let r=Yu(e);return B("cea",t,r,Hu,$u)}};var Ng=20;function Og(t){t.long0=t.long0||0,t.sphere?(t.n=1,t.m=0,t.es=0,t.C_y=Math.sqrt((t.m+1)/t.n),t.C_x=t.C_y/(t.m+1)):t.en=ot(t.es)}function Ii(t,e){var r,n,i=e.x,o=e.y;if(i=C(i-t.long0,t.over),t.sphere){if(!t.m)o=t.n!==1?Math.asin(t.n*Math.sin(o)):o;else for(var s=t.n*Math.sin(o),a=Ng;a;--a){var c=(t.m*o+Math.sin(o)-s)/(t.m+Math.cos(o));if(o-=c,Math.abs(c)<1e-10)break}r=t.a*t.C_x*i*(t.m+Math.cos(o)),n=t.a*t.C_y*o}else{var l=Math.sin(o),h=Math.cos(o);n=t.a*ue(o,l,h,t.en),r=t.a*i*h/Math.sqrt(1-t.es*l*l)}return e.x=r,e.y=n,e}function Ni(t,e){var r,n,i,o;return e.x-=t.x0,i=e.x/t.a,e.y-=t.y0,r=e.y/t.a,t.sphere?(r/=t.C_y,i=i/(t.C_x*(t.m+Math.cos(r))),t.m?r=be((t.m*r+Math.sin(r))/t.n):t.n!==1&&(r=be(Math.sin(r)/t.n)),i=C(i+t.long0,t.over),r=Ze(r)):(r=st(e.y/t.a,t.es,t.en),o=Math.abs(r),o<b?(o=Math.sin(r),n=t.long0+e.x*Math.sqrt(1-t.es*o*o)/(t.a*Math.cos(r)),i=C(n,t.over)):o-1e-10<b&&(i=t.long0)),e.x=i,e.y=r,e}function Ku(t,e={}){let r={...t,en:[],n:0,m:0,C_y:0,C_x:0,...e};return Og(r),r}function Gg(t){t.sphere=!0,t.b=t.a,t.m=1,t.n=2.5707963267948966,t.es=0,t.C_y=Math.sqrt((t.m+1)/t.n),t.C_x=t.C_y/(t.m+1)}var Xu=Ii,Zu=Ni;function Qu(t,e={}){let r={...t,m:0,n:0,C_y:0,C_x:0,en:[],...e};return Gg(r),r}var Bs={name:"eck6",aliases:["Eckert_VI"],parameters:["lon_0","x_0","y_0"],create(t){let e=F(t),r=Qu(e);return B("eck6",t,r,Xu,Zu)}};var $r=1.340264,Yr=-.081106,Kr=893e-6,Xr=.003796,Oi=Math.sqrt(3)/2;function Lg(t){t.long0=t.long0!==void 0?t.long0:0,t.x0=t.x0!==void 0?t.x0:0,t.y0=t.y0!==void 0?t.y0:0,t.es!==0&&(t.apa=Ur(t.es),t.qp=Te(t.e,1),t.rqda=Math.sqrt(.5*t.qp))}function Ju(t,e){var r=C(e.x-t.long0,t.over),n=e.y,i=Math.sin(n);t.es!==0&&(i=Te(t.e,i)/t.qp);var o=Math.asin(Oi*i),s=o*o,a=s*s*s;return e.x=r*Math.cos(o)/(Oi*($r+3*Yr*s+a*(7*Kr+9*Xr*s))),e.y=o*($r+Yr*s+a*(Kr+Xr*s)),t.es!==0&&(e.x*=t.rqda,e.y*=t.rqda),e.x=t.a*e.x+t.x0,e.y=t.a*e.y+t.y0,e}function ef(t,e){e.x=(e.x-t.x0)/t.a,e.y=(e.y-t.y0)/t.a,t.es!==0&&(e.x/=t.rqda,e.y/=t.rqda);var r=1e-9,n=12,i=e.y,o,s,a,c,l,h;for(h=0;h<n&&(o=i*i,s=o*o*o,a=i*($r+Yr*o+s*(Kr+Xr*o))-e.y,c=$r+3*Yr*o+s*(7*Kr+9*Xr*o),i-=l=a/c,!(Math.abs(l)<r));++h);return o=i*i,s=o*o*o,e.x=Oi*e.x*($r+3*Yr*o+s*(7*Kr+9*Xr*o))/Math.cos(i),e.y=Math.asin(Math.sin(i)/Oi),t.es!==0&&(e.y=Vr(e.y,t.apa)),e.x=C(e.x+t.long0,t.over),e}function tf(t,e={}){let r={...t,apa:[],qp:0,rqda:0,...e};return Lg(r),r}var Ds={name:"eqearth",aliases:["Equal Earth","Equal_Earth"],parameters:["lon_0","x_0","y_0"],create(t){let e=F(t),r=tf(e);return B("eqearth",t,r,Ju,ef)}};function qg(t){t.x0=t.x0||0,t.y0=t.y0||0,t.lat0=t.lat0||0,t.long0=t.long0||0}function rf(t,e){var r=e.x,n=e.y,i=C(r-t.long0,t.over),o=t.x0+t.a*i*Math.cos(t.lat0),s=t.y0+t.a*n;return t.t1=o,t.t2=Math.cos(t.lat0),e.x=o,e.y=s,e}function nf(t,e){e.x-=t.x0,e.y-=t.y0;var r=e.y/t.a,n=C(t.long0+e.x/(t.a*Math.cos(t.lat0)),t.over);return e.x=n,e.y=r,e}function of(t,e={}){let r={...t,t2:0,t1:0,...e};return qg(r),r}var ks={name:"equi",aliases:[],parameters:["lon_0","x_0","y_0","lat_0"],create(t){let e=F(t);if(Math.abs(e.lat0)>=Math.PI/2)throw new Error("Equirectangular standard parallel must be away from the poles");let r=of(e);return B("equi",t,r,rf,nf)}};function zg(t){if(t.flip_axis=t.sweep==="x"?1:0,t.h=Number(t.h),t.radius_g_1=t.h/t.a,t.radius_g_1<=0||t.radius_g_1>1e10)throw new Error;if(t.radius_g=1+t.radius_g_1,t.C=t.radius_g*t.radius_g-1,t.es!==0){var e=1-t.es,r=1/e;t.radius_p=Math.sqrt(e),t.radius_p2=e,t.radius_p_inv2=r,t.shape="ellipse"}else t.radius_p=1,t.radius_p2=1,t.radius_p_inv2=1,t.shape="sphere"}function sf(t,e){var r=e.x,n=e.y,i,o,s,a;if(r=r-t.long0,t.shape==="ellipse"){n=Math.atan(t.radius_p2*Math.tan(n));var c=t.radius_p/oe(t.radius_p*Math.cos(n),Math.sin(n));if(o=c*Math.cos(r)*Math.cos(n),s=c*Math.sin(r)*Math.cos(n),a=c*Math.sin(n),(t.radius_g-o)*o-s*s-a*a*t.radius_p_inv2<0)return e.x=Number.NaN,e.y=Number.NaN,e;i=t.radius_g-o,t.flip_axis?(e.x=t.radius_g_1*Math.atan(s/oe(a,i)),e.y=t.radius_g_1*Math.atan(a/i)):(e.x=t.radius_g_1*Math.atan(s/i),e.y=t.radius_g_1*Math.atan(a/oe(s,i)))}else t.shape==="sphere"&&(i=Math.cos(n),o=Math.cos(r)*i,s=Math.sin(r)*i,a=Math.sin(n),i=t.radius_g-o,t.flip_axis?(e.x=t.radius_g_1*Math.atan(s/oe(a,i)),e.y=t.radius_g_1*Math.atan(a/i)):(e.x=t.radius_g_1*Math.atan(s/i),e.y=t.radius_g_1*Math.atan(a/oe(s,i))));return e.x=e.x*t.a,e.y=e.y*t.a,e}function af(t,e){var r=-1,n=0,i=0,o,s,a,c;if(e.x=e.x/t.a,e.y=e.y/t.a,t.shape==="ellipse"){t.flip_axis?(i=Math.tan(e.y/t.radius_g_1),n=Math.tan(e.x/t.radius_g_1)*oe(1,i)):(n=Math.tan(e.x/t.radius_g_1),i=Math.tan(e.y/t.radius_g_1)*oe(1,n));var l=i/t.radius_p;if(o=n*n+l*l+r*r,s=2*t.radius_g*r,a=s*s-4*o*t.C,a<0)return e.x=Number.NaN,e.y=Number.NaN,e;c=(-s-Math.sqrt(a))/(2*o),r=t.radius_g+c*r,n*=c,i*=c,e.x=Math.atan2(n,r),e.y=Math.atan(i*Math.cos(e.x)/r),e.y=Math.atan(t.radius_p_inv2*Math.tan(e.y))}else if(t.shape==="sphere"){if(t.flip_axis?(i=Math.tan(e.y/t.radius_g_1),n=Math.tan(e.x/t.radius_g_1)*Math.sqrt(1+i*i)):(n=Math.tan(e.x/t.radius_g_1),i=Math.tan(e.y/t.radius_g_1)*Math.sqrt(1+n*n)),o=n*n+i*i+r*r,s=2*t.radius_g*r,a=s*s-4*o*t.C,a<0)return e.x=Number.NaN,e.y=Number.NaN,e;c=(-s-Math.sqrt(a))/(2*o),r=t.radius_g+c*r,n*=c,i*=c,e.x=Math.atan2(n,r),e.y=Math.atan(i*Math.cos(e.x)/r)}return e.x=e.x+t.long0,e}function cf(t,e={}){let r={...t,flip_axis:0,sweep:"",h:0,radius_g_1:0,radius_g:0,C:0,radius_p:0,radius_p2:0,radius_p_inv2:0,shape:"",...e};return zg(r),r}var Us={name:"geos",aliases:["Geostationary Satellite View","Geostationary_Satellite"],parameters:["lon_0","x_0","y_0","h","sweep"],create(t){let e=F(t),r=L(t.parameters,"h",NaN);if(!Number.isFinite(r)||r<=0)throw new Error("Geostationary projection requires positive h");let n=t.parameters.sweep||"y";if(!["x","y"].includes(n))throw new Error("Geostationary sweep must be x or y");let i=cf(e,{h:r,sweep:n});return B("geos",t,i,sf,af,e.sphere?bt({...e,lat0:0},1/(1+r/e.a),!0):void 0)}};function Fg(t){t.sin_p14=Math.sin(t.lat0),t.cos_p14=Math.cos(t.lat0),t.infinity_dist=1e3*t.a,t.rc=1}function lf(t,e){var r,n,i,o,s,a,c,l,h=e.x,u=e.y;return i=C(h-t.long0,t.over),r=Math.sin(u),n=Math.cos(u),o=Math.cos(i),a=t.sin_p14*r+t.cos_p14*n*o,s=1,a>0||Math.abs(a)<=1e-10?(c=t.x0+t.a*s*n*Math.sin(i)/a,l=t.y0+t.a*s*(t.cos_p14*r-t.sin_p14*n*o)/a):(c=t.x0+t.infinity_dist*n*Math.sin(i),l=t.y0+t.infinity_dist*(t.cos_p14*r-t.sin_p14*n*o)),e.x=c,e.y=l,e}function hf(t,e){var r,n,i,o,s,a;return e.x=(e.x-t.x0)/t.a,e.y=(e.y-t.y0)/t.a,e.x/=t.k0,e.y/=t.k0,r=Math.sqrt(e.x*e.x+e.y*e.y),r?(o=Math.atan2(r,t.rc),n=Math.sin(o),i=Math.cos(o),a=be(i*t.sin_p14+e.y*n*t.cos_p14/r),s=Math.atan2(e.x*n,r*t.cos_p14*i-e.y*t.sin_p14*n),s=C(t.long0+s,t.over)):(a=t.lat0,s=t.long0),e.x=s,e.y=a,e}function uf(t,e={}){let r={...t,sin_p14:0,cos_p14:0,infinity_dist:0,rc:0,phic0:0,...e};return Fg(r),r}var Vs={name:"gnom",aliases:[],parameters:["lon_0","x_0","y_0","lat_0"],create(t){let e=F(t),r=uf(e);return B("gnom",t,r,lf,hf,bt(e))}};function sr(t,e,r){if(Math.abs(e)>b)return Number.NaN;if(e===b)return Number.POSITIVE_INFINITY;if(e===-1*b)return Number.NEGATIVE_INFINITY;var n=t*r;return Math.log(Math.tan((b+e)/2))+t*Math.log((1-n)/(1+n))/2}function js(t,e){return 2*Math.atan(t*Math.exp(e))-b}function ff(t,e){var r=js(1,e),n=0,i=0;let o=0;do{if(++o>50)throw new Error("Isometric latitude inverse did not converge");n=r,i=t*Math.sin(n),r=js(Math.exp(t*Math.log((1+i)/(1-i))/2),e)}while(Math.abs(r-n)>1e-12);return r}function Bg(t){t.k0||(t.k0=1);var e=t.b/t.a;t.e=Math.sqrt(1-e*e),t.lc=t.long0,t.rs=Math.sqrt(1+t.e*t.e*Math.pow(Math.cos(t.lat0),4)/(1-t.e*t.e));var r=Math.sin(t.lat0),n=Math.asin(r/t.rs),i=Math.sin(n);t.cp=sr(0,n,i)-t.rs*sr(t.e,t.lat0,r),t.n2=t.k0*t.a*Math.sqrt(1-t.e*t.e)/(1-t.e*t.e*r*r),t.xs=t.x0,t.ys=t.y0-t.n2*n}function df(t,e){var r=e.x,n=e.y,i=t.rs*(r-t.lc),o=t.cp+t.rs*sr(t.e,n,Math.sin(n)),s=Math.asin(Math.sin(i)/jr(o)),a=sr(0,s,Math.sin(s));return e.x=t.xs+t.n2*a,e.y=t.ys+t.n2*Math.atan(qt(o)/Math.cos(i)),e}function mf(t,e){var r=e.x,n=e.y,i=Math.atan(qt((r-t.xs)/t.n2)/Math.cos((n-t.ys)/t.n2)),o=Math.asin(Math.sin((n-t.ys)/t.n2)/jr((r-t.xs)/t.n2)),s=sr(0,o,Math.sin(o));return e.x=t.lc+i/t.rs,e.y=ff(t.e,(s-t.cp)/t.rs),e}function pf(t,e={}){let r={...t,lc:0,rs:0,cp:0,n2:0,xs:0,ys:0,...e};return Bg(r),r}var Ws={name:"gstmerc",aliases:["gstmerg"],parameters:["lon_0","x_0","y_0","lat_0","k","k_0"],create(t){let e=F(t),r=pf(e);return B("gstmerc",t,r,df,mf)}};function Dg(t){t.a=6377397155e-3,t.es=.006674372230614,t.e=Math.sqrt(t.es),t.s45=.785398163397448,t.s90=2*t.s45,t.fi0=t.lat0,t.e2=t.es,t.e=Math.sqrt(t.e2),t.alfa=Math.sqrt(1+t.e2*Math.pow(Math.cos(t.fi0),4)/(1-t.e2)),t.uq=1.04216856380474,t.u0=Math.asin(Math.sin(t.fi0)/t.alfa),t.g=Math.pow((1+t.e*Math.sin(t.fi0))/(1-t.e*Math.sin(t.fi0)),t.alfa*t.e/2),t.k=Math.tan(t.u0/2+t.s45)/Math.pow(Math.tan(t.fi0/2+t.s45),t.alfa)*t.g,t.k1=t.k0,t.n0=t.a*Math.sqrt(1-t.e2)/(1-t.e2*Math.pow(Math.sin(t.fi0),2)),t.s0=1.37008346281555,t.n=Math.sin(t.s0),t.ro0=t.k1*t.n0/Math.tan(t.s0),t.ad=t.s90-t.uq}function gf(t,e){var r,n,i,o,s,a,c,l=e.x,h=e.y,u=C(l-t.long0,t.over);return r=Math.pow((1+t.e*Math.sin(h))/(1-t.e*Math.sin(h)),t.alfa*t.e/2),n=2*(Math.atan(t.k*Math.pow(Math.tan(h/2+t.s45),t.alfa)/r)-t.s45),i=-u*t.alfa,o=Math.asin(Math.cos(t.ad)*Math.sin(n)+Math.sin(t.ad)*Math.cos(n)*Math.cos(i)),s=Math.asin(Math.cos(n)*Math.sin(i)/Math.cos(o)),a=t.n*s,c=t.ro0*Math.pow(Math.tan(t.s0/2+t.s45),t.n)/Math.pow(Math.tan(o/2+t.s45),t.n),e.y=c*Math.cos(a)/1,e.x=c*Math.sin(a)/1,t.czech||(e.y*=-1,e.x*=-1),e}function Mf(t,e){var r,n,i,o,s,a,c,l,h=e.x;e.x=e.y,e.y=h,t.czech||(e.y*=-1,e.x*=-1),a=Math.sqrt(e.x*e.x+e.y*e.y),s=Math.atan2(e.y,e.x),o=s/Math.sin(t.s0),i=2*(Math.atan(Math.pow(t.ro0/a,1/t.n)*Math.tan(t.s0/2+t.s45))-t.s45),r=Math.asin(Math.cos(t.ad)*Math.sin(i)-Math.sin(t.ad)*Math.cos(i)*Math.cos(o)),n=Math.asin(Math.cos(i)*Math.sin(o)/Math.cos(r)),e.x=t.long0-n/t.alfa,c=r,l=0;var u=0;do e.y=2*(Math.atan(Math.pow(t.k,-1/t.alfa)*Math.pow(Math.tan(r/2+t.s45),1/t.alfa)*Math.pow((1+t.e*Math.sin(c))/(1-t.e*Math.sin(c)),t.e/2))-t.s45),Math.abs(c-e.y)<1e-10&&(l=1),c=e.y,u+=1;while(l===0&&u<15);return u>=15?null:e}function yf(t,e={}){let r={...t,s45:0,s90:0,fi0:0,e2:0,alfa:0,uq:0,u0:0,g:0,k:0,k1:0,n0:0,s0:0,n:0,ro0:0,ad:0,czech:!1,...e};return Dg(r),r}var Hs={name:"krovak",aliases:["Krovak","Krovak Modified","Krovak (North Orientated)","Krovak Modified (North Orientated)"],parameters:["lon_0","x_0","y_0","lat_0","k","k_0","czech","alpha","lat_ts"],flags:["czech"],create(t){let e=L(t.parameters,"alpha",30.28813972222222),r=L(t.parameters,"lat_ts",78.5);if(![30.28813972222222,30.28813975277778].some(o=>Math.abs(e-o)<=1e-10))throw new Error("Krovak requires its fixed cone-axis co-latitude");if(Math.abs(r-78.5)>1e-10)throw new Error("Krovak requires its fixed 78.5 degree pseudo standard parallel");let n=F(t);n.lat0=wt(t.parameters,"lat_0",49.5),n.long0=wt(t.parameters,"lon_0",24.83333333333333),n.k0=L(t.parameters,"k_0",L(t.parameters,"k",.9999));let i=yf(n,{czech:Xe(t.parameters,"czech")});return B("krovak",t,i,gf,Mf)}};function xf(t,e){var r=e.x,n=e.y,i=C(r-t.long0,t.over),o=t.x0+t.a*i,s=t.y0+t.a*Math.log(Math.tan(Math.PI/4+n/2.5))*1.25;return e.x=o,e.y=s,e}function _f(t,e){e.x-=t.x0,e.y-=t.y0;var r=C(t.long0+e.x/t.a,t.over),n=2.5*(Math.atan(Math.exp(.8*e.y/t.a))-Math.PI/4);return e.x=r,e.y=n,e}function Sf(t,e={}){let r={...t,...e};return r}var $s={name:"mill",aliases:["Miller_Cylindrical"],parameters:["lon_0","x_0","y_0"],create(t){let e=F(t),r=Sf(e);return B("mill",t,r,xf,_f)}};function kg(t){t.x0=t.x0!==void 0?t.x0:0,t.y0=t.y0!==void 0?t.y0:0,t.long0=t.long0!==void 0?t.long0:0}function wf(t,e){var r=e.x,n=e.y,i=C(r-t.long0,t.over),o=n,s=Math.PI*Math.sin(n);for(let h=0;h<50;h++){if(Math.abs(Math.abs(n)-Math.PI/2)<1e-10){o=Math.sign(n)*Math.PI;break}var a=-(o+Math.sin(o)-s)/(1+Math.cos(o));if(o+=a,h===49)throw new Error("Mollweide forward did not converge");if(Math.abs(a)<1e-10)break}o/=2,Math.PI/2-Math.abs(n)<1e-10&&(i=0);var c=.900316316158*t.a*i*Math.cos(o)+t.x0,l=1.4142135623731*t.a*Math.sin(o)+t.y0;return e.x=c,e.y=l,e}function Ef(t,e){var r,n;e.x-=t.x0,e.y-=t.y0,n=e.y/(1.4142135623731*t.a),Math.abs(n)>.999999999999&&(n=Math.sign(n)*.999999999999),r=Math.asin(n);var i=C(t.long0+e.x/(.900316316158*t.a*Math.cos(r)),t.over);!t.over&&i<-Math.PI&&(i=-Math.PI),!t.over&&i>Math.PI&&(i=Math.PI),n=(2*r+Math.sin(2*r))/Math.PI,Math.abs(n)>1&&(n=Math.sign(n));var o=Math.asin(n);return e.x=i,e.y=o,e}function Tf(t,e={}){let r={...t,...e};return kg(r),r}var Ys={name:"moll",aliases:["Mollweide"],parameters:["lon_0","x_0","y_0"],create(t){let e=F(t),r=Tf(e);return B("moll",t,r,wf,Ef)}};function Ug(t){t.A=[],t.A[1]=.6399175073,t.A[2]=-.1358797613,t.A[3]=.063294409,t.A[4]=-.02526853,t.A[5]=.0117879,t.A[6]=-.0055161,t.A[7]=.0026906,t.A[8]=-.001333,t.A[9]=67e-5,t.A[10]=-34e-5,t.B_re=[],t.B_im=[],t.B_re[1]=.7557853228,t.B_im[1]=0,t.B_re[2]=.249204646,t.B_im[2]=.003371507,t.B_re[3]=-.001541739,t.B_im[3]=.04105856,t.B_re[4]=-.10162907,t.B_im[4]=.01727609,t.B_re[5]=-.26623489,t.B_im[5]=-.36249218,t.B_re[6]=-.6870983,t.B_im[6]=-1.1651967,t.C_re=[],t.C_im=[],t.C_re[1]=1.3231270439,t.C_im[1]=0,t.C_re[2]=-.577245789,t.C_im[2]=-.007809598,t.C_re[3]=.508307513,t.C_im[3]=-.112208952,t.C_re[4]=-.15094762,t.C_im[4]=.18200602,t.C_re[5]=1.01418179,t.C_im[5]=1.64497696,t.C_re[6]=1.9660549,t.C_im[6]=2.5127645,t.D=[],t.D[1]=1.5627014243,t.D[2]=.5185406398,t.D[3]=-.03333098,t.D[4]=-.1052906,t.D[5]=-.0368594,t.D[6]=.007317,t.D[7]=.0122,t.D[8]=.00394,t.D[9]=-.0013}function bf(t,e){var r,n=e.x,i=e.y,o=i-t.lat0,s=n-t.long0,a=o/xs*1e-5,c=s,l=1,h=0;for(r=1;r<=10;r++)l=l*a,h=h+t.A[r]*l;var u=h,f=c,d=1,m=0,p,g,y=0,x=0;for(r=1;r<=6;r++)p=d*u-m*f,g=m*u+d*f,d=p,m=g,y=y+t.B_re[r]*d-t.B_im[r]*m,x=x+t.B_im[r]*d+t.B_re[r]*m;return e.x=x*t.a+t.x0,e.y=y*t.a+t.y0,e}function vf(t,e){var r,n=e.x,i=e.y,o=n-t.x0,s=i-t.y0,a=s/t.a,c=o/t.a,l=1,h=0,u,f,d=0,m=0;for(r=1;r<=6;r++)u=l*a-h*c,f=h*a+l*c,l=u,h=f,d=d+t.C_re[r]*l-t.C_im[r]*h,m=m+t.C_im[r]*l+t.C_re[r]*h;for(var p=0;p<t.iterations;p++){var g=d,y=m,x,S,_=a,w=c;for(r=2;r<=6;r++)x=g*d-y*m,S=y*d+g*m,g=x,y=S,_=_+(r-1)*(t.B_re[r]*g-t.B_im[r]*y),w=w+(r-1)*(t.B_im[r]*g+t.B_re[r]*y);g=1,y=0;var E=t.B_re[1],v=t.B_im[1];for(r=2;r<=6;r++)x=g*d-y*m,S=y*d+g*m,g=x,y=S,E=E+r*(t.B_re[r]*g-t.B_im[r]*y),v=v+r*(t.B_im[r]*g+t.B_re[r]*y);var T=E*E+v*v;d=(_*E+w*v)/T,m=(w*E-_*v)/T}var I=d,P=m,R=1,N=0;for(r=1;r<=9;r++)R=R*I,N=N+t.D[r]*R;var z=t.lat0+N*xs*1e5,O=t.long0+P;return e.x=O,e.y=z,e}function Pf(t,e={}){let r={...t,A:[],B_re:[],B_im:[],C_re:[],C_im:[],D:[],iterations:1,...e};return Ug(r),r}var Ks={name:"nzmg",aliases:["New_Zealand_Map_Grid"],parameters:["lon_0","x_0","y_0","lat_0","iterations"],create(t){let e=F(t),r=L(t.parameters,"iterations",1);if(!Number.isInteger(r)||r<0||r>10)throw new Error("NZMG iterations must be an integer from 0 to 10");if(!Object.prototype.hasOwnProperty.call(t.parameters,"lat_0")||!Object.prototype.hasOwnProperty.call(t.parameters,"lon_0"))throw new Error("NZMG requires lat_0 and lon_0");let n=Pf(e,{iterations:r});return B("nzmg",t,n,bf,vf)}};var ar=1e-7;function Vg(t){return t.no_uoff||t.no_off||["hotineobliquemercator","hotineobliquemercatorvarianta","hotineobliquemercatorazimuthnaturalorigin"].includes(t.projName.toLowerCase().replace(/[ _-]/g,""))}function jg(t){var e,r,n,i,o,s,a,c,l,h,u=0,f,d=0,m=0,p=0,g=0,y=0,x=0;t.k0||(t.k0=1),t.no_off=Vg(t),t.no_rot=t.no_rot;var S=!1;Number.isFinite(t.alpha)&&(S=!0);var _=!1;if(Number.isFinite(t.rectified_grid_angle)&&(_=!0),S&&(x=t.alpha),_&&(u=t.rectified_grid_angle,S||(x=0,S=!0)),S||_)d=t.longc;else if(m=t.long1,g=t.lat1,p=t.long2,y=t.lat2,Math.abs(g-y)<=ar||Math.abs(g)<=ar||Math.abs(Math.abs(g)-b)<=ar||Math.abs(Math.abs(t.lat0)-b)<=ar||Math.abs(Math.abs(y)-b)<=ar)throw new Error;var w=1-t.es;if(r=Math.sqrt(w),Math.abs(t.lat0)>1e-10?(c=Math.sin(t.lat0),n=Math.cos(t.lat0),e=1-t.es*c*c,t.B=n*n,t.B=Math.sqrt(1+t.es*t.B*t.B/w),t.A=t.B*t.k0*r/e,i=t.B*r/(n*Math.sqrt(e)),o=i*i-1,o<=0?o=0:(o=Math.sqrt(o),t.lat0<0&&(o=-o)),t.E=o+=i,t.E*=Math.pow(Ge(t.e,t.lat0,c),t.B)):(t.B=1/r,t.A=t.k0,t.E=i=o=1),S||_){S?(f=Math.asin(Math.sin(x)/i),_||(u=x)):(f=u,x=Math.asin(i*Math.sin(f)));let E=.5*(o-1/o)*Math.tan(f);i>1&&Math.abs(Math.cos(x))<=8*Number.EPSILON?E=Math.sign(t.lat0)*Math.sign(Math.sin(x)):Math.abs(E)>1&&Math.abs(E)<=1+8*Number.EPSILON&&(E=Math.sign(E)),t.lam0=d-Math.asin(E)/t.B}else s=Math.pow(Ge(t.e,g,Math.sin(g)),t.B),a=Math.pow(Ge(t.e,y,Math.sin(y)),t.B),o=t.E/s,l=(a-s)/(a+s),h=t.E*t.E,h=(h-a*s)/(h+a*s),e=m-p,e<-Math.PI?p-=Tt:e>Math.PI&&(p+=Tt),t.lam0=C(.5*(m+p)-Math.atan(h*Math.tan(.5*t.B*(m-p))/l)/t.B,t.over),f=Math.atan(2*Math.sin(t.B*C(m-t.lam0,t.over))/(o-1/o)),u=x=Math.asin(i*Math.sin(f));t.singam=Math.sin(f),t.cosgam=Math.cos(f),t.sinrot=Math.sin(u),t.cosrot=Math.cos(u),t.rB=1/t.B,t.ArB=t.A*t.rB,t.BrA=1/t.ArB,t.no_off?t.u_0=0:(t.u_0=Math.abs(t.ArB*Math.atan(Math.sqrt(i*i-1)/Math.cos(x))),t.lat0<0&&(t.u_0=-t.u_0)),o=.5*f,t.v_pole_n=t.ArB*Math.log(Math.tan(V-o)),t.v_pole_s=t.ArB*Math.log(Math.tan(V+o))}function Rf(t,e){var r=e,n,i,o,s,a,c,l,h;if(e.x=e.x-t.lam0,Math.abs(Math.abs(e.y)-b)>1e-10){if(a=t.E/Math.pow(Ge(t.e,e.y,Math.sin(e.y)),t.B),c=1/a,n=.5*(a-c),i=.5*(a+c),s=Math.sin(t.B*e.x),o=(n*t.singam-s*t.cosgam)/i,Math.abs(Math.abs(o)-1)<1e-10)throw new Error;h=.5*t.ArB*Math.log((1-o)/(1+o)),c=Math.cos(t.B*e.x),Math.abs(c)<ar?l=t.A*e.x:l=t.ArB*Math.atan2(n*t.cosgam+s*t.singam,c)}else h=e.y>0?t.v_pole_n:t.v_pole_s,l=t.ArB*e.y;return t.no_rot?(r.x=l,r.y=h):(l-=t.u_0,r.x=h*t.cosrot+l*t.sinrot,r.y=l*t.cosrot-h*t.sinrot),r.x=t.a*r.x+t.x0,r.y=t.a*r.y+t.y0,r}function Cf(t,e){var r,n,i,o,s,a,c,l=e;if(e.x=(e.x-t.x0)*(1/t.a),e.y=(e.y-t.y0)*(1/t.a),t.no_rot?(n=e.y,r=e.x):(n=e.x*t.cosrot-e.y*t.sinrot,r=e.y*t.cosrot+e.x*t.sinrot+t.u_0),i=Math.exp(-t.BrA*n),o=.5*(i-1/i),s=.5*(i+1/i),a=Math.sin(t.BrA*r),c=(a*t.cosgam+o*t.singam)/s,Math.abs(Math.abs(c)-1)<1e-10)l.x=0,l.y=c<0?-b:b;else{if(l.y=t.E/Math.sqrt((1+c)/(1-c)),l.y=Gt(t.e,Math.pow(l.y,1/t.B)),l.y===1/0)throw new Error;l.x=-t.rB*Math.atan2(o*t.cosgam-a*t.singam,Math.cos(t.BrA*r))}return l.x+=t.lam0,l}function Af(t,e={}){let r={...t,no_off:!1,no_rot:!1,alpha:NaN,rectified_grid_angle:NaN,longc:0,long1:0,long2:0,B:0,A:0,E:0,lam0:0,singam:0,cosgam:0,sinrot:0,cosrot:0,rB:0,ArB:0,BrA:0,u_0:0,v_pole_n:0,v_pole_s:0,no_uoff:!1,projName:"",...e};return jg(r),r}var Xs={name:"omerc",aliases:["Hotine_Oblique_Mercator","Hotine Oblique Mercator","Hotine_Oblique_Mercator_variant_A","Hotine_Oblique_Mercator_Variant_B","Hotine_Oblique_Mercator_Azimuth_Natural_Origin","Hotine_Oblique_Mercator_Two_Point_Natural_Origin","Hotine_Oblique_Mercator_Azimuth_Center","Oblique_Mercator"],parameters:["lon_0","x_0","y_0","lat_0","k","k_0","alpha","gamma","lonc","lon_1","lon_2","lat_1","lat_2","no_off","no_uoff","no_rot"],flags:["no_off","no_uoff","no_rot"],create(t){let e=F(t);if(Math.abs(e.lat0)>=Math.PI/2)throw new Error("Oblique Mercator origin must be away from the poles");let n=Object.prototype.hasOwnProperty.call(t.parameters,"alpha")||Object.prototype.hasOwnProperty.call(t.parameters,"gamma")?["lonc"]:["lon_1","lat_1","lon_2","lat_2"];for(let o of n)if(!Object.prototype.hasOwnProperty.call(t.parameters,o))throw new Error("Oblique Mercator requires "+o);let i=Af(e,{projName:t.parameters.proj||"omerc",alpha:L(t.parameters,"alpha",NaN)*Math.PI/180,rectified_grid_angle:L(t.parameters,"gamma",NaN)*Math.PI/180,longc:L(t.parameters,"lonc",0)*Math.PI/180,long1:L(t.parameters,"lon_1",0)*Math.PI/180,long2:L(t.parameters,"lon_2",0)*Math.PI/180,no_off:Xe(t.parameters,"no_off"),no_uoff:Xe(t.parameters,"no_uoff"),no_rot:Xe(t.parameters,"no_rot")});return B("omerc",t,i,Rf,Cf)}};function Wg(t){t.sin_p14=Math.sin(t.lat0||0),t.cos_p14=Math.cos(t.lat0||0)}function If(t,e){var r,n,i,o,s,a,c,l,h=e.x,u=e.y;return i=C(h-(t.long0||0),t.over),r=Math.sin(u),n=Math.cos(u),o=Math.cos(i),a=t.sin_p14*r+t.cos_p14*n*o,s=1,(a>0||Math.abs(a)<=1e-10)&&(c=(t.x0||0)+t.a*s*n*Math.sin(i),l=(t.y0||0)+t.a*s*(t.cos_p14*r-t.sin_p14*n*o)),e.x=c,e.y=l,e}function Nf(t,e){var r,n,i,o,s,a,c,l,h;if(e.x-=t.x0||0,e.y-=t.y0||0,r=Math.sqrt(e.x*e.x+e.y*e.y),r>t.a*(1+1e-14))throw new Error("Coordinate is outside the orthographic disk");return n=be(r/t.a),i=Math.sin(n),o=Math.cos(n),l=t.long0||0,h=t.lat0||0,a=l,Math.abs(r)<=1e-10?(c=h,e.x=a,e.y=c,e):(c=be(o*t.sin_p14+e.y*i*t.cos_p14/r),s=Math.abs(h)-b,Math.abs(s)<=1e-10?(h>=0?a=C(l+Math.atan2(e.x,-e.y),t.over):a=C(l-Math.atan2(-e.x,e.y),t.over),e.x=a,e.y=c,e):(a=C(l+Math.atan2(e.x*i,r*t.cos_p14*o-e.y*t.sin_p14*i),t.over),e.x=a,e.y=c,e))}function Of(t,e={}){let r={...t,sin_p14:0,cos_p14:0,...e};return Wg(r),r}var Zs={name:"ortho",aliases:[],parameters:["lon_0","x_0","y_0","lat_0"],create(t){let e=F(t),r=Of(e);return B("ortho",t,r,If,Nf,bt(e,0,!0))}};function Gf(t){return 1-.25*t*(1+t/16*(3+1.25*t))}function Lf(t){return .375*t*(1+.25*t*(1+.46875*t))}function qf(t){return .05859375*t*t*(1+.75*t)}function zf(t){return t*t*t*(35/3072)}function Gi(t,e,r,n,i){return t*i-e*Math.sin(2*i)+r*Math.sin(4*i)-n*Math.sin(6*i)}var Ff=20;function Hg(t){t.temp=t.b/t.a,t.es=1-Math.pow(t.temp,2),t.e=Math.sqrt(t.es),t.e0=Gf(t.es),t.e1=Lf(t.es),t.e2=qf(t.es),t.e3=zf(t.es),t.ml0=t.a*Gi(t.e0,t.e1,t.e2,t.e3,t.lat0)}function Bf(t,e){var r=e.x,n=e.y,i,o,s,a=C(r-t.long0,t.over);if(s=a*Math.sin(n),t.sphere)Math.abs(n)<=1e-10?(i=t.a*a,o=-1*t.a*t.lat0):(i=t.a*Math.sin(s)/Math.tan(n),o=t.a*(Ze(n-t.lat0)+(1-Math.cos(s))/Math.tan(n)));else if(Math.abs(n)<=1e-10)i=t.a*a,o=-1*t.ml0;else{var c=Hr(t.a,t.e,Math.sin(n))/Math.tan(n);i=c*Math.sin(s),o=t.a*Gi(t.e0,t.e1,t.e2,t.e3,n)-t.ml0+c*(1-Math.cos(s))}return e.x=i+t.x0,e.y=o+t.y0,e}function Df(t,e){var r,n,i,o,s,a,c,l,h;if(i=e.x-t.x0,o=e.y-t.y0,t.sphere)if(Math.abs(o+t.a*t.lat0)<=1e-10)r=C(i/t.a+t.long0,t.over),n=0;else{a=t.lat0+o/t.a,c=i*i/t.a/t.a+a*a,l=a;var u;for(s=Ff;s;--s)if(u=Math.tan(l),h=-1*(a*(l*u+1)-l-.5*(l*l+c)*u)/((l-a)/u-1),l+=h,Math.abs(h)<=1e-10){n=l;break}r=C(t.long0+Math.asin(i*Math.tan(l)/t.a)/Math.sin(n),t.over)}else if(Math.abs(o+t.ml0)<=1e-10)n=0,r=C(t.long0+i/t.a,t.over);else{a=(t.ml0+o)/t.a,c=i*i/t.a/t.a+a*a,l=a;var f,d,m,p,g;for(s=Ff;s;--s)if(g=t.e*Math.sin(l),f=Math.sqrt(1-g*g)*Math.tan(l),d=t.a*Gi(t.e0,t.e1,t.e2,t.e3,l),m=t.e0-2*t.e1*Math.cos(2*l)+4*t.e2*Math.cos(4*l)-6*t.e3*Math.cos(6*l),p=d/t.a,h=(a*(f*p+1)-p-.5*f*(p*p+c))/(t.es*Math.sin(2*l)*(p*p+c-2*a*p)/(4*f)+(a-p)*(f*m-2/Math.sin(2*l))-m),l-=h,Math.abs(h)<=1e-10){n=l;break}f=Math.sqrt(1-t.es*Math.pow(Math.sin(n),2))*Math.tan(n),r=C(t.long0+Math.asin(i*f/t.a)/Math.sin(n),t.over)}return e.x=r,e.y=n,e}function kf(t,e={}){let r={...t,temp:0,e0:0,e1:0,e2:0,e3:0,ml0:0,...e};return Hg(r),r}var Qs={name:"poly",aliases:["Polyconic","American_Polyconic"],parameters:["lon_0","x_0","y_0","lat_0"],create(t){let e=F(t),r=kf(e);return B("poly",t,r,Bf,Df)}};var Q={FRONT:1,RIGHT:2,BACK:3,LEFT:4,TOP:5,BOTTOM:6},W={AREA_0:1,AREA_1:2,AREA_2:3,AREA_3:4};function $g(t){t.x0=t.x0||0,t.y0=t.y0||0,t.lat0=t.lat0||0,t.long0=t.long0||0,t.lat_ts=t.lat_ts||0,t.lat0>=b-V/2?t.face=Q.TOP:t.lat0<=-(b-V/2)?t.face=Q.BOTTOM:Math.abs(t.long0)<=V?t.face=Q.FRONT:Math.abs(t.long0)<=b+V?t.face=t.long0>0?Q.RIGHT:Q.LEFT:t.face=Q.BACK,t.es!==0&&(t.one_minus_f=1-(t.a-t.b)/t.a,t.one_minus_f_squared=t.one_minus_f*t.one_minus_f)}function Uf(t,e){var r=e,n,i,o,s,a,c,l=0;if(e.x-=t.long0,t.es!==0?n=Math.atan(t.one_minus_f_squared*Math.tan(e.y)):n=e.y,i=e.x,t.face===Q.TOP)s=b-n,i>=V&&i<=b+V?(l=W.AREA_0,o=i-b):i>b+V||i<=-(b+V)?(l=W.AREA_1,o=i>0?i-Z:i+Z):i>-(b+V)&&i<=-V?(l=W.AREA_2,o=i+b):(l=W.AREA_3,o=i);else if(t.face===Q.BOTTOM)s=b+n,i>=V&&i<=b+V?(l=W.AREA_0,o=-i+b):i<V&&i>=-V?(l=W.AREA_1,o=-i):i<-V&&i>=-(b+V)?(l=W.AREA_2,o=-i-b):(l=W.AREA_3,o=i>0?-i+Z:-i-Z);else{var h,u,f,d,m,p,g;t.face===Q.RIGHT?i=cr(i,+b):t.face===Q.BACK?i=cr(i,+Z):t.face===Q.LEFT&&(i=cr(i,-b)),d=Math.sin(n),m=Math.cos(n),p=Math.sin(i),g=Math.cos(i),h=m*g,u=m*p,f=d,t.face===Q.FRONT?(s=Math.acos(h),o=Li(s,f,u)):t.face===Q.RIGHT?(s=Math.acos(u),o=Li(s,f,-h)):t.face===Q.BACK?(s=Math.acos(-h),o=Li(s,f,-u)):t.face===Q.LEFT?(s=Math.acos(-u),o=Li(s,f,h)):s=o=0,Math.abs(o)<=V?l=W.AREA_0:o>V&&o<=b+V?(l=W.AREA_1,o-=b):o>b+V||o<=-(b+V)?(l=W.AREA_2,o=o>=0?o-Z:o+Z):(l=W.AREA_3,o+=b)}return c=Math.atan(12/Z*(o+Math.acos(Math.sin(o)*Math.cos(V))-b)),a=Math.sqrt((1-Math.cos(s))/(Math.cos(c)*Math.cos(c))/(1-Math.cos(Math.atan(1/Math.cos(o))))),l===W.AREA_1?c+=b:l===W.AREA_2?c+=Z:l===W.AREA_3&&(c+=1.5*Z),r.x=a*Math.cos(c),r.y=a*Math.sin(c),r.x=r.x*t.a+t.x0,r.y=r.y*t.a+t.y0,e}function Vf(t,e){var r=0,n=0,i,o,s,a,c,l,h,u,f,d=0;if(e.x=(e.x-t.x0)/t.a,e.y=(e.y-t.y0)/t.a,o=Math.atan(Math.sqrt(e.x*e.x+e.y*e.y)),i=Math.atan2(e.y,e.x),e.x>=0&&e.x>=Math.abs(e.y)?d=W.AREA_0:e.y>=0&&e.y>=Math.abs(e.x)?(d=W.AREA_1,i-=b):e.x<0&&-e.x>=Math.abs(e.y)?(d=W.AREA_2,i=i<0?i+Z:i-Z):(d=W.AREA_3,i+=b),f=Z/12*Math.tan(i),c=Math.sin(f)/(Math.cos(f)-1/Math.sqrt(2)),l=Math.atan(c),s=Math.cos(i),a=Math.tan(o),h=1-s*s*a*a*(1-Math.cos(Math.atan(1/Math.cos(l)))),h<-1?h=-1:h>1&&(h=1),t.face===Q.TOP)u=Math.acos(h),n=b-u,d===W.AREA_0?r=l+b:d===W.AREA_1?r=l<0?l+Z:l-Z:d===W.AREA_2?r=l-b:r=l;else if(t.face===Q.BOTTOM)u=Math.acos(h),n=u-b,d===W.AREA_0?r=-l+b:d===W.AREA_1?r=-l:d===W.AREA_2?r=-l-b:r=l<0?-l-Z:-l+Z;else{var m,p,g;m=h,f=m*m,f>=1?g=0:g=Math.sqrt(1-f)*Math.sin(l),f+=g*g,f>=1?p=0:p=Math.sqrt(1-f),d===W.AREA_1?(f=p,p=-g,g=f):d===W.AREA_2?(p=-p,g=-g):d===W.AREA_3&&(f=p,p=g,g=-f),t.face===Q.RIGHT?(f=m,m=-p,p=f):t.face===Q.BACK?(m=-m,p=-p):t.face===Q.LEFT&&(f=m,m=p,p=-f),n=Math.acos(-g)-b,r=Math.atan2(p,m),t.face===Q.RIGHT?r=cr(r,-b):t.face===Q.BACK?r=cr(r,-Z):t.face===Q.LEFT&&(r=cr(r,+b))}if(t.es!==0){var y,x,S;y=n<0?1:0,x=Math.tan(n),S=t.b/Math.sqrt(x*x+t.one_minus_f_squared),n=Math.atan(Math.sqrt(t.a*t.a-S*S)/(t.one_minus_f*S)),y&&(n=-n)}return r+=t.long0,e.x=r,e.y=n,e}function Li(t,e,r){return t<1e-10?0:Math.atan2(e,r)}function cr(t,e){var r=t+e;return r<-Z?r+=Tt:r>+Z&&(r-=Tt),r}function jf(t,e={}){let r={...t,face:0,one_minus_f:0,one_minus_f_squared:0,...e};return $g(r),r}var Js={name:"qsc",aliases:["Quadrilateralized Spherical Cube","Quadrilateralized_Spherical_Cube"],parameters:["lon_0","x_0","y_0","lat_0"],create(t){let e=F(t),r=jf(e);return B("qsc",t,r,Uf,Vf)}};var lr=[[1,22199e-21,-715515e-10,31103e-10],[.9986,-482243e-9,-24897e-9,-13309e-10],[.9954,-83103e-8,-448605e-10,-986701e-12],[.99,-.00135364,-59661e-9,36777e-10],[.9822,-.00167442,-449547e-11,-572411e-11],[.973,-.00214868,-903571e-10,18736e-12],[.96,-.00305085,-900761e-10,164917e-11],[.9427,-.00382792,-653386e-10,-26154e-10],[.9216,-.00467746,-10457e-8,481243e-11],[.8962,-.00536223,-323831e-10,-543432e-11],[.8679,-.00609363,-113898e-9,332484e-11],[.835,-.00698325,-640253e-10,934959e-12],[.7986,-.00755338,-500009e-10,935324e-12],[.7597,-.00798324,-35971e-9,-227626e-11],[.7186,-.00851367,-701149e-10,-86303e-10],[.6732,-.00986209,-199569e-9,191974e-10],[.6213,-.010418,883923e-10,624051e-11],[.5722,-.00906601,182e-6,624051e-11],[.5322,-.00677797,275608e-9,624051e-11]],vt=[[-520417e-23,.0124,121431e-23,-845284e-16],[.062,.0124,-126793e-14,422642e-15],[.124,.0124,507171e-14,-160604e-14],[.186,.0123999,-190189e-13,600152e-14],[.248,.0124002,710039e-13,-224e-10],[.31,.0123992,-264997e-12,835986e-13],[.372,.0124029,988983e-12,-311994e-12],[.434,.0123893,-369093e-11,-435621e-12],[.4958,.0123198,-102252e-10,-345523e-12],[.5571,.0121916,-154081e-10,-582288e-12],[.6176,.0119938,-241424e-10,-525327e-12],[.6769,.011713,-320223e-10,-516405e-12],[.7346,.0113541,-397684e-10,-609052e-12],[.7903,.0109107,-489042e-10,-104739e-11],[.8435,.0103431,-64615e-9,-140374e-14],[.8936,.00969686,-64636e-9,-8547e-9],[.9394,.00840947,-192841e-9,-42106e-10],[.9761,.00616527,-256e-6,-42106e-10],[1,.00328947,-319159e-9,-42106e-10]];lr=lr.map(t=>t.map(Math.fround));vt=vt.map(t=>t.map(Math.fround));var Wf=.8487,Hf=1.3523,$f=ys/5,Yg=1/$f,zt=18,qi=function(t,e){return t[0]+e*(t[1]+e*(t[2]+e*t[3]))},Kg=function(t,e){return t[1]+e*(2*t[2]+e*3*t[3])};function Xg(t,e,r,n,i){for(var o=r;i;--i){var s=(qi(t,o)-e)/Kg(t,o);if(o-=s,Math.abs(s)<n)break}return o}function Zg(t){t.x0=t.x0||0,t.y0=t.y0||0,t.long0=t.long0||0,t.es=0}function Yf(t,e){var r=C(e.x-t.long0,t.over),n=Math.abs(e.y),i=Math.floor(n*$f+1e-15);i<0?i=0:i>=zt&&(i=zt),n=ys*(n-Yg*i);var o=qi(lr[i],n)*r,s=qi(vt[i],n);return e.y<0&&(s=-s),e.x=o*t.a*Wf+t.x0,e.y=s*t.a*Hf+t.y0,e}function Kf(t,e){var r=e.y,n=e;n.x=(n.x-t.x0)/(t.a*Wf),n.y=Math.abs(r-t.y0)/(t.a*Hf);for(let a=0;a<=zt;a++)if(Math.abs(n.y-vt[a][0])<=8*Number.EPSILON)return n.x=C(n.x/lr[a][0]+t.long0,t.over),n.y=(r<t.y0?-1:1)*a*5*Ms,n;if(n.y>=1)n.x/=lr[zt][0],n.y=r<0?-b:b;else{var i=Math.floor(n.y*zt);for(i<0?i=0:i>=zt&&(i=zt-1);;)if(vt[i][0]>n.y)--i;else if(vt[i+1][0]<=n.y)++i;else break;var o=vt[i],s=5*(n.y-o[0])/(vt[i+1][0]-o[0]);s=Xg(o,n.y,s,1e-10,100),n.x/=qi(lr[i],s),n.y=(5*i+s)*Ms,r<0&&(n.y=-n.y)}return n.x=C(n.x+t.long0,t.over),n}function Xf(t,e={}){let r={...t,...e};return Zg(r),r}var ea={name:"robin",aliases:["Robinson"],parameters:["lon_0","x_0","y_0"],create(t){let e=F(t),r=Xf(e);return B("robin",t,r,Yf,Kf)}};var ta={name:"sinu",aliases:["Sinusoidal"],parameters:["lon_0","x_0","y_0"],create(t){let e=F(t),r=Ku(e);return B("sinu",t,r,Ii,Ni)}};function Qg(t){t.k0||(t.k0=1);var e=t.lat0;t.lambda0=t.long0;var r=Math.sin(e),n=t.a,i=t.rf,o=1/i,s=2*o-Math.pow(o,2);t.e=Math.sqrt(s);var a=t.e;t.R=t.k0*n*Math.sqrt(1-s)/(1-s*Math.pow(r,2)),t.alpha=Math.sqrt(1+s/(1-s)*Math.pow(Math.cos(e),4)),t.b0=Math.asin(r/t.alpha);var c=Math.log(Math.tan(Math.PI/4+t.b0/2)),l=Math.log(Math.tan(Math.PI/4+e/2)),h=Math.log((1+a*r)/(1-a*r));t.K=c-t.alpha*l+t.alpha*a/2*h}function Zf(t,e){var r=Math.log(Math.tan(Math.PI/4-e.y/2)),n=t.e/2*Math.log((1+t.e*Math.sin(e.y))/(1-t.e*Math.sin(e.y))),i=-t.alpha*(r+n)+t.K,o=2*(Math.atan(Math.exp(i))-Math.PI/4),s=t.alpha*(e.x-t.lambda0),a=Math.atan(Math.sin(s)/(Math.sin(t.b0)*Math.tan(o)+Math.cos(t.b0)*Math.cos(s))),c=Math.asin(Math.cos(t.b0)*Math.sin(o)-Math.sin(t.b0)*Math.cos(o)*Math.cos(s));return e.y=t.R/2*Math.log((1+Math.sin(c))/(1-Math.sin(c)))+t.y0,e.x=t.R*a+t.x0,e}function Qf(t,e){for(var r=e.x-t.x0,n=e.y-t.y0,i=r/t.R,o=2*(Math.atan(Math.exp(n/t.R))-Math.PI/4),s=Math.asin(Math.cos(t.b0)*Math.sin(o)+Math.sin(t.b0)*Math.cos(o)*Math.cos(i)),a=Math.atan(Math.sin(i)/(Math.cos(t.b0)*Math.cos(i)-Math.sin(t.b0)*Math.tan(o))),c=t.lambda0+a/t.alpha,l=0,h=s,u=-1e3,f=0;Math.abs(h-u)>1e-7;){if(++f>20)return;l=1/t.alpha*(Math.log(Math.tan(Math.PI/4+s/2))-t.K)+t.e*Math.log(Math.tan(Math.PI/4+Math.asin(t.e*Math.sin(h))/2)),u=h,h=2*Math.atan(Math.exp(l))-Math.PI/2}return e.x=c,e.y=h,e}function Jf(t,e={}){let r={...t,lambda0:0,rf:0,R:0,alpha:0,b0:0,K:0,...e};return Qg(r),r}var ra={name:"somerc",aliases:[],parameters:["lon_0","x_0","y_0","lat_0","k","k_0"],create(t){let e=F(t),r=Jf(e,{rf:e.a===e.b?1/0:1/(1-e.b/e.a)});return B("somerc",t,r,Zf,Qf)}};var ge={N_POLE:0,S_POLE:1,EQUIT:2,OBLIQ:3};function Jg(t){if(Math.abs(Math.abs(t.lat0)-b)<1e-10?t.mode=t.lat0<0?ge.S_POLE:ge.N_POLE:Math.abs(t.lat0)<1e-10?t.mode=ge.EQUIT:(t.mode=ge.OBLIQ,t.sinph0=Math.sin(t.lat0),t.cosph0=Math.cos(t.lat0)),t.pn1=t.h/t.a,t.pn1<=0||t.pn1>1e10)throw new Error("Invalid height");t.p=1+t.pn1,t.rp=1/t.p,t.h1=1/t.pn1,t.pfact=(t.p+1)*t.h1,t.es=0;var e=t.tilt,r=t.azi;t.cg=Math.cos(r),t.sg=Math.sin(r),t.cw=Math.cos(e),t.sw=Math.sin(e)}function e0(t,e){e.x-=t.long0;var r=Math.sin(e.y),n=Math.cos(e.y),i=Math.cos(e.x),o,s;switch(t.mode){case ge.OBLIQ:s=t.sinph0*r+t.cosph0*n*i;break;case ge.EQUIT:s=n*i;break;case ge.S_POLE:s=-r;break;case ge.N_POLE:s=r;break}switch(s=t.pn1/(t.p-s),o=s*n*Math.sin(e.x),t.mode){case ge.OBLIQ:s*=t.cosph0*r-t.sinph0*n*i;break;case ge.EQUIT:s*=r;break;case ge.N_POLE:s*=-(n*i);break;case ge.S_POLE:s*=n*i;break}var a,c;return a=s*t.cg+o*t.sg,c=1/(a*t.sw*t.h1+t.cw),o=(o*t.cg-s*t.sg)*t.cw*c,s=a*c,e.x=o*t.a,e.y=s*t.a,e}function t0(t,e){e.x/=t.a,e.y/=t.a;var r=e.x,n=e.y,i,o,s;s=1/(t.pn1-e.y*t.sw),i=t.pn1*e.x*s,o=t.pn1*e.y*t.cw*s,e.x=i*t.cg+o*t.sg,e.y=o*t.cg-i*t.sg;var a=oe(e.x,e.y);if(Math.abs(a)<1e-10)r=0,n=t.lat0;else{var c,l;switch(l=1-a*a*t.pfact,l=(t.p-Math.sqrt(l))/(t.pn1/a+a/t.pn1),c=Math.sqrt(1-l*l),t.mode){case ge.OBLIQ:n=Math.asin(c*t.sinph0+e.y*l*t.cosph0/a),e.y=(c-t.sinph0*Math.sin(n))*a,e.x*=l*t.cosph0;break;case ge.EQUIT:n=Math.asin(e.y*l/a),e.y=c*a,e.x*=l;break;case ge.N_POLE:n=Math.asin(c),e.y=-e.y;break;case ge.S_POLE:n=-Math.asin(c);break}r=Math.atan2(e.x,e.y)}return e.x=r+t.long0,e.y=n,e}function r0(t,e={}){let r={...t,mode:0,sinph0:0,cosph0:0,pn1:0,h:0,p:0,rp:0,h1:0,pfact:0,tilt:0,azi:0,cg:0,sg:0,cw:0,sw:0,...e};return Jg(r),r}var na={name:"tpers",aliases:["Tilted_Perspective"],parameters:["lon_0","x_0","y_0","lat_0","h","tilt","azi"],create(t){let e=F(t),r=L(t.parameters,"h",1e5),n=L(t.parameters,"tilt",0)*Math.PI/180,i=L(t.parameters,"azi",0)*Math.PI/180;if(Math.abs(n)>=Math.PI/2)throw new Error("Perspective tilt must be between -90 and 90 degrees");let o=r0(e,{h:r,tilt:n,azi:i});return B("tpers",t,o,e0,t0,bt(e,1/(1+r/e.a)))}};function e2(t){t.R=t.a}function n0(t,e){var r=e.x,n=e.y,i=C(r-t.long0,t.over),o,s;if(Math.abs(n)<=1e-10)return o=t.x0+t.R*i,s=t.y0,e.x=o,e.y=s,e;var a=be(2*Math.abs(n/Math.PI));if(Math.abs(i)<=1e-10||Math.abs(Math.abs(n)-b)<=1e-10)return o=t.x0,n>=0?s=t.y0+Math.PI*t.R*Math.tan(.5*a):s=t.y0+Math.PI*t.R*-Math.tan(.5*a),e.x=o,e.y=s,e;var c=.5*Math.abs(Math.PI/i-i/Math.PI),l=c*c,h=Math.sin(a),u=Math.cos(a),f=u/(h-2*Math.sin(a/2)**2),d=f*f,m=f*(2/h-1),p=m*m,g=Math.sqrt(l*(f-p)*(f-p)-(p+l)*(d-p)),y=Math.PI*t.R*(p-d)/(g-c*(f-p));i<0&&(y=-y),o=t.x0+y;var x=l+f;return y=Math.PI*t.R*(l*(2*f-1)+d)/(m*x+c*Math.sqrt((p+l)*(l+1)-x*x)),n>=0?s=t.y0+y:s=t.y0-y,e.x=o,e.y=s,e}function i0(t,e){var r,n,i,o,s,a,c,l,h,u,f,d,m;return e.x-=t.x0,e.y-=t.y0,Math.abs(e.y)<1e-10?(e.x=C(t.long0+e.x/t.R,t.over),e.y=0,e):(f=Math.PI*t.R,i=e.x/f,o=e.y/f,s=i*i+o*o,a=-Math.abs(o)*(1+s),c=a-2*o*o+i*i,l=-2*a+1+2*o*o+s*s,m=o*o/l+(2*c*c*c/l/l/l-9*a*c/l/l)/27,h=(a-c*c/3/l)/l,u=2*Math.sqrt(-h/3),f=3*m/h/u,Math.abs(f)>1&&(f>=0?f=1:f=-1),d=Math.acos(f)/3,e.y>=0?n=(-u*Math.cos(d+Math.PI/3)-c/3/l)*Math.PI:n=-(-u*Math.cos(d+Math.PI/3)-c/3/l)*Math.PI,Math.abs(i)<1e-10?r=t.long0:r=C(t.long0+2*Math.PI*i/(Math.sqrt(1+2*(i*i-o*o)+s*s)+1-s),t.over),e.x=r,e.y=n,e)}function o0(t,e={}){let r={...t,R:0,...e};return e2(r),r}var ia={name:"vandg",aliases:["Van_der_Grinten_I","VanDerGrinten","Van_der_Grinten"],parameters:["lon_0","x_0","y_0"],create(t){let e=F(t),r=o0(e);return B("vandg",t,r,n0,i0)}};var s0=["o_proj","o_alpha","o_lon_c","o_lat_c","o_lon_p","o_lat_p","o_lon_1","o_lat_1","o_lon_2","o_lat_2"],oa=t=>t.toLowerCase().replace(/[ _-]/g,""),sa=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),Qe=(t,e)=>L(t,e,0)*Math.PI/180;function t2(t){let e=[["o_alpha","o_lon_c","o_lat_c"],["o_lat_p","o_lon_p"],["o_lon_1","o_lat_1","o_lon_2","o_lat_2"]],r=e.find(c=>c.some(l=>sa(t,l)));if(!r)throw new Error("Oblique transformation requires a rotation parameter set");for(let c of r){if(!sa(t,c))throw new Error("Oblique transformation requires "+c);if(c.includes("lat")&&Math.abs(Qe(t,c))>Math.PI/2)throw new Error("Invalid rotation latitude: "+c)}if(r===e[0]){let c=Qe(t,"o_alpha"),l=Qe(t,"o_lon_c"),h=Qe(t,"o_lat_c");if(Math.abs(h)>=Math.PI/2-1e-10)throw new Error("Rotation center must be away from the poles");return{lamp:l+Math.atan2(-Math.cos(c),-Math.sin(c)*Math.sin(h)),phip:Math.asin(Math.cos(h)*Math.sin(c))}}if(r===e[1])return{lamp:Qe(t,"o_lon_p"),phip:Qe(t,"o_lat_p")};let n=Qe(t,"o_lon_1"),i=Qe(t,"o_lat_1"),o=Qe(t,"o_lon_2"),s=Qe(t,"o_lat_2");if(Math.abs(i)>=Math.PI/2-1e-10||Math.abs(s)>=Math.PI/2-1e-10||Math.abs(i)<1e-10||Math.abs(i-s)<1e-10)throw new Error("Invalid new-equator reference points");let a=Math.atan2(Math.cos(i)*Math.sin(s)*Math.cos(n)-Math.sin(i)*Math.cos(s)*Math.cos(o),Math.sin(i)*Math.cos(s)*Math.sin(o)-Math.cos(i)*Math.sin(s)*Math.sin(n));return{lamp:a,phip:Math.atan(-Math.cos(a-n)/Math.tan(i))}}function zi(t){let e=t==="longlat";if(!e&&["obtran","geocent"].includes(oa(t.name)))throw new Error("Cannot wrap a composite or geocentric projection");return{name:"ob_tran",aliases:["General Oblique Transformation","General_Oblique_Transformation"],parameters:[...s0,"lon_0",...e?[]:t.parameters],flags:e?[]:t.flags,create(r){let{parameters:n}=r,i=n.o_proj,o=e?["longlat","latlong","lonlat","latlon","identity"]:[t.name,...t.aliases||[]];if(i&&!o.map(oa).includes(oa(i)))throw new Oe("missing-plugin","Oblique transformation dependency does not match +o_proj="+i);let{lamp:s,phip:a}=t2(n),c=Math.cos(a),l=Math.sin(a),h=Math.abs(a)>1e-10,u=Qe(n,"lon_0"),f=sa(n,"over"),d={...n,proj:e?"longlat":i||t.name,lon_0:"0"};for(let x of s0)delete d[x];let m=e?Ue(x=>{x.x*=180/Math.PI,x.y*=180/Math.PI},x=>{x.x*=Math.PI/180,x.y*=Math.PI/180}):t.create({...r,parameters:Object.freeze(d)}),p=mt(m,!1),g=mt(m,!0),y=x=>Math.asin(Math.max(-1,Math.min(1,x)));return Ue(x=>{let S=x.x,_=x.y,w=f?S-u:Ve(S-u),E=Math.cos(w),v=Math.sin(_),T=Math.cos(_),I=Ve(Math.atan2(T*Math.sin(w),h?l*T*E+c*v:v)+s),P=y(h?l*v-c*T*E:-T*E);x.x=I,x.y=P,p(x)},x=>{g(x);let S=x.x,_=x.y,w=S-s,E=Math.cos(w),v=Math.sin(_),T=Math.cos(_),I=Math.atan2(T*Math.sin(w),h?l*T*E-c*v:-v),P=y(h?l*v+c*T*E:T*E);x.x=Ve(I+u),x.y=P})}}}function J(t){if(!t||typeof t!="object"||Array.isArray(t))throw new Error("Expected a CRS object");return t}function Zr(t){return Array.isArray(t)?t:[]}function Me(t){return String(t||"").toLowerCase().replace(/[^a-z0-9]/g,"")}function qe(t){if(typeof t!="number"||!Number.isFinite(t))throw new Error("Expected a finite CRS parameter");return t}function ve(t,e){if(t===void 0)return e;if(typeof t=="object"){let i=qe(J(t).conversion_factor);if(i<=0)throw new Error("Unit conversion factor must be positive");return i}let n={metre:1,meter:1,degree:te,radian:1,grad:Math.PI/200,gon:Math.PI/200,foot:.3048,ussurveyfoot:1200/3937,kilometre:1e3,arcsecond:te/3600,partspermillion:1e-6,unity:1}[Me(t)];return n||D("Unsupported CRS unit: "+String(t)),n}var r2={hotineobliquemercator:"omerc",hotineobliquemercatorvarianta:"omerc",hotineobliquemercatorvariantb:"omerc",hotineobliquemercatorazimuthnaturalorigin:"omerc",hotineobliquemercatorazimuthcenter:"omerc",obliquemercator:"omerc",krovak:"krovak",krovaknorthorientated:"krovak",quadrilateralizedsphericalcube:"qsc",transversemercator:"tmerc",transversemercatorsouthorientated:"unsupported-south-tmerc",mercator:"merc",mercator1sp:"merc",mercator2sp:"merc",mercatorvarianta:"merc",mercatorvariantb:"merc",mercatorauxiliarysphere:"webmerc",popularvisualisationpseudomercator:"webmerc",lambertconformalconic:"lcc",lambertconformalconic1sp:"lcc",lambertconformalconic2sp:"lcc",lambertconicconformal1sp:"lcc",lambertconicconformal2sp:"lcc",albers:"aea",albersconicequalarea:"aea",albersequalarea:"aea",equidistantconic:"eqdc",lambertazimuthalequalarea:"laea",stereographic:"stere",stereographicnorthpole:"sterea",stereographicsouthpole:"stere",polarstereographic:"stere",polarstereographicvarianta:"stere",polarstereographicvariantb:"stere",obliquestereographic:"sterea",doublestereographic:"sterea",azimuthalequidistant:"aeqd",modifiedazimuthalequidistant:"aeqd",equidistantcylindrical:"eqc",equidistantcylindricalspherical:"eqc",equirectangular:"eqc",platecarree:"eqc",bonne:"bonne",cassinisoldner:"cass",cassini:"cass",cylindricalequalarea:"cea",lambertcylindricalequalarea:"cea",eckertvi:"eck6",equalearth:"eqearth",millercylindrical:"mill",mollweide:"moll",robinson:"robin",sinusoidal:"sinu",vandergrinten:"vandg",vandergrinteni:"vandg",gnomonic:"gnom",orthographic:"ortho",polyconic:"poly",americanpolyconic:"poly",newzealandmapgrid:"nzmg",gaussschreibertransversemercator:"gstmerc"},n2={centralmeridian:"lon_0",longitudeoforigin:"lon_0",longitudeofcenter:"lon_0",longitudeofnaturalorigin:"lon_0",longitudeoffalseorigin:"lon_0",longitudeofprojectioncentre:"lon_0",straightverticalpolelongitude:"lon_0",longitudeoforiginmeridian:"lon_0",latitudeoforigin:"lat_0",latitudeofcenter:"lat_0",latitudeofnaturalorigin:"lat_0",latitudeoffalseorigin:"lat_0",latitudeofprojectioncentre:"lat_0",standardparallel1:"lat_1",latitudeof1ststandardparallel:"lat_1",standardparallel2:"lat_2",latitudeof2ndstandardparallel:"lat_2",latitudeofstandardparallel:"lat_ts",scalefactor:"k_0",scalefactoratnaturalorigin:"k_0",scalefactoratprojectionorigin:"k_0",falseeasting:"x_0",falsenorthing:"y_0",eastingatfalseorigin:"x_0",northingatfalseorigin:"y_0"},i2={omerc:{longitudeofcenter:"lonc",longitudeofprojectioncentre:"lonc",azimuth:"alpha",azimuthatprojectioncentre:"alpha",rectifiedgridangle:"gamma",anglefromrectifiedtoskewgrid:"gamma",scalefactoratprojectioncentre:"k_0",eastingatprojectioncentre:"x_0",northingatprojectioncentre:"y_0"},krovak:{azimuth:"alpha",colatitudeofconeaxis:"alpha",pseudostandardparallel1:"lat_ts",latitudeofpseudostandardparallel:"lat_ts",scalefactoronpseudostandardparallel:"k_0"}},o2={east:"e",west:"w",north:"n",south:"s",up:"u",down:"d",geocentricx:"e",geocentricy:"n",geocentricz:"u"};function Ft(t,e){let r=String(t.type);if(r==="CompoundCRS"){e.mode!=="horizontal"&&D("CompoundCRS requires explicit horizontal extraction");let v=Zr(t.components).map(J).filter(T=>["ProjectedCRS","GeographicCRS","GeodeticCRS","BoundCRS"].includes(String(T.type)));if(v.length!==1)throw new Error("CompoundCRS requires exactly one horizontal component");return{...Ft(v[0],e),lossy:!0}}if(r==="BoundCRS"){let v=Ft(J(t.source_crs),e),T=Ft(J(t.target_crs),e);(T.parameters.datum!=="WGS84"||!["longlat","geocent"].includes(T.parameters.proj)||Number(T.parameters.pm||0)!==0||T.parameters.towgs84||Number(T.parameters.a)!==6378137||!(Math.abs(Number(T.parameters.rf)-298.257223563)<=1e-9||Math.abs(Number(T.parameters.b)-6356752314245179e-9)<=1e-6))&&D("BoundCRS requires a WGS84 target");let I=J(t.transformation),P=Me(J(I.method).name),R=P==="geocentrictranslations"||/^geocentrictranslationsgeog[23]ddomain$/.test(P),N=/^positionvector(?:transformation)?(?:geog[23]ddomain|geocentricdomain)?$/.test(P),z=/^coordinateframe(?:rotation)?(?:geog[23]ddomain|geocentricdomain)?$/.test(P);!R&&!N&&!z&&D("Unsupported BoundCRS transformation: "+P);let O=["xaxistranslation","yaxistranslation","zaxistranslation","xaxisrotation","yaxisrotation","zaxisrotation","scaledifference"],k=new Array(R?3:7).fill(void 0);for(let Pe of Zr(I.parameters)){let ze=J(Pe),re=O.indexOf(Me(ze.name));(re<0||re>=k.length||k[re]!==void 0)&&D("Unsupported or duplicate Helmert parameter: "+String(ze.name));let lt=re<3?1:re<6?te/3600:1e-6;k[re]=qe(ze.value)*ve(ze.unit,lt)/lt*(z&&re>=3&&re<6?-1:1)}if(k.some(Pe=>Pe===void 0))throw new Error("Incomplete BoundCRS Helmert transformation");let U={...v.parameters,towgs84:k.join(",")};return delete U.datum,{...v,parameters:U}}["ProjectedCRS","GeographicCRS","GeodeticCRS"].includes(r)||D("Unsupported CRS type: "+r);let n=r==="ProjectedCRS"?J(t.base_crs):t,i=J(n.datum||n.datum_ensemble);(i.type==="DynamicGeodeticReferenceFrame"||i.frame_reference_epoch!==void 0||t.coordinate_epoch!==void 0)&&D("Time-dependent datum transformations are not implemented");let o=J(i.ellipsoid),s=qe(o.semi_major_axis??o.radius),a={proj:"longlat",a:String(s*ve(o.unit,1))};if(o.inverse_flattening!==void 0)a.rf=String(qe(o.inverse_flattening));else if(o.semi_minor_axis!==void 0)a.b=String(qe(o.semi_minor_axis)*ve(o.unit,1));else if(o.radius!==void 0)a.b=a.a;else throw new Error("Ellipsoid requires inverse flattening or semi-minor axis");let c=nr(e),l=String(i.name||""),h=Me(l),u=Object.keys(c),f=u.find(v=>Nt(v)===Nt(l)),d=f?[f]:u.filter(v=>Me(v)===h||Me(v)===h.replace(/^d/,"")),m=d[0],p=c[m];if(p&&d.some(v=>{let T=c[v];return T.ellipse!==p.ellipse||T.towgs84!==p.towgs84||T.nadgrids!==p.nadgrids}))throw new Error("Ambiguous structured datum name: "+l);if(h&&(a.datum=m||l),m&&Nt(m)==="wgs84"&&(a.datum="WGS84"),m&&["nad83","northamericandatum1983"].includes(Nt(m))&&(a.datum="NAD83"),!m){["wgs84","worldgeodeticsystem1984","worldgeodeticsystem1984ensemble","dwgs1984","wgs1984"].includes(h)&&(a.datum="WGS84"),["nad83","northamericandatum1983","dnorthamerican1983"].includes(h)&&(a.datum="NAD83"),["nad27","northamericandatum1927","dnorthamerican1927"].includes(h)&&(a.datum="NAD27");let T={newzealand1949:"nzgd49",belge1972:"rnb72"}[h.replace(/^d/,"")];T&&(a.datum=T)}if(r==="ProjectedCRS"&&n.id){let v=J(n.id),T=String(v.authority)+"_"+String(v.code);Object.prototype.hasOwnProperty.call(c,T)&&(a.datum=T)}i.towgs84!==void 0&&(a.towgs84=Zr(i.towgs84).map(qe).join(","),delete a.datum);let g=t.coordinate_system?J(t.coordinate_system):{},y=Zr(g.axis).map(J),x=Me(g.subtype)==="cartesian"&&r==="GeodeticCRS";r!=="ProjectedCRS"&&!x&&g.subtype&&Me(g.subtype)!=="ellipsoidal"&&D("Unsupported coordinate system subtype"),x&&(a.proj="geocent");let S=ve(n.angular_unit,te),_=ve(y[0]?.unit,r==="ProjectedCRS"||x?1:S);y[1]&&ve(y[1].unit,_)!==_&&D("Mixed horizontal axis units are not supported"),x&&y[2]&&ve(y[2].unit,_)!==_&&D("Mixed geocentric axis units are not supported");let w=n.prime_meridian||i.prime_meridian;if(w){let v=J(w);a.pm=String(qe(v.longitude)*ve(v.unit,S)/te)}if(r==="ProjectedCRS"){let v=J(t.conversion),T=Me(J(v.method).name),I=Zr(v.parameters).map(J),P=T==="stereographicnorthpole"&&!I.some(O=>Me(O.name).startsWith("scalefactor")),R=P?"stere":r2[T],N=I.filter(O=>["xscale","yscale","xyplanerotation"].includes(Me(O.name)));if(N.length){let O={xscale:-1,yscale:1,xyplanerotation:90};(R!=="krovak"||N.length!==3||new Set(N.map(k=>Me(k.name))).size!==3||N.some(k=>{let U=Me(k.name),Pe=U==="xyplanerotation"?ve(k.unit,S)/te:ve(k.unit,1);return Math.abs(qe(k.value)*Pe-O[U])>1e-10}))&&D("Unsupported ESRI Krovak axis adjustment")}(!R||R.startsWith("unsupported"))&&D("Unsupported projection method: "+String(J(v.method).name)),a.proj=R==="webmerc"?"merc":R;let z=!1;for(let O of I){let k=Me(O.name);if(N.includes(O)||k==="auxiliaryspheretype"&&R==="webmerc"&&O.value===0)continue;if(k==="semiminor"&&R==="webmerc"){if(z)throw new Error("Duplicate conversion parameter: semi_minor");z=!0;let lt=qe(O.value)*ve(O.unit,1);Math.abs(lt-Number(a.a))>4*Number.EPSILON*Number(a.a)&&D("Pseudo-Mercator semi_minor must equal the semi-major axis");continue}let U=i2[R]?.[k]||n2[k];if(U||D("Unsupported conversion parameter: "+String(O.name)),U==="lat_1"&&T==="stereographicnorthpole"&&!P?U="lat_0":U==="lat_1"&&["merc","webmerc","eqc","stere","cea"].includes(R)&&(U="lat_ts"),a[U]!==void 0)throw new Error("Duplicate conversion parameter: "+U);if(["merc","webmerc"].includes(R)&&U==="lat_0"&&O.value===0)continue;let Pe=U.startsWith("lat")||U.startsWith("lon")||U==="alpha"||U==="gamma",ze=U==="x_0"||U==="y_0",re=qe(O.value)*ve(O.unit,Pe?S:ze?_:1)/(Pe?te:1);U.startsWith("lat")&&Math.abs(Math.abs(re)-90)<=4*Number.EPSILON*90&&(re=Math.sign(re)*90),a[U]=String(re)}if(R==="omerc"&&["hotineobliquemercator","hotineobliquemercatorvarianta","hotineobliquemercatorazimuthnaturalorigin"].includes(T)&&(a.no_uoff=void 0),R==="omerc"&&a.lon_0!==void 0&&a.lonc!==void 0&&(Math.abs(Number(a.lon_0)-Number(a.lonc))>1e-10&&D("Oblique Mercator central meridian conflicts with projection centre"),delete a.lon_0),T==="stereographicnorthpole"&&Math.abs(Number(a.lat_0))===90&&(a.proj="stere"),R==="lcc"&&a.lat_1===void 0&&(a.lat_1=a.lat_0),T==="polarstereographic"&&a.lat_0!==void 0){if(a.lat_ts!==void 0)throw new Error("Duplicate polar stereographic latitude of true scale");a.lat_ts=a.lat_0,delete a.lat_0}R==="stere"&&(T.includes("polar")||T==="stereographicsouthpole"||P)&&a.lat_0===void 0&&(a.lat_0=Number(a.lat_ts||90)<0?"-90":"90"),R==="webmerc"&&(a.b=a.a,delete a.rf,a.nadgrids="@null")}let E=y.map(v=>s2(v,a,r==="ProjectedCRS")).join("");return E.length===2&&(E+="u"),!x&&/[ud]/.test(E.slice(0,2))&&D("Structured CRS vertical-first axes require an explicit PROJ axis definition"),E&&(a.axis=E),(r==="ProjectedCRS"||x)&&(a.to_meter=String(_)),{parameters:a,angularUnit:r==="ProjectedCRS"||x?S:_,verticalUnit:x?1:ve(y[2]?.unit,1)}}function s2(t,e,r){let n=String(t.direction),i=t.meridian,o=/^(north|south) along ([+-]?(?:\d+(?:\.\d*)?|\.\d+)) deg(?: (east|west))?$/i.exec(n);if(o){if(i!==void 0)throw new Error("Duplicate axis meridian");n=o[1],i={longitude:Number(o[2])*(o[3]?.toLowerCase()==="west"?-1:1)}}if(i!==void 0){let a=Number(e.lat_0),c=a===90;(!r||e.proj!=="stere"||Math.abs(a)!==90||Me(n)!==(c?"south":"north"))&&D("Axis meridians require an outward-facing polar stereographic axis");let l=J(i).longitude,h=typeof l=="number"?qe(l):qe(J(l).value)*ve(J(l).unit,te)/te,u=qe((h-Number(e.lon_0||0))/90);Math.abs(u-Math.round(u))>1e-12&&D("Non-cardinal axis meridians require an orientation operation");let f=(Math.round(u)%4+4)%4;return(c?"senw":"nesw")[f]}let s=o2[Me(n)];return s||D("Unsupported axis direction: "+n),s}function Fi(t,...e){return t.values.filter(r=>r.type==="node"&&e.includes(r.keyword.toUpperCase()))}function X(t,...e){return Fi(t,...e)[0]}function ee(t,e=0){let r=t.values[e];return r&&r.type!=="node"?r.value:void 0}function Bt(t){return t?{name:ee(t),conversion_factor:ee(t,1)}:void 0}function a2(t,e){let r=ee(t,1);if(e&&String(r).toLowerCase()==="unknown"){let n=String(ee(t)).toLowerCase(),i=/^(easting|northing|westing|southing)(?:\s*\([a-z]\))?$/.exec(n);if(i)return{easting:"east",northing:"north",westing:"west",southing:"south"}[i[1]]}return r}function c2(t){let e=X(t,"MERIDIAN");if(e)return{longitude:{value:ee(e),unit:Bt(X(e,"ANGLEUNIT"))}}}function a0(t){let e=X(t,"METHOD","PROJECTION");if(!e)throw new Error("WKT conversion requires a METHOD or PROJECTION");return X(t,"PARAMETERFILE")&&D("Grid-based WKT operation is not implemented"),{method:{name:ee(e)},parameters:Fi(t,"PARAMETER").map(r=>({name:ee(r),value:ee(r,1),unit:Bt(X(r,"ANGLEUNIT","LENGTHUNIT","SCALEUNIT"))}))}}function Qr(t){let e=t.keyword.toUpperCase();if(e==="COMPD_CS"||e==="COMPOUNDCRS")return{type:"CompoundCRS",components:Fi(t,"PROJCS","PROJCRS","GEOGCS","GEOGCRS","GEODCRS","BOUNDCRS","VERT_CS","VERTCRS").map(Qr)};if(e==="BOUNDCRS"){let h=X(t,"SOURCECRS"),u=X(t,"TARGETCRS"),f=X(t,"ABRIDGEDTRANSFORMATION");if(!h||!u||!f)throw new Error("Incomplete WKT BoundCRS");let d=g=>{let y=g.values.find(x=>x.type==="node");if(!y)throw new Error("Missing bound CRS component");return y},m=a0(f),p=m.parameters;for(let g of p)String(g.name).toLowerCase()==="scale difference"&&g.unit===void 0&&(g.value=(Number(g.value)-1)*1e6);return{type:"BoundCRS",source_crs:Qr(d(h)),target_crs:Qr(d(u)),transformation:m}}if(["VERT_CS","VERTCRS"].includes(e))return{type:"VerticalCRS"};let r=["PROJCS","PROJCRS","PROJECTEDCRS"].includes(e),n=["GEOGCS","GEOGCRS","GEODCRS","GEODETICCRS","GEOGRAPHICCRS","BASEGEOGCRS","BASEGEODCRS","GEOCCS"].includes(e);!r&&!n&&D("Unsupported WKT CRS: "+e),X(t,"DYNAMIC","DERIVINGCONVERSION","VELOCITYGRID","EXTENSION")&&D("Unsupported WKT dynamic/extension operation");let i=X(t,"CS"),o=e==="GEOCCS"||String(ee(i||t)).toLowerCase()==="cartesian"&&!r,s=X(t,r||o?"LENGTHUNIT":"ANGLEUNIT","UNIT"),a=Fi(t,"AXIS").sort((h,u)=>Number(ee(X(h,"ORDER")||h))-Number(ee(X(u,"ORDER")||u))).map((h,u)=>({name:ee(h),direction:e==="GEOCCS"?["geocentricX","geocentricY","geocentricZ"][u]:a2(h,r),unit:Bt(X(h,"ANGLEUNIT","LENGTHUNIT")||(!o&&!r&&/^(up|down)$/i.test(String(ee(h,1)))?void 0:s)),meridian:c2(h)}));if(!a.length)for(let h of o?["geocentricX","geocentricY","geocentricZ"]:["east","north"])a.push({name:h,direction:h,unit:Bt(s),meridian:void 0});let c=e==="GEOGCS"?void 0:X(t,"ID"),l={type:r?"ProjectedCRS":o?"GeodeticCRS":"GeographicCRS",name:ee(t),id:c?{authority:ee(c),code:ee(c,1)}:void 0,coordinate_system:{subtype:r||o?"Cartesian":"ellipsoidal",axis:a}};if(r){let h=X(t,"GEOGCS","BASEGEOGCRS","BASEGEODCRS","GEODCRS","GEOGCRS");if(!h)throw new Error("Projected WKT requires a base geographic CRS");l.base_crs=Qr(h),l.conversion=a0(X(t,"CONVERSION")||t)}else{let h=X(t,"DATUM","GEODETICDATUM","ENSEMBLE");if(!h)throw new Error("WKT requires a geodetic datum");X(h,"EXTENSION","DYNAMIC")&&D("Unsupported datum extension");let u=X(h,"SPHEROID","ELLIPSOID");if(!u)throw new Error("WKT datum requires an ellipsoid");let f=X(h,"TOWGS84");l.datum={name:ee(h),ellipsoid:{name:ee(u),semi_major_axis:ee(u,1),inverse_flattening:ee(u,2),unit:Bt(X(u,"LENGTHUNIT"))},towgs84:f?.values.map((m,p)=>ee(f,p))};let d=X(t,"PRIMEM");d&&(l.prime_meridian={name:ee(d),longitude:ee(d,1),unit:Bt(X(d,"ANGLEUNIT")||(o?void 0:s))}),l.angular_unit=o?void 0:Bt(s)}return l}var aa={name:"wkt",canParse:t=>Se(t)==="wkt",parse(t,e){if(typeof t!="string")throw new Error("Expected serialized WKT");return Ft(Qr(Or(t).root),e)}};var ca={name:"projjson",canParse:t=>Se(t)==="projjson",parse:(t,e)=>Ft(J(t),e)};var la=1e-12;function Bi(t,e,r,n,i=!1){let o=(e-t.origin[0])/t.step[0],s=(r-t.origin[1])/t.step[1],a=t.size[0],c=t.size[1];if(!i&&(o<-1e-10||s<-1e-10||o>a-1+1e-10||s>c-1+1e-10))return!1;o=Math.max(0,Math.min(a-1,o)),s=Math.max(0,Math.min(c-1,s));let l=Math.min(a-2,Math.floor(o)),h=Math.min(c-2,Math.floor(s)),u=o-l,f=s-h,d=0,m=0;for(let p=0;p<4;p++){let g=p%2,y=p>1,x=(g?u:1-u)*(y?f:1-f);if(x===0)continue;let S=((h+(y?1:0))*a+l+g)*2,_=t.shifts[S],w=t.shifts[S+1];if(!Number.isFinite(_)||!Number.isFinite(w))return!1;d+=x*_,m+=x*w}return n.x=d,n.y=m,!0}function l2(t,e,r,n,i){if(!n)return Bi(t,e,r,i)?(i.x+=e,i.y+=r,!0):!1;for(let a=0;a<2;a++){let c=a===0?e:r;if(c<t.origin[a]-t.maxShift[a]-la||c>t.origin[a]+(t.size[a]-1)*t.step[a]+t.maxShift[a]+la)return!1}if(!Bi(t,e,r,i,!0))return!1;let o=e-i.x,s=r-i.y;for(let a=0;a<20;a++){if(!Bi(t,o,s,i,!0))return!1;let c=e-o-i.x,l=r-s-i.y;if(o+=c,s+=l,Math.max(Math.abs(c),Math.abs(l))<=la)return Bi(t,o,s,i)?(i.x=Ve(o),i.y=s,!0):!1}throw new Error("Inverse datum grid shift did not converge")}function c0(t){if(!t.length)throw new Error("Datum grid requires at least one subgrid");let e=t.map(i=>{let[o,s]=i.size;if(![o,s].every(c=>Number.isSafeInteger(c)&&c>=2)||o*s*2!==i.shifts.length||!i.origin.every(Number.isFinite)||!i.step.every(c=>Number.isFinite(c)&&c>0))throw new Error("Invalid datum subgrid geometry or node count");let a=[0,0];for(let c=0;c<i.shifts.length;c++){let l=i.shifts[c];Number.isFinite(l)&&(a[c%2]=Math.max(a[c%2],Math.abs(l)))}return{...i,maxShift:a}}),r=(i,o)=>{let s=i.x,a=i.y;if(!Number.isFinite(s)||!Number.isFinite(a))throw new Error("Grid coordinates must be finite");for(let c of e)if(l2(c,-s,a,o,i))return i.x=-i.x,!0;return i.x=s,i.y=a,!1},n={x:NaN,y:NaN};return Object.freeze({subgridCount:e.length,shiftInPlace:r,shift(i,o,s){return n.x=i,n.y=o,r(n,s)?[n.x,n.y]:void 0}})}var hr=Math.PI/648e3;function ha(t,e={}){let r=new DataView(t);if(r.byteLength<176)throw new Error("Truncated NTv2 overview header");let n=r.getInt32(8,!0)===11;if(!n&&r.getInt32(8,!1)!==11)throw new Error("Invalid NTv2 header or byte order");let i=u=>r.getInt32(u,n),o=u=>r.getFloat64(u,n),s=u=>String.fromCharCode(...new Uint8Array(t,u,8)).replace(/\0/g,"").trim();if(s(0)!=="NUM_OREC"||i(24)!==11||s(56)!=="SECONDS")throw new Error("Unsupported NTv2 header or shift units");let a=i(40),c=e.includeErrorFields===!1?8:16;if(a<1||a>Math.floor((r.byteLength-176)/(176+4*c)))throw new Error("Invalid NTv2 subgrid count");let l=176,h=[];for(let u=0;u<a;u++){if(l+176>r.byteLength)throw new Error("Truncated NTv2 subgrid header");let f=o(l+72),d=o(l+88),m=o(l+104),p=o(l+120),g=o(l+136),y=o(l+152),x=i(l+168),S=1+(p-m)/y,_=1+(d-f)/g;if(![S,_].every(T=>Number.isFinite(T)&&T>=2&&Math.abs(T-Math.round(T))<1e-7)||!(y>0&&g>0)||x!==Math.round(S)*Math.round(_))throw new Error("Invalid NTv2 subgrid dimensions");let w=l+176,E=w+x*c;if(E>r.byteLength)throw new Error("Truncated NTv2 node records");let v=new Float64Array(x*2);for(let T=0;T<x;T++)v[T*2]=r.getFloat32(w+T*c+4,n)*hr,v[T*2+1]=r.getFloat32(w+T*c,n)*hr;h.push({origin:[m*hr,f*hr],step:[y*hr,g*hr],size:[Math.round(S),Math.round(_)],shifts:v}),l=E}return c0(h)}var Di={ch1903:{towgs84:"674.374,15.056,405.346",ellipse:"bessel",datumName:"swiss"},ggrs87:{towgs84:"-199.87,74.79,246.62",ellipse:"GRS80",datumName:"Greek_Geodetic_Reference_System_1987"},nad27:{nadgrids:"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat",ellipse:"clrk66",datumName:"North_American_Datum_1927"},potsdam:{towgs84:"598.1,73.7,418.2,0.202,0.045,-2.455,6.7",ellipse:"bessel",datumName:"Potsdam Rauenberg 1950 DHDN"},carthage:{towgs84:"-263.0,6.0,431.0",ellipse:"clrk80ign",datumName:"Carthage 1934 Tunisia"},hermannskogel:{towgs84:"577.326,90.129,463.919,5.137,1.474,5.297,2.4232",ellipse:"bessel",datumName:"Hermannskogel"},mgi:{towgs84:"577.326,90.129,463.919,5.137,1.474,5.297,2.4232",ellipse:"bessel",datumName:"Militar-Geographische Institut"},osni52:{towgs84:"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",ellipse:"airy",datumName:"Irish National"},ire65:{towgs84:"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",ellipse:"mod_airy",datumName:"Ireland 1965"},rassadiran:{towgs84:"-133.63,-157.5,-158.62",ellipse:"intl",datumName:"Rassadiran"},nzgd49:{towgs84:"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993",ellipse:"intl",datumName:"New Zealand Geodetic Datum 1949"},osgb36:{towgs84:"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894",ellipse:"airy",datumName:"Ordnance Survey of Great Britain 1936"},s_jtsk:{towgs84:"589,76,480",ellipse:"bessel",datumName:"S-JTSK (Ferro)"},beduaram:{towgs84:"-106,-87,188",ellipse:"clrk80",datumName:"Beduaram"},gunung_segara:{towgs84:"-403,684,41",ellipse:"bessel",datumName:"Gunung Segara Jakarta"},rnb72:{towgs84:"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1",ellipse:"intl",datumName:"Reseau National Belge 1972"},EPSG_5451:{towgs84:"6.41,-49.05,-11.28,1.5657,0.5242,6.9718,-5.7649"},IGNF_LURESG:{towgs84:"-192.986,13.673,-39.309,-0.4099,-2.9332,2.6881,0.43"},EPSG_4614:{towgs84:"-119.4248,-303.65872,-11.00061,1.164298,0.174458,1.096259,3.657065"},EPSG_4615:{towgs84:"-494.088,-312.129,279.877,-1.423,-1.013,1.59,-0.748"},ESRI_37241:{towgs84:"-76.822,257.457,-12.817,2.136,-0.033,-2.392,-0.031"},ESRI_37249:{towgs84:"-440.296,58.548,296.265,1.128,10.202,4.559,-0.438"},ESRI_37245:{towgs84:"-511.151,-181.269,139.609,1.05,2.703,1.798,3.071"},EPSG_4178:{towgs84:"24.9,-126.4,-93.2,-0.063,-0.247,-0.041,1.01"},EPSG_4622:{towgs84:"-472.29,-5.63,-304.12,0.4362,-0.8374,0.2563,1.8984"},EPSG_4625:{towgs84:"126.93,547.94,130.41,-2.7867,5.1612,-0.8584,13.8227"},EPSG_5252:{towgs84:"0.023,0.036,-0.068,0.00176,0.00912,-0.01136,0.00439"},EPSG_4314:{towgs84:"597.1,71.4,412.1,0.894,0.068,-1.563,7.58"},EPSG_4282:{towgs84:"-178.3,-316.7,-131.5,5.278,6.077,10.979,19.166"},EPSG_4231:{towgs84:"-83.11,-97.38,-117.22,0.005693,-0.044698,0.044285,0.1218"},EPSG_4274:{towgs84:"-230.994,102.591,25.199,0.633,-0.239,0.9,1.95"},EPSG_4134:{towgs84:"-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.71006"},EPSG_4254:{towgs84:"18.38,192.45,96.82,0.056,-0.142,-0.2,-0.0013"},EPSG_4159:{towgs84:"-194.513,-63.978,-25.759,-3.4027,3.756,-3.352,-0.9175"},EPSG_4687:{towgs84:"0.072,-0.507,-0.245,0.0183,-0.0003,0.007,-0.0093"},EPSG_4227:{towgs84:"-83.58,-397.54,458.78,-17.595,-2.847,4.256,3.225"},EPSG_4746:{towgs84:"599.4,72.4,419.2,-0.062,-0.022,-2.723,6.46"},EPSG_4745:{towgs84:"612.4,77,440.2,-0.054,0.057,-2.797,2.55"},EPSG_6311:{towgs84:"8.846,-4.394,-1.122,-0.00237,-0.146528,0.130428,0.783926"},EPSG_4289:{towgs84:"565.7381,50.4018,465.2904,-0.395026,0.330772,-1.876073,4.07244"},EPSG_4230:{towgs84:"-68.863,-134.888,-111.49,-0.53,-0.14,0.57,-3.4"},EPSG_4154:{towgs84:"-123.02,-158.95,-168.47"},EPSG_4156:{towgs84:"570.8,85.7,462.8,4.998,1.587,5.261,3.56"},EPSG_4299:{towgs84:"482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15"},EPSG_4179:{towgs84:"33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84"},EPSG_4313:{towgs84:"-106.8686,52.2978,-103.7239,0.3366,-0.457,1.8422,-1.2747"},EPSG_4194:{towgs84:"163.511,127.533,-159.789"},EPSG_4195:{towgs84:"105,326,-102.5"},EPSG_4196:{towgs84:"-45,417,-3.5"},EPSG_4611:{towgs84:"-162.619,-276.959,-161.764,0.067753,-2.243648,-1.158828,-1.094246"},EPSG_4633:{towgs84:"137.092,131.66,91.475,-1.9436,-11.5993,-4.3321,-7.4824"},EPSG_4641:{towgs84:"-408.809,366.856,-412.987,1.8842,-0.5308,2.1655,-121.0993"},EPSG_4643:{towgs84:"-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7002"},EPSG_4300:{towgs84:"482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15"},EPSG_4188:{towgs84:"482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15"},EPSG_4660:{towgs84:"982.6087,552.753,-540.873,6.681627,-31.611492,-19.848161,16.805"},EPSG_4662:{towgs84:"97.295,-263.247,310.882,-1.5999,0.8386,3.1409,13.3259"},EPSG_3906:{towgs84:"577.88891,165.22205,391.18289,4.9145,-0.94729,-13.05098,7.78664"},EPSG_4307:{towgs84:"-209.3622,-87.8162,404.6198,0.0046,3.4784,0.5805,-1.4547"},EPSG_6892:{towgs84:"-76.269,-16.683,68.562,-6.275,10.536,-4.286,-13.686"},EPSG_4690:{towgs84:"221.597,152.441,176.523,2.403,1.3893,0.884,11.4648"},EPSG_4691:{towgs84:"218.769,150.75,176.75,3.5231,2.0037,1.288,10.9817"},EPSG_4629:{towgs84:"72.51,345.411,79.241,-1.5862,-0.8826,-0.5495,1.3653"},EPSG_4630:{towgs84:"165.804,216.213,180.26,-0.6251,-0.4515,-0.0721,7.4111"},EPSG_4692:{towgs84:"217.109,86.452,23.711,0.0183,-0.0003,0.007,-0.0093"},EPSG_9333:{towgs84:"0,0,0,-0.008393,0.000749,-0.010276,0"},EPSG_9059:{towgs84:"0,0,0"},EPSG_4312:{towgs84:"601.705,84.263,485.227,4.7354,1.3145,5.393,-2.3887"},EPSG_4123:{towgs84:"-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496"},EPSG_4309:{towgs84:"-124.45,183.74,44.64,-0.4384,0.5446,-0.9706,-2.1365"},ESRI_104106:{towgs84:"-283.088,-70.693,117.445,-1.157,0.059,-0.652,-4.058"},EPSG_4281:{towgs84:"-219.247,-73.802,269.529"},EPSG_4322:{towgs84:"0,0,4.5"},EPSG_4324:{towgs84:"0,0,1.9"},EPSG_4284:{towgs84:"43.822,-108.842,-119.585,1.455,-0.761,0.737,0.549"},EPSG_4277:{towgs84:"446.448,-125.157,542.06,0.15,0.247,0.842,-20.489"},EPSG_4207:{towgs84:"-282.1,-72.2,120,-1.529,0.145,-0.89,-4.46"},EPSG_4688:{towgs84:"347.175,1077.618,2623.677,33.9058,-70.6776,9.4013,186.0647"},EPSG_4689:{towgs84:"410.793,54.542,80.501,-2.5596,-2.3517,-0.6594,17.3218"},EPSG_4720:{towgs84:"0,0,4.5"},EPSG_4273:{towgs84:"278.3,93,474.5,7.889,0.05,-6.61,6.21"},EPSG_4240:{towgs84:"204.64,834.74,293.8"},EPSG_4817:{towgs84:"278.3,93,474.5,7.889,0.05,-6.61,6.21"},ESRI_104131:{towgs84:"426.62,142.62,460.09,4.98,4.49,-12.42,-17.1"},EPSG_4265:{towgs84:"-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68"},EPSG_4263:{towgs84:"-111.92,-87.85,114.5,1.875,0.202,0.219,0.032"},EPSG_4298:{towgs84:"-689.5937,623.84046,-65.93566,-0.02331,1.17094,-0.80054,5.88536"},EPSG_4270:{towgs84:"-253.4392,-148.452,386.5267,0.15605,0.43,-0.1013,-0.0424"},EPSG_4229:{towgs84:"-121.8,98.1,-10.7"},EPSG_4220:{towgs84:"-55.5,-348,-229.2"},EPSG_4214:{towgs84:"12.646,-155.176,-80.863"},EPSG_4232:{towgs84:"-345,3,223"},EPSG_4238:{towgs84:"-1.977,-13.06,-9.993,0.364,0.254,0.689,-1.037"},EPSG_4168:{towgs84:"-170,33,326"},EPSG_4131:{towgs84:"199,931,318.9"},EPSG_4152:{towgs84:"-0.9102,2.0141,0.5602,0.029039,0.010065,0.010101,0"},EPSG_5228:{towgs84:"572.213,85.334,461.94,4.9732,1.529,5.2484,3.5378"},EPSG_8351:{towgs84:"485.021,169.465,483.839,7.786342,4.397554,4.102655,0"},EPSG_4683:{towgs84:"-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06"},EPSG_4133:{towgs84:"0,0,0"},EPSG_7373:{towgs84:"0.819,-0.5762,-1.6446,-0.00378,-0.03317,0.00318,0.0693"},EPSG_9075:{towgs84:"-0.9102,2.0141,0.5602,0.029039,0.010065,0.010101,0"},EPSG_9072:{towgs84:"-0.9102,2.0141,0.5602,0.029039,0.010065,0.010101,0"},EPSG_9294:{towgs84:"1.16835,-1.42001,-2.24431,-0.00822,-0.05508,0.01818,0.23388"},EPSG_4212:{towgs84:"-267.434,173.496,181.814,-13.4704,8.7154,7.3926,14.7492"},EPSG_4191:{towgs84:"-44.183,-0.58,-38.489,2.3867,2.7072,-3.5196,-8.2703"},EPSG_4237:{towgs84:"52.684,-71.194,-13.975,-0.312,-0.1063,-0.3729,1.0191"},EPSG_4740:{towgs84:"-1.08,-0.27,-0.9"},EPSG_4124:{towgs84:"419.3836,99.3335,591.3451,0.850389,1.817277,-7.862238,-0.99496"},EPSG_5681:{towgs84:"584.9636,107.7175,413.8067,1.1155,0.2824,-3.1384,7.9922"},EPSG_4141:{towgs84:"23.772,17.49,17.859,-0.3132,-1.85274,1.67299,-5.4262"},EPSG_4204:{towgs84:"-85.645,-273.077,-79.708,2.289,-1.421,2.532,3.194"},EPSG_4319:{towgs84:"226.702,-193.337,-35.371,-2.229,-4.391,9.238,0.9798"},EPSG_4200:{towgs84:"24.82,-131.21,-82.66"},EPSG_4130:{towgs84:"0,0,0"},EPSG_4127:{towgs84:"-82.875,-57.097,-156.768,-2.158,1.524,-0.982,-0.359"},EPSG_4149:{towgs84:"674.374,15.056,405.346"},EPSG_4617:{towgs84:"-0.991,1.9072,0.5129,0.02579,0.00965,0.01166,0"},EPSG_4663:{towgs84:"-210.502,-66.902,-48.476,2.094,-15.067,-5.817,0.485"},EPSG_4664:{towgs84:"-211.939,137.626,58.3,-0.089,0.251,0.079,0.384"},EPSG_4665:{towgs84:"-105.854,165.589,-38.312,-0.003,-0.026,0.024,-0.048"},EPSG_4666:{towgs84:"631.392,-66.551,481.442,1.09,-4.445,-4.487,-4.43"},EPSG_4756:{towgs84:"-192.873,-39.382,-111.202,-0.00205,-0.0005,0.00335,0.0188"},EPSG_4723:{towgs84:"-179.483,-69.379,-27.584,-7.862,8.163,6.042,-13.925"},EPSG_4726:{towgs84:"8.853,-52.644,180.304,-0.393,-2.323,2.96,-24.081"},EPSG_4267:{towgs84:"-8.0,160.0,176.0"},EPSG_5365:{towgs84:"-0.16959,0.35312,0.51846,0.03385,-0.16325,0.03446,0.03693"},EPSG_4218:{towgs84:"304.5,306.5,-318.1"},EPSG_4242:{towgs84:"-33.722,153.789,94.959,-8.581,-4.478,4.54,8.95"},EPSG_4216:{towgs84:"-292.295,248.758,429.447,4.9971,2.99,6.6906,1.0289"},ESRI_104105:{towgs84:"631.392,-66.551,481.442,1.09,-4.445,-4.487,-4.43"},ESRI_104129:{towgs84:"0,0,0"},EPSG_4673:{towgs84:"174.05,-25.49,112.57"},EPSG_4202:{towgs84:"-124,-60,154"},EPSG_4203:{towgs84:"-117.763,-51.51,139.061,0.292,0.443,0.277,-0.191"},EPSG_3819:{towgs84:"595.48,121.69,515.35,4.115,-2.9383,0.853,-3.408"},EPSG_8694:{towgs84:"-93.799,-132.737,-219.073,-1.844,0.648,-6.37,-0.169"},EPSG_4145:{towgs84:"275.57,676.78,229.6"},EPSG_4283:{towgs84:"0.06155,-0.01087,-0.04019,0.039492,0.032722,0.032898,-0.009994"},EPSG_4317:{towgs84:"2.3287,-147.0425,-92.0802,-0.309248,0.324822,0.497299,5.689063"},EPSG_4272:{towgs84:"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993"},EPSG_4248:{towgs84:"-307.7,265.3,-363.5"},EPSG_5561:{towgs84:"24,-121,-76"},EPSG_5233:{towgs84:"-0.293,766.95,87.713,0.195704,1.695068,3.473016,-0.039338"},ESRI_104130:{towgs84:"-86,-98,-119"},ESRI_104102:{towgs84:"682,-203,480"},ESRI_37207:{towgs84:"7,-10,-26"},EPSG_4675:{towgs84:"59.935,118.4,-10.871"},ESRI_104109:{towgs84:"-89.121,-348.182,260.871"},ESRI_104112:{towgs84:"-185.583,-230.096,281.361"},ESRI_104113:{towgs84:"25.1,-275.6,222.6"},IGNF_WGS72G:{towgs84:"0,12,6"},IGNF_NTFG:{towgs84:"-168,-60,320"},IGNF_EFATE57G:{towgs84:"-127,-769,472"},IGNF_PGP50G:{towgs84:"324.8,153.6,172.1"},IGNF_REUN47G:{towgs84:"94,-948,-1262"},IGNF_CSG67G:{towgs84:"-186,230,110"},IGNF_GUAD48G:{towgs84:"-467,-16,-300"},IGNF_TAHI51G:{towgs84:"162,117,154"},IGNF_TAHAAG:{towgs84:"65,342,77"},IGNF_NUKU72G:{towgs84:"84,274,65"},IGNF_PETRELS72G:{towgs84:"365,194,166"},IGNF_WALL78G:{towgs84:"253,-133,-127"},IGNF_MAYO50G:{towgs84:"-382,-59,-262"},IGNF_TANNAG:{towgs84:"-139,-967,436"},IGNF_IGN72G:{towgs84:"-13,-348,292"},IGNF_ATIGG:{towgs84:"1118,23,66"},IGNF_FANGA84G:{towgs84:"150.57,158.33,118.32"},IGNF_RUSAT84G:{towgs84:"202.13,174.6,-15.74"},IGNF_KAUE70G:{towgs84:"126.74,300.1,-75.49"},IGNF_MOP90G:{towgs84:"-10.8,-1.8,12.77"},IGNF_MHPF67G:{towgs84:"338.08,212.58,-296.17"},IGNF_TAHI79G:{towgs84:"160.61,116.05,153.69"},IGNF_ANAA92G:{towgs84:"1.5,3.84,4.81"},IGNF_MARQUI72G:{towgs84:"330.91,-13.92,58.56"},IGNF_APAT86G:{towgs84:"143.6,197.82,74.05"},IGNF_TUBU69G:{towgs84:"237.17,171.61,-77.84"},IGNF_STPM50G:{towgs84:"11.363,424.148,373.13"},EPSG_4150:{towgs84:"674.374,15.056,405.346"},EPSG_4754:{towgs84:"-208.4058,-109.8777,-2.5764"},ESRI_104101:{towgs84:"372.87,149.23,585.29"},EPSG_4693:{towgs84:"0,-0.15,0.68"},EPSG_6207:{towgs84:"293.17,726.18,245.36"},EPSG_4153:{towgs84:"-133.63,-157.5,-158.62"},EPSG_4132:{towgs84:"-241.54,-163.64,396.06"},EPSG_4221:{towgs84:"-154.5,150.7,100.4"},EPSG_4266:{towgs84:"-80.7,-132.5,41.1"},EPSG_4193:{towgs84:"-70.9,-151.8,-41.4"},EPSG_5340:{towgs84:"-0.41,0.46,-0.35"},EPSG_4246:{towgs84:"-294.7,-200.1,525.5"},EPSG_4318:{towgs84:"-3.2,-5.7,2.8"},EPSG_4121:{towgs84:"-199.87,74.79,246.62"},EPSG_4223:{towgs84:"-260.1,5.5,432.2"},EPSG_4158:{towgs84:"-0.465,372.095,171.736"},EPSG_4285:{towgs84:"-128.16,-282.42,21.93"},EPSG_4613:{towgs84:"-404.78,685.68,45.47"},EPSG_4607:{towgs84:"195.671,332.517,274.607"},EPSG_4475:{towgs84:"-381.788,-57.501,-256.673"},EPSG_4208:{towgs84:"-157.84,308.54,-146.6"},EPSG_4743:{towgs84:"70.995,-335.916,262.898"},EPSG_4710:{towgs84:"-323.65,551.39,-491.22"},EPSG_7881:{towgs84:"-0.077,0.079,0.086"},EPSG_4682:{towgs84:"283.729,735.942,261.143"},EPSG_4739:{towgs84:"-156,-271,-189"},EPSG_4679:{towgs84:"-80.01,253.26,291.19"},EPSG_4750:{towgs84:"-56.263,16.136,-22.856"},EPSG_4644:{towgs84:"-10.18,-350.43,291.37"},EPSG_4695:{towgs84:"-103.746,-9.614,-255.95"},EPSG_4292:{towgs84:"-355,21,72"},EPSG_4302:{towgs84:"-61.702,284.488,472.052"},EPSG_4143:{towgs84:"-124.76,53,466.79"},EPSG_4606:{towgs84:"-153,153,307"},EPSG_4699:{towgs84:"-770.1,158.4,-498.2"},EPSG_4247:{towgs84:"-273.5,110.6,-357.9"},EPSG_4160:{towgs84:"8.88,184.86,106.69"},EPSG_4161:{towgs84:"-233.43,6.65,173.64"},EPSG_9251:{towgs84:"-9.5,122.9,138.2"},EPSG_9253:{towgs84:"-78.1,101.6,133.3"},EPSG_4297:{towgs84:"-198.383,-240.517,-107.909"},EPSG_4269:{towgs84:"0,0,0"},EPSG_4301:{towgs84:"-147,506,687"},EPSG_4618:{towgs84:"-59,-11,-52"},EPSG_4612:{towgs84:"0,0,0"},EPSG_4678:{towgs84:"44.585,-131.212,-39.544"},EPSG_4250:{towgs84:"-130,29,364"},EPSG_4144:{towgs84:"214,804,268"},EPSG_4147:{towgs84:"-17.51,-108.32,-62.39"},EPSG_4259:{towgs84:"-254.1,-5.36,-100.29"},EPSG_4164:{towgs84:"-76,-138,67"},EPSG_4211:{towgs84:"-378.873,676.002,-46.255"},EPSG_4182:{towgs84:"-422.651,-172.995,84.02"},EPSG_4224:{towgs84:"-143.87,243.37,-33.52"},EPSG_4225:{towgs84:"-205.57,168.77,-4.12"},EPSG_5527:{towgs84:"-67.35,3.88,-38.22"},EPSG_4752:{towgs84:"98,390,-22"},EPSG_4310:{towgs84:"-30,190,89"},EPSG_9248:{towgs84:"-192.26,65.72,132.08"},EPSG_4680:{towgs84:"124.5,-63.5,-281"},EPSG_4701:{towgs84:"-79.9,-158,-168.9"},EPSG_4706:{towgs84:"-146.21,112.63,4.05"},EPSG_4805:{towgs84:"682,-203,480"},EPSG_4201:{towgs84:"-165,-11,206"},EPSG_4210:{towgs84:"-157,-2,-299"},EPSG_4183:{towgs84:"-104,167,-38"},EPSG_4139:{towgs84:"11,72,-101"},EPSG_4668:{towgs84:"-86,-98,-119"},EPSG_4717:{towgs84:"-2,151,181"},EPSG_4732:{towgs84:"102,52,-38"},EPSG_4280:{towgs84:"-377,681,-50"},EPSG_4209:{towgs84:"-138,-105,-289"},EPSG_4261:{towgs84:"31,146,47"},EPSG_4658:{towgs84:"-73,46,-86"},EPSG_4721:{towgs84:"265.025,384.929,-194.046"},EPSG_4222:{towgs84:"-136,-108,-292"},EPSG_4601:{towgs84:"-255,-15,71"},EPSG_4602:{towgs84:"725,685,536"},EPSG_4603:{towgs84:"72,213.7,93"},EPSG_4605:{towgs84:"9,183,236"},EPSG_4621:{towgs84:"137,248,-430"},EPSG_4657:{towgs84:"-28,199,5"},EPSG_4316:{towgs84:"103.25,-100.4,-307.19"},EPSG_4642:{towgs84:"-13,-348,292"},EPSG_4698:{towgs84:"145,-187,103"},EPSG_4192:{towgs84:"-206.1,-174.7,-87.7"},EPSG_4311:{towgs84:"-265,120,-358"},EPSG_4135:{towgs84:"58,-283,-182"},ESRI_104138:{towgs84:"198,-226,-347"},EPSG_4245:{towgs84:"-11,851,5"},EPSG_4142:{towgs84:"-125,53,467"},EPSG_4213:{towgs84:"-106,-87,188"},EPSG_4253:{towgs84:"-133,-77,-51"},EPSG_4129:{towgs84:"-132,-110,-335"},EPSG_4713:{towgs84:"-77,-128,142"},EPSG_4239:{towgs84:"217,823,299"},EPSG_4146:{towgs84:"295,736,257"},EPSG_4155:{towgs84:"-83,37,124"},EPSG_4165:{towgs84:"-173,253,27"},EPSG_4672:{towgs84:"175,-38,113"},EPSG_4236:{towgs84:"-637,-549,-203"},EPSG_4251:{towgs84:"-90,40,88"},EPSG_4271:{towgs84:"-2,374,172"},EPSG_4175:{towgs84:"-88,4,101"},EPSG_4716:{towgs84:"298,-304,-375"},EPSG_4315:{towgs84:"-23,259,-9"},EPSG_4744:{towgs84:"-242.2,-144.9,370.3"},EPSG_4244:{towgs84:"-97,787,86"},EPSG_4293:{towgs84:"616,97,-251"},EPSG_4714:{towgs84:"-127,-769,472"},EPSG_4736:{towgs84:"260,12,-147"},EPSG_6883:{towgs84:"-235,-110,393"},EPSG_6894:{towgs84:"-63,176,185"},EPSG_4205:{towgs84:"-43,-163,45"},EPSG_4256:{towgs84:"41,-220,-134"},EPSG_4262:{towgs84:"639,405,60"},EPSG_4604:{towgs84:"174,359,365"},EPSG_4169:{towgs84:"-115,118,426"},EPSG_4620:{towgs84:"-106,-129,165"},EPSG_4184:{towgs84:"-203,141,53"},EPSG_4616:{towgs84:"-289,-124,60"},EPSG_9403:{towgs84:"-307,-92,127"},EPSG_4684:{towgs84:"-133,-321,50"},EPSG_4708:{towgs84:"-491,-22,435"},EPSG_4707:{towgs84:"114,-116,-333"},EPSG_4709:{towgs84:"145,75,-272"},EPSG_4712:{towgs84:"-205,107,53"},EPSG_4711:{towgs84:"124,-234,-25"},EPSG_4718:{towgs84:"230,-199,-752"},EPSG_4719:{towgs84:"211,147,111"},EPSG_4724:{towgs84:"208,-435,-229"},EPSG_4725:{towgs84:"189,-79,-202"},EPSG_4735:{towgs84:"647,1777,-1124"},EPSG_4722:{towgs84:"-794,119,-298"},EPSG_4728:{towgs84:"-307,-92,127"},EPSG_4734:{towgs84:"-632,438,-609"},EPSG_4727:{towgs84:"912,-58,1227"},EPSG_4729:{towgs84:"185,165,42"},EPSG_4730:{towgs84:"170,42,84"},EPSG_4733:{towgs84:"276,-57,149"},ESRI_37218:{towgs84:"230,-199,-752"},ESRI_37240:{towgs84:"-7,215,225"},ESRI_37221:{towgs84:"252,-209,-751"},ESRI_4305:{towgs84:"-123,-206,219"},ESRI_104139:{towgs84:"-73,-247,227"},EPSG_4748:{towgs84:"51,391,-36"},EPSG_4219:{towgs84:"-384,664,-48"},EPSG_4255:{towgs84:"-333,-222,114"},EPSG_4257:{towgs84:"-587.8,519.75,145.76"},EPSG_4646:{towgs84:"-963,510,-359"},EPSG_6881:{towgs84:"-24,-203,268"},EPSG_6882:{towgs84:"-183,-15,273"},EPSG_4715:{towgs84:"-104,-129,239"},IGNF_RGF93GDD:{towgs84:"0,0,0"},IGNF_RGM04GDD:{towgs84:"0,0,0"},IGNF_RGSPM06GDD:{towgs84:"0,0,0"},IGNF_RGTAAF07GDD:{towgs84:"0,0,0"},IGNF_RGFG95GDD:{towgs84:"0,0,0"},IGNF_RGNCG:{towgs84:"0,0,0"},IGNF_RGPFGDD:{towgs84:"0,0,0"},IGNF_ETRS89G:{towgs84:"0,0,0"},IGNF_RGR92GDD:{towgs84:"0,0,0"},EPSG_4173:{towgs84:"0,0,0"},EPSG_4180:{towgs84:"0,0,0"},EPSG_4619:{towgs84:"0,0,0"},EPSG_4667:{towgs84:"0,0,0"},EPSG_4075:{towgs84:"0,0,0"},EPSG_6706:{towgs84:"0,0,0"},EPSG_7798:{towgs84:"0,0,0"},EPSG_4661:{towgs84:"0,0,0"},EPSG_4669:{towgs84:"0,0,0"},EPSG_8685:{towgs84:"0,0,0"},EPSG_4151:{towgs84:"0,0,0"},EPSG_9702:{towgs84:"0,0,0"},EPSG_4758:{towgs84:"0,0,0"},EPSG_4761:{towgs84:"0,0,0"},EPSG_4765:{towgs84:"0,0,0"},EPSG_8997:{towgs84:"0,0,0"},EPSG_4023:{towgs84:"0,0,0"},EPSG_4670:{towgs84:"0,0,0"},EPSG_4694:{towgs84:"0,0,0"},EPSG_4148:{towgs84:"0,0,0"},EPSG_4163:{towgs84:"0,0,0"},EPSG_4167:{towgs84:"0,0,0"},EPSG_4189:{towgs84:"0,0,0"},EPSG_4190:{towgs84:"0,0,0"},EPSG_4176:{towgs84:"0,0,0"},EPSG_4659:{towgs84:"0,0,0"},EPSG_3824:{towgs84:"0,0,0"},EPSG_3889:{towgs84:"0,0,0"},EPSG_4046:{towgs84:"0,0,0"},EPSG_4081:{towgs84:"0,0,0"},EPSG_4558:{towgs84:"0,0,0"},EPSG_4483:{towgs84:"0,0,0"},EPSG_5013:{towgs84:"0,0,0"},EPSG_5264:{towgs84:"0,0,0"},EPSG_5324:{towgs84:"0,0,0"},EPSG_5354:{towgs84:"0,0,0"},EPSG_5371:{towgs84:"0,0,0"},EPSG_5373:{towgs84:"0,0,0"},EPSG_5381:{towgs84:"0,0,0"},EPSG_5393:{towgs84:"0,0,0"},EPSG_5489:{towgs84:"0,0,0"},EPSG_5593:{towgs84:"0,0,0"},EPSG_6135:{towgs84:"0,0,0"},EPSG_6365:{towgs84:"0,0,0"},EPSG_5246:{towgs84:"0,0,0"},EPSG_7886:{towgs84:"0,0,0"},EPSG_8431:{towgs84:"0,0,0"},EPSG_8427:{towgs84:"0,0,0"},EPSG_8699:{towgs84:"0,0,0"},EPSG_8818:{towgs84:"0,0,0"},EPSG_4757:{towgs84:"0,0,0"},EPSG_9140:{towgs84:"0,0,0"},EPSG_8086:{towgs84:"0,0,0"},EPSG_4686:{towgs84:"0,0,0"},EPSG_4737:{towgs84:"0,0,0"},EPSG_4702:{towgs84:"0,0,0"},EPSG_4747:{towgs84:"0,0,0"},EPSG_4749:{towgs84:"0,0,0"},EPSG_4674:{towgs84:"0,0,0"},EPSG_4755:{towgs84:"0,0,0"},EPSG_4759:{towgs84:"0,0,0"},EPSG_4762:{towgs84:"0,0,0"},EPSG_4763:{towgs84:"0,0,0"},EPSG_4764:{towgs84:"0,0,0"},EPSG_4166:{towgs84:"0,0,0"},EPSG_4170:{towgs84:"0,0,0"},EPSG_5546:{towgs84:"0,0,0"},EPSG_7844:{towgs84:"0,0,0"},EPSG_4818:{towgs84:"589,76,480"},EPSG_10328:{towgs84:"0,0,0"},EPSG_9782:{towgs84:"0,0,0"},EPSG_9777:{towgs84:"0,0,0"},EPSG_10690:{towgs84:"0,0,0"},EPSG_10639:{towgs84:"0,0,0"},EPSG_10739:{towgs84:"0,0,0"},EPSG_7686:{towgs84:"0,0,0"},EPSG_8900:{towgs84:"0,0,0"},EPSG_5886:{towgs84:"0,0,0"},EPSG_7683:{towgs84:"0,0,0"},EPSG_6668:{towgs84:"0,0,0"},EPSG_20046:{towgs84:"0,0,0"},EPSG_10299:{towgs84:"0,0,0"},EPSG_10310:{towgs84:"0,0,0"},EPSG_10475:{towgs84:"0,0,0"},EPSG_4742:{towgs84:"0,0,0"},EPSG_10671:{towgs84:"0,0,0"},EPSG_10762:{towgs84:"0,0,0"},EPSG_10725:{towgs84:"0,0,0"},EPSG_10791:{towgs84:"0,0,0"},EPSG_10800:{towgs84:"0,0,0"},EPSG_10305:{towgs84:"0,0,0"},EPSG_10941:{towgs84:"0,0,0"},EPSG_10968:{towgs84:"0,0,0"},EPSG_10875:{towgs84:"0,0,0"},EPSG_6318:{towgs84:"0,0,0"},EPSG_10910:{towgs84:"0,0,0"}};for(let t in Di){let e=Di[t];e.datumName&&(Di[e.datumName]=e)}var l0=Di;var ua=Object.freeze({name:"regional-datums",datums:Object.freeze(l0)});function h2(t){return{...t,parse(e,r){let n=t.parse(e,r),i=n.parameters.datum,o=s=>s.toLowerCase().replace(/[\s_-]/g,"");if(i&&!Object.keys(nr(r)).some(s=>o(s)===o(i))){let s={...n.parameters};return delete s.datum,{...n,parameters:s}}return n}}}var f0=[aa,ca].map(h2),h0=Object.create(null),u0=Object.create(null),ki;function d0(){if(ki)return ki;let t=[ps,gs,_s,Ss,ws,Es,Ts,bs,Rs,As,Is,Ns,Os,Gs,zs,Fs,Bs,Ds,ks,Us,Vs,Ws,Hs,$s,Ys,Ks,Xs,Zs,Qs,Js,ea,ta,ra,na,ia],e=i=>i.toLowerCase().replace(/[\s_-]/g,""),r=zi("longlat"),n={name:r.name,aliases:r.aliases,parameters:[...new Set([...r.parameters,...t.flatMap(i=>i.parameters)])],flags:[...new Set(t.flatMap(i=>i.flags||[]))],create(i){let o=i.parameters.o_proj;if(!o)throw new Error("Oblique transformation requires +o_proj");let s=["longlat","latlong","latlon","lonlat","identity"].includes(e(o))?"longlat":t.find(l=>[l.name,...l.aliases||[]].some(h=>e(h)===e(o)));if(!s)throw new Error("Unknown oblique transformation projection: "+o);let a=zi(s),c=new Set([...xi,...a.parameters]);for(let l of Object.keys(i.parameters))if(!c.has(l))throw new Error("Unsupported PROJ parameter: +"+l);return a.create(i)}};return ki=[...t,n],ki}var Ui=class extends vi{constructor(e={}){super({projections:d0(),parsers:f0,datumCatalogs:[ua],...e})}},u2=new Ui,ct=class extends Ot{static defineProjectionAliases(e){for(let r of Object.keys(e)){let n=e[r];h0[r]=typeof n=="string"?n:JSON.parse(JSON.stringify(n))}}static registerDatumGrid(e,r,n){u0[e]=ha(r,n)}constructor({from:e="WGS84",to:r="WGS84",enforceAxis:n=!1,verticalGrids:i}){super({from:e,to:r,enforceAxis:n,verticalGrids:i,projections:d0(),parsers:f0,aliases:h0,datumGrids:u0,datumCatalogs:[ua]})}};var f2=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Uint8Array.prototype),Symbol.toStringTag).get;function m0(t){return ArrayBuffer.isView(t)?f2.call(t):void 0}function fa(t){return m0(t)==="Uint16Array"}var d2=240,m2=[9,-18,-88,0,96,90,0,0,-60,-20,-9,18,8,0,-96,30,0,0,60,-20,9,-88,-18,90,96,0,-20,-60,0,0,186,-42,-42,-150,-96,-150,60,60,60,60,54,162,-78,30,-24,-90,-60,60,-60,60,-9,-32,18,30,24,0,20,-60,0,0,-9,8,18,30,-96,0,-20,60,0,0,54,-78,162,-90,-24,30,60,-60,60,-60,-54,78,78,90,144,90,-60,-60,-60,-60,9,-8,-18,-30,-24,0,20,60,0,0,-9,18,-32,0,24,30,0,0,-60,20,9,-18,-8,0,-24,-30,0,0,60,20],p2=372,g2=[0,0,-131,0,138,144,0,0,-102,-31,0,0,7,0,-138,42,0,0,102,-31,62,0,-31,0,0,-62,0,0,0,31,124,0,-62,0,0,-124,0,0,0,62,124,0,-62,0,0,-124,0,0,0,62,62,0,-31,0,0,-62,0,0,0,31,0,0,45,0,-183,-9,0,93,18,0,0,0,216,0,33,87,0,-93,12,-93,0,0,156,0,153,99,0,-93,-12,-93,0,0,-45,0,-3,9,0,93,-18,0,0,0,-55,0,48,42,0,0,-84,31,0,0,-7,0,-48,-42,0,0,84,31],M2=372,y2=[18,-36,-122,0,120,135,0,0,-84,-31,-18,36,-2,0,-120,51,0,0,84,-31,36,-165,-27,93,147,-9,0,-93,18,0,210,45,-111,-93,-57,-192,0,93,12,93,162,141,-75,-93,-129,-180,0,93,-12,93,-36,-21,27,93,39,9,0,-93,-18,0,0,0,62,0,0,31,0,0,0,-31,0,0,124,0,0,62,0,0,0,-62,0,0,124,0,0,62,0,0,0,-62,0,0,62,0,0,31,0,0,0,-31,-18,36,-64,0,66,51,0,0,-102,31,18,-36,2,0,-66,-51,0,0,102,31],x2=12,da=20/2,_2=2,ur=class{constructor(e){this._v00=0,this._v01=0,this._v10=0,this._v11=0,this._t=[],this.options=e,this._ix=this.options._width,this._iy=this.options._height,this._hasUint16Data=fa(e.data)}getHeight(e,r){if(e=Math.abs(e)>90?NaN:e,Number.isNaN(e)||Number.isNaN(r))return NaN;let n=S2(r,360);r=n!==-180?n:180;let i=r*this.options._rlonres,o=-e*this.options._rlatres,s=Math.floor(i),a=Math.min(Math.round((this.options._height-1)/2-1),Math.floor(o));i-=s,o-=a,a+=(this.options._height-1)/2,s+=s<0?this.options._width:s>=this.options._width?-this.options._width:0;let c=0,l=0,h=0,u=0,f=new Array(da);if(s===this._ix&&a===this._iy)this.options.cubic?f=this._t:(c=this._v00,l=this._v01,h=this._v10,u=this._v11);else if(!this.options.cubic)c=this._rawval(s,a),l=this._rawval(s+1,a),h=this._rawval(s,a+1),u=this._rawval(s+1,a+1);else{let m=[this._rawval(s,a-1),this._rawval(s+1,a-1),this._rawval(s-1,a),this._rawval(s,a),this._rawval(s+1,a),this._rawval(s+2,a),this._rawval(s-1,a+1),this._rawval(s,a+1),this._rawval(s+1,a+1),this._rawval(s+2,a+1),this._rawval(s,a+2),this._rawval(s+1,a+2)],p=g2;a!==0&&(p=a===this.options._height-2?y2:m2);let g=p2;a!==0&&(g=a===this.options._height-2?M2:d2);for(let y=0;y<da;++y){f[y]=0;for(let x=0;x<x2;++x)f[y]+=m[x]*p[da*x+y];f[y]/=g}}if(!this.options.cubic){let m=(1-i)*c+i*l,p=(1-i)*h+i*u,g=(1-o)*m+o*p,y=this.options._offset+this.options._scale*g;return this._ix=s,this._iy=a,this._v00=c,this._v01=l,this._v10=h,this._v11=u,y}let d=f[0]+i*(f[1]+i*(f[3]+i*f[6]))+o*(f[2]+i*(f[4]+i*f[7])+o*(f[5]+i*f[8]+o*f[9]));return d=this.options._offset+this.options._scale*d,this._ix=s,this._iy=a,this._t=f,d}_rawval(e,r){e<0?e+=this.options._width:e>=this.options._width&&(e-=this.options._width),(r<0||r>=this.options._height)&&(r=r<0?-r:2*(this.options._height-1)-r,e+=(e<this.options._width/2?1:-1)*this.options._width/2);let n=r*this.options._swidth+e;if(this._hasUint16Data)return this.options.data[this.options._datastart+n];let i=this.options._datastart+_2*n,o=this.options.data[i],s=this.options.data[i+1];return o<<8|s}};function S2(t,e){e=Math.abs(e);let r=p0(t,e);return 2*Math.abs(r)===e?r-=p0(t,2*e)-r:2*Math.abs(r)>e&&(r+=r<0?e:-e),r}function p0(t,e){return t-Math.floor(t/e)*e}var w2=10,E2=65535;function ma(t,e){let r=T2(t),n=r.next();if(n.done||n.value.line!=="P5")throw new Error("Geoid model file: File not in PGM format");let i=Number.MAX_VALUE,o=0,s=-1,a=-1,c="NONE",l="UNKNOWN",h=0,u=0,f=null,d=null;do{n=r.next();let y=n.value.line;if(y.length)if(y[0]==="#"){let x=y.split(" "),S=x[0],_=x[1];if(S!=="#"||!_)continue;let w=x.length>2?x.slice(2):[];if(_==="Description")c=w.join(" ");else if(_==="DateTime")l=w.join(" ");else if(_==="Offset"){if(!x[2])throw new Error("Geoid model file: Error reading offset");i=parseInt(x[2],10)}else if(_==="Scale"){if(!x[2])throw new Error("Geoid model file: Error reading scale");o=parseFloat(x[2])}else _===(e.cubic?"MaxCubicError":"MaxBilinearError")?isFinite(parseFloat(x[2]))&&(s=parseFloat(x[2])):_===(e.cubic?"RMSCubicError":"RMSBilinearError")&&isFinite(parseFloat(x[2]))&&(a=parseFloat(x[2]))}else{let x=y.split(" ");if(x=x.filter(S=>S!==""),h=parseInt(x[0],10),u=parseInt(x[1],10),!(h&&u))throw new Error("Geoid model file: Error reading raster size");break}}while(!n.done);n=r.next();let m=parseInt(n.value.line,10);if(n.done)throw new Error("Geoid model file: Error reading maxval");if(m!==E2)throw new Error("Geoid model file: Incorrect value of maxval");if(f=n.value.offset,d=h,i===Number.MAX_VALUE)throw new Error("Geoid model file: Offset not set");if(o===0)throw new Error("Geoid model file: Scale not set");if(o<0)throw new Error("Geoid model file: Scale must be positive");if(u<2||h<2)throw new Error("Geoid model file: Raster size too small");if(h&1)throw new Error("Geoid model file: Raster width is odd");if(!(u&1))throw new Error("Geoid model file: Raster height is even");let p=h/360,g=(u-1)/180;return new ur({cubic:e.cubic,_width:h,_height:u,_rlonres:p,_rlatres:g,_offset:i,_scale:o,_swidth:d,_datastart:f,_maxerror:s,_rmserror:a,_description:c,_datetime:l,data:t})}function*T2(t){let e=0;do{let r=t.indexOf(w2,e);if(r!==-1){let n=t.subarray(e,r);e=r+1,yield{offset:e,line:g0(n)}}else{let n=t.subarray(e,t.length);e=t.length,yield{offset:e,line:g0(n)}}}while(e<t.length);return{offset:e,line:""}}function g0(t){let e="";for(let r of t)e+=String.fromCharCode(r);return e}var M0=new Map;function y0(t,e){ga(t,"CRS"),ct.defineProjectionAliases({[t]:e})}function x0(t,e){ga(t,"datum grid"),ct.registerDatumGrid(t,e)}function pa(t,e){ga(t,"geoid model"),M0.set(t,e)}function _0(t,e,r={}){let n=ma(e,r);return pa(t,n),n}function Vi(t){return M0.get(t)}function ga(t,e){if(!t.trim())throw new Error(`${e} name must not be empty`)}var We=class{spatialReference;horizontalProjection;geographicProjection;heightOutputProjection;sourceIsGeocentric;outputIsGeocentric;sourceIsGeographic;outputIsGeographic;geoid;constructor(e,r={}){this.spatialReference=e,P2(e);let n=e.targetCrs||e.sourceCrs;if(this.sourceIsGeocentric=Ma(e.sourceCrs),this.outputIsGeocentric=Ma(n),this.sourceIsGeographic=S0(e.sourceCrs),this.outputIsGeographic=S0(n),e.sourceCrs&&e.targetCrs&&!this.sourceIsGeocentric&&!this.outputIsGeocentric&&(this.horizontalProjection=new ct({from:Jr(e.sourceCrs),to:Jr(e.targetCrs),enforceAxis:!1})),(en(e)||this.sourceIsGeocentric||this.outputIsGeocentric)&&(!this.sourceIsGeographic&&!this.sourceIsGeocentric&&(this.geographicProjection=new ct({from:Jr(e.sourceCrs),to:Jt,enforceAxis:!1})),!this.outputIsGeographic&&!this.outputIsGeocentric&&(this.heightOutputProjection=new ct({from:Jt,to:Jr(n),enforceAxis:!1}))),en(e)&&(this.geoid=R2(r.geoidModel),!this.geoid)){let i=typeof r.geoidModel=="string"?` "${r.geoidModel}"`:"";throw new Error(`Height conversion requires a registered geoid model${i}; call registerGeoidModel() or pass a parsed Geoid instance`)}}transformPosition(e){if(e.length<2)throw new Error("A spatial coordinate must contain at least x and y components");let r=[...e];if(en(this.spatialReference)||this.sourceIsGeocentric||this.outputIsGeocentric){if(r.length<3||!Number.isFinite(r[2]))throw new Error("Three-dimensional CRS conversion requires a finite z coordinate");let n=this.toGeographic(r);if(en(this.spatialReference)){let o=this.geoid.getHeight(n[1],n[0]);n[2]=C2(n[2],o,this.spatialReference.heightReference,this.spatialReference.targetHeightReference)}let i=this.fromGeographic(n);return r.splice(0,i.length,...i),r}if(this.horizontalProjection){let n=this.horizontalProjection.project(r.slice(0,3));r.splice(0,n.length,...n)}return r}transformPositions(e){if(e.length%3!==0)throw new Error("Packed spatial positions must contain a multiple of three components");let r=new Float64Array(e.length);for(let n=0;n<e.length;n+=3){let i=this.transformPosition([Number(e[n]),Number(e[n+1]),Number(e[n+2])]);r[n]=i[0],r[n+1]=i[1],r[n+2]=i[2]}return r}transformNormals(e,r){if(e.length!==r.length||e.length%3!==0)throw new Error("Spatial normals and positions must have matching xyz component counts");let n=new Float32Array(e.length),i=1e-5;for(let o=0;o<e.length;o+=3){let s=[Number(r[o]),Number(r[o+1]),Number(r[o+2])],a=[Number(e[o]),Number(e[o+1]),Number(e[o+2])],c=b2(this,s,i),l=v2(c,a),h=Math.hypot(...l);h>0&&Number.isFinite(h)?(n[o]=l[0]/h,n[o+1]=l[1]/h,n[o+2]=l[2]/h):(n[o]=a[0],n[o+1]=a[1],n[o+2]=a[2])}return n}toGeographic(e){return this.sourceIsGeocentric?Array.from(G.WGS84.cartesianToCartographic(new M(e))):this.sourceIsGeographic?e.slice(0,3):this.geographicProjection.project(e.slice(0,3))}fromGeographic(e){return this.outputIsGeocentric?Array.from(G.WGS84.cartographicToCartesian(new M(e))):this.outputIsGeographic?e.slice(0,3):this.heightOutputProjection.project(e.slice(0,3))}};function b2(t,e,r){let n=[];for(let i=0;i<3;i++){let o=e.slice(),s=e.slice();o[i]+=r,s[i]-=r;let a=t.transformPosition(o),c=t.transformPosition(s);n.push([(a[0]-c[0])/(2*r),(a[1]-c[1])/(2*r),(a[2]-c[2])/(2*r)])}return n}function v2(t,e){let[r,n,i]=t,o=r[0]*(n[1]*i[2]-n[2]*i[1])-n[0]*(r[1]*i[2]-r[2]*i[1])+i[0]*(r[1]*n[2]-r[2]*n[1]);return!Number.isFinite(o)||Math.abs(o)<1e-15?e:[[n[1]*i[2]-n[2]*i[1],r[2]*i[1]-r[1]*i[2],r[1]*n[2]-r[2]*n[1]],[n[2]*i[0]-n[0]*i[2],r[0]*i[2]-r[2]*i[0],r[2]*n[0]-r[0]*n[2]],[n[0]*i[1]-n[1]*i[0],r[1]*i[0]-r[0]*i[1],r[0]*n[1]-r[1]*n[0]]].map(a=>(a[0]*e[0]+a[1]*e[1]+a[2]*e[2])/o)}function Jr(t){if(!t)throw new Error("Cannot construct a projection because the CRS is unknown");if(typeof t!="string"&&t.type==="CompoundCRS"){let e=t.components.filter(r=>r.type!=="VerticalCRS");if(e.length!==1)throw new Error("CompoundCRS requires exactly one horizontal component");return Jr(e[0])}return t}function P2(t){if(t.outputCoordinates==="local-enu")throw new Error("local-enu output requires a dataset-derived local origin and must be created by a tileset source");if(t.outputCoordinates==="target-crs"&&!t.targetCrs)throw new Error("target-crs output requires targetCrs");if(!t.sourceCrs&&t.status==="unresolved")throw new Error("Cannot transform coordinates because the source CRS is unknown");if(en(t)&&t.heightReference==="unknown")throw new Error("Cannot convert heights because the source height reference is unknown");if(t.coordinateFrame==="geocentric"&&!Ma(t.sourceCrs))throw new Error("Only EPSG:4978 geocentric coordinates are supported by the current spatial transformer");if(t.status==="unresolved")throw new Error("The requested spatial output cannot be resolved from the available metadata")}function Ma(t){return typeof t=="string"&&zr(t)===ni}function S0(t){if(typeof t!="string")return!1;let e=zr(t);return e===Jt||e==="EPSG:4979"||e==="OGC:CRS84"}function en(t){let e=t.targetHeightReference;return e!=="native"&&e!==t.heightReference}function R2(t){return typeof t=="string"?Vi(t):t}function C2(t,e,r,n){if(r===n||n==="native")return t;if(r==="orthometric"&&n==="ellipsoidal")return t+e;if(r==="ellipsoidal"&&n==="orthometric")return t-e;throw new Error(`Unsupported height conversion from ${r} to ${n}`)}var Pt=class{spatialReference;coordinateTransformer;geographicCoordinateTransformer;constructor(e,r={}){this.coordinateTransformer=new We(e,r);let n={...e,sourceCrs:"EPSG:4326",targetCrs:e.targetCrs||e.sourceCrs,coordinateFrame:"geographic",axisOrder:"xy"};this.geographicCoordinateTransformer=new We(n,r),this.spatialReference=e}transformPositions(e){return this.coordinateTransformer.transformPositions(e)}transformNormals(e,r){return this.coordinateTransformer.transformNormals(e,r)}transformBoundingVolume(e,r){let n=r?new q(Array.from(r)):void 0,i=e.region?A2(e.region):I2(e).map(s=>n?Array.from(n.transformAsPoint(s)):s);if(!i.length)return e;let o=e.region?i.map(s=>this.transformRegionSample(s)):i.map(s=>this.coordinateTransformer.transformPosition(s));return{box:N2(o)}}transformRegionSample(e){let[r,n,i]=e,o=this.spatialReference.targetCrs||this.spatialReference.sourceCrs;if(o&&xe(o)==="geocentric"){let s=G.WGS84.cartographicToCartesian([r,n,i]);return Array.from(s)}return this.geographicCoordinateTransformer.transformPosition(e)}};function A2(t){if(t.length<6||t.some(u=>!Number.isFinite(u)))return[];let[e,r,n,i,o,s]=t,a=n<e?n+Math.PI*2:n,c=w0(e,a),l=w0(r,i),h=[];for(let u of c)for(let f of l)for(let d of[o,s])h.push([u*180/Math.PI,f*180/Math.PI,d]);return h}function w0(t,e){let r=[t,(t+e)/2,e],n=Math.PI/2,i=Math.ceil(t/n),o=Math.floor(e/n);for(let s=i;s<=o;s++)r.push(s*n);return r}function I2(t){if(t.box&&t.box.length>=12){let e=t.box.slice(0,3),r=[t.box.slice(3,6),t.box.slice(6,9),t.box.slice(9,12)],n=[];for(let i=0;i<=4;i++)for(let o=0;o<=4;o++)for(let s=0;s<=4;s++){let a=i/2-1,c=o/2-1,l=s/2-1;n.push([e[0]+a*r[0][0]+c*r[1][0]+l*r[2][0],e[1]+a*r[0][1]+c*r[1][1]+l*r[2][1],e[2]+a*r[0][2]+c*r[1][2]+l*r[2][2]])}return n}if(t.sphere&&t.sphere.length>=4){let[e,r,n,i]=t.sphere,o=[[e-i,r,n],[e+i,r,n],[e,r-i,n],[e,r+i,n],[e,r,n-i],[e,r,n+i]];for(let s=0;s<16;s++){let a=s*Math.PI*2/16;o.push([e+i*Math.cos(a),r+i*Math.sin(a),n])}return o}return[]}function N2(t){let e=[1/0,1/0,1/0],r=[-1/0,-1/0,-1/0];for(let o of t)for(let s=0;s<3;s++)e[s]=Math.min(e[s],o[s]),r[s]=Math.max(r[s],o[s]);let n=[Math.max((r[0]-e[0])*.01,1e-9),Math.max((r[1]-e[1])*.01,1e-9),Math.max((r[2]-e[2])*.01,1e-9)];return[...[(e[0]+r[0])/2,(e[1]+r[1])/2,(e[2]+r[2])/2],(r[0]-e[0])/2+n[0],0,0,0,(r[1]-e[1])/2+n[1],0,0,0,(r[2]-e[2])/2+n[2]]}function E0(t,e){let r=t.map(([c,l])=>[c,l]);if(r.length===0)return r;let n=1/0,i=-1/0;for(let[c]of t)n=Math.min(n,c),i=Math.max(i,c);if(i-n>=360)return r;let o=e??r[0][0];for(let c of r){let l=c[0]-o;l>180?c[0]-=360*Math.ceil((l-180)/360):l<-180&&(c[0]+=360*Math.ceil((-l-180)/360)),o=c[0]}let s=t[0],a=t[t.length-1];if(s[0]===a[0]&&s[1]===a[1]){if(Math.abs(r[r.length-1][0]-r[0][0])>180)return t.map(([c,l])=>[c,l]);r[r.length-1]=[...r[0]]}return r}function O2(t){let e=1/0,r=1/0,n=-1/0,i=-1/0;for(let[o,s]of t)e=Math.min(e,o),r=Math.min(r,s),n=Math.max(n,o),i=Math.max(i,s);return[[e,r],[n,i]]}function T0(t){let e=(r,n)=>{let i=t.cellToBoundary(r);return n?.unwrap?E0(i,n.referenceLongitude):i};return{...t,cellToBoundary:e,cellToBoundaryFlat:(r,n)=>n?.unwrap?e(r,n).flat():t.cellToBoundaryFlat(r),cellToBounds:(r,n)=>{let i=t.cellToBounds(r);if(!n?.unwrap||i[1][0]-i[0][0]>=360)return i;let o=O2(e(r,n));return o[0][1]=i[0][1],o[1][1]=i[1][1],o}}}var G2=(1n<<64n)-1n,L2=0x1555555555555555n;function fr(t){if(t==="X")return 0n;if(!b0(t))throw new Error(`Invalid S2 token: ${t}`);let e=t.padEnd(16,"0");return BigInt(`0x${e}`)}function tn(t){if(t===0n)return"X";if(!dr(t))throw new Error(`Invalid S2 index: ${t}`);let e=q2(t),r=e%4;e=(e-r)/4;let n=e;e*=4;let o=(t>>BigInt(e)).toString(16).replace(/0+$/,"");return Array(17-n-o.length).join("0")+o}function dr(t){if(typeof t!="bigint"||t<=0n||t>G2)return!1;let e=t>>61n,r=t&-t;return e<6n&&(r&L2)!==0n}function b0(t){if(typeof t!="string"||!/^[0-9a-fA-F]{1,16}$/.test(t)||t.endsWith("0"))return!1;let e=t.padEnd(16,"0");return dr(BigInt(`0x${e}`))}function q2(t){let e=0;for(;t%2n===0n;)t/=2n,e++;return e}function mr(t){if(!dr(t))throw new Error(`Invalid S2 index: ${t}`);let e=k2(t);return D2(e)}var z2=3,ya=30,F2=2*ya+1,v0=180/Math.PI,B2={a:[[0,"d"],[1,"a"],[3,"b"],[2,"a"]],b:[[2,"b"],[1,"b"],[3,"a"],[0,"c"]],c:[[2,"c"],[3,"d"],[1,"c"],[0,"b"]],d:[[0,"a"],[3,"c"],[1,"d"],[2,"d"]]};function D2(t){if(!/^[0-5]\/[0-3]{0,30}$/.test(t))throw new Error(`Invalid S2 Hilbert quadkey: ${t}`);let e=t.split("/"),r=parseInt(e[0],10),n=e[1]||"",i=n.length,o=0,s=[0,0];for(let a=i-1;a>=0;a--){o=i-a;let c=n[a],l=0,h=0;c==="1"?h=1:c==="2"?(l=1,h=1):c==="3"&&(l=1);let u=Math.pow(2,o-1);U2(u,s,l,h),s[0]+=u*l,s[1]+=u*h}if(r%2===1){let a=s[0];s[0]=s[1],s[1]=a}return{face:r,ij:s,level:o}}function k2(t){if(!dr(t))throw new Error(`Invalid S2 index: ${t}`);let e=t.toString(2);for(;e.length<z2+F2;)e="0"+e;let r=e.lastIndexOf("1"),n=e.substring(0,3),i=e.substring(3,r),o=i.length/2,s=BigInt(`0b${n}`).toString(10),a="";if(o!==0)for(a=BigInt(`0b${i}`).toString(4);a.length<o;)a="0"+a;return`${s}/${a}`}function R0(t){let{face:e,ij:r,level:n}=t;if(!Number.isInteger(e)||e<0||e>5)throw new Error(`Invalid S2 face: ${e}`);if(!Number.isInteger(n)||n<0||n>ya)throw new Error(`Invalid S2 level: ${n}`);let i=2**n;if(!Number.isInteger(r[0])||!Number.isInteger(r[1])||r[0]<0||r[1]<0||r[0]>=i||r[1]>=i)throw new Error(`Invalid S2 IJ coordinates: ${r[0]}, ${r[1]}`);let o=V2(r[0],r[1],n,e),s=BigInt(e)<<61n;for(let a=0;a<o.length;a++){let c=59-a*2;s|=BigInt(o[a])<<BigInt(c)}return s|=1n<<BigInt(60-n*2),s}function xa(t,e,r,n){let i=mr(t);if(!Number.isInteger(e)||e<0||i.level+e>ya)throw new Error(`Invalid S2 relative level: ${e}`);let o=2**e;if(!Number.isInteger(r)||!Number.isInteger(n)||r<0||n<0||r>=o||n>=o)throw new Error(`Invalid S2 descendant coordinates: ${r}, ${n}`);return R0({face:i.face,ij:[i.ij[0]*o+r,i.ij[1]*o+n],level:i.level+e})}function rn(t,e,r){let n=1<<e;return[(t[0]+r[0])/n,(t[1]+r[1])/n]}function P0(t){return t>=.5?1/3*(4*t*t-1):1/3*(1-4*(1-t)*(1-t))}function nn(t){return[P0(t[0]),P0(t[1])]}function on(t,[e,r]){switch(t){case 0:return[1,e,r];case 1:return[-e,1,r];case 2:return[-e,-r,1];case 3:return[-1,-r,-e];case 4:return[r,-1,-e];case 5:return[r,e,-1];default:throw new Error("Invalid face")}}function sn([t,e,r]){let n=Math.atan2(r,Math.sqrt(t*t+e*e));return[Math.atan2(e,t)*v0,n*v0]}function U2(t,e,r,n){if(n===0){r===1&&(e[0]=t-1-e[0],e[1]=t-1-e[1]);let i=e[0];e[0]=e[1],e[1]=i}}function V2(t,e,r,n){let i=n%2===1?"d":"a",o=[];for(let s=r-1;s>=0;s--){let a=1<<s,c=(t&a)!==0?1:0,l=(e&a)!==0?1:0,[h,u]=B2[i][c*2+l];o.push(h),i=u}return o}var j2=100;function C0(t){let e=mr(t);return W2(e)}function W2({face:t,ij:e,level:r}){let n=[[0,0],[0,1],[1,1],[1,0],[0,0]],i=Math.max(1,Math.ceil(j2*Math.pow(2,-r))),o=new Float64Array(4*i*2+2),s=0,a=0;for(let c=0;c<4;c++){let l=n[c].slice(0),h=n[c+1],u=(h[0]-l[0])/i,f=(h[1]-l[1])/i;for(let d=0;d<i;d++){l[0]+=u,l[1]+=f;let m=rn(e,r,l),p=nn(m),g=on(t,p),y=sn(g);Math.abs(y[1])>89.999&&(y[0]=a);let x=y[0]-a;y[0]+=x>180?-360:x<-180?360:0,o[s++]=y[0],o[s++]=y[1],a=y[0]}}return o[s++]=o[0],o[s++]=o[1],o}var H2=T0({name:"s2",hasNumericRepresentation:!0,cellColumnNames:["s2","s2Token","s2_token","s2Cell","s2_cell","s2CellId","s2_cell_id"],tokenToCell:t=>fr(t),cellToToken:t=>tn(Wi(t)),cellToLngLat:t=>A0(t),cellToBoundary:t=>$2(t),cellToBoundaryFlat:t=>_a(t),cellToBounds:t=>ji(t)});function A0(t){let e=Wi(t),r=mr(e),n=rn(r.ij,r.level,[.5,.5]),i=nn(n),o=on(r.face,i);return sn(o)}function _a(t){let e=Wi(t),r=C0(e);return Array.from(r)}function $2(t){let e=_a(t),r=[];for(let n=0;n<e.length;n+=2)r.push([e[n],e[n+1]]);return r}function ji(t){let e=mr(Wi(t));if(e.level===0)return Y2(e.face);let r=[[0,0],[0,1],[1,1],[1,0]],n=1/0,i=1/0,o=-1/0,s=-1/0,a;for(let l of r){let h=rn(e.ij,e.level,l),u=nn(h),[f,d,m]=on(e.face,u),[p,g]=sn([f,d,m]);if(f===0&&d===0&&a!==void 0&&(p=a),a!==void 0){let y=p-a;p+=y>180?-360:y<-180?360:0}a=p,n=Math.min(n,p),i=Math.min(i,g),o=Math.max(o,p),s=Math.max(s,g)}let c=2*Number.EPSILON*180/Math.PI;return[[n-c,Math.max(-90,i-c)],[o+c,Math.min(90,s+c)]]}function Wi(t){return typeof t=="bigint"?t:fr(t)}function Y2(t){let e=Math.asin(Math.sqrt(.3333333333333333))*180/Math.PI;switch(t){case 0:return[[-45,-45],[45,45]];case 1:return[[45,-45],[135,45]];case 2:return[[-180,e],[180,90]];case 3:return[[135,-45],[225,45]];case 4:return[[-135,-45],[-45,45]];case 5:return[[-180,-90],[180,-e]];default:throw new Error(`Invalid S2 face: ${t}`)}}function Hi(t){let[[e,r],[n,i]]=ji(t.token),o=vr([e,r,n,i,t.minimumHeight,t.maximumHeight],G.WGS84,{units:"degrees"});return[...o.center,...o.halfAxes]}var K2=4,X2=8,I0=new WeakMap;function wa(t,e){return{coordinates:e,subtreeUrl:cn(t.subtreesUrlTemplate,e),descriptor:t,resource:B0(t.resourceFiles,cn(t.subtreesUrlTemplate,e))}}function $i(t,e){let{descriptor:r}=e;iM(r),Z2(t,r);let n={tileCount:0,childSubtreeCount:0},i=F0(t,e,{localLevel:0,mortonIndex:0},e.coordinates,n);if(!i)throw new Error(`Invalid 3D Tiles subtree: root tile is unavailable at ${e.subtreeUrl}`);return{root:i,...n}}function Z2(t,e){let r=V0(e.subdivisionScheme),n=(r**e.subtreeLevels-1)/(r-1),i=r**e.subtreeLevels;Sa(t.tileAvailability,n,"tile");let o=Array.isArray(t.contentAvailability)?t.contentAvailability:t.contentAvailability?[t.contentAvailability]:[];for(let c of o)Sa(c,n,"content");Sa(t.childSubtreeAvailability,i,"child subtree");let s=N0(t.tileAvailability,n),a=o[0]?N0(o[0],n):0;if(O0(t.tileAttributes,s,"tile"),O0(t.contentAttributes,a,"content"),t.tilePropertyRows&&t.tilePropertyRows.length!==s)throw new Error("3DTILES_subtree: tile property-table count does not match availability");if(t.contentPropertyRows&&t.contentPropertyRows.length!==a)throw new Error("3DTILES_subtree: content property-table count does not match availability")}function Sa(t,e,r){if(!(t.constant===0||t.constant===1)&&(!t.explicitBitstream||t.explicitBitstream.byteLength*8<e))throw new Error(`3DTILES_subtree: ${r} availability bitstream is too short`)}function N0(t,e){if(t.constant===1)return e;if(t.constant===0)return 0;let r=0;for(let n=0;n<e;n++)pr(t,n)&&r++;return r}function O0(t,e,r){let n={TILE_BOUNDING_BOX:16,TILE_BOUNDING_SPHERE:4,TILE_GEOMETRIC_ERROR:1,TILE_REFINE:1,TILE_TRANSFORM:16,CONTENT_BOUNDING_BOX:16,CONTENT_BOUNDING_SPHERE:4};for(let[i,o]of Object.entries(t||{})){let s=n[i];if(s&&o.length!==e*s)throw new Error(`3DTILES_subtree: ${r} attribute ${i} count does not match availability`)}}function cn(t,e,r={}){let n={level:e.level,x:e.x,y:e.y,z:e.z,...r};return t.replace(/{([^{}]+)}/g,(i,o)=>{let s=Object.hasOwn(n,o)?n[o]:n[o.toLowerCase()];return s===void 0?i:String(s)})}function F0(t,e,r,n,i){let{descriptor:o}=e,s=V0(o.subdivisionScheme),a=tM(s,r.localLevel)+r.mortonIndex;if(!pr(t.tileAvailability,a))return null;i.tileCount++;let c=eM(t.contentAvailability,a),l=[];if(n.level<o.maximumLevel)if(r.localLevel+1<o.subtreeLevels)for(let h=0;h<s;h++){let u=q0(n,h,o.subdivisionScheme),f=F0(t,e,{localLevel:r.localLevel+1,mortonIndex:r.mortonIndex*s+h},u,i);f&&l.push(f)}else for(let h=0;h<s;h++){let u=r.mortonIndex*s+h;if(pr(t.childSubtreeAvailability,u)){let f=q0(n,h,o.subdivisionScheme);l.push(Q2(t,o,f)),i.childSubtreeCount++}}return J2(t,o,e,n,a,c,l)}function Q2(t,e,r){let n=D0(e.resourceFiles,t.resourceFiles),i=n?{...e,resourceFiles:n}:e,o=wa(i,r);return{id:U0(o,r),children:[],implicitSubtree:o,boundingVolume:j0(e.rootBoundingVolume,r,e.subdivisionScheme),geometricError:e.rootLodMetricValue/2**r.level,lodMetricType:e.lodMetricType,lodMetricValue:e.rootLodMetricValue/2**r.level,refine:e.refine,type:tt.EMPTY,implicitMetadata:k0(t),_scaleGeometricError:e.scaleGeometricError!==!1}}function G0(t,e,r){if(!t||e<0)return{};let n=an(t[r==="tile"?"TILE_BOUNDING_BOX":"CONTENT_BOUNDING_BOX"],e,16),i=an(t[r==="tile"?"TILE_BOUNDING_SPHERE":"CONTENT_BOUNDING_SPHERE"],e,4),o=n?{box:[n[12],n[13],n[14],n[0]/2,n[1]/2,n[2]/2,n[4]/2,n[5]/2,n[6]/2,n[8]/2,n[9]/2,n[10]/2]}:i?{sphere:i}:void 0;if(r==="content")return{boundingVolume:o};let s=an(t.TILE_GEOMETRIC_ERROR,e,1)?.[0];if(s!==void 0&&(!Number.isFinite(s)||s<0))throw new Error("3DTILES_subtree: TILE_GEOMETRIC_ERROR must be nonnegative");let a=an(t.TILE_REFINE,e,1)?.[0];if(a!==void 0&&a!==0&&a!==1)throw new Error("3DTILES_subtree: TILE_REFINE must be 0 or 1");return{boundingVolume:o,geometricError:s,refine:a===void 0?void 0:a===0?ne.ADD:ne.REPLACE,transform:an(t.TILE_TRANSFORM,e,16)}}function an(t,e,r){if(!t)return;let n=e*r;if(n+r>t.length)throw new Error("3DTILES_subtree: attribute accessor is shorter than availability");return Array.from({length:r},(i,o)=>Number(t[n+o]))}function L0(t,e){if(t.constant===1)return e;if(t.constant===0)return 0;let r=I0.get(t);if(!r){let n=(t.explicitBitstream?.byteLength||0)*8;r=new Uint32Array(n+1);for(let i=0;i<n;i++)r[i+1]=r[i]+Number(pr(t,i));I0.set(t,r)}return r[e]}function B0(t,e){if(!t?.length)return;let r=e.split("?")[0],n=/^gltf-package:\/\/[^/]+\/(.*)$/.exec(r)?.[1],i=t.findIndex(s=>{let a=s.originalUri||s.name;return s.uri===r||!!(a&&(r===a||n===a))});if(i>=0)return{fileIndex:i,files:t};let o=t.findIndex(s=>{let a=s.originalUri||s.name;return!!(a&&(r.endsWith(`/${a}`)||r.endsWith(`:${a}`)))});return o<0?void 0:{fileIndex:o,files:t}}function D0(t,e){if(!e?.length)return t;if(!t?.length)return e;let r=new Set(e.flatMap(n=>[n.uri,n.originalUri,n.name].filter(Boolean)));return[...e,...t.filter(n=>![n.uri,n.originalUri,n.name].some(i=>i&&r.has(i)))]}function J2(t,e,r,n,i,o,s){let a=L0(t.tileAvailability,i),c=t.tilePropertyRows?.[a],l=Array.isArray(t.contentAvailability)?t.contentAvailability[0]:t.contentAvailability,h=l&&pr(l,i)?L0(l,i):-1,u=t.contentPropertyRows?.[h],f=t.tileTemplatePropertyRows?.[a]||c,d=t.contentTemplatePropertyRows?.[h]||u,m={...f,...d},p=G0(t.tileAttributes,a,"tile"),g=G0(t.contentAttributes,h,"content"),x=(e.contentUrlTemplates?.length?e.contentUrlTemplates:[e.contentUrlTemplate]).map((P,R)=>{if(!o[R]||!P)return null;let N=cn(P,n,m);if(/{[^{}]+}/.test(N))throw new Error(`Implicit content URI has unresolved template values: ${N}`);return{contentIndex:R,contentUrl:N}}).filter(P=>!!P),S=x.map(P=>P.contentUrl),_=D0(e.resourceFiles,t.resourceFiles),w=x.map(({contentIndex:P,contentUrl:R})=>{let N=B0(_,R);return{...e.contentHeaders?.[P]||(P===0?e.contentHeader:{})||{},...g,uri:R,...u?{metadata:{properties:u}}:{},...N?{_resource:N}:{}}}),E=S[0],v=e.rootLodMetricValue/2**n.level,T=p.geometricError??v,I=j0(e.rootBoundingVolume,n,e.subdivisionScheme);return{id:U0(r,n),children:s,contentUrl:E,content:w.length>1?w:w[0],contents:e.useCanonicalContents&&w.length?w:void 0,contentUrls:S,refine:p.refine||e.refine,type:nM(E),lodMetricType:e.lodMetricType,lodMetricValue:T,geometricError:T,boundingVolume:p.boundingVolume||I,transform:p.transform,transformMatrix:p.transform,metadata:c?{properties:c}:void 0,implicitMetadata:k0(t,c,u),_scaleGeometricError:e.scaleGeometricError!==!1}}function k0(t,e,r){if(!(!t.propertyTables&&t.tileMetadata===void 0&&!t.contentMetadata&&t.subtreeMetadata===void 0&&!e&&!r))return{propertyTables:t.propertyTables,tileMetadata:t.tileMetadata,contentMetadata:t.contentMetadata,subtreeMetadata:t.subtreeMetadata,tileProperties:e,contentProperties:r}}function U0(t,e){return`${t.subtreeUrl}#implicit=${e.level}/${e.x}/${e.y}/${e.z}`}function pr(t,e){if(typeof t?.constant=="number")return!!t.constant;let r=t?.explicitBitstream;if(!r)return!1;let n=Math.floor(e/8),i=e%8;return!!(r[n]>>i&1)}function eM(t,e){return(Array.isArray(t)?t:[t]).map(n=>pr(n||{constant:0},e))}function tM(t,e){return(t**e-1)/(t-1)}function q0(t,e,r){return{level:t.level+1,x:t.x*2+(e&1),y:t.y*2+(e>>1&1),z:r==="OCTREE"?t.z*2+(e>>2&1):0}}function V0(t){return t==="OCTREE"?X2:K2}function j0(t,e,r){if(t.region){let[n,i,o,s,a,c]=t.region,l=2**e.level,u=(o>=n?o-n:o+2*Math.PI-n)/l,f=(s-i)/l,d=z0(n+u*e.x),m=z0(n+u*(e.x+1)),p=i+f*e.y,g=a,y=c;if(r==="OCTREE"){let x=(c-a)/l;g=a+x*e.z,y=g+x}return{region:[d,p,m,p+f,g,y]}}if(t.box){if(t.s2VolumeInfo)return rM(t,e,r);if(t.extensions?.["3DTILES_shape_cylinder_region"])return{...t,box:[...t.box]};let n=t.box,i=2**e.level,o=-1+(2*e.x+1)/i,s=-1+(2*e.y+1)/i,a=-1+(2*e.z+1)/i,c=r==="OCTREE";return{box:[...[n[0]+n[3]*o+n[6]*s+(c?n[9]*a:0),n[1]+n[4]*o+n[7]*s+(c?n[10]*a:0),n[2]+n[5]*o+n[8]*s+(c?n[11]*a:0)],n[3]/i,n[4]/i,n[5]/i,n[6]/i,n[7]/i,n[8]/i,c?n[9]/i:n[9],c?n[10]/i:n[10],c?n[11]/i:n[11]]}}throw new Error(`Unsupported implicit 3D Tiles bounding volume: ${JSON.stringify(t)}`)}function rM(t,e,r){let n=t.s2VolumeInfo,i=fr(n.token),o=xa(i,e.level,e.x,e.y),s=2**e.level,a=(n.maximumHeight-n.minimumHeight)/s,c={token:tn(o),minimumHeight:n.minimumHeight+(r==="OCTREE"?a*e.z:0),maximumHeight:n.minimumHeight+(r==="OCTREE"?a*(e.z+1):a*s)},l=t.extensions?{...t.extensions}:void 0;return l?.["3DTILES_bounding_volume_S2"]&&(l["3DTILES_bounding_volume_S2"]=c),l?.["3DTILES_shape_s2"]&&(l["3DTILES_shape_s2"]=c),{...t,...l?{extensions:l}:{},s2VolumeInfo:c,box:Hi(c)}}function z0(t){let e=t;for(;e>Math.PI;)e-=2*Math.PI;for(;e<-Math.PI;)e+=2*Math.PI;return e}function nM(t){if(!t)return tt.EMPTY;let e=t.split("?")[0].split(".").pop()?.toLowerCase();switch(e){case"pnts":return tt.POINTCLOUD;case"i3dm":case"b3dm":case"glb":case"gltf":return tt.SCENEGRAPH;default:return e||tt.EMPTY}}function iM(t){if(t.subdivisionScheme!=="QUADTREE"&&t.subdivisionScheme!=="OCTREE")throw new Error(`Unsupported implicit subdivision scheme: ${t.subdivisionScheme}`);if(!Number.isInteger(t.subtreeLevels)||t.subtreeLevels<1)throw new Error("Implicit subtreeLevels must be a positive integer");if(!Number.isInteger(t.maximumLevel)||t.maximumLevel<0)throw new Error("Implicit availableLevels must describe at least the root level")}var oM={draco:!1,meshopt:!1,dds:!1,ktx2:!1},sM=32,Yi=class{type=fe.TILES3D;loader;url;basePath;tileset=null;loadOptions;coreApi;contentFormats={...oM};asset;properties;extras;credits;metadata;queryParams={};tileUrlCache=new Map;tileContentHeaders=new WeakMap;nestedTilesetRoots=new WeakMap;packageNamespaces=new WeakMap;nextPackageNamespace=0;implicitSubtreeCache;implicitTilingStats={requestedSubtrees:0,loadedSubtrees:0,cacheHits:0,materializedTiles:0};destroyed=!1;extensionsUsed=[];resolver;rootTileset;spatialTransformer;preparedRootHeader;constructor(e,r={}){let n=aM(e);this.rootTileset=H0(e)?null:e,this.tileset=this.rootTileset,this.loader=n.loader,this.url=n.url,this.basePath=n.basePath||Ae.dirname(n.url),this.resolver=n.resolver,this.coreApi=n.coreApi,this.loadOptions=r;let i=Number(r["3d-tiles"]?.maximumCachedSubtrees),o=Number.isFinite(i)?Math.max(0,Math.floor(i)):sM;this.implicitSubtreeCache=new Rr({maxEntries:o})}destroy(){this.destroyed=!0,this.tileUrlCache.clear(),this.implicitSubtreeCache.clear()}async initialize(){if(!this.rootTileset){let e=this.loadOptions[this.loader.id]||{};this.rootTileset=await this.loadRootData(this.url,{...this.loadOptions,[this.loader.id]:{...e,isTileset:!0}})}if(this.tileset=this.rootTileset,this.rootTileset.queryString){let e=new URLSearchParams(this.rootTileset.queryString);for(let[r,n]of e.entries())this.setQueryParameter(r,n)}if(this.asset=this.rootTileset.asset,!this.asset)throw new Error("Tileset must have an asset property.");if(this.rootTileset.formatVersion!=="2.0-draft"&&this.asset.version!=="0.0"&&this.asset.version!=="1.0"&&this.asset.version!=="1.1")throw new Error("The tileset must be 3D Tiles version 0.0, 1.0, 1.1, or 2.0-draft.");"tilesetVersion"in this.asset&&this.setQueryParameter("v",this.asset.tilesetVersion),this.properties=this.rootTileset.properties,this.extras=this.rootTileset.extras,this.credits={attributions:[]},this.extensionsUsed.splice(0,this.extensionsUsed.length,...this.rootTileset.extensionsUsed||[]),this.metadata={type:this.type,loader:this.loader,url:this.url,basePath:this.basePath,tileset:this.rootTileset,lodMetricType:this.rootTileset.lodMetricType,lodMetricValue:this.rootTileset.lodMetricValue,refine:this.rootTileset.root?.refine,spatialReference:gi(this.rootTileset)}}getMetadata(){if(!this.metadata)throw new Error("Tiles3DSource has not been initialized");return this.metadata}async getRootTileset(){return this.getMetadata().tileset}async prepareTileset(e){let r=e.spatialReference;if(r.status==="unresolved")throw new Error(r.warnings[0]||"3D Tiles spatial operations cannot be resolved from the supplied metadata and options");r.status!=="transformable"&&r.status!=="transformed"||(this.spatialTransformer||=new Pt(r,e.options.spatial),e.spatialReference=er(r),this.preparedRootHeader=this.transformTileHeader(this.getMetadata().tileset.root,new q))}initializeTileHeaders(e,r,n){let i=n?r.root:this.preparedRootHeader||r.root,o=new Ne(e,i,n||void 0);n&&(n.children.push(o),o.depth=n.depth+1);let s=[o];for(;s.length>0;){let a=s.pop();e.stats.get("Tiles In Tileset(s)").incrementCount();let c=a.header.children||[];for(let l of c){let h=new Ne(e,l,a);if(h.contentUrl?.includes("?session=")){let f=new URL(h.contentUrl).searchParams.get("session");f&&this.setQueryParameter("session",f)}a.children.push(h),h.depth=a.depth+1,s.push(h)}}return o}createTraverser(e){return new mi(e)}async loadTileContent(e){let r=(e.contentUrls||[e.contentUrl]).filter(Boolean),n=this.tileContentHeaders.get(e),i=n||(Array.isArray(e.header?.content)?e.header.content:e.header?.content?[e.header.content]:[]);n||this.tileContentHeaders.set(e,i);let o=this.loadOptions[this.loader.id]||{},s={...this.loadOptions,[this.loader.id]:{...o,isTileset:"auto",assetGltfUpAxis:this.asset&&this.asset.gltfUpAxis||"Y",_tilesetOptions:{spatialReference:e.header?._spatialReference||e.tileset?.spatialReference,spatialOptions:e.tileset?.options.spatial,spatialTransform:e.header?._spatialTransform}}},a=await Promise.all(r.map((l,h)=>{let u=i[h]||{},f=u.extensions?.["3DTILES_content_gltf_vector"],d=u._vectorContent||(f?.vector===!0?{clip:f.clip===!0}:void 0),m=d?{...s,[this.loader.id]:{...s[this.loader.id],vectorContent:d}}:s;return this.loadContentResource(this.getTileUrl(l),u._resource,m)}));e.contents=a,e.content=a[0]||null;let c=a.filter(l=>l?.shape==="tileset3d");return{loaded:!0,contents:a,nestedTileset:c[0],nestedTilesets:c}}transformTileHeader(e,r=new q){return this.spatialTransformer?this.transformTileHeaderWithTransformer(e,this.spatialTransformer,r):e}transformTileHeaderWithTransformer(e,r,n,i){let o=e.transform?new q(e.transform):new q,s=new q(n).multiplyRight(o),a=Array.isArray(e.content)?e.content.map(c=>this.transformContentHeader(c,s,r)):e.content?this.transformContentHeader(e.content,s,r):e.content;return{...e,transform:void 0,boundingVolume:e.boundingVolume?r.transformBoundingVolume(e.boundingVolume,s):e.boundingVolume,_spatialReference:i,_spatialTransform:s.toArray(),content:a,children:Array.isArray(e.children)?e.children.map(c=>this.transformTileHeaderWithTransformer(c,r,s,i)):e.children}}transformContentHeader(e,r,n){return{...e,boundingVolume:e.boundingVolume?n.transformBoundingVolume(e.boundingVolume,r):e.boundingVolume}}async loadTileChildren(e,r){let n=e.header.implicitSubtree;if(!n)return{loaded:!1,tileCount:0,childSubtreeCount:0};let i=this.getTileUrl(n.subtreeUrl),o=await this.loadImplicitSubtreeResource(i,n.resource);if(this.destroyed||e.isDestroyed())return{loaded:!1,tileCount:0,childSubtreeCount:0};let s=$i(o,{...n,subtreeUrl:i}),a=e.header._spatialReference,c=a?new Pt(a,e.tileset.options.spatial):this.spatialTransformer,l=c?this.transformTileHeaderWithTransformer(s.root,c,new q,a):s.root;e.applyImplicitSubtreeHeader(l);let h=this.initializeMaterializedChildren(e.tileset,e,l.children);return this.implicitTilingStats.loadedSubtrees++,this.implicitTilingStats.materializedTiles+=h,{loaded:!0,tileCount:s.tileCount,childSubtreeCount:s.childSubtreeCount}}async loadTileChildrenForTraversal(e,r){W0(r);let n=await this.loadTileChildren(e,{});return W0(r),n}getImplicitTilingStats(){return{...this.implicitTilingStats,cachedSubtrees:this.implicitSubtreeCache.size-this.implicitSubtreeCache.pendingSize,pendingSubtrees:this.implicitSubtreeCache.pendingSize}}getTileUrl(e){if(e.startsWith("data:"))return e;let r=this.tileUrlCache.get(e);if(r)return r;if(!Object.keys(this.queryParams).length)return this.tileUrlCache.set(e,e),e;let[n,i=""]=e.split("?"),o=new URLSearchParams(i);for(let[c,l]of Object.entries(this.queryParams))o.has(c)||o.set(c,l);let s=o.toString(),a=s?`${n}?${s}`:n;return this.tileUrlCache.set(e,a),a}setQueryParameter(e,r){this.queryParams[e]!==r&&(this.queryParams[e]=r,this.tileUrlCache.clear())}getViewState(e){if(!e)return{asset:this.asset,properties:this.properties,extras:this.extras,credits:this.credits};let{center:r}=e.boundingVolume,n;return r&&(r[0]!==0||r[1]!==0||r[2]!==0)?(n=new M,G.WGS84.cartesianToCartographic(r,n)):n=new M(0,0,-G.WGS84.radii[0]),{asset:this.asset,properties:this.properties,extras:this.extras,credits:this.credits,boundingVolume:e.boundingVolume,cartographicCenter:n,cartesianCenter:r,zoom:yh(e.boundingVolume,n)}}hasExtension(e){return this.extensionsUsed.includes(e)}onTileLoaded(e,r,n){let o=(r.contents.length?r.contents:[r.content]).flatMap(c=>c?.gltf?.extensionsRemoved||[]);o.includes("KHR_draco_mesh_compression")&&(this.contentFormats.draco=!0),o.includes("EXT_meshopt_compression")&&(this.contentFormats.meshopt=!0),o.includes("KHR_texture_basisu")&&(this.contentFormats.ktx2=!0);let s=n.nestedTilesets||(n.nestedTileset?[n.nestedTileset]:[]),a=this.nestedTilesetRoots.get(r)||[];for(let[c,l]of s.entries()){let h=a[c];if(h&&r.children.includes(h))continue;let u=a.slice(c+1).find(d=>r.children.includes(d)),f=e._initializeTileHeaders(this.prepareNestedTileset(e,l),r);u&&(r.children.splice(r.children.indexOf(f),1),r.children.splice(r.children.indexOf(u),0,f)),a[c]=f,this.nestedTilesetRoots.set(r,a)}}prepareNestedTileset(e,r){let n=r.spatialMetadata,i=e.spatialReference;if(n?.status==="unresolved"||n?.crs.state==="unknown")throw new Error(n.warnings[0]||"Nested 3D Tiles CRS is explicitly unresolved and cannot be placed in the parent frame");if(!n||!n.sourceCrs)return this.spatialTransformer&&(i.status==="transformable"||i.status==="transformed")?{...r,spatialMetadata:i,root:this.transformTileHeaderWithTransformer(r.root,this.spatialTransformer,new q,i)}:Ea(r,i);let o=i.coordinateEpoch,s=n.coordinateEpoch;if(o!==void 0&&s!==void 0&&o!==s)throw new Error(`Nested 3D Tiles coordinate epoch ${s} differs from parent epoch ${o}; epoch-aware transformation is unavailable`);let a=i.targetCrs||i.sourceCrs;if(!a)return Ea(r,n);let c=It(n,{...e.options.spatial,outputCoordinates:"target-crs",targetCrs:a});if(c.status==="unresolved")throw new Error(c.warnings[0]||"Nested 3D Tiles CRS cannot be resolved in the parent output frame");if(c.status==="native")return Ea(r,c);let l=new Pt(c,e.options.spatial);return{...r,spatialMetadata:c,root:this.transformTileHeaderWithTransformer(r.root,l,new q,c)}}async loadWithCoreApi(e,r,n=this.loader){if(!this.coreApi)throw new Error("Tiles3DSource requires an injected coreApi to load tileset data");return await this.coreApi.load(e,n,r)}async loadRootData(e,r){return this.resolver?await this.resolver.loadRoot(e,this.loader,r):await this.loadWithCoreApi(e,r)}async loadResourceData(e,r,n=this.loader){return this.resolver?await this.resolver.loadResource(e,n,r):await this.loadWithCoreApi(e,r,n)}async loadContentResource(e,r,n){if(!r)return await this.loadResourceData(e,n);let i=r.files[r.fileIndex];if(!i)throw new Error(`3D Tiles package references missing file ${r.fileIndex}`);if(i.uri)return await this.loadResourceData(this.getTileUrl(i.uri),n);if(!this.coreApi)throw new Error("Tiles3DSource requires an injected coreApi to parse embedded package data");let o=await this.getPackageFileData(i),a=`gltf-package://${this.getPackageNamespace(r.files)}/${r.fileIndex}`,c=i.name||"content",l=c.lastIndexOf("/"),h=l>=0?`${a}/${c.slice(0,l)}`:a;return await this.coreApi.parse(o,this.loader,n,{url:`${a}/${c}`,filename:c,baseUrl:h,loaders:[this.loader],coreApi:this.coreApi,_parse:this.coreApi.parse,_tiles3dPackageFiles:r.files,fetch:async(u,f)=>{let d=u.startsWith(`${a}/`)?u.slice(a.length+1):u,m=r.files.find(g=>g.name===d||g.originalUri===d);if(!m)throw new Error(`3D Tiles glTF package does not contain file ${d}`);if(m.uri)return await this.coreApi.fetchFile(this.getTileUrl(m.uri),f);let p=await this.getPackageFileData(m);return new Response(p,{headers:{"content-type":m.mimeType}})}})}getPackageNamespace(e){let r=this.packageNamespaces.get(e);if(r!==void 0)return r;let n=this.nextPackageNamespace++;return this.packageNamespaces.set(e,n),n}async getPackageFileData(e){if(e.data)return Bn(e.data,e.byteOffset,e.byteLength);if(e.bufferUri&&this.coreApi){let r=await this.coreApi.fetchFile(this.getTileUrl(e.bufferUri));if(!r.ok)throw new Error(`Failed to fetch 3D Tiles package buffer: HTTP ${r.status}`);let n=await r.arrayBuffer();return Bn(n,e.byteOffset,e.byteLength)}throw new Error("3D Tiles package file has no available byte source")}async loadImplicitSubtreeResource(e,r){let n=this.implicitSubtreeCache.get(e);if(n)return this.implicitTilingStats.cacheHits++,await n;this.implicitTilingStats.requestedSubtrees++;let i=this.loadOptions[this.loader.id]||{};return await this.implicitSubtreeCache.getOrLoad(e,async()=>{let o={...this.loadOptions,[this.loader.id]:{...i,isTileset:!1,isSubtree:!0}};return await(r?this.loadContentResource(e,r,o):this.loadResourceData(e,o))})}initializeMaterializedChildren(e,r,n){let i=0,o=[{parentTile:r,childHeaders:n}];for(;o.length>0;){let s=o.pop();for(let a of s.childHeaders){let c=new Ne(e,a,s.parentTile);s.parentTile.children.push(c),c.depth=s.parentTile.depth+1,e.stats.get("Tiles In Tileset(s)").incrementCount(),i++,a.children?.length&&o.push({parentTile:c,childHeaders:a.children})}}return i}};function W0(t){if(t?.aborted)throw t.reason??new DOMException("The operation was aborted","AbortError")}function H0(t){return!!(t&&typeof t=="object"&&"url"in t&&"loader"in t&&!("type"in t))}function aM(t){return H0(t)?{...t,basePath:t.basePath||Ae.dirname(t.url)}:{url:t.url,loader:t.loader,basePath:t.basePath||Ae.dirname(t.url),resolver:t.resolver,coreApi:t.coreApi}}function Ea(t,e){let r=n=>({...n,_spatialReference:e,children:Array.isArray(n.children)?n.children.map(r):n.children});return{...t,spatialMetadata:e,root:r(t.root)}}var Ki=class{frameNumberMap=new Map;register(e,r){let n=this.frameNumberMap.get(e)||new Map,i=n.get(r)||0;n.set(r,i+1),this.frameNumberMap.set(e,n)}deregister(e,r){let n=this.frameNumberMap.get(e);if(!n)return;let i=n.get(r)||1;n.set(r,i-1)}isZero(e,r){return(this.frameNumberMap.get(e)?.get(r)||0)===0}};var Ta={REQUESTED:"REQUESTED",COMPLETED:"COMPLETED",ERROR:"ERROR"},Xi=class{_statusMap;pendingTilesRegister=new Ki;constructor(){this._statusMap={}}add(e,r,n,i){if(!this._statusMap[r]){let{frameNumber:o,viewport:{id:s}}=i;this._statusMap[r]={request:e,callback:n,key:r,frameState:i,status:Ta.REQUESTED},this.pendingTilesRegister.register(s,o),e().then(a=>{this._statusMap[r].status=Ta.COMPLETED;let{frameNumber:c,viewport:{id:l}}=this._statusMap[r].frameState;this.pendingTilesRegister.deregister(l,c),this._statusMap[r].callback(a,i)}).catch(a=>{this._statusMap[r].status=Ta.ERROR;let{frameNumber:c,viewport:{id:l}}=this._statusMap[r].frameState;this.pendingTilesRegister.deregister(l,c),n(a)})}}update(e,r){if(this._statusMap[e]){let{frameNumber:n,viewport:{id:i}}=this._statusMap[e].frameState;this.pendingTilesRegister.deregister(i,n);let{frameNumber:o,viewport:{id:s}}=r;this.pendingTilesRegister.register(s,o),this._statusMap[e].frameState=r}}find(e){return this._statusMap[e]}hasPendingTiles(e,r){return!this.pendingTilesRegister.isZero(e,r)}};var Zi=class extends rt{_tileManager;constructor(e){super(e),this._tileManager=new Xi}traversalFinished(e){return!this._tileManager.hasPendingTiles(e.viewport.id,this._frameNumber||0)}shouldRefine(e,r){return e._lodJudge=di(e,r),e._lodJudge==="DIG"}updateChildTiles(e,r){let n=e.header.children||[],i=e.children;for(let o of n){let s=`${o.id}-${r.viewport.id}`,a=i&&i.find(c=>c.id===s||c.header?.id===o.id);if(a)a&&this.updateTile(a,r);else{let c=()=>this._loadTile(e,o.id,r);this._tileManager.find(s)?this._tileManager.update(s,r):this._tileManager.add(c,s,h=>this._onTileLoad(h,e,s),r)}}return!1}async _loadTile(e,r,n){if(!e.tileset.source.loadChildTileHeader)throw new Error("I3S source does not support child tile header loading");return await e.tileset.source.loadChildTileHeader(e,r,n)}_onTileLoad(e,r,n){if(e instanceof Error){r.tileset._onSourceError(e,r);return}let i=new Ne(r.tileset,e,r,n);r.children.push(i);let o=this._tileManager.find(i.id).frameState;this.updateTile(i,o),this._frameNumber===o.frameNumber&&(this.traversalFinished(o)||new Date().getTime()-this.lastUpdate>this.updateDebounceTime)&&this.executeTraversal(i,o)}};var Mr=class{spatialReference;targetCoordinateFrame;positionTransformer;sourceToGeographicTransformer;geographicToTargetTransformer;sourceCoordinateFrame;sourceVerticalUnitScale;elevationMode;elevationOffset;elevationProvider;providerUnitScale;providerHeightTransformer;constructor(e,r={}){if(e.status!=="transformable"&&e.status!=="transformed")throw new Error("I3SSpatialTransformer requires a requested, transformable spatial output");let n=e.targetCrs||e.sourceCrs;if(!n)throw new Error("I3S spatial transformation requires a target CRS");if(this.positionTransformer=new We(e,r),this.sourceCoordinateFrame=e.coordinateFrame,this.sourceVerticalUnitScale=e.verticalUnitScale,this.elevationMode=e.elevationMode,this.elevationOffset=(e.elevationOffset||0)*e.elevationUnitScale,this.elevationProvider=cM(this.elevationMode,r),this.elevationProvider&&(typeof this.elevationProvider.sampleElevations!="function"||typeof this.elevationProvider.getElevationRange!="function"))throw new Error("An I3S elevation provider must implement sampleElevations() and getElevationRange()");let i=Br(this.elevationProvider?.unit||"meter");if(this.elevationProvider&&i===void 0)throw new Error(`Unsupported elevation-provider unit ${this.elevationProvider.unit}`);this.providerUnitScale=i||1,this.targetCoordinateFrame=xe(n),this.spatialReference=er(e);let o=Ie({sourceCrs:e.sourceCrs,heightReference:e.heightReference,coordinateFrame:e.coordinateFrame,axisOrder:e.axisOrder,provenance:e.provenance},{targetCrs:"EPSG:4326"});if(this.sourceToGeographicTransformer=new We(o),gr(this.elevationMode)){if(!this.elevationProvider){let c=this.elevationMode==="relativeToScene"?"scene":"terrain";throw new Error(`I3S elevation mode ${this.elevationMode} requires a ${c} elevation provider`)}if(e.heightReference==="unknown")throw new Error(`I3S elevation mode ${this.elevationMode} requires a known source height reference`);let a=this.elevationProvider.heightReference||e.heightReference;if(a!==e.heightReference){if(e.heightReference!=="ellipsoidal"&&e.heightReference!=="orthometric")throw new Error("Converting elevation-provider heights requires an ellipsoidal or orthometric source height reference");let c=Ie({sourceCrs:"EPSG:4326",heightReference:a,coordinateFrame:"geographic",axisOrder:"xyz",provenance:"caller-override"},{targetCrs:"EPSG:4326",targetHeightReference:e.heightReference,geoidModel:r.geoidModel});this.providerHeightTransformer=new We(c,r)}}let s=Ie({sourceCrs:"EPSG:4326",heightReference:e.heightReference,coordinateFrame:"geographic",axisOrder:"xyz",provenance:"format-default"},{targetCrs:n,targetHeightReference:e.targetHeightReference,geoidModel:r.geoidModel});this.geographicToTargetTransformer=new We(s,r)}transformPosition(e){let r=this.placeSourcePositionsSync(e),n=this.positionTransformer.transformPosition([r[0],r[1],r[2]]);return[n[0],n[1],n[2]]}async transformPositionAsync(e){let r=await this.placeSourcePositions(e),n=this.positionTransformer.transformPosition([r[0],r[1],r[2]]);return[n[0],n[1],n[2]]}transformPlacedPosition(e){let r=this.positionTransformer.transformPosition([e[0],e[1],e[2]]);return[r[0],r[1],r[2]]}transformSourcePositionToGeographic(e){let r=this.placeSourcePositionsSync(e),n=this.sourceToGeographicTransformer.transformPosition([r[0],r[1],r[2]]);return[n[0],n[1],n[2]]}async transformSourcePositionToGeographicAsync(e){let r=await this.placeSourcePositions(e),n=this.sourceToGeographicTransformer.transformPosition([r[0],r[1],r[2]]);return[n[0],n[1],n[2]]}transformPositions(e,r){let n=this.placeSourcePositionsSync(e),i=this.placeSourcePositionsSync(r);return this.transformPlacedPositions(n,i)}async transformPositionsAsync(e,r){let n=new Float64Array(e.length+3);n.set(Array.from(e),0),n.set(Array.from(r).slice(0,3),e.length);let i=await this.placeSourcePositions(n);return this.transformPlacedPositions(i.subarray(0,e.length),i.subarray(e.length))}transformPlacedPositions(e,r){let n=this.transformPlacedPosition(r),i=new Float32Array(e.length),o=Float64Array.from(e);for(let c=0;c<e.length;c+=3){let l=this.transformPlacedPosition([e[c],e[c+1],e[c+2]]);i[c]=l[0]-n[0],i[c+1]=l[1]-n[1],i[c+2]=l[2]-n[2]}let s=this.targetCoordinateFrame==="geographic",a=s?new q:new q().translate(n);return{positions:i,sourcePositions:o,origin:n,cartographicOrigin:s?n:[0,0,0],coordinateSystem:s?"lnglat-offsets":"cartesian",modelMatrix:a}}transformNormals(e,r,n="earth-centered"){let i=new Float32Array(e.length);for(let o=0;o<e.length;o+=3){let s=this.sourceToGeographicTransformer.transformPosition([r[o],r[o+1],r[o+2]]),a=new M([e[o],e[o+1],e[o+2]]).normalize(),c=n==="earth-centered"?a:Z0(a,s),l=this.transformEcefNormal(c,s);i.set(l,o)}return i}transformBoundingVolume(e){let n=this.getGeographicBoundSamples(e).map(i=>this.geographicToTargetTransformer.transformPosition(i));return this.targetCoordinateFrame==="geographic"?{region:Rt(n)}:{box:Dt(n)}}async transformBoundingVolumeAsync(e){let n=(await this.getGeographicBoundSamplesAsync(e)).map(i=>this.geographicToTargetTransformer.transformPosition(i));return this.targetCoordinateFrame==="geographic"?{region:Rt(n)}:{box:Dt(n)}}transformBoundingVolumeToGeographic(e){return{region:Rt(this.getGeographicBoundSamples(e))}}async transformBoundingVolumeToGeographicAsync(e){return{region:Rt(await this.getGeographicBoundSamplesAsync(e))}}transformBoundingVolumeToGeocentric(e){let r=this.getGeographicBoundSamples(e).map(n=>Array.from(G.WGS84.cartographicToCartesian(new M(n))));return{box:Dt(r)}}async transformBoundingVolumeToGeocentricAsync(e){let r=(await this.getGeographicBoundSamplesAsync(e)).map(n=>Array.from(G.WGS84.cartographicToCartesian(new M(n))));return{box:Dt(r)}}transformBoundingSphereToGeographic(e){let r=e.mbs?.length?Array.from(e.mbs).slice(0,3):e.obb?Array.from(e.obb.center).slice(0,3):null;if(!r)throw new Error("I3S spatial transformation requires an MBS or OBB bound");let n=this.placeSourcePositionsSync(r),i=this.sourceToGeographicTransformer.transformPosition(Array.from(n)),o=e.mbs?.length?e.mbs[3]:Math.hypot(...Array.from(e.obb.halfSize).slice(0,3));return[i[0],i[1],i[2],o]}async transformBoundingSphereToGeographicAsync(e){return $0(await this.getGeographicBoundSamplesAsync(e))}async transformBoundsAsync(e){let r=await this.getGeographicBoundSamplesAsync(e),n=r.map(o=>Array.from(G.WGS84.cartographicToCartesian(new M(o)))),i=r.map(o=>this.geographicToTargetTransformer.transformPosition(o));return{boundingVolume:{box:Dt(n)},spatialBoundingVolume:this.targetCoordinateFrame==="geographic"?{region:Rt(i)}:{box:Dt(i)},i3sLodMbs:gr(this.elevationMode)?$0(r):this.transformBoundingSphereToGeographic(e)}}async transformPointCloudBoundsAsync(e){let r=await this.getGeographicBoundSamplesAsync(e),n=r.map(i=>this.geographicToTargetTransformer.transformPosition(i));return{boundingVolume:{region:Rt(r)},spatialBoundingVolume:this.targetCoordinateFrame==="geographic"?{region:Rt(n)}:{box:Dt(n)}}}getGeographicBoundSamples(e){let r=Y0(e,this.sourceCoordinateFrame,this.sourceToGeographicTransformer,this.sourceVerticalUnitScale);if(!r.length)throw new Error("I3S spatial transformation requires an MBS or OBB bound");let n=this.placeSourcePositionsSync(r.flat(),!0),i=ba(n);return this.sourceCoordinateFrame==="geographic"?i:i.map(o=>this.sourceToGeographicTransformer.transformPosition(o))}async getGeographicBoundSamplesAsync(e){let r=Y0(e,this.sourceCoordinateFrame,this.sourceToGeographicTransformer,this.sourceVerticalUnitScale);if(!r.length)throw new Error("I3S spatial transformation requires an MBS or OBB bound");if(gr(this.elevationMode)){let i=this.sourceCoordinateFrame==="geographic"?r:r.map(o=>this.sourceToGeographicTransformer.transformPosition(o));return await this.placeGeographicBoundSamples(i)}let n=ba(await this.placeSourcePositions(r.flat(),!0));return this.sourceCoordinateFrame==="geographic"?n:n.map(i=>this.sourceToGeographicTransformer.transformPosition(i))}async placeGeographicBoundSamples(e){let n=await this.elevationProvider.getElevationRange(lM(e)),i=n.minimum*this.providerUnitScale,o=n.maximum*this.providerUnitScale;if(!Number.isFinite(i)||!Number.isFinite(o)||i>o)throw new Error("Elevation provider returned an invalid range; minimum and maximum must be finite and ordered");let s=e.map(h=>h[2]),a=Math.min(...s),c=Math.max(...s),l=[];for(let[h,u]of e){let f=this.providerHeightTransformer?this.providerHeightTransformer.transformPosition([h,u,i])[2]:i,d=this.providerHeightTransformer?this.providerHeightTransformer.transformPosition([h,u,o])[2]:o,m=Math.min(f,d),p=Math.max(f,d),g=this.elevationMode==="onTheGround"?m:m+a+this.elevationOffset,y=this.elevationMode==="onTheGround"?p:p+c+this.elevationOffset;l.push([h,u,g],[h,u,y])}return l}placeSourcePositionsSync(e,r=!1){if(gr(this.elevationMode))throw new Error(`I3S elevation mode ${this.elevationMode} requires asynchronous surface placement`);let n=Float64Array.from(e),i=this.elevationMode==="absoluteHeight"?this.elevationOffset:0;for(let o=2;o<n.length;o+=3)n[o]=n[o]*(r?1:this.sourceVerticalUnitScale)+i;return n}async placeSourcePositions(e,r=!1){if(!gr(this.elevationMode))return this.placeSourcePositionsSync(e,r);let n=Float64Array.from(e),i=ba(n).map(s=>{let a=this.sourceToGeographicTransformer.transformPosition(s);return[a[0],a[1]]}),o=await this.elevationProvider.sampleElevations(i);if(o.length!==i.length)throw new Error(`Elevation provider returned ${o.length} heights for ${i.length} positions`);for(let s=0;s<i.length;s++){let a=o[s]*this.providerUnitScale;if(!Number.isFinite(a))throw new Error(`Elevation provider returned a non-finite height at index ${s}`);let[c,l]=i[s],h=this.providerHeightTransformer?this.providerHeightTransformer.transformPosition([c,l,a])[2]:a,u=n[s*3+2]*(r?1:this.sourceVerticalUnitScale);n[s*3+2]=this.elevationMode==="onTheGround"?h:h+u+this.elevationOffset}return n}transformEcefNormal(e,r){if(this.targetCoordinateFrame==="geocentric")return e.normalize();if(this.targetCoordinateFrame==="geographic")return uM(e,r).normalize();let n=G.WGS84.cartographicToCartesian(new M(r)),i=[];for(let s of hM()){let a=G.WGS84.cartesianToCartographic(new M(n).add(s)),c=G.WGS84.cartesianToCartographic(new M(n).subtract(s)),l=this.geographicToTargetTransformer.transformPosition(a),h=this.geographicToTargetTransformer.transformPosition(c);i.push((l[0]-h[0])/2,(l[1]-h[1])/2,(l[2]-h[2])/2)}let o=new $(i);if(Math.abs(o.determinant())<1e-12)throw new Error("Cannot transform an I3S normal through a singular local projection");return o.invert().transpose(),new M(e).transformByMatrix3(o).normalize()}};function cM(t,e){return t==="relativeToScene"?e.sceneElevationProvider:gr(t)?e.terrainElevationProvider:void 0}function gr(t){return t==="onTheGround"||t==="relativeToGround"||t==="relativeToScene"}function ba(t){if(t.length%3!==0)throw new Error("I3S position arrays must contain complete XYZ tuples");let e=[];for(let r=0;r<t.length;r+=3)e.push([t[r],t[r+1],t[r+2]]);return e}function lM(t){let e=Rt(t);return{west:e[0]*180/Math.PI,south:e[1]*180/Math.PI,east:e[2]*180/Math.PI,north:e[3]*180/Math.PI}}function $0(t){if(!t.length)throw new Error("I3S spatial transformation requires at least one bound sample");let e=t.map(o=>G.WGS84.cartographicToCartesian(new M(o))),r=new M;for(let o of e)r.add(o);r.scale(1/e.length);let n=0;for(let o of e)n=Math.max(n,new M(o).subtract(r).magnitude());let i=G.WGS84.cartesianToCartographic(r);return[i[0],i[1],i[2],n]}function Y0(t,e,r,n){let i=t.obb;if(i){let c=Array.from(i.center).slice(0,3);c[2]*=n;let l=Array.from(i.halfSize).slice(0,3),h=new De().fromArray(Array.from(i.quaternion)),u=[new M([l[0],0,0]).transformByQuaternion(h),new M([0,l[1],0]).transformByQuaternion(h),new M([0,0,l[2]]).transformByQuaternion(h)];if(e==="geographic"){let f=r.transformPosition(c),d=G.WGS84.cartographicToCartesian(new M(f)),m=t.normalReferenceFrame==="vertex-reference-frame"?u.map(p=>Z0(p,f)):u;return K0().map(p=>{let g=new M(d);for(let y=0;y<3;y++)g.add(new M(m[y]).scale(p[y]));return Array.from(G.WGS84.cartesianToCartographic(g))})}return K0().map(f=>{let d=new M(c);for(let m=0;m<3;m++)d.add(new M(u[m]).scale(f[m]));return Array.from(d)})}let o=t.mbs?Array.from(t.mbs):[];if(o.length<4)return[];let s=o.slice(0,3);s[2]*=n;let a=o[3];if(e==="geographic"){let c=r.transformPosition(s),l=G.WGS84.cartographicToCartesian(new M(c));return X0().map(h=>Array.from(G.WGS84.cartesianToCartographic(new M(l).add(new M(h).scale(a)))))}return X0().map(c=>Array.from(new M(s).add(new M(c).scale(a))))}function K0(){return[-1,1].flatMap(t=>[-1,1].flatMap(e=>[-1,1].map(r=>[t,e,r])))}function X0(){return[[1,0,0],[-1,0,0],[0,1,0],[0,-1,0],[0,0,1],[0,0,-1]]}function hM(){return[new M([1,0,0]),new M([0,1,0]),new M([0,0,1])]}function Z0(t,e){let r=e[0]*Math.PI/180,n=e[1]*Math.PI/180,i=new M([-Math.sin(r),Math.cos(r),0]),o=new M([-Math.sin(n)*Math.cos(r),-Math.sin(n)*Math.sin(r),Math.cos(n)]),s=new M([Math.cos(n)*Math.cos(r),Math.cos(n)*Math.sin(r),Math.sin(n)]);return i.scale(t[0]).add(o.scale(t[1])).add(s.scale(t[2]))}function uM(t,e){let r=e[0]*Math.PI/180,n=e[1]*Math.PI/180,i=new M([-Math.sin(r),Math.cos(r),0]),o=new M([-Math.sin(n)*Math.cos(r),-Math.sin(n)*Math.sin(r),Math.cos(n)]),s=new M([Math.cos(n)*Math.cos(r),Math.cos(n)*Math.sin(r),Math.sin(n)]);return new M([i.dot(t),o.dot(t),s.dot(t)])}function Dt(t){let e=[1/0,1/0,1/0],r=[-1/0,-1/0,-1/0];for(let o of t)for(let s=0;s<3;s++)e[s]=Math.min(e[s],o[s]),r[s]=Math.max(r[s],o[s]);let n=e.map((o,s)=>(o+r[s])/2),i=e.map((o,s)=>(r[s]-o)/2);return[n[0],n[1],n[2],i[0],0,0,0,i[1],0,0,0,i[2]]}function Rt(t){let e=t[0][0],r=1/0,n=-1/0,i=1/0,o=-1/0,s=1/0,a=-1/0;for(let c of t){let l=e+va(c[0]-e);r=Math.min(r,l),n=Math.max(n,l),i=Math.min(i,c[1]),o=Math.max(o,c[1]),s=Math.min(s,c[2]),a=Math.max(a,c[2])}return[va(r)*Math.PI/180,i*Math.PI/180,va(n)*Math.PI/180,o*Math.PI/180,s,a]}function va(t){return((t+180)%360+360)%360-180}var fM={draco:!1,meshopt:!1,dds:!1,ktx2:!1},Qi=class{type=fe.I3S;loader;contentLoader;url;basePath;tileset=null;loadOptions;coreApi;contentFormats={...fM};asset;properties;extras;credits;metadata;queryParams={};resolver;rootTileset;spatialTransformer;preparedRootHeader;constructor(e,r={}){let n=mM(e);this.rootTileset=J0(e)?null:e,this.tileset=this.rootTileset,this.loader=n.loader,this.contentLoader=dM(n.loader),this.url=n.url,this.basePath=n.basePath||Ae.dirname(n.url),this.resolver=n.resolver,this.coreApi=n.coreApi,this.loadOptions=r,this.initializeQueryParams(r)}async initialize(){this.rootTileset||(this.rootTileset=await this.loadRootData(this.getTileUrl(this.url),{...this.loadOptions,i3s:{...this.loadOptions.i3s,isTileset:!0}})),this.tileset=this.rootTileset,this.rootTileset.root&&typeof this.rootTileset.root.then=="function"&&(this.rootTileset.root=await this.rootTileset.root),this.metadata={type:this.type,loader:this.loader,url:this.url,basePath:this.basePath,tileset:this.rootTileset,lodMetricType:this.rootTileset.lodMetricType,lodMetricValue:this.rootTileset.lodMetricValue,refine:this.rootTileset.root?.refine,spatialReference:pi(this.rootTileset)}}getMetadata(){if(!this.metadata)throw new Error("I3SSource has not been initialized");return this.metadata}async getRootTileset(){return this.getMetadata().tileset}async prepareTileset(e){let r=e.spatialReference;if(r.status==="unresolved")throw new Error(r.warnings[0]||"I3S spatial operations cannot be resolved from the supplied metadata and options");r.status!=="transformable"&&r.status!=="transformed"||(this.spatialTransformer||=new Mr(r,e.options.spatial),e.spatialReference=this.spatialTransformer.spatialReference,this.preparedRootHeader=await this.transformTileHeader(this.getMetadata().tileset.root))}initializeTileHeaders(e,r,n){let i=n?r.root:this.preparedRootHeader||r.root;if(this.spatialTransformer&&!this.preparedRootHeader)throw new Error("I3S spatial root header was not prepared before tile initialization");let o=new Ne(e,i,n||void 0);return n&&(n.children.push(o),o.depth=n.depth+1),o}createTraverser(e){return new Zi(e)}async loadTileContent(e){let r=this.getTileUrl(e.contentUrl),n=this.loader.id,i=this.loadOptions[n]||{},o=this.getMetadata(),s={...this.loadOptions,[n]:{...i,...e.tileset.options.i3s,_tileOptions:{attributeUrls:e.header.attributeUrls,textureUrl:e.header.textureUrl,textureUrls:e.header.textureUrls,textureFormat:e.header.textureFormat,textureLoaderOptions:e.header.textureLoaderOptions,materialDefinition:e.header.materialDefinition,layerType:e.header.layerType,pointRenderer:e.header.pointRenderer,pointSymbol:e.header.pointSymbol,isDracoGeometry:e.header.isDracoGeometry,mbs:e.header.mbs},_tilesetOptions:{store:o.tileset.store,attributeStorageInfo:o.tileset.attributeStorageInfo,fields:o.tileset.fields,spatialReference:e.tileset.spatialReference,spatialOptions:e.tileset.options.spatial},isTileHeader:!1}};e.content=await this.loadResourceData(r,s,this.contentLoader);let a={index:0,uri:e.contentUrl,type:e.header.layerType,payload:e.content,metadata:e.header.metadata||null,boundingVolume:e.boundingVolume,featureIds:e.featureIdSets,renderable:!!e.content};return{loaded:!0,contents:[e.content],contentEntries:[a]}}async loadChildTileHeader(e,r,n){let i=this.getMetadata();if(i.tileset.nodePages||i.tileset.pointNodePages){let l=await i.tileset.nodePagesTile.formTileFromNodePages(r);return await this.transformTileHeader(l)}let o=this.getTileUrl(`${this.url}/nodes/${r}`),s=this.loadOptions.i3s&&typeof this.loadOptions.i3s=="object"?this.loadOptions.i3s:{},a={...this.loadOptions,i3s:{...s,isTileHeader:!0}},c=await this.loadResourceData(o,a);return await this.transformTileHeader(c)}async loadTileChildrenForTraversal(e,r){let n=e.header.children||[],i=0,o=[];for(let a of n){Q0(r);let c=a.id;if(typeof c!="string"&&typeof c!="number")throw new Error("I3S child header is missing its node ID");let l=e.children.find(f=>f.id===String(c)||f.header?.id===c);if(l){o.push(l);continue}let h=await this.loadChildTileHeader(e,String(c),null);Q0(r);let u=new Ne(e.tileset,h,e,String(c));o.push(u),i++}let s=new Set(o);return e.children=[...o,...e.children.filter(a=>!s.has(a))],{loaded:!0,tileCount:i,childSubtreeCount:0}}getTileUrl(e){if(e.startsWith("data:")||!Object.keys(this.queryParams).length)return e;let r=e.indexOf("#"),n=r>=0?e.slice(r):"",i=r>=0?e.slice(0,r):e,o=i.indexOf("?"),s=o===-1?i:i.slice(0,o),a=o===-1?"":i.slice(o+1),c=new URLSearchParams(a),l=new URLSearchParams;for(let[u,f]of Object.entries(this.queryParams))c.has(u)||l.set(u,f);let h=l.toString();return`${s}${a?`?${a}`:""}${h?`${a?"&":"?"}${h}`:""}${n}`}getViewState(e){if(this.spatialTransformer&&e){let o=new M(e.boundingVolume.center),s=new M(e.header.i3sLodMbs.slice(0,3));return this.spatialTransformer.targetCoordinateFrame==="geographic"?{boundingVolume:e.boundingVolume,cartographicCenter:s,cartesianCenter:o,zoom:1}:{boundingVolume:e.boundingVolume,cartographicCenter:s,cartesianCenter:o,zoom:1}}let r=this.getMetadata(),n=r.tileset.fullExtent;if(n){let{xmin:o,xmax:s,ymin:a,ymax:c,zmin:l,zmax:h}=n,u=new M(o+(s-o)/2,a+(c-a)/2,l+(h-l)/2),f=new M;return G.WGS84.cartographicToCartesian(u,f),{cartographicCenter:u,cartesianCenter:f,zoom:ss(n,u,f)}}let i=r.tileset.store?.extent;if(i){let[o,s,a,c]=i,l=new M(o+(a-o)/2,s+(c-s)/2,0),h=new M;return G.WGS84.cartographicToCartesian(l,h),{cartographicCenter:l,cartesianCenter:h,zoom:xh(i,l,h)}}return console.warn("Extent is not defined in the tileset header"),{cartographicCenter:new M,zoom:1}}onTileLoaded(e,r){switch(r.header.isDracoGeometry&&(this.contentFormats.draco=!0),r.header.textureFormat){case"dds":this.contentFormats.dds=!0;break;case"ktx2":this.contentFormats.ktx2=!0;break;default:}}getTilesTotalCount(){return this.getMetadata().tileset?.nodePagesTile?.nodesInNodePages||null}async loadWithCoreApi(e,r,n=this.loader){if(!this.coreApi)throw new Error("I3SSource requires an injected coreApi to load tileset data");return await this.coreApi.load(e,n,r)}async loadRootData(e,r){return this.resolver?await this.resolver.loadRoot(e,this.loader,r):await this.loadWithCoreApi(e,r)}initializeQueryParams(e){for(let[n,i]of Object.entries(e.searchParams||{}))this.queryParams[n]=String(i);let r=e.i3s;if(r&&typeof r=="object"&&"token"in r){let n=r.token;typeof n=="string"&&(this.queryParams.token=n)}}async loadResourceData(e,r,n=this.loader){return this.resolver?await this.resolver.loadResource(e,n,r):await this.loadWithCoreApi(e,r,n)}async transformTileHeader(e){if(!this.spatialTransformer)return e;let r={mbs:e.mbs,obb:e.obb,normalReferenceFrame:this.getMetadata().tileset.store?.normalReferenceFrame},n=await this.spatialTransformer.transformBoundsAsync(r);return{...e,boundingVolume:n.boundingVolume,spatialBoundingVolume:n.spatialBoundingVolume,i3sLodMbs:n.i3sLodMbs}}};function Q0(t){if(t?.aborted)throw t.reason??new DOMException("The operation was aborted","AbortError")}function dM(t){return t.contentLoader||t}function J0(t){return!!(t&&typeof t=="object"&&"url"in t&&"loader"in t&&!("type"in t))}function mM(t){return J0(t)?{...t,basePath:t.basePath||Ae.dirname(t.url)}:{url:t.url,loader:t.loader,basePath:t.basePath||Ae.dirname(t.url),resolver:t.resolver,coreApi:t.coreApi}}var kt=class{index;parent;children;content;error;id;zoom;userData;boundingBox;_abortController;_loader;_loaderId;_isLoaded;_isCancelled;_needsReload;_bbox;constructor(e){this.index=e,this.parent=null,this.children=[],this.content=null,this.error=null,this._loader=void 0,this._abortController=null,this._loaderId=0,this._isLoaded=!1,this._isCancelled=!1,this._needsReload=!1}get bbox(){return this._bbox}set bbox(e){this._bbox||(this._bbox=e,"west"in e?this.boundingBox=[[e.west,e.south],[e.east,e.north]]:this.boundingBox=[[e.left,e.top],[e.right,e.bottom]])}get data(){let e=this._loader;return!this._isCancelled&&e!==void 0?e.then(()=>this.data):this.content}get isLoaded(){return this._isLoaded&&!this._needsReload}get isLoading(){return!!this._loader&&!this._isCancelled}get hasError(){return!!this.error}get needsReload(){return this._needsReload||this._isCancelled}get byteLength(){let e=this.content?this.content.byteLength:0;return Number.isFinite(e)?e:0}async _loadData({getData:e,requestScheduler:r,onLoad:n,onError:i}){let o=(g,y,x)=>{if(x===this._loaderId){if(this._loader=void 0,this.content=g,this.error=y?pM(y):null,this._isCancelled&&!g){this._isLoaded=!1;return}if(this._isLoaded=!0,this._isCancelled=!1,y){i(y,this);return}n(this)}},{index:s,id:a,bbox:c,userData:l,zoom:h}=this,u=this._loaderId;this._abortController=new AbortController;let{signal:f}=this._abortController,d=await r.scheduleRequest(this,()=>1);if(!d){this._isCancelled=!0;return}if(this._isCancelled){d.done();return}let m=null,p;try{m=await e({index:s,id:a,bbox:c,userData:l,zoom:h,signal:f})}catch(g){p=g||!0}finally{d.done()}o(m,p,u)}loadData(e){return this._isLoaded=!1,this._isCancelled=!1,this._needsReload=!1,this.error=null,this._loaderId++,this._loader=this._loadData(e),this._loader}setNeedsReload(){this.isLoading&&(this.abort(),this._loader=void 0),this._needsReload=!0}abort(){this.isLoaded||(this._isCancelled=!0,this._abortController?.abort())}};function pM(t){return t instanceof Error?t:typeof t=="string"?new Error(t):new Error("Tile request failed")}var Pa="never",Ra="no-overlap",hn="best-available",ed={adapter:null,extent:null,tileSize:512,maxZoom:null,minZoom:null,maxCacheSize:100,maxCacheByteSize:null,refinementStrategy:hn,zRange:null,maxRequests:6,debounceTime:0,zoomOffset:0,onTileLoad:()=>{},onTileUnload:()=>{},onTileError:()=>{},tileSource:null},ln=class t{stats;sourceMetadata=null;opts;_requestScheduler;_cache;_dirty;_tiles;_cacheByteSize;_unloadedTileCount;_listeners=new Set;_consumers=new Map;_explicitOptionKeys=new Set;_baseOpts={};_sourceMetadataOverrides={};_maxZoom;_minZoom;_lastTileContext=null;constructor(e){if(this.stats=new ke({id:"Tileset2D",stats:[{name:"Tiles In Cache"},{name:"Cache Size"},{name:"Visible Tiles"},{name:"Selected Tiles"},{name:"Loading Tiles"},{name:"Unloaded Tiles"},{name:"Consumers"}]}),this.opts={...ed,...e,getTileData:e.getTileData||(()=>null),tileSource:e.tileSource},this._requestScheduler=new ft({throttleRequests:this.opts.maxRequests>0||this.opts.debounceTime>0,maxRequests:this.opts.maxRequests,debounceTime:this.opts.debounceTime}),this._cache=new Map,this._tiles=[],this._dirty=!1,this._cacheByteSize=0,this._unloadedTileCount=0,!this.opts.tileSource&&!e.getTileData)throw new Error("Tileset2D requires either `getTileData` or `tileSource`.");this.setOptions(e),this._updateStats(),this.opts.tileSource&&this._initializeTileSource(this.opts.tileSource).catch(()=>{})}static fromTileSource(e,r={}){return new t({...r,tileSource:e})}get tiles(){return this._tiles}get cacheByteSize(){return this._cacheByteSize}get selectedTiles(){return Array.from(this._getSelectedTilesUnion())}get visibleTiles(){let e=this._getVisibleTilesUnion();for(let r of this._getSelectedTilesUnion())e.add(r);return Array.from(e)}get loadingTiles(){return Array.from(this._cache.values()).filter(e=>e.isLoading)}get unloadedTiles(){return Array.from(this._cache.values()).filter(e=>!e.isLoaded)}get maxZoom(){return this._maxZoom}get minZoom(){return this._minZoom}get refinementStrategy(){return this.opts.refinementStrategy||hn}get adapter(){return this.opts.adapter}subscribe(e){return this._listeners.add(e),()=>this._listeners.delete(e)}attachConsumer(e){this._consumers.set(e,{selectedTiles:new Set,visibleTiles:new Set}),this._updateStats()}detachConsumer(e){this._consumers.delete(e),this._pruneRequests(),this._resizeCache(),this._updateStats()}setOptions(e){this._rememberExplicitOptions(e),this._baseOpts={...this._baseOpts,...e};let r=this.opts.maxRequests,n=this.opts.debounceTime;this._applyResolvedOptions(),(r!==this.opts.maxRequests||n!==this.opts.debounceTime)&&(this._requestScheduler=new ft({throttleRequests:this.opts.maxRequests>0||this.opts.debounceTime>0,maxRequests:this.opts.maxRequests,debounceTime:this.opts.debounceTime}))}finalize(){for(let e of this._cache.values())e.isLoading&&e.abort();this._cache.clear(),this._tiles=[],this._consumers.clear(),this._cacheByteSize=0,this._unloadedTileCount=0,this._updateStats()}reloadAll(){let e=this._getSelectedTilesUnion();for(let r of this._cache.keys()){let n=this._cache.get(r);n&&!e.has(n)?(this._cache.delete(r),this._handleTileUnload(n),this._dirty=!0):n&&n.setNeedsReload()}this._cacheByteSize=this._getCacheByteSize(),this.prepareTiles(),this._updateStats()}updateConsumer(e,r,n){this._consumers.set(e,{selectedTiles:new Set(r),visibleTiles:new Set(n)}),this._pruneRequests(),this._resizeCache(),this._updateStats()}prepareTiles(){this._dirty&&(this._rebuildTree(),this._syncTiles(),this._dirty=!1)}getTileIndices({viewState:e,maxZoom:r,minZoom:n,zRange:i,modelMatrix:o,modelMatrixInverse:s}){let{adapter:a,tileSize:c,extent:l,zoomOffset:h}=this.opts;if(!a)throw new Error("Tileset2D requires an adapter before tile traversal can be used.");return this._lastTileContext={viewState:e,tileSize:c},a.getTileIndices({viewState:e,maxZoom:r,minZoom:n,zRange:i,tileSize:c,extent:gM(l),modelMatrix:o,modelMatrixInverse:s,zoomOffset:h})}getTileId(e){return`${e.x}-${e.y}-${e.z}`}getTileZoom(e){return e.z}getTileMetadata(e){if(!this._lastTileContext)throw new Error("Tileset2D metadata requested before traversal context was set.");if(!this.opts.adapter)throw new Error("Tileset2D requires an adapter before tile metadata can be derived.");return{bbox:this.opts.adapter.getTileBoundingBox(this._lastTileContext,e)}}getParentIndex(e){return{x:Math.floor(e.x/2),y:Math.floor(e.y/2),z:e.z-1}}getTile(e,r){let n=this.getTileId(e),i=this._cache.get(n),o=!1;return!i&&r?(i=new kt(e),Object.assign(i,this.getTileMetadata(i.index)),Object.assign(i,{id:n,zoom:this.getTileZoom(i.index)}),o=!0,this._cache.set(n,i),this._dirty=!0,this._updateStats()):i&&i.needsReload&&(o=!0),i&&this._touchTile(n,i),i&&o&&r&&(i.loadData({getData:this.opts.getTileData,requestScheduler:this._requestScheduler,onLoad:this._handleTileLoad.bind(this),onError:this._handleTileError.bind(this)}).catch(()=>{}),this._updateStats()),i}async _initializeTileSource(e){try{this.sourceMetadata=await e.getMetadata(),this._sourceMetadataOverrides=this._getMetadataOverrides(this.sourceMetadata),this._applyResolvedOptions(),this._notifyUpdate()}catch(r){let n=r instanceof Error?r:new Error(`TileSource metadata error: ${String(r)}`);this._notifyError(n)}}_rememberExplicitOptions(e){for(let r of Object.keys(e))this._explicitOptionKeys.add(r)}_applyResolvedOptions(){let e={...ed,...this._sourceMetadataOverrides,...this._baseOpts};if(e.tileSource){let r=e.tileSource;e.getTileData=n=>r.getTileData(n)}this.opts=e,this._maxZoom=typeof this.opts.maxZoom=="number"&&Number.isFinite(this.opts.maxZoom)?Math.floor(this.opts.maxZoom):void 0,this._minZoom=typeof this.opts.minZoom=="number"&&Number.isFinite(this.opts.minZoom)?Math.ceil(this.opts.minZoom):void 0}_getMetadataOverrides(e){if(!e)return{};let r={};return!this._explicitOptionKeys.has("minZoom")&&Number.isFinite(e.minZoom)&&(r.minZoom=e.minZoom),!this._explicitOptionKeys.has("maxZoom")&&Number.isFinite(e.maxZoom)&&(r.maxZoom=e.maxZoom),!this._explicitOptionKeys.has("extent")&&e.boundingBox&&(r.extent=[e.boundingBox[0][0],e.boundingBox[0][1],e.boundingBox[1][0],e.boundingBox[1][1]]),r}_handleTileLoad(e){this.opts.onTileLoad?.(e),this._cacheByteSize=this._getCacheByteSize(),this._resizeCache();for(let r of this._listeners)r.onTileLoad?.(e);this._updateStats()}_handleTileError(e,r){this.opts.onTileError?.(e,r);for(let n of this._listeners)n.onTileError?.(e,r);this._updateStats()}_handleTileUnload(e){this._unloadedTileCount++,this.opts.onTileUnload?.(e);for(let r of this._listeners)r.onTileUnload?.(e);this._updateStats()}_notifyUpdate(){for(let e of this._listeners)e.onUpdate?.()}_notifyError(e){for(let r of this._listeners)r.onError?.(e)}_updateStats(){this._setStatCount("Tiles In Cache",this._cache.size),this._setStatCount("Cache Size",this.cacheByteSize),this._setStatCount("Visible Tiles",this.visibleTiles.length),this._setStatCount("Selected Tiles",this.selectedTiles.length),this._setStatCount("Loading Tiles",this.loadingTiles.length),this._setStatCount("Unloaded Tiles",this._unloadedTileCount),this._setStatCount("Consumers",this._consumers.size);for(let e of this._listeners)e.onStatsChange?.(this.stats)}_setStatCount(e,r){this.stats.get(e).reset().addCount(r)}_getSelectedTilesUnion(){let e=new Set;for(let r of this._consumers.values())for(let n of r.selectedTiles)e.add(n);return e}_getVisibleTilesUnion(){let e=new Set;for(let r of this._consumers.values())for(let n of r.visibleTiles)e.add(n);return e}_touchTile(e,r){this._cache.delete(e),this._cache.set(e,r)}_getCacheByteSize(){let e=0;for(let r of this._cache.values())e+=r.byteLength;return e}_pruneRequests(){let{maxRequests:e=0}=this.opts,r=this._getSelectedTilesUnion(),n=this._getVisibleTilesUnion(),i=[],o=0;for(let s of this._cache.values())s.isLoading&&(o++,!r.has(s)&&!n.has(s)&&i.push(s));for(;e>0&&o>e&&i.length>0;){let s=i.shift();s&&s.abort(),o--}}_rebuildTree(){for(let e of this._cache.values())e.parent=null,e.children&&(e.children.length=0);for(let e of this._cache.values()){let r=this._getNearestAncestor(e);e.parent=r,r?.children&&r.children.push(e)}}_syncTiles(){this._tiles=Array.from(this._cache.values()).sort((e,r)=>e.zoom-r.zoom)}_resizeCache(){let e=this.opts.maxCacheSize??100,r=this.opts.maxCacheByteSize??1/0,n=this._getVisibleTilesUnion(),i=this._getSelectedTilesUnion();if(this._cache.size>e||this._cacheByteSize>r){for(let[s,a]of this._cache)if(!n.has(a)&&!i.has(a)&&(this._cache.delete(s),this._cacheByteSize=this._getCacheByteSize(),this._handleTileUnload(a)),this._cache.size<=e&&this._cacheByteSize<=r)break;this._dirty=!0}this._dirty&&(this._rebuildTree(),this._syncTiles(),this._dirty=!1)}_getNearestAncestor(e){let{_minZoom:r=0}=this,n=e.index;for(;this.getTileZoom(n)>r;){n=this.getParentIndex(n);let i=this.getTile(n);if(i)return i}return null}};function gM(t){return t&&t.length===4?t:void 0}var Ji={getMetadata:async()=>({name:"",keywords:[],layers:[]}),getImage:async()=>null,debounceTime:0},eo=class t{metadata=null;_opts;_listeners=new Set;_currentRequest=null;_lastAcceptedRequestId=-1;_nextRequestId=0;_loadCounter=0;_timeoutId=null;_abortController=null;_finalized=!1;constructor(e){if(this._opts=this._normalizeOptions(e),!this._opts.imageSource&&(!e.getImage||!e.getMetadata))throw new Error("ImageSet requires either `imageSource` or both `getImage` and `getMetadata`.")}static fromImageSource(e,r={}){return new t({...r,imageSource:e})}get isLoaded(){return this._loadCounter===0&&!!this._currentRequest}get image(){return this._currentRequest?.image||null}get currentRequest(){return this._currentRequest}get imageSource(){return this._opts.imageSource}subscribe(e){return this._listeners.add(e),()=>this._listeners.delete(e)}setOptions(e){let r=this._opts.imageSource,n=this._normalizeOptions({...this._opts,...e}),i=r!==n.imageSource||this._opts.getImage!==n.getImage||this._opts.getMetadata!==n.getMetadata;this._opts=n,i&&(this._cancelScheduledImage(),this.metadata=null,this._currentRequest=null,this._lastAcceptedRequestId=-1,this._nextRequestId=0,this._emitUpdate())}async loadMetadata(){this._startLoading();try{let e=await this._opts.getMetadata();if(this._finalized)return e;this.metadata=e;for(let r of this._listeners)r.onMetadataLoad?.(e);return this._emitUpdate(),e}catch(e){let r=td(e,"Image metadata request failed");if(!this._finalized)for(let n of this._listeners)n.onMetadataLoadError?.(r);throw r}finally{this._finishLoading()}}requestImage(e,r=this._opts.debounceTime){let n=this._nextRequestId++;return this._cancelScheduledImage(),this._abortActiveRequest(),r>0?this._timeoutId=setTimeout(()=>{this._timeoutId=null,this._loadImage(n,e)},r):this._loadImage(n,e),n}finalize(){this._finalized=!0,this._cancelScheduledImage(),this._abortActiveRequest(),this._listeners.clear()}async _loadImage(e,r){if(!this._finalized){this._startLoading();for(let n of this._listeners)n.onImageLoadStart?.(e,r);try{let n=new AbortController;this._abortController=n;let i=await this._opts.getImage({...r,signal:n.signal});if(this._finalized||e<=this._lastAcceptedRequestId)return;this._lastAcceptedRequestId=e,this._currentRequest={requestId:e,parameters:r,image:i};for(let o of this._listeners)o.onImageLoad?.(this._currentRequest);this._emitUpdate()}catch(n){if(MM(n))return;let i=td(n,"Image request failed");if(!this._finalized)for(let o of this._listeners)o.onImageLoadError?.(e,i,r)}finally{this._abortController?.signal===r.signal&&(this._abortController=null),this._finishLoading()}}}_normalizeOptions(e){let r=e.imageSource||null;return{...Ji,...e,imageSource:r,getMetadata:e.getMetadata||(()=>r?r.getMetadata():Ji.getMetadata()),getImage:e.getImage||(n=>r?r.getImage(n):Ji.getImage(n)),debounceTime:e.debounceTime??Ji.debounceTime}}_emitUpdate(){for(let e of this._listeners)e.onUpdate?.()}_startLoading(){let e=this._loadCounter>0;this._loadCounter++,e||(this._emitLoadingStateChange(!0),this._emitUpdate())}_finishLoading(){let e=this._loadCounter>0;this._loadCounter=Math.max(0,this._loadCounter-1),e&&this._loadCounter===0&&(this._emitLoadingStateChange(!1),this._emitUpdate())}_emitLoadingStateChange(e){for(let r of this._listeners)r.onLoadingStateChange?.(e)}_cancelScheduledImage(){this._timeoutId!==null&&(clearTimeout(this._timeoutId),this._timeoutId=null)}_abortActiveRequest(){this._abortController?.abort(),this._abortController=null}};function MM(t){return t instanceof Error&&t.name==="AbortError"}function td(t,e){return t instanceof Error?t:typeof t=="string"?new Error(t):new Error(e)}var un={getMetadata:async()=>({width:0,height:0,bandCount:0,dtype:"uint8"}),getRaster:async()=>({data:new Uint8Array(0),width:0,height:0,bandCount:0,dtype:"uint8"}),debounceTime:0,shouldRefetch:()=>!0},to=class t{metadata=null;_opts;_listeners=new Set;_currentRequest=null;_nextRequestId=0;_loadCounter=0;_timeoutId=null;_abortController=null;_metadataAbortController=null;_finalized=!1;_sourceGeneration=0;_metadataRequestId=0;constructor(e){if(this._opts=this._normalizeOptions(e),!this._opts.rasterSource&&(!e.getRaster||!e.getMetadata))throw new Error("RasterSet requires either `rasterSource` or both `getRaster` and `getMetadata`.")}static fromRasterSource(e,r={}){return new t({...r,rasterSource:e})}static fromCallbacks(e){return new t(e)}get isLoaded(){return this._loadCounter===0&&!!this._currentRequest}get raster(){return this._currentRequest?.raster||null}get currentRequest(){return this._currentRequest}get rasterSource(){return this._opts.rasterSource}subscribe(e){return this._listeners.add(e),()=>this._listeners.delete(e)}setOptions(e){let r=this._opts.rasterSource,n={...this._opts,...e};e.rasterSource&&e.rasterSource!==r&&(n.getRaster=e.getRaster,n.getMetadata=e.getMetadata);let i=this._normalizeOptions(n),o=r!==i.rasterSource||this._opts.getRaster!==i.getRaster||this._opts.getMetadata!==i.getMetadata;this._opts=i,o&&(this._cancelScheduledRaster(),this._abortActiveRequest(),this._metadataAbortController?.abort(),this._sourceGeneration++,this.metadata=null,this._currentRequest=null,this._emitUpdate())}async loadMetadata(e={}){if(this._finalized)throw new Error("RasterSet is finalized");e.signal?.throwIfAborted(),this._metadataAbortController?.abort();let r=new AbortController;this._metadataAbortController=r;let n=()=>r.abort(e.signal?.reason);e.signal?.addEventListener("abort",n,{once:!0});let i=++this._metadataRequestId,o=this._sourceGeneration;try{this._startLoading(),r.signal.throwIfAborted();let s=await Un(a=>this._opts.getMetadata({signal:a}),[r.signal]);if(r.signal.throwIfAborted(),this._finalized||o!==this._sourceGeneration||i!==this._metadataRequestId)return s;this.metadata=s;for(let a of this._listeners)a.onMetadataLoad?.(s);return this._emitUpdate(),s}catch(s){if(r.signal.aborted)throw r.signal.reason;if(nd(s))throw s;let a=rd(s,"Raster metadata request failed");if(!this._finalized&&o===this._sourceGeneration&&i===this._metadataRequestId)for(let c of this._listeners)c.onMetadataLoadError?.(a);throw a}finally{e.signal?.removeEventListener("abort",n),this._metadataAbortController===r&&(this._metadataAbortController=null),this._finishLoading()}}requestRaster(e,r=this._opts.debounceTime){if(this._finalized)return-1;if(!this.shouldRefetchRaster(e))return this._cancelScheduledRaster(),this._abortActiveRequest(),this._nextRequestId++,this._currentRequest?.requestId??-1;let n=this._nextRequestId++;return this._cancelScheduledRaster(),this._abortActiveRequest(),r>0?this._timeoutId=setTimeout(()=>{this._timeoutId=null,this._loadRaster(n,e)},r):this._loadRaster(n,e),n}shouldRefetchRaster(e){return this._opts.shouldRefetch({currentRequest:this._currentRequest,metadata:this.metadata,nextParameters:e})}finalize(){this._finalized=!0,this._cancelScheduledRaster(),this._abortActiveRequest(),this._metadataAbortController?.abort(),this._metadataAbortController=null,this._loadCounter=0,this._listeners.clear()}async _loadRaster(e,r){if(this._finalized)return;let n=r.signal;if(n?.aborted)return;let i=new AbortController;this._abortController=i;let o=()=>i.abort(n?.reason);n?.addEventListener("abort",o,{once:!0}),this._startLoading();try{i.signal.throwIfAborted();for(let a of this._listeners)a.onRasterLoadStart?.(e,r);i.signal.throwIfAborted();let s=await Un(a=>this._opts.getRaster(yM(r,a)),[i.signal]);if(this._finalized||i.signal.aborted||e!==this._nextRequestId-1)return;this._currentRequest={requestId:e,parameters:r,raster:s};for(let a of this._listeners)a.onRasterLoad?.(this._currentRequest);this._emitUpdate()}catch(s){if(i.signal.aborted||nd(s))return;let a=rd(s,"Raster request failed");if(!this._finalized&&e===this._nextRequestId-1)for(let c of this._listeners)c.onRasterLoadError?.(e,a,r)}finally{n?.removeEventListener("abort",o),this._abortController===i&&(this._abortController=null),this._finishLoading()}}_normalizeOptions(e){let r=e.rasterSource||null;return{...un,...e,rasterSource:r,getMetadata:e.getMetadata||(n=>r?r.getMetadata(n):un.getMetadata()),getRaster:e.getRaster||(n=>r?r.getRaster(n):un.getRaster(n)),debounceTime:e.debounceTime??un.debounceTime,shouldRefetch:e.shouldRefetch||(n=>un.shouldRefetch(n))}}_emitUpdate(){if(!this._finalized)for(let e of this._listeners)e.onUpdate?.()}_emitLoadingStateChange(e){if(!this._finalized)for(let r of this._listeners)r.onLoadingStateChange?.(e)}_startLoading(){let e=this._loadCounter>0;this._loadCounter++,e||(this._emitLoadingStateChange(!0),this._emitUpdate())}_finishLoading(){let e=this._loadCounter>0;this._loadCounter=Math.max(0,this._loadCounter-1),e&&this._loadCounter===0&&(this._emitLoadingStateChange(!1),this._emitUpdate())}_cancelScheduledRaster(){this._timeoutId!==null&&(clearTimeout(this._timeoutId),this._timeoutId=null)}_abortActiveRequest(){this._abortController?.abort(),this._abortController=null}};function yM(t,e){let r=Object.getOwnPropertyDescriptors(t);delete r.signal;let n=Array.isArray(t)?Object.defineProperties(t.slice(),r):Object.create(Object.getPrototypeOf(t),r);return Object.defineProperty(n,"signal",{configurable:!0,enumerable:!0,value:e,writable:!0}),n}function rd(t,e){return t instanceof Error?t:typeof t=="string"?new Error(t):new Error(e)}function nd(t){return t instanceof Error&&t.name==="AbortError"}var yr=class{header;parent;children=[];childrenLoaded=!1;childrenPromise=null;selected=!1;viewportIds=[];content=null;contentAvailable=!1;contentFailed=!1;isContentLoading=!1;constructor(e,r=null){this.header=e,this.parent=r}get id(){return this.header.id}get level(){return this.header.level}get pointCount(){return this.header.pointCount}get geometricError(){return this.header.geometricError}get boundingVolume(){return this.header.boundingVolume}setSelected(e){this.selected=!0,this.viewportIds.includes(e)||this.viewportIds.push(e)}clearSelection(){this.selected=!1,this.viewportIds=[]}};var xM={debounceTime:0,minimumNodePixelSize:150,maximumScreenSpaceError:1,lodSelectionMetricType:"maxScreenThresholdSQ",densityThreshold:1,pointBudget:2e6,maxDepth:Number.POSITIVE_INFINITY,onTileLoad:()=>{},onTileError:()=>{},onTraversalComplete:t=>t,onUpdate:()=>{}},ro=64,no=class{dataSource;options;root=null;cartographicCenter=null;zoom=1;boundingVolume=null;visibleTilesCount=0;frameNumberValue=0;pendingCount=0;lastUpdatedViewports=null;updatePromise=null;tilesMap=new Map;constructor(e,r={}){this.dataSource=e,this.options={...xM,...r},this.tilesetInitializationPromise=this.initialize()}tilesetInitializationPromise;get isReady(){return this.dataSource.isReady}get frameNumber(){return this.frameNumberValue}get tiles(){return Array.from(this.tilesMap.values())}isLoaded(){return this.frameNumberValue>0&&this.pendingCount===0&&this.selectedTiles.every(e=>e.contentAvailable||e.contentFailed)}selectedTiles=[];update(e=null){this.selectTiles(e).catch(()=>{})}destroy(){this.selectedTiles=[],this.tilesMap.clear(),this.root=null,this.cartographicCenter=null,this.boundingVolume=null,this.visibleTilesCount=0,this.pendingCount=0,this.lastUpdatedViewports=null,this.updatePromise=null}async initialize(){await this.dataSource.initialize();let e=await this.dataSource.getRootTile();this.root=this.getOrCreateTile(e,null);let r=await this.dataSource.getViewState?.();this.boundingVolume=r?.boundingVolume||this.root.boundingVolume;let n=r?.cartographicCenter||this.root.boundingVolume.center;this.cartographicCenter=new M(n),this.zoom=r?.zoom||this.estimateZoom(this.boundingVolume)}async selectTiles(e=null){return await this.tilesetInitializationPromise,e&&(this.lastUpdatedViewports=e),this.updatePromise||(this.updatePromise=new Promise((r,n)=>{setTimeout(()=>{this.doSelectTiles().then(()=>r(this.frameNumberValue)).catch(n).finally(()=>{this.updatePromise=null})},this.options.debounceTime)})),this.updatePromise}async doSelectTiles(){if(!this.root||!this.lastUpdatedViewports)return;let e=new Set(this.selectedTiles.map(a=>a.id));for(let a of this.tilesMap.values())a.clearSelection();this.frameNumberValue++;let r=Array.isArray(this.lastUpdatedViewports)?this.lastUpdatedViewports:[this.lastUpdatedViewports],n=new Map,i=new Set,o=0;for(let a of r){let c=this.getTraversalContext(a);o=await this.traverseTiles(c,n,o,i)}this.visibleTilesCount=i.size,this.selectedTiles=this.options.onTraversalComplete(Array.from(n.values()));for(let a of this.selectedTiles)this.loadTile(a).catch(()=>{});let s=new Set(this.selectedTiles.map(a=>a.id));this.haveSameIds(e,s)||this.options.onUpdate()}async traverseTiles(e,r,n,i){if(!this.root)return n;let o=n,s=[{tile:this.root,weight:this.estimateScreenRadius(this.root,e.viewport)}];for(;s.length>0;){s.sort((u,f)=>f.weight-u.weight);let a=s.shift();if(!a)break;let{tile:c,weight:l}=a;if(!this.isVisible(c,e))continue;if(i.add(c.id),!r.has(c.id)&&c.pointCount>0){if(o>0&&o+c.pointCount>this.options.pointBudget)break;r.set(c.id,c),o+=c.pointCount}if(r.has(c.id)&&c.setSelected(e.viewport.id),!this.shouldRefine(c,l))continue;let h=await this.getVisibleChildren(c,e);h.length>0&&s.push(...h)}return o}shouldRefine(e,r){if(e.level<this.options.maxDepth&&Number.isFinite(r)&&(e.header.lodSelectionMetricType||this.options.lodSelectionMetricType)==="density-threshold"){let n=Math.max(1,Math.PI*r*r),i=e.pointCount/n,o=e.header.lodThreshold||this.options.densityThreshold;return i<o}return e.level<this.options.maxDepth&&Number.isFinite(r)&&r>=this.options.minimumNodePixelSize}getTraversalContext(e){let r=this.getCullingVolume(e);return{viewport:e,cullingVolume:this.shouldUseCullingVolume(e,r)?r:null}}isVisible(e,r){if(r.cullingVolume){let i=this.getCommonSpaceBoundingSphere(e.boundingVolume,r.viewport);if(i)return this.isBoundingSphereInsideCullingVolume(i,r.cullingVolume)}let n=this.getProjectedFootprint(e.boundingVolume,r.viewport);return n?this.isProjectedFootprintVisible(n,r.viewport):!1}shouldUseCullingVolume(e,r){if(!this.root||!r)return!1;let n=this.getCommonSpaceBoundingSphere(this.root.boundingVolume,e);if(!n)return!1;if(this.isBoundingSphereInsideCullingVolume(n,r))return!0;let i=this.getProjectedFootprint(this.root.boundingVolume,e);return!i||!this.isProjectedFootprintVisible(i,e)}isBoundingSphereInsideCullingVolume(e,r){return r.computeVisibilityWithPlaneMask(e,ce.MASK_INDETERMINATE)!==ce.MASK_OUTSIDE}isProjectedFootprintVisible(e,r){return!(e.x+e.radius<-ro||e.x-e.radius>r.width+ro||e.y+e.radius<-ro||e.y-e.radius>r.height+ro)}estimateScreenRadius(e,r){let n=this.getProjectedFootprint(e.boundingVolume,r);return n?n.radius:0}projectBounds(e,r){let n=this.getBoundingVolumeCorners(e),i=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY,s=Number.NEGATIVE_INFINITY,a=Number.NEGATIVE_INFINITY;try{for(let c of n){let[l,h]=r.project(c);!Number.isFinite(l)||!Number.isFinite(h)||(i=Math.min(i,l),o=Math.min(o,h),s=Math.max(s,l),a=Math.max(a,h))}}catch{return null}return!Number.isFinite(i)||!Number.isFinite(o)||!Number.isFinite(s)||!Number.isFinite(a)?null:{minX:i,minY:o,maxX:s,maxY:a}}getProjectedFootprint(e,r){let n=Number.NaN,i=Number.NaN;try{[n,i]=r.project(e.center)}catch{return null}if(!Number.isFinite(n)||!Number.isFinite(i))return null;let o=this.getBoundingVolumeCorners(e),s=0;try{for(let a of o){let[c,l]=r.project(a);!Number.isFinite(c)||!Number.isFinite(l)||(s=Math.max(s,Math.hypot(c-n,l-i)))}}catch{return null}if(s===0){let a=this.projectBounds(e,r);a&&(s=Math.max(a.maxX-a.minX,a.maxY-a.minY)/2)}return{x:n,y:i,radius:s}}async getVisibleChildren(e,r){return e.level>=this.options.maxDepth?[]:(await this.getChildren(e)).map(i=>({tile:i,weight:this.estimateScreenRadius(i,r.viewport)})).filter(i=>this.isVisible(i.tile,r))}async getChildren(e){if(e.childrenLoaded)return e.children;if(!e.childrenPromise){let r=this.dataSource.getChildren(e.header).then(n=>n.map(i=>this.getOrCreateTile(i,e))).then(n=>(e.children=n,e.childrenLoaded=!0,n));e.childrenPromise=r.finally(()=>{e.childrenPromise===r&&(e.childrenPromise=null)})}return e.childrenPromise}getOrCreateTile(e,r){let n=this.tilesMap.get(e.id);if(n)return n.header=e,r&&n.parent!==r&&(n.parent=r),n;let i=new yr(e,r);return this.tilesMap.set(e.id,i),r&&!r.children.find(o=>o.id===i.id)&&r.children.push(i),i}async loadTile(e){if(!(e.contentAvailable||e.isContentLoading||e.contentFailed)){e.isContentLoading=!0,this.pendingCount++;try{let r=await this.dataSource.loadTileContent(e.header);e.content=r,e.contentAvailable=!0,r&&this.options.onTileLoad(e)}catch(r){e.contentFailed=!0,this.options.onTileError(e,r)}finally{e.isContentLoading=!1,this.pendingCount--}}}estimateZoom(e){if(!e||e.coordinateFrame==="cartesian")return 1;let[r,n]=e.cartographicBounds,i=e.coversFullLongitude?360:e.wrapsDateline?360-Math.abs(n[0]-r[0]):Math.abs(n[0]-r[0]),o=Math.max(i,1e-6);return Math.max(1,Math.round(Math.log2(360/o)))}haveSameIds(e,r){if(e.size!==r.size)return!1;for(let n of e)if(!r.has(n))return!1;return!0}getBoundingVolumeCorners(e){let[r,n]=e.cartographicBounds,i=e.coversFullLongitude?[[-180,180]]:e.wrapsDateline?[[r[0],180],[-180,n[0]]]:[[r[0],n[0]]],o=[],s=360-Math.abs(n[0]-r[0]),a=r[0]+s/2;for(let[c,l]of i){let h=d=>{if(!e.wrapsDateline)return d;let m=d;for(;m-a>180;)m-=360;for(;m-a<-180;)m+=360;return m},u=h(c),f=h(l);o.push([u,r[1],r[2]||0],[u,r[1],n[2]||0],[u,n[1],r[2]||0],[u,n[1],n[2]||0],[f,r[1],r[2]||0],[f,r[1],n[2]||0],[f,n[1],r[2]||0],[f,n[1],n[2]||0])}return o}getCullingVolume(e){let r=e.getFrustumPlanes?.bind(e);if(!r)return null;let n=r(),i=["left","right","bottom","top","near","far"],o=[];for(let s of i){let a=n[s];if(!a)return null;o.push(new ie(a.normal,-a.distance))}return new ce(o)}getCommonSpaceBoundingSphere(e,r){let n=r.projectPosition?.bind(r);if(!n)return null;let i=this.getBoundingVolumeCorners(e),o=Number.POSITIVE_INFINITY,s=Number.POSITIVE_INFINITY,a=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY,l=Number.NEGATIVE_INFINITY,h=Number.NEGATIVE_INFINITY;try{for(let u of i){let[f,d,m=0]=n(u);!Number.isFinite(f)||!Number.isFinite(d)||!Number.isFinite(m)||(o=Math.min(o,f),s=Math.min(s,d),a=Math.min(a,m),c=Math.max(c,f),l=Math.max(l,d),h=Math.max(h,m))}}catch{return null}return!Number.isFinite(o)||!Number.isFinite(s)||!Number.isFinite(a)||!Number.isFinite(c)||!Number.isFinite(l)||!Number.isFinite(h)?null:new me().fromCornerPoints([o,s,a],[c,l,h])}};return _d(fn);})();
|
|
8
10
|
return __exports__;
|
|
9
11
|
});
|