@tangram.gl/tangram-renderer 0.0.0-stage → 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +59 -2
- package/dist/core.js +36923 -0
- package/dist/core.js.map +6 -0
- package/dist/index.js +32 -0
- package/dist/loaders-gl-worker.js +82 -0
- package/dist/loaders-gl-worker.js.map +6 -0
- package/dist/map-logic.js +2 -0
- package/dist/map-logic.js.map +6 -0
- package/dist/projected-basemaps-worker.js +3 -0
- package/dist/projected-basemaps-worker.js.map +6 -0
- package/dist/shader-modules.js +141 -0
- package/dist/shader-modules.js.map +6 -0
- package/dist/style-schema.js +126 -0
- package/dist/style-schema.js.map +6 -0
- package/dist/tangram-style.schema.json +882 -0
- package/dist/tangram.debug.mjs +37139 -0
- package/dist/tangram.debug.mjs.map +6 -0
- package/dist/tangram.min.mjs +4950 -0
- package/dist/types/builders/earcut.d.ts +15 -0
- package/dist/types/core.d.ts +29 -0
- package/dist/types/gl/constants.d.ts +2 -0
- package/dist/types/gl/globe_mesh.d.ts +48 -0
- package/dist/types/gl/glsl.d.ts +17 -0
- package/dist/types/gl/vertex-constants.d.ts +4 -0
- package/dist/types/gl/vertex-types.d.ts +34 -0
- package/dist/types/gl/vertex_data.d.ts +32 -0
- package/dist/types/gl/vertex_elements.d.ts +8 -0
- package/dist/types/gl/vertex_layout.d.ts +32 -0
- package/dist/types/glsl.d.ts +14 -0
- package/dist/types/gpu/luma_device_renderer.d.ts +66 -0
- package/dist/types/gpu/resource_lifecycle.d.ts +4 -0
- package/dist/types/gpu/tangram_gpu_backend.d.ts +151 -0
- package/dist/types/index.d.ts +155 -0
- package/dist/types/lights/light-definitions.d.ts +121 -0
- package/dist/types/map-logic/draped-terrain-bounds.d.ts +41 -0
- package/dist/types/map-logic/globe-terrain-preparation.d.ts +85 -0
- package/dist/types/map-logic/globe-terrain.d.ts +54 -0
- package/dist/types/map-logic/index.d.ts +33 -0
- package/dist/types/map-logic/label-identity.d.ts +22 -0
- package/dist/types/map-logic/label-placement.d.ts +32 -0
- package/dist/types/map-logic/screen-bounds.d.ts +15 -0
- package/dist/types/map-logic/terrain-data.d.ts +55 -0
- package/dist/types/map-logic/terrain-error.d.ts +51 -0
- package/dist/types/map-logic/terrain-ground-topology.d.ts +26 -0
- package/dist/types/map-logic/terrain-height-field.d.ts +59 -0
- package/dist/types/map-logic/terrain-navigation.d.ts +27 -0
- package/dist/types/map-logic/terrain-neighborhood.d.ts +5 -0
- package/dist/types/map-logic/terrain-query.d.ts +33 -0
- package/dist/types/map-logic/terrain-resource-budget.d.ts +51 -0
- package/dist/types/map-logic/terrain-transition-topology.d.ts +23 -0
- package/dist/types/map-logic/tile-build-queue.d.ts +51 -0
- package/dist/types/map-logic/tile-cache-policy.d.ts +46 -0
- package/dist/types/map-logic/tile-residency.d.ts +17 -0
- package/dist/types/map-logic/triangle-query-index.d.ts +87 -0
- package/dist/types/procedures/js-yaml.d.ts +15 -0
- package/dist/types/procedures/mesh-projector.d.ts +107 -0
- package/dist/types/procedures/mvt-dependencies.d.ts +20 -0
- package/dist/types/procedures/projected-coordinate-transform.d.ts +27 -0
- package/dist/types/procedures/projection-batch-executor.d.ts +53 -0
- package/dist/types/procedures/scene-yaml-legacy.d.ts +6 -0
- package/dist/types/procedures/terrain-draping.d.ts +165 -0
- package/dist/types/procedures/terrain-globe.d.ts +6 -0
- package/dist/types/procedures/terrain-styled-topology.d.ts +34 -0
- package/dist/types/procedures/web-mercator-legacy.d.ts +4 -0
- package/dist/types/procedures/web-mercator-math.d.ts +4 -0
- package/dist/types/scene/globals.d.ts +11 -0
- package/dist/types/scene/ground_footprint.d.ts +16 -0
- package/dist/types/scene/host_frame.d.ts +54 -0
- package/dist/types/scene/projection_math.d.ts +52 -0
- package/dist/types/scene/scene-resource-types.d.ts +177 -0
- package/dist/types/scene/scene_bundle.d.ts +69 -0
- package/dist/types/scene/visibility_adapter.d.ts +106 -0
- package/dist/types/selection/draped-terrain-surface.d.ts +78 -0
- package/dist/types/selection/terrain_surface.d.ts +149 -0
- package/dist/types/shader-modules/globe-horizon.d.ts +15 -0
- package/dist/types/shader-modules/height-decode.d.ts +13 -0
- package/dist/types/shader-modules/hillshade.d.ts +13 -0
- package/dist/types/shader-modules/index.d.ts +6 -0
- package/dist/types/shader-modules/planar.d.ts +12 -0
- package/dist/types/shader-modules/sphere-map.d.ts +13 -0
- package/dist/types/shader-modules/triplanar.d.ts +15 -0
- package/dist/types/sources/decoded_tile_store.d.ts +95 -0
- package/dist/types/sources/tile_source_metadata.d.ts +32 -0
- package/dist/types/styles/text/fontfaceobserver.d.ts +10 -0
- package/dist/types/tile/tile_id.d.ts +37 -0
- package/dist/types/tile/tile_traversal_adapter.d.ts +63 -0
- package/dist/types/types.d.ts +293 -0
- package/dist/types/utils/geo.d.ts +57 -0
- package/dist/types/utils/hash.d.ts +1 -0
- package/dist/types/utils/log.d.ts +27 -0
- package/dist/types/utils/props.d.ts +6 -0
- package/dist/types/utils/subscribe.d.ts +10 -0
- package/dist/types/utils/thread.d.ts +6 -0
- package/dist/types/utils/urls.d.ts +26 -0
- package/dist/types/utils/utils.d.ts +26 -0
- package/dist/types/utils/version.d.ts +2 -0
- package/dist/types/utils/worker-types.d.ts +68 -0
- package/dist/types/utils/worker_broker.d.ts +3 -0
- package/package.json +103 -3
- package/src/builders/common.ts +41 -0
- package/src/builders/earcut.d.ts +15 -0
- package/src/builders/geometry-types.ts +60 -0
- package/src/builders/points.ts +115 -0
- package/src/builders/polygons.ts +225 -0
- package/src/builders/polylines.ts +682 -0
- package/src/builders/wireframe.ts +31 -0
- package/src/core.d.ts +29 -0
- package/src/core.ts +33 -0
- package/src/experimental/loaders-gl-worker.ts +19 -0
- package/src/experimental/projected-basemaps-worker.ts +13 -0
- package/src/experimental/projected-mesh-cache.ts +137 -0
- package/src/experimental/projected-mesh-domain.ts +110 -0
- package/src/experimental/projected-mesh-refinement.ts +193 -0
- package/src/experimental/projected-mesh.ts +399 -0
- package/src/experimental/projected-normal.ts +26 -0
- package/src/experimental/projected-symbol-mesh.ts +74 -0
- package/src/gl/constants.ts +18 -0
- package/src/gl/context.ts +103 -0
- package/src/gl/extensions.ts +30 -0
- package/src/gl/globe_mesh.ts +285 -0
- package/src/gl/glsl.ts +257 -0
- package/src/gl/mesh-types.ts +56 -0
- package/src/gl/render_state.ts +111 -0
- package/src/gl/shader_program.ts +1310 -0
- package/src/gl/texture.ts +814 -0
- package/src/gl/uniform_buffer.ts +340 -0
- package/src/gl/vao.ts +154 -0
- package/src/gl/vbo_mesh.ts +349 -0
- package/src/gl/vertex-constants.ts +19 -0
- package/src/gl/vertex-types.ts +35 -0
- package/src/gl/vertex_data.ts +126 -0
- package/src/gl/vertex_elements.ts +54 -0
- package/src/gl/vertex_layout.ts +241 -0
- package/src/glsl.d.ts +14 -0
- package/src/gpu/luma_device_renderer.ts +579 -0
- package/src/gpu/pixel_readback.ts +51 -0
- package/src/gpu/resource_lifecycle.ts +32 -0
- package/src/gpu/tangram_gpu_backend.ts +195 -0
- package/src/index.d.ts +155 -0
- package/src/index.ts +105 -0
- package/src/labels/collision-types.ts +94 -0
- package/src/labels/collision.ts +273 -0
- package/src/labels/collision_grid.ts +61 -0
- package/src/labels/intersect.ts +30 -0
- package/src/labels/label-types.ts +91 -0
- package/src/labels/label.ts +207 -0
- package/src/labels/label_line.ts +801 -0
- package/src/labels/label_point.ts +131 -0
- package/src/labels/main-pass-types.ts +73 -0
- package/src/labels/main_pass.ts +221 -0
- package/src/labels/point_anchor.ts +100 -0
- package/src/labels/point_placement.ts +150 -0
- package/src/labels/projected-pass.ts +259 -0
- package/src/labels/repeat_group.ts +72 -0
- package/src/lights/ambient_light.glsl +18 -0
- package/src/lights/directional_light.glsl +39 -0
- package/src/lights/geographic-lights.ts +21 -0
- package/src/lights/light-definitions.ts +285 -0
- package/src/lights/light.ts +590 -0
- package/src/lights/lighting-uniforms.ts +80 -0
- package/src/lights/lighting-wgsl.ts +116 -0
- package/src/lights/material.glsl +237 -0
- package/src/lights/material.ts +145 -0
- package/src/lights/native-falloff.ts +37 -0
- package/src/lights/point_light.glsl +96 -0
- package/src/lights/spot_light.glsl +111 -0
- package/src/map-logic/draped-terrain-bounds.ts +71 -0
- package/src/map-logic/globe-terrain-preparation.ts +217 -0
- package/src/map-logic/globe-terrain.ts +296 -0
- package/src/map-logic/index.ts +37 -0
- package/src/map-logic/label-identity.ts +36 -0
- package/src/map-logic/label-placement.ts +117 -0
- package/src/map-logic/screen-bounds.ts +34 -0
- package/src/map-logic/terrain-data.ts +107 -0
- package/src/map-logic/terrain-error.ts +134 -0
- package/src/map-logic/terrain-ground-topology.ts +164 -0
- package/src/map-logic/terrain-height-field.ts +254 -0
- package/src/map-logic/terrain-navigation.ts +50 -0
- package/src/map-logic/terrain-neighborhood.ts +43 -0
- package/src/map-logic/terrain-query.ts +51 -0
- package/src/map-logic/terrain-resource-budget.ts +124 -0
- package/src/map-logic/terrain-transition-topology.ts +164 -0
- package/src/map-logic/tile-build-queue.ts +110 -0
- package/src/map-logic/tile-cache-policy.ts +89 -0
- package/src/map-logic/tile-residency.ts +50 -0
- package/src/map-logic/triangle-query-index.ts +265 -0
- package/src/procedures/js-yaml.d.ts +15 -0
- package/src/procedures/mesh-projector.ts +191 -0
- package/src/procedures/mlt-loaders.ts +55 -0
- package/src/procedures/mvt-dependencies.d.ts +20 -0
- package/src/procedures/mvt-legacy.ts +150 -0
- package/src/procedures/mvt-loaders.ts +53 -0
- package/src/procedures/mvt-parser.ts +48 -0
- package/src/procedures/mvt-properties.ts +36 -0
- package/src/procedures/mvt-tile-provider.ts +72 -0
- package/src/procedures/pmtiles-loader.ts +75 -0
- package/src/procedures/projected-coordinate-transform.ts +79 -0
- package/src/procedures/projection-batch-executor.ts +140 -0
- package/src/procedures/scene-yaml-legacy.ts +16 -0
- package/src/procedures/scene-yaml-loaders.ts +10 -0
- package/src/procedures/terrain-draping.ts +713 -0
- package/src/procedures/terrain-globe.ts +32 -0
- package/src/procedures/terrain-styled-topology.ts +184 -0
- package/src/procedures/web-mercator-legacy.ts +24 -0
- package/src/procedures/web-mercator-math.ts +50 -0
- package/src/scene/camera.ts +298 -0
- package/src/scene/camera_base.ts +116 -0
- package/src/scene/classic_scene.ts +20 -0
- package/src/scene/external_camera.ts +101 -0
- package/src/scene/globals.ts +120 -0
- package/src/scene/ground_footprint.ts +139 -0
- package/src/scene/host_frame.ts +326 -0
- package/src/scene/projected_tile_lod.ts +125 -0
- package/src/scene/projection_math.ts +142 -0
- package/src/scene/projection_shaders.ts +183 -0
- package/src/scene/renderer.ts +516 -0
- package/src/scene/scene-resource-types.ts +174 -0
- package/src/scene/scene.ts +2378 -0
- package/src/scene/scene_bundle.ts +304 -0
- package/src/scene/scene_debug.ts +129 -0
- package/src/scene/scene_loader.ts +402 -0
- package/src/scene/scene_worker.ts +528 -0
- package/src/scene/view.ts +683 -0
- package/src/scene/visibility_adapter.ts +319 -0
- package/src/scene/worker_url.ts +15 -0
- package/src/selection/draped-terrain-surface.ts +377 -0
- package/src/selection/selection-types.ts +79 -0
- package/src/selection/selection.ts +542 -0
- package/src/selection/selection_fragment.glsl +18 -0
- package/src/selection/selection_globals.glsl +9 -0
- package/src/selection/selection_pixels.ts +59 -0
- package/src/selection/selection_vertex.glsl +15 -0
- package/src/selection/terrain_surface.ts +298 -0
- package/src/shader-modules/globe-horizon.ts +52 -0
- package/src/shader-modules/height-decode.ts +41 -0
- package/src/shader-modules/hillshade.ts +70 -0
- package/src/shader-modules/index.ts +10 -0
- package/src/shader-modules/planar.ts +24 -0
- package/src/shader-modules/sphere-map.ts +38 -0
- package/src/shader-modules/triplanar.ts +45 -0
- package/src/sources/aligned_tile_source.ts +122 -0
- package/src/sources/data_source.ts +655 -0
- package/src/sources/decoded_tile_store.ts +245 -0
- package/src/sources/geojson.ts +300 -0
- package/src/sources/mvt.ts +247 -0
- package/src/sources/raster.ts +341 -0
- package/src/sources/shared_tile_source_adapter.ts +117 -0
- package/src/sources/sources.ts +10 -0
- package/src/sources/tile_source_adapter.ts +84 -0
- package/src/sources/tile_source_metadata.ts +65 -0
- package/src/sources/tile_source_state.ts +112 -0
- package/src/sources/topojson.ts +90 -0
- package/src/styles/feature_annotations.ts +16 -0
- package/src/styles/filter.ts +190 -0
- package/src/styles/geometry-style-types.ts +209 -0
- package/src/styles/globe_visibility_wgsl.ts +22 -0
- package/src/styles/layer-types.ts +45 -0
- package/src/styles/layer.ts +586 -0
- package/src/styles/lines/dasharray.ts +49 -0
- package/src/styles/lines/lines.ts +707 -0
- package/src/styles/lines/lines_wgsl.ts +224 -0
- package/src/styles/points/point-runtime-types.ts +125 -0
- package/src/styles/points/points.ts +1079 -0
- package/src/styles/points/points_fragment.glsl +126 -0
- package/src/styles/points/points_vertex.glsl +230 -0
- package/src/styles/points/points_wgsl.ts +189 -0
- package/src/styles/polygons/polygons.ts +268 -0
- package/src/styles/polygons/polygons_fragment.glsl +173 -0
- package/src/styles/polygons/polygons_vertex.glsl +213 -0
- package/src/styles/polygons/polygons_wgsl.ts +127 -0
- package/src/styles/property-types.ts +125 -0
- package/src/styles/raster/raster.ts +33 -0
- package/src/styles/raster/raster_globals.glsl +46 -0
- package/src/styles/style-mixing-types.ts +101 -0
- package/src/styles/style-runtime-types.ts +220 -0
- package/src/styles/style-schema.ts +133 -0
- package/src/styles/style.ts +1033 -0
- package/src/styles/style_globals.glsl +69 -0
- package/src/styles/style_manager.ts +464 -0
- package/src/styles/style_parser.ts +620 -0
- package/src/styles/text/font_manager.ts +180 -0
- package/src/styles/text/fontfaceobserver.d.ts +10 -0
- package/src/styles/text/text-types.ts +220 -0
- package/src/styles/text/text.ts +378 -0
- package/src/styles/text/text_canvas.ts +773 -0
- package/src/styles/text/text_labels.ts +436 -0
- package/src/styles/text/text_segments.ts +142 -0
- package/src/styles/text/text_settings.ts +228 -0
- package/src/styles/text/text_wgsl.ts +159 -0
- package/src/styles/text/text_wrap.ts +194 -0
- package/src/tile/globe_tile_preload.ts +40 -0
- package/src/tile/tangram_tileset_2d.ts +108 -0
- package/src/tile/tile-build-types.ts +155 -0
- package/src/tile/tile.ts +807 -0
- package/src/tile/tile_id.ts +172 -0
- package/src/tile/tile_manager.ts +889 -0
- package/src/tile/tile_pyramid.ts +119 -0
- package/src/tile/tile_resource_cache.ts +91 -0
- package/src/tile/tile_traversal_adapter.ts +132 -0
- package/src/types.ts +332 -0
- package/src/utils/debounce.ts +17 -0
- package/src/utils/debug_settings.ts +43 -0
- package/src/utils/errors.ts +12 -0
- package/src/utils/functions.ts +95 -0
- package/src/utils/geo.ts +364 -0
- package/src/utils/hash.ts +14 -0
- package/src/utils/log.ts +108 -0
- package/src/utils/media_capture.ts +193 -0
- package/src/utils/merge.ts +44 -0
- package/src/utils/obb.ts +134 -0
- package/src/utils/props.ts +43 -0
- package/src/utils/slice.ts +14 -0
- package/src/utils/subscribe.ts +58 -0
- package/src/utils/task.ts +154 -0
- package/src/utils/thread.ts +26 -0
- package/src/utils/urls.ts +223 -0
- package/src/utils/utils.ts +310 -0
- package/src/utils/vector.ts +197 -0
- package/src/utils/version.ts +8 -0
- package/src/utils/worker-types.ts +79 -0
- package/src/utils/worker_broker.ts +523 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function Y(n,e){return n[0]<e[2]&&n[2]>e[0]&&n[1]<e[3]&&n[3]>e[1]}function Se(n,e){return n?[Math.min(n[0],e[0]),Math.min(n[1],e[1]),Math.max(n[2],e[2]),Math.max(n[3],e[3])]:e}function*j(n,e){for(let t=Math.floor(Math.max(0,n[0])/64);t<=Math.floor(Math.min(e.width,n[2])/64);t++)for(let r=Math.floor(Math.max(0,n[1])/64);r<=Math.floor(Math.min(e.height,n[3])/64);r++)yield`${t},${r}`}function Be(n,e){let t=new Map(n.map(h=>[h.id,h])),r=new Map,i=new Map,a=new Map,o=new Map,s=new Set;function d(h){let c=e.viewports.get(h);if(!c)throw new Error(`Missing label viewport: ${h}`);return c}function l(h){let c=r.get(h);if(c!==void 0)return c;if(s.has(h))return!1;s.add(h);let m=h.linkedId===void 0?void 0:t.get(h.linkedId),f=m&&m.linkedId===h.id,u=f?[h,m]:[h];if(m&&!f&&!l(m))return r.set(h,!1),s.delete(h),!1;let y=u.every(p=>p.boxes.size>0&&!(i.get(p.identity??"")??[]).some(T=>e.isDuplicate?.(p,T))&&!(a.get(p.repeatGroup??"")??[]).some(T=>Ge(p,T)))&&u.every(p=>p.collide===!1||[...p.boxes].every(([T,x])=>{let v=o.get(T);if(!v)return!0;let F=new Set;for(let G of j(x,d(T)))for(let N of v.get(G)??[])F.add(N);return[...F].every(G=>G===m||!Y(x,G.boxes.get(T)))}));for(let p of u)if(r.set(p,y),!!y){if(p.identity){let T=i.get(p.identity)??[];T.push(p),i.set(p.identity,T)}if(p.repeatGroup&&p.repeatDistance){let T=a.get(p.repeatGroup)??[];T.push(p),a.set(p.repeatGroup,T)}for(let[T,x]of p.boxes){let v=o.get(T);v||o.set(T,v=new Map);for(let F of j(x,d(T))){let G=v.get(F);G||v.set(F,G=new Set),G.add(p)}}}return s.delete(h),y}return n.forEach(l),r}function Ge(n,e){let t=n.repeatDistance;return!t||!n.repeatGroup||n.repeatGroup!==e.repeatGroup?!1:[...n.boxes].some(([r,i])=>{let a=e.boxes.get(r);return a!==void 0&&Math.hypot((i[0]+i[2]-a[0]-a[2])/2,(i[1]+i[3]-a[1]-a[3])/2)<t})}function Ee(n,e,t){if(!n.identity||n.identity!==e.identity||n.sourceTileIdentity===e.sourceTileIdentity||n.height!==e.height)return!1;let r=2*t.worldWidth/(4096*2**Math.min(n.sourceZoom,e.sourceZoom)),i=n.anchor[0]-e.anchor[0],a=t.wrapHorizontal?i-Math.round(i/t.worldWidth)*t.worldWidth:i;return Math.hypot(a,n.anchor[1]-e.anchor[1])<=r}var Q=class{active=new Map;pending=new Map;limit=1/0;pumping=!1;suspensionDepth=0;setLimit(e){this.limit=e??1/0}suspend(){this.suspensionDepth++}resume(){this.suspensionDepth=Math.max(0,this.suspensionDepth-1),this.pump()}enqueue(e){this.active.get(e.key)?.token!==e.token&&(this.pending.set(e.key,e),this.pump())}setPriority(e,t){let r=this.pending.get(e);r&&(r.priority=t)}finish(e,t){return this.active.get(e)?.token!==t?!1:(this.active.delete(e),this.pump(),!0)}cancel(e){this.pending.delete(e),this.active.delete(e)}has(e){return this.active.has(e)||this.pending.has(e)}getCounts(){return{activeBuilds:this.active.size,queuedBuilds:this.pending.size}}pump(){if(!(this.pumping||this.suspensionDepth>0)){this.pumping=!0;try{for(;this.active.size<this.limit;){let e;for(let t of this.pending.values())!this.active.has(t.key)&&(!e||t.priority<e.priority)&&(e=t);if(!e)break;this.pending.delete(e.key),this.active.set(e.key,e);try{e.start()}catch(t){this.active.delete(e.key),e.fail(t)}}}finally{this.pumping=!1}}}clear(){this.pending.clear(),this.active.clear()}};var Z=class{consumers=new Map;attachConsumer(e){this.updateConsumer(e,[],[])}updateConsumer(e,t,r){this.consumers.set(e,{selected:new Set(t),visible:new Set(r)})}detachConsumer(e){this.consumers.delete(e)}getSelectedTileKeys(){return[...new Set([...this.consumers.values()].flatMap(e=>[...e.selected]))]}isProtected(e){for(let t of this.consumers.values())if(t.selected.has(e)||t.visible.has(e))return!0;return!1}clear(){this.consumers.clear()}};var K=class{lastUsed=new Map;tick=0;touch(e){this.lastUsed.set(e,++this.tick)}forget(e){this.lastUsed.delete(e)}selectEvictions(e,t){if(t?.maxCachedTiles===void 0&&t?.maxCachedBytes===void 0)return[];let r=e.filter(s=>!s.protected);r.sort((s,d)=>(this.lastUsed.get(s.key)??0)-(this.lastUsed.get(d.key)??0));let i=r.length,a=r.reduce((s,d)=>s+d.bytes,0),o=[];for(let s of r){if(i<=(t?.maxCachedTiles??1/0)&&a<=(t?.maxCachedBytes??1/0))break;o.push(s.key),i--,a-=s.bytes}return o}getStatistics(e){let t=0,r=0,i=0;for(let a of e)a.protected?i+=a.bytes:(t++,r+=a.bytes);return{residentTiles:e.length,cachedTiles:t,cachedBytes:r,protectedTiles:e.length-t,protectedBytes:i}}clear(){this.lastUsed.clear()}};var Fe=Object.freeze({rScaler:256,gScaler:1,bScaler:.00390625,offset:-32768}),Ie=Object.freeze({rScaler:6553.6,gScaler:25.6,bScaler:.1,offset:-1e4});function He(n){let{width:e,height:t,pixels:r,decoder:i,bounds:a,verticalDatum:o,registration:s}=n;if(!Number.isSafeInteger(e)||!Number.isSafeInteger(t)||e<2||t<2||r.length!==e*t*4)throw new Error("Terrain requires a complete RGBA grid of at least 2 by 2");if(a.length!==4||!a.every(Number.isFinite)||a[0]>=a[2]||a[1]>=a[3])throw new Error("Terrain bounds must have finite positive extent");if(![i.rScaler,i.gScaler,i.bScaler,i.offset].every(Number.isFinite))throw new Error("Terrain decoder must be finite");if(!["ellipsoidal","orthometric","unknown"].includes(o)||!["pixel-center","grid-node"].includes(s))throw new Error("Terrain datum and registration must be explicit");if(n.valid&&n.valid.length!==e*t)throw new Error("Terrain validity mask must match the pixels");let d=new Float32Array(e*t),l=new Uint8Array(e*t);for(let h=0;h<d.length;h++){l[h]=n.valid?+(n.valid[h]!==0):1;let c=h*4;if(d[h]=l[h]?r[c]*i.rScaler+r[c+1]*i.gScaler+r[c+2]*i.bScaler+i.offset:NaN,l[h]&&!Number.isFinite(d[h]))throw new Error("Terrain elevation exceeds the finite Float32 range")}return{width:e,height:t,heights:d,valid:l,bounds:[a[0],a[1],a[2],a[3]],verticalDatum:o,registration:s}}function q(n,e){let[t,r,i,a]=n.bounds;if(!e.every(Number.isFinite)||e[0]<t||e[0]>i||e[1]<r||e[1]>a)return null;let o=n.registration==="pixel-center",s=he(Math.max(0,Math.min(n.width-1,(e[0]-t)/(i-t)*(o?n.width:n.width-1)-(o?.5:0))),e[0],t,i,n.width),d=he(Math.max(0,Math.min(n.height-1,(a-e[1])/(a-r)*(o?n.height:n.height-1)-(o?.5:0))),e[1],r,a,n.height),l=Math.floor(s),h=Math.floor(d),c=s-l,m=d-h,f=[h*n.width+l,h*n.width+Math.min(l+1,n.width-1),Math.min(h+1,n.height-1)*n.width+l,Math.min(h+1,n.height-1)*n.width+Math.min(l+1,n.width-1)],u=[(1-c)*(1-m),c*(1-m),(1-c)*m,c*m],y=0;for(let p=0;p<f.length;p++)if(u[p]!==0){if(!n.valid[f[p]])return null;y+=n.heights[f[p]]*u[p]}return y}function he(n,e,t,r,i){let a=Math.round(n),o=Math.min(1e-6,8*Number.EPSILON*Math.max(1,Math.abs(e),Math.abs(t),Math.abs(r))/(r-t)*i);return Math.abs(n-a)<=o?a:n}var U=class{entries;root;maxMaskBytes;statistics;constructor(e,t={}){if(this.maxMaskBytes=t.maxMaskBytes??8*1024*1024,!Number.isSafeInteger(this.maxMaskBytes)||this.maxMaskBytes<0)throw new Error("Invalid terrain field mask budget");this.statistics={grids:e.length,maskBytes:0,maskBuilds:0,maskSamples:0,boundsTests:0,candidateGrids:0};let r=e.map((i,a)=>{let[o,s,d,l]=i.bounds;if(i.bounds.length!==4||!i.bounds.every(Number.isFinite)||o>=d||s>=l||!Number.isFinite(d-o)||!Number.isFinite(l-s)||!Number.isSafeInteger(i.width)||!Number.isSafeInteger(i.height)||i.width<2||i.height<2||i.heights.length!==i.width*i.height||i.valid.length!==i.heights.length||!["pixel-center","grid-node"].includes(i.registration)||!["unknown","ellipsoidal","orthometric"].includes(i.verticalDatum)||i.verticalDatum!==e[0].verticalDatum)throw new Error("Invalid terrain field grid or datum");let h=[o,s,d,l],c=Math.max(d-o,l-s)*1e-10;return{grid:{...i,bounds:h},index:a,bounds:h,sampleBounds:[o-c,s-c,d+c,l+c]}});this.entries=r,this.root=r.length?J([...r]):null}sampleHeight(e){if(e.length!==2||!e.every(Number.isFinite))return null;let t=this.entries.length<=16,r=[e[0],e[1],e[0],e[1]],i=t?this.entries:this.findEntries(r),a=0,o=0;for(let s of i){if(t&&this.statistics.boundsTests++,!de(s.sampleBounds,r))continue;t&&this.statistics.candidateGrids++;let[d,l,h,c]=s.bounds,m=q(s.grid,[Math.max(d,Math.min(h,e[0])),Math.max(l,Math.min(c,e[1]))]);if(m===null)return null;a+=m,o++}return o?a/o:null}coversBounds(e){if(e.length!==4||!e.every(Number.isFinite)||e[0]>e[2]||e[1]>e[3]||!Number.isFinite(e[2]-e[0])||!Number.isFinite(e[3]-e[1]))throw new Error("Invalid terrain field probe bounds");let t=e[2]-e[0],r=e[3]-e[1];if(!Number.isFinite(t*r)||t>0&&r>0&&t*r===0)throw new Error("Terrain field probe area must be finite and representable");if(!t&&!r)return this.sampleHeight([e[0],e[1]])!==null;let i=[];for(let s of this.findEntries(e)){let d=Math.max(e[0],s.bounds[0]),l=Math.min(e[2],s.bounds[2]),h=Math.max(e[1],s.bounds[1]),c=Math.min(e[3],s.bounds[3]);if(!(d>l||h>c||t&&d===l||r&&h===c)){if(this.hasMissingSamples(s,[d,h,l,c]))return!1;i.push([d,h,l,c])}}let a=i.length===1?i[0]:null;return(a?t&&r?(a[2]-a[0])*(a[3]-a[1]):t?a[2]-a[0]:a[3]-a[1]:t&&r?Ne(i):ce(i.map(s=>t?[s[0],s[2]]:[s[1],s[3]])))>=(t&&r?t*r:t||r)*(1-1e-10)}getStatistics(){return{...this.statistics}}getHeightRange(e){if(!this.coversBounds(e))return null;let t=1/0,r=-1/0;for(let i of this.findEntries(e)){let{grid:a}=i,o=a.registration==="pixel-center",s=Math.max(e[0],a.bounds[0]),d=Math.min(e[2],a.bounds[2]),l=Math.max(e[1],a.bounds[1]),h=Math.min(e[3],a.bounds[3]);if(s>d||l>h)continue;let c=[s,d],m=[l,h];for(let f=0;f<a.width;f++){let u=a.bounds[0]+(f+(o?.5:0))/(o?a.width:a.width-1)*(a.bounds[2]-a.bounds[0]);u>s&&u<d&&c.push(u)}for(let f=0;f<a.height;f++){let u=a.bounds[3]-(f+(o?.5:0))/(o?a.height:a.height-1)*(a.bounds[3]-a.bounds[1]);u>l&&u<h&&m.push(u)}for(let f of m)for(let u of c){let y=q(a,[u,f]);if(y===null||!Number.isFinite(y))return null;t=Math.min(t,y),r=Math.max(r,y)}}return Number.isFinite(t)?{minimum:t,maximum:r}:null}findEntries(e){let t=[],r=this.root?[this.root]:[];for(;r.length;){let i=r.pop();this.statistics.boundsTests++,de(i.bounds,e)&&(i.entry?(t.push(i.entry),this.statistics.candidateGrids++):i.children&&r.push(...i.children))}return t.sort((i,a)=>i.index-a.index)}hasMissingSamples(e,t){let{grid:r}=e,i=r.width+1,a=i*(r.height+1)*Uint32Array.BYTES_PER_ELEMENT;if(e.mask===void 0&&a<=this.maxMaskBytes-this.statistics.maskBytes){let f=!1;for(let y of r.valid)if(this.statistics.maskSamples++,!y){f=!0;break}if(!f)return e.mask=null,!1;let u=new Uint32Array(i*(r.height+1));for(let y=0;y<r.height;y++)for(let p=0;p<r.width;p++){let T=(y+1)*i+p+1,x=+!r.valid[y*r.width+p];u[T]=x+u[T-1]+u[T-i]-u[T-i-1]}this.statistics.maskSamples+=r.valid.length,e.mask=u,this.statistics.maskBytes+=a,this.statistics.maskBuilds++}if(e.mask===null)return!1;let o=r.registration==="pixel-center",s=f=>Math.max(0,Math.min(r.width-1,(f-r.bounds[0])/(r.bounds[2]-r.bounds[0])*(o?r.width:r.width-1)-(o?.5:0))),d=f=>Math.max(0,Math.min(r.height-1,(r.bounds[3]-f)/(r.bounds[3]-r.bounds[1])*(o?r.height:r.height-1)-(o?.5:0))),l=Math.floor(s(t[0])),h=Math.ceil(s(t[2])),c=Math.floor(d(t[3])),m=Math.ceil(d(t[1]));if(e.mask)return!!(e.mask[(m+1)*i+h+1]-e.mask[c*i+h+1]-e.mask[(m+1)*i+l]+e.mask[c*i+l]);for(let f=c;f<=m;f++)for(let u=l;u<=h;u++)if(this.statistics.maskSamples++,!r.valid[f*r.width+u])return!0;return!1}};function de(n,e){return n[0]<=e[2]&&n[2]>=e[0]&&n[1]<=e[3]&&n[3]>=e[1]}function J(n){let e=[1/0,1/0,-1/0,-1/0];for(let i of n)e[0]=Math.min(e[0],i.sampleBounds[0]),e[1]=Math.min(e[1],i.sampleBounds[1]),e[2]=Math.max(e[2],i.sampleBounds[2]),e[3]=Math.max(e[3],i.sampleBounds[3]);if(n.length===1)return{bounds:e,entry:n[0]};let t=e[2]-e[0]>=e[3]-e[1]?0:1;n.sort((i,a)=>i.bounds[t]/2+i.bounds[t+2]/2-(a.bounds[t]/2+a.bounds[t+2]/2)||i.index-a.index);let r=Math.floor(n.length/2);return{bounds:e,children:[J(n.slice(0,r)),J(n.slice(r))]}}function ce(n){n.sort((r,i)=>r[0]-i[0]);let e=0,t=-1/0;for(let[r,i]of n)e+=Math.max(0,i-Math.max(r,t)),t=Math.max(t,i);return e}function Ne(n){let e=[...new Set(n.flatMap(r=>[r[0],r[2]]))].sort((r,i)=>r-i),t=0;for(let r=1;r<e.length;r++){let i=e[r-1],a=e[r];t+=(a-i)*ce(n.filter(o=>o[0]<=i&&o[2]>=a).map(o=>[o[1],o[3]]))}return t}function ke(n,e){let t=0,r=0;for(let i of n){let[a,o,s,d]=i.bounds,l=Math.max(s-a,d-o)*1e-10;if(e[0]<a-l||e[0]>s+l||e[1]<o-l||e[1]>d+l)continue;let h=q(i,[Math.max(a,Math.min(s,e[0])),Math.max(o,Math.min(d,e[1]))]);if(h===null)return null;t+=h,r++}return r?t/r:null}function Ce(n,e=[]){let t=[n,...e.filter(u=>u!==n)],[r,i,a,o]=n.bounds;for(let u of t)if(u.verticalDatum!==n.verticalDatum||u.registration!==n.registration||u.width!==n.width||u.height!==n.height||Math.abs((u.bounds[2]-u.bounds[0])/(a-r)-1)>1e-8||Math.abs((u.bounds[3]-u.bounds[1])/(o-i)-1)>1e-8)throw new Error("Terrain neighbors require matching resolution and datum");let s=n.registration==="pixel-center"?n.width:n.width-1,d=n.registration==="pixel-center"?n.height:n.height-1,l=s+1,h=d+1,c=new U(t),m=new Float32Array(l*h),f=new Uint8Array(l*h);for(let u=0;u<h;u++)for(let y=0;y<l;y++){let p=c.sampleHeight([r+y/s*(a-r),o-u/d*(o-i)]),T=u*l+y;m[T]=p??NaN,f[T]=+(p!==null)}return{width:l,height:h,heights:m,valid:f,bounds:[...n.bounds],registration:"grid-node",verticalDatum:n.verticalDatum}}var te=class{byteLimit;allocations=new Map;sharedIdentities=new WeakMap;peakBytes=0;bytes=0;constructor(e){ee(e),this.byteLimit=e}reserve(e,t){return this.reserveAll([{domain:e,bytes:t}])?.[0]??null}reserveShared(e,t,r){return this.reserveAll([{identity:e,domain:t,bytes:r}])?.[0]??null}createLease(e,t,r){let i=(r?this.sharedIdentities.get(r):void 0)??{},a=this.allocations.get(i);a?a.references++:(a={domain:e,bytes:t,references:1},this.allocations.set(i,a),r&&this.sharedIdentities.set(r,i),this.bytes+=t,this.peakBytes=Math.max(this.peakBytes,this.bytes));let o=i,s=a,d=!0;return{resize:l=>(ee(l),!d||r&&l!==s.bytes||l-s.bytes>this.byteLimit-this.bytes?!1:(this.bytes+=l-s.bytes,s.bytes=l,this.peakBytes=Math.max(this.peakBytes,this.bytes),!0)),release:()=>{d&&(d=!1,s.references--,s.references||(this.bytes-=s.bytes,this.allocations.delete(o)))}}}reserveAll(e){let t=e.map(({domain:a,bytes:o,identity:s})=>({domain:a,bytes:o,identity:s})),r=0,i=new Map;for(let a of t){if(ee(a.bytes),!["retained","transient","gpu"].includes(a.domain))throw new Error("Invalid terrain resource domain");if(a.identity!==void 0){if(a.identity===null||typeof a.identity!="object")throw new Error("Invalid shared terrain resource identity");let o=this.sharedIdentities.get(a.identity),d=(o?this.allocations.get(o):void 0)??i.get(a.identity);if(d){if(d.domain!==a.domain||d.bytes!==a.bytes)throw new Error("Shared terrain resource metadata must match");continue}i.set(a.identity,a)}if(a.bytes>Number.MAX_SAFE_INTEGER-r)throw new Error("Invalid terrain resource byte reservation");r+=a.bytes}return r>this.byteLimit-this.bytes?null:t.map(a=>this.createLease(a.domain,a.bytes,a.identity))}getStatistics(){let e={retained:0,transient:0,gpu:0},t=0;for(let r of this.allocations.values())e[r.domain]+=r.bytes,t+=r.references;return{bytes:this.bytes,peakBytes:this.peakBytes,byteLimit:this.byteLimit,retainedBytes:e.retained,transientBytes:e.transient,gpuBytes:e.gpu,leases:t}}};function ee(n){if(!Number.isSafeInteger(n)||n<0)throw new Error("Invalid terrain resource byte reservation")}var me=new WeakMap;function Ae(n,e,t,r){if(n.length!==16||![...n,...e,...t,r.width,r.height].every(Number.isFinite)||e.some((l,h)=>l>t[h])||r.width<=0||r.height<=0)throw new Error("Invalid terrain projection bound");let i=1/0,a=0,o=0;for(let l=0;l<8;l++){let h=e.map((m,f)=>l&1<<f?t[f]:m),c=m=>n[m]*h[0]+n[m+4]*h[1]+n[m+8]*h[2]+n[m+12];i=Math.min(i,c(3)),a=Math.max(a,Math.abs(c(0))),o=Math.max(o,Math.abs(c(1)))}if(i<=0)return null;let s=l=>Math.hypot(n[l],n[l+4],n[l+8]),d=Math.hypot(r.width/2*(s(0)/i+a/i*s(3)/i),r.height/2*(s(1)/i+o/i*s(3)/i));return Number.isFinite(d)?d:null}function be(n){let e=me.get(n);if(e)return e;let t=n.bounds[2]-n.bounds[0],r=n.bounds[3]-n.bounds[1];if(!Number.isSafeInteger(n.width)||!Number.isSafeInteger(n.height)||n.width<2||n.height<2||n.heights.length!==n.width*n.height||n.valid.length!==n.heights.length||n.bounds.length!==4||!n.bounds.every(Number.isFinite)||!Number.isFinite(t)||!Number.isFinite(r)||t<=0||r<=0||!["grid-node","pixel-center"].includes(n.registration))throw new Error("Invalid terrain error grid");let i=t/(n.registration==="pixel-center"?n.width:n.width-1),a=r/(n.registration==="pixel-center"?n.height:n.height-1),o=1/0,s=-1/0,d=0,l=0,h=!0;for(let m=0;m<n.heights.length;m++){if(!n.valid[m]){h=!1;continue}if(!Number.isFinite(n.heights[m]))throw new Error("Terrain error envelope requires finite valid heights");let f=n.heights[m];o=Math.min(o,f),s=Math.max(s,f),m%n.width&&n.valid[m-1]&&(d=Math.max(d,Math.abs(f-n.heights[m-1])/i)),m>=n.width&&n.valid[m-n.width]&&(l=Math.max(l,Math.abs(f-n.heights[m-n.width])/a))}if(o===1/0&&(o=0,s=0),![o,s,d,l].every(Number.isFinite))throw new Error("Terrain error envelope exceeds finite range");let c=Object.freeze({minimumHeight:o,maximumHeight:s,eastSlope:d,northSlope:l,width:t,height:r,complete:h});return me.set(n,c),c}function re(n,e){if(!Number.isSafeInteger(e)||e<2||e>64||e&e-1||![n.width,n.height,n.minimumHeight,n.maximumHeight,n.eastSlope,n.northSlope].every(Number.isFinite)||n.width<=0||n.height<=0||n.maximumHeight<n.minimumHeight||n.eastSlope<0||n.northSlope<0)throw new Error("Invalid terrain error policy");let t=Math.min(n.maximumHeight-n.minimumHeight,(n.eastSlope*n.width+n.northSlope*n.height)/e),r=Math.min(Math.PI,(n.width+n.height)/(6378137*e)),i=256*2*Math.sin(r/2)**2;return{heightError:t,globeCurvatureError:i}}function Re(n,e){let t=e.targetPixels??2,r=e.pixelsPerGlobeUnit??0;if(![t,e.pixelsPerMeter,r].every(Number.isFinite)||t<=0||e.pixelsPerMeter<0||r<0)throw new Error("Invalid projected terrain error scale");let i=n.map(be),a=n.map((h,c)=>{let m=0;for(let f=0;f<n.length;f++){if(f===c)continue;let u=n[f],y=2*Math.PI*6378137,p=Math.max(i[c].width,i[f].width)*1e-10;[-y,0,y].some(T=>{let x=Math.min(h.bounds[2],u.bounds[2]+T)-Math.max(h.bounds[0],u.bounds[0]+T),v=Math.min(h.bounds[3],u.bounds[3])-Math.max(h.bounds[1],u.bounds[1]);return x>=-p&&v>=-p})&&(m=Math.max(m,Math.abs(i[c].maximumHeight-i[f].minimumHeight),Math.abs(i[f].maximumHeight-i[c].minimumHeight)))}return m}),o=(h,c=!1)=>Math.max(0,...i.map((m,f)=>{let u=re(m,h);return Math.max(u.heightError,c?a[f]:0)*e.pixelsPerMeter+u.globeCurvatureError*r})),s=e.previousResolution??2;for(re({minimumHeight:0,maximumHeight:0,eastSlope:0,northSlope:0,width:1,height:1,complete:!0},s);s<64&&o(s)>t;)s*=2;for(;s>2&&o(s/2)<t*.8;)s/=2;let d=o(s,!0),l=i.every(h=>h.complete);return{resolution:s,projectedError:d,limited:d>t||!l,complete:l}}function Le(n,e,t,r){let i=r.maxStep??2,a=r.maxProbes??128;if(e.length!==3||t.length!==3||![...e,...t,r.radius,r.clearance,i].every(Number.isFinite)||r.radius<0||r.clearance<0||i<=0||!Number.isSafeInteger(a)||a<1||a>1024)throw new Error("Invalid swept terrain motion");let o=Math.hypot(t[0]-e[0],t[1]-e[1]),s=Math.max(1,Math.ceil(o/i));if(s>a)return{available:!1,blocked:!0,reason:"budget",probes:0};let d=!1;for(let l=0;l<s;l++){let h=e.map((f,u)=>f+(t[u]-f)*l/s),c=e.map((f,u)=>f+(t[u]-f)*(l+1)/s),m=n.getHeightRange([Math.min(h[0],c[0])-r.radius,Math.min(h[1],c[1])-r.radius,Math.max(h[0],c[0])+r.radius,Math.max(h[1],c[1])+r.radius]);if(!m)return{available:!1,blocked:!0,reason:"missing",probes:l+1};d||=Math.min(h[2],c[2])-r.clearance<m.maximum}return{available:!0,blocked:d,reason:d?"terrain":"clear",probes:s}}var B=2*Math.PI*6378137,fe=new WeakMap;function ne(n,e,t,r,i){let[a,o,s,d]=n,l=r[0]===i[0],h=l?1:0;if(!(l&&(r[0]===0||r[0]===t)||r[1]===i[1]&&(r[1]===0||r[1]===t)))return[];let c=Math.max(s-a,d-o)*1e-10,m=l?a+r[0]/t*(s-a):d-r[1]/t*(d-o),f=new Set;for(let u of e)if(!(l?Math.min(Math.abs(m-u[0]),Math.abs(m-u[2]))>c:Math.min(Math.abs(m-u[1]),Math.abs(m-u[3]))>c))for(let y=0;y<=t;y++){let p=l?(d-(u[3]-y/t*(u[3]-u[1])))/(d-o)*t:(u[0]+y/t*(u[2]-u[0])-a)/(s-a)*t;p>Math.min(r[h],i[h])+1e-8&&p<Math.max(r[h],i[h])-1e-8&&f.add(Math.round(p*1e8)/1e8)}return[...f].sort((u,y)=>(u-y)*Math.sign(i[h]-r[h])).map(u=>l?[r[0],u]:[u,r[1]])}function Pe(n,e=!1){if(n.length!==4)throw new Error("Canonical terrain ground requires quadtree DEM footprints");let t=n[2]-n[0],r=Math.round(Math.log2(B/t));if(!Number.isSafeInteger(r)||r<0||r>30)throw new Error("Canonical terrain ground requires quadtree DEM footprints");let i=B/2**r,a=Math.round((n[0]+B/2)/i),o=Math.round((B/2-n[3])/i),s=[a*i-B/2,B/2-(o+1)*i,(a+1)*i-B/2,B/2-o*i];if(o<0||o>=2**r||n.some((d,l)=>!Number.isFinite(d)||Math.abs(d-s[l])>Math.max(1e-6,i*1e-8)))throw new Error("Canonical terrain ground requires quadtree DEM footprints");if(e){let d=(a%2**r+2**r)%2**r;return[d*i-B/2,s[1],(d+1)*i-B/2,s[3]]}return s}function De(n){let e=fe.get(n);if(e)return e;let t=n.flatMap(r=>{let i=Pe(r.bounds,!0);return[-1,0,1].map(a=>[i[0]+a*B,i[1],i[2]+a*B,i[3]])});for(let r=0;r<t.length;r++)for(let i=0;i<r;i++){let a=t[r],o=t[i],s=Math.max(a[2]-a[0],o[2]-o[0])*1e-10,d=Math.min(a[2],o[2])-Math.max(a[0],o[0]),l=Math.min(a[3],o[3])-Math.max(a[1],o[1]);if(d>s&&l>s)throw new Error("Canonical terrain ground footprints overlap");if(d>s&&l>=-s||l>s&&d>=-s){let h=(a[2]-a[0])/(o[2]-o[0]);if(![.5,1,2].some(c=>Math.abs(c-h)<1e-8))throw new Error("Canonical terrain ground requires balanced 2:1 edges")}}return fe.set(n,t),t}function Ue(n,e,t=32,r=131072){if(n.length>96||!Number.isSafeInteger(t)||t<2||t>64||(t&t-1)!==0||!Number.isSafeInteger(r)||r<0||e.length!==4||!e.every(Number.isFinite)||e[0]>=e[2]||e[1]>=e[3]||e[2]-e[0]>B*(1+1e-10))throw new Error("Invalid canonical terrain ground limits or bounds");let i=Math.floor(((e[0]+e[2])/2+B/2)/B)*B,a=[e[0]-i,e[1],e[2]-i,e[3]],o=De(n),s=[],d=[],l=[],h=new Map;function c(u,y,p){let T=Math.round(Math.log2(B/(u[2]-u[0]))),x=B/2**T,v=Math.round((u[0]+B/2)/x),F=Math.round((B/2-u[3])/x),G=x/t*(v*t+y)-B/2,N=B/2-x/t*(F*t+p),A=`${G},${N}`,P=h.get(A);if(P===void 0){if(h.size>=r)throw new Error("Canonical terrain ground vertex budget exceeded");P=h.size,h.set(A,P),s.push(G,N),d.push((v+y/t)/2**T+Math.round(i/B),(F+p/t)/2**T)}return P}function m(u,y){let p=[];for(let T=0;T<3;T++){let x=y[T],v=y[(T+1)%3];p.push(c(u,...x),...ne(u,o,t,x,v).map(F=>c(u,...F)))}if(p.length===3)l.push(...p);else{let T=c(u,y[0][0]/2+y[1][0]/4+y[2][0]/4,y[0][1]/2+y[1][1]/4+y[2][1]/4);for(let x=0;x<p.length;x++)l.push(T,p[x],p[(x+1)%p.length])}}for(let u of o){let y=Math.max(a[0],u[0]),p=Math.min(a[2],u[2]),T=Math.max(a[1],u[1]),x=Math.min(a[3],u[3]);if(y>=p||T>=x)continue;let v=(u[2]-u[0])/t,F=Math.max(B,...u.map(Math.abs))/v*Number.EPSILON*4,G=H=>Math.abs(H-Math.round(H))<=F?Math.round(H):H,N=Math.max(0,Math.floor(G((y-u[0])/(u[2]-u[0])*t))),A=Math.min(t,Math.ceil(G((p-u[0])/(u[2]-u[0])*t))),P=Math.max(0,Math.floor(G((u[3]-x)/(u[3]-u[1])*t))),W=Math.min(t,Math.ceil(G((u[3]-T)/(u[3]-u[1])*t)));for(let H=P;H<W;H++)for(let R=N;R<A;R++)m(u,[[R,H],[R,H+1],[R+1,H]]),m(u,[[R+1,H],[R,H+1],[R+1,H+1]])}let f=Float64Array.from(s);return{positions:i?Float64Array.from(f,(u,y)=>y%2?u:u+i):f,samplePositions:f,normalizedPositions:Float64Array.from(d),indices:Uint32Array.from(l),sampleOffset:i}}import{intersectRayBounds as pe,intersectRayTriangle as qe}from"@math.gl/culling/queries";var ie=class n{static getRequiredHierarchyBytes(e,t=8){if(!Number.isSafeInteger(e)||e<0||e>4294967295||!Number.isSafeInteger(t)||t<1||t>64)throw new Error("Invalid triangle hierarchy dimensions");let r=new Map,i=a=>{if(!a)return 0;if(a<=t)return 1;let o=r.get(a);if(o!==void 0)return o;let s=Math.floor(a/2),d=1+i(s)+i(a-s);return r.set(a,d),d};return e*4+i(e)*64}triangleCount;geometryBytes;requiredHierarchyBytes;positions;indices;order;bounds;topology;preparing;leafSize;nodeCount;hierarchyAllowed;deferBuild;minimum=[1/0,1/0,1/0];maximum=[-1/0,-1/0,-1/0];constructor(e,t,r=8,i={}){if(!Number.isSafeInteger(e.length)||!Number.isSafeInteger(t.length)||e.length%3||t.length%3||!Number.isSafeInteger(r)||r<1||r>64)throw new Error("Invalid triangle index dimensions or leaf size");if(t.length/3>4294967295)throw new Error("Triangle positions and indices must be finite and in range");if(i.maxHierarchyBytes!==void 0&&(!Number.isSafeInteger(i.maxHierarchyBytes)||i.maxHierarchyBytes<0))throw new Error("Triangle hierarchy byte limit must be a non-negative integer");this.positions=Float64Array.from(e);for(let a=0;a<this.positions.length;a++)if(!Number.isFinite(this.positions[a]))throw new Error("Triangle positions and indices must be finite and in range");this.indices=new Uint32Array(t.length);for(let a=0;a<t.length;a++){let o=t[a];if(!Number.isSafeInteger(o)||o<0||o>=this.positions.length/3||o>4294967295)throw new Error("Triangle positions and indices must be finite and in range");this.indices[a]=o}this.triangleCount=t.length/3,this.leafSize=r,this.requiredHierarchyBytes=n.getRequiredHierarchyBytes(this.triangleCount,r),this.nodeCount=(this.requiredHierarchyBytes-this.triangleCount*4)/64,this.geometryBytes=this.positions.byteLength+this.indices.byteLength,this.hierarchyAllowed=this.requiredHierarchyBytes<=(i.maxHierarchyBytes??1/0),this.deferBuild=i.deferBuild??!1;for(let a=0;a<this.positions.length;a++){let o=a%3;this.minimum[o]=Math.min(this.minimum[o],this.positions[a]),this.maximum[o]=Math.max(this.maximum[o],this.positions[a])}!i.lazy&&this.hierarchyAllowed&&this.buildHierarchy()}get arrayBytes(){return this.geometryBytes+this.hierarchyBytes}get hierarchyBytes(){return this.preparing?this.requiredHierarchyBytes:(this.order?.byteLength??0)+(this.bounds?.byteLength??0)+(this.topology?.byteLength??0)}getBounds(){return this.positions.length?{minimum:[...this.minimum],maximum:[...this.maximum]}:null}*prepareHierarchySteps(){if(this.order||this.preparing||!this.hierarchyAllowed||!this.triangleCount)return;let e={order:new Uint32Array(this.triangleCount),bounds:new Float64Array(this.nodeCount*6),topology:new Uint32Array(this.nodeCount*4)};this.preparing=e;try{for(let t=0;t<e.order.length;t++)e.order[t]=t,t%128===127&&(yield);yield*this.buildNodeSteps(e,0,this.triangleCount,{next:0}),this.bounds=e.bounds,this.topology=e.topology,this.order=e.order}finally{this.preparing=void 0}}getTriangleVertex(e,t){return{index:this.getVertexIndex(e,t),position:this.getVertex(e,t)}}getVertexIndex(e,t){if(!Number.isSafeInteger(e)||e<0||e>=this.triangleCount||!Number.isSafeInteger(t)||t<0||t>2)throw new Error("Triangle vertex is out of range");return this.indices[e*3+t]}queryRay(e,t,r=1/0,i){if(r<0||Number.isNaN(r))throw new Error("Triangle ray limit must be non-negative");let a={hit:null,testedBounds:0,testedTriangles:0},o=Math.hypot(...t);if(e.length!==3||t.length!==3||!e.every(Number.isFinite)||!t.every(Number.isFinite)||!Number.isFinite(o)||o===0||!this.triangleCount||pe(e,t,this.minimum,this.maximum,r)===null)return a;this.hierarchyAllowed&&!this.deferBuild&&!this.order&&!this.preparing&&this.buildHierarchy();let s=l=>{a.testedTriangles++;let h=qe(e,t,this.getVertex(l,0),this.getVertex(l,1),this.getVertex(l,2),{maxT:a.hit?.parameter??r});if(h&&(!a.hit||h.t<a.hit.parameter||h.t===a.hit.parameter&&l<a.hit.triangleIndex)){let c={triangleIndex:l,parameter:h.t,barycentric:h.barycentric};(!i||i(c))&&(a.hit=c)}};if(!this.order){for(let l=0;l<this.triangleCount;l++)s(l);return a}let d=[{index:0,near:0}];for(a.testedBounds++;d.length;){let{index:l,near:h}=d.pop();if(h>(a.hit?.parameter??r))continue;let c=this.readNode(l);if(c.children){let m=c.children.flatMap(f=>{let u=this.readNode(f);a.testedBounds++;let y=pe(e,t,u.minimum,u.maximum,a.hit?.parameter??r);return y===null?[]:[{index:f,near:y}]});m.sort((f,u)=>u.near-f.near||u.index-f.index),d.push(...m);continue}for(let m=c.start;m<c.end;m++)s(this.order[m])}return a}buildHierarchy(){for(let e of this.prepareHierarchySteps());}readNode(e){let t=this.bounds,r=this.topology,i=e*4;return{minimum:[t[e*6],t[e*6+1],t[e*6+2]],maximum:[t[e*6+3],t[e*6+4],t[e*6+5]],start:r[i],end:r[i+1],children:r[i+2]?[r[i+2],r[i+3]]:void 0}}getVertex(e,t){let r=this.indices[e*3+t]*3;return[this.positions[r],this.positions[r+1],this.positions[r+2]]}*buildNodeSteps(e,t,r,i){let{order:a,bounds:o,topology:s}=e,d=[1/0,1/0,1/0],l=[-1/0,-1/0,-1/0];for(let c=t;c<r;c++){for(let m=0;m<3;m++){let f=this.indices[a[c]*3+m]*3;for(let u=0;u<3;u++){let y=this.positions[f+u];d[u]=Math.min(d[u],y),l[u]=Math.max(l[u],y)}}(c-t)%128===127&&(yield)}let h=i.next++;if(o.set([...d,...l],h*6),s.set([t,r],h*4),r-t>this.leafSize){let c=0;for(let p=1;p<3;p++)l[p]-d[p]>l[c]-d[c]&&(c=p);let m=p=>(this.positions[this.indices[p*3]*3+c]+this.positions[this.indices[p*3+1]*3+c]+this.positions[this.indices[p*3+2]*3+c])/3,f=t+Math.floor((r-t)/2);yield*this.partitionSteps(a,f,t,r-1,(p,T)=>m(p)-m(T)||p-T);let u=yield*this.buildNodeSteps(e,t,f,i),y=yield*this.buildNodeSteps(e,f,r,i);s.set([u,y],h*4+2)}return yield,h}*partitionSteps(e,t,r,i,a){let o=0;for(;r<i;){let s=e[r+Math.floor((i-r)/2)],d=r,l=i;for(;d<=l;){for(;a(e[d],s)<0;)d++,++o%128===0&&(yield);for(;a(e[l],s)>0;)l--,++o%128===0&&(yield);if(d<=l){let h=e[d];e[d++]=e[l],e[l--]=h}++o%128===0&&(yield)}if(t<=l)i=l;else if(t>=d)r=d;else return}}};function Oe(n){if(!["web-mercator","globe"].includes(n.projection))throw new Error("Invalid terrain query projection");let e={projection:n.projection,intersectRay(t,r){let i=n.intersectRay(t,r);return i?{...i,position:[...i.position],coordinate:[...i.coordinate],normal:[...i.normal],barycentric:[...i.barycentric]}:null}};return n.getBounds&&(e.getBounds=()=>{let t=n.getBounds?.();return t?{minimum:[...t.minimum],maximum:[...t.maximum]}:null}),e}import{worldToLngLat as ze}from"@math.gl/web-mercator";var ye=256,ae=6370972,_=6378137;function*je(n){let e=!1;for(let i=0;i<n.valid.length&&!e;i+=4096){for(let a=i;a<Math.min(n.valid.length,i+4096);a++)if(n.valid[a]===0){e=!0;break}yield}if(!e)return null;let t=n.width+1,r=new Uint32Array(t*(n.height+1));for(let i=0;i<n.height;i++){let a=0;for(let o=0;o<n.width;o++)a+=+(n.valid[i*n.width+o]===0),r[(i+1)*t+o+1]=r[i*t+o+1]+a;i%8===7&&(yield)}return r}function Qe(n,e,t){let r=Math.max(n.bounds[0],t[0]),i=Math.max(n.bounds[1],t[1]),a=Math.min(n.bounds[2],t[2]),o=Math.min(n.bounds[3],t[3]);if(r>a||i>o)return!1;let s=n.registration==="pixel-center",d=(s?n.width:n.width-1)/(n.bounds[2]-n.bounds[0]),l=(s?n.height:n.height-1)/(n.bounds[3]-n.bounds[1]),h=s?.5:0,c=Math.floor(Math.max(0,(r-n.bounds[0])*d-h)),m=Math.ceil(Math.min(n.width-1,(a-n.bounds[0])*d-h)),f=Math.floor(Math.max(0,(n.bounds[3]-o)*l-h)),u=Math.ceil(Math.min(n.height-1,(n.bounds[3]-i)*l-h)),y=n.width+1;return e[(u+1)*y+m+1]-e[f*y+m+1]-e[(u+1)*y+c]+e[f*y+c]>0}var ge=new WeakMap;function oe(n,e=100){if(!Number.isFinite(e)||e<0||e>1e3||!Number.isFinite(n)||n<0)throw new Error("Invalid globe terrain exaggeration or screen ratio");if(e<=1)return e;let t=Math.max(0,Math.min(1,Math.log2(Math.max(1,n))));return(e+1)**(1-t*t*(3-2*t))-1}function _e(n,e={}){return oe(0,e.exaggeration??1),Me(Te(n,e),e.exaggeration??1)}function Te(n,e={}){let t=V(n,e),r=t.next();for(;!r.done;)r=t.next();return r.value}function*V(n,e={}){let t=e.resolution??64;if(!Number.isSafeInteger(t)||t<2||t>256)throw new Error("Globe terrain resolution must be an integer in [2, 256]");let r=[n,...e.neighbors??[]],i=Math.PI*_;for(let b of r)if(!Number.isSafeInteger(b.width)||!Number.isSafeInteger(b.height)||b.width<2||b.height<2||b.heights.length!==b.width*b.height||b.valid.length!==b.heights.length||b.bounds.length!==4||!b.bounds.every(Number.isFinite)||b.bounds[0]>=b.bounds[2]||b.bounds[1]>=b.bounds[3]||b.bounds.some(g=>Math.abs(g)>i+1e-6)||!["grid-node","pixel-center"].includes(b.registration)||!["ellipsoidal","orthometric","unknown"].includes(b.verticalDatum)||b.verticalDatum!==n.verticalDatum)throw new Error("Invalid globe terrain grid or incompatible vertical datum");let a=2*Math.PI*_,o=r.flatMap(b=>[-1,0,1].map(g=>({...b,bounds:[b.bounds[0]+g*a,b.bounds[1],b.bounds[2]+g*a,b.bounds[3]]}))).filter(b=>b.bounds[0]<=n.bounds[2]&&b.bounds[2]>=n.bounds[0]&&b.bounds[1]<=n.bounds[3]&&b.bounds[3]>=n.bounds[1]),s=new U(o),d=[];for(let b of o){let g=yield*je(b);g&&d.push({grid:b,prefix:g})}let[l,h,c,m]=n.bounds,f=Math.max(c-l,m-h)*1e-10;for(let b of o){let g=Math.min(c,b.bounds[2])-Math.max(l,b.bounds[0]),M=Math.min(m,b.bounds[3])-Math.max(h,b.bounds[1]),w=b.bounds.every((S,I)=>Math.abs(S-n.bounds[I])<=f);if(!w&&g>f&&M>f)throw new Error("Globe terrain neighbors must not overlap");if(!w&&(g>f||M>f)){let S=(b.bounds[2]-b.bounds[0])/(c-l);if(![.5,1,2].some(I=>Math.abs(S-I)<1e-8)||Math.abs((b.bounds[3]-b.bounds[1])/(m-h)-S)>1e-8)throw new Error("Globe terrain edges require balanced 2:1 footprints")}}let u=t+1,y=[],p=[],T=[],x=[],v=[],F=new Map;if((c-l)/t>=i-1e-6)throw new Error("Globe terrain cells must span less than 180 degrees longitude");let G=512/(2*Math.PI*_);function N(b,g){b=Math.round(b*1e8)/1e8,g=Math.round(g*1e8)/1e8;let M=`${b},${g}`,w=F.get(M);if(w!==void 0)return w;let S=T.length;F.set(M,S);let I=l+(c-l)*b/t,C=m-(m-h)*g/t,k=s.sampleHeight([I,C]);if(k!==null&&!Number.isFinite(k))throw new Error("Invalid globe terrain elevation");v.push(k!==null),T.push(k??NaN),x.push([I,C]);let L=ze([I*G+256,C*G+256]),D=[Math.fround(L[0]),Math.fround(L[1]),0];y.push(...D);let z=D[0]*Math.PI/180,E=D[1]*Math.PI/180,X=ye;return p.push(Math.sin(z)*Math.cos(E)*X,-Math.cos(z)*Math.cos(E)*X,Math.sin(E)*X),S}for(let b=0;b<u;b++){for(let g=0;g<u;g++)N(g,b);yield}let A=[];function P(b){if(!b.every(L=>v[L]))return;let[g,M,w]=b.map(L=>L*3),S=[p[M]-p[g],p[M+1]-p[g+1],p[M+2]-p[g+2]],I=[p[w]-p[g],p[w+1]-p[g+1],p[w+2]-p[g+2]],C=[S[1]*I[2]-S[2]*I[1],S[2]*I[0]-S[0]*I[2],S[0]*I[1]-S[1]*I[0]];if(Math.hypot(...C)===0)throw new Error("Globe terrain triangle collapses at packed coordinate precision");let k=C[0]*p[g]+C[1]*p[g+1]+C[2]*p[g+2]<0?-1:1;A.push(b[0],b[k===1?1:2],b[k===1?2:1])}function W(b,g){return ne(n.bounds,o.map(M=>M.bounds),t,b,g).map(M=>N(...M))}function H(b){let g=[];for(let M=0;M<3;M++){let w=b[M],S=b[(M+1)%3];g.push(N(w[0],w[1]),...W(w,S))}if(g.every(M=>v[M]))if(g.length===3)P(g);else{let M=N(b.reduce((w,S)=>w+S[0]/3,0),b.reduce((w,S)=>w+S[1]/3,0));for(let w=0;w<g.length;w++)P([M,g[w],g[(w+1)%g.length]])}}for(let b=0;b<t;b++){for(let g=0;g<t;g++){let M=b*u+g,w=M+1,S=M+u,I=S+1;if(![M,w,S,I].every(k=>v[k]))continue;let C=[l+(c-l)*g/t,m-(m-h)*(b+1)/t,l+(c-l)*(g+1)/t,m-(m-h)*b/t];d.some(k=>Qe(k.grid,k.prefix,C))||(H([[g,b],[g,b+1],[g+1,b]]),H([[g+1,b],[g,b+1],[g+1,b+1]]))}yield}let R=Object.freeze({vertexCount:T.length,triangleCount:A.length/3,byteLength:T.length*68+A.length*4});e.onAllocate?.(R.byteLength,R);let $=new Float64Array(T.length*2),le=new Float64Array(T.length*4);function ue(b,g,M,w){return b!==null&&g!==null?(g-b)/(2*w):g!==null?(g-M)/w:b!==null?(M-b)/w:0}for(let b=0;b<T.length;b++){let g=b*3,[M,w]=x[b],S=T[b],I=y[g]*Math.PI/180,C=y[g+1]*Math.PI/180;le.set([Math.sin(I),Math.cos(I),Math.sin(C),Math.cos(C)],b*4);let k=o.filter(E=>M>=E.bounds[0]-f&&M<=E.bounds[2]+f&&w>=E.bounds[1]-f&&w<=E.bounds[3]+f),L=Math.min(...k.map(E=>(E.bounds[2]-E.bounds[0])/(E.registration==="pixel-center"?E.width:E.width-1))),D=Math.min(...k.map(E=>(E.bounds[3]-E.bounds[1])/(E.registration==="pixel-center"?E.height:E.height-1))),z=Math.cos(C)*ae/_;$[b*2]=v[b]?ue(s.sampleHeight([M-L,w]),s.sampleHeight([M+L,w]),S,L*z):0,$[b*2+1]=v[b]?ue(s.sampleHeight([M,w-D]),s.sampleHeight([M,w+D]),S,D*z):0,b%128===127&&(yield)}let ve={coordinates:Float32Array.from(y.filter((b,g)=>g%3!==2)),heights:Float64Array.from(T),gradients:$,frame:le,physicalHeights:Float32Array.from(T),indices:Uint32Array.from(A)};return ge.set(R,ve),R}function Me(n,e=1){let t=we(n,e),r=t.next();for(;!r.done;)r=t.next();return r.value}function*we(n,e=1){oe(0,e);let t=ge.get(n);if(!t)throw new Error("Globe terrain template must come from prepareGlobeTerrainMesh");let r=new Float32Array(n.vertexCount*3),i=new Float64Array(n.vertexCount*3),a=new Float32Array(n.vertexCount*3);for(let o=0;o<n.vertexCount;o++){let s=o*3,d=t.heights[o],l=!Number.isNaN(d);if(l&&ae+d*e<=0)throw new Error("Invalid globe terrain elevation");if(r[s]=t.coordinates[o*2],r[s+1]=t.coordinates[o*2+1],r[s+2]=(l?d:0)*e,!Number.isFinite(r[s+2]))throw new Error("Globe terrain elevation exceeds packed display range");let h=1+r[s+2]/ae,c=t.gradients[o*2]*e/h,m=t.gradients[o*2+1]*e/h,f=t.frame[o*4],u=t.frame[o*4+1],y=t.frame[o*4+2],p=t.frame[o*4+3],T=f*p,x=-u*p,v=ye*h;i[s]=T*v,i[s+1]=x*v,i[s+2]=y*v;let F=T-c*u-m*(-f*y),G=x-c*f-m*(u*y),N=y-c*0-m*p;if(![F,G,N].every(Number.isFinite))throw new Error("Invalid globe terrain slope");let A=.4+.6*Math.max(0,(F-G+N)/(Math.hypot(F,G,N)*Math.sqrt(3)));a[s]=(d>2500?.9:d<=0?.12:.36)*A,a[s+1]=(d>2500?.92:d<=0?.3:.58)*A,a[s+2]=(d>2500?.96:d<=0?.48:.34)*A,o%128===127&&(yield)}return{geographicPositions:r,positions:i,physicalHeights:t.physicalHeights.slice(),indices:t.indices.slice(),colors:a}}var O=new WeakMap;function xe(n){if(!O.has(n))throw new Error("Prepared globe terrain requires a completed snapshot")}function Ve(n,e){xe(n);let t=O.get(n)?.find(r=>r.grid===e);if(!t)throw new Error("Prepared globe terrain requires a completed snapshot and matching source identity");return t.template}function We(n,e){let t=2*Math.PI*6378137;return e.filter(r=>r!==n&&[-t,0,t].some(i=>r.bounds[0]+i<=n.bounds[2]&&r.bounds[2]+i>=n.bounds[0]&&r.bounds[1]<=n.bounds[3]&&r.bounds[3]>=n.bounds[1]))}function $e(n,e){return n.length===e.length&&n.every((t,r)=>t===e[r])}var se=class{current;target;iterator;staged=[];disposed=!1;statistics;leases=new Map;resourceBudget;constructor(e=96*1024*1024,t={}){if(!Number.isSafeInteger(e)||e<0)throw new Error("Prepared terrain byte limit must be a non-negative integer");this.resourceBudget=t.resourceBudget,this.statistics={pending:0,retainedBytes:0,byteLimit:e,committed:0,cancelled:0,prepared:0,reused:0,slices:0,lastSliceMs:0,maxSliceMs:0,workMs:0,requiredPeakBytes:0}}request(e,t=64){if(this.disposed)throw new Error("Globe terrain preparation is disposed");if(!Number.isSafeInteger(t)||t<2||t>256)throw new Error("Globe terrain resolution must be an integer in [2, 256]");if(e.some(r=>r.verticalDatum!==e[0].verticalDatum))throw new Error("Globe terrain grids require one compatible vertical datum");if(new Set(e.map(r=>r.bounds.join(","))).size!==e.length)throw new Error("Globe terrain grids must have distinct footprints");return this.target?.resolution===t&&$e(this.target.grids,e)?!1:(this.cancel(),this.target={grids:Object.freeze([...e]),resolution:t},Object.assign(this.statistics,{pending:e.length,prepared:0,reused:0,slices:0,lastSliceMs:0,maxSliceMs:0,workMs:0,requiredPeakBytes:0,error:void 0}),this.iterator=this.prepare(this.target.grids,t),!0)}advance(e=4,t=()=>performance.now()){if(!Number.isFinite(e)||e<=0)throw new Error("Preparation slice target must be positive");if(!this.iterator)return!1;let r=t(),i=!1;try{do if(this.iterator.next().done){this.iterator=void 0,i=!0;break}while(t()-r<e)}catch(o){this.iterator?.return(),this.iterator=void 0,this.staged=[],this.statistics.pending=0,this.releaseUnusedLeases(),this.statistics.error=o instanceof Error?o.message:String(o)}let a=Math.max(0,t()-r);return this.statistics.slices++,this.statistics.lastSliceMs=a,this.statistics.maxSliceMs=Math.max(this.statistics.maxSliceMs,a),this.statistics.workMs+=a,i}retry(){if(!this.statistics.error||!this.target||this.disposed)return!1;let{grids:e,resolution:t}=this.target;return this.target=void 0,this.request(e,t)}getSnapshot(){return this.current}getStatistics(){return{...this.statistics,retainedBytes:this.getRetainedBytes(this.staged)}}isPending(){return!!this.iterator}cancel(){let e=!!this.iterator;return e&&this.statistics.cancelled++,this.iterator?.return(),this.iterator=void 0,this.staged=[],this.target=void 0,this.statistics.pending=0,this.releaseUnusedLeases(),e}destroy(){this.cancel(),this.current=void 0,this.releaseUnusedLeases(),this.statistics.pending=0,this.disposed=!0}getRetainedBytes(e){return[...new Set([...this.current?O.get(this.current)??[]:[],...e].map(r=>r.template))].reduce((r,i)=>r+i.byteLength,0)}releaseUnusedLeases(){let e=new Set([...this.current?O.get(this.current)??[]:[],...this.staged].map(t=>t.template));for(let[t,r]of this.leases)e.has(t)||(r.release(),this.leases.delete(t))}*prepare(e,t){let r=new Map((this.current?O.get(this.current)??[]:[]).map(a=>[a.grid,a]));for(let a of e){let o=We(a,e),s=r.get(a),d=s&&this.current?.resolution===t&&s.neighbors.length===o.length&&s.neighbors.every((m,f)=>m===o[f]),l,h;try{h=d?s.template:yield*V(a,{resolution:t,neighbors:o,onAllocate:(m,f)=>{let u=this.getRetainedBytes(this.staged)+m;if(this.statistics.requiredPeakBytes=Math.max(this.statistics.requiredPeakBytes,u),u>this.statistics.byteLimit)throw new Error("Prepared globe terrain retained-byte limit exceeded; current terrain retained");if(this.resourceBudget&&(l=this.resourceBudget.reserveShared(f,"retained",m)??void 0,!l))throw new Error("Prepared globe terrain shared resource budget exceeded; current terrain retained")}}),l&&(this.leases.set(h,l),l=void 0)}finally{l?.release()}let c={grid:a,neighbors:o,template:h};if(this.getRetainedBytes([...this.staged,c])>this.statistics.byteLimit)throw new Error("Prepared globe terrain retained-byte limit exceeded; current terrain retained");this.staged.push(c),this.statistics.pending--,d?this.statistics.reused++:this.statistics.prepared++,yield}let i=Object.freeze({grids:e,resolution:t,byteLength:this.staged.reduce((a,o)=>a+o.template.byteLength,0)});O.set(i,this.staged),this.current=i,this.staged=[],this.statistics.committed++,this.releaseUnusedLeases()}};export{se as GlobeTerrainPreparation,Ie as TERRAIN_RGB_DECODER,Fe as TERRARIUM_DECODER,U as TerrainHeightField,te as TerrainResourceBudget,Q as TileBuildQueue,K as TileCachePolicy,Z as TileResidency,ie as TriangleQueryIndex,Oe as adaptTerrainQuerySource,Ee as areGeographicLabelCopies,xe as assertGlobeTerrainPreparationSnapshot,Ae as boundProjectedDisplacement,re as boundTerrainMeshError,_e as buildGlobeTerrainMesh,Ue as createTerrainGroundTopology,He as decodeTerrainHeightGrid,oe as getGlobeTerrainExaggeration,Ve as getPreparedGlobeTerrainTemplate,j as getScreenBoundsCells,Le as guardTerrainMotion,Y as intersectsScreenBounds,be as measureTerrainError,Te as prepareGlobeTerrainMesh,V as prepareGlobeTerrainMeshSteps,Ce as resampleTerrainNodes,Be as resolveLabelPlacement,q as sampleTerrainHeight,ke as sampleTerrainNeighborhood,Me as scaleGlobeTerrainMesh,we as scaleGlobeTerrainMeshSteps,Re as selectTerrainMeshResolution,Se as unionScreenBounds};
|
|
2
|
+
//# sourceMappingURL=map-logic.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/map-logic/screen-bounds.ts", "../src/map-logic/label-placement.ts", "../src/map-logic/label-identity.ts", "../src/map-logic/tile-build-queue.ts", "../src/map-logic/tile-residency.ts", "../src/map-logic/tile-cache-policy.ts", "../src/map-logic/terrain-data.ts", "../src/map-logic/terrain-height-field.ts", "../src/map-logic/terrain-neighborhood.ts", "../src/map-logic/terrain-resource-budget.ts", "../src/map-logic/terrain-error.ts", "../src/map-logic/terrain-navigation.ts", "../src/map-logic/terrain-ground-topology.ts", "../src/map-logic/triangle-query-index.ts", "../src/map-logic/terrain-query.ts", "../src/map-logic/globe-terrain.ts", "../src/map-logic/globe-terrain-preparation.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["intersectsScreenBounds", "left", "right", "unionScreenBounds", "getScreenBoundsCells", "box", "viewport", "horizontal", "vertical", "resolveLabelPlacement", "ordered", "options", "candidates", "candidate", "shown", "identities", "repeatGroups", "grids", "placing", "getViewport", "view", "viewport", "place", "visibility", "linked", "required", "group", "show", "member", "previous", "repeats", "box", "grid", "nearby", "cell", "getScreenBoundsCells", "intersectsScreenBounds", "copies", "repeated", "bucket", "repeatDistance", "other", "areGeographicLabelCopies", "candidate", "previous", "options", "tolerance", "horizontal", "difference", "TileBuildQueue", "limit", "task", "key", "priority", "token", "next", "error", "TileResidency", "id", "selected", "visible", "consumer", "key", "TileCachePolicy", "key", "records", "options", "cached", "record", "first", "second", "count", "bytes", "total", "evictions", "cachedTiles", "cachedBytes", "protectedBytes", "TERRARIUM_DECODER", "TERRAIN_RGB_DECODER", "decodeTerrainHeightGrid", "options", "width", "height", "pixels", "decoder", "bounds", "verticalDatum", "registration", "heights", "valid", "index", "offset", "sampleTerrainHeight", "grid", "position", "west", "south", "east", "north", "pixelCenter", "column", "snapTerrainSample", "row", "left", "top", "horizontal", "vertical", "samples", "weights", "value", "coordinate", "minimum", "maximum", "size", "nearest", "tolerance", "TerrainHeightField", "grids", "options", "entries", "grid", "index", "west", "south", "east", "north", "bounds", "tolerance", "buildFieldNode", "position", "direct", "candidates", "sum", "count", "entry", "intersectsBounds", "height", "sampleTerrainHeight", "width", "clipped", "left", "right", "bottom", "top", "single", "unionArea", "unionLength", "rectangle", "minimum", "maximum", "pixelCenter", "columns", "rows", "column", "x", "row", "y", "value", "pending", "node", "first", "second", "stride", "required", "hasMissing", "valid", "prefix", "offset", "invalid", "pixel", "firstColumn", "lastColumn", "firstRow", "lastRow", "axis", "middle", "intervals", "total", "end", "rectangles", "area", "sampleTerrainNeighborhood", "grids", "position", "sum", "count", "grid", "west", "south", "east", "north", "tolerance", "height", "sampleTerrainHeight", "resampleTerrainNodes", "neighbors", "neighbor", "columns", "rows", "width", "field", "TerrainHeightField", "heights", "valid", "row", "column", "value", "index", "TerrainResourceBudget", "byteLimit", "validateBytes", "domain", "bytes", "identity", "shared", "allocation", "allocationIdentity", "owned", "active", "next", "requests", "entries", "total", "planned", "request", "previous", "totals", "leases", "envelopes", "boundProjectedDisplacement", "matrix", "minimum", "maximum", "viewport", "value", "axis", "minimumW", "horizontal", "vertical", "corner", "position", "component", "row", "norm", "result", "measureTerrainError", "grid", "cached", "width", "height", "horizontalSpacing", "verticalSpacing", "minimumHeight", "maximumHeight", "eastSlope", "northSlope", "complete", "index", "envelope", "boundTerrainMeshError", "resolution", "heightError", "angularDiameter", "globeCurvatureError", "selectTerrainMeshResolution", "grids", "options", "target", "globeScale", "seamErrors", "error", "other", "neighbor", "circumference", "tolerance", "shift", "errorAt", "includeSeams", "projectedError", "guardTerrainMotion", "field", "start", "end", "options", "maxStep", "maxProbes", "distance", "steps", "obstacle", "step", "first", "value", "axis", "second", "range", "CIRCUMFERENCE", "patchPlans", "getTerrainEdgeNodes", "bounds", "neighbors", "resolution", "start", "end", "west", "south", "east", "north", "vertical", "axis", "tolerance", "fixed", "values", "candidate", "step", "value", "first", "second", "snapTileBounds", "normalizeToPrimaryWorld", "edge", "zoom", "span", "column", "row", "snapped", "index", "normalizedColumn", "getPatchPlan", "grids", "cached", "patches", "grid", "world", "previous", "patch", "other", "horizontal", "ratio", "createTerrainGroundTopology", "grids", "bounds", "resolution", "maxVertices", "CIRCUMFERENCE", "sampleOffset", "localBounds", "patches", "getPatchPlan", "positions", "normalizedPositions", "indices", "nodes", "vertex", "patch", "column", "row", "zoom", "span", "worldColumn", "worldRow", "x", "y", "key", "index", "triangle", "corners", "ring", "edge", "start", "end", "getTerrainEdgeNodes", "point", "center", "west", "east", "south", "north", "cellSpan", "tolerance", "cell", "value", "firstColumn", "lastColumn", "firstRow", "lastRow", "samplePositions", "intersectRayBounds", "intersectRayTriangle", "TriangleQueryIndex", "_TriangleQueryIndex", "triangleCount", "leafSize", "counts", "countNodes", "count", "cached", "half", "result", "positions", "indices", "options", "offset", "index", "axis", "storage", "triangle", "vertex", "origin", "direction", "maxParameter", "acceptHit", "length", "testTriangle", "triangleIndex", "hit", "candidate", "stack", "near", "node", "candidates", "child", "bounds", "entry", "first", "second", "step", "topology", "start", "end", "cursor", "order", "minimum", "maximum", "positionOffset", "value", "centroid", "middle", "left", "right", "compare", "comparisons", "pivot", "lower", "upper", "adaptTerrainQuerySource", "source", "adapter", "ray", "maxDistance", "hit", "bounds", "worldToLngLat", "GLOBE_RADIUS", "EARTH_RADIUS", "MERCATOR_RADIUS", "buildMissingTerrainPrefix", "grid", "missingSample", "offset", "index", "stride", "prefix", "row", "missing", "column", "hasMissingTerrain", "bounds", "west", "south", "east", "north", "pixelCenter", "columnScale", "rowScale", "left", "right", "top", "bottom", "terrainTemplates", "getGlobeTerrainExaggeration", "globeScreenRatio", "maximum", "progress", "buildGlobeTerrainMesh", "options", "scaleGlobeTerrainMesh", "prepareGlobeTerrainMesh", "steps", "prepareGlobeTerrainMeshSteps", "result", "resolution", "grids", "halfWorld", "candidate", "value", "circumference", "samplingGrids", "world", "heightField", "TerrainHeightField", "missingRegions", "tolerance", "horizontal", "vertical", "identical", "ratio", "size", "geographicPositions", "positions", "physicalHeights", "samplePositions", "valid", "nodes", "worldScale", "vertex", "key", "retained", "x", "y", "height", "coordinate", "worldToLngLat", "packed", "longitude", "latitude", "radius", "triangles", "triangle", "vertices", "a", "b", "c", "ab", "ac", "normal", "sign", "edgeNodes", "start", "end", "getTerrainEdgeNodes", "point", "reconstruct", "corners", "ring", "edge", "center", "sum", "first", "second", "third", "fourth", "cellBounds", "region", "template", "gradients", "frame", "slope", "negative", "positive", "distance", "touching", "distanceX", "distanceY", "physicalScale", "buffers", "_", "exaggeration", "scaleGlobeTerrainMeshSteps", "prepared", "colors", "radiusScale", "gradientX", "gradientY", "sinLongitude", "cosLongitude", "sinLatitude", "cosLatitude", "radialX", "radialY", "normalX", "normalY", "normalZ", "light", "snapshots", "assertGlobeTerrainPreparationSnapshot", "snapshot", "getPreparedGlobeTerrainTemplate", "grid", "tile", "candidate", "getNeighbors", "grids", "circumference", "shift", "sameGrids", "first", "second", "index", "GlobeTerrainPreparation", "maxRetainedBytes", "options", "resolution", "budgetMs", "now", "started", "committed", "error", "elapsed", "pending", "staged", "sum", "template", "retained", "lease", "previous", "neighbors", "reuse", "neighbor", "reservation", "prepareGlobeTerrainMeshSteps", "bytes", "allocation", "required"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";var TangramProjectedBasemaps=(()=>{var Q=Math.PI/180;function te(e,t,r,o){return[[e,t],[r,o]]}function ee(e){return e>=-180&&e<180?e:((e+180)%360+360)%360-180}function cn(e,t,r,o){if(![e,t,r,o].every(Number.isFinite)||t<-90||o>90||t>o||r-e<-360||r-e>360+1e-10)throw new Error("Invalid geographic coverage");if(r-e>=360-1e-10)return[-180,t,180,o];let n=ee(r);return[ee(e),t,n===-180&&r>e?180:n,o]}function et(e){let t=e[2]-e[0];return t<0?t+360:t}function Rt(e){let[t,r,o,n]=e;return t<=o?[e]:[[t,r,180,n],[-180,r,o,n]]}function ln(e,t){let[r,o,n,i]=e,s=ee(t[0]);return t[1]>=o&&t[1]<=i&&(r<=n?s>=r&&s<=n||s===-180&&n===180:s>=r||s<=n)}function Ot(e,t){let r=Math.max(e[1],t[1]),o=Math.min(e[3],t[3]);if(r>o)return[];let n=[];for(let s of Rt(e))for(let a of Rt(t)){let c=Math.max(s[0],a[0]),l=Math.min(s[2],a[2]);c<=l?n.push([c,l]):(s[2]===180&&a[0]===-180||a[2]===180&&s[0]===-180)&&n.push([-180,-180])}n.sort((s,a)=>s[0]-a[0]);let i=[];for(let s of n){let a=i[i.length-1];a&&s[0]<=a[1]?a[1]=Math.max(a[1],s[1]):i.push([...s])}if(i.length>1&&i[0][0]===-180&&i[i.length-1][1]===180){let s=i.shift();return[[i.pop()[0],r,s[1],o],...i.map(([c,l])=>[c,r,l,o])]}return i.map(([s,a])=>[s,r,a,o])}function Nt(e,t){let r=ee(t[0]),o=Math.max(e[1],Math.min(e[3],t[1]));if(!ln(e,[r,o])){let n=Math.abs(ee(r-e[0])),i=Math.abs(ee(r-e[2]));r=n<=i?e[0]:e[2]}return[r,o]}function zt(e,t=0,r=0){let o=et(e),n=e[0]*Q-t,i=n+o*Q/2,s=Math.round((r-i)/(2*Math.PI))*2*Math.PI;return te(o===360?r-Math.PI:n+s,e[1]*Q,o===360?r+Math.PI:n+s+o*Q,e[3]*Q)}function ne(e,t=0){return cn((e[0][0]+t)/Q,e[0][1]/Q,(e[1][0]+t)/Q,e[1][1]/Q)}function Ft(e){if(!e.length)throw new Error("CRS coverage does not intersect the rendering target");return[[0,1,2].map(t=>Math.min(...e.map(r=>r[0][t]))),[0,1,2].map(t=>Math.max(...e.map(r=>r[1][t])))]}function kt(e,t){if(t)try{let o=e(t);return tt(o)}catch{}let r=e();return tt(r)}function tt(e){let t=e.bounds;if(t.some(r=>r.some(o=>!Number.isFinite(o))))throw new Error("Projection rendering bounds must be finite");return{bounds:t,normalize:e.normalize?.bind(e)}}function Ut(e,t){let r=[];for(let o of e){let n=t(o);n!==null&&r.push(tt(n))}return r.length?r.length===1?r[0]:{bounds:Ft(r.map(o=>o.bounds)),normalize(o){let n=o.x,i=o.y,s=1/0;for(let a of r){let c={x:o.x,y:o.y,z:o.z};a.normalize?.(c);let l=Math.sin((c.y-o.y)*Math.PI/360)**2+Math.cos(o.y*Math.PI/180)*Math.cos(c.y*Math.PI/180)*Math.sin((c.x-o.x)*Math.PI/360)**2;l<s&&(s=l,n=c.x,i=c.y)}o.x=n,o.y=i}}:null}function Ct(){return{bounds:[[-1,-1,0],[1,1,0]]}}var rt=Symbol.for("@math.gl/projection/projection-implementations");function nt(){let e=globalThis;return e[rt]||(e[rt]=new WeakMap),e[rt]}function Gt(e){return"create"in e?e:nt().get(e)?.implementation}function Tt(e){if("create"in e)return Promise.resolve(e);let t=nt().get(e);if(t||(t={load:()=>e.preload()},nt().set(e,t)),t.implementation)return Promise.resolve(t.implementation);let r=t;return r.pending||(r.pending=Promise.resolve().then(r.load).then(o=>{let n=s=>s.toLowerCase().replace(/[\s_-]/g,""),i=new Set([o.name,...o.aliases||[]].map(n));if(typeof o.create!="function"||![e.name,...e.aliases||[]].every(s=>i.has(n(s))))throw new Error("Loaded projection does not match descriptor: "+e.name);return r.implementation=o,o}).catch(o=>{throw r.pending=void 0,o})),r.pending}function Lt(){return{x:0,y:0,z:0}}var oe=class{constructor(){this.point=Lt(),this.points=[this.point],this.active=0}get depth(){return this.active}acquire(){var t;let r=this.active++;return(t=this.points)[r]||(t[r]=Lt()),this.points[r]}release(t){this.active>0&&this.points[this.active-1]===t&&this.active--}};function ie(e,t){let r=new oe,o=(n,i,s)=>{let a=r.acquire();try{return a.x=n,a.y=i,a.z=0,s(a),[a.x,a.y]}finally{r.release(a)}};return{forward(n,i){return o(n,i,e)},inverse(n,i){return o(n,i,t)},forwardInPlace:e,inverseInPlace:t}}function Ue(e,t,r=!1){let o=t?e.inverseInPlace:e.forwardInPlace;if(o)return o.bind(e);if(r){let i=t?e.inverse3D:e.forward3D;return s=>{let a=i.call(e,[s.x,s.y,s.z]);s.x=a[0],s.y=a[1],s.z=a[2]}}let n=t?e.inverse:e.forward;return i=>{let s=n.call(e,i.x,i.y);i.x=s[0],i.y=s[1]}}var Ce=34028234663852886e22;function Ge(e,t,r){if(!(Array.isArray(e)||e instanceof Float32Array||e instanceof Float64Array))throw new Error("Scalar input requires a number array, Float32Array or Float64Array");if(!(Array.isArray(t)||t instanceof Float32Array||t instanceof Float64Array)||t.length<r)throw new Error("Scalar output requires a preallocated number array, Float32Array or Float64Array with sufficient capacity");if(e===t||Array.isArray(e)||Array.isArray(t))return;let o=e,n=t,i=typeof SharedArrayBuffer<"u"&&o.buffer instanceof SharedArrayBuffer&&n.buffer instanceof SharedArrayBuffer;if((o.buffer===n.buffer||i)&&o.byteOffset<n.byteOffset+r*n.BYTES_PER_ELEMENT&&n.byteOffset<o.byteOffset+o.byteLength)throw new Error("Scalar input/output views overlap; use the same view for in-place projection")}function Dt(e,t,r,o){if(t instanceof Float32Array){if(Math.abs(r.x)>Ce||Math.abs(r.y)>Ce||o>=3&&Math.abs(r.z)>Ce)throw new Error("Projected coordinate exceeds Float32 range");for(let n=3;n<e.length;n++){let i=e[n];if(Number.isFinite(i)&&Math.abs(i)>Ce)throw new Error("Trailing ordinate exceeds Float32 range")}}for(let n=3;n<e.length;n++)t[n]=e[n];return t[0]=r.x,t[1]=r.y,o>=3&&(t[2]=r.z),t}function ot(e){if(typeof e=="object")return"projjson";let t=e.trim();return/^[A-Z][A-Z0-9_]*\s*[\[(]/i.test(t)?"wkt":/(?:^|\s)\+?proj=/i.test(t)?"proj-string":/^[A-Z][A-Z0-9._-]*(?::[A-Z0-9._-]+)+$/i.test(t)||/^urn:ogc:def:crs:/i.test(t)||/^https?:\/\//i.test(t)||/^[A-Z][A-Z0-9._-]*$/i.test(t)?"identifier":"opaque"}var se=class extends SyntaxError{constructor(t,r,o){let n=hn(r,o);super(`${t} at ${n.line}:${n.column}`),this.name="PROJStringSyntaxError",this.offset=o,this.line=n.line,this.column=n.column}};function qt(e){let t=dn(e);if(t.length===0)throw new se("PROJ string is empty",e,0);return{type:"proj-string",parameters:t.map(o=>un(o.raw,o.offset,e))}}var fn=/^[+-]?\d+(?:\.\d*)?d(?:\d+(?:\.\d*)?'(?:\d+(?:\.\d*)?")?)?[NSEW]?$/i;function un(e,t,r){let o=e.startsWith("+")?e.slice(1):e;if(!o)throw new se("Expected a parameter after '+'",r,t);let n=o.indexOf("="),i=n<0?o:o.slice(0,n);if(!i||/[\s+=]/.test(i))throw new se(`Invalid PROJ parameter name '${i}'`,r,t);if(n<0)return{type:"parameter",name:i};let s=o.slice(n+1),a=mn(s,r,t+n+1);return{type:"parameter",name:i,value:a,rawValue:s}}function dn(e){let t=[],r=0;for(;r<e.length;){for(;r<e.length&&/\s/.test(e[r]);)r++;if(r>=e.length)break;let o=r,n=null,i=!1;for(;r<e.length;){let s=e[r];if(i){i=!1,r++;continue}if(s==="\\"&&n){i=!0,r++;continue}if(n){s===n&&(n=null),r++;continue}if((s==='"'||s==="'")&&e[r-1]==="="){n=s,r++;continue}if(/\s/.test(s))break;r++}if(n)throw new se("Unterminated quoted PROJ value",e,o);t.push({raw:e.slice(o,r),offset:o})}return t}function mn(e,t,r){if(!e)return"";let o=e[0];if(o!=='"'&&o!=="'"){if((e.includes('"')||e.includes("'"))&&!fn.test(e))throw new se("Quote must begin a PROJ parameter value",t,r);return e}if(e[e.length-1]!==o)throw new se("Unterminated quoted PROJ value",t,r);let n="";for(let i=1;i<e.length-1;i++){let s=e[i];s==="\\"&&i+1<e.length-1?n+=e[++i]:n+=s}return n}function hn(e,t){let r=1,o=1;for(let n=0;n<t&&n<e.length;n++)e[n]===`
|
|
2
|
+
`?(r++,o=1):o++;return{line:r,column:o}}var Vt,Bt=Symbol.for("@math.gl/projection/TypeScriptCRSError"),Z=class e extends Error{static[(Vt=Bt,Symbol.hasInstance)](t){return this!==e?Function.prototype[Symbol.hasInstance].call(this,t):t instanceof Error&&t[Bt]===!0}constructor(t,r){super(r),this.reason=t,this[Vt]=!0,this.name="TypeScriptCRSError"}};function V(e){throw new Z("missing-transform-stage",e)}function Wt(e,t){if(typeof e=="string"||"type"in e)return{definition:e,lossy:!1};let r=e,o="crs"in r?r:void 0,n="crs"in r?r.crs:r;if(n.state!=="explicit"&&n.state!=="default")throw new Z("unknown-syntax","Cannot transform an "+n.state+" CRS reference");let i=!1;return o?.coordinateEpoch!==void 0&&V("Coordinate epochs require a time-dependent transformation"),o?.vertical&&o.vertical.state!=="absent"&&(t.mode!=="horizontal"&&V("A separately declared vertical CRS requires explicit horizontal extraction"),i=!0),{definition:n.definition,spatialReference:o,lossy:i}}function $t(e,t){if(!t)return e;if(t.coordinateFrame!=="unknown"&&t.coordinateFrame!==e.kind)throw new Error("SpatialReference coordinate frame disagrees with its CRS");let r=t.coordinateOrder,o=e.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"},n;if(r.length&&(n=r.slice(0,3).map(i=>o[i.toLowerCase()]||"?").join(""),n.length===2&&(n+="u"),(n.length!==3||!n.includes("e")||!n.includes("n")||!n.includes("u"))&&V("Unsupported SpatialReference coordinate order"),(r.length>4||r.length>3&&!["m","measure"].includes(r[3]))&&V("Unsupported fourth coordinate component")),t.units?.length){let i={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(t.units.length,3);s++){let a=(n||"enu")[s]==="u",c=e.kind==="geocentric"?e.toMeter:a?e.verticalUnit:e.kind==="geographic"?e.angularUnit:e.toMeter;(Math.abs((i[t.units[s]]??NaN)-c)>1e-12||i[t.units[s]]===void 0)&&V("SpatialReference units disagree with its CRS")}}return Object.freeze({...e,storedAxis:n})}var B=Math.PI/180;function U(e,t,r){if(!Object.prototype.hasOwnProperty.call(e,t))return r;let o=e[t];if(typeof o!="string"||!/^[+-]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?$/i.test(o))throw new Error(`Invalid numeric PROJ parameter: +${t}`);let n=Number(o);if(!Number.isFinite(n))throw new Error(`Invalid numeric PROJ parameter: +${t}`);return n}function Se(e,t){let r=U(e,t,0);if(Math.abs(r)>=90)throw new Error(`+${t} must be between -90 and 90 degrees`);return r*B}function X(e,t=!1){if(t||Math.abs(e)<=Math.PI)return e;let r=2*Math.PI;return((e+Math.PI)%r+r)%r-Math.PI}var Jt={towgs84:"0,0,0",ellipse:"WGS84"},Ht={towgs84:"0,0,0",ellipse:"GRS80"},it={wgs84:Jt,WGS84:Jt,nad83:Ht,North_American_Datum_1983:Ht},Kt=new WeakMap,Zt=e=>e.toLowerCase().replace(/[\s_-]/g,"");function Xt(e){if(!e.datumCatalogs?.length)return it;let t=Kt.get(e);if(t?.catalogs===e.datumCatalogs)return t.definitions;let r=Object.assign(Object.create(null),it),o=new Map(Object.entries(it).map(([n,i])=>[Zt(n),{definition:i,owner:-1}]));return e.datumCatalogs.forEach((n,i)=>{if(!n.name||!n.datums)throw new Error("Invalid datum catalogue plugin");for(let[s,a]of Object.entries(n.datums)){let c=Zt(s);if(!c||c==="none"||!a||["ellipse","towgs84","nadgrids"].some(u=>a[u]!==void 0&&typeof a[u]!="string"))throw new Error("Invalid datum definition: "+s);let l=o.get(c);if(l&&(l.owner!==i||l.definition.ellipse!==a.ellipse||l.definition.towgs84!==a.towgs84||l.definition.nadgrids!==a.nadgrids))throw new Error("Conflicting datum registration: "+s);o.set(c,{definition:a,owner:i}),r[s]=a}}),Kt.set(e,{catalogs:e.datumCatalogs,definitions:r}),r}var pn={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)"}},Yt=pn;var W={};W.greenwich=0;W.lisbon=-9.131906111111;W.paris=2.337229166667;W.bogota=-74.080916666667;W.madrid=-3.687938888889;W.rome=12.452333333333;W.bern=7.439583333333;W.jakarta=106.807719444444;W.ferro=-17.666666666667;W.brussels=4.367975;W.stockholm=18.058277777778;W.athens=23.7163375;W.oslo=10.722916666667;var Qt=W;var st={m:{name:"meters",metersPerUnit:1},mm:{name:"millimeters",metersPerUnit:.001},cm:{name:"centimeters",metersPerUnit:.01},ft:{name:"feet",metersPerUnit:.3048},"us-ft":{name:"us-survey-feet",metersPerUnit:.3048006096012192},fath:{name:"fathoms",metersPerUnit:1.8288},kmi:{name:"nautical-miles",metersPerUnit:1852},"us-ch":{name:"us-survey-chains",metersPerUnit:20.1168402336805},"us-mi":{name:"us-survey-miles",metersPerUnit:1609.34721869444},km:{name:"kilometers",metersPerUnit:1e3},"ind-ft":{name:"indian-feet",metersPerUnit:.30479841},"ind-yd":{name:"indian-yards",metersPerUnit:.91439523},mi:{name:"miles",metersPerUnit:1609.344},yd:{name:"yards",metersPerUnit:.9144},ch:{name:"chains",metersPerUnit:20.1168},link:{name:"links",metersPerUnit:.201168},dm:{name:"decimeters",metersPerUnit:.1},in:{name:"inches",metersPerUnit:.0254},"ind-ch":{name:"indian-chains",metersPerUnit:20.11669506},"us-in":{name:"us-survey-inches",metersPerUnit:.025400050800101},"us-yd":{name:"us-survey-yards",metersPerUnit:.914401828803658}};var er={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"},ir=["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"],sr=["no_defs","over"],Y=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),tr=e=>e.toLowerCase().replace(/[\s_-]/g,"");function at(e,t){let r=Object.keys(e).find(o=>tr(o)===tr(t));return r===void 0?void 0:e[r]}function rr(e){if(/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i.test(e)){let r=Number(e);if(Number.isFinite(r))return r}if(/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?r$/i.test(e)){let r=Number(e.slice(0,-1))/B;if(Number.isFinite(r))return r}let t=/^([+-]?)(\d+(?:\.\d*)?)(?:d(?:(\d+(?:\.\d*)?)'(?:(\d+(?:\.\d*)?)")?)?)?([NSEW])?$/i.exec(e);if(t&&(/d/i.test(e)||t[5])){let r=Number(t[3]||0),o=Number(t[4]||0);if(r<60&&o<60){let n=t[1]==="-"?-1:1,i=/[SW]/i.test(t[5]||"")?-1:1,s=n*i*(Number(t[2])+r/60+o/3600);if(Number.isFinite(s))return s}}throw new Error("Invalid angular parameter: "+e)}function ve(e,t={}){let r=Xt(t),o=Wt(e,t),n=o.definition,i=t.aliases||{},s=new Set;for(;typeof n=="string"&&(Y(i,n)||Y(er,n));){if(s.has(n))throw new Error("Circular CRS alias: "+n);s.add(n),n=Y(i,n)?i[n]:er[n]}if(typeof n=="string"){let x=/^EPSG:(326|327)(\d{2})$/.exec(n);x&&Number(x[2])>=1&&Number(x[2])<=60&&(n="+proj=utm +datum=WGS84 +zone="+Number(x[2])+(x[1]==="327"?" +south":"")),(n==="EPSG:5041"||n==="EPSG:5042")&&(n="+proj=stere +datum=WGS84 +lat_0="+(n==="EPSG:5041"?90:-90)+" +k_0=0.994 +x_0=2000000 +y_0=2000000")}let a;if(ot(n)==="proj-string"&&typeof n=="string"){let x=Object.create(null);for(let I of qt(n).parameters){if(Y(x,I.name))throw new Error("Duplicate PROJ parameter: +"+I.name);x[I.name]=I.value}a={parameters:x}}else{let x=t.parsers?.find(I=>I.canParse(n));if(!x){let I=["wkt","projjson"].includes(ot(n));throw new Z(I?"missing-parser":"unknown-syntax","Unsupported CRS definition; register a WKT or PROJJSON parser for structured definitions")}a=x.parse(n,t)}let c={...a.parameters};for(let x 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[x]!==void 0&&(c[x]=String(rr(c[x])));let l=c.proj,u=l?.toLowerCase(),m=u==="geocentric"?"geocent":["longlat","latlong","latlon","lonlat","identity","geocent"].includes(u)?u:l;if(!m)throw new Error("CRS requires +proj");let y=["longlat","latlong","latlon","lonlat"].includes(m)?"geographic":m==="geocent"?"geocentric":m==="identity"?"identity":"projected",M=c.datum,p=M&&M!=="none"?at(r,M):void 0;M&&M!=="none"&&!p&&V("Unknown datum: "+M+"; register a datumCatalogs plugin");let _=or(c,p?.ellipse),A=c.nadgrids??p?.nadgrids,w=A===void 0?void 0:A.split(",").map(x=>{let I=x.startsWith("@"),F=I?x.slice(1):x;if(!F||/\s/.test(F))throw new Error("Invalid datum grid name");return Object.freeze({name:F,optional:I})}),E=c.towgs84??p?.towgs84,g;if(E!==void 0&&(g=E.split(",").map(x=>U({value:x},"value",NaN)),![3,7].includes(g.length)||g.some(x=>!Number.isFinite(x))||g.length===7&&g[6]<=-1e6))throw new Error("+towgs84 requires three or seven finite values and positive scale");M==="none"&&(g=void 0),w&&M!=="none"&&(g=[0,0,0]);let f=A==="@null"||A==="null"?or({ellps:"WGS84"}):_,d=c.axis||"enu";if(d.length!==3||!/[ew]/.test(d)||!/[ns]/.test(d)||!/[ud]/.test(d))throw new Error("Invalid axis: "+d);let b=a.angularUnit??B;if(y==="geographic"&&(c.units&&c.units!=="degrees"||Y(c,"to_meter")))throw new Error("Geographic coordinates must use angular units");if(y!=="geographic"&&c.units==="degrees")throw new Error("Linear coordinates require linear units");let S=nr(c,"units","to_meter"),P=a.verticalUnit??nr(c,"vunits","vto_meter");if(!(P>0)||!Number.isFinite(P))throw new Error("Invalid vertical unit");if(!(b>0)||!Number.isFinite(b))throw new Error("Invalid angular unit");let j=c.pm,v=j===void 0?0:(at(Qt,j)??rr(j))*B;return $t(Object.freeze({kind:y,projection:m,parameters:Object.freeze(c),ellipsoid:_,datum:Object.freeze({ellipsoid:f,towgs84:g&&Object.freeze(g),grids:M==="none"||A==="@null"||A==="null"?void 0:w&&Object.freeze(w)}),areaOfUse:a.areaOfUse,angularUnit:b,toMeter:S,verticalUnit:P,primeMeridian:v,axis:d,longitudeWrap:c.lon_wrap===void 0?void 0:Number(c.lon_wrap)*B,lossy:!!(a.lossy||o.lossy)}),o.spatialReference)}function nr(e,t,r){let o=e[t],n=st;if(t==="vunits"&&o==="degrees")throw new Error("Height requires linear units");if(o&&!["m","degrees"].includes(o)&&!Y(n,o))throw new Error("Unsupported units: "+o);let i=U(e,r,o&&n[o]?n[o].metersPerUnit:1);if(!(i>0))throw new Error("+"+r+" must be positive");return i}function or(e,t){let r=t||e.ellps||"WGS84",o=at(Yt,r);if(!o)throw new Error("Unsupported ellipsoid: "+r);let n=U(e,"a",o.a),i=U(e,"f",NaN),s=U(e,"rf",Number.isNaN(i)?o.rf||0:i===0?0:1/i),a=U(e,"b",s?n*(1-1/s):Y(e,"f")||Y(e,"rf")||Y(e,"a")?n:o.b||n),c=U(e,"R",0);if(n<=0||a<=0||a>n||s<0||s>0&&s<=1||Y(e,"R")&&c<=0||!Number.isNaN(i)&&(i<0||i>=1))throw new Error("Invalid ellipsoid dimensions");return Object.freeze({semiMajorAxis:c||n,semiMinorAxis:c||a,eccentricitySquared:c?0:1-(a/n)**2})}function cr(e,t,r=e){let o=e.x,n=e.y,i=e.z,{semiMajorAxis:s,semiMinorAxis:a,eccentricitySquared:c}=t,l=Math.sin(n),u=Math.cos(n),m=a/s,y=c<.9?s/Math.sqrt(1-c*l*l):s/Math.hypot(u,m*l),M=(y+i)*u*Math.cos(o),p=(y+i)*u*Math.sin(o),_=(y*(c<.9?1-c:m*m)+i)*l;return ce(r,M,p,_)}function lr(e,t,r=e){let o=e.x,n=e.y,i=e.z,{semiMajorAxis:s,semiMinorAxis:a,eccentricitySquared:c}=t,l=Math.hypot(o,n),u=Math.hypot(o,n,i);if(!(u>0)||!Number.isFinite(u))return!1;if(c===0)return ce(r,l===0?0:Math.atan2(n,o),Math.atan2(i,l),u-s);if(l===0)return ce(r,0,Math.sign(i)*Math.PI/2,Math.abs(i)-a);let m=l/s,y=i/a;if(m*m+y*y<1-16*Number.EPSILON)return gn(o,n,i,l,s,a,r);if(c>=.9)return ar(o,n,i,l,s,a,r);let M=i/u,p=l/u,_=1/Math.sqrt(1-c*(2-c)*p*p),A=p*(1-c)*_,w=M*_;for(let E=0;E<30;E++){let g=s/Math.sqrt(1-c*w*w),f=l*A+i*w-g*(1-c*w*w),d=c*g/(g+f);_=1/Math.sqrt(1-d*(2-d)*p*p);let b=p*(1-d)*_,S=M*_;if(Math.abs(S*A-b*w)<=1e-12){if(!Number.isFinite(f)||!Number.isFinite(S)||!Number.isFinite(b))break;return ce(r,Math.atan2(n,o),Math.atan2(S,Math.abs(b)),f)}A=b,w=S}return ar(o,n,i,l,s,a,r)}function gn(e,t,r,o,n,i,s){let a=i/n,c=a*a,l=o/n,u=r/n,m=1-c;if(!(c>0)||a>1)return!1;if(r===0)return l<m?!1:ce(s,Math.atan2(t,e),0,o-n);let y=n*n,M=i*i,p=Number.isFinite(y)&&y>0?(M-c*y+ae(i,i,M)-c*ae(n,n,y)-ae(c,y,c*y))/y:0,_=o*o,A=e*e,w=t*t,E=A+w,g=Number.isFinite(_)&&_>0?(E-_+ct(A,w,E)+ae(e,e,A)+ae(t,t,w)-ae(o,o,_))/(2*o):0,f=n*c,d=o-n+f,b=g+ct(o-n,f,d)+ae(n,c,f)+n*p,S=Math.abs(u)*a;if(!(S>0))return!1;let P=0,j=c,v=Math.max(S,l-m);v>P&&v<j||(v=j/2);for(let x=0;x<128;x++){let I=m+v,F=l/I,N=S/v,C=n*v,G=d-C,q=(G+(ct(d,-C,G)+b-ae(n,v,C)))/(n*I)*(F+1),z=q+N*N;if(Math.abs(z)<=4*Number.EPSILON*(Math.abs(q)+N*N)||j-P<=4*Number.EPSILON*v){let R=Math.atan2(u/v,l/I),T=Math.sin(R),D=Math.cos(R);return ce(s,Math.atan2(t,e),R,o*D+r*T-n*Math.hypot(D,a*T))}z>0?P=v:j=v;let L=-2*(F*F/I+N*N/v),h=v-z/L,k=Number.isFinite(h)&&h>P&&h<j?h:P+(j-P)/2;if(k===v){let R=Math.atan2(u/v,l/I);return ce(s,Math.atan2(t,e),R,o*Math.cos(R)+r*Math.sin(R)-n*Math.hypot(Math.cos(R),a*Math.sin(R)))}v=k}return!1}function ct(e,t,r){let o=r-e;return e-(r-o)+(t-o)}function ae(e,t,r){let o=134217729*e,n=134217729*t;if(!Number.isFinite(o)||!Number.isFinite(n))return 0;let i=o-(o-e),s=n-(n-t),a=e-i,c=t-s;return i*s-r+i*c+a*s+a*c}function ar(e,t,r,o,n,i,s){let a=i/n,c=a*a,l=o/n,u=r/n,m=Math.hypot(l,r/i);if(!Number.isFinite(m)||m<1-8*Number.EPSILON||!(c>0))return!1;let y=0,M=Math.hypot(l,u*a);if(!Number.isFinite(M))return!1;let p=m<=1+8*Number.EPSILON?0:M/2;for(let _=0;_<96;_++){let A=1+p,w=c+p,E=l/A,g=u*a/w,f=Math.hypot(E,g),d=f-1;if(Math.abs(d)<=4*Number.EPSILON){let P=Math.atan2(u/w,l/A),j=Math.sin(P),v=Math.cos(P),x=o*v+r*j-n*Math.hypot(v,a*j);return ce(s,Math.atan2(t,e),P,x)}d>0?y=p:M=p;let b=-(E*E/A+g*g/w)/f,S=p-d/b;p=Number.isFinite(S)&&S>y&&S<M?S:(y+M)/2}return!1}function ce(e,t,r,o){return!Number.isFinite(t)||!Number.isFinite(r)||!Number.isFinite(o)?!1:(e.x=t,e.y=r,e.z=o,!0)}var lt=Math.PI/(180*3600),Te={ellipsoid:{semiMajorAxis:6378137,semiMinorAxis:6356752314245179e-9,eccentricitySquared:.0066943799901413165},towgs84:[0,0,0]};function yn(e,t){if(Math.abs(e.y)>Math.PI/2)throw new Error("Latitude outside geocentric domain");if(!cr(e,t))throw new Error("Geocentric coordinate must be finite")}function bn(e,t){let r=e.x,o=e.y,n=e.z,{semiMajorAxis:i,semiMinorAxis:s,eccentricitySquared:a}=t;if(r===0&&o===0&&n===0)throw new Error("Geodetic coordinates are undefined at the Earth center");if(a!==0&&Math.abs(r)<1e-12*i&&Math.abs(o)<1e-12*i&&Math.hypot(r,o)<1e-12*i){if(!Number.isFinite(Math.hypot(r,o,n)))throw new Error("Geocentric radius must be finite");e.x=0,e.y=Math.sign(n)*Math.PI/2,e.z=Math.abs(n)-s;return}if(!lr(e,t))throw Number.isFinite(Math.hypot(r,o,n))?new Error("Geocentric inverse did not converge"):new Error("Geocentric radius must be finite")}function fr(e,t){let r=e[0],o=e[1],n=e[2],i=(e[3]||0)*lt,s=(e[4]||0)*lt,a=(e[5]||0)*lt,c=1+(e[6]||0)/1e6;return t?l=>{let u=(l.x-r)/c,m=(l.y-o)/c,y=(l.z-n)/c;l.x=u+a*m-s*y,l.y=-a*u+m+i*y,l.z=s*u-i*m+y}:l=>{let u=l.x,m=l.y,y=l.z;l.x=c*(u-a*m+s*y)+r,l.y=c*(a*u+m-i*y)+o,l.z=c*(-s*u+i*m+y)+n}}function Le(e){return!!e.towgs84?.some(t=>t!==0)}function ut(e,t){if(!(!e.towgs84||!t.towgs84)){if(e.grids||t.grids){if(e.grids&&t.grids&&e.ellipsoid.semiMajorAxis===t.ellipsoid.semiMajorAxis&&e.ellipsoid.eccentricitySquared===t.ellipsoid.eccentricitySquared&&e.grids.length===t.grids.length&&e.grids.every((o,n)=>o.name===t.grids[n].name&&o.optional===t.grids[n].optional&&o.grid===t.grids[n].grid))return;let r=ut(e.grids?Te:e,t.grids?Te:t);return o=>{e.grids&&ur(o,e,!1),r?.(o),t.grids&&ur(o,t,!0)}}if(Le(e)||Le(t)){let r=ft(e,Te),o=ft(Te,t);return n=>{r?.(n),o?.(n)}}return ft(e,t)}}function ft(e,t){if(!e.towgs84||!t.towgs84)return;let r=e.ellipsoid,o=t.ellipsoid,n=!0;for(let a=0;a<7;a++)(e.towgs84[a]||0)!==(t.towgs84[a]||0)&&(n=!1);if(r.semiMajorAxis===o.semiMajorAxis&&Math.abs(r.eccentricitySquared-o.eccentricitySquared)<=5e-11&&n)return;let i=Le(e)?fr(e.towgs84,!1):void 0,s=Le(t)?fr(t.towgs84,!0):void 0;return a=>{yn(a,r),i?.(a),s?.(a),bn(a,o)}}function ur(e,t,r){for(let o of t.grids){if(o.name==="null")return;if(!o.grid){if(o.optional)continue;throw new Error("Required datum grid is not registered: "+o.name)}let n=!1;if(o.grid.shiftInPlace)n=o.grid.shiftInPlace(e,r);else{let i=o.grid.shift(e.x,e.y,r);i&&(e.x=i[0],e.y=i[1],n=!0)}if(n){if(!Number.isFinite(e.x)||!Number.isFinite(e.y)||Math.abs(e.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: "+t.grids.map(o=>o.name).join(","))}function dr(e,t,r=0,o=!1){let n=et(t),i=n===360?r-180:t[0]+Math.round((r-t[0]-n/2)/360)*360,s=i+n;if(o){e.x=Math.max(i,Math.min(s,e.x)),e.y=Math.max(t[1],Math.min(t[3],e.y));return}let a=Nt(t,[e.x,e.y]),c=a[0];a[0]===ee(e.x)&&e.x>=i&&e.x<=s?c=e.x:(c<i||c>s)&&(c+=Math.round(((i+s)/2-c)/360)*360);let l=c-r;e.x=Math.abs(l)<=180?c:r+ee(l),e.y=a[1]}function $(e,t,r=0,o=0,n=!1){let i=(r+o)*180/Math.PI;return{get bounds(){return e(zt(t,o,r))},normalize(s){dr(s,t,i,n)}}}function wn(e,t,r,o,n){let i=Ut(t,s=>$(e,s,r,o,n));if(!i)throw new Error("CRS coverage does not intersect the rendering target");return i}function mr(e,t,r,o=0,n=!1){let i=(t[0][0]+t[1][0])/2,s=ne(t,o),a=(i+o)*180/Math.PI;return{...e,longitudeOrigin:i,getRenderingProfile(c){if(!c)return{bounds:r(t),normalize(l){dr(l,s,a,n)}};try{let l=$(r,c,i,o,n);return{bounds:l.bounds,normalize:l.normalize}}catch{return wn(r,Ot(c,s),i,o,n)}}}}var pr=(e,t)=>[Math.min(e,t),Math.max(e,t)],ge=(e,t)=>[e[0]+t[0],e[1]+t[1]],ye=(e,t)=>pr(e[0]*t,e[1]*t);function hr(e,t){let r=[e[0]*t[0],e[0]*t[1],e[1]*t[0],e[1]*t[1]];return[Math.min(...r),Math.max(...r)]}function gr([e,t]){let r=[Math.sin(e),Math.sin(t)];for(let[o,n]of[[Math.PI/2,1],[-Math.PI/2,-1]])Math.ceil((e-o)/(2*Math.PI))<=Math.floor((t-o)/(2*Math.PI))&&r.push(n);return[Math.min(...r),Math.max(...r)]}var Pn=e=>gr([e[0]+Math.PI/2,e[1]+Math.PI/2]),Mn=e=>Math.max(Math.abs(e[0]),Math.abs(e[1]));function be(e,t){let r=o=>Math.max(1,Mn(o))*1e-12;if(![...e,...t].every(Number.isFinite))throw new Error("Projection rendering bounds are not finite");return[[e[0]-r(e),t[0]-r(t),0],[e[1]+r(e),t[1]+r(t),0]]}function le(e,t,r=!1){let o=e[0][0]-t,n=e[1][0]-t;if(r)return[o,n];let i=n-o;if(i>=2*Math.PI-1e-12)return[-Math.PI,Math.PI];let s=X(o);i>0&&Math.abs(s-Math.PI)<1e-12&&(s=-Math.PI);let a=s+i;return a>Math.PI+1e-12?[-Math.PI,Math.PI]:[s,Math.min(a,Math.PI)]}function yr(e,t,r,o=!1){let n=le(t,r,o),i=[t[0][1],t[1][1],Math.max(t[0][1],Math.min(t[1][1],0))],s=n.flatMap(a=>i.map(c=>e(r+a,c)));return be([Math.min(...s.map(a=>a[0])),Math.max(...s.map(a=>a[0]))],[Math.min(...s.map(a=>a[1])),Math.max(...s.map(a=>a[1]))])}function br(e,t,r,o,n,i,s=!1){let a=ye(le(t,r,s),o),c=pr(i-e(r,t[0][1])[1],i-e(r,t[1][1])[1]);return be(ge([n,n],hr(c,gr(a))),ge([i,i],ye(hr(c,Pn(a)),-1)))}function wr(e,t=0){let r=U(e,"lon_wrap",0)*B;return o=>$(n=>{let i=le(n,r);return[[r+i[0],n[0][1],0],[r+i[1],n[1][1],0]]},o??[-180,-90,180,90],r,t)}function Pr(e,t={}){if(e===void 0)return;let r=[];for(let o of e.split(",")){let n=o.startsWith("@"),i=n?o.slice(1):o;if(!i||/\s/.test(i))throw new Error("Invalid vertical grid name");if(i==="null"){r.push(null);break}let s=Object.prototype.hasOwnProperty.call(t,i)?t[i]:void 0;if(s){if(typeof s.getOffset!="function")throw new Error("Invalid vertical grid: "+i);r.push(s.getOffset.bind(s))}else n||V("Required vertical grid is not registered: "+i)}return(o,n)=>{for(let i of r){if(!i)return 0;let s=i(o,n);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 _e=class e{static async create(t={}){let r=await Promise.all(Mr(t).map(Tt));return new e({...t,projections:r})}get targetProfile(){return this.getTargetRenderingProfile(this.targetCoverage)}getTargetRenderingProfile(t){return this.targetRenderingProfile&&kt(this.targetRenderingProfile,t)}constructor(t={}){this.coordinateScratch=new oe,this.targetLongitudeOrigin=0;let r=t.projections||[],o=Sr(r);if(r.some(n=>!("create"in n))){let n=ve(t.from??"WGS84",t),i=ve(t.to??"WGS84",t);this.lossy=n.lossy||i.lossy,this.deferred={options:{...t,projections:[...r]}}}else{let n=t,i=o,s=xr(n.from??"WGS84",i,n),a=xr(n.to??"WGS84",i,n);this.targetRenderingProfile=a.implementation?.getRenderingProfile?.bind(a.implementation)??(a.kind==="geographic"?wr(a.parameters,a.primeMeridian):a.kind==="identity"?Ct:void 0),this.targetCoverage=a.areaOfUse,this.targetLongitudeOrigin=a.implementation?.longitudeOrigin??(a.kind==="geographic"?a.longitudeWrap??0:0),this.lossy=s.lossy||a.lossy,this.lossy&&(s.kind==="geocentric"||a.kind==="geocentric")&&V("Horizontal extraction cannot supply ellipsoidal height for geocentric coordinates"),this.lossy&&(s.verticalGrid||a.verticalGrid)&&V("Horizontal extraction cannot be combined with vertical grids"),this.forwardTransform=Er(s,a,!!t.enforceAxis),this.inverseTransform=Er(a,s,!!t.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 t=this.deferred;return t?t.implementation?Promise.resolve(t.implementation):(t.pending||(t.pending=e.create(t.options).then(r=>(t.implementation=r,r)).catch(r=>{throw t.pending=void 0,r})),t.pending):Promise.resolve(this)}loadSync(){let t=this.deferred;if(!t)return this;if(!t.implementation){let r=Mr(t.options).map(o=>{let n=Gt(o);if(!n)throw new Error("Projection is not preloaded: "+o.name+". Call preload() first.");return n});t.implementation=new e({...t.options,projections:r})}return t.implementation}projectSync(t){return this.deferred?this.loadSync().project(t):we(t,this.forwardTransform,this.coordinateScratch)}unprojectSync(t){return this.deferred?this.loadSync().unproject(t):we(t,this.inverseTransform,this.coordinateScratch)}projectFlatSync(t,r=2){return this.deferred?this.loadSync().projectFlat(t,r):De(t,r,this.forwardTransform,this.coordinateScratch)}unprojectFlatSync(t,r=2){return this.deferred?this.loadSync().unprojectFlat(t,r):De(t,r,this.inverseTransform,this.coordinateScratch)}async preload(){await this.load()}project(t){return this.deferred?this.projectLoaded(t,!1):we(t,this.forwardTransform,this.coordinateScratch)}unproject(t){return this.deferred?this.projectLoaded(t,!0):we(t,this.inverseTransform,this.coordinateScratch)}projectTo(t,r){return this.deferred?this.projectToLoaded(t,r,!1):this.projectToSync(t,r)}unprojectTo(t,r){return this.deferred?this.projectToLoaded(t,r,!0):this.unprojectToSync(t,r)}projectToSync(t,r){return this.deferred?this.loadSync().projectTo(t,r):(Ge(t,r,Math.max(t.length,this.forwardTransform.geocentricOutput?3:2)),we(t,this.forwardTransform,this.coordinateScratch,r))}unprojectToSync(t,r){return this.deferred?this.loadSync().unprojectTo(t,r):(Ge(t,r,Math.max(t.length,this.inverseTransform.geocentricOutput?3:2)),we(t,this.inverseTransform,this.coordinateScratch,r))}projectToLoaded(t,r,o){Ge(t,r,t.length);let n=t.slice();return this.load().then(i=>o?i.unprojectTo(n,r):i.projectTo(n,r))}projectLoaded(t,r){let o=t.slice();return this.load().then(n=>r?n.unproject(o):n.project(o))}projectFlat(t,r=2){return this.deferred?this.load().then(n=>n.projectFlat(t,r)):De(t,r,this.forwardTransform,this.coordinateScratch)}unprojectFlat(t,r=2){return this.deferred?this.load().then(n=>n.unprojectFlat(t,r)):De(t,r,this.inverseTransform,this.coordinateScratch)}};function Mr(e){let t=Sr(e.projections||[]),r=new Set;for(let o of[e.from??"WGS84",e.to??"WGS84"]){let n=ve(o,e);if(["geographic","identity"].includes(n.kind))continue;let i=t.get(qe(n.projection));if(!i)throw new Z("missing-plugin","Projection plugin is not registered: "+n.projection);r.add(i)}return[...r]}var qe=e=>e.toLowerCase().replace(/[\s_-]/g,"");function Sr(e){let t=new Map;for(let r of e)for(let o of new Set([r.name,...r.aliases||[]].map(qe))){if(!o||["longlat","latlong","latlon","lonlat","identity"].includes(o)||t.has(o))throw new Error("Duplicate or reserved projection plugin: "+o);t.set(o,r)}return t}function xr(e,t,r){let o=ve(e,r),n=t.get(qe(o.projection));if(!["geographic","identity"].includes(o.kind)&&!n)throw new Z("missing-plugin","Projection plugin is not registered: "+o.projection);let i=new Set([...ir,...n?.parameters||[]]);for(let M of Object.keys(o.parameters)){if(!i.has(M))throw new Z("missing-transform-stage","Unsupported PROJ parameter: +"+M);let p=sr.includes(M)||n?.flags?.includes(M);if(p&&o.parameters[M]!==void 0)throw new Error("Expected a flag without a value: +"+M);if(!p&&!o.parameters[M])throw new Error("PROJ parameter requires a value: +"+M)}if(o.parameters.type&&o.parameters.type!=="crs")throw new Error("Only +type=crs is supported");let s=qe(o.projection)==="fasttransversemercator"?Object.freeze({...o.parameters,approx:void 0}):o.parameters,a=n?.create({...o.ellipsoid,parameters:s,primeMeridian:o.primeMeridian});if(o.kind==="geocentric"&&(!a?.forward3D||!a?.inverse3D))throw new Error("Geocentric plugin must implement 3D operations");let c=o.datum.grids,l=c?.findIndex(M=>M.name==="null")??-1,u=c?.slice(0,l<0?void 0:l+1).map(M=>{let p=Object.prototype.hasOwnProperty.call(r.datumGrids||{},M.name)?r.datumGrids[M.name]:void 0;if(p&&typeof p.shift!="function")throw new Error("Invalid prepared datum grid: "+M.name);return Object.freeze({...M,grid:p})});for(let M of u||[]){if(M.name==="null")break;!M.optional&&!M.grid&&V("Required datum grid is not registered: "+M.name)}let m=u?Object.freeze({...o.datum,grids:Object.freeze(u)}):o.datum,y=Pr(o.parameters.geoidgrids,r.verticalGrids);return y&&(o.kind==="geocentric"||o.kind==="identity"||o.lossy)&&V("Vertical grids require a non-lossy geographic or projected CRS"),{...o,datum:m,implementation:a,verticalGrid:y}}function dt(e){return Number.isFinite(e.x)&&Number.isFinite(e.y)&&Number.isFinite(e.z)}function jr(e,t){if(e==="enu")return;let r=[0,0,0],o=[0,0,0];for(let n=0;n<3;n++){let i=e[n],s="ew".includes(i)?0:"ns".includes(i)?1:2;r[t?n:s]=t?s:n,o[t?n:s]="wsd".includes(i)?-1:1}return n=>{let i=n.x,s=n.y,a=n.z;n.x=o[0]*(r[0]===0?i:r[0]===1?s:a),n.y=o[1]*(r[1]===0?i:r[1]===1?s:a),n.z=o[2]*(r[2]===0?i:r[2]===1?s:a)}}function Er(e,t,r){let o=e.storedAxis||(r?e.axis:"enu"),n=t.storedAxis||(r?t.axis:"enu"),i=jr(o,!1),s=jr(n,!0),a=e.implementation&&Ue(e.implementation,!0,e.kind==="geocentric"),c=t.implementation&&Ue(t.implementation,!1,t.kind==="geocentric"),l=ut(e.datum,t.datum),u=e.lossy||t.lossy,m=e.kind==="geocentric",y=e.kind==="geographic"?e.angularUnit:e.toMeter,M=t.kind==="geographic"?t.angularUnit:t.toMeter,p=m?1:e.verticalUnit,_=t.kind==="geocentric"?M:t.verticalUnit,A=e.primeMeridian,w=t.primeMeridian,E=t.kind==="geographic"?t.longitudeWrap:void 0,g;if(!l&&!e.verticalGrid&&!t.verticalGrid&&!u&&!i&&!s&&!A&&!w&&e.verticalUnit===1&&t.verticalUnit===1&&E===void 0){let f=Object.freeze({inputScale:y,outputScale:M});e.kind==="geographic"&&t.kind==="projected"&&(g=t.implementation?.createForwardFlat?.(f)),e.kind==="projected"&&t.kind==="geographic"&&(g=e.implementation?.createInverseFlat?.(f))}return{flat:g,requiresInputZ:!!(e.verticalGrid||t.verticalGrid)||e.kind==="geocentric"||/[ud]/.test(o.slice(0,2))||/[ud]/.test(n.slice(0,2)),geocentricOutput:t.kind==="geocentric",run(f){if(!dt(f))throw new Error("Coordinates must contain finite x, y and optional z values");i?.(f);let d=f.z;if(u&&(f.z=0),y!==1&&(f.x*=y,f.y*=y,m&&(f.z*=y)),a?.(f),p!==1&&(f.z*=p),Math.abs(f.y)>Math.PI/2||!dt(f))throw new Error("Coordinate is outside the geographic domain");if(f.x+=A,e.verticalGrid&&(f.z+=e.verticalGrid(f.x,f.y)),l?.(f),t.verticalGrid&&(f.z-=t.verticalGrid(f.x,f.y)),f.x-=w,E!==void 0&&(f.x=E+X(f.x-E)),c?.(f),M!==1&&(f.x/=M,f.y/=M),_!==1&&(f.z/=_),u&&(f.z=d),s?.(f),!dt(f))throw new Error("Projection produced non-finite coordinates")}}}function we(e,t,r,o){if(e.length<2)throw new Error("Coordinates must contain finite x, y and optional z values");if(e.length<3&&t.requiresInputZ)throw new Error("This transform requires three ordinates");let n=Math.max(e.length,t.geocentricOutput?3:2),i=r.acquire();try{if(i.x=e[0],i.y=e[1],i.z=e.length>=3?e[2]:0,t.run(i),o)return Dt(e,o,i,n);let s=e.slice();return s[0]=i.x,s[1]=i.y,(e.length>=3||t.geocentricOutput)&&(s[2]=i.z),s}finally{r.release(i)}}function De(e,t,r,o){if(!(e instanceof Float32Array||e instanceof Float64Array))throw new Error("In-place projection requires a Float32Array or Float64Array");if(!Number.isSafeInteger(t)||t<2||e.length%t!==0)throw new Error("Dimension must be an integer >= 2 and divide the typed array length");if(t<3&&(r.requiresInputZ||r.geocentricOutput))throw new Error("This transform requires a dimension of at least 3");if(r.flat)return r.flat(e,t),e;let n=o.acquire();try{let i=e instanceof Float32Array;for(let s=0;s<e.length;s+=t){if(n.x=e[s],n.y=e[s+1],n.z=t>=3?e[s+2]:0,r.run(n),i&&(Math.abs(n.x)>34028234663852886e22||Math.abs(n.y)>34028234663852886e22||t>=3&&Math.abs(n.z)>34028234663852886e22))throw new Error("Projected coordinate exceeds Float32 range");e[s]=n.x,e[s+1]=n.y,t>=3&&(e[s+2]=n.z)}return e}finally{o.release(n)}}var vr=["lon_0","lat_0","x_0","y_0"];function Ae(e,t,r=0){let o=U(e,t,r);if(t!=="lon_0"&&Math.abs(o)>90)throw new Error("Latitude parameter must be between -90 and 90 degrees: +"+t);return o*B}function xn(e,t){let r=Object.prototype.hasOwnProperty.call(e,t);if(r&&e[t]!==void 0)throw new Error("Expected a flag without a value: +"+t);return r}function Ve({semiMajorAxis:e,eccentricitySquared:t,parameters:r,primeMeridian:o=0}){let n=U(r,"k_0",U(r,"k",1));if(n<=0)throw new Error("Projection scale must be positive");return{primeMeridian:o,a:e,b:e*Math.sqrt(1-t),es:t,e:Math.sqrt(t),ep2:t/(1-t),sphere:t===0,over:xn(r,"over"),long0:Ae(r,"lon_0"),lat0:Ae(r,"lat_0"),lat1:Ae(r,"lat_1"),lat2:Ae(r,"lat_2",U(r,"lat_1",0)),lat_ts:Ae(r,"lat_ts",NaN),x0:U(r,"x_0",0),y0:U(r,"y_0",0),k0:n}}function _r(e,t){if(!Object.prototype.hasOwnProperty.call(t,"lat_1"))throw new Error("Conic projections require +lat_1");if(Math.abs(e.lat1+e.lat2)<1e-10||Math.abs(e.lat1)>=Math.PI/2||Math.abs(e.lat2)>=Math.PI/2)throw new Error("Conic standard parallels must not be opposite or at a pole")}function Be(e,t,r,o,n=ie){let i=(s,a)=>{let c=s(t,a);if(!c||typeof c!="object"||!Number.isFinite(c.x)||!Number.isFinite(c.y))throw new Error(e+": coordinate outside projection domain or inverse did not converge");a.x=c.x,a.y=c.y};return n(s=>i(r,s),s=>i(o,s))}function Ar(e){let t=Ve(e);return{...t,x0:0,y0:0,lat_ts:Number.isNaN(t.lat_ts)?0:t.lat_ts}}function Ir(e,t,r,o,n,i){let s=Be(e,r,o,n),a=U(t.parameters,"x_0",0),c=U(t.parameters,"y_0",0);return ie(l=>{i?.(l.x,l.y),s.forwardInPlace(l),l.x+=a,l.y+=c},l=>{l.x-=a,l.y-=c,s.inverseInPlace(l)})}var Xo=Math.PI/2,Yo=Math.PI/4,Rr=Math.PI*2,Or=3.14159265359,Qo=Math.PI/180,ei=180/Math.PI,ti=Math.PI/(180*3600);function Nr(e){return e<0?-1:1}function Pe(e,t){return t||Math.abs(e)<=Or?e:e-Nr(e)*Rr}function fe(e,t){var r;return e>1e-7?(r=e*t,(1-e*e)*(t/(1-r*r)-.5/e*Math.log((1-r)/(1+r)))):2*t}var jn=.3333333333333333,En=.17222222222222222,Sn=.10257936507936508,vn=.06388888888888888,_n=.0664021164021164,An=.016415012942191543;function mt(e){var t,r=[];return r[0]=e*jn,t=e*e,r[0]+=t*En,r[1]=t*vn,t*=e,r[0]+=t*Sn,r[1]+=t*_n,r[2]=t*An,r}function ht(e,t){var r=e+e;return e+t[0]*Math.sin(r)+t[1]*Math.sin(r+r)+t[2]*Math.sin(r+r+r)}var Ie=1.340264,Re=-.081106,Oe=893e-6,Ne=.003796,We=Math.sqrt(3)/2;function In(e){e.long0=e.long0!==void 0?e.long0:0,e.x0=e.x0!==void 0?e.x0:0,e.y0=e.y0!==void 0?e.y0:0,e.es!==0&&(e.apa=mt(e.es),e.qp=fe(e.e,1),e.rqda=Math.sqrt(.5*e.qp))}function zr(e,t){var r=Pe(t.x-e.long0,e.over),o=t.y,n=Math.sin(o);e.es!==0&&(n=fe(e.e,n)/e.qp);var i=Math.asin(We*n),s=i*i,a=s*s*s;return t.x=r*Math.cos(i)/(We*(Ie+3*Re*s+a*(7*Oe+9*Ne*s))),t.y=i*(Ie+Re*s+a*(Oe+Ne*s)),e.es!==0&&(t.x*=e.rqda,t.y*=e.rqda),t.x=e.a*t.x+e.x0,t.y=e.a*t.y+e.y0,t}function Fr(e,t){t.x=(t.x-e.x0)/e.a,t.y=(t.y-e.y0)/e.a,e.es!==0&&(t.x/=e.rqda,t.y/=e.rqda);var r=1e-9,o=12,n=t.y,i,s,a,c,l,u;for(u=0;u<o&&(i=n*n,s=i*i*i,a=n*(Ie+Re*i+s*(Oe+Ne*i))-t.y,c=Ie+3*Re*i+s*(7*Oe+9*Ne*i),n-=l=a/c,!(Math.abs(l)<r));++u);return i=n*n,s=i*i*i,t.x=We*t.x*(Ie+3*Re*i+s*(7*Oe+9*Ne*i))/Math.cos(n),t.y=Math.asin(Math.sin(n)/We),e.es!==0&&(t.y=ht(t.y,e.apa)),t.x=Pe(t.x+e.long0,e.over),t}function kr(e,t={}){let r={...e,apa:[],qp:0,rqda:0,...t};return In(r),r}var pt={name:"eqearth",aliases:["Equal Earth","Equal_Earth"],parameters:["lon_0","x_0","y_0"],create(e){let t=Ar(e),r=e.primeMeridian??0,o=kr(t),n=Ir("eqearth",e,o,zr,Fr),i=Math.sqrt(e.eccentricitySquared),s=e.semiMajorAxis*(i?Math.sqrt((1+(1-i*i)*Math.atanh(i)/i)/2):1),a=Math.PI/3,c=a*a,l=c**3,u=s*Math.PI/(Math.sqrt(3)/2*1.340264),m=U(e.parameters,"x_0",0),y=U(e.parameters,"y_0",0),M=s*a*(1.340264-.081106*c+l*(893e-6+.003796*c));return{...n,longitudeOrigin:t.long0,getRenderingProfile(p){if(p)return $(A=>yr(n.forward,A,t.long0,t.over),p,t.long0,r,t.over);let _=[[m-u,y-M,0],[m+u,y+M,0]];return{bounds:_,normalize:$(()=>_,ne(te(t.long0-Math.PI,-(Math.PI/2),t.long0+Math.PI,Math.PI/2),r),t.long0,r,t.over).normalize}}}}};function $e(e,t){return{...ie(e,t),createForwardFlat(r){return this.forwardInPlace===e?Ur(e,!1,r):void 0},createInverseFlat(r){return this.inverseInPlace===t?Ur(t,!0,r):void 0}}}function Ur(e,t,{inputScale:r,outputScale:o}){let n=new oe;return(i,s)=>{let a=n.acquire();try{let c=i instanceof Float32Array;for(let l=0;l<i.length;l+=s){if(a.x=i[l],a.y=i[l+1],a.z=s>=3?i[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),t&&e(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,t||e(a),o!==1&&(a.x/=o,a.y/=o),!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");i[l]=a.x,i[l+1]=a.y}}finally{n.release(a)}}}function gt(e,t,r){var o=e*t;return r/Math.sqrt(1-o*o)}function Cr(e){return Math.abs(e)>1&&(e=e>1?1:-1),Math.asin(e)}function Rn(e){Math.abs(e.lat1+e.lat2)<1e-10||(e.temp=e.b/e.a,e.es=1-Math.pow(e.temp,2),e.e3=Math.sqrt(e.es),e.sin_po=Math.sin(e.lat1),e.cos_po=Math.cos(e.lat1),e.t1=e.sin_po,e.con=e.sin_po,e.ms1=gt(e.e3,e.sin_po,e.cos_po),e.qs1=fe(e.e3,e.sin_po),e.sin_po=Math.sin(e.lat2),e.cos_po=Math.cos(e.lat2),e.t2=e.sin_po,e.ms2=gt(e.e3,e.sin_po,e.cos_po),e.qs2=fe(e.e3,e.sin_po),e.sin_po=Math.sin(e.lat0),e.cos_po=Math.cos(e.lat0),e.t3=e.sin_po,e.qs0=fe(e.e3,e.sin_po),Math.abs(e.lat1-e.lat2)>1e-10?e.ns0=(e.ms1*e.ms1-e.ms2*e.ms2)/(e.qs2-e.qs1):e.ns0=e.con,e.c=e.ms1*e.ms1+e.ns0*e.qs1,e.rh=e.a*Math.sqrt(e.c-e.ns0*e.qs0)/e.ns0)}function Tr(e,t){var r=t.x,o=t.y;e.sin_phi=Math.sin(o),e.cos_phi=Math.cos(o);var n=fe(e.e3,e.sin_phi),i=e.a*Math.sqrt(e.c-e.ns0*n)/e.ns0,s=e.ns0*Pe(r-e.long0,e.over),a=i*Math.sin(s)+e.x0,c=e.rh-i*Math.cos(s)+e.y0;return t.x=a,t.y=c,t}function Lr(e,t){var r,o,n,i,s,a;return t.x-=e.x0,t.y=e.rh-t.y+e.y0,e.ns0>=0?(r=Math.sqrt(t.x*t.x+t.y*t.y),n=1):(r=-Math.sqrt(t.x*t.x+t.y*t.y),n=-1),i=0,r!==0&&(i=Math.atan2(n*t.x,n*t.y)),n=r*e.ns0/e.a,e.sphere?a=Math.asin((e.c-n*n)/(2*e.ns0)):(o=(e.c-n*n)/e.ns0,a=On(e.e3,o)),s=Pe(i/e.ns0+e.long0,e.over),t.x=s,t.y=a,t}function On(e,t){var r,o,n,i,s,a=Cr(.5*t);if(e<1e-10)return a;for(var c=e*e,l=1;l<=25;l++)if(r=Math.sin(a),o=Math.cos(a),n=e*r,i=1-n*n,s=.5*i*i/o*(t/(1-c)-r/i+.5/e*Math.log((1-n)/(1+n))),a=a+s,Math.abs(s)<=1e-7)return a;return null}function Dr(e){let t={...e,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 Rn(t),t}var yt={name:"aea",aliases:["Albers_Conic_Equal_Area","Albers_Equal_Area","Albers"],parameters:[...vr,"lat_1","lat_2"],create(e){let t=Ve(e);_r(t,e.parameters);let r=Dr(t),o={...Be("aea",r,Tr,Lr,$e)};return mr(o,te(t.long0-Math.PI,-Math.PI/2,t.long0+Math.PI,Math.PI/2),n=>br(o.forward,n,t.long0,r.ns0,r.x0,r.y0+r.rh,t.over),t.primeMeridian,t.over)}};var bt={name:"eqc",aliases:["Equirectangular","Equidistant_Cylindrical","Equidistant_Cylindrical_Spherical"],parameters:["lon_0","lat_0","lat_ts","x_0","y_0"],create({semiMajorAxis:e,parameters:t,primeMeridian:r=0}){let o=Object.prototype.hasOwnProperty.call(t,"over"),n=U(t,"lon_0",0)*B,i=Se(t,"lat_0"),s=Math.cos(Se(t,"lat_ts")),a=U(t,"x_0",0),c=U(t,"y_0",0),l=e*Math.abs(s)*Math.PI;return{longitudeOrigin:n,getRenderingProfile(u){if(u)return $(y=>be(ge([a,a],ye(le(y,n,o),e*s)),[c+e*(y[0][1]-i),c+e*(y[1][1]-i)]),u,n,r,o);let m=[[a-l,c+e*(-Math.PI/2-i),0],[a+l,c+e*(Math.PI/2-i),0]];return{bounds:m,normalize:$(()=>m,ne(te(n-Math.PI,-(Math.PI/2),n+Math.PI,Math.PI/2),r),n,r,o).normalize}},...ie(u=>{u.x=a+e*s*X(u.x-n,o),u.y=c+e*(u.y-i)},u=>{u.x=X(n+(u.x-a)/(e*s),o),u.y=i+(u.y-c)/e})}}};var wt={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:e,eccentricitySquared:t,parameters:r,primeMeridian:o=0}){let n=Math.sqrt(t),i=Object.prototype.hasOwnProperty.call(r,"over"),s=U(r,"lon_0",0)*B,a=U(r,"x_0",0),c=U(r,"y_0",0),l=U(r,"k_0",U(r,"k",1));if(Object.prototype.hasOwnProperty.call(r,"lat_ts")){let p=Se(r,"lat_ts");l=Math.cos(p)/Math.sqrt(1-t*Math.sin(p)**2)}if(l<=0)throw new Error("Mercator scale must be positive");let u=e*l,m=Math.atan(Math.sinh(Math.PI)),y=u*Math.PI,M=u*(Math.PI-n*Math.atanh(n*Math.sin(m)));return{longitudeOrigin:s,getRenderingProfile(p){if(p){let A=p[1]<=-90||p[3]>=90,w=[p[0],A?Math.max(-m*180/Math.PI,Math.min(m*180/Math.PI,p[1])):p[1],p[2],A?Math.max(-m*180/Math.PI,Math.min(m*180/Math.PI,p[3])):p[3]],E=g=>c+u*(Math.asinh(Math.tan(g))-n*Math.atanh(n*Math.sin(g)));return $(g=>be(ge([a,a],ye(le(g,s,i),u)),[E(g[0][1]),E(g[1][1])]),w,s,o,i)}let _=[[a-y,c-M,0],[a+y,c+M,0]];return{bounds:_,normalize:$(()=>_,ne(te(s-Math.PI,-m,s+Math.PI,m),o),s,o,i).normalize}},...$e(p=>{let _=p.x,A=p.y;if(Math.abs(A)>=Math.PI/2)throw new Error("Mercator is undefined at the poles");let w=Math.asinh(Math.tan(A));p.x=a+u*X(_-s,i),p.y=c+u*(n===0?w+0:w-n*Math.atanh(n*Math.sin(A)))},p=>{let _=p.x,w=(p.y-c)/u,E=Math.atan(Math.sinh(w));if(n===0){p.x=X(s+(_-a)/u,i),p.y=E+0;return}for(let g=0;g<30;g++){let f=Math.atan(Math.sinh(w+n*Math.atanh(n*Math.sin(E))));if(Math.abs(f-E)<1e-13){p.x=X(s+(_-a)/u,i),p.y=f;return}E=f}throw new Error("Mercator inverse did not converge")})}}};var Nn=new Set(["a_position","a_normal","a_color","a_texcoord","a_extrude","a_offset","a_z_and_offset_scale","a_projected_position","a_projected_normal","a_projected_stroke","a_projected_normals","a_projected_widths"]);function Je(e,t,r,o){let n=o.tileScale??4096,i=o.maxAngularSpan??4,s=o.maxAdditionalVertices??262144;if(!Number.isInteger(o.tileZoom)||o.tileZoom<0||o.tileZoom>30||!Number.isFinite(n)||n<=0||!Number.isFinite(i)||i<=0||i>180||!Number.isInteger(s)||s<0)throw new RangeError("Globe mesh: invalid refinement limits");let a=n*2**o.tileZoom*i/360;if(a<2)throw new RangeError("Globe mesh: refinement exceeds packed position precision");let c=r.dynamic_attribs.find(f=>f.name==="a_position");if(!c||c.size<2||c.offset===void 0||r.stride<=0||e.byteLength%r.stride!==0)throw new Error("Globe mesh: an aligned position layout is required");let l=e.byteLength/r.stride,u=t||Uint32Array.from({length:l},(f,d)=>d);if(u.length%3!==0||u.some(f=>f>=l))throw new Error("Globe mesh: invalid triangle indices");let m=[],y=[];for(let f=0;f<l;f++){let d=e.subarray(f*r.stride,(f+1)*r.stride);m.push(d);let b=new DataView(d.buffer,d.byteOffset,d.byteLength),S=o.getPosition?o.getPosition(b):[ue(b,c,0),ue(b,c,1)];if(!S.every(Number.isFinite))throw new Error("Globe mesh: nonfinite position");y.push(S)}let M=new Map,p=[],_=[],A=u.length/3+s*2;for(let f=u.length-3;f>=0;f-=3)_.push([u[f],u[f+1],u[f+2]]);let w=(f,d)=>{let b=Math.hypot(y[f][0]-y[d][0],y[f][1]-y[d][1]);return b>a||b>=2&&!!o.shouldSplitEdge?.(new DataView(m[f].buffer,m[f].byteOffset,r.stride),new DataView(m[d].buffer,m[d].byteOffset,r.stride))},E=(f,d)=>{let b=`${Math.min(f,d)}:${Math.max(f,d)}`,S=M.get(b);if(S!==void 0)return S;if(m.length>=l+s)throw new RangeError("Globe mesh: refinement vertex budget exceeded");let P=re(m[f],m[d],r,.5),j=new DataView(P.buffer),v=m.length;return m.push(P),y.push(o.getPosition?o.getPosition(j):[ue(j,c,0),ue(j,c,1)]),M.set(b,v),v};for(;_.length;){let f=_.pop(),[d,b,S]=f,P=[w(d,b),w(b,S),w(S,d)],j=P.filter(Boolean).length;if(j===0)p.push(d,b,S);else if(j===3){let v=E(d,b),x=E(b,S),I=E(S,d);_.push([d,v,I],[v,b,x],[I,x,S],[v,x,I])}else{let v=P.findIndex(N=>N===(j===1)),x=f[v],I=f[(v+1)%3],F=f[(v+2)%3];if(o.splitRemainderInterior){let N=[x];if(P[v]&&N.push(E(x,I)),N.push(I),P[(v+1)%3]&&N.push(E(I,F)),N.push(F),P[(v+2)%3]&&N.push(E(F,x)),m.length>=l+s)throw new RangeError("Globe mesh: refinement vertex budget exceeded");let C=re(re(m[x],m[I],r,.5),m[F],r,1/3),G=new DataView(C.buffer),J=o.getPosition?o.getPosition(G):[ue(G,c,0),ue(G,c,1)],q=(O,H,K)=>(H[0]-O[0])*(K[1]-O[1])-(H[1]-O[1])*(K[0]-O[0]),z=O=>[...y[O],o.getElevation?.(new DataView(m[O].buffer,m[O].byteOffset,r.stride))??0],L=[x,I,F].map(z),h=Pt(L),k=O=>[O[h[0]],O[h[1]]],R=k([...J,o.getElevation?.(G)??0]),T=q(k(L[0]),k(L[1]),k(L[2]));if(N.some((O,H)=>q(k(z(O)),k(z(N[(H+1)%N.length])),R)*T<=0))throw new RangeError("Globe mesh: refinement exceeds packed position precision");let D=m.length;m.push(C),y.push(J);for(let O=0;O<N.length;O++)_.push([N[O],N[(O+1)%N.length],D])}else if(j===1){let N=E(x,I);_.push([x,N,F],[N,I,F])}else{let N=E(I,F),C=E(F,x),G=(J,q)=>Math.hypot(y[J][0]-y[q][0],y[J][1]-y[q][1]);_.push([F,C,N]),o.splitRemainderShortest&&G(x,N)<G(I,C)?_.push([x,I,N],[x,N,C]):_.push([x,I,C],[I,N,C])}}if(_.length+p.length/3>A)throw new RangeError("Globe mesh: refinement triangle budget exceeded")}if(m.length===l)return{vertices:e,indices:u};let g=new Uint8Array(m.length*r.stride);return m.forEach((f,d)=>g.set(f,d*r.stride)),{vertices:g,indices:m.length<=65536?new Uint16Array(p):new Uint32Array(p)}}function Pt(e){let t=[[0,1],[0,2],[1,2]],r=t[0],o=0;for(let n of t){let[i,s]=n,a=Math.abs((e[1][i]-e[0][i])*(e[2][s]-e[0][s])-(e[1][s]-e[0][s])*(e[2][i]-e[0][i]));a>o&&(o=a,r=n)}return r}function re(e,t,r,o){let n=e.slice(),i=new DataView(e.buffer,e.byteOffset,r.stride),s=new DataView(t.buffer,t.byteOffset,r.stride),a=new DataView(n.buffer);for(let c of r.dynamic_attribs)for(let l=0;l<c.size;l++){let u=ue(i,c,l),m=ue(s,c,l);if(c.name==="a_selection_color"||c.name==="a_position"&&l===3||!Nn.has(c.name)){if(u!==m)throw new Error(`Globe mesh: varying flat attribute ${c.name} is unsupported`)}else zn(a,c,l,o===.5?(u+m)/2:u*(1-o)+m*o)}return n}function ue(e,t,r){let o=t.offset??0;switch(t.type){case 5120:return e.getInt8(o+r);case 5121:return e.getUint8(o+r);case 5122:return e.getInt16(o+r*2,!0);case 5123:return e.getUint16(o+r*2,!0);case 5124:return e.getInt32(o+r*4,!0);case 5125:return e.getUint32(o+r*4,!0);case 5126:return e.getFloat32(o+r*4,!0);default:throw new Error(`Globe mesh: unsupported attribute type ${t.type}`)}}function zn(e,t,r,o){let n=t.offset??0,i=Math.round(o);switch(t.type){case 5120:e.setInt8(n+r,i);break;case 5121:e.setUint8(n+r,i);break;case 5122:e.setInt16(n+r*2,i,!0);break;case 5123:e.setUint16(n+r*2,i,!0);break;case 5124:e.setInt32(n+r*4,i,!0);break;case 5125:e.setUint32(n+r*4,i,!0);break;case 5126:e.setFloat32(n+r*4,o,!0);break;default:throw new Error(`Globe mesh: unsupported attribute type ${t.type}`)}}function Me(e){if(!e||typeof e!="object"||!("type"in e)||!["equal-earth","albers","equirectangular","mercator","web-mercator"].includes(String(e.type)))throw new Error("CPU projection requires equal-earth, albers, equirectangular, mercator or web-mercator");let t="maxAngularSpan"in e?e.maxAngularSpan:4,r="maxAdditionalVertices"in e?e.maxAdditionalVertices:65536,o="maxProjectedError"in e?e.maxProjectedError:void 0,n="cacheProjectedMeshes"in e?e.cacheProjectedMeshes:!1,i="allowElevation"in e?e.allowElevation:!1;if(typeof i!="boolean")throw new Error("CPU projection elevation must be boolean");if(typeof n!="boolean")throw new Error("CPU projection mesh caching must be boolean");if(o!==void 0&&(typeof o!="number"||!Number.isFinite(o)||o<=0))throw new Error("CPU projection requires a positive finite projected error");if(typeof t!="number"||!Number.isFinite(t)||t<1||t>30||typeof r!="number"||!Number.isSafeInteger(r)||r<0||r>262144)throw new Error("CPU projection requires angular span in [1, 30] and vertex budget in [0, 262144]");let s=e.type;if(s!=="equal-earth"&&s!=="albers"&&s!=="equirectangular"&&s!=="mercator"&&s!=="web-mercator")throw new Error("Invalid CPU projection");return{type:s,maxAngularSpan:t,maxAdditionalVertices:r,...o===void 0?{}:{maxProjectedError:o},...n?{cacheProjectedMeshes:!0}:{},...i?{allowElevation:!0}:{}}}var de=256/6378137;function qr(e){Me({type:e});let t=e==="equal-earth"?"+proj=eqearth +lon_0=0":e==="albers"?"+proj=aea +lon_0=-96 +lat_0=37.5 +lat_1=29.5 +lat_2=45.5":e==="mercator"||e==="web-mercator"?"+proj=merc +lon_0=0 +k_0=1 +over":"+proj=eqc +lon_0=0 +lat_0=0 +lat_ts=0",r=e==="mercator"?"+ellps=WGS84":"+R=6378137";return{from:`+proj=longlat ${r}`,to:`${t} ${r} +units=m`}}function Vr(e,t,r){let o=t[0]*r[1]-r[0]*t[1],n=Math.hypot(...t)*Math.hypot(...r);if(![...e,...t,...r].every(Number.isFinite)||n===0||Math.abs(o)<=n*1e-12)throw new Error("Projected surface normal requires a nonsingular finite Jacobian");let i=[(r[1]*e[0]-t[1]*e[1])/o,(t[0]*e[1]-r[0]*e[0])/o,e[2]/de],s=Math.hypot(...i);if(!Number.isFinite(s)||s===0)throw new Error("Projected surface normal must be nonzero and finite");return[i[0]/s,i[1]/s,i[2]/s]}var je=class{constructor(t=16*1024*1024,r=64){this.maxBytes=t;this.maxEntries=r;if(!Number.isSafeInteger(t)||t<0||!Number.isSafeInteger(r)||r<0)throw new RangeError("Projection preparation cache requires nonnegative integer limits")}maxBytes;maxEntries;entries=[];bytes=0;hits=0;misses=0;epoch=0;getOrCreate(t,r,o,n){return this.find(t,r,o)??this.retain(t,r,o,n())}async getOrCreateAsync(t,r,o,n){let i=this.find(t,r,o);if(i)return i;let s=this.epoch,a=r.slice(),c=o===!1?!1:o.slice(),l=await n();return s===this.epoch?this.retain(t,a,c,l):l}find(t,r,o){let n=`${t}:${He(r)}:${o===!1?"stream":He(xe(o))}`,i=this.entries.findIndex(s=>s.key===n&&Ke(s.source,r)&&(s.elements===!1||o===!1?s.elements===o:s.elements.constructor===o.constructor&&Ke(xe(s.elements),xe(o))));if(i>=0){let[s]=this.entries.splice(i,1);return this.entries.push(s),this.hits++,s.result}this.misses++}retain(t,r,o,n){let i=`${t}:${He(r)}:${o===!1?"stream":He(xe(o))}`,s=this.entries.find(c=>c.key===i&&Ke(c.source,r)&&(c.elements===!1||o===!1?c.elements===o:c.elements.constructor===o.constructor&&Ke(xe(c.elements),xe(o))));if(s)return s.result;let a=r.byteLength+(o===!1?0:o.byteLength)+n.vertices.byteLength+n.indices.byteLength;if(this.maxEntries>0&&a<=this.maxBytes){for(;this.entries.length>=this.maxEntries||this.bytes+a>this.maxBytes;)this.bytes-=this.entries.shift().bytes;let c={vertices:n.vertices.slice(),indices:n.indices.slice()};return this.entries.push({key:i,source:r.slice(),elements:o===!1?!1:o.slice(),result:c,bytes:a}),this.bytes+=a,c}return n}getStatistics(){return{entries:this.entries.length,bytes:this.bytes,hits:this.hits,misses:this.misses}}clear(){this.epoch++,this.entries.length=0,this.bytes=this.hits=this.misses=0}};function xe(e){return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}function He(e){let t=2166136261;for(let r of e)t=Math.imul(t^r,16777619);return t>>>0}function Ke(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(e[r]!==t[r])return!1;return!0}var me=Math.PI*6378137;function ze(e){if(e==="albers"){let t=r=>6378137*Math.asinh(Math.tan(r*Math.PI/180));return[-170/180*me,t(5),-40/180*me,t(75)]}return[-me,-me,me,me]}function Br(e,t,r,o){let{layout:n,tile:i}=t,s=4096*2**i.coords.z/(2*me),a=ze(t.projection.type),c=[(a[0]-i.min.x)*s,(a[1]-i.min.y)*s,(a[2]-i.min.x)*s,(a[3]-i.min.y)*s],l=[],u=[];for(let f=0;f<e.vertices.byteLength;f+=n.stride){let d=e.vertices.subarray(f,f+n.stride);l.push(d),u.push(r(new DataView(d.buffer,d.byteOffset,d.byteLength)))}let m=l.length,y=f=>u[f][0]>=c[0]&&u[f][0]<=c[2]&&u[f][1]>=c[1]&&u[f][1]<=c[3];if(e.indices.every(y))return e;let M=new Map,p=[],_=n.dynamic_attribs.find(f=>f.name==="a_position")?.offset,A=f=>{if(_===void 0)throw new Error("Projected surface requires packed positions");return new DataView(l[f].buffer,l[f].byteOffset,n.stride).getInt16(_+4,!0)};for(let f=0;f<e.indices.length;f+=3){let d=Array.from(e.indices.subarray(f,f+3));if(!c.some((b,S)=>d.every(P=>(u[P][S%2]-b)*(S<2?1:-1)<0))){for(let b=0;b<4&&d.length;b++){let S=b%2,P=c[b],j=I=>(u[I][S]-P)*(b<2?1:-1),v=[],x=d[d.length-1];for(let I of d){let F=j(x),N=j(I);if(F>=0!=N>=0){let C=Math.min(x,I),G=Math.max(x,I),J=`${b}:${C}:${G}`,q=M.get(J);if(q===void 0){let z=j(C)/(j(C)-j(G));if(z===0||z===1)q=z===0?C:G;else{if(l.length-m>=o)throw new RangeError("CPU projection clipping vertex budget exceeded");q=l.length,l.push(re(l[C],l[G],n,z)),u.push(S===0?[P,u[C][1]*(1-z)+u[G][1]*z]:[u[C][0]*(1-z)+u[G][0]*z,P])}M.set(J,q)}v[v.length-1]!==q&&v.push(q)}N>=0&&v[v.length-1]!==I&&v.push(I),x=I}v.length>1&&v[0]===v[v.length-1]&&v.pop(),d=v}for(let b=1;b<d.length-1;b++){let S=u[d[0]],P=u[d[b]],j=u[d[b+1]],v=(P[0]-S[0])*(j[1]-S[1])-(P[1]-S[1])*(j[0]-S[0]),x=t.projection.allowElevation&&t.geometry!=="lines"&&((P[0]-S[0])*(A(d[b+1])-A(d[0]))-(A(d[b])-A(d[0]))*(j[0]-S[0])!==0||(P[1]-S[1])*(A(d[b+1])-A(d[0]))-(A(d[b])-A(d[0]))*(j[1]-S[1])!==0);(v!==0||x)&&p.push(d[0],d[b],d[b+1])}}}let w=new Map;for(let f of p)w.has(f)||w.set(f,w.size);let E=new Uint8Array(w.size*n.stride);for(let[f,d]of w)E.set(l[f],d*n.stride);let g=w.size<=65536?new Uint16Array(p.length):new Uint32Array(p.length);return p.forEach((f,d)=>{g[d]=w.get(f)}),{vertices:E,indices:g}}var Mt=[[1/3,1/3,1/3],[.5,.25,.25],[.25,.5,.25],[.25,.25,.5]];function*Wr(e,t,r,o,n={edgeRounds:0,interiorRounds:0}){let i=t.projection.maxProjectedError;if(i===void 0||e.indices.length===0)return e;let{layout:s}=t,a=t.vertices.byteLength/s.stride,c=t.projection.maxAdditionalVertices??65536,l=e,u=y=>Array.from(new Uint8Array(y.buffer,y.byteOffset,y.byteLength)).join(","),m=(y,M)=>{let p=u(y),_=u(M);return p<_?`${p}:${_}`:`${_}:${p}`};for(let y=0;y<32;y++){let M=new Map;for(let d=0;d<l.indices.length;d+=3)for(let b=0;b<3;b++){let S=l.vertices.subarray(l.indices[d+b]*s.stride,(l.indices[d+b]+1)*s.stride),P=l.indices[d+(b+1)%3],j=l.vertices.subarray(P*s.stride,(P+1)*s.stride);M.set(m(new DataView(S.buffer,S.byteOffset,S.byteLength),new DataView(j.buffer,j.byteOffset,j.byteLength)),[S,j])}let p=[];for(let[d,b]of M.values()){let S=o(new DataView(d.buffer,d.byteOffset,d.byteLength)),P=o(new DataView(b.buffer,b.byteOffset,b.byteLength));for(let j of[0,.25,.5,.75,1]){let v=j===0?d:j===1?b:re(d,b,s,j),x=new DataView(v.buffer,v.byteOffset,v.byteLength),I=o(x);p.push(...r(x,[S[0]*(1-j)+P[0]*j-I[0],S[1]*(1-j)+P[1]*j-I[1]]))}}let _=p.length,A=t.geometry!=="lines";if(A)for(let d=0;d<l.indices.length;d+=3){let b=[0,1,2].map(P=>l.vertices.subarray(l.indices[d+P]*s.stride,(l.indices[d+P]+1)*s.stride)),S=b.map(P=>o(new DataView(P.buffer,P.byteOffset,s.stride)));for(let P of b)p.push(...r(new DataView(P.buffer,P.byteOffset,s.stride)));for(let P of Mt){let j=$r(b,t,P),v=new DataView(j.buffer,j.byteOffset,s.stride),x=o(v);p.push(...r(v,[S.reduce((I,F,N)=>I+F[0]*P[N],0)-x[0],S.reduce((I,F,N)=>I+F[1]*P[N],0)-x[1]]))}}let w=yield new Float64Array(p);if(!(w instanceof Float64Array)||w.length!==p.length||!w.every(Number.isFinite))throw new Error("Projection refinement returned an invalid common-position batch");let E=new Set,g=0;for(let d of M.keys()){let b=w[g+8]-w[g],S=w[g+9]-w[g+1],P=b**2+S**2;for(let j=1;j<4;j++){let v=t.geometry!=="lines"?j/4:P===0?0:Math.max(0,Math.min(1,((w[g+j*2]-w[g])*b+(w[g+j*2+1]-w[g+1])*S)/P));Math.hypot(w[g+j*2]-(w[g]*(1-v)+w[g+8]*v),w[g+j*2+1]-(w[g+1]*(1-v)+w[g+9]*v))>i&&E.add(d)}g+=10}if(E.size===0){let d=new Set;if(g=_,A)for(let b=0;b<l.indices.length;b+=3){for(let[S,P]of Mt.entries()){let j=[0,1].map(x=>P.reduce((I,F,N)=>I+F*w[g+N*2+x],0)),v=g+6+S*2;Math.hypot(w[v]-j[0],w[v+1]-j[1])>i&&d.add(b)}g+=14}if(d.size===0)return l;l=Fn(l,t,d,o,c-(l.vertices.byteLength/s.stride-a)),n.interiorRounds++;continue}let f=Je(l.vertices,l.indices,s,{tileZoom:t.tile.coords.z,maxAngularSpan:180,maxAdditionalVertices:c-(l.vertices.byteLength/s.stride-a),splitRemainderInterior:A,getElevation:Jr(t),getPosition:o,shouldSplitEdge:(d,b)=>E.has(m(d,b))});if(f.vertices.byteLength===l.vertices.byteLength)throw new RangeError("Projected error tolerance exceeds packed coordinate precision");l=f,n.edgeRounds++}throw new RangeError("Projected refinement iteration budget exceeded")}function $r(e,t,r){return re(re(e[0],e[1],t.layout,r[1]/(r[0]+r[1])),e[2],t.layout,r[2])}function Fn(e,t,r,o,n){if(r.size>n)throw new RangeError("Projected interior refinement vertex budget exceeded");let{stride:i}=t.layout,s=e.vertices.byteLength/i,a=new Uint8Array(e.vertices.byteLength+r.size*i);a.set(e.vertices);let c=[],l=0;for(let u=0;u<e.indices.length;u+=3){let m=[e.indices[u],e.indices[u+1],e.indices[u+2]];if(!r.has(u)){c.push(...m);continue}let y=m.map(P=>e.vertices.subarray(P*i,(P+1)*i)),M=$r(y,t,Mt[0]),p=Jr(t),_=P=>{let j=new DataView(P.buffer,P.byteOffset,i);return[...o(j),p?.(j)??0]},A=y.map(_),w=Pt(A),E=P=>[P[w[0]],P[w[1]]],g=E(_(M)),f=A.map(E),d=(P,j,v)=>(j[0]-P[0])*(v[1]-P[1])-(j[1]-P[1])*(v[0]-P[0]),b=d(f[0],f[1],f[2]);if(f.some((P,j)=>d(P,f[(j+1)%3],g)*b<=0))throw new RangeError("Projected interior tolerance exceeds packed coordinate precision");let S=s+l++;a.set(M,S*i),c.push(m[0],m[1],S,m[1],m[2],S,m[2],m[0],S)}return{vertices:a,indices:s+r.size<=65536?new Uint16Array(c):new Uint32Array(c)}}function Jr(e){if(!e.projection.allowElevation||e.geometry==="lines")return;let t=e.layout.dynamic_attribs.find(o=>o.name==="a_position");if(!t||t.offset===void 0||t.size<3)throw new Error("Projected elevation requires a position layout");let r=t.offset;return o=>o.getInt16(r+4,!0)}function*Hr(e){let{layout:t,tile:r}=e,o=t.dynamic_attribs.find(E=>E.name==="a_position"),n=t.dynamic_attribs.find(E=>E.name==="a_projected_position"),i=t.dynamic_attribs.find(E=>E.name==="a_shape");if(!Number.isSafeInteger(t.stride)||t.stride<=0||e.vertices.byteLength%t.stride||!o||o.type!==5122||o.size!==4||o.offset===void 0||o.offset<0||o.offset+8>t.stride||!i||i.type!==5122||i.size!==4||i.offset===void 0||i.offset<0||i.offset+8>t.stride||!n||n.type!==5126||n.size!==3||n.offset===void 0||n.offset<0||n.offset+12>t.stride||![r.min.x,r.min.y].every(Number.isFinite)||!Number.isSafeInteger(r.coords.z)||r.coords.z<0||r.coords.z>22)throw new Error("Projected symbols require a packed billboard layout and finite tile metadata");let s=n.offset,a=o.offset,c=e.vertices.byteLength/t.stride,l=e.indices===!1?new Uint32Array(Array.from({length:c},(E,g)=>g)):e.indices.slice();if(l.length%3||l.some(E=>E>=c))throw new Error("Projected symbols require valid triangle indices");let u=e.vertices.slice(),m=new DataView(u.buffer,u.byteOffset,u.byteLength),y=4096*2**r.coords.z/(2*Math.PI*6378137),M=ze(e.projection.type),p=[],_=new Map,A=[];for(let E=0;E<c;E++){let g=E*t.stride;if(m.getInt16(g+o.offset+4,!0)!==0&&!e.projection.allowElevation)throw new Error("Projected symbols require ground anchors unless allowElevation is enabled");let f=r.min.x+m.getInt16(g+o.offset,!0)/y,d=r.min.y+m.getInt16(g+o.offset+2,!0)/y;if(f<M[0]||f>M[2]||d<M[1]||d>M[3]){m.setInt16(g+i.offset+6,0,!0);for(let P=0;P<3;P++)m.setFloat32(g+n.offset+P*4,0,!0);A.push(-1);continue}let b=`${f},${d}`,S=_.get(b);S===void 0&&(S=p.length/2,_.set(b,S),p.push(f/6378137*180/Math.PI,(2*Math.atan(Math.exp(d/6378137))-Math.PI/2)*180/Math.PI)),A.push(S)}let w=p.length?yield new Float64Array(p):new Float64Array;if(!(w instanceof Float64Array)||w.length!==p.length||!w.every(E=>Number.isFinite(E)&&Math.abs(E)<=34028234663852886e22))throw new Error("Projection engine returned an invalid symbol-position batch");return A.forEach((E,g)=>{if(E<0)return;let f=g*t.stride+s;m.setFloat32(f,w[E*2],!0),m.setFloat32(f+4,w[E*2+1],!0);let d=m.getInt16(g*t.stride+a+4,!0)/16;m.setFloat32(f+8,d*de,!0)}),{vertices:u,indices:l}}var Fe=6378137,jt=new Map,Et=new je,ke=new je(16*1024*1024,32),Ze=Zr();function Zr(){return{completedMeshes:0,failedMeshes:0,sourceVertices:0,outputVertices:0,outputTriangles:0,projectionBatches:0,projectedPositions:0,edgeRounds:0,interiorRounds:0}}function Xr(){Et.clear(),ke.clear(),ke=new je(16*1024*1024,32),jt.clear(),Ze=Zr()}function Yr(){return{...Ze}}function Qr(){let e=ke.getStatistics();return{...Et.getStatistics(),...e.misses?{projectedResults:e}:{}}}function en(e){return JSON.stringify({projection:Me(e.projection),geometry:e.geometry,tileZoom:e.tile.coords.z,min:[e.tile.min.x,e.tile.min.y],overzoom:e.tile.overzoom2??1,styleZoom:e.tile.style_z,engine:e.projectPositions?e.projectionCacheKey:"local-kernels",stride:e.layout.stride,attributes:e.layout.dynamic_attribs.map(t=>[t.name,t.type,t.size,t.offset,t.normalized])})}function kn(e,t){if(!e.every(Number.isFinite)||Math.abs(e[0])>180||Math.abs(e[1])>85.0511287798066)throw new Error("Projected basemap position is outside the finite tile domain");Me({type:t});let r=jt.get(t);r||(r=new _e({projections:[pt,yt,bt,wt],...qr(t)}),jt.set(t,r));let o=r.projectSync([e[0],e[1]]);if(!o.every(Number.isFinite))throw new Error("Projected basemap produced a nonfinite position");return[o[0]*de,o[1]*de,0]}function St(e){if(e.projection.cacheProjectedMeshes){let o=ke.getOrCreate(en(e),e.vertices,e.indices,()=>St({...e,projection:{...e.projection,cacheProjectedMeshes:!1}}));return{vertices:o.vertices.slice(),indices:o.indices.slice()}}let t={edgeRounds:0,interiorRounds:0},r=Ze;try{let o=nn(e,t),n=o.next();for(;!n.done;){tn(n.value,r);let i=n.value.slice();for(let s=0;s<i.length;s+=2){let a=kn([i[s],i[s+1]],e.projection.type);i[s]=a[0],i[s+1]=a[1]}n=o.next(i)}return rn(e,n.value,t,r),n.value}catch(o){throw r.failedMeshes++,o}}async function vt(e){if(e.projectPositions&&e.projection.cacheProjectedMeshes&&e.projectionCacheKey){let o=await ke.getOrCreateAsync(en(e),e.vertices,e.indices,()=>vt({...e,projection:{...e.projection,cacheProjectedMeshes:!1}}));return{vertices:o.vertices.slice(),indices:o.indices.slice()}}let t={edgeRounds:0,interiorRounds:0},r=Ze;try{if(!e.projectPositions)throw new Error("Injected projection requires a host batch callback");let o=nn(e,t),n=o.next();for(;!n.done;)tn(n.value,r),n=o.next(await e.projectPositions(n.value));return rn(e,n.value,t,r),n.value}catch(o){throw r.failedMeshes++,o}}function tn(e,t){t.projectionBatches++,t.projectedPositions+=e.length/2}function rn(e,t,r,o){o.completedMeshes++,o.sourceVertices+=e.vertices.byteLength/e.layout.stride,o.outputVertices+=t.vertices.byteLength/e.layout.stride,o.outputTriangles+=t.indices.length/3,o.edgeRounds+=r.edgeRounds,o.interiorRounds+=r.interiorRounds}function*nn(e,t){let r=Me(e.projection);if(e.geometry==="points"||e.geometry==="text")return yield*Hr(e);let{tile:o,layout:n}=e,i=4096*2**o.coords.z/(2*Math.PI*Fe),s=n.dynamic_attribs.find(h=>h.name==="a_position"),a=n.dynamic_attribs.find(h=>h.name==="a_projected_position"),c=n.dynamic_attribs.find(h=>h.name==="a_extrude"),l=e.geometry==="lines",u=n.dynamic_attribs.find(h=>h.name==="a_normal"),m=n.dynamic_attribs.find(h=>h.name==="a_projected_normal");if(m&&(m.type!==5126||m.size!==3||m.offset===void 0||m.offset<0||m.offset+12>n.stride))throw new Error("CPU projection requires a valid projected normal layout");if(u&&(u.type!==5120||u.size<3||u.offset===void 0||u.offset<0||u.offset+3>n.stride))throw new Error("CPU projection requires a packed surface normal");let y=o.overzoom2??1;if(!s||s.type!==5122||s.size!==4||s.offset===void 0||!a||a.type!==5126||a.size!==3||a.offset===void 0||!Number.isSafeInteger(n.stride)||n.stride<=0||e.vertices.byteLength%n.stride!==0||s.offset<0||s.offset+8>n.stride||a.offset<0||a.offset+12>n.stride||![o.min.x,o.min.y,i].every(Number.isFinite)||i<=0)throw new Error("CPU projection requires a packed ground layout and finite tile metadata");if(l&&(!c||c.type!==5122||c.size!==2||c.offset===void 0||c.offset<0||c.offset+4>n.stride||!Number.isFinite(y)||y<1))throw new Error("CPU projected lines require packed extrusion and finite overzoom");let M=l?n.dynamic_attribs.filter(h=>["a_offset","a_z_and_offset_scale"].includes(h.name)).map(h=>{if(h.type!==5122||h.size!==2||h.offset===void 0||h.offset<0||h.offset+4>n.stride)throw new Error("CPU projected lines require packed ground attributes");return h.offset}):[];for(let[h,k]of[["a_projected_stroke",4],["a_projected_normals",4],["a_projected_widths",2]]){let R=n.dynamic_attribs.find(T=>T.name===h);if(R&&(R.type!==5126||R.size!==k||R.offset===void 0||R.offset<0||R.offset+k*4>n.stride))throw new Error("CPU projected stroke attributes require a valid float layout")}let p=new DataView(e.vertices.buffer,e.vertices.byteOffset,e.vertices.byteLength);for(let h=0;h<p.byteLength;h+=n.stride){let k=l?n.dynamic_attribs.find(R=>R.name==="a_z_and_offset_scale")?.offset:s.offset+4;if(k!==void 0&&p.getInt16(h+k,!0)!==0&&(l||!r.allowElevation))throw new Error("CPU projection elevation requires allowElevation for polygon/raster meshes")}let _=s.offset,A=c?.offset??0,w=n.dynamic_attribs.find(h=>h.name==="a_offset"),E=Math.max(0,Math.min(4,(o.style_z??o.coords.z)-o.coords.z));E+=(E>=1?1-E:0)+2*Math.max(0,Math.min(1,(E-2)/2));let g=h=>1-h.getInt16(_+4,!0)/1024*(E-.5)*2,f=h=>[h.getInt16(_,!0)+(l?(h.getInt16(A,!0)*g(h)+(w?.offset===void 0?0:h.getInt16(w.offset,!0)))/y:0),h.getInt16(_+2,!0)+(l?(h.getInt16(A+2,!0)*g(h)+(w?.offset===void 0?0:h.getInt16(w.offset+2,!0)))/y:0)],d=JSON.stringify({geometry:e.geometry,tileZoom:o.coords.z,min:o.min,overzoom:y,styleZoom:o.style_z,stride:n.stride,attributes:n.dynamic_attribs.map(h=>[h.name,h.type,h.size,h.offset,h.normalized]),maxAngularSpan:r.maxAngularSpan,maxAdditionalVertices:r.maxAdditionalVertices}),b=Et.getOrCreate(d,e.vertices,e.indices,()=>Je(e.vertices,e.indices,n,{tileZoom:o.coords.z,maxAngularSpan:r.maxAngularSpan,maxAdditionalVertices:r.maxAdditionalVertices,...l?{getPosition:f}:{}})),S=Br(b,e,f,r.maxAdditionalVertices-(b.vertices.byteLength-e.vertices.byteLength)/n.stride),P=ze(r.type),j=(h,k=!1,R=[0,0])=>{let[T,D]=k?[h.getInt16(_,!0),h.getInt16(_+2,!0)]:f(h);T+=R[0],D+=R[1];let O=Math.max(P[0],Math.min(P[2],o.min.x+T/i)),H=Math.max(P[1],Math.min(P[3],o.min.y+D/i)),K=Math.max(-180,Math.min(180,O/Fe*180/Math.PI)),Ee=Math.max(-85.0511287798066,Math.min(85.0511287798066,(2*Math.atan(Math.exp(H/Fe))-Math.PI/2)*180/Math.PI));return[K,Ee]},v=yield*Wr(S,e,(h,k)=>j(h,!1,k),f,t),x={vertices:v.vertices.slice(),indices:v.indices.slice()},I=[];for(let h=0;h<x.vertices.byteLength;h+=n.stride)I.push(...j(new DataView(x.vertices.buffer,x.vertices.byteOffset+h,n.stride)));let F=n.dynamic_attribs.find(h=>h.name==="a_projected_stroke"),N=n.dynamic_attribs.find(h=>h.name==="a_projected_normals"),C=n.dynamic_attribs.find(h=>h.name==="a_projected_widths"),G=x.vertices.byteLength/n.stride,J=new Map;if(!l&&m?.offset!==void 0&&u?.offset!==void 0)for(let h=0;h<G;h++){let k=new DataView(x.vertices.buffer,x.vertices.byteOffset+h*n.stride,n.stride);if(k.getInt8(u.offset)===0&&k.getInt8(u.offset+1)===0)continue;let R=[[-8,0],[8,0],[0,-8],[0,8]].map(O=>j(k,!1,[O[0],O[1]])),T=Math.cos(j(k)[1]*Math.PI/180),D=O=>Fe*Math.asinh(Math.tan(O*Math.PI/180));J.set(h,{offset:I.length,eastSpan:(R[1][0]-R[0][0])*Math.PI/180*Fe*T,northSpan:(D(R[3][1])-D(R[2][1]))*T});for(let O of R)I.push(...O)}let q=I.length/2;if(l&&F?.offset!==void 0)for(let h=0;h<x.vertices.byteLength;h+=n.stride)I.push(...j(new DataView(x.vertices.buffer,x.vertices.byteOffset+h,n.stride),!0));if(l&&F?.offset!==void 0&&N?.offset!==void 0&&C?.offset!==void 0)for(let h=0;h<x.vertices.byteLength;h+=n.stride){let k=new DataView(x.vertices.buffer,x.vertices.byteOffset+h,n.stride);for(let R=0;R<2;R++){let T=k.getFloat32(N.offset+R*8,!0),D=k.getFloat32(N.offset+R*8+4,!0);for(let O of[-8,8])I.push(...j(k,!0,[D*O,-T*O]))}}let z=yield new Float64Array(I);if(!(z instanceof Float64Array)||z.length!==I.length||!z.every(h=>Number.isFinite(h)&&Math.abs(h)<=34028234663852886e22))throw new Error("Projection engine returned an invalid common-position batch");let L=new DataView(x.vertices.buffer,x.vertices.byteOffset,x.vertices.byteLength);for(let h=0;h<G;h++){let k=h*n.stride+a.offset;if(L.setFloat32(k,z[h*2],!0),L.setFloat32(k+4,z[h*2+1],!0),L.setFloat32(k+8,l?0:L.getInt16(h*n.stride+s.offset+4,!0)/16*de,!0),m?.offset!==void 0){let R=m.offset,T=u?.offset,D=T===void 0?[0,0,1]:[L.getInt8(h*n.stride+T)/127,L.getInt8(h*n.stride+T+1)/127,L.getInt8(h*n.stride+T+2)/127],O=J.get(h),H=O?Vr(D,[(z[O.offset+2]-z[O.offset])/O.eastSpan,(z[O.offset+3]-z[O.offset+1])/O.eastSpan],[(z[O.offset+6]-z[O.offset+4])/O.northSpan,(z[O.offset+7]-z[O.offset+5])/O.northSpan]):D,K=Math.hypot(...H);if(!Number.isFinite(K)||K===0)throw new Error("Projected surface normal must be nonzero and finite");H.forEach((Ee,Xe)=>L.setFloat32(h*n.stride+R+Xe*4,Ee/K,!0))}if(l&&F?.offset!==void 0){let R=new DataView(x.vertices.buffer,x.vertices.byteOffset+h*n.stride,n.stride),T=R.getFloat32(F.offset+12,!0),D=Math.hypot(f(R)[0]-R.getInt16(_,!0),f(R)[1]-R.getInt16(_+2,!0))*y*T;if(T>0&&N?.offset!==void 0&&C?.offset!==void 0){let O=N.offset,H=[0,1].map(he=>[R.getFloat32(O+he*8,!0),R.getFloat32(O+he*8+4,!0)]),K=[0,1].map(he=>{let pe=(q+G+h*4+he*2)*2,At=z[pe+2]-z[pe],It=z[pe+3]-z[pe+1],Qe=Math.hypot(At,It);return Qe===0?[0,0]:[-It/Qe,At/Qe]}),Ee=R.getFloat32(C.offset,!0),Xe=R.getFloat32(C.offset+4,!0),on=[R.getInt16(A,!0),R.getInt16(A+2,!0)],sn=Kr(on,Ee,H,K),an=Kr([w?.offset===void 0?0:R.getInt16(w.offset,!0),w?.offset===void 0?0:R.getInt16(w.offset+2,!0)],Math.abs(Xe),H,K),Ye=sn.map((he,pe)=>(he*g(R)+an[pe])*T),_t=(G+h)*2;L.setFloat32(k,z[_t]+Ye[0],!0),L.setFloat32(k+4,z[_t+1]+Ye[1],!0),D=Math.hypot(...Ye)}L.setFloat32(h*n.stride+F.offset,z[(G+h)*2],!0),L.setFloat32(h*n.stride+F.offset+4,z[(G+h)*2+1],!0),L.setFloat32(h*n.stride+F.offset+8,D,!0)}}return x}function Kr(e,t,r,o){let n=Math.hypot(...e);if(n===0||t===0)return[0,0];let i=g=>{let f=Math.hypot(...g);return f===0?[0,0]:g.map(d=>d/f)},[s,a]=r.map(i),[c,l]=o,u=(g,f)=>g[0]*f[1]-g[1]*f[0],m=(g,f)=>g[0]*f[0]+g[1]*f[1],y=Math.atan2(u(s,a),m(s,a));if(Math.abs(y)<1e-4){let g=b=>Math.abs(Math.abs(b)-t)<=1?Math.sign(b)*t:Math.abs(b)<=1?0:b,f=g(m(e,s)),d=g(e[0]*s[1]-e[1]*s[0]);return[c[0]*f+c[1]*d,c[1]*f-c[0]*d]}let M=Math.sign(m(e,[s[0]+a[0],s[1]+a[1]]));if(n>t*1.01){let g=i([c[0]+l[0],c[1]+l[1]]),f=2/(1+Math.abs(m(c,g)));return g.map(d=>d*f**2*t*M)}let p=e.map(g=>g*M/n),_=Math.max(0,Math.min(1,Math.atan2(u(s,p),m(s,p))/y)),A=Math.atan2(u(c,l),m(c,l))*_,w=Math.cos(A),E=Math.sin(A);return[(c[0]*w-c[1]*E)*n*M,(c[0]*E+c[1]*w)*n*M]}if(!("registerMeshProjector"in self)||typeof self.registerMeshProjector!="function")throw new Error("Projected basemap script must run inside a Tangram scene worker");self.registerMeshProjector(e=>e.projectPositions?vt(e):St(e),Xr,Qr,Yr);})();
|
|
3
|
+
//# sourceMappingURL=projected-basemaps-worker.js.map
|