=0||!To(n)){const e=Vu(g,t,i,r,l,w,c,h,v,m,y,Xu.horizontal,!1,M,f,d);e&&(_.horizontal[v]=e)}L("point"===M?"left":v)}}let v=!1;if(o.icon&&o.icon.name){const t=n[o.icon.name];t&&(b=rd(r[o.icon.name],u.get("icon-offset").evaluate(o,{},s),u.get("icon-anchor").evaluate(o,{},s)),v=t.sdf,void 0===e.sdfIcons?e.sdfIcons=t.sdf:e.sdfIcons!==t.sdf&&pe("Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer"),(t.pixelRatio!==e.pixelRatio||0!==u.get("icon-rotate").constantOr(1))&&(e.iconsNeedLinear=!0))}const M=Rd(_.horizontal)||_.vertical;e.iconsInText||(e.iconsInText=!!M&&M.iconsInText),(M||b)&&Bd(e,o,_,b,n,m,f,0,y,v,a,s,c)}o&&e.generateCollisionDebugBuffers(l,e.collisionBoxArray)}function Nd(e){switch(e){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}function Bd(e,t,i,n,r,o,a,s,l,c,u,d,m){let p=o.textMaxSize.evaluate(t,{},d);void 0===p&&(p=a);const h=e.layers[0].layout,f=h.get("icon-offset").evaluate(t,{},d),_=Rd(i.horizontal)||i.vertical,g=a/24,b=e.tilePixelRatio*p/24,y=e.tilePixelRatio*h.get("symbol-spacing"),v=h.get("text-padding")*e.tilePixelRatio,M=h.get("icon-padding")*e.tilePixelRatio,x=X(h.get("text-max-angle")),w="map"===h.get("text-rotation-alignment")&&"point"!==h.get("symbol-placement"),L="map"===h.get("icon-rotation-alignment")&&"point"!==h.get("symbol-placement"),A=h.get("symbol-placement"),z=y/2,T=h.get("icon-text-fit");let k;n&&"none"!==T&&(e.allowVerticalPlacement&&i.vertical&&(k=od(n,i.vertical,T,h.get("icon-text-fit-padding"),f,g)),_&&(n=od(n,_,T,h.get("icon-text-fit-padding"),f,g)));const S=(a,s,p)=>{if(s.x<0||s.x>=Es||s.y<0||s.y>=Es)return;const{x:h,y:_,z:g}=m.projectTilePoint(s.x,s.y,p),b=new ad(h,_,g,0,void 0);!function(e,t,i,n,r,o,a,s,l,c,u,d,m,p,h,f,_,g,b,y,v,M,x,w,L){const A=e.addToLineVertexArray(t,n);let z,T,k,S,E,O,D,C=0,P=0,N=0,B=0,I=-1,Y=-1;const R={};let j=Qa(""),q=0,W=0;if(void 0===l._unevaluatedLayout.getValue("text-radial-offset")?[q,W]=l.layout.get("text-offset").evaluate(v,{},L).map((e=>e*au)):(q=l.layout.get("text-radial-offset").evaluate(v,{},L)*au,W=Od),e.allowVerticalPlacement&&r.vertical){const e=r.vertical;if(h)O=qd(e),s&&(D=qd(s));else{const n=l.layout.get("text-rotate").evaluate(v,{},L)+90;k=jd(c,i,t,u,d,m,e,p,n,f),s&&(S=jd(c,i,t,u,d,m,s,g,n))}}if(o){const n=l.layout.get("icon-rotate").evaluate(v,{},L),r="none"!==l.layout.get("icon-text-fit"),a=vd(o,n,x,r),p=s?vd(s,n,x,r):void 0;T=jd(c,i,t,u,d,m,o,g,n),C=4*a.length;const h=e.iconSizeData;let f=null;"source"===h.kind?(f=[su*l.layout.get("icon-size").evaluate(v,{},L)],f[0]>Id&&pe(`${e.layerIds[0]}: Value for "icon-size" is >= 255. Reduce your "icon-size".`)):"composite"===h.kind&&(f=[su*M.compositeIconSizes[0].evaluate(v,{},L),su*M.compositeIconSizes[1].evaluate(v,{},L)],(f[0]>Id||f[1]>Id)&&pe(`${e.layerIds[0]}: Value for "icon-size" is >= 255. Reduce your "icon-size".`)),e.addSymbols(e.icon,a,f,y,b,v,!1,i,t,A.lineStartIndex,A.lineLength,-1,w,L),I=e.icon.placedSymbolArray.length-1,p&&(P=4*p.length,e.addSymbols(e.icon,p,f,y,b,v,Xu.vertical,i,t,A.lineStartIndex,A.lineLength,-1,w,L),Y=e.icon.placedSymbolArray.length-1)}for(const n in r.horizontal){const o=r.horizontal[n];z||(j=Qa(o.text),h?E=qd(o):z=jd(c,i,t,u,d,m,o,p,l.layout.get("text-rotate").evaluate(v,{},L),f));const s=1===o.positionedLines.length;if(N+=Yd(e,i,t,o,a,l,h,v,f,A,r.vertical?Xu.horizontal:Xu.horizontalOnly,s?Object.keys(r.horizontal):[n],R,I,M,w,L),s)break}r.vertical&&(B+=Yd(e,i,t,r.vertical,a,l,h,v,f,A,Xu.vertical,["vertical"],R,Y,M,w,L));let F=-1;const X=(e,t)=>e?Math.max(e,t):t;F=X(E,F),F=X(O,F),F=X(D,F);const H=F>-1?1:0;e.glyphOffsetArray.length>=$d.MAX_GLYPHS&&pe("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),void 0!==v.sortKey&&e.addToSortKeyRanges(e.symbolInstances.length,v.sortKey),e.symbolInstances.emplaceBack(i.x,i.y,i.z,t.x,t.y,R.right>=0?R.right:-1,R.center>=0?R.center:-1,R.left>=0?R.left:-1,R.vertical>=0?R.vertical:-1,I,Y,j,void 0!==z?z:e.collisionBoxArray.length,void 0!==z?z+1:e.collisionBoxArray.length,void 0!==k?k:e.collisionBoxArray.length,void 0!==k?k+1:e.collisionBoxArray.length,void 0!==T?T:e.collisionBoxArray.length,void 0!==T?T+1:e.collisionBoxArray.length,S||e.collisionBoxArray.length,S?S+1:e.collisionBoxArray.length,u,N,B,C,P,H,0,q,W,F)}(e,s,b,a,i,n,r,k,e.layers[0],e.collisionBoxArray,t.index,t.sourceLayerIndex,e.index,v,w,l,0,M,L,f,t,o,c,u,d)};if("line"===A)for(const r of hd(t.geometry,0,0,Es,Es)){const t=md(r,y,x,i.vertical||_,n,24,b,e.overscaling,Es);for(const i of t){const t=_;t&&Wd(e,t.text,z,i)||S(r,i,d)}}else if("line-center"===A){for(const e of t.geometry)if(e.length>1){const t=dd(e,x,i.vertical||_,n,24,b);t&&S(e,t,d)}}else if("Polygon"===t.type)for(const e of pc(t.geometry,0)){const t=kd(e,16);S(e[0],new ad(t.x,t.y,0,0,void 0),d)}else if("LineString"===t.type)for(const e of t.geometry)S(e,new ad(e[0].x,e[0].y,0,0,void 0),d);else if("Point"===t.type)for(const e of t.geometry)for(const t of e)S([t],new ad(t.x,t.y,0,0,void 0),d)}const Id=32640;function Yd(e,t,i,n,r,a,s,l,c,u,d,m,p,h,f,_,g){const b=function(e,t,i,n,r,a,s,l){const c=[];if(0===t.positionedLines.length)return c;const u=n.layout.get("text-rotate").evaluate(a,{})*Math.PI/180,d=function(e){const t=e[0],i=e[1],n=t*i;return n>0?[t,-i]:n<0?[-t,i]:0===t?[i,t]:[i,-t]}(i);let m=Math.abs(t.top-t.bottom);for(const e of t.positionedLines)m-=e.lineOffset;const p=t.positionedLines.length,h=m/p;let f=t.top-i[1];for(let e=0;eId&&pe(`${e.layerIds[0]}: Value for "text-size" is >= 255. Reduce your "text-size".`)):"composite"===y.kind&&(v=[su*f.compositeTextSizes[0].evaluate(l,{},g),su*f.compositeTextSizes[1].evaluate(l,{},g)],(v[0]>Id||v[1]>Id)&&pe(`${e.layerIds[0]}: Value for "text-size" is >= 255. Reduce your "text-size".`)),e.addSymbols(e.text,b,v,c,s,l,d,t,i,u.lineStartIndex,u.lineLength,h,_,g);for(const t of m)p[t]=e.text.placedSymbolArray.length-1;return 4*b.length}function Rd(e){for(const t in e)return e[t];return null}function jd(e,t,i,n,r,a,s,l,c,u){let d=s.top,m=s.bottom,p=s.left,h=s.right;const f=s.collisionPadding;if(f&&(p-=f[0],d-=f[1],h+=f[2],m+=f[3]),c){const e=new o(p,d),t=new o(h,d),i=new o(p,m),n=new o(h,m),r=X(c);let a=new o(0,0);u&&(a=new o(u[0],u[1])),e._rotateAround(r,a),t._rotateAround(r,a),i._rotateAround(r,a),n._rotateAround(r,a),p=Math.min(e.x,t.x,i.x,n.x),h=Math.max(e.x,t.x,i.x,n.x),d=Math.min(e.y,t.y,i.y,n.y),m=Math.max(e.y,t.y,i.y,n.y)}return e.emplaceBack(t.x,t.y,t.z,i.x,i.y,p,d,h,m,l,n,r,a),e.length-1}function qd(e){e.collisionPadding&&(e.top-=e.collisionPadding[1],e.bottom+=e.collisionPadding[3]);const t=e.bottom-e.top;return t>0?Math.max(10,t):null}function Wd(e,t,i,n){const r=e.compareText;if(t in r){const e=r[t];for(let t=e.length-1;t>=0;t--)if(n.dist(e[t])e.id)),this.index=e.index,this.pixelRatio=e.pixelRatio,this.sourceLayerIndex=e.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.fullyClipped=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=d([]),this.placementViewportMatrix=d([]);const t=this.layers[0]._unevaluatedLayout._values;this.textSizeData=lu(this.zoom,t["text-size"]),this.iconSizeData=lu(this.zoom,t["icon-size"]);const i=this.layers[0].layout,n=i.get("symbol-sort-key"),r=i.get("symbol-z-order");this.canOverlap=i.get("text-allow-overlap")||i.get("icon-allow-overlap")||i.get("text-ignore-placement")||i.get("icon-ignore-placement"),this.sortFeaturesByKey="viewport-y"!==r&&void 0!==n.constantOr(1),this.sortFeaturesByY=("viewport-y"===r||"auto"===r&&!this.sortFeaturesByKey)&&this.canOverlap,this.writingModes=i.get("text-writing-mode").map((e=>Xu[e])),this.stateDependentLayerIds=this.layers.filter((e=>e.isStateDependent())).map((e=>e.id)),this.sourceID=e.sourceID}createArrays(){this.text=new Gd(new ys(this.layers,this.zoom,(e=>/^text/.test(e)))),this.icon=new Gd(new ys(this.layers,this.zoom,(e=>/^icon/.test(e)))),this.glyphOffsetArray=new Fa,this.lineVertexArray=new Xa,this.symbolInstances=new Wa}calculateGlyphDependencies(e,t,i,n,r){for(let i=0;i0)&&("constant"!==a.value.kind||a.value.value.length>0),u="constant"!==l.value.kind||!!l.value.value||Object.keys(l.parameters).length>0,d=o.get("symbol-sort-key");if(this.features=[],!c&&!u)return;const m=t.iconDependencies,p=t.glyphDependencies,h=t.availableImages,f=new Vo(this.zoom);for(const{feature:t,id:s,index:l,sourceLayerIndex:_}of e){const e=r._featureFilter.needGeometry,g=$s(t,e);if(!r._featureFilter.filter(f,g,i))continue;let b,y;if(e||(g.geometry=Zs(t,i,n)),c){const e=r.getValueAndResolveTokens("text-field",g,i,h),t=Zt.factory(e);Vd(t)&&(this.hasRTLText=!0),(!this.hasRTLText||"unavailable"===Xo()||this.hasRTLText&&Uo.isParsed())&&(b=mu(t,r,g))}if(u){const e=r.getValueAndResolveTokens("icon-image",g,i,h);y=e instanceof $t?e:$t.fromString(e)}if(!b&&!y)continue;const v=this.sortFeaturesByKey?d.evaluate(g,{},i):void 0;if(this.features.push({id:s,text:b,icon:y,index:l,sourceLayerIndex:_,geometry:g.geometry,properties:t.properties,type:Fd[t.type],sortKey:v}),y&&(m[y.name]=!0),b){const e=a.evaluate(g,{},i).join(","),t="map"===o.get("text-rotation-alignment")&&"point"!==o.get("symbol-placement");this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(Xu.vertical)>=0;for(const i of b.sections)if(i.image)m[i.image.name]=!0;else{const n=To(b.toString()),r=i.fontStack||e,o=p[r]=p[r]||{};this.calculateGlyphDependencies(i.text,o,t,this.allowVerticalPlacement,n)}}}"line"===o.get("symbol-placement")&&(this.features=function(e){const t={},i={},n=[];let r=0;function o(t){n.push(e[t]),r++}function a(e,t,r){const o=i[e];return delete i[e],i[t]=o,n[o].geometry[0].pop(),n[o].geometry[0]=n[o].geometry[0].concat(r[0]),o}function s(e,i,r){const o=t[i];return delete t[i],t[e]=o,n[o].geometry[0].shift(),n[o].geometry[0]=r[0].concat(n[o].geometry[0]),o}function l(e,t,i){const n=i?t[0][t[0].length-1]:t[0][0];return`${e}:${n.x}:${n.y}`}for(let c=0;ce.geometry))}(this.features)),this.sortFeaturesByKey&&this.features.sort(((e,t)=>e.sortKey-t.sortKey))}update(e,t,i,n){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(e,t,this.layers,i,n),this.icon.programConfigurations.updatePaintArrays(e,t,this.layers,i,n))}isEmpty(){return 0===this.symbolInstances.length&&!this.hasRTLText}uploadPending(){return!this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(e){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(e),this.iconCollisionBox.upload(e)),this.text.upload(e,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(e,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy()}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData()}addToLineVertexArray(e,t){const i=this.lineVertexArray.length;if(void 0!==e.segment){let i=e.dist(t[e.segment+1]),n=e.dist(t[e.segment]);const r={};for(let n=e.segment+1;n=0;i--)r[i]={x:t[i].x,y:t[i].y,tileUnitDistanceFromAnchor:n},i>0&&(n+=t[i-1].dist(t[i]));for(let e=0;e=0?t.rightJustifiedTextSymbolIndex:t.centerJustifiedTextSymbolIndex>=0?t.centerJustifiedTextSymbolIndex:t.leftJustifiedTextSymbolIndex>=0?t.leftJustifiedTextSymbolIndex:t.verticalPlacedTextSymbolIndex>=0?t.verticalPlacedTextSymbolIndex:n),o=cu(this.textSizeData,e,r)/au;return this.tilePixelRatio*o}getSymbolInstanceIconSize(e,t,i){const n=this.icon.placedSymbolArray.get(i),r=cu(this.iconSizeData,e,n);return this.tilePixelRatio*r}_commitDebugCollisionVertexUpdate(e,t,i){e.emplaceBack(t,-i,-i),e.emplaceBack(t,i,-i),e.emplaceBack(t,i,i),e.emplaceBack(t,-i,i)}_updateTextDebugCollisionBoxes(e,t,i,n,r,o){for(let a=n;a0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(e,t){const i=e.placedSymbolArray.get(t),n=i.vertexStartIndex+4*i.numGlyphs;for(let t=i.vertexStartIndex;tn[e]-n[t]||r[t]-r[e])),o}addToSortKeyRanges(e,t){const i=this.sortKeyRanges[this.sortKeyRanges.length-1];i&&i.sortKey===t?i.symbolInstanceEnd=e+1:this.sortKeyRanges.push({sortKey:t,symbolInstanceStart:e,symbolInstanceEnd:e+1})}sortFeatures(e){if(this.sortFeaturesByY&&this.sortedAngle!==e&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(e),this.sortedAngle=e,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(const e of this.symbolInstanceIndexes){const t=this.symbolInstances.get(e);this.featureSortOrder.push(t.featureIndex),[t.rightJustifiedTextSymbolIndex,t.centerJustifiedTextSymbolIndex,t.leftJustifiedTextSymbolIndex].forEach(((e,t,i)=>{e>=0&&i.indexOf(e)===t&&this.addIndicesForPlacedSymbol(this.text,e)})),t.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,t.verticalPlacedTextSymbolIndex),t.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,t.placedIconSymbolIndex),t.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,t.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}}Vr("SymbolBucket",$d,{omit:["layers","collisionBoxArray","features","compareText"]}),$d.MAX_GLYPHS=65535,$d.addDynamicAttributes=Ud;const Kd=new sa({"symbol-placement":new ia(vt.layout_symbol["symbol-placement"]),"symbol-spacing":new ia(vt.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new ia(vt.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new na(vt.layout_symbol["symbol-sort-key"]),"symbol-z-order":new ia(vt.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new ia(vt.layout_symbol["icon-allow-overlap"]),"icon-ignore-placement":new ia(vt.layout_symbol["icon-ignore-placement"]),"icon-optional":new ia(vt.layout_symbol["icon-optional"]),"icon-rotation-alignment":new ia(vt.layout_symbol["icon-rotation-alignment"]),"icon-size":new na(vt.layout_symbol["icon-size"]),"icon-text-fit":new ia(vt.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new ia(vt.layout_symbol["icon-text-fit-padding"]),"icon-image":new na(vt.layout_symbol["icon-image"]),"icon-rotate":new na(vt.layout_symbol["icon-rotate"]),"icon-padding":new ia(vt.layout_symbol["icon-padding"]),"icon-keep-upright":new ia(vt.layout_symbol["icon-keep-upright"]),"icon-offset":new na(vt.layout_symbol["icon-offset"]),"icon-anchor":new na(vt.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new ia(vt.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new ia(vt.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new ia(vt.layout_symbol["text-rotation-alignment"]),"text-field":new na(vt.layout_symbol["text-field"]),"text-font":new na(vt.layout_symbol["text-font"]),"text-size":new na(vt.layout_symbol["text-size"]),"text-max-width":new na(vt.layout_symbol["text-max-width"]),"text-line-height":new na(vt.layout_symbol["text-line-height"]),"text-letter-spacing":new na(vt.layout_symbol["text-letter-spacing"]),"text-justify":new na(vt.layout_symbol["text-justify"]),"text-radial-offset":new na(vt.layout_symbol["text-radial-offset"]),"text-variable-anchor":new ia(vt.layout_symbol["text-variable-anchor"]),"text-anchor":new na(vt.layout_symbol["text-anchor"]),"text-max-angle":new ia(vt.layout_symbol["text-max-angle"]),"text-writing-mode":new ia(vt.layout_symbol["text-writing-mode"]),"text-rotate":new na(vt.layout_symbol["text-rotate"]),"text-padding":new ia(vt.layout_symbol["text-padding"]),"text-keep-upright":new ia(vt.layout_symbol["text-keep-upright"]),"text-transform":new na(vt.layout_symbol["text-transform"]),"text-offset":new na(vt.layout_symbol["text-offset"]),"text-allow-overlap":new ia(vt.layout_symbol["text-allow-overlap"]),"text-ignore-placement":new ia(vt.layout_symbol["text-ignore-placement"]),"text-optional":new ia(vt.layout_symbol["text-optional"])});var Jd={paint:new sa({"icon-opacity":new na(vt.paint_symbol["icon-opacity"]),"icon-color":new na(vt.paint_symbol["icon-color"]),"icon-halo-color":new na(vt.paint_symbol["icon-halo-color"]),"icon-halo-width":new na(vt.paint_symbol["icon-halo-width"]),"icon-halo-blur":new na(vt.paint_symbol["icon-halo-blur"]),"icon-translate":new ia(vt.paint_symbol["icon-translate"]),"icon-translate-anchor":new ia(vt.paint_symbol["icon-translate-anchor"]),"text-opacity":new na(vt.paint_symbol["text-opacity"]),"text-color":new na(vt.paint_symbol["text-color"],{runtimeType:Dt,getOverride:e=>e.textColor,hasOverride:e=>!!e.textColor}),"text-halo-color":new na(vt.paint_symbol["text-halo-color"]),"text-halo-width":new na(vt.paint_symbol["text-halo-width"]),"text-halo-blur":new na(vt.paint_symbol["text-halo-blur"]),"text-translate":new ia(vt.paint_symbol["text-translate"]),"text-translate-anchor":new ia(vt.paint_symbol["text-translate-anchor"])}),layout:Kd};class Qd{constructor(e){this.type=e.property.overrides?e.property.overrides.runtimeType:kt,this.defaultValue=e}evaluate(e){if(e.formattedSection){const t=this.defaultValue.property.overrides;if(t&&t.hasOverride(e.formattedSection))return t.getOverride(e.formattedSection)}return e.feature&&e.featureState?this.defaultValue.evaluate(e.feature,e.featureState):this.defaultValue.property.specification.default}eachChild(e){this.defaultValue.isConstant()||e(this.defaultValue.value._styleExpression.expression)}outputDefined(){return!1}serialize(){return null}}Vr("FormatSectionOverride",Qd,{omit:["defaultValue"]});class em extends zs{constructor(e){super(e,Jd)}recalculate(e,t){super.recalculate(e,t),"auto"===this.layout.get("icon-rotation-alignment")&&(this.layout._values["icon-rotation-alignment"]="point"!==this.layout.get("symbol-placement")?"map":"viewport"),"auto"===this.layout.get("text-rotation-alignment")&&(this.layout._values["text-rotation-alignment"]="point"!==this.layout.get("symbol-placement")?"map":"viewport"),"auto"===this.layout.get("text-pitch-alignment")&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")),"auto"===this.layout.get("icon-pitch-alignment")&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment"));const i=this.layout.get("text-writing-mode");if(i){const e=[];for(const t of i)e.indexOf(t)<0&&e.push(t);this.layout._values["text-writing-mode"]=e}else this.layout._values["text-writing-mode"]="point"===this.layout.get("symbol-placement")?["horizontal"]:["horizontal","vertical"];this._setPaintOverrides()}getValueAndResolveTokens(e,t,i,n){const r=this.layout.get(e).evaluate(t,{},i,n),o=this._unevaluatedLayout._values[e];return o.isDataDriven()||Hn(o.value)||!r?r:function(e,t){return t.replace(/{([^{}]+)}/g,((t,i)=>i in e?String(e[i]):""))}(t.properties,r)}createBucket(e){return new $d(e)}queryRadius(){return 0}queryIntersectsFeature(){return!1}_setPaintOverrides(){for(const e of Jd.paint.overridableProperties){if(!em.hasPaintOverride(this.layout,e))continue;const t=this.paint.get(e),i=new Qd(t),n=new Xn(i,t.property.specification);let r=null;r="constant"===t.value.kind||"source"===t.value.kind?new Vn("source",n):new Gn("composite",n,t.value.zoomStops,t.value._interpolationType),this.paint._values[e]=new ea(t.property,r,t.parameters)}}_handleOverridablePaintPropertyUpdate(e,t,i){return!(!this.layout||t.isDataDriven()||i.isDataDriven())&&em.hasPaintOverride(this.layout,e)}static hasPaintOverride(e,t){const i=e.get("text-field"),n=Jd.paint.properties[t];let r=!1;const o=e=>{for(const t of e)if(n.overrides&&n.overrides.hasOverride(t))return void(r=!0)};if("constant"===i.value.kind&&i.value.value instanceof Zt)o(i.value.value.sections);else if("source"===i.value.kind){const e=t=>{r||(t instanceof ti&&Qt(t.value)===Bt?o(t.value.sections):t instanceof oi?o(t.sections):t.eachChild(e))},t=i.value;t._styleExpression&&e(t._styleExpression.expression)}return r}getProgramConfiguration(e){return new bs(this,e)}}var tm={paint:new sa({"background-color":new ia(vt.paint_background["background-color"]),"background-pattern":new oa(vt.paint_background["background-pattern"]),"background-opacity":new ia(vt.paint_background["background-opacity"])})},im={paint:new sa({"raster-opacity":new ia(vt.paint_raster["raster-opacity"]),"raster-hue-rotate":new ia(vt.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new ia(vt.paint_raster["raster-brightness-min"]),"raster-brightness-max":new ia(vt.paint_raster["raster-brightness-max"]),"raster-saturation":new ia(vt.paint_raster["raster-saturation"]),"raster-contrast":new ia(vt.paint_raster["raster-contrast"]),"raster-resampling":new ia(vt.paint_raster["raster-resampling"]),"raster-fade-duration":new ia(vt.paint_raster["raster-fade-duration"])})};class nm extends zs{constructor(e){super(e,{}),this.implementation=e}is3D(){return"3d"===this.implementation.renderingMode}hasOffscreenPass(){return void 0!==this.implementation.prerender}recalculate(){}updateTransitions(){}hasTransition(){}serialize(){}onAdd(e){this.implementation.onAdd&&this.implementation.onAdd(e,e.painter.context.gl)}onRemove(e){this.implementation.onRemove&&this.implementation.onRemove(e,e.painter.context.gl)}}var rm={paint:new sa({"sky-type":new ia(vt.paint_sky["sky-type"]),"sky-atmosphere-sun":new ia(vt.paint_sky["sky-atmosphere-sun"]),"sky-atmosphere-sun-intensity":new ia(vt.paint_sky["sky-atmosphere-sun-intensity"]),"sky-gradient-center":new ia(vt.paint_sky["sky-gradient-center"]),"sky-gradient-radius":new ia(vt.paint_sky["sky-gradient-radius"]),"sky-gradient":new aa(vt.paint_sky["sky-gradient"]),"sky-atmosphere-halo-color":new ia(vt.paint_sky["sky-atmosphere-halo-color"]),"sky-atmosphere-color":new ia(vt.paint_sky["sky-atmosphere-color"]),"sky-opacity":new ia(vt.paint_sky["sky-opacity"])})};function om(e,t,i){const n=M(0,0,1),r=R(Y());return function(e,t,i){i*=.5;var n=t[0],r=t[1],o=t[2],a=t[3],s=Math.sin(i),l=Math.cos(i);e[0]=n*l-o*s,e[1]=r*l+a*s,e[2]=o*l+n*s,e[3]=a*l-r*s}(r,r,i?-X(e)+Math.PI:X(e)),j(r,r,-X(t)),D(n,n,r),k(n,n)}const am={circle:class extends zs{constructor(e){super(e,_l)}createBucket(e){return new Js(e)}queryRadius(e){const t=e;return dl("circle-radius",this,t)+dl("circle-stroke-width",this,t)+ml(this.paint.get("circle-translate"))}queryIntersectsFeature(e,t,i,n,r,o,a,s){const l=hl(this.paint.get("circle-translate"),this.paint.get("circle-translate-anchor"),o.angle,e.pixelToTileUnitsFactor),c=this.paint.get("circle-radius").evaluate(t,i)+this.paint.get("circle-stroke-width").evaluate(t,i);return yl(e,n,o,a,s,"map"===this.paint.get("circle-pitch-alignment"),"map"===this.paint.get("circle-pitch-scale"),l,c)}getProgramIds(){return["circle"]}getProgramConfiguration(e){return new bs(this,e)}},heatmap:class extends zs{createBucket(e){return new Ll(e)}constructor(e){super(e,El),this._updateColorRamp()}_handleSpecialPaintPropertyUpdate(e){"heatmap-color"===e&&this._updateColorRamp()}_updateColorRamp(){this.colorRamp=Ol({expression:this._transitionablePaint._values["heatmap-color"].value.expression,evaluationKey:"heatmapDensity",image:this.colorRamp}),this.colorRampTexture=null}resize(){this.heatmapFbo&&(this.heatmapFbo.destroy(),this.heatmapFbo=null)}queryRadius(e){return dl("heatmap-radius",this,e)}queryIntersectsFeature(e,t,i,n,r,a,s,l){const c=this.paint.get("heatmap-radius").evaluate(t,i);return yl(e,n,a,s,l,!0,!0,new o(0,0),c)}hasOffscreenPass(){return 0!==this.paint.get("heatmap-opacity")&&"none"!==this.visibility}getProgramIds(){return["heatmap","heatmapTexture"]}getProgramConfiguration(e){return new bs(this,e)}},hillshade:class extends zs{constructor(e){super(e,Dl)}hasOffscreenPass(){return 0!==this.paint.get("hillshade-exaggeration")&&"none"!==this.visibility}getProgramIds(){return["hillshade","hillshadePrepare"]}getProgramConfiguration(e){return new bs(this,e)}},fill:class extends zs{constructor(e){super(e,yc)}getProgramIds(){const e=this.paint.get("fill-pattern"),t=e&&e.constantOr(1),i=[t?"fillPattern":"fill"];return this.paint.get("fill-antialias")&&i.push(t&&!this.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline"),i}getProgramConfiguration(e){return new bs(this,e)}recalculate(e,t){super.recalculate(e,t);const i=this.paint._values["fill-outline-color"];"constant"===i.value.kind&&void 0===i.value.value&&(this.paint._values["fill-outline-color"]=this.paint._values["fill-color"])}createBucket(e){return new gc(e)}queryRadius(){return ml(this.paint.get("fill-translate"))}queryIntersectsFeature(e,t,i,n,r,o){return!e.queryGeometry.isAboveHorizon&&tl(pl(e.tilespaceGeometry,this.paint.get("fill-translate"),this.paint.get("fill-translate-anchor"),o.angle,e.pixelToTileUnitsFactor),n)}isTileClipped(){return!0}},"fill-extrusion":class extends zs{constructor(e){super(e,Yc)}createBucket(e){return new Bc(e)}queryRadius(){return ml(this.paint.get("fill-extrusion-translate"))}is3D(){return!0}getProgramIds(){return[this.paint.get("fill-extrusion-pattern").constantOr(1)?"fillExtrusionPattern":"fillExtrusion"]}getProgramConfiguration(e){return new bs(this,e)}queryIntersectsFeature(e,t,i,n,r,a,s,l,c){const u=hl(this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),a.angle,e.pixelToTileUnitsFactor),d=this.paint.get("fill-extrusion-height").evaluate(t,i),m=this.paint.get("fill-extrusion-base").evaluate(t,i),p=[0,0],h=l&&a.elevation,f=a.elevation?a.elevation.exaggeration():1;if(h){const t=e.tile.getBucket(this).centroidVertexArray,i=c+1;if(i=3)for(let t=0;t1&&(a=e[++o]);const l=Math.abs(s-a.left),c=Math.abs(s-a.right),u=Math.min(l,c);let d;const m=t/i*(n+1);if(a.isDash){const e=n-Math.abs(m);d=Math.sqrt(u*u+e*e)}else d=n-Math.sqrt(u*u+m*m);this.image.data[r+s]=Math.max(0,Math.min(255,d+128))}}}addRegularDash(e,t){for(let t=e.length-1;t>=0;--t){const i=e[t],n=e[t+1];i.zeroLength?e.splice(t,1):n&&n.isDash===i.isDash&&(n.left=i.left,e.splice(t,1))}const i=e[0],n=e[e.length-1];i.isDash===n.isDash&&(i.left=n.left-this.width,n.right=i.right+this.width);const r=this.width*this.nextRow;let o=0,a=e[o];for(let i=0;i1&&(a=e[++o]);const n=Math.abs(i-a.left),s=Math.abs(i-a.right),l=Math.min(n,s);this.image.data[r+i]=Math.max(0,Math.min(255,(a.isDash?l:-l)+t+128))}}addDash(e,t){const i=this.getKey(e,t);if(this.positions[i])return this.positions[i];const n="round"===t,r=n?7:0,o=2*r+1;if(this.nextRow+o>this.height)return pe("LineAtlas out of space"),null;0===e.length&&e.push(1);let a=0;for(let t=0;t{this._triggered=!1,this._callback()})}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout((()=>{this._triggered=!1,this._callback()}),0))}remove(){delete this._channel,this._callback=()=>{}}}const fm=s.performance;function _m(e){const t=e?e.url.toString():void 0;return fm.getEntriesByName(t)}class gm{constructor(){this.tasks={},this.taskQueue=[],se(["process"],this),this.invoker=new hm(this.process),this.nextId=0}add(e,t){const i=this.nextId++,n=function({type:e,isSymbolTile:t,zoom:i}){return i=i||0,"message"===e?0:"maybePrepare"!==e||t?"parseTile"!==e||t?"parseTile"===e&&t?300-i:"maybePrepare"===e&&t?400-i:500:200-i:100-i}(t);if(0===n){_e();try{e()}finally{}return{cancel:()=>{}}}return this.tasks[i]={fn:e,metadata:t,priority:n,id:i},this.taskQueue.push(i),this.invoker.trigger(),{cancel:()=>{delete this.tasks[i]}}}process(){_e();try{if(this.taskQueue=this.taskQueue.filter((e=>!!this.tasks[e])),!this.taskQueue.length)return;const e=this.pick();if(null===e)return;const t=this.tasks[e];if(delete this.tasks[e],this.taskQueue.length&&this.invoker.trigger(),!t)return;t.fn()}finally{}}pick(){let e=null,t=1/0;for(let i=0;i0;o--)n=1<this.canonical.z?new Mm(e,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Mm(e,this.wrap,e,this.canonical.x>>t,this.canonical.y>>t)}calculateScaledKey(e,t=!0){if(this.overscaledZ===e&&t)return this.key;if(e>this.canonical.z)return xm(this.wrap*+t,e,this.canonical.z,this.canonical.x,this.canonical.y);{const i=this.canonical.z-e;return xm(this.wrap*+t,e,e,this.canonical.x>>i,this.canonical.y>>i)}}isChildOf(e){if(e.wrap!==this.wrap)return!1;const t=this.canonical.z-e.canonical.z;return 0===e.overscaledZ||e.overscaledZ>t&&e.canonical.y===this.canonical.y>>t}children(e){if(this.overscaledZ>=e)return[new Mm(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];const t=this.canonical.z+1,i=2*this.canonical.x,n=2*this.canonical.y;return[new Mm(t,this.wrap,t,i,n),new Mm(t,this.wrap,t,i+1,n),new Mm(t,this.wrap,t,i,n+1),new Mm(t,this.wrap,t,i+1,n+1)]}isLessThan(e){return this.wrape.wrap)&&(this.overscaledZe.overscaledZ)&&(this.canonical.xe.canonical.x)&&this.canonical.yt[a])return null}else{const s=1/n[a];let l=(e[a]-i[a])*s,c=(t[a]-i[a])*s;if(l>c){const e=l;l=c,c=e}if(l>r&&(r=l),co)return null}return r}function Nm(e,t,i,n,r,o,a,s,l,c,u){const d=n-e,m=r-t,p=o-i,h=a-e,f=s-t,_=l-i,g=u[1]*_-u[2]*f,b=u[2]*h-u[0]*_,y=u[0]*f-u[1]*h,v=d*g+m*b+p*y;if(Math.abs(v)<1e-15)return null;const M=1/v,x=c[0]-e,w=c[1]-t,L=c[2]-i,A=(x*g+w*b+L*y)*M;if(A<0||A>1)return null;const z=w*p-L*m,T=L*d-x*p,k=x*m-w*d,S=(u[0]*z+u[1]*T+u[2]*k)*M;return S<0||A+S>1?null:(h*z+f*T+_*k)*M}function Bm(e,t,i){return(e-t)/(i-t)}function Im(e,t,i,n,r,o,a,s,l){const c=1<{const o=n?1:0,a=(e+1)*i-o,s=t*i,l=(t+1)*i-o;r[0]=e*i,r[1]=s,r[2]=a,r[3]=l};let a=new Cm(n);const s=[];for(let t=0;t=1;n/=2){const e=i[i.length-1];a=new Cm(n);for(let t=0;t0;){const{idx:s,t:p,nodex:h,nodey:f,depth:_}=m.pop();if(this.leaves[s]){Im(h,f,_,e,t,i,n,u,d);const s=1<<_,l=(h+0)/s,c=(h+1)/s,m=(f+0)/s,g=(f+1)/s,b=jm(l,m,this.dem)*a,y=jm(c,m,this.dem)*a,v=jm(c,g,this.dem)*a,M=jm(l,g,this.dem)*a,x=Nm(u[0],u[1],b,d[0],u[1],y,d[0],d[1],v,r,o),w=Nm(d[0],d[1],v,u[0],d[1],M,u[0],u[1],b,r,o),L=Math.min(null!==x?x:Number.MAX_VALUE,null!==w?w:Number.MAX_VALUE);if(L!==Number.MAX_VALUE)return L;{const e=T([],r,o,p);if(Rm(b,y,M,v,Bm(e[0],u[0],d[0]),Bm(e[1],u[1],d[1]))>=e[2])return p}continue}let g=0;for(let m=0;m=l[c[i]]&&(c.splice(i,0,m),t=!0);t||(c[g]=m),g++}}for(let e=0;e=this.dim+1||t<-1||t>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(t+1)*this.stride+(e+1)}_unpackMapbox(e,t,i){return(256*e*256+256*t+i)/10-1e4}_unpackTerrarium(e,t,i){return 256*e+t+i/256-32768}static pack(e,t){const i=[0,0,0,0],n=Wm.getUnpackVector(t);let r=Math.floor((e+n[3])/n[2]);return i[2]=r%256,r=Math.floor(r/256),i[1]=r%256,r=Math.floor(r/256),i[0]=r,i}getPixels(){return new Sl({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(e,t,i){if(this.dim!==e.dim)throw new Error("dem dimension mismatch");let n=t*this.dim,r=t*this.dim+this.dim,o=i*this.dim,a=i*this.dim+this.dim;switch(t){case-1:n=r-1;break;case 1:r=n+1}switch(i){case-1:o=a-1;break;case 1:a=o+1}const s=-t*this.dim,l=-i*this.dim;for(let t=o;t{this.remove(e,r)}),i)),this.data[n].push(r),this.order.push(n),this.order.length>this.max){const e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this}has(e){return e.wrapped().key in this.data}getAndRemove(e){return this.has(e)?this._getAndRemoveByKey(e.wrapped().key):null}_getAndRemoveByKey(e){const t=this.data[e].shift();return t.timeout&&clearTimeout(t.timeout),0===this.data[e].length&&delete this.data[e],this.order.splice(this.order.indexOf(e),1),t.value}getByKey(e){const t=this.data[e];return t?t[0].value:null}get(e){return this.has(e)?this.data[e.wrapped().key][0].value:null}remove(e,t){if(!this.has(e))return this;const i=e.wrapped().key,n=void 0===t?0:this.data[i].indexOf(t),r=this.data[i][n];return this.data[i].splice(n,1),r.timeout&&clearTimeout(r.timeout),0===this.data[i].length&&delete this.data[i],this.onRemove(r.value),this.order.splice(this.order.indexOf(i),1),this}setMaxSize(e){for(this.max=e;this.order.length>this.max;){const e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this}filter(e){const t=[];for(const i in this.data)for(const n of this.data[i])e(n.value)||t.push(n);for(const e of t)this.remove(e.value.tileID,e)}}class Xm extends yt{constructor(e,t,i){super(),this.id=e,this._onlySymbols=i,t.on("data",(e=>{"source"===e.dataType&&"metadata"===e.sourceDataType&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&"source"===e.dataType&&"content"===e.sourceDataType&&(this.reload(),this.transform&&this.update(this.transform))})),t.on("error",(()=>{this._sourceErrored=!0})),this._source=t,this._tiles={},this._cache=new Fm(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._minTileCacheSize=null,this._maxTileCacheSize=null,this._loadedParentTiles={},this._coveredTiles={},this._state=new Dm}onAdd(e){this.map=e,this._minTileCacheSize=e?e._minTileCacheSize:null,this._maxTileCacheSize=e?e._maxTileCacheSize:null}loaded(){if(this._sourceErrored)return!0;if(!this._sourceLoaded)return!1;if(!this._source.loaded())return!1;for(const e in this._tiles){const t=this._tiles[e];if("loaded"!==t.state&&"errored"!==t.state)return!1}return!0}getSource(){return this._source}pause(){this._paused=!0}resume(){if(!this._paused)return;const e=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,e&&this.reload(),this.transform&&this.update(this.transform)}_loadTile(e,t){return e.isSymbolTile=this._onlySymbols,this._source.loadTile(e,t)}_unloadTile(e){if(this._source.unloadTile)return this._source.unloadTile(e,(()=>{}))}_abortTile(e){if(this._source.abortTile)return this._source.abortTile(e,(()=>{}))}serialize(){return this._source.serialize()}prepare(e){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(const t in this._tiles){const i=this._tiles[t];i.upload(e),i.prepare(this.map.style.imageManager)}}getIds(){return ee(this._tiles).map((e=>e.tileID)).sort(Hm).map((e=>e.key))}getRenderableIds(e){const t=[];for(const i in this._tiles)this._isIdRenderable(+i,e)&&t.push(this._tiles[i]);return e?t.sort(((e,t)=>{const i=e.tileID,n=t.tileID,r=new o(i.canonical.x,i.canonical.y)._rotate(this.transform.angle),a=new o(n.canonical.x,n.canonical.y)._rotate(this.transform.angle);return i.overscaledZ-n.overscaledZ||a.y-r.y||a.x-r.x})).map((e=>e.tileID.key)):t.map((e=>e.tileID)).sort(Hm).map((e=>e.key))}hasRenderableParent(e){const t=this.findLoadedParent(e,0);return!!t&&this._isIdRenderable(t.tileID.key)}_isIdRenderable(e,t){return this._tiles[e]&&this._tiles[e].hasData()&&!this._coveredTiles[e]&&(t||!this._tiles[e].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else{this._cache.reset();for(const e in this._tiles)"errored"!==this._tiles[e].state&&this._reloadTile(+e,"reloading")}}_reloadTile(e,t){const i=this._tiles[e];i&&("loading"!==i.state&&(i.state=t),this._loadTile(i,this._tileLoaded.bind(this,i,e,t)))}_tileLoaded(e,t,i,n){if(n)if(e.state="errored",404!==n.status)this._source.fire(new bt(n,{tile:e}));else if("raster-dem"===this._source.type&&this.usedForTerrain&&this.map.painter.terrain){const e=this.map.painter.terrain;this.update(this.transform,e.getScaledDemTileSize(),!0),e.resetTileLookupCache(this.id)}else this.update(this.transform);else e.timeAdded=Le.now(),"expired"===i&&(e.refreshedUponExpiration=!0),this._setTileReloadTimer(t,e),"raster-dem"===this._source.type&&e.dem&&this._backfillDEM(e),this._state.initializeTileState(e,this.map?this.map.painter:null),this._source.fire(new gt("data",{dataType:"source",tile:e,coord:e.tileID,sourceCacheId:this.id}))}_backfillDEM(e){const t=this.getRenderableIds();for(let n=0;n1||(Math.abs(i)>1&&(1===Math.abs(i+r)?i+=r:1===Math.abs(i-r)&&(i-=r)),t.dem&&e.dem&&(e.dem.backfillBorder(t.dem,i,n),e.neighboringTiles&&e.neighboringTiles[o]&&(e.neighboringTiles[o].backfilled=!0)))}}getTile(e){return this.getTileByID(e.key)}getTileByID(e){return this._tiles[e]}_retainLoadedChildren(e,t,i,n){for(const r in this._tiles){let o=this._tiles[r];if(n[r]||!o.hasData()||o.tileID.overscaledZ<=t||o.tileID.overscaledZ>i)continue;let a=o.tileID;for(;o&&o.tileID.overscaledZ>t+1;){const e=o.tileID.scaledTo(o.tileID.overscaledZ-1);o=this._tiles[e.key],o&&o.hasData()&&(a=e)}let s=a;for(;s.overscaledZ>t;)if(s=s.scaledTo(s.overscaledZ-1),e[s.key]){n[a.key]=a;break}}}findLoadedParent(e,t){if(e.key in this._loadedParentTiles){const i=this._loadedParentTiles[e.key];return i&&i.tileID.overscaledZ>=t?i:null}for(let i=e.overscaledZ-1;i>=t;i--){const t=e.scaledTo(i),n=this._getLoadedTile(t);if(n)return n}}_getLoadedTile(e){const t=this._tiles[e.key];return t&&t.hasData()?t:this._cache.getByKey(this._source.reparseOverscaled?e.wrapped().key:e.canonical.key)}updateCacheSize(e,t){t=t||this._source.tileSize;const i=Math.ceil(e.width/t)+1,n=Math.ceil(e.height/t)+1,r=Math.floor(i*n*5),o="number"==typeof this._minTileCacheSize?Math.max(this._minTileCacheSize,r):r,a="number"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,o):o;this._cache.setMaxSize(a)}handleWrapJump(e){const t=Math.round((e-(void 0===this._prevLng?e:this._prevLng))/360);if(this._prevLng=e,t){const e={};for(const i in this._tiles){const n=this._tiles[i];n.tileID=n.tileID.unwrapTo(n.tileID.wrap+t),e[n.tileID.key]=n}this._tiles=e;for(const e in this._timers)clearTimeout(this._timers[e]),delete this._timers[e];for(const e in this._tiles)this._setTileReloadTimer(+e,this._tiles[e])}}update(e,t,i){if(this.transform=e,!this._sourceLoaded||this._paused||this.transform.freezeTileCoverage)return;if(this.usedForTerrain&&!i)return;let n;this.updateCacheSize(e,t),"globe"!==this.transform.projection.name&&this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?n=e.getVisibleUnwrappedCoordinates(this._source.tileID).map((e=>new Mm(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y))):(n=e.coveringTiles({tileSize:t||this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom&&!i,reparseOverscaled:this._source.reparseOverscaled,isTerrainDEM:this.usedForTerrain}),this._source.hasTile&&(n=n.filter((e=>this._source.hasTile(e))))):n=[];const r=this._updateRetainedTiles(n);if(Um(this._source.type)&&0!==n.length){const e={},t={},i=Object.keys(r);for(const n of i){const i=r[n],o=this._tiles[n];if(!o||o.fadeEndTime&&o.fadeEndTime<=Le.now())continue;const a=this.findLoadedParent(i,Math.max(i.overscaledZ-Xm.maxOverzooming,this._source.minzoom));a&&(this._addTile(a.tileID),e[a.tileID.key]=a.tileID),t[n]=i}const o=n[n.length-1].overscaledZ;for(const e in this._tiles){const i=this._tiles[e];if(r[e]||!i.hasData())continue;let n=i.tileID;for(;n.overscaledZ>o;){n=n.scaledTo(n.overscaledZ-1);const o=this._tiles[n.key];if(o&&o.hasData()&&t[n.key]){r[e]=i.tileID;break}}}for(const t in e)r[t]||(this._coveredTiles[t]=!0,r[t]=e[t])}for(const e in r)this._tiles[e].clearFadeHold();const o=function(e,t){const i=[];for(const n in e)n in t||i.push(n);return i}(this._tiles,r);for(const e of o){const t=this._tiles[e];t.hasSymbolBuckets&&!t.holdingForFade()?t.setHoldDuration(this.map._fadeDuration):t.hasSymbolBuckets&&!t.symbolFadeFinished()||this._removeTile(+e)}this._updateLoadedParentTileCache(),this._onlySymbols&&this._source.afterUpdate&&this._source.afterUpdate()}releaseSymbolFadeTiles(){for(const e in this._tiles)this._tiles[e].holdingForFade()&&this._removeTile(+e)}_updateRetainedTiles(e){const t={};if(0===e.length)return t;const i={},n=e.reduce(((e,t)=>Math.min(e,t.overscaledZ)),1/0),r=e[0].overscaledZ,o=Math.max(r-Xm.maxOverzooming,this._source.minzoom),a=Math.max(r+Xm.maxUnderzooming,this._source.minzoom),s={};for(const i of e){const e=this._addTile(i);t[i.key]=i,e.hasData()||n=this._source.maxzoom){const e=n.children(this._source.maxzoom)[0],i=this.getTile(e);if(i&&i.hasData()){t[e.key]=e;continue}}else{const e=n.children(this._source.maxzoom);if(t[e[0].key]&&t[e[1].key]&&t[e[2].key]&&t[e[3].key])continue}let r=e.wasRequested();for(let a=n.overscaledZ-1;a>=o;--a){const o=n.scaledTo(a);if(i[o.key])break;if(i[o.key]=!0,e=this.getTile(o),!e&&r&&(e=this._addTile(o)),e&&(t[o.key]=o,r=e.wasRequested(),e.hasData()))break}}return t}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(const e in this._tiles){const t=[];let i,n=this._tiles[e].tileID;for(;n.overscaledZ>0;){if(n.key in this._loadedParentTiles){i=this._loadedParentTiles[n.key];break}t.push(n.key);const e=n.scaledTo(n.overscaledZ-1);if(i=this._getLoadedTile(e),i)break;n=e}for(const e of t)this._loadedParentTiles[e]=i}}_addTile(e){let t=this._tiles[e.key];if(t)return t;t=this._cache.getAndRemove(e),t&&(this._setTileReloadTimer(e.key,t),t.tileID=e,this._state.initializeTileState(t,this.map?this.map.painter:null),this._cacheTimers[e.key]&&(clearTimeout(this._cacheTimers[e.key]),delete this._cacheTimers[e.key],this._setTileReloadTimer(e.key,t)));const i=Boolean(t);if(!i){const i=this.map?this.map.painter:null,n="raster"===this._source.type||"raster-dem"===this._source.type;t=new sp(e,this._source.tileSize*e.overscaleFactor(),this.transform.tileZoom,i,n),this._loadTile(t,this._tileLoaded.bind(this,t,e.key,t.state))}return t?(t.uses++,this._tiles[e.key]=t,i||this._source.fire(new gt("dataloading",{tile:t,coord:t.tileID,dataType:"source"})),t):null}_setTileReloadTimer(e,t){e in this._timers&&(clearTimeout(this._timers[e]),delete this._timers[e]);const i=t.getExpiryTimeout();i&&(this._timers[e]=setTimeout((()=>{this._reloadTile(e,"expired"),delete this._timers[e]}),i))}_removeTile(e){const t=this._tiles[e];t&&(t.uses--,delete this._tiles[e],this._timers[e]&&(clearTimeout(this._timers[e]),delete this._timers[e]),t.uses>0||(t.hasData()&&"reloading"!==t.state?this._cache.add(t.tileID,t,t.getExpiryTimeout()):(t.aborted=!0,this._abortTile(t),this._unloadTile(t))))}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(const e in this._tiles)this._removeTile(+e);this._source._clear&&this._source._clear(),this._cache.reset()}tilesIn(e,t,i){const n=[],r=this.transform;if(!r)return n;for(const o in this._tiles){const a=this._tiles[o];if(i&&a.clearQueryDebugViz(),a.holdingForFade())continue;const s=e.containsTile(a,r,t);s&&n.push(s)}return n}getVisibleCoordinates(e){const t=this.getRenderableIds(e).map((e=>this._tiles[e].tileID));for(const e of t)e.projMatrix=this.transform.calculateProjMatrix(e.toUnwrapped());return t}hasTransition(){if(this._source.hasTransition())return!0;if(Um(this._source.type))for(const e in this._tiles){const t=this._tiles[e];if(void 0!==t.fadeEndTime&&t.fadeEndTime>=Le.now())return!0}return!1}setFeatureState(e,t,i){this._state.updateState(e=e||"_geojsonTileLayer",t,i)}removeFeatureState(e,t,i){this._state.removeFeatureState(e=e||"_geojsonTileLayer",t,i)}getFeatureState(e,t){return this._state.getState(e=e||"_geojsonTileLayer",t)}setDependencies(e,t,i){const n=this._tiles[e];n&&n.setDependencies(t,i)}reloadTilesForDependencies(e,t){for(const i in this._tiles)this._tiles[i].hasDependency(e,t)&&this._reloadTile(+i,"reloading");this._cache.filter((i=>!i.hasDependency(e,t)))}_preloadTiles(e,t){const i=new Map,n=Array.isArray(e)?e:[e],r=this.map.painter.terrain,o=this.usedForTerrain&&r?r.getScaledDemTileSize():this._source.tileSize;for(const e of n){const t=e.coveringTiles({tileSize:o,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom&&!this.usedForTerrain,reparseOverscaled:this._source.reparseOverscaled,isTerrainDEM:this.usedForTerrain});for(const e of t)i.set(e.key,e);this.usedForTerrain&&e.updateElevation(!1)}const a=Array.from(i.values()),s="raster"===this._source.type||"raster-dem"===this._source.type;Q(a,((e,t)=>{const i=new sp(e,this._source.tileSize*e.overscaleFactor(),this.transform.tileZoom,this.map.painter,s);this._loadTile(i,(e=>{"raster-dem"===this._source.type&&i.dem&&this._backfillDEM(i),t(e,i)}))}),t)}}function Hm(e,t){const i=Math.abs(2*e.wrap)-+(e.wrap<0),n=Math.abs(2*t.wrap)-+(t.wrap<0);return e.overscaledZ-t.overscaledZ||n-i||t.canonical.y-e.canonical.y||t.canonical.x-e.canonical.x}function Um(e){return"raster"===e||"image"===e||"video"===e}Xm.maxOverzooming=10,Xm.maxUnderzooming=3;class Vm{constructor(e,t,i){this._demTile=e,this._dem=this._demTile.dem,this._scale=t,this._offset=i}static create(e,t,i){const n=i||e.findDEMTileFor(t);if(!n||!n.dem)return;const r=n.dem,o=n.tileID,a=1<=0&&n[3]>=0&&s.insert(a,n[0],n[1],n[2],n[3])}}loadVTLayers(){if(!this.vtLayers){this.vtLayers=new Oc.VectorTile(new bu(this.rawTileData)).layers,this.sourceLayerCoder=new Em(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"]),this.vtFeatures={};for(const e in this.vtLayers)this.vtFeatures[e]=[]}return this.vtLayers}query(e,t,i,n){this.loadVTLayers();const r=e.params||{},o=ar(r.filter),a=e.tileResult,s=e.transform,l=a.bufferedTilespaceBounds,c=this.grid.query(l.min.x,l.min.y,l.max.x,l.max.y,((e,t,i,n)=>cl(a.bufferedTilespaceGeometry,e,t,i,n)));c.sort($m);let u=null;s.elevation&&c.length>0&&(u=Vm.create(s.elevation,this.tileID));const d={};let m;for(let s=0;s(h||(h=Zs(t,this.tileID.canonical,e.tileTransform)),i.queryIntersectsFeature(a,t,n,h,this.z,e.transform,e.pixelPosMatrix,u,r))))}return d}loadMatchingFeature(e,t,i,n,r,o,a,s,l){const{featureIndex:c,bucketIndex:u,sourceLayerIndex:d,layoutVertexArrayOffset:m}=t,p=this.bucketLayerIDs[u];if(n&&!function(e,t){for(let i=0;i=0)return!0;return!1}(n,p))return;const h=this.sourceLayerCoder.decode(d),f=this.vtLayers[h].feature(c);if(i.needGeometry){const e=$s(f,!0);if(!i.filter(new Vo(this.tileID.overscaledZ),e,this.tileID.canonical))return}else if(!i.filter(new Vo(this.tileID.overscaledZ),f))return;const _=this.getId(f,h);for(let t=0;t{const a=t instanceof ta?t.get(o):null;return a&&a.evaluate?a.evaluate(i,n,r):a}))}function $m(e,t){return t-e}Vr("FeatureIndex",Gm,{omit:["rawTileData","sourceLayerCoder"]});var Km=ma([{name:"a_pos",type:"Int16",components:2}]);const Jm=32,Qm=33,ep=new Uint16Array(8184);for(let e=0;e<2046;e++){let t=e+2,i=0,n=0,r=0,o=0,a=0,s=0;for(1&t?r=o=a=Jm:i=n=s=Jm;(t>>=1)>1;){const e=i+r>>1,l=n+o>>1;1&t?(r=i,o=n,i=a,n=s):(i=r,n=o,r=a,o=s),a=e,s=l}const l=4*e;ep[l+0]=i,ep[l+1]=n,ep[l+2]=r,ep[l+3]=o}const tp=new Uint16Array(2178),ip=new Uint8Array(1089),np=new Uint16Array(1089);function rp(e){return 0===e?-.03125:32===e?.03125:0}var op=ma([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);const ap={type:2,extent:Es,loadGeometry:()=>[[new o(0,0),new o(8193,0),new o(8193,8193),new o(0,8193),new o(0,0)]]};class sp{constructor(e,t,i,n,r){this.tileID=e,this.uid=ne(),this.uses=0,this.tileSize=t,this.tileZoom=i,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.isRaster=r,this.expiredRequestCount=0,this.state="loading",n&&n.transform&&(this.projection=n.transform.projection)}registerFadeDuration(e){const t=e+this.timeAdded;tt.getLayer(e))).filter(Boolean);if(0!==e.length){n.layers=e,n.stateDependentLayerIds&&(n.stateDependentLayers=n.stateDependentLayerIds.map((t=>e.filter((e=>e.id===t))[0])));for(const t of e)i[t.id]=n}}return i}(e.buckets,t.style),this.hasSymbolBuckets=!1;for(const e in this.buckets){const t=this.buckets[e];if(t instanceof $d){if(this.hasSymbolBuckets=!0,!i)break;t.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(const e in this.buckets){const t=this.buckets[e];if(t instanceof $d&&t.hasRTLText){this.hasRTLText=!0,Uo.isLoading()||Uo.isLoaded()||"deferred"!==Xo()||Ho();break}}this.queryPadding=0;for(const e in this.buckets){const i=this.buckets[e];this.queryPadding=Math.max(this.queryPadding,t.style.getLayer(e).queryRadius(i))}e.imageAtlas&&(this.imageAtlas=e.imageAtlas),e.glyphAtlasImage&&(this.glyphAtlasImage=e.glyphAtlasImage),e.lineAtlas&&(this.lineAtlas=e.lineAtlas)}else this.collisionBoxArray=new Ya}unloadVectorData(){if(this.hasData()){for(const e in this.buckets)this.buckets[e].destroy();this.buckets={},this.imageAtlas&&(this.imageAtlas=null),this.lineAtlas&&(this.lineAtlas=null),this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.lineAtlasTexture&&this.lineAtlasTexture.destroy(),this._tileBoundsBuffer&&(this._tileBoundsBuffer.destroy(),this._tileBoundsIndexBuffer.destroy(),this._tileBoundsSegments.destroy(),this._tileBoundsBuffer=null),this._tileDebugBuffer&&(this._tileDebugBuffer.destroy(),this._tileDebugIndexBuffer.destroy(),this._tileDebugSegments.destroy(),this._tileDebugBuffer=null),this.globeGridBuffer&&(this.globeGridBuffer.destroy(),this.globeGridBuffer=null),this.globePoleBuffer&&(this.globePoleBuffer.destroy(),this.globePoleBuffer=null),this.latestFeatureIndex=null,this.state="unloaded"}}getBucket(e){return this.buckets[e.id]}upload(e){for(const t in this.buckets){const i=this.buckets[t];i.uploadPending()&&i.upload(e)}const t=e.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new mm(e,this.imageAtlas.image,t.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new mm(e,this.glyphAtlasImage,t.ALPHA),this.glyphAtlasImage=null),this.lineAtlas&&!this.lineAtlas.uploaded&&(this.lineAtlasTexture=new mm(e,this.lineAtlas.image,t.ALPHA),this.lineAtlas.uploaded=!0)}prepare(e){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(e,this.imageAtlasTexture)}queryRenderedFeatures(e,t,i,n,r,o,a,s){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({tileResult:n,pixelPosMatrix:a,transform:o,params:r,tileTransform:this.tileTransform},e,t,i):{}}querySourceFeatures(e,t){const i=this.latestFeatureIndex;if(!i||!i.rawTileData)return;const n=i.loadVTLayers(),r=t?t.sourceLayer:"",o=n._geojsonTileLayer||n[r];if(!o)return;const a=ar(t&&t.filter),{z:s,x:l,y:c}=this.tileID.canonical,u={z:s,x:l,y:c};for(let t=0;te)i=!1;else if(t)if(this.expirationTime=0;e--){const t=4*e,i=ep[t+0],n=ep[t+1],r=ep[t+2],o=ep[t+3],a=i+r>>1,s=n+o>>1,l=a+s-n,c=s+i-a,u=n*Qm+i,d=o*Qm+r,m=s*Qm+a,p=Math.hypot((tp[2*u+0]+tp[2*d+0])/2-tp[2*m+0],(tp[2*u+1]+tp[2*d+1])/2-tp[2*m+1])>=16;if(ip[m]=ip[m]||(p?1:0),e<1022){const e=(n+c>>1)*Qm+(i+l>>1),t=(o+c>>1)*Qm+(r+l>>1);ip[m]=ip[m]||ip[e]||ip[t]}}const r=new fa,o=new za;let a=0;function s(e,t){const i=t*Qm+e;return 0===np[i]&&(r.emplaceBack(tp[2*i+0],tp[2*i+1],e*Es/Jm,t*Es/Jm),np[i]=++a),np[i]-1}function l(e,t,i,n,r,a){const c=e+i>>1,u=t+n>>1;if(Math.abs(e-r)+Math.abs(t-a)>1&&ip[u*Qm+c])l(r,a,e,t,c,u),l(i,n,r,a,c,u);else{const l=s(e,t),c=s(i,n),u=s(r,a);o.emplaceBack(l,c,u)}}return l(0,0,Jm,Jm,Jm,0),l(Jm,Jm,0,0,0,Jm),{vertices:r,indices:o}}(this.tileID.canonical,t);n=e.vertices,r=e.indices}else{n=new fa,r=new za;for(const{x:e,y:t}of i)n.emplaceBack(e,t,0,0);const e=Nl(n.int16,void 0,4);for(let t=0;te*(1-i)+t*i,[n,r]=gp(e),o=new Oa,a=function(e){const t=d(new Float64Array(16)),i=vp(e);var n,r;return h(t,t,[i,i,i]),p(t,t,((n=[])[0]=-(r=e.min)[0],n[1]=-r[1],n[2]=-r[2],n)),t}(_p(e));o.reserve(4096);for(let s=0;s<65;s++){const l=i(n[0],r[0],s/64),c=Is(l),u=c*t-e.y,d=Math.sin(X(l)),m=Math.cos(X(l));for(let e=0;e<65;e++){const t=e/64,s=i(n[1],r[1],t),l=bp(m,d,s);O(l,l,a);const p=Bs(s);o.emplaceBack(l[0],l[1],l[2],p,c,t,u)}}return o}_createGridIndices(){const e=new za,t=(t,i)=>{const n=65*i+t;e.emplaceBack(n+1,n,n+65),e.emplaceBack(n+65,n+65+1,n+1)};for(let e=0;e<64;e++)for(let i=0;i<64;i++)t(i,e);return e}getWirefameBuffer(e){if(!this.wireframeSegments){const t=this._createWireframeGrid();this.wireframeIndexBuffer=e.createIndexBuffer(t),this.wireframeSegments=Ss.simpleSegment(0,0,4096,t.length)}return[this.wireframeIndexBuffer,this.wireframeSegments]}_createWireframeGrid(){const e=new Ca,t=(t,i)=>{const n=65*i+t;e.emplaceBack(n,n+1),e.emplaceBack(n,n+65),e.emplaceBack(n,n+65+1)};for(let e=0;e<64;e++)for(let i=0;i<64;i++)t(i,e);return e}}function Lp(e,t){if(!t.isReprojectedInTileSpace)return{scale:1<y&&(v(e,c,n,r,s,l),v(c,i,s,l,o,a))}v(d,m,n,o,r,o),v(m,p,r,o,r,a),v(p,h,r,a,n,a),v(h,d,n,a,n,o),f-=y,_-=y,g+=y,b+=y;const M=1/Math.max(g-f,b-_);return{scale:M,x:f*M,y:_*M,x2:g*M,y2:b*M,projection:t}}class Ap{constructor(e){const t={},i=[];for(const n in e){const r=e[n],o=t[n]={};for(const e in r.glyphs){const t=r.glyphs[+e];if(!t||0===t.bitmap.width||0===t.bitmap.height)continue;const n=t.metrics.localGlyph?2:1,a={x:0,y:0,w:t.bitmap.width+2*n,h:t.bitmap.height+2*n};i.push(a),o[e]=a}}const{w:n,h:r}=qu(i),o=new kl({width:n||1,height:r||1});for(const i in e){const n=e[i];for(const e in n.glyphs){const r=n.glyphs[+e];if(!r||0===r.bitmap.width||0===r.bitmap.height)continue;const a=t[i][e],s=r.metrics.localGlyph?2:1;kl.copy(r.bitmap,o,{x:0,y:0},{x:a.x+s,y:a.y+s},r.bitmap)}}this.image=o,this.positions=t}}Vr("GlyphAtlas",Ap);class zp{constructor(e){this.tileID=new Mm(e.tileID.overscaledZ,e.tileID.wrap,e.tileID.canonical.z,e.tileID.canonical.x,e.tileID.canonical.y),this.tileZoom=e.tileZoom,this.uid=e.uid,this.zoom=e.zoom,this.canonical=e.tileID.canonical,this.pixelRatio=e.pixelRatio,this.tileSize=e.tileSize,this.source=e.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=e.showCollisionBoxes,this.collectResourceTiming=!!e.collectResourceTiming,this.returnDependencies=!!e.returnDependencies,this.promoteId=e.promoteId,this.enableTerrain=!!e.enableTerrain,this.isSymbolTile=e.isSymbolTile,this.tileTransform=Lp(e.tileID.canonical,e.projection),this.projection=e.projection}parse(e,t,i,n,r){this.status="parsing",this.data=e,this.collisionBoxArray=new Ya;const o=new Em(Object.keys(e.layers).sort()),a=new Gm(this.tileID,this.promoteId);a.bucketLayerIDs=[];const s={},l=new pm(256,256),c={featureIndex:a,iconDependencies:{},patternDependencies:{},glyphDependencies:{},lineAtlas:l,availableImages:i},u=t.familiesBySource[this.source];for(const t in u){const n=e.layers[t];if(!n)continue;let r=!1,l=!1;for(const e of u[t])"symbol"===e[0].type?r=!0:l=!0;if(!0===this.isSymbolTile&&!r)continue;if(!1===this.isSymbolTile&&!l)continue;1===n.version&&pe(`Vector tile source "${this.source}" layer "${t}" does not use vector tile spec v2 and therefore may have some rendering errors.`);const d=o.encode(t),m=[];for(let e=0;e=t.maxzoom||"none"!==t.visibility&&(Tp(e,this.zoom,i),(s[t.id]=t.createBucket({index:a.bucketLayerIDs.length,layers:e,zoom:this.zoom,canonical:this.canonical,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:d,sourceID:this.source,enableTerrain:this.enableTerrain,availableImages:i})).populate(m,c,this.tileID.canonical,this.tileTransform),a.bucketLayerIDs.push(e.map((e=>e.id))))}}let d,m,p,h;l.trim();const f={type:"maybePrepare",isSymbolTile:this.isSymbolTile,zoom:this.zoom},_=ce(c.glyphDependencies,(e=>Object.keys(e).map(Number)));Object.keys(_).length?n.send("getGlyphs",{uid:this.uid,stacks:_},((e,t)=>{d||(d=e,m=t,y.call(this))}),void 0,!1,f):m={};const g=Object.keys(c.iconDependencies);g.length?n.send("getImages",{icons:g,source:this.source,tileID:this.tileID,type:"icons"},((e,t)=>{d||(d=e,p=t,y.call(this))}),void 0,!1,f):p={};const b=Object.keys(c.patternDependencies);function y(){if(d)return r(d);if(m&&p&&h){const e=new Ap(m),t=new Fu(p,h);for(const n in s){const r=s[n];r instanceof $d?(Tp(r.layers,this.zoom,i),Pd(r,m,e.positions,p,t.iconPositions,this.showCollisionBoxes,i,this.tileID.canonical,this.tileZoom,this.projection),r.projection=this.projection.name):r.hasPattern&&(r instanceof Zc||r instanceof gc||r instanceof Bc)&&(Tp(r.layers,this.zoom,i),r.addFeatures(c,this.tileID.canonical,t.patternPositions,i))}this.status="done",r(null,{buckets:ee(s).filter((e=>!e.isEmpty())),featureIndex:a,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:e.image,lineAtlas:l,imageAtlas:t,glyphMap:this.returnDependencies?m:null,iconMap:this.returnDependencies?p:null,glyphPositions:this.returnDependencies?e.positions:null})}}b.length?n.send("getImages",{icons:b,source:this.source,tileID:this.tileID,type:"patterns"},((e,t)=>{d||(d=e,h=t,y.call(this))}),void 0,!1,f):h={},y.call(this)}}function Tp(e,t,i){const n=new Vo(t);for(const t of e)t.recalculate(n,i)}class kp{constructor(e){this.entries={},this.scheduler=e}request(e,t,i,n){const r=this.entries[e]=this.entries[e]||{callbacks:[]};if(r.result){const[e,i]=r.result;return this.scheduler?this.scheduler.add((()=>{n(e,i)}),t):n(e,i),()=>{}}return r.callbacks.push(n),r.cancel||(r.cancel=i(((i,n)=>{r.result=[i,n];for(const e of r.callbacks)this.scheduler?this.scheduler.add((()=>{e(i,n)}),t):e(i,n);setTimeout((()=>delete this.entries[e]),3e3)}))),()=>{r.result||(r.callbacks=r.callbacks.filter((e=>e!==n)),r.callbacks.length||(r.cancel(),delete this.entries[e]))}}}function Sp(e,t,i){const n=JSON.stringify(e.request);return e.data&&(this.deduped.entries[n]={result:[null,e.data]}),this.deduped.request(n,{type:"parseTile",isSymbolTile:e.isSymbolTile,zoom:e.tileZoom},(t=>{const n=st(e.request,((e,n,r,o)=>{e?t(e):n&&t(null,{vectorTile:i?void 0:new Oc.VectorTile(new bu(n)),rawData:n,cacheControl:r,expires:o})}));return()=>{n.cancel(),t()}}),t)}const Ep=d(new Float64Array(16));class Op{constructor(e,t){this._tr=e,this._worldSize=t}createInversionMatrix(){return Ep}createTileMatrix(e){let t,i,n;const r=e.canonical,o=d(new Float64Array(16)),a=this._tr.projection;if(a.isReprojectedInTileSpace){const s=Lp(r,a);t=1,i=s.x+e.wrap*s.scale,n=s.y,h(o,o,[t/s.scale,t/s.scale,this._tr.pixelsPerMeter/this._worldSize])}else t=this._worldSize/this._tr.zoomScale(r.z),i=(r.x+Math.pow(2,r.z)*e.wrap)*t,n=r.y*t;return p(o,o,[i,n,0]),h(o,o,[t/Es,t/Es,1]),o}pointCoordinate(e,t,i){const n=this._tr.horizonLineFromTop(!1),r=new o(e,Math.max(n,t));return this._tr.rayIntersectionCoordinate(this._tr.pointRayIntersection(r,i))}upVector(){return[0,0,1]}upVectorScale(){return 1}}var Dp={name:"albers",range:[4,7],center:[-96,37.5],parallels:[29.5,45.5],zAxisUnit:"meters",conic:!0,isReprojectedInTileSpace:!0,unsupportedLayers:["custom"],initializeConstants(){if(this.constants&&q(this.parallels,this.constants.parallels))return;const e=Math.sin(X(this.parallels[0])),t=(e+Math.sin(X(this.parallels[1])))/2,i=1+e*(2*t-e),n=Math.sqrt(i)/t;this.constants={n:t,c:i,r0:n,parallels:this.parallels}},project(e,t){this.initializeConstants();const i=X(e-this.center[0]),n=X(t),{n:r,c:o,r0:a}=this.constants,s=Math.sqrt(o-2*r*Math.sin(n))/r;return{x:s*Math.sin(i*r),y:s*Math.cos(i*r)-a,z:0}},unproject(e,t){this.initializeConstants();const{n:i,c:n,r0:r}=this.constants,o=r+t;let a=Math.atan2(e,Math.abs(o))*Math.sign(o);o*i<0&&(a-=Math.PI*Math.sign(e)*Math.sign(o));const s=X(this.center[0])*i;a=J(a,-Math.PI-s,Math.PI-s);const l=H(a/i)+this.center[0],c=Math.asin($((n-(e*e+o*o)*i*i)/(2*i),-1,1)),u=$(H(c),-85.051129,Ws);return new Cs(l,u)},projectTilePoint:(e,t)=>({x:e,y:t,z:0}),locationPoint:(e,t)=>e._coordinatePoint(e.locationCoordinate(t),!1),pixelsPerMeter:(e,t)=>Ys(1,e)*t,farthestPixelDistance(e){return dp(e,this.pixelsPerMeter(e.center.lat,e.worldSize))},createTileTransform:(e,t)=>new Op(e,t)};const Cp=1.340264,Pp=-.081106,Np=893e-6,Bp=.003796,Ip=Math.sqrt(3)/2;var Yp={name:"equalEarth",center:[0,0],range:[3.5,7],zAxisUnit:"meters",isReprojectedInTileSpace:!0,unsupportedLayers:["custom"],project(e,t){t=t/180*Math.PI,e=e/180*Math.PI;const i=Math.asin(Ip*Math.sin(t)),n=i*i,r=n*n*n;return{x:.5*(e*Math.cos(i)/(Ip*(Cp+3*Pp*n+r*(7*Np+9*Bp*n)))/Math.PI+.5),y:1-.5*(i*(Cp+Pp*n+r*(Np+Bp*n))/Math.PI+1),z:0}},unproject(e,t){e=(2*e-.5)*Math.PI;let i=t=(2*(1-t)-1)*Math.PI,n=i*i,r=n*n*n;for(let e,o,a,s=0;s<12&&(o=i*(Cp+Pp*n+r*(Np+Bp*n))-t,a=Cp+3*Pp*n+r*(7*Np+9*Bp*n),e=o/a,i=$(i-e,-Math.PI/3,Math.PI/3),n=i*i,r=n*n*n,!(Math.abs(e)<1e-12));++s);const o=Ip*e*(Cp+3*Pp*n+r*(7*Np+9*Bp*n))/Math.cos(i),a=Math.asin(Math.sin(i)/Ip),s=$(180*o/Math.PI,-180,180),l=$(180*a/Math.PI,-85.051129,Ws);return new Cs(s,l)},projectTilePoint:(e,t)=>({x:e,y:t,z:0}),locationPoint:(e,t)=>e._coordinatePoint(e.locationCoordinate(t),!1),pixelsPerMeter:(e,t)=>Ys(1,e)*t,farthestPixelDistance(e){return dp(e,this.pixelsPerMeter(e.center.lat,e.worldSize))},createTileTransform:(e,t)=>new Op(e,t)},Rp={name:"equirectangular",supportsWorldCopies:!0,center:[0,0],range:[3.5,7],zAxisUnit:"meters",wrap:!0,isReprojectedInTileSpace:!0,unsupportedLayers:["custom"],project:(e,t)=>({x:.5+e/360,y:.5-t/360,z:0}),unproject(e,t){const i=360*(e-.5),n=$(360*(.5-t),-85.051129,Ws);return new Cs(i,n)},projectTilePoint:(e,t)=>({x:e,y:t,z:0}),locationPoint:(e,t)=>e._coordinatePoint(e.locationCoordinate(t),!1),pixelsPerMeter:(e,t)=>Ys(1,e)*t,farthestPixelDistance(e){return dp(e,this.pixelsPerMeter(e.center.lat,e.worldSize))},createTileTransform:(e,t)=>new Op(e,t)};const jp=Math.PI/2;function qp(e){return Math.tan((jp+e)/2)}var Wp={name:"lambertConformalConic",range:[3.5,7],zAxisUnit:"meters",center:[0,30],parallels:[30,30],conic:!0,isReprojectedInTileSpace:!0,unsupportedLayers:["custom"],initializeConstants(){if(this.constants&&q(this.parallels,this.constants.parallels))return;const e=X(this.parallels[0]),t=X(this.parallels[1]),i=Math.cos(e),n=e===t?Math.sin(e):Math.log(i/Math.cos(t))/Math.log(qp(t)/qp(e)),r=i*Math.pow(qp(e),n)/n;this.constants={n,f:r,parallels:this.parallels}},project(e,t){this.initializeConstants(),t=X(t),e=X(e-this.center[0]);const i=1e-6,{n,f:r}=this.constants;r>0?t<-jp+i&&(t=-jp+i):t>jp-i&&(t=jp-i);const o=r/Math.pow(qp(t),n),a=o*Math.sin(n*e),s=r-o*Math.cos(n*e);return{x:.5*(a/Math.PI+.5),y:1-.5*(s/Math.PI+.5),z:0}},unproject(e,t){this.initializeConstants(),e=(2*e-.5)*Math.PI,t=(2*(1-t)-.5)*Math.PI;const{n:i,f:n}=this.constants,r=n-t,o=Math.sign(r),a=Math.sign(i)*Math.sqrt(e*e+r*r);let s=Math.atan2(e,Math.abs(r))*o;r*i<0&&(s-=Math.PI*Math.sign(e)*o);const l=$(H(s/i)+this.center[0],-180,180),c=$(H(2*Math.atan(Math.pow(n/a,1/i))-jp),-85.051129,Ws);return new Cs(l,c)},projectTilePoint:(e,t)=>({x:e,y:t,z:0}),locationPoint:(e,t)=>e._coordinatePoint(e.locationCoordinate(t),!1),pixelsPerMeter:(e,t)=>Ys(1,e)*t,farthestPixelDistance(e){return dp(e,this.pixelsPerMeter(e.center.lat,e.worldSize))},createTileTransform:(e,t)=>new Op(e,t)},Fp={name:"mercator",wrap:!0,requiresDraping:!1,supportsWorldCopies:!0,supportsTerrain:!0,supportsFog:!0,supportsFreeCamera:!0,zAxisUnit:"meters",center:[0,0],project:(e,t)=>({x:Bs(e),y:Is(t),z:0}),unproject(e,t){const i=Rs(e),n=js(t);return new Cs(i,n)},projectTilePoint:(e,t)=>({x:e,y:t,z:0}),locationPoint:(e,t)=>e._coordinatePoint(e.locationCoordinate(t),!1),pixelsPerMeter:(e,t)=>Ys(1,e)*t,farthestPixelDistance(e){return dp(e,this.pixelsPerMeter(e.center.lat,e.worldSize))},createTileTransform:(e,t)=>new Op(e,t)};const Xp=X(Ws);var Hp={name:"naturalEarth",center:[0,0],range:[3.5,7],isReprojectedInTileSpace:!0,zAxisUnit:"meters",unsupportedLayers:["custom"],project(e,t){const i=(t=X(t))*t,n=i*i;return{x:.5*((e=X(e))*(.8707-.131979*i+n*(n*(.003971*i-.001529*n)-.013791))/Math.PI+.5),y:1-.5*(t*(1.007226+i*(.015085+n*(.028874*i-.044475-.005916*n)))/Math.PI+1),z:0}},unproject(e,t){e=(2*e-.5)*Math.PI;let i=t=(2*(1-t)-1)*Math.PI,n=25,r=0,o=i*i;do{o=i*i;const e=o*o;r=(i*(1.007226+o*(.015085+e*(.028874*o-.044475-.005916*e)))-t)/(1.007226+o*(.045255+e*(.259866*o-.311325-.005916*11*e))),i=$(i-r,-Xp,Xp)}while(Math.abs(r)>1e-6&&--n>0);o=i*i;const a=$(H(e/(.8707+o*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979))),-180,180),s=H(i);return new Cs(a,s)},projectTilePoint:(e,t)=>({x:e,y:t,z:0}),locationPoint:(e,t)=>e._coordinatePoint(e.locationCoordinate(t),!1),pixelsPerMeter:(e,t)=>Ys(1,e)*t,farthestPixelDistance(e){return dp(e,this.pixelsPerMeter(e.center.lat,e.worldSize))},createTileTransform:(e,t)=>new Op(e,t)};const Up=X(Ws),Vp={albers:Dp,equalEarth:Yp,equirectangular:Rp,lambertConformalConic:Wp,mercator:Fp,naturalEarth:Hp,winkelTripel:{name:"winkelTripel",center:[0,0],range:[3.5,7],zAxisUnit:"meters",isReprojectedInTileSpace:!0,unsupportedLayers:["custom"],project(e,t){t=X(t),e=X(e);const i=Math.cos(t),n=2/Math.PI,r=Math.acos(i*Math.cos(e/2)),o=Math.sin(r)/r,a=.5*(e*n+2*i*Math.sin(e/2)/o)||0,s=.5*(t+Math.sin(t)/o)||0;return{x:.5*(a/Math.PI+.5),y:1-.5*(s/Math.PI+1),z:0}},unproject(e,t){let i=e=(2*e-.5)*Math.PI,n=t=(2*(1-t)-1)*Math.PI,r=25;const o=1e-6;let a=0,s=0;do{const r=Math.cos(n),o=Math.sin(n),l=2*o*r,c=o*o,u=r*r,d=Math.cos(i/2),m=Math.sin(i/2),p=2*d*m,h=m*m,f=1-u*d*d,_=f?1/f:0,g=f?Math.acos(r*d)*Math.sqrt(1/f):0,b=.5*(2*g*r*m+2*i/Math.PI)-e,y=.5*(g*o+n)-t,v=.5*_*(u*h+g*r*d*c)+1/Math.PI,M=_*(p*l/4-g*o*m),x=.125*_*(l*m-g*o*u*p),w=.5*_*(c*d+g*h*r)+.5,L=M*x-w*v;a=(y*M-b*w)/L,s=(b*x-y*v)/L,i=$(i-a,-Math.PI,Math.PI),n=$(n-s,-Up,Up)}while((Math.abs(a)>o||Math.abs(s)>o)&&--r>0);return new Cs(H(i),H(n))},projectTilePoint:(e,t)=>({x:e,y:t,z:0}),locationPoint:(e,t)=>e._coordinatePoint(e.locationCoordinate(t),!1),pixelsPerMeter:(e,t)=>Ys(1,e)*t,farthestPixelDistance(e){return dp(e,this.pixelsPerMeter(e.center.lat,e.worldSize))},createTileTransform:(e,t)=>new Op(e,t)}};e.ARRAY_TYPE=c,e.AUTH_ERR_MSG=Pe,e.Aabb=bl,e.Actor=class{constructor(e,t,i){this.target=e,this.parent=t,this.mapId=i,this.callbacks={},this.cancelCallbacks={},se(["receive"],this),this.target.addEventListener("message",this.receive,!1),this.globalScope=_e()?e:s,this.scheduler=new gm}send(e,t,i,n,r=!1,o){const a=Math.round(1e18*Math.random()).toString(36).substring(0,10);i&&(i.metadata=o,this.callbacks[a]=i);const s=xe(this.globalScope)?void 0:[];return this.target.postMessage({id:a,type:e,hasCallback:!!i,targetMapId:n,mustQueue:r,sourceMapId:this.mapId,data:$r(t,s)},s),{cancel:()=>{i&&delete this.callbacks[a],this.target.postMessage({id:a,type:"",targetMapId:n,sourceMapId:this.mapId})}}}receive(e){const t=e.data,i=t.id;if(i&&(!t.targetMapId||this.mapId===t.targetMapId))if(""===t.type){const e=this.cancelCallbacks[i];delete this.cancelCallbacks[i],e&&e.cancel()}else if(t.mustQueue||_e()){const e=this.callbacks[i];this.cancelCallbacks[i]=this.scheduler.add((()=>this.processTask(i,t)),e&&e.metadata||{type:"message"})}else this.processTask(i,t)}processTask(e,t){if(""===t.type){const i=this.callbacks[e];delete this.callbacks[e],i&&(t.error?i(Kr(t.error)):i(null,Kr(t.data)))}else{const i=xe(this.globalScope)?void 0:[],n=t.hasCallback?(t,n)=>{delete this.cancelCallbacks[e],this.target.postMessage({id:e,type:"",sourceMapId:this.mapId,error:t?$r(t):null,data:$r(n,i)},i)}:e=>{},r=Kr(t.data);if(this.parent[t.type])this.parent[t.type](t.sourceMapId,r,n);else if(this.parent.getWorkerSource){const e=t.type.split(".");this.parent.getWorkerSource(t.sourceMapId,e[0],r.source)[e[1]](r,n)}else n(new Error(`Could not find function ${t.type}`))}}remove(){this.scheduler.remove(),this.target.removeEventListener("message",this.receive,!1)}},e.CanonicalTileID=ym,e.Color=Ut,e.ColorMode=zm,e.CullFaceMode=Sm,e.DEMData=Wm,e.DataConstantProperty=ia,e.DedupedRequest=kp,e.DepthMode=wm,e.EXTENT=Es,e.Elevation=class{getAtPointOrZero(e,t=0){return this.getAtPoint(e,t)||0}getAtPoint(e,t,i=!0){null==t&&(t=null);const n=this._source();if(!n)return t;if(e.y<0||e.y>1)return t;const r=n.getSource().maxzoom,o=1<{const n=this.getAtTileOffset(e,i.x,i.y),r=t.upVector(e.canonical,i.x,i.y);return z(r,r,n*t.upVectorScale(e.canonical)),r}}getForTilePoints(e,t,i,n){const r=Vm.create(this,e,n);return!!r&&(t.forEach((e=>{e[2]=this.exaggeration()*r.getElevationAt(e[0],e[1],i)})),!0)}getMinMaxForTile(e){const t=this.findDEMTileFor(e);if(!t||!t.dem)return null;const i=t.dem.tree,n=t.tileID,r=1<this._skuTokenExpiresAt}transformRequest(e,t){return this._transformRequestFn&&this._transformRequestFn(e,t)||{url:e}}normalizeStyleURL(e,t){if(!Ne(e))return e;const i=Ye(e);return i.path=`/styles/v1${i.path}`,this._makeAPIURL(i,this._customAccessToken||t)}normalizeGlyphsURL(e,t){if(!Ne(e))return e;const i=Ye(e);return i.path=`/fonts/v1${i.path}`,this._makeAPIURL(i,this._customAccessToken||t)}normalizeSourceURL(e,t){if(!Ne(e))return e;const i=Ye(e);return i.path=`/v4/${i.authority}.json`,i.params.push("secure"),this._makeAPIURL(i,this._customAccessToken||t)}normalizeSpriteURL(e,t,i,n){const r=Ye(e);return Ne(e)?(r.path=`/styles/v1${r.path}/sprite${t}${i}`,this._makeAPIURL(r,this._customAccessToken||n)):(r.path+=`${t}${i}`,Re(r))}normalizeTileURL(e,t,i){if(this._isSkuTokenExpired()&&this._createSkuToken(),e&&!Ne(e))return e;const n=Ye(e);n.path=n.path.replace(/(\.(png|jpg)\d*)(?=$)/,`${t||i&&"raster"!==n.authority&&512===i?"@2x":""}${Te.supported?".webp":"$1"}`),"raster"===n.authority?n.path=`/${ze.RASTER_URL_PREFIX}${n.path}`:(n.path=n.path.replace(/^.+\/v4\//,"/"),n.path=`/${ze.TILE_URL_VERSION}${n.path}`);const r=this._customAccessToken||function(e){for(const t of e){const e=t.match(/^access_token=(.*)$/);if(e)return e[1]}return null}(n.params)||ze.ACCESS_TOKEN;return ze.REQUIRE_ACCESS_TOKEN&&r&&this._skuToken&&n.params.push(`sku=${this._skuToken}`),this._makeAPIURL(n,r)}canonicalizeTileURL(e,t){const i=Ye(e);if(!i.path.match(/^(\/v4\/|\/raster\/v1\/)/)||!i.path.match(/\.[\w]+$/))return e;let n="mapbox://";i.path.match(/^\/raster\/v1\//)?n+=`raster/${i.path.replace(`/${ze.RASTER_URL_PREFIX}/`,"")}`:n+=`tiles/${i.path.replace(`/${ze.TILE_URL_VERSION}/`,"")}`;let r=i.params;return t&&(r=r.filter((e=>!e.match(/^access_token=/)))),r.length&&(n+=`?${r.join("&")}`),n}canonicalizeTileset(e,t){const i=!!t&&Ne(t),n=[];for(const t of e.tiles||[])Be(t)?n.push(this.canonicalizeTileURL(t,i)):n.push(t);return n}_makeAPIURL(e,t){const i="See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes",n=Ye(ze.API_URL);if(e.protocol=n.protocol,e.authority=n.authority,"http"===e.protocol){const t=e.params.indexOf("secure");t>=0&&e.params.splice(t,1)}if("/"!==n.path&&(e.path=`${n.path}${e.path}`),!ze.REQUIRE_ACCESS_TOKEN)return Re(e);if(t=t||ze.ACCESS_TOKEN,!this._silenceAuthErrors){if(!t)throw new Error(`An API access token is required to use Mapbox GL. ${i}`);if("s"===t[0])throw new Error(`Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). ${i}`)}return e.params=e.params.filter((e=>-1===e.indexOf("access_token"))),e.params.push(`access_token=${t||""}`),Re(e)}},e.ResourceType=nt,e.SegmentVector=Ss,e.SourceCache=Xm,e.StencilMode=Am,e.StructArrayLayout1ui2=Pa,e.StructArrayLayout2f1f2i16=La,e.StructArrayLayout2i4=ha,e.StructArrayLayout2ui4=Ca,e.StructArrayLayout3f12=ga,e.StructArrayLayout3ui6=za,e.StructArrayLayout4i8=fa,e.Texture=mm,e.Tile=sp,e.Transitionable=$o,e.Uniform1f=as,e.Uniform1i=class extends os{constructor(e,t){super(e,t),this.current=0}set(e){this.current!==e&&(this.current=e,this.gl.uniform1i(this.location,e))}},e.Uniform2f=class extends os{constructor(e,t){super(e,t),this.current=[0,0]}set(e){e[0]===this.current[0]&&e[1]===this.current[1]||(this.current=e,this.gl.uniform2f(this.location,e[0],e[1]))}},e.Uniform3f=class extends os{constructor(e,t){super(e,t),this.current=[0,0,0]}set(e){e[0]===this.current[0]&&e[1]===this.current[1]&&e[2]===this.current[2]||(this.current=e,this.gl.uniform3f(this.location,e[0],e[1],e[2]))}},e.Uniform4f=ss,e.UniformColor=ls,e.UniformMatrix2f=class extends os{constructor(e,t){super(e,t),this.current=ds}set(e){for(let t=0;t<4;t++)if(e[t]!==this.current[t]){this.current=e,this.gl.uniformMatrix2fv(this.location,!1,e);break}}},e.UniformMatrix3f=class extends os{constructor(e,t){super(e,t),this.current=us}set(e){for(let t=0;t<9;t++)if(e[t]!==this.current[t]){this.current=e,this.gl.uniformMatrix3fv(this.location,!1,e);break}}},e.UniformMatrix4f=class extends os{constructor(e,t){super(e,t),this.current=cs}set(e){if(e[12]!==this.current[12]||e[0]!==this.current[0])return this.current=e,void this.gl.uniformMatrix4fv(this.location,!1,e);for(let t=1;t<16;t++)if(e[t]!==this.current[t]){this.current=e,this.gl.uniformMatrix4fv(this.location,!1,e);break}}},e.UnwrappedTileID=vm,e.ValidationError=Mt,e.VectorTileWorkerSource=class extends yt{constructor(e,t,i,n,r){super(),this.actor=e,this.layerIndex=t,this.availableImages=i,this.loadVectorData=r||Sp,this.loading={},this.loaded={},this.deduped=new kp(e.scheduler),this.isSpriteLoaded=n,this.scheduler=e.scheduler}loadTile(e,t){const i=e.uid,n=e&&e.request,r=n&&n.collectResourceTiming,o=this.loading[i]=new zp(e);o.abort=this.loadVectorData(e,((a,s)=>{const l=!this.loading[i];if(delete this.loading[i],l||a||!s)return o.status="done",l||(this.loaded[i]=o),t(a);const c=s.rawData,u={};s.expires&&(u.expires=s.expires),s.cacheControl&&(u.cacheControl=s.cacheControl),o.vectorTile=s.vectorTile||new Oc.VectorTile(new bu(c));const d=()=>{o.parse(o.vectorTile,this.layerIndex,this.availableImages,this.actor,((e,i)=>{if(e||!i)return t(e);const o={};if(r){const e=_m(n);e.length>0&&(o.resourceTiming=JSON.parse(JSON.stringify(e)))}t(null,te({rawTileData:c.slice(0)},i,u,o))}))};this.isSpriteLoaded?d():this.once("isSpriteLoaded",(()=>{this.scheduler?this.scheduler.add(d,{type:"parseTile",isSymbolTile:e.isSymbolTile,zoom:e.tileZoom}):d()})),this.loaded=this.loaded||{},this.loaded[i]=o}))}reloadTile(e,t){const i=this.loaded,n=e.uid,r=this;if(i&&i[n]){const o=i[n];o.showCollisionBoxes=e.showCollisionBoxes,o.enableTerrain=!!e.enableTerrain,o.projection=e.projection;const a=(e,i)=>{const n=o.reloadCallback;n&&(delete o.reloadCallback,o.parse(o.vectorTile,r.layerIndex,this.availableImages,r.actor,n)),t(e,i)};"parsing"===o.status?o.reloadCallback=a:"done"===o.status&&(o.vectorTile?o.parse(o.vectorTile,this.layerIndex,this.availableImages,this.actor,a):a())}}abortTile(e,t){const i=e.uid,n=this.loading[i];n&&(n.abort&&n.abort(),delete this.loading[i]),t()}removeTile(e,t){const i=this.loaded,n=e.uid;i&&i[n]&&delete i[n],t()}},e.WritingMode=Xu,e.ZoomHistory=Jr,e.add=x,e.addDynamicAttributes=Ud,e.adjoint=function(e,t){var i=t[0],n=t[1],r=t[2],o=t[3],a=t[4],s=t[5],l=t[6],c=t[7],u=t[8];return e[0]=a*u-s*c,e[1]=r*c-n*u,e[2]=n*s-r*a,e[3]=s*l-o*u,e[4]=i*u-r*l,e[5]=r*o-i*s,e[6]=o*c-a*l,e[7]=n*l-i*c,e[8]=i*a-n*o,e},e.asyncAll=Q,e.bezier=G,e.bindAll=se,e.boundsAttributes=op,e.bufferConvexPolygon=function(e,t){const i=[];for(let n=0;nQe&&(e.getActor().send("enforceCacheSizeLimit",Je),it=0)},e.calculateGlobeMatrix=xp,e.calculateGlobeMercatorMatrix=function(e){const t=e.worldSize,i=$(e.center.lat,-85.051129,Ws),n=new o(Bs(e.center.lng)*t,Is(i)*t),r=Ys(1,e.center.lat)*t,a=e.pixelsPerMeter,s=t/(r/e.pixelsPerMeter),l=d(new Float64Array(16));return p(l,l,[n.x,n.y,0]),h(l,l,[s,s,a]),l},e.clamp=$,e.clearTileCache=function(e){const t=s.caches.delete(Ze);e&&t.catch(e).then((()=>e()))},e.clipLine=hd,e.clone=function(e){var t=new c(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t},e.clone$1=de,e.collisionCircleLayout=ou,e.config=ze,e.conjugate=function(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=t[3],e},e.create=function(){var e=new c(16);return c!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e},e.create$1=u,e.createExpression=Un,e.createLayout=ma,e.createStyleLayer=function(e){return"custom"===e.type?new nm(e):new am[e.type](e)},e.cross=E,e.degToRad=X,e.div=function(e,t,i){return e[0]=t[0]/i[0],e[1]=t[1]/i[1],e[2]=t[2]/i[2],e},e.dot=S,e.ease=Z,e.easeCubicInOut=V,e.emitValidationErrors=qr,e.endsWith=le,e.enforceCacheSizeLimit=function(e){et(),$e&&$e.then((t=>{t.keys().then((i=>{for(let n=0;no&&(n+=(e[r]-o)*(e[r]-o)),t[r]{}}},e.globeBuffersForTileMesh=function(e,t,i,n){const r=e.context,o=e.transform;let a=t.globeGridBuffer,s=t.globePoleBuffer;if(!a){const e=wp.createGridVertices(i.canonical);a=t.globeGridBuffer=r.createVertexBuffer(e,up,!1)}if(!s){const e=wp.createPoleTriangleVertices(n,o.tileSize*n,0===i.canonical.y);s=t.globePoleBuffer=r.createVertexBuffer(e,up,!1)}return[a,s]},e.globeDenormalizeECEF=Mp,e.globeMatrixForTile=function(e,t){const i=Mp(_p(e)),n=((r=new Float64Array(16))[0]=(o=t)[0],r[1]=o[1],r[2]=o[2],r[3]=o[3],r[4]=o[4],r[5]=o[5],r[6]=o[6],r[7]=o[7],r[8]=o[8],r[9]=o[9],r[10]=o[10],r[11]=o[11],r[12]=o[12],r[13]=o[13],r[14]=o[14],r[15]=o[15],r);var r,o;return g(n,n,i),n},e.globePoleMatrixForTile=function(e,t,i){const n=d(new Float64Array(16)),r=Math.pow(2,e.z),o=(e.x-r/2)/r*Math.PI*2,a=i.point,s=i.worldSize/(i.tileSize*r);return p(n,n,[a.x,a.y,-i.worldSize/Math.PI/2]),h(n,n,[s,s,s]),f(n,n,X(-i._center.lat)),_(n,n,X(-i._center.lng)),_(n,n,o),t&&h(n,n,[1,-1,1]),n},e.globeTileBounds=_p,e.globeToMercatorTransition=function(e){return K(5,6,e)},e.identity=d,e.identity$1=R,e.invert=function(e,t){var i=t[0],n=t[1],r=t[2],o=t[3],a=t[4],s=t[5],l=t[6],c=t[7],u=t[8],d=t[9],m=t[10],p=t[11],h=t[12],f=t[13],_=t[14],g=t[15],b=i*s-n*a,y=i*l-r*a,v=i*c-o*a,M=n*l-r*s,x=n*c-o*s,w=r*c-o*l,L=u*f-d*h,A=u*_-m*h,z=u*g-p*h,T=d*_-m*f,k=d*g-p*f,S=m*g-p*_,E=b*S-y*k+v*T+M*z-x*A+w*L;return E?(e[0]=(s*S-l*k+c*T)*(E=1/E),e[1]=(r*k-n*S-o*T)*E,e[2]=(f*w-_*x+g*M)*E,e[3]=(m*x-d*w-p*M)*E,e[4]=(l*z-a*S-c*A)*E,e[5]=(i*S-r*z+o*A)*E,e[6]=(_*v-h*w-g*y)*E,e[7]=(u*w-m*v+p*y)*E,e[8]=(a*k-s*z+c*L)*E,e[9]=(n*z-i*k-o*L)*E,e[10]=(h*x-f*v+g*b)*E,e[11]=(d*v-u*x-p*b)*E,e[12]=(s*A-a*T-l*L)*E,e[13]=(i*T-n*A+r*L)*E,e[14]=(f*y-h*M-_*b)*E,e[15]=(u*M-d*y+m*b)*E,e):null},e.isMapAuthenticated=function(e){return Ge.has(e)},e.isMapboxURL=Ne,e.latFromMercatorY=js,e.len=B,e.length=v,e.length$1=function(e){return Math.hypot(e[0],e[1],e[2],e[3])},e.loadVectorTile=Sp,e.makeRequest=at,e.mercatorXfromLng=Bs,e.mercatorYfromLat=Is,e.mercatorZfromAltitude=Ys,e.mul=g,e.mul$1=N,e.multiply=function(e,t,i){var n=t[0],r=t[1],o=t[2],a=t[3],s=t[4],l=t[5],c=t[6],u=t[7],d=t[8],m=i[0],p=i[1],h=i[2],f=i[3],_=i[4],g=i[5],b=i[6],y=i[7],v=i[8];return e[0]=m*n+p*a+h*c,e[1]=m*r+p*s+h*u,e[2]=m*o+p*l+h*d,e[3]=f*n+_*a+g*c,e[4]=f*r+_*s+g*u,e[5]=f*o+_*l+g*d,e[6]=b*n+y*a+v*c,e[7]=b*r+y*s+v*u,e[8]=b*o+y*l+v*d,e},e.multiply$1=m,e.multiply$2=L,e.nextPowerOfTwo=oe,e.normalize=k,e.normalize$1=function(e,t){var i=t[0],n=t[1],r=t[2],o=t[3],a=i*i+n*n+r*r+o*o;return a>0&&(a=1/Math.sqrt(a)),e[0]=i*a,e[1]=n*a,e[2]=r*a,e[3]=o*a,e},e.number=Yi,e.ortho=function(e,t,i,n,r,o,a){var s=1/(t-i),l=1/(n-r),c=1/(o-a);return e[0]=-2*s,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*c,e[11]=0,e[12]=(t+i)*s,e[13]=(r+n)*l,e[14]=(a+o)*c,e[15]=1,e},e.pbf=bu,e.perspective=function(e,t,i,n,r){var o,a=1/Math.tan(t/2);return e[0]=a/i,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,null!=r&&r!==1/0?(e[10]=(r+n)*(o=1/(n-r)),e[14]=2*r*n*o):(e[10]=-1,e[14]=-2*n),e},e.pick=function(e,t){const i={};for(let n=0;nthis._layers[e.id])),i=t[0];if("none"===i.visibility)continue;const n=i.source||"";let r=this.familiesBySource[n];r||(r=this.familiesBySource[n]={});const o=i.sourceLayer||"_geojsonTileLayer";let a=r[o];a||(a=r[o]=[]),a.push(t)}}}const{ImageBitmap:r}=e.window;class o{loadTile(t,i){const{uid:n,encoding:o,rawImageData:a,padding:s,buildQuadTree:l}=t,c=r&&a instanceof r?this.getImageData(a,s):a;i(null,new e.DEMData(n,c,o,s<1,l))}getImageData(t,i){this.offscreenCanvas&&this.offscreenCanvasContext||(this.offscreenCanvas=new OffscreenCanvas(t.width,t.height),this.offscreenCanvasContext=this.offscreenCanvas.getContext("2d")),this.offscreenCanvas.width=t.width,this.offscreenCanvas.height=t.height,this.offscreenCanvasContext.drawImage(t,0,0,t.width,t.height);const n=this.offscreenCanvasContext.getImageData(-i,-i,t.width+2*i,t.height+2*i);return this.offscreenCanvasContext.clearRect(0,0,this.offscreenCanvas.width,this.offscreenCanvas.height),new e.RGBAImage({width:n.width,height:n.height},n.data)}}var a=function e(t,i){var n,r=t&&t.type;if("FeatureCollection"===r)for(n=0;n=Math.abs(s)?i-l+s:s-l+i,i=l}i+n>=0!=!!t&&e.reverse()}const c=e.vectorTile.VectorTileFeature.prototype.toGeoJSON;class u{constructor(t){this._feature=t,this.extent=e.EXTENT,this.type=t.type,this.properties=t.tags,"id"in t&&!isNaN(t.id)&&(this.id=parseInt(t.id,10))}loadGeometry(){if(1===this._feature.type){const t=[];for(const i of this._feature.geometry)t.push([new e.pointGeometry(i[0],i[1])]);return t}{const t=[];for(const i of this._feature.geometry){const n=[];for(const t of i)n.push(new e.pointGeometry(t[0],t[1]));t.push(n)}return t}}toGeoJSON(e,t,i){return c.call(this,e,t,i)}}class d{constructor(t){this.layers={_geojsonTileLayer:this},this.name="_geojsonTileLayer",this.extent=e.EXTENT,this.length=t.length,this._features=t}feature(e){return new u(this._features[e])}}var m=e.vectorTile.VectorTileFeature,p=h;function h(e,t){this.options=t||{},this.features=e,this.length=e.length}function f(e,t){this.id="number"==typeof e.id?e.id:void 0,this.type=e.type,this.rawGeometry=1===e.type?[e.geometry]:e.geometry,this.properties=e.tags,this.extent=t||4096}h.prototype.feature=function(e){return new f(this.features[e],this.options.extent)},f.prototype.loadGeometry=function(){var t=this.rawGeometry;this.geometry=[];for(var i=0;i>31}function L(e,t){for(var i=e.loadGeometry(),n=e.type,r=0,o=0,a=i.length,s=0;s>1;T(e,t,a,n,r,o%2),z(e,t,i,n,a-1,o+1),z(e,t,i,a+1,r,o+1)}function T(e,t,i,n,r,o){for(;r>n;){if(r-n>600){const a=r-n+1,s=i-n+1,l=Math.log(a),c=.5*Math.exp(2*l/3),u=.5*Math.sqrt(l*c*(a-c)/a)*(s-a/2<0?-1:1);T(e,t,i,Math.max(n,Math.floor(i-s*c/a+u)),Math.min(r,Math.floor(i+(a-s)*c/a+u)),o)}const a=t[2*i+o];let s=n,l=r;for(k(e,t,n,i),t[2*r+o]>a&&k(e,t,n,r);sa;)l--}t[2*n+o]===a?k(e,t,n,l):(l++,k(e,t,l,r)),l<=i&&(n=l+1),i<=l&&(r=l-1)}}function k(e,t,i,n){S(e,i,n),S(t,2*i,2*n),S(t,2*i+1,2*n+1)}function S(e,t,i){const n=e[t];e[t]=e[i],e[i]=n}function E(e,t,i,n){const r=e-i,o=t-n;return r*r+o*o}_.fromVectorTileJs=b,_.fromGeojsonVt=function(e,t){t=t||{};var i={};for(var n in e)i[n]=new p(e[n].features,t),i[n].name=n,i[n].version=t.version,i[n].extent=t.extent;return b({layers:i})},_.GeoJSONWrapper=g;const O=e=>e[0],D=e=>e[1];class C{constructor(e,t=O,i=D,n=64,r=Float64Array){this.nodeSize=n,this.points=e;const o=e.length<65536?Uint16Array:Uint32Array,a=this.ids=new o(e.length),s=this.coords=new r(2*e.length);for(let n=0;n=i&&c<=r&&u>=n&&u<=o&&l.push(e[a]);continue}const h=Math.floor((p+m)/2);c=t[2*h],u=t[2*h+1],c>=i&&c<=r&&u>=n&&u<=o&&l.push(e[h]);const f=(d+1)%2;(0===d?i<=c:n<=u)&&(s.push(p),s.push(h-1),s.push(f)),(0===d?r>=c:o>=u)&&(s.push(h+1),s.push(m),s.push(f))}return l}(this.ids,this.coords,e,t,i,n,this.nodeSize)}within(e,t,i){return function(e,t,i,n,r,o){const a=[0,e.length-1,0],s=[],l=r*r;for(;a.length;){const c=a.pop(),u=a.pop(),d=a.pop();if(u-d<=o){for(let r=d;r<=u;r++)E(t[2*r],t[2*r+1],i,n)<=l&&s.push(e[r]);continue}const m=Math.floor((d+u)/2),p=t[2*m],h=t[2*m+1];E(p,h,i,n)<=l&&s.push(e[m]);const f=(c+1)%2;(0===c?i-r<=p:n-r<=h)&&(a.push(d),a.push(m-1),a.push(f)),(0===c?i+r>=p:n+r>=h)&&(a.push(m+1),a.push(u),a.push(f))}return s}(this.ids,this.coords,e,t,i,this.nodeSize)}}const P={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:e=>e},N=Math.fround||(B=new Float32Array(1),e=>(B[0]=+e,B[0]));var B;class I{constructor(e){this.options=H(Object.create(P),e),this.trees=new Array(this.options.maxZoom+1)}load(e){const{log:t,minZoom:i,maxZoom:n,nodeSize:r}=this.options;t&&console.time("total time");const o=`prepare ${e.length} points`;t&&console.time(o),this.points=e;let a=[];for(let t=0;t=i;e--){const i=+Date.now();a=this._cluster(a,e),this.trees[e]=new C(a,U,V,r,Float32Array),t&&console.log("z%d: %d clusters in %dms",e,a.length,+Date.now()-i)}return t&&console.timeEnd("total time"),this}getClusters(e,t){let i=((e[0]+180)%360+360)%360-180;const n=Math.max(-90,Math.min(90,e[1]));let r=180===e[2]?180:((e[2]+180)%360+360)%360-180;const o=Math.max(-90,Math.min(90,e[3]));if(e[2]-e[0]>=360)i=-180,r=180;else if(i>r){const e=this.getClusters([i,n,180,o],t),a=this.getClusters([-180,n,r,o],t);return e.concat(a)}const a=this.trees[this._limitZoom(t)],s=a.range(W(i),F(o),W(r),F(n)),l=[];for(const e of s){const t=a.points[e];l.push(t.numPoints?j(t):this.points[t.index])}return l}getChildren(e){const t=this._getOriginId(e),i=this._getOriginZoom(e),n="No cluster with the specified id.",r=this.trees[i];if(!r)throw new Error(n);const o=r.points[t];if(!o)throw new Error(n);const a=this.options.radius/(this.options.extent*Math.pow(2,i-1)),s=r.within(o.x,o.y,a),l=[];for(const t of s){const i=r.points[t];i.parentId===e&&l.push(i.numPoints?j(i):this.points[i.index])}if(0===l.length)throw new Error(n);return l}getLeaves(e,t,i){const n=[];return this._appendLeaves(n,e,t=t||10,i=i||0,0),n}getTile(e,t,i){const n=this.trees[this._limitZoom(e)],r=Math.pow(2,e),{extent:o,radius:a}=this.options,s=a/o,l=(i-s)/r,c=(i+1+s)/r,u={features:[]};return this._addTileFeatures(n.range((t-s)/r,l,(t+1+s)/r,c),n.points,t,i,r,u),0===t&&this._addTileFeatures(n.range(1-s/r,l,1,c),n.points,r,i,r,u),t===r-1&&this._addTileFeatures(n.range(0,l,s/r,c),n.points,-1,i,r,u),u.features.length?u:null}getClusterExpansionZoom(e){let t=this._getOriginZoom(e)-1;for(;t<=this.options.maxZoom;){const i=this.getChildren(e);if(t++,1!==i.length)break;e=i[0].properties.cluster_id}return t}_appendLeaves(e,t,i,n,r){const o=this.getChildren(t);for(const t of o){const o=t.properties;if(o&&o.cluster?r+o.point_count<=n?r+=o.point_count:r=this._appendLeaves(e,o.cluster_id,i,n,r):rt&&(d+=i.numPoints||1)}if(d>u&&d>=a){let e=r.x*u,a=r.y*u,s=o&&u>1?this._map(r,!0):null;const m=(n<<5)+(t+1)+this.points.length;for(const i of c){const n=l.points[i];if(n.zoom<=t)continue;n.zoom=t;const c=n.numPoints||1;e+=n.x*c,a+=n.y*c,n.parentId=m,o&&(s||(s=this._map(r,!0)),o(s,this._map(n)))}r.parentId=m,i.push(Y(e/d,a/d,m,d,s))}else if(i.push(r),d>1)for(const e of c){const n=l.points[e];n.zoom<=t||(n.zoom=t,i.push(n))}}return i}_getOriginId(e){return e-this.points.length>>5}_getOriginZoom(e){return(e-this.points.length)%32}_map(e,t){if(e.numPoints)return t?H({},e.properties):e.properties;const i=this.points[e.index].properties,n=this.options.map(i);return t&&n===i?H({},n):n}}function Y(e,t,i,n,r){return{x:N(e),y:N(t),zoom:1/0,id:i,parentId:-1,numPoints:n,properties:r}}function R(e,t){const[i,n]=e.geometry.coordinates;return{x:N(W(i)),y:N(F(n)),zoom:1/0,index:t,parentId:-1}}function j(e){return{type:"Feature",id:e.id,properties:q(e),geometry:{type:"Point",coordinates:[(t=e.x,360*(t-.5)),X(e.y)]}};var t}function q(e){const t=e.numPoints,i=t>=1e4?`${Math.round(t/1e3)}k`:t>=1e3?Math.round(t/100)/10+"k":t;return H(H({},e.properties),{cluster:!0,cluster_id:e.id,point_count:t,point_count_abbreviated:i})}function W(e){return e/360+.5}function F(e){const t=Math.sin(e*Math.PI/180),i=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return i<0?0:i>1?1:i}function X(e){const t=(180-360*e)*Math.PI/180;return 360*Math.atan(Math.exp(t))/Math.PI-90}function H(e,t){for(const i in t)e[i]=t[i];return e}function U(e){return e.x}function V(e){return e.y}function G(e,t,i,n){for(var r,o=n,a=i-t>>1,s=i-t,l=e[t],c=e[t+1],u=e[i],d=e[i+1],m=t+3;mo)r=m,o=p;else if(p===o){var h=Math.abs(m-a);hn&&(r-t>3&&G(e,t,r,n),e[r+2]=o,i-r>3&&G(e,r,i,n))}function Z(e,t,i,n,r,o){var a=r-i,s=o-n;if(0!==a||0!==s){var l=((e-i)*a+(t-n)*s)/(a*a+s*s);l>1?(i=r,n=o):l>0&&(i+=a*l,n+=s*l)}return(a=e-i)*a+(s=t-n)*s}function $(e,t,i,n){var r={id:void 0===e?null:e,type:t,geometry:i,tags:n,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(e){var t=e.geometry,i=e.type;if("Point"===i||"MultiPoint"===i||"LineString"===i)K(e,t);else if("Polygon"===i||"MultiLineString"===i)for(var n=0;n0&&(a+=n?(r*c-l*o)/2:Math.sqrt(Math.pow(l-r,2)+Math.pow(c-o,2))),r=l,o=c}var u=t.length-3;t[2]=1,G(t,0,u,i),t[u+2]=1,t.size=Math.abs(a),t.start=0,t.end=t.size}function te(e,t,i,n){for(var r=0;r1?1:i}function re(e,t,i,n,r,o,a,s){if(n/=t,o>=(i/=t)&&a=n)return null;for(var l=[],c=0;c=i&&h=n)){var f=[];if("Point"===m||"MultiPoint"===m)oe(d,f,i,n,r);else if("LineString"===m)ae(d,f,i,n,r,!1,s.lineMetrics);else if("MultiLineString"===m)le(d,f,i,n,r,!1);else if("Polygon"===m)le(d,f,i,n,r,!0);else if("MultiPolygon"===m)for(var _=0;_=i&&a<=n&&(t.push(e[o]),t.push(e[o+1]),t.push(e[o+2]))}}function ae(e,t,i,n,r,o,a){for(var s,l,c=se(e),u=0===r?ue:de,d=e.start,m=0;mi&&(l=u(c,p,h,_,g,i),a&&(c.start=d+s*l)):b>n?y=i&&(l=u(c,p,h,_,g,i),v=!0),y>n&&b<=n&&(l=u(c,p,h,_,g,n),v=!0),!o&&v&&(a&&(c.end=d+s*l),t.push(c),c=se(e)),a&&(d+=s)}var M=e.length-3;p=e[M],h=e[M+1],f=e[M+2],(b=0===r?p:h)>=i&&b<=n&&ce(c,p,h,f),M=c.length-3,o&&M>=3&&(c[M]!==c[0]||c[M+1]!==c[1])&&ce(c,c[0],c[1],c[2]),c.length&&t.push(c)}function se(e){var t=[];return t.size=e.size,t.start=e.start,t.end=e.end,t}function le(e,t,i,n,r,o){for(var a=0;aa.maxX&&(a.maxX=u),d>a.maxY&&(a.maxY=d)}return a}function ge(e,t,i,n){var r=t.geometry,o=t.type,a=[];if("Point"===o||"MultiPoint"===o)for(var s=0;s0&&t.size<(r?a:n))i.numPoints+=t.length/3;else{for(var s=[],l=0;la)&&(i.numSimplified++,s.push(t[l]),s.push(t[l+1])),i.numPoints++;r&&function(e,t){for(var i=0,n=0,r=e.length,o=r-2;n0===t)for(n=0,r=e.length;n24)throw new Error("maxZoom should be in the 0-24 range");if(t.promoteId&&t.generateId)throw new Error("promoteId and generateId cannot be used together.");var n=function(e,t){var i=[];if("FeatureCollection"===e.type)for(var n=0;n1&&console.time("creation"),m=this.tiles[d]=_e(e,t,i,n,l),this.tileCoords.push({z:t,x:i,y:n}),c)){c>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",t,i,n,m.numFeatures,m.numPoints,m.numSimplified),console.timeEnd("creation"));var p="z"+t;this.stats[p]=(this.stats[p]||0)+1,this.total++}if(m.source=e,r){if(t===l.maxZoom||t===r)continue;var h=1<1&&console.time("clipping");var f,_,g,b,y,v,M=.5*l.buffer/l.extent,x=.5-M,w=.5+M,L=1+M;f=_=g=b=null,y=re(e,u,i-M,i+w,0,m.minX,m.maxX,l),v=re(e,u,i+x,i+L,0,m.minX,m.maxX,l),e=null,y&&(f=re(y,u,n-M,n+w,1,m.minY,m.maxY,l),_=re(y,u,n+x,n+L,1,m.minY,m.maxY,l),y=null),v&&(g=re(v,u,n-M,n+w,1,m.minY,m.maxY,l),b=re(v,u,n+x,n+L,1,m.minY,m.maxY,l),v=null),c>1&&console.timeEnd("clipping"),s.push(f||[],t+1,2*i,2*n),s.push(_||[],t+1,2*i,2*n+1),s.push(g||[],t+1,2*i+1,2*n),s.push(b||[],t+1,2*i+1,2*n+1)}}},ye.prototype.getTile=function(e,t,i){var n=this.options,r=n.extent,o=n.debug;if(e<0||e>24)return null;var a=1<1&&console.log("drilling down to z%d-%d-%d",e,t,i);for(var l,c=e,u=t,d=i;!l&&c>0;)c--,u=Math.floor(u/2),d=Math.floor(d/2),l=this.tiles[ve(c,u,d)];return l&&l.source?(o>1&&console.log("found parent tile z%d-%d-%d",c,u,d),o>1&&console.time("drilling down"),this.splitTile(l.source,c,u,d,e,t,i),o>1&&console.timeEnd("drilling down"),this.tiles[s]?he(this.tiles[s],r):null):null};class xe extends e.VectorTileWorkerSource{constructor(e,t,i,n,r){super(e,t,i,n,Me),r&&(this.loadGeoJSON=r)}loadData(t,i){const n=t&&t.request,r=n&&n.collectResourceTiming;this.loadGeoJSON(t,((o,s)=>{if(o||!s)return i(o);if("object"!=typeof s)return i(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`));{a(s,!0);try{if(t.filter){const i=e.createExpression(t.filter,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if("error"===i.result)throw new Error(i.value.map((e=>`${e.key}: ${e.message}`)).join(", "));const n=s.features.filter((e=>i.value.evaluate({zoom:0},e)));s={type:"FeatureCollection",features:n}}this._geoJSONIndex=t.cluster?new I(function({superclusterOptions:t,clusterProperties:i}){if(!i||!t)return t;const n={},r={},o={accumulated:null,zoom:0},a={properties:null},s=Object.keys(i);for(const t of s){const[o,a]=i[t],s=e.createExpression(a),l=e.createExpression("string"==typeof o?[o,["accumulated"],["get",t]]:o);n[t]=s.value,r[t]=l.value}return t.map=e=>{a.properties=e;const t={};for(const e of s)t[e]=n[e].evaluate(o,a);return t},t.reduce=(e,t)=>{a.properties=t;for(const t of s)o.accumulated=e[t],e[t]=r[t].evaluate(o,a)},t}(t)).load(s.features):function(e,t){return new ye(e,t)}(s,t.geojsonVtOptions)}catch(o){return i(o)}this.loaded={};const l={};if(r){const i=e.getPerformanceMeasurement(n);i&&(l.resourceTiming={},l.resourceTiming[t.source]=JSON.parse(JSON.stringify(i)))}i(null,l)}}))}reloadTile(e,t){const i=this.loaded;return i&&i[e.uid]?super.reloadTile(e,t):this.loadTile(e,t)}loadGeoJSON(t,i){if(t.request)e.getJSON(t.request,i);else{if("string"!=typeof t.data)return i(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`));try{return i(null,JSON.parse(t.data))}catch(e){return i(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`))}}}getClusterExpansionZoom(e,t){try{t(null,this._geoJSONIndex.getClusterExpansionZoom(e.clusterId))}catch(e){t(e)}}getClusterChildren(e,t){try{t(null,this._geoJSONIndex.getChildren(e.clusterId))}catch(e){t(e)}}getClusterLeaves(e,t){try{t(null,this._geoJSONIndex.getLeaves(e.clusterId,e.limit,e.offset))}catch(e){t(e)}}}class we{constructor(t){this.self=t,this.actor=new e.Actor(t,this),this.layerIndexes={},this.availableImages={},this.isSpriteLoaded={},this.projections={},this.defaultProjection=e.getProjection({name:"mercator"}),this.workerSourceTypes={vector:e.VectorTileWorkerSource,geojson:xe},this.workerSources={},this.demWorkerSources={},this.self.registerWorkerSource=(e,t)=>{if(this.workerSourceTypes[e])throw new Error(`Worker source with name "${e}" already registered.`);this.workerSourceTypes[e]=t},this.self.registerRTLTextPlugin=t=>{if(e.plugin.isParsed())throw new Error("RTL text plugin already registered.");e.plugin.applyArabicShaping=t.applyArabicShaping,e.plugin.processBidirectionalText=t.processBidirectionalText,e.plugin.processStyledBidirectionalText=t.processStyledBidirectionalText}}clearCaches(e,t,i){delete this.layerIndexes[e],delete this.availableImages[e],delete this.workerSources[e],delete this.demWorkerSources[e],i()}checkIfReady(e,t,i){i()}setReferrer(e,t){this.referrer=t}spriteLoaded(t,i){this.isSpriteLoaded[t]=i;for(const n in this.workerSources[t]){const r=this.workerSources[t][n];for(const t in r)r[t]instanceof e.VectorTileWorkerSource&&(r[t].isSpriteLoaded=i,r[t].fire(new e.Event("isSpriteLoaded")))}}setImages(e,t,i){this.availableImages[e]=t;for(const i in this.workerSources[e]){const n=this.workerSources[e][i];for(const e in n)n[e].availableImages=t}i()}enableTerrain(e,t,i){this.terrain=t,i()}setProjection(t,i){this.projections[t]=e.getProjection(i)}setLayers(e,t,i){this.getLayerIndex(e).replace(t),i()}updateLayers(e,t,i){this.getLayerIndex(e).update(t.layers,t.removedIds),i()}loadTile(t,i,n){const r=this.enableTerrain?e.extend({enableTerrain:this.terrain},i):i;r.projection=this.projections[t]||this.defaultProjection,this.getWorkerSource(t,i.type,i.source).loadTile(r,n)}loadDEMTile(t,i,n){const r=this.enableTerrain?e.extend({buildQuadTree:this.terrain},i):i;this.getDEMWorkerSource(t,i.source).loadTile(r,n)}reloadTile(t,i,n){const r=this.enableTerrain?e.extend({enableTerrain:this.terrain},i):i;r.projection=this.projections[t]||this.defaultProjection,this.getWorkerSource(t,i.type,i.source).reloadTile(r,n)}abortTile(e,t,i){this.getWorkerSource(e,t.type,t.source).abortTile(t,i)}removeTile(e,t,i){this.getWorkerSource(e,t.type,t.source).removeTile(t,i)}removeSource(e,t,i){if(!this.workerSources[e]||!this.workerSources[e][t.type]||!this.workerSources[e][t.type][t.source])return;const n=this.workerSources[e][t.type][t.source];delete this.workerSources[e][t.type][t.source],void 0!==n.removeSource?n.removeSource(t,i):i()}loadWorkerSource(e,t,i){try{this.self.importScripts(t.url),i()}catch(e){i(e.toString())}}syncRTLPluginState(t,i,n){try{e.plugin.setState(i);const t=e.plugin.getPluginURL();if(e.plugin.isLoaded()&&!e.plugin.isParsed()&&null!=t){this.self.importScripts(t);const i=e.plugin.isParsed();n(i?void 0:new Error(`RTL Text Plugin failed to import scripts from ${t}`),i)}}catch(e){n(e.toString())}}getAvailableImages(e){let t=this.availableImages[e];return t||(t=[]),t}getLayerIndex(e){let t=this.layerIndexes[e];return t||(t=this.layerIndexes[e]=new n),t}getWorkerSource(e,t,i){return this.workerSources[e]||(this.workerSources[e]={}),this.workerSources[e][t]||(this.workerSources[e][t]={}),this.workerSources[e][t][i]||(this.workerSources[e][t][i]=new this.workerSourceTypes[t]({send:(t,i,n,r,o,a)=>{this.actor.send(t,i,n,e,o,a)},scheduler:this.actor.scheduler},this.getLayerIndex(e),this.getAvailableImages(e),this.isSpriteLoaded[e])),this.workerSources[e][t][i]}getDEMWorkerSource(e,t){return this.demWorkerSources[e]||(this.demWorkerSources[e]={}),this.demWorkerSources[e][t]||(this.demWorkerSources[e][t]=new o),this.demWorkerSources[e][t]}enforceCacheSizeLimit(t,i){e.enforceCacheSizeLimit(i)}getWorkerPerformanceMetrics(e,t,i){i(void 0,void 0)}}return"undefined"!=typeof WorkerGlobalScope&&"undefined"!=typeof self&&self instanceof WorkerGlobalScope&&(self.worker=new we(self)),we})),r(["./shared"],(function(e){var t=i;function i(e){return!function(e){return"undefined"==typeof window||"undefined"==typeof document?"not a browser":Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray?Function.prototype&&Function.prototype.bind?Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions?"JSON"in window&&"parse"in JSON&&"stringify"in JSON?function(){if(!("Worker"in window&&"Blob"in window&&"URL"in window))return!1;var e,t,i=new Blob([""],{type:"text/javascript"}),n=URL.createObjectURL(i);try{t=new Worker(n),e=!0}catch(t){e=!1}return t&&t.terminate(),URL.revokeObjectURL(n),e}()?"Uint8ClampedArray"in window?ArrayBuffer.isView?function(){var e=document.createElement("canvas");e.width=e.height=1;var t=e.getContext("2d");if(!t)return!1;var i=t.getImageData(0,0,1,1);return i&&i.width===e.width}()?(void 0===n[t=e&&e.failIfMajorPerformanceCaveat]&&(n[t]=function(e){var t,n=function(e){var t=document.createElement("canvas"),n=Object.create(i.webGLContextAttributes);return n.failIfMajorPerformanceCaveat=e,t.getContext("webgl",n)||t.getContext("experimental-webgl",n)}(e);if(!n)return!1;try{t=n.createShader(n.VERTEX_SHADER)}catch(e){return!1}return!(!t||n.isContextLost())&&(n.shaderSource(t,"void main() {}"),n.compileShader(t),!0===n.getShaderParameter(t,n.COMPILE_STATUS))}(t)),n[t]?document.documentMode?"insufficient ECMAScript 6 support":void 0:"insufficient WebGL support"):"insufficient Canvas/getImageData support":"insufficient ArrayBuffer support":"insufficient Uint8ClampedArray support":"insufficient worker support":"insufficient JSON support":"insufficient Object support":"insufficient Function support":"insufficent Array support";var t}(e)}var n={};function r(e,t){var i=t[0],n=t[1],r=t[2],o=t[3],a=i*o-r*n;return a?(e[0]=o*(a=1/a),e[1]=-n*a,e[2]=-r*a,e[3]=i*a,e):null}function o(e,t){if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(let i=0;i{e.window.removeEventListener("click",u,!0)}),0)},a.mousePos=function(e,t){const i=e.getBoundingClientRect();return d(e,i,t)},a.touchPos=function(e,t){const i=e.getBoundingClientRect(),n=[];for(let r=0;r=0?0:t.button};class p extends e.Evented{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new e.RGBAImage({width:1,height:1}),this.dirty=!0}isLoaded(){return this.loaded}setLoaded(e){if(this.loaded!==e&&(this.loaded=e,e)){for(const{ids:e,callback:t}of this.requestors)this._notify(e,t);this.requestors=[]}}getImage(e){return this.images[e]}addImage(e,t){this._validate(e,t)&&(this.images[e]=t)}_validate(t,i){let n=!0;return this._validateStretch(i.stretchX,i.data&&i.data.width)||(this.fire(new e.ErrorEvent(new Error(`Image "${t}" has invalid "stretchX" value`))),n=!1),this._validateStretch(i.stretchY,i.data&&i.data.height)||(this.fire(new e.ErrorEvent(new Error(`Image "${t}" has invalid "stretchY" value`))),n=!1),this._validateContent(i.content,i)||(this.fire(new e.ErrorEvent(new Error(`Image "${t}" has invalid "content" value`))),n=!1),n}_validateStretch(e,t){if(!e)return!0;let i=0;for(const n of e){if(n[0]{this.ready=!0}))}broadcast(t,i,n){e.asyncAll(this.actors,((e,n)=>{e.send(t,i,n)}),n=n||function(){})}getActor(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]}remove(){this.actors.forEach((e=>{e.remove()})),this.actors=[],this.workerPool.release(this.id)}}function z(t,i,n){return i*(e.EXTENT/(t.tileSize*Math.pow(2,n-t.tileID.overscaledZ)))}A.Actor=e.Actor;class T{constructor(e,t,i){this.context=e;const n=e.gl;this.buffer=n.createBuffer(),this.dynamicDraw=Boolean(i),this.context.unbindVAO(),e.bindElementBuffer.set(this.buffer),n.bufferData(n.ELEMENT_ARRAY_BUFFER,t.arrayBuffer,this.dynamicDraw?n.DYNAMIC_DRAW:n.STATIC_DRAW),this.dynamicDraw||delete t.arrayBuffer}bind(){this.context.bindElementBuffer.set(this.buffer)}updateData(e){const t=this.context.gl;this.context.unbindVAO(),this.bind(),t.bufferSubData(t.ELEMENT_ARRAY_BUFFER,0,e.arrayBuffer)}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}const k={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class S{constructor(e,t,i,n){this.length=t.length,this.attributes=i,this.itemSize=t.bytesPerElement,this.dynamicDraw=n,this.context=e;const r=e.gl;this.buffer=r.createBuffer(),e.bindVertexBuffer.set(this.buffer),r.bufferData(r.ARRAY_BUFFER,t.arrayBuffer,this.dynamicDraw?r.DYNAMIC_DRAW:r.STATIC_DRAW),this.dynamicDraw||delete t.arrayBuffer}bind(){this.context.bindVertexBuffer.set(this.buffer)}updateData(e){const t=this.context.gl;this.bind(),t.bufferSubData(t.ARRAY_BUFFER,0,e.arrayBuffer)}enableAttributes(e,t){for(let i=0;in.pointCoordinate3D(e))),this.cameraGeometry=this.bufferedCameraGeometry(0)}static createFromScreenPoints(t,i){let n,r;if(t instanceof e.pointGeometry||"number"==typeof t[0]){const o=e.pointGeometry.convert(t);n=[e.pointGeometry.convert(t)],r=i.isPointAboveHorizon(o)}else{const o=e.pointGeometry.convert(t[0]),a=e.pointGeometry.convert(t[1]);n=[o,a],r=e.polygonizeBounds(o,a).every((e=>i.isPointAboveHorizon(e)))}return new he(n,i.getCameraPoint(),r,i)}isPointQuery(){return 1===this.screenBounds.length}bufferedScreenGeometry(t){return e.polygonizeBounds(this.screenBounds[0],1===this.screenBounds.length?this.screenBounds[0]:this.screenBounds[1],t)}bufferedCameraGeometry(t){const i=this.screenBounds[0],n=1===this.screenBounds.length?this.screenBounds[0].add(new e.pointGeometry(1,1)):this.screenBounds[1],r=e.polygonizeBounds(i,n,0,!1);return this.cameraPoint.y>n.y&&(this.cameraPoint.x>i.x&&this.cameraPoint.x