mobility-toolbox-js 3.1.0-beta.1 → 3.1.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/mbt.min.js CHANGED
@@ -582,7 +582,7 @@ uniform ${D} ${F} u_${j};
582
582
  `||T===C){s=Math.max(s,y),c.push(y),y=0,v+=b,b=0;continue}let O=e[T+1]||h.font,G=Up(O,k);r.push(G),y+=G;let J=WI(O);a.push(J),b=Math.max(b,J)}return{width:s,height:v,widths:r,heights:a,lineWidths:c}}function Ob(h,e,r,a,c,s,y,v,b,T,C){h.save(),r!==1&&(h.globalAlpha===void 0?h.globalAlpha=k=>k.globalAlpha*=r:h.globalAlpha*=r),e&&h.transform.apply(h,e),a.contextInstructions?(h.translate(b,T),h.scale(C[0],C[1]),ZI(a,h)):C[0]<0||C[1]<0?(h.translate(b,T),h.scale(C[0],C[1]),h.drawImage(a,c,s,y,v,0,0,y,v)):h.drawImage(a,c,s,y,v,b,T,y*C[0],v*C[1]),h.restore()}function ZI(h,e){let r=h.contextInstructions;for(let a=0,c=r.length;a<c;a+=2)Array.isArray(r[a+1])?e[r[a]].apply(e,r[a+1]):e[r[a]]=r[a+1]}var Sy=class h extends Gp{constructor(e){super({opacity:1,rotateWithView:e.rotateWithView!==void 0?e.rotateWithView:!1,rotation:e.rotation!==void 0?e.rotation:0,scale:e.scale!==void 0?e.scale:1,displacement:e.displacement!==void 0?e.displacement:[0,0],declutterMode:e.declutterMode}),this.hitDetectionCanvas_=null,this.fill_=e.fill!==void 0?e.fill:null,this.origin_=[0,0],this.points_=e.points,this.radius=e.radius,this.radius2_=e.radius2,this.angle_=e.angle!==void 0?e.angle:0,this.stroke_=e.stroke!==void 0?e.stroke:null,this.size_,this.renderOptions_,this.imageState_=this.fill_&&this.fill_.loading()?It.LOADING:It.LOADED,this.imageState_===It.LOADING&&this.ready().then(()=>this.imageState_=It.LOADED),this.render()}clone(){let e=this.getScale(),r=new h({fill:this.getFill()?this.getFill().clone():void 0,points:this.getPoints(),radius:this.getRadius(),radius2:this.getRadius2(),angle:this.getAngle(),stroke:this.getStroke()?this.getStroke().clone():void 0,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(e)?e.slice():e,displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()});return r.setOpacity(this.getOpacity()),r}getAnchor(){let e=this.size_,r=this.getDisplacement(),a=this.getScaleArray();return[e[0]/2-r[0]/a[0],e[1]/2+r[1]/a[1]]}getAngle(){return this.angle_}getFill(){return this.fill_}setFill(e){this.fill_=e,this.render()}getHitDetectionImage(){return this.hitDetectionCanvas_||(this.hitDetectionCanvas_=this.createHitDetectionCanvas_(this.renderOptions_)),this.hitDetectionCanvas_}getImage(e){let r=this.fill_?.getKey(),a=`${e},${this.angle_},${this.radius},${this.radius2_},${this.points_},${r}`+Object.values(this.renderOptions_).join(","),c=Xn.get(a,null,null)?.getImage(1);if(!c){let s=this.renderOptions_,y=Math.ceil(s.size*e),v=Ri(y,y);this.draw_(s,v,e),c=v.canvas,Xn.set(a,null,null,new kb(c,void 0,null,It.LOADED,null))}return c}getPixelRatio(e){return e}getImageSize(){return this.size_}getImageState(){return this.imageState_}getOrigin(){return this.origin_}getPoints(){return this.points_}getRadius(){return this.radius}getRadius2(){return this.radius2_}getSize(){return this.size_}getStroke(){return this.stroke_}setStroke(e){this.stroke_=e,this.render()}listenImageChange(e){}load(){}unlistenImageChange(e){}calculateLineJoinSize_(e,r,a){if(r===0||this.points_===1/0||e!=="bevel"&&e!=="miter")return r;let c=this.radius,s=this.radius2_===void 0?c:this.radius2_;if(c<s){let Ee=c;c=s,s=Ee}let y=this.radius2_===void 0?this.points_:this.points_*2,v=2*Math.PI/y,b=s*Math.sin(v),T=Math.sqrt(s*s-b*b),C=c-T,k=Math.sqrt(b*b+C*C),O=k/b;if(e==="miter"&&O<=a)return O*r;let G=r/2/O,J=r/2*(C/k),he=Math.sqrt((c+G)*(c+G)+J*J)-c;if(this.radius2_===void 0||e==="bevel")return he*2;let fe=c*Math.sin(v),ye=Math.sqrt(c*c-fe*fe),we=s-ye,Pe=Math.sqrt(fe*fe+we*we)/fe;if(Pe<=a){let Ee=Pe*r/2-s-c;return 2*Math.max(he,Ee)}return he*2}createRenderOptions(){let e=$s,r=Ws,a=0,c=null,s=0,y,v=0;this.stroke_&&(y=Sn(this.stroke_.getColor()??bo),v=this.stroke_.getWidth()??So,c=this.stroke_.getLineDash(),s=this.stroke_.getLineDashOffset()??0,r=this.stroke_.getLineJoin()??Ws,e=this.stroke_.getLineCap()??$s,a=this.stroke_.getMiterLimit()??vo);let b=this.calculateLineJoinSize_(r,v,a),T=Math.max(this.radius,this.radius2_||0),C=Math.ceil(2*T+b);return{strokeStyle:y,strokeWidth:v,size:C,lineCap:e,lineDash:c,lineDashOffset:s,lineJoin:r,miterLimit:a}}render(){this.renderOptions_=this.createRenderOptions();let e=this.renderOptions_.size;this.hitDetectionCanvas_=null,this.size_=[e,e]}draw_(e,r,a){if(r.scale(a,a),r.translate(e.size/2,e.size/2),this.createPath_(r),this.fill_){let c=this.fill_.getColor();c===null&&(c=Hi),r.fillStyle=Sn(c),r.fill()}e.strokeStyle&&(r.strokeStyle=e.strokeStyle,r.lineWidth=e.strokeWidth,e.lineDash&&(r.setLineDash(e.lineDash),r.lineDashOffset=e.lineDashOffset),r.lineCap=e.lineCap,r.lineJoin=e.lineJoin,r.miterLimit=e.miterLimit,r.stroke())}createHitDetectionCanvas_(e){let r;if(this.fill_){let a=this.fill_.getColor(),c=0;typeof a=="string"&&(a=Ms(a)),a===null?c=1:Array.isArray(a)&&(c=a.length===4?a[3]:1),c===0&&(r=Ri(e.size,e.size),this.drawHitDetectionCanvas_(e,r))}return r?r.canvas:this.getImage(1)}createPath_(e){let r=this.points_,a=this.radius;if(r===1/0)e.arc(0,0,a,0,2*Math.PI);else{let c=this.radius2_===void 0?a:this.radius2_;this.radius2_!==void 0&&(r*=2);let s=this.angle_-Math.PI/2,y=2*Math.PI/r;for(let v=0;v<r;v++){let b=s+v*y,T=v%2===0?a:c;e.lineTo(T*Math.cos(b),T*Math.sin(b))}e.closePath()}}drawHitDetectionCanvas_(e,r){r.translate(e.size/2,e.size/2),this.createPath_(r),r.fillStyle=Hi,r.fill(),e.strokeStyle&&(r.strokeStyle=e.strokeStyle,r.lineWidth=e.strokeWidth,e.lineDash&&(r.setLineDash(e.lineDash),r.lineDashOffset=e.lineDashOffset),r.lineJoin=e.lineJoin,r.miterLimit=e.miterLimit,r.stroke())}ready(){return this.fill_?this.fill_.ready():Promise.resolve()}},$p=Sy;var Iy=class h extends $p{constructor(e){e=e||{radius:5},super({points:1/0,fill:e.fill,radius:e.radius,stroke:e.stroke,scale:e.scale!==void 0?e.scale:1,rotation:e.rotation!==void 0?e.rotation:0,rotateWithView:e.rotateWithView!==void 0?e.rotateWithView:!1,displacement:e.displacement!==void 0?e.displacement:[0,0],declutterMode:e.declutterMode})}clone(){let e=this.getScale(),r=new h({fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,radius:this.getRadius(),scale:Array.isArray(e)?e.slice():e,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()});return r.setOpacity(this.getOpacity()),r}setRadius(e){this.radius=e,this.render()}},En=Iy;var va=class h{constructor(e){e=e||{},this.geometry_=null,this.geometryFunction_=Bb,e.geometry!==void 0&&this.setGeometry(e.geometry),this.fill_=e.fill!==void 0?e.fill:null,this.image_=e.image!==void 0?e.image:null,this.renderer_=e.renderer!==void 0?e.renderer:null,this.hitDetectionRenderer_=e.hitDetectionRenderer!==void 0?e.hitDetectionRenderer:null,this.stroke_=e.stroke!==void 0?e.stroke:null,this.text_=e.text!==void 0?e.text:null,this.zIndex_=e.zIndex}clone(){let e=this.getGeometry();return e&&typeof e=="object"&&(e=e.clone()),new h({geometry:e??void 0,fill:this.getFill()?this.getFill().clone():void 0,image:this.getImage()?this.getImage().clone():void 0,renderer:this.getRenderer()??void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,text:this.getText()?this.getText().clone():void 0,zIndex:this.getZIndex()})}getRenderer(){return this.renderer_}setRenderer(e){this.renderer_=e}setHitDetectionRenderer(e){this.hitDetectionRenderer_=e}getHitDetectionRenderer(){return this.hitDetectionRenderer_}getGeometry(){return this.geometry_}getGeometryFunction(){return this.geometryFunction_}getFill(){return this.fill_}setFill(e){this.fill_=e}getImage(){return this.image_}setImage(e){this.image_=e}getStroke(){return this.stroke_}setStroke(e){this.stroke_=e}getText(){return this.text_}setText(e){this.text_=e}getZIndex(){return this.zIndex_}setGeometry(e){typeof e=="function"?this.geometryFunction_=e:typeof e=="string"?this.geometryFunction_=function(r){return r.get(e)}:e?e!==void 0&&(this.geometryFunction_=function(){return e}):this.geometryFunction_=Bb,this.geometry_=e}setZIndex(e){this.zIndex_=e}};function Nb(h){let e;if(typeof h=="function")e=h;else{let r;Array.isArray(h)?r=h:(ui(typeof h.getZIndex=="function","Expected an `Style` or an array of `Style`"),r=[h]),e=function(){return r}}return e}var Cy=null;function Ey(h,e){if(!Cy){let r=new Er({color:"rgba(255,255,255,0.4)"}),a=new Xi({color:"#3399CC",width:1.25});Cy=[new va({image:new En({fill:r,stroke:a,radius:5}),fill:r,stroke:a})]}return Cy}function Vb(){let h={},e=[255,255,255,1],r=[0,153,255,1],a=3;return h.Polygon=[new va({fill:new Er({color:[255,255,255,.5]})})],h.MultiPolygon=h.Polygon,h.LineString=[new va({stroke:new Xi({color:e,width:a+2})}),new va({stroke:new Xi({color:r,width:a})})],h.MultiLineString=h.LineString,h.Circle=h.Polygon.concat(h.LineString),h.Point=[new va({image:new En({radius:a*2,fill:new Er({color:r}),stroke:new Xi({color:e,width:a/2})}),zIndex:1/0})],h.MultiPoint=h.Point,h.GeometryCollection=h.Polygon.concat(h.LineString,h.Point),h}function Bb(h){return h.getGeometry()}var Tr=va;var XI="#333",Ty=class h{constructor(e){e=e||{},this.font_=e.font,this.rotation_=e.rotation,this.rotateWithView_=e.rotateWithView,this.keepUpright_=e.keepUpright,this.scale_=e.scale,this.scaleArray_=qs(e.scale!==void 0?e.scale:1),this.text_=e.text,this.textAlign_=e.textAlign,this.justify_=e.justify,this.repeat_=e.repeat,this.textBaseline_=e.textBaseline,this.fill_=e.fill!==void 0?e.fill:new Er({color:XI}),this.maxAngle_=e.maxAngle!==void 0?e.maxAngle:Math.PI/4,this.placement_=e.placement!==void 0?e.placement:"point",this.overflow_=!!e.overflow,this.stroke_=e.stroke!==void 0?e.stroke:null,this.offsetX_=e.offsetX!==void 0?e.offsetX:0,this.offsetY_=e.offsetY!==void 0?e.offsetY:0,this.backgroundFill_=e.backgroundFill?e.backgroundFill:null,this.backgroundStroke_=e.backgroundStroke?e.backgroundStroke:null,this.padding_=e.padding===void 0?null:e.padding,this.declutterMode_=e.declutterMode}clone(){let e=this.getScale();return new h({font:this.getFont(),placement:this.getPlacement(),repeat:this.getRepeat(),maxAngle:this.getMaxAngle(),overflow:this.getOverflow(),rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),keepUpright:this.getKeepUpright(),scale:Array.isArray(e)?e.slice():e,text:this.getText(),textAlign:this.getTextAlign(),justify:this.getJustify(),textBaseline:this.getTextBaseline(),fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,offsetX:this.getOffsetX(),offsetY:this.getOffsetY(),backgroundFill:this.getBackgroundFill()?this.getBackgroundFill().clone():void 0,backgroundStroke:this.getBackgroundStroke()?this.getBackgroundStroke().clone():void 0,padding:this.getPadding()||void 0,declutterMode:this.getDeclutterMode()})}getOverflow(){return this.overflow_}getFont(){return this.font_}getMaxAngle(){return this.maxAngle_}getPlacement(){return this.placement_}getRepeat(){return this.repeat_}getOffsetX(){return this.offsetX_}getOffsetY(){return this.offsetY_}getFill(){return this.fill_}getRotateWithView(){return this.rotateWithView_}getKeepUpright(){return this.keepUpright_}getRotation(){return this.rotation_}getScale(){return this.scale_}getScaleArray(){return this.scaleArray_}getStroke(){return this.stroke_}getText(){return this.text_}getTextAlign(){return this.textAlign_}getJustify(){return this.justify_}getTextBaseline(){return this.textBaseline_}getBackgroundFill(){return this.backgroundFill_}getBackgroundStroke(){return this.backgroundStroke_}getPadding(){return this.padding_}getDeclutterMode(){return this.declutterMode_}setOverflow(e){this.overflow_=e}setFont(e){this.font_=e}setMaxAngle(e){this.maxAngle_=e}setOffsetX(e){this.offsetX_=e}setOffsetY(e){this.offsetY_=e}setPlacement(e){this.placement_=e}setRepeat(e){this.repeat_=e}setRotateWithView(e){this.rotateWithView_=e}setKeepUpright(e){this.keepUpright_=e}setFill(e){this.fill_=e}setRotation(e){this.rotation_=e}setScale(e){this.scale_=e,this.scaleArray_=qs(e!==void 0?e:1)}setStroke(e){this.stroke_=e}setText(e){this.text_=e}setTextAlign(e){this.textAlign_=e}setJustify(e){this.justify_=e}setTextBaseline(e){this.textBaseline_=e}setBackgroundFill(e){this.backgroundFill_=e}setBackgroundStroke(e){this.backgroundStroke_=e}setPadding(e){this.padding_=e}},jb=Ty;function Wp(h,e,r=0,a=h.length-1,c=HI){for(;a>r;){if(a-r>600){let b=a-r+1,T=e-r+1,C=Math.log(b),k=.5*Math.exp(2*C/3),O=.5*Math.sqrt(C*k*(b-k)/b)*(T-b/2<0?-1:1),G=Math.max(r,Math.floor(e-T*k/b+O)),J=Math.min(a,Math.floor(e+(b-T)*k/b+O));Wp(h,e,G,J,c)}let s=h[e],y=r,v=a;for(Ru(h,r,e),c(h[a],s)>0&&Ru(h,r,a);y<v;){for(Ru(h,y,v),y++,v--;c(h[y],s)<0;)y++;for(;c(h[v],s)>0;)v--}c(h[r],s)===0?Ru(h,r,v):(v++,Ru(h,v,a)),v<=e&&(r=v+1),e<=v&&(a=v-1)}}function Ru(h,e,r){let a=h[e];h[e]=h[r],h[r]=a}function HI(h,e){return h<e?-1:h>e?1:0}var fl=class{constructor(e=9){this._maxEntries=Math.max(4,e),this._minEntries=Math.max(2,Math.ceil(this._maxEntries*.4)),this.clear()}all(){return this._all(this.data,[])}search(e){let r=this.data,a=[];if(!Xp(e,r))return a;let c=this.toBBox,s=[];for(;r;){for(let y=0;y<r.children.length;y++){let v=r.children[y],b=r.leaf?c(v):v;Xp(e,b)&&(r.leaf?a.push(v):Py(e,b)?this._all(v,a):s.push(v))}r=s.pop()}return a}collides(e){let r=this.data;if(!Xp(e,r))return!1;let a=[];for(;r;){for(let c=0;c<r.children.length;c++){let s=r.children[c],y=r.leaf?this.toBBox(s):s;if(Xp(e,y)){if(r.leaf||Py(e,y))return!0;a.push(s)}}r=a.pop()}return!1}load(e){if(!(e&&e.length))return this;if(e.length<this._minEntries){for(let a=0;a<e.length;a++)this.insert(e[a]);return this}let r=this._build(e.slice(),0,e.length-1,0);if(!this.data.children.length)this.data=r;else if(this.data.height===r.height)this._splitRoot(this.data,r);else{if(this.data.height<r.height){let a=this.data;this.data=r,r=a}this._insert(r,this.data.height-r.height-1,!0)}return this}insert(e){return e&&this._insert(e,this.data.height-1),this}clear(){return this.data=zc([]),this}remove(e,r){if(!e)return this;let a=this.data,c=this.toBBox(e),s=[],y=[],v,b,T;for(;a||s.length;){if(a||(a=s.pop(),b=s[s.length-1],v=y.pop(),T=!0),a.leaf){let C=KI(e,a.children,r);if(C!==-1)return a.children.splice(C,1),s.push(a),this._condense(s),this}!T&&!a.leaf&&Py(a,c)?(s.push(a),y.push(v),v=0,b=a,a=a.children[0]):b?(v++,a=b.children[v],T=!1):a=null}return this}toBBox(e){return e}compareMinX(e,r){return e.minX-r.minX}compareMinY(e,r){return e.minY-r.minY}toJSON(){return this.data}fromJSON(e){return this.data=e,this}_all(e,r){let a=[];for(;e;)e.leaf?r.push(...e.children):a.push(...e.children),e=a.pop();return r}_build(e,r,a,c){let s=a-r+1,y=this._maxEntries,v;if(s<=y)return v=zc(e.slice(r,a+1)),Fc(v,this.toBBox),v;c||(c=Math.ceil(Math.log(s)/Math.log(y)),y=Math.ceil(s/Math.pow(y,c-1))),v=zc([]),v.leaf=!1,v.height=c;let b=Math.ceil(s/y),T=b*Math.ceil(Math.sqrt(y));Gb(e,r,a,T,this.compareMinX);for(let C=r;C<=a;C+=T){let k=Math.min(C+T-1,a);Gb(e,C,k,b,this.compareMinY);for(let O=C;O<=k;O+=b){let G=Math.min(O+b-1,k);v.children.push(this._build(e,O,G,c-1))}}return Fc(v,this.toBBox),v}_chooseSubtree(e,r,a,c){for(;c.push(r),!(r.leaf||c.length-1===a);){let s=1/0,y=1/0,v;for(let b=0;b<r.children.length;b++){let T=r.children[b],C=My(T),k=QI(e,T)-C;k<y?(y=k,s=C<s?C:s,v=T):k===y&&C<s&&(s=C,v=T)}r=v||r.children[0]}return r}_insert(e,r,a){let c=a?e:this.toBBox(e),s=[],y=this._chooseSubtree(c,this.data,r,s);for(y.children.push(e),Lu(y,c);r>=0&&s[r].children.length>this._maxEntries;)this._split(s,r),r--;this._adjustParentBBoxes(c,s,r)}_split(e,r){let a=e[r],c=a.children.length,s=this._minEntries;this._chooseSplitAxis(a,s,c);let y=this._chooseSplitIndex(a,s,c),v=zc(a.children.splice(y,a.children.length-y));v.height=a.height,v.leaf=a.leaf,Fc(a,this.toBBox),Fc(v,this.toBBox),r?e[r-1].children.push(v):this._splitRoot(a,v)}_splitRoot(e,r){this.data=zc([e,r]),this.data.height=e.height+1,this.data.leaf=!1,Fc(this.data,this.toBBox)}_chooseSplitIndex(e,r,a){let c,s=1/0,y=1/0;for(let v=r;v<=a-r;v++){let b=ku(e,0,v,this.toBBox),T=ku(e,v,a,this.toBBox),C=eC(b,T),k=My(b)+My(T);C<s?(s=C,c=v,y=k<y?k:y):C===s&&k<y&&(y=k,c=v)}return c||a-r}_chooseSplitAxis(e,r,a){let c=e.leaf?this.compareMinX:YI,s=e.leaf?this.compareMinY:JI,y=this._allDistMargin(e,r,a,c),v=this._allDistMargin(e,r,a,s);y<v&&e.children.sort(c)}_allDistMargin(e,r,a,c){e.children.sort(c);let s=this.toBBox,y=ku(e,0,r,s),v=ku(e,a-r,a,s),b=Zp(y)+Zp(v);for(let T=r;T<a-r;T++){let C=e.children[T];Lu(y,e.leaf?s(C):C),b+=Zp(y)}for(let T=a-r-1;T>=r;T--){let C=e.children[T];Lu(v,e.leaf?s(C):C),b+=Zp(v)}return b}_adjustParentBBoxes(e,r,a){for(let c=a;c>=0;c--)Lu(r[c],e)}_condense(e){for(let r=e.length-1,a;r>=0;r--)e[r].children.length===0?r>0?(a=e[r-1].children,a.splice(a.indexOf(e[r]),1)):this.clear():Fc(e[r],this.toBBox)}};function KI(h,e,r){if(!r)return e.indexOf(h);for(let a=0;a<e.length;a++)if(r(h,e[a]))return a;return-1}function Fc(h,e){ku(h,0,h.children.length,e,h)}function ku(h,e,r,a,c){c||(c=zc(null)),c.minX=1/0,c.minY=1/0,c.maxX=-1/0,c.maxY=-1/0;for(let s=e;s<r;s++){let y=h.children[s];Lu(c,h.leaf?a(y):y)}return c}function Lu(h,e){return h.minX=Math.min(h.minX,e.minX),h.minY=Math.min(h.minY,e.minY),h.maxX=Math.max(h.maxX,e.maxX),h.maxY=Math.max(h.maxY,e.maxY),h}function YI(h,e){return h.minX-e.minX}function JI(h,e){return h.minY-e.minY}function My(h){return(h.maxX-h.minX)*(h.maxY-h.minY)}function Zp(h){return h.maxX-h.minX+(h.maxY-h.minY)}function QI(h,e){return(Math.max(e.maxX,h.maxX)-Math.min(e.minX,h.minX))*(Math.max(e.maxY,h.maxY)-Math.min(e.minY,h.minY))}function eC(h,e){let r=Math.max(h.minX,e.minX),a=Math.max(h.minY,e.minY),c=Math.min(h.maxX,e.maxX),s=Math.min(h.maxY,e.maxY);return Math.max(0,c-r)*Math.max(0,s-a)}function Py(h,e){return h.minX<=e.minX&&h.minY<=e.minY&&e.maxX<=h.maxX&&e.maxY<=h.maxY}function Xp(h,e){return e.minX<=h.maxX&&e.minY<=h.maxY&&e.maxX>=h.minX&&e.maxY>=h.minY}function zc(h){return{children:h,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function Gb(h,e,r,a,c){let s=[e,r];for(;s.length;){if(r=s.pop(),e=s.pop(),r-e<=a)continue;let y=e+Math.ceil((r-e)/a/2)*a;Wp(h,y,e,r,c),s.push(e,y,y,r)}}function Ub(h,e,r,a){return r!==void 0&&a!==void 0?[r/h,a/e]:r!==void 0?r/h:a!==void 0?a/e:1}var Ay=class h extends Gp{constructor(e){e=e||{};let r=e.opacity!==void 0?e.opacity:1,a=e.rotation!==void 0?e.rotation:0,c=e.scale!==void 0?e.scale:1,s=e.rotateWithView!==void 0?e.rotateWithView:!1;super({opacity:r,rotation:a,scale:c,displacement:e.displacement!==void 0?e.displacement:[0,0],rotateWithView:s,declutterMode:e.declutterMode}),this.anchor_=e.anchor!==void 0?e.anchor:[.5,.5],this.normalizedAnchor_=null,this.anchorOrigin_=e.anchorOrigin!==void 0?e.anchorOrigin:"top-left",this.anchorXUnits_=e.anchorXUnits!==void 0?e.anchorXUnits:"fraction",this.anchorYUnits_=e.anchorYUnits!==void 0?e.anchorYUnits:"fraction",this.crossOrigin_=e.crossOrigin!==void 0?e.crossOrigin:null;let y=e.img!==void 0?e.img:null,v=e.src;ui(!(v!==void 0&&y),"`image` and `src` cannot be provided at the same time"),(v===void 0||v.length===0)&&y&&(v=y.src||Vt(y)),ui(v!==void 0&&v.length>0,"A defined and non-empty `src` or `image` must be provided"),ui(!((e.width!==void 0||e.height!==void 0)&&e.scale!==void 0),"`width` or `height` cannot be provided together with `scale`");let b;if(e.src!==void 0?b=It.IDLE:y!==void 0&&("complete"in y?y.complete?b=y.src?It.LOADED:It.IDLE:b=It.LOADING:b=It.LOADED),this.color_=e.color!==void 0?Ms(e.color):null,this.iconImage_=Lc(y,v,this.crossOrigin_,b,this.color_),this.offset_=e.offset!==void 0?e.offset:[0,0],this.offsetOrigin_=e.offsetOrigin!==void 0?e.offsetOrigin:"top-left",this.origin_=null,this.size_=e.size!==void 0?e.size:null,this.initialOptions_,e.width!==void 0||e.height!==void 0){let T,C;if(e.size)[T,C]=e.size;else{let k=this.getImage(1);if(k.width&&k.height)T=k.width,C=k.height;else if(k instanceof HTMLImageElement){this.initialOptions_=e;let O=()=>{if(this.unlistenImageChange(O),!this.initialOptions_)return;let G=this.iconImage_.getSize();this.setScale(Ub(G[0],G[1],e.width,e.height))};this.listenImageChange(O);return}}T!==void 0&&this.setScale(Ub(T,C,e.width,e.height))}}clone(){let e,r,a;return this.initialOptions_?(r=this.initialOptions_.width,a=this.initialOptions_.height):(e=this.getScale(),e=Array.isArray(e)?e.slice():e),new h({anchor:this.anchor_.slice(),anchorOrigin:this.anchorOrigin_,anchorXUnits:this.anchorXUnits_,anchorYUnits:this.anchorYUnits_,color:this.color_&&this.color_.slice?this.color_.slice():this.color_||void 0,crossOrigin:this.crossOrigin_,offset:this.offset_.slice(),offsetOrigin:this.offsetOrigin_,opacity:this.getOpacity(),rotateWithView:this.getRotateWithView(),rotation:this.getRotation(),scale:e,width:r,height:a,size:this.size_!==null?this.size_.slice():void 0,src:this.getSrc(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()})}getAnchor(){let e=this.normalizedAnchor_;if(!e){e=this.anchor_;let c=this.getSize();if(this.anchorXUnits_=="fraction"||this.anchorYUnits_=="fraction"){if(!c)return null;e=this.anchor_.slice(),this.anchorXUnits_=="fraction"&&(e[0]*=c[0]),this.anchorYUnits_=="fraction"&&(e[1]*=c[1])}if(this.anchorOrigin_!="top-left"){if(!c)return null;e===this.anchor_&&(e=this.anchor_.slice()),(this.anchorOrigin_=="top-right"||this.anchorOrigin_=="bottom-right")&&(e[0]=-e[0]+c[0]),(this.anchorOrigin_=="bottom-left"||this.anchorOrigin_=="bottom-right")&&(e[1]=-e[1]+c[1])}this.normalizedAnchor_=e}let r=this.getDisplacement(),a=this.getScaleArray();return[e[0]-r[0]/a[0],e[1]+r[1]/a[1]]}setAnchor(e){this.anchor_=e,this.normalizedAnchor_=null}getColor(){return this.color_}getImage(e){return this.iconImage_.getImage(e)}getPixelRatio(e){return this.iconImage_.getPixelRatio(e)}getImageSize(){return this.iconImage_.getSize()}getImageState(){return this.iconImage_.getImageState()}getHitDetectionImage(){return this.iconImage_.getHitDetectionImage()}getOrigin(){if(this.origin_)return this.origin_;let e=this.offset_;if(this.offsetOrigin_!="top-left"){let r=this.getSize(),a=this.iconImage_.getSize();if(!r||!a)return null;e=e.slice(),(this.offsetOrigin_=="top-right"||this.offsetOrigin_=="bottom-right")&&(e[0]=a[0]-r[0]-e[0]),(this.offsetOrigin_=="bottom-left"||this.offsetOrigin_=="bottom-right")&&(e[1]=a[1]-r[1]-e[1])}return this.origin_=e,this.origin_}getSrc(){return this.iconImage_.getSrc()}getSize(){return this.size_?this.size_:this.iconImage_.getSize()}getWidth(){let e=this.getScaleArray();if(this.size_)return this.size_[0]*e[0];if(this.iconImage_.getImageState()==It.LOADED)return this.iconImage_.getSize()[0]*e[0]}getHeight(){let e=this.getScaleArray();if(this.size_)return this.size_[1]*e[1];if(this.iconImage_.getImageState()==It.LOADED)return this.iconImage_.getSize()[1]*e[1]}setScale(e){delete this.initialOptions_,super.setScale(e)}listenImageChange(e){this.iconImage_.addEventListener(pi.CHANGE,e)}load(){this.iconImage_.load()}unlistenImageChange(e){this.iconImage_.removeEventListener(pi.CHANGE,e)}ready(){return this.iconImage_.ready()}},Du=Ay;var ml=0;var Gr=1<<ml++,Ut=1<<ml++,tn=1<<ml++,Hn=1<<ml++,wa=1<<ml++,Fu=1<<ml++,Hp=Math.pow(2,ml)-1,ky={[Gr]:"boolean",[Ut]:"number",[tn]:"string",[Hn]:"color",[wa]:"number[]",[Fu]:"size"},tC=Object.keys(ky).map(Number).sort(xs);function iC(h){return h in ky}function zu(h){let e=[];for(let r of tC)Ou(h,r)&&e.push(ky[r]);return e.length===0?"untyped":e.length<3?e.join(" or "):e.slice(0,-1).join(", ")+", or "+e[e.length-1]}function Ou(h,e){return(h&e)===e}function ba(h,e){return h===e}var ki=class{constructor(e,r){if(!iC(e))throw new Error(`literal expressions must have a specific type, got ${zu(e)}`);this.type=e,this.value=r}},Ry=class{constructor(e,r,...a){this.type=e,this.operator=r,this.args=a}};function Ly(){return{variables:new Set,properties:new Set,featureId:!1,geometryType:!1}}function cr(h,e,r){switch(typeof h){case"boolean":{if(ba(e,tn))return new ki(tn,h?"true":"false");if(!Ou(e,Gr))throw new Error(`got a boolean, but expected ${zu(e)}`);return new ki(Gr,h)}case"number":{if(ba(e,Fu))return new ki(Fu,qs(h));if(ba(e,Gr))return new ki(Gr,!!h);if(ba(e,tn))return new ki(tn,h.toString());if(!Ou(e,Ut))throw new Error(`got a number, but expected ${zu(e)}`);return new ki(Ut,h)}case"string":{if(ba(e,Hn))return new ki(Hn,Mu(h));if(ba(e,Gr))return new ki(Gr,!!h);if(!Ou(e,tn))throw new Error(`got a string, but expected ${zu(e)}`);return new ki(tn,h)}default:}if(!Array.isArray(h))throw new Error("expression must be an array or a primitive value");if(h.length===0)throw new Error("empty expression");if(typeof h[0]=="string")return pC(h,e,r);for(let a of h)if(typeof a!="number")throw new Error("expected an array of numbers");if(ba(e,Fu)){if(h.length!==2)throw new Error(`expected an array of two values for a size, got ${h.length}`);return new ki(Fu,h)}if(ba(e,Hn)){if(h.length===3)return new ki(Hn,[...h,1]);if(h.length===4)return new ki(Hn,h);throw new Error(`expected an array of 3 or 4 values for a color, got ${h.length}`)}if(!Ou(e,wa))throw new Error(`got an array of numbers, but expected ${zu(e)}`);return new ki(wa,h)}var Me={Get:"get",Var:"var",Concat:"concat",GeometryType:"geometry-type",LineMetric:"line-metric",Any:"any",All:"all",Not:"!",Resolution:"resolution",Zoom:"zoom",Time:"time",Equal:"==",NotEqual:"!=",GreaterThan:">",GreaterThanOrEqualTo:">=",LessThan:"<",LessThanOrEqualTo:"<=",Multiply:"*",Divide:"/",Add:"+",Subtract:"-",Clamp:"clamp",Mod:"%",Pow:"^",Abs:"abs",Floor:"floor",Ceil:"ceil",Round:"round",Sin:"sin",Cos:"cos",Atan:"atan",Sqrt:"sqrt",Match:"match",Between:"between",Interpolate:"interpolate",Coalesce:"coalesce",Case:"case",In:"in",Number:"number",String:"string",Array:"array",Color:"color",Id:"id",Band:"band",Palette:"palette",ToString:"to-string",Has:"has"},rC={[Me.Get]:Et(zt(1,1/0),qb),[Me.Var]:Et(zt(1,1),nC),[Me.Has]:Et(zt(1,1/0),qb),[Me.Id]:Et(sC,Oc),[Me.Concat]:Et(zt(2,1/0),ei(tn)),[Me.GeometryType]:Et(oC,Oc),[Me.LineMetric]:Et(Oc),[Me.Resolution]:Et(Oc),[Me.Zoom]:Et(Oc),[Me.Time]:Et(Oc),[Me.Any]:Et(zt(2,1/0),ei(Gr)),[Me.All]:Et(zt(2,1/0),ei(Gr)),[Me.Not]:Et(zt(1,1),ei(Gr)),[Me.Equal]:Et(zt(2,2),ei(Hp)),[Me.NotEqual]:Et(zt(2,2),ei(Hp)),[Me.GreaterThan]:Et(zt(2,2),ei(Ut)),[Me.GreaterThanOrEqualTo]:Et(zt(2,2),ei(Ut)),[Me.LessThan]:Et(zt(2,2),ei(Ut)),[Me.LessThanOrEqualTo]:Et(zt(2,2),ei(Ut)),[Me.Multiply]:Et(zt(2,1/0),$b),[Me.Coalesce]:Et(zt(2,1/0),$b),[Me.Divide]:Et(zt(2,2),ei(Ut)),[Me.Add]:Et(zt(2,1/0),ei(Ut)),[Me.Subtract]:Et(zt(2,2),ei(Ut)),[Me.Clamp]:Et(zt(3,3),ei(Ut)),[Me.Mod]:Et(zt(2,2),ei(Ut)),[Me.Pow]:Et(zt(2,2),ei(Ut)),[Me.Abs]:Et(zt(1,1),ei(Ut)),[Me.Floor]:Et(zt(1,1),ei(Ut)),[Me.Ceil]:Et(zt(1,1),ei(Ut)),[Me.Round]:Et(zt(1,1),ei(Ut)),[Me.Sin]:Et(zt(1,1),ei(Ut)),[Me.Cos]:Et(zt(1,1),ei(Ut)),[Me.Atan]:Et(zt(1,2),ei(Ut)),[Me.Sqrt]:Et(zt(1,1),ei(Ut)),[Me.Match]:Et(zt(4,1/0),Wb,lC),[Me.Between]:Et(zt(3,3),ei(Ut)),[Me.Interpolate]:Et(zt(6,1/0),Wb,cC),[Me.Case]:Et(zt(3,1/0),aC,hC),[Me.In]:Et(zt(2,2),uC),[Me.Number]:Et(zt(1,1/0),ei(Hp)),[Me.String]:Et(zt(1,1/0),ei(Hp)),[Me.Array]:Et(zt(1,1/0),ei(Ut)),[Me.Color]:Et(zt(1,4),ei(Ut)),[Me.Band]:Et(zt(1,3),ei(Ut)),[Me.Palette]:Et(zt(2,2),dC),[Me.ToString]:Et(zt(1,1),ei(Gr|Ut|tn|Hn))};function qb(h,e,r){let a=h.length-1,c=new Array(a);for(let s=0;s<a;++s){let y=h[s+1];switch(typeof y){case"number":{c[s]=new ki(Ut,y);break}case"string":{c[s]=new ki(tn,y);break}default:throw new Error(`expected a string key or numeric array index for a get operation, got ${y}`)}s===0&&r.properties.add(String(y))}return c}function nC(h,e,r){let a=h[1];if(typeof a!="string")throw new Error("expected a string argument for var operation");return r.variables.add(a),[new ki(tn,a)]}function sC(h,e,r){r.featureId=!0}function oC(h,e,r){r.geometryType=!0}function Oc(h,e,r){let a=h[0];if(h.length!==1)throw new Error(`expected no arguments for ${a} operation`);return[]}function zt(h,e){return function(r,a,c){let s=r[0],y=r.length-1;if(h===e){if(y!==h){let v=h===1?"":"s";throw new Error(`expected ${h} argument${v} for ${s}, got ${y}`)}}else if(y<h||y>e){let v=e===1/0?`${h} or more`:`${h} to ${e}`;throw new Error(`expected ${v} arguments for ${s}, got ${y}`)}}}function $b(h,e,r){let a=h.length-1,c=new Array(a);for(let s=0;s<a;++s){let y=cr(h[s+1],e,r);c[s]=y}return c}function ei(h){return function(e,r,a){let c=e.length-1,s=new Array(c);for(let y=0;y<c;++y){let v=cr(e[y+1],h,a);s[y]=v}return s}}function aC(h,e,r){let a=h[0],c=h.length-1;if(c%2===0)throw new Error(`expected an odd number of arguments for ${a}, got ${c} instead`)}function Wb(h,e,r){let a=h[0],c=h.length-1;if(c%2===1)throw new Error(`expected an even number of arguments for operation ${a}, got ${c} instead`)}function lC(h,e,r){let a=h.length-1,c=tn|Ut|Gr,s=cr(h[1],c,r),y=cr(h[h.length-1],e,r),v=new Array(a-2);for(let b=0;b<a-2;b+=2){try{let T=cr(h[b+2],s.type,r);v[b]=T}catch(T){throw new Error(`failed to parse argument ${b+1} of match expression: ${T.message}`)}try{let T=cr(h[b+3],y.type,r);v[b+1]=T}catch(T){throw new Error(`failed to parse argument ${b+2} of match expression: ${T.message}`)}}return[s,...v,y]}function cC(h,e,r){let a=h[1],c;switch(a[0]){case"linear":c=1;break;case"exponential":let b=a[1];if(typeof b!="number"||b<=0)throw new Error(`expected a number base for exponential interpolation, got ${JSON.stringify(b)} instead`);c=b;break;default:throw new Error(`invalid interpolation type: ${JSON.stringify(a)}`)}let s=new ki(Ut,c),y;try{y=cr(h[2],Ut,r)}catch(b){throw new Error(`failed to parse argument 1 in interpolate expression: ${b.message}`)}let v=new Array(h.length-3);for(let b=0;b<v.length;b+=2){try{let T=cr(h[b+3],Ut,r);v[b]=T}catch(T){throw new Error(`failed to parse argument ${b+2} for interpolate expression: ${T.message}`)}try{let T=cr(h[b+4],e,r);v[b+1]=T}catch(T){throw new Error(`failed to parse argument ${b+3} for interpolate expression: ${T.message}`)}}return[s,y,...v]}function hC(h,e,r){let a=cr(h[h.length-1],e,r),c=new Array(h.length-1);for(let s=0;s<c.length-1;s+=2){try{let y=cr(h[s+1],Gr,r);c[s]=y}catch(y){throw new Error(`failed to parse argument ${s} of case expression: ${y.message}`)}try{let y=cr(h[s+2],a.type,r);c[s+1]=y}catch(y){throw new Error(`failed to parse argument ${s+1} of case expression: ${y.message}`)}}return c[c.length-1]=a,c}function uC(h,e,r){let a=h[2];if(!Array.isArray(a))throw new Error('the second argument for the "in" operator must be an array');let c;if(typeof a[0]=="string"){if(a[0]!=="literal")throw new Error('for the "in" operator, a string array should be wrapped in a "literal" operator to disambiguate from expressions');if(!Array.isArray(a[1]))throw new Error('failed to parse "in" expression: the literal operator must be followed by an array');a=a[1],c=tn}else c=Ut;let s=new Array(a.length);for(let v=0;v<s.length;v++)try{let b=cr(a[v],c,r);s[v]=b}catch(b){throw new Error(`failed to parse haystack item ${v} for "in" expression: ${b.message}`)}return[cr(h[1],c,r),...s]}function dC(h,e,r){let a;try{a=cr(h[1],Ut,r)}catch(y){throw new Error(`failed to parse first argument in palette expression: ${y.message}`)}let c=h[2];if(!Array.isArray(c))throw new Error("the second argument of palette must be an array");let s=new Array(c.length);for(let y=0;y<s.length;y++){let v;try{v=cr(c[y],Hn,r)}catch(b){throw new Error(`failed to parse color at index ${y} in palette expression: ${b.message}`)}if(!(v instanceof ki))throw new Error(`the palette color at index ${y} must be a literal value`);s[y]=v}return[a,...s]}function Et(...h){return function(e,r,a){let c=e[0],s;for(let y=0;y<h.length;y++){let v=h[y](e,r,a);if(y==h.length-1){if(!v)throw new Error("expected last argument validator to return the parsed args");s=v}}return new Ry(r,c,...s)}}function pC(h,e,r){let a=h[0],c=rC[a];if(!c)throw new Error(`unknown operator: ${a}`);return c(h,e,r)}function Dy(h){if(!h)return"";let e=h.getType();switch(e){case"Point":case"LineString":case"Polygon":return e;case"MultiPoint":case"MultiLineString":case"MultiPolygon":return e.substring(5);case"Circle":return"Polygon";case"GeometryCollection":return Dy(h.getGeometries()[0]);default:return""}}function Fy(){return{variables:{},properties:{},resolution:NaN,featureId:null,geometryType:""}}function Zs(h,e,r){let a=cr(h,e,r);return Ps(a,r)}function Ps(h,e){if(h instanceof ki){if(h.type===Hn&&typeof h.value=="string"){let a=Mu(h.value);return function(){return a}}return function(){return h.value}}let r=h.operator;switch(r){case Me.Number:case Me.String:case Me.Coalesce:return fC(h,e);case Me.Get:case Me.Var:case Me.Has:return mC(h,e);case Me.Id:return a=>a.featureId;case Me.GeometryType:return a=>a.geometryType;case Me.Concat:{let a=h.args.map(c=>Ps(c,e));return c=>"".concat(...a.map(s=>s(c).toString()))}case Me.Resolution:return a=>a.resolution;case Me.Any:case Me.All:case Me.Between:case Me.In:case Me.Not:return yC(h,e);case Me.Equal:case Me.NotEqual:case Me.LessThan:case Me.LessThanOrEqualTo:case Me.GreaterThan:case Me.GreaterThanOrEqualTo:return gC(h,e);case Me.Multiply:case Me.Divide:case Me.Add:case Me.Subtract:case Me.Clamp:case Me.Mod:case Me.Pow:case Me.Abs:case Me.Floor:case Me.Ceil:case Me.Round:case Me.Sin:case Me.Cos:case Me.Atan:case Me.Sqrt:return _C(h,e);case Me.Case:return xC(h,e);case Me.Match:return vC(h,e);case Me.Interpolate:return bC(h,e);case Me.ToString:return wC(h,e);default:throw new Error(`Unsupported operator ${r}`)}}function fC(h,e){let r=h.operator,a=h.args.length,c=new Array(a);for(let s=0;s<a;++s)c[s]=Ps(h.args[s],e);switch(r){case Me.Coalesce:return s=>{for(let y=0;y<a;++y){let v=c[y](s);if(typeof v<"u"&&v!==null)return v}throw new Error("Expected one of the values to be non-null")};case Me.Number:case Me.String:return s=>{for(let y=0;y<a;++y){let v=c[y](s);if(typeof v===r)return v}throw new Error(`Expected one of the values to be a ${r}`)};default:throw new Error(`Unsupported assertion operator ${r}`)}}function mC(h,e){let a=h.args[0].value;switch(h.operator){case Me.Get:return c=>{let s=h.args,y=c.properties[a];for(let v=1,b=s.length;v<b;++v){let C=s[v].value;y=y[C]}return y};case Me.Var:return c=>c.variables[a];case Me.Has:return c=>{let s=h.args;if(!(a in c.properties))return!1;let y=c.properties[a];for(let v=1,b=s.length;v<b;++v){let C=s[v].value;if(!y||!Object.hasOwn(y,C))return!1;y=y[C]}return!0};default:throw new Error(`Unsupported accessor operator ${h.operator}`)}}function gC(h,e){let r=h.operator,a=Ps(h.args[0],e),c=Ps(h.args[1],e);switch(r){case Me.Equal:return s=>a(s)===c(s);case Me.NotEqual:return s=>a(s)!==c(s);case Me.LessThan:return s=>a(s)<c(s);case Me.LessThanOrEqualTo:return s=>a(s)<=c(s);case Me.GreaterThan:return s=>a(s)>c(s);case Me.GreaterThanOrEqualTo:return s=>a(s)>=c(s);default:throw new Error(`Unsupported comparison operator ${r}`)}}function yC(h,e){let r=h.operator,a=h.args.length,c=new Array(a);for(let s=0;s<a;++s)c[s]=Ps(h.args[s],e);switch(r){case Me.Any:return s=>{for(let y=0;y<a;++y)if(c[y](s))return!0;return!1};case Me.All:return s=>{for(let y=0;y<a;++y)if(!c[y](s))return!1;return!0};case Me.Between:return s=>{let y=c[0](s),v=c[1](s),b=c[2](s);return y>=v&&y<=b};case Me.In:return s=>{let y=c[0](s);for(let v=1;v<a;++v)if(y===c[v](s))return!0;return!1};case Me.Not:return s=>!c[0](s);default:throw new Error(`Unsupported logical operator ${r}`)}}function _C(h,e){let r=h.operator,a=h.args.length,c=new Array(a);for(let s=0;s<a;++s)c[s]=Ps(h.args[s],e);switch(r){case Me.Multiply:return s=>{let y=1;for(let v=0;v<a;++v)y*=c[v](s);return y};case Me.Divide:return s=>c[0](s)/c[1](s);case Me.Add:return s=>{let y=0;for(let v=0;v<a;++v)y+=c[v](s);return y};case Me.Subtract:return s=>c[0](s)-c[1](s);case Me.Clamp:return s=>{let y=c[0](s),v=c[1](s);if(y<v)return v;let b=c[2](s);return y>b?b:y};case Me.Mod:return s=>c[0](s)%c[1](s);case Me.Pow:return s=>Math.pow(c[0](s),c[1](s));case Me.Abs:return s=>Math.abs(c[0](s));case Me.Floor:return s=>Math.floor(c[0](s));case Me.Ceil:return s=>Math.ceil(c[0](s));case Me.Round:return s=>Math.round(c[0](s));case Me.Sin:return s=>Math.sin(c[0](s));case Me.Cos:return s=>Math.cos(c[0](s));case Me.Atan:return a===2?s=>Math.atan2(c[0](s),c[1](s)):s=>Math.atan(c[0](s));case Me.Sqrt:return s=>Math.sqrt(c[0](s));default:throw new Error(`Unsupported numeric operator ${r}`)}}function xC(h,e){let r=h.args.length,a=new Array(r);for(let c=0;c<r;++c)a[c]=Ps(h.args[c],e);return c=>{for(let s=0;s<r-1;s+=2)if(a[s](c))return a[s+1](c);return a[r-1](c)}}function vC(h,e){let r=h.args.length,a=new Array(r);for(let c=0;c<r;++c)a[c]=Ps(h.args[c],e);return c=>{let s=a[0](c);for(let y=1;y<r;y+=2)if(s===a[y](c))return a[y+1](c);return a[r-1](c)}}function bC(h,e){let r=h.args.length,a=new Array(r);for(let c=0;c<r;++c)a[c]=Ps(h.args[c],e);return c=>{let s=a[0](c),y=a[1](c),v,b;for(let T=2;T<r;T+=2){let C=a[T](c),k=a[T+1](c),O=Array.isArray(k);if(O&&(k=Tb(k)),C>=y)return T===2?k:O?SC(s,y,v,b,C,k):Bu(s,y,v,b,C,k);v=C,b=k}return b}}function wC(h,e){let r=h.operator,a=h.args.length,c=new Array(a);for(let s=0;s<a;++s)c[s]=Ps(h.args[s],e);switch(r){case Me.ToString:return s=>{let y=c[0](s);return h.args[0].type===Hn?Pu(y):y.toString()};default:throw new Error(`Unsupported convert operator ${r}`)}}function Bu(h,e,r,a,c,s){let y=c-r;if(y===0)return a;let v=e-r,b=h===1?v/y:(Math.pow(h,v)-1)/(Math.pow(h,y)-1);return a+b*(s-a)}function SC(h,e,r,a,c,s){if(c-r===0)return a;let v=uy(a),b=uy(s),T=b[2]-v[2];T>180?T-=360:T<-180&&(T+=360);let C=[Bu(h,e,r,v[0],c,b[0]),Bu(h,e,r,v[1],c,b[1]),v[2]+Bu(h,e,r,0,c,T),Bu(h,e,r,a[3],c,s[3])];return dy(Mb(C))}function IC(h){return!0}function Kb(h){let e=Ly(),r=CC(h,e),a=Fy();return function(c,s){if(a.properties=c.getPropertiesInternal(),a.resolution=s,e.featureId){let y=c.getId();y!==void 0?a.featureId=y:a.featureId=null}return e.geometryType&&(a.geometryType=Dy(c.getGeometry())),r(a)}}function By(h){let e=Ly(),r=h.length,a=new Array(r);for(let y=0;y<r;++y)a[y]=zy(h[y],e);let c=Fy(),s=new Array(r);return function(y,v){if(c.properties=y.getPropertiesInternal(),c.resolution=v,e.featureId){let T=y.getId();T!==void 0?c.featureId=T:c.featureId=null}let b=0;for(let T=0;T<r;++T){let C=a[T](c);C&&(s[b]=C,b+=1)}return s.length=b,s}}function CC(h,e){let r=h.length,a=new Array(r);for(let c=0;c<r;++c){let s=h[c],y="filter"in s?Zs(s.filter,Gr,e):IC,v;if(Array.isArray(s.style)){let b=s.style.length;v=new Array(b);for(let T=0;T<b;++T)v[T]=zy(s.style[T],e)}else v=[zy(s.style,e)];a[c]={filter:y,styles:v}}return function(c){let s=[],y=!1;for(let v=0;v<r;++v){let b=a[v].filter;if(b(c)&&!(h[v].else&&y)){y=!0;for(let T of a[v].styles){let C=T(c);C&&s.push(C)}}}return s}}function zy(h,e){let r=Nu(h,"",e),a=Vu(h,"",e),c=EC(h,e),s=TC(h,e),y=Tn(h,"z-index",e);if(!r&&!a&&!c&&!s&&!Wn(h))throw new Error("No fill, stroke, point, or text symbolizer properties in style: "+JSON.stringify(h));let v=new Tr;return function(b){let T=!0;if(r){let C=r(b);C&&(T=!1),v.setFill(C)}if(a){let C=a(b);C&&(T=!1),v.setStroke(C)}if(c){let C=c(b);C&&(T=!1),v.setText(C)}if(s){let C=s(b);C&&(T=!1),v.setImage(C)}return y&&v.setZIndex(y(b)),T?null:v}}function Nu(h,e,r){let a;if(e+"fill-pattern-src"in h)a=RC(h,e+"fill-",r);else{if(h[e+"fill-color"]==="none")return s=>null;a=Ny(h,e+"fill-color",r)}if(!a)return null;let c=new Er;return function(s){let y=a(s);return y===Np?null:(c.setColor(y),c)}}function Vu(h,e,r){let a=Tn(h,e+"stroke-width",r),c=Ny(h,e+"stroke-color",r);if(!a&&!c)return null;let s=Io(h,e+"stroke-line-cap",r),y=Io(h,e+"stroke-line-join",r),v=Yb(h,e+"stroke-line-dash",r),b=Tn(h,e+"stroke-line-dash-offset",r),T=Tn(h,e+"stroke-miter-limit",r),C=new Xi;return function(k){if(c){let O=c(k);if(O===Np)return null;C.setColor(O)}if(a&&C.setWidth(a(k)),s){let O=s(k);if(O!=="butt"&&O!=="round"&&O!=="square")throw new Error("Expected butt, round, or square line cap");C.setLineCap(O)}if(y){let O=y(k);if(O!=="bevel"&&O!=="round"&&O!=="miter")throw new Error("Expected bevel, round, or miter line join");C.setLineJoin(O)}return v&&C.setLineDash(v(k)),b&&C.setLineDashOffset(b(k)),T&&C.setMiterLimit(T(k)),C}}function EC(h,e){let r="text-",a=Io(h,r+"value",e);if(!a)return null;let c=Nu(h,r,e),s=Nu(h,r+"background-",e),y=Vu(h,r,e),v=Vu(h,r+"background-",e),b=Io(h,r+"font",e),T=Tn(h,r+"max-angle",e),C=Tn(h,r+"offset-x",e),k=Tn(h,r+"offset-y",e),O=Bc(h,r+"overflow",e),G=Io(h,r+"placement",e),J=Tn(h,r+"repeat",e),le=Jp(h,r+"scale",e),he=Bc(h,r+"rotate-with-view",e),fe=Tn(h,r+"rotation",e),ye=Io(h,r+"align",e),we=Io(h,r+"justify",e),Ie=Io(h,r+"baseline",e),Pe=Bc(h,r+"keep-upright",e),Ee=Yb(h,r+"padding",e),Ge=Qp(h,r+"declutter-mode"),Be=new jb({declutterMode:Ge});return function(Ae){if(Be.setText(a(Ae)),c&&Be.setFill(c(Ae)),s&&Be.setBackgroundFill(s(Ae)),y&&Be.setStroke(y(Ae)),v&&Be.setBackgroundStroke(v(Ae)),b&&Be.setFont(b(Ae)),T&&Be.setMaxAngle(T(Ae)),C&&Be.setOffsetX(C(Ae)),k&&Be.setOffsetY(k(Ae)),O&&Be.setOverflow(O(Ae)),G){let st=G(Ae);if(st!=="point"&&st!=="line")throw new Error("Expected point or line for text-placement");Be.setPlacement(st)}if(J&&Be.setRepeat(J(Ae)),le&&Be.setScale(le(Ae)),he&&Be.setRotateWithView(he(Ae)),fe&&Be.setRotation(fe(Ae)),ye){let st=ye(Ae);if(st!=="left"&&st!=="center"&&st!=="right"&&st!=="end"&&st!=="start")throw new Error("Expected left, right, center, start, or end for text-align");Be.setTextAlign(st)}if(we){let st=we(Ae);if(st!=="left"&&st!=="right"&&st!=="center")throw new Error("Expected left, right, or center for text-justify");Be.setJustify(st)}if(Ie){let st=Ie(Ae);if(st!=="bottom"&&st!=="top"&&st!=="middle"&&st!=="alphabetic"&&st!=="hanging")throw new Error("Expected bottom, top, middle, alphabetic, or hanging for text-baseline");Be.setTextBaseline(st)}return Ee&&Be.setPadding(Ee(Ae)),Pe&&Be.setKeepUpright(Pe(Ae)),Be}}function TC(h,e){return"icon-src"in h?MC(h,e):"shape-points"in h?PC(h,e):"circle-radius"in h?AC(h,e):null}function MC(h,e){let r="icon-",a=r+"src",c=Jb(h[a],a),s=Kp(h,r+"anchor",e),y=Jp(h,r+"scale",e),v=Tn(h,r+"opacity",e),b=Kp(h,r+"displacement",e),T=Tn(h,r+"rotation",e),C=Bc(h,r+"rotate-with-view",e),k=Xb(h,r+"anchor-origin"),O=Hb(h,r+"anchor-x-units"),G=Hb(h,r+"anchor-y-units"),J=FC(h,r+"color"),le=LC(h,r+"cross-origin"),he=DC(h,r+"offset"),fe=Xb(h,r+"offset-origin"),ye=Yp(h,r+"width"),we=Yp(h,r+"height"),Ie=kC(h,r+"size"),Pe=Qp(h,r+"declutter-mode"),Ee=new Du({src:c,anchorOrigin:k,anchorXUnits:O,anchorYUnits:G,color:J,crossOrigin:le,offset:he,offsetOrigin:fe,height:we,width:ye,size:Ie,declutterMode:Pe});return function(Ge){return v&&Ee.setOpacity(v(Ge)),b&&Ee.setDisplacement(b(Ge)),T&&Ee.setRotation(T(Ge)),C&&Ee.setRotateWithView(C(Ge)),y&&Ee.setScale(y(Ge)),s&&Ee.setAnchor(s(Ge)),Ee}}function PC(h,e){let r="shape-",a=r+"points",c=r+"radius",s=Oy(h[a],a),y=Oy(h[c],c),v=Nu(h,r,e),b=Vu(h,r,e),T=Jp(h,r+"scale",e),C=Kp(h,r+"displacement",e),k=Tn(h,r+"rotation",e),O=Bc(h,r+"rotate-with-view",e),G=Yp(h,r+"radius2"),J=Yp(h,r+"angle"),le=Qp(h,r+"declutter-mode"),he=new $p({points:s,radius:y,radius2:G,angle:J,declutterMode:le});return function(fe){return v&&he.setFill(v(fe)),b&&he.setStroke(b(fe)),C&&he.setDisplacement(C(fe)),k&&he.setRotation(k(fe)),O&&he.setRotateWithView(O(fe)),T&&he.setScale(T(fe)),he}}function AC(h,e){let r="circle-",a=Nu(h,r,e),c=Vu(h,r,e),s=Tn(h,r+"radius",e),y=Jp(h,r+"scale",e),v=Kp(h,r+"displacement",e),b=Tn(h,r+"rotation",e),T=Bc(h,r+"rotate-with-view",e),C=Qp(h,r+"declutter-mode"),k=new En({radius:5,declutterMode:C});return function(O){return s&&k.setRadius(s(O)),a&&k.setFill(a(O)),c&&k.setStroke(c(O)),v&&k.setDisplacement(v(O)),b&&k.setRotation(b(O)),T&&k.setRotateWithView(T(O)),y&&k.setScale(y(O)),k}}function Tn(h,e,r){if(!(e in h))return;let a=Zs(h[e],Ut,r);return function(c){return Oy(a(c),e)}}function Io(h,e,r){if(!(e in h))return null;let a=Zs(h[e],tn,r);return function(c){return Jb(a(c),e)}}function RC(h,e,r){let a=Io(h,e+"pattern-src",r),c=Zb(h,e+"pattern-offset",r),s=Zb(h,e+"pattern-size",r),y=Ny(h,e+"color",r);return function(v){return{src:a(v),offset:c&&c(v),size:s&&s(v),color:y&&y(v)}}}function Bc(h,e,r){if(!(e in h))return null;let a=Zs(h[e],Gr,r);return function(c){let s=a(c);if(typeof s!="boolean")throw new Error(`Expected a boolean for ${e}`);return s}}function Ny(h,e,r){if(!(e in h))return null;let a=Zs(h[e],Hn,r);return function(c){return Qb(a(c),e)}}function Yb(h,e,r){if(!(e in h))return null;let a=Zs(h[e],wa,r);return function(c){return ju(a(c),e)}}function Kp(h,e,r){if(!(e in h))return null;let a=Zs(h[e],wa,r);return function(c){let s=ju(a(c),e);if(s.length!==2)throw new Error(`Expected two numbers for ${e}`);return s}}function Zb(h,e,r){if(!(e in h))return null;let a=Zs(h[e],wa,r);return function(c){return e1(a(c),e)}}function Jp(h,e,r){if(!(e in h))return null;let a=Zs(h[e],wa|Ut,r);return function(c){return zC(a(c),e)}}function Yp(h,e){let r=h[e];if(r!==void 0){if(typeof r!="number")throw new Error(`Expected a number for ${e}`);return r}}function kC(h,e){let r=h[e];if(r!==void 0){if(typeof r=="number")return qs(r);if(!Array.isArray(r))throw new Error(`Expected a number or size array for ${e}`);if(r.length!==2||typeof r[0]!="number"||typeof r[1]!="number")throw new Error(`Expected a number or size array for ${e}`);return r}}function LC(h,e){let r=h[e];if(r!==void 0){if(typeof r!="string")throw new Error(`Expected a string for ${e}`);return r}}function Xb(h,e){let r=h[e];if(r!==void 0){if(r!=="bottom-left"&&r!=="bottom-right"&&r!=="top-left"&&r!=="top-right")throw new Error(`Expected bottom-left, bottom-right, top-left, or top-right for ${e}`);return r}}function Hb(h,e){let r=h[e];if(r!==void 0){if(r!=="pixels"&&r!=="fraction")throw new Error(`Expected pixels or fraction for ${e}`);return r}}function DC(h,e){let r=h[e];if(r!==void 0)return ju(r,e)}function Qp(h,e){let r=h[e];if(r!==void 0){if(typeof r!="string")throw new Error(`Expected a string for ${e}`);if(r!=="declutter"&&r!=="obstacle"&&r!=="none")throw new Error(`Expected declutter, obstacle, or none for ${e}`);return r}}function FC(h,e){let r=h[e];if(r!==void 0)return Qb(r,e)}function ju(h,e){if(!Array.isArray(h))throw new Error(`Expected an array for ${e}`);let r=h.length;for(let a=0;a<r;++a)if(typeof h[a]!="number")throw new Error(`Expected an array of numbers for ${e}`);return h}function Jb(h,e){if(typeof h!="string")throw new Error(`Expected a string for ${e}`);return h}function Oy(h,e){if(typeof h!="number")throw new Error(`Expected a number for ${e}`);return h}function Qb(h,e){if(typeof h=="string")return h;let r=ju(h,e),a=r.length;if(a<3||a>4)throw new Error(`Expected a color with 3 or 4 values for ${e}`);return r}function e1(h,e){let r=ju(h,e);if(r.length!==2)throw new Error(`Expected an array of two numbers for ${e}`);return r}function zC(h,e){return typeof h=="number"?h:e1(h,e)}var t1={RENDER_ORDER:"renderOrder"},Vy=class extends Es{constructor(e){e=e||{};let r=Object.assign({},e);delete r.style,delete r.renderBuffer,delete r.updateWhileAnimating,delete r.updateWhileInteracting,super(r),this.declutter_=e.declutter?String(e.declutter):void 0,this.renderBuffer_=e.renderBuffer!==void 0?e.renderBuffer:100,this.style_=null,this.styleFunction_=void 0,this.setStyle(e.style),this.updateWhileAnimating_=e.updateWhileAnimating!==void 0?e.updateWhileAnimating:!1,this.updateWhileInteracting_=e.updateWhileInteracting!==void 0?e.updateWhileInteracting:!1}getDeclutter(){return this.declutter_}getFeatures(e){return super.getFeatures(e)}getRenderBuffer(){return this.renderBuffer_}getRenderOrder(){return this.get(t1.RENDER_ORDER)}getStyle(){return this.style_}getStyleFunction(){return this.styleFunction_}getUpdateWhileAnimating(){return this.updateWhileAnimating_}getUpdateWhileInteracting(){return this.updateWhileInteracting_}renderDeclutter(e,r){let a=this.getDeclutter();a in e.declutter||(e.declutter[a]=new fl(9)),this.getRenderer().renderDeclutter(e,r)}setRenderOrder(e){this.set(t1.RENDER_ORDER,e)}setStyle(e){this.style_=e===void 0?Ey:e;let r=OC(e);this.styleFunction_=e===null?void 0:Nb(r),this.changed()}setDeclutter(e){this.declutter_=e?String(e):void 0,this.changed()}};function OC(h){if(h===void 0)return Ey;if(!h)return null;if(typeof h=="function"||h instanceof Tr)return h;if(!Array.isArray(h))return By([h]);if(h.length===0)return[];let e=h.length,r=h[0];if(r instanceof Tr){let c=new Array(e);for(let s=0;s<e;++s){let y=h[s];if(!(y instanceof Tr))throw new Error("Expected a list of style instances");c[s]=y}return c}if("style"in r){let c=new Array(e);for(let s=0;s<e;++s){let y=h[s];if(!("style"in y))throw new Error("Expected a list of rules with a style property");c[s]=y}return Kb(c)}return By(h)}var i1=Vy;var Gu={BEGIN_GEOMETRY:0,BEGIN_PATH:1,CIRCLE:2,CLOSE_PATH:3,CUSTOM:4,DRAW_CHARS:5,DRAW_IMAGE:6,END_GEOMETRY:7,FILL:8,MOVE_TO_LINE_TO:9,SET_FILL_STYLE:10,SET_STROKE_STYLE:11,STROKE:12},Uu=[Gu.FILL],Xs=[Gu.STROKE],Co=[Gu.BEGIN_PATH],jy=[Gu.CLOSE_PATH],dt=Gu;var Gy=class{drawCustom(e,r,a,c,s){}drawGeometry(e){}setStyle(e){}drawCircle(e,r,a){}drawFeature(e,r,a){}drawGeometryCollection(e,r,a){}drawLineString(e,r,a){}drawMultiLineString(e,r,a){}drawMultiPoint(e,r,a){}drawMultiPolygon(e,r,a){}drawPoint(e,r,a){}drawPolygon(e,r,a){}drawText(e,r,a){}setFillStrokeStyle(e,r){}setImageStyle(e,r){}setTextStyle(e,r){}},ef=Gy;var Uy=class extends ef{constructor(e,r,a,c){super(),this.tolerance=e,this.maxExtent=r,this.pixelRatio=c,this.maxLineWidth=0,this.resolution=a,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_=null,this.bufferedMaxExtent_=null,this.instructions=[],this.coordinates=[],this.tmpCoordinate_=[],this.hitDetectionInstructions=[],this.state={}}applyPixelRatio(e){let r=this.pixelRatio;return r==1?e:e.map(function(a){return a*r})}appendFlatPointCoordinates(e,r){let a=this.getBufferedMaxExtent(),c=this.tmpCoordinate_,s=this.coordinates,y=s.length;for(let v=0,b=e.length;v<b;v+=r)c[0]=e[v],c[1]=e[v+1],rl(a,c)&&(s[y++]=c[0],s[y++]=c[1]);return y}appendFlatLineCoordinates(e,r,a,c,s,y){let v=this.coordinates,b=v.length,T=this.getBufferedMaxExtent();y&&(r+=c);let C=e[r],k=e[r+1],O=this.tmpCoordinate_,G=!0,J,le,he;for(J=r+c;J<a;J+=c)O[0]=e[J],O[1]=e[J+1],he=pp(T,O),he!==le?(G&&(v[b++]=C,v[b++]=k,G=!1),v[b++]=O[0],v[b++]=O[1]):he===Ni.INTERSECTING?(v[b++]=O[0],v[b++]=O[1],G=!1):G=!0,C=O[0],k=O[1],le=he;return(s&&G||J===r+c)&&(v[b++]=C,v[b++]=k),b}drawCustomCoordinates_(e,r,a,c,s){for(let y=0,v=a.length;y<v;++y){let b=a[y],T=this.appendFlatLineCoordinates(e,r,b,c,!1,!1);s.push(T),r=b}return r}drawCustom(e,r,a,c,s){this.beginGeometry(e,r,s);let y=e.getType(),v=e.getStride(),b=this.coordinates.length,T,C,k,O,G;switch(y){case"MultiPolygon":T=e.getOrientedFlatCoordinates(),O=[];let J=e.getEndss();G=0;for(let le=0,he=J.length;le<he;++le){let fe=[];G=this.drawCustomCoordinates_(T,G,J[le],v,fe),O.push(fe)}this.instructions.push([dt.CUSTOM,b,O,e,a,fu,s]),this.hitDetectionInstructions.push([dt.CUSTOM,b,O,e,c||a,fu,s]);break;case"Polygon":case"MultiLineString":k=[],T=y=="Polygon"?e.getOrientedFlatCoordinates():e.getFlatCoordinates(),G=this.drawCustomCoordinates_(T,0,e.getEnds(),v,k),this.instructions.push([dt.CUSTOM,b,k,e,a,ma,s]),this.hitDetectionInstructions.push([dt.CUSTOM,b,k,e,c||a,ma,s]);break;case"LineString":case"Circle":T=e.getFlatCoordinates(),C=this.appendFlatLineCoordinates(T,0,T.length,v,!1,!1),this.instructions.push([dt.CUSTOM,b,C,e,a,cs,s]),this.hitDetectionInstructions.push([dt.CUSTOM,b,C,e,c||a,cs,s]);break;case"MultiPoint":T=e.getFlatCoordinates(),C=this.appendFlatPointCoordinates(T,v),C>b&&(this.instructions.push([dt.CUSTOM,b,C,e,a,cs,s]),this.hitDetectionInstructions.push([dt.CUSTOM,b,C,e,c||a,cs,s]));break;case"Point":T=e.getFlatCoordinates(),this.coordinates.push(T[0],T[1]),C=this.coordinates.length,this.instructions.push([dt.CUSTOM,b,C,e,a,void 0,s]),this.hitDetectionInstructions.push([dt.CUSTOM,b,C,e,c||a,void 0,s]);break;default:}this.endGeometry(r)}beginGeometry(e,r,a){this.beginGeometryInstruction1_=[dt.BEGIN_GEOMETRY,r,0,e,a],this.instructions.push(this.beginGeometryInstruction1_),this.beginGeometryInstruction2_=[dt.BEGIN_GEOMETRY,r,0,e,a],this.hitDetectionInstructions.push(this.beginGeometryInstruction2_)}finish(){return{instructions:this.instructions,hitDetectionInstructions:this.hitDetectionInstructions,coordinates:this.coordinates}}reverseHitDetectionInstructions(){let e=this.hitDetectionInstructions;e.reverse();let r,a=e.length,c,s,y=-1;for(r=0;r<a;++r)c=e[r],s=c[0],s==dt.END_GEOMETRY?y=r:s==dt.BEGIN_GEOMETRY&&(c[2]=r,rv(this.hitDetectionInstructions,y,r),y=-1)}setFillStrokeStyle(e,r){let a=this.state;if(e){let c=e.getColor();a.fillPatternScale=c&&typeof c=="object"&&"src"in c?this.pixelRatio:1,a.fillStyle=Sn(c||Hi)}else a.fillStyle=void 0;if(r){let c=r.getColor();a.strokeStyle=Sn(c||bo);let s=r.getLineCap();a.lineCap=s!==void 0?s:$s;let y=r.getLineDash();a.lineDash=y?y.slice():In;let v=r.getLineDashOffset();a.lineDashOffset=v||Cn;let b=r.getLineJoin();a.lineJoin=b!==void 0?b:Ws;let T=r.getWidth();a.lineWidth=T!==void 0?T:So;let C=r.getMiterLimit();a.miterLimit=C!==void 0?C:vo,a.lineWidth>this.maxLineWidth&&(this.maxLineWidth=a.lineWidth,this.bufferedMaxExtent_=null)}else a.strokeStyle=void 0,a.lineCap=void 0,a.lineDash=null,a.lineDashOffset=void 0,a.lineJoin=void 0,a.lineWidth=void 0,a.miterLimit=void 0}createFill(e){let r=e.fillStyle,a=[dt.SET_FILL_STYLE,r];return typeof r!="string"&&a.push(e.fillPatternScale),a}applyStroke(e){this.instructions.push(this.createStroke(e))}createStroke(e){return[dt.SET_STROKE_STYLE,e.strokeStyle,e.lineWidth*this.pixelRatio,e.lineCap,e.lineJoin,e.miterLimit,this.applyPixelRatio(e.lineDash),e.lineDashOffset*this.pixelRatio]}updateFillStyle(e,r){let a=e.fillStyle;(typeof a!="string"||e.currentFillStyle!=a)&&(a!==void 0&&this.instructions.push(r.call(this,e)),e.currentFillStyle=a)}updateStrokeStyle(e,r){let a=e.strokeStyle,c=e.lineCap,s=e.lineDash,y=e.lineDashOffset,v=e.lineJoin,b=e.lineWidth,T=e.miterLimit;(e.currentStrokeStyle!=a||e.currentLineCap!=c||s!=e.currentLineDash&&!yn(e.currentLineDash,s)||e.currentLineDashOffset!=y||e.currentLineJoin!=v||e.currentLineWidth!=b||e.currentMiterLimit!=T)&&(a!==void 0&&r.call(this,e),e.currentStrokeStyle=a,e.currentLineCap=c,e.currentLineDash=s,e.currentLineDashOffset=y,e.currentLineJoin=v,e.currentLineWidth=b,e.currentMiterLimit=T)}endGeometry(e){this.beginGeometryInstruction1_[2]=this.instructions.length,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_[2]=this.hitDetectionInstructions.length,this.beginGeometryInstruction2_=null;let r=[dt.END_GEOMETRY,e];this.instructions.push(r),this.hitDetectionInstructions.push(r)}getBufferedMaxExtent(){if(!this.bufferedMaxExtent_&&(this.bufferedMaxExtent_=nv(this.maxExtent),this.maxLineWidth>0)){let e=this.resolution*(this.maxLineWidth+1)/2;os(this.bufferedMaxExtent_,e,this.bufferedMaxExtent_)}return this.bufferedMaxExtent_}},Hs=Uy;var qy=class extends Hs{constructor(e,r,a,c){super(e,r,a,c),this.hitDetectionImage_=null,this.image_=null,this.imagePixelRatio_=void 0,this.anchorX_=void 0,this.anchorY_=void 0,this.height_=void 0,this.opacity_=void 0,this.originX_=void 0,this.originY_=void 0,this.rotateWithView_=void 0,this.rotation_=void 0,this.scale_=void 0,this.width_=void 0,this.declutterMode_=void 0,this.declutterImageWithText_=void 0}drawPoint(e,r,a){if(!this.image_||this.maxExtent&&!rl(this.maxExtent,e.getFlatCoordinates()))return;this.beginGeometry(e,r,a);let c=e.getFlatCoordinates(),s=e.getStride(),y=this.coordinates.length,v=this.appendFlatPointCoordinates(c,s);this.instructions.push([dt.DRAW_IMAGE,y,v,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_*this.imagePixelRatio_,this.originY_*this.imagePixelRatio_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this.scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterMode_,this.declutterImageWithText_]),this.hitDetectionInstructions.push([dt.DRAW_IMAGE,y,v,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,1,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterMode_,this.declutterImageWithText_]),this.endGeometry(r)}drawMultiPoint(e,r,a){if(!this.image_)return;this.beginGeometry(e,r,a);let c=e.getFlatCoordinates(),s=[];for(let b=0,T=c.length;b<T;b+=e.getStride())(!this.maxExtent||rl(this.maxExtent,c.slice(b,b+2)))&&s.push(c[b],c[b+1]);let y=this.coordinates.length,v=this.appendFlatPointCoordinates(s,2);this.instructions.push([dt.DRAW_IMAGE,y,v,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_*this.imagePixelRatio_,this.originY_*this.imagePixelRatio_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this.scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterMode_,this.declutterImageWithText_]),this.hitDetectionInstructions.push([dt.DRAW_IMAGE,y,v,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,1,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterMode_,this.declutterImageWithText_]),this.endGeometry(r)}finish(){return this.reverseHitDetectionInstructions(),this.anchorX_=void 0,this.anchorY_=void 0,this.hitDetectionImage_=null,this.image_=null,this.imagePixelRatio_=void 0,this.height_=void 0,this.scale_=void 0,this.opacity_=void 0,this.originX_=void 0,this.originY_=void 0,this.rotateWithView_=void 0,this.rotation_=void 0,this.width_=void 0,super.finish()}setImageStyle(e,r){let a=e.getAnchor(),c=e.getSize(),s=e.getOrigin();this.imagePixelRatio_=e.getPixelRatio(this.pixelRatio),this.anchorX_=a[0],this.anchorY_=a[1],this.hitDetectionImage_=e.getHitDetectionImage(),this.image_=e.getImage(this.pixelRatio),this.height_=c[1],this.opacity_=e.getOpacity(),this.originX_=s[0],this.originY_=s[1],this.rotateWithView_=e.getRotateWithView(),this.rotation_=e.getRotation(),this.scale_=e.getScaleArray(),this.width_=c[0],this.declutterMode_=e.getDeclutterMode(),this.declutterImageWithText_=r}},r1=qy;var $y=class extends Hs{constructor(e,r,a,c){super(e,r,a,c)}drawFlatCoordinates_(e,r,a,c){let s=this.coordinates.length,y=this.appendFlatLineCoordinates(e,r,a,c,!1,!1),v=[dt.MOVE_TO_LINE_TO,s,y];return this.instructions.push(v),this.hitDetectionInstructions.push(v),a}drawLineString(e,r,a){let c=this.state,s=c.strokeStyle,y=c.lineWidth;if(s===void 0||y===void 0)return;this.updateStrokeStyle(c,this.applyStroke),this.beginGeometry(e,r,a),this.hitDetectionInstructions.push([dt.SET_STROKE_STYLE,c.strokeStyle,c.lineWidth,c.lineCap,c.lineJoin,c.miterLimit,In,Cn],Co);let v=e.getFlatCoordinates(),b=e.getStride();this.drawFlatCoordinates_(v,0,v.length,b),this.hitDetectionInstructions.push(Xs),this.endGeometry(r)}drawMultiLineString(e,r,a){let c=this.state,s=c.strokeStyle,y=c.lineWidth;if(s===void 0||y===void 0)return;this.updateStrokeStyle(c,this.applyStroke),this.beginGeometry(e,r,a),this.hitDetectionInstructions.push([dt.SET_STROKE_STYLE,c.strokeStyle,c.lineWidth,c.lineCap,c.lineJoin,c.miterLimit,In,Cn],Co);let v=e.getEnds(),b=e.getFlatCoordinates(),T=e.getStride(),C=0;for(let k=0,O=v.length;k<O;++k)C=this.drawFlatCoordinates_(b,C,v[k],T);this.hitDetectionInstructions.push(Xs),this.endGeometry(r)}finish(){let e=this.state;return e.lastStroke!=null&&e.lastStroke!=this.coordinates.length&&this.instructions.push(Xs),this.reverseHitDetectionInstructions(),this.state=null,super.finish()}applyStroke(e){e.lastStroke!=null&&e.lastStroke!=this.coordinates.length&&(this.instructions.push(Xs),e.lastStroke=this.coordinates.length),e.lastStroke=0,super.applyStroke(e),this.instructions.push(Co)}},n1=$y;var Wy=class extends Hs{constructor(e,r,a,c){super(e,r,a,c)}drawFlatCoordinatess_(e,r,a,c){let s=this.state,y=s.fillStyle!==void 0,v=s.strokeStyle!==void 0,b=a.length;this.instructions.push(Co),this.hitDetectionInstructions.push(Co);for(let T=0;T<b;++T){let C=a[T],k=this.coordinates.length,O=this.appendFlatLineCoordinates(e,r,C,c,!0,!v),G=[dt.MOVE_TO_LINE_TO,k,O];this.instructions.push(G),this.hitDetectionInstructions.push(G),v&&(this.instructions.push(jy),this.hitDetectionInstructions.push(jy)),r=C}return y&&(this.instructions.push(Uu),this.hitDetectionInstructions.push(Uu)),v&&(this.instructions.push(Xs),this.hitDetectionInstructions.push(Xs)),r}drawCircle(e,r,a){let c=this.state,s=c.fillStyle,y=c.strokeStyle;if(s===void 0&&y===void 0)return;this.setFillStrokeStyles_(),this.beginGeometry(e,r,a),c.fillStyle!==void 0&&this.hitDetectionInstructions.push([dt.SET_FILL_STYLE,Hi]),c.strokeStyle!==void 0&&this.hitDetectionInstructions.push([dt.SET_STROKE_STYLE,c.strokeStyle,c.lineWidth,c.lineCap,c.lineJoin,c.miterLimit,In,Cn]);let v=e.getFlatCoordinates(),b=e.getStride(),T=this.coordinates.length;this.appendFlatLineCoordinates(v,0,v.length,b,!1,!1);let C=[dt.CIRCLE,T];this.instructions.push(Co,C),this.hitDetectionInstructions.push(Co,C),c.fillStyle!==void 0&&(this.instructions.push(Uu),this.hitDetectionInstructions.push(Uu)),c.strokeStyle!==void 0&&(this.instructions.push(Xs),this.hitDetectionInstructions.push(Xs)),this.endGeometry(r)}drawPolygon(e,r,a){let c=this.state,s=c.fillStyle,y=c.strokeStyle;if(s===void 0&&y===void 0)return;this.setFillStrokeStyles_(),this.beginGeometry(e,r,a),c.fillStyle!==void 0&&this.hitDetectionInstructions.push([dt.SET_FILL_STYLE,Hi]),c.strokeStyle!==void 0&&this.hitDetectionInstructions.push([dt.SET_STROKE_STYLE,c.strokeStyle,c.lineWidth,c.lineCap,c.lineJoin,c.miterLimit,In,Cn]);let v=e.getEnds(),b=e.getOrientedFlatCoordinates(),T=e.getStride();this.drawFlatCoordinatess_(b,0,v,T),this.endGeometry(r)}drawMultiPolygon(e,r,a){let c=this.state,s=c.fillStyle,y=c.strokeStyle;if(s===void 0&&y===void 0)return;this.setFillStrokeStyles_(),this.beginGeometry(e,r,a),c.fillStyle!==void 0&&this.hitDetectionInstructions.push([dt.SET_FILL_STYLE,Hi]),c.strokeStyle!==void 0&&this.hitDetectionInstructions.push([dt.SET_STROKE_STYLE,c.strokeStyle,c.lineWidth,c.lineCap,c.lineJoin,c.miterLimit,In,Cn]);let v=e.getEndss(),b=e.getOrientedFlatCoordinates(),T=e.getStride(),C=0;for(let k=0,O=v.length;k<O;++k)C=this.drawFlatCoordinatess_(b,C,v[k],T);this.endGeometry(r)}finish(){this.reverseHitDetectionInstructions(),this.state=null;let e=this.tolerance;if(e!==0){let r=this.coordinates;for(let a=0,c=r.length;a<c;++a)r[a]=fa(r[a],e)}return super.finish()}setFillStrokeStyles_(){let e=this.state;e.fillStyle!==void 0&&this.updateFillStyle(e,this.createFill),e.strokeStyle!==void 0&&this.updateStrokeStyle(e,this.applyStroke)}},Zy=Wy;function s1(h,e,r,a,c){let s=[],y=r,v=0,b=e.slice(r,2);for(;v<h&&y+c<a;){let[T,C]=b.slice(-2),k=e[y+c],O=e[y+c+1],G=Math.sqrt((k-T)*(k-T)+(O-C)*(O-C));if(v+=G,v>=h){let J=(h-v+G)/G,le=Ir(T,k,J),he=Ir(C,O,J);b.push(le,he),s.push(b),b=[le,he],v==h&&(y+=c),v=0}else if(v<h)b.push(e[y+c],e[y+c+1]),y+=c;else{let J=G-v,le=Ir(T,k,J/G),he=Ir(C,O,J/G);b.push(le,he),s.push(b),b=[le,he],v=0,y+=c}}return v>0&&s.push(b),s}function o1(h,e,r,a,c){let s=r,y=r,v=0,b=0,T=r,C,k,O,G,J,le,he,fe,ye,we;for(k=r;k<a;k+=c){let Ie=e[k],Pe=e[k+1];J!==void 0&&(ye=Ie-J,we=Pe-le,G=Math.sqrt(ye*ye+we*we),he!==void 0&&(b+=O,C=Math.acos((he*ye+fe*we)/(O*G)),C>h&&(b>v&&(v=b,s=T,y=k),b=0,T=k-c)),O=G,he=ye,fe=we),J=Ie,le=Pe}return b+=G,b>v?[T,k]:[s,y]}var qu={left:0,center:.5,right:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1},Xy=class extends Hs{constructor(e,r,a,c){super(e,r,a,c),this.labels_=null,this.text_="",this.textOffsetX_=0,this.textOffsetY_=0,this.textRotateWithView_=void 0,this.textKeepUpright_=void 0,this.textRotation_=0,this.textFillState_=null,this.fillStates={},this.fillStates[Hi]={fillStyle:Hi},this.textStrokeState_=null,this.strokeStates={},this.textState_={},this.textStates={},this.textKey_="",this.fillKey_="",this.strokeKey_="",this.declutterMode_=void 0,this.declutterImageWithText_=void 0}finish(){let e=super.finish();return e.textStates=this.textStates,e.fillStates=this.fillStates,e.strokeStates=this.strokeStates,e}drawText(e,r,a){let c=this.textFillState_,s=this.textStrokeState_,y=this.textState_;if(this.text_===""||!y||!c&&!s)return;let v=this.coordinates,b=v.length,T=e.getType(),C=null,k=e.getStride();if(y.placement==="line"&&(T=="LineString"||T=="MultiLineString"||T=="Polygon"||T=="MultiPolygon")){if(!Vi(this.maxExtent,e.getExtent()))return;let O;if(C=e.getFlatCoordinates(),T=="LineString")O=[C.length];else if(T=="MultiLineString")O=e.getEnds();else if(T=="Polygon")O=e.getEnds().slice(0,1);else if(T=="MultiPolygon"){let he=e.getEndss();O=[];for(let fe=0,ye=he.length;fe<ye;++fe)O.push(he[fe][0])}this.beginGeometry(e,r,a);let G=y.repeat,J=G?void 0:y.textAlign,le=0;for(let he=0,fe=O.length;he<fe;++he){let ye;G?ye=s1(G*this.resolution,C,le,O[he],k):ye=[C.slice(le,O[he])];for(let we=0,Ie=ye.length;we<Ie;++we){let Pe=ye[we],Ee=0,Ge=Pe.length;if(J==null){let Ae=o1(y.maxAngle,Pe,0,Pe.length,2);Ee=Ae[0],Ge=Ae[1]}for(let Ae=Ee;Ae<Ge;Ae+=k)v.push(Pe[Ae],Pe[Ae+1]);let Be=v.length;le=O[he],this.drawChars_(b,Be),b=Be}}this.endGeometry(r)}else{let O=y.overflow?null:[];switch(T){case"Point":case"MultiPoint":C=e.getFlatCoordinates();break;case"LineString":C=e.getFlatMidpoint();break;case"Circle":C=e.getCenter();break;case"MultiLineString":C=e.getFlatMidpoints(),k=2;break;case"Polygon":C=e.getFlatInteriorPoint(),y.overflow||O.push(C[2]/this.resolution),k=3;break;case"MultiPolygon":let ye=e.getFlatInteriorPoints();C=[];for(let we=0,Ie=ye.length;we<Ie;we+=3)y.overflow||O.push(ye[we+2]/this.resolution),C.push(ye[we],ye[we+1]);if(C.length===0)return;k=2;break;default:}let G=this.appendFlatPointCoordinates(C,k);if(G===b)return;if(O&&(G-b)/2!==C.length/k){let ye=b/2;O=O.filter((we,Ie)=>{let Pe=v[(ye+Ie)*2]===C[Ie*k]&&v[(ye+Ie)*2+1]===C[Ie*k+1];return Pe||--ye,Pe})}this.saveTextStates_(),(y.backgroundFill||y.backgroundStroke)&&(this.setFillStrokeStyle(y.backgroundFill,y.backgroundStroke),y.backgroundFill&&this.updateFillStyle(this.state,this.createFill),y.backgroundStroke&&(this.updateStrokeStyle(this.state,this.applyStroke),this.hitDetectionInstructions.push(this.createStroke(this.state)))),this.beginGeometry(e,r,a);let J=y.padding;if(J!=wo&&(y.scale[0]<0||y.scale[1]<0)){let ye=y.padding[0],we=y.padding[1],Ie=y.padding[2],Pe=y.padding[3];y.scale[0]<0&&(we=-we,Pe=-Pe),y.scale[1]<0&&(ye=-ye,Ie=-Ie),J=[ye,we,Ie,Pe]}let le=this.pixelRatio;this.instructions.push([dt.DRAW_IMAGE,b,G,null,NaN,NaN,NaN,1,0,0,this.textRotateWithView_,this.textRotation_,[1,1],NaN,this.declutterMode_,this.declutterImageWithText_,J==wo?wo:J.map(function(ye){return ye*le}),!!y.backgroundFill,!!y.backgroundStroke,this.text_,this.textKey_,this.strokeKey_,this.fillKey_,this.textOffsetX_,this.textOffsetY_,O]);let he=1/le,fe=this.state.fillStyle;y.backgroundFill&&(this.state.fillStyle=Hi,this.hitDetectionInstructions.push(this.createFill(this.state))),this.hitDetectionInstructions.push([dt.DRAW_IMAGE,b,G,null,NaN,NaN,NaN,1,0,0,this.textRotateWithView_,this.textRotation_,[he,he],NaN,this.declutterMode_,this.declutterImageWithText_,J,!!y.backgroundFill,!!y.backgroundStroke,this.text_,this.textKey_,this.strokeKey_,this.fillKey_?Hi:this.fillKey_,this.textOffsetX_,this.textOffsetY_,O]),y.backgroundFill&&(this.state.fillStyle=fe,this.hitDetectionInstructions.push(this.createFill(this.state))),this.endGeometry(r)}}saveTextStates_(){let e=this.textStrokeState_,r=this.textState_,a=this.textFillState_,c=this.strokeKey_;e&&(c in this.strokeStates||(this.strokeStates[c]={strokeStyle:e.strokeStyle,lineCap:e.lineCap,lineDashOffset:e.lineDashOffset,lineWidth:e.lineWidth,lineJoin:e.lineJoin,miterLimit:e.miterLimit,lineDash:e.lineDash}));let s=this.textKey_;s in this.textStates||(this.textStates[s]={font:r.font,textAlign:r.textAlign||xa,justify:r.justify,textBaseline:r.textBaseline||pl,scale:r.scale});let y=this.fillKey_;a&&(y in this.fillStates||(this.fillStates[y]={fillStyle:a.fillStyle}))}drawChars_(e,r){let a=this.textStrokeState_,c=this.textState_,s=this.strokeKey_,y=this.textKey_,v=this.fillKey_;this.saveTextStates_();let b=this.pixelRatio,T=qu[c.textBaseline],C=this.textOffsetY_*b,k=this.text_,O=a?a.lineWidth*Math.abs(c.scale[0])/2:0;this.instructions.push([dt.DRAW_CHARS,e,r,T,c.overflow,v,c.maxAngle,b,C,s,O*b,k,y,1,this.declutterMode_,this.textKeepUpright_]),this.hitDetectionInstructions.push([dt.DRAW_CHARS,e,r,T,c.overflow,v&&Hi,c.maxAngle,b,C,s,O*b,k,y,1/b,this.declutterMode_,this.textKeepUpright_])}setTextStyle(e,r){let a,c,s;if(!e)this.text_="";else{let y=e.getFill();y?(c=this.textFillState_,c||(c={},this.textFillState_=c),c.fillStyle=Sn(y.getColor()||Hi)):(c=null,this.textFillState_=c);let v=e.getStroke();if(!v)s=null,this.textStrokeState_=s;else{s=this.textStrokeState_,s||(s={},this.textStrokeState_=s);let le=v.getLineDash(),he=v.getLineDashOffset(),fe=v.getWidth(),ye=v.getMiterLimit();s.lineCap=v.getLineCap()||$s,s.lineDash=le?le.slice():In,s.lineDashOffset=he===void 0?Cn:he,s.lineJoin=v.getLineJoin()||Ws,s.lineWidth=fe===void 0?So:fe,s.miterLimit=ye===void 0?vo:ye,s.strokeStyle=Sn(v.getColor()||bo)}a=this.textState_;let b=e.getFont()||qp;Db(b);let T=e.getScaleArray();a.overflow=e.getOverflow(),a.font=b,a.maxAngle=e.getMaxAngle(),a.placement=e.getPlacement(),a.textAlign=e.getTextAlign(),a.repeat=e.getRepeat(),a.justify=e.getJustify(),a.textBaseline=e.getTextBaseline()||pl,a.backgroundFill=e.getBackgroundFill(),a.backgroundStroke=e.getBackgroundStroke(),a.padding=e.getPadding()||wo,a.scale=T===void 0?[1,1]:T;let C=e.getOffsetX(),k=e.getOffsetY(),O=e.getRotateWithView(),G=e.getKeepUpright(),J=e.getRotation();this.text_=e.getText()||"",this.textOffsetX_=C===void 0?0:C,this.textOffsetY_=k===void 0?0:k,this.textRotateWithView_=O===void 0?!1:O,this.textKeepUpright_=G===void 0?!0:G,this.textRotation_=J===void 0?0:J,this.strokeKey_=s?(typeof s.strokeStyle=="string"?s.strokeStyle:Vt(s.strokeStyle))+s.lineCap+s.lineDashOffset+"|"+s.lineWidth+s.lineJoin+s.miterLimit+"["+s.lineDash.join()+"]":"",this.textKey_=a.font+a.scale+(a.textAlign||"?")+(a.repeat||"?")+(a.justify||"?")+(a.textBaseline||"?"),this.fillKey_=c&&c.fillStyle?typeof c.fillStyle=="string"?c.fillStyle:"|"+Vt(c.fillStyle):""}this.declutterMode_=e.getDeclutterMode(),this.declutterImageWithText_=r}},a1=Xy;var BC={Circle:Zy,Default:Hs,Image:r1,LineString:n1,Polygon:Zy,Text:a1},Hy=class{constructor(e,r,a,c){this.tolerance_=e,this.maxExtent_=r,this.pixelRatio_=c,this.resolution_=a,this.buildersByZIndex_={}}finish(){let e={};for(let r in this.buildersByZIndex_){e[r]=e[r]||{};let a=this.buildersByZIndex_[r];for(let c in a){let s=a[c].finish();e[r][c]=s}}return e}getBuilder(e,r){let a=e!==void 0?e.toString():"0",c=this.buildersByZIndex_[a];c===void 0&&(c={},this.buildersByZIndex_[a]=c);let s=c[r];if(s===void 0){let y=BC[r];s=new y(this.tolerance_,this.maxExtent_,this.resolution_,this.pixelRatio_),c[r]=s}return s}},l1=Hy;var NC=5,Ky=class extends up{constructor(e){super(),this.ready=!0,this.boundHandleImageChange_=this.handleImageChange_.bind(this),this.layer_=e,this.staleKeys_=new Array,this.maxStaleKeys=NC}getStaleKeys(){return this.staleKeys_}prependStaleKey(e){this.staleKeys_.unshift(e),this.staleKeys_.length>this.maxStaleKeys&&(this.staleKeys_.length=this.maxStaleKeys)}getFeatures(e){return wt()}getData(e){return null}prepareFrame(e){return wt()}renderFrame(e,r){return wt()}forEachFeatureAtCoordinate(e,r,a,c,s){}getLayer(){return this.layer_}handleFontsChanged(){}handleImageChange_(e){let r=e.target;(r.getState()===It.LOADED||r.getState()===It.ERROR)&&this.renderIfReadyAndVisible()}loadImage(e){let r=e.getState();return r!=It.LOADED&&r!=It.ERROR&&e.addEventListener(pi.CHANGE,this.boundHandleImageChange_),r==It.IDLE&&(e.load(),r=e.getState()),r==It.LOADED}renderIfReadyAndVisible(){let e=this.getLayer();e&&e.getVisible()&&e.getSourceState()==="ready"&&e.changed()}renderDeferred(e){}disposeInternal(){delete this.layer_,super.disposeInternal()}},Sa=Ky;var Yy=class extends Si{constructor(e,r,a,c){super(e),this.inversePixelTransform=r,this.frameState=a,this.context=c}},c1=Yy;var Jy=class{constructor(){this.instructions_=[],this.zIndex=0,this.offset_=0,this.context_=new Proxy(kc(),{get:(e,r)=>{if(typeof kc()[r]=="function")return this.instructions_[this.zIndex+this.offset_]||(this.instructions_[this.zIndex+this.offset_]=[]),this.instructions_[this.zIndex+this.offset_].push(r),this.pushMethodArgs_},set:(e,r,a)=>(this.instructions_[this.zIndex+this.offset_]||(this.instructions_[this.zIndex+this.offset_]=[]),this.instructions_[this.zIndex+this.offset_].push(r,a),!0)})}pushMethodArgs_=(...e)=>(this.instructions_[this.zIndex+this.offset_].push(e),this);pushFunction(e){this.instructions_[this.zIndex+this.offset_].push(e)}getContext(){return this.context_}draw(e){this.instructions_.forEach(r=>{for(let a=0,c=r.length;a<c;++a){let s=r[a];if(typeof s=="function"){s(e);continue}let y=r[++a];if(typeof e[s]=="function")e[s](...y);else{if(typeof y=="function"){e[s]=y(e);continue}e[s]=y}}})}clear(){this.instructions_.length=0,this.zIndex=0,this.offset_=0}offset(){this.offset_=this.instructions_.length,this.zIndex=0}},tf=Jy;var e_=[],Nc=null;function VC(){Nc=Ri(1,1,void 0,{willReadFrequently:!0})}var Qy=class extends Sa{constructor(e){super(e),this.container=null,this.renderedResolution,this.tempTransform=sr(),this.pixelTransform=sr(),this.inversePixelTransform=sr(),this.context=null,this.deferredContext_=null,this.containerReused=!1,this.frameState=null}getImageData(e,r,a){Nc||VC(),Nc.clearRect(0,0,1,1);let c;try{Nc.drawImage(e,r,a,1,1,0,0,1,1),c=Nc.getImageData(0,0,1,1).data}catch{return Nc=null,null}return c}getBackground(e){let a=this.getLayer().getBackground();return typeof a=="function"&&(a=a(e.viewState.resolution)),a||void 0}useContainer(e,r,a){let c=this.getLayer().getClassName(),s,y;if(e&&e.className===c&&(!a||e&&e.style.backgroundColor&&yn(Ms(e.style.backgroundColor),Ms(a)))){let v=e.firstElementChild;v instanceof HTMLCanvasElement&&(y=v.getContext("2d"))}if(y&&y.canvas.style.transform===r?(this.container=e,this.context=y,this.containerReused=!0):this.containerReused?(this.container=null,this.context=null,this.containerReused=!1):this.container&&(this.container.style.backgroundColor=null),!this.container){s=document.createElement("div"),s.className=c;let v=s.style;v.position="absolute",v.width="100%",v.height="100%",y=Ri();let b=y.canvas;s.appendChild(b),v=b.style,v.position="absolute",v.left="0",v.transformOrigin="top left",this.container=s,this.context=y}!this.containerReused&&a&&!this.container.style.backgroundColor&&(this.container.style.backgroundColor=a)}clipUnrotated(e,r,a){let c=lg(a),s=cg(a),y=ag(a),v=og(a);br(r.coordinateToPixelTransform,c),br(r.coordinateToPixelTransform,s),br(r.coordinateToPixelTransform,y),br(r.coordinateToPixelTransform,v);let b=this.inversePixelTransform;br(b,c),br(b,s),br(b,y),br(b,v),e.save(),e.beginPath(),e.moveTo(Math.round(c[0]),Math.round(c[1])),e.lineTo(Math.round(s[0]),Math.round(s[1])),e.lineTo(Math.round(y[0]),Math.round(y[1])),e.lineTo(Math.round(v[0]),Math.round(v[1])),e.clip()}prepareContainer(e,r){let a=e.extent,c=e.viewState.resolution,s=e.viewState.rotation,y=e.pixelRatio,v=Math.round(vi(a)/c*y),b=Math.round(Wi(a)/c*y);Vr(this.pixelTransform,e.size[0]/2,e.size[1]/2,1/y,1/y,s,-v/2,-b/2),Qx(this.inversePixelTransform,this.pixelTransform);let T=Jm(this.pixelTransform);if(this.useContainer(r,T,this.getBackground(e)),!this.containerReused){let C=this.context.canvas;C.width!=v||C.height!=b?(C.width=v,C.height=b):this.context.clearRect(0,0,v,b),T!==C.style.transform&&(C.style.transform=T)}}dispatchRenderEvent_(e,r,a){let c=this.getLayer();if(c.hasListener(e)){let s=new c1(e,this.inversePixelTransform,a,r);c.dispatchEvent(s)}}preRender(e,r){this.frameState=r,!r.declutter&&this.dispatchRenderEvent_(Us.PRERENDER,e,r)}postRender(e,r){r.declutter||this.dispatchRenderEvent_(Us.POSTRENDER,e,r)}renderDeferredInternal(e){}getRenderContext(e){return e.declutter&&!this.deferredContext_&&(this.deferredContext_=new tf),e.declutter?this.deferredContext_.getContext():this.context}renderDeferred(e){e.declutter&&(this.dispatchRenderEvent_(Us.PRERENDER,this.context,e),e.declutter&&this.deferredContext_&&(this.deferredContext_.draw(this.context),this.deferredContext_.clear()),this.renderDeferredInternal(e),this.dispatchRenderEvent_(Us.POSTRENDER,this.context,e))}getRenderTransform(e,r,a,c,s,y,v){let b=s/2,T=y/2,C=c/r,k=-C,O=-e[0]+v,G=-e[1];return Vr(this.tempTransform,b,T,C,k,-a,O,G)}disposeInternal(){delete this.frameState,super.disposeInternal()}},rf=Qy;function h1(h,e,r,a,c,s,y,v,b,T,C,k,O=!0){let G=h[e],J=h[e+1],le=0,he=0,fe=0,ye=0;function we(){le=G,he=J,e+=a,G=h[e],J=h[e+1],ye+=fe,fe=Math.sqrt((G-le)*(G-le)+(J-he)*(J-he))}do we();while(e<r-a&&ye+fe<s);let Ie=fe===0?0:(s-ye)/fe,Pe=Ir(le,G,Ie),Ee=Ir(he,J,Ie),Ge=e-a,Be=ye,Ae=s+v*b(T,c,C);for(;e<r-a&&ye+fe<Ae;)we();Ie=fe===0?0:(Ae-ye)/fe;let st=Ir(le,G,Ie),ct=Ir(he,J,Ie),rt=!1;if(O)if(k){let ot=[Pe,Ee,st,ct];Ip(ot,0,4,2,k,ot,ot),rt=ot[0]>ot[2]}else rt=Pe>st;let xt=Math.PI,Rt=[],at=Ge+a===e;e=Ge,fe=0,ye=Be,G=h[e],J=h[e+1];let gt;if(at){we(),gt=Math.atan2(J-he,G-le),rt&&(gt+=gt>0?-xt:xt);let ot=(st+Pe)/2,pt=(ct+Ee)/2;return Rt[0]=[ot,pt,(Ae-s)/2,gt,c],Rt}c=c.replace(/\n/g," ");for(let ot=0,pt=c.length;ot<pt;){we();let Pt=Math.atan2(J-he,G-le);if(rt&&(Pt+=Pt>0?-xt:xt),gt!==void 0){let ci=Pt-gt;if(ci+=ci>xt?-2*xt:ci<-xt?2*xt:0,Math.abs(ci)>y)return null}gt=Pt;let kt=ot,Lt=0;for(;ot<pt;++ot){let ci=rt?pt-ot-1:ot,di=v*b(T,c[ci],C);if(e+a<r&&ye+fe<s+Lt+di/2)break;Lt+=di}if(ot===kt)continue;let $t=rt?c.substring(pt-kt,pt-ot):c.substring(kt,ot);Ie=fe===0?0:(s+Lt/2-ye)/fe;let fi=Ir(le,G,Ie),$e=Ir(he,J,Ie);Rt.push([fi,$e,Lt/2,Pt,$t]),s+=Lt}return Rt}var Vc=xn(),Ia=[],Eo=[],To=[],Ca=[];function u1(h){return h[3].declutterBox}var d1=new RegExp("[\u0591-\u08FF\uFB1D-\uFDFF\uFE70-\uFEFC\u0800-\u0FFF\uE800-\uEFFF]");function t_(h,e){return e==="start"?e=d1.test(h)?"right":"left":e==="end"&&(e=d1.test(h)?"left":"right"),qu[e]}function jC(h,e,r){return r>0&&h.push(`
583
583
  `,""),h.push(e,""),h}var i_=class{constructor(e,r,a,c,s){this.overlaps=a,this.pixelRatio=r,this.resolution=e,this.alignAndScaleFill_,this.instructions=c.instructions,this.coordinates=c.coordinates,this.coordinateCache_={},this.renderedTransform_=sr(),this.hitDetectionInstructions=c.hitDetectionInstructions,this.pixelCoordinates_=null,this.viewRotation_=0,this.fillStates=c.fillStates||{},this.strokeStates=c.strokeStates||{},this.textStates=c.textStates||{},this.widths_={},this.labels_={},this.zIndexContext_=s?new tf:null}getZIndexContext(){return this.zIndexContext_}createLabel(e,r,a,c){let s=e+r+a+c;if(this.labels_[s])return this.labels_[s];let y=c?this.strokeStates[c]:null,v=a?this.fillStates[a]:null,b=this.textStates[r],T=this.pixelRatio,C=[b.scale[0]*T,b.scale[1]*T],k=b.justify?qu[b.justify]:t_(Array.isArray(e)?e[0]:e,b.textAlign||xa),O=c&&y.lineWidth?y.lineWidth:0,G=Array.isArray(e)?e:String(e).split(`
584
584
  `).reduce(jC,[]),{width:J,height:le,widths:he,heights:fe,lineWidths:ye}=zb(b,G),we=J+O,Ie=[],Pe=(we+2)*C[0],Ee=(le+O)*C[1],Ge={width:Pe<0?Math.floor(Pe):Math.ceil(Pe),height:Ee<0?Math.floor(Ee):Math.ceil(Ee),contextInstructions:Ie};(C[0]!=1||C[1]!=1)&&Ie.push("scale",C),c&&(Ie.push("strokeStyle",y.strokeStyle),Ie.push("lineWidth",O),Ie.push("lineCap",y.lineCap),Ie.push("lineJoin",y.lineJoin),Ie.push("miterLimit",y.miterLimit),Ie.push("setLineDash",[y.lineDash]),Ie.push("lineDashOffset",y.lineDashOffset)),a&&Ie.push("fillStyle",v.fillStyle),Ie.push("textBaseline","middle"),Ie.push("textAlign","center");let Be=.5-k,Ae=k*we+Be*O,st=[],ct=[],rt=0,xt=0,Rt=0,at=0,gt;for(let ot=0,pt=G.length;ot<pt;ot+=2){let Pt=G[ot];if(Pt===`
585
- `){xt+=rt,rt=0,Ae=k*we+Be*O,++at;continue}let kt=G[ot+1]||b.font;kt!==gt&&(c&&st.push("font",kt),a&&ct.push("font",kt),gt=kt),rt=Math.max(rt,fe[Rt]);let Lt=[Pt,Ae+Be*he[Rt]+k*(he[Rt]-ye[at]),.5*(O+rt)+xt];Ae+=he[Rt],c&&st.push("strokeText",Lt),a&&ct.push("fillText",Lt),++Rt}return Array.prototype.push.apply(Ie,st),Array.prototype.push.apply(Ie,ct),this.labels_[s]=Ge,Ge}replayTextBackground_(e,r,a,c,s,y,v){e.beginPath(),e.moveTo.apply(e,r),e.lineTo.apply(e,a),e.lineTo.apply(e,c),e.lineTo.apply(e,s),e.lineTo.apply(e,r),y&&(this.alignAndScaleFill_=y[2],this.fill_(e)),v&&(this.setStrokeStyle_(e,v),e.stroke())}calculateImageOrLabelDimensions_(e,r,a,c,s,y,v,b,T,C,k,O,G,J,le,he){v*=O[0],b*=O[1];let fe=a-v,ye=c-b,we=s+T>e?e-T:s,Ie=y+C>r?r-C:y,Pe=J[3]+we*O[0]+J[1],Ee=J[0]+Ie*O[1]+J[2],Ge=fe-J[3],Be=ye-J[0];(le||k!==0)&&(Ia[0]=Ge,Ca[0]=Ge,Ia[1]=Be,Eo[1]=Be,Eo[0]=Ge+Pe,To[0]=Eo[0],To[1]=Be+Ee,Ca[1]=To[1]);let Ae;return k!==0?(Ae=Vr(sr(),a,c,1,1,k,-a,-c),br(Ae,Ia),br(Ae,Eo),br(Ae,To),br(Ae,Ca),yo(Math.min(Ia[0],Eo[0],To[0],Ca[0]),Math.min(Ia[1],Eo[1],To[1],Ca[1]),Math.max(Ia[0],Eo[0],To[0],Ca[0]),Math.max(Ia[1],Eo[1],To[1],Ca[1]),Vc)):yo(Math.min(Ge,Ge+Pe),Math.min(Be,Be+Ee),Math.max(Ge,Ge+Pe),Math.max(Be,Be+Ee),Vc),G&&(fe=Math.round(fe),ye=Math.round(ye)),{drawImageX:fe,drawImageY:ye,drawImageW:we,drawImageH:Ie,originX:T,originY:C,declutterBox:{minX:Vc[0],minY:Vc[1],maxX:Vc[2],maxY:Vc[3],value:he},canvasTransform:Ae,scale:O}}replayImageOrLabel_(e,r,a,c,s,y,v){let b=!!(y||v),T=c.declutterBox,C=v?v[2]*c.scale[0]/2:0;return T.minX-C<=r[0]&&T.maxX+C>=0&&T.minY-C<=r[1]&&T.maxY+C>=0&&(b&&this.replayTextBackground_(e,Ia,Eo,To,Ca,y,v),Ob(e,c.canvasTransform,s,a,c.originX,c.originY,c.drawImageW,c.drawImageH,c.drawImageX,c.drawImageY,c.scale)),!0}fill_(e){let r=this.alignAndScaleFill_;if(r){let a=br(this.renderedTransform_,[0,0]),c=512*this.pixelRatio;e.save(),e.translate(a[0]%c,a[1]%c),r!==1&&e.scale(r,r),e.rotate(this.viewRotation_)}e.fill(),r&&e.restore()}setStrokeStyle_(e,r){e.strokeStyle=r[1],e.lineWidth=r[2],e.lineCap=r[3],e.lineJoin=r[4],e.miterLimit=r[5],e.lineDashOffset=r[7],e.setLineDash(r[6])}drawLabelWithPointPlacement_(e,r,a,c){let s=this.textStates[r],y=this.createLabel(e,r,c,a),v=this.strokeStates[a],b=this.pixelRatio,T=t_(Array.isArray(e)?e[0]:e,s.textAlign||xa),C=qu[s.textBaseline||pl],k=v&&v.lineWidth?v.lineWidth:0,O=y.width/b-2*s.scale[0],G=T*O+2*(.5-T)*k,J=C*y.height/b+2*(.5-C)*k;return{label:y,anchorX:G,anchorY:J}}execute_(e,r,a,c,s,y,v,b){let T=this.zIndexContext_,C;this.pixelCoordinates_&&yn(a,this.renderedTransform_)?C=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),C=vn(this.coordinates,0,this.coordinates.length,2,a,this.pixelCoordinates_),Yx(this.renderedTransform_,a));let k=0,O=c.length,G=0,J,le,he,fe,ye,we,Ie,Pe,Ee,Ge,Be,Ae,st,ct=0,rt=0,xt=null,Rt=null,at=this.coordinateCache_,gt=this.viewRotation_,ot=Math.round(Math.atan2(-a[1],a[0])*1e12)/1e12,pt={context:e,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:gt},Pt=this.instructions!=c||this.overlaps?0:200,kt,Lt,$t,fi;for(;k<O;){let $e=c[k];switch($e[0]){case dt.BEGIN_GEOMETRY:kt=$e[1],fi=$e[3],kt.getGeometry()?v!==void 0&&!Vi(v,fi.getExtent())?k=$e[2]+1:++k:k=$e[2],T&&(T.zIndex=$e[4]);break;case dt.BEGIN_PATH:ct>Pt&&(this.fill_(e),ct=0),rt>Pt&&(e.stroke(),rt=0),!ct&&!rt&&(e.beginPath(),ye=NaN,we=NaN),++k;break;case dt.CIRCLE:G=$e[1];let di=C[G],ur=C[G+1],dr=C[G+2],rn=C[G+3],ji=dr-di,nn=rn-ur,sn=Math.sqrt(ji*ji+nn*nn);e.moveTo(di+sn,ur),e.arc(di,ur,sn,0,2*Math.PI,!0),++k;break;case dt.CLOSE_PATH:e.closePath(),++k;break;case dt.CUSTOM:G=$e[1],J=$e[2];let Pn=$e[3],ve=$e[4],An=$e[5];pt.geometry=Pn,pt.feature=kt,k in at||(at[k]=[]);let pr=at[k];An?An(C,G,J,2,pr):(pr[0]=C[G],pr[1]=C[G+1],pr.length=2),T&&(T.zIndex=$e[6]),ve(pr,pt),++k;break;case dt.DRAW_IMAGE:G=$e[1],J=$e[2],Ee=$e[3],le=$e[4],he=$e[5];let bt=$e[6],Zt=$e[7],Rn=$e[8],on=$e[9],Ar=$e[10],an=$e[11],fr=$e[12],Yn=$e[13];fe=$e[14]||"declutter";let kn=$e[15];if(!Ee&&$e.length>=20){Ge=$e[19],Be=$e[20],Ae=$e[21],st=$e[22];let ae=this.drawLabelWithPointPlacement_(Ge,Be,Ae,st);Ee=ae.label,$e[3]=Ee;let de=$e[23];le=(ae.anchorX-de)*this.pixelRatio,$e[4]=le;let ie=$e[24];he=(ae.anchorY-ie)*this.pixelRatio,$e[5]=he,bt=Ee.height,$e[6]=bt,Yn=Ee.width,$e[13]=Yn}let De;$e.length>25&&(De=$e[25]);let Rr,Ei,mr;$e.length>17?(Rr=$e[16],Ei=$e[17],mr=$e[18]):(Rr=wo,Ei=!1,mr=!1),Ar&&ot?an+=gt:!Ar&&!ot&&(an-=gt);let Jn=0;for(;G<J;G+=2){if(De&&De[Jn++]<Yn/this.pixelRatio)continue;let ae=this.calculateImageOrLabelDimensions_(Ee.width,Ee.height,C[G],C[G+1],Yn,bt,le,he,Rn,on,an,fr,s,Rr,Ei||mr,kt),de=[e,r,Ee,ae,Zt,Ei?xt:null,mr?Rt:null];if(b){let ie,xe,Se;if(kn){let Ne=J-G;if(!kn[Ne]){kn[Ne]={args:de,declutterMode:fe};continue}let Ke=kn[Ne];ie=Ke.args,xe=Ke.declutterMode,delete kn[Ne],Se=u1(ie)}let _e,ke;if(ie&&(xe!=="declutter"||!b.collides(Se))&&(_e=!0),(fe!=="declutter"||!b.collides(ae.declutterBox))&&(ke=!0),xe==="declutter"&&fe==="declutter"){let Ne=_e&&ke;_e=Ne,ke=Ne}_e&&(xe!=="none"&&b.insert(Se),this.replayImageOrLabel_.apply(this,ie)),ke&&(fe!=="none"&&b.insert(ae.declutterBox),this.replayImageOrLabel_.apply(this,de))}else this.replayImageOrLabel_.apply(this,de)}++k;break;case dt.DRAW_CHARS:let Fe=$e[1],St=$e[2],ht=$e[3],Ki=$e[4];st=$e[5];let qr=$e[6],yt=$e[7],$r=$e[8];Ae=$e[9];let Wr=$e[10];Ge=$e[11],Be=$e[12];let Ln=[$e[13],$e[13]];fe=$e[14]||"declutter";let ln=$e[15],Q=this.textStates[Be],N=Q.font,B=[Q.scale[0]*yt,Q.scale[1]*yt],q;N in this.widths_?q=this.widths_[N]:(q={},this.widths_[N]=q);let X=Ap(C,Fe,St,2),se=Math.abs(B[0])*wy(N,Ge,q);if(Ki||se<=X){let ae=this.textStates[Be].textAlign,de=(X-se)*t_(Ge,ae),ie=h1(C,Fe,St,2,Ge,de,qr,Math.abs(B[0]),wy,N,q,ot?0:this.viewRotation_,ln);e:if(ie){let xe=[],Se,_e,ke,Ne,Ke;if(Ae)for(Se=0,_e=ie.length;Se<_e;++Se){Ke=ie[Se],ke=Ke[4],Ne=this.createLabel(ke,Be,"",Ae),le=Ke[2]+(B[0]<0?-Wr:Wr),he=ht*Ne.height+(.5-ht)*2*Wr*B[1]/B[0]-$r;let Ct=this.calculateImageOrLabelDimensions_(Ne.width,Ne.height,Ke[0],Ke[1],Ne.width,Ne.height,le,he,0,0,Ke[3],Ln,!1,wo,!1,kt);if(b&&fe==="declutter"&&b.collides(Ct.declutterBox))break e;xe.push([e,r,Ne,Ct,1,null,null])}if(st)for(Se=0,_e=ie.length;Se<_e;++Se){Ke=ie[Se],ke=Ke[4],Ne=this.createLabel(ke,Be,st,""),le=Ke[2],he=ht*Ne.height-$r;let Ct=this.calculateImageOrLabelDimensions_(Ne.width,Ne.height,Ke[0],Ke[1],Ne.width,Ne.height,le,he,0,0,Ke[3],Ln,!1,wo,!1,kt);if(b&&fe==="declutter"&&b.collides(Ct.declutterBox))break e;xe.push([e,r,Ne,Ct,1,null,null])}b&&fe!=="none"&&b.load(xe.map(u1));for(let Ct=0,vt=xe.length;Ct<vt;++Ct)this.replayImageOrLabel_.apply(this,xe[Ct])}}++k;break;case dt.END_GEOMETRY:if(y!==void 0){kt=$e[1];let ae=y(kt,fi,fe);if(ae)return ae}++k;break;case dt.FILL:Pt?ct++:this.fill_(e),++k;break;case dt.MOVE_TO_LINE_TO:for(G=$e[1],J=$e[2],Lt=C[G],$t=C[G+1],e.moveTo(Lt,$t),ye=Lt+.5|0,we=$t+.5|0,G+=2;G<J;G+=2)Lt=C[G],$t=C[G+1],Ie=Lt+.5|0,Pe=$t+.5|0,(G==J-2||Ie!==ye||Pe!==we)&&(e.lineTo(Lt,$t),ye=Ie,we=Pe);++k;break;case dt.SET_FILL_STYLE:xt=$e,this.alignAndScaleFill_=$e[2],ct&&(this.fill_(e),ct=0,rt&&(e.stroke(),rt=0)),e.fillStyle=$e[1],++k;break;case dt.SET_STROKE_STYLE:Rt=$e,rt&&(e.stroke(),rt=0),this.setStrokeStyle_(e,$e),++k;break;case dt.STROKE:Pt?rt++:e.stroke(),++k;break;default:++k;break}}ct&&this.fill_(e),rt&&e.stroke()}execute(e,r,a,c,s,y){this.viewRotation_=c,this.execute_(e,r,a,this.instructions,s,void 0,void 0,y)}executeHitDetection(e,r,a,c,s){return this.viewRotation_=a,this.execute_(e,[e.canvas.width,e.canvas.height],r,this.hitDetectionInstructions,!0,c,s)}},p1=i_;var gl=["Polygon","Circle","LineString","Image","Text","Default"],s_=["Image","Text"],f1=gl.filter(h=>!s_.includes(h)),n_=class{constructor(e,r,a,c,s,y,v){this.maxExtent_=e,this.overlaps_=c,this.pixelRatio_=a,this.resolution_=r,this.renderBuffer_=y,this.executorsByZIndex_={},this.hitDetectionContext_=null,this.hitDetectionTransform_=sr(),this.renderedContext_=null,this.deferredZIndexContexts_={},this.createExecutors_(s,v)}clip(e,r){let a=this.getClipCoords(r);e.beginPath(),e.moveTo(a[0],a[1]),e.lineTo(a[2],a[3]),e.lineTo(a[4],a[5]),e.lineTo(a[6],a[7]),e.clip()}createExecutors_(e,r){for(let a in e){let c=this.executorsByZIndex_[a];c===void 0&&(c={},this.executorsByZIndex_[a]=c);let s=e[a];for(let y in s){let v=s[y];c[y]=new p1(this.resolution_,this.pixelRatio_,this.overlaps_,v,r)}}}hasExecutors(e){for(let r in this.executorsByZIndex_){let a=this.executorsByZIndex_[r];for(let c=0,s=e.length;c<s;++c)if(e[c]in a)return!0}return!1}forEachFeatureAtCoordinate(e,r,a,c,s,y){c=Math.round(c);let v=c*2+1,b=Vr(this.hitDetectionTransform_,c+.5,c+.5,1/r,-1/r,-a,-e[0],-e[1]),T=!this.hitDetectionContext_;T&&(this.hitDetectionContext_=Ri(v,v,void 0,{willReadFrequently:!0}));let C=this.hitDetectionContext_;C.canvas.width!==v||C.canvas.height!==v?(C.canvas.width=v,C.canvas.height=v):T||C.clearRect(0,0,v,v);let k;this.renderBuffer_!==void 0&&(k=xn(),ng(k,e),os(k,r*(this.renderBuffer_+c),k));let O=GC(c),G;function J(Pe,Ee,Ge){let Be=C.getImageData(0,0,v,v).data;for(let Ae=0,st=O.length;Ae<st;Ae++)if(Be[O[Ae]]>0){if(!y||Ge==="none"||G!=="Image"&&G!=="Text"||y.includes(Pe)){let ct=(O[Ae]-3)/4,rt=c-ct%v,xt=c-(ct/v|0),Rt=s(Pe,Ee,rt*rt+xt*xt);if(Rt)return Rt}C.clearRect(0,0,v,v);break}}let le=Object.keys(this.executorsByZIndex_).map(Number);le.sort(xs);let he,fe,ye,we,Ie;for(he=le.length-1;he>=0;--he){let Pe=le[he].toString();for(ye=this.executorsByZIndex_[Pe],fe=gl.length-1;fe>=0;--fe)if(G=gl[fe],we=ye[G],we!==void 0&&(Ie=we.executeHitDetection(C,b,a,J,k),Ie))return Ie}}getClipCoords(e){let r=this.maxExtent_;if(!r)return null;let a=r[0],c=r[1],s=r[2],y=r[3],v=[a,c,a,y,s,y,s,c];return vn(v,0,8,2,e,v),v}isEmpty(){return Wn(this.executorsByZIndex_)}execute(e,r,a,c,s,y,v){let b=Object.keys(this.executorsByZIndex_).map(Number);b.sort(v?iv:xs),y=y||gl;let T=gl.length;for(let C=0,k=b.length;C<k;++C){let O=b[C].toString(),G=this.executorsByZIndex_[O];for(let J=0,le=y.length;J<le;++J){let he=y[J],fe=G[he];if(fe!==void 0){let ye=v===null?void 0:fe.getZIndexContext(),we=ye?ye.getContext():e,Ie=this.maxExtent_&&he!=="Image"&&he!=="Text";if(Ie&&(we.save(),this.clip(we,a)),!ye||he==="Text"||he==="Image"?fe.execute(we,r,a,c,s,v):ye.pushFunction(Pe=>fe.execute(Pe,r,a,c,s,v)),Ie&&we.restore(),ye){ye.offset();let Pe=b[C]*T+J;this.deferredZIndexContexts_[Pe]||(this.deferredZIndexContexts_[Pe]=[]),this.deferredZIndexContexts_[Pe].push(ye)}}}}this.renderedContext_=e}getDeferredZIndexContexts(){return this.deferredZIndexContexts_}getRenderedContext(){return this.renderedContext_}renderDeferred(){let e=this.deferredZIndexContexts_,r=Object.keys(e).map(Number).sort(xs);for(let a=0,c=r.length;a<c;++a)e[r[a]].forEach(s=>{s.draw(this.renderedContext_),s.clear()}),e[r[a]].length=0}},r_={};function GC(h){if(r_[h]!==void 0)return r_[h];let e=h*2+1,r=h*h,a=new Array(r+1);for(let s=0;s<=h;++s)for(let y=0;y<=h;++y){let v=s*s+y*y;if(v>r)break;let b=a[v];b||(b=[],a[v]=b),b.push(((h+s)*e+(h+y))*4+3),s>0&&b.push(((h-s)*e+(h+y))*4+3),y>0&&(b.push(((h+s)*e+(h-y))*4+3),s>0&&b.push(((h-s)*e+(h-y))*4+3))}let c=[];for(let s=0,y=a.length;s<y;++s)a[s]&&c.push(...a[s]);return r_[h]=c,c}var m1=n_;var o_=class extends ef{constructor(e,r,a,c,s,y,v){super(),this.context_=e,this.pixelRatio_=r,this.extent_=a,this.transform_=c,this.transformRotation_=c?_v(Math.atan2(c[1],c[0]),10):0,this.viewRotation_=s,this.squaredTolerance_=y,this.userTransform_=v,this.contextFillState_=null,this.contextStrokeState_=null,this.contextTextState_=null,this.fillState_=null,this.strokeState_=null,this.image_=null,this.imageAnchorX_=0,this.imageAnchorY_=0,this.imageHeight_=0,this.imageOpacity_=0,this.imageOriginX_=0,this.imageOriginY_=0,this.imageRotateWithView_=!1,this.imageRotation_=0,this.imageScale_=[0,0],this.imageWidth_=0,this.text_="",this.textOffsetX_=0,this.textOffsetY_=0,this.textRotateWithView_=!1,this.textRotation_=0,this.textScale_=[0,0],this.textFillState_=null,this.textStrokeState_=null,this.textState_=null,this.pixelCoordinates_=[],this.tmpLocalTransform_=sr()}drawImages_(e,r,a,c){if(!this.image_)return;let s=vn(e,r,a,c,this.transform_,this.pixelCoordinates_),y=this.context_,v=this.tmpLocalTransform_,b=y.globalAlpha;this.imageOpacity_!=1&&(y.globalAlpha=b*this.imageOpacity_);let T=this.imageRotation_;this.transformRotation_===0&&(T-=this.viewRotation_),this.imageRotateWithView_&&(T+=this.viewRotation_);for(let C=0,k=s.length;C<k;C+=2){let O=s[C]-this.imageAnchorX_,G=s[C+1]-this.imageAnchorY_;if(T!==0||this.imageScale_[0]!=1||this.imageScale_[1]!=1){let J=O+this.imageAnchorX_,le=G+this.imageAnchorY_;Vr(v,J,le,1,1,T,-J,-le),y.save(),y.transform.apply(y,v),y.translate(J,le),y.scale(this.imageScale_[0],this.imageScale_[1]),y.drawImage(this.image_,this.imageOriginX_,this.imageOriginY_,this.imageWidth_,this.imageHeight_,-this.imageAnchorX_,-this.imageAnchorY_,this.imageWidth_,this.imageHeight_),y.restore()}else y.drawImage(this.image_,this.imageOriginX_,this.imageOriginY_,this.imageWidth_,this.imageHeight_,O,G,this.imageWidth_,this.imageHeight_)}this.imageOpacity_!=1&&(y.globalAlpha=b)}drawText_(e,r,a,c){if(!this.textState_||this.text_==="")return;this.textFillState_&&this.setContextFillState_(this.textFillState_),this.textStrokeState_&&this.setContextStrokeState_(this.textStrokeState_),this.setContextTextState_(this.textState_);let s=vn(e,r,a,c,this.transform_,this.pixelCoordinates_),y=this.context_,v=this.textRotation_;for(this.transformRotation_===0&&(v-=this.viewRotation_),this.textRotateWithView_&&(v+=this.viewRotation_);r<a;r+=c){let b=s[r]+this.textOffsetX_,T=s[r+1]+this.textOffsetY_;v!==0||this.textScale_[0]!=1||this.textScale_[1]!=1?(y.save(),y.translate(b-this.textOffsetX_,T-this.textOffsetY_),y.rotate(v),y.translate(this.textOffsetX_,this.textOffsetY_),y.scale(this.textScale_[0],this.textScale_[1]),this.textStrokeState_&&y.strokeText(this.text_,0,0),this.textFillState_&&y.fillText(this.text_,0,0),y.restore()):(this.textStrokeState_&&y.strokeText(this.text_,b,T),this.textFillState_&&y.fillText(this.text_,b,T))}}moveToLineTo_(e,r,a,c,s){let y=this.context_,v=vn(e,r,a,c,this.transform_,this.pixelCoordinates_);y.moveTo(v[0],v[1]);let b=v.length;s&&(b-=2);for(let T=2;T<b;T+=2)y.lineTo(v[T],v[T+1]);return s&&y.closePath(),a}drawRings_(e,r,a,c){for(let s=0,y=a.length;s<y;++s)r=this.moveToLineTo_(e,r,a[s],c,!0);return r}drawCircle(e){if(this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!Vi(this.extent_,e.getExtent())){if(this.fillState_||this.strokeState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);let r=qv(e,this.transform_,this.pixelCoordinates_),a=r[2]-r[0],c=r[3]-r[1],s=Math.sqrt(a*a+c*c),y=this.context_;y.beginPath(),y.arc(r[0],r[1],s,0,2*Math.PI),this.fillState_&&y.fill(),this.strokeState_&&y.stroke()}this.text_!==""&&this.drawText_(e.getCenter(),0,2,2)}}setStyle(e){this.setFillStrokeStyle(e.getFill(),e.getStroke()),this.setImageStyle(e.getImage()),this.setTextStyle(e.getText())}setTransform(e){this.transform_=e}drawGeometry(e){switch(e.getType()){case"Point":this.drawPoint(e);break;case"LineString":this.drawLineString(e);break;case"Polygon":this.drawPolygon(e);break;case"MultiPoint":this.drawMultiPoint(e);break;case"MultiLineString":this.drawMultiLineString(e);break;case"MultiPolygon":this.drawMultiPolygon(e);break;case"GeometryCollection":this.drawGeometryCollection(e);break;case"Circle":this.drawCircle(e);break;default:}}drawFeature(e,r){let a=r.getGeometryFunction()(e);a&&(this.setStyle(r),this.drawGeometry(a))}drawGeometryCollection(e){let r=e.getGeometriesArray();for(let a=0,c=r.length;a<c;++a)this.drawGeometry(r[a])}drawPoint(e){this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_));let r=e.getFlatCoordinates(),a=e.getStride();this.image_&&this.drawImages_(r,0,r.length,a),this.text_!==""&&this.drawText_(r,0,r.length,a)}drawMultiPoint(e){this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_));let r=e.getFlatCoordinates(),a=e.getStride();this.image_&&this.drawImages_(r,0,r.length,a),this.text_!==""&&this.drawText_(r,0,r.length,a)}drawLineString(e){if(this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!Vi(this.extent_,e.getExtent())){if(this.strokeState_){this.setContextStrokeState_(this.strokeState_);let r=this.context_,a=e.getFlatCoordinates();r.beginPath(),this.moveToLineTo_(a,0,a.length,e.getStride(),!1),r.stroke()}if(this.text_!==""){let r=e.getFlatMidpoint();this.drawText_(r,0,2,2)}}}drawMultiLineString(e){this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_));let r=e.getExtent();if(Vi(this.extent_,r)){if(this.strokeState_){this.setContextStrokeState_(this.strokeState_);let a=this.context_,c=e.getFlatCoordinates(),s=0,y=e.getEnds(),v=e.getStride();a.beginPath();for(let b=0,T=y.length;b<T;++b)s=this.moveToLineTo_(c,s,y[b],v,!1);a.stroke()}if(this.text_!==""){let a=e.getFlatMidpoints();this.drawText_(a,0,a.length,2)}}}drawPolygon(e){if(this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!Vi(this.extent_,e.getExtent())){if(this.strokeState_||this.fillState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);let r=this.context_;r.beginPath(),this.drawRings_(e.getOrientedFlatCoordinates(),0,e.getEnds(),e.getStride()),this.fillState_&&r.fill(),this.strokeState_&&r.stroke()}if(this.text_!==""){let r=e.getFlatInteriorPoint();this.drawText_(r,0,2,2)}}}drawMultiPolygon(e){if(this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!Vi(this.extent_,e.getExtent())){if(this.strokeState_||this.fillState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);let r=this.context_,a=e.getOrientedFlatCoordinates(),c=0,s=e.getEndss(),y=e.getStride();r.beginPath();for(let v=0,b=s.length;v<b;++v){let T=s[v];c=this.drawRings_(a,c,T,y)}this.fillState_&&r.fill(),this.strokeState_&&r.stroke()}if(this.text_!==""){let r=e.getFlatInteriorPoints();this.drawText_(r,0,r.length,2)}}}setContextFillState_(e){let r=this.context_,a=this.contextFillState_;a?a.fillStyle!=e.fillStyle&&(a.fillStyle=e.fillStyle,r.fillStyle=e.fillStyle):(r.fillStyle=e.fillStyle,this.contextFillState_={fillStyle:e.fillStyle})}setContextStrokeState_(e){let r=this.context_,a=this.contextStrokeState_;a?(a.lineCap!=e.lineCap&&(a.lineCap=e.lineCap,r.lineCap=e.lineCap),yn(a.lineDash,e.lineDash)||r.setLineDash(a.lineDash=e.lineDash),a.lineDashOffset!=e.lineDashOffset&&(a.lineDashOffset=e.lineDashOffset,r.lineDashOffset=e.lineDashOffset),a.lineJoin!=e.lineJoin&&(a.lineJoin=e.lineJoin,r.lineJoin=e.lineJoin),a.lineWidth!=e.lineWidth&&(a.lineWidth=e.lineWidth,r.lineWidth=e.lineWidth),a.miterLimit!=e.miterLimit&&(a.miterLimit=e.miterLimit,r.miterLimit=e.miterLimit),a.strokeStyle!=e.strokeStyle&&(a.strokeStyle=e.strokeStyle,r.strokeStyle=e.strokeStyle)):(r.lineCap=e.lineCap,r.setLineDash(e.lineDash),r.lineDashOffset=e.lineDashOffset,r.lineJoin=e.lineJoin,r.lineWidth=e.lineWidth,r.miterLimit=e.miterLimit,r.strokeStyle=e.strokeStyle,this.contextStrokeState_={lineCap:e.lineCap,lineDash:e.lineDash,lineDashOffset:e.lineDashOffset,lineJoin:e.lineJoin,lineWidth:e.lineWidth,miterLimit:e.miterLimit,strokeStyle:e.strokeStyle})}setContextTextState_(e){let r=this.context_,a=this.contextTextState_,c=e.textAlign?e.textAlign:xa;a?(a.font!=e.font&&(a.font=e.font,r.font=e.font),a.textAlign!=c&&(a.textAlign=c,r.textAlign=c),a.textBaseline!=e.textBaseline&&(a.textBaseline=e.textBaseline,r.textBaseline=e.textBaseline)):(r.font=e.font,r.textAlign=c,r.textBaseline=e.textBaseline,this.contextTextState_={font:e.font,textAlign:c,textBaseline:e.textBaseline})}setFillStrokeStyle(e,r){if(!e)this.fillState_=null;else{let a=e.getColor();this.fillState_={fillStyle:Sn(a||Hi)}}if(!r)this.strokeState_=null;else{let a=r.getColor(),c=r.getLineCap(),s=r.getLineDash(),y=r.getLineDashOffset(),v=r.getLineJoin(),b=r.getWidth(),T=r.getMiterLimit(),C=s||In;this.strokeState_={lineCap:c!==void 0?c:$s,lineDash:this.pixelRatio_===1?C:C.map(k=>k*this.pixelRatio_),lineDashOffset:(y||Cn)*this.pixelRatio_,lineJoin:v!==void 0?v:Ws,lineWidth:(b!==void 0?b:So)*this.pixelRatio_,miterLimit:T!==void 0?T:vo,strokeStyle:Sn(a||bo)}}}setImageStyle(e){let r;if(!e||!(r=e.getSize())){this.image_=null;return}let a=e.getPixelRatio(this.pixelRatio_),c=e.getAnchor(),s=e.getOrigin();this.image_=e.getImage(this.pixelRatio_),this.imageAnchorX_=c[0]*a,this.imageAnchorY_=c[1]*a,this.imageHeight_=r[1]*a,this.imageOpacity_=e.getOpacity(),this.imageOriginX_=s[0],this.imageOriginY_=s[1],this.imageRotateWithView_=e.getRotateWithView(),this.imageRotation_=e.getRotation();let y=e.getScaleArray();this.imageScale_=[y[0]*this.pixelRatio_/a,y[1]*this.pixelRatio_/a],this.imageWidth_=r[0]*a}setTextStyle(e){if(!e)this.text_="";else{let r=e.getFill();if(!r)this.textFillState_=null;else{let G=r.getColor();this.textFillState_={fillStyle:Sn(G||Hi)}}let a=e.getStroke();if(!a)this.textStrokeState_=null;else{let G=a.getColor(),J=a.getLineCap(),le=a.getLineDash(),he=a.getLineDashOffset(),fe=a.getLineJoin(),ye=a.getWidth(),we=a.getMiterLimit();this.textStrokeState_={lineCap:J!==void 0?J:$s,lineDash:le||In,lineDashOffset:he||Cn,lineJoin:fe!==void 0?fe:Ws,lineWidth:ye!==void 0?ye:So,miterLimit:we!==void 0?we:vo,strokeStyle:Sn(G||bo)}}let c=e.getFont(),s=e.getOffsetX(),y=e.getOffsetY(),v=e.getRotateWithView(),b=e.getRotation(),T=e.getScaleArray(),C=e.getText(),k=e.getTextAlign(),O=e.getTextBaseline();this.textState_={font:c!==void 0?c:qp,textAlign:k!==void 0?k:xa,textBaseline:O!==void 0?O:pl},this.text_=C!==void 0?Array.isArray(C)?C.reduce((G,J,le)=>G+=le%2?" ":J,""):C:"",this.textOffsetX_=s!==void 0?this.pixelRatio_*s:0,this.textOffsetY_=y!==void 0?this.pixelRatio_*y:0,this.textRotateWithView_=v!==void 0?v:!1,this.textRotation_=b!==void 0?b:0,this.textScale_=[this.pixelRatio_*T[0],this.pixelRatio_*T[1]]}}},g1=o_;var As=.5;function y1(h,e,r,a,c,s,y,v,b){let T=b?js(c,b):c,C=h[0]*As,k=h[1]*As,O=Ri(C,k);O.imageSmoothingEnabled=!1;let G=O.canvas,J=new g1(O,As,c,null,y,v,b?Cc(Zn(),b):null),le=r.length,he=Math.floor((256*256*256-1)/le),fe={};for(let we=1;we<=le;++we){let Ie=r[we-1],Pe=Ie.getStyleFunction()||a;if(!Pe)continue;let Ee=Pe(Ie,s);if(!Ee)continue;Array.isArray(Ee)||(Ee=[Ee]);let Be=(we*he).toString(16).padStart(7,"#00000");for(let Ae=0,st=Ee.length;Ae<st;++Ae){let ct=Ee[Ae],rt=ct.getGeometryFunction()(Ie);if(!rt||!Vi(T,rt.getExtent()))continue;let xt=ct.clone(),Rt=xt.getFill();Rt&&Rt.setColor(Be);let at=xt.getStroke();at&&(at.setColor(Be),at.setLineDash(null)),xt.setText(void 0);let gt=ct.getImage();if(gt){let kt=gt.getImageSize();if(!kt)continue;let Lt=Ri(kt[0],kt[1],void 0,{alpha:!1}),$t=Lt.canvas;Lt.fillStyle=Be,Lt.fillRect(0,0,$t.width,$t.height),xt.setImage(new Du({img:$t,anchor:gt.getAnchor(),anchorXUnits:"pixels",anchorYUnits:"pixels",offset:gt.getOrigin(),opacity:1,size:gt.getSize(),scale:gt.getScale(),rotation:gt.getRotation(),rotateWithView:gt.getRotateWithView()}))}let ot=xt.getZIndex()||0,pt=fe[ot];pt||(pt={},fe[ot]=pt,pt.Polygon=[],pt.Circle=[],pt.LineString=[],pt.Point=[]);let Pt=rt.getType();if(Pt==="GeometryCollection"){let kt=rt.getGeometriesArrayRecursive();for(let Lt=0,$t=kt.length;Lt<$t;++Lt){let fi=kt[Lt];pt[fi.getType().replace("Multi","")].push(fi,xt)}}else pt[Pt.replace("Multi","")].push(rt,xt)}}let ye=Object.keys(fe).map(Number).sort(xs);for(let we=0,Ie=ye.length;we<Ie;++we){let Pe=fe[ye[we]];for(let Ee in Pe){let Ge=Pe[Ee];for(let Be=0,Ae=Ge.length;Be<Ae;Be+=2){J.setStyle(Ge[Be+1]);for(let st=0,ct=e.length;st<ct;++st)J.setTransform(e[st]),J.drawGeometry(Ge[Be])}}}return O.getImageData(0,0,G.width,G.height)}function _1(h,e,r){let a=[];if(r){let c=Math.floor(Math.round(h[0])*As),s=Math.floor(Math.round(h[1])*As),y=(Ii(c,0,r.width-1)+Ii(s,0,r.height-1)*r.width)*4,v=r.data[y],b=r.data[y+1],C=r.data[y+2]+256*(b+256*v),k=Math.floor((256*256*256-1)/e.length);C&&C%k===0&&a.push(e[C/k-1])}return a}var UC=.5,x1={Point:KC,LineString:ZC,Polygon:JC,MultiPoint:YC,MultiLineString:XC,MultiPolygon:HC,GeometryCollection:WC,Circle:qC};function v1(h,e){return parseInt(Vt(h),10)-parseInt(Vt(e),10)}function a_(h,e){let r=l_(h,e);return r*r}function l_(h,e){return UC*h/e}function qC(h,e,r,a,c){let s=r.getFill(),y=r.getStroke();if(s||y){let b=h.getBuilder(r.getZIndex(),"Circle");b.setFillStrokeStyle(s,y),b.drawCircle(e,a,c)}let v=r.getText();if(v&&v.getText()){let b=h.getBuilder(r.getZIndex(),"Text");b.setTextStyle(v),b.drawText(e,a)}}function c_(h,e,r,a,c,s,y,v){let b=[],T=r.getImage();if(T){let O=!0,G=T.getImageState();G==It.LOADED||G==It.ERROR?O=!1:G==It.IDLE&&T.load(),O&&b.push(T.ready())}let C=r.getFill();C&&C.loading()&&b.push(C.ready());let k=b.length>0;return k&&Promise.all(b).then(()=>c(null)),$C(h,e,r,a,s,y,v),k}function $C(h,e,r,a,c,s,y){let v=r.getGeometryFunction()(e);if(!v)return;let b=v.simplifyTransformed(a,c);if(r.getRenderer())b1(h,b,r,e,y);else{let C=x1[b.getType()];C(h,b,r,e,y,s)}}function b1(h,e,r,a,c){if(e.getType()=="GeometryCollection"){let y=e.getGeometries();for(let v=0,b=y.length;v<b;++v)b1(h,y[v],r,a,c);return}h.getBuilder(r.getZIndex(),"Default").drawCustom(e,a,r.getRenderer(),r.getHitDetectionRenderer(),c)}function WC(h,e,r,a,c,s){let y=e.getGeometriesArray(),v,b;for(v=0,b=y.length;v<b;++v){let T=x1[y[v].getType()];T(h,y[v],r,a,c,s)}}function ZC(h,e,r,a,c){let s=r.getStroke();if(s){let v=h.getBuilder(r.getZIndex(),"LineString");v.setFillStrokeStyle(null,s),v.drawLineString(e,a,c)}let y=r.getText();if(y&&y.getText()){let v=h.getBuilder(r.getZIndex(),"Text");v.setTextStyle(y),v.drawText(e,a,c)}}function XC(h,e,r,a,c){let s=r.getStroke();if(s){let v=h.getBuilder(r.getZIndex(),"LineString");v.setFillStrokeStyle(null,s),v.drawMultiLineString(e,a,c)}let y=r.getText();if(y&&y.getText()){let v=h.getBuilder(r.getZIndex(),"Text");v.setTextStyle(y),v.drawText(e,a,c)}}function HC(h,e,r,a,c){let s=r.getFill(),y=r.getStroke();if(y||s){let b=h.getBuilder(r.getZIndex(),"Polygon");b.setFillStrokeStyle(s,y),b.drawMultiPolygon(e,a,c)}let v=r.getText();if(v&&v.getText()){let b=h.getBuilder(r.getZIndex(),"Text");b.setTextStyle(v),b.drawText(e,a,c)}}function KC(h,e,r,a,c,s){let y=r.getImage(),v=r.getText(),b=v&&v.getText(),T=s&&y&&b?{}:void 0;if(y){if(y.getImageState()!=It.LOADED)return;let C=h.getBuilder(r.getZIndex(),"Image");C.setImageStyle(y,T),C.drawPoint(e,a,c)}if(b){let C=h.getBuilder(r.getZIndex(),"Text");C.setTextStyle(v,T),C.drawText(e,a,c)}}function YC(h,e,r,a,c,s){let y=r.getImage(),v=y&&y.getOpacity()!==0,b=r.getText(),T=b&&b.getText(),C=s&&v&&T?{}:void 0;if(v){if(y.getImageState()!=It.LOADED)return;let k=h.getBuilder(r.getZIndex(),"Image");k.setImageStyle(y,C),k.drawMultiPoint(e,a,c)}if(T){let k=h.getBuilder(r.getZIndex(),"Text");k.setTextStyle(b,C),k.drawText(e,a,c)}}function JC(h,e,r,a,c){let s=r.getFill(),y=r.getStroke();if(s||y){let b=h.getBuilder(r.getZIndex(),"Polygon");b.setFillStrokeStyle(s,y),b.drawPolygon(e,a,c)}let v=r.getText();if(v&&v.getText()){let b=h.getBuilder(r.getZIndex(),"Text");b.setTextStyle(v),b.drawText(e,a,c)}}var h_=class extends rf{constructor(e){super(e),this.boundHandleStyleImageChange_=this.handleStyleImageChange_.bind(this),this.animatingOrInteracting_,this.hitDetectionImageData_=null,this.clipped_=!1,this.renderedFeatures_=null,this.renderedRevision_=-1,this.renderedResolution_=NaN,this.renderedExtent_=xn(),this.wrappedRenderedExtent_=xn(),this.renderedRotation_,this.renderedCenter_=null,this.renderedProjection_=null,this.renderedPixelRatio_=1,this.renderedRenderOrder_=null,this.renderedFrameDeclutter_,this.replayGroup_=null,this.replayGroupChanged=!0,this.clipping=!0,this.targetContext_=null,this.opacity_=1}renderWorlds(e,r,a){let c=r.extent,s=r.viewState,y=s.center,v=s.resolution,b=s.projection,T=s.rotation,C=b.getExtent(),k=this.getLayer().getSource(),O=this.getLayer().getDeclutter(),G=r.pixelRatio,J=r.viewHints,le=!(J[bn.ANIMATING]||J[bn.INTERACTING]),he=this.context,fe=Math.round(vi(c)/v*G),ye=Math.round(Wi(c)/v*G),we=k.getWrapX()&&b.canWrapX(),Ie=we?vi(C):null,Pe=we?Math.ceil((c[2]-C[2])/Ie)+1:1,Ee=we?Math.floor((c[0]-C[0])/Ie):0;do{let Ge=this.getRenderTransform(y,v,0,G,fe,ye,Ee*Ie);r.declutter&&(Ge=Ge.slice(0)),e.execute(he,[he.canvas.width,he.canvas.height],Ge,T,le,a===void 0?gl:a?s_:f1,a?O&&r.declutter[O]:void 0)}while(++Ee<Pe)}setDrawContext_(){this.opacity_!==1&&(this.targetContext_=this.context,this.context=Ri(this.context.canvas.width,this.context.canvas.height,e_))}resetDrawContext_(){if(this.opacity_!==1){let e=this.targetContext_.globalAlpha;this.targetContext_.globalAlpha=this.opacity_,this.targetContext_.drawImage(this.context.canvas,0,0),this.targetContext_.globalAlpha=e,Ab(this.context),e_.push(this.context.canvas),this.context=this.targetContext_,this.targetContext_=null}}renderDeclutter(e){!this.replayGroup_||!this.getLayer().getDeclutter()||this.renderWorlds(this.replayGroup_,e,!0)}renderDeferredInternal(e){this.replayGroup_&&(this.replayGroup_.renderDeferred(),this.clipped_&&this.context.restore(),this.resetDrawContext_())}renderFrame(e,r){let a=e.layerStatesArray[e.layerIndex];this.opacity_=a.opacity;let c=e.viewState;this.prepareContainer(e,r);let s=this.context,y=this.replayGroup_,v=y&&!y.isEmpty();if(!v&&!(this.getLayer().hasListener(Us.PRERENDER)||this.getLayer().hasListener(Us.POSTRENDER)))return null;this.setDrawContext_(),this.preRender(s,e);let b=c.projection;if(this.clipped_=!1,v&&a.extent&&this.clipping){let T=Gs(a.extent,b);v=Vi(T,e.extent),this.clipped_=v&&!go(T,e.extent),this.clipped_&&this.clipUnrotated(s,e,T)}return v&&this.renderWorlds(y,e,this.getLayer().getDeclutter()?!1:void 0),!e.declutter&&this.clipped_&&s.restore(),this.postRender(s,e),this.renderedRotation_!==c.rotation&&(this.renderedRotation_=c.rotation,this.hitDetectionImageData_=null),e.declutter||this.resetDrawContext_(),this.container}getFeatures(e){return new Promise(r=>{if(this.frameState&&!this.hitDetectionImageData_&&!this.animatingOrInteracting_){let a=this.frameState.size.slice(),c=this.renderedCenter_,s=this.renderedResolution_,y=this.renderedRotation_,v=this.renderedProjection_,b=this.wrappedRenderedExtent_,T=this.getLayer(),C=[],k=a[0]*As,O=a[1]*As;C.push(this.getRenderTransform(c,s,y,As,k,O,0).slice());let G=T.getSource(),J=v.getExtent();if(G.getWrapX()&&v.canWrapX()&&!go(J,b)){let he=b[0],fe=vi(J),ye=0,we;for(;he<J[0];)--ye,we=fe*ye,C.push(this.getRenderTransform(c,s,y,As,k,O,we).slice()),he+=fe;for(ye=0,he=b[2];he>J[2];)++ye,we=fe*ye,C.push(this.getRenderTransform(c,s,y,As,k,O,we).slice()),he-=fe}let le=Zn();this.hitDetectionImageData_=y1(a,C,this.renderedFeatures_,T.getStyleFunction(),b,s,y,a_(s,this.renderedPixelRatio_),le?v:null)}r(_1(e,this.renderedFeatures_,this.hitDetectionImageData_))})}forEachFeatureAtCoordinate(e,r,a,c,s){if(!this.replayGroup_)return;let y=r.viewState.resolution,v=r.viewState.rotation,b=this.getLayer(),T={},C=function(O,G,J){let le=Vt(O),he=T[le];if(he){if(he!==!0&&J<he.distanceSq){if(J===0)return T[le]=!0,s.splice(s.lastIndexOf(he),1),c(O,b,G);he.geometry=G,he.distanceSq=J}}else{if(J===0)return T[le]=!0,c(O,b,G);s.push(T[le]={feature:O,layer:b,geometry:G,distanceSq:J,callback:c})}},k=this.getLayer().getDeclutter();return this.replayGroup_.forEachFeatureAtCoordinate(e,y,v,a,C,k?r.declutter[k].all().map(O=>O.value):null)}handleFontsChanged(){let e=this.getLayer();e.getVisible()&&this.replayGroup_&&e.changed()}handleStyleImageChange_(e){this.renderIfReadyAndVisible()}prepareFrame(e){let r=this.getLayer(),a=r.getSource();if(!a)return!1;let c=e.viewHints[bn.ANIMATING],s=e.viewHints[bn.INTERACTING],y=r.getUpdateWhileAnimating(),v=r.getUpdateWhileInteracting();if(this.ready&&!y&&c||!v&&s)return this.animatingOrInteracting_=!0,!0;this.animatingOrInteracting_=!1;let b=e.extent,T=e.viewState,C=T.projection,k=T.resolution,O=e.pixelRatio,G=r.getRevision(),J=r.getRenderBuffer(),le=r.getRenderOrder();le===void 0&&(le=v1);let he=T.center.slice(),fe=os(b,J*k),ye=fe.slice(),we=[fe.slice()],Ie=C.getExtent();if(a.getWrapX()&&C.canWrapX()&&!go(Ie,e.extent)){let at=vi(Ie),gt=Math.max(vi(fe)/2,at);fe[0]=Ie[0]-gt,fe[2]=Ie[2]+gt,wv(he,C);let ot=hg(we[0],C);ot[0]<Ie[0]&&ot[2]<Ie[2]?we.push([ot[0]+at,ot[1],ot[2]+at,ot[3]]):ot[0]>Ie[0]&&ot[2]>Ie[2]&&we.push([ot[0]-at,ot[1],ot[2]-at,ot[3]])}if(this.ready&&this.renderedResolution_==k&&this.renderedRevision_==G&&this.renderedRenderOrder_==le&&this.renderedFrameDeclutter_===!!e.declutter&&go(this.wrappedRenderedExtent_,fe))return yn(this.renderedExtent_,ye)||(this.hitDetectionImageData_=null,this.renderedExtent_=ye),this.renderedCenter_=he,this.replayGroupChanged=!1,!0;this.replayGroup_=null;let Pe=new l1(l_(k,O),fe,k,O),Ee=Zn(),Ge;if(Ee){for(let at=0,gt=we.length;at<gt;++at){let ot=we[at],pt=js(ot,C);a.loadFeatures(pt,Nv(k,C),Ee)}Ge=Cc(Ee,C)}else for(let at=0,gt=we.length;at<gt;++at)a.loadFeatures(we[at],k,C);let Be=a_(k,O),Ae=!0,st=(at,gt)=>{let ot,pt=at.getStyleFunction()||r.getStyleFunction();if(pt&&(ot=pt(at,k)),ot){let Pt=this.renderFeature(at,Be,ot,Pe,Ge,this.getLayer().getDeclutter(),gt);Ae=Ae&&!Pt}},ct=js(fe,C),rt=a.getFeaturesInExtent(ct);le&&rt.sort(le);for(let at=0,gt=rt.length;at<gt;++at)st(rt[at],at);this.renderedFeatures_=rt,this.ready=Ae;let xt=Pe.finish(),Rt=new m1(fe,k,O,a.getOverlaps(),xt,r.getRenderBuffer(),!!e.declutter);return this.renderedResolution_=k,this.renderedRevision_=G,this.renderedRenderOrder_=le,this.renderedFrameDeclutter_=!!e.declutter,this.renderedExtent_=ye,this.wrappedRenderedExtent_=fe,this.renderedCenter_=he,this.renderedProjection_=C,this.renderedPixelRatio_=O,this.replayGroup_=Rt,this.hitDetectionImageData_=null,this.replayGroupChanged=!0,!0}renderFeature(e,r,a,c,s,y,v){if(!a)return!1;let b=!1;if(Array.isArray(a))for(let T=0,C=a.length;T<C;++T)b=c_(c,e,a[T],r,this.boundHandleStyleImageChange_,s,y,v)||b;else b=c_(c,e,a,r,this.boundHandleStyleImageChange_,s,y,v);return b}},w1=h_;var u_=class extends i1{constructor(e){super(e)}createRenderer(){return new w1(this)}},jc=u_;var d_=class{constructor(e){this.rbush_=new fl(e),this.items_={}}insert(e,r){let a={minX:e[0],minY:e[1],maxX:e[2],maxY:e[3],value:r};this.rbush_.insert(a),this.items_[Vt(r)]=a}load(e,r){let a=new Array(r.length);for(let c=0,s=r.length;c<s;c++){let y=e[c],v=r[c],b={minX:y[0],minY:y[1],maxX:y[2],maxY:y[3],value:v};a[c]=b,this.items_[Vt(v)]=b}this.rbush_.load(a)}remove(e){let r=Vt(e),a=this.items_[r];return delete this.items_[r],this.rbush_.remove(a)!==null}update(e,r){let a=this.items_[Vt(r)],c=[a.minX,a.minY,a.maxX,a.maxY];fp(c,e)||(this.remove(r),this.insert(e,r))}getAll(){return this.rbush_.all().map(function(r){return r.value})}getInExtent(e){let r={minX:e[0],minY:e[1],maxX:e[2],maxY:e[3]};return this.rbush_.search(r).map(function(c){return c.value})}forEach(e){return this.forEach_(this.getAll(),e)}forEachInExtent(e,r){return this.forEach_(this.getInExtent(e),r)}forEach_(e,r){let a;for(let c=0,s=e.length;c<s;c++)if(a=r(e[c]),a)return a;return a}isEmpty(){return Wn(this.items_)}clear(){this.rbush_.clear(),this.items_={}}getExtent(e){let r=this.rbush_.toJSON();return yo(r.minX,r.minY,r.maxX,r.maxY,e)}concat(e){this.rbush_.load(e.rbush_.all());for(let r in e.items_)this.items_[r]=e.items_[r]}},$u=d_;var S1=sr(),Wu=class h{constructor(e,r,a,c,s,y){this.styleFunction,this.extent_,this.id_=y,this.type_=e,this.flatCoordinates_=r,this.flatInteriorPoints_=null,this.flatMidpoints_=null,this.ends_=a||null,this.properties_=s,this.squaredTolerance_,this.stride_=c,this.simplifiedGeometry_}get(e){return this.properties_[e]}getExtent(){return this.extent_||(this.extent_=this.type_==="Point"?ca(this.flatCoordinates_):_c(this.flatCoordinates_,0,this.flatCoordinates_.length,2)),this.extent_}getFlatInteriorPoint(){if(!this.flatInteriorPoints_){let e=as(this.getExtent());this.flatInteriorPoints_=_u(this.flatCoordinates_,0,this.ends_,2,e,0)}return this.flatInteriorPoints_}getFlatInteriorPoints(){if(!this.flatInteriorPoints_){let e=rb(this.flatCoordinates_,this.ends_),r=Lp(this.flatCoordinates_,0,e,2);this.flatInteriorPoints_=Rp(this.flatCoordinates_,0,e,2,r)}return this.flatInteriorPoints_}getFlatMidpoint(){return this.flatMidpoints_||(this.flatMidpoints_=ul(this.flatCoordinates_,0,this.flatCoordinates_.length,2,.5)),this.flatMidpoints_}getFlatMidpoints(){if(!this.flatMidpoints_){this.flatMidpoints_=[];let e=this.flatCoordinates_,r=0,a=this.ends_;for(let c=0,s=a.length;c<s;++c){let y=a[c],v=ul(e,r,y,2,.5);wr(this.flatMidpoints_,v),r=y}}return this.flatMidpoints_}getId(){return this.id_}getOrientedFlatCoordinates(){return this.flatCoordinates_}getGeometry(){return this}getSimplifiedGeometry(e){return this}simplifyTransformed(e,r){return this}getProperties(){return this.properties_}getPropertiesInternal(){return this.properties_}getStride(){return this.stride_}getStyleFunction(){return this.styleFunction}getType(){return this.type_}transform(e){e=Ci(e);let r=e.getExtent(),a=e.getWorldExtent();if(r&&a){let c=Wi(a)/Wi(r);Vr(S1,a[0],a[3],c,-c,0,0,0),vn(this.flatCoordinates_,0,this.flatCoordinates_.length,2,S1,this.flatCoordinates_)}}applyTransform(e){e(this.flatCoordinates_,this.flatCoordinates_,this.stride_)}clone(){return new h(this.type_,this.flatCoordinates_.slice(),this.ends_?.slice(),this.stride_,Object.assign({},this.properties_),this.id_)}getEnds(){return this.ends_}enableSimplifyTransformed(){return this.simplifyTransformed=cp((e,r)=>{if(e===this.squaredTolerance_)return this.simplifiedGeometry_;this.simplifiedGeometry_=this.clone(),r&&this.simplifiedGeometry_.applyTransform(r);let a=this.simplifiedGeometry_.getFlatCoordinates(),c;switch(this.type_){case"LineString":a.length=hl(a,0,this.simplifiedGeometry_.flatCoordinates_.length,this.simplifiedGeometry_.stride_,e,a,0),c=[a.length];break;case"MultiLineString":c=[],a.length=Tp(a,0,this.simplifiedGeometry_.ends_,this.simplifiedGeometry_.stride_,e,a,0,c);break;case"Polygon":c=[],a.length=pu(a,0,this.simplifiedGeometry_.ends_,this.simplifiedGeometry_.stride_,Math.sqrt(e),a,0,c);break;default:}return c&&(this.simplifiedGeometry_=new h(this.type_,a,c,2,this.properties_,this.id_)),this.squaredTolerance_=e,this.simplifiedGeometry_}),this}};Wu.prototype.getFlatCoordinates=Wu.prototype.getOrientedFlatCoordinates;var Rs=Wu;var p_=class extends or{constructor(e){super(),this.projection=Ci(e.projection),this.attributions_=I1(e.attributions),this.attributionsCollapsible_=e.attributionsCollapsible??!0,this.loading=!1,this.state_=e.state!==void 0?e.state:"ready",this.wrapX_=e.wrapX!==void 0?e.wrapX:!1,this.interpolate_=!!e.interpolate,this.viewResolver=null,this.viewRejector=null;let r=this;this.viewPromise_=new Promise(function(a,c){r.viewResolver=a,r.viewRejector=c})}getAttributions(){return this.attributions_}getAttributionsCollapsible(){return this.attributionsCollapsible_}getProjection(){return this.projection}getResolutions(e){return null}getView(){return this.viewPromise_}getState(){return this.state_}getWrapX(){return this.wrapX_}getInterpolate(){return this.interpolate_}refresh(){this.changed()}setAttributions(e){this.attributions_=I1(e),this.changed()}setState(e){this.state_=e,this.changed()}};function I1(h){return h?typeof h=="function"?h:(Array.isArray(h)||(h=[h]),e=>h):null}var Mo=p_;var Ur={ADDFEATURE:"addfeature",CHANGEFEATURE:"changefeature",CLEAR:"clear",REMOVEFEATURE:"removefeature",FEATURESLOADSTART:"featuresloadstart",FEATURESLOADEND:"featuresloadend",FEATURESLOADERROR:"featuresloaderror"};function C1(h,e){return[[-1/0,-1/0,1/0,1/0]]}var QC=!1;function eE(h,e,r,a,c,s,y){let v=new XMLHttpRequest;v.open("GET",typeof h=="function"?h(r,a,c):h,!0),e.getType()=="arraybuffer"&&(v.responseType="arraybuffer"),v.withCredentials=QC,v.onload=function(b){if(!v.status||v.status>=200&&v.status<300){let T=e.getType();try{let C;T=="text"||T=="json"?C=v.responseText:T=="xml"?C=v.responseXML||v.responseText:T=="arraybuffer"&&(C=v.response),C?s(e.readFeatures(C,{extent:r,featureProjection:c}),e.readProjection(C)):y()}catch{y()}}else y()},v.onerror=y,v.send()}function f_(h,e){return function(r,a,c,s,y){let v=this;eE(h,e,r,a,c,function(b,T){v.addFeatures(b),s!==void 0&&s(b)},y||vs)}}var Ks=class extends Si{constructor(e,r,a){super(e),this.feature=r,this.features=a}},m_=class extends Mo{constructor(e){e=e||{},super({attributions:e.attributions,interpolate:!0,projection:void 0,state:"ready",wrapX:e.wrapX!==void 0?e.wrapX:!0}),this.on,this.once,this.un,this.loader_=vs,this.format_=e.format||null,this.overlaps_=e.overlaps===void 0?!0:e.overlaps,this.url_=e.url,e.loader!==void 0?this.loader_=e.loader:this.url_!==void 0&&(ui(this.format_,"`format` must be set when `url` is set"),this.loader_=f_(this.url_,this.format_)),this.strategy_=e.strategy!==void 0?e.strategy:C1;let r=e.useSpatialIndex!==void 0?e.useSpatialIndex:!0;this.featuresRtree_=r?new $u:null,this.loadedExtentsRtree_=new $u,this.loadingExtentsCount_=0,this.nullGeometryFeatures_={},this.idIndex_={},this.uidIndex_={},this.featureChangeKeys_={},this.featuresCollection_=null;let a,c;Array.isArray(e.features)?c=e.features:e.features&&(a=e.features,c=a.getArray()),!r&&a===void 0&&(a=new Eu(c)),c!==void 0&&this.addFeaturesInternal(c),a!==void 0&&this.bindFeaturesCollection_(a)}addFeature(e){this.addFeatureInternal(e),this.changed()}addFeatureInternal(e){let r=Vt(e);if(!this.addToIndex_(r,e)){this.featuresCollection_&&this.featuresCollection_.remove(e);return}this.setupChangeEvents_(r,e);let a=e.getGeometry();if(a){let c=a.getExtent();this.featuresRtree_&&this.featuresRtree_.insert(c,e)}else this.nullGeometryFeatures_[r]=e;this.dispatchEvent(new Ks(Ur.ADDFEATURE,e))}setupChangeEvents_(e,r){r instanceof Rs||(this.featureChangeKeys_[e]=[Sr(r,pi.CHANGE,this.handleFeatureChange_,this),Sr(r,op.PROPERTYCHANGE,this.handleFeatureChange_,this)])}addToIndex_(e,r){let a=!0;if(r.getId()!==void 0){let c=String(r.getId());if(!(c in this.idIndex_))this.idIndex_[c]=r;else if(r instanceof Rs){let s=this.idIndex_[c];s instanceof Rs?Array.isArray(s)?s.push(r):this.idIndex_[c]=[s,r]:a=!1}else a=!1}return a&&(ui(!(e in this.uidIndex_),"The passed `feature` was already added to the source"),this.uidIndex_[e]=r),a}addFeatures(e){this.addFeaturesInternal(e),this.changed()}addFeaturesInternal(e){let r=[],a=[],c=[];for(let s=0,y=e.length;s<y;s++){let v=e[s],b=Vt(v);this.addToIndex_(b,v)&&a.push(v)}for(let s=0,y=a.length;s<y;s++){let v=a[s],b=Vt(v);this.setupChangeEvents_(b,v);let T=v.getGeometry();if(T){let C=T.getExtent();r.push(C),c.push(v)}else this.nullGeometryFeatures_[b]=v}if(this.featuresRtree_&&this.featuresRtree_.load(r,c),this.hasListener(Ur.ADDFEATURE))for(let s=0,y=a.length;s<y;s++)this.dispatchEvent(new Ks(Ur.ADDFEATURE,a[s]))}bindFeaturesCollection_(e){let r=!1;this.addEventListener(Ur.ADDFEATURE,function(a){r||(r=!0,e.push(a.feature),r=!1)}),this.addEventListener(Ur.REMOVEFEATURE,function(a){r||(r=!0,e.remove(a.feature),r=!1)}),e.addEventListener(Ts.ADD,a=>{r||(r=!0,this.addFeature(a.element),r=!1)}),e.addEventListener(Ts.REMOVE,a=>{r||(r=!0,this.removeFeature(a.element),r=!1)}),this.featuresCollection_=e}clear(e){if(e){for(let a in this.featureChangeKeys_)this.featureChangeKeys_[a].forEach(jr);this.featuresCollection_||(this.featureChangeKeys_={},this.idIndex_={},this.uidIndex_={})}else if(this.featuresRtree_){this.featuresRtree_.forEach(a=>{this.removeFeatureInternal(a)});for(let a in this.nullGeometryFeatures_)this.removeFeatureInternal(this.nullGeometryFeatures_[a])}this.featuresCollection_&&this.featuresCollection_.clear(),this.featuresRtree_&&this.featuresRtree_.clear(),this.nullGeometryFeatures_={};let r=new Ks(Ur.CLEAR);this.dispatchEvent(r),this.changed()}forEachFeature(e){if(this.featuresRtree_)return this.featuresRtree_.forEach(e);this.featuresCollection_&&this.featuresCollection_.forEach(e)}forEachFeatureAtCoordinateDirect(e,r){let a=[e[0],e[1],e[0],e[1]];return this.forEachFeatureInExtent(a,function(c){let s=c.getGeometry();if(s instanceof Rs||s.intersectsCoordinate(e))return r(c)})}forEachFeatureInExtent(e,r){if(this.featuresRtree_)return this.featuresRtree_.forEachInExtent(e,r);this.featuresCollection_&&this.featuresCollection_.forEach(r)}forEachFeatureIntersectingExtent(e,r){return this.forEachFeatureInExtent(e,function(a){let c=a.getGeometry();if(c instanceof Rs||c.intersectsExtent(e)){let s=r(a);if(s)return s}})}getFeaturesCollection(){return this.featuresCollection_}getFeatures(){let e;return this.featuresCollection_?e=this.featuresCollection_.getArray().slice(0):this.featuresRtree_&&(e=this.featuresRtree_.getAll(),Wn(this.nullGeometryFeatures_)||wr(e,Object.values(this.nullGeometryFeatures_))),e}getFeaturesAtCoordinate(e){let r=[];return this.forEachFeatureAtCoordinateDirect(e,function(a){r.push(a)}),r}getFeaturesInExtent(e,r){if(this.featuresRtree_){if(!(r&&r.canWrapX()&&this.getWrapX()))return this.featuresRtree_.getInExtent(e);let c=uv(e,r);return[].concat(...c.map(s=>this.featuresRtree_.getInExtent(s)))}return this.featuresCollection_?this.featuresCollection_.getArray().slice(0):[]}getClosestFeatureToCoordinate(e,r){let a=e[0],c=e[1],s=null,y=[NaN,NaN],v=1/0,b=[-1/0,-1/0,1/0,1/0];return r=r||lp,this.featuresRtree_.forEachInExtent(b,function(T){if(r(T)){let C=T.getGeometry(),k=v;if(v=C instanceof Rs?0:C.closestPointXY(a,c,y,v),v<k){s=T;let O=Math.sqrt(v);b[0]=a-O,b[1]=c-O,b[2]=a+O,b[3]=c+O}}}),s}getExtent(e){return this.featuresRtree_.getExtent(e)}getFeatureById(e){let r=this.idIndex_[e.toString()];return r!==void 0?r:null}getFeatureByUid(e){let r=this.uidIndex_[e];return r!==void 0?r:null}getFormat(){return this.format_}getOverlaps(){return this.overlaps_}getUrl(){return this.url_}handleFeatureChange_(e){let r=e.target,a=Vt(r),c=r.getGeometry();if(!c)a in this.nullGeometryFeatures_||(this.featuresRtree_&&this.featuresRtree_.remove(r),this.nullGeometryFeatures_[a]=r);else{let y=c.getExtent();a in this.nullGeometryFeatures_?(delete this.nullGeometryFeatures_[a],this.featuresRtree_&&this.featuresRtree_.insert(y,r)):this.featuresRtree_&&this.featuresRtree_.update(y,r)}let s=r.getId();if(s!==void 0){let y=s.toString();this.idIndex_[y]!==r&&(this.removeFromIdIndex_(r),this.idIndex_[y]=r)}else this.removeFromIdIndex_(r),this.uidIndex_[a]=r;this.changed(),this.dispatchEvent(new Ks(Ur.CHANGEFEATURE,r))}hasFeature(e){let r=e.getId();return r!==void 0?r in this.idIndex_:Vt(e)in this.uidIndex_}isEmpty(){return this.featuresRtree_?this.featuresRtree_.isEmpty()&&Wn(this.nullGeometryFeatures_):this.featuresCollection_?this.featuresCollection_.getLength()===0:!0}loadFeatures(e,r,a){let c=this.loadedExtentsRtree_,s=this.strategy_(e,r,a);for(let y=0,v=s.length;y<v;++y){let b=s[y];c.forEachInExtent(b,function(C){return go(C.extent,b)})||(++this.loadingExtentsCount_,this.dispatchEvent(new Ks(Ur.FEATURESLOADSTART)),this.loader_.call(this,b,r,a,C=>{--this.loadingExtentsCount_,this.dispatchEvent(new Ks(Ur.FEATURESLOADEND,void 0,C))},()=>{--this.loadingExtentsCount_,this.dispatchEvent(new Ks(Ur.FEATURESLOADERROR))}),c.insert(b,{extent:b.slice()}))}this.loading=this.loader_.length<4?!1:this.loadingExtentsCount_>0}refresh(){this.clear(!0),this.loadedExtentsRtree_.clear(),super.refresh()}removeLoadedExtent(e){let r=this.loadedExtentsRtree_,a=r.forEachInExtent(e,function(c){if(fp(c.extent,e))return c});a&&r.remove(a)}removeFeatures(e){let r=!1;for(let a=0,c=e.length;a<c;++a)r=this.removeFeatureInternal(e[a])||r;r&&this.changed()}removeFeature(e){if(!e)return;this.removeFeatureInternal(e)&&this.changed()}removeFeatureInternal(e){let r=Vt(e);if(!(r in this.uidIndex_))return!1;r in this.nullGeometryFeatures_?delete this.nullGeometryFeatures_[r]:this.featuresRtree_&&this.featuresRtree_.remove(e),this.featureChangeKeys_[r]?.forEach(jr),delete this.featureChangeKeys_[r];let c=e.getId();if(c!==void 0){let s=c.toString(),y=this.idIndex_[s];y===e?delete this.idIndex_[s]:Array.isArray(y)&&(y.splice(y.indexOf(e),1),y.length===1&&(this.idIndex_[s]=y[0]))}return delete this.uidIndex_[r],this.hasListener(Ur.REMOVEFEATURE)&&this.dispatchEvent(new Ks(Ur.REMOVEFEATURE,e)),!0}removeFromIdIndex_(e){for(let r in this.idIndex_)if(this.idIndex_[r]===e){delete this.idIndex_[r];break}}setLoader(e){this.loader_=e}setUrl(e){ui(this.format_,"`format` must be set when `url` is set"),this.url_=e,this.setLoader(f_(e,this.format_))}setOverlaps(e){this.overlaps_=e,this.changed()}},yl=m_;var Kn={SINGLECLICK:"singleclick",CLICK:pi.CLICK,DBLCLICK:pi.DBLCLICK,POINTERDRAG:"pointerdrag",POINTERMOVE:"pointermove",POINTERDOWN:"pointerdown",POINTERUP:"pointerup",POINTEROVER:"pointerover",POINTEROUT:"pointerout",POINTERENTER:"pointerenter",POINTERLEAVE:"pointerleave",POINTERCANCEL:"pointercancel"};var g_={ACTIVE:"active"};var y_=class extends or{constructor(e){super(),this.on,this.once,this.un,e&&e.handleEvent&&(this.handleEvent=e.handleEvent),this.map_=null,this.setActive(!0)}getActive(){return this.get(g_.ACTIVE)}getMap(){return this.map_}handleEvent(e){return!0}setActive(e){this.set(g_.ACTIVE,e)}setMap(e){this.map_=e}};var E1=y_;var __=class extends E1{constructor(e){e=e||{},super(e),e.handleDownEvent&&(this.handleDownEvent=e.handleDownEvent),e.handleDragEvent&&(this.handleDragEvent=e.handleDragEvent),e.handleMoveEvent&&(this.handleMoveEvent=e.handleMoveEvent),e.handleUpEvent&&(this.handleUpEvent=e.handleUpEvent),e.stopDown&&(this.stopDown=e.stopDown),this.handlingDownUpSequence=!1,this.targetPointers=[]}getPointerCount(){return this.targetPointers.length}handleDownEvent(e){return!1}handleDragEvent(e){}handleEvent(e){if(!e.originalEvent)return!0;let r=!1;if(this.updateTrackedPointers_(e),this.handlingDownUpSequence){if(e.type==Kn.POINTERDRAG)this.handleDragEvent(e),e.originalEvent.preventDefault();else if(e.type==Kn.POINTERUP){let a=this.handleUpEvent(e);this.handlingDownUpSequence=a&&this.targetPointers.length>0}}else if(e.type==Kn.POINTERDOWN){let a=this.handleDownEvent(e);this.handlingDownUpSequence=a,r=this.stopDown(a)}else e.type==Kn.POINTERMOVE&&this.handleMoveEvent(e);return!r}handleMoveEvent(e){}handleUpEvent(e){return!1}stopDown(e){return e}updateTrackedPointers_(e){e.activePointers&&(this.targetPointers=e.activePointers)}};var T1=__;var M1=function(h){let e=h.originalEvent;return e.altKey&&!(e.metaKey||e.ctrlKey)&&!e.shiftKey};var P1=lp,A1=function(h){return h.type==Kn.CLICK};var R1=function(h){return h.type==Kn.SINGLECLICK};var k1=function(h){let e=h.originalEvent;return ui(e!==void 0,"mapBrowserEvent must originate from a pointer event"),e.isPrimary&&e.button===0};var x_=class{constructor(){this.dataProjection=void 0,this.defaultFeatureProjection=void 0,this.featureClass=us,this.supportedMediaTypes=null}getReadOptions(e,r){if(r){let a=r.dataProjection?Ci(r.dataProjection):this.readProjection(e);r.extent&&a&&a.getUnits()==="tile-pixels"&&(a=Ci(a),a.setWorldExtent(r.extent)),r={dataProjection:a,featureProjection:r.featureProjection}}return this.adaptOptions(r)}adaptOptions(e){return Object.assign({dataProjection:this.dataProjection,featureProjection:this.defaultFeatureProjection,featureClass:this.featureClass},e)}getType(){return wt()}readFeature(e,r){return wt()}readFeatures(e,r){return wt()}readGeometry(e,r){return wt()}readProjection(e){return wt()}writeFeature(e,r){return wt()}writeFeatures(e,r){return wt()}writeGeometry(e,r){return wt()}},L1=x_;function nf(h,e,r){let a=r?Ci(r.featureProjection):null,c=r?Ci(r.dataProjection):null,s=h;if(a&&c&&!Bv(a,c)){e&&(s=h.clone());let y=e?a:c,v=e?c:a;y.getUnits()==="tile-pixels"?s.transform(y,v):s.applyTransform(ll(y,v))}if(e&&r&&r.decimals!==void 0){let y=Math.pow(10,r.decimals),v=function(b){for(let T=0,C=b.length;T<C;++T)b[T]=Math.round(b[T]*y)/y;return b};s===h&&(s=h.clone()),s.applyTransform(v)}return s}var tE={Point:lr,LineString:Is,Polygon:Tc,MultiPoint:yu,MultiLineString:Og,MultiPolygon:qg};function iE(h,e,r){return Array.isArray(e[0])?(kp(h,0,e,r)||(h=h.slice(),vu(h,0,e,r)),h):(xu(h,0,e,r)||(h=h.slice(),Ec(h,0,e,r)),h)}function v_(h,e){let r=h.geometry;if(!r)return[];if(Array.isArray(r))return r.map(s=>v_({...h,geometry:s})).flat();let a=r.type==="MultiPolygon"?"Polygon":r.type;if(a==="GeometryCollection"||a==="Circle")throw new Error("Unsupported geometry type: "+a);let c=r.layout.length;return nf(new Rs(a,a==="Polygon"?iE(r.flatCoordinates,r.ends,c):r.flatCoordinates,r.ends?.flat(),c,h.properties||{},h.id).enableSimplifyTransformed(),!1,e)}function sf(h,e){if(!h)return null;if(Array.isArray(h)){let a=h.map(c=>sf(c,e));return new Pg(a)}let r=tE[h.type];return nf(new r(h.flatCoordinates,h.layout,h.ends),!1,e)}var b_=class extends L1{constructor(){super()}getType(){return"json"}readFeature(e,r){return this.readFeatureFromObject(of(e),this.getReadOptions(e,r))}readFeatures(e,r){return this.readFeaturesFromObject(of(e),this.getReadOptions(e,r))}readFeatureFromObject(e,r){return wt()}readFeaturesFromObject(e,r){return wt()}readGeometry(e,r){return this.readGeometryFromObject(of(e),this.getReadOptions(e,r))}readGeometryFromObject(e,r){return wt()}readProjection(e){return this.readProjectionFromObject(of(e))}readProjectionFromObject(e){return wt()}writeFeature(e,r){return JSON.stringify(this.writeFeatureObject(e,r))}writeFeatureObject(e,r){return wt()}writeFeatures(e,r){return JSON.stringify(this.writeFeaturesObject(e,r))}writeFeaturesObject(e,r){return wt()}writeGeometry(e,r){return JSON.stringify(this.writeGeometryObject(e,r))}writeGeometryObject(e,r){return wt()}};function of(h){if(typeof h=="string"){let e=JSON.parse(h);return e||null}return h!==null?h:null}var D1=b_;var w_=class extends D1{constructor(e){e=e||{},super(),this.dataProjection=Ci(e.dataProjection?e.dataProjection:"EPSG:4326"),e.featureProjection&&(this.defaultFeatureProjection=Ci(e.featureProjection)),e.featureClass&&(this.featureClass=e.featureClass),this.geometryName_=e.geometryName,this.extractGeometryName_=e.extractGeometryName,this.supportedMediaTypes=["application/geo+json","application/vnd.geo+json"]}readFeatureFromObject(e,r){let a=null;e.type==="Feature"?a=e:a={type:"Feature",geometry:e,properties:null};let c=I_(a.geometry,r);if(this.featureClass===Rs)return v_({geometry:c,id:a.id,properties:a.properties},r);let s=new us;return this.geometryName_?s.setGeometryName(this.geometryName_):this.extractGeometryName_&&a.geometry_name&&s.setGeometryName(a.geometry_name),s.setGeometry(sf(c,r)),"id"in a&&s.setId(a.id),a.properties&&s.setProperties(a.properties,!0),s}readFeaturesFromObject(e,r){let a=e,c=null;if(a.type==="FeatureCollection"){let s=e;c=[];let y=s.features;for(let v=0,b=y.length;v<b;++v){let T=this.readFeatureFromObject(y[v],r);T&&c.push(T)}}else c=[this.readFeatureFromObject(e,r)];return c.flat()}readGeometryFromObject(e,r){return rE(e,r)}readProjectionFromObject(e){let r=e.crs,a;if(r)if(r.type=="name")a=Ci(r.properties.name);else if(r.type==="EPSG")a=Ci("EPSG:"+r.properties.code);else throw new Error("Unknown SRS type");else a=this.dataProjection;return a}writeFeatureObject(e,r){r=this.adaptOptions(r);let a={type:"Feature",geometry:null,properties:null},c=e.getId();if(c!==void 0&&(a.id=c),!e.hasProperties())return a;let s=e.getProperties(),y=e.getGeometry();return y&&(a.geometry=S_(y,r),delete s[e.getGeometryName()]),Wn(s)||(a.properties=s),a}writeFeaturesObject(e,r){r=this.adaptOptions(r);let a=[];for(let c=0,s=e.length;c<s;++c)a.push(this.writeFeatureObject(e[c],r));return{type:"FeatureCollection",features:a}}writeGeometryObject(e,r){return S_(e,this.adaptOptions(r))}};function I_(h,e){if(!h)return null;let r;switch(h.type){case"Point":{r=sE(h);break}case"LineString":{r=oE(h);break}case"Polygon":{r=hE(h);break}case"MultiPoint":{r=lE(h);break}case"MultiLineString":{r=aE(h);break}case"MultiPolygon":{r=cE(h);break}case"GeometryCollection":{r=nE(h);break}default:throw new Error("Unsupported GeoJSON type: "+h.type)}return r}function rE(h,e){let r=I_(h,e);return sf(r,e)}function nE(h,e){return h.geometries.map(function(a){return I_(a,e)})}function sE(h){let e=h.coordinates;return{type:"Point",flatCoordinates:e,layout:da(e.length)}}function oE(h){let e=h.coordinates,r=e.flat();return{type:"LineString",flatCoordinates:r,ends:[r.length],layout:da(e[0]?.length||2)}}function aE(h){let e=h.coordinates,r=e[0]?.[0]?.length||2,a=[],c=pa(a,0,e,r);return{type:"MultiLineString",flatCoordinates:a,ends:c,layout:da(r)}}function lE(h){let e=h.coordinates;return{type:"MultiPoint",flatCoordinates:e.flat(),layout:da(e[0]?.length||2)}}function cE(h){let e=h.coordinates,r=[],a=e[0]?.[0]?.[0].length||2,c=Ep(r,0,e,a);return{type:"MultiPolygon",flatCoordinates:r,ends:c,layout:da(a)}}function hE(h){let e=h.coordinates,r=[],a=e[0]?.[0]?.length,c=pa(r,0,e,a);return{type:"Polygon",flatCoordinates:r,ends:c,layout:da(a)}}function S_(h,e){h=nf(h,!0,e);let r=h.getType(),a;switch(r){case"Point":{a=gE(h,e);break}case"LineString":{a=dE(h,e);break}case"Polygon":{a=yE(h,e);break}case"MultiPoint":{a=fE(h,e);break}case"MultiLineString":{a=pE(h,e);break}case"MultiPolygon":{a=mE(h,e);break}case"GeometryCollection":{a=uE(h,e);break}case"Circle":{a={type:"GeometryCollection",geometries:[]};break}default:throw new Error("Unsupported geometry type: "+r)}return a}function uE(h,e){return e=Object.assign({},e),delete e.featureProjection,{type:"GeometryCollection",geometries:h.getGeometriesArray().map(function(a){return S_(a,e)})}}function dE(h,e){return{type:"LineString",coordinates:h.getCoordinates()}}function pE(h,e){return{type:"MultiLineString",coordinates:h.getCoordinates()}}function fE(h,e){return{type:"MultiPoint",coordinates:h.getCoordinates()}}function mE(h,e){let r;return e&&(r=e.rightHanded),{type:"MultiPolygon",coordinates:h.getCoordinates(r)}}function gE(h,e){return{type:"Point",coordinates:h.getCoordinates()}}function yE(h,e){let r;return e&&(r=e.rightHanded),{type:"Polygon",coordinates:h.getCoordinates(r)}}var hr=w_;var F1=0,Zu=1,z1=[0,0,0,0],Gc=[],C_={MODIFYSTART:"modifystart",MODIFYEND:"modifyend"},Xu=class extends Si{constructor(e,r,a){super(e),this.features=r,this.mapBrowserEvent=a}},E_=class extends T1{constructor(e){super(e),this.on,this.once,this.un,this.boundHandleFeatureChange_=this.handleFeatureChange_.bind(this),this.condition_=e.condition?e.condition:k1,this.defaultDeleteCondition_=function(a){return M1(a)&&R1(a)},this.deleteCondition_=e.deleteCondition?e.deleteCondition:this.defaultDeleteCondition_,this.insertVertexCondition_=e.insertVertexCondition?e.insertVertexCondition:P1,this.vertexFeature_=null,this.vertexSegments_=null,this.lastPixel_=[0,0],this.ignoreNextSingleClick_=!1,this.featuresBeingModified_=null,this.rBush_=new $u,this.pixelTolerance_=e.pixelTolerance!==void 0?e.pixelTolerance:10,this.snappedToVertex_=!1,this.changingFeature_=!1,this.dragSegments_=[],this.overlay_=new jc({source:new yl({useSpatialIndex:!1,wrapX:!!e.wrapX}),style:e.style?e.style:xE(),updateWhileAnimating:!0,updateWhileInteracting:!0}),this.SEGMENT_WRITERS_={Point:this.writePointGeometry_.bind(this),LineString:this.writeLineStringGeometry_.bind(this),LinearRing:this.writeLineStringGeometry_.bind(this),Polygon:this.writePolygonGeometry_.bind(this),MultiPoint:this.writeMultiPointGeometry_.bind(this),MultiLineString:this.writeMultiLineStringGeometry_.bind(this),MultiPolygon:this.writeMultiPolygonGeometry_.bind(this),Circle:this.writeCircleGeometry_.bind(this),GeometryCollection:this.writeGeometryCollectionGeometry_.bind(this)},this.source_=null,this.hitDetection_=null;let r;if(e.features?r=e.features:e.source&&(this.source_=e.source,r=new Eu(this.source_.getFeatures()),this.source_.addEventListener(Ur.ADDFEATURE,this.handleSourceAdd_.bind(this)),this.source_.addEventListener(Ur.REMOVEFEATURE,this.handleSourceRemove_.bind(this))),!r)throw new Error("The modify interaction requires features, a source or a layer");e.hitDetection&&(this.hitDetection_=e.hitDetection),this.features_=r,this.features_.forEach(this.addFeature_.bind(this)),this.features_.addEventListener(Ts.ADD,this.handleFeatureAdd_.bind(this)),this.features_.addEventListener(Ts.REMOVE,this.handleFeatureRemove_.bind(this)),this.lastPointerEvent_=null,this.delta_=[0,0],this.snapToPointer_=e.snapToPointer===void 0?!this.hitDetection_:e.snapToPointer}addFeature_(e){let r=e.getGeometry();if(r){let c=this.SEGMENT_WRITERS_[r.getType()];c&&c(e,r)}let a=this.getMap();a&&a.isRendered()&&this.getActive()&&this.handlePointerAtPixel_(a.getCoordinateFromPixel(this.lastPixel_)),e.addEventListener(pi.CHANGE,this.boundHandleFeatureChange_)}willModifyFeatures_(e,r){if(!this.featuresBeingModified_){this.featuresBeingModified_=new Eu;let a=this.featuresBeingModified_.getArray();for(let c=0,s=r.length;c<s;++c){let y=r[c].feature;y&&!a.includes(y)&&this.featuresBeingModified_.push(y)}this.featuresBeingModified_.getLength()===0?this.featuresBeingModified_=null:this.dispatchEvent(new Xu(C_.MODIFYSTART,this.featuresBeingModified_,e))}}removeFeature_(e){this.removeFeatureSegmentData_(e),this.vertexFeature_&&this.features_.getLength()===0&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),e.removeEventListener(pi.CHANGE,this.boundHandleFeatureChange_)}removeFeatureSegmentData_(e){let r=this.rBush_,a=[];r.forEach(function(c){e===c.feature&&a.push(c)});for(let c=a.length-1;c>=0;--c){let s=a[c];for(let y=this.dragSegments_.length-1;y>=0;--y)this.dragSegments_[y][0]===s&&this.dragSegments_.splice(y,1);r.remove(s)}}setActive(e){this.vertexFeature_&&!e&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),super.setActive(e)}setMap(e){this.overlay_.setMap(e),super.setMap(e)}getOverlay(){return this.overlay_}handleSourceAdd_(e){e.feature&&this.features_.push(e.feature)}handleSourceRemove_(e){e.feature&&this.features_.remove(e.feature)}handleFeatureAdd_(e){this.addFeature_(e.element)}handleFeatureChange_(e){if(!this.changingFeature_){let r=e.target;this.removeFeature_(r),this.addFeature_(r)}}handleFeatureRemove_(e){this.removeFeature_(e.element)}writePointGeometry_(e,r){let a=r.getCoordinates(),c={feature:e,geometry:r,segment:[a,a]};this.rBush_.insert(r.getExtent(),c)}writeMultiPointGeometry_(e,r){let a=r.getCoordinates();for(let c=0,s=a.length;c<s;++c){let y=a[c],v={feature:e,geometry:r,depth:[c],index:c,segment:[y,y]};this.rBush_.insert(r.getExtent(),v)}}writeLineStringGeometry_(e,r){let a=r.getCoordinates();for(let c=0,s=a.length-1;c<s;++c){let y=a.slice(c,c+2),v={feature:e,geometry:r,index:c,segment:y};this.rBush_.insert(ss(y),v)}}writeMultiLineStringGeometry_(e,r){let a=r.getCoordinates();for(let c=0,s=a.length;c<s;++c){let y=a[c];for(let v=0,b=y.length-1;v<b;++v){let T=y.slice(v,v+2),C={feature:e,geometry:r,depth:[c],index:v,segment:T};this.rBush_.insert(ss(T),C)}}}writePolygonGeometry_(e,r){let a=r.getCoordinates();for(let c=0,s=a.length;c<s;++c){let y=a[c];for(let v=0,b=y.length-1;v<b;++v){let T=y.slice(v,v+2),C={feature:e,geometry:r,depth:[c],index:v,segment:T};this.rBush_.insert(ss(T),C)}}}writeMultiPolygonGeometry_(e,r){let a=r.getCoordinates();for(let c=0,s=a.length;c<s;++c){let y=a[c];for(let v=0,b=y.length;v<b;++v){let T=y[v];for(let C=0,k=T.length-1;C<k;++C){let O=T.slice(C,C+2),G={feature:e,geometry:r,depth:[v,c],index:C,segment:O};this.rBush_.insert(ss(O),G)}}}}writeCircleGeometry_(e,r){let a=r.getCenter(),c={feature:e,geometry:r,index:F1,segment:[a,a]},s={feature:e,geometry:r,index:Zu,segment:[a,a]},y=[c,s];c.featureSegments=y,s.featureSegments=y,this.rBush_.insert(ca(a),c);let v=r,b=Zn();if(b&&this.getMap()){let T=this.getMap().getView().getProjection();v=v.clone().transform(b,T),v=Gg(v).transform(T,b)}this.rBush_.insert(v.getExtent(),s)}writeGeometryCollectionGeometry_(e,r){let a=r.getGeometriesArray();for(let c=0;c<a.length;++c){let s=a[c],y=this.SEGMENT_WRITERS_[s.getType()];y(e,s)}}createOrUpdateVertexFeature_(e,r,a,c){let s=this.vertexFeature_;return s?s.getGeometry().setCoordinates(e):(s=new us(new lr(e)),this.vertexFeature_=s,this.overlay_.getSource().addFeature(s)),s.set("features",r),s.set("geometries",a),s.set("existing",c),s}handleEvent(e){if(!e.originalEvent)return!0;this.lastPointerEvent_=e;let r;return!e.map.getView().getInteracting()&&e.type==Kn.POINTERMOVE&&!this.handlingDownUpSequence&&this.handlePointerMove_(e),this.vertexFeature_&&this.deleteCondition_(e)&&(e.type!=Kn.SINGLECLICK||!this.ignoreNextSingleClick_?r=this.removePoint():r=!0),e.type==Kn.SINGLECLICK&&(this.ignoreNextSingleClick_=!1),super.handleEvent(e)&&!r}findInsertVerticesAndUpdateDragSegments_(e){this.handlePointerAtPixel_(e),this.dragSegments_.length=0,this.featuresBeingModified_=null;let r=this.vertexFeature_;if(!r)return;let a=this.getMap().getView().getProjection(),c=[],s=r.getGeometry().getCoordinates(),y=ss([s]),v=this.rBush_.getInExtent(y),b={};v.sort(_E);for(let T=0,C=v.length;T<C;++T){let k=v[T],O=k.segment,G=Vt(k.geometry),J=k.depth;if(J&&(G+="-"+J.join("-")),b[G]||(b[G]=new Array(2)),k.geometry.getType()==="Circle"&&k.index===Zu){let le=B1(e,k,a);Zi(le,s)&&!b[G][0]&&(this.dragSegments_.push([k,0]),b[G][0]=k);continue}if(Zi(O[0],s)&&!b[G][0]){this.dragSegments_.push([k,0]),b[G][0]=k;continue}if(Zi(O[1],s)&&!b[G][1]){if(b[G][0]&&b[G][0].index===0){let le=k.geometry.getCoordinates();switch(k.geometry.getType()){case"LineString":case"MultiLineString":continue;case"MultiPolygon":le=le[J[1]];case"Polygon":if(k.index!==le[J[0]].length-2)continue;break;default:}}this.dragSegments_.push([k,1]),b[G][1]=k;continue}Vt(O)in this.vertexSegments_&&!b[G][0]&&!b[G][1]&&c.push(k)}return c}handleDragEvent(e){this.ignoreNextSingleClick_=!1,this.willModifyFeatures_(e,this.dragSegments_.map(([s])=>s));let r=[e.coordinate[0]+this.delta_[0],e.coordinate[1]+this.delta_[1]],a=[],c=[];for(let s=0,y=this.dragSegments_.length;s<y;++s){let v=this.dragSegments_[s],b=v[0],T=b.feature;a.includes(T)||a.push(T);let C=b.geometry;c.includes(C)||c.push(C);let k=b.depth,O,G=b.segment,J=v[1];for(;r.length<C.getStride();)r.push(G[J][r.length]);switch(C.getType()){case"Point":O=r,G[0]=r,G[1]=r;break;case"MultiPoint":O=C.getCoordinates(),O[b.index]=r,G[0]=r,G[1]=r;break;case"LineString":O=C.getCoordinates(),O[b.index+J]=r,G[J]=r;break;case"MultiLineString":O=C.getCoordinates(),O[k[0]][b.index+J]=r,G[J]=r;break;case"Polygon":O=C.getCoordinates(),O[k[0]][b.index+J]=r,G[J]=r;break;case"MultiPolygon":O=C.getCoordinates(),O[k[1]][k[0]][b.index+J]=r,G[J]=r;break;case"Circle":let le=C;if(G[0]=r,G[1]=r,b.index===F1)this.changingFeature_=!0,le.setCenter(r),this.changingFeature_=!1;else{this.changingFeature_=!0;let he=e.map.getView().getProjection(),fe=gg(Ai(le.getCenter(),he),Ai(r,he)),ye=Zn();if(ye){let we=le.clone().transform(ye,he);we.setRadius(fe),fe=we.transform(he,ye).getRadius()}le.setRadius(fe),this.changingFeature_=!1}break;default:}O&&this.setGeometryCoordinates_(C,O)}this.createOrUpdateVertexFeature_(r,a,c,!0)}handleDownEvent(e){if(!this.condition_(e))return!1;let r=e.coordinate,a=this.findInsertVerticesAndUpdateDragSegments_(r);if(a?.length&&this.insertVertexCondition_(e)&&(this.willModifyFeatures_(e,a),this.vertexFeature_)){let c=this.vertexFeature_.getGeometry().getCoordinates();for(let s=a.length-1;s>=0;--s)this.insertVertex_(a[s],c);this.ignoreNextSingleClick_=!0}return!!this.vertexFeature_}handleUpEvent(e){for(let r=this.dragSegments_.length-1;r>=0;--r){let a=this.dragSegments_[r][0],c=a.geometry;if(c.getType()==="Circle"){let s=c,y=s.getCenter(),v=a.featureSegments[0],b=a.featureSegments[1];v.segment[0]=y,v.segment[1]=y,b.segment[0]=y,b.segment[1]=y,this.rBush_.update(ca(y),v);let T=s,C=Zn();if(C){let k=e.map.getView().getProjection();T=T.clone().transform(C,k),T=Gg(T).transform(k,C)}this.rBush_.update(T.getExtent(),b)}else this.rBush_.update(ss(a.segment),a)}return this.featuresBeingModified_&&(this.dispatchEvent(new Xu(C_.MODIFYEND,this.featuresBeingModified_,e)),this.featuresBeingModified_=null),!1}handlePointerMove_(e){this.lastPixel_=e.pixel,this.handlePointerAtPixel_(e.coordinate)}handlePointerAtPixel_(e){let r=this.getMap(),a=r.getPixelFromCoordinate(e),c=r.getView().getProjection(),s=function(b,T){return O1(e,b,c)-O1(e,T,c)},y,v;if(this.hitDetection_){let b=typeof this.hitDetection_=="object"?T=>T===this.hitDetection_:void 0;r.forEachFeatureAtPixel(a,(T,C,k)=>{k&&k.getType()==="Point"&&(k=new lr(ua(k.getCoordinates(),c)));let O=k||T.getGeometry();if(O&&O.getType()==="Point"&&T instanceof us&&this.features_.getArray().includes(T)){v=O;let G=T.getGeometry().getFlatCoordinates().slice(0,2);y=[{feature:T,geometry:v,segment:[G,G]}]}return!0},{layerFilter:b})}if(!y){let b=Gs(ca(e,z1),c),T=r.getView().getResolution()*this.pixelTolerance_,C=js(os(b,T,z1),c);y=this.rBush_.getInExtent(C)}if(y&&y.length>0){let b=y.sort(s)[0],T=b.segment,C=B1(e,b,c),k=r.getPixelFromCoordinate(C),O=gg(a,k);if(v||O<=this.pixelTolerance_){let G={};if(G[Vt(T)]=!0,this.snapToPointer_||(this.delta_[0]=C[0]-e[0],this.delta_[1]=C[1]-e[1]),b.geometry.getType()==="Circle"&&b.index===Zu)this.snappedToVertex_=!0,this.createOrUpdateVertexFeature_(C,[b.feature],[b.geometry],this.snappedToVertex_);else{let J=r.getPixelFromCoordinate(T[0]),le=r.getPixelFromCoordinate(T[1]),he=Sc(k,J),fe=Sc(k,le);O=Math.sqrt(Math.min(he,fe)),this.snappedToVertex_=O<=this.pixelTolerance_,this.snappedToVertex_&&(C=he>fe?T[1]:T[0]),this.createOrUpdateVertexFeature_(C,[b.feature],[b.geometry],this.snappedToVertex_);let ye={};ye[Vt(b.geometry)]=!0;for(let we=1,Ie=y.length;we<Ie;++we){let Pe=y[we].segment;if(Zi(T[0],Pe[0])&&Zi(T[1],Pe[1])||Zi(T[0],Pe[1])&&Zi(T[1],Pe[0])){let Ee=Vt(y[we].geometry);Ee in ye||(ye[Ee]=!0,G[Vt(Pe)]=!0)}else break}}this.vertexSegments_=G;return}}this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null)}insertVertex_(e,r){let a=e.segment,c=e.feature,s=e.geometry,y=e.depth,v=e.index,b;for(;r.length<s.getStride();)r.push(0);switch(s.getType()){case"MultiLineString":b=s.getCoordinates(),b[y[0]].splice(v+1,0,r);break;case"Polygon":b=s.getCoordinates(),b[y[0]].splice(v+1,0,r);break;case"MultiPolygon":b=s.getCoordinates(),b[y[1]][y[0]].splice(v+1,0,r);break;case"LineString":b=s.getCoordinates(),b.splice(v+1,0,r);break;default:return!1}this.setGeometryCoordinates_(s,b);let T=this.rBush_;T.remove(e),this.updateSegmentIndices_(s,v,y,1);let C={segment:[a[0],r],feature:c,geometry:s,depth:y,index:v};T.insert(ss(C.segment),C),this.dragSegments_.push([C,1]);let k={segment:[r,a[1]],feature:c,geometry:s,depth:y,index:v+1};return T.insert(ss(k.segment),k),this.dragSegments_.push([k,0]),!0}updatePointer_(e){return e&&this.findInsertVerticesAndUpdateDragSegments_(e),this.vertexFeature_?.getGeometry().getCoordinates()}getPoint(){let e=this.vertexFeature_?.getGeometry().getCoordinates();return e?ua(e,this.getMap().getView().getProjection()):null}canRemovePoint(){if(!this.vertexFeature_||this.vertexFeature_.get("geometries").every(a=>a.getType()==="Circle"||a.getType().endsWith("Point")))return!1;let e=this.vertexFeature_.getGeometry().getCoordinates();return this.rBush_.getInExtent(ss([e])).some(({segment:a})=>Zi(a[0],e)||Zi(a[1],e))}removePoint(e){if(e&&(e=Ai(e,this.getMap().getView().getProjection()),this.updatePointer_(e)),!this.lastPointerEvent_||this.lastPointerEvent_&&this.lastPointerEvent_.type!=Kn.POINTERDRAG){let r=this.lastPointerEvent_;this.willModifyFeatures_(r,this.dragSegments_.map(([c])=>c));let a=this.removeVertex_();return this.featuresBeingModified_&&this.dispatchEvent(new Xu(C_.MODIFYEND,this.featuresBeingModified_,r)),this.featuresBeingModified_=null,a}return!1}removeVertex_(){let e=this.dragSegments_,r={},a=!1,c,s,y,v,b,T,C,k,O,G,J;for(b=e.length-1;b>=0;--b)y=e[b],G=y[0],J=Vt(G.feature),G.depth&&(J+="-"+G.depth.join("-")),J in r||(r[J]={}),y[1]===0?(r[J].right=G,r[J].index=G.index):y[1]==1&&(r[J].left=G,r[J].index=G.index+1);for(J in r){switch(O=r[J].right,C=r[J].left,T=r[J].index,k=T-1,C!==void 0?G=C:G=O,k<0&&(k=0),v=G.geometry,s=v.getCoordinates(),c=s,a=!1,v.getType()){case"MultiLineString":s[G.depth[0]].length>2&&(s[G.depth[0]].splice(T,1),a=!0);break;case"LineString":s.length>2&&(s.splice(T,1),a=!0);break;case"MultiPolygon":c=c[G.depth[1]];case"Polygon":c=c[G.depth[0]],c.length>4&&(T==c.length-1&&(T=0),c.splice(T,1),a=!0,T===0&&(c.pop(),c.push(c[0]),k=c.length-1));break;default:}if(a){this.setGeometryCoordinates_(v,s);let le=[];if(C!==void 0&&(this.rBush_.remove(C),le.push(C.segment[0])),O!==void 0&&(this.rBush_.remove(O),le.push(O.segment[1])),C!==void 0&&O!==void 0){let he={depth:G.depth,feature:G.feature,geometry:G.geometry,index:k,segment:le};this.rBush_.insert(ss(he.segment),he)}this.updateSegmentIndices_(v,T,G.depth,-1),this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),e.length=0}}return a}canInsertPoint(){if(!this.vertexFeature_||this.vertexFeature_.get("geometries").every(a=>a.getType()==="Circle"||a.getType().endsWith("Point")))return!1;let e=this.vertexFeature_.getGeometry().getCoordinates();return this.rBush_.getInExtent(ss([e])).some(({segment:a})=>!(Zi(a[0],e)||Zi(a[1],e)))}insertPoint(e){let r=e?Ai(e,this.getMap().getView().getProjection()):this.vertexFeature_?.getGeometry().getCoordinates();return r?this.findInsertVerticesAndUpdateDragSegments_(r).reduce((c,s)=>c||this.insertVertex_(s,r),!1):!1}setGeometryCoordinates_(e,r){this.changingFeature_=!0,e.setCoordinates(r),this.changingFeature_=!1}updateSegmentIndices_(e,r,a,c){this.rBush_.forEachInExtent(e.getExtent(),function(s){s.geometry===e&&(a===void 0||s.depth===void 0||yn(s.depth,a))&&s.index>r&&(s.index+=c)})}};function _E(h,e){return h.index-e.index}function O1(h,e,r){let a=e.geometry;if(a.getType()==="Circle"){let s=a;if(e.index===Zu){let y=Zn();y&&(s=s.clone().transform(y,r));let v=Sc(s.getCenter(),Ai(h,r)),b=Math.sqrt(v)-s.getRadius();return b*b}}let c=Ai(h,r);return Gc[0]=Ai(e.segment[0],r),Gc[1]=Ai(e.segment[1],r),bv(c,Gc)}function B1(h,e,r){let a=e.geometry;if(a.getType()==="Circle"&&e.index===Zu){let s=a,y=Zn();return y&&(s=s.clone().transform(y,r)),ua(s.getClosestPoint(Ai(h,r)),r)}let c=Ai(h,r);return Gc[0]=Ai(e.segment[0],r),Gc[1]=Ai(e.segment[1],r),ua(mg(c,Gc),r)}function xE(){let h=Vb();return function(e,r){return h.Point}}var T_=E_;var vE=/^([^@$!\n]*)(@?([\d.]+),([\d.]+))?(\$?([a-zA-Z0-9]{0,2}))$/,N1=/^([\d.]+),([\d.]+)$/,V1=/^!([^$]*)(\$?([a-zA-Z0-9]{0,2}))$/,af="stop-fetch",j1=h=>{let e=[];return h.forEach(r=>{let a=r.getGeometry()?.getCoordinates();a?.length&&e.push(...a)}),e},M_=class h extends Ac{constructor(r={}){super(r);this.abortControllers={};this.cacheStationData={};this.format=new hr({featureProjection:"EPSG:3857"});this.graphs=[];this.initialRouteDrag={};this.segments=[];this.snapToClosestStation=!1;this.useRawViaPoints=!1;this.viaPoints=[];this.element||this.createDefaultElement(),this.loading=!1,this.active=r.active||!0,this.graphs=r.graphs||[["osm",0,99]],this.mot=r.mot||"bus",this.modify=r.modify!==!1,this.apiParams=r.apiParams,this.useRawViaPoints=r.useRawViaPoints||!1,this.snapToClosestStation=r.snapToClosestStation||!1,this.apiKey=r.apiKey,this.stopsApiKey=r.stopsApiKey||this.apiKey,this.stopsApiUrl=r.stopsApiUrl||"https://api.geops.io/stops/v1/",this.api=new eu({...r}),this.routingLayer=r.routingLayer||new jc({source:new yl,style:r.style}),this.onRouteError=r.onRouteError||(a=>{this.dispatchEvent(new Si("change:route")),this.reset(),console.error(a)}),this.onMapClick=this.onMapClick.bind(this),this.onModifyEnd=this.onModifyEnd.bind(this),this.onModifyStart=this.onModifyStart.bind(this),this.createModifyInteraction(),this.on("propertychange",a=>{a.key==="active"&&this.onActiveChange(),a.key==="mot"&&this.viaPoints&&this.drawRoute()})}static getGraphsResolutions(r,a){let c=a.getView();return r.map(([,s,y])=>[c.getResolutionForZoom(s),c.getResolutionForZoom(y||s+1)])}abortRequests(){this.graphs.forEach(r=>{let a=r[0];this.abortControllers[a]&&this.abortControllers[a].abort(),this.abortControllers[a]=new AbortController}),this.abortControllers[af]?.abort(),this.abortControllers[af]=new AbortController,this.loading=!1}activate(){let r=this.getMap();r&&(this.format=new hr({featureProjection:r.getView().getProjection()}),this.graphsResolutions=h.getGraphsResolutions(this.graphs,r),this.modifyInteraction&&r.removeInteraction(this.modifyInteraction),this.modifyInteraction&&r.addInteraction(this.modifyInteraction),this.modifyInteraction?.setActive(this.modify),this.addListeners())}addListeners(){this.modify&&(this.removeListeners(),this.onMapClickKey=this.getMap()?.on("singleclick",this.onMapClick))}addViaPoint(r,a=-1,c=0){this.viaPoints.splice(a===-1?this.viaPoints.length:a,c,r),this.drawRoute(),this.dispatchEvent(new Si("change:route"))}createDefaultElement(){this.element=document.createElement("button"),this.element.id="ol-toggle-routing",this.element.innerHTML="Toggle Route Control",this.element.onclick=()=>this.active?this.deactivate():this.activate(),Object.assign(this.element.style,{position:"absolute",right:"10px",top:"10px"})}createModifyInteraction(){this.modifyInteraction=new T_({deleteCondition:r=>{let c=(r.target?.getFeaturesAtPixel(r.pixel,{hitTolerance:5})||[]).find(s=>s.getGeometry()?.getType()==="Point"&&s.get("index"));return A1(r)&&c?(this.removeViaPoint(c.get("index")),!0):!1},pixelTolerance:6,source:this.routingLayer?.getSource()||void 0}),this.modifyInteraction.on("modifystart",this.onModifyStart),this.modifyInteraction.on("modifyend",this.onModifyEnd),this.modifyInteraction.setActive(!1)}deactivate(){let r=this.getMap();r&&(this.modifyInteraction&&r.removeInteraction(this.modifyInteraction),this.removeListeners(),this.reset())}drawRoute(){if(this.abortRequests(),this.routingLayer?.getSource()?.clear(),!this.viaPoints.length)return null;if(this.viaPoints.length===1)return this.drawViaPoint(this.viaPoints[0],0,this.abortControllers[af]);let r=this.viaPoints.map(a=>{if(Array.isArray(a)){let c=this.getMap()?.getView().getProjection(),[s,y]=al(a,c);return this.snapToClosestStation?[`@${y}`,s]:[y,s]}return this.useRawViaPoints?a:`!${a}`});return this.loading=!0,this.viaPoints.forEach((a,c)=>{this.drawViaPoint(a,c,this.abortControllers[af])}),Promise.all(this.graphs.map(([a],c)=>{let{signal:s}=this.abortControllers[a];return this.api?this.api.route({"coord-punish":1e3,"coord-radius":100,elevation:!1,graph:a,mot:this.mot,"resolve-hops":!1,via:`${r.join("|")}`,...this.apiParams||{}},{signal:s}).then(y=>{if(this.segments=this.format.readFeatures(y),this.mot==="foot"){let T=this.segments.reduce((C,k)=>{let O=k.get("trg");return C.find(G=>G[0]===O[0]&&G[1]===O[1])?C:[...C,O]},[]);this.segments=T.map(C=>{let k=this.segments.filter(G=>{let J=G.get("trg");return J[0]===C[0]&&J[1]===C[1]}),O=j1(k);return new us({geometry:new Is(O)})})}let v=j1(this.segments),b=new us({geometry:new Is(v)});b.set("graph",a),b.set("mot",this.mot),this.graphsResolutions&&this.graphsResolutions[c]?.length>=2&&(b.set("minResolution",this.graphsResolutions[c][0]),b.set("maxResolution",this.graphsResolutions[c][1])),this.routingLayer?.getSource()?.addFeature(b),this.loading=!1}).catch(y=>{/AbortError/.test(y.name)||(this.segments=[],this.dispatchEvent(new Si("error")),this.onRouteError(y,this),this.loading=!1)}):Promise.resolve([])}))}drawViaPoint(r,a,c){let s=new us;if(s.set("viaPointIdx",a),Array.isArray(r))return s.setGeometry(new lr(r)),this.routingLayer?.getSource()?.addFeature(s),Promise.resolve(s);if(!this.useRawViaPoints||V1.test(r)){let C,k;return this.useRawViaPoints?[,C,,k]=V1.exec(r)||[]:[C,k]=r.split("$"),fetch(`${this.stopsApiUrl}lookup/${C}?key=${this.stopsApiKey}`,{signal:c.signal}).then(O=>O.json()).then(O=>{let{coordinates:G}=O?.features?.[0]?.geometry||{};return G||console.log("No coordinates found for station "+C,O),this.cacheStationData[r]=ar(G),s.set("viaPointTrack",k),s.setGeometry(new lr(ar(G))),this.routingLayer?.getSource()?.addFeature(s),s}).catch(O=>{/AbortError/.test(O.message)||(this.dispatchEvent(new Si("error")),this.onRouteError(O,this),this.routingLayer?.getSource()?.clear(),this.loading=!1)})}if(this.useRawViaPoints&&N1.test(r)){let[C,k]=N1.exec(r)||[];if(k&&C){let O=parseFloat(k),G=parseFloat(C),J=ar([O,G],this.getMap()?.getView().getProjection());return s.setGeometry(new lr(J)),this.routingLayer?.getSource()?.addFeature(s),Promise.resolve(s)}}let[,y,,v,b,,T]=vE.exec(r)||[];if(b&&v){let C=ar([parseFloat(b),parseFloat(v)],this.getMap()?.getView().getProjection());return s.set("viaPointTrack",T),s.setGeometry(new lr(C)),this.routingLayer?.getSource()?.addFeature(s),Promise.resolve(s)}return y?fetch(`${this.stopsApiUrl}?key=${this.stopsApiKey}&q=${y}&limit=1`,{signal:c.signal}).then(C=>C.json()).then(C=>{let{coordinates:k}=C.features[0].geometry;return this.cacheStationData[r]=ar(k),s.set("viaPointTrack",T),s.setGeometry(new lr(ar(k))),this.routingLayer?.getSource()?.addFeature(s),s}).catch(C=>(this.dispatchEvent(new Si("error")),this.onRouteError(C,this),this.loading=!1,null)):Promise.resolve(null)}onActiveChange(){this.get("active")?this.activate():this.deactivate(),this.render()}onMapClick(r){let c=r.target.getFeaturesAtPixel(r.pixel,{hitTolerance:5,layerFilter:s=>s===this.routingLayer}).find(s=>s.getGeometry()?.getType()==="Point"&&s.get("viaPointIdx")!==void 0);if(c){this.removeViaPoint(c.get("viaPointIdx"));return}this.addViaPoint(r.coordinate)}onModifyEnd(r){let a=r.mapBrowserEvent.coordinate,{oldRoute:c,segmentIndex:s,viaPoint:y}=this.initialRouteDrag||{};return y?this.addViaPoint(a,y.get("viaPointIdx"),1):c?s===-1?Promise.reject(new Error("No segment found")):this.addViaPoint(a,(s||0)+1):this.addViaPoint(a,0,1)}onModifyStart(r){let a=-1,c=r.features.getArray().find(y=>y.getGeometry()?.getType()==="LineString");if(c?.getGeometry()&&r.mapBrowserEvent.coordinate){let y=os(new lr(c.getGeometry()?.getClosestPoint(r.mapBrowserEvent.coordinate)).getExtent(),.001);a=this.segments.findIndex(v=>v.getGeometry()?.intersectsExtent(y))}let s=(r.features.getArray().filter(y=>y.getGeometry()?.getType()==="Point")||[])[0];this.initialRouteDrag={oldRoute:c?.clone(),segmentIndex:a,viaPoint:s}}removeListeners(){this.onMapClickKey&&bs(this.onMapClickKey)}removeViaPoint(r=(this.viaPoints||[]).length-1){this.viaPoints.length&&this.viaPoints[r]&&this.viaPoints.splice(r,1),this.drawRoute(),this.dispatchEvent(new Si("change:route"))}render(){}reset(){this.abortRequests(),this.viaPoints=[],this.routingLayer?.getSource()?.clear(),this.dispatchEvent(new Si("change:route"))}setMap(r){super.setMap(r),r&&this.active?this.activate():r||(this.active=!1)}setViaPoints(r){this.viaPoints=[...r],this.drawRoute(),this.dispatchEvent(new Si("change:route"))}get active(){return this.get("active")}set active(r){this.set("active",r)}get loading(){return this.get("loading")}set loading(r){this.set("loading",r)}get modify(){return this.get("modify")}set modify(r){this.set("modify",r)}get mot(){return this.get("mot")}set mot(r){this.set("mot",r)}},G1=M_;var P_=class{constructor(e){let{apiKey:r,apiParams:a,placeholder:c,url:s}=e||{};this.apiParams={limit:20,...a||{}},this.placeholder=c||"Search for a stop...";let y={apiKey:r};s&&(y.url=s),this.api=new tu(y),this.abortController=new AbortController,this.createElement(e),this.options=e}clear(){!this.suggestionsElt||!this.inputElt||!this.clearElt||(this.inputElt.value="",this.suggestionsElt.innerHTML="",this.clearElt.style.display="none")}createElement({element:e}){this.inputElt=document.createElement("input"),this.inputElt.type="text",this.inputElt.placeholder=this.placeholder,this.inputElt.autocomplete="off",this.inputElt.onkeyup=r=>{this.abortController?.abort(),this.abortController=new AbortController,this.search(r.target.value,this.abortController)},Object.assign(this.inputElt.style,{padding:"10px 30px 10px 10px"}),e.appendChild(this.inputElt),this.suggestionsElt=document.createElement("div"),Object.assign(this.suggestionsElt.style,{backgroundColor:"white",cursor:"pointer",overflowY:"auto"}),e.appendChild(this.suggestionsElt),this.clearElt=document.createElement("div"),Object.assign(this.clearElt.style,{cursor:"pointer",display:"none",fontSize:"200%",padding:"0 10px",position:"absolute",right:"0"}),this.clearElt.innerHTML="\xD7",this.clearElt.onclick=()=>this.clear(),e.appendChild(this.clearElt)}render(e){let r=e?.features||[];this.suggestionsElt&&(this.suggestionsElt.style.display=r.length?"block":"none",this.suggestionsElt.innerHTML="",r.forEach(a=>{let c=document.createElement("div");c.innerHTML=a?.properties?.name,c.onclick=s=>{this.options?.onSuggestionClick?.(a,s)},Object.assign(c.style,{padding:"5px 12px"}),this.suggestionsElt?.appendChild(c)}))}search(e,r){return(e!==void 0||e!==null)&&(this.apiParams.q=e),this.clearElt&&(this.clearElt.style.display="block"),this.api.search(this.apiParams,r&&{signal:r.signal}).then(a=>{this.render(a)}).catch(()=>{this.render()})}},U1=P_;var bE=()=>{let h=document.createElement("div");return Object.assign(h.style,{position:"absolute",top:0,left:"50px",margin:"10px",display:"flex",flexDirection:"column",width:"320px",maxHeight:"90%"}),h},q1=bE;var A_=class extends Ac{constructor(e){let r=q1();r.className=e?.className||"mbt-stop-finder";let a={element:r,...e||{}};super(a),this.controller=new U1({onSuggestionClick:this.onSuggestionClick.bind(this),...a})}onSuggestionClick(e){let r=ar(e.geometry.coordinates);this.getMap()?.getView().setCenter(r)}search(e,r){return this.controller.search(e,r)}},$1=A_;var Z1=Vs(L_(),1);var wE="vectorTileFeature",D_={"EPSG:3857":new hr({featureProjection:"EPSG:3857"})},Ea=class extends Sa{getFeaturesAtCoordinate(e,r=5){let a=this.getMapLibrePixels(e,r);if(!a)return[];let c=this.getLayer().get("queryRenderedFeaturesOptions")||{};return this.getLayer().mapLibreMap?.queryRenderedFeatures(a,c).map(y=>this.toOlFeature(y))||[]}prepareFrame(){return!0}renderFrame(e){let r=this.getLayer(),{mapLibreMap:a}=r,c=r.getMapInternal();if(!r||!c||!a)return null;let s=a.getCanvas(),{viewState:y}=e;a.jumpTo({center:al(y.center),zoom:y.zoom-1,bearing:lu(-y.rotation)});let v=r.getOpacity().toString();return s&&v!==s.style.opacity&&(s.style.opacity=v),s.isConnected?SE(s,e)||a.resize():c.render(),a.redraw(),a.getContainer()}getFeatures(e){let r=this.getLayer().getMapInternal()?.getCoordinateFromPixel(e);return Promise.resolve(this.getFeaturesAtCoordinate(r))}forEachFeatureAtCoordinate(e,r,a,c){let s=this.getFeaturesAtCoordinate(e,a);return s.forEach(y=>{let v=y.getGeometry();v instanceof Cr&&c(y,this.getLayer(),v)}),s?.[0]}getMapLibrePixels(e,r){if(!e)return;let a=this.getLayer().mapLibreMap?.project(al(e));if(a?.x===void 0||a?.y===void 0)return;let c=[a.x,a.y];if(r){let[s,y]=c;c=[[s-r,y-r],[s+r,y+r]]}return c}toOlFeature(e){let c=this.getLayer().getMapInternal()?.getView()?.getProjection()?.getCode()||"EPSG:3857";D_[c]||(D_[c]=new hr({featureProjection:c}));let s=D_[c].readFeature(e);return s&&s.set(wE,e,!0),s}};function SE(h,e){return h.width===Math.floor(e.size[0]*e.pixelRatio)&&h.height===Math.floor(e.size[1]*e.pixelRatio)}var IE=h=>{if(!h)return[];let{style:e}=h;if(!e)return[];let{sourceCaches:r}=e,a=[];return Object.values(r).forEach(c=>{if(c.used){let{attribution:s}=c.getSource();s&&(a=a.concat(s.replace(/&copy;/g,"\xA9").split(/(<a.*?<\/a>)/)))}}),CE(a)},CE=h=>{let e=h.filter(c=>c!=null&&c.trim&&c.trim()),r=e.map(c=>c.toLowerCase());return[...new Set(r)].map(c=>e.find(s=>s.toLowerCase()===c))},F_=IE;var Uc=class extends Es{mapLibreMap;loaded=!1;olListenersKeys=[];constructor(e){super({source:new Mo({attributions:()=>F_(this.mapLibreMap)}),...e})}disposeInternal(){bs(this.olListenersKeys),this.loaded=!1,this.mapLibreMap&&(this.mapLibreMap.triggerRepaint=()=>{},this.mapLibreMap.remove()),super.disposeInternal()}setMapInternal(e){super.setMapInternal(e),e?this.loadMapLibreMap():this.dispose()}loadMapLibreMap(){this.loaded=!1;let e=this.getMapInternal();if(e&&this.olListenersKeys.push(e.on("change:target",this.loadMapLibreMap.bind(this))),!e?.getTargetElement())return;if(!this.getVisible()){this.olListenersKeys.push(this.once("change:visible",this.loadMapLibreMap.bind(this)));return}let r=document.createElement("div");r.style.position="absolute",r.style.width="100%",r.style.height="100%";let a=this.get("mapLibreOptions");this.mapLibreMap=new Z1.Map(Object.assign({},a,{container:r,attributionControl:!1,interactive:!1,trackResize:!1})),this.mapLibreMap.on("sourcedata",()=>{this.getSource()?.refresh()}),this.mapLibreMap.once("load",()=>{this.loaded=!0,this.dispatchEvent(new Si("load"))})}createRenderer(){return new Ea(this)}};var V_=Vs(_l());var Hu=class extends Ea{constructor(r){super(r);this.ignoreNextRender=!1;this.setIsReady=this.setIsReady.bind(this),this.ignoreNextRender=!1}renderFrame(r){let a=this.getLayer(),{mapLibreMap:c}=a,s=a.getMapInternal();if(this.getLayer()?.mapLibreMap?.off("idle",this.setIsReady),!a||!s||!c)return null;if(this.ignoreNextRender)return this.ignoreNextRender=!1,c?.getContainer();this.ready=!1;let y=super.renderFrame(r);return c?.once("idle",this.setIsReady),y}setIsReady(){this.ready||(this.ready=!0,this.ignoreNextRender=!0,this.getLayer().changed())}};var Y1=Vs(_l()),Li=()=>{};typeof window<"u"&&new URLSearchParams(window.location.search).get("deprecated")&&(Li=(0,Y1.default)(h=>{console.warn(h)},1e3));var UE=(h,e)=>{(e||[]).forEach(r=>{r.set("parent",void 0)}),(h.get("children")||[]).forEach(r=>{r.set("parent",void 0)})},qE=(h,e)=>{e.properties&&(Li("Deprecated. Don't use properties options. Pass the values directly in options object."),h.setProperties(e.properties)),h.on("propertychange",r=>{if(r.key==="children"&&UE(r.target,r.oldValue),r.key==="map"){let a=r.target.get(r.key);a?(r.target.get("children")||[]).forEach(c=>{a.addLayer(c)}):r.oldValue&&(r.target.get("children")||[]).forEach(c=>{r.oldValue.removeLayer(c)})}}),h.set("options",e),h.set("children",e.children||[]),Object.defineProperties(h,{children:{get:()=>(Li("Layer.children is deprecated. Use the Layer.get('children') method instead."),h.get("children")||[]),set:r=>{Li("Layer.children is deprecated. Use the Layer.set('children', children) method instead."),h.set("children",r||[])}},copyrights:{get:()=>(Li("Layer.copyrights is deprecated. Get the attributions from the source object"),h.get("copyrights")),set:r=>{Li("Layer.copyrights is deprecated. Set the attributions to the source object.");let a=r&&!Array.isArray(r)?[r]:r;h.set("copyrights",a||[])}},disabled:{get(){return Li("Layer.disabled is deprecated. Use the Layer.get('disabled') method instead."),h.get("disabled")},set(r){Li("Layer.disabled is deprecated. Use the Layer.set('disabled', newValue) method instead."),h.set("disabled",r)}},group:{get(){return Li("Layer.group is deprecated. Use the Layer.get('group') method instead."),h.get("group")}},hitTolerance:{get(){return Li("Layer.hitTolerance is deprecated. Pass the hitTolerance when you request the features."),h.get("hitTolerance")||5},set(r){Li("Layer.hitTolerance is deprecated. Pass the hitTolerance when you request the features."),h.set("hitTolerance",r)}},key:{get(){return Li('Layer.key is deprecated. Use the Layer.get("key") method instead.'),h.get("key")||h.get("name")}},map:{get(){return Li('Layer.map is deprecated. Use the Layer.get("map") method instead.'),h.getMapInternal()}},name:{get(){return Li("Layer.name is deprecated. Use the Layer.get('name') method instead."),h.get("name")}},olLayer:{get(){return Li("Layer.olLayer is deprecated. mobility-toolbox-js/ol layers inherits now from ol/layer/Layer class. obj getter is only a redirect to the current 'this' object."),h},set(){Li("Layer.olLayer is deprecated. mobility-toolbox-js/ol layers inherits now from ol/layer/Layer class. obj setter has no effect.")}},options:{get(){return Li('Layer.options is deprecated. Use the Layer.get("options") method instead.'),h.get("options")},set(r){return Li('Layer.options is deprecated. Use the Layer.set("options", newValue) method instead.'),h.set("options",r)}},parent:{get(){return Li("Layer.parent is deprecated. Use the Layer.get('parent') method instead."),h.get("parent")},set(r){Li("Layer.parent is deprecated. Use the Layer.set('parent', parent) method instead."),h.set("parent",r)}},visible:{get(){return Li("Layer.visible is deprecated. Use the Layer.getVisible() method instead."),h.getVisible()},set(r){Li("Layer.visible is deprecated. Use the Layer.setVisible(newValue) method instead."),h.setVisible(r)}}})},Ta=qE;var J1=(h,e,r,a)=>el(`${h}/styles/${e}/style.json`,{[a]:r}).toString(),B_=()=>{};typeof window<"u"&&new URLSearchParams(window.location.search).get("deprecated")&&(B_=(0,V_.default)(h=>{console.warn(h)},1e3));var N_=class h extends Uc{constructor(r){let a={apiKeyName:"key",style:"travic_v2",url:"https://maps.geops.io",...r||{},mapLibreOptions:{...r.mapLibreOptions||{}}};!a.mapLibreOptions.style&&a.url?.includes("style.json")?a.mapLibreOptions.style=a.url:!a.mapLibreOptions.style&&a.apiKey&&a.style&&typeof a.style=="string"&&(a.mapLibreOptions.style=J1(a.url,a.style,a.apiKey,a.apiKeyName));super(a);this.olEventsKeys=[];Ta(this,r),this.set("options",r)}set apiKey(r){this.set("apiKey",r)}get apiKey(){return this.get("apiKey")}set apiKeyName(r){this.set("apiKeyName",r)}get apiKeyName(){return this.get("apiKeyName")}get maplibreMap(){return B_("MaplibreLayer.maplibreMap is deprecated. Use layer.mapLibreMap."),this.mapLibreMap}get mbMap(){return B_("MaplibreLayer.mbMap is deprecated. Use layer.maplibreMap."),this.maplibreMap}get style(){return this.get("style")}set style(r){this.set("style",r)}get url(){return this.get("url")}set url(r){this.set("url",r)}attachToMap(){let r=(0,V_.default)(this.updateMaplibreMap.bind(this),150);r(),this.olEventsKeys.push(this.on("propertychange",a=>{/(url|style|apiKey|apiKeyName)/.test(a.key)&&r()}))}clone(r){return new h({...this.get("options")||{},...r||{}})}createRenderer(){return new Hu(this)}detachFromMap(){bs(this.olEventsKeys)}disposeInternal(){let r=this.getSource();super.disposeInternal(),this.setSource(r)}getStyle(){return this.style&&typeof this.style=="object"&&this.style.name&&this.style.version?this.style:this.url.includes("style.json")?this.url:this.get("options")?.mapLibreOptions?.style?this.get("options").mapLibreOptions.style:J1(this.url,this.style,this.apiKey,this.apiKeyName)}setMapInternal(r){r?(super.setMapInternal(r),this.attachToMap()):(this.detachFromMap(),super.setMapInternal(r))}updateMaplibreMap(){try{this.mapLibreMap?.setStyle(this.getStyle(),{diff:!1})}catch(r){console.error("Error while updating MaplibreMap",r)}}},Q1=N_;var ew=Vs(_l());var j_={"EPSG:3857":new hr({featureProjection:"EPSG:3857"})},Ku=class extends Sa{forEachFeatureAtCoordinate(e,r,a,c){let s=this.getFeaturesAtCoordinate(e,a);return s.forEach(y=>{c(y,this.layer_,y.getGeometry())}),s?.[0]}getFeatures(e){let r=this.getLayer()?.getMapInternal()?.getCoordinateFromPixel(e);return Promise.resolve(this.getFeaturesAtCoordinate(r))}getFeaturesAtCoordinate(e,r=5){if(!e)return[];let a=this.getLayer(),c=a.getMapInternal(),s=a.maplibreLayer.mapLibreMap,y=c?.getView()?.getProjection()?.getCode()||"EPSG:3857",v=[];if(j_[y]||(j_[y]=new hr({featureProjection:y})),s?.isStyleLoaded()){let b=e&&s.project(al(e));if(b?.x&&b?.y){let T=[b.x,b.y];if(r){let[k,O]=T;T=[[k-r,O-r],[k+r,O+r]]}let C=a.layers||[];a.layersFilter&&(C=s.getStyle().layers.filter(a.layersFilter)),a.queryRenderedLayersFilter&&(C=s.getStyle().layers.filter(a.queryRenderedLayersFilter)),v=s.queryRenderedFeatures(T,{layers:C.map(k=>k.id),validate:!1}).map(k=>{let O=j_[y].readFeature(k);return O&&O.set(Pc,k),O})}}return v}prepareFrame(){return!0}renderFrame(){return null}};var Mn=()=>{};typeof window<"u"&&new URLSearchParams(window.location.search).get("deprecated")&&(Mn=(0,ew.default)((...h)=>{console.warn(...h)},1e3));var G_=class h extends Es{constructor(r={mapLibreOptions:{style:{layers:[],sources:{},version:8}}}){r.mapboxLayer&&(Mn("options.mapboxLayer is deprecated. Use options.maplibreLayer instead."),r.maplibreLayer=r.mapboxLayer,delete r.mapboxLayer),r.styleLayers&&(Mn("options.styleLayers is deprecated. Use options.layers instead."),r.layers=r.styleLayers,delete r.styleLayers),r.styleLayersFilter&&(Mn("options.styleLayersFilter is deprecated. Use options.layersFilter instead."),r.layersFilter=r.styleLayersFilter,delete r.styleLayersFilter);super({source:new Mo({}),...r});this.highlightedFeatures=[];this.olEventsKeys=[];this.selectedFeatures=[];Ta(this,r),this.set("options",r),this.beforeId=r.beforeId,this.onLoad=this.onLoad.bind(this),!this.layersFilter&&this.layers&&(this.layersFilter=a=>!!this.layers.find(c=>a.id===c.id))}get beforeId(){return this.get("beforeId")}set beforeId(r){this.set("beforeId",r)}get layers(){return this.get("layers")}set layers(r){this.set("layers",r)}get layersFilter(){return this.get("layersFilter")}set layersFilter(r){this.set("layersFilter",r)}get mapboxLayer(){return Mn("Deprecated. Use maplibreLayer instead."),this.get("maplibreLayer")}get maplibreLayer(){return this.get("maplibreLayer")}set maplibreLayer(r){this.set("maplibreLayer",r)}get queryRenderedLayersFilter(){return this.get("queryRenderedLayersFilter")}set queryRenderedLayersFilter(r){this.set("queryRenderedLayersFilter",r)}get sources(){return this.get("sources")}set sources(r){this.set("sources",r)}get styleLayer(){return Mn("Deprecated. Use MaplibreStyleLayer.layer instead."),this.layers[0]}set styleLayer(r){Mn("MaplibreStyleLayer.styleLayer is deprecated. Use MaplibreStyleLayer.layer instead."),this.layers=[r]}get styleLayers(){return Mn("MaplibreStyleLayer.styleLayers is deprecated. Use MaplibreStyleLayer.layers instead."),this.layers}set styleLayers(r){Mn("MaplibreStyleLayer.styleLayers is deprecated. Use MaplibreStyleLayer.layers instead."),this.layers=r}addLayers(){if(!this.maplibreLayer?.mapLibreMap||!Array.isArray(this.layers))return;let{mapLibreMap:r}=this.maplibreLayer;r&&(this.layers.forEach(a=>{let{id:c,source:s}=a;(!s||s&&r.getSource(s))&&c&&!r.getLayer(c)&&r.addLayer(a,this.beforeId)}),this.applyLayoutVisibility())}addSources(){if(!this.maplibreLayer?.mapLibreMap||!this.sources)return;let{mapLibreMap:r}=this.maplibreLayer;r&&Object.entries(this.sources).forEach(([a,c])=>{r.getSource(a)||r.addSource(a,c)})}applyLayoutVisibility(r){if(!this.maplibreLayer?.mapLibreMap?.getStyle()||!this.layersFilter)return;let{mapLibreMap:a}=this.maplibreLayer,c=a.getStyle(),s=this.getVisible()?"visible":"none",y=c.layers||[];for(let v=0;v<y.length;v+=1){let b=y[v];if(this.layersFilter(b)){let{id:T}=b;a.getLayer(T)&&(a.setLayoutProperty(T,"visibility",s),(this.getMinZoom()||this.getMaxZoom())&&a.setLayerZoomRange(T,this.getMinZoom()?this.getMinZoom()-1:0,this.getMaxZoom()?this.getMaxZoom()-1:24))}}}attachToMap(r){if(!this.getMapInternal()||!this.maplibreLayer)return;let{mapLibreMap:c}=this.maplibreLayer;c&&(c.loaded()?this.onLoad():c.once("load",this.onLoad)),this.olEventsKeys.push(this.maplibreLayer.on("load",this.onLoad.bind(this)),this.on("change:visible",s=>{this.applyLayoutVisibility(s)}),this.on("propertychange",s=>{/(sources|layers|layersFilter|maplibreLayer|beforeId)/.test(s.key)&&(this.detachFromMap(),this.attachToMap(r))}),this.maplibreLayer.on("propertychange",s=>{s.key==="style"&&s.target.maplibreMap.once("styledata",()=>{s.target.maplibreMap.once("idle",()=>{this.onLoad()})})}))}clone(r){return new h({...this.get("options"),...r})}createRenderer(){return new Ku(this)}detachFromMap(){bs(this.olEventsKeys),this.maplibreLayer?.mapLibreMap&&(this.maplibreLayer.mapLibreMap.off("load",this.onLoad),this.removeLayers(),this.removeSources())}getFeatureInfoAtCoordinate(r){if(Mn("Deprecated. getFeatureInfoAtCoordinate([layer], coordinate) from ol package instead."),!this.maplibreLayer?.mapLibreMap)return Promise.resolve({coordinate:r,features:[],layer:this});let{mapLibreMap:a}=this.maplibreLayer;if(!a.isStyleLoaded())return Promise.resolve({coordinate:r,features:[],layer:this});let c=this.layers||[];return this.layersFilter&&(c=a.getStyle().layers.filter(this.layersFilter),console.log(c)),this.queryRenderedLayersFilter&&(c=a.getStyle().layers.filter(this.queryRenderedLayersFilter)),Promise.resolve({coordinate:r,features:[],layer:this})}highlight(r=[]){Mn("Deprecated. Use layer.setFeatureState(features, {hover: true}) instead.");let a=this.highlightedFeatures?.filter(c=>!(this.selectedFeatures||[]).map(s=>s.getId()).includes(c.getId()))||[];this.setHoverState(a,!1),this.highlightedFeatures=r,this.setHoverState(this.highlightedFeatures,!0)}onLoad(){if(!this.maplibreLayer?.mapLibreMap)return;this.addSources(),this.addLayers();let{mapLibreMap:r}=this.maplibreLayer,a=r.getStyle();if(a?.layers&&this.layersFilter){let c=a.layers.filter(this.layersFilter);this.set("disabled",!c.length)}this.applyLayoutVisibility()}removeLayers(){if(!this.maplibreLayer?.mapLibreMap||!Array.isArray(this.layers))return;let{mapLibreMap:r}=this.maplibreLayer;r&&this.layers.forEach(a=>{let{id:c}=a;c&&r.getLayer(c)&&r.removeLayer(c)})}removeSources(){if(!this.maplibreLayer?.mapLibreMap||!this.sources)return;let{mapLibreMap:r}=this.maplibreLayer;r&&Object.keys(this.sources).forEach(a=>{r.getSource(a)&&r.removeSource(a)})}select(r=[]){Mn("Deprecated. Use layer.setFeatureState(features, {selected: true}) instead."),this.setHoverState(this.selectedFeatures||[],!1),this.selectedFeatures=r,this.setHoverState(this.selectedFeatures||[],!0)}setFeatureState(r,a){if(!this.maplibreLayer?.mapLibreMap||!r.length)return;let c=this.maplibreLayer.mapLibreMap;r.forEach(s=>{let{source:y,sourceLayer:v}=s.get(Pc)||{};if(!y&&!v||!s.getId()){s.getId()||Mn("No feature's id found. To use the feature state functionnality, tiles must be generated with --generate-ids. See https://github.com/Maplibre/tippecanoe#adding-calculated-attributes.",s.getProperties());return}c.setFeatureState({id:s.getId(),source:y,sourceLayer:v},a)})}setHoverState(r,a){Mn(`Deprecated. Use layer.setFeatureState(features, {hover: ${a}}) instead.`),this.setFeatureState(r,{hover:a})}setMapInternal(r){r?(super.setMapInternal(r),this.attachToMap(r)):(this.detachFromMap(),super.setMapInternal(r))}},tw=G_;var Z_=Vs(_l());var q_=Vs(_l()),$_=Vs(ow());var W_=class{constructor(e){this.isIdle=!1;this.getViewState=()=>({});this.shouldRender=()=>!0;this._mode=e.mode||$i.TOPOGRAPHIC,this._speed=e.speed||1,this._style=e.style||tl,this._time=e.time||new Date,this.api=e.api||new Qh(e),this.bboxParameters=e.bboxParameters,this.canvas=e.canvas||document.createElement("canvas"),this.debug=e.debug||!1,this.filter=e.filter,this.hoverVehicleId=e.hoverVehicleId,this.live=e.live!==!1,this.minZoomInterpolation=e.minZoomInterpolation||8,this.pixelRatio=e.pixelRatio||(typeof window<"u"?window.devicePixelRatio:1),this.selectedVehicleId=e.selectedVehicleId,this.sort=e.sort,this.styleOptions={...Mc,...e.styleOptions||{}},this.tenant=e.tenant||"",this.trajectories={},this.useDebounce=e.useDebounce||!1,this.useRequestAnimationFrame=e.useRequestAnimationFrame||!1,this.useThrottle=e.useThrottle!==!1,this.getViewState=e.getViewState||(()=>({})),this.shouldRender=e.shouldRender||(()=>!0),this.onRender=e.onRender,this.onIdle=e.onIdle,this.onStart=e.onStart,this.onStop=e.onStop,this.format=new hr,this.motsByZoom=e.motsByZoom||[Cs,Cs,Cs,Cs,Cs,Cs,Cs,Cs,Cs,Dp,Dp],this.getMotsByZoom=r=>e.getMotsByZoom?e.getMotsByZoom(r,this.motsByZoom):this.motsByZoom[r],this.generalizationLevelByZoom=e.generalizationLevelByZoom||[],this.getGeneralizationLevelByZoom=r=>e.getGeneralizationLevelByZoom?e.getGeneralizationLevelByZoom(r,this.generalizationLevelByZoom):this.generalizationLevelByZoom[r],this.renderTimeIntervalByZoom=e.renderTimeIntervalByZoom||[1e5,5e4,4e4,3e4,2e4,15e3,1e4,5e3,2e3,1e3,400,300,250,180,90,60,50,50,50,50,50],this.getRenderTimeIntervalByZoom=r=>e.getRenderTimeIntervalByZoom?e.getRenderTimeIntervalByZoom(r,this.renderTimeIntervalByZoom):this.renderTimeIntervalByZoom[r],this.isUpdateBboxOnMoveEnd=e.isUpdateBboxOnMoveEnd!==!1,this.throttleRenderTrajectories=(0,$_.default)(this.renderTrajectoriesInternal,50,{leading:!1,trailing:!0}),this.debounceRenderTrajectories=(0,q_.default)(this.renderTrajectoriesInternal,50,{leading:!0,maxWait:5e3,trailing:!0}),this.renderState={center:[0,0],rotation:0,zoom:void 0},this.onTrajectoryMessage=this.onTrajectoryMessage.bind(this),this.onDeleteTrajectoryMessage=this.onDeleteTrajectoryMessage.bind(this),this.onDocumentVisibilityChange=this.onDocumentVisibilityChange.bind(this)}get mode(){return this._mode}set mode(e){e!==this._mode&&(this._mode=e,this.api?.wsApi?.open&&(this.stop(),this.start()))}get speed(){return this._speed}set speed(e){this._speed=e,this.start()}get style(){return this._style}set style(e){this._style=e,this.renderTrajectories()}get time(){return this._time}set time(e){this._time=e?.getTime?e:new Date(e),this.renderTrajectories()}addTrajectory(e){this.trajectories||(this.trajectories={});let r=e.properties.train_id;r!==void 0&&(this.trajectories[r]=e),this.renderTrajectories()}attachToMap(){document.addEventListener("visibilitychange",this.onDocumentVisibilityChange)}detachFromMap(){if(document.removeEventListener("visibilitychange",this.onDocumentVisibilityChange),this.stop(),this.canvas){let e=this.canvas.getContext("2d");e&&e.clearRect(0,0,this.canvas.width,this.canvas.height)}}getRefreshTimeInMs(){let r=this.getViewState().zoom||0,a=r!==void 0?Math.round(r):-1,c=this.getRenderTimeIntervalByZoom(a)||25,s=Math.max(25,c/(this.speed||1)),y=Math.min(s,500);if(this.useThrottle?this.throttleRenderTrajectories=(0,$_.default)(this.renderTrajectoriesInternal,y,{leading:!0,trailing:!0}):this.useDebounce&&(this.debounceRenderTrajectories=(0,q_.default)(this.renderTrajectoriesInternal,y,{leading:!0,maxWait:5e3,trailing:!0})),this.api?.buffer){let[,v]=this.api.buffer;this.api.buffer=[y,v]}return s}getVehicles(e){return this.trajectories&&Object.values(this.trajectories).filter(e)||[]}getVehiclesAtCoordinate(e,r){let{resolution:a}=this.getViewState(),{hitTolerance:c,nb:s}=r||{},y=os([...e,...e],(c||5)*(a||1)),v=Object.values(this.trajectories||{});this.sort&&(v=v.sort(this.sort));let b=[];for(let T=0;T<v.length;T+=1){let{coordinate:C}=v[T].properties;if(C&&rl(y,C)&&b.push(v[T]),b.length===s)break}return{features:b,type:"FeatureCollection"}}onDeleteTrajectoryMessage(e){e.content&&this.removeTrajectory(e.content)}onDocumentVisibilityChange(){if(document.hidden)this.stop(),this.trajectories={};else{if(!this.getViewState().visible)return;this.start()}}onTrajectoryMessage(e){if(this.updateIdleState(),!e.content)return;let r=e.content,{geometry:a,properties:{raw_coordinates:c,time_since_update:s}}=r;s<0||this.purgeTrajectory(r)||(this.debug&&this.mode===$i.TOPOGRAPHIC&&c?r.properties.olGeometry=this.format.readGeometry({coordinates:ar(c),type:"Point"}):r.properties.olGeometry=this.format.readGeometry(a),r.properties.timeOffset=Date.now()-e.timestamp,this.addTrajectory(r))}onZoomEnd(){this.startUpdateTime()}purgeOutOfDateTrajectories(){Object.entries(this.trajectories||{}).forEach(([e,r])=>{let a=r?.properties?.time_intervals;this.time&&a?.length&&a[a.length-1][0]<this.time.getTime()&&this.removeTrajectory(e)})}purgeTrajectory(e){let a=this.getViewState().extent,{bounds:c,type:s}=e.properties;return this.isUpdateBboxOnMoveEnd&&a&&!Vi(a,c)||this.mots&&!this.mots.includes(s)?(this.removeTrajectory(e),!0):!1}removeTrajectory(e){let r;typeof e!="string"?r=e?.properties?.train_id:r=e,r!==void 0&&this.trajectories&&delete this.trajectories[r]}renderTrajectories(e){let r=this.getViewState();this.requestId&&(cancelAnimationFrame(this.requestId),this.requestId=void 0),!(!r?.center||!r?.extent||!r?.size)&&(!e&&this.useRequestAnimationFrame?this.requestId=requestAnimationFrame(()=>{this.renderTrajectoriesInternal(r,e)}):!e&&this.useDebounce?this.debounceRenderTrajectories(r,e):!e&&this.useThrottle?this.throttleRenderTrajectories(r,e):this.renderTrajectoriesInternal(r,e))}renderTrajectoriesInternal(e,r=!1){if(!this.trajectories||!this.shouldRender())return!1;let a=this.live?Date.now():this.time?.getTime(),c=Object.values(this.trajectories);return this.sort&&c.sort(this.sort),!this.canvas||!this.style||(this.renderState=Su(this.canvas,c,this.style,{...e,pixelRatio:this.pixelRatio||1,time:a},{filter:this.filter,hoverVehicleId:this.hoverVehicleId,noInterpolate:(e.zoom||0)<this.minZoomInterpolation?!0:r,selectedVehicleId:this.selectedVehicleId,...this.styleOptions}),this.onRender?.(this.renderState,e)),!0}setBbox(){this.updateIdleState();let e=this.getViewState(),r=e.extent,a=e.zoom||0;if(!r||Number.isNaN(a))return;if(this.trajectories&&r&&a){let C=Object.keys(this.trajectories);for(let k=C.length-1;k>=0;k-=1)this.purgeTrajectory(this.trajectories[C[k]])}let c=Math.floor(a);if(!r||Number.isNaN(c))return;let[s,y,v,b]=r,T=[Math.floor(s),Math.floor(y),Math.ceil(v),Math.ceil(b),c];this.generalizationLevel=this.getGeneralizationLevelByZoom(c),this.generalizationLevel&&T.push(`gen=${this.generalizationLevel}`),this.mots=this.getMotsByZoom(c),this.mots&&T.push(`mots=${this.mots}`),this.tenant&&T.push(`tenant=${this.tenant}`),this.mode!=="topographic"&&T.push(`channel_prefix=${this.mode}`),this.bboxParameters&&Object.entries(this.bboxParameters).forEach(([C,k])=>{T.push(`${C}=${k}`)}),this.api.bbox=T}start(){this.stop(),this.purgeOutOfDateTrajectories(),this.renderTrajectories(),this.startUpdateTime(),this.api.open(),this.api.subscribeTrajectory(this.mode,this.onTrajectoryMessage,void 0,this.isUpdateBboxOnMoveEnd),this.api.subscribeDeletedVehicles(this.mode,this.onDeleteTrajectoryMessage,void 0,this.isUpdateBboxOnMoveEnd),this.isUpdateBboxOnMoveEnd&&this.setBbox(),this.onStart&&this.onStart(this)}startUpdateTime(){this.stopUpdateTime(),this.updateTimeDelay=this.getRefreshTimeInMs()||0,this.updateTimeInterval=window.setInterval(()=>{this.live?this.time=new Date:this.time&&this.updateTimeDelay&&this.speed&&(this.time=new Date(this.time.getTime()+this.updateTimeDelay*this.speed))},this.updateTimeDelay)}stop(){this.api.unsubscribeTrajectory(this.onTrajectoryMessage),this.api.unsubscribeDeletedVehicles(this.onDeleteTrajectoryMessage),this.api.close(),this.onStop&&this.onStop(this)}stopUpdateTime(){this.updateTimeInterval&&(clearInterval(this.updateTimeInterval),this.updateTimeInterval=void 0)}updateIdleState(){this.isIdle=!1,clearTimeout(this._idleTimeout),this._idleTimeout=window.setTimeout(()=>{this.isIdle=!0,this.onIdle?.(this)},1e3)}},cf=W_;var lT=new hr,Yu=class extends rf{forEachFeatureAtCoordinate(e,r,a,c){let s=this.getFeaturesAtCoordinate(e,a);return s.forEach(y=>{c(y,this.layer_,y.getGeometry())}),s?.[0]}getData(e){let r;try{let{pixelRatio:a}=this.getLayer();return r=this.canvas?.getContext("2d",{willReadFrequently:!0})?.getImageData(e[0]*(a||1),e[1]*(a||1),1,1).data||null,r}catch(a){console.error("error getting data",a)}return null}getFeatures(e){let r=this.getLayer()?.getMapInternal()?.getCoordinateFromPixel(e);return Promise.resolve(this.getFeaturesAtCoordinate(r))}getFeaturesAtCoordinate(e,r=5){if(!e)return[];let a=this.getLayer(),c=a.engine.getVehiclesAtCoordinate(e,{hitTolerance:r,nb:a.maxNbFeaturesRequested});return lT.readFeatures(c)}prepareFrame(){return!0}renderFrame(e){let{canvas:r,engine:a,renderedViewState:c}=this.getLayer();if(this.getLayer().engine.pixelRatio=e.pixelRatio,this.ready=!!a.renderState?.renderedTrajectories&&a.isIdle,this.container||(this.container=document.createElement("div"),this.container.className=this.getLayer().getClassName(),this.container.style.position="absolute",this.container.style.width="100%",this.container.style.height="100%",r instanceof HTMLCanvasElement&&(r.style.position="absolute",r.style.top="0",r.style.left="0",r.style.transformOrigin="top left",this.container.appendChild(r))),c){let{center:s,resolution:y,rotation:v}=e.viewState,{center:b,resolution:T,rotation:C}=c;if(T/y>=3){let k=r?.getContext("2d");r?.width&&r?.height&&k?.clearRect(0,0,r.width,r.height)}else{let k=this.getLayer().getMapInternal(),O=k?.getPixelFromCoordinate(b),G=k?.getPixelFromCoordinate(s);O&&G&&(this.container.style.transform=Jx(O[0]-G[0],O[1]-G[1],T/y,T/y,v-C,0,0))}}return this.container}};var cT=new Tr({image:new En({fill:new Er({color:"#000000"}),radius:5}),stroke:new Xi({color:"#000000",width:6}),zIndex:2}),hT=(h,e,r)=>{let a="#ffffff",c=h.get("type"),s=h.get("stroke");return s&&s[0]!=="#"&&(s=`#${s}`),a=s||r?.getBgColor(c),a=/#ffffff/i.test(a)?"#ff0000":a,[cT,new Tr({image:new En({fill:new Er({color:a}),radius:4}),stroke:new Xi({color:a,width:4}),zIndex:3})]},hf=hT;var uT=new Tr({image:new En({fill:new Er({color:"#000000"}),radius:5}),stroke:new Xi({color:"#000000",width:6}),zIndex:2}),dT=new Tr({image:new En({fill:new Er({color:"#a0a0a0"}),radius:4}),stroke:new Xi({color:"#a0a0a0",width:4}),zIndex:3}),pT=()=>[uT,dT],aw=pT;var lw=new En({fill:new Er({color:[255,0,0,1]}),radius:6,stroke:new Xi({color:[0,0,0,1],width:1})}),fT=new Tr({stroke:new Xi({color:[0,0,0,1],width:5})}),mT=new Tr({image:lw,stroke:new Xi({color:[255,0,0,1],width:3})}),gT=new Tr({image:lw,stroke:new Xi({color:[255,0,0,1],lineDash:[1,10],width:3})}),yT=(h,e)=>{let r=h.get("minResolution"),a=h.get("maxResolution"),c=e<=r&&e>a;if(r&&a&&!c)return[];let s=h?.getGeometry()?.getType()==="Point"?100:0,y=[fT,mT];return h.get("mot")==="foot"&&(y=[gT]),y=y.map(b=>{let T=b.clone();return T.setZIndex(s),T}),y},cw=yT;var _T=new hr,X_=class h extends Es{constructor(r){super({source:new Mo({}),...r});this.allowRenderWhenAnimating=!1;this.maxNbFeaturesRequested=100;this.olEventsKeys=[];Ta(this,r),this.engine=new cf({getViewState:this.getViewState.bind(this),onIdle:this.onRealtimeEngineIdle.bind(this),onRender:this.onRealtimeEngineRender.bind(this),...r}),this.allowRenderWhenAnimating=!!r.allowRenderWhenAnimating,this.vectorLayer=new jc({source:new yl({features:[]}),style:(a,c)=>(r.fullTrajectoryStyle||hf)(a,c,this.engine.styleOptions),updateWhileAnimating:this.allowRenderWhenAnimating,updateWhileInteracting:!0}),this.onZoomEndDebounced=(0,Z_.default)(this.onZoomEnd,100),this.onMoveEndDebounced=(0,Z_.default)(this.onMoveEnd,100)}get api(){return this.engine.api}set api(r){this.engine.api=r}get canvas(){return this.engine.canvas}get filter(){return this.engine.filter}set filter(r){this.engine.filter=r}get hoverVehicleId(){return this.engine.hoverVehicleId}set hoverVehicleId(r){this.engine.hoverVehicleId=r}get mode(){return this.engine.mode}set mode(r){this.engine.mode=r}get pixelRatio(){return this.engine.pixelRatio}get selectedVehicleId(){return this.engine.selectedVehicleId}set selectedVehicleId(r){this.engine.selectedVehicleId=r}get sort(){return this.engine.sort}set sort(r){this.engine.sort=r}get trajectories(){return this.engine.trajectories}attachToMap(){this.engine.attachToMap();let r=this.getMapInternal();r&&(this.getVisible()&&this.engine.start(),this.olEventsKeys.push(r.on("movestart",()=>{this.engine.isUpdateBboxOnMoveEnd&&this.engine.updateIdleState()}),...r.on(["moveend","change:target"],a=>{let c=(a.map||a.target).getView();if(!c||c?.getAnimating()||c?.getInteracting())return;let s=c.getZoom();this.currentZoom!==s&&this.onZoomEndDebounced(a),this.currentZoom=s,this.onMoveEndDebounced(a)}),this.on("change:visible",a=>{a.target.getVisible()?this.engine.start():this.engine.stop()}),this.on("propertychange",a=>{/(opacity|visible|zIndex|minResolution|maxResolution|minZoom|maxZoom)/.test(a.key)&&this.vectorLayer.set(a.key,a.target.get(a.key))})))}cleanVectorLayer(){this.vectorLayer?.getSource()?.clear(!0),this.vectorLayer.getMapInternal()?.removeLayer(this.vectorLayer)}clone(r){return new h({...this.get("options"),...r})}createRenderer(){return new Yu(this)}detachFromMap(){bs(this.olEventsKeys),this.getMapInternal()?.removeLayer(this.vectorLayer),this.engine.detachFromMap()}async getFullTrajectory(r){let a=await this.engine.api.getFullTrajectory(r,this.engine.mode,this.engine.getGeneralizationLevelByZoom(Math.floor(this.getMapInternal()?.getView()?.getZoom()||0)));return a?.content?.features?.length?_T.readFeatures(a?.content):[]}async getStopSequences(r){return(await this.engine.api.getStopSequence(r))?.content}async getTrajectoryInfos(r){let a=[this.getStopSequences(r),this.getFullTrajectory(r)],[c,s]=await Promise.all(a);return{fullTrajectory:s,stopSequences:c}}getVehicles(r){return this.engine.getVehicles(r)}getViewState(){let r=this.getMapInternal();if(!r?.getView())return{};let a=r.getView();return{center:a.getCenter(),extent:a.calculateExtent(),pixelRatio:this.engine.pixelRatio,resolution:a.getResolution(),rotation:a.getRotation(),size:r.getSize(),visible:this.getVisible(),zoom:a.getZoom()}}highlight(r){let a=r?.get("train_id");this.hoverVehicleId!==a&&(this.hoverVehicleId=a,this.engine.renderTrajectories(!0))}async highlightTrajectory(r){if(!r){this.cleanVectorLayer();return}let a=await this.getFullTrajectory(r);if(!a?.length){this.cleanVectorLayer();return}a.length&&this.vectorLayer?.getSource()?.addFeatures(a),this.vectorLayer.getMapInternal()&&this.vectorLayer.getMapInternal()!==this.getMapInternal()&&this.vectorLayer.getMapInternal()?.removeLayer(this.vectorLayer);let c=this.getZIndex();if(c!==void 0)this.vectorLayer.setZIndex(c-1),this.vectorLayer.getMapInternal()||this.getMapInternal()?.addLayer(this.vectorLayer);else if(!this.vectorLayer.getMapInternal()){let s=this.getMapInternal()?.getLayers().getArray().indexOf(this)||0;s&&this.getMapInternal()?.getLayers().insertAt(s,this.vectorLayer)}return a}onMoveEnd(){!this.engine.isUpdateBboxOnMoveEnd||!this.getVisible()||this.engine.setBbox()}onRealtimeEngineIdle(){this.changed()}onRealtimeEngineRender(r,a){this.renderedViewState={...a};let{container:c}=this.getRenderer();c&&(c.style.transform="")}onZoomEnd(){this.engine.onZoomEnd(),!(!this.engine.isUpdateBboxOnMoveEnd||!this.getVisible())&&this.selectedVehicleId&&this.highlightTrajectory(this.selectedVehicleId)}select(r){let a=r?.get("train_id");this.selectedVehicleId!==a&&(this.selectedVehicleId=a,this.engine.renderTrajectories(!0)),this.highlightTrajectory(a)}setMapInternal(r){r?(super.setMapInternal(r),this.attachToMap()):(this.detachFromMap(),super.setMapInternal(r))}shouldRender(){return this.allowRenderWhenAnimating?!1:this.getMapInternal()?.getView().getAnimating()||this.getMapInternal()?.getView().getInteracting()}start(){this.engine.start()}stop(){this.engine.stop()}},hw=X_;var uw=Vs(_l());var dw=()=>{};typeof window<"u"&&new URLSearchParams(window.location.search).get("deprecated")&&(dw=(0,uw.default)(h=>{console.warn(h)},1e3));var H_=class extends Sa{prepareFrame(){return!0}renderFrame(){return null}},K_=class h extends Es{constructor(e){super(e),Ta(this,e),dw("Layer is deprecated. Use an OpenLayers Layer instead.")}clone(e){return new h({...this.get("options")||{},...e||{}})}createRenderer(){return new H_(this)}},uf=K_;var Y_=class h extends uf{clone(e){return new h({...this.get("options"),...e})}getFeatureInfoAtCoordinate(e){let r=[],a=this.getMapInternal();if(a){let c=a.getPixelFromCoordinate(e);r=a.getFeaturesAtPixel(c,{hitTolerance:this.get("hitTolerance")||5,layerFilter:s=>s===this})||[]}return Promise.resolve({coordinate:e,features:r,layer:this})}},pw=Y_;var xT=new hr,vT=(h,e,r)=>{let a,{coordinate:c,params:s,projection:y,resolution:v}=e;return h&&v&&y&&(a=h.getFeatureInfoUrl(c,v,y,{info_format:"application/json",query_layers:h.getParams().layers,...s})),fetch(a,{signal:r.signal}).then(b=>b.json()).then(b=>xT.readFeatures(b)).catch(()=>[])},Ju={},bT=async(h,e,r=5)=>{Object.values(Ju).forEach(s=>{s?.abort()}),Ju={};let c=ru(e).map(s=>{let y=s.getMapInternal(),v=y?.getView()?.getProjection()?.getCode(),b={coordinate:h,features:[],layer:s};if(!v)return Promise.resolve(b);if(s.getFeatureInfoAtCoordinate)return s.getFeatureInfoAtCoordinate(h);let T=s?.getSource();if(T?.getFeatureInfoUrl){let O=Vt(s);Ju[O]?.abort(),Ju[O]=new AbortController;let G=y?.getView()?.getResolution();return vT(T,{coordinate:h,params:{info_format:"application/json",query_layers:T.getParams().layers},projection:v,resolution:G},Ju[O]).then(J=>({coordinate:h,features:J,layer:s})).catch(()=>({coordinate:h,features:[],layer:s}))}let C=y?.getPixelFromCoordinate(h);if(!C)return Promise.resolve(b);let k=y?.getFeaturesAtPixel(C,{hitTolerance:s.get("hitTolerance")||r||5,layerFilter:O=>O===s});return Promise.resolve({coordinate:h,features:k,layer:s})});return Promise.all(c)},fw=bT;var gf={};Lm(gf,{CopyrightControl:()=>mw,Layer:()=>pf,RealtimeAPI:()=>Qh,RealtimeLayer:()=>Lw,RealtimeModes:()=>$i,RoutingAPI:()=>eu,StopsAPI:()=>tu,VECTOR_TILE_FEATURE_PROPERTY:()=>Pc,compareDepartures:()=>Iu,createCanvas:()=>_s,createRealtimeFilters:()=>Km,debounceDeparturesMessages:()=>$g,debounceWebsocketMessages:()=>Jh,getCircleCanvas:()=>Wm,getDelayBgCanvas:()=>qm,getDelayTextCanvas:()=>$m,getHoursAndMinutes:()=>Hx,getLayersAsFlatArray:()=>ru,getMapGlCopyrights:()=>iu,getMercatorResolution:()=>kw,getSourceCoordinates:()=>mf,getTextCanvas:()=>Zm,getUTCDateString:()=>Zx,getUTCTimeString:()=>Xx,getUrlWithParams:()=>el,getVehiclePosition:()=>wu,pad:()=>sp,realtimeConfig:()=>Mc,realtimeDefaultStyle:()=>tl,realtimeDelayStyle:()=>Xm,realtimeSimpleStyle:()=>Hm,removeDuplicate:()=>il,renderTrajectories:()=>Su,sortAndFilterDepartures:()=>Cu,sortByDelay:()=>Ym});var wT=" | ",J_=class{constructor(e={}){this.options=e}getDefaultPosition(){return"bottom-right"}onAdd(e){return this.map=e,this.container||(this.container=document.createElement("div")),this.render=this.render.bind(this),this.map.on("idle",this.render),this.map.on("sourcedata",this.render),this.map.on("styledata",this.render),this.render(),this.container}onRemove(){return this.container?.parentElement&&this.container.parentElement?.removeChild(this.container),this.map&&(this.map.off("sourcedata",this.render),this.map.off("styledata",this.render),this.map.off("idle",this.render)),this.map=void 0,this.container}render(){if(this.map&&this.container){let e=this.options?.separator||wT,r=this.options?.customAttribution||iu(this.map),a=(Array.isArray(r)?r:[r]).join(e);this.container.innerHTML!==a&&(this.content=a,this.container.innerHTML=this.content)}}},mw=J_;var yw=Vs(L_());var Mr=[];for(let h=0;h<256;++h)Mr.push((h+256).toString(16).slice(1));function gw(h,e=0){return(Mr[h[e+0]]+Mr[h[e+1]]+Mr[h[e+2]]+Mr[h[e+3]]+"-"+Mr[h[e+4]]+Mr[h[e+5]]+"-"+Mr[h[e+6]]+Mr[h[e+7]]+"-"+Mr[h[e+8]]+Mr[h[e+9]]+"-"+Mr[h[e+10]]+Mr[h[e+11]]+Mr[h[e+12]]+Mr[h[e+13]]+Mr[h[e+14]]+Mr[h[e+15]]).toLowerCase()}var Q_,ST=new Uint8Array(16);function e0(){if(!Q_){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");Q_=crypto.getRandomValues.bind(crypto)}return Q_(ST)}var IT=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),t0={randomUUID:IT};function CT(h,e,r){if(t0.randomUUID&&!e&&!h)return t0.randomUUID();h=h||{};let a=h.random||(h.rng||e0)();if(a[6]=a[6]&15|64,a[8]=a[8]&63|128,e){r=r||0;for(let c=0;c<16;++c)e[r+c]=a[c];return e}return gw(a)}var i0=CT;var r0=class extends yw.Evented{constructor(r={}){super();this.options={};this.type="custom";this.options=r,this.id=r.id||i0()}onAdd(r,a){this.map=r}onRemove(r,a){this.map=void 0}render(r){}},pf=r0;var Pr=63710088e-1,xw={centimeters:Pr*100,centimetres:Pr*100,degrees:360/(2*Math.PI),feet:Pr*3.28084,inches:Pr*39.37,kilometers:Pr/1e3,kilometres:Pr/1e3,meters:Pr,metres:Pr,miles:Pr/1609.344,millimeters:Pr*1e3,millimetres:Pr*1e3,nauticalmiles:Pr/1852,radians:1,yards:Pr*1.0936};function ET(h,e,r={}){let a={type:"Feature"};return(r.id===0||r.id)&&(a.id=r.id),r.bbox&&(a.bbox=r.bbox),a.properties=e||{},a.geometry=h,a}function xl(h,e,r={}){if(!h)throw new Error("coordinates is required");if(!Array.isArray(h))throw new Error("coordinates must be an Array");if(h.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!_w(h[0])||!_w(h[1]))throw new Error("coordinates must contain numbers");return ET({type:"Point",coordinates:h},e,r)}function TT(h,e="kilometers"){let r=xw[e];if(!r)throw new Error(e+" units is invalid");return h*r}function MT(h,e="kilometers"){let r=xw[e];if(!r)throw new Error(e+" units is invalid");return h/r}function vw(h){return h%(2*Math.PI)*180/Math.PI}function vl(h){return h%360*Math.PI/180}function ff(h,e="kilometers",r="kilometers"){if(!(h>=0))throw new Error("length must be a positive number");return TT(MT(h,e),r)}function _w(h){return!isNaN(h)&&h!==null&&!Array.isArray(h)}function bw(h){return h!==null&&typeof h=="object"&&!Array.isArray(h)}function Qu(h,e,r){if(h!==null)for(var a,c,s,y,v,b,T,C=0,k=0,O,G=h.type,J=G==="FeatureCollection",le=G==="Feature",he=J?h.features.length:1,fe=0;fe<he;fe++){T=J?h.features[fe].geometry:le?h.geometry:h,O=T?T.type==="GeometryCollection":!1,v=O?T.geometries.length:1;for(var ye=0;ye<v;ye++){var we=0,Ie=0;if(y=O?T.geometries[ye]:T,y!==null){b=y.coordinates;var Pe=y.type;switch(C=r&&(Pe==="Polygon"||Pe==="MultiPolygon")?1:0,Pe){case null:break;case"Point":if(e(b,k,fe,we,Ie)===!1)return!1;k++,we++;break;case"LineString":case"MultiPoint":for(a=0;a<b.length;a++){if(e(b[a],k,fe,we,Ie)===!1)return!1;k++,Pe==="MultiPoint"&&we++}Pe==="LineString"&&we++;break;case"Polygon":case"MultiLineString":for(a=0;a<b.length;a++){for(c=0;c<b[a].length-C;c++){if(e(b[a][c],k,fe,we,Ie)===!1)return!1;k++}Pe==="MultiLineString"&&we++,Pe==="Polygon"&&Ie++}Pe==="Polygon"&&we++;break;case"MultiPolygon":for(a=0;a<b.length;a++){for(Ie=0,c=0;c<b[a].length;c++){for(s=0;s<b[a][c].length-C;s++){if(e(b[a][c][s],k,fe,we,Ie)===!1)return!1;k++}Ie++}we++}break;case"GeometryCollection":for(a=0;a<y.geometries.length;a++)if(Qu(y.geometries[a],e,r)===!1)return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}function ww(h,e={}){let r=0,a=0,c=0;return Qu(h,function(s){r+=s[0],a+=s[1],c++},!0),xl([r/c,a/c],e.properties)}function Ys(h){if(!h)throw new Error("coord is required");if(!Array.isArray(h)){if(h.type==="Feature"&&h.geometry!==null&&h.geometry.type==="Point")return[...h.geometry.coordinates];if(h.type==="Point")return[...h.coordinates]}if(Array.isArray(h)&&h.length>=2&&!Array.isArray(h[0])&&!Array.isArray(h[1]))return[...h];throw new Error("coord must be GeoJSON Point or an Array of numbers")}function Sw(h){if(Array.isArray(h))return h;if(h.type==="Feature"){if(h.geometry!==null)return h.geometry.coordinates}else if(h.coordinates)return h.coordinates;throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")}function Cw(h,e,r={}){let a;return r.final?a=Iw(Ys(e),Ys(h)):a=Iw(Ys(h),Ys(e)),a>180?-(360-a):a}function Iw(h,e){let r=vl(h[1]),a=vl(e[1]),c=vl(e[0]-h[0]);c>Math.PI&&(c-=2*Math.PI),c<-Math.PI&&(c+=2*Math.PI);let s=Math.log(Math.tan(a/2+Math.PI/4)/Math.tan(r/2+Math.PI/4)),y=Math.atan2(c,s);return(vw(y)+360)%360}function Ew(h,e,r={}){let a=Ys(h),c=Ys(e);c[0]+=c[0]-a[0]>180?-360:a[0]-c[0]>180?360:0;let s=PT(a,c);return ff(s,"meters",r.units)}function PT(h,e,r){r=r===void 0?Pr:Number(r);let a=r,c=h[1]*Math.PI/180,s=e[1]*Math.PI/180,y=s-c,v=Math.abs(e[0]-h[0])*Math.PI/180;v>Math.PI&&(v-=2*Math.PI);let b=Math.log(Math.tan(s/2+Math.PI/4)/Math.tan(c/2+Math.PI/4)),T=Math.abs(b)>1e-11?y/b:Math.cos(c);return Math.sqrt(y*y+T*T*v*v)*a}function Tw(h,e,r,a={}){let c=e<0,s=ff(Math.abs(e),a.units,"meters");c&&(s=-Math.abs(s));let y=Ys(h),v=AT(y,s,r);return v[0]+=v[0]-y[0]>180?-360:y[0]-v[0]>180?360:0,xl(v,a.properties)}function AT(h,e,r,a){a=a===void 0?Pr:Number(a);let c=e/a,s=h[0]*Math.PI/180,y=vl(h[1]),v=vl(r),b=c*Math.cos(v),T=y+b;Math.abs(T)>Math.PI/2&&(T=T>0?Math.PI-T:-Math.PI-T);let C=Math.log(Math.tan(T/2+Math.PI/4)/Math.tan(y/2+Math.PI/4)),k=Math.abs(C)>1e-11?b/C:Math.cos(y),O=c*Math.sin(v)/k;return[((s+O)*180/Math.PI+540)%360-180,T*180/Math.PI]}function Mw(h){if(!h)throw new Error("geojson is required");switch(h.type){case"Feature":return Pw(h);case"FeatureCollection":return RT(h);case"Point":case"LineString":case"Polygon":case"MultiPoint":case"MultiLineString":case"MultiPolygon":case"GeometryCollection":return n0(h);default:throw new Error("unknown GeoJSON type")}}function Pw(h){let e={type:"Feature"};return Object.keys(h).forEach(r=>{switch(r){case"type":case"properties":case"geometry":return;default:e[r]=h[r]}}),e.properties=Aw(h.properties),h.geometry==null?e.geometry=null:e.geometry=n0(h.geometry),e}function Aw(h){let e={};return h&&Object.keys(h).forEach(r=>{let a=h[r];typeof a=="object"?a===null?e[r]=null:Array.isArray(a)?e[r]=a.map(c=>c):e[r]=Aw(a):e[r]=a}),e}function RT(h){let e={type:"FeatureCollection"};return Object.keys(h).forEach(r=>{switch(r){case"type":case"features":return;default:e[r]=h[r]}}),e.features=h.features.map(r=>Pw(r)),e}function n0(h){let e={type:h.type};return h.bbox&&(e.bbox=h.bbox),h.type==="GeometryCollection"?(e.geometries=h.geometries.map(r=>n0(r)),e):(e.coordinates=Rw(h.coordinates),e)}function Rw(h){let e=h;return typeof e[0]!="object"?e.slice():e.map(r=>Rw(r))}function kT(h,e,r){if(r=r||{},!bw(r))throw new Error("options is invalid");let a=r.pivot,c=r.mutate;if(!h)throw new Error("geojson is required");if(e==null||isNaN(e))throw new Error("angle is required");if(e===0)return h;let s=a??ww(h);return(c===!1||c===void 0)&&(h=Mw(h)),Qu(h,function(y){let b=Cw(s,y)+e,T=Ew(s,y),C=Sw(Tw(s,T,b));y[0]=C[0],y[1]=C[1]}),h}var s0=kT;var LT=(h,e=1)=>{let{height:r,width:a}=h.getCanvas(),c=h.unproject({x:0,y:0}),s=h.unproject({x:0,y:r/e}),y=h.unproject({x:a/e,y:r/e}),v=h.unproject({x:a/e,y:0});return[[c.lng,c.lat],[v.lng,v.lat],[y.lng,y.lat],[s.lng,s.lat]]},mf=LT;var DT=h=>{let e=h.getBounds().toArray(),r=ar(e[0]),a=ar(e[1]),c=[...r,...a],{width:s,height:y}=h.getCanvas(),v=vi(c)/s,b=Wi(c)/y;return Math.max(v,b)},kw=DT;var o0=class extends pf{get canvas(){return this.engine.canvas}get pixelRatio(){return this.engine.pixelRatio||1}set pixelRatio(e){this.engine.pixelRatio=e||1}#e;constructor(e={}){let r=e?.id||"realtime";super({...e,id:"realtime-custom-"+r}),this.#e=r,this.engine=new cf({getViewState:this.getViewState.bind(this),onRender:this.onRealtimeEngineRender.bind(this),...e}),this.sourceId=this.#e,this.source={animate:!0,attribution:e.attribution?.join(", "),canvas:this.canvas,coordinates:[[0,0],[1,1],[2,2],[0,0]],loaded:!0,type:"canvas"},this.layer={id:this.#e,layout:{visibility:"visible"},paint:{"raster-fade-duration":0,"raster-opacity":1,"raster-resampling":"nearest"},source:this.sourceId,type:"raster"},this.onLoad=this.onLoad.bind(this),this.onMove=this.onMove.bind(this),this.onMoveEnd=this.onMoveEnd.bind(this),this.onZoomEnd=this.onZoomEnd.bind(this)}getViewState(){if(!this.map)return{};this.pixelRatio||(this.pixelRatio=1);let{height:e,width:r}=this.map.getCanvas(),a=this.map.getCenter(),c=this.map.unproject({x:0,y:e/this.pixelRatio}),s=this.map.unproject({x:r/this.pixelRatio,y:0}),y=s0(xl([c.lng,c.lat]),-this.map.getBearing(),{pivot:[a.lng,a.lat]}).geometry.coordinates,v=s0(xl([s.lng,s.lat]),-this.map.getBearing(),{pivot:[a.lng,a.lat]}).geometry.coordinates,b=[...ar(y),...ar(v)],T=vi(b)/(r/this.pixelRatio),C=Wi(b)/(e/this.pixelRatio),k=Math.max(T,C);return{center:ar([a.lng,a.lat]),extent:b,pixelRatio:this.pixelRatio,resolution:k,rotation:-(this.map.getBearing()*Math.PI)/180,size:[r/this.pixelRatio,e/this.pixelRatio],visible:!0,zoom:this.map.getZoom()-1}}onAdd(e,r){super.onAdd(e,r),this.engine.attachToMap(),e.isStyleLoaded()&&this.onLoad(),e.on("load",this.onLoad)}onLoad(){this.map?.getSource(this.sourceId)||this.map?.addSource(this.sourceId,this.source),this.map?.getLayer(this.layer.id)||this.map?.addLayer(this.layer,this.id),this.start()}onMove(){this.engine.renderTrajectories()}onMoveEnd(){this.engine.renderTrajectories(),this.engine.isUpdateBboxOnMoveEnd&&this.engine.setBbox()}onRealtimeEngineRender(){if(this.map?.style){let e=mf(this.map,this.pixelRatio),r=this.map.getSource(this.sourceId);r&&r.setCoordinates(e)}}onRemove(e,r){this.engine.detachFromMap(),this.stop(),e.off("load",this.onLoad),e.getLayer(this.layer.id)&&e.removeLayer(this.layer.id),e.getSource(this.sourceId)&&e.removeSource(this.sourceId),super.onRemove(e,r)}onZoomEnd(){this.engine.onZoomEnd()}start(){this.engine.start(),this.map?.on("move",this.onMove),this.map?.on("moveend",this.onMoveEnd),this.map?.on("zoomend",this.onZoomEnd)}stop(){this.engine.stop(),this.map?.off("move",this.onMove),this.map?.off("moveend",this.onMoveEnd),this.map?.off("zoomend",this.onZoomEnd)}},Lw=o0;var a0={ol:df,maplibre:gf};typeof window<"u"&&(window.mbt=a0);var AV=a0;})();
585
+ `){xt+=rt,rt=0,Ae=k*we+Be*O,++at;continue}let kt=G[ot+1]||b.font;kt!==gt&&(c&&st.push("font",kt),a&&ct.push("font",kt),gt=kt),rt=Math.max(rt,fe[Rt]);let Lt=[Pt,Ae+Be*he[Rt]+k*(he[Rt]-ye[at]),.5*(O+rt)+xt];Ae+=he[Rt],c&&st.push("strokeText",Lt),a&&ct.push("fillText",Lt),++Rt}return Array.prototype.push.apply(Ie,st),Array.prototype.push.apply(Ie,ct),this.labels_[s]=Ge,Ge}replayTextBackground_(e,r,a,c,s,y,v){e.beginPath(),e.moveTo.apply(e,r),e.lineTo.apply(e,a),e.lineTo.apply(e,c),e.lineTo.apply(e,s),e.lineTo.apply(e,r),y&&(this.alignAndScaleFill_=y[2],this.fill_(e)),v&&(this.setStrokeStyle_(e,v),e.stroke())}calculateImageOrLabelDimensions_(e,r,a,c,s,y,v,b,T,C,k,O,G,J,le,he){v*=O[0],b*=O[1];let fe=a-v,ye=c-b,we=s+T>e?e-T:s,Ie=y+C>r?r-C:y,Pe=J[3]+we*O[0]+J[1],Ee=J[0]+Ie*O[1]+J[2],Ge=fe-J[3],Be=ye-J[0];(le||k!==0)&&(Ia[0]=Ge,Ca[0]=Ge,Ia[1]=Be,Eo[1]=Be,Eo[0]=Ge+Pe,To[0]=Eo[0],To[1]=Be+Ee,Ca[1]=To[1]);let Ae;return k!==0?(Ae=Vr(sr(),a,c,1,1,k,-a,-c),br(Ae,Ia),br(Ae,Eo),br(Ae,To),br(Ae,Ca),yo(Math.min(Ia[0],Eo[0],To[0],Ca[0]),Math.min(Ia[1],Eo[1],To[1],Ca[1]),Math.max(Ia[0],Eo[0],To[0],Ca[0]),Math.max(Ia[1],Eo[1],To[1],Ca[1]),Vc)):yo(Math.min(Ge,Ge+Pe),Math.min(Be,Be+Ee),Math.max(Ge,Ge+Pe),Math.max(Be,Be+Ee),Vc),G&&(fe=Math.round(fe),ye=Math.round(ye)),{drawImageX:fe,drawImageY:ye,drawImageW:we,drawImageH:Ie,originX:T,originY:C,declutterBox:{minX:Vc[0],minY:Vc[1],maxX:Vc[2],maxY:Vc[3],value:he},canvasTransform:Ae,scale:O}}replayImageOrLabel_(e,r,a,c,s,y,v){let b=!!(y||v),T=c.declutterBox,C=v?v[2]*c.scale[0]/2:0;return T.minX-C<=r[0]&&T.maxX+C>=0&&T.minY-C<=r[1]&&T.maxY+C>=0&&(b&&this.replayTextBackground_(e,Ia,Eo,To,Ca,y,v),Ob(e,c.canvasTransform,s,a,c.originX,c.originY,c.drawImageW,c.drawImageH,c.drawImageX,c.drawImageY,c.scale)),!0}fill_(e){let r=this.alignAndScaleFill_;if(r){let a=br(this.renderedTransform_,[0,0]),c=512*this.pixelRatio;e.save(),e.translate(a[0]%c,a[1]%c),r!==1&&e.scale(r,r),e.rotate(this.viewRotation_)}e.fill(),r&&e.restore()}setStrokeStyle_(e,r){e.strokeStyle=r[1],e.lineWidth=r[2],e.lineCap=r[3],e.lineJoin=r[4],e.miterLimit=r[5],e.lineDashOffset=r[7],e.setLineDash(r[6])}drawLabelWithPointPlacement_(e,r,a,c){let s=this.textStates[r],y=this.createLabel(e,r,c,a),v=this.strokeStates[a],b=this.pixelRatio,T=t_(Array.isArray(e)?e[0]:e,s.textAlign||xa),C=qu[s.textBaseline||pl],k=v&&v.lineWidth?v.lineWidth:0,O=y.width/b-2*s.scale[0],G=T*O+2*(.5-T)*k,J=C*y.height/b+2*(.5-C)*k;return{label:y,anchorX:G,anchorY:J}}execute_(e,r,a,c,s,y,v,b){let T=this.zIndexContext_,C;this.pixelCoordinates_&&yn(a,this.renderedTransform_)?C=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),C=vn(this.coordinates,0,this.coordinates.length,2,a,this.pixelCoordinates_),Yx(this.renderedTransform_,a));let k=0,O=c.length,G=0,J,le,he,fe,ye,we,Ie,Pe,Ee,Ge,Be,Ae,st,ct=0,rt=0,xt=null,Rt=null,at=this.coordinateCache_,gt=this.viewRotation_,ot=Math.round(Math.atan2(-a[1],a[0])*1e12)/1e12,pt={context:e,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:gt},Pt=this.instructions!=c||this.overlaps?0:200,kt,Lt,$t,fi;for(;k<O;){let $e=c[k];switch($e[0]){case dt.BEGIN_GEOMETRY:kt=$e[1],fi=$e[3],kt.getGeometry()?v!==void 0&&!Vi(v,fi.getExtent())?k=$e[2]+1:++k:k=$e[2],T&&(T.zIndex=$e[4]);break;case dt.BEGIN_PATH:ct>Pt&&(this.fill_(e),ct=0),rt>Pt&&(e.stroke(),rt=0),!ct&&!rt&&(e.beginPath(),ye=NaN,we=NaN),++k;break;case dt.CIRCLE:G=$e[1];let di=C[G],ur=C[G+1],dr=C[G+2],rn=C[G+3],ji=dr-di,nn=rn-ur,sn=Math.sqrt(ji*ji+nn*nn);e.moveTo(di+sn,ur),e.arc(di,ur,sn,0,2*Math.PI,!0),++k;break;case dt.CLOSE_PATH:e.closePath(),++k;break;case dt.CUSTOM:G=$e[1],J=$e[2];let Pn=$e[3],ve=$e[4],An=$e[5];pt.geometry=Pn,pt.feature=kt,k in at||(at[k]=[]);let pr=at[k];An?An(C,G,J,2,pr):(pr[0]=C[G],pr[1]=C[G+1],pr.length=2),T&&(T.zIndex=$e[6]),ve(pr,pt),++k;break;case dt.DRAW_IMAGE:G=$e[1],J=$e[2],Ee=$e[3],le=$e[4],he=$e[5];let bt=$e[6],Zt=$e[7],Rn=$e[8],on=$e[9],Ar=$e[10],an=$e[11],fr=$e[12],Yn=$e[13];fe=$e[14]||"declutter";let kn=$e[15];if(!Ee&&$e.length>=20){Ge=$e[19],Be=$e[20],Ae=$e[21],st=$e[22];let ae=this.drawLabelWithPointPlacement_(Ge,Be,Ae,st);Ee=ae.label,$e[3]=Ee;let de=$e[23];le=(ae.anchorX-de)*this.pixelRatio,$e[4]=le;let ie=$e[24];he=(ae.anchorY-ie)*this.pixelRatio,$e[5]=he,bt=Ee.height,$e[6]=bt,Yn=Ee.width,$e[13]=Yn}let De;$e.length>25&&(De=$e[25]);let Rr,Ei,mr;$e.length>17?(Rr=$e[16],Ei=$e[17],mr=$e[18]):(Rr=wo,Ei=!1,mr=!1),Ar&&ot?an+=gt:!Ar&&!ot&&(an-=gt);let Jn=0;for(;G<J;G+=2){if(De&&De[Jn++]<Yn/this.pixelRatio)continue;let ae=this.calculateImageOrLabelDimensions_(Ee.width,Ee.height,C[G],C[G+1],Yn,bt,le,he,Rn,on,an,fr,s,Rr,Ei||mr,kt),de=[e,r,Ee,ae,Zt,Ei?xt:null,mr?Rt:null];if(b){let ie,xe,Se;if(kn){let Ne=J-G;if(!kn[Ne]){kn[Ne]={args:de,declutterMode:fe};continue}let Ke=kn[Ne];ie=Ke.args,xe=Ke.declutterMode,delete kn[Ne],Se=u1(ie)}let _e,ke;if(ie&&(xe!=="declutter"||!b.collides(Se))&&(_e=!0),(fe!=="declutter"||!b.collides(ae.declutterBox))&&(ke=!0),xe==="declutter"&&fe==="declutter"){let Ne=_e&&ke;_e=Ne,ke=Ne}_e&&(xe!=="none"&&b.insert(Se),this.replayImageOrLabel_.apply(this,ie)),ke&&(fe!=="none"&&b.insert(ae.declutterBox),this.replayImageOrLabel_.apply(this,de))}else this.replayImageOrLabel_.apply(this,de)}++k;break;case dt.DRAW_CHARS:let Fe=$e[1],St=$e[2],ht=$e[3],Ki=$e[4];st=$e[5];let qr=$e[6],yt=$e[7],$r=$e[8];Ae=$e[9];let Wr=$e[10];Ge=$e[11],Be=$e[12];let Ln=[$e[13],$e[13]];fe=$e[14]||"declutter";let ln=$e[15],Q=this.textStates[Be],N=Q.font,B=[Q.scale[0]*yt,Q.scale[1]*yt],q;N in this.widths_?q=this.widths_[N]:(q={},this.widths_[N]=q);let X=Ap(C,Fe,St,2),se=Math.abs(B[0])*wy(N,Ge,q);if(Ki||se<=X){let ae=this.textStates[Be].textAlign,de=(X-se)*t_(Ge,ae),ie=h1(C,Fe,St,2,Ge,de,qr,Math.abs(B[0]),wy,N,q,ot?0:this.viewRotation_,ln);e:if(ie){let xe=[],Se,_e,ke,Ne,Ke;if(Ae)for(Se=0,_e=ie.length;Se<_e;++Se){Ke=ie[Se],ke=Ke[4],Ne=this.createLabel(ke,Be,"",Ae),le=Ke[2]+(B[0]<0?-Wr:Wr),he=ht*Ne.height+(.5-ht)*2*Wr*B[1]/B[0]-$r;let Ct=this.calculateImageOrLabelDimensions_(Ne.width,Ne.height,Ke[0],Ke[1],Ne.width,Ne.height,le,he,0,0,Ke[3],Ln,!1,wo,!1,kt);if(b&&fe==="declutter"&&b.collides(Ct.declutterBox))break e;xe.push([e,r,Ne,Ct,1,null,null])}if(st)for(Se=0,_e=ie.length;Se<_e;++Se){Ke=ie[Se],ke=Ke[4],Ne=this.createLabel(ke,Be,st,""),le=Ke[2],he=ht*Ne.height-$r;let Ct=this.calculateImageOrLabelDimensions_(Ne.width,Ne.height,Ke[0],Ke[1],Ne.width,Ne.height,le,he,0,0,Ke[3],Ln,!1,wo,!1,kt);if(b&&fe==="declutter"&&b.collides(Ct.declutterBox))break e;xe.push([e,r,Ne,Ct,1,null,null])}b&&fe!=="none"&&b.load(xe.map(u1));for(let Ct=0,vt=xe.length;Ct<vt;++Ct)this.replayImageOrLabel_.apply(this,xe[Ct])}}++k;break;case dt.END_GEOMETRY:if(y!==void 0){kt=$e[1];let ae=y(kt,fi,fe);if(ae)return ae}++k;break;case dt.FILL:Pt?ct++:this.fill_(e),++k;break;case dt.MOVE_TO_LINE_TO:for(G=$e[1],J=$e[2],Lt=C[G],$t=C[G+1],e.moveTo(Lt,$t),ye=Lt+.5|0,we=$t+.5|0,G+=2;G<J;G+=2)Lt=C[G],$t=C[G+1],Ie=Lt+.5|0,Pe=$t+.5|0,(G==J-2||Ie!==ye||Pe!==we)&&(e.lineTo(Lt,$t),ye=Ie,we=Pe);++k;break;case dt.SET_FILL_STYLE:xt=$e,this.alignAndScaleFill_=$e[2],ct&&(this.fill_(e),ct=0,rt&&(e.stroke(),rt=0)),e.fillStyle=$e[1],++k;break;case dt.SET_STROKE_STYLE:Rt=$e,rt&&(e.stroke(),rt=0),this.setStrokeStyle_(e,$e),++k;break;case dt.STROKE:Pt?rt++:e.stroke(),++k;break;default:++k;break}}ct&&this.fill_(e),rt&&e.stroke()}execute(e,r,a,c,s,y){this.viewRotation_=c,this.execute_(e,r,a,this.instructions,s,void 0,void 0,y)}executeHitDetection(e,r,a,c,s){return this.viewRotation_=a,this.execute_(e,[e.canvas.width,e.canvas.height],r,this.hitDetectionInstructions,!0,c,s)}},p1=i_;var gl=["Polygon","Circle","LineString","Image","Text","Default"],s_=["Image","Text"],f1=gl.filter(h=>!s_.includes(h)),n_=class{constructor(e,r,a,c,s,y,v){this.maxExtent_=e,this.overlaps_=c,this.pixelRatio_=a,this.resolution_=r,this.renderBuffer_=y,this.executorsByZIndex_={},this.hitDetectionContext_=null,this.hitDetectionTransform_=sr(),this.renderedContext_=null,this.deferredZIndexContexts_={},this.createExecutors_(s,v)}clip(e,r){let a=this.getClipCoords(r);e.beginPath(),e.moveTo(a[0],a[1]),e.lineTo(a[2],a[3]),e.lineTo(a[4],a[5]),e.lineTo(a[6],a[7]),e.clip()}createExecutors_(e,r){for(let a in e){let c=this.executorsByZIndex_[a];c===void 0&&(c={},this.executorsByZIndex_[a]=c);let s=e[a];for(let y in s){let v=s[y];c[y]=new p1(this.resolution_,this.pixelRatio_,this.overlaps_,v,r)}}}hasExecutors(e){for(let r in this.executorsByZIndex_){let a=this.executorsByZIndex_[r];for(let c=0,s=e.length;c<s;++c)if(e[c]in a)return!0}return!1}forEachFeatureAtCoordinate(e,r,a,c,s,y){c=Math.round(c);let v=c*2+1,b=Vr(this.hitDetectionTransform_,c+.5,c+.5,1/r,-1/r,-a,-e[0],-e[1]),T=!this.hitDetectionContext_;T&&(this.hitDetectionContext_=Ri(v,v,void 0,{willReadFrequently:!0}));let C=this.hitDetectionContext_;C.canvas.width!==v||C.canvas.height!==v?(C.canvas.width=v,C.canvas.height=v):T||C.clearRect(0,0,v,v);let k;this.renderBuffer_!==void 0&&(k=xn(),ng(k,e),os(k,r*(this.renderBuffer_+c),k));let O=GC(c),G;function J(Pe,Ee,Ge){let Be=C.getImageData(0,0,v,v).data;for(let Ae=0,st=O.length;Ae<st;Ae++)if(Be[O[Ae]]>0){if(!y||Ge==="none"||G!=="Image"&&G!=="Text"||y.includes(Pe)){let ct=(O[Ae]-3)/4,rt=c-ct%v,xt=c-(ct/v|0),Rt=s(Pe,Ee,rt*rt+xt*xt);if(Rt)return Rt}C.clearRect(0,0,v,v);break}}let le=Object.keys(this.executorsByZIndex_).map(Number);le.sort(xs);let he,fe,ye,we,Ie;for(he=le.length-1;he>=0;--he){let Pe=le[he].toString();for(ye=this.executorsByZIndex_[Pe],fe=gl.length-1;fe>=0;--fe)if(G=gl[fe],we=ye[G],we!==void 0&&(Ie=we.executeHitDetection(C,b,a,J,k),Ie))return Ie}}getClipCoords(e){let r=this.maxExtent_;if(!r)return null;let a=r[0],c=r[1],s=r[2],y=r[3],v=[a,c,a,y,s,y,s,c];return vn(v,0,8,2,e,v),v}isEmpty(){return Wn(this.executorsByZIndex_)}execute(e,r,a,c,s,y,v){let b=Object.keys(this.executorsByZIndex_).map(Number);b.sort(v?iv:xs),y=y||gl;let T=gl.length;for(let C=0,k=b.length;C<k;++C){let O=b[C].toString(),G=this.executorsByZIndex_[O];for(let J=0,le=y.length;J<le;++J){let he=y[J],fe=G[he];if(fe!==void 0){let ye=v===null?void 0:fe.getZIndexContext(),we=ye?ye.getContext():e,Ie=this.maxExtent_&&he!=="Image"&&he!=="Text";if(Ie&&(we.save(),this.clip(we,a)),!ye||he==="Text"||he==="Image"?fe.execute(we,r,a,c,s,v):ye.pushFunction(Pe=>fe.execute(Pe,r,a,c,s,v)),Ie&&we.restore(),ye){ye.offset();let Pe=b[C]*T+J;this.deferredZIndexContexts_[Pe]||(this.deferredZIndexContexts_[Pe]=[]),this.deferredZIndexContexts_[Pe].push(ye)}}}}this.renderedContext_=e}getDeferredZIndexContexts(){return this.deferredZIndexContexts_}getRenderedContext(){return this.renderedContext_}renderDeferred(){let e=this.deferredZIndexContexts_,r=Object.keys(e).map(Number).sort(xs);for(let a=0,c=r.length;a<c;++a)e[r[a]].forEach(s=>{s.draw(this.renderedContext_),s.clear()}),e[r[a]].length=0}},r_={};function GC(h){if(r_[h]!==void 0)return r_[h];let e=h*2+1,r=h*h,a=new Array(r+1);for(let s=0;s<=h;++s)for(let y=0;y<=h;++y){let v=s*s+y*y;if(v>r)break;let b=a[v];b||(b=[],a[v]=b),b.push(((h+s)*e+(h+y))*4+3),s>0&&b.push(((h-s)*e+(h+y))*4+3),y>0&&(b.push(((h+s)*e+(h-y))*4+3),s>0&&b.push(((h-s)*e+(h-y))*4+3))}let c=[];for(let s=0,y=a.length;s<y;++s)a[s]&&c.push(...a[s]);return r_[h]=c,c}var m1=n_;var o_=class extends ef{constructor(e,r,a,c,s,y,v){super(),this.context_=e,this.pixelRatio_=r,this.extent_=a,this.transform_=c,this.transformRotation_=c?_v(Math.atan2(c[1],c[0]),10):0,this.viewRotation_=s,this.squaredTolerance_=y,this.userTransform_=v,this.contextFillState_=null,this.contextStrokeState_=null,this.contextTextState_=null,this.fillState_=null,this.strokeState_=null,this.image_=null,this.imageAnchorX_=0,this.imageAnchorY_=0,this.imageHeight_=0,this.imageOpacity_=0,this.imageOriginX_=0,this.imageOriginY_=0,this.imageRotateWithView_=!1,this.imageRotation_=0,this.imageScale_=[0,0],this.imageWidth_=0,this.text_="",this.textOffsetX_=0,this.textOffsetY_=0,this.textRotateWithView_=!1,this.textRotation_=0,this.textScale_=[0,0],this.textFillState_=null,this.textStrokeState_=null,this.textState_=null,this.pixelCoordinates_=[],this.tmpLocalTransform_=sr()}drawImages_(e,r,a,c){if(!this.image_)return;let s=vn(e,r,a,c,this.transform_,this.pixelCoordinates_),y=this.context_,v=this.tmpLocalTransform_,b=y.globalAlpha;this.imageOpacity_!=1&&(y.globalAlpha=b*this.imageOpacity_);let T=this.imageRotation_;this.transformRotation_===0&&(T-=this.viewRotation_),this.imageRotateWithView_&&(T+=this.viewRotation_);for(let C=0,k=s.length;C<k;C+=2){let O=s[C]-this.imageAnchorX_,G=s[C+1]-this.imageAnchorY_;if(T!==0||this.imageScale_[0]!=1||this.imageScale_[1]!=1){let J=O+this.imageAnchorX_,le=G+this.imageAnchorY_;Vr(v,J,le,1,1,T,-J,-le),y.save(),y.transform.apply(y,v),y.translate(J,le),y.scale(this.imageScale_[0],this.imageScale_[1]),y.drawImage(this.image_,this.imageOriginX_,this.imageOriginY_,this.imageWidth_,this.imageHeight_,-this.imageAnchorX_,-this.imageAnchorY_,this.imageWidth_,this.imageHeight_),y.restore()}else y.drawImage(this.image_,this.imageOriginX_,this.imageOriginY_,this.imageWidth_,this.imageHeight_,O,G,this.imageWidth_,this.imageHeight_)}this.imageOpacity_!=1&&(y.globalAlpha=b)}drawText_(e,r,a,c){if(!this.textState_||this.text_==="")return;this.textFillState_&&this.setContextFillState_(this.textFillState_),this.textStrokeState_&&this.setContextStrokeState_(this.textStrokeState_),this.setContextTextState_(this.textState_);let s=vn(e,r,a,c,this.transform_,this.pixelCoordinates_),y=this.context_,v=this.textRotation_;for(this.transformRotation_===0&&(v-=this.viewRotation_),this.textRotateWithView_&&(v+=this.viewRotation_);r<a;r+=c){let b=s[r]+this.textOffsetX_,T=s[r+1]+this.textOffsetY_;v!==0||this.textScale_[0]!=1||this.textScale_[1]!=1?(y.save(),y.translate(b-this.textOffsetX_,T-this.textOffsetY_),y.rotate(v),y.translate(this.textOffsetX_,this.textOffsetY_),y.scale(this.textScale_[0],this.textScale_[1]),this.textStrokeState_&&y.strokeText(this.text_,0,0),this.textFillState_&&y.fillText(this.text_,0,0),y.restore()):(this.textStrokeState_&&y.strokeText(this.text_,b,T),this.textFillState_&&y.fillText(this.text_,b,T))}}moveToLineTo_(e,r,a,c,s){let y=this.context_,v=vn(e,r,a,c,this.transform_,this.pixelCoordinates_);y.moveTo(v[0],v[1]);let b=v.length;s&&(b-=2);for(let T=2;T<b;T+=2)y.lineTo(v[T],v[T+1]);return s&&y.closePath(),a}drawRings_(e,r,a,c){for(let s=0,y=a.length;s<y;++s)r=this.moveToLineTo_(e,r,a[s],c,!0);return r}drawCircle(e){if(this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!Vi(this.extent_,e.getExtent())){if(this.fillState_||this.strokeState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);let r=qv(e,this.transform_,this.pixelCoordinates_),a=r[2]-r[0],c=r[3]-r[1],s=Math.sqrt(a*a+c*c),y=this.context_;y.beginPath(),y.arc(r[0],r[1],s,0,2*Math.PI),this.fillState_&&y.fill(),this.strokeState_&&y.stroke()}this.text_!==""&&this.drawText_(e.getCenter(),0,2,2)}}setStyle(e){this.setFillStrokeStyle(e.getFill(),e.getStroke()),this.setImageStyle(e.getImage()),this.setTextStyle(e.getText())}setTransform(e){this.transform_=e}drawGeometry(e){switch(e.getType()){case"Point":this.drawPoint(e);break;case"LineString":this.drawLineString(e);break;case"Polygon":this.drawPolygon(e);break;case"MultiPoint":this.drawMultiPoint(e);break;case"MultiLineString":this.drawMultiLineString(e);break;case"MultiPolygon":this.drawMultiPolygon(e);break;case"GeometryCollection":this.drawGeometryCollection(e);break;case"Circle":this.drawCircle(e);break;default:}}drawFeature(e,r){let a=r.getGeometryFunction()(e);a&&(this.setStyle(r),this.drawGeometry(a))}drawGeometryCollection(e){let r=e.getGeometriesArray();for(let a=0,c=r.length;a<c;++a)this.drawGeometry(r[a])}drawPoint(e){this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_));let r=e.getFlatCoordinates(),a=e.getStride();this.image_&&this.drawImages_(r,0,r.length,a),this.text_!==""&&this.drawText_(r,0,r.length,a)}drawMultiPoint(e){this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_));let r=e.getFlatCoordinates(),a=e.getStride();this.image_&&this.drawImages_(r,0,r.length,a),this.text_!==""&&this.drawText_(r,0,r.length,a)}drawLineString(e){if(this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!Vi(this.extent_,e.getExtent())){if(this.strokeState_){this.setContextStrokeState_(this.strokeState_);let r=this.context_,a=e.getFlatCoordinates();r.beginPath(),this.moveToLineTo_(a,0,a.length,e.getStride(),!1),r.stroke()}if(this.text_!==""){let r=e.getFlatMidpoint();this.drawText_(r,0,2,2)}}}drawMultiLineString(e){this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_));let r=e.getExtent();if(Vi(this.extent_,r)){if(this.strokeState_){this.setContextStrokeState_(this.strokeState_);let a=this.context_,c=e.getFlatCoordinates(),s=0,y=e.getEnds(),v=e.getStride();a.beginPath();for(let b=0,T=y.length;b<T;++b)s=this.moveToLineTo_(c,s,y[b],v,!1);a.stroke()}if(this.text_!==""){let a=e.getFlatMidpoints();this.drawText_(a,0,a.length,2)}}}drawPolygon(e){if(this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!Vi(this.extent_,e.getExtent())){if(this.strokeState_||this.fillState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);let r=this.context_;r.beginPath(),this.drawRings_(e.getOrientedFlatCoordinates(),0,e.getEnds(),e.getStride()),this.fillState_&&r.fill(),this.strokeState_&&r.stroke()}if(this.text_!==""){let r=e.getFlatInteriorPoint();this.drawText_(r,0,2,2)}}}drawMultiPolygon(e){if(this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!Vi(this.extent_,e.getExtent())){if(this.strokeState_||this.fillState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);let r=this.context_,a=e.getOrientedFlatCoordinates(),c=0,s=e.getEndss(),y=e.getStride();r.beginPath();for(let v=0,b=s.length;v<b;++v){let T=s[v];c=this.drawRings_(a,c,T,y)}this.fillState_&&r.fill(),this.strokeState_&&r.stroke()}if(this.text_!==""){let r=e.getFlatInteriorPoints();this.drawText_(r,0,r.length,2)}}}setContextFillState_(e){let r=this.context_,a=this.contextFillState_;a?a.fillStyle!=e.fillStyle&&(a.fillStyle=e.fillStyle,r.fillStyle=e.fillStyle):(r.fillStyle=e.fillStyle,this.contextFillState_={fillStyle:e.fillStyle})}setContextStrokeState_(e){let r=this.context_,a=this.contextStrokeState_;a?(a.lineCap!=e.lineCap&&(a.lineCap=e.lineCap,r.lineCap=e.lineCap),yn(a.lineDash,e.lineDash)||r.setLineDash(a.lineDash=e.lineDash),a.lineDashOffset!=e.lineDashOffset&&(a.lineDashOffset=e.lineDashOffset,r.lineDashOffset=e.lineDashOffset),a.lineJoin!=e.lineJoin&&(a.lineJoin=e.lineJoin,r.lineJoin=e.lineJoin),a.lineWidth!=e.lineWidth&&(a.lineWidth=e.lineWidth,r.lineWidth=e.lineWidth),a.miterLimit!=e.miterLimit&&(a.miterLimit=e.miterLimit,r.miterLimit=e.miterLimit),a.strokeStyle!=e.strokeStyle&&(a.strokeStyle=e.strokeStyle,r.strokeStyle=e.strokeStyle)):(r.lineCap=e.lineCap,r.setLineDash(e.lineDash),r.lineDashOffset=e.lineDashOffset,r.lineJoin=e.lineJoin,r.lineWidth=e.lineWidth,r.miterLimit=e.miterLimit,r.strokeStyle=e.strokeStyle,this.contextStrokeState_={lineCap:e.lineCap,lineDash:e.lineDash,lineDashOffset:e.lineDashOffset,lineJoin:e.lineJoin,lineWidth:e.lineWidth,miterLimit:e.miterLimit,strokeStyle:e.strokeStyle})}setContextTextState_(e){let r=this.context_,a=this.contextTextState_,c=e.textAlign?e.textAlign:xa;a?(a.font!=e.font&&(a.font=e.font,r.font=e.font),a.textAlign!=c&&(a.textAlign=c,r.textAlign=c),a.textBaseline!=e.textBaseline&&(a.textBaseline=e.textBaseline,r.textBaseline=e.textBaseline)):(r.font=e.font,r.textAlign=c,r.textBaseline=e.textBaseline,this.contextTextState_={font:e.font,textAlign:c,textBaseline:e.textBaseline})}setFillStrokeStyle(e,r){if(!e)this.fillState_=null;else{let a=e.getColor();this.fillState_={fillStyle:Sn(a||Hi)}}if(!r)this.strokeState_=null;else{let a=r.getColor(),c=r.getLineCap(),s=r.getLineDash(),y=r.getLineDashOffset(),v=r.getLineJoin(),b=r.getWidth(),T=r.getMiterLimit(),C=s||In;this.strokeState_={lineCap:c!==void 0?c:$s,lineDash:this.pixelRatio_===1?C:C.map(k=>k*this.pixelRatio_),lineDashOffset:(y||Cn)*this.pixelRatio_,lineJoin:v!==void 0?v:Ws,lineWidth:(b!==void 0?b:So)*this.pixelRatio_,miterLimit:T!==void 0?T:vo,strokeStyle:Sn(a||bo)}}}setImageStyle(e){let r;if(!e||!(r=e.getSize())){this.image_=null;return}let a=e.getPixelRatio(this.pixelRatio_),c=e.getAnchor(),s=e.getOrigin();this.image_=e.getImage(this.pixelRatio_),this.imageAnchorX_=c[0]*a,this.imageAnchorY_=c[1]*a,this.imageHeight_=r[1]*a,this.imageOpacity_=e.getOpacity(),this.imageOriginX_=s[0],this.imageOriginY_=s[1],this.imageRotateWithView_=e.getRotateWithView(),this.imageRotation_=e.getRotation();let y=e.getScaleArray();this.imageScale_=[y[0]*this.pixelRatio_/a,y[1]*this.pixelRatio_/a],this.imageWidth_=r[0]*a}setTextStyle(e){if(!e)this.text_="";else{let r=e.getFill();if(!r)this.textFillState_=null;else{let G=r.getColor();this.textFillState_={fillStyle:Sn(G||Hi)}}let a=e.getStroke();if(!a)this.textStrokeState_=null;else{let G=a.getColor(),J=a.getLineCap(),le=a.getLineDash(),he=a.getLineDashOffset(),fe=a.getLineJoin(),ye=a.getWidth(),we=a.getMiterLimit();this.textStrokeState_={lineCap:J!==void 0?J:$s,lineDash:le||In,lineDashOffset:he||Cn,lineJoin:fe!==void 0?fe:Ws,lineWidth:ye!==void 0?ye:So,miterLimit:we!==void 0?we:vo,strokeStyle:Sn(G||bo)}}let c=e.getFont(),s=e.getOffsetX(),y=e.getOffsetY(),v=e.getRotateWithView(),b=e.getRotation(),T=e.getScaleArray(),C=e.getText(),k=e.getTextAlign(),O=e.getTextBaseline();this.textState_={font:c!==void 0?c:qp,textAlign:k!==void 0?k:xa,textBaseline:O!==void 0?O:pl},this.text_=C!==void 0?Array.isArray(C)?C.reduce((G,J,le)=>G+=le%2?" ":J,""):C:"",this.textOffsetX_=s!==void 0?this.pixelRatio_*s:0,this.textOffsetY_=y!==void 0?this.pixelRatio_*y:0,this.textRotateWithView_=v!==void 0?v:!1,this.textRotation_=b!==void 0?b:0,this.textScale_=[this.pixelRatio_*T[0],this.pixelRatio_*T[1]]}}},g1=o_;var As=.5;function y1(h,e,r,a,c,s,y,v,b){let T=b?js(c,b):c,C=h[0]*As,k=h[1]*As,O=Ri(C,k);O.imageSmoothingEnabled=!1;let G=O.canvas,J=new g1(O,As,c,null,y,v,b?Cc(Zn(),b):null),le=r.length,he=Math.floor((256*256*256-1)/le),fe={};for(let we=1;we<=le;++we){let Ie=r[we-1],Pe=Ie.getStyleFunction()||a;if(!Pe)continue;let Ee=Pe(Ie,s);if(!Ee)continue;Array.isArray(Ee)||(Ee=[Ee]);let Be=(we*he).toString(16).padStart(7,"#00000");for(let Ae=0,st=Ee.length;Ae<st;++Ae){let ct=Ee[Ae],rt=ct.getGeometryFunction()(Ie);if(!rt||!Vi(T,rt.getExtent()))continue;let xt=ct.clone(),Rt=xt.getFill();Rt&&Rt.setColor(Be);let at=xt.getStroke();at&&(at.setColor(Be),at.setLineDash(null)),xt.setText(void 0);let gt=ct.getImage();if(gt){let kt=gt.getImageSize();if(!kt)continue;let Lt=Ri(kt[0],kt[1],void 0,{alpha:!1}),$t=Lt.canvas;Lt.fillStyle=Be,Lt.fillRect(0,0,$t.width,$t.height),xt.setImage(new Du({img:$t,anchor:gt.getAnchor(),anchorXUnits:"pixels",anchorYUnits:"pixels",offset:gt.getOrigin(),opacity:1,size:gt.getSize(),scale:gt.getScale(),rotation:gt.getRotation(),rotateWithView:gt.getRotateWithView()}))}let ot=xt.getZIndex()||0,pt=fe[ot];pt||(pt={},fe[ot]=pt,pt.Polygon=[],pt.Circle=[],pt.LineString=[],pt.Point=[]);let Pt=rt.getType();if(Pt==="GeometryCollection"){let kt=rt.getGeometriesArrayRecursive();for(let Lt=0,$t=kt.length;Lt<$t;++Lt){let fi=kt[Lt];pt[fi.getType().replace("Multi","")].push(fi,xt)}}else pt[Pt.replace("Multi","")].push(rt,xt)}}let ye=Object.keys(fe).map(Number).sort(xs);for(let we=0,Ie=ye.length;we<Ie;++we){let Pe=fe[ye[we]];for(let Ee in Pe){let Ge=Pe[Ee];for(let Be=0,Ae=Ge.length;Be<Ae;Be+=2){J.setStyle(Ge[Be+1]);for(let st=0,ct=e.length;st<ct;++st)J.setTransform(e[st]),J.drawGeometry(Ge[Be])}}}return O.getImageData(0,0,G.width,G.height)}function _1(h,e,r){let a=[];if(r){let c=Math.floor(Math.round(h[0])*As),s=Math.floor(Math.round(h[1])*As),y=(Ii(c,0,r.width-1)+Ii(s,0,r.height-1)*r.width)*4,v=r.data[y],b=r.data[y+1],C=r.data[y+2]+256*(b+256*v),k=Math.floor((256*256*256-1)/e.length);C&&C%k===0&&a.push(e[C/k-1])}return a}var UC=.5,x1={Point:KC,LineString:ZC,Polygon:JC,MultiPoint:YC,MultiLineString:XC,MultiPolygon:HC,GeometryCollection:WC,Circle:qC};function v1(h,e){return parseInt(Vt(h),10)-parseInt(Vt(e),10)}function a_(h,e){let r=l_(h,e);return r*r}function l_(h,e){return UC*h/e}function qC(h,e,r,a,c){let s=r.getFill(),y=r.getStroke();if(s||y){let b=h.getBuilder(r.getZIndex(),"Circle");b.setFillStrokeStyle(s,y),b.drawCircle(e,a,c)}let v=r.getText();if(v&&v.getText()){let b=h.getBuilder(r.getZIndex(),"Text");b.setTextStyle(v),b.drawText(e,a)}}function c_(h,e,r,a,c,s,y,v){let b=[],T=r.getImage();if(T){let O=!0,G=T.getImageState();G==It.LOADED||G==It.ERROR?O=!1:G==It.IDLE&&T.load(),O&&b.push(T.ready())}let C=r.getFill();C&&C.loading()&&b.push(C.ready());let k=b.length>0;return k&&Promise.all(b).then(()=>c(null)),$C(h,e,r,a,s,y,v),k}function $C(h,e,r,a,c,s,y){let v=r.getGeometryFunction()(e);if(!v)return;let b=v.simplifyTransformed(a,c);if(r.getRenderer())b1(h,b,r,e,y);else{let C=x1[b.getType()];C(h,b,r,e,y,s)}}function b1(h,e,r,a,c){if(e.getType()=="GeometryCollection"){let y=e.getGeometries();for(let v=0,b=y.length;v<b;++v)b1(h,y[v],r,a,c);return}h.getBuilder(r.getZIndex(),"Default").drawCustom(e,a,r.getRenderer(),r.getHitDetectionRenderer(),c)}function WC(h,e,r,a,c,s){let y=e.getGeometriesArray(),v,b;for(v=0,b=y.length;v<b;++v){let T=x1[y[v].getType()];T(h,y[v],r,a,c,s)}}function ZC(h,e,r,a,c){let s=r.getStroke();if(s){let v=h.getBuilder(r.getZIndex(),"LineString");v.setFillStrokeStyle(null,s),v.drawLineString(e,a,c)}let y=r.getText();if(y&&y.getText()){let v=h.getBuilder(r.getZIndex(),"Text");v.setTextStyle(y),v.drawText(e,a,c)}}function XC(h,e,r,a,c){let s=r.getStroke();if(s){let v=h.getBuilder(r.getZIndex(),"LineString");v.setFillStrokeStyle(null,s),v.drawMultiLineString(e,a,c)}let y=r.getText();if(y&&y.getText()){let v=h.getBuilder(r.getZIndex(),"Text");v.setTextStyle(y),v.drawText(e,a,c)}}function HC(h,e,r,a,c){let s=r.getFill(),y=r.getStroke();if(y||s){let b=h.getBuilder(r.getZIndex(),"Polygon");b.setFillStrokeStyle(s,y),b.drawMultiPolygon(e,a,c)}let v=r.getText();if(v&&v.getText()){let b=h.getBuilder(r.getZIndex(),"Text");b.setTextStyle(v),b.drawText(e,a,c)}}function KC(h,e,r,a,c,s){let y=r.getImage(),v=r.getText(),b=v&&v.getText(),T=s&&y&&b?{}:void 0;if(y){if(y.getImageState()!=It.LOADED)return;let C=h.getBuilder(r.getZIndex(),"Image");C.setImageStyle(y,T),C.drawPoint(e,a,c)}if(b){let C=h.getBuilder(r.getZIndex(),"Text");C.setTextStyle(v,T),C.drawText(e,a,c)}}function YC(h,e,r,a,c,s){let y=r.getImage(),v=y&&y.getOpacity()!==0,b=r.getText(),T=b&&b.getText(),C=s&&v&&T?{}:void 0;if(v){if(y.getImageState()!=It.LOADED)return;let k=h.getBuilder(r.getZIndex(),"Image");k.setImageStyle(y,C),k.drawMultiPoint(e,a,c)}if(T){let k=h.getBuilder(r.getZIndex(),"Text");k.setTextStyle(b,C),k.drawText(e,a,c)}}function JC(h,e,r,a,c){let s=r.getFill(),y=r.getStroke();if(s||y){let b=h.getBuilder(r.getZIndex(),"Polygon");b.setFillStrokeStyle(s,y),b.drawPolygon(e,a,c)}let v=r.getText();if(v&&v.getText()){let b=h.getBuilder(r.getZIndex(),"Text");b.setTextStyle(v),b.drawText(e,a,c)}}var h_=class extends rf{constructor(e){super(e),this.boundHandleStyleImageChange_=this.handleStyleImageChange_.bind(this),this.animatingOrInteracting_,this.hitDetectionImageData_=null,this.clipped_=!1,this.renderedFeatures_=null,this.renderedRevision_=-1,this.renderedResolution_=NaN,this.renderedExtent_=xn(),this.wrappedRenderedExtent_=xn(),this.renderedRotation_,this.renderedCenter_=null,this.renderedProjection_=null,this.renderedPixelRatio_=1,this.renderedRenderOrder_=null,this.renderedFrameDeclutter_,this.replayGroup_=null,this.replayGroupChanged=!0,this.clipping=!0,this.targetContext_=null,this.opacity_=1}renderWorlds(e,r,a){let c=r.extent,s=r.viewState,y=s.center,v=s.resolution,b=s.projection,T=s.rotation,C=b.getExtent(),k=this.getLayer().getSource(),O=this.getLayer().getDeclutter(),G=r.pixelRatio,J=r.viewHints,le=!(J[bn.ANIMATING]||J[bn.INTERACTING]),he=this.context,fe=Math.round(vi(c)/v*G),ye=Math.round(Wi(c)/v*G),we=k.getWrapX()&&b.canWrapX(),Ie=we?vi(C):null,Pe=we?Math.ceil((c[2]-C[2])/Ie)+1:1,Ee=we?Math.floor((c[0]-C[0])/Ie):0;do{let Ge=this.getRenderTransform(y,v,0,G,fe,ye,Ee*Ie);r.declutter&&(Ge=Ge.slice(0)),e.execute(he,[he.canvas.width,he.canvas.height],Ge,T,le,a===void 0?gl:a?s_:f1,a?O&&r.declutter[O]:void 0)}while(++Ee<Pe)}setDrawContext_(){this.opacity_!==1&&(this.targetContext_=this.context,this.context=Ri(this.context.canvas.width,this.context.canvas.height,e_))}resetDrawContext_(){if(this.opacity_!==1){let e=this.targetContext_.globalAlpha;this.targetContext_.globalAlpha=this.opacity_,this.targetContext_.drawImage(this.context.canvas,0,0),this.targetContext_.globalAlpha=e,Ab(this.context),e_.push(this.context.canvas),this.context=this.targetContext_,this.targetContext_=null}}renderDeclutter(e){!this.replayGroup_||!this.getLayer().getDeclutter()||this.renderWorlds(this.replayGroup_,e,!0)}renderDeferredInternal(e){this.replayGroup_&&(this.replayGroup_.renderDeferred(),this.clipped_&&this.context.restore(),this.resetDrawContext_())}renderFrame(e,r){let a=e.layerStatesArray[e.layerIndex];this.opacity_=a.opacity;let c=e.viewState;this.prepareContainer(e,r);let s=this.context,y=this.replayGroup_,v=y&&!y.isEmpty();if(!v&&!(this.getLayer().hasListener(Us.PRERENDER)||this.getLayer().hasListener(Us.POSTRENDER)))return null;this.setDrawContext_(),this.preRender(s,e);let b=c.projection;if(this.clipped_=!1,v&&a.extent&&this.clipping){let T=Gs(a.extent,b);v=Vi(T,e.extent),this.clipped_=v&&!go(T,e.extent),this.clipped_&&this.clipUnrotated(s,e,T)}return v&&this.renderWorlds(y,e,this.getLayer().getDeclutter()?!1:void 0),!e.declutter&&this.clipped_&&s.restore(),this.postRender(s,e),this.renderedRotation_!==c.rotation&&(this.renderedRotation_=c.rotation,this.hitDetectionImageData_=null),e.declutter||this.resetDrawContext_(),this.container}getFeatures(e){return new Promise(r=>{if(this.frameState&&!this.hitDetectionImageData_&&!this.animatingOrInteracting_){let a=this.frameState.size.slice(),c=this.renderedCenter_,s=this.renderedResolution_,y=this.renderedRotation_,v=this.renderedProjection_,b=this.wrappedRenderedExtent_,T=this.getLayer(),C=[],k=a[0]*As,O=a[1]*As;C.push(this.getRenderTransform(c,s,y,As,k,O,0).slice());let G=T.getSource(),J=v.getExtent();if(G.getWrapX()&&v.canWrapX()&&!go(J,b)){let he=b[0],fe=vi(J),ye=0,we;for(;he<J[0];)--ye,we=fe*ye,C.push(this.getRenderTransform(c,s,y,As,k,O,we).slice()),he+=fe;for(ye=0,he=b[2];he>J[2];)++ye,we=fe*ye,C.push(this.getRenderTransform(c,s,y,As,k,O,we).slice()),he-=fe}let le=Zn();this.hitDetectionImageData_=y1(a,C,this.renderedFeatures_,T.getStyleFunction(),b,s,y,a_(s,this.renderedPixelRatio_),le?v:null)}r(_1(e,this.renderedFeatures_,this.hitDetectionImageData_))})}forEachFeatureAtCoordinate(e,r,a,c,s){if(!this.replayGroup_)return;let y=r.viewState.resolution,v=r.viewState.rotation,b=this.getLayer(),T={},C=function(O,G,J){let le=Vt(O),he=T[le];if(he){if(he!==!0&&J<he.distanceSq){if(J===0)return T[le]=!0,s.splice(s.lastIndexOf(he),1),c(O,b,G);he.geometry=G,he.distanceSq=J}}else{if(J===0)return T[le]=!0,c(O,b,G);s.push(T[le]={feature:O,layer:b,geometry:G,distanceSq:J,callback:c})}},k=this.getLayer().getDeclutter();return this.replayGroup_.forEachFeatureAtCoordinate(e,y,v,a,C,k?r.declutter[k].all().map(O=>O.value):null)}handleFontsChanged(){let e=this.getLayer();e.getVisible()&&this.replayGroup_&&e.changed()}handleStyleImageChange_(e){this.renderIfReadyAndVisible()}prepareFrame(e){let r=this.getLayer(),a=r.getSource();if(!a)return!1;let c=e.viewHints[bn.ANIMATING],s=e.viewHints[bn.INTERACTING],y=r.getUpdateWhileAnimating(),v=r.getUpdateWhileInteracting();if(this.ready&&!y&&c||!v&&s)return this.animatingOrInteracting_=!0,!0;this.animatingOrInteracting_=!1;let b=e.extent,T=e.viewState,C=T.projection,k=T.resolution,O=e.pixelRatio,G=r.getRevision(),J=r.getRenderBuffer(),le=r.getRenderOrder();le===void 0&&(le=v1);let he=T.center.slice(),fe=os(b,J*k),ye=fe.slice(),we=[fe.slice()],Ie=C.getExtent();if(a.getWrapX()&&C.canWrapX()&&!go(Ie,e.extent)){let at=vi(Ie),gt=Math.max(vi(fe)/2,at);fe[0]=Ie[0]-gt,fe[2]=Ie[2]+gt,wv(he,C);let ot=hg(we[0],C);ot[0]<Ie[0]&&ot[2]<Ie[2]?we.push([ot[0]+at,ot[1],ot[2]+at,ot[3]]):ot[0]>Ie[0]&&ot[2]>Ie[2]&&we.push([ot[0]-at,ot[1],ot[2]-at,ot[3]])}if(this.ready&&this.renderedResolution_==k&&this.renderedRevision_==G&&this.renderedRenderOrder_==le&&this.renderedFrameDeclutter_===!!e.declutter&&go(this.wrappedRenderedExtent_,fe))return yn(this.renderedExtent_,ye)||(this.hitDetectionImageData_=null,this.renderedExtent_=ye),this.renderedCenter_=he,this.replayGroupChanged=!1,!0;this.replayGroup_=null;let Pe=new l1(l_(k,O),fe,k,O),Ee=Zn(),Ge;if(Ee){for(let at=0,gt=we.length;at<gt;++at){let ot=we[at],pt=js(ot,C);a.loadFeatures(pt,Nv(k,C),Ee)}Ge=Cc(Ee,C)}else for(let at=0,gt=we.length;at<gt;++at)a.loadFeatures(we[at],k,C);let Be=a_(k,O),Ae=!0,st=(at,gt)=>{let ot,pt=at.getStyleFunction()||r.getStyleFunction();if(pt&&(ot=pt(at,k)),ot){let Pt=this.renderFeature(at,Be,ot,Pe,Ge,this.getLayer().getDeclutter(),gt);Ae=Ae&&!Pt}},ct=js(fe,C),rt=a.getFeaturesInExtent(ct);le&&rt.sort(le);for(let at=0,gt=rt.length;at<gt;++at)st(rt[at],at);this.renderedFeatures_=rt,this.ready=Ae;let xt=Pe.finish(),Rt=new m1(fe,k,O,a.getOverlaps(),xt,r.getRenderBuffer(),!!e.declutter);return this.renderedResolution_=k,this.renderedRevision_=G,this.renderedRenderOrder_=le,this.renderedFrameDeclutter_=!!e.declutter,this.renderedExtent_=ye,this.wrappedRenderedExtent_=fe,this.renderedCenter_=he,this.renderedProjection_=C,this.renderedPixelRatio_=O,this.replayGroup_=Rt,this.hitDetectionImageData_=null,this.replayGroupChanged=!0,!0}renderFeature(e,r,a,c,s,y,v){if(!a)return!1;let b=!1;if(Array.isArray(a))for(let T=0,C=a.length;T<C;++T)b=c_(c,e,a[T],r,this.boundHandleStyleImageChange_,s,y,v)||b;else b=c_(c,e,a,r,this.boundHandleStyleImageChange_,s,y,v);return b}},w1=h_;var u_=class extends i1{constructor(e){super(e)}createRenderer(){return new w1(this)}},jc=u_;var d_=class{constructor(e){this.rbush_=new fl(e),this.items_={}}insert(e,r){let a={minX:e[0],minY:e[1],maxX:e[2],maxY:e[3],value:r};this.rbush_.insert(a),this.items_[Vt(r)]=a}load(e,r){let a=new Array(r.length);for(let c=0,s=r.length;c<s;c++){let y=e[c],v=r[c],b={minX:y[0],minY:y[1],maxX:y[2],maxY:y[3],value:v};a[c]=b,this.items_[Vt(v)]=b}this.rbush_.load(a)}remove(e){let r=Vt(e),a=this.items_[r];return delete this.items_[r],this.rbush_.remove(a)!==null}update(e,r){let a=this.items_[Vt(r)],c=[a.minX,a.minY,a.maxX,a.maxY];fp(c,e)||(this.remove(r),this.insert(e,r))}getAll(){return this.rbush_.all().map(function(r){return r.value})}getInExtent(e){let r={minX:e[0],minY:e[1],maxX:e[2],maxY:e[3]};return this.rbush_.search(r).map(function(c){return c.value})}forEach(e){return this.forEach_(this.getAll(),e)}forEachInExtent(e,r){return this.forEach_(this.getInExtent(e),r)}forEach_(e,r){let a;for(let c=0,s=e.length;c<s;c++)if(a=r(e[c]),a)return a;return a}isEmpty(){return Wn(this.items_)}clear(){this.rbush_.clear(),this.items_={}}getExtent(e){let r=this.rbush_.toJSON();return yo(r.minX,r.minY,r.maxX,r.maxY,e)}concat(e){this.rbush_.load(e.rbush_.all());for(let r in e.items_)this.items_[r]=e.items_[r]}},$u=d_;var S1=sr(),Wu=class h{constructor(e,r,a,c,s,y){this.styleFunction,this.extent_,this.id_=y,this.type_=e,this.flatCoordinates_=r,this.flatInteriorPoints_=null,this.flatMidpoints_=null,this.ends_=a||null,this.properties_=s,this.squaredTolerance_,this.stride_=c,this.simplifiedGeometry_}get(e){return this.properties_[e]}getExtent(){return this.extent_||(this.extent_=this.type_==="Point"?ca(this.flatCoordinates_):_c(this.flatCoordinates_,0,this.flatCoordinates_.length,2)),this.extent_}getFlatInteriorPoint(){if(!this.flatInteriorPoints_){let e=as(this.getExtent());this.flatInteriorPoints_=_u(this.flatCoordinates_,0,this.ends_,2,e,0)}return this.flatInteriorPoints_}getFlatInteriorPoints(){if(!this.flatInteriorPoints_){let e=rb(this.flatCoordinates_,this.ends_),r=Lp(this.flatCoordinates_,0,e,2);this.flatInteriorPoints_=Rp(this.flatCoordinates_,0,e,2,r)}return this.flatInteriorPoints_}getFlatMidpoint(){return this.flatMidpoints_||(this.flatMidpoints_=ul(this.flatCoordinates_,0,this.flatCoordinates_.length,2,.5)),this.flatMidpoints_}getFlatMidpoints(){if(!this.flatMidpoints_){this.flatMidpoints_=[];let e=this.flatCoordinates_,r=0,a=this.ends_;for(let c=0,s=a.length;c<s;++c){let y=a[c],v=ul(e,r,y,2,.5);wr(this.flatMidpoints_,v),r=y}}return this.flatMidpoints_}getId(){return this.id_}getOrientedFlatCoordinates(){return this.flatCoordinates_}getGeometry(){return this}getSimplifiedGeometry(e){return this}simplifyTransformed(e,r){return this}getProperties(){return this.properties_}getPropertiesInternal(){return this.properties_}getStride(){return this.stride_}getStyleFunction(){return this.styleFunction}getType(){return this.type_}transform(e){e=Ci(e);let r=e.getExtent(),a=e.getWorldExtent();if(r&&a){let c=Wi(a)/Wi(r);Vr(S1,a[0],a[3],c,-c,0,0,0),vn(this.flatCoordinates_,0,this.flatCoordinates_.length,2,S1,this.flatCoordinates_)}}applyTransform(e){e(this.flatCoordinates_,this.flatCoordinates_,this.stride_)}clone(){return new h(this.type_,this.flatCoordinates_.slice(),this.ends_?.slice(),this.stride_,Object.assign({},this.properties_),this.id_)}getEnds(){return this.ends_}enableSimplifyTransformed(){return this.simplifyTransformed=cp((e,r)=>{if(e===this.squaredTolerance_)return this.simplifiedGeometry_;this.simplifiedGeometry_=this.clone(),r&&this.simplifiedGeometry_.applyTransform(r);let a=this.simplifiedGeometry_.getFlatCoordinates(),c;switch(this.type_){case"LineString":a.length=hl(a,0,this.simplifiedGeometry_.flatCoordinates_.length,this.simplifiedGeometry_.stride_,e,a,0),c=[a.length];break;case"MultiLineString":c=[],a.length=Tp(a,0,this.simplifiedGeometry_.ends_,this.simplifiedGeometry_.stride_,e,a,0,c);break;case"Polygon":c=[],a.length=pu(a,0,this.simplifiedGeometry_.ends_,this.simplifiedGeometry_.stride_,Math.sqrt(e),a,0,c);break;default:}return c&&(this.simplifiedGeometry_=new h(this.type_,a,c,2,this.properties_,this.id_)),this.squaredTolerance_=e,this.simplifiedGeometry_}),this}};Wu.prototype.getFlatCoordinates=Wu.prototype.getOrientedFlatCoordinates;var Rs=Wu;var p_=class extends or{constructor(e){super(),this.projection=Ci(e.projection),this.attributions_=I1(e.attributions),this.attributionsCollapsible_=e.attributionsCollapsible??!0,this.loading=!1,this.state_=e.state!==void 0?e.state:"ready",this.wrapX_=e.wrapX!==void 0?e.wrapX:!1,this.interpolate_=!!e.interpolate,this.viewResolver=null,this.viewRejector=null;let r=this;this.viewPromise_=new Promise(function(a,c){r.viewResolver=a,r.viewRejector=c})}getAttributions(){return this.attributions_}getAttributionsCollapsible(){return this.attributionsCollapsible_}getProjection(){return this.projection}getResolutions(e){return null}getView(){return this.viewPromise_}getState(){return this.state_}getWrapX(){return this.wrapX_}getInterpolate(){return this.interpolate_}refresh(){this.changed()}setAttributions(e){this.attributions_=I1(e),this.changed()}setState(e){this.state_=e,this.changed()}};function I1(h){return h?typeof h=="function"?h:(Array.isArray(h)||(h=[h]),e=>h):null}var Mo=p_;var Ur={ADDFEATURE:"addfeature",CHANGEFEATURE:"changefeature",CLEAR:"clear",REMOVEFEATURE:"removefeature",FEATURESLOADSTART:"featuresloadstart",FEATURESLOADEND:"featuresloadend",FEATURESLOADERROR:"featuresloaderror"};function C1(h,e){return[[-1/0,-1/0,1/0,1/0]]}var QC=!1;function eE(h,e,r,a,c,s,y){let v=new XMLHttpRequest;v.open("GET",typeof h=="function"?h(r,a,c):h,!0),e.getType()=="arraybuffer"&&(v.responseType="arraybuffer"),v.withCredentials=QC,v.onload=function(b){if(!v.status||v.status>=200&&v.status<300){let T=e.getType();try{let C;T=="text"||T=="json"?C=v.responseText:T=="xml"?C=v.responseXML||v.responseText:T=="arraybuffer"&&(C=v.response),C?s(e.readFeatures(C,{extent:r,featureProjection:c}),e.readProjection(C)):y()}catch{y()}}else y()},v.onerror=y,v.send()}function f_(h,e){return function(r,a,c,s,y){let v=this;eE(h,e,r,a,c,function(b,T){v.addFeatures(b),s!==void 0&&s(b)},y||vs)}}var Ks=class extends Si{constructor(e,r,a){super(e),this.feature=r,this.features=a}},m_=class extends Mo{constructor(e){e=e||{},super({attributions:e.attributions,interpolate:!0,projection:void 0,state:"ready",wrapX:e.wrapX!==void 0?e.wrapX:!0}),this.on,this.once,this.un,this.loader_=vs,this.format_=e.format||null,this.overlaps_=e.overlaps===void 0?!0:e.overlaps,this.url_=e.url,e.loader!==void 0?this.loader_=e.loader:this.url_!==void 0&&(ui(this.format_,"`format` must be set when `url` is set"),this.loader_=f_(this.url_,this.format_)),this.strategy_=e.strategy!==void 0?e.strategy:C1;let r=e.useSpatialIndex!==void 0?e.useSpatialIndex:!0;this.featuresRtree_=r?new $u:null,this.loadedExtentsRtree_=new $u,this.loadingExtentsCount_=0,this.nullGeometryFeatures_={},this.idIndex_={},this.uidIndex_={},this.featureChangeKeys_={},this.featuresCollection_=null;let a,c;Array.isArray(e.features)?c=e.features:e.features&&(a=e.features,c=a.getArray()),!r&&a===void 0&&(a=new Eu(c)),c!==void 0&&this.addFeaturesInternal(c),a!==void 0&&this.bindFeaturesCollection_(a)}addFeature(e){this.addFeatureInternal(e),this.changed()}addFeatureInternal(e){let r=Vt(e);if(!this.addToIndex_(r,e)){this.featuresCollection_&&this.featuresCollection_.remove(e);return}this.setupChangeEvents_(r,e);let a=e.getGeometry();if(a){let c=a.getExtent();this.featuresRtree_&&this.featuresRtree_.insert(c,e)}else this.nullGeometryFeatures_[r]=e;this.dispatchEvent(new Ks(Ur.ADDFEATURE,e))}setupChangeEvents_(e,r){r instanceof Rs||(this.featureChangeKeys_[e]=[Sr(r,pi.CHANGE,this.handleFeatureChange_,this),Sr(r,op.PROPERTYCHANGE,this.handleFeatureChange_,this)])}addToIndex_(e,r){let a=!0;if(r.getId()!==void 0){let c=String(r.getId());if(!(c in this.idIndex_))this.idIndex_[c]=r;else if(r instanceof Rs){let s=this.idIndex_[c];s instanceof Rs?Array.isArray(s)?s.push(r):this.idIndex_[c]=[s,r]:a=!1}else a=!1}return a&&(ui(!(e in this.uidIndex_),"The passed `feature` was already added to the source"),this.uidIndex_[e]=r),a}addFeatures(e){this.addFeaturesInternal(e),this.changed()}addFeaturesInternal(e){let r=[],a=[],c=[];for(let s=0,y=e.length;s<y;s++){let v=e[s],b=Vt(v);this.addToIndex_(b,v)&&a.push(v)}for(let s=0,y=a.length;s<y;s++){let v=a[s],b=Vt(v);this.setupChangeEvents_(b,v);let T=v.getGeometry();if(T){let C=T.getExtent();r.push(C),c.push(v)}else this.nullGeometryFeatures_[b]=v}if(this.featuresRtree_&&this.featuresRtree_.load(r,c),this.hasListener(Ur.ADDFEATURE))for(let s=0,y=a.length;s<y;s++)this.dispatchEvent(new Ks(Ur.ADDFEATURE,a[s]))}bindFeaturesCollection_(e){let r=!1;this.addEventListener(Ur.ADDFEATURE,function(a){r||(r=!0,e.push(a.feature),r=!1)}),this.addEventListener(Ur.REMOVEFEATURE,function(a){r||(r=!0,e.remove(a.feature),r=!1)}),e.addEventListener(Ts.ADD,a=>{r||(r=!0,this.addFeature(a.element),r=!1)}),e.addEventListener(Ts.REMOVE,a=>{r||(r=!0,this.removeFeature(a.element),r=!1)}),this.featuresCollection_=e}clear(e){if(e){for(let a in this.featureChangeKeys_)this.featureChangeKeys_[a].forEach(jr);this.featuresCollection_||(this.featureChangeKeys_={},this.idIndex_={},this.uidIndex_={})}else if(this.featuresRtree_){this.featuresRtree_.forEach(a=>{this.removeFeatureInternal(a)});for(let a in this.nullGeometryFeatures_)this.removeFeatureInternal(this.nullGeometryFeatures_[a])}this.featuresCollection_&&this.featuresCollection_.clear(),this.featuresRtree_&&this.featuresRtree_.clear(),this.nullGeometryFeatures_={};let r=new Ks(Ur.CLEAR);this.dispatchEvent(r),this.changed()}forEachFeature(e){if(this.featuresRtree_)return this.featuresRtree_.forEach(e);this.featuresCollection_&&this.featuresCollection_.forEach(e)}forEachFeatureAtCoordinateDirect(e,r){let a=[e[0],e[1],e[0],e[1]];return this.forEachFeatureInExtent(a,function(c){let s=c.getGeometry();if(s instanceof Rs||s.intersectsCoordinate(e))return r(c)})}forEachFeatureInExtent(e,r){if(this.featuresRtree_)return this.featuresRtree_.forEachInExtent(e,r);this.featuresCollection_&&this.featuresCollection_.forEach(r)}forEachFeatureIntersectingExtent(e,r){return this.forEachFeatureInExtent(e,function(a){let c=a.getGeometry();if(c instanceof Rs||c.intersectsExtent(e)){let s=r(a);if(s)return s}})}getFeaturesCollection(){return this.featuresCollection_}getFeatures(){let e;return this.featuresCollection_?e=this.featuresCollection_.getArray().slice(0):this.featuresRtree_&&(e=this.featuresRtree_.getAll(),Wn(this.nullGeometryFeatures_)||wr(e,Object.values(this.nullGeometryFeatures_))),e}getFeaturesAtCoordinate(e){let r=[];return this.forEachFeatureAtCoordinateDirect(e,function(a){r.push(a)}),r}getFeaturesInExtent(e,r){if(this.featuresRtree_){if(!(r&&r.canWrapX()&&this.getWrapX()))return this.featuresRtree_.getInExtent(e);let c=uv(e,r);return[].concat(...c.map(s=>this.featuresRtree_.getInExtent(s)))}return this.featuresCollection_?this.featuresCollection_.getArray().slice(0):[]}getClosestFeatureToCoordinate(e,r){let a=e[0],c=e[1],s=null,y=[NaN,NaN],v=1/0,b=[-1/0,-1/0,1/0,1/0];return r=r||lp,this.featuresRtree_.forEachInExtent(b,function(T){if(r(T)){let C=T.getGeometry(),k=v;if(v=C instanceof Rs?0:C.closestPointXY(a,c,y,v),v<k){s=T;let O=Math.sqrt(v);b[0]=a-O,b[1]=c-O,b[2]=a+O,b[3]=c+O}}}),s}getExtent(e){return this.featuresRtree_.getExtent(e)}getFeatureById(e){let r=this.idIndex_[e.toString()];return r!==void 0?r:null}getFeatureByUid(e){let r=this.uidIndex_[e];return r!==void 0?r:null}getFormat(){return this.format_}getOverlaps(){return this.overlaps_}getUrl(){return this.url_}handleFeatureChange_(e){let r=e.target,a=Vt(r),c=r.getGeometry();if(!c)a in this.nullGeometryFeatures_||(this.featuresRtree_&&this.featuresRtree_.remove(r),this.nullGeometryFeatures_[a]=r);else{let y=c.getExtent();a in this.nullGeometryFeatures_?(delete this.nullGeometryFeatures_[a],this.featuresRtree_&&this.featuresRtree_.insert(y,r)):this.featuresRtree_&&this.featuresRtree_.update(y,r)}let s=r.getId();if(s!==void 0){let y=s.toString();this.idIndex_[y]!==r&&(this.removeFromIdIndex_(r),this.idIndex_[y]=r)}else this.removeFromIdIndex_(r),this.uidIndex_[a]=r;this.changed(),this.dispatchEvent(new Ks(Ur.CHANGEFEATURE,r))}hasFeature(e){let r=e.getId();return r!==void 0?r in this.idIndex_:Vt(e)in this.uidIndex_}isEmpty(){return this.featuresRtree_?this.featuresRtree_.isEmpty()&&Wn(this.nullGeometryFeatures_):this.featuresCollection_?this.featuresCollection_.getLength()===0:!0}loadFeatures(e,r,a){let c=this.loadedExtentsRtree_,s=this.strategy_(e,r,a);for(let y=0,v=s.length;y<v;++y){let b=s[y];c.forEachInExtent(b,function(C){return go(C.extent,b)})||(++this.loadingExtentsCount_,this.dispatchEvent(new Ks(Ur.FEATURESLOADSTART)),this.loader_.call(this,b,r,a,C=>{--this.loadingExtentsCount_,this.dispatchEvent(new Ks(Ur.FEATURESLOADEND,void 0,C))},()=>{--this.loadingExtentsCount_,this.dispatchEvent(new Ks(Ur.FEATURESLOADERROR))}),c.insert(b,{extent:b.slice()}))}this.loading=this.loader_.length<4?!1:this.loadingExtentsCount_>0}refresh(){this.clear(!0),this.loadedExtentsRtree_.clear(),super.refresh()}removeLoadedExtent(e){let r=this.loadedExtentsRtree_,a=r.forEachInExtent(e,function(c){if(fp(c.extent,e))return c});a&&r.remove(a)}removeFeatures(e){let r=!1;for(let a=0,c=e.length;a<c;++a)r=this.removeFeatureInternal(e[a])||r;r&&this.changed()}removeFeature(e){if(!e)return;this.removeFeatureInternal(e)&&this.changed()}removeFeatureInternal(e){let r=Vt(e);if(!(r in this.uidIndex_))return!1;r in this.nullGeometryFeatures_?delete this.nullGeometryFeatures_[r]:this.featuresRtree_&&this.featuresRtree_.remove(e),this.featureChangeKeys_[r]?.forEach(jr),delete this.featureChangeKeys_[r];let c=e.getId();if(c!==void 0){let s=c.toString(),y=this.idIndex_[s];y===e?delete this.idIndex_[s]:Array.isArray(y)&&(y.splice(y.indexOf(e),1),y.length===1&&(this.idIndex_[s]=y[0]))}return delete this.uidIndex_[r],this.hasListener(Ur.REMOVEFEATURE)&&this.dispatchEvent(new Ks(Ur.REMOVEFEATURE,e)),!0}removeFromIdIndex_(e){for(let r in this.idIndex_)if(this.idIndex_[r]===e){delete this.idIndex_[r];break}}setLoader(e){this.loader_=e}setUrl(e){ui(this.format_,"`format` must be set when `url` is set"),this.url_=e,this.setLoader(f_(e,this.format_))}setOverlaps(e){this.overlaps_=e,this.changed()}},yl=m_;var Kn={SINGLECLICK:"singleclick",CLICK:pi.CLICK,DBLCLICK:pi.DBLCLICK,POINTERDRAG:"pointerdrag",POINTERMOVE:"pointermove",POINTERDOWN:"pointerdown",POINTERUP:"pointerup",POINTEROVER:"pointerover",POINTEROUT:"pointerout",POINTERENTER:"pointerenter",POINTERLEAVE:"pointerleave",POINTERCANCEL:"pointercancel"};var g_={ACTIVE:"active"};var y_=class extends or{constructor(e){super(),this.on,this.once,this.un,e&&e.handleEvent&&(this.handleEvent=e.handleEvent),this.map_=null,this.setActive(!0)}getActive(){return this.get(g_.ACTIVE)}getMap(){return this.map_}handleEvent(e){return!0}setActive(e){this.set(g_.ACTIVE,e)}setMap(e){this.map_=e}};var E1=y_;var __=class extends E1{constructor(e){e=e||{},super(e),e.handleDownEvent&&(this.handleDownEvent=e.handleDownEvent),e.handleDragEvent&&(this.handleDragEvent=e.handleDragEvent),e.handleMoveEvent&&(this.handleMoveEvent=e.handleMoveEvent),e.handleUpEvent&&(this.handleUpEvent=e.handleUpEvent),e.stopDown&&(this.stopDown=e.stopDown),this.handlingDownUpSequence=!1,this.targetPointers=[]}getPointerCount(){return this.targetPointers.length}handleDownEvent(e){return!1}handleDragEvent(e){}handleEvent(e){if(!e.originalEvent)return!0;let r=!1;if(this.updateTrackedPointers_(e),this.handlingDownUpSequence){if(e.type==Kn.POINTERDRAG)this.handleDragEvent(e),e.originalEvent.preventDefault();else if(e.type==Kn.POINTERUP){let a=this.handleUpEvent(e);this.handlingDownUpSequence=a&&this.targetPointers.length>0}}else if(e.type==Kn.POINTERDOWN){let a=this.handleDownEvent(e);this.handlingDownUpSequence=a,r=this.stopDown(a)}else e.type==Kn.POINTERMOVE&&this.handleMoveEvent(e);return!r}handleMoveEvent(e){}handleUpEvent(e){return!1}stopDown(e){return e}updateTrackedPointers_(e){e.activePointers&&(this.targetPointers=e.activePointers)}};var T1=__;var M1=function(h){let e=h.originalEvent;return e.altKey&&!(e.metaKey||e.ctrlKey)&&!e.shiftKey};var P1=lp,A1=function(h){return h.type==Kn.CLICK};var R1=function(h){return h.type==Kn.SINGLECLICK};var k1=function(h){let e=h.originalEvent;return ui(e!==void 0,"mapBrowserEvent must originate from a pointer event"),e.isPrimary&&e.button===0};var x_=class{constructor(){this.dataProjection=void 0,this.defaultFeatureProjection=void 0,this.featureClass=us,this.supportedMediaTypes=null}getReadOptions(e,r){if(r){let a=r.dataProjection?Ci(r.dataProjection):this.readProjection(e);r.extent&&a&&a.getUnits()==="tile-pixels"&&(a=Ci(a),a.setWorldExtent(r.extent)),r={dataProjection:a,featureProjection:r.featureProjection}}return this.adaptOptions(r)}adaptOptions(e){return Object.assign({dataProjection:this.dataProjection,featureProjection:this.defaultFeatureProjection,featureClass:this.featureClass},e)}getType(){return wt()}readFeature(e,r){return wt()}readFeatures(e,r){return wt()}readGeometry(e,r){return wt()}readProjection(e){return wt()}writeFeature(e,r){return wt()}writeFeatures(e,r){return wt()}writeGeometry(e,r){return wt()}},L1=x_;function nf(h,e,r){let a=r?Ci(r.featureProjection):null,c=r?Ci(r.dataProjection):null,s=h;if(a&&c&&!Bv(a,c)){e&&(s=h.clone());let y=e?a:c,v=e?c:a;y.getUnits()==="tile-pixels"?s.transform(y,v):s.applyTransform(ll(y,v))}if(e&&r&&r.decimals!==void 0){let y=Math.pow(10,r.decimals),v=function(b){for(let T=0,C=b.length;T<C;++T)b[T]=Math.round(b[T]*y)/y;return b};s===h&&(s=h.clone()),s.applyTransform(v)}return s}var tE={Point:lr,LineString:Is,Polygon:Tc,MultiPoint:yu,MultiLineString:Og,MultiPolygon:qg};function iE(h,e,r){return Array.isArray(e[0])?(kp(h,0,e,r)||(h=h.slice(),vu(h,0,e,r)),h):(xu(h,0,e,r)||(h=h.slice(),Ec(h,0,e,r)),h)}function v_(h,e){let r=h.geometry;if(!r)return[];if(Array.isArray(r))return r.map(s=>v_({...h,geometry:s})).flat();let a=r.type==="MultiPolygon"?"Polygon":r.type;if(a==="GeometryCollection"||a==="Circle")throw new Error("Unsupported geometry type: "+a);let c=r.layout.length;return nf(new Rs(a,a==="Polygon"?iE(r.flatCoordinates,r.ends,c):r.flatCoordinates,r.ends?.flat(),c,h.properties||{},h.id).enableSimplifyTransformed(),!1,e)}function sf(h,e){if(!h)return null;if(Array.isArray(h)){let a=h.map(c=>sf(c,e));return new Pg(a)}let r=tE[h.type];return nf(new r(h.flatCoordinates,h.layout,h.ends),!1,e)}var b_=class extends L1{constructor(){super()}getType(){return"json"}readFeature(e,r){return this.readFeatureFromObject(of(e),this.getReadOptions(e,r))}readFeatures(e,r){return this.readFeaturesFromObject(of(e),this.getReadOptions(e,r))}readFeatureFromObject(e,r){return wt()}readFeaturesFromObject(e,r){return wt()}readGeometry(e,r){return this.readGeometryFromObject(of(e),this.getReadOptions(e,r))}readGeometryFromObject(e,r){return wt()}readProjection(e){return this.readProjectionFromObject(of(e))}readProjectionFromObject(e){return wt()}writeFeature(e,r){return JSON.stringify(this.writeFeatureObject(e,r))}writeFeatureObject(e,r){return wt()}writeFeatures(e,r){return JSON.stringify(this.writeFeaturesObject(e,r))}writeFeaturesObject(e,r){return wt()}writeGeometry(e,r){return JSON.stringify(this.writeGeometryObject(e,r))}writeGeometryObject(e,r){return wt()}};function of(h){if(typeof h=="string"){let e=JSON.parse(h);return e||null}return h!==null?h:null}var D1=b_;var w_=class extends D1{constructor(e){e=e||{},super(),this.dataProjection=Ci(e.dataProjection?e.dataProjection:"EPSG:4326"),e.featureProjection&&(this.defaultFeatureProjection=Ci(e.featureProjection)),e.featureClass&&(this.featureClass=e.featureClass),this.geometryName_=e.geometryName,this.extractGeometryName_=e.extractGeometryName,this.supportedMediaTypes=["application/geo+json","application/vnd.geo+json"]}readFeatureFromObject(e,r){let a=null;e.type==="Feature"?a=e:a={type:"Feature",geometry:e,properties:null};let c=I_(a.geometry,r);if(this.featureClass===Rs)return v_({geometry:c,id:a.id,properties:a.properties},r);let s=new us;return this.geometryName_?s.setGeometryName(this.geometryName_):this.extractGeometryName_&&a.geometry_name&&s.setGeometryName(a.geometry_name),s.setGeometry(sf(c,r)),"id"in a&&s.setId(a.id),a.properties&&s.setProperties(a.properties,!0),s}readFeaturesFromObject(e,r){let a=e,c=null;if(a.type==="FeatureCollection"){let s=e;c=[];let y=s.features;for(let v=0,b=y.length;v<b;++v){let T=this.readFeatureFromObject(y[v],r);T&&c.push(T)}}else c=[this.readFeatureFromObject(e,r)];return c.flat()}readGeometryFromObject(e,r){return rE(e,r)}readProjectionFromObject(e){let r=e.crs,a;if(r)if(r.type=="name")a=Ci(r.properties.name);else if(r.type==="EPSG")a=Ci("EPSG:"+r.properties.code);else throw new Error("Unknown SRS type");else a=this.dataProjection;return a}writeFeatureObject(e,r){r=this.adaptOptions(r);let a={type:"Feature",geometry:null,properties:null},c=e.getId();if(c!==void 0&&(a.id=c),!e.hasProperties())return a;let s=e.getProperties(),y=e.getGeometry();return y&&(a.geometry=S_(y,r),delete s[e.getGeometryName()]),Wn(s)||(a.properties=s),a}writeFeaturesObject(e,r){r=this.adaptOptions(r);let a=[];for(let c=0,s=e.length;c<s;++c)a.push(this.writeFeatureObject(e[c],r));return{type:"FeatureCollection",features:a}}writeGeometryObject(e,r){return S_(e,this.adaptOptions(r))}};function I_(h,e){if(!h)return null;let r;switch(h.type){case"Point":{r=sE(h);break}case"LineString":{r=oE(h);break}case"Polygon":{r=hE(h);break}case"MultiPoint":{r=lE(h);break}case"MultiLineString":{r=aE(h);break}case"MultiPolygon":{r=cE(h);break}case"GeometryCollection":{r=nE(h);break}default:throw new Error("Unsupported GeoJSON type: "+h.type)}return r}function rE(h,e){let r=I_(h,e);return sf(r,e)}function nE(h,e){return h.geometries.map(function(a){return I_(a,e)})}function sE(h){let e=h.coordinates;return{type:"Point",flatCoordinates:e,layout:da(e.length)}}function oE(h){let e=h.coordinates,r=e.flat();return{type:"LineString",flatCoordinates:r,ends:[r.length],layout:da(e[0]?.length||2)}}function aE(h){let e=h.coordinates,r=e[0]?.[0]?.length||2,a=[],c=pa(a,0,e,r);return{type:"MultiLineString",flatCoordinates:a,ends:c,layout:da(r)}}function lE(h){let e=h.coordinates;return{type:"MultiPoint",flatCoordinates:e.flat(),layout:da(e[0]?.length||2)}}function cE(h){let e=h.coordinates,r=[],a=e[0]?.[0]?.[0].length||2,c=Ep(r,0,e,a);return{type:"MultiPolygon",flatCoordinates:r,ends:c,layout:da(a)}}function hE(h){let e=h.coordinates,r=[],a=e[0]?.[0]?.length,c=pa(r,0,e,a);return{type:"Polygon",flatCoordinates:r,ends:c,layout:da(a)}}function S_(h,e){h=nf(h,!0,e);let r=h.getType(),a;switch(r){case"Point":{a=gE(h,e);break}case"LineString":{a=dE(h,e);break}case"Polygon":{a=yE(h,e);break}case"MultiPoint":{a=fE(h,e);break}case"MultiLineString":{a=pE(h,e);break}case"MultiPolygon":{a=mE(h,e);break}case"GeometryCollection":{a=uE(h,e);break}case"Circle":{a={type:"GeometryCollection",geometries:[]};break}default:throw new Error("Unsupported geometry type: "+r)}return a}function uE(h,e){return e=Object.assign({},e),delete e.featureProjection,{type:"GeometryCollection",geometries:h.getGeometriesArray().map(function(a){return S_(a,e)})}}function dE(h,e){return{type:"LineString",coordinates:h.getCoordinates()}}function pE(h,e){return{type:"MultiLineString",coordinates:h.getCoordinates()}}function fE(h,e){return{type:"MultiPoint",coordinates:h.getCoordinates()}}function mE(h,e){let r;return e&&(r=e.rightHanded),{type:"MultiPolygon",coordinates:h.getCoordinates(r)}}function gE(h,e){return{type:"Point",coordinates:h.getCoordinates()}}function yE(h,e){let r;return e&&(r=e.rightHanded),{type:"Polygon",coordinates:h.getCoordinates(r)}}var hr=w_;var F1=0,Zu=1,z1=[0,0,0,0],Gc=[],C_={MODIFYSTART:"modifystart",MODIFYEND:"modifyend"},Xu=class extends Si{constructor(e,r,a){super(e),this.features=r,this.mapBrowserEvent=a}},E_=class extends T1{constructor(e){super(e),this.on,this.once,this.un,this.boundHandleFeatureChange_=this.handleFeatureChange_.bind(this),this.condition_=e.condition?e.condition:k1,this.defaultDeleteCondition_=function(a){return M1(a)&&R1(a)},this.deleteCondition_=e.deleteCondition?e.deleteCondition:this.defaultDeleteCondition_,this.insertVertexCondition_=e.insertVertexCondition?e.insertVertexCondition:P1,this.vertexFeature_=null,this.vertexSegments_=null,this.lastPixel_=[0,0],this.ignoreNextSingleClick_=!1,this.featuresBeingModified_=null,this.rBush_=new $u,this.pixelTolerance_=e.pixelTolerance!==void 0?e.pixelTolerance:10,this.snappedToVertex_=!1,this.changingFeature_=!1,this.dragSegments_=[],this.overlay_=new jc({source:new yl({useSpatialIndex:!1,wrapX:!!e.wrapX}),style:e.style?e.style:xE(),updateWhileAnimating:!0,updateWhileInteracting:!0}),this.SEGMENT_WRITERS_={Point:this.writePointGeometry_.bind(this),LineString:this.writeLineStringGeometry_.bind(this),LinearRing:this.writeLineStringGeometry_.bind(this),Polygon:this.writePolygonGeometry_.bind(this),MultiPoint:this.writeMultiPointGeometry_.bind(this),MultiLineString:this.writeMultiLineStringGeometry_.bind(this),MultiPolygon:this.writeMultiPolygonGeometry_.bind(this),Circle:this.writeCircleGeometry_.bind(this),GeometryCollection:this.writeGeometryCollectionGeometry_.bind(this)},this.source_=null,this.hitDetection_=null;let r;if(e.features?r=e.features:e.source&&(this.source_=e.source,r=new Eu(this.source_.getFeatures()),this.source_.addEventListener(Ur.ADDFEATURE,this.handleSourceAdd_.bind(this)),this.source_.addEventListener(Ur.REMOVEFEATURE,this.handleSourceRemove_.bind(this))),!r)throw new Error("The modify interaction requires features, a source or a layer");e.hitDetection&&(this.hitDetection_=e.hitDetection),this.features_=r,this.features_.forEach(this.addFeature_.bind(this)),this.features_.addEventListener(Ts.ADD,this.handleFeatureAdd_.bind(this)),this.features_.addEventListener(Ts.REMOVE,this.handleFeatureRemove_.bind(this)),this.lastPointerEvent_=null,this.delta_=[0,0],this.snapToPointer_=e.snapToPointer===void 0?!this.hitDetection_:e.snapToPointer}addFeature_(e){let r=e.getGeometry();if(r){let c=this.SEGMENT_WRITERS_[r.getType()];c&&c(e,r)}let a=this.getMap();a&&a.isRendered()&&this.getActive()&&this.handlePointerAtPixel_(a.getCoordinateFromPixel(this.lastPixel_)),e.addEventListener(pi.CHANGE,this.boundHandleFeatureChange_)}willModifyFeatures_(e,r){if(!this.featuresBeingModified_){this.featuresBeingModified_=new Eu;let a=this.featuresBeingModified_.getArray();for(let c=0,s=r.length;c<s;++c){let y=r[c].feature;y&&!a.includes(y)&&this.featuresBeingModified_.push(y)}this.featuresBeingModified_.getLength()===0?this.featuresBeingModified_=null:this.dispatchEvent(new Xu(C_.MODIFYSTART,this.featuresBeingModified_,e))}}removeFeature_(e){this.removeFeatureSegmentData_(e),this.vertexFeature_&&this.features_.getLength()===0&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),e.removeEventListener(pi.CHANGE,this.boundHandleFeatureChange_)}removeFeatureSegmentData_(e){let r=this.rBush_,a=[];r.forEach(function(c){e===c.feature&&a.push(c)});for(let c=a.length-1;c>=0;--c){let s=a[c];for(let y=this.dragSegments_.length-1;y>=0;--y)this.dragSegments_[y][0]===s&&this.dragSegments_.splice(y,1);r.remove(s)}}setActive(e){this.vertexFeature_&&!e&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),super.setActive(e)}setMap(e){this.overlay_.setMap(e),super.setMap(e)}getOverlay(){return this.overlay_}handleSourceAdd_(e){e.feature&&this.features_.push(e.feature)}handleSourceRemove_(e){e.feature&&this.features_.remove(e.feature)}handleFeatureAdd_(e){this.addFeature_(e.element)}handleFeatureChange_(e){if(!this.changingFeature_){let r=e.target;this.removeFeature_(r),this.addFeature_(r)}}handleFeatureRemove_(e){this.removeFeature_(e.element)}writePointGeometry_(e,r){let a=r.getCoordinates(),c={feature:e,geometry:r,segment:[a,a]};this.rBush_.insert(r.getExtent(),c)}writeMultiPointGeometry_(e,r){let a=r.getCoordinates();for(let c=0,s=a.length;c<s;++c){let y=a[c],v={feature:e,geometry:r,depth:[c],index:c,segment:[y,y]};this.rBush_.insert(r.getExtent(),v)}}writeLineStringGeometry_(e,r){let a=r.getCoordinates();for(let c=0,s=a.length-1;c<s;++c){let y=a.slice(c,c+2),v={feature:e,geometry:r,index:c,segment:y};this.rBush_.insert(ss(y),v)}}writeMultiLineStringGeometry_(e,r){let a=r.getCoordinates();for(let c=0,s=a.length;c<s;++c){let y=a[c];for(let v=0,b=y.length-1;v<b;++v){let T=y.slice(v,v+2),C={feature:e,geometry:r,depth:[c],index:v,segment:T};this.rBush_.insert(ss(T),C)}}}writePolygonGeometry_(e,r){let a=r.getCoordinates();for(let c=0,s=a.length;c<s;++c){let y=a[c];for(let v=0,b=y.length-1;v<b;++v){let T=y.slice(v,v+2),C={feature:e,geometry:r,depth:[c],index:v,segment:T};this.rBush_.insert(ss(T),C)}}}writeMultiPolygonGeometry_(e,r){let a=r.getCoordinates();for(let c=0,s=a.length;c<s;++c){let y=a[c];for(let v=0,b=y.length;v<b;++v){let T=y[v];for(let C=0,k=T.length-1;C<k;++C){let O=T.slice(C,C+2),G={feature:e,geometry:r,depth:[v,c],index:C,segment:O};this.rBush_.insert(ss(O),G)}}}}writeCircleGeometry_(e,r){let a=r.getCenter(),c={feature:e,geometry:r,index:F1,segment:[a,a]},s={feature:e,geometry:r,index:Zu,segment:[a,a]},y=[c,s];c.featureSegments=y,s.featureSegments=y,this.rBush_.insert(ca(a),c);let v=r,b=Zn();if(b&&this.getMap()){let T=this.getMap().getView().getProjection();v=v.clone().transform(b,T),v=Gg(v).transform(T,b)}this.rBush_.insert(v.getExtent(),s)}writeGeometryCollectionGeometry_(e,r){let a=r.getGeometriesArray();for(let c=0;c<a.length;++c){let s=a[c],y=this.SEGMENT_WRITERS_[s.getType()];y(e,s)}}createOrUpdateVertexFeature_(e,r,a,c){let s=this.vertexFeature_;return s?s.getGeometry().setCoordinates(e):(s=new us(new lr(e)),this.vertexFeature_=s,this.overlay_.getSource().addFeature(s)),s.set("features",r),s.set("geometries",a),s.set("existing",c),s}handleEvent(e){if(!e.originalEvent)return!0;this.lastPointerEvent_=e;let r;return!e.map.getView().getInteracting()&&e.type==Kn.POINTERMOVE&&!this.handlingDownUpSequence&&this.handlePointerMove_(e),this.vertexFeature_&&this.deleteCondition_(e)&&(e.type!=Kn.SINGLECLICK||!this.ignoreNextSingleClick_?r=this.removePoint():r=!0),e.type==Kn.SINGLECLICK&&(this.ignoreNextSingleClick_=!1),super.handleEvent(e)&&!r}findInsertVerticesAndUpdateDragSegments_(e){this.handlePointerAtPixel_(e),this.dragSegments_.length=0,this.featuresBeingModified_=null;let r=this.vertexFeature_;if(!r)return;let a=this.getMap().getView().getProjection(),c=[],s=r.getGeometry().getCoordinates(),y=ss([s]),v=this.rBush_.getInExtent(y),b={};v.sort(_E);for(let T=0,C=v.length;T<C;++T){let k=v[T],O=k.segment,G=Vt(k.geometry),J=k.depth;if(J&&(G+="-"+J.join("-")),b[G]||(b[G]=new Array(2)),k.geometry.getType()==="Circle"&&k.index===Zu){let le=B1(e,k,a);Zi(le,s)&&!b[G][0]&&(this.dragSegments_.push([k,0]),b[G][0]=k);continue}if(Zi(O[0],s)&&!b[G][0]){this.dragSegments_.push([k,0]),b[G][0]=k;continue}if(Zi(O[1],s)&&!b[G][1]){if(b[G][0]&&b[G][0].index===0){let le=k.geometry.getCoordinates();switch(k.geometry.getType()){case"LineString":case"MultiLineString":continue;case"MultiPolygon":le=le[J[1]];case"Polygon":if(k.index!==le[J[0]].length-2)continue;break;default:}}this.dragSegments_.push([k,1]),b[G][1]=k;continue}Vt(O)in this.vertexSegments_&&!b[G][0]&&!b[G][1]&&c.push(k)}return c}handleDragEvent(e){this.ignoreNextSingleClick_=!1,this.willModifyFeatures_(e,this.dragSegments_.map(([s])=>s));let r=[e.coordinate[0]+this.delta_[0],e.coordinate[1]+this.delta_[1]],a=[],c=[];for(let s=0,y=this.dragSegments_.length;s<y;++s){let v=this.dragSegments_[s],b=v[0],T=b.feature;a.includes(T)||a.push(T);let C=b.geometry;c.includes(C)||c.push(C);let k=b.depth,O,G=b.segment,J=v[1];for(;r.length<C.getStride();)r.push(G[J][r.length]);switch(C.getType()){case"Point":O=r,G[0]=r,G[1]=r;break;case"MultiPoint":O=C.getCoordinates(),O[b.index]=r,G[0]=r,G[1]=r;break;case"LineString":O=C.getCoordinates(),O[b.index+J]=r,G[J]=r;break;case"MultiLineString":O=C.getCoordinates(),O[k[0]][b.index+J]=r,G[J]=r;break;case"Polygon":O=C.getCoordinates(),O[k[0]][b.index+J]=r,G[J]=r;break;case"MultiPolygon":O=C.getCoordinates(),O[k[1]][k[0]][b.index+J]=r,G[J]=r;break;case"Circle":let le=C;if(G[0]=r,G[1]=r,b.index===F1)this.changingFeature_=!0,le.setCenter(r),this.changingFeature_=!1;else{this.changingFeature_=!0;let he=e.map.getView().getProjection(),fe=gg(Ai(le.getCenter(),he),Ai(r,he)),ye=Zn();if(ye){let we=le.clone().transform(ye,he);we.setRadius(fe),fe=we.transform(he,ye).getRadius()}le.setRadius(fe),this.changingFeature_=!1}break;default:}O&&this.setGeometryCoordinates_(C,O)}this.createOrUpdateVertexFeature_(r,a,c,!0)}handleDownEvent(e){if(!this.condition_(e))return!1;let r=e.coordinate,a=this.findInsertVerticesAndUpdateDragSegments_(r);if(a?.length&&this.insertVertexCondition_(e)&&(this.willModifyFeatures_(e,a),this.vertexFeature_)){let c=this.vertexFeature_.getGeometry().getCoordinates();for(let s=a.length-1;s>=0;--s)this.insertVertex_(a[s],c);this.ignoreNextSingleClick_=!0}return!!this.vertexFeature_}handleUpEvent(e){for(let r=this.dragSegments_.length-1;r>=0;--r){let a=this.dragSegments_[r][0],c=a.geometry;if(c.getType()==="Circle"){let s=c,y=s.getCenter(),v=a.featureSegments[0],b=a.featureSegments[1];v.segment[0]=y,v.segment[1]=y,b.segment[0]=y,b.segment[1]=y,this.rBush_.update(ca(y),v);let T=s,C=Zn();if(C){let k=e.map.getView().getProjection();T=T.clone().transform(C,k),T=Gg(T).transform(k,C)}this.rBush_.update(T.getExtent(),b)}else this.rBush_.update(ss(a.segment),a)}return this.featuresBeingModified_&&(this.dispatchEvent(new Xu(C_.MODIFYEND,this.featuresBeingModified_,e)),this.featuresBeingModified_=null),!1}handlePointerMove_(e){this.lastPixel_=e.pixel,this.handlePointerAtPixel_(e.coordinate)}handlePointerAtPixel_(e){let r=this.getMap(),a=r.getPixelFromCoordinate(e),c=r.getView().getProjection(),s=function(b,T){return O1(e,b,c)-O1(e,T,c)},y,v;if(this.hitDetection_){let b=typeof this.hitDetection_=="object"?T=>T===this.hitDetection_:void 0;r.forEachFeatureAtPixel(a,(T,C,k)=>{k&&k.getType()==="Point"&&(k=new lr(ua(k.getCoordinates(),c)));let O=k||T.getGeometry();if(O&&O.getType()==="Point"&&T instanceof us&&this.features_.getArray().includes(T)){v=O;let G=T.getGeometry().getFlatCoordinates().slice(0,2);y=[{feature:T,geometry:v,segment:[G,G]}]}return!0},{layerFilter:b})}if(!y){let b=Gs(ca(e,z1),c),T=r.getView().getResolution()*this.pixelTolerance_,C=js(os(b,T,z1),c);y=this.rBush_.getInExtent(C)}if(y&&y.length>0){let b=y.sort(s)[0],T=b.segment,C=B1(e,b,c),k=r.getPixelFromCoordinate(C),O=gg(a,k);if(v||O<=this.pixelTolerance_){let G={};if(G[Vt(T)]=!0,this.snapToPointer_||(this.delta_[0]=C[0]-e[0],this.delta_[1]=C[1]-e[1]),b.geometry.getType()==="Circle"&&b.index===Zu)this.snappedToVertex_=!0,this.createOrUpdateVertexFeature_(C,[b.feature],[b.geometry],this.snappedToVertex_);else{let J=r.getPixelFromCoordinate(T[0]),le=r.getPixelFromCoordinate(T[1]),he=Sc(k,J),fe=Sc(k,le);O=Math.sqrt(Math.min(he,fe)),this.snappedToVertex_=O<=this.pixelTolerance_,this.snappedToVertex_&&(C=he>fe?T[1]:T[0]),this.createOrUpdateVertexFeature_(C,[b.feature],[b.geometry],this.snappedToVertex_);let ye={};ye[Vt(b.geometry)]=!0;for(let we=1,Ie=y.length;we<Ie;++we){let Pe=y[we].segment;if(Zi(T[0],Pe[0])&&Zi(T[1],Pe[1])||Zi(T[0],Pe[1])&&Zi(T[1],Pe[0])){let Ee=Vt(y[we].geometry);Ee in ye||(ye[Ee]=!0,G[Vt(Pe)]=!0)}else break}}this.vertexSegments_=G;return}}this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null)}insertVertex_(e,r){let a=e.segment,c=e.feature,s=e.geometry,y=e.depth,v=e.index,b;for(;r.length<s.getStride();)r.push(0);switch(s.getType()){case"MultiLineString":b=s.getCoordinates(),b[y[0]].splice(v+1,0,r);break;case"Polygon":b=s.getCoordinates(),b[y[0]].splice(v+1,0,r);break;case"MultiPolygon":b=s.getCoordinates(),b[y[1]][y[0]].splice(v+1,0,r);break;case"LineString":b=s.getCoordinates(),b.splice(v+1,0,r);break;default:return!1}this.setGeometryCoordinates_(s,b);let T=this.rBush_;T.remove(e),this.updateSegmentIndices_(s,v,y,1);let C={segment:[a[0],r],feature:c,geometry:s,depth:y,index:v};T.insert(ss(C.segment),C),this.dragSegments_.push([C,1]);let k={segment:[r,a[1]],feature:c,geometry:s,depth:y,index:v+1};return T.insert(ss(k.segment),k),this.dragSegments_.push([k,0]),!0}updatePointer_(e){return e&&this.findInsertVerticesAndUpdateDragSegments_(e),this.vertexFeature_?.getGeometry().getCoordinates()}getPoint(){let e=this.vertexFeature_?.getGeometry().getCoordinates();return e?ua(e,this.getMap().getView().getProjection()):null}canRemovePoint(){if(!this.vertexFeature_||this.vertexFeature_.get("geometries").every(a=>a.getType()==="Circle"||a.getType().endsWith("Point")))return!1;let e=this.vertexFeature_.getGeometry().getCoordinates();return this.rBush_.getInExtent(ss([e])).some(({segment:a})=>Zi(a[0],e)||Zi(a[1],e))}removePoint(e){if(e&&(e=Ai(e,this.getMap().getView().getProjection()),this.updatePointer_(e)),!this.lastPointerEvent_||this.lastPointerEvent_&&this.lastPointerEvent_.type!=Kn.POINTERDRAG){let r=this.lastPointerEvent_;this.willModifyFeatures_(r,this.dragSegments_.map(([c])=>c));let a=this.removeVertex_();return this.featuresBeingModified_&&this.dispatchEvent(new Xu(C_.MODIFYEND,this.featuresBeingModified_,r)),this.featuresBeingModified_=null,a}return!1}removeVertex_(){let e=this.dragSegments_,r={},a=!1,c,s,y,v,b,T,C,k,O,G,J;for(b=e.length-1;b>=0;--b)y=e[b],G=y[0],J=Vt(G.feature),G.depth&&(J+="-"+G.depth.join("-")),J in r||(r[J]={}),y[1]===0?(r[J].right=G,r[J].index=G.index):y[1]==1&&(r[J].left=G,r[J].index=G.index+1);for(J in r){switch(O=r[J].right,C=r[J].left,T=r[J].index,k=T-1,C!==void 0?G=C:G=O,k<0&&(k=0),v=G.geometry,s=v.getCoordinates(),c=s,a=!1,v.getType()){case"MultiLineString":s[G.depth[0]].length>2&&(s[G.depth[0]].splice(T,1),a=!0);break;case"LineString":s.length>2&&(s.splice(T,1),a=!0);break;case"MultiPolygon":c=c[G.depth[1]];case"Polygon":c=c[G.depth[0]],c.length>4&&(T==c.length-1&&(T=0),c.splice(T,1),a=!0,T===0&&(c.pop(),c.push(c[0]),k=c.length-1));break;default:}if(a){this.setGeometryCoordinates_(v,s);let le=[];if(C!==void 0&&(this.rBush_.remove(C),le.push(C.segment[0])),O!==void 0&&(this.rBush_.remove(O),le.push(O.segment[1])),C!==void 0&&O!==void 0){let he={depth:G.depth,feature:G.feature,geometry:G.geometry,index:k,segment:le};this.rBush_.insert(ss(he.segment),he)}this.updateSegmentIndices_(v,T,G.depth,-1),this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),e.length=0}}return a}canInsertPoint(){if(!this.vertexFeature_||this.vertexFeature_.get("geometries").every(a=>a.getType()==="Circle"||a.getType().endsWith("Point")))return!1;let e=this.vertexFeature_.getGeometry().getCoordinates();return this.rBush_.getInExtent(ss([e])).some(({segment:a})=>!(Zi(a[0],e)||Zi(a[1],e)))}insertPoint(e){let r=e?Ai(e,this.getMap().getView().getProjection()):this.vertexFeature_?.getGeometry().getCoordinates();return r?this.findInsertVerticesAndUpdateDragSegments_(r).reduce((c,s)=>c||this.insertVertex_(s,r),!1):!1}setGeometryCoordinates_(e,r){this.changingFeature_=!0,e.setCoordinates(r),this.changingFeature_=!1}updateSegmentIndices_(e,r,a,c){this.rBush_.forEachInExtent(e.getExtent(),function(s){s.geometry===e&&(a===void 0||s.depth===void 0||yn(s.depth,a))&&s.index>r&&(s.index+=c)})}};function _E(h,e){return h.index-e.index}function O1(h,e,r){let a=e.geometry;if(a.getType()==="Circle"){let s=a;if(e.index===Zu){let y=Zn();y&&(s=s.clone().transform(y,r));let v=Sc(s.getCenter(),Ai(h,r)),b=Math.sqrt(v)-s.getRadius();return b*b}}let c=Ai(h,r);return Gc[0]=Ai(e.segment[0],r),Gc[1]=Ai(e.segment[1],r),bv(c,Gc)}function B1(h,e,r){let a=e.geometry;if(a.getType()==="Circle"&&e.index===Zu){let s=a,y=Zn();return y&&(s=s.clone().transform(y,r)),ua(s.getClosestPoint(Ai(h,r)),r)}let c=Ai(h,r);return Gc[0]=Ai(e.segment[0],r),Gc[1]=Ai(e.segment[1],r),ua(mg(c,Gc),r)}function xE(){let h=Vb();return function(e,r){return h.Point}}var T_=E_;var vE=/^([^@$!\n]*)(@?([\d.]+),([\d.]+))?(\$?([a-zA-Z0-9]{0,2}))$/,N1=/^([\d.]+),([\d.]+)$/,V1=/^!([^$]*)(\$?([a-zA-Z0-9]{0,2}))$/,af="stop-fetch",j1=h=>{let e=[];return h.forEach(r=>{let a=r.getGeometry()?.getCoordinates();a?.length&&e.push(...a)}),e},M_=class h extends Ac{constructor(r={}){super(r);this.abortControllers={};this.cacheStationData={};this.format=new hr({featureProjection:"EPSG:3857"});this.graphs=[];this.initialRouteDrag={};this.segments=[];this.snapToClosestStation=!1;this.useRawViaPoints=!1;this.viaPoints=[];this.element||this.createDefaultElement(),this.loading=!1,this.active=r.active||!0,this.graphs=r.graphs||[["osm",0,99]],this.mot=r.mot||"bus",this.modify=r.modify!==!1,this.apiParams=r.apiParams,this.useRawViaPoints=r.useRawViaPoints||!1,this.snapToClosestStation=r.snapToClosestStation||!1,this.apiKey=r.apiKey,this.stopsApiKey=r.stopsApiKey||this.apiKey,this.stopsApiUrl=r.stopsApiUrl||"https://api.geops.io/stops/v1/",this.api=new eu({...r}),this.routingLayer=r.routingLayer||new jc({source:new yl,style:r.style}),this.onRouteError=r.onRouteError||(a=>{this.dispatchEvent(new Si("change:route")),this.reset(),console.error(a)}),this.onMapClick=this.onMapClick.bind(this),this.onModifyEnd=this.onModifyEnd.bind(this),this.onModifyStart=this.onModifyStart.bind(this),this.createModifyInteraction(),this.on("propertychange",a=>{a.key==="active"&&this.onActiveChange(),a.key==="mot"&&this.viaPoints&&this.drawRoute()})}static getGraphsResolutions(r,a){let c=a.getView();return r.map(([,s,y])=>[c.getResolutionForZoom(s),c.getResolutionForZoom(y||s+1)])}abortRequests(){this.graphs.forEach(r=>{let a=r[0];this.abortControllers[a]&&this.abortControllers[a].abort(),this.abortControllers[a]=new AbortController}),this.abortControllers[af]?.abort(),this.abortControllers[af]=new AbortController,this.loading=!1}activate(){let r=this.getMap();r&&(this.format=new hr({featureProjection:r.getView().getProjection()}),this.graphsResolutions=h.getGraphsResolutions(this.graphs,r),this.modifyInteraction&&r.removeInteraction(this.modifyInteraction),this.modifyInteraction&&r.addInteraction(this.modifyInteraction),this.modifyInteraction?.setActive(this.modify),this.addListeners())}addListeners(){this.modify&&(this.removeListeners(),this.onMapClickKey=this.getMap()?.on("singleclick",this.onMapClick))}addViaPoint(r,a=-1,c=0){this.viaPoints.splice(a===-1?this.viaPoints.length:a,c,r),this.drawRoute(),this.dispatchEvent(new Si("change:route"))}createDefaultElement(){this.element=document.createElement("button"),this.element.id="ol-toggle-routing",this.element.innerHTML="Toggle Route Control",this.element.onclick=()=>this.active?this.deactivate():this.activate(),Object.assign(this.element.style,{position:"absolute",right:"10px",top:"10px"})}createModifyInteraction(){this.modifyInteraction=new T_({deleteCondition:r=>{let c=(r.target?.getFeaturesAtPixel(r.pixel,{hitTolerance:5})||[]).find(s=>s.getGeometry()?.getType()==="Point"&&s.get("index"));return A1(r)&&c?(this.removeViaPoint(c.get("index")),!0):!1},pixelTolerance:6,source:this.routingLayer?.getSource()||void 0}),this.modifyInteraction.on("modifystart",this.onModifyStart),this.modifyInteraction.on("modifyend",this.onModifyEnd),this.modifyInteraction.setActive(!1)}deactivate(){let r=this.getMap();r&&(this.modifyInteraction&&r.removeInteraction(this.modifyInteraction),this.removeListeners(),this.reset())}drawRoute(){if(this.abortRequests(),this.routingLayer?.getSource()?.clear(),!this.viaPoints.length)return null;if(this.viaPoints.length===1)return this.drawViaPoint(this.viaPoints[0],0,this.abortControllers[af]);let r=this.viaPoints.map(a=>{if(Array.isArray(a)){let c=this.getMap()?.getView().getProjection(),[s,y]=al(a,c);return this.snapToClosestStation?[`@${y}`,s]:[y,s]}return this.useRawViaPoints?a:`!${a}`});return this.loading=!0,this.viaPoints.forEach((a,c)=>{this.drawViaPoint(a,c,this.abortControllers[af])}),Promise.all(this.graphs.map(([a],c)=>{let{signal:s}=this.abortControllers[a];return this.api?this.api.route({"coord-punish":1e3,"coord-radius":100,elevation:!1,graph:a,mot:this.mot,"resolve-hops":!1,via:`${r.join("|")}`,...this.apiParams||{}},{signal:s}).then(y=>{if(this.segments=this.format.readFeatures(y),this.mot==="foot"){let T=this.segments.reduce((C,k)=>{let O=k.get("trg");return C.find(G=>G[0]===O[0]&&G[1]===O[1])?C:[...C,O]},[]);this.segments=T.map(C=>{let k=this.segments.filter(G=>{let J=G.get("trg");return J[0]===C[0]&&J[1]===C[1]}),O=j1(k);return new us({geometry:new Is(O)})})}let v=j1(this.segments),b=new us({geometry:new Is(v)});b.set("graph",a),b.set("mot",this.mot),this.graphsResolutions&&this.graphsResolutions[c]?.length>=2&&(b.set("minResolution",this.graphsResolutions[c][0]),b.set("maxResolution",this.graphsResolutions[c][1])),this.routingLayer?.getSource()?.addFeature(b),this.loading=!1}).catch(y=>{/AbortError/.test(y.name)||(this.segments=[],this.dispatchEvent(new Si("error")),this.onRouteError(y,this),this.loading=!1)}):Promise.resolve([])}))}drawViaPoint(r,a,c){let s=new us;if(s.set("viaPointIdx",a),Array.isArray(r))return s.setGeometry(new lr(r)),this.routingLayer?.getSource()?.addFeature(s),Promise.resolve(s);if(!this.useRawViaPoints||V1.test(r)){let C,k;return this.useRawViaPoints?[,C,,k]=V1.exec(r)||[]:[C,k]=r.split("$"),fetch(`${this.stopsApiUrl}lookup/${C}?key=${this.stopsApiKey}`,{signal:c.signal}).then(O=>O.json()).then(O=>{let{coordinates:G}=O?.features?.[0]?.geometry||{};return G||console.log("No coordinates found for station "+C,O),this.cacheStationData[r]=ar(G),s.set("viaPointTrack",k),s.setGeometry(new lr(ar(G))),this.routingLayer?.getSource()?.addFeature(s),s}).catch(O=>{/AbortError/.test(O.message)||(this.dispatchEvent(new Si("error")),this.onRouteError(O,this),this.routingLayer?.getSource()?.clear(),this.loading=!1)})}if(this.useRawViaPoints&&N1.test(r)){let[C,k]=N1.exec(r)||[];if(k&&C){let O=parseFloat(k),G=parseFloat(C),J=ar([O,G],this.getMap()?.getView().getProjection());return s.setGeometry(new lr(J)),this.routingLayer?.getSource()?.addFeature(s),Promise.resolve(s)}}let[,y,,v,b,,T]=vE.exec(r)||[];if(b&&v){let C=ar([parseFloat(b),parseFloat(v)],this.getMap()?.getView().getProjection());return s.set("viaPointTrack",T),s.setGeometry(new lr(C)),this.routingLayer?.getSource()?.addFeature(s),Promise.resolve(s)}return y?fetch(`${this.stopsApiUrl}?key=${this.stopsApiKey}&q=${y}&limit=1`,{signal:c.signal}).then(C=>C.json()).then(C=>{let{coordinates:k}=C.features[0].geometry;return this.cacheStationData[r]=ar(k),s.set("viaPointTrack",T),s.setGeometry(new lr(ar(k))),this.routingLayer?.getSource()?.addFeature(s),s}).catch(C=>(this.dispatchEvent(new Si("error")),this.onRouteError(C,this),this.loading=!1,null)):Promise.resolve(null)}onActiveChange(){this.get("active")?this.activate():this.deactivate(),this.render()}onMapClick(r){let c=r.target.getFeaturesAtPixel(r.pixel,{hitTolerance:5,layerFilter:s=>s===this.routingLayer}).find(s=>s.getGeometry()?.getType()==="Point"&&s.get("viaPointIdx")!==void 0);if(c){this.removeViaPoint(c.get("viaPointIdx"));return}this.addViaPoint(r.coordinate)}onModifyEnd(r){let a=r.mapBrowserEvent.coordinate,{oldRoute:c,segmentIndex:s,viaPoint:y}=this.initialRouteDrag||{};return y?this.addViaPoint(a,y.get("viaPointIdx"),1):c?s===-1?Promise.reject(new Error("No segment found")):this.addViaPoint(a,(s||0)+1):this.addViaPoint(a,0,1)}onModifyStart(r){let a=-1,c=r.features.getArray().find(y=>y.getGeometry()?.getType()==="LineString");if(c?.getGeometry()&&r.mapBrowserEvent.coordinate){let y=os(new lr(c.getGeometry()?.getClosestPoint(r.mapBrowserEvent.coordinate)).getExtent(),.001);a=this.segments.findIndex(v=>v.getGeometry()?.intersectsExtent(y))}let s=(r.features.getArray().filter(y=>y.getGeometry()?.getType()==="Point")||[])[0];this.initialRouteDrag={oldRoute:c?.clone(),segmentIndex:a,viaPoint:s}}removeListeners(){this.onMapClickKey&&bs(this.onMapClickKey)}removeViaPoint(r=(this.viaPoints||[]).length-1){this.viaPoints.length&&this.viaPoints[r]&&this.viaPoints.splice(r,1),this.drawRoute(),this.dispatchEvent(new Si("change:route"))}render(){}reset(){this.abortRequests(),this.viaPoints=[],this.routingLayer?.getSource()?.clear(),this.dispatchEvent(new Si("change:route"))}setMap(r){super.setMap(r),r&&this.active?this.activate():r||(this.active=!1)}setViaPoints(r){this.viaPoints=[...r],this.drawRoute(),this.dispatchEvent(new Si("change:route"))}get active(){return this.get("active")}set active(r){this.set("active",r)}get loading(){return this.get("loading")}set loading(r){this.set("loading",r)}get modify(){return this.get("modify")}set modify(r){this.set("modify",r)}get mot(){return this.get("mot")}set mot(r){this.set("mot",r)}},G1=M_;var P_=class{constructor(e){let{apiKey:r,apiParams:a,placeholder:c,url:s}=e||{};this.apiParams={limit:20,...a||{}},this.placeholder=c||"Search for a stop...";let y={apiKey:r};s&&(y.url=s),this.api=new tu(y),this.abortController=new AbortController,this.createElement(e),this.options=e}clear(){!this.suggestionsElt||!this.inputElt||!this.clearElt||(this.inputElt.value="",this.suggestionsElt.innerHTML="",this.clearElt.style.display="none")}createElement({element:e}){this.inputElt=document.createElement("input"),this.inputElt.type="text",this.inputElt.placeholder=this.placeholder,this.inputElt.autocomplete="off",this.inputElt.onkeyup=r=>{this.abortController?.abort(),this.abortController=new AbortController,this.search(r.target.value,this.abortController)},Object.assign(this.inputElt.style,{padding:"10px 30px 10px 10px"}),e.appendChild(this.inputElt),this.suggestionsElt=document.createElement("div"),Object.assign(this.suggestionsElt.style,{backgroundColor:"white",cursor:"pointer",overflowY:"auto"}),e.appendChild(this.suggestionsElt),this.clearElt=document.createElement("div"),Object.assign(this.clearElt.style,{cursor:"pointer",display:"none",fontSize:"200%",padding:"0 10px",position:"absolute",right:"0"}),this.clearElt.innerHTML="\xD7",this.clearElt.onclick=()=>this.clear(),e.appendChild(this.clearElt)}render(e){let r=e?.features||[];this.suggestionsElt&&(this.suggestionsElt.style.display=r.length?"block":"none",this.suggestionsElt.innerHTML="",r.forEach(a=>{let c=document.createElement("div");c.innerHTML=a?.properties?.name,c.onclick=s=>{this.options?.onSuggestionClick?.(a,s)},Object.assign(c.style,{padding:"5px 12px"}),this.suggestionsElt?.appendChild(c)}))}search(e,r){return(e!==void 0||e!==null)&&(this.apiParams.q=e),this.clearElt&&(this.clearElt.style.display="block"),this.api.search(this.apiParams,r&&{signal:r.signal}).then(a=>{this.render(a)}).catch(()=>{this.render()})}},U1=P_;var bE=()=>{let h=document.createElement("div");return Object.assign(h.style,{position:"absolute",top:0,left:"50px",margin:"10px",display:"flex",flexDirection:"column",width:"320px",maxHeight:"90%"}),h},q1=bE;var A_=class extends Ac{constructor(e){let r=q1();r.className=e?.className||"mbt-stop-finder";let a={element:r,...e||{}};super(a),this.controller=new U1({onSuggestionClick:this.onSuggestionClick.bind(this),...a})}onSuggestionClick(e){let r=ar(e.geometry.coordinates);this.getMap()?.getView().setCenter(r)}search(e,r){return this.controller.search(e,r)}},$1=A_;var Z1=Vs(L_(),1);var wE="vectorTileFeature",D_={"EPSG:3857":new hr({featureProjection:"EPSG:3857"})},Ea=class extends Sa{getFeaturesAtCoordinate(e,r=5){let a=this.getMapLibrePixels(e,r);if(!a)return[];let c=this.getLayer().get("queryRenderedFeaturesOptions")||{};return this.getLayer().mapLibreMap?.queryRenderedFeatures(a,c).map(y=>this.toOlFeature(y))||[]}prepareFrame(){return!0}renderFrame(e){let r=this.getLayer(),{mapLibreMap:a}=r,c=r.getMapInternal();if(!r||!c||!a)return null;let s=a.getCanvas(),{viewState:y}=e;a.jumpTo({center:al(y.center),zoom:y.zoom-1,bearing:lu(-y.rotation)});let v=r.getOpacity().toString();return s&&v!==s.style.opacity&&(s.style.opacity=v),s.isConnected?SE(s,e)||a.resize():c.render(),a.redraw(),a.getContainer()}getFeatures(e){let r=this.getLayer().getMapInternal()?.getCoordinateFromPixel(e);return Promise.resolve(this.getFeaturesAtCoordinate(r))}forEachFeatureAtCoordinate(e,r,a,c){let s=this.getFeaturesAtCoordinate(e,a);return s.forEach(y=>{let v=y.getGeometry();v instanceof Cr&&c(y,this.getLayer(),v)}),s?.[0]}getMapLibrePixels(e,r){if(!e)return;let a=this.getLayer().mapLibreMap?.project(al(e));if(a?.x===void 0||a?.y===void 0)return;let c=[a.x,a.y];if(r){let[s,y]=c;c=[[s-r,y-r],[s+r,y+r]]}return c}toOlFeature(e){let c=this.getLayer().getMapInternal()?.getView()?.getProjection()?.getCode()||"EPSG:3857";D_[c]||(D_[c]=new hr({featureProjection:c}));let s=D_[c].readFeature(e);return s&&s.set(wE,e,!0),s}};function SE(h,e){return h.width===Math.floor(e.size[0]*e.pixelRatio)&&h.height===Math.floor(e.size[1]*e.pixelRatio)}var IE=h=>{if(!h)return[];let{style:e}=h;if(!e)return[];let{sourceCaches:r}=e,a=[];return Object.values(r).forEach(c=>{if(c.used){let{attribution:s}=c.getSource();s&&(a=a.concat(s.replace(/&copy;/g,"\xA9").split(/(<a.*?<\/a>)/)))}}),CE(a)},CE=h=>{let e=h.filter(c=>c!=null&&c.trim&&c.trim()),r=e.map(c=>c.toLowerCase());return[...new Set(r)].map(c=>e.find(s=>s.toLowerCase()===c))},F_=IE;var Uc=class extends Es{mapLibreMap;loaded=!1;olListenersKeys=[];constructor(e){super({source:new Mo({attributions:()=>F_(this.mapLibreMap)}),...e})}disposeInternal(){bs(this.olListenersKeys),this.loaded=!1,this.mapLibreMap&&(this.mapLibreMap.triggerRepaint=()=>{},this.mapLibreMap.remove()),super.disposeInternal()}setMapInternal(e){super.setMapInternal(e),e?this.loadMapLibreMap():this.dispose()}loadMapLibreMap(){this.loaded=!1;let e=this.getMapInternal();if(e&&this.olListenersKeys.push(e.on("change:target",this.loadMapLibreMap.bind(this))),!e?.getTargetElement())return;if(!this.getVisible()){this.olListenersKeys.push(this.once("change:visible",this.loadMapLibreMap.bind(this)));return}let r=document.createElement("div");r.style.position="absolute",r.style.width="100%",r.style.height="100%";let a=this.get("mapLibreOptions");this.mapLibreMap=new Z1.Map(Object.assign({},a,{container:r,attributionControl:!1,interactive:!1,trackResize:!1})),this.mapLibreMap.on("sourcedata",()=>{this.getSource()?.refresh()}),this.mapLibreMap.once("load",()=>{this.loaded=!0,this.dispatchEvent(new Si("load"))})}createRenderer(){return new Ea(this)}};var V_=Vs(_l());var Hu=class extends Ea{constructor(r){super(r);this.ignoreNextRender=!1;this.setIsReady=this.setIsReady.bind(this),this.ignoreNextRender=!1}renderFrame(r){let a=this.getLayer(),{mapLibreMap:c}=a,s=a.getMapInternal();if(!a||!s||!c)return null;if(this.ready&&this.ignoreNextRender)return this.ignoreNextRender=!1,c?.getContainer();this.ready=!1,this.ignoreNextRender=!1,this.updateReadyState();let y=super.renderFrame(r);return c?.once("idle",this.setIsReady),y}setIsReady(){this.ready||(this.ready=!0,this.ignoreNextRender=!0,this.getLayer().changed())}updateReadyState(){this.getLayer()?.mapLibreMap?.off("idle",this.setIsReady),this.getLayer()?.mapLibreMap?.once("idle",this.setIsReady)}};var Y1=Vs(_l()),Li=()=>{};typeof window<"u"&&new URLSearchParams(window.location.search).get("deprecated")&&(Li=(0,Y1.default)(h=>{console.warn(h)},1e3));var UE=(h,e)=>{(e||[]).forEach(r=>{r.set("parent",void 0)}),(h.get("children")||[]).forEach(r=>{r.set("parent",void 0)})},qE=(h,e)=>{e.properties&&(Li("Deprecated. Don't use properties options. Pass the values directly in options object."),h.setProperties(e.properties)),h.on("propertychange",r=>{if(r.key==="children"&&UE(r.target,r.oldValue),r.key==="map"){let a=r.target.get(r.key);a?(r.target.get("children")||[]).forEach(c=>{a.addLayer(c)}):r.oldValue&&(r.target.get("children")||[]).forEach(c=>{r.oldValue.removeLayer(c)})}}),h.set("options",e),h.set("children",e.children||[]),Object.defineProperties(h,{children:{get:()=>(Li("Layer.children is deprecated. Use the Layer.get('children') method instead."),h.get("children")||[]),set:r=>{Li("Layer.children is deprecated. Use the Layer.set('children', children) method instead."),h.set("children",r||[])}},copyrights:{get:()=>(Li("Layer.copyrights is deprecated. Get the attributions from the source object"),h.get("copyrights")),set:r=>{Li("Layer.copyrights is deprecated. Set the attributions to the source object.");let a=r&&!Array.isArray(r)?[r]:r;h.set("copyrights",a||[])}},disabled:{get(){return Li("Layer.disabled is deprecated. Use the Layer.get('disabled') method instead."),h.get("disabled")},set(r){Li("Layer.disabled is deprecated. Use the Layer.set('disabled', newValue) method instead."),h.set("disabled",r)}},group:{get(){return Li("Layer.group is deprecated. Use the Layer.get('group') method instead."),h.get("group")}},hitTolerance:{get(){return Li("Layer.hitTolerance is deprecated. Pass the hitTolerance when you request the features."),h.get("hitTolerance")||5},set(r){Li("Layer.hitTolerance is deprecated. Pass the hitTolerance when you request the features."),h.set("hitTolerance",r)}},key:{get(){return Li('Layer.key is deprecated. Use the Layer.get("key") method instead.'),h.get("key")||h.get("name")}},map:{get(){return Li('Layer.map is deprecated. Use the Layer.get("map") method instead.'),h.getMapInternal()}},name:{get(){return Li("Layer.name is deprecated. Use the Layer.get('name') method instead."),h.get("name")}},olLayer:{get(){return Li("Layer.olLayer is deprecated. mobility-toolbox-js/ol layers inherits now from ol/layer/Layer class. obj getter is only a redirect to the current 'this' object."),h},set(){Li("Layer.olLayer is deprecated. mobility-toolbox-js/ol layers inherits now from ol/layer/Layer class. obj setter has no effect.")}},options:{get(){return Li('Layer.options is deprecated. Use the Layer.get("options") method instead.'),h.get("options")},set(r){return Li('Layer.options is deprecated. Use the Layer.set("options", newValue) method instead.'),h.set("options",r)}},parent:{get(){return Li("Layer.parent is deprecated. Use the Layer.get('parent') method instead."),h.get("parent")},set(r){Li("Layer.parent is deprecated. Use the Layer.set('parent', parent) method instead."),h.set("parent",r)}},visible:{get(){return Li("Layer.visible is deprecated. Use the Layer.getVisible() method instead."),h.getVisible()},set(r){Li("Layer.visible is deprecated. Use the Layer.setVisible(newValue) method instead."),h.setVisible(r)}}})},Ta=qE;var J1=(h,e,r,a)=>el(`${h}/styles/${e}/style.json`,{[a]:r}).toString(),B_=()=>{};typeof window<"u"&&new URLSearchParams(window.location.search).get("deprecated")&&(B_=(0,V_.default)(h=>{console.warn(h)},1e3));var N_=class h extends Uc{constructor(r){let a={apiKeyName:"key",style:"travic_v2",url:"https://maps.geops.io",...r||{},mapLibreOptions:{...r.mapLibreOptions||{}}};!a.mapLibreOptions.style&&a.url?.includes("style.json")?a.mapLibreOptions.style=a.url:!a.mapLibreOptions.style&&a.apiKey&&a.style&&typeof a.style=="string"&&(a.mapLibreOptions.style=J1(a.url,a.style,a.apiKey,a.apiKeyName));super(a);this.olEventsKeys=[];Ta(this,r),this.set("options",r)}set apiKey(r){this.set("apiKey",r)}get apiKey(){return this.get("apiKey")}set apiKeyName(r){this.set("apiKeyName",r)}get apiKeyName(){return this.get("apiKeyName")}get maplibreMap(){return B_("MaplibreLayer.maplibreMap is deprecated. Use layer.mapLibreMap."),this.mapLibreMap}get mbMap(){return B_("MaplibreLayer.mbMap is deprecated. Use layer.maplibreMap."),this.maplibreMap}get style(){return this.get("style")}set style(r){this.set("style",r)}get url(){return this.get("url")}set url(r){this.set("url",r)}attachToMap(){let r=(0,V_.default)(this.updateMaplibreMap.bind(this),150);r(),this.olEventsKeys.push(this.on("propertychange",a=>{/(url|style|apiKey|apiKeyName)/.test(a.key)&&r()}))}clone(r){return new h({...this.get("options")||{},...r||{}})}createRenderer(){return new Hu(this)}detachFromMap(){bs(this.olEventsKeys)}disposeInternal(){let r=this.getSource();super.disposeInternal(),this.setSource(r)}getStyle(){return this.style&&typeof this.style=="object"&&this.style.name&&this.style.version?this.style:this.url.includes("style.json")?this.url:this.get("options")?.mapLibreOptions?.style?this.get("options").mapLibreOptions.style:J1(this.url,this.style,this.apiKey,this.apiKeyName)}setMapInternal(r){r?(super.setMapInternal(r),this.attachToMap()):(this.detachFromMap(),super.setMapInternal(r))}updateMaplibreMap(){try{this.mapLibreMap?.setStyle(this.getStyle(),{diff:!1})}catch(r){console.error("Error while updating MaplibreMap",r)}}},Q1=N_;var ew=Vs(_l());var j_={"EPSG:3857":new hr({featureProjection:"EPSG:3857"})},Ku=class extends Sa{forEachFeatureAtCoordinate(e,r,a,c){let s=this.getFeaturesAtCoordinate(e,a);return s.forEach(y=>{c(y,this.layer_,y.getGeometry())}),s?.[0]}getFeatures(e){let r=this.getLayer()?.getMapInternal()?.getCoordinateFromPixel(e);return Promise.resolve(this.getFeaturesAtCoordinate(r))}getFeaturesAtCoordinate(e,r=5){if(!e)return[];let a=this.getLayer(),c=a.getMapInternal(),s=a.maplibreLayer.mapLibreMap,y=c?.getView()?.getProjection()?.getCode()||"EPSG:3857",v=[];if(j_[y]||(j_[y]=new hr({featureProjection:y})),s?.isStyleLoaded()){let b=e&&s.project(al(e));if(b?.x&&b?.y){let T=[b.x,b.y];if(r){let[k,O]=T;T=[[k-r,O-r],[k+r,O+r]]}let C=a.layers||[];a.layersFilter&&(C=s.getStyle().layers.filter(a.layersFilter)),a.queryRenderedLayersFilter&&(C=s.getStyle().layers.filter(a.queryRenderedLayersFilter)),v=s.queryRenderedFeatures(T,{layers:C.map(k=>k.id),validate:!1}).map(k=>{let O=j_[y].readFeature(k);return O&&O.set(Pc,k),O})}}return v}prepareFrame(){return!0}renderFrame(){return null}};var Mn=()=>{};typeof window<"u"&&new URLSearchParams(window.location.search).get("deprecated")&&(Mn=(0,ew.default)((...h)=>{console.warn(...h)},1e3));var G_=class h extends Es{constructor(r={mapLibreOptions:{style:{layers:[],sources:{},version:8}}}){r.mapboxLayer&&(Mn("options.mapboxLayer is deprecated. Use options.maplibreLayer instead."),r.maplibreLayer=r.mapboxLayer,delete r.mapboxLayer),r.styleLayers&&(Mn("options.styleLayers is deprecated. Use options.layers instead."),r.layers=r.styleLayers,delete r.styleLayers),r.styleLayersFilter&&(Mn("options.styleLayersFilter is deprecated. Use options.layersFilter instead."),r.layersFilter=r.styleLayersFilter,delete r.styleLayersFilter);super({source:new Mo({}),...r});this.highlightedFeatures=[];this.olEventsKeys=[];this.selectedFeatures=[];Ta(this,r),this.set("options",r),this.beforeId=r.beforeId,this.onLoad=this.onLoad.bind(this),!this.layersFilter&&this.layers&&(this.layersFilter=a=>!!this.layers.find(c=>a.id===c.id))}get beforeId(){return this.get("beforeId")}set beforeId(r){this.set("beforeId",r)}get layers(){return this.get("layers")}set layers(r){this.set("layers",r)}get layersFilter(){return this.get("layersFilter")}set layersFilter(r){this.set("layersFilter",r)}get mapboxLayer(){return Mn("Deprecated. Use maplibreLayer instead."),this.get("maplibreLayer")}get maplibreLayer(){return this.get("maplibreLayer")}set maplibreLayer(r){this.set("maplibreLayer",r)}get queryRenderedLayersFilter(){return this.get("queryRenderedLayersFilter")}set queryRenderedLayersFilter(r){this.set("queryRenderedLayersFilter",r)}get sources(){return this.get("sources")}set sources(r){this.set("sources",r)}get styleLayer(){return Mn("Deprecated. Use MaplibreStyleLayer.layer instead."),this.layers[0]}set styleLayer(r){Mn("MaplibreStyleLayer.styleLayer is deprecated. Use MaplibreStyleLayer.layer instead."),this.layers=[r]}get styleLayers(){return Mn("MaplibreStyleLayer.styleLayers is deprecated. Use MaplibreStyleLayer.layers instead."),this.layers}set styleLayers(r){Mn("MaplibreStyleLayer.styleLayers is deprecated. Use MaplibreStyleLayer.layers instead."),this.layers=r}addLayers(){if(!this.maplibreLayer?.mapLibreMap||!Array.isArray(this.layers))return;let{mapLibreMap:r}=this.maplibreLayer;r&&(this.layers.forEach(a=>{let{id:c,source:s}=a;(!s||s&&r.getSource(s))&&c&&!r.getLayer(c)&&r.addLayer(a,this.beforeId)}),this.applyLayoutVisibility())}addSources(){if(!this.maplibreLayer?.mapLibreMap||!this.sources)return;let{mapLibreMap:r}=this.maplibreLayer;r&&Object.entries(this.sources).forEach(([a,c])=>{r.getSource(a)||r.addSource(a,c)})}applyLayoutVisibility(r){if(!this.maplibreLayer?.mapLibreMap?.getStyle()||!this.layersFilter)return;let{mapLibreMap:a}=this.maplibreLayer,c=a.getStyle(),s=this.getVisible()?"visible":"none",y=c.layers||[];for(let v=0;v<y.length;v+=1){let b=y[v];if(this.layersFilter(b)){let{id:T}=b;a.getLayer(T)&&(a.setLayoutProperty(T,"visibility",s),(this.getMinZoom()||this.getMaxZoom())&&a.setLayerZoomRange(T,this.getMinZoom()?this.getMinZoom()-1:0,this.getMaxZoom()?this.getMaxZoom()-1:24))}}}attachToMap(r){if(!this.getMapInternal()||!this.maplibreLayer)return;let{mapLibreMap:c}=this.maplibreLayer;c&&(c.loaded()?this.onLoad():c.once("load",this.onLoad)),this.olEventsKeys.push(this.maplibreLayer.on("load",this.onLoad.bind(this)),this.on("change:visible",s=>{this.applyLayoutVisibility(s)}),this.on("propertychange",s=>{/(sources|layers|layersFilter|maplibreLayer|beforeId)/.test(s.key)&&(this.detachFromMap(),this.attachToMap(r))}),this.maplibreLayer.on("propertychange",s=>{s.key==="style"&&s.target.maplibreMap.once("styledata",()=>{s.target.maplibreMap.once("idle",()=>{this.onLoad()})})}))}clone(r){return new h({...this.get("options"),...r})}createRenderer(){return new Ku(this)}detachFromMap(){bs(this.olEventsKeys),this.maplibreLayer?.mapLibreMap&&(this.maplibreLayer.mapLibreMap.off("load",this.onLoad),this.removeLayers(),this.removeSources())}getFeatureInfoAtCoordinate(r){if(Mn("Deprecated. getFeatureInfoAtCoordinate([layer], coordinate) from ol package instead."),!this.maplibreLayer?.mapLibreMap)return Promise.resolve({coordinate:r,features:[],layer:this});let{mapLibreMap:a}=this.maplibreLayer;if(!a.isStyleLoaded())return Promise.resolve({coordinate:r,features:[],layer:this});let c=this.layers||[];return this.layersFilter&&(c=a.getStyle().layers.filter(this.layersFilter),console.log(c)),this.queryRenderedLayersFilter&&(c=a.getStyle().layers.filter(this.queryRenderedLayersFilter)),Promise.resolve({coordinate:r,features:[],layer:this})}highlight(r=[]){Mn("Deprecated. Use layer.setFeatureState(features, {hover: true}) instead.");let a=this.highlightedFeatures?.filter(c=>!(this.selectedFeatures||[]).map(s=>s.getId()).includes(c.getId()))||[];this.setHoverState(a,!1),this.highlightedFeatures=r,this.setHoverState(this.highlightedFeatures,!0)}onLoad(){if(!this.maplibreLayer?.mapLibreMap)return;this.addSources(),this.addLayers();let{mapLibreMap:r}=this.maplibreLayer,a=r.getStyle();if(a?.layers&&this.layersFilter){let c=a.layers.filter(this.layersFilter);this.set("disabled",!c.length)}this.applyLayoutVisibility()}removeLayers(){if(!this.maplibreLayer?.mapLibreMap||!Array.isArray(this.layers))return;let{mapLibreMap:r}=this.maplibreLayer;r&&this.layers.forEach(a=>{let{id:c}=a;c&&r.getLayer(c)&&r.removeLayer(c)})}removeSources(){if(!this.maplibreLayer?.mapLibreMap||!this.sources)return;let{mapLibreMap:r}=this.maplibreLayer;r&&Object.keys(this.sources).forEach(a=>{r.getSource(a)&&r.removeSource(a)})}select(r=[]){Mn("Deprecated. Use layer.setFeatureState(features, {selected: true}) instead."),this.setHoverState(this.selectedFeatures||[],!1),this.selectedFeatures=r,this.setHoverState(this.selectedFeatures||[],!0)}setFeatureState(r,a){if(!this.maplibreLayer?.mapLibreMap||!r.length)return;let c=this.maplibreLayer.mapLibreMap;r.forEach(s=>{let{source:y,sourceLayer:v}=s.get(Pc)||{};if(!y&&!v||!s.getId()){s.getId()||Mn("No feature's id found. To use the feature state functionnality, tiles must be generated with --generate-ids. See https://github.com/Maplibre/tippecanoe#adding-calculated-attributes.",s.getProperties());return}c.setFeatureState({id:s.getId(),source:y,sourceLayer:v},a)})}setHoverState(r,a){Mn(`Deprecated. Use layer.setFeatureState(features, {hover: ${a}}) instead.`),this.setFeatureState(r,{hover:a})}setMapInternal(r){r?(super.setMapInternal(r),this.attachToMap(r)):(this.detachFromMap(),super.setMapInternal(r))}},tw=G_;var Z_=Vs(_l());var q_=Vs(_l()),$_=Vs(ow());var W_=class{constructor(e){this.isIdle=!1;this.getViewState=()=>({});this.shouldRender=()=>!0;this._mode=e.mode||$i.TOPOGRAPHIC,this._speed=e.speed||1,this._style=e.style||tl,this._time=e.time||new Date,this.api=e.api||new Qh(e),this.bboxParameters=e.bboxParameters,this.canvas=e.canvas||document.createElement("canvas"),this.debug=e.debug||!1,this.filter=e.filter,this.hoverVehicleId=e.hoverVehicleId,this.live=e.live!==!1,this.minZoomInterpolation=e.minZoomInterpolation||8,this.pixelRatio=e.pixelRatio||(typeof window<"u"?window.devicePixelRatio:1),this.selectedVehicleId=e.selectedVehicleId,this.sort=e.sort,this.styleOptions={...Mc,...e.styleOptions||{}},this.tenant=e.tenant||"",this.trajectories={},this.useDebounce=e.useDebounce||!1,this.useRequestAnimationFrame=e.useRequestAnimationFrame||!1,this.useThrottle=e.useThrottle!==!1,this.getViewState=e.getViewState||(()=>({})),this.shouldRender=e.shouldRender||(()=>!0),this.onRender=e.onRender,this.onIdle=e.onIdle,this.onStart=e.onStart,this.onStop=e.onStop,this.format=new hr,this.motsByZoom=e.motsByZoom||[Cs,Cs,Cs,Cs,Cs,Cs,Cs,Cs,Cs,Dp,Dp],this.getMotsByZoom=r=>e.getMotsByZoom?e.getMotsByZoom(r,this.motsByZoom):this.motsByZoom[r],this.generalizationLevelByZoom=e.generalizationLevelByZoom||[],this.getGeneralizationLevelByZoom=r=>e.getGeneralizationLevelByZoom?e.getGeneralizationLevelByZoom(r,this.generalizationLevelByZoom):this.generalizationLevelByZoom[r],this.renderTimeIntervalByZoom=e.renderTimeIntervalByZoom||[1e5,5e4,4e4,3e4,2e4,15e3,1e4,5e3,2e3,1e3,400,300,250,180,90,60,50,50,50,50,50],this.getRenderTimeIntervalByZoom=r=>e.getRenderTimeIntervalByZoom?e.getRenderTimeIntervalByZoom(r,this.renderTimeIntervalByZoom):this.renderTimeIntervalByZoom[r],this.isUpdateBboxOnMoveEnd=e.isUpdateBboxOnMoveEnd!==!1,this.throttleRenderTrajectories=(0,$_.default)(this.renderTrajectoriesInternal,50,{leading:!1,trailing:!0}),this.debounceRenderTrajectories=(0,q_.default)(this.renderTrajectoriesInternal,50,{leading:!0,maxWait:5e3,trailing:!0}),this.renderState={center:[0,0],rotation:0,zoom:void 0},this.onTrajectoryMessage=this.onTrajectoryMessage.bind(this),this.onDeleteTrajectoryMessage=this.onDeleteTrajectoryMessage.bind(this),this.onDocumentVisibilityChange=this.onDocumentVisibilityChange.bind(this)}get mode(){return this._mode}set mode(e){e!==this._mode&&(this._mode=e,this.api?.wsApi?.open&&(this.stop(),this.start()))}get speed(){return this._speed}set speed(e){this._speed=e,this.start()}get style(){return this._style}set style(e){this._style=e,this.renderTrajectories()}get time(){return this._time}set time(e){this._time=e?.getTime?e:new Date(e),this.renderTrajectories()}addTrajectory(e){this.trajectories||(this.trajectories={});let r=e.properties.train_id;r!==void 0&&(this.trajectories[r]=e),this.renderTrajectories()}attachToMap(){document.addEventListener("visibilitychange",this.onDocumentVisibilityChange)}detachFromMap(){if(document.removeEventListener("visibilitychange",this.onDocumentVisibilityChange),this.stop(),this.canvas){let e=this.canvas.getContext("2d");e&&e.clearRect(0,0,this.canvas.width,this.canvas.height)}}getRefreshTimeInMs(){let r=this.getViewState().zoom||0,a=r!==void 0?Math.round(r):-1,c=this.getRenderTimeIntervalByZoom(a)||25,s=Math.max(25,c/(this.speed||1)),y=Math.min(s,500);if(this.useThrottle?this.throttleRenderTrajectories=(0,$_.default)(this.renderTrajectoriesInternal,y,{leading:!0,trailing:!0}):this.useDebounce&&(this.debounceRenderTrajectories=(0,q_.default)(this.renderTrajectoriesInternal,y,{leading:!0,maxWait:5e3,trailing:!0})),this.api?.buffer){let[,v]=this.api.buffer;this.api.buffer=[y,v]}return s}getVehicles(e){return this.trajectories&&Object.values(this.trajectories).filter(e)||[]}getVehiclesAtCoordinate(e,r){let{resolution:a}=this.getViewState(),{hitTolerance:c,nb:s}=r||{},y=os([...e,...e],(c||5)*(a||1)),v=Object.values(this.trajectories||{});this.sort&&(v=v.sort(this.sort));let b=[];for(let T=0;T<v.length;T+=1){let{coordinate:C}=v[T].properties;if(C&&rl(y,C)&&b.push(v[T]),b.length===s)break}return{features:b,type:"FeatureCollection"}}onDeleteTrajectoryMessage(e){e.content&&this.removeTrajectory(e.content)}onDocumentVisibilityChange(){if(document.hidden)this.stop(),this.trajectories={};else{if(!this.getViewState().visible)return;this.start()}}onTrajectoryMessage(e){if(this.updateIdleState(),!e.content)return;let r=e.content,{geometry:a,properties:{raw_coordinates:c,time_since_update:s}}=r;s<0||this.purgeTrajectory(r)||(this.debug&&this.mode===$i.TOPOGRAPHIC&&c?r.properties.olGeometry=this.format.readGeometry({coordinates:ar(c),type:"Point"}):r.properties.olGeometry=this.format.readGeometry(a),r.properties.timeOffset=Date.now()-e.timestamp,this.addTrajectory(r))}onZoomEnd(){this.startUpdateTime()}purgeOutOfDateTrajectories(){Object.entries(this.trajectories||{}).forEach(([e,r])=>{let a=r?.properties?.time_intervals;this.time&&a?.length&&a[a.length-1][0]<this.time.getTime()&&this.removeTrajectory(e)})}purgeTrajectory(e){let a=this.getViewState().extent,{bounds:c,type:s}=e.properties;return this.isUpdateBboxOnMoveEnd&&a&&!Vi(a,c)||this.mots&&!this.mots.includes(s)?(this.removeTrajectory(e),!0):!1}removeTrajectory(e){let r;typeof e!="string"?r=e?.properties?.train_id:r=e,r!==void 0&&this.trajectories&&delete this.trajectories[r]}renderTrajectories(e){let r=this.getViewState();this.requestId&&(cancelAnimationFrame(this.requestId),this.requestId=void 0),!(!r?.center||!r?.extent||!r?.size)&&(!e&&this.useRequestAnimationFrame?this.requestId=requestAnimationFrame(()=>{this.renderTrajectoriesInternal(r,e)}):!e&&this.useDebounce?this.debounceRenderTrajectories(r,e):!e&&this.useThrottle?this.throttleRenderTrajectories(r,e):this.renderTrajectoriesInternal(r,e))}renderTrajectoriesInternal(e,r=!1){if(!this.trajectories||!this.shouldRender())return!1;let a=this.live?Date.now():this.time?.getTime(),c=Object.values(this.trajectories);return this.sort&&c.sort(this.sort),!this.canvas||!this.style||(this.renderState=Su(this.canvas,c,this.style,{...e,pixelRatio:this.pixelRatio||1,time:a},{filter:this.filter,hoverVehicleId:this.hoverVehicleId,noInterpolate:(e.zoom||0)<this.minZoomInterpolation?!0:r,selectedVehicleId:this.selectedVehicleId,...this.styleOptions}),this.onRender?.(this.renderState,e)),!0}setBbox(){this.updateIdleState();let e=this.getViewState(),r=e.extent,a=e.zoom||0;if(!r||Number.isNaN(a))return;if(this.trajectories&&r&&a){let C=Object.keys(this.trajectories);for(let k=C.length-1;k>=0;k-=1)this.purgeTrajectory(this.trajectories[C[k]])}let c=Math.floor(a);if(!r||Number.isNaN(c))return;let[s,y,v,b]=r,T=[Math.floor(s),Math.floor(y),Math.ceil(v),Math.ceil(b),c];this.generalizationLevel=this.getGeneralizationLevelByZoom(c),this.generalizationLevel&&T.push(`gen=${this.generalizationLevel}`),this.mots=this.getMotsByZoom(c),this.mots&&T.push(`mots=${this.mots}`),this.tenant&&T.push(`tenant=${this.tenant}`),this.mode!=="topographic"&&T.push(`channel_prefix=${this.mode}`),this.bboxParameters&&Object.entries(this.bboxParameters).forEach(([C,k])=>{T.push(`${C}=${k}`)}),this.api.bbox=T}start(){this.stop(),this.purgeOutOfDateTrajectories(),this.renderTrajectories(),this.startUpdateTime(),this.api.open(),this.api.subscribeTrajectory(this.mode,this.onTrajectoryMessage,void 0,this.isUpdateBboxOnMoveEnd),this.api.subscribeDeletedVehicles(this.mode,this.onDeleteTrajectoryMessage,void 0,this.isUpdateBboxOnMoveEnd),this.isUpdateBboxOnMoveEnd&&this.setBbox(),this.onStart&&this.onStart(this)}startUpdateTime(){this.stopUpdateTime(),this.updateTimeDelay=this.getRefreshTimeInMs()||0,this.updateTimeInterval=window.setInterval(()=>{this.live?this.time=new Date:this.time&&this.updateTimeDelay&&this.speed&&(this.time=new Date(this.time.getTime()+this.updateTimeDelay*this.speed))},this.updateTimeDelay)}stop(){this.api.unsubscribeTrajectory(this.onTrajectoryMessage),this.api.unsubscribeDeletedVehicles(this.onDeleteTrajectoryMessage),this.api.close(),this.onStop&&this.onStop(this)}stopUpdateTime(){this.updateTimeInterval&&(clearInterval(this.updateTimeInterval),this.updateTimeInterval=void 0)}updateIdleState(){this.isIdle=!1,clearTimeout(this._idleTimeout),this._idleTimeout=window.setTimeout(()=>{this.isIdle=!0,this.onIdle?.(this)},1e3)}},cf=W_;var lT=new hr,Yu=class extends rf{forEachFeatureAtCoordinate(e,r,a,c){let s=this.getFeaturesAtCoordinate(e,a);return s.forEach(y=>{c(y,this.layer_,y.getGeometry())}),s?.[0]}getData(e){let r;try{let{pixelRatio:a}=this.getLayer();return r=this.canvas?.getContext("2d",{willReadFrequently:!0})?.getImageData(e[0]*(a||1),e[1]*(a||1),1,1).data||null,r}catch(a){console.error("error getting data",a)}return null}getFeatures(e){let r=this.getLayer()?.getMapInternal()?.getCoordinateFromPixel(e);return Promise.resolve(this.getFeaturesAtCoordinate(r))}getFeaturesAtCoordinate(e,r=5){if(!e)return[];let a=this.getLayer(),c=a.engine.getVehiclesAtCoordinate(e,{hitTolerance:r,nb:a.maxNbFeaturesRequested});return lT.readFeatures(c)}prepareFrame(){return!0}renderFrame(e){let{canvas:r,engine:a,renderedViewState:c}=this.getLayer();if(this.getLayer().engine.pixelRatio=e.pixelRatio,this.ready=!!a.renderState?.renderedTrajectories&&a.isIdle,this.container||(this.container=document.createElement("div"),this.container.className=this.getLayer().getClassName(),this.container.style.position="absolute",this.container.style.width="100%",this.container.style.height="100%",r instanceof HTMLCanvasElement&&(r.style.position="absolute",r.style.top="0",r.style.left="0",r.style.transformOrigin="top left",this.container.appendChild(r))),c){let{center:s,resolution:y,rotation:v}=e.viewState,{center:b,resolution:T,rotation:C}=c;if(T/y>=3){let k=r?.getContext("2d");r?.width&&r?.height&&k?.clearRect(0,0,r.width,r.height)}else{let k=this.getLayer().getMapInternal(),O=k?.getPixelFromCoordinate(b),G=k?.getPixelFromCoordinate(s);O&&G&&(this.container.style.transform=Jx(O[0]-G[0],O[1]-G[1],T/y,T/y,v-C,0,0))}}return this.container}};var cT=new Tr({image:new En({fill:new Er({color:"#000000"}),radius:5}),stroke:new Xi({color:"#000000",width:6}),zIndex:2}),hT=(h,e,r)=>{let a="#ffffff",c=h.get("type"),s=h.get("stroke");return s&&s[0]!=="#"&&(s=`#${s}`),a=s||r?.getBgColor(c),a=/#ffffff/i.test(a)?"#ff0000":a,[cT,new Tr({image:new En({fill:new Er({color:a}),radius:4}),stroke:new Xi({color:a,width:4}),zIndex:3})]},hf=hT;var uT=new Tr({image:new En({fill:new Er({color:"#000000"}),radius:5}),stroke:new Xi({color:"#000000",width:6}),zIndex:2}),dT=new Tr({image:new En({fill:new Er({color:"#a0a0a0"}),radius:4}),stroke:new Xi({color:"#a0a0a0",width:4}),zIndex:3}),pT=()=>[uT,dT],aw=pT;var lw=new En({fill:new Er({color:[255,0,0,1]}),radius:6,stroke:new Xi({color:[0,0,0,1],width:1})}),fT=new Tr({stroke:new Xi({color:[0,0,0,1],width:5})}),mT=new Tr({image:lw,stroke:new Xi({color:[255,0,0,1],width:3})}),gT=new Tr({image:lw,stroke:new Xi({color:[255,0,0,1],lineDash:[1,10],width:3})}),yT=(h,e)=>{let r=h.get("minResolution"),a=h.get("maxResolution"),c=e<=r&&e>a;if(r&&a&&!c)return[];let s=h?.getGeometry()?.getType()==="Point"?100:0,y=[fT,mT];return h.get("mot")==="foot"&&(y=[gT]),y=y.map(b=>{let T=b.clone();return T.setZIndex(s),T}),y},cw=yT;var _T=new hr,X_=class h extends Es{constructor(r){super({source:new Mo({}),...r});this.allowRenderWhenAnimating=!1;this.maxNbFeaturesRequested=100;this.olEventsKeys=[];Ta(this,r),this.engine=new cf({getViewState:this.getViewState.bind(this),onIdle:this.onRealtimeEngineIdle.bind(this),onRender:this.onRealtimeEngineRender.bind(this),...r}),this.allowRenderWhenAnimating=!!r.allowRenderWhenAnimating,this.vectorLayer=new jc({source:new yl({features:[]}),style:(a,c)=>(r.fullTrajectoryStyle||hf)(a,c,this.engine.styleOptions),updateWhileAnimating:this.allowRenderWhenAnimating,updateWhileInteracting:!0}),this.onZoomEndDebounced=(0,Z_.default)(this.onZoomEnd,100),this.onMoveEndDebounced=(0,Z_.default)(this.onMoveEnd,100)}get api(){return this.engine.api}set api(r){this.engine.api=r}get canvas(){return this.engine.canvas}get filter(){return this.engine.filter}set filter(r){this.engine.filter=r}get hoverVehicleId(){return this.engine.hoverVehicleId}set hoverVehicleId(r){this.engine.hoverVehicleId=r}get mode(){return this.engine.mode}set mode(r){this.engine.mode=r}get pixelRatio(){return this.engine.pixelRatio}get selectedVehicleId(){return this.engine.selectedVehicleId}set selectedVehicleId(r){this.engine.selectedVehicleId=r}get sort(){return this.engine.sort}set sort(r){this.engine.sort=r}get trajectories(){return this.engine.trajectories}attachToMap(){this.engine.attachToMap();let r=this.getMapInternal();r&&(this.getVisible()&&this.engine.start(),this.olEventsKeys.push(r.on("movestart",()=>{this.engine.isUpdateBboxOnMoveEnd&&this.engine.updateIdleState()}),...r.on(["moveend","change:target"],a=>{let c=(a.map||a.target).getView();if(!c||c?.getAnimating()||c?.getInteracting())return;let s=c.getZoom();this.currentZoom!==s&&this.onZoomEndDebounced(a),this.currentZoom=s,this.onMoveEndDebounced(a)}),this.on("change:visible",a=>{a.target.getVisible()?this.engine.start():this.engine.stop()}),this.on("propertychange",a=>{/(opacity|visible|zIndex|minResolution|maxResolution|minZoom|maxZoom)/.test(a.key)&&this.vectorLayer.set(a.key,a.target.get(a.key))})))}cleanVectorLayer(){this.vectorLayer?.getSource()?.clear(!0),this.vectorLayer.getMapInternal()?.removeLayer(this.vectorLayer)}clone(r){return new h({...this.get("options"),...r})}createRenderer(){return new Yu(this)}detachFromMap(){bs(this.olEventsKeys),this.getMapInternal()?.removeLayer(this.vectorLayer),this.engine.detachFromMap()}async getFullTrajectory(r){let a=await this.engine.api.getFullTrajectory(r,this.engine.mode,this.engine.getGeneralizationLevelByZoom(Math.floor(this.getMapInternal()?.getView()?.getZoom()||0)));return a?.content?.features?.length?_T.readFeatures(a?.content):[]}async getStopSequences(r){return(await this.engine.api.getStopSequence(r))?.content}async getTrajectoryInfos(r){let a=[this.getStopSequences(r),this.getFullTrajectory(r)],[c,s]=await Promise.all(a);return{fullTrajectory:s,stopSequences:c}}getVehicles(r){return this.engine.getVehicles(r)}getViewState(){let r=this.getMapInternal();if(!r?.getView())return{};let a=r.getView();return{center:a.getCenter(),extent:a.calculateExtent(),pixelRatio:this.engine.pixelRatio,resolution:a.getResolution(),rotation:a.getRotation(),size:r.getSize(),visible:this.getVisible(),zoom:a.getZoom()}}highlight(r){let a=r?.get("train_id");this.hoverVehicleId!==a&&(this.hoverVehicleId=a,this.engine.renderTrajectories(!0))}async highlightTrajectory(r){if(!r){this.cleanVectorLayer();return}let a=await this.getFullTrajectory(r);if(!a?.length){this.cleanVectorLayer();return}a.length&&this.vectorLayer?.getSource()?.addFeatures(a),this.vectorLayer.getMapInternal()&&this.vectorLayer.getMapInternal()!==this.getMapInternal()&&this.vectorLayer.getMapInternal()?.removeLayer(this.vectorLayer);let c=this.getZIndex();if(c!==void 0)this.vectorLayer.setZIndex(c-1),this.vectorLayer.getMapInternal()||this.getMapInternal()?.addLayer(this.vectorLayer);else if(!this.vectorLayer.getMapInternal()){let s=this.getMapInternal()?.getLayers().getArray().indexOf(this)||0;s&&this.getMapInternal()?.getLayers().insertAt(s,this.vectorLayer)}return a}onMoveEnd(){!this.engine.isUpdateBboxOnMoveEnd||!this.getVisible()||this.engine.setBbox()}onRealtimeEngineIdle(){this.changed()}onRealtimeEngineRender(r,a){this.renderedViewState={...a};let{container:c}=this.getRenderer();c&&(c.style.transform="")}onZoomEnd(){this.engine.onZoomEnd(),!(!this.engine.isUpdateBboxOnMoveEnd||!this.getVisible())&&this.selectedVehicleId&&this.highlightTrajectory(this.selectedVehicleId)}select(r){let a=r?.get("train_id");this.selectedVehicleId!==a&&(this.selectedVehicleId=a,this.engine.renderTrajectories(!0)),this.highlightTrajectory(a)}setMapInternal(r){r?(super.setMapInternal(r),this.attachToMap()):(this.detachFromMap(),super.setMapInternal(r))}shouldRender(){return this.allowRenderWhenAnimating?!1:this.getMapInternal()?.getView().getAnimating()||this.getMapInternal()?.getView().getInteracting()}start(){this.engine.start()}stop(){this.engine.stop()}},hw=X_;var uw=Vs(_l());var dw=()=>{};typeof window<"u"&&new URLSearchParams(window.location.search).get("deprecated")&&(dw=(0,uw.default)(h=>{console.warn(h)},1e3));var H_=class extends Sa{prepareFrame(){return!0}renderFrame(){return null}},K_=class h extends Es{constructor(e){super(e),Ta(this,e),dw("Layer is deprecated. Use an OpenLayers Layer instead.")}clone(e){return new h({...this.get("options")||{},...e||{}})}createRenderer(){return new H_(this)}},uf=K_;var Y_=class h extends uf{clone(e){return new h({...this.get("options"),...e})}getFeatureInfoAtCoordinate(e){let r=[],a=this.getMapInternal();if(a){let c=a.getPixelFromCoordinate(e);r=a.getFeaturesAtPixel(c,{hitTolerance:this.get("hitTolerance")||5,layerFilter:s=>s===this})||[]}return Promise.resolve({coordinate:e,features:r,layer:this})}},pw=Y_;var xT=new hr,vT=(h,e,r)=>{let a,{coordinate:c,params:s,projection:y,resolution:v}=e;return h&&v&&y&&(a=h.getFeatureInfoUrl(c,v,y,{info_format:"application/json",query_layers:h.getParams().layers,...s})),fetch(a,{signal:r.signal}).then(b=>b.json()).then(b=>xT.readFeatures(b)).catch(()=>[])},Ju={},bT=async(h,e,r=5)=>{Object.values(Ju).forEach(s=>{s?.abort()}),Ju={};let c=ru(e).map(s=>{let y=s.getMapInternal(),v=y?.getView()?.getProjection()?.getCode(),b={coordinate:h,features:[],layer:s};if(!v)return Promise.resolve(b);if(s.getFeatureInfoAtCoordinate)return s.getFeatureInfoAtCoordinate(h);let T=s?.getSource();if(T?.getFeatureInfoUrl){let O=Vt(s);Ju[O]?.abort(),Ju[O]=new AbortController;let G=y?.getView()?.getResolution();return vT(T,{coordinate:h,params:{info_format:"application/json",query_layers:T.getParams().layers},projection:v,resolution:G},Ju[O]).then(J=>({coordinate:h,features:J,layer:s})).catch(()=>({coordinate:h,features:[],layer:s}))}let C=y?.getPixelFromCoordinate(h);if(!C)return Promise.resolve(b);let k=y?.getFeaturesAtPixel(C,{hitTolerance:s.get("hitTolerance")||r||5,layerFilter:O=>O===s});return Promise.resolve({coordinate:h,features:k,layer:s})});return Promise.all(c)},fw=bT;var gf={};Lm(gf,{CopyrightControl:()=>mw,Layer:()=>pf,RealtimeAPI:()=>Qh,RealtimeLayer:()=>Lw,RealtimeModes:()=>$i,RoutingAPI:()=>eu,StopsAPI:()=>tu,VECTOR_TILE_FEATURE_PROPERTY:()=>Pc,compareDepartures:()=>Iu,createCanvas:()=>_s,createRealtimeFilters:()=>Km,debounceDeparturesMessages:()=>$g,debounceWebsocketMessages:()=>Jh,getCircleCanvas:()=>Wm,getDelayBgCanvas:()=>qm,getDelayTextCanvas:()=>$m,getHoursAndMinutes:()=>Hx,getLayersAsFlatArray:()=>ru,getMapGlCopyrights:()=>iu,getMercatorResolution:()=>kw,getSourceCoordinates:()=>mf,getTextCanvas:()=>Zm,getUTCDateString:()=>Zx,getUTCTimeString:()=>Xx,getUrlWithParams:()=>el,getVehiclePosition:()=>wu,pad:()=>sp,realtimeConfig:()=>Mc,realtimeDefaultStyle:()=>tl,realtimeDelayStyle:()=>Xm,realtimeSimpleStyle:()=>Hm,removeDuplicate:()=>il,renderTrajectories:()=>Su,sortAndFilterDepartures:()=>Cu,sortByDelay:()=>Ym});var wT=" | ",J_=class{constructor(e={}){this.options=e}getDefaultPosition(){return"bottom-right"}onAdd(e){return this.map=e,this.container||(this.container=document.createElement("div")),this.render=this.render.bind(this),this.map.on("idle",this.render),this.map.on("sourcedata",this.render),this.map.on("styledata",this.render),this.render(),this.container}onRemove(){return this.container?.parentElement&&this.container.parentElement?.removeChild(this.container),this.map&&(this.map.off("sourcedata",this.render),this.map.off("styledata",this.render),this.map.off("idle",this.render)),this.map=void 0,this.container}render(){if(this.map&&this.container){let e=this.options?.separator||wT,r=this.options?.customAttribution||iu(this.map),a=(Array.isArray(r)?r:[r]).join(e);this.container.innerHTML!==a&&(this.content=a,this.container.innerHTML=this.content)}}},mw=J_;var yw=Vs(L_());var Mr=[];for(let h=0;h<256;++h)Mr.push((h+256).toString(16).slice(1));function gw(h,e=0){return(Mr[h[e+0]]+Mr[h[e+1]]+Mr[h[e+2]]+Mr[h[e+3]]+"-"+Mr[h[e+4]]+Mr[h[e+5]]+"-"+Mr[h[e+6]]+Mr[h[e+7]]+"-"+Mr[h[e+8]]+Mr[h[e+9]]+"-"+Mr[h[e+10]]+Mr[h[e+11]]+Mr[h[e+12]]+Mr[h[e+13]]+Mr[h[e+14]]+Mr[h[e+15]]).toLowerCase()}var Q_,ST=new Uint8Array(16);function e0(){if(!Q_){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");Q_=crypto.getRandomValues.bind(crypto)}return Q_(ST)}var IT=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),t0={randomUUID:IT};function CT(h,e,r){if(t0.randomUUID&&!e&&!h)return t0.randomUUID();h=h||{};let a=h.random||(h.rng||e0)();if(a[6]=a[6]&15|64,a[8]=a[8]&63|128,e){r=r||0;for(let c=0;c<16;++c)e[r+c]=a[c];return e}return gw(a)}var i0=CT;var r0=class extends yw.Evented{constructor(r={}){super();this.options={};this.type="custom";this.options=r,this.id=r.id||i0()}onAdd(r,a){this.map=r}onRemove(r,a){this.map=void 0}render(r){}},pf=r0;var Pr=63710088e-1,xw={centimeters:Pr*100,centimetres:Pr*100,degrees:360/(2*Math.PI),feet:Pr*3.28084,inches:Pr*39.37,kilometers:Pr/1e3,kilometres:Pr/1e3,meters:Pr,metres:Pr,miles:Pr/1609.344,millimeters:Pr*1e3,millimetres:Pr*1e3,nauticalmiles:Pr/1852,radians:1,yards:Pr*1.0936};function ET(h,e,r={}){let a={type:"Feature"};return(r.id===0||r.id)&&(a.id=r.id),r.bbox&&(a.bbox=r.bbox),a.properties=e||{},a.geometry=h,a}function xl(h,e,r={}){if(!h)throw new Error("coordinates is required");if(!Array.isArray(h))throw new Error("coordinates must be an Array");if(h.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!_w(h[0])||!_w(h[1]))throw new Error("coordinates must contain numbers");return ET({type:"Point",coordinates:h},e,r)}function TT(h,e="kilometers"){let r=xw[e];if(!r)throw new Error(e+" units is invalid");return h*r}function MT(h,e="kilometers"){let r=xw[e];if(!r)throw new Error(e+" units is invalid");return h/r}function vw(h){return h%(2*Math.PI)*180/Math.PI}function vl(h){return h%360*Math.PI/180}function ff(h,e="kilometers",r="kilometers"){if(!(h>=0))throw new Error("length must be a positive number");return TT(MT(h,e),r)}function _w(h){return!isNaN(h)&&h!==null&&!Array.isArray(h)}function bw(h){return h!==null&&typeof h=="object"&&!Array.isArray(h)}function Qu(h,e,r){if(h!==null)for(var a,c,s,y,v,b,T,C=0,k=0,O,G=h.type,J=G==="FeatureCollection",le=G==="Feature",he=J?h.features.length:1,fe=0;fe<he;fe++){T=J?h.features[fe].geometry:le?h.geometry:h,O=T?T.type==="GeometryCollection":!1,v=O?T.geometries.length:1;for(var ye=0;ye<v;ye++){var we=0,Ie=0;if(y=O?T.geometries[ye]:T,y!==null){b=y.coordinates;var Pe=y.type;switch(C=r&&(Pe==="Polygon"||Pe==="MultiPolygon")?1:0,Pe){case null:break;case"Point":if(e(b,k,fe,we,Ie)===!1)return!1;k++,we++;break;case"LineString":case"MultiPoint":for(a=0;a<b.length;a++){if(e(b[a],k,fe,we,Ie)===!1)return!1;k++,Pe==="MultiPoint"&&we++}Pe==="LineString"&&we++;break;case"Polygon":case"MultiLineString":for(a=0;a<b.length;a++){for(c=0;c<b[a].length-C;c++){if(e(b[a][c],k,fe,we,Ie)===!1)return!1;k++}Pe==="MultiLineString"&&we++,Pe==="Polygon"&&Ie++}Pe==="Polygon"&&we++;break;case"MultiPolygon":for(a=0;a<b.length;a++){for(Ie=0,c=0;c<b[a].length;c++){for(s=0;s<b[a][c].length-C;s++){if(e(b[a][c][s],k,fe,we,Ie)===!1)return!1;k++}Ie++}we++}break;case"GeometryCollection":for(a=0;a<y.geometries.length;a++)if(Qu(y.geometries[a],e,r)===!1)return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}function ww(h,e={}){let r=0,a=0,c=0;return Qu(h,function(s){r+=s[0],a+=s[1],c++},!0),xl([r/c,a/c],e.properties)}function Ys(h){if(!h)throw new Error("coord is required");if(!Array.isArray(h)){if(h.type==="Feature"&&h.geometry!==null&&h.geometry.type==="Point")return[...h.geometry.coordinates];if(h.type==="Point")return[...h.coordinates]}if(Array.isArray(h)&&h.length>=2&&!Array.isArray(h[0])&&!Array.isArray(h[1]))return[...h];throw new Error("coord must be GeoJSON Point or an Array of numbers")}function Sw(h){if(Array.isArray(h))return h;if(h.type==="Feature"){if(h.geometry!==null)return h.geometry.coordinates}else if(h.coordinates)return h.coordinates;throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")}function Cw(h,e,r={}){let a;return r.final?a=Iw(Ys(e),Ys(h)):a=Iw(Ys(h),Ys(e)),a>180?-(360-a):a}function Iw(h,e){let r=vl(h[1]),a=vl(e[1]),c=vl(e[0]-h[0]);c>Math.PI&&(c-=2*Math.PI),c<-Math.PI&&(c+=2*Math.PI);let s=Math.log(Math.tan(a/2+Math.PI/4)/Math.tan(r/2+Math.PI/4)),y=Math.atan2(c,s);return(vw(y)+360)%360}function Ew(h,e,r={}){let a=Ys(h),c=Ys(e);c[0]+=c[0]-a[0]>180?-360:a[0]-c[0]>180?360:0;let s=PT(a,c);return ff(s,"meters",r.units)}function PT(h,e,r){r=r===void 0?Pr:Number(r);let a=r,c=h[1]*Math.PI/180,s=e[1]*Math.PI/180,y=s-c,v=Math.abs(e[0]-h[0])*Math.PI/180;v>Math.PI&&(v-=2*Math.PI);let b=Math.log(Math.tan(s/2+Math.PI/4)/Math.tan(c/2+Math.PI/4)),T=Math.abs(b)>1e-11?y/b:Math.cos(c);return Math.sqrt(y*y+T*T*v*v)*a}function Tw(h,e,r,a={}){let c=e<0,s=ff(Math.abs(e),a.units,"meters");c&&(s=-Math.abs(s));let y=Ys(h),v=AT(y,s,r);return v[0]+=v[0]-y[0]>180?-360:y[0]-v[0]>180?360:0,xl(v,a.properties)}function AT(h,e,r,a){a=a===void 0?Pr:Number(a);let c=e/a,s=h[0]*Math.PI/180,y=vl(h[1]),v=vl(r),b=c*Math.cos(v),T=y+b;Math.abs(T)>Math.PI/2&&(T=T>0?Math.PI-T:-Math.PI-T);let C=Math.log(Math.tan(T/2+Math.PI/4)/Math.tan(y/2+Math.PI/4)),k=Math.abs(C)>1e-11?b/C:Math.cos(y),O=c*Math.sin(v)/k;return[((s+O)*180/Math.PI+540)%360-180,T*180/Math.PI]}function Mw(h){if(!h)throw new Error("geojson is required");switch(h.type){case"Feature":return Pw(h);case"FeatureCollection":return RT(h);case"Point":case"LineString":case"Polygon":case"MultiPoint":case"MultiLineString":case"MultiPolygon":case"GeometryCollection":return n0(h);default:throw new Error("unknown GeoJSON type")}}function Pw(h){let e={type:"Feature"};return Object.keys(h).forEach(r=>{switch(r){case"type":case"properties":case"geometry":return;default:e[r]=h[r]}}),e.properties=Aw(h.properties),h.geometry==null?e.geometry=null:e.geometry=n0(h.geometry),e}function Aw(h){let e={};return h&&Object.keys(h).forEach(r=>{let a=h[r];typeof a=="object"?a===null?e[r]=null:Array.isArray(a)?e[r]=a.map(c=>c):e[r]=Aw(a):e[r]=a}),e}function RT(h){let e={type:"FeatureCollection"};return Object.keys(h).forEach(r=>{switch(r){case"type":case"features":return;default:e[r]=h[r]}}),e.features=h.features.map(r=>Pw(r)),e}function n0(h){let e={type:h.type};return h.bbox&&(e.bbox=h.bbox),h.type==="GeometryCollection"?(e.geometries=h.geometries.map(r=>n0(r)),e):(e.coordinates=Rw(h.coordinates),e)}function Rw(h){let e=h;return typeof e[0]!="object"?e.slice():e.map(r=>Rw(r))}function kT(h,e,r){if(r=r||{},!bw(r))throw new Error("options is invalid");let a=r.pivot,c=r.mutate;if(!h)throw new Error("geojson is required");if(e==null||isNaN(e))throw new Error("angle is required");if(e===0)return h;let s=a??ww(h);return(c===!1||c===void 0)&&(h=Mw(h)),Qu(h,function(y){let b=Cw(s,y)+e,T=Ew(s,y),C=Sw(Tw(s,T,b));y[0]=C[0],y[1]=C[1]}),h}var s0=kT;var LT=(h,e=1)=>{let{height:r,width:a}=h.getCanvas(),c=h.unproject({x:0,y:0}),s=h.unproject({x:0,y:r/e}),y=h.unproject({x:a/e,y:r/e}),v=h.unproject({x:a/e,y:0});return[[c.lng,c.lat],[v.lng,v.lat],[y.lng,y.lat],[s.lng,s.lat]]},mf=LT;var DT=h=>{let e=h.getBounds().toArray(),r=ar(e[0]),a=ar(e[1]),c=[...r,...a],{width:s,height:y}=h.getCanvas(),v=vi(c)/s,b=Wi(c)/y;return Math.max(v,b)},kw=DT;var o0=class extends pf{get canvas(){return this.engine.canvas}get pixelRatio(){return this.engine.pixelRatio||1}set pixelRatio(e){this.engine.pixelRatio=e||1}#e;constructor(e={}){let r=e?.id||"realtime";super({...e,id:"realtime-custom-"+r}),this.#e=r,this.engine=new cf({getViewState:this.getViewState.bind(this),onRender:this.onRealtimeEngineRender.bind(this),...e}),this.sourceId=this.#e,this.source={animate:!0,attribution:e.attribution?.join(", "),canvas:this.canvas,coordinates:[[0,0],[1,1],[2,2],[0,0]],loaded:!0,type:"canvas"},this.layer={id:this.#e,layout:{visibility:"visible"},paint:{"raster-fade-duration":0,"raster-opacity":1,"raster-resampling":"nearest"},source:this.sourceId,type:"raster"},this.onLoad=this.onLoad.bind(this),this.onMove=this.onMove.bind(this),this.onMoveEnd=this.onMoveEnd.bind(this),this.onZoomEnd=this.onZoomEnd.bind(this)}getViewState(){if(!this.map)return{};this.pixelRatio||(this.pixelRatio=1);let{height:e,width:r}=this.map.getCanvas(),a=this.map.getCenter(),c=this.map.unproject({x:0,y:e/this.pixelRatio}),s=this.map.unproject({x:r/this.pixelRatio,y:0}),y=s0(xl([c.lng,c.lat]),-this.map.getBearing(),{pivot:[a.lng,a.lat]}).geometry.coordinates,v=s0(xl([s.lng,s.lat]),-this.map.getBearing(),{pivot:[a.lng,a.lat]}).geometry.coordinates,b=[...ar(y),...ar(v)],T=vi(b)/(r/this.pixelRatio),C=Wi(b)/(e/this.pixelRatio),k=Math.max(T,C);return{center:ar([a.lng,a.lat]),extent:b,pixelRatio:this.pixelRatio,resolution:k,rotation:-(this.map.getBearing()*Math.PI)/180,size:[r/this.pixelRatio,e/this.pixelRatio],visible:!0,zoom:this.map.getZoom()-1}}onAdd(e,r){super.onAdd(e,r),this.engine.attachToMap(),e.isStyleLoaded()&&this.onLoad(),e.on("load",this.onLoad)}onLoad(){this.map?.getSource(this.sourceId)||this.map?.addSource(this.sourceId,this.source),this.map?.getLayer(this.layer.id)||this.map?.addLayer(this.layer,this.id),this.start()}onMove(){this.engine.renderTrajectories()}onMoveEnd(){this.engine.renderTrajectories(),this.engine.isUpdateBboxOnMoveEnd&&this.engine.setBbox()}onRealtimeEngineRender(){if(this.map?.style){let e=mf(this.map,this.pixelRatio),r=this.map.getSource(this.sourceId);r&&r.setCoordinates(e)}}onRemove(e,r){this.engine.detachFromMap(),this.stop(),e.off("load",this.onLoad),e.getLayer(this.layer.id)&&e.removeLayer(this.layer.id),e.getSource(this.sourceId)&&e.removeSource(this.sourceId),super.onRemove(e,r)}onZoomEnd(){this.engine.onZoomEnd()}start(){this.engine.start(),this.map?.on("move",this.onMove),this.map?.on("moveend",this.onMoveEnd),this.map?.on("zoomend",this.onZoomEnd)}stop(){this.engine.stop(),this.map?.off("move",this.onMove),this.map?.off("moveend",this.onMoveEnd),this.map?.off("zoomend",this.onZoomEnd)}},Lw=o0;var a0={ol:df,maplibre:gf};typeof window<"u"&&(window.mbt=a0);var AV=a0;})();
586
586
  /*! Bundled license information:
587
587
 
588
588
  maplibre-gl/dist/maplibre-gl.js: